我正在为读取设计模式以及编写关键问题语句。 这将更有效地编写和读取创建具有紧凑存储的表或使用聚类顺序创建表。
根据我的要求,群集顺序可以帮助我在阅读过程中保持安全。但与此同时我担心它会影响插入。
可以告诉任何人吗?
答案 0 :(得分:3)
紧凑型存储是为了向后兼容节俭应用程序。我建议避免使用它。来自官方文档:
使用紧凑型存储¶
紧凑存储指令用于向后兼容 使用CQL的旧应用程序。使用该指令将数据存储在 传统(Thrift)存储引擎格式。利用CQL 功能,请勿在新应用程序中使用此指令。
CREATE TABLE sblocks(block_id uuid,subblock_id uuid,data blob,PRIMARY KEY(block_id,subblock_id))具有紧凑的存储; 使用紧凑存储指令可以防止您定义更多 不是一列不是复合主键的一部分。紧凑 使用非复合主键的表可以有多个 不属于主键的列。
使用复合主键的紧凑表必须至少定义 一个聚类列。之后无法添加或删除列 创建一个紧凑的表。除非您指定WITH COMPACT STORAGE, CQL创建一个非紧凑存储的表。
答案 1 :(得分:3)
具有聚类顺序的表确实没有对没有表的惩罚。写入总是进入memtable(因为Cassandra使用日志结构化存储)并且或多或少像一行日志。在读取时,群集键确实有助于在分区内寻找正确的CQL行。使用群集键进行搜索非常有效,并且确实是推荐的做事方式。
答案 2 :(得分:1)
我没有代表发表评论,所以我想把这个留在这里给那些偶然发现这个问题且使用C *> = 3.0的人。
Cassandra的存储引擎在版本3中进行了重新计算。默认情况下,数据现在更紧凑地存储在磁盘上。除了向后节约兼容性之外,使用COMPACT STORAGE
选项没有任何好处,事实上它应该完全避免。