gpt4 book ai didi

transactions - 处理 Couchbase 中的耐久性要求失败

转载 作者:行者123 更新时间:2023-12-04 03:55:36 24 4
gpt4 key购买 nike

最近我开始研究 Couchbase Server 作为该项目的候选者。我现在正在考虑的一个特定场景是如何让 Couchbase 充当“事实来源”,这就是我深入研究耐用性方面的原因。

所以这里是来自 ACID Properties and Couchbase 的片段:

If the durability requirements fail, then Couchbase may still save the document and eventually distribute it across the cluster. All we know is that it didn’t succeed as far as the SDK knows. You can choose to act on this information to introduce more ACID properties into your application.



所以接下来想象一下。我插入/更新一个文档并且主节点失败,直到数据到达任何副本。假设小学已经消失了很长时间。现在,我不知道数据是否被写入磁盘...所以这里可怕的部分是 “Couchbase 可能仍会保存文档并最终将其分发到整个集群” .意思是,据客户所知,数据没有成功,所以用户会看到一个错误,但是如果主服务器重新上线,它可能会突然出现在系统中。

我是否正确阅读了此声明?如果我是,用 Couchbase 处理它的最佳做法是什么?

最佳答案

这个问题的更新:

Couchbase 6.5 引入了对事务的支持:

transactions.run((txnctx) -> {
// get the account documents for Andy and Beth
TransactionJsonDocument andy = txnctx.getOrError(collection, "Andy");
JsonObject andyContent = andy.contentAsObject();
int andyBalance = andyContent.getInt("account_balance");
TransactionJsonDocument beth = txnctx.getOrError(collection, "Beth");
JsonObject bethContent = beth.contentAsObject();
int bethBalance = bethContent.getInt("account_balance");

// if Beth has sufficient funds, make the transfer
if (bethBalance > transferAmount) {
andyContent.put("account_balance", andyBalance + transferAmount);
txnctx.replace(andy, andyContent);
bethContent.put("account_balance", bethBalance - transferAmount);
txnctx.replace(beth, bethContent);
}
else throw new InsufficientFunds();
// Commit transaction - if omitted will be automatically committed
txnctx.commit();
});

持久性也得到了改进,现在您可以在 3 个级别之间进行选择:多数、persistToActive、persistToMajority

阅读更多 :
  • https://blog.couchbase.com/distributed-multi-document-acid-transactions-in-couchbase/
  • https://blog.couchbase.com/couchbase-transactions-java-api/
  • 关于transactions - 处理 Couchbase 中的耐久性要求失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52648356/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com