gpt4 book ai didi

nosql - Cassandra 使用复合索引和辅助索引

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

我们想用cassandra来存储复杂的数据
但我们无法弄清楚如何组织索引。

我们的表(列族)如下所示:

Users =
{
RandomId int,
Firstname varchar,
Lastname varchar,
Age int,
Country int,
ChildCount int
}

我们有必填字段(名字、姓氏、年龄)和额外搜索选项(国家、 child 计数)的查询。
我们应该如何组织索引以使这种查询更快?

首先,我认为,对 (Firstname, Lastname, Age) 进行复合索引并在剩余字段 (Country 和 ChildCount) 上添加单独的二级索引是很自然的。
但是我无法在创建二级索引后向表中插入行,也无法查询该表。

使用
  • Cassandra 1.1.0
  • cqlsh 与 --cql3 选项。

  • 欢迎任何其他解决我们问题的建议(具有强制性和附加选项的复杂查询)。

    最佳答案

    这是我的想法。您可以简单地创建一个列族,将您的 RandomId 作为行键,并将所有其余字段简单地作为列(例如列名“firstname”,列值“jonh”)。在此之后,您必须为这些列中的每一列创建一个二级索引。你的值的基数似乎很低,所以它应该有点效率。

    CQL 代码应该是这样的:

    create column family users with comparator=UTF8Type and column_metadata=[{column_name:  firstname, validation_class: UTF8Type,index_type: KEYS},
    {column_name: lastname, validation_class: UTF8Type, index_type: KEYS},
    {column_name: contry, validation_class: IntegerType, index_type: KEYS},
    {column_name: age, validation_class: IntegerType, index_type: KEYS]},
    {column_name: ChildCount, validation_class: IntegerType, index_type: KEYS]];

    一个很好的引用可能是 http://www.datastax.com/docs/0.7/data_model/secondary_indexes

    如果我错了,请告诉我;

    关于nosql - Cassandra 使用复合索引和辅助索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10830453/

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