Database-Recommendation
是否有可用的記憶體混合數據庫?
我正在尋找一個數據庫——
- 關係(不是 NoSQL)。
- 有一個記憶體儲存。
- 具有基於磁碟的備份儲存。
我想建立一個系統,將磁碟的全部內容複製到記憶體中。因此,對記憶體儲存和磁碟都進行了寫入,但僅對記憶體進行了讀取。
我見過的大多數數據庫,例如 H2 或 HSQLDB 都在記憶體網格或基於磁碟的表中提供。我正在尋找帶有基於磁碟的備份儲存的記憶體網格。
是否有這樣的數據庫系統可用,或者是否可以配置 MySQL(或其他)數據庫以這種方式工作?
即使您使用“持久”表,H2和 HSQLDB 也會將表記憶體在記憶體中。
SET FILES CACHE SIZE
在 HSQLDB 中,您可以使用語句控制用於保存表數據的記憶體量。我認為H2有類似的東西。因此,如果您創建記憶體表並使數據記憶體足夠大,您最終會得到儲存在磁碟上但保存在記憶體中的表。
好吧,如果您的數據庫足夠小以適合記憶體,大多數關係數據庫將滿足這些需求。大多數都有用於頻繁訪問數據的緩衝池。這是一種常見的策略。我知道PostgreSQL通常會這樣做,儘管它會將頁面從記憶體刷新到磁碟並寫入 WAL。因此,如果您的數據庫在記憶體中非常適合,那麼所有這些都可以通過這種方式進行管理。PostgreSQL 使用 2Q 記憶體算法和 OS 文件系統緩衝區作為第三層(寫入事務日誌在每次送出時刷新,雖然確保了持久性,但表不是)。
不過,最大的問題是這確實會帶來一些成本。您將獲得良好 RDBMS 的標準性能。以磁碟格式管理事物也有一些懲罰。所以你不會得到像 VoltDB 這樣的磁碟支持儲存。由於主記憶體格式和基於磁碟的格式之間的轉換問題,這樣的事情不存在。