譯者 | 陳峻
審校 | 重樓
Allied Market Research最近發布的一份報告指出,業界對于NoSQL數據庫的需求正在持續上升。2022年,全球NoSQL市場的銷售額已達73億美元,預計到2032年將達到863億美元,而且其復合年增長率為28%。其中,推動全球NoSQL市場增長的主要因素包括:更具可擴展性和靈活性的企業級數據庫、對大數據分析的爆炸性需求,以及云計算平臺與技術的普及。
說到底,NoSQL數據庫是為了彌補在使用結構化查詢語言(SQL)進行數據庫查詢時的各種局限性而產生的。此類數據庫存儲和管理數據的方式,可以實現傳統關系型數據庫管理系統(Relational Database Management System,RDBMS)所不具備的高效與靈活性。
那么,如果您的企業正在考慮是否遷移到NoSQL的話,面對業界二十多種開源和商業類型的NoSQL數據庫,該如何選擇最適合本企業數據存儲需求的一種呢?下面,我將為您提供五個問題,作為選擇的參考依據。
NoSQL是正確的選擇嗎?
在開始選擇之前,重要的是要確定NoSQL是否能滿足您的實際需求。國際數據公司(IDC)研究副總裁Carl Olofson曾說,“后臺事務處理、頻繁的交互式應用數據管理、以及流式數據捕獲”都是選擇NoSQL的充分理由。同時,您需要捫心自問,為什么現有的RDBMS無法滿足自己的用例。畢竟許多企業已廣泛地安裝了關系型SQL數據庫,并擁有熟練的技術人員進行管理。當然,NoSQL的核心優勢在于其分散、可擴展和容錯的設計。而且,大多數NoSQL都是輕量級的,它們在CPU和支持方面所需的開銷比RDBMS要少。
此外,替代RDBMS的另一種方法是混合持久性(Polyglot Persistence),即:在單個系統中采用多種數據存儲技術,以滿足不同的存儲需求。據此,開發人員可以為每一種用例選擇合適的數據技術,而不是將所有數據都強行塞進一種關系型模式中。
需要哪種NoSQL數據模型?
目前,NoSQL數據模型有四種主要模型,分別是鍵值、文檔、列存儲和圖。每一模型都適合不同的用例。我們可以將它們的優勢總結如下:
- 鍵值數據庫旨在滿足零售和移動等應用的高可用性、以及低延遲要求。
- 文檔數據庫適合事件記錄、在線購物、內容管理和深入分析處理。
- 列存儲數據庫適用于事件記錄、內容管理、計數和/或分類分析,并且可以設置自動失效那些過期的數據。
- 圖數據庫非常適合數據元素的相互連接、以及關系數量不確定的應用,包括:社交網絡、推薦引擎、物流和路由、位置感知系統、公交鏈接、以及網絡拓撲等。
可見,文檔類型是最流行的,包括了以最佳方式存儲JSON文檔的能力;圖數據庫側重于相互關聯的數據;而鍵值類型側重于對簡單鍵值對的檢索,其應用范圍并不廣泛。此外,一些多模型(Multi-model)數據庫還能提供多種類型的靈活性。
是否有延遲要求?
通常,我們對于數據庫的延遲要求可以毫秒、亞秒、秒、分鐘來界定。
- 如果您對延遲的要求極低,例如對于流式數據捕獲、或實時數據共享的應用而言,如果處理的是一些簡單的列表或矩陣,就應該考慮鍵值存儲。
- 如果數據的形式極易改變,并且包含了自定義的字段,那么JSON文檔數據庫更為合適。畢竟與之對應的應用往往是高交互式、且會隨著用戶需求的變化而不斷更改。
- 如果對延遲的要求不高,而且必須支持物料清單(bill-of-materials)結構、或相互關聯的復雜數據組,那么可以考慮圖形DBMS。
可擴展性和數據一致性重要嗎?
NoSQL數據庫可以將數據分解成不同的片段(segment)或碎片(shard),這對運行上TB級的大型部署而言非常實用。分片是NoSQL擴展數據庫的基本功能,它能夠協助實現在橫向擴展的集群中,自動縮放節點,從而使得應用更加動態靈活。
在數據一致性方面,關系型數據庫的重點是使用ACID合規性,來確保每筆交易的一致。而NoSQL則不然,它通過快速擴展和提供高性能,來實現數據的最終一致性(Eventual Consistency)。
如何部署?
有些NoSQL數據庫可以在企業內部運行,有些只能在云端運行,還有些可以在混合云的環境中運行。其中,值得一提的是,部分NoSQL已與云計算架構進行了原生集成,可以運行在無服務器和Kube.NETes環境中。畢竟,那些既希望為自己的應用提供良好的性能和可擴展性,又希望通過自動化去簡化基礎架構管理的用戶,都會選擇無服務器模式。
領先的NoSQL數據庫
如果您已根據上述五個問題決定選用NoSQL數據庫的話,那么下面我們來介紹一下目前市場上領先的各種NoSQL數據庫。
Aerospike
Aerospike是一種開源的分布式、實時、高性能NoSQL數據庫,專為零容忍停機和高讀寫吞吐量的應用而設計。作為一種多模型NoSQL和圖數據庫,Aerospike支持不同模型的數據同步,對擴展并不設限,以便企業能夠實時處理數十億筆交易。根據其產品文檔,Aerospike采用了大規模并行和統一的存儲模型,以確保盡可能小得占用服務器空間。
同時,該數據庫可以在邊緣處獲取流式數據,并與記錄系統、第三方來源、數據倉庫或數據湖中的原有數據相結合,以用于后續的操作、交易或負載分析。Aerospike既可以在企業內部運行,也可以作為云管理服務運行。
AWS DynamoDB
Amazon DynamoDB是一種無服務器、NoSQL、且全托管的數據庫服務,可以在任何規模下提供毫秒級的響應時間。該數據庫的最大賣點之一是它使得企業只有在開發和運行應用時,才需要為使用付費。
作為一項云原生的數據服務,DynamoDB通過靜態加密來保護敏感數據。同時,它允許用戶通過自創數據庫表,來存儲和檢索任意數量的數據,并為任意級別的請求流量提供服務。據AWS稱,用戶具有自由擴縮數據表的吞吐能力,而不會出現停機或性能下降。當然,開發人員和管理員也可以使用AWS管理控制臺,來監控資源利用率和性能指標。
此外,DynamoDB還提供了按需備份的能力。它允許用戶創建數據表的完整備份,以便長期保留和遵從本地法規的需求。
Couchbase
由Couchbase公司發布的Couchbase Server,是一個支持多模型JSON文檔數據庫平臺。作為一個內置了緩存的開源NoSQL鍵值和文檔數據庫,它適用于需要提供性能、多模型、可擴容、以及自動化數據庫的企業。
通常,企業可以利用該平臺來支持社交和移動應用、內容與元數據存儲、以及電商交易等應用。它為各種文檔、數據模型、索引、全文搜索、以及用于實時分析的MapReduce提供了全面的支持。
DataStax
DataStax Astra DB是一種基于Apache Cassandra的全托管云原生數據庫即服務。據稱,它可以實現動態擴展,并通過一系列API和編程語言選項,來加速開發人員構建實時應用,并對擴展不設限。
同時,開發人員也可以利用Astra DB的內置安全機制(如專用鏈接、IP訪問控制、單點登錄、應用令牌和數據加密),來實時確保數據安全。當然,基于微服務和API優先原則構建的Astra DB無服務器架構,還可按需進行自動擴展。
谷歌BigTable
谷歌聲稱Bigtable是一種企業級NoSQL數據庫服務,具有低至個位數的毫秒級延遲、無限制的擴展能力、以及99.999%的可用性。而且,它支持多租戶、混合操作和實時負載分析。
同時,谷歌表示,作為一種鍵值和寬列(wide-column)存儲,Bigtable是快速訪問結構化、半結構化、以及非結構化數據的理想選擇。針對延遲敏感的個性化負載,Bigtable可以自動擴展其資源,以適應服務器的流量,并按需處理相關分片、復制和查詢處理。
MarkLogic
MarkLogic Server是一個多模型數據庫,它能夠將文檔、語義圖、地理空間和關系模型結合到單個可擴展的、可操作的數據庫中。它為JSON、XML、文本、RDF三元組、地理空間和二進制文件等提供了本地存儲,并具有統一的搜索和查詢界面。
由于該數據庫的核心部分內置了搜索引擎,提供了一個從silos處加載數據,并搜索所有數據的單一平臺,因此它不需要通過附加搜索引擎來進行全文搜索。此外,MarkLogic Server還提供了DLP等企業級的數據安全控件。
微軟Azure Cosmos
Azure Cosmos DB作為微軟Azure的數據庫服務,支持多種NoSQL模型和多種數據格式,其中包括JSON和二進制數據等。微軟表示,該數據庫屬于全托管模式,由微軟Azure處理所有底層基礎架構,以便開發人員更專注于自己的應用和數據。
Azure Cosmos DB不但提供了數據加密和數據訪問控制等安全工具,而且具有自動和即時擴展能力,更為MongoDB、Cassandra和其他NoSQL引擎提供了開源的API。
MongoDB
由MongoDB Inc.維護、以Gnu Affero通用公共許可證和Apache許可證的組合形式發布的MongoDB,是一個免費的開源、跨平臺、且面向文檔的數據庫。它使用帶有模式的JSON類文檔,并結合了從優化各類組織的數千次部署中,學到的最佳操作實踐。
作為一款基于云端的產品,它可以分布式數據庫集群的形式,處理數據庫管理,設置、配置和修補軟件、以及進行監控和備份??傮w而言,MongoDB的主要特點和功能包括:全面管理備份、恢復時間點,提供實時性能面板、以及定制警報。
redis
由Redis Labs贊助的Redis Enterprise,是一種開源的鍵值NoSQL內存數據庫。它支持寬松和嚴格的一致性、靈活的無模式模型、高可用性、以及易部署性。
Redis平臺支持諸如列表、集合、位圖和哈希值等各種鍵值數據結構,以及通過諸如搜索、圖、JSON和XML等插件模塊支持的各種模型。Redis Enterprise包含了一個實時索引、查詢和全文搜索引擎,既可以在企業內部使用,也能夠作為云中的托管服務被使用。
譯者介紹
陳峻(Julian Chen),51CTO社區編輯,具有十多年的IT項目實施經驗,善于對內外部資源與風險實施管控,專注傳播網絡與信息安全知識與經驗。
原文標題:How to choose the right NoSQL database,作者:Bob Violino