更具体地说,是否有任何数据库不需要辅助存储(例如 HDD)来提供持久性?
注意:这是我之前的问题的跟进。
如果您希望将事务持久化写入持久性存储只是真正的选择(您可能不想在独立的数据中心中构建许多具有独立电源的集群并仍然祈祷它们永远不会同时失败)。另一方面,这取决于您的数据的价值。如果它是可有可无的,那么具有足够复制的纯内存数据库可能是合适的。顺便说一句,在您将数据存储在硬盘上后,即使是硬盘也可能会出现故障,因此这里没有理想的解决方案。您可以查看http://www.julianbrowne.com/article/viewer/brewers-cap-theorem以选择复制权衡。
Prevayler http://prevayler.org/是使用持久存储备份的内存系统示例(顺便说一句,代码非常简单)。持久性是通过保存在适当设备(例如 HDD 或 SSD)上的事务日志提供的。每个修改数据的事务都写入日志,日志用于在断电或数据库/系统重启后恢复数据库状态。除了 Prevayler,我还看到了用于持久化消息队列的类似方案。这确实类似于“经典”RDBMS 的工作方式,只是日志只是写入底层存储的数据。日志也可用于复制,因此您可以将一份日志副本发送到活动副本,另一份发送到 HDD。当然,各种组合都是可能的。
所有数据库都需要非易失性存储以确保持久性。内存映像不提供持久的存储介质。断电后不久,您的记忆图像就会失效。同样,一旦数据库进程终止,操作系统将释放包含内存中映像的内存。在任何一种情况下,您都会丢失数据库内容。
在将任何更改写入非易失性存储器之前,它们并不是真正持久的。这可能包括将所有数据更改写入磁盘,或者写入正在完成的更改的日志。
在空间或大小关键的情况下,非易失性存储器(例如闪存)可以替代 HDD。但是,据报道闪存在可写入的写入周期数方面存在问题。
在查看了您之前的帖子后,只要您可以保持最后一台服务器运行,多服务器复制就可以工作。一旦它下降,你就会松开你的队列。但是,可以考虑使用 Oracle 的许多替代方案。
PDA 经常使用电池备份内存来存储它们的数据库。一旦电池耗尽,这些数据库就不再耐用。备份很重要。
In-memory means all the data is stored in memory for it to be accessed. When data is read, it can either be read from the disk or from memory. In case of in-memory databases, it's always retrieved from memory. However, if the server is turned off suddenly, the data will be lost. Hence, in-memory databases are said to lack support for the durability part of ACID. However, many databases implement different techniques to achieve durability. This techniques are listed below.
内存数据库中的经典不能提供经典的持久性,但根据您的要求,您可以:
有什么理由不想使用持久存储?