Cassandra仅附加时间序列建模/查询

时间:2016-09-29 14:53:32

标签: database cassandra cql finance

我正在为卡桑德拉的金融股票存储建模,我需要在那里进行追溯性变更。 我只想到一个仅附加数据库。

CREATE TABLE historical_data ( ticker text, eoddate timestamp, price double, created timestamp, PRIMARY KEY(ticker, eoddate) ) WITH CLUSTERING ORDER BY (eoddate DESC);"""

例如,记录可能是: ticker = AAPL,eoddate = 2016-09-28,price = 123.4,created = 2016-09-28 16:30:00

一天后,有一个复古数据修复,我再插入另一条记录 ticker = AAPL,eoddate = 2016-09-28,price = 120.9,created = 2016-09-29 09:00:00

如果我想获得AAPL的最新系列(即过滤第一个值),建模/查询此数据的最佳方法是什么? 在SQL中我可以写一个parition查询。在CQL中怎么样?

或者应该在应用程序级别应用过滤器吗?

感谢。

1 个答案:

答案 0 :(得分:0)

如果我理解你的需要,你的桌子就好了。 使用此架构,您可以运行以下查询:

SELECT price
FROM historical_data
WHERE ticker = 'AAPL'
LIMIT 1;

它将返回股票代码AAPL的最后价格。

CLUSTERING ORDER BY子句以特定ticker的降序对您的数据进行物理排序,它不会对整个表进行排序。所以这个查询应该足够了。