对于一个项目,我必须处理许多传感器的时间序列数据。
我有一台工业机器会产生一些工件。对于每项工作(最多20分钟),传感器记录油压和温度,以及一些其他振动数据(非常高的频率)。所有这些时间序列都记录在一个.csv文件中,每个传感器和每个工作一个。每个文件都命名为:
yyyy_mm_dd_hh_mm_ss_sensorname.csv
,并且只包含一个实数序列。
我必须以某种方式存储此类数据。我正在基准测试许多解决方案,无论是关系型还是非关系型,例如MySQL,Cassandra,Mongo等。
特别是对于Cassandra和Mongo,我正在使用 Pentaho数据集成作为ETL工具。
我为两个数据库设计了一个通用方案(唯一列族/集合):
---------------------------------------
id | value | timestamp | sensor | order
---------------------------------------
问题是我被迫从文件名中提取时间戳和传感器信息,并且我必须进行许多转换以具有所需的格式。
这会减慢我的整个工作速度:对于MongoDB,上传单个工作(仅使用一个高频指标,总共3M行,或多或少)需要 3分钟, > 8分钟(卡桑德拉)。
我现在在一个节点上运行两个DB,目前有16 GB RAM和15 Core CPU。
我确定我做错了转换,所以问题是:我怎样才能加快速度?
这是我的KTR文件:https://imgur.com/a/UZu4kYv(没有足够的代表来发布图片)