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



我正在为Cassandra中的金融股票价格存储建模,在那里我需要满足回顾性变化。我想到了一个只能追加的数据库。

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

例如一个记录可能是:ticker=AAPL, date=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中,我可以编写分区查询。在CQL中呢?

还是应该在应用程序级别应用过滤器?

谢谢。

如果我正确理解你的需要,你的表是好的。使用此模式,您可以运行如下查询:

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

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

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

最新更新