內(nèi)存數(shù)據(jù)庫 - 計(jì)算機(jī)領(lǐng)域術(shù)語
內(nèi)存數(shù)據(jù)庫,顧名思義就是將數(shù)據(jù)放在內(nèi)存中直接操作的數(shù)據(jù)庫。相對(duì)于磁盤,內(nèi)存的數(shù)據(jù)讀寫速度要高出幾個(gè)數(shù)量級(jí),將數(shù)據(jù)保存在內(nèi)存中相比從磁盤上訪問能夠極大地提高應(yīng)用的性能。內(nèi)存數(shù)據(jù)庫拋棄了磁盤數(shù)據(jù)管理的傳統(tǒng)方式,基于全部數(shù)據(jù)都在內(nèi)存中重新設(shè)計(jì)了體系結(jié)構(gòu),并且在數(shù)據(jù)緩存、快速算法、并行操作方面也進(jìn)行了相應(yīng)的改進(jìn),所以數(shù)據(jù)處理速度比傳統(tǒng)數(shù)據(jù)庫的數(shù)據(jù)處理速度要快很多,一般都在10倍以上。內(nèi)存數(shù)據(jù)庫的最大特點(diǎn)是其“主拷貝”或“工作版本”常駐內(nèi)存,即活動(dòng)事務(wù)只與實(shí)時(shí)內(nèi)存數(shù)據(jù)庫的內(nèi)存拷貝打交道。
基本概念
數(shù)據(jù)庫的工作版本(部分或整個(gè)數(shù)據(jù)庫)常駐內(nèi)存的數(shù)據(jù)庫。不能存儲(chǔ)在當(dāng)前內(nèi)存中的數(shù)據(jù)仍然需要使用外存來進(jìn)行存儲(chǔ),因此內(nèi)存數(shù)據(jù)庫仍然可能存在著輸入和輸出。內(nèi)存數(shù)據(jù)庫中的活動(dòng)事務(wù)通常只與實(shí)時(shí)內(nèi)存中的數(shù)據(jù)打交道。基于數(shù)據(jù)存儲(chǔ)介質(zhì)的變化,內(nèi)存數(shù)據(jù)庫在數(shù)據(jù)的存儲(chǔ)組織與存取方法、事務(wù)處理、并發(fā)控制、故障恢復(fù)等方面也進(jìn)行了相應(yīng)的改進(jìn)和優(yōu)化,數(shù)據(jù)處理速度比傳統(tǒng)數(shù)據(jù)庫要快很多。
簡(jiǎn)介
內(nèi)存數(shù)據(jù)庫拋棄了磁盤數(shù)據(jù)管理的傳統(tǒng)方式,基于全部數(shù)據(jù)都在內(nèi)存中重新設(shè)計(jì)了體系結(jié)構(gòu),并且在數(shù)據(jù)緩存、快速算法、并行操作方面也進(jìn)行了相應(yīng)的改進(jìn),所以數(shù)據(jù)處理速度比傳統(tǒng)數(shù)據(jù)庫的數(shù)據(jù)處理速度要快很多,一般都在10倍以上。內(nèi)存數(shù)據(jù)庫的最大特點(diǎn)是其“主拷貝”或“工作版本”常駐內(nèi)存,即活動(dòng)事務(wù)只與實(shí)時(shí)內(nèi)存數(shù)據(jù)庫的內(nèi)存拷貝打交道。
定義:設(shè)有數(shù)據(jù)庫系統(tǒng)DBS,DB為DBS中的數(shù)據(jù)庫,DBM - t為在時(shí)刻t,DB在內(nèi)存的數(shù)據(jù)集,DBM - t屬于DB。TS為DBS中所有可能的事務(wù)構(gòu)成的集合。AT - t為在時(shí)刻t處于活動(dòng)狀態(tài)的事務(wù)集,AT - t屬于TS。Dt - T為事務(wù)T在時(shí)刻t所操作的數(shù)據(jù)集,Dt - T屬于DB。若在任意時(shí)刻t,均有:任意T屬于AT - tDt - T屬于DBM - t成立,則稱DBS為一個(gè)內(nèi)存數(shù)據(jù)庫系統(tǒng),簡(jiǎn)稱為MMDBS;DB為一個(gè)內(nèi)存數(shù)據(jù)庫,簡(jiǎn)稱為MMDB。
常見的例子有MySQL的MEMORY存儲(chǔ)引擎、eXtremeDB、TT、FastDB、SQLite、Microsoft SQL Server Compact等
技術(shù)特點(diǎn)
(1)采用復(fù)雜的數(shù)據(jù)模型表示數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)冗余小,易擴(kuò)充,實(shí)現(xiàn)了數(shù)據(jù)共享。
(2)具有較高的數(shù)據(jù)和程序獨(dú)立性,數(shù)據(jù)庫的獨(dú)立性有物理獨(dú)立性和邏輯獨(dú)立性。
(3)內(nèi)存數(shù)據(jù)庫為用戶提供了方便的用戶接口。
(4)內(nèi)存數(shù)據(jù)庫提供4個(gè)方面的數(shù)據(jù)控制功能,分別是并發(fā)控制、恢復(fù)、完整性和安全性。數(shù)據(jù)庫中各個(gè)應(yīng)用程序所使用的數(shù)據(jù)由數(shù)據(jù)庫統(tǒng)一規(guī)定,按照一定的數(shù)據(jù)模型組織和建立,由系統(tǒng)統(tǒng)一管理和集中控制。
(5)增加了系統(tǒng)的靈活性。
存儲(chǔ)問題
要解決持久性問題,內(nèi)存數(shù)據(jù)庫也有相應(yīng)的解決方案。這其中包括在集群里保存額外的數(shù)據(jù)副本,然后對(duì)數(shù)據(jù)庫進(jìn)行橫向擴(kuò)展,讓系統(tǒng)能夠在運(yùn)行中不斷將更新數(shù)據(jù)復(fù)制到一個(gè)或多個(gè)備用系統(tǒng)當(dāng)中。
一些數(shù)據(jù)庫系統(tǒng)還會(huì)定期將數(shù)據(jù)復(fù)制到磁盤系統(tǒng),就是為了應(yīng)對(duì)上述突然斷電或系統(tǒng)宕機(jī)的情況。當(dāng)然這時(shí)候就要在額外的負(fù)載和數(shù)據(jù)可恢復(fù)性方面做出權(quán)衡。
由于內(nèi)存數(shù)據(jù)庫的風(fēng)險(xiǎn)比傳統(tǒng)OLTP數(shù)據(jù)庫要大,所以要對(duì)它所支撐的應(yīng)用系統(tǒng)有一個(gè)更清楚的認(rèn)識(shí)。目前從整體來看,傳統(tǒng)的OLTP應(yīng)用系統(tǒng)往往會(huì)避免使用內(nèi)存數(shù)據(jù)庫技術(shù),它更多地應(yīng)用在特定的數(shù)據(jù)類型或者分析應(yīng)用(包括批處理報(bào)表系統(tǒng))當(dāng)中,這些系統(tǒng)的數(shù)據(jù)遠(yuǎn)沒有OLTP系統(tǒng)重要。
另一方面也是出于成本預(yù)算的考慮,DRAM相比于傳統(tǒng)磁盤甚至閃存來說都是更昂貴的。
