記憶體資料庫,顧名思義就是将資料放在記憶體中直接操作的資料庫。相對于磁盤,記憶體的資料讀寫速度要高出幾個數量級,将資料儲存在記憶體中相比從磁盤上通路能夠極大地提高應用的性能。同時,記憶體資料庫抛棄了磁盤資料管理的傳統方式,基于全部資料都在記憶體中重新設計了體系結構,并且在資料緩存、快速算法、并行操作方面也進行了相應的改進,是以資料處理速度比傳統資料庫的資料處理速度要快很多,一般都在10倍以上。記憶體資料庫的最大特點是其“主拷貝”或“工作版本”常駐記憶體,即活動事務隻與實時記憶體資料庫的記憶體拷貝打交道。
記憶體資料庫與傳統資料庫的異同
傳統的資料庫系統是關系型資料庫,開發這種資料庫的目的,是處理永久、穩定的資料。關系資料庫強調維護資料的完整性、一緻性,但很難顧及有關資料及其處理的定時限制,不能滿足工業生産管理實時應用的需要,因為實時事務要求系統能較準确地預報事務的運作時間。
對磁盤資料庫而言,由于磁盤存取、内外存的資料傳遞、緩沖區管理、排隊等待及鎖的延遲等使得事務實際平均執行時間與估算的最壞情況執行時間相差很大,如果将整個資料庫或其主要的“工作”部分放入記憶體,使每個事務在執行過程中沒有i/o,則為系統較準确估算和安排事務的運作時間,使之具有較好的動态可預報性提供了有力的支援,同時也為實作事務的定時限制打下了基礎。這就是記憶體資料庫出現的主要原因。
記憶體資料庫所處理的資料通常是“短暫”的,即有一定的有效時間,過時則有新的資料産生,而目前的決策推導變成無效。是以,實際應用中采用記憶體資料庫來處理實時性強的業務邏輯處理資料。而傳統資料庫旨在處理永久、穩定的資料,其性能目标是高的系統吞吐量和低的代價,處理資料的實時性就要考慮的相對少一些。實際應用中利用傳統資料庫這一特性存放相對實時性要求不高的資料。
在實際應用中這兩種資料庫常常結合使用,而不是以記憶體資料庫替代傳統資料庫。
常見記憶體資料庫
sqlite
sqlite是一個開源記憶體資料庫,實作了獨立的,可嵌入的,零配置的sql資料庫引擎。
oracle timesten記憶體資料庫
oracle timesten是一個全新設計的記憶體資料庫。它使用基于行的關系模型(表、列、資料類型、索引等)實作資料存儲,并使用sql作為通路語言。它提供了許多api,并且支援oracle pl/sql。應用程式的通路方式與其他關系資料庫完全相同。
ibm soliddb
ibm soliddb 可以提供每秒數萬至數十萬事務的吞吐率,并且始終可以獲得微秒級的響應時間(或延時)。
sap-hana
sqlserver 2014 hekaton記憶體資料庫引擎
其他參考資料: