我的服务具有大量正在进行的用户事件,因此我们想做一些事情,例如“ 从日期D开始计数事件类型T的发生”。
我们正在尝试做出两个基本决定:
存储什么?存储每个事件与仅存储聚合
- (事件日志样式)记录每个事件并在以后对它们进行计数。
- (时间序列样式)每天存储一个汇总的“ 日期D的事件E数”
数据存储在哪里
- 在关系数据库(尤其是MySQL)中
- 在非关系(NoSQL)数据库中
- 在平面日志文件中(通过,通过网络集中收集
syslog-ng
)
什么是标准做法?在哪里可以找到有关比较不同类型系统的更多信息?
额外细节:
- 事件流总数很大,每天可能有数十万个条目
- 但是我们目前的需求只是计算其中的某些类型的事件
- 我们不一定需要实时访问原始数据或聚合结果
恕我直言,“将所有事件记录到文件中,稍后对其进行爬网以过滤和聚合流”是一种非常标准的UNIX方式,但是我的Rails-y同胞似乎认为除非在MySQL中,否则什么都不是真实的。