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