我打算在那里我将与时间序列,如数据打交道,想给那些闪亮的新的NoSQL DB的尝试之一,并正在寻找一个推荐方项目。
对于(成长)一套symbols
我会的(名单time
, value
)元组(随时间提高)。 并非所有的symbols
将被更新; 一些symbols
可能,而其他人可能不会更新,全新的symbols
可以被添加。
因此,数据库应该允许:
- 添加初始一个元素(元组)列表符号。 例如,A:[(2012-04-14 10点23分,50)]
- 更新的符号与新的记录。 (追加该元组到该符号的列表)。
- 读出的数据为给定的符号。 (理想情况下甚至让我指定哪些数据应当返还的时间框架)
在创建和更新操作应该可能是原子的。 如果读取多个符号一次是可能的,这将是有趣的。
性能并不重要。 更新/创建大致会每隔几个小时发生。
我认为,从字面上所有主要NoSQL数据库将支持这一要求,特别是如果你实际上并没有大量的数据(这引出了一个问题,为什么NoSQL的?)。
这就是说,我不得不最近设计和工作用的NoSQL数据库的时间序列数据,从而可以给上设计,然后可以推断,所有其他一些输入。
我们选择的数据库是Cassandra
,而我们的设计如下:
- 所有的“符号”单个密钥空间
- 每个符号是一个新行
- 每一次进入是对于相关行新列
- 每个值(可以是多于一个单值)的时间项的值部
这可以让你达到你要求的一切,最明显的是读取数据的一个符号,以及使用范围(如有必要,柱范围通话)。 虽然你说的表现并不重要,这对我们来说,这是相当高性能的也是 - 所有数据对任何单个符号被定义排序(列名排序),并总是存储在同一节点上(简单查询无交叉节点的通信)。 最后,这样的设计转化井有具有动态列其他NoSQL数据库。
继此,这里使用的MongoDB(并加盖集合如果需要的话)的时间序列存储一些信息: MongoDB中的时间序列数据库
最后,这里的SQL VS的NoSQL的时间序列的讨论: https://dba.stackexchange.com/questions/7634/timeseries-sql-or-nosql
我可以添加到讨论如下:
- 学习曲线的NoSQL会更高,你不免费获得更多的灵活性和功能的“软成本”条款。 谁将会在操作上支持这个数据库?
- 如果您希望此功能在未来的增长(无论是作为多个字段添加到每个时间条目,或符号或符号的时间序列的大小数方面更大的容量)的话,肯定与NoSQL的去。 灵活性的好处是巨大的,对双方你(与上述设计)的可扩展性“每个符号”和“数目的符号”的基础上几乎是无限的(我说的几乎是无限的 - 每行的最大列数是在数十亿美元,最大每个密钥空间行是无界的,我相信)。
看看opentsdb.org其使用HBase的一个开源的时间序列数据库。 他们一直对他们如何存储TS智能。 大家都记录在这里: http://opentsdb.net/misc/opentsdb-hbasecon.pdf