将空值插入 cassandra

2023-12-28

我有一些字段存储到 Cassandra 中,但其中一些字段在任何给定点都可能为空。由于它们的数量相当多,如果我在将它们添加到 INSERT 之前不检查每一个是否为空,它会使代码更具可读性。

这样做有什么坏处吗?

EDIT!!

我找到了一张 jira 票。但我无法从票证中了解到最终实施了什么解决方案。https://issues.apache.org/jira/browse/CASSANDRA-7304 https://issues.apache.org/jira/browse/CASSANDRA-7304


Cassandra 新存储引擎的美妙之处在于能够NOT存储值。它的意思就是它本来的意思:nullvalue 只是一个不应该存在的值。

这提供了很大的灵活性,因为空值未显式(或隐式,见下文)插入不会占用存储空间,也不会使用处理能力和IO带宽。

事实上,用空值填充一行非常容易:

INSERT INTO mytable (pk, c2, c3) VALUES (0x1234, null, null);

这样,您就明确告诉 C* 在 c2 和 c3 中存储空值。但是,您可以获得相同的宏观的效果与:

INSERT INTO mytable (pk) VALUES (0x1234);

请注意我说宏观的效果,因为当你显式插入一个空值时,C*will在引擎盖下插入墓碑。从长远来看,这会咬住你,因为 C* 执行搜索、压缩等的方式......所以你应该尽可能避免,第二个版本会表现得更好。

现在,还有一个陷阱:你也可以创建墓碑隐含地. This will当你使用时发生TTLCassandra 内置功能。

总之,如果您关心自己,我建议不要执行任何空值插入。在应用程序级别进行检查,您将在以后(例如在读取期间)节省时间(和金钱)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将空值插入 cassandra 的相关文章

随机推荐