繁体   English   中英

设置Cassandra DDL的一致性级别

[英]SET consistency level for Cassandra DDL

在我的应用程序日志中,我已经看到,默认情况下,在运行create / alter table语句之后,cassandra驱动程序似乎进行处理以使模式达成协议最多10秒。

我可以(并且应该)在执行DDL语句时设置一致性级别,例如'quorum',例如'Create Table .. IF NOT EXISTS'以确保我的表被创建并传播到所有节点?

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

在应用程序之外,您可以使用nodetool describecluster检查架构状态。 这将显示特定节点是否不接受对架构的更改。 以下是有关从Operators角度解决模式分歧的更多信息

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

您多久修改一次架构? 正如您所看到的那样,虽然每个节点都必须保持一致,但仍然是一个非常昂贵的操作,因为您可以看到架构更改。 出于这个原因,应该避免Cassandra中频繁的模式更改(也就是动态列)。 我很想知道模式的更改频率和原因,也许您可​​以重新构建以避免动态列/表以避免在Cassandra中进行昂贵的模式更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM