【发布时间】:2014-09-25 23:21:10
【问题描述】:
我正在设计阅读模式以及编写关键问题陈述。 哪个会更高效地创建具有紧凑存储的表或创建具有集群顺序的表。
根据我的要求,聚类顺序可以帮助我在阅读过程中节省一些时间。但同时我担心它会影响插入。
谁能告诉我?
【问题讨论】:
我正在设计阅读模式以及编写关键问题陈述。 哪个会更高效地创建具有紧凑存储的表或创建具有集群顺序的表。
根据我的要求,聚类顺序可以帮助我在阅读过程中节省一些时间。但同时我担心它会影响插入。
谁能告诉我?
【问题讨论】:
紧凑型存储是为了向后兼容旧款应用程序。我建议避免使用它。来自官方文档:
使用紧凑型存储¶
紧凑存储指令用于向后兼容 使用 CQL 的旧应用程序。使用指令将数据存储在 传统(Thrift)存储引擎格式。利用 CQL 功能,请勿在新应用程序中使用此指令。
CREATE TABLE sblocks (block_id uuid, subblock_id uuid, data blob, PRIMARY KEY (block_id, subblock_id) ) 紧凑存储; 使用紧凑存储指令可以防止您定义更多 比不属于复合主键的一列。紧凑型 使用非复合主键的表可以有多个 不属于主键的列。
使用复合主键的紧凑表必须至少定义 一个聚类列。之后不能添加或删除列 创建一个紧凑的表。除非您指定 WITH COMPACT STORAGE,否则 CQL 创建一个非紧凑存储的表。¶
【讨论】:
具有集群顺序的表确实没有没有表的惩罚。写入总是进入内存表(因为 Cassandra 使用日志结构化存储)并且或多或少像一行日志。在读取以查找分区内的正确 CQL 行时,集群键确实很有帮助。使用聚类键进行搜索非常有效,并且确实是推荐的执行方式。
【讨论】:
我没有代表发表评论,所以我想我会把这个留给任何偶然发现这个问题并使用 C* >= 3.0.0 的人。
Cassandra 的存储引擎在版本 3 中进行了重构。默认情况下,数据现在更紧凑地存储在磁盘上。使用COMPACT STORAGE 选项没有任何好处,除了向后节俭兼容性之外,实际上应该完全避免使用它。
【讨论】: