如何在 cassandra 中找到最后一个和第一个条目(日期是分区键的一部分)

How to find last and first entry in cassandra (date is part of partition key)

如果我的分区键包含文本日期作为分区键的一部分以避免大分区,是否可以在 Cassandra 数据库中找到第一个和最后一个条目?

CREATE TABLE trades (
    stockexchange text,
    symbol text,
    ts timestamp,
    date text,
    tid text,
    price decimal,
    side text,
    size decimal,
    PRIMARY KEY ((stockexchange, symbol, date), ts, tid)
) WITH CLUSTERING ORDER BY (ts ASC, tid ASC)

一种解决方案是 - 创建第二个 table 并单独存储。 仅:stockexchange、符号、时间戳

这使您能够通过密钥 (stockexchange:symbol) 找到第一个和最后一个时间戳

请注意,您必须同时存储数据,Cassandra 不是 ACID 数据库类型。

CREATE TABLE trades (
    stockexchange text,
    symbol text,
    ts timestamp,
    date text,
    tid text,
    price decimal,
    side text,
    size decimal,
    PRIMARY KEY ((stockexchange, symbol, date), ts, tid)
) WITH CLUSTERING ORDER BY (ts ASC, tid ASC)

CREATE TABLE trades_timestampts (
stockexchange text,
symbol text,
tid text,
ts timestamp,
PRIMARY KEY ((stockexchange, symbol), ts, tid)) WITH CLUSTERING ORDER BY (ts asc, tid asc);