database - title重複 - 文章seo




Google使用哪個數據庫? (5)

Bigtable的

分佈式結構化數據存儲系統

Bigtable是一個分佈式存儲系統(由Google構建),用於管理結構化數據,旨在將數據擴展成非常龐大的數千個商品服務器的數據。

Google的許多項目都將數據存儲在Bigtable中,包括網絡索引,Google地球和Google財經。 這些應用程序在數據大小(從URL到網頁到衛星圖像)和延遲要求(從後端批量處理到實時數據服務)方面對Bigtable提出了非常不同的要求。

儘管有這些不同的需求,但Bigtable已成功為所有這些Google產品提供了靈活的高性能解決方案。

一些功能

  • 快速和極大規模的DBMS
  • 一個稀疏的分佈式多維排序圖,共享面向行和列的數據庫的特徵。
  • 旨在擴展到PB級範圍
  • 它可以在數百或數千台機器上工作
  • 向系統添加更多機器並自動開始利用這些資源而無需任何重新配置​​很容易
  • 每個表都有多個維度(其中一個是時間的字段,允許版本控制)
  • 表格針對GFS(谷歌文件系統)進行了優化,被拆分為多個平板電腦 - 表格的一部分沿選定的行分割,以便平板電腦的大小將達到200兆字節。

建築

BigTable不是關係數據庫。 它不支持連接,也不支持豐富的類似SQL的查詢。 每張桌子都是一張多維稀疏地圖。 表格由行和列組成,每個單元格都有時間戳記。 可以有不同時間戳的單元格的多個版本。 時間戳允許執行諸如“選擇'n'版本的此網頁”或“刪除比特定日期/時間早的單元格”的操作。

為了管理巨大的表格,Bigtable在行邊界處拆分錶格並將它們保存為平板電腦。 平板電腦大約200 MB,每台機器可節省大約100個平板電腦。 該設置允許來自單個表格的平板電腦在許多服務器中傳播。 它也允許細粒度的負載平衡。 如果一個表正在接收很多查詢,它可以刪除其他平板電腦或將忙表移動到另一台不太忙的機器。 另外,如果機器停機,平板電腦可能會分佈在許多其他服務器上,以便對任何給定機器的性能影響最小。

表格存儲為不可變的SSTables和日誌尾部(每台機器一個日誌)。 當一台機器用完系統內存時,它會使用Google專有的壓縮技術(BMDiff和Zippy)來壓縮某些平板電腦。 輕微的壓縮僅涉及少數片劑,而主要的壓縮涉及整個表系統並恢復硬盤空間。

Bigtable平板電腦的位置存儲在單元格中。 任何特定平板電腦的查找都由三層系統處理。 客戶得到一個META0表,其中只有一個表。 META0表跟踪包含正在查找的平板電腦位置的許多META1平板電腦。 META0和META1都大量使用預取和緩存來減少系統瓶頸。

履行

BigTable構建於Google文件系統 (GFS)上,該文件用作日誌和數據文件的後備存儲。 GFS為SSTables提供了可靠的存儲空間,SSTables是用於保存表格數據的Google專有文件格式。

BigTable大量使用的另一項服務是Chubby ,這是一種高可用性,可靠的分佈式鎖定服務。 Chubby允許客戶端進行鎖定,可能會將其與某些元數據關聯起來,通過將活動消息發送回Chubby可將其更新。 這些鎖存儲在文件系統 - 分層命名結構中。

Bigtable系統中有三種主要的服務器類型

  1. 主服務器:將平板電腦分配給平板電腦服務器,跟踪平板電腦所在的位置並根據需要重新分配任務。
  2. 平板電腦服務器:處理平板電腦和拆分平板電腦超出尺寸限制(通常為100MB至200MB)的讀/寫請求。 如果平板電腦服務器發生故障,則100台平板電腦服務器每次都會接收1台新平板電腦,系統會恢復。
  3. 鎖定服務器:Chubby分佈式鎖定服務的實例。 BigTable中的許多操作都需要獲取鎖,包括打開平板電腦進行寫入,確保一次只有一個主動主設備,並進行訪問控制檢查。

Google研究論文中的例子:

存儲網頁的示例表的一部分。 行名稱是反向的URL 。 內容列家族包含頁面內容 ,並且錨列列族包含引用該頁面的任何錨點文本 。 CNN的主頁被Sports Illustrated和MY-look主頁引用,所以該行包含名為anchor:cnnsi.comanchor:my.look.ca 。 每個錨點單元有一個版本 ; 內容列有三個版本 ,時間戳t3t5t6

API

對BigTable的典型操作是創建和刪除表和列族,寫入數據並從行中刪除列。 BigTable在API中為應用程序開發人員提供這些功能。 事務在行級支持,但不支持多個行鍵。

這裡是研究論文PDF鏈接

在這裡,您可以在華盛頓大學的演講中找到一個顯示Google Jeff Dean視頻 ,討論Google後端使用的Bigtable內容存儲系統。

是Oracle還是MySQL或者他們自己構建的東西?


Google主要使用Bigtable。

Bigtable是一個分佈式存儲系統,用於管理旨在縮放至非常大的結構化數據。

有關更多信息,請從here下載文檔。

谷歌還為他們的一些應用程序使用Oracle和MySQL數據庫。

任何更多的信息,你可以添加非常感謝。


正如其他人所說的,谷歌使用稱為BigTable的本土解決方案,他們已經發布了幾篇論文將其描述到現實世界中。

Apache人員實現了這些論文中提出的思想,稱為HBase 。 HBase是更大的Hadoop項目的一部分,根據他們的網站“是一個軟件平台,可以輕鬆編寫和運行處理大量數據的應用程序。” 一些基準測試相當令人印象深刻。 他們的網站在http://hadoop.apache.org


而且它也許可以方便地知道BigTable不是一個關係數據庫(如MySQL),而是一個巨大的(分佈式) 哈希表 ,它具有非常不同的特徵。 您可以在Google AppEngine平台上使用BigTable(有限版本)。

在上面提到的Hadoop旁邊,還有許多其他實現嘗試解決與BigTable(可伸縮性,可用性)相同的問題。 我昨天看到一篇不錯的博客文章,其中大部分都列here


雖然谷歌為他們的所有主要應用程序使用BigTable,但他們也將MySQL用於其他(也許很小)的應用程序。





bigtable