8

我正在寻找一种方法来存储带有时间戳的数据。

每个时间戳可能有 1 到 10 个数据字段。

我可以(time, key, value)使用简单的数据解决方案或 SQL 来存储数据吗?这与我可以存储的 mongo 之类的 noSQL 解决方案相比如何{time:.., key1:..., key2:...}

它将存储大约 10 个数据点,每秒最多大约 10 个字段。数据可能会收集长达 10 年,很容易聚合10 亿条记录。数据库应该能够通过时间范围查询帮助绘制数据。

它应该能够处理高写入频率,每秒约 100 次(好吧,这不是那么高,但仍然......),同时能够处理返回大约一百万条记录的查询(甚至更多)

数据本身非常简单,它们只是电子测量。有些需要以高频率(约 100 毫秒)进行测量,而另一些则需要每 1 分钟左右测量一次。

任何使用过类似方法的人都可以评论他们使用的方法的优缺点吗?

(显然这是一个非常具体的场景,所以这绝对不是为了解决什么是最好的数据库问题)。

样本数据:

{ _id: Date(2013-05-08 18:48:40.078554),
  V_in: 2.44,
  I_in: .00988,
  I_max: 0.11,
},

{_id: Date(2013-05-08 18:48:40.078325),
  I_max: 0.100,
},

{ _id: Date(2001-08-09 23:48:43.083454),
  V_out: 2.44,
  I_in: .00988,
  I_max: 0.11,
},

谢谢你。

4

3 回答 3

6

查看一些时间序列数据库:

已安装的软件

服务

于 2013-05-10T23:06:49.310 回答
4

其他可能值得一看的:

于 2014-01-06T01:20:57.950 回答
2

为简单起见,我只是制作一个时间戳表,每个测量点有一列,并且整数主键在技术上是多余的,因为时间戳唯一标识一个测量点,但是按数字引用特定行比按数字更容易时间戳。对于在该时间戳期间未采用的任何测量参数,您将有空值,这将占用每行的一些额外位(以列数为底数的 2,四舍五入),但您也不必进行任何连接. 如果您决定以后要添加列,这是正确的,但这真的不是太难,您可以创建另一个单独的表,以该表为键。

请在此处查看您的数据示例:http ://www.sqlfiddle.com/#!2/e967c/4

我建议制作一些大尺寸的虚拟数据库,以确保您使用的任何结构仍然可以充分发挥作用。

(time,key,value)建议闻起来EAV,如果您打算扩展,我会避免这样做。

于 2013-05-09T21:10:51.320 回答