gpt4 book ai didi

cassandra - 如何在插入 NULL 值时避免 cassandra 墓碑

转载 作者:行者123 更新时间:2023-12-04 12:17:31 28 4
gpt4 key购买 nike

我的问题是 cassandra 在插入 NULL 值时会创建墓碑。

据我了解,cassandra 不支持 NULL,当插入 NULL 时,它只会删除相应的列。一方面,这是非常节省空间的,但另一方面它会创建墓碑,从而降低读取性能。

这与 NoSql 哲学背道而驰,因为 cassandra 节省了空间但降低了读取性能。在 NoSql 世界中,空间很便宜,但性能很重要。我相信这是以非规范化形式保存表格背后的哲学。

我希望 cassandra 使用与插入任何其他值相同的技术来插入 NULL - 使用时间戳并在压缩期间保留最新条目 - 即使该条目为 NULL(或者我们可以称之为“未设置”)。
cassandra 配置中是否有任何调整或任何方法如何在没有墓碑的情况下实现带有空值的 upsert?

我遇到了 this issue但是它只允许忽略 NULL 值

我的用例 :
我有事件流,每个事件都由causeID 标识。我收到许多具有相同causeId 的事件,我只想存储相同causeID 的最新事件(使用upsert)。事件的属性可以从 NULL 变为特定值,也可以从特定值变为 NULL。不幸的是,后一种情况会生成墓碑并降低读取性能。

更新

似乎没有办法避免墓碑。您能否就如何最小化它们的技术提出建议(将 gc_grace_seconds 设置为非常低的值)。当节点宕机时间长于 gc_grace_seconds 时,有什么风险,该怎么办?

最佳答案

您不能将 NULL 插入 Cassandra - 它在那里具有特殊含义,并导致您观察到的墓碑的创建。如果您想将 NULL 视为特殊值,为什么不在应用程序端解决此问题 - 当您得到 null 时状态,只需插入任何无法在您的表中使用的特殊值,当您读回数据时,检查该特殊值并输出 null对请求者...

关于cassandra - 如何在插入 NULL 值时避免 cassandra 墓碑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53943456/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com