java—将“is\u deleted”状态字段作为复合主键放在cassandra表上进行读取是一种好的做法吗?

iyfjxgzm  于 2021-06-14  发布在  Cassandra
关注(0)|答案(1)|浏览(322)

我在spring上设置了新的React式cassandrarest服务,然后有一个“default”字段,比如 is_deleted , is_active , storeid ,等等。
因为假设where查询需要删除。它被创建为一个复合pk,这样数据搜索会更快。
问题是因为,主键非常胖,搜索查询变得太长,因为它需要提到所有默认键。
在Cassandra上有这样的脂肪复合pk是一个好的做法吗?

@PrimaryKeyColumn(name = BaseCassandraFields.STORE_ID, type = PrimaryKeyType.PARTITIONED)
  protected String storeId;

@PrimaryKeyColumn(name = BaseCassandraFields.IS_DELETED, type = 
PrimaryKeyType.PARTITIONED)
  protected Boolean isDeleted = false;

表格示例
还有ddl

643ylb08

643ylb081#

它不会在内部影响cassandra,但是如果您不需要所有这些键,那么您就不需要在开发部分施加压力。我个人觉得在pk中使用布尔值很奇怪,但是您的用例可能会证明这一点。
您可能会认为,由于列数较多,cassandra在计算键的哈希时可能会有一些额外的开销,但我怀疑这是否有意义,因为哈希函数通常具有高性能。

相关问题