更具体地说,是否有任何数据库不需要辅助存储(例如 HDD)来提供持久性?
注意:这是一个 follow up of my earlier question .
最佳答案
如果您希望事务持久化,写入持久存储只是真正的选择(您可能不想在独立的数据中心中构建许多具有独立电源的集群,并且仍然祈祷它们永远不会同时失败)。另一方面,这取决于您的数据的值(value)。如果它是可有可无的,那么具有足够复制的纯内存数据库可能是合适的。顺便说一句,即使硬盘在您存储数据后也可能会出现故障,所以这里不是理想的解决方案。您可以看看http://www.julianbrowne.com/article/viewer/brewers-cap-theorem选择复制权衡。
普威勒 http://prevayler.org/是一个使用持久存储备份的内存系统的示例(顺便说一句,代码非常简单)。持久性是通过保存在适当设备(例如 HDD 或 SSD)上的事务日志提供的。每个修改数据的事务都会写入日志,日志用于在断电或数据库/系统重启后恢复数据库状态。除了 Prevayler 之外,我还看到过类似的方案用于持久化消息队列。 这确实类似于“经典”RDBMS 的工作方式,只不过日志只是写入底层存储的数据。日志也可用于复制,因此您可以将一份日志副本发送到实时副本,另一份发送到 HDD。当然,各种组合都是可能的。
关于database - 内存数据库如何提供持久性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3340484/