在過去的架構選型及實際使用中,NoSQL數據庫當然是必不可少的一部分。分別使用了Cassandra,MongoDB,Redis,HBase這幾款有代表性的NoSQL數據庫
1,Cassandra:
Cassandra從安裝配置,到使用,負載平衡機制等等,無疑是這些新興的NoSQL中最方便使用的一個(個人使用體驗觀點)
但從近期的消息來看由於出現過幾次較為嚴重的數據庫停止服務事件,Cassandra的創始人Facebook,及Twitter開始漸漸棄用Cassandra,只把Cassandra用在非核心模塊上,不地Digg仍在使用,看來我們要謹慎地對待它。2008年Facebook已讓Cassandra開源到Apache.
2.MongoDB:
它的風格可以說,在當今WebAPI流行的時代,它更易於被人使用,BJSON操作風格,自動數據平衡機制(當然要當心存貯碎片問題),相對MySQL等SQL數據庫有優秀考慮全面的,分布式方案,自動M/S主從讀寫切換。對於數據集群來說,可以說相當完美的Sharding等自動化支持。至今聽說過的最嚴重的事件就是FourSquare的11小時數據庫宕機事件。相對來說還能接受:),它是使用C++/Boost編寫,效率性能的確不錯。
3.Redis:
它就是一個高效的內存數據庫,用它來持久化數據存貯,那是扯淡,如果真拿它來與別的NoSQL一樣使用(考慮讀寫一致性或者寫安全)那它馬上慢下來:)不過他提供了比Memcached更多的操作數據類型,倒可以完全用它來做為一個高效易用的緩存,Benchmark據說優於memcached.我用的數據規模沒有這么大,不敢妄加評論。
4.HBase:
概念上也相對完美,有Hive開源工具支持,使HBase,可以相對於其它NoSQL數據庫更易於使用,基於HDFS分布文件系統,使HBASE天生就有對海量分布集群很好的支持。又因為與Hadoop相伴而生,所以一個系統想使用數據分析,智能處理,海量邏輯執行,完全可以選擇Hadoop + HBase雲計算方案。
MongoDB也支持js的Map/Reducer所以可以試着整合一下MongoDB進雲計算方案中。
當我使有MySQL + NoSQL方案時,我會選擇MongoDB,不僅是因為他的出色的海量分布式方案的支持,也不是因為經的Map/Reducer分布式計算的支持。而是因為還沒聽說過它有過重大的失敗案例,相對較完美的文檔(還有中文手冊喲)還有JSON分格支持,在當下WebAPI流行的時代,不僅是從個人喜愛角度,也是從工程管理角度,開發人員更Love it,呵呵。
我會抽時間,整理一下MongoDB相關的資料共享一些,主要是為了重溫以前的Efforts,方便自己回憶。
