我要在春季设置新的反应式Cassandra休息服务,然后在所有表上都有is_deleted
,is_active
,storeid
等“默认”字段。
由于假设在where查询中需要is_deleted。 它是作为复合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;
答案 0 :(得分:0)
它不会在内部影响Cassandra,但是如果您不需要所有这些键,则会在开发部分不必要地施加压力。我个人认为在PK中包含布尔值很奇怪,但是您的用例可能证明了这一点。
您可能会争辩说,由于有更多的列,Cassandra可能会为密钥计算散列有一些额外的开销,但是我怀疑这是否有意义,因为散列函数通常具有高性能。