資料庫體系結構發展的下一步是分布式SQL,今天就讓我們來聊一聊它的一些顯著特徵。
隨著組織過渡到雲,他們最終發現,在一些最關鍵的應用程式背後的舊式關係資料庫根本無法利用雲的前景,並且難以擴展。是資料庫限制了這種轉換的速度和有效性。為了解決此問題,組織希望獲得經過測試的關係數據存儲(例如Oracle,SQL Server,Postgres和MySQL)的可靠性,但要具有雲帶來的規模和全球覆蓋範圍的好處。
一些人轉向NoSQL存儲庫來嘗試滿足這些要求。這些替代方案通常可以滿足規模要求,但由於不是完全為提供真正的一致性而設計的,因此不能作為事務資料庫使用。最近,一些NoSQL解決方案已經提供了「 ACID事務」,但它們充滿了警告,並且無法為財務分類帳、庫存控制和身份管理等任務關鍵型工作負載提供必要的隔離級別。
新型資料庫:分布式SQL
一些在全球範圍內運作的最成功的公司實際上已經解決了這個問題,並建立了專門的資料庫來解決這個問題。最公開的例子是Google Cloud Spanner。2012年,Google在Spanner上發表了一篇論文,展示了一種查看資料庫的新方法,該方法植根於分布式系統和全球範圍。
描述中有很多內容,還有長達14頁的論文,詳細介紹了他們如何構建一致且可擴展的資料庫。內容非常精彩,概述了資料庫下一步發展的基礎:分布式SQL。
是什麼構成了分布式SQL資料庫?
為了在分布式環境中交付真正可伸縮的SQL,已經進行了幾次嘗試。有些人試圖對現有資料庫進行改造以滿足他們的需求,但這最終無法實現真正的分布式SQL資料庫的承諾。那麼,什麼構成了分布式SQL資料庫呢?需求可以概括為五個核心條件:
1.規模
分布式SQL資料庫必須無縫擴展,以反映雲環境的功能,而不會引起操作複雜性。正如我們無需繁重的工作就可以擴展計算一樣,資料庫也應該能夠擴展。這包括在資料庫中的多個分布式參與者之間均勻分布數據的能力。
2.一致性
分布式SQL資料庫必須在分布式環境中提供高度的隔離。在基於雲的世界中,默認的體系結構是分布式系統和微服務,由於多個運營商可能試圖處理同一數據,因此事務一致性變得困難。資料庫應該調解爭用,並提供與單實例資料庫相同的事務隔離級別。
3.彈性
分布式SQL資料庫自然必須提供最高級別的彈性,而無需任何外部工具即可完成此任務。云為我們的工作負載提供了一個永遠在線的環境,並且資料庫應該具有相同的屬性。使用分布式資料庫,我們可以將故障恢復所需的時間減少到接近零,並且無需任何外部配置即可自然地複製數據。
4.地理複製
分布式SQL資料庫應允許在複雜,分散的地理環境中分布數據。雲提供了以可接受的服務質量到達全球每個角落的能力,並且資料庫不應限制你的應用程式這樣做。它應該可以滿足你的期望。
5. SQL
儘管這四個技術要求至關重要,但首先有一個關鍵的先決條件。資料庫必須使用SQL。它是數據的語言,也是所有應用程式邏輯的默認語言。我們不必重新培訓開發人員以使用資料庫。他們應該能夠使用他們已經熟悉的SQL方言。
有一些資料庫可以滿足這些要求。當然,該列表包括Spanner,但你也可以將Amazon Aurora,Yugabyte,FaunaDB和CockroachDB視為此新類別的成員。所有這些成員都以某種形式滿足要求,其中一些形式要比其他形式更好。顯然,該列表中缺少Oracle,Postgres,MySQL和所有NoSQL選項。儘管每個都可以滿足某些要求,但是它們都不滿足所有要求,因此不能視為替代方案。
6.數據局部性
一旦你生活在一個分散的世界中,很明顯資料庫本身實際上可以處理住所數據。參與者位於各個地區或數據中心,就可以了解每個位置,然後將其存儲的數據綁定到某個位置。一些應用程式架構師已將其實現為應用程式的一部分,但這種方法容易出錯且易碎。使用資料庫根據表中的某些欄位對數據進行地理分區是分布式SQL的新要求。這使你可以使用資料庫來解決數據主權問題。它也可以用於使數據跟隨用戶,因此你可以確保對他們的信息的低延遲訪問或將數據綁定到顯式的雲,從而可以最大程度地減少出口費用。
7.多-雲
分布式SQL資料庫的一個獨特特徵是它具有半自治單元,它們都參與較大的系統。每個單元都應該能夠自己部署,然後加入更大的系統CockroachDB集群。這是一個固有的特徵,助長了上面列出的前五個要求。但是,這也可以用於將資料庫擴展為真正的多雲。資料庫不應依賴單個網絡來完成分發。應該脫離這些限制,以便參與者可以位於任何地方,無論是任何公共雲,私有雲,甚至是單個本地實例。對於我們生活在分布式混合和多雲世界中的計算的未來,這一要求至關重要。
分布式SQL的基本要求
儘管上述七個需求是分布式SQL所獨有的(嗯,除SQL外,其他所有需求),但重要的是要注意,它仍然是一個資料庫,當然,要滿足作為資料庫的基線需求。以下是一些期望值:
1.管理:你應該能夠使用一組命令行和基於圖形的工具輕鬆地安裝和配置資料庫。這包括控制環境和控制數據生命周期以進行備份/還原的能力。以及創建表,定義和實現方案,設置索引/分區以及重新創建DDL的能力。
2.優化:資料庫應允許DBA深入了解查詢的性能以及優化查詢執行的能力。這包括諸如基於成本的優化器之類的高級功能,在分布式世界中,它成為一個棘手的新概念。
3.安全性:與任何企業軟體包一樣,安全性至關重要,資料庫應提供認證,授權和問責制等關鍵AAA功能。它不應該獨立存在,而應該與身份管理和治理的中央真理來源集成在一起,以便可以為其所包含的數據(在表,行和列級別)設置一致的策略。
4.集成:資料庫不能單獨運行,而應使用經過良好測試或已知的驅動程序與現有應用程式集成。它應該與現有的ORM很好地集成,並且還具有批量攝取或導出的能力。它還應提供關鍵功能,使其能夠與ETL工具配合使用並更改數據捕獲功能,以與流分析或雲存儲等更高級的服務集成。
這些「基礎」要求非常關鍵,它們預示著一個更加成熟的企業就緒資料庫。它們可能不是最令人興奮的功能,但對於任何項目中的採用和成功至關重要。
評估分布式SQL選項
CockroachDB是你的雲原生分布式SQL資料庫的絕佳選擇。它已幫助數百個組織將最平凡的工作負載和一些最關鍵的任務遷移到雲。它已成為更高級的協調環境中雲原生策略的基礎。我們為自己的建設感到自豪。
我們也是這種新興類別的擁護者,並相信分布式SQL是資料庫的正確演進,也是我們在雲中管理數據的方式的未來。為此,我們強烈認為,在涉及這些核心要求時,我們的解決方案和其他所有方法都應受到最高重視:
規模一致性彈性地理複製SQL地區性多-雲管理優化安全集成滿足所有這些要求的資料庫已經成熟,可以為雲中的關鍵任務(而不是關鍵任務)應用程式所信任。而且其中一些要求並不簡單。這些是高級主題,需要花費一些時間才能正確。當你與供應商討論這些項目時,我們鼓勵你深入研究一致性和本地性等概念。儘管每個人都閱讀相同的論文,但最終歸結為實施,更重要的是生產使用。與任何新類別一樣,這已經成為了最重要的問題,因為只有在生產中才能識別並解決複雜的極端情況和問題。因此,最後(也是第12個)要求是成熟度。
總結
以上就是今天的內容了,如果對你有幫助,希望你能夠關注、點讚、轉發一鍵三連支持一下。
需要完整學習線路和配套課堂筆記,請回復111。