acid相关内容

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

具体来说,是否存在数据丢失的风险?我正在考虑运行一个密集的事务处理系统,其中不丢失任何东西是至关重要的.有没有在银行事务处理等关键任务应用程序中使用 NoSQL 的示例? 解决方案 无需轻率,没有 ACID 意味着您无法保证原子性、一致性、隔离性或持久性. 如果没有原子性,您就无法保证必须同时成功或失败的多个操作都会这样做.例如,如果您的交易要求您一次性借记一个帐户并贷记另一个帐户, ..
发布时间:2022-01-13 13:49:33 其他开发

MongoDB 在 v4 之前不符合 ACID 的真正含义是什么?

我不是数据库专家,也没有正式的计算机科学背景,所以请多多包涵.我想知道如果您使用旧的 MongoDB 会发生哪些现实世界负面的事情v4 之前的版本,不符合 ACID.这适用于任何不符合 ACID 的数据库. 我了解 MongoDB 可以执行 原子操作,但他们不能t “支持传统锁定和复杂事务",主要是出于性能原因.我也了解数据库事务的重要性,以及当您的数据库用于银行的示例,并且您正在更新几条都 ..
发布时间:2022-01-13 13:12:48 其他开发

磁盘扇区写入是原子的吗?

澄清问题: 当操作系统发送将扇区写入磁盘的命令时,它是原子的吗?即,如果在写入命令后立即断电,则新数据的写入完全成功或旧数据保持不变.我不关心多扇区写入时会发生什么 - 撕裂的页面是可以接受的. 老问题: 假设您在磁盘上有旧数据 X,您在其上写入新数据 Y,并且在写入期间一棵树倒在电源线上.如果没有花哨的 UPS 或电池支持的磁盘控制器,您最终会得到一个撕裂的页面,其中磁盘上的数 ..
发布时间:2022-01-12 11:13:13 其他开发

分布式事务如何工作(例如 MSDTC)?

我以一种模糊的方式理解常规 ACID 事务的工作原理.您对数据库执行某些工作的方式是,在设置某种提交标志之前不会确认工作.提交部分基于一些基本假设(例如单个磁盘块写入是原子的).如果发生灾难性错误,您只需在恢复阶段清除未提交的数据即可. 分布式事务是如何工作的?在我读过的一些 MS 文档中,您可以以某种方式跨数据库和文件系统(除其他外)执行事务. 这项技术可以(并且可能)用于安装程序, ..
发布时间:2022-01-06 21:04:54 其他开发

Mongo DB 4.0 事务与 Mongoose &NodeJs, Express

我正在开发一个应用程序,在该应用程序中我使用 MongoDB 作为数据库,在应用程序层使用 Nodejs + Express,我有两个集合,即 用户 交易 在这里,我必须用一些金额更新数千名用户的钱包,如果成功为每笔交易创建一个包含相关信息的新文档,这是我的代码: userModel.update({_id : ObjectId(userId)}, {$inc : {wallet ..
发布时间:2022-01-06 20:53:16 其他开发

MySQL InnoDB:“FOR UPDATE"和“LOCK IN SHARE MODE"之间的区别

这两个锁定读取子句的确切区别是什么: SELECT ... FOR UPDATE 和 SELECT ... LOCK IN SHARE MODE 为什么你需要一个而不是另一个? 解决方案 我一直试图了解两者之间的区别.我会记录我的发现,希望对下一个人有用. LOCK IN SHARE MODE 和 FOR UPDATE 都确保没有其他事务可以更新选定的行.两者的区别在于读取数 ..
发布时间:2022-01-06 20:32:01 数据库

MySQL/InnoDB 是否实现了真正的可序列化隔离?

MySQL 文档并不完全清楚 InnoDB引擎实现了真正的可序列化隔离1或快照隔离,它也经常被混淆地称为“可序列化".是哪个? 如果 MySQL InnoDB 没有,是否有任何完全免费的、生产质量的 RDBMS 可以做到? 1 其中“真正的可序列化隔离"意味着不仅不存在符合 SQL 标准的读取异常,而且不存在写入倾斜异常,进一步详细解释此处. 解决方案 是否有任何完全免费的 ..
发布时间:2022-01-06 20:25:28 其他开发

当 Hive 插入中途失败时会发生什么?

假设一次插入预计将在 hive 中加载 100 条记录,并且已经插入了 40 条记录,但由于某种原因插入失败.事务会完全回滚,撤消插入的 40 条记录吗?或者即使插入查询失败,我们还会在 hive 表中看到 40 条记录吗? 解决方案 操作是原子的(即使对于非 ACID 表):如果您使用 HiveQL 插入或重写数据,它会将数据写入临时位置,并且仅当命令成功将文件移动到表位置(在 INSE ..
发布时间:2021-12-28 23:18:27 其他开发

如何在 Hive 0.13 中更新表?

我的 Hive 版本是 0.13.我有两个表,table_1 和 table_2 table_1 包含: customer_id |项目 |价格|更新日期-------------+-------+-------+--------------10 |手表|1000 |2017062611 |蝙蝠 |400 |20170625 table_2 包含: customer_id |项目 |价 ..
发布时间:2021-12-15 18:27:32 其他开发

ACID 和数据库事务如何工作?

ACID 和数据库事务有什么关系? ACID 是给数据库事务还是同一个东西? 有人可以启发这个话题. 解决方案 ACID 是一个集合修改数据库时要应用的属性. 原子性 一致性 隔离 耐用性 事务是一组相关的更改,用于实现某些 ACID 属性.事务是实现 ACID 属性的工具. 原子性意味着你可以保证一个事务的所有发生,或者都不发生;您可以将复杂的操作作为 ..
发布时间:2021-12-05 12:39:10 其他开发

如何调试 MySQL 上超出的锁定等待超时?

在我的生产错误日志中,我偶尔会看到: SQLSTATE[HY000]:一般错误:1205超过锁等待超时;尝试重启事务 我知道那个时候哪个查询正在尝试访问数据库,但是有没有办法找出哪个查询在那个精确的时刻锁定了? 解决方案 是什么让这一切成为了事务这个词.从语句中可以看出查询试图更改一个或多个 InnoDB 表中的至少一行. 既然您知道查询,那么所有被访问的表都可能成为罪魁 ..
发布时间:2021-11-20 21:16:44 数据库

ArangoDB 事务 - 如何防止抛出异常

如何防止 ArangoDB 在 Transaction 中查找当时可能不存在的特定文档时抛出异常? Nodejs 将一个区块中的交易发送到 ArangoDb,在那里进行处理.那很完美.我想卸载所有数学到服务器. 在交易过程中,我想查看特定的集合并检查文档是否存在,如果可以找到文档,则获取字段“余额",但如果找不到文档或其字段,则我不想要抛出异常并且不想停止正在进行的事务.相反,我更想继 ..
发布时间:2021-11-17 01:31:49 其他开发

蜂巢插入中途失败时会发生什么?

假定一个插入预期将在蜂巢中加载100条记录,并且已插入40条记录,并且由于某种原因插入失败.事务将完全回滚,并撤消插入的40条记录吗?或即使在插入查询失败后,我们也会在配置单元表中看到40条记录吗? 解决方案 该操作是原子操作(即使对于非ACID表也是如此):如果使用HiveQL插入或重写数据,则该操作会将数据写入临时位置,并且仅当命令成功将文件移动到表位置(如果 INSERT OVERW ..
发布时间:2021-05-14 19:04:47 其他开发

为什么NoSQL数据库ACID不兼容?

可能重复: “>是否有任何符合ACID的NoSQL? 所以,我听说NoSQL数据库不符合ACID,这是为什么? 解决方案 这不一定是正确的-它取决于您引用的是哪个特定数据库.其中一些(例如Neo4j)完全符合ACID.请查看此链接,以对一些NoSQL数据库进行比较: http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis ..
发布时间:2021-04-28 20:12:32 其他开发

如果Cassandra报告失败但做了部分写入,该怎么办?

Cassandra不保证原子行为,因此一个副本出现故障的可能性很小,而另一个副本确实保留了更改. 是否有任何信息可以防止这种情况发生,以及如何解决该问题(如果发生的话)?卡桑德拉是否可以在这方面自愈? [更新] 我特别关注这样一种情况:您发送写请求给所有副本,而只有一个副本因写入错误而失败.写入失败的节点仍然有效并且可以运行.根据Cassandra文档,即使另外两个(如果您的复制 ..
发布时间:2021-04-21 19:35:45 其他开发

Haskell:Yesod和状态

我正在阅读玩具URL缩短器。但是,有很多地方是我无法理解的。 它具有以下代码: data URLShort = URLShort {state :: AcidState URLStore} 出于测试目的,我在自己的应用中写了这样的内容: data MyApp = MyApp {state :: Int} 然后我可以通过更改进行编译 ..
发布时间:2020-06-04 18:52:51 其他开发