對比云端NoSQL數(shù)據(jù)庫類型
對于社交網(wǎng)絡、流媒體內容、新聞發(fā)布和零售,全球可擴展在線服務的出現(xiàn)極大地改變了對應用基礎設施和軟件架構的要求。最重要的轉變之一是系統(tǒng)存儲、整理和訪問數(shù)據(jù)的方式。
傳統(tǒng)的關系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)(例如甲骨文數(shù)據(jù)庫)不太適合Web應用程序,因為這些應用程序需要分布式橫向擴展群集基礎架構。NoSQL數(shù)據(jù)庫更適合松散耦合的設計,其中應用程序數(shù)據(jù)和可執(zhí)行代碼分布在多個機器和數(shù)據(jù)中心?;A設施即服務(IaaS)提供商的根源是在開源社區(qū)和云原生開發(fā),他們已經(jīng)構建了各種NoSQL數(shù)據(jù)庫類型來適應不同的數(shù)據(jù)和用例。
優(yōu)點和缺點
由于Web應用程序和服務是NoSQL開發(fā)背后的主要驅動因素,因此,與RDBMS相比,各種類型的NoSQL數(shù)據(jù)庫都更具優(yōu)勢。這些優(yōu)勢包括以下:
- 可處理各種數(shù)據(jù)類型;
- 更高的性能和更低的延遲性;
- 非常適合非結構化數(shù)據(jù),例如文本、圖像、音頻和視頻;
- 更適合水平擴展的松耦合系統(tǒng);
- 非常適合時間序列或其他流數(shù)據(jù),例如事件日志和物聯(lián)網(wǎng)數(shù)據(jù);
- 可處理不同形式的NoSQL系統(tǒng)和非結構化數(shù)據(jù)模型的可用性;
- 可訪問廣泛的開源或低成本部署,比復雜的RDBMS更便宜。
然而,這些好處是有代價的。例如,RDBMS系統(tǒng)通過ACID模型確保更直接的一致性和可靠性,ACID模型是指原子性、一致性、隔離性和持久性。而NoSQL數(shù)據(jù)庫則遵循BASE模型:基本可用性、軟狀態(tài)和最終一致性。此外,這些非關系數(shù)據(jù)庫缺乏內置機制來檢查數(shù)據(jù)完整性;它必須在外部代碼中完成。***,通常不支持復雜的SQL操作,例如復合選擇語句或表連接。
NoSQL數(shù)據(jù)庫類別
NoSQL并不是特定類型的數(shù)據(jù)庫,而是具有幾種變體的數(shù)據(jù)庫類別:
- 鍵值存儲:也稱為哈希表,此存儲范例整理數(shù)據(jù)為一列記錄,這些記錄按鍵或哈希值索引,指向一個或多個數(shù)據(jù)對象或記錄。這類似于字典,每個鍵可以有不同數(shù)量的值,而不是固定長度。
- 內存緩存:這是完全適合系統(tǒng)RAM的一種鍵值存儲。通過消除僅為處理特定應用程序功能或情景而擴展整個數(shù)據(jù)庫的需要,這可加速性能并降低成本。
- 文檔存儲:雖然它是鍵值數(shù)據(jù)庫的子集,但文檔存儲中的值遵循預定義的層級結構,該結構嵌入有關存儲內容的元數(shù)據(jù)。文檔存儲通常以文本格式編碼,例如XML、YAML或JSON,或二進制變體,例如Microsoft Office文件或PDF。
- 搜索數(shù)據(jù)庫:一種專用文檔存儲,其中文檔索引可以分片并分布在多個節(jié)點,以提供大量可擴展性,以加速特定條目的檢索。
- 基于列的存儲:此存儲按列而不是行整理數(shù)據(jù)。列被分組為相關數(shù)據(jù)系列,可共同訪問。
- 圖形數(shù)據(jù)庫:這種類型的數(shù)據(jù)庫不采用通用行列結構,而是支持條目集合及其相互關系。
NoSQL數(shù)據(jù)庫對比
隨著云基礎架構成為部署Web應用程序的流行選擇,AWS、微軟和Google Cloud紛紛構建了NoSQL服務和產品,以更好地適應不同的數(shù)據(jù)類型和用例。每種產品的具體細節(jié)會有所不同,下表展示了每種NoSQL數(shù)據(jù)庫產品的情況:
正如NoSQL數(shù)據(jù)庫比較表所示,每種NoSQL數(shù)據(jù)庫類型都有幾種流行的開源和商業(yè)產品。每個第三方選項都具有特定的功能和優(yōu)勢,而云替代方案不一定提供。例如,MongoDB可以進行配置,使復制的數(shù)據(jù)立即與讀取保持一致,而不是最終的一致性。
但是,最重要的區(qū)別是部署模型:私有管理(內部部署或托管基礎架構)與云服務。這里取決于企業(yè)是否更喜歡自我管理、高度可配置和受控制的軟件,還是托管云服務,以消除前期資本支出和持續(xù)的基礎架構管理開銷。