引用本文:
http://www.datastax.com/dev/blog/4-simple-rules-when-using-the-datastax-drivers-for-cassandra
" Cassandra的存储引擎经过优化,可以避免存储不必要的空列,但是在使用预处理语句时,那些未提供的参数会导致将空值传递给Cassandra(因此存储了逻辑删除)。目前,此方案的唯一解决方法是为最常见的插入组合准备一组预定义的语句,并为更罕见的情况使用正常语句。"
我注意到有一项任务是探索此问题的可能解决方案:
https://issues.apache.org/jira/browse/CASSANDRA-7304
但我似乎无法确定这是否已经实际解决,在哪个版本中(例如Java Cassandra驱动程序)以及如何解决?
如果没有解决,有不同的插入语句仍然是最好的解决方法吗?
答案 0 :(得分:2)
未设置的变量是相对较新的,实际上可以用来在执行预准备语句时避免使用逻辑删除,但它们只能从协议V4开始,即从Cassandra 2.2开始。
3.0.0版提供了对Java驱动程序中未设置变量的支持。使用协议V4时,默认情况下将忽略所有变量,除非您明确将它们设置为其他变量。如果您需要“取消设置”之前设置的变量,则可以调用BoundStatement
的{{3}}方法之一。