日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文向您介紹分布式SQL的基本概念,其對應的數據庫架構,以及對于業務應用的各種優勢。

作者:陳峻編譯 來源:51CTO

【51CTO.com快譯】在過去的近40年中,SQL已經成為了關系型數據庫(又稱為RDBMS)的通用語言。這也就是為什么關系型數據庫經常被簡單稱為SQL數據庫的原因。從架構而言,以Oracle、PostgreSQL和MySQL為首的傳統SQL數據庫,是單體式(monolithic)的。也就是說,它們無法在多個實例之間自動地分配數據和查詢。而NewSQL數據庫的出現使得SQL具有了可擴展性和高性能。當然,此類數據庫仍然具有與生俱來的局限性。

2015年,Docker容器和Kubernetes編排的出現,讓我們能夠以靈活、可組合的基礎架構方式,來創建各種基于微服務的應用。其中,內置的可擴容性、靈活性、以及地理分布特性,是此類云原生架構的核心特點。這也就是人們常說的“分布式SQL”--這一新型的數據庫。在應用方面,此類分布式SQL數據庫的一個顯著特征是:無論其中有多少個節點,整個數據庫集群對于應用程序而言,都被其視為一個邏輯的SQL數據庫。

數據庫的架構

分布式SQL數據庫通常具有如下三層體系結構。

基礎普及之什么是分布式SQL

 

1. SQL API

顧名思義,分布式SQL數據庫仍然必須提供SQL API服務,以便應用程序可以對關系型數據進行建模,并執行涉及到各種關系信息的查詢操作。它保留了SQL數據庫典型的數據建模結構,包括:索引、外鍵約束、JOIN查詢、以及多行ACID事務(譯者注:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability))。

2.分布式查詢執行

由于分布式SQL的查詢能夠被自動地分配到目標群集的多個節點上,因此,此舉有效地避免了單個節點成為查詢處理中的瓶頸問題。具體的查詢流程為:目標群集中的任一節點都可以接受傳入的某個查詢。通過在網絡中的各節點之間傳輸數據、協同工作,該節點能夠以最小化處理等待時間的方式,僅分擔查詢請求中的一部分任務。而由其他節點協助完成剩余的部分。最后,該接受請求的原始節點,將匯總所有的查詢結果,并發回給客戶端應用程序。

3.分布式數據存儲

那些包含有索引信息的數據會被自動分布(也稱為分片,sharded)到群集的多個節點處。此舉確保了單個節點都不會成為高性能和高可用性的瓶頸。此外,數據庫集群能夠支持高一致性的復制、以及多行(也稱為分布式)ACID事務,進而保留了單個邏輯數據庫的基本概念。

高度一致性的復制

在數據庫的管理概念中,所謂支持強大的SQL API層,其本質上就是要求處于底層的存儲層,能夠在跨數據庫的群集節點上建立強一致性的復制。這就意味著:對于數據庫的寫入操作,將會在多個節點上被同步提交,以保證出現故障時的數據可用性。而讀取操作則是基于最后一次被提交的寫入數據,或是出錯之前的數據。該屬性通常被稱為線性一致性(Linearizability,http://www.bailis.org/blog/linearizability-versus-serializability/)。根據著名的CAP原則(https://towardsdatascience.com/cap-theorem-and-distributed-database-management-systems-5c2be977950e,譯者注:一致性(Consistency)、可用性(Availability)、分區容錯性(Partition tolerance)),分布式SQL數據庫具有一致性和分區容錯性。

分布式的ACID事務

為了能夠支持分布式的ACID事務,分布式數據庫的存儲層需要在多個節點的多個數據行中進行事務性的協調任務。此處,它們正好用到了兩階段提交(2 Phase Commit,2PC)協議。參照ACID中I(隔離性)的要求,為了能夠對并發式的數據訪問實現嚴格的隔離,分布式SQL數據庫將可序列化性(Serializability,http://www.bailis.org/blog/linearizability-versus-serializability/)作為最嚴格的隔離級別,并且通過快照(Snapshot)之類的其他方式來支持較弱的隔離級別。

業務應用的優勢

分布式SQL的四個關鍵優勢,如下圖所示。

1.讓SQL和事務類的開發更具敏捷性

如今,由于SQL仍然是一種輕松實現建模關系和多行操作的數據建模語言,因此為了滿足應用開發人員持續對于SQL數據庫的操作習慣與需求,即便是Amazon DynamoDB、MongoDB和FaunaDB之類的NoSQL數據庫,也開始具備了事務性的操作能力。例如:SQL通過顯式(使用BEGIN和END TRANSACTION的語法)和隱式(使用外鍵和JOIN查詢之類的二級索引),來允許多行事務,這比傳統的鍵-值(key-value)型NoSQL要方便得多。

此外,開發人員往往喜歡通過一次性輕松地使用SQL,來對數據(和存儲)進行建模。而在業務需求發生變化時,他們只需修改JOIN,便可反映到查詢之中。

2.具有本地故障轉移與修復的超強彈性

在分布式SQL數據庫中,我們使用基于分片(per-shard)的分布式共識復制(consensus replication)等技術,來確保每個分片(而不是每個實例)在出現故障時,仍可保持高可用性。

如此,基礎架構一旦出現故障,它始終只會影響到目標數據的某個子集(也就是那些被leader分割開的碎片),而不會影響到整個集群。并且,由于剩余的分片副本能夠在幾秒鐘之內自動地選出新的leader,因此,集群會在出現故障時表現出一定的自我修復能力。

此外,這些發生在后臺群集配置上的更改對于應用程序來說是完全透明的,它們可以照常運行,而不會出現任何中斷或是性能的驟降。

3.具有按需進行水平寫入的可擴展性

《如何在分布式SQL數據庫中進行數據分片》一文(https://dzone.com/articles/how-data-sharding-works-in-a-distributed-sql-datab),說明了開發人員通常是如何在分布式SQL數據庫中實現自動化數據分片的。無論有新節點的加入,還是現有節點的刪除,分片都將會在所有可用節點之間保持自動的平衡狀態。

目前,那些需要處理事務的應用程序都具有可擴展能力的微服務。它們在不需要新增基礎架構的基礎上,完全可以直接依賴于內存中的緩存(無需從數據庫中讀取請求,而保留對于寫入請求的處理)或NoSQL數據庫(雖然能夠擴展寫入操作,但是無法保證ACID)。

4.針對地域分布式數據的低延遲性

正如《構建具有低延遲的云原生、以及地域分布式SQL應用的9種技術》一文(https://dzone.com/articles/9-techniques-to-build-cloud-native-geo-distributed)所強調的那樣:分布式SQL數據庫可以提供多種技術,來構建地域分布式的應用程序。這些技術不僅有助于對于區域性故障實現自動化容災,而且還能夠在一定程度上通過讓數據更接近來自本區域的最終用戶,以實現更低的數據延遲性。

原文標題:What Is Distributed SQL? ,作者:Sid Choudhury

分享到:
標簽:分布式 SQL
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定