跳到內容

內存數據庫的優缺點

首席工程師Jeff Parsons討論了 內存數據庫。 Jeff使用ACID原則作為他進行比較的核心。還可以了解Raima提供的作為數據管理內存解決方案的內容。

 

成績單

我想討論一下“內存中”的優點和缺點 資料庫”。首先,內存數據庫與僅將數據存儲在共享內存段之間有什麼區別?傳統上,數據庫可以通過縮寫ACID通常指的四個屬性來表徵:原子性,一致性,隔離性和持久性。一旦停止持久化數據庫,就會失去持久性。因此,這就是內存數據庫所失去的。除了將數據庫內容複製到另一個持久位置的方法之外,如果某些內容停止工作,則內存數據庫可能會丟失數據。

其餘屬性;原子性,一致性和隔離性是將內存數據庫與某些共享內存中保存的簡單數據區分開來的原因。原子性是用來描述事務行為的單詞,其中所有更改都作為全有或全無操作提交給數據庫。隔離是用來描述其他進程看到的事務性更改的詞。絕對不允許他們查看部分交易。在最基本的形式下,共享內存不會強制執行原子性或隔離性。只要只有一個進程使用數據,那很好,但是這樣做破壞了共享內存的目的。

數據庫一致性意味著為所有用戶維護結構規則和關係。增強數據庫一致性需要共享通用代碼和數據定義。當然,這可以通過共享內存來完成,但是數據庫系統將內置代碼和數據定義並可以使用。因此,無論您的數據是持久的還是存儲在內存中,如果您的數據是共享的或複雜的,您仍然需要數據庫功能,而這並不容易。

保留數據庫的主要原因 在記憶中 是性能。純粹在內存中讀取和寫入數據比在磁盤或閃存驅動器上存儲的數據快。相應的缺點是所有數據都必須容納在內存中。這越來越便宜,但內存大小仍為數GB,而磁盤大小可以為數TB。有必要購買足夠的內存或限制數據庫的大小。 Raima如何在RDM中實現內存數據庫系統?我們允許您在內存中聲明整個數據庫或數據庫中表的選擇。那就是你要做的。我們通過事務性文件服務器和運行時庫來實現它。

事務文件服務器是一個獨立的進程,該進程控制數據庫文件並為同一台計算機或其他計算機上的所有用戶保持原子性和隔離性。運行時庫鏈接到應用程序代碼中。它在TFS中讀寫數據庫頁面。關鍵是,當將數據庫或數據庫的一部分聲明為內存中時,只有RDM TFS和運行時的行為有所不同。您的應用程序代碼可以保持完全相同。 RDM 在內存數據庫中有幾個選項。

持久性內存數據庫在打開時從磁盤映像加載,而更改在關閉時自動保存回更改。易失性內存數據庫在打開時為空,在關閉時所有數據均被丟棄。第三種是打開時讀取,打開後會自動從磁盤映像加載數據,但更改僅按需寫入。因此,總而言之,將RDM用作內存數據庫的優勢在於,它提供了事務性的多用戶安全性,而共享內存解決方案則需要大量工作來做到這一點。與持久解決方案相比,它還提供了更高的性能。

缺點;潛在的數據丟失和數據庫大小限制。如果可以的話,您當然應該使用內存中的RDM解決方案。