我正在尝试弄清楚这些新型数据存储(如bigtable、hbase和cassandra)到底是什么。
我处理大量的股市数据,数十亿行价格/报价数据,每天可能会增加数百GB的数据量(尽管这些文本文件通常可以压缩至少一个数量级)。这些数据基本上只包含一些数字、两三个短字符串和一个时间戳(通常是毫秒级别)。如果我必须为每一行选择一个唯一的标识符,我将不得不选择整行数据(因为同一毫秒内,一个交易所可能会为同一股票产生多个值)。
我认为将此数据映射到bigtable(我包括其派生产品)的最简单方法是按照股票名称和日期进行映射(这可能会返回一个非常大的时间序列,超过一百万个数据点并不罕见)。从阅读它们的描述来看,这些系统似乎可以使用多个键。而且,我假设小数不适合作为键。
其中一些系统(例如Cassandra)声称能够执行范围查询。我是否能够高效地查询出某天11:00 am至1:30 pm之间所有MSFT的值呢?
如果我想在所有符号中搜索给定日期的价格在10美元到10.25美元之间的所有符号(因此我正在搜索值,并希望返回键作为结果),该怎么做?
如果我想获取两个时间序列,将一个序列从另一个序列中减去,并返回这两个时间序列及其结果,那么我是否必须在自己的程序中执行此逻辑?
阅读相关论文似乎表明,这些系统并不非常适合用于大规模的时间序列系统。然而,如果像谷歌地图这样的系统都是基于它们构建的,我认为时间序列应该也能很好地工作。例如,把时间看作x轴、价格看作y轴、符号看作命名位置——突然间,bigtable应该是时间序列的理想存储方式(如果可以存储整个地球、检索和缩放注释,那么股票市场数据应该是微不足道的)。
有没有专家可以指点我正确的方向或澄清任何误解。
谢谢