gpt4 book ai didi

database - 时间序列的 Cassandra 数据模型

转载 作者:搜寻专家 更新时间:2023-10-30 19:53:30 24 4
gpt4 key购买 nike

我正在研究用于存储时间序列的 Cassandra 数据模型(我是 Cassandra 新手)。我有两个应用程序:盘中股票数据和传感器数据。

股票数据将以一分钟的时间分辨率保存。七个数据字段构建一个时间范围:交易品种、日期时间、开盘价、最高价、最低价、收盘价、交易量

我将主要按符号和日期查询数据。例如给我日期时间订购的 2013-01-01 和 2013-01-31 之间 AAPL 的所有数据。cassandra 查询的建议是查询整列。因此,您可以使用开盘价、最高价、最低价、收盘价和成交量键创建五行。每个符号和分钟都有自己的专栏。例如。 “AAPL:2013-01-04T130400Z”。这将产生一个包含五行和 n*NT 列的表格,其中 n = 符号数,nT = 分钟数。大多数时候我会查询日期范围。 IE。一天的所有分钟。因此,我可以重新排列数据,使其具有名为“AAPL:2013-01-04”的列和行:OpenT130400Z、HighT130400Z、LowT130400Z、CloseT130400Z、VolumeT130400Z。这将生成一个包含 n*nD 列(n:符号数,nD:天数)和 5*nM 行(nM:每天的分钟数/条目数)的表格。

总结一下:我有一些列,其中包含一个交易品种一整天的信息。

我在这里找到了如何在 cassandra 中处理时间序列数据的描述 http://www.datastax.com/dev/blog/advanced-time-series-with-cassandra但我真的不明白,如果他们使用小时(1332960000)作为列名或行键!?我知道他们使用小时作为行键,并将小时间步长作为列。所以他们会有一个固定的列号。但这在阅读时会有缺点,因为我必须对键进行范围查询!我说得对吗?

第二个问题:如果我有传感器数据,它比 1 分钟的库存数据更细粒度(假设我必须以微秒的分辨率保存时间步长)我将如何处理这个问题?如果我使用列来保存传感器 channel 和小时的组合,以及自上一小时以来微秒的行,这将导致 3,600,000,000 行和 n*nH 列(n:传感器数量,nH:小时数)。我无法将自上一小时以来的微秒用于列,因为我有 36 亿个点,高于允许的 20 亿列数。

我收到了吗?你怎么看待这个问题?如何解决?

谢谢!

最好的,麦芽糖

最佳答案

因此,对于您关于股票数据的第一个问题,我有一个建议。一个天真的实现可能看起来像这样:

行键:

列格式:

名称:精确到一分钟的当前日期时间

值:开盘价、最高价、最低价、收盘价、成交量的复合列

所以你会得到类似的东西

AAPL = [2013-05-02-15:38:00 | 441.78:448.59:440.63:15066146:445.52] ... [2013-05-02-15:39:00 | 441.78:448.59:440.63:15066146:445.52] ... [2013-05-02-15:40:00 | 441.78:448.59:440.63:15066146:445.52]

这将在一年内为您提供大约 50 万个列,因此可能 4 年内没问题。我不会去尝试达到 20 亿的限制。您可以做的是在行键上定义一个拆分因子。这完全取决于您的使用模式,但一个简单的可能是年份,因此列族条目可能看起来像这样带有复合行键,这将保证您每行的列始终少于一百万。

AAPL:2013 = [05-02-15:38:00 | 441.78:448.59:440.63:15066146:445.52] ... [05-02-15:39:00 | 441.78:448.59:440.63:15066146:445.52] ... [05-02-15:40:00 | 441.78:448.59:440.63:15066146:445.52]

关于database - 时间序列的 Cassandra 数据模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16191410/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com