澄清的问题: 当操作系统发送命令写扇区到磁盘是primefaces? 即写入新的数据完全成功或旧的数据保持不变,如果电源在写入命令之后立即失败。 我不关心在多个部门写入会发生什么 – 撕裂的页面是可以接受的。 老问题: 假设你在磁盘上有旧的数据X,你在它上面写入新的数据Y,并且在写入过程中树在电源线上。 如果没有花哨的UPS或电池供电的磁盘控制器,那么最终会出现一个破损的页面,其中磁盘上的数据是X部分和Y部分。最后是磁盘上的数据是X部分,Y部分,部分垃圾? 我一直在努力理解像数据库这样的ACID系统的devise,而且对于我的幼稚想法,似乎firebird,它不使用预写日志,依靠给定的写入不会破坏旧数据(X) – 只是不能完全写入新的数据(Y)。 这意味着如果X的一部分被覆盖,只有被覆盖的X的部分可以改变,而不是我们想要保留的X的部分。 为了澄清,这意味着如果你有一个页面大小的缓冲区,比如4096字节,填充了一半Y,我们想要保留的一半X,并且告诉操作系统把这个缓冲区写在X上,没有严重的磁盘在写入期间,我们想要保留的一半X被破坏。
ACID和数据库事务之间有什么关系? ACID给数据库事务还是同样的事情? 有人可以启发这个话题。
有没有符合ACID标准的NoSQL数据存储?
我不是一个数据库专家,没有正式的计算机科学背景,所以忍受着我。 我想知道如果使用不符合ACID的 MongoDB,可能会发生的真实世界的负面情况。 这适用于任何不符合ACID的数据库。 据我所知,MongoDB可以执行primefaces操作 ,但是他们并不是“支持传统的locking和复杂事务”,主要是出于性能原因。 我也明白数据库事务的重要性,以及你的数据库是在银行的例子,而且你正在更新几个需要同步的logging,你希望事务恢复到初始状态,如果有停电,所以信贷等于购买等。 但是当我谈到MongoDB的时候,那些不知道数据库实际上是如何实现的技术细节的人开始抛出像下面这样的陈述: MongoDB的速度比MySQL和Postgres快,但是有一个很小的机会,比如百万分之一,它“无法正确保存”。 这个“不能正确保存”的部分是指这样的理解:如果在写入MongoDB的瞬间有停电的可能,有一个特定logging的机会(比如说,你跟踪具有10个属性的文档中的浏览量每一个),其中一个文件只保存了5个属性…这意味着随着时间的推移,你的浏览量计数器将“略微”closures。 你永远不会知道多less,你知道他们将是99.999%正确,但不是100%。 这是因为,除非你专门做了这个mongodbprimefaces操作 ,否则操作不能保证是primefaces操作。 所以我的问题是,什么时候以及为什么MongoDB不能“正确保存”的正确解释? ACID的哪些部分是不能满足的,在什么情况下,您怎么知道您的数据的0.001%是什么时候closures的? 这不能以某种方式解决吗? 如果没有,这似乎意味着你不应该在MongoDB中存储像你的users表这样的东西,因为logging可能不会保存。 但是再一次,那1 / 1,000,000用户可能只需要“尝试再次注册”,不是吗? 我只是在寻找一个什么时候/为什么负面的事情发生在一个像MongoDB这样的ACID不兼容数据库的列表,理想的情况是如果有一个标准的解决方法(如运行后台作业来清理数据,或者只使用SQL等) 。