Main Memory Database Systems: An Overview

https://dl.acm.org/doi/10.1109/69.180602

数据是否完全放在内存中?什么应用需要MMDB?即便全量数据没有完全放入内存,也可以将冷热数据分离。

Example of such real-time applications include telecommunications(e.g., 800 telephone numbers need to be translatedto real numbers), radar tracking (e.g., signatures of objects need to be matched against a databaseof known aircraft), and securities trading (e.g., trading opportunities must be discovered and executed before they vanish).

即使数据可以全部放入到memory里面, MMDB(main memory) 和 DRDB(disk based) 依然存在很大的差别,所以索引结构,tuple表示方法,并发控制,事务实现等等,还有比如pointer swizzling这样的技术。不过作者认为随着实现不断迭代,两者之间的差异会越来越小。

MMDB面临需要面临如下几种系统故障:

  1. 操作系统故障(operating system)
  2. 硬件系统故障(memory board)
  3. 外部设备比如UPS故障

虽然这些故障概率比较低,但是恢复代价却比较大,因为MMDB通常是log + snapshot方式来进行持久化的。如果log太多的话那么重启回放时间就会增加,这个对于MMDB high performance应用场景是冲突的。所以实际应用中,需要经常创建snapshot并且进行备份,这就导致其实MMDB的备份频率会增加。

文章从几个点解释MMDB特点: