cassandra - 如何在 Cassandra 中保持绝对一致性?
问题描述
我一直在为银行(宠物项目)定义一个数据模型模式,在那里我遇到了一个极端情况,其中 2 个人同时尝试在帐户中贷记和借记钱。
我曾想过使用 Quorom 级别的一致性,但我认为它不会适用于同时事务。
任何帮助表示感谢
解决方案
如果您使用 QUORUM 一致性级别,您的数据将是一致的,但不适用于您的边缘情况。它不处理您的案例的并发性和隔离性,最后一次写入将获胜。
Cassandra 没有像其他关系数据库那样的事务系统,如果这是您需要扩展的系统的核心,也许您必须考虑另一种技术。
您可能对使用轻量级事务(LWT)感兴趣,它可以帮助您实现您想要的。但请注意它的性能,因为其中使用的 paxos 算法使所有节点都进行通信以处理该问题。
这是一篇解释 LWT 的文章: https ://www.datastax.com/blog/2013/07/lightweight-transactions-cassandra-20
我希望这会有所帮助。
推荐阅读
- javascript - element.all 无法在量角器测试中拆分数据
- node.js - 创建一个 Nodejs 命令行缓冲区以在 bash 中使用
- sql - SQL - 搜索“地址”,其中包含字符串参数
- android - Recyclerview 占用的宽度大于父宽度
- airflow - 我想从 Airflow Web UI 中隐藏 trigger_Dag 选项卡
- graphql - 使用 GraphQL 的“其他”
- reactjs - 如何在本机反应中使用长度属性?
- date - DB2 秒到时间转换问题
- python - 具有多个输入的网络抓取并收集所需的总保证金
- python - 如何使用它的 python 客户端 API 将用户添加到 Azure DevOps?