我正在寻找一些最佳的数据库解决方案,该解决方案将是存储来自工程测试,实验,模拟结果等的许多数据集的最佳解决方案。
一些定义:
数据集: :它主要是时间序列的集合。每个时间序列都代表在工程活动期间已记录的传感器。记录频率可能因任务类型而异(通常在1到1000 Hz范围内)
频道: 数据集中的各个时间序列
时间: :数据集中的每个通道都有自己的时间向量。它们可能彼此不同。时间是相对的,从0s开始
在同一个项目中,我们将收集许多数据集,每个数据集将与上一个非常相似,但几乎永远不会相同,例如新的或已删除的通道,不同的记录频率,不同的长度(也许1个数据集来自10秒的模拟,而下一个数据集来自10分钟的现场测试)
每个数据集连同通道一起还包含我们需要存储的其他信息,但是不必将其存储在此处,为此我们已经有一个基于SQL的内部解决方案。
要为真实项目提供 一些实数 ,我们可能需要存储:
100个数据集
每个数据集200个频道
平均对数频率500Hz
数据集平均长度为10分钟
这将导致: -每个数据集6000万个点
数据库选择标准:
要存储的必需信息: -与每个渠道相关联的唯一ID(此ID为运行ID) -每个频道的单位 -时间和数据向量
数据库查询: 仍处于集思广益阶段,我不确定100%需要运行哪种查询,但我认为我们不会变得很复杂。我之所以这样说,是因为我们运行着非常复杂的代码来计算指标,并且目前(现在意味着未来几年)可能无法选择将其实现/移植到另一种语言。 我相信最典型的查询将是类似(类似于伪SQL)的查询: 从“整个数据库”中选择“压力传感器1“> 60bar 然后,我将查看条件发生了什么运行以及运行期间的时间。 然后,在另一个环境中,我将获取数据并计算指标。 这就是为什么我不认为查询会变得非常复杂,但我认为它们会非常“按时间索引”。
我一直在研究时间序列数据库,并且一直在使用InfluxDB。我想我可以使其兼容,但是我不确定可伸缩性。 我真的是NoSQL数据库的新手,所以您的任何建议肯定会增加我的知识。 我也看着redis。鉴于它可以存储的数据结构不同,这似乎是最快的解决方案,而且可能也是一个不错的解决方案。但是,我不确定它是否是内存数据库...这是否意味着所有内容都将存储在RAM中? 无论如何,正如我所说,我正处于此工作的集思广益阶段,因此请随时评论您能想到的任何事情。
先谢谢您
Guido