Cassandra 用于低基数群集列的上的二级索引
将Cassandra用作数据库: 假设我们有这个模式Cassandra 用于低基数群集列的上的二级索引,cassandra,Cassandra,将Cassandra用作数据库: 假设我们有这个模式 主键((id1),id2,type)带有索引在类型上,因为我们希望通过id1和id2进行查询 你喜欢什么 从my_表中选择*,其中id1=xxx并键入='some type' 你会表现出色吗 我想知道我们是否必须为这种情况创建和管理另一个表 您计划使用二级索引的方式是理想的(很少)。原因如下: 在查询中指定分区键(id1)。这确保 只查询相关的分区(节点),不查询 命中群集中的所有节点(不可扩展) 您(大概)正在索引一个低基数的属性(我可以
主键((id1),id2,type)
带有索引
在类型
上,因为我们希望通过id1
和id2
进行查询
你喜欢什么
从my_表中选择*,其中id1=xxx并键入='some type'
你会表现出色吗
我想知道我们是否必须为这种情况创建和管理另一个表 您计划使用二级索引的方式是理想的(很少)。原因如下:
- 在查询中指定分区键(id1)。这确保 只查询相关的分区(节点),不查询 命中群集中的所有节点(不可扩展)
- 您(大概)正在索引一个低基数的属性(我可以想象您可能有几百种类型?),这是使用二级索引时的最佳选择
终结注释:如果类型有限,可以考虑单独使用((ID1)、类型、ID2)作为单个表。当通过id1-id2进行查询时,只需针对类型的可能值发出一些并行查询
最后的决定需要考虑您的目标延迟、磁盘使用情况(使用不同的主键复制表有时过于昂贵)以及每次查询的频率。谢谢,这是一个非常可靠的建议。您的最后一个注释看起来非常理想,但不幸的是,这个微服务不知道它存储的是什么类型。很好的建议。