我正在阅读http://www.h2database.com/html/advanced.html#durability_problems,我找到了
有些数据库声称可以保证耐用性,但这种说法是错误的。针对H2,HSQLDB,PostgreSQL和Derby运行了持久性测试。所有这些数据库有时会丢失已提交的事务该测试包含在H2下载中,请参阅org.h2.test.poweroff.Test
也说
如果不能接受丢失交易,则应使用笔记本电脑或UPS(不间断电源)。
那么有任何耐用的数据库。该文档说明了fsync()命令,大多数硬盘驱动器都不遵守fsync()。它还谈到了没有可靠的方法来刷新硬盘缓冲区
那么,是否有一段时间之后承诺的交易变得持久,因此我们可以购买能够最小化备用电源的UPS。
还有一种方法可以知道提交的事务是否持久。假设我们不买入并且在知道交易持久之后我们可以显示成功消息。
答案 0 :(得分:1)
问题取决于您是否可以指示HDD / SDD将事务提交到持久介质。如果大容量存储设备没有冲洗到耐用介质的设施,那么它上面的数据存储系统就不会被认为是真正耐用的。
有很多内置UPS的NAS设备,但这些似乎符合耐用介质的要求 - 如果单独服务器上的数据库将数据提交到该设备并执行检查点,则提交将刷新到介质。只要媒体在停电中幸存下来,你就可以说它是耐用的。 NAS上的UPS应能够对其相关的磁盘包发出受控关闭,以保证永久性。
或者,您可以使用SQL Azure之类的东西,它将提交写入不同服务器上的多个(3)单独的数据库存储实例。虽然我们不知道这些写入是否会到达永久性存储介质,但它实际上并不重要 - 耐用性的测量是读取可重复性;这似乎符合这一要求。