gpt4 book ai didi

indexing - Cassandra 1.1 存储引擎它如何存储复合 Material ?

转载 作者:行者123 更新时间:2023-12-04 15:35:31 25 4
gpt4 key购买 nike

当涉及到复合列时,我试图了解 Cassandra 的存储引擎。不幸的是,到目前为止我读过的文档包含错误,让我有点空白。

第一,术语。

Composite columns comprise fully denormalized wide rows by using composite primary keys.



这似乎具有误导性,因为 AFAIK,复合列可用于复合键,也可用作除键之外的复合列。

1:组合键和列名是如何实现的?我能找到的每个 CQL 示例都只将组合键显示为列,而不是普通的组合列。

假设我们有列 'a'、'b'、'c'、'd' 作为主组合键 + 列 'e'、'f'。我知道 'a' 将是行和分区键。

让我们假设以下数据:
a    b    c    d    e    f
1a 1b 1c 1d e1 f1
1a 1b 1c 2d e1 f2
1a 1b 1c 2d e2 f3
2a 2b 2c 2d e2 f4

2:这是如何存储在引擎盖下的?我想这里真正的问题是“b”、“c”、“d”是如何映射的,因为列不是按定义分层的。

3:我阅读的文档说不应再使用紧凑型存储。但是如果不需要添加非主键列怎么办……那不使用它的原因是什么?

最佳答案

1: How are composite keys and column names implemented?



大部分回答问题 2 .顺便说一句,在 Cassandra 1.2 中,非复合键也将在幕后实现为复合键。此外,复合列的名称本身在存储中不会重复。内存中表示将名称实习到内存效率的阈值。

2: How is this stored under the hood?



第一个键组件(在您的示例中为 a)成为物理行键。其余的列构成了非复合列的前缀,并预先排序(集群)存储在一行中。因此,您的示例的物理表示将如下所示:
    1b.1c.1d, e   1b.1c.1d, f
1a e1 f1
------------------------------
2b.2c.2d, e 2b.2c.2d, f
2a e2 f4

请注意,示例中的第二行和第三行无效。列名在物理行中必须是唯一的。

我使用的点符号 ( 1b.1c.1d ) 是比喻性的。实际存储使用前缀字节作为元数据,后跟数据。

The documentation I read says compact storage should no longer be used. But what if non-primary key columns don't need to be added... what's the reason not to use it then?



非常小的存储效率不值得在您的模式中没有可进化性的缺点。

关于indexing - Cassandra 1.1 存储引擎它如何存储复合 Material ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11978386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com