我试图弄清楚这些新奇的数据存储(例如 bigtable、hbase 和 cassandra)到底是什么。

我处理大量的股票市场数据,数十亿行的价格/报价数据,每天加起来可达数百千兆字节(尽管这些文本文件通常会压缩至少一个数量级)。这些数据基本上是一些数字、两三个短字符串和一个时间戳(通常是毫秒级)。如果我必须为每一行选择一个唯一标识符,我就必须选择整行(因为交易所可能会在同一毫秒内为同一符号生成多个值)。

我想将此数据映射到 bigtable(我包括其衍生品)的最简单方法是按交易品种名称和日期(这可能会返回非常大的时间序列,超过一百万个数据点并非闻所未闻)。从阅读他们的描述来看,这些系统似乎可以使用多个密钥。我还假设十进制数字不适合作为键。

其中一些系统(例如 Cassandra)声称能够进行范围查询。我能否高效地查询指定日期(上午 11:00 到下午 1:30)之间的 MSFT 的所有值?

如果我想搜索给定日期的所有交易品种,并请求价格在 10 美元到 10.25 美元之间的所有交易品种(因此我正在搜索值,并希望返回键作为结果),该怎么办?

如果我想获得两个时间序列,从另一个时间序列中减去一个,然后返回两个时间序列及其结果,我是否必须在自己的程序中执行他的逻辑呢?

阅读相关论文似乎表明这些系统不太适合大规模时间序列系统。然而,如果谷歌地图等系统是基于它们的,我认为时间序列也应该有效。例如,将时间视为 x 轴,将价格视为 y 轴,将符号视为命名位置——突然间,bigtable 看起来应该是时间序列的理想存储(如果可以存储、检索整个地球) ,缩放和注释,股市数据应该是微不足道的)。

一些专家可以指出我正确的方向或消除任何误解吗?

谢谢

有帮助吗?

解决方案

我还不是专家,但我已经和Cassandra玩了几天了,我有一些答案给你:

  1. 不要担心数据量,如果你有一个大型硬件集群的$$$,它与像Cassandra这样的系统无关。
  2.   

    其中一些系统(例如Cassandra)声称能够进行范围查询。在给定的一天,上午11:00到下午1:30之间,我是否能够有效地查询MSFT的所有值?

    当您知道如何使用密钥时,Cassandra非常有用。它可以非常快速地通过键。因此,要在11:00到1:30之间搜索MSFT,您必须按如下方式键入行:

    MSFT-timestamp,GOOG-timestamp,..等 然后你可以告诉Cassandra找到所有以MSFT开头的键并以MSFT结束 - 现在+ 1小时结束。

      

    如果我想搜索给定日期的所有符号,并请求价格在10美元到10.25美元之间的所有符号(因此我正在搜索值,并希望返回键作为结果),该怎么办?

    我不是专家,但到目前为止,我意识到卡桑德拉根本没有“按价值搜索”。因此,如果您想要执行上述操作,则必须创建另一个专门针对此问题的表,并设计适合该案例的架构。但它与我上面描述的不会有太大的不同。这都是关于命名键和列的。卡桑德拉可以很快找到它们!

      

    如果我想获得两个系列,从另一个系列中减去一个,并返回两次系列及其结果,我将不得不在我自己的程序中执行他的逻辑怎么办?

    正确,所有逻辑都在您的程序中完成。这不是MySQL。这只是一个存储引擎。 (但我相信下一个版本会提供这些东西)

    请记住,我是新手,如果我错了,请随时纠正我。

其他提示

如果您正在处理大量时间序列数据库,那么标准是:

这些并不便宜,但它们可以非常有效地处理您的数据。

我尊重的人推荐了开放时间序列数据库。特别是,模式是他见过的最好的。

http://opentsdb.net/

'我站在同一座山前。我对cassandra的主要问题是我无法在结果集上获得流,例如以迭代器的形式。

我看起来已经在文档和网络上下,但没有。

我无法获取所有密钥然后获取行数十亿行使得这不可能。

DataStax Java驱动程序允许自动分页,因此它将像迭代器一样流式传输结果,并且它都是内置的。顺便说一下,这是在Cassandra 2.0.1中 - http://www.datastax.com/dev/blog/client-side-improvements-in-cassandra -2-0

为了在2018年完整阅读,现在有一个特殊的数据库,仅用于时间序列数据,称为 TimescaleDB

http://www.timescale.com/

这篇博客值得一读,它解释了为什么它优于Cassandra等解决方案的特殊情况,以及为什么他们决定在关系PostgreSQL数据库之上构建它

https://blog.timescale.com/time-series-data-why-and-how-to-use-a-relational-database-instead-of-nosql-d0cd6975e87c

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top