【发布时间】:2013-04-17 23:16:39
【问题描述】:
我正在研究用于存储时间序列的 Cassandra 数据模型(我是 Cassandra 新手)。 我有两个应用程序:盘中股票数据和传感器数据。
股票数据将以一分钟的时间分辨率保存。 七个数据字段构建一个时间框架: 品种、日期时间、开盘价、最高价、最低价、收盘价、成交量
我将主要通过符号和日期来查询数据。例如给我日期时间订购的 2013 年 1 月 1 日到 2013 年 1 月 31 日之间 AAPL 的所有数据。 cassandra 查询的建议是查询整个列。因此,您可以使用 Open、High、Low、Close、Volume 键创建五行。每个符号和分钟都有自己的列。例如。 “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:每天的分钟数/条目数)的表。
总结一下:我有列,其中包含一个符号一整天的信息。
我在http://www.datastax.com/dev/blog/advanced-time-series-with-cassandra 找到了如何在 cassandra 中处理时间序列数据的描述 但我真的不明白,如果他们使用小时 (1332960000) 作为列名或行键!? 我知道他们使用小时作为行键并将小时间步长作为列。所以他们会有一个固定的列号。但这在阅读方面会有缺点,因为我必须对键进行范围查询!我说的对吗?
第二个问题: 如果我有传感器数据,它比 1 分钟的库存数据更精细(假设我必须以微秒的分辨率保存时间步长)我将如何处理这个问题? 如果我使用列来保存传感器通道和小时的组合,以及自上一小时以来的微秒行,这将导致 3,600,000,000 行和 n*nH 列(n:传感器数,nH:小时数)。 我无法将自上一小时以来的微秒用于列,因为我有 36 亿个点,高于允许的 20 亿列数。
我收到了吗? 你怎么看这个问题?如何解决?
谢谢!
最好, 马耳他
【问题讨论】:
标签: database nosql cassandra time-series bigdata