Cassandra 哪一个是写效率高的;使用“紧凑存储”选项创建表格;或;创建带有“群集顺序存储”选项的表;?

Cassandra 哪一个是写效率高的;使用“紧凑存储”选项创建表格;或;创建带有“群集顺序存储”选项的表;?,cassandra,cql3,Cassandra,Cql3,我正在设计一个读写关键问题陈述的模式。 哪一种会更高效地进行写和读操作?使用紧凑的存储创建表还是使用集群顺序创建表 根据我的要求,聚类顺序有助于我在阅读过程中节省一些时间。但同时我担心这会影响插入 有人能告诉我吗?紧凑型存储是为了与节俭应用程序向后兼容。我建议避免使用它。从官方文件: 使用压缩存储 compact storage指令用于实现的向后兼容性 使用CQL的旧应用程序。使用指令将数据存储在 旧版(旧版)存储引擎格式。利用CQL 功能,请勿在新应用程序中使用此指令 创建表sblocks(块

我正在设计一个读写关键问题陈述的模式。 哪一种会更高效地进行写和读操作?使用紧凑的存储创建表还是使用集群顺序创建表

根据我的要求,聚类顺序有助于我在阅读过程中节省一些时间。但同时我担心这会影响插入


有人能告诉我吗?

紧凑型存储是为了与节俭应用程序向后兼容。我建议避免使用它。从官方文件:

使用压缩存储

compact storage指令用于实现的向后兼容性 使用CQL的旧应用程序。使用指令将数据存储在 旧版(旧版)存储引擎格式。利用CQL 功能,请勿在新应用程序中使用此指令

创建表sblocks(块id、子块id、数据 blob,主键(块_id,子块_id)),具有紧凑存储; 使用compact storage指令会阻止您定义更多 多个列不是复合主键的一部分。契约 使用非复合主键的表可以有多个 不属于主键的列

使用复合主键的压缩表必须至少定义 一个集群列。之后无法添加或删除列 创建一个紧凑的表。除非您指定使用压缩存储, CQL使用非压缩存储创建表。^


具有集群顺序的表与没有集群顺序的表相比,实际上没有惩罚。写入总是进入memtable(因为Cassandra使用日志结构的存储),并且或多或少类似于一行日志。在读取分区内的正确CQL行时,集群键确实有帮助。使用聚类键进行搜索非常有效,而且确实是推荐的方法。

我没有代表发表评论,所以我想我会把这个留给任何偶然发现这个问题并使用C*>=3.0的人

卡桑德拉的存储引擎在版本3中被重新考虑。默认情况下,数据现在存储在磁盘上更紧凑。使用
压缩存储
选项没有任何好处,除了向后节约兼容性之外,事实上应该完全避免


那么集群订单存储呢。我猜它会保持集群键的排序顺序。这将在插入过程中花费一些时间。它与有序分区有关吗?Cassandra将根据所指示的聚类,以排序的顺序保留分区的所有行。e、 如果主键是(a,b,c,d),那么a是分区键,在该分区中,数据将按b排序,具有相同(a,b)的数据将按c…排序,依此类推。记住,CUD操作会转到提交日志和memtable。它们不会击中磁盘。因此,摄取(写入速度)非常快。压缩期间,旧数据被丢弃,新数据被保留。因此,您不必太担心性能的分类。谢谢您的回复。我从您的回复中了解到,Cassandra将数据按插入顺序存储在Memtable中。当数据被刷新时,数据会按照顺序在sstable中对齐。因此,当我使用集群顺序(desc)编写createtable()时。我不关心插入期间的排序开销。如果我错了,请纠正我。:)几乎正确…表是不变的。在压缩过程中,将创建新表,而不是修改现有表。这将详细介绍,但重点是插入将用于提交日志和memtable,因此,您不必担心在文件中排序数据的成本。您确实需要选择集群键和分区键,以便在使用集群的同时高效地执行查询(即避免大型集群中的热点)。这就是您应该关注的。因此,如果我同时使用群集顺序和紧凑型存储创建表,这会影响我的读/写操作。使用紧凑型存储,您将无法拥有多个列,而这些列不是分区或群集键的一部分。这样想吧-Cassandra将内容存储为映射。如果t压缩存储在CQL中,每个值都会重复ClusteringKey名称。因此,CQL行将是SortedMap中的多个条目。使用压缩存储,不会重复群集key名称。因此,每个CQL行只能有on值。因此不建议使用压缩存储。让我们假设我有一个群集key名称“a”我希望它以降序显示数据。我是否需要使用聚类顺序(描述)以降序创建表。或者最好创建一个简单的表并使用描述顺序。我想我得到了点数据是按照我们定义的顺序存储的(默认情况下,根据群集键的位置,或者我们可以使用群集顺序by来更改默认行为)。我们可以使用orderbyOrder by来反转默认顺序或预定义顺序。目前,只有主键的群集列(即群集键)才支持orderbyOrder by