为Cassandra DDL设置一致性级别

为Cassandra DDL设置一致性级别,cassandra,datastax,spring-data-cassandra,Cassandra,Datastax,Spring Data Cassandra,在我的应用程序日志中,我看到,默认情况下,在运行create/ALTERTABLE语句后,cassandra驱动程序似乎会进行处理,以使模式达成一致,时间长达10秒 在执行诸如“Create Table.”之类的DDL语句时,我是否可以设置一致性级别,例如“quorum”。。“如果不存在”,以确保创建我的表并将其传播到所有节点?更改一致性级别不会影响群集达成一致所需的时间。如果在集群上这需要10秒,那么您的客户端可能只是达到默认超时,而不是完全等待所有节点达成一致。有关此过程的更多信息,请查看

在我的应用程序日志中,我看到,默认情况下,在运行create/ALTERTABLE语句后,cassandra驱动程序似乎会进行处理,以使模式达成一致,时间长达10秒


在执行诸如“Create Table.”之类的DDL语句时,我是否可以设置一致性级别,例如“quorum”。。“如果不存在”,以确保创建我的表并将其传播到所有节点?

更改一致性级别不会影响群集达成一致所需的时间。如果在集群上这需要10秒,那么您的客户端可能只是达到默认超时,而不是完全等待所有节点达成一致。有关此过程的更多信息,请查看


在应用程序外部,您可以使用nodetool describecluster检查架构状态。这将显示特定节点是否不接受对架构的更改。下面是一些从操作员角度解决模式分歧的方法。

模式更改了Cassandra中的数据定义,因为1.1+是通过完成的。因为它使用Gossip,所以与典型的数据操作请求SELECT、DELETE、INSERT等相比,它是一个单独的读/写路径,因此对于此类操作没有可调的一致性,因为Gossip的操作不具有可调的一致性。从我链接的文章中,您可以看到模式更改是在集群中被动宣布的,而且当您有在模式更改时无法访问的节点时,您还可以获得模式不一致/解决方案


您多久修改一次模式?正如您所看到的,模式更改虽然比以前有了很大的改进,但仍然是一项非常昂贵的操作,因为每个节点都必须保持一致。因此,应避免频繁更改Cassandra中的模式,也就是动态列。我很想知道模式被更改的频率和原因,也许您可以重新建模以避免动态列/表,以避免在Cassandra中进行昂贵的模式更改。

谢谢@fromantor。我们并不是经常修改模式,而是在推出新版本的过程中,当模式中添加了内容时,我们会这样做。在一次这样的情况下,我们在应用程序日志中看到了失败,并发现新的表模式无法传播到所有cassandra节点。