Cassandra 如何存储空值?

clo*_*ker 7 bigdata cassandra

Cassandra 如何在内部存储空值?它会占用任何存储空间吗?我正在编写一个应用程序,它使用一个包含许多列(100 个)的表来表示不同类型的数据,因此列的名称类似于“text1”、“text2”、“number1”、“number2”等,然后有一个外部 JSON 模式可以映射哪些列代表特定数据类型的哪些值。因此,对于某些数据类型,许多列可能具有空值,并且我无法找到任何关于空值将占用的存储空间(如果有)的具体信息。

ole*_*sii 4

只要您实际上不指定列的名称和值null,它就不会消耗任何空间。例如

row1 col1 col4
     val1 val4

row2 col1 col2 col4
     val1 val2 val4

row3 col3 col4
     val3 val4
Run Code Online (Sandbox Code Playgroud)

  • 为列插入空值确实会创建逻辑删除,因此您应该不惜一切代价避免插入空列。C* 2.2 引入了“unset”,这可能会解决这个问题。根据您的驱动程序,有多种使用 unset 的方法,通常如果您的查询中有绑定标记(“?”)并且您没有在那里绑定任何内容,则在 2.2+ 中它不会插入逻辑删除:https:// docs.datastax.com/en/developer/nodejs-driver/2.2/nodejs-driver/reference/nullUnsetValues.html (2认同)