同时执行两个并行create keyspace命令时,cassandra会失败吗

同时执行两个并行create keyspace命令时,cassandra会失败吗,cassandra,ddl,cql,datastax-java-driver,Cassandra,Ddl,Cql,Datastax Java Driver,我们已经经历过,如果我们推出DDL cql脚本,这将并行地改变现有的表,那么就有很大的机会破坏键空间,使其达到我们需要重新创建的程度 我们现在已经序列化了这个过程,包括创建键空间。现在有一个激烈的讨论,如果cassandra明确支持并行创建不同的键空间 我想,这是可以的,但由于集群很大,我们想听听第二种意见,所以我在这里问: 我们可以安全地假设,并行创建不同的键空间在cassandra中是安全的吗?在当前版本的cassandra中,这是不可能的-您需要在每个DDL语句之后等待,包括创建其他键空间

我们已经经历过,如果我们推出DDL cql脚本,这将并行地改变现有的表,那么就有很大的机会破坏键空间,使其达到我们需要重新创建的程度

我们现在已经序列化了这个过程,包括创建键空间。现在有一个激烈的讨论,如果cassandra明确支持并行创建不同的键空间

我想,这是可以的,但由于集群很大,我们想听听第二种意见,所以我在这里问:


我们可以安全地假设,并行创建不同的键空间在cassandra中是安全的吗?

在当前版本的cassandra中,这是不可能的-您需要在每个DDL语句之后等待,包括创建其他键空间。通常,驱动程序会等待一段时间(默认为10秒)来确认集群中的所有节点都具有相同的模式版本。根据驱动程序的不同,您可以在执行语句后返回的结果集中或通过集群元数据显式检查模式协议。例如,在Java中,它可以如下所示:

Metadata=cluster.getMetadata();
for(int i=0;i

Cassandra的新版本将在这方面有所改进,例如,via(提交到4.0中)和(尚未完成)

如果cqlsh
创建密钥空间
schemaInAgreement==false,cqlsh是否将中止?我只是手动尝试,但无法触发。我不确定cqlsh是否正确-可能它设置了更高的超时