将大量的有序时间序列数据存储在bigtable衍生物中
我试图弄清楚这些新的数据存储如bigtable,hbase和cassandra究竟是什么。
我使用大量的股票市场数据,数十亿行价格/报价数据,每天可以增加100亿字节(尽pipe这些文本文件通常压缩至less一个数量级)。 这个数据基本上是一些数字,两个或三个短的string和时间戳(通常是毫秒级)。 如果必须为每一行select一个唯一的标识符,我将不得不select整行(因为交换可能会在同一个毫秒内为同一个符号生成多个值)。
我想将这个数据映射到bigtable的最简单方法是使用符号名称和date(这可能会返回一个非常大的时间序列,超过百万个数据点并不是闻所未闻的)。 从阅读他们的描述,看起来像这些系统可以使用多个键。 我还假设十进制数不是键的好select。
其中一些系统(例如Cassandra)声称能够进行范围查询。 在某一天的上午11点到下午1点半之间,我能否有效地查询MSFT的所有值?
如果我想要search给定date的所有符号,并请求价格介于10美元和10.25美元之间的所有符号(所以我正在search这些值,并希望返回结果键)?
如果我想得到两个系列,从另一个减去一个系列,并返回两个系列及其结果,我是否必须在自己的程序中执行他的逻辑?
阅读相关论文似乎表明,这些系统不适合大量的时间序列系统。 但是,如果谷歌地图这样的系统是基于他们的,我认为时间序列也应该起作用。 例如,将时间视为x轴,将价格视为y轴,将符号视为指定位置 – 突然间,它看起来像bigtable应该是时间序列的理想存储区(如果整个地球可以存储,检索,放大和注释,股市数据应该是微不足道的)。
有些专家可以指导我正确的方向,或者澄清任何误解。
谢谢
我还不是一个专家 ,但是我已经和卡桑德拉一起玩了几天了,我有一些答案给你:
- 不要担心数据量,与Cassandra等系统无关,如果对于大型硬件集群有$$$。
其中一些系统(例如Cassandra)声称能够进行范围查询。 在某一天的上午11点到下午1点半之间,我能否有效地查询MSFT的所有值?
当你知道如何使用键时,Cassandra非常有用。 它可以快速通过密钥。 因此,要在11:00到1:30之间searchMSFT,您必须键入如下所示的行:
MSFT-timestamp,GOOG-timestamp,..etc然后你可以告诉Cassandrafind所有以MSFT开头的密钥 – 现在以MSFT-now + 1小时结束。
如果我想要search给定date的所有符号,并请求价格介于10美元和10.25美元之间的所有符号(所以我正在search这些值,并希望返回结果键)?
我不是专家,但是到目前为止,我意识到卡桑德拉并不是“按价值进行search”。 所以,如果你想要做到这一点,你将不得不为另外一个表格专门解决这个问题,并devise你的模式来适应这种情况。 但是和我上面所描述的不一样。 这是关于命名你的键和列。 卡桑德拉可以很快find它们!
如果我想得到两个系列,从另一个减去一个系列,并返回两个系列及其结果,我将不得不在自己的程序中做他的逻辑?
正确的,所有的逻辑都是在你的程序里完成的。 这不是MySQL。 这只是一个存储引擎。 (但是我相信接下来的版本会提供这些东西)
请记住,我是新手,如果我错了,请随时纠正我。
如果你正在处理大量的时间序列数据库,那么标准是:
- KDB: http ://www.kx.com/
- OneTick: http ://www.onetick.com
- Vhayu: http ://www.vhayu.com
这些并不便宜,但可以非常有效地处理您的数据。
我尊敬的人推荐了开放时间序列数据库。 特别是这个模式是他见过的最好的。
“我站在同一座山的前面。 我与cassandra的主要问题是,我不能在结果集上获得stream,例如以迭代器的forms。
我正在上下查看文档和networking,但没有。
我不能获取所有的键,然后得到行数十亿行使这是不可能的。
DataStax Java驱动程序允许自动分页,这样就可以像迭代器一样对结果进行stream式处理,并且全部内置在Cassandra 2.0.1中,顺便说一下 – http://www.datastax.com/dev/blog/client -侧,改进function于卡桑德拉-2-0