Google使用什麼數據庫?

是Oracle仍是MySQL或者他們本身構建的東西? php


#1樓

Google主要使用Bigtable。 html

Bigtable是一個分佈式存儲系統,用於管理結構化數據,旨在擴展到很是大的規模。 mysql

有關更多信息,請從此處下載文檔。 算法

Google還爲其部分應用程序使用Oracle和MySQL數據庫。 sql

您能夠添加的任何其餘信息很是感謝。 數據庫


#2樓

Spanner是Google全球分佈式關係數據庫管理系統(RDBMS),是BigTable的繼承者。 Google聲稱它不是一個純粹的關係系統,由於每一個表都必須有一個主鍵。 後端

是論文的連接。 緩存

Spanner是Google的可擴展,多版本,全局分佈和同步複製的數據庫。 它是第一個在全球範圍內分發數據並支持外部一致的分佈式事務的系統。 本文描述了Spanner的結構,功能集,各類設計決策的基本原理以及暴露時鐘不肯定性的新穎時間API。 此API及其實現對於支持外部一致性和各類強大功能相當重要:過去的非阻塞讀取,無鎖只讀事務以及整個Spanner中的原子模式更改。 服務器

Google發明的另外一個數據庫是Megastore 。 這是摘要: 網絡

Megastore是一種存儲系統,旨在知足當今互動在線服務的需求。 Megastore以一種新穎的方式將NoSQL數據存儲的可擴展性與傳統RDBMS的便利性相結合,並提供強大的一致性保證和高可用性。 咱們在細粒度的數據分區中提供徹底可序列化的ACID語義。 這種分區容許咱們以合理的延遲同步複製廣域網中的每次寫入,並支持數據中心之間的無縫故障轉移。 本文描述了Megastore的語義和複製算法。 它還描述了咱們支持使用Megastore構建的各類Google製做服務的經驗。


#3樓

這是他們本身建造的東西 - 它被稱爲Bigtable。

http://en.wikipedia.org/wiki/BigTable

谷歌在數據庫上有一篇論文:

http://research.google.com/archive/bigtable.html


#4樓

Bigtable的

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

Bigtable是一個分佈式存儲系統(由Google構建),用於管理結構化數據,旨在擴展到很是大的規模:數千個商用服務器上的數PB數據。

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

儘管有這些不一樣的需求,但Bigtable已成功爲全部這些Google產品提供靈活,高性能的解決方案。

一些功能

  • 快速且極大規模的DBMS
  • 稀疏的,分佈式的多維有序映射,共享面向行和麪向列的數據庫的特徵。
  • 旨在擴展到PB級
  • 它適用於數百或數千臺機器
  • 能夠輕鬆地向系統添加更多計算機,並自動開始利用這些資源而無需從新配置
  • 每一個表都有多個維度(其中一個是時間字段,容許版本控制)
  • 表格針對GFS(谷歌文件系統)進行了優化,分爲多個平板電腦 - 表格的各個部分沿着一行選擇,使得平板電腦的大小約爲200兆字節。

建築

BigTable不是關係數據庫。 它不支持鏈接,也不支持相似SQL的豐富查詢。 每一個表都是一個多維稀疏映射。 表由行和列組成,每一個單元格都有一個時間戳。 能夠存在具備不一樣時間戳的單元的多個版本。 時間戳容許執行諸如「選擇此網頁的n個版本」或「刪除超過特定日期/時間的單元格」之類的操做。

爲了管理巨大的表,Bigtable在行邊界處拆分表並將它們保存爲平板電腦。 平板電腦大約200 MB,每臺機器能夠節省大約100個平板電腦。 此設置容許來自單個表的平板電腦在許多服務器之間傳播。 它還容許細粒度的負載平衡。 若是一個表正在接收許多查詢,它可能會丟棄其餘平板電腦或將忙表移動到另外一臺不那麼繁忙的計算機上。 此外,若是計算機出現故障,平板電腦可能會分佈在許多其餘服務器上,所以對任何給定計算機的性能影響都很小。

表存儲爲不可變的SSTable和日誌尾(每臺機器一個日誌)。 當一臺機器耗盡系統內存時,它會使用谷歌專有的壓縮技術(BMDiff和Zippy)壓縮一些平板電腦。 次要壓縮僅涉及少許平板電腦,而主要壓縮涉及整個表系統並恢復硬盤空間。

Bigtable平板電腦的位置存儲在單元格中。 任何特定平板電腦的查找都由三層系統處理。 客戶端指向META0表,其中只有一個表。 META0表記錄了許多META1平板電腦,其中包含正在查找的平板電腦的位置。 META0和META1都大量使用預取和緩存來最小化系統中的瓶頸。

履行

BigTable構建於Google文件系統 (GFS)之上,後者用做日誌和數據文件的後備存儲。 GFS爲SSTable提供可靠的存儲,SSTable是一種用於保存表數據的Google專有文件格式。

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

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

  1. 主服務器:將平板電腦分配給平板電腦服務器,跟蹤平板電腦的位置,並根據須要從新分配任務。
  2. 平板電腦服務器:當超過大小限制(一般爲100MB - 200MB)時,處理平板電腦和拆分平板電腦的讀/寫請求。 若是平板電腦服務器出現故障,則每臺100臺平板電腦服務器將得到1個新平板電腦並恢復系統。
  3. 鎖服務器:Chubby分佈式鎖服務的實例。 BigTable中的大量操做須要獲取鎖定,包括打開用於寫入的平板電腦,確保一次只有一個活動主服務器,以及訪問控制檢查。

Google研究論文的示例:

替代文字

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

API

BigTable的典型操做是建立和刪除表和列系列,寫入數據和從行中刪除列。 BigTable在API中爲應用程序開發人員提供此功能。 行級別支持事務,但不支持多個行鍵。


如下是研究論文PDF連接

在這裏,您能夠在華盛頓大學的一個講座中找到一個顯示谷歌傑夫迪恩視頻 ,討論谷歌後端使用的Bigtable內容存儲系統。


#5樓

雖然谷歌將BigTable用於他們全部的主要應用程序,但他們也將MySQL用於其餘(多是次要的)應用程序。

相關文章
相關標籤/搜索