0

我使用 cassandra 作为 Ignite 的 3rd 方商店。为了将数据持久化到 Ignite,我使用 spring-boots ignite-jpa 实现,并且我的对象通常具有未填充的字段,因此为空。自然地,当数据被持久化到 cassandra 中时,这会创建一个空值墓碑,在我的情况下,由于数据量很大。

有谁知道是否有一个配置,我可以指定在插入期间不设置(取消设置)具有空值的字段(列)?

我知道 cassandra 中的 null 值具有特殊含义,并且在更新为 null 的情况下,这种方法最终不会覆盖列值。不过,我不关心那个案子。

到目前为止,我所做的是实现我的自定义 CassandraCacheStoreFactory,但如果有更简单的方法,我就在徘徊。

4

1 回答 1

0

如果插入 null 值,则集群端无法告诉 Cassandra 忽略它。

但是在客户端,您可以使用您的驱动程序告诉它忽略空值,这样它就不会将其发送到 Cassandra。

看看 InsertOptions.InsertOptionsBuilder 有一种方法告诉驱动程序忽略空值:withInsertNulls(boolean insertNulls),我认为它适合您的用例:

https://docs.spring.io/spring-data/cassandra/docs/current/api/org/springframework/data/cassandra/core/InsertOptions.InsertOptionsBuilder.html#withInsertNulls-boolean-

于 2020-08-25T11:20:28.417 回答