acid相关内容
我的程序中有一个使用多用户支持的简单错误。我正在使用knex构建SQL查询,并且我有一个描述场景的伪代码: const value = queryBuilder().readDataFromTheDatabase();//executes this //do some other work and get value queryBuilder.writeValueToTheDatabase(
..
..
具体来说,是否存在数据丢失的风险?我正在考虑运行一个密集的事务处理系统,其中不丢失任何东西是至关重要的.有没有在银行事务处理等关键任务应用程序中使用 NoSQL 的示例? 解决方案 无需轻率,没有 ACID 意味着您无法保证原子性、一致性、隔离性或持久性. 如果没有原子性,您就无法保证必须同时成功或失败的多个操作都会这样做.例如,如果您的交易要求您一次性借记一个帐户并贷记另一个帐户,
..
我不是数据库专家,也没有正式的计算机科学背景,所以请多多包涵.我想知道如果您使用旧的 MongoDB 会发生哪些现实世界负面的事情v4 之前的版本,不符合 ACID.这适用于任何不符合 ACID 的数据库. 我了解 MongoDB 可以执行 原子操作,但他们不能t “支持传统锁定和复杂事务",主要是出于性能原因.我也了解数据库事务的重要性,以及当您的数据库用于银行的示例,并且您正在更新几条都
..
澄清问题: 当操作系统发送将扇区写入磁盘的命令时,它是原子的吗?即,如果在写入命令后立即断电,则新数据的写入完全成功或旧数据保持不变.我不关心多扇区写入时会发生什么 - 撕裂的页面是可以接受的. 老问题: 假设您在磁盘上有旧数据 X,您在其上写入新数据 Y,并且在写入期间一棵树倒在电源线上.如果没有花哨的 UPS 或电池支持的磁盘控制器,您最终会得到一个撕裂的页面,其中磁盘上的数
..
我以一种模糊的方式理解常规 ACID 事务的工作原理.您对数据库执行某些工作的方式是,在设置某种提交标志之前不会确认工作.提交部分基于一些基本假设(例如单个磁盘块写入是原子的).如果发生灾难性错误,您只需在恢复阶段清除未提交的数据即可. 分布式事务是如何工作的?在我读过的一些 MS 文档中,您可以以某种方式跨数据库和文件系统(除其他外)执行事务. 这项技术可以(并且可能)用于安装程序,
..
我正在开发一个应用程序,在该应用程序中我使用 MongoDB 作为数据库,在应用程序层使用 Nodejs + Express,我有两个集合,即 用户 交易 在这里,我必须用一些金额更新数千名用户的钱包,如果成功为每笔交易创建一个包含相关信息的新文档,这是我的代码: userModel.update({_id : ObjectId(userId)}, {$inc : {wallet
..
我使用 Firestore 进行了以下交易: mDb.runTransaction(new Transaction.Function() {@覆盖公共无效申请(最终交易事务)抛出 FirebaseFirestoreException {DocumentReference documentReference = mDb.collection("collectionOne").document("d
..
这两个锁定读取子句的确切区别是什么: SELECT ... FOR UPDATE 和 SELECT ... LOCK IN SHARE MODE 为什么你需要一个而不是另一个? 解决方案 我一直试图了解两者之间的区别.我会记录我的发现,希望对下一个人有用. LOCK IN SHARE MODE 和 FOR UPDATE 都确保没有其他事务可以更新选定的行.两者的区别在于读取数
..
MySQL 文档并不完全清楚 InnoDB引擎实现了真正的可序列化隔离1或快照隔离,它也经常被混淆地称为“可序列化".是哪个? 如果 MySQL InnoDB 没有,是否有任何完全免费的、生产质量的 RDBMS 可以做到? 1 其中“真正的可序列化隔离"意味着不仅不存在符合 SQL 标准的读取异常,而且不存在写入倾斜异常,进一步详细解释此处. 解决方案 是否有任何完全免费的
..
假设一次插入预计将在 hive 中加载 100 条记录,并且已经插入了 40 条记录,但由于某种原因插入失败.事务会完全回滚,撤消插入的 40 条记录吗?或者即使插入查询失败,我们还会在 hive 表中看到 40 条记录吗? 解决方案 操作是原子的(即使对于非 ACID 表):如果您使用 HiveQL 插入或重写数据,它会将数据写入临时位置,并且仅当命令成功将文件移动到表位置(在 INSE
..
我的 Hive 版本是 0.13.我有两个表,table_1 和 table_2 table_1 包含: customer_id |项目 |价格|更新日期-------------+-------+-------+--------------10 |手表|1000 |2017062611 |蝙蝠 |400 |20170625 table_2 包含: customer_id |项目 |价
..
ACID 和数据库事务有什么关系? ACID 是给数据库事务还是同一个东西? 有人可以启发这个话题. 解决方案 ACID 是一个集合修改数据库时要应用的属性. 原子性 一致性 隔离 耐用性 事务是一组相关的更改,用于实现某些 ACID 属性.事务是实现 ACID 属性的工具. 原子性意味着你可以保证一个事务的所有发生,或者都不发生;您可以将复杂的操作作为
..
在我的生产错误日志中,我偶尔会看到: SQLSTATE[HY000]:一般错误:1205超过锁等待超时;尝试重启事务 我知道那个时候哪个查询正在尝试访问数据库,但是有没有办法找出哪个查询在那个精确的时刻锁定了? 解决方案 是什么让这一切成为了事务这个词.从语句中可以看出查询试图更改一个或多个 InnoDB 表中的至少一行. 既然您知道查询,那么所有被访问的表都可能成为罪魁
..
如何防止 ArangoDB 在 Transaction 中查找当时可能不存在的特定文档时抛出异常? Nodejs 将一个区块中的交易发送到 ArangoDb,在那里进行处理.那很完美.我想卸载所有数学到服务器. 在交易过程中,我想查看特定的集合并检查文档是否存在,如果可以找到文档,则获取字段“余额",但如果找不到文档或其字段,则我不想要抛出异常并且不想停止正在进行的事务.相反,我更想继
..
假定一个插入预期将在蜂巢中加载100条记录,并且已插入40条记录,并且由于某种原因插入失败.事务将完全回滚,并撤消插入的40条记录吗?或即使在插入查询失败后,我们也会在配置单元表中看到40条记录吗? 解决方案 该操作是原子操作(即使对于非ACID表也是如此):如果使用HiveQL插入或重写数据,则该操作会将数据写入临时位置,并且仅当命令成功将文件移动到表位置(如果 INSERT OVERW
..
可能重复: “>是否有任何符合ACID的NoSQL? 所以,我听说NoSQL数据库不符合ACID,这是为什么? 解决方案 这不一定是正确的-它取决于您引用的是哪个特定数据库.其中一些(例如Neo4j)完全符合ACID.请查看此链接,以对一些NoSQL数据库进行比较: http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
..
Cassandra不保证原子行为,因此一个副本出现故障的可能性很小,而另一个副本确实保留了更改. 是否有任何信息可以防止这种情况发生,以及如何解决该问题(如果发生的话)?卡桑德拉是否可以在这方面自愈? [更新] 我特别关注这样一种情况:您发送写请求给所有副本,而只有一个副本因写入错误而失败.写入失败的节点仍然有效并且可以运行.根据Cassandra文档,即使另外两个(如果您的复制
..
我使用Firestore进行以下交易: mDb.runTransaction(new Transaction.Function(){@Override公共无效申请(最终交易交易)引发FirebaseFirestoreException {DocumentReference documentReference = mDb.collection("collectionOne").do
..
我正在阅读玩具URL缩短器。但是,有很多地方是我无法理解的。 它具有以下代码: data URLShort = URLShort {state :: AcidState URLStore} 出于测试目的,我在自己的应用中写了这样的内容: data MyApp = MyApp {state :: Int} 然后我可以通过更改进行编译
..