分散式 SQL:資料庫的未來發展方向

扣薇6881262發表於2020-12-28

資料庫體系結構發展的下一步是分散式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個)要求是成熟度。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69991885/viewspace-2746048/,如需轉載,請註明出處,否則將追究法律責任。

相關文章