ACID 和 AWS DynamoDB 事务:全有或全无的来龙去脉
2023-06-08 08:00:00
·
飞浪
·
Ryan Kroonenburg
DynamoDB 事务允许云工程师将复杂的业务逻辑实现到单个原子事务中。
一位来历不明的智者曾经说过: “要么做,要么不做。没有尝试。”无论你是想让一架12,000 磅重的X-Wing 从达戈巴沼泽中悬浮起来,还是编写孤注一掷的数据库云交易,这句明智的建议都是正确的。有时,接近并不能解决问题。 以在线金融交易为例。假设你欠朋友昨天的午餐钱。你打开 Venmo,找到你的朋友,输入“10”表示你想寄给他们的 10 美元,加上一个披萨表情符号,然后点击支付。但奇怪的是,几秒钟后你习惯收到的通知并没有出现。出了问题。现在怎么办?你的 10 美元在电子以太中丢失了吗?你的朋友还会再请你吃午饭吗? 在这种情况下,除非披萨还款操作的所有部分都已完成,否则你不想写入或更新任何内容。为此,我们可以转向 AWS DynamoDB 交易。
什么是 DynamoDB 事务?
DynamoDB 是 Amazon 的可扩展 NoSQL 数据库服务。如果您曾经使用过 DynamoDB,那么您可能已经注意到,当您需要在表内和跨表创建多个全有或全无操作时,事情会变得复杂。这就是为什么 Amazon 在 2018 年末推出了DynamoDB 事务。DynamoDB 事务用于支持需要全有或全无方法的关键任务应用程序,即使系统发生中断也是如此。它们允许云工程师将复杂的业务逻辑实现到单个原子事务中,该事务可以由多个相关任务组成。这意味着它们对于处理订单履行和管理、处理金融交易或构建多人游戏非常有用。
ACID:对人类不利,但对交易有利
如果科幻小说和视频游戏教会了我们什么,那就是酸是有害的。你不会想在从一个平台跳到另一个平台时掉进酸里,如果你正在处理异形生物的侵扰,你需要巧妙地消灭它们,以免烧穿你的飞船——或者你自己。但在事务的世界里,ACID 是一件非常好的事情。ACID 事务的概念比 DynamoDB 事务早了几十年。但 DynamoDB 事务可以是 ACID 事务。ACID 是一个(很棒的)首字母缩略词,用于描述数据库事务的四个理想属性。 原子性:每个事务都被视为一个单元,不能部分完成——这是它们全有或全无的关键因素。一致性 :事务是有效的,并且必须使数据库处于有效状态。这可以防止数据库被破坏或遭受数据完整性问题。 隔离性:不同的事务不相互依赖。即使并行或顺序处理,事务的效果最终都是一样的。 持久性:已提交的事务将保持提交状态,因为数据已写入磁盘,而不仅仅是保存在内存中。因此,即使发生系统故障(例如断电),也不会出现故障。
DynamoDB 事务实际应用
回到我们之前的披萨还款情况,您可以看到 ACID 事务对于成功使用云至关重要的原因。其中涉及多个几乎同时发生的步骤。 接收转账请求 → 验证原始账户中是否有足够的资金 → 借记原始账户 → 贷记收款账户 这些步骤几乎同时发生,并且需要全有或全无的执行。这就是为什么 ACID 事务对于成功使用云以及偿还披萨债务至关重要的原因。您可以 在我们的AWS Certified Developer Associate 课程中了解有关DynamoDB 事务的更多信息。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~