內(nèi)存數(shù)據(jù)庫(kù)從范型上可以分為關(guān)系型內(nèi)存數(shù)據(jù)庫(kù)和鍵值型內(nèi)存數(shù)據(jù)庫(kù)。
在實(shí)際應(yīng)用中內(nèi)存數(shù)據(jù)庫(kù)主要是配合oracle或mysql等大型關(guān)系數(shù)據(jù)庫(kù)使用,關(guān)注性能。
作用類似于緩存,并不注重?cái)?shù)據(jù)完整性和數(shù)據(jù)一致性。
基于鍵值型的內(nèi)存數(shù)據(jù)庫(kù)比關(guān)系型更加易于使用,性能和可擴(kuò)展性更好,因此在應(yīng)用上比關(guān)系型的內(nèi)存數(shù)據(jù)庫(kù)使用更多。
比較FastDB、Memcached和Redis主流內(nèi)存數(shù)據(jù)庫(kù)的功能特性。
FastDB的特點(diǎn)包括如下方面:
1、FastDB不支持client-server架構(gòu)因而所有使用FastDB的應(yīng)用程序必須運(yùn)行在同一主機(jī)上;
2、fastdb假定整個(gè)數(shù)據(jù)庫(kù)存在于RAM中,并且依據(jù)這個(gè)假定優(yōu)化了查詢算法和接口。
3、fastdb沒(méi)有數(shù)據(jù)庫(kù)緩沖管理開(kāi)銷,不需要在數(shù)據(jù)庫(kù)文件和緩沖池之間傳輸數(shù)據(jù)。
4、整個(gè)fastdb的搜索算法和結(jié)構(gòu)是建立在假定所有的數(shù)據(jù)都存在于內(nèi)存中的,因此數(shù)據(jù)換出的效率不會(huì)很高。
5、Fastdb支持事務(wù)、在線備份以及系統(tǒng)崩潰后的自動(dòng)恢復(fù)。
6、fastdb是一個(gè)面向應(yīng)用的數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)表通過(guò)應(yīng)用程序的類信息來(lái)構(gòu)造。
FastDB不能支持Java API接口,這使得在本應(yīng)用下不適合使用FastDB。
Memcached
Memcached是一種基于Key-Value開(kāi)源緩存服務(wù)器系統(tǒng),主要用做數(shù)據(jù)庫(kù)的數(shù)據(jù)高速緩沖,并不能完全稱為數(shù)據(jù)庫(kù)。
memcached的API使用三十二位元的循環(huán)冗余校驗(yàn)(CRC-32)計(jì)算鍵值后,將資料分散在不同的機(jī)器上。當(dāng)表格滿了以后,接下來(lái)新增的資料會(huì)以LRU機(jī)制替換掉。由于 memcached通常只是當(dāng)作緩存系統(tǒng)使用,所以使用memcached的應(yīng)用程式在寫回較慢的系統(tǒng)時(shí)(像是后端的數(shù)據(jù)庫(kù))需要額外的程序更新memcached內(nèi)的資料。
memcached具有多種語(yǔ)言的客戶端開(kāi)發(fā)包,包括:Perl、PHP、JAVA、C、Python、Ruby、C#。
Redis
Redis是一個(gè)高性能的key-value數(shù)據(jù)庫(kù)。redis的出現(xiàn),很大程度補(bǔ)償了memcached這類keyvalue存儲(chǔ)的不足,在部分場(chǎng)合可以對(duì)關(guān)系數(shù)據(jù)庫(kù)起到很好的補(bǔ)充作用。它提供了C++、Java、Python,Ruby,Erlang,PHP客戶端。
內(nèi)存數(shù)據(jù)庫(kù)是相對(duì)于磁盤數(shù)據(jù)庫(kù)來(lái)說(shuō)的。我們都知道我們經(jīng)常使用的關(guān)系型數(shù)據(jù)庫(kù),比如MySQL,它的數(shù)據(jù)文件最終是存儲(chǔ)到磁盤上的。而內(nèi)存數(shù)據(jù)庫(kù)則是將所有的數(shù)據(jù)存儲(chǔ)在內(nèi)存中,磁盤和內(nèi)存在訪問(wèn)速率上不是一個(gè)量級(jí)的,完全沒(méi)有可比性。
隨著內(nèi)存容量不斷加大、價(jià)格不斷下降,互聯(lián)網(wǎng)的流量越來(lái)越大的情況下,內(nèi)存數(shù)據(jù)庫(kù)逐步被廣泛應(yīng)用起來(lái)。
應(yīng)用場(chǎng)景
主流的內(nèi)存數(shù)據(jù)庫(kù)
總結(jié)
以上是個(gè)人整理的一些內(nèi)存數(shù)據(jù)庫(kù),都是我們平常業(yè)務(wù)開(kāi)發(fā)時(shí)候多少都有用到的內(nèi)存數(shù)據(jù)庫(kù)。了解每一種內(nèi)存數(shù)據(jù)庫(kù)的特性,結(jié)合它們的優(yōu)缺點(diǎn)并應(yīng)用于不同的業(yè)務(wù)場(chǎng)景,才是正確的編碼之道。