问题描述
如标题所述,我很困惑为什么像 cosmosdb 这样的分布式数据库需要对单个区域帐户进行“陈旧”设置。根据{{3}}:
对于单个区域帐户,K 和 T 的最小值为 10 次写入操作或 5 秒。对于多区域帐户,K 和 T 的最小值为 100,000 次写入操作或 300 秒。
...
单个写入区域的帐户在同一区域的客户端的一致性 = 强
我知道对于多区域数据库,另一个区域的读取会滞后 K 次操作或 T 秒,但是对于单个区域帐户意味着什么?为什么 K 和 T 对于多区域和单区域数据库/帐户具有不同的最小值?
根据我的理解,Bounded Staleness 一致性的单区域数据库完全等同于具有强一致性的单区域数据库。当 K 和 T 的概念基于多区域时,在单区域环境中需要 K 和 T 变量吗?
解决方法
单个区域的 K&T 适用于该单个区域内数据的副本集。
当数据写入 Cosmos DB 时,它会提交到一个主数据库和两个辅助数据库以进行仲裁提交。如果数据未提交到 K 或 T 内的第四个副本,我们开始为写入返回 BoundedStalenessExceeded,并将开始对写入施加回压,直到我们处于过时窗口内。