【发布时间】:2014-11-13 06:18:39
【问题描述】:
Aerospike 数据库说,it is
[...] 架构具有三个关键目标:
创建一个灵活、可扩展的平台,以满足当今网络规模应用程序的需求
提供传统数据库所期望的稳健性和可靠性(即 ACID)。
提供运营效率(最少的人工参与)
Aerospike 已针对最新的存储和数据库进行了优化 尽可能多地压缩交易吞吐量的技术,同时 仍然保证强一致性 (ACID)。
首先,我没有在 Aerospike 中找到任何关于交易的定义。通常,我将其作为数据库上的一系列操作来获取。但是稍后阅读我没有看到事务是 ACID:
阅读详细的Aerospike ACID description 时,我发现它只是假装 ACID 保证。
示例:
- 我想在事务中进行一系列操作(a、b、c)。每个操作都是一个独立的数据库查询。如果 c 失败,那么我希望数据库系统回滚 a 和 b。我没有在 Aerospike 中找到此功能。
-
让我们考虑修改文档 A 和 B 的两个并发事务。开始时 A=0 和 B=0:
- T1 给
A和B加1 - T2 将 A 和 B 乘以 2。
我希望我们总是以
A==B结束 - 结果将是:-
A=1 & B=1当 T2 将首先锁定/取得文档 A 和 B 的所有权时 -
A=2 & B=2当 T2 将首先锁定/取得文档 A 和 B 的所有权时
这个结果的保证是什么?
- T1 给
1.你能确认我的例子的结果吗?
2。 User Defined Functions 在这里有什么帮助吗?
PS
说清楚 - 我不想说 Aerospike 不好。我在那里看到了一件很棒的好作品。当 ACID 保证在那里失败时,我只是错过了一个很好的说明。
【问题讨论】:
标签: transactions acid aerospike