有没有真正持久的数据库?
Are there any databases really durable?
我正在阅读 http://www.h2database.com/html/advanced.html#durability_problems,我发现
Some databases claim they can guarantee durability, but such claims are wrong. A durability test was run against H2, HSQLDB, PostgreSQL, and Derby. All of those databases sometimes lose committed transactions. The test is included in the H2 download, see org.h2.test.poweroff.Test
还说
Where losing transactions is not acceptable, a laptop or UPS (uninterruptible power supply) should be used.
那么有没有持久的数据库。该文件提到了 fsync() 命令,大多数硬盘驱动器不服从 fsync()。它还谈到没有可靠的方法来刷新硬盘缓冲区
那么,是否存在一个时间,在这个时间之后,已提交的交易会变得持久,因此我们可以购买能提供最少那么多备用电源的设备。
还有一种方法可以知道提交的事务是持久的。假设我们不买 up 并且在知道交易是持久的之后我们可以显示成功消息。
问题取决于您是否可以指示 HDD/SDD 将事务提交到持久介质。如果大容量存储设备没有刷新到耐用媒体的设施,那么在它上面的数据存储系统就不能说是真正耐用的。
然而,有许多内置 UPS 的 NAS 设备,这些设备似乎符合耐用媒体的要求 - 如果单独服务器上的数据库将数据提交到该设备并执行检查点,则提交将刷新到媒体。只要媒体在断电后仍然存在,那么您就可以说它经久耐用。 NAS 上的 UPS 应该能够向其关联的磁盘组发出受控关闭,以保证持久性。
或者,您可以使用 SQL Azure 之类的东西,它将提交写入不同服务器上的多个 (3) 个单独的数据库存储实例。尽管我们不知道这些写入是否会到达永久存储介质,但这实际上并不重要——耐用性的衡量标准是读取可重复性;这似乎符合该要求。
我正在阅读 http://www.h2database.com/html/advanced.html#durability_problems,我发现
Some databases claim they can guarantee durability, but such claims are wrong. A durability test was run against H2, HSQLDB, PostgreSQL, and Derby. All of those databases sometimes lose committed transactions. The test is included in the H2 download, see org.h2.test.poweroff.Test
还说
Where losing transactions is not acceptable, a laptop or UPS (uninterruptible power supply) should be used.
那么有没有持久的数据库。该文件提到了 fsync() 命令,大多数硬盘驱动器不服从 fsync()。它还谈到没有可靠的方法来刷新硬盘缓冲区
那么,是否存在一个时间,在这个时间之后,已提交的交易会变得持久,因此我们可以购买能提供最少那么多备用电源的设备。
还有一种方法可以知道提交的事务是持久的。假设我们不买 up 并且在知道交易是持久的之后我们可以显示成功消息。
问题取决于您是否可以指示 HDD/SDD 将事务提交到持久介质。如果大容量存储设备没有刷新到耐用媒体的设施,那么在它上面的数据存储系统就不能说是真正耐用的。
然而,有许多内置 UPS 的 NAS 设备,这些设备似乎符合耐用媒体的要求 - 如果单独服务器上的数据库将数据提交到该设备并执行检查点,则提交将刷新到媒体。只要媒体在断电后仍然存在,那么您就可以说它经久耐用。 NAS 上的 UPS 应该能够向其关联的磁盘组发出受控关闭,以保证持久性。
或者,您可以使用 SQL Azure 之类的东西,它将提交写入不同服务器上的多个 (3) 个单独的数据库存储实例。尽管我们不知道这些写入是否会到达永久存储介质,但这实际上并不重要——耐用性的衡量标准是读取可重复性;这似乎符合该要求。