当前位置: 首页 > 知识库问答 >
问题:

卡珊德拉准备了空栏的报表?

乐正宜人
2023-03-14

引用这篇文章:

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驱动程序)中以及如何解决?

如果没有解决,使用不同的插入语句仍然是最好的解决方法吗?

共有1个答案

刘昌翰
2023-03-14

未设置的变量是相对较新的,在执行预准备语句时确实可用于避免逻辑删除,但它们仅从协议 V4 开始可用,即从 Cassandra 2.2 开始。

3.0.0版开始支持Java驱动程序中的未设置变量。当使用协议V4时,默认情况下,所有变量都将被视为未设置,除非您明确将它们设置为其他变量。如果需要“取消设置”先前设置的变量,可以调用BoundStatementunset()方法之一。

 类似资料:
  • 请看下面的代码,让我知道我哪里做错了? 使用: DSE版本-5.1.0 172.31.16.45:9042连接到测试群集。[cqlsh 5.0.1|Cassandra3.10.0.1652|DSE 5.1.0|CQL规范3.4.4|本地协议v4]使用HELP寻求帮助。 谢谢 斯卡拉 斯卡拉 斯卡拉 我在这里什么都得不到?甚至没有错误。

  • 我已经开始使用DataTax PHP驱动程序学习PHP中的Cassandra,我必须使用准备好的语句在CQL中设置映射的值,查询是: 提交的“属性”是MAP类型,因此我尝试将其作为字符串传递: 在PHP中: 但是我得到了错误“java.lang.IllegalArgumentException”,对于准备好的语句中的映射或列表之类的集合,哪种语法是正确的?

  • 最近,我们对一些Cassandra集群进行了压力测试,比较了一致性级别、准备好的/未准备好的语句和同步/异步执行模式的所有组合的性能,在每种配置中,最高的性能总是异步运行的(任何/一个)未准备好的语句的组合!! 对于有意义的位,任何/一个一致性级别的限制都较少,因此应该是最快的。此外,异步运行查询,因此利用并行计算应该比按顺序运行它们更快,但是准备好的语句和非准备好的语句呢? 我们总是读到和听到(

  • DSE版本4.8.2 我用数据向集群添加了6个新节点,并将bootstrap:false。他们加入后,我正在对每一个进行重建。我相信1NODE已完成,但控制台上的命令仍在“运行”(例如,我还无法运行另一个命令)。我想确保它完全完成。该单元没有压实,也没有活动的溪流。更新:现在已经4天了,仍然处于命令提示符下。 除了compationstats和netstats,还有什么我可能缺少的吗?我看到它流式

  • 我正在为python使用datastax cassandra驱动程序。 有争议的代码部分是: 结果是: 我不确定括号周围的括号来自哪里,一旦我删除了括号,prepare 语句就会起作用。 想法?

  • 由于基础设施的限制,我们无法将运行的Cassandra版本升级到 Cassandra现在抛出一个 在这种情况下,最好的解决方法是什么?大多数指南告诉我们简单地使用< code>UNSET:(。