【发布时间】:2016-05-13 01:59:01
【问题描述】:
我目前正在开发一种分析工具,该工具每晚(使用 Java 程序)都会将大量事件日志(每个大约 1 GB)解析到 MySQL 数据库 - 每个事件大约有 40 个属性。事件日志被“原始”解析到数据库中。
应用程序的用户需要根据对日志数据的复杂计算来查看不同的图形和图表。为了让用户不必等待几分钟来完成图表请求,我们需要以某种方式存储预处理数据以准备好向用户显示(用户可以按日期、单位等进行过滤,但最大的部分是可以事先进行计算)。我的问题是关于如何维护这样的预处理数据——目前,所有计算都用 SQL 表示,因为我们认为这是最有效的方式(这是一个正确的假设吗?)。我们需要能够通过新图表、客户特定愿望等的新计算轻松扩展。
我想到了某种物化视图,但 MySQL 似乎不支持此功能。类似地,我们可以在导入事件日志后每晚执行 SQL 计算,但这样每个计算/预处理数据表都需要知道它处理了哪些事件,没有处理哪些事件。该表将包含长达一年的数据(即事件),因此简单地截断表并再次进行所有计算似乎不是解决方案?使用触发器似乎也不对,因为某些计算需要考虑例如特定类型事件之间的时间差?
我很难权衡可能的解决方案的利弊。
【问题讨论】:
标签: java mysql database database-design xml-parsing