非 ACID 数据库合规性对现实世界有哪些影响?

2023-12-06

具体来说,是否存在数据丢失的风险?我正在考虑运行一个密集型事务处理系统,其中最重要的是不要丢失任何内容。是否有在银行交易处理等关键任务应用程序中使用 NoSQL 的示例?


坦白说,缺乏 ACID 意味着您无法保证原子性、一致性、隔离性或持久性。

如果没有原子性,您就无法保证必须一起成功或一起失败的多个操作都会这样做。例如,如果您的交易要求您一次性借记一个账户并贷记另一个账户,在没有原子交易的情况下,您要么必须推出自己的解决方案,要么接受您可以借记一个账户,而不需要进行任何操作。相应的信用。

如果没有一致性,就无法保证事务的“副作用”起作用 - 在关系数据库中,这就是触发器的触发或外键关系的级联。因此,如果您的交易需要某种自动递增的唯一标识符,则无法保证您一定会得到。

如果没有隔离,就无法保证两个进程不会同时影响数据。例如,一个进程可能会增加某个字段的值,而第二个进程可能会减少该字段的值 - 谁赢了?

如果没有持久性,硬件故障可能会使数据库处于与您预期不同的状态 - 例如,您可能认为更改已写入数据存储,但它已在某些内部内存缓冲区中排队,并且如果有的话就会消失得无影无踪。电源故障。

可能可以在 NoSQL 上构建一个解决方案,解决缺乏 ACID 合规性的问题,但是工作量将是巨大的,而且你几乎肯定不会像编写关系数据库的人那样做得好......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

非 ACID 数据库合规性对现实世界有哪些影响? 的相关文章

随机推荐

  • Ruby/Watir:firefox 无头

    根据这个 https developer mozilla org en US Firefox Headless modefirefox 57 能够以无头模式运行 我尝试将它与此一起使用 omg3r Watir Browser new fir
  • 堆栈跟踪是如何生成的?

    程序中没有任何一个方法 知道 它在堆栈上的位置 它所知道的只是它自己的小工作 它完成了它并返回 那么 当抛出异常并打印堆栈跟踪时 这是从哪里来的呢 JVM 中是否隐式有一个单独的线程与每个应用程序一起运行来监视程序的状态 或者 JVM 本身
  • Google表格:删除包含指定数据的行

    我是 Java 脚本和 Google Apps 脚本的新手 所以如果这个问题已经得到解答 我很抱歉 在从事这个项目的最后几个月里 我无法找到我想要的东西 我正在这里编写脚本的变体 如果在单元格中找到特定 单词 则删除 Google 表格中的
  • 在类型转换中,类型“List”不是类型“List”的子类型

    运行后飞镖迁移 应用空安全性 该错误在我的代码中弹出 我认为这是导致代码块的错误 LayoutBuilder builder context cons return GestureDetector child new Stack child
  • 由于谷歌自动服务处理器,无法编译我的 javafx 和 selenium 项目(“无法获取公共无参数构造函数”)

    我正在尝试使用 Maven 编译我的 Instagram 机器人 它使用javafx作为接口 使用selenium作为自动化 我已经被这个错误困扰了很长时间 当我尝试做的时候mvn clean javafx jlink它向我显示了这个错误
  • MYSQL 无法从 PHP 接收数据

    我正在尝试将数据从输入发送到我的 sql 数据库 这是它尝试将信息发送到数据库的编码 它不会出现在数据库中 编码有什么问题
  • 如何将密码从md5转换为laravel加密方法

    我想将现有项目重新开发为 laravel 在我的旧系统中 我将密码存储到 md5 中 现在我如何根据现有用户的 laravel 哈希方法将其转换 有什么直接的方法可以做到吗 有什么直接的方法可以做到吗 不 没有直接的方法 但你可以通过重写来
  • 禁用 CMake 选项没有效果

    我正在准备一个应用程序 它应该在有或没有 GUI 的情况下工作 所以我在 CMakeLists txt 中使用命令 option NEED GUI Include Qt support OFF and if NEED GUI message
  • R 中给定出生日期和任意日期的有效且准确的年龄计算(以年、月或周为单位)

    我面临着计算给定出生日期和任意日期的年龄 以年 月或周为单位 的常见任务 问题是 我经常必须对许多记录 gt 3 亿 执行此操作 因此性能是这里的一个关键问题 在 SO 和 Google 中快速搜索后 我找到了 3 个替代方案 常见的算术过
  • Python 中 (1,) 是什么意思?

    我查看了类似的问题 但没有在任何地方找到这个主题 我想知道元组有什么作用 1 在 Python 中是什么意思 From https wiki python org moin TupleSyntax 单元素元组 单元素元组如下所示 1 这里的
  • 索尼,相机远程API

    我有一台 Sony Alpha 5000 ILCE 5000 相机 我一直在用它开发一个网络项目 我通过 wifi 使用 JSON 集成该相机没有任何问题 但我不想依赖 wifi 相机 我的Web项目是否可以像远程相机控制程序一样通过USB
  • 如何防止 vim autocmd 在命令行窗口中运行?

    当我离开插入模式时 我使用自动命令关闭预览窗口 如中所述这个答案 但是当我在命令行窗口中时 q 我得到一个错误 E11 Invalid in the command line window
  • 如何使用单个查询 (SELECT) 从两个表中填充两个对象?

    这应该是程序员经常遇到的事情 但我从来没有尝试过这样处理 也就是说 我会解释一下 比如说 我需要从表 Zoo 中获取值 如下所示 SELECT z predator z prey FROM Zoo AS z WHERE z preyType
  • 如何确保每次迭代后释放每个“子”进程的文件句柄?

    我采取了以下计划来自 Rust 文档std process Command 经过一些迭代后它停止工作 use std process Command use std process Stdio fn main loop let mut ec
  • Python:使用 xmltodict 获取值

    我有一个如下所示的 XML 文件
  • 禁用 Qt 3d 中的所有光源

    在我的公司 从旧的 3D 引擎转向 Qt3d 这项工作的目标之一是将旧 3D 引擎的渲染视图与 Qt3d 渲染进行比较 为此 我编写了一个小型示例应用程序 我可以在其中比较新旧渲染 仍然存在很多差异 我的第一个想法是切换两个引擎中的所有光源
  • 如何在 awk 中将分隔字符串拆分为数组?

    当字符串包含管道符号时如何拆分字符串 在里面 我想将它们分成数组 I tried echo 12 23 11 awk split 0 a print a 3 a 2 a 1 效果很好 如果我的字符串就像 12 23 11 那么如何将它们拆分
  • 使用母版页引用 Aspx 页面中的 CSS 表

    标题中已经很好地说明了问题 通常我会使用
  • 瞬态变量有什么用? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么Java有瞬态变量 瞬态关键字将用于防止特定变量的序列化 但为什么我们不应该序列化数据呢 内心有安全感吗 有些类本质上是不可序列化的 因为它们代表管理 Java 环境之外的资源 例如一个File
  • 非 ACID 数据库合规性对现实世界有哪些影响?

    具体来说 是否存在数据丢失的风险 我正在考虑运行一个密集型事务处理系统 其中最重要的是不要丢失任何内容 是否有在银行交易处理等关键任务应用程序中使用 NoSQL 的示例 坦白说 缺乏 ACID 意味着您无法保证原子性 一致性 隔离性或持久性