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