gpt4 book ai didi

cassandra - 为什么 Cassandra 中的 super 列不再受到青睐?

转载 作者:行者123 更新时间:2023-12-02 19:32:17 24 4
gpt4 key购买 nike

我在最新版本中读到,由于“性能问题”, super 列并不可取,但没有对此进行解释。

然后我读了诸如this one之类的文章使用 super 列提供美妙的索引模式。

这让我不知道目前在 Cassandra 中建立索引的最佳方式是什么。

  1. super 列有哪些性能问题?
  2. 在哪里可以找到当前索引最佳实践?

最佳答案

super 列存在许多问题,其中最重要的是 Cassandra 在查询时需要反序列化 super 列的所有子列(即使结果只会返回一小部分子集)。因此,在性能受到影响之前,每个 super 列可以存储的子列数量存在实际限制。

理论上,这个问题可以在 Cassandra 中通过正确索引子列来解决,但共识是复合列是更好的解决方案,并且它们的工作不会增加复杂性。

使用复合列的最简单方法是利用 CQL 3 的抽象。提供。考虑以下架构:

CREATE TABLE messages(
username text,
sent_at timestamp,
message text,
sender text,
PRIMARY KEY(username, sent_at)
);

这里的用户名是行键,但我们使用了主键定义,它创建了行键和sent_at 列的分组。这很重要,因为它具有对该属性建立索引的效果。

INSERT INTO messages (username, sent_at, message, sender) VALUES ('bob', '2012-08-01 11:42:15', 'Hi', 'alice');
INSERT INTO messages (username, sent_at, message, sender) VALUES ('alice', '2012-08-01 11:42:37', 'Hi yourself', 'bob');
INSERT INTO messages (username, sent_at, message, sender) VALUES ('bob', '2012-08-01 11:43:00', 'What are you doing later?', 'alice');
INSERT INTO messages (username, sent_at, message, sender) VALUES ('bob', '2012-08-01 11:47:14', 'Bob?', 'alice');

在幕后,Cassandra 将存储上面插入的数据,如下所示:

alice: (2012-08-01 11:42:37,message): Hi yourself, (2012-08-01 11:42:37,sender): bob
bob: (2012-08-01 11:42:15,message): Hi, (2012-08-01 11:42:15,sender): alice, (2012-08-01 11:43:00,message): What are you doing later?, (2012-08-01 11:43:00,sender): alice (2012-08-01 11:47:14,message): Bob?, (2012-08-01 11:47:14,sender): alice

但是使用CQL 3,我们可以使用sent_at谓词查询“行”,并返回表格结果集。

SELECT * FROM messages WHERE username = 'bob' AND sent_at > '2012-08-01';
username | sent_at | message | sender
----------+--------------------------+---------------------------+--------
bob | 2012-08-01 11:43:00+0000 | What are you doing later? | alice
bob | 2012-08-01 11:47:14+0000 | Bob? | alice

关于cassandra - 为什么 Cassandra 中的 super 列不再受到青睐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11915255/

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