Cassandra前段时间添加了护栏功能,但没有任何护栏在配置文件中设置任何默认值(请参阅cassandra.yaml)。我通常想知道数据库管理员如何知道为特定护栏设置什么值,我主要对fields_per_udt_warn_threshold
和 的值感兴趣fields_per_udt_fail_threshold
。是否可能有任何带有建议值的文档,实际上是否有任何数据支持选择一个值而不是另一个值?或者我们应该根据直觉/经验来设置这些,并且护栏没有默认值,因为它们非常针对特定情况?
我还担心,如果默认情况下禁用护栏,则没有用户/数据库管理员想要设置它们,更不用说人们通常不知道这些选项的可能性了(配置文件中已经有很多...... .). 更重要的是,如果你想象只有警告级别/软限制的护栏从长远来看会破坏东西,例如通过堵塞日志。
您是正确的,除了被禁用之外,没有为用户定义类型 (UDT) 护栏设置默认值。
Cassandra 4.1 中发布的 Guardrails 框架提供了一些背景信息。在大多数情况下,此版本是第一阶段,它奠定了其他人可以在此基础上构建的基础,因此每个护栏的细节不是重点。这些将随着护栏的成熟而到来,我们作为一个社区能够从现场收集情报。
话虽如此,我们的意见是最多应有 30 个字段,理想情况下最大大小约为 64KB 以获得最佳性能。这显然意味着警告阈值应该更低,比如 20 或 25。当然,您的英里数可能会有所不同。
一如既往,我们的一般建议是将 UDT 字段的数量限制在较小的范围内。在可能的情况下,您应该在设计数据模型时避免使用 UDT,尤其是当数据可以映射到本机 CQL 列时。干杯!