我们有许多系统每天产生大约500万事件。目前我们将这些节目保存约10天,共计约40-50万次事件。目前我们使用RDBMS作为持久层,并且使用web-GUI,但我们遇到了某些性能问题。数百万事件的良好数据存储?
事件由以下组成的20-30字段组成:
- 字段表示事件本身(例如OrderReceived),表示所生成的事件(例如ERP系统)的系统
- 字段
- 代表事件产生的商业环境的字段(例如OrderManagement)
- 代表我们认为相关/重要的其他细节的字段
大约5-6个字段是标识符,其中大多数是唯一的,代表事件本身,业务实体/对象,上下文等。使用这些标识符我们还可以将事件彼此链接在一起。事件链中的时差可能是几个小时,甚至偶数天甚至几天。
目前我们使用解决方案来分析各个事件链,主要是针对错误和异常值分析(我的订单去哪了?)。将来我们也可能会收集关于事件和事件链的统计信息(每天有多少订单?系统X处理了多少订单?)。如果可能的话,解决方案应该能够增长到至少是当前规模的两倍(我们预计随着新系统启用,事件数量会增加)。今天的分析是由人类进行的,所以搜索需要可以忍受(搜索事件链应该花费几秒钟而不是几分钟)。数据存储还应该允许清除陈旧事件。
正如我们在开始时提到的那样,我们正在使用标准的RDBMS。我们使用了一个相当规范的结构,现在我们开始非规范化以提高性能。我不禁想知道是否有其他解决方案可能会更好。我已经开始关注不同的NoSQL数据库(并且我个人认为MongoDB看起来很有前景),同时也尝试收集有关搜索引擎和类似搜索引擎(例如Solr和ElasticSearch)的信息。
问题是什么类型的数据存储/解决方案适合这些事件?我们是否应该进入NoSQL领域,或许是我们想要的搜索引擎,或者当我们真正需要的是找到一个真正擅长优化RDBMS的人时,我们会咆哮错误的树:?
MongoDB是不是很适合复杂的分析/报告(恕我直言)这是RDBMS领域(其中一些**可以执行**缩放)。 – 2012-03-30 19:40:23
@SergioTulentsev他提到的对我来说听起来不像复杂的分析。此外,唯一标识符[即使它们跨越多个记录]可以创建出色的索引(在mongodb和大多数系统中)并且可以快速查询。 – 2012-03-30 19:50:54
你遇到了什么样的性能问题?事件的实际日志记录,还是关于它们的报告?你如何索引表格?你在运行什么类型的硬件 - 现在的机器上有40M行并不是那么多,但它取决于事情的结构以及你在做什么。什么是这种访问模式?你使用的是什么RDBMS?你是否使用存储过程或通过Web UI代码来记录提取记录? – 2012-03-30 19:53:13