NoSQL與關係數據庫的比較

表中給出了NoSQL和關係數據庫( Relational DataBase Management System, RDBMS )的簡單比較,對比指標包括數據庫原理、數據規模、數據庫模式、查詢效率、一致性、數據完整性、擴展性、可用性、標準化、技術支持和可維護性等方面。從表中可以看出,關係數據庫的突出優勢在於,以完善的關係代數理論作爲基礎,有嚴格的標準,支持事務 ACID 四性,藉助索引機制可以實現高效的查詢,技術成熟,有專業公司的技術支持;其劣勢在於,可擴展性較差,無法較好地支持海量數據存儲,數據模型過於死板,無法較好地支持Web 2.0應用,事務機制影響了系統的整體性能等。NoSQL數據庫的明顯優勢在於,可以支持超大規模數據存儲,靈活的數據模型可以很好地支持Web 2.0應用,具有強大的橫向擴展能力等;其劣勢在於,缺乏數學理論基礎,複雜查詢性能不高,一般都不能實現事務強致性,很難實現數據完整性,技術尚不成熟,缺乏專業團隊的技術支持,維護較困難等。

NoSQL和關係數據庫的簡單比較

比較標準 關係數據庫 NoSQL 備註
技術支持 關係數據庫經過幾十年的發展,已經非常成熟,Oracle等大型廠商都可以提供很好的技術支持 NoSQL在技術支持方面仍然處於起步階段,還不成熟,缺乏有力的技術支持
數據庫原理 完全支持 部分支持 關係數據庫有關係代數理論作爲基礎 NoSQL沒有統一的理論基礎
數據規模 超大 關係數據庫很難實現橫向擴展,縱向擴展的空間也比較有限,性能會隨着數據規模的增大而降低 NoSQL 可以很容易通過添加更多設備來支持更大規模的數據
查詢效率 可以實現高效的簡單查詢,但是不具備高度結構化查詢等特性,複雜查詢的性能不盡人意 關係數據庫藉助於索引機制可以實現快速查詢(包括記錄查詢和範圍查詢) 很多 NoSQL 數據庫沒有面向複雜查詢的索引,雖然 NoSQL 可以使用 MapReduce 來加速查詢,但是在複雜查詢方面的性能仍然不如關係數據庫
一致性 強一致性 弱一致性 關係數據庫嚴格遵守事務ACID模型,可以保證事務強一致性 很多 NoSQL 數據庫放鬆了對事務ACID四性的要求,而是遵守 BASE 模型,只能保證最終一致性
可維護性 複雜 複雜 關係數據庫需要專門的數據庫管理員(DBA)維護 NoSQL 數據庫雖然沒有關係數據庫複雜,但也難以維護
標準化 關係數據庫已經標準化( SQL ) NoSQL 還沒有行業標準,不同的 NoSQL 數據庫都有自己的查詢語言,很難規範應用程序接口
可用性 很好 關係數據庫在任何時候都以保證數據一致性爲優先目標,其次纔是優化系統性能,隨着數據規模的增大,關係數據庫爲了保證嚴格的一致性,只能提供相對較弱的可用性 大多數 NoSQL 都能提供較高的可用性
數據完整性 容易實現 很難實現 任何一個關係數據庫都可以很容易實現數據完整性,如通過主鍵或者非空約束來實現實體完整性,通過主鍵、外鍵來實現參照完整性,通過約束或者觸發器來實現用戶自定義完整性,但是在 NoSQL 數據庫卻無法實現
擴展性 一般 關係數據庫很難實現橫向擴展,縱向擴展的空間也比 NoSQL 在設計之初就充分考慮了橫向擴展的需求,可以很容易通過添加廉價設備實現擴展
數據庫模式 固定 靈活 關係數據庫需要定義數據庫模式,嚴格遵守數據定義和相關約束條件 NoSQL 不存在數據庫模式,可以自由、靈活地定義並存儲各種不同類型的數據
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章