Gartner分析師Merv Adrian在Twitter上RT了一條關于NoSQL數據庫評選的消息,他認為這就像是在對比你更喜歡蘋果、雞尾酒還是西蘭花,它們都有不同的應用場景,對比NoSQL產品是沒有意義的。比如MongoDB和Cassandra就沒有什么可比性,它們的共同點只是都叫做NoSQL數據庫而已,它們的應用場景非常不同。
下面還是根據學習,對現在比較熱門的MangoDB和Memcached以及Redis做個簡單的學習:
MangoDB是(document database, 硬盤型)
a. 基于磁盤的數據庫,只是緩存熱點數據在內存中。
b. 文檔型的非關系型數據庫,
優勢是查詢功能強大,可存儲海量數據。
c. 可替換MySQL等關系型數據庫;
在內存足夠的情況下,讀寫性能不錯,可省去Cache這一層
Memcached和Redis是(key value store, 內存型)
a.內存型數據庫,數據保存在內存中,通過TCP直接存取; 或者說是全內存Cache。
優勢是速度快,并發高,缺點是數據類型有限,查詢功能不強,一般做緩存。
b. Key Value Store
c. 全內存
Memcached vs Redis
a. 都是Key Vale, Memory Cache
b. Memecahced是 multiple-thread; 適合多核CPU的應用。
Redis是 single-thread.
如果再多數據結構基礎上支持多線程,加鎖可能是個問題(待深入學習驗證)。
c. Redis具有持久化機制,可以定期將內存的數據持久化到硬盤上
d. Redis支持的數據類型更多
e. Redis 具備binlog功能,將所有操作寫入日志,以便redis出現故障時,可通過binlog進行恢復。
f. Redis支持Virtual Memory,可限定內存大小,當數據超出閥值,就通過類似LRU的算法將最不常用的數據保存到硬盤的頁面問題中。