Cassandra(或Scylla)如何对集群列进行排序?

Cassandra(或Scylla)如何对集群列进行排序?,cassandra,scylla,Cassandra,Scylla,卡桑德拉(或“锡拉”)的好处之一是: 当一个表有多个集群列时,数据以嵌套排序顺序存储。 因此,我认为以相同的排序顺序读取数据应该非常快 如果数据的写入顺序与集群列指定的顺序不同,那么Cassandra(或Scylla)实际何时对数据重新排序 是在memtables刷新到SSTables时吗 如果一个memtable已经刷新了,我添加了一条新记录,该记录应该在现有SSTable中的记录之前,该怎么办 它是否会让磁盘上的数据暂时处于无序状态,并在压缩过程中重新排序 如果是这样,需要采取哪些步骤来确

卡桑德拉(或“锡拉”)的好处之一是:

当一个表有多个集群列时,数据以嵌套排序顺序存储。

因此,我认为以相同的排序顺序读取数据应该非常快

如果数据的写入顺序与集群列指定的顺序不同,那么Cassandra(或Scylla)实际何时对数据重新排序

是在memtables刷新到SSTables时吗

如果一个memtable已经刷新了,我添加了一条新记录,该记录应该在现有SSTable中的记录之前,该怎么办

它是否会让磁盘上的数据暂时处于无序状态,并在压缩过程中重新排序


如果是这样,需要采取哪些步骤来确保读取顺序正确?

数据总是在任何给定的sstable中排序

当memtable刷新到磁盘时,将创建一个新的sstable,并在其内部进行排序。这是自然发生的,因为memtables以排序的顺序存储数据,所以此时不需要额外的排序。排序是在插入memtable时进行的

使用自然排序的read必须从与read相关的所有sstables中读取,将多个排序结果合并为一个排序结果。这种合并是在内存中动态进行的

压缩开始时,将用一个表替换多个SSTABLE,创建一个合并流,就像常规读取一样


这种存储数据的技术称为a。

数据在压缩过程中会重新排序

基本上,任何写操作都只是一个附加操作,以达到非常快的速度。没有涉及阅读或搜索

读取数据时,Cassandra正在从活动memtable和一个或多个SSTable读取数据。聚合数据并满足查询

由于数据分发可能需要访问越来越多的SSTABLE,因此压缩的作用是重新组织磁盘上的数据,从而消除从多个SSTABLE读取数据的潜在开销。值得一提的是,SSTables是不可变的,并且会创建新的SSTables。旧的被丢弃了


“锡拉”和“卡桑德拉”的过程类似。

试着阅读“锡拉”的
架构
页面中关于sstables的内容:我想你会在
sstable解释部分找到一些答案:非常好的解释,谢谢。我一直试图在网上找到有关这方面的文档或文章,但没有找到任何关于将多个SSTABLE合并为一个结果的内容。