Cassandra 为什么《卡桑德拉》中的超级专栏不再受欢迎?

Cassandra 为什么《卡桑德拉》中的超级专栏不再受欢迎?,cassandra,indexing,database-indexes,super-columns,Cassandra,Indexing,Database Indexes,Super Columns,我在最新版本中读到,由于“性能问题”,超级栏目是不可取的,但没有解释这一点 然后我读了一些文章,比如使用超级列给出了极好的索引模式的文章 这让我不知道什么是目前在Cassandra中进行索引的最佳方法 超级列的性能问题是什么 在哪里可以找到当前的索引最佳实践 超级列有很多问题,其中最重要的一个问题是Cassandra在查询时必须反序列化超级列的所有子列(即使结果只返回一小部分)。因此,在性能受到影响之前,每个超级列可以存储的子列数有一个实际限制 从理论上讲,这可以通过正确索引子列在Cassand

我在最新版本中读到,由于“性能问题”,超级栏目是不可取的,但没有解释这一点

然后我读了一些文章,比如使用超级列给出了极好的索引模式的文章

这让我不知道什么是目前在Cassandra中进行索引的最佳方法

  • 超级列的性能问题是什么
  • 在哪里可以找到当前的索引最佳实践

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

    从理论上讲,这可以通过正确索引子列在Cassandra中解决,但一致认为组合列是更好的解决方案,并且它们可以在不增加复杂性的情况下工作

    使用组合列的最简单方法是利用提供的抽象。考虑下面的模式:

    CREATE TABLE messages(
        username text,
        sent_at timestamp,
        message text,
        sender text,
        PRIMARY KEY(username, sent_at)
    );
    
    这里的Username是行键,但我们使用了主键定义,它创建了一组行键和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');
    
    卡桑德拉将在幕后存储上述插入的数据,如下所示:

    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
    
    但是使用cql3,我们可以使用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是否能够高效地对每列执行范围查询?从a>3和a 17等的地方选择*,假设键是a、b、c,或者复合列名(多组件)更适合这种情况?请看这个:有趣。我想使用主键作为直接访问的GUID,但这个复合键似乎也是我想要使用的。对于一个简单的索引,而不是主键,它是否也同样有效?