久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

Spanner

來自站長百科
跳轉(zhuǎn)至: 導航、? 搜索

Spanner是谷歌公司研發(fā)的、可擴展的、多版本、全球分布式、同步復制數(shù)據(jù)庫。它是第一個把數(shù)據(jù)分布在全球范圍內(nèi)的系統(tǒng),并且支持外部一致性的分布式事務。本文描述了Spanner的架構(gòu)、特性、不同設計決策的背后機理和一個新的時間API,這個API可以暴露時鐘的不確定性。這個API及其實現(xiàn),對于支持外部一致性和許多強大特性而言,是非常重要的,這些強大特性包括:非阻塞的讀、不采用鎖機制的只讀事務、原子模式變更。

詞條概況[ ]

  • Spanner是一個可擴展的、全球分布式的數(shù)據(jù)庫,是在谷歌公司設計、開發(fā)和部署的。在最高抽象層面,Spanner就是一個數(shù)據(jù)庫,把數(shù)據(jù)分片存儲在許多Paxos狀態(tài)機上,這些機器位于遍布全球的數(shù)據(jù)中心內(nèi)。復制技術(shù)可以用來服務于全球可用性和地理局部性。客戶端會自動在副本之間進行失敗恢復。
  • 隨著數(shù)據(jù)的變化和服務器的變化,Spanner會自動把數(shù)據(jù)進行重新分片,從而有效應對負載變化和處理失敗。Spanner被設計成可以擴展到幾百萬個機器節(jié)點,跨越成百上千個數(shù)據(jù)中心,具備幾萬億數(shù)據(jù)庫行的規(guī)模。 
  • 應用可以借助于Spanner來實現(xiàn)高可用性,通過在一個洲的內(nèi)部和跨越不同的洲之間復制數(shù)據(jù),保證即使面對大范圍的自然災害時數(shù)據(jù)依然可用。我們最初的客戶是F1,一個谷歌廣告后臺的重新編程實現(xiàn)。F1使用了跨越美國的5個副本。
  • 絕大多數(shù)其他應用很可能會在屬于同一個地理范圍內(nèi)的3-5個數(shù)據(jù)中心內(nèi)放置數(shù)據(jù)副本,采用相對獨立的失敗模式。也就是說,許多應用都會首先選擇低延遲,而不是高可用性,只要系統(tǒng)能夠從1-2個數(shù)據(jù)中心失敗中恢復過來?!?/li>
  • Spanner的主要工作,就是管理跨越多個數(shù)據(jù)中心的數(shù)據(jù)副本,但是,在我們的分布式系統(tǒng)體系架構(gòu)之上設計和實現(xiàn)重要的數(shù)據(jù)庫特性方面,我們也花費了大量的時間。
  • 盡管有許多項目可以很好地使用BigTable,我們也不斷收到來自客戶的抱怨,客戶反映BigTable無法應用到一些特定類型的應用上面,比如具備復雜可變的模式,或者對于在大范圍內(nèi)分布的多個副本數(shù)據(jù)具有較高的一致性要求。
  • 其他研究人員也提出了類似的抱怨。谷歌的許多應用已經(jīng)選擇使用Megastore,主要是因為它的半關(guān)系數(shù)據(jù)模型和對同步復制的支持,盡管Megastore具備較差的寫操作吞吐量。由于上述多個方面的因素,Spanner已經(jīng)從一個類似BigTable的單一版本的鍵值存儲,演化成為一個具有時間屬性的多版本的數(shù)據(jù)庫。
  • 數(shù)據(jù)被存儲到模式化的、半關(guān)系的表中,數(shù)據(jù)被版本化,每個版本都會自動以提交時間作為時間戳,舊版本的數(shù)據(jù)會更容易被垃圾回收。應用可以讀取舊版本的數(shù)據(jù)。Spanner支持通用的事務,提供了基于SQL的查詢語言。

Spanner的特性[ ]

  • 第一,在數(shù)據(jù)的副本配置方面,應用可以在一個很細的粒度上進行動態(tài)控制。應用可以詳細規(guī)定,哪些數(shù)據(jù)中心包含哪些數(shù)據(jù),數(shù)據(jù)距離用戶有多遠(控制用戶讀取數(shù)據(jù)的延遲),不同數(shù)據(jù)副本之間距離有多遠(控制寫操作的延遲),以及需要維護多少個副本(控制可用性和讀操作性能)。數(shù)據(jù)也可以被動態(tài)和透明地在數(shù)據(jù)中心之間進行移動,從而平衡不同數(shù)據(jù)中心內(nèi)資源的使用。
  • 第二,Spanner有兩個重要的特性,很難在一個分布式數(shù)據(jù)庫上實現(xiàn),即Spanner提供了讀和寫操作的外部一致性,以及在一個時間戳下面的跨越數(shù)據(jù)庫的全球一致性的讀操作。這些特性使得Spanner可以支持一致的備份、一致的MapReduce執(zhí)行和原子模式變更,所有都是在全球范圍內(nèi)實現(xiàn),即使存在正在處理中的事務也可以。
  • 之所以可以支持這些特性,是因為Spanner可以為事務分配全球范圍內(nèi)有意義的提交時間戳,即使事務可能是分布式的。這些時間戳反映了事務序列化的順序。除此以外,這些序列化的順序滿足了外部一致性的要求:如果一個事務T1在另一個事務T2開始之前就已經(jīng)提交了,那么,T1的時間戳就要比T2的時間戳小。Spanner是第一個可以在全球范圍內(nèi)提供這種保證的系統(tǒng)。
  • 實現(xiàn)這種特性的關(guān)鍵技術(shù)就是一個新的TrueTime API及其實現(xiàn)。這個API可以直接暴露時鐘不確定性,Spanner時間戳的保證就是取決于這個API實現(xiàn)的界限。如果這個不確定性很大,Spanner就降低速度來等待這個大的不確定性結(jié)束。谷歌的簇管理器軟件提供了一個TrueTime API的實現(xiàn)。這種實現(xiàn)可以保持較小的不確定性(通常小于10ms),主要是借助于現(xiàn)代時鐘參考值(比如GPS和原子鐘)。

Spanner概念擴充[ ]

  • 總的來說,Spanner對來自兩個研究群體的概念進行了結(jié)合和擴充:一個是數(shù)據(jù)庫研究群體,包括熟悉易用的半關(guān)系接口,事務和基于SQL的查詢語言;另一個是系統(tǒng)研究群體,包括可擴展性,自動分區(qū),容錯,一致性復制,外部一致性和大范圍分布。
  • 自從Spanner概念成形,我們花費了5年以上的時間來完成當前版本的設計和實現(xiàn)?;ㄙM這么長的時間,一部分原因在于我們慢慢意識到,Spanner不應該僅僅解決全球復制的命名空間問題,而且也應該關(guān)注Bigtable中所丟失的數(shù)據(jù)庫特性。

相關(guān)條目[ ]

參考來源[ ]