內存數據庫概述。內存數據庫又稱主存數據庫(IMDB/MMDB, In-memory/mainmemory database),是一種主要依靠內存來存儲數據的數據庫管理系統①。在數據庫技術中,有一類內存優化技術,是在傳統的磁盤數據庫中,增加內存緩沖池,也就是常說的共享內存技術,其主要目的是最小化磁盤訪問。而內存數據庫技術,幾乎把整個數據庫放進了內存中,相較于傳統數據庫使用的磁盤讀寫機制,內存具備更極致的讀寫速度②,性能會比傳統的磁盤數據庫有數量級的提升。因此內存數據庫通常被用于對性能要求較高的場景中。
內存技術的成熟。內存器件的容量密度在快速上升。最早期的內存和今天常見的內存條不同,是直接焊接在主板上的內存芯片,容量普遍在64KB以下;1982 年之后,隨著 80286 芯片的推出,開始出現 30 線(pin)256KB的 SIMM 內存條,被認為是內存領域的開山鼻祖;在 80 年代末,386和 486 時代的 PC 向 16 位發展,出現了 72 線的 SIMM 內存,單條容量可達 512KB-2MB;90 年代初,EDO DRAM 開始盛行,單條容量在 4MB-16MB;在 1995 年,計算機系統進入圖形界面時代,內存技術也發生了重要變革,支持 64 位的 SDRAM 成為一代經典,在性能上有極大提升,容量也達到了 64MB;隨后的十幾年,內存容量開始穩定地遵循摩爾定律翻倍,持續到 2019 年,DDR3 內存的容量已經可以達到 16GB。
內存技術的瓶頸與突破。過去幾十年,計算機系統的存儲體系結構被設計成如圖 2 的金字塔形模型。這樣的存儲結構利用局部性原理盡量將熱數據存儲在靠近CPU 的地方。在傳統模式中,內存數據庫的所有數據都保存在 DRAM介質中。雖然 DRAM 的價格已經大幅下降,但在海量數據存儲的需求下,內存的成本依然是很大的問題;另外由于 DRAM 屬于易失性介質,掉電后所有數據都會丟失,需要額外考慮數據持久化的方案,會極大的限制內存數據庫的性能和使用場景。