背景:關係型數據庫的瓶頸
隨著 Web 2.0 與 SNS 網站爆發,傳統關係型數據庫面臨「三高」挑戰:
- 高性能:每秒上萬次讀寫,磁盤 I/O 成為寫入瓶頸。
- 海量存儲:億級用戶動態、賬號,單表查詢效率極低。
- 高擴展性與可用性:難以像應用服務器那樣橫向擴展,升級常需停機遷移。
同時,Web 應用往往不需要嚴格事務、強一致性、複雜多表關聯,關係型數據庫的這些特性反成負擔。
NoSQL 的興起
為解決上述問題,鍵值存儲等非關係型數據庫(NoSQL)應運而生。代表產品:
- Redis、Tokyo Cabinet、Cassandra、Voldemort、MongoDB、Dynomite、HBase、CouchDB、Hypertable、Riak 等。
實現語言多樣:C/C++、Java、Erlang 等,各有特色。
選型建議
- 高併發緩存:Redis、Memcached。
- 海量文檔存儲:MongoDB、CouchDB。
- 分布式鍵值:Cassandra、Voldemort、Riak。
- 大數據分析:HBase、Hypertable。
Java 開發者可優先考慮 Java 實現的產品(如 Cassandra、HBase),便於源碼級調試與二次開發。