在互聯網行業,通常需要高併發、高性能、高可用性的數據庫系統。在處理大數據時,關係型數據庫遭遇了瓶頸,這就促使我們思考從數據模型的根源入手,來解決性能上的問題。根據數據的存儲模型和特點,NoSQL數據庫分爲很多種類,主要分爲以下四個類型:鍵值模型、列式模型、文檔模型與圖形模型。
鍵值模型
實例:Dynamo、Redis、Voldemort
應用場景:內容緩存,主要用於處理大量數據的高訪問負載,也用於一些日誌系統
數據模型:key與value間建立的鍵值映射,通常用哈希表實現
優點:查找迅速
缺點:數據無結構化,通常只被當做字符串或者二進制數據
列式模型
實例:Bigtable、Cassandra、HBase
應用場景:分佈式文件系統
數據模型:以列存儲,將同一列數據存在一起
優點:查找迅速、可擴展性強,更容易進行分佈式擴展
缺點:功能相對有限
文檔模型
實例:CouchDB、MongoDB
應用場景:Web應用
數據模型:與鍵值模型類似,value指向結構化數據
優點:數據要求不嚴格,不需要預先定義結構
缺點:查詢性能不高,缺乏統一查詢語法
鍵值模型
實例:Neo4j
應用場景:社交網絡、推薦系統、關係圖譜
數據模型:圖結構
優點:利用圖結構相關算法提高性能
缺點:功能相對有限,不好做分佈式集羣解決方案