歡迎光臨
每天分享高質量文章

記憶體資料庫技術白皮書

記憶體資料庫又稱主存資料庫(In-memory或main memory database),是一種主要依靠記憶體來儲存資料的資料庫管理系統。

 

在資料庫技術中,有一類記憶體最佳化技術,是在傳統的磁碟資料庫中,增加記憶體緩衝池,也就是常說的共享記憶體技術,其主要目的是最小化磁碟訪問。

 

而記憶體資料庫技術,幾乎把整個資料庫放進了記憶體中,相較於傳統資料庫使用的磁碟讀寫機制,記憶體具備更極致的讀寫速度,效能會比傳統的磁碟資料庫有數量級的提升。因此記憶體資料庫通常被用於對效能要求較高的場景中。

 

1.記憶體技術的成熟

 

記憶體器件的容量密度在快速上升。最早期的記憶體和今天常見的記憶體條不同,是直接焊接在主機板上的記憶體晶片,容量普遍在64KB以下。

 

  • 1982年之後,隨著80286晶片的推出,開始出現30線(Pin)256KB的SIMM記憶體條,被認為是記憶體領域的開山鼻祖;
  • 在80年代末,386和486時代的PC向16位發展,出現了72線的SIMM記憶體,單條容量可達512KB-2MB;90年代初,EDODRAM開始盛行,單條容量在4MB-16MB;
  • 在1995年,計算機系統進入圖形介面時代,記憶體技術也發生了重要變革,支援64位的SDRAM成為一代經典,在效能上有極大提升,容量也達到了64MB;
  • 隨後的十幾年,記憶體容量開始穩定地遵循摩爾定律翻倍,持續到2019年,DDR3記憶體的容量已經可以達到16GB。

 

 

 

記憶體器件的單位價格也在逐年快速下降。從1970年代至今,記憶體每兆位元組的價格下降了近9個數量級,根據2019年最新的統計資料,平均花費3-5美元就可以購買到1GB的記憶體。

 

資料來源:中國通訊院整理

 

記憶體容量的持續上漲以及價格的下降,使大量資料在記憶體中進行儲存和操作成為可能。

 

2.記憶體技術的瓶頸與突破

 

過去幾十年,計算機系統的儲存體系結構被設計成如圖2的金字塔形模型。這樣的儲存結構利用區域性性原理儘量將熱資料儲存在靠近CPU的地方。在傳統樣式中,記憶體資料庫的所有資料都儲存在DRAM介質中。

 

雖然DRAM的價格已經大幅下降,但在海量資料儲存的需求下,記憶體的成本依然是很大的問題;另外由於DRAM屬於易失性介質,掉電後所有資料都會丟失,需要額外考慮資料持久化的方案,會極大的限制記憶體資料庫的效能和使用場景。

 

針對DRAM現存的一些硬體瓶頸,業界已經研發出了持久型記憶體(PM,Persistent Memory),學術名為儲存級記憶體(SCM,Storage ClassMemory),和DRAM一樣,都是安裝在機器主機板的記憶體槽介面中。

 

參考圖2,DDRDRAM及以上的易失性儲存CPU可以透過load/store指令直接訪問,而NANDSSD及以下的非易失性儲存CPU無法直接訪問,需要先載入到易失性儲存中,可以看出DRAM與SSD之間存在巨大的效能鴻溝,在訪問時延上出現了跳變。

 

而持久型記憶體位於DRAM與SSD之間,以load/store指令的方式訪問並支援資料的持久化,也填補了DRAM與SSD在時延上存在的鴻溝。相比DRAM,持久型記憶體在效能上處於劣勢,但容量和價格均佔據優勢;相比NANDSSD,持久型記憶體在效能上處於優勢,但容量和價值處於劣勢。

 

記憶體資料庫的發展主要經歷了雛形期、理論成熟期、市場成長期及高速發展期四個階段。

 

 

記憶體資料庫在提供高效能讀寫能力的同時,也存在由於器件導致的資料易失問題,需要在應用中引起註意。

 

1.優勢:高效能讀寫

 

由於省去了磁碟I/O的開銷,在資料訪問的時延上記憶體型資料庫可以達到傳統關係型資料庫無法達到的微秒級別,單機記憶體資料庫的QPS也可以達到10萬以上,配合上使用者態協議棧、記憶體大頁等技術之後,更是可以輕鬆達到幾十萬QPS的量級,這是傳統的關係型資料庫很難做到的。

 

2.挑戰:記憶體資料易失

 

記憶體資料庫當前主要使用DRAM作為儲存介質,DRAM屬於掉電易失性介質,為了保證資料的可靠性,記憶體資料庫需要考慮持久化方案。現階段主流的鍵值對記憶體資料庫對於持久化的支援較為薄弱,持久化效能也不如傳統資料庫。

 

記憶體型資料庫中剋服掉電易失性來保障資料可靠性的方法主要是以下兩種:

 

  • 一是每次操作都進行資料持久化,這種方式勢必會大幅降低記憶體資料庫的效能;
  • 二是按照一定的策略進行操作的持久化,這樣可以達到一定程度的最佳化和緩解,但極端情況下資料丟失的情況仍不可避免。

 

現階段新型的非易失性儲存器件已經釋出但尚未規模化商用。相信解決了儲存易失性的難題後,記憶體資料庫會具備更多的應用。

贊(0)

分享創造快樂