gpt4 book ai didi

database - 如何使用 Datomic 数据库执行原子操作?

转载 作者:搜寻专家 更新时间:2023-10-30 22:12:08 24 4
gpt4 key购买 nike

TL;DR 我想要函数:“仅在 Y=10 时更新 Y”,否则失败。

示例:假设时间轴为 T1、T2 和 T3。在时间 T1,实体 X 包含属性 Y=10,在时间 T2,属性 Y=14。我的目标是在 Y 中应用一个复杂的操作(假设这个操作是 1 的总和)。我在 T1 读取了 Y 的值,即 10,并将此值放入队列中进行处理。在T3,当复杂运算完成,结果为11时,我将更新属性Y。如果我简单地更新属性,在T2时的值Y=14,它会被错误地丢弃。然而,在T3,更新时,我想确保最终值是Y=10,否则我必须在T2读取Y=14进行再处理。

我知道 Database Functions进行原子读取-修改-更新处理,但是如果操作复杂并且需要分布式完成(放入队列后),这种方法并不好。

我想要的是相当于 Conditional Writes 的东西在 DynamoDB 中。

最佳答案

你可以在对等端运行确保过程,验证某个基 T,然后在事务中检查数据库的基 T。因此,计算复杂或昂贵的代码在对等方处理,交易功能仅负责基础 T 验证。

对于符合标准用例的任何内容(例如,您描述中的示例),Database Functions是正确且规范的答案。

内置的 :db.fn/cas 函数可用,现在记录在 http://docs.datomic.com/transactions.html

关于database - 如何使用 Datomic 数据库执行原子操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24786202/

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