我有一个非常简单的集群,有2个节点。我创建了一个具有简单策略复制和复制因子为2的密钥空间。对于读取和写入,我总是使用默认数据一致性级别 ONE。
如果我使用datastax java驱动程序取下两个节点中的一个,我仍然可以读取数据,但当我尝试写入时,我得到“没有足够的副本可用于一致性为1的查询(需要1个副本,但只有0个副本)”。
奇怪的是,如果我使用CQL控制台执行完全相同的insert语句,它就不会有任何问题。即使在使用CQL控制台时,数据一致性级别也为1。
我错过了什么吗?
短暂性缺血性发作
更新
我做了更多的测试,只有当我使用Batch语句时才会出现问题。如果我直接执行准备好的语句,它就可以工作。有什么想法吗?
这里是代码
Cluster cluster = Cluster.builder()
.addContactPoint("192.168.1.10")
.addContactPoint("192.168.1.12")
.build();
Session session = cluster.connect();
session.execute("use giotest");
BatchStatement batch = new BatchStatement();
PreparedStatement statement = session.prepare("INSERT INTO hourly(series_id, timestamp, value) VALUES (?, ?, ?)");
for (int i = 0; i < 50; i++) {
batch.add(statement.bind(new Long(i), new Date(), 2345.5));
}
session.execute(batch);
batch.clear();
session.close();
cluster.close();
如果还没有,请确保在驱动程序级别指定了两台主机。
默认情况下,批处理是原子的:如果协调器在批处理中途失败,Cassandra 将确保其他节点重放剩余的请求。它为此使用分布式批处理日志(有关更多详细信息,请参阅此帖子)。
此批处理日志必须复制到协调器以外的至少一个副本,否则会破坏上述机制。
在您的情况下,没有其他副本,只有协调器。所以卡桑德拉告诉你,它不能提供原子批次的保证。另见关于卡桑德拉-7870的讨论。
我用的是Spring boot < code > 1 . 3 . 8 . release 。为了使用cassandra 3.x驱动程序,我尝试了如下方法: 但我出错了; 我在https://github.com/spring-projects/spring-boot/issues/5835,有一个帖子; 在Spring Data Cassandra 1.5(Ingalls)中采用Cassandra
请看下面的代码,让我知道我哪里做错了? 使用: 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寻求帮助。 谢谢 斯卡拉 斯卡拉 斯卡拉 我在这里什么都得不到?甚至没有错误。
最近,我们对一些Cassandra集群进行了压力测试,比较了一致性级别、准备好的/未准备好的语句和同步/异步执行模式的所有组合的性能,在每种配置中,最高的性能总是异步运行的(任何/一个)未准备好的语句的组合!! 对于有意义的位,任何/一个一致性级别的限制都较少,因此应该是最快的。此外,异步运行查询,因此利用并行计算应该比按顺序运行它们更快,但是准备好的语句和非准备好的语句呢? 我们总是读到和听到(
DSE版本4.8.2 我用数据向集群添加了6个新节点,并将bootstrap:false。他们加入后,我正在对每一个进行重建。我相信1NODE已完成,但控制台上的命令仍在“运行”(例如,我还无法运行另一个命令)。我想确保它完全完成。该单元没有压实,也没有活动的溪流。更新:现在已经4天了,仍然处于命令提示符下。 除了compationstats和netstats,还有什么我可能缺少的吗?我看到它流式
我是卡桑德拉的新手,我正在尝试使用此CQL查询更新表: 我使用DataTax PHP驱动程序在PHP中工作,此语句的代码如下: 表格: 当我执行语句时,我得到错误“缺少强制的PRIMARY KEY部分域”,因此我添加了子句ALLOW FILTERING: 但是我得到另一个错误,“第1:48行在'允许'处缺少EOF”。这些查询出了什么问题?
我有一个. net核心应用程序,它通过DataStax驱动程序将数据持久化到Cassandra实例。 我为我的Cassandra实体创建了一个基类。现在,如果我想把我的TimeUUID类型ID放入这个基类,当插入时,我得到错误: 同样的方法在EntityFramework中也适用。问题也不在于我的表、连接或键空间,因为当我将id字段返回到entty本身时,它就起作用了。 我的插入方法 我的基类 继