Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何处理动态图表中显示的大量日志文件数据?_Ruby On Rails_Ruby_Filtering_Logfile Analysis - Fatal编程技术网

Ruby on rails 如何处理动态图表中显示的大量日志文件数据?

Ruby on rails 如何处理动态图表中显示的大量日志文件数据?,ruby-on-rails,ruby,filtering,logfile-analysis,Ruby On Rails,Ruby,Filtering,Logfile Analysis,我有很多日志文件数据,我想显示基本上任意时间段的动态图,可以选择通过不同的列进行过滤或聚合(我可以预先生成)。我想知道在以下情况下,在数据库中存储数据并访问数据以显示图表的最佳方法: 时间分辨率应在1秒到一年之间变化 存在跨越多个“时间段”的条目,例如,一个连接可能已打开几天,我希望计算并显示用户连接的每小时数,而不仅仅是在创建或完成连接的“时间段”中 有没有rails的最佳实践或工具/插件可以帮助处理这种类型和数量的数据?是否有专门为此定制的数据库引擎,或具有有用的功能(例如CouchDB

我有很多日志文件数据,我想显示基本上任意时间段的动态图,可以选择通过不同的列进行过滤或聚合(我可以预先生成)。我想知道在以下情况下,在数据库中存储数据并访问数据以显示图表的最佳方法:

  • 时间分辨率应在1秒到一年之间变化
  • 存在跨越多个“时间段”的条目,例如,一个连接可能已打开几天,我希望计算并显示用户连接的每小时数,而不仅仅是在创建或完成连接的“时间段”中
有没有rails的最佳实践或工具/插件可以帮助处理这种类型和数量的数据?是否有专门为此定制的数据库引擎,或具有有用的功能(例如CouchDB索引)


编辑:我正在寻找一种可伸缩的方式来处理这种数据和访问模式。我们考虑的事情:为每个bucket运行一个查询,在应用程序中合并-可能太慢了。按时间戳/粒度分组-连接计数不正确。通过最小粒度将数据预处理成行,并在查询时进行下采样-这可能是最好的方法。

我认为您可以使用mysql时间戳来实现这一点。

我最终解决问题的方法是将数据预处理成每分钟一个存储桶,因此每个事件和每分钟都有一行。这使得选择和产生正确的结果变得足够简单和快速。要获得不同的粒度,您可以对时间戳列执行整数运算-选择abs(时间戳/因子)*因子和group by abs(时间戳/因子)*因子。

这解决了第一个问题(我只需将时间戳除以粒度,并将其分组),但不是第二个更难的问题。我担心我无法绕过数据预处理。可能可以使用mysqltimestamp的“where timeyyy”,这意味着必须为每个bucket运行一个查询,并在应用层进行聚合。我看不出这将如何扩展。