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