我正在尝试使用cassandra为事件采购创建事件存储,并了解它是如何适合这种用法的。 Keyspace包含一个表:
CREATE TABLE commits (
stream_id text,
version bigint,
'timestamp' timestamp,
commit blob,
PRIMARY KEY(stream_id, version)
);
我需要3个基本操作:
stream_id
单个作家我都可以。stream_id
的所有提交,并以version
为界。这也不难,但我认为性能可以某种方式得到改善。目前的实施:
SELECT * FROM commits WHERE stream_id = ? AND version >= ? AND version <= ? ORDER BY version;
timestamp >= ? AND timestamp <= ?
或其他全局序列号限定的所有提交。 我理解全局排序在分布式系统中是一种邪恶。此查询不会经常使用。更好的是使用一些计数器而不是时间戳。 如何在cassandra中实现此要求?