Ruby on rails 如何处理动态图表中显示的大量日志文件数据?
我有很多日志文件数据,我想显示基本上任意时间段的动态图,可以选择通过不同的列进行过滤或聚合(我可以预先生成)。我想知道在以下情况下,在数据库中存储数据并访问数据以显示图表的最佳方法:Ruby on rails 如何处理动态图表中显示的大量日志文件数据?,ruby-on-rails,ruby,filtering,logfile-analysis,Ruby On Rails,Ruby,Filtering,Logfile Analysis,我有很多日志文件数据,我想显示基本上任意时间段的动态图,可以选择通过不同的列进行过滤或聚合(我可以预先生成)。我想知道在以下情况下,在数据库中存储数据并访问数据以显示图表的最佳方法: 时间分辨率应在1秒到一年之间变化 存在跨越多个“时间段”的条目,例如,一个连接可能已打开几天,我希望计算并显示用户连接的每小时数,而不仅仅是在创建或完成连接的“时间段”中 有没有rails的最佳实践或工具/插件可以帮助处理这种类型和数量的数据?是否有专门为此定制的数据库引擎,或具有有用的功能(例如CouchDB
- 时间分辨率应在1秒到一年之间变化
- 存在跨越多个“时间段”的条目,例如,一个连接可能已打开几天,我希望计算并显示用户连接的每小时数,而不仅仅是在创建或完成连接的“时间段”中
编辑:我正在寻找一种可伸缩的方式来处理这种数据和访问模式。我们考虑的事情:为每个bucket运行一个查询,在应用程序中合并-可能太慢了。按时间戳/粒度分组-连接计数不正确。通过最小粒度将数据预处理成行,并在查询时进行下采样-这可能是最好的方法。我认为您可以使用mysql时间戳来实现这一点。我最终解决问题的方法是将数据预处理成每分钟一个存储桶,因此每个事件和每分钟都有一行。这使得选择和产生正确的结果变得足够简单和快速。要获得不同的粒度,您可以对时间戳列执行整数运算-选择abs(时间戳/因子)*因子和group by abs(时间戳/因子)*因子。这解决了第一个问题(我只需将时间戳除以粒度,并将其分组),但不是第二个更难的问题。我担心我无法绕过数据预处理。可能可以使用mysqltimestamp的“where time