【发布时间】:2015-01-29 16:43:55
【问题描述】:
我读到 Cassandra 列是物理排序的。如果节点中仅存在单行键(在单个 SSTable 中),我认为这是正确的。如果在多个 SSTables 中存在相同的 key 并且具有不同/相同的列,则节点本身必须在从每个 SSTables 读取后对其进行排序。如果这是正确的,Cassandra 的宽行概念(用于按目的进行列排序/排序)将变得高效。
【问题讨论】:
我读到 Cassandra 列是物理排序的。如果节点中仅存在单行键(在单个 SSTable 中),我认为这是正确的。如果在多个 SSTables 中存在相同的 key 并且具有不同/相同的列,则节点本身必须在从每个 SSTables 读取后对其进行排序。如果这是正确的,Cassandra 的宽行概念(用于按目的进行列排序/排序)将变得高效。
【问题讨论】:
你是对的,Cassandra 会根据集群列在磁盘上对行进行排序。这减少了磁盘上的寻道以满足查询。
你也是对的,一个分区可以存在于磁盘上的多个 SSTable 中,每个 SSTable 都将在磁盘上排序,但是当节点读取一个分区时,它会合并内存中每个 sstaqble 的值 + 内存表中该分区的任何值.
压缩旨在最大程度地减少存在的 SSTable 数量,以保持磁盘寻道次数减少。磁盘可能比合并排序数据慢。
【讨论】: