内存数据库如何持久化数据
How in-memory databases persist data
我正在研究内存数据库的概念。相关文章说,
An in-memory database system is a database management system that stores data entirely in main memory.
他们讨论了这个概念的优点和缺点。
我的问题是,如果这些数据库管理系统将数据完全存储在主内存中,
断电后数据会全部消失吗???
或者有什么方法可以保护数据???
大多数内存数据库系统都提供持久性,至少作为一种选择。这是通过事务日志记录实现的。在正常关机时,内存中的数据库图像被保存。下次重新打开时,会加载之前保存的图像,此后,提交到内存数据库的每个事务也会附加到事务日志文件中。如果系统异常终止,可以通过重新加载原始数据库映像并重放事务日志文件中的事务来恢复数据库。
数据库仍然全部在内存中,因此必须有足够的可用系统内存来存储整个数据库,这使其不同于只在内存中缓存一部分的持久性数据库。因此,消除了缓存命中或缓存未命中的不可预测性。
将事务附加到日志文件通常可以同步或异步完成,这将具有非常不同的性能特征。如果事务未从文件系统缓冲区中刷新并且系统意外关闭(即内核恐慌),异步事务日志记录仍将面临丢失已提交事务的风险。
内存数据库事务日志保证只会产生一个文件 I/O 以将事务附加到日志文件。事务是大是小并不重要,它仍然只是对持久性媒体的一次写入。此外,写入始终是顺序的(始终附加到日志文件),因此即使在旋转介质上,性能损失也尽可能小。
不同的媒体对性能的影响或大或小。 HDD 的影响最大,其次是 SSD,然后是内存层 FLASH(例如 FusionIO PCIExpress 卡),NVDIMM 内存的影响最小。
NVDIMM 内存可用于存储内存数据库,或存储事务日志以供恢复。最大 NVDIMM 内存大小小于常规内存大小(并且更昂贵),但如果您的内存数据库大小为几千兆字节,此选项可以保留内存数据库 100% 的性能,同时还提供相同的持久性作为持久性媒体上的传统数据库。
本白皮书对内存数据库与 HDD、SSD 和 FusionIO 的事务日志进行了性能比较:http://www.automation.com/pdf_articles/mcobject/McObject_Fast_Durable_Data_Management.pdf
并且在本文中使用 NVDIMM:http://www.odbms.org/wp-content/uploads/2014/06/IMDS-NVDIMM-paper.pdf
论文由我们 (McObject) 撰写,但与供应商无关。
我正在研究内存数据库的概念。相关文章说,
An in-memory database system is a database management system that stores data entirely in main memory.
他们讨论了这个概念的优点和缺点。
我的问题是,如果这些数据库管理系统将数据完全存储在主内存中,
断电后数据会全部消失吗???
或者有什么方法可以保护数据???
大多数内存数据库系统都提供持久性,至少作为一种选择。这是通过事务日志记录实现的。在正常关机时,内存中的数据库图像被保存。下次重新打开时,会加载之前保存的图像,此后,提交到内存数据库的每个事务也会附加到事务日志文件中。如果系统异常终止,可以通过重新加载原始数据库映像并重放事务日志文件中的事务来恢复数据库。
数据库仍然全部在内存中,因此必须有足够的可用系统内存来存储整个数据库,这使其不同于只在内存中缓存一部分的持久性数据库。因此,消除了缓存命中或缓存未命中的不可预测性。
将事务附加到日志文件通常可以同步或异步完成,这将具有非常不同的性能特征。如果事务未从文件系统缓冲区中刷新并且系统意外关闭(即内核恐慌),异步事务日志记录仍将面临丢失已提交事务的风险。
内存数据库事务日志保证只会产生一个文件 I/O 以将事务附加到日志文件。事务是大是小并不重要,它仍然只是对持久性媒体的一次写入。此外,写入始终是顺序的(始终附加到日志文件),因此即使在旋转介质上,性能损失也尽可能小。
不同的媒体对性能的影响或大或小。 HDD 的影响最大,其次是 SSD,然后是内存层 FLASH(例如 FusionIO PCIExpress 卡),NVDIMM 内存的影响最小。
NVDIMM 内存可用于存储内存数据库,或存储事务日志以供恢复。最大 NVDIMM 内存大小小于常规内存大小(并且更昂贵),但如果您的内存数据库大小为几千兆字节,此选项可以保留内存数据库 100% 的性能,同时还提供相同的持久性作为持久性媒体上的传统数据库。
本白皮书对内存数据库与 HDD、SSD 和 FusionIO 的事务日志进行了性能比较:http://www.automation.com/pdf_articles/mcobject/McObject_Fast_Durable_Data_Management.pdf
并且在本文中使用 NVDIMM:http://www.odbms.org/wp-content/uploads/2014/06/IMDS-NVDIMM-paper.pdf
论文由我们 (McObject) 撰写,但与供应商无关。