我使用cassandra作为Ignite的第三方商店。为了将数据持久化到Ignite,我使用spring-boots-Ignite-jpa实现,并且我的对象通常具有未填充的字段,因此为null。自然地,当数据被持久化到cassandra中时,这会创建一个空值tombstone,在我的情况下,由于数据量的原因,会创建很多。
有人知道是否有一种配置,我可以指定在插入期间不设置(取消设置(具有null值的字段(列(吗?
我知道cassandra中的null值有一个特殊的含义,如果更新为null,这种方法最终不会覆盖列值。不过,我并不关心那个案子。
到目前为止,我所做的是实现我的自定义CassandraCacheStoreFactory,但我想知道是否有更简单的方法。
如果插入空值,集群侧就没有办法告诉Cassandra忽略它。
但在客户端,使用您的驱动程序,您可以告诉它忽略null值,这样它就不会将其发送给Cassandra。
看看InsertOptions.InsertOptionsBuilder有一种方法告诉驱动程序忽略null值:withInsertNulls(boolean insertNulls(,我认为它适合您的用例:
https://docs.spring.io/spring-data/cassandra/docs/current/api/org/springframework/data/cassandra/core/InsertOptions.InsertOptionsBuilder.html#withInsertNulls-布尔值-