關注我們
(本文閱讀時間:6分鐘)
(資料圖片)
節選翻譯自 Michal Toiba 的博客
微軟前不久宣布推出分布式關系數據庫 Azure Cosmos DB for PostgreSQL,使 Azure 成為第一個在單一數據庫服務中同時支持關系和 NoSQL(非關系)數據的云平臺。這意味著 Azure Cosmos DB 開發者在構建云原生應用時擁有極大的靈活性——使用 Azure Cosmos DB 自己的 NoSQL 數據庫以及其他數據庫(比如 MongoDB 和 Apache Cassandra),或者使用越來越流行的 PostgreSQL 工具和擴展來處理關系數據。那么問題來了,您如何為自己的應用選擇數據庫?本文將通過探討開發者在構建應用時應考慮的一些主要因素來深入探討。
按照傳統來講,答案很簡單:如果開發者需要大規模實現高吞吐量,或非常大的數據庫,或兩者都需要,那么他們會選擇 NoSQL 數據庫。由于關系數據庫一般只會向上擴展,不會向外擴展,因此會達到一個極限,并且一旦超過這個極限就無法處理更多的請求或數據。因此,開發者會普遍選擇 NoSQL 數據庫進行水平擴展。而如果開發者需要應用的 ACID 合規性和數據準確性,他們則會選擇關系數據庫。
隨著 Azure Cosmos DB for PostgreSQL 等分布式關系數據庫的推出,現在可以兩全其美了——開發者可以享受 NoSQL 數據庫的橫向擴展能力、靈活性和性能,以及關系數據庫的 ACID 合規性和豐富的 SQL 查詢。
決定使用哪個數據庫時要考慮的因素
何時使用哪個數據庫系統通常取決于用例和各種考慮因素,例如數據庫結構、并發性、查詢、可擴展性和遷移等等。
請注意,沒有開發者的工作負載會只屬于上表中的某一個類別,需要根據實際情況進行權衡。我們將在下面查看其中的一些注意事項。
▍數據庫結構
如果您的數據是半結構化或非結構化的,并且工作負載需要大規模可預測的延遲,那么您應該考慮使用 NoSQL 數據庫。例如,隨著客戶群的增長,需要快速響應時間和可預測的低延遲的個性化或推薦引擎。NoSQL 數據庫可以大規模處理來自各種來源的不同類型的數據,并為持續創新和改善客戶體驗提供高度的靈活性。
如果您的數據是結構化的、具有固定的架構,并且您的工作負載需要事務一致性,那么關系數據庫是一個不錯的選擇。例如,金融應用程序具有高度結構化的數據并且需要數據完整性。關系數據庫提供了在保持 ACID 屬性的同時快速擴展的能力。
▍并發
如果您的工作負載是動態的、不可預測的并且可以訪問大量數據,例如物聯網和設備傳感器應用程序,請考慮使用 NoSQL 數據庫。NoSQL 數據庫非常適合這些類型的應用程序,因為它們發送大量數據并且通常全天候運行。這些應用受益于 NoSQL 數據庫的即時可擴展性和彈性,這是處理寫入密集型數據攝取所必需的。對于存儲設備讀出的系統,您可能不需要 ACID 保證,但需要從不同設備寫入數據庫的寫入乘法性能。例如,每 5 分鐘讀取一次溫度的智能溫度計。假設你有一千個溫度計,但只有幾百個用戶在看它們,意味著你的寫入比讀取多得多,這使得 NoSQL 數據庫成為理想選擇。
另一方面,假設您的寫入次數較少,讀取次數較多,比如在社交媒體應用中,某個受歡迎的人正在發布內容。如果您可以將查詢分為只讀查詢和寫入查詢,在關系數據庫中可能會更容易,其中寫入可以由一臺機器處理,然后您可以無限制地擴展讀取并且不會丟失 ACID 特性。因此,如果您的工作負載量是每秒數千個事務,例如每秒更新數千次和每秒讀取數萬次的社交媒體應用,那么關系數據庫可能是個不錯的選擇,具有可擴展副本的集群可以支持這一點。
▍查詢
NoSQL 數據庫非常適合數據關系可以去規范化和具體化的應用程序。通過去規范化,需要更少的表連接,可以更快地執行查詢和檢索數據,這使得 NoSQL 數據庫成為需要實時分析和具有大數據集的工作負載(例如欺詐檢測應用程序)的強大選擇。NoSQL 數據庫與模式無關,開發者可以靈活地利用來自多個來源的數據并實時檢測異常。
規范化和定義的約束有助于加強數據完整性和安全性,并避免數據重復。關系數據庫非常適合這些類型的應用程序,因為它們基于不同數據項之間的關系,能夠進行復雜的查詢和數據分析。
▍可擴展性
如果您的工作負載需要高可用性并且具有需要低延遲數據訪問的地理分布用戶,可以考慮使用 NoSQL 數據庫。例如,NoSQL 系統非常適合具有龐大且不斷增長的目錄和庫存的在線零售/電子商務應用程序。
正如本文開頭提到的,分布式關系數據庫或分布式 SQL 數據庫是一類新興的數據庫系統,它結合了 NoSQL 系統的橫向擴展特性和關系數據庫的 ACID 特性。在 Azure Cosmos DB 中,分布式 PostgreSQL 支持允許企業處理大量數據并擴展操作工作負載,以在機器上的集群上執行,完全符合 ACID 標準。
可以受益于分布式 PostgreSQL 功能的一組應用程序是多租戶 SaaS。正在構建多租戶應用程序的數字原住民可以將 Postgres 擴展到數百萬租戶,而無需重新構建他們的應用程序。他們可以受益于具有高可用性的租戶隔離等功能,隨著應用程序的增長優化成本和性能。
了解 Azure Cosmos DB 的 NoSQL 和關系功能的更多信息,請查看我們的官方文檔。
喜歡記得分享哦~
責任編輯:Rex_10