分佈式SQL數據庫新的演變方向

數據庫體系結構發展的下一步是分佈式SQL。在這裏看看一些特徵。前端

分佈式SQL數據庫新的演變方向

隨着各個組織前後將其業務轉向雲端環境時,他們很快地意識到:在一些最關鍵的應用背後,那些舊式的關係型數據庫不但限制了遷移的速度,並且根本沒法有效地實現靈活的業務擴展。許多企業既但願保持諸如Oracle、SQL Server、Postgres和MySQL之類關係型數據庫的可靠性,又可以享受到雲服務所帶來的規模效應、以及全局穩定性等「紅利」。數據庫

爲了知足此類需求,人們開始轉向使用NoSQL數據庫。可是因爲NoSQL並不是徹底爲提供真正的一致性而設計的,所以它沒法做爲事務型數據庫而使用。固然,最近有一些NoSQL解決方案聲稱可以提供「ACID事務」。不過,它們沒法提供諸如:財務分賬、庫存控制、以及身份管理等關鍵任務所需的隔離級別。安全

分佈式SQL--一種新的數據庫

2012年,Google發表了一篇有關Spanner的論文。文中介紹了一種全新的基於分佈式系統的,且能夠全球性擴展的分佈數據庫。總的說來,Google Cloud Spanner是一種可擴展的、多版本的、同步複製(synchronously-replicated)型數據庫。它是第一個可以在全球範圍內分發數據,並支持外部一致性(externally-consistent)的分佈式事務的系統。網絡

下面咱們此基礎上,一塊兒來具體討論此類分佈式SQL的基本相關概念,特別是如何實現可擴展性和一致性的。一般,爲了可以在分佈式環境中真正具備可擴展性,分佈式SQL數據庫具備以下七種核心特徵:架構

1.可擴展

正如咱們無需繁重的準備就可以實現擴展式計算那樣,分佈式SQL數據庫可以在不增長操做複雜性的狀況下,適應雲端環境的無縫擴展。也就是說,它具備在多個分佈式參與者之間均勻分佈數據的能力。分佈式

2.一致性

分佈式SQL數據庫必須在分佈式環境中提供高度的隔離性。雲端環境每每是由各類分佈式系統和微服務所組成,而不一樣的調用和操做可能會指向同一塊數據,所以咱們很難保證事務一致性。分佈式SQL數據庫除了可以調節資源的爭用,還可以提供與單實例數據庫相同的事務隔離級別。ide

3.彈性

分佈式SQL數據庫可以在無需任何外部工具的條件下,提供最高級別的彈性。憑藉着雲服務爲咱們的業務所提供持續在線環境,分佈式數據庫能夠將故障恢復的用時減到最少,而且無需任何外部配置,便可自動化地複製數據。微服務

4.異地複製

因爲雲服務可以以一種可接受的服務水平,將用戶的業務觸達全球的各個角落,所以分佈式SQL數據庫也可以據此突破地域的限制。在複雜、普遍、分散的地理環境中,它可以進行分佈處理和數據存儲,以知足各地用戶的業務需求。工具

5.支持SQL

衆所周知,SQL是數據庫所使用的結構化語言,也是全部應用邏輯的默認語言。憑藉着其通用性,咱們沒必要從新培訓開發人員,便可熟練地對接和調用數據庫資源。除了上面提到的Spanner,諸如Amazon Aurora、Yugabyte、FaunaDB和CockroachDB等都可以支持SQL。性能

6.數據本地化

在分佈式系統中,因爲數據被分散到了各個地區的數據中心,所以應用架構師每每須要瞭解每一個站點的位置,在程序邏輯上找到最近的位置,以便將須要調用的存儲數據綁定爲應用的一部分。那麼,分佈式SQL能夠在其數據表中,基於某些字段對數據進行地理分區,進而讓數據更接近用戶側。這就是所謂的數據庫的數據主權(data sovereignty)問題。據此,開發人員能夠確保用戶對其信息的低延遲訪問,從而最大程度地減小數據在雲端傳輸的費用和流量的開銷。

7.多雲(Multi-cloud)模式

分佈式SQL數據庫的一個獨特特徵是:半自治單元(semi-autonomous units),它們能夠參與到較大的系統中。也就是說,每一個單元都可以自行部署,而後加入到CockroachDB集羣之類更大的系統中。經過該特徵,分佈式SQL數據庫能夠更好地擴展到真正的多雲環境中,而不只僅依賴於單個網絡,來完成數據的分發。在此模式下,參與者(participant)的雲服務類別將再也不受到限制,它們能夠位於任何地方,任何一種公共雲、私有云、甚至是單個的本地(on-premise)實例。顯然,這對於咱們在分佈式混合與多雲環境中的各種應用來講,都是相當重要。

分佈式SQL的基本要求

上述七項特徵可謂分佈式SQL在雲端環境中所獨有的。可是,說到底它仍然是一種數據庫,所以也應當具有數據庫的以下基本功能:

  • 可管理性:用戶可使用一組命令行、或基於圖形化的工具,來輕鬆地安裝和配置目標數據庫。用戶經過針對運行環境的控制、數據生命週期的管理、以及常規的備份與還原,以實現數據表的建立,schema的定義與實現,索引與分區的設置,以及DDL的重建等。
  • 可優化:DBA能夠深刻了解數據庫在查詢響應方面的性能,運用基於成本的優化器(cost-based optimizer)等高級功能,進而實現查詢效率的優化。
  • 具備安全性:與企業的其餘經常使用軟件相似,安全性是一個不容忽視的環節。數據庫應提供認證、受權和可問責性,這樣的AAA機制。並且,此類功能不該該只獨立數據庫內部,而應當與具備身份管理和治理功能的集中式管控系統集成一塊兒,以便對流轉在整個系統中各個級別的數據(包括表、行和列等級別)設置一致性的策略。
  • 可集成:顯然,數據庫須要可以經過通過測試的、或已知的驅動程序,與前端應用相集成,以實現批量獲取或導出數據等服務。與此同時,數據庫還應經過與ETL(Extract-Transform-Load)工具的配合使用,將捕獲到的數據,與數據流分析、或雲端存儲等更高級的服務相集成。

固然,上述所謂「基本」功能要求,其實並不簡單,它們旨在提供更加成熟的、針對企業級應用的數據庫。

總結

做爲一種新興的類別和演變的方向,分佈式SQL數據庫還須要在數據一致性和本地化等方面,進一步配合雲端環境來不斷改進。畢竟,在嚴苛的生產環境中,此類數據庫會碰到更多有關性能和效率等方面的實際問題。

前文提到的CockroachDB,是一種雲原生的分佈式SQL數據庫。它能夠幫助各類企業級應用,將最基本的工做負載和一些關鍵性的任務遷移到雲端,並實現了對於各類高級雲端原生環境的策略編排。您能夠做爲了解分佈式SQL的一個切入口進行試用。

原文轉自:http://suo.im/61qgLg 做者:陳峻

相關文章
相關標籤/搜索