【发布时间】:2016-09-30 23:03:16
【问题描述】:
我正在对 Cassandra 中的金融股票价格存储进行建模,我需要在其中满足追溯变化的需求。 我想到了一个仅附加的数据库。
CREATE TABLE historical_data (
ticker text,
eoddate timestamp,
price double,
created timestamp,
PRIMARY KEY(ticker, eoddate)
) WITH CLUSTERING ORDER BY (eoddate DESC);"""
例如,一条记录可能是: 股票代码=AAPL,eoddate=2016-09-28,价格=123.4,创建=2016-09-28 16:30:00
一天后,有一个复古数据修复,我会插入另一条记录 股票代码=AAPL,eoddate=2016-09-28,价格=120.9,创建=2016-09-29 09:00:00
如果我想获取 AAPL 的最新系列(即过滤第一个值),那么建模/查询这些数据的最佳方法是什么? 在 SQL 中,我可以编写一个分区查询。在 CQL 中怎么样?
还是应该在应用程序级别应用过滤器?
谢谢。
【问题讨论】:
-
您好,要正确建模,我们需要更多信息,更准确地说:基数。最多有多少个股票(当然是估计的)?每个股票有多少更新?每天/小时/分钟 1 次?数据保留策略(我想在你的情况下,数据永远不会被删除)。您的案例中的记录是可变的还是不可变的?
-
是的,我正在尝试在 Cassandra 中创建一个不可变的、仅附加的模式模型。上面的财务收盘只是一个例子。为了便于讨论,我假设有 30k 个股票代码,并且每个股票代码很可能每天都有一个收盘价,除了极少数情况下的回顾性更改(例如,每周更新一个值),我会插入新的价值。挑战在于找到有效查询数据的方法。如果是 SQL,我会执行“按 EOD 从分区中选择(每个分区选择最新的一个)”。我将如何在 CQL 中做类似的事情?
标签: database cassandra cql finance