到了 2004 年,Google 的各項產品都面臨同一個問題:儲存大量結構化資料,從網頁爬取、衛星影像到金融資料饋送皆然。為每項產品打造專屬的儲存系統所費不貲,而現成資料庫又達不到所需的規模,因此公司設計了一套共用系統。

Bigtable 呈現一個簡單的模型:以列、欄與時間戳為鍵的稀疏排序映射,值則以未經解讀的位元組儲存。應用程式自行決定版面配置、控制資料局部性,甚至選擇資料要從記憶體或磁碟提供,而平台則負責在數千台一般商用伺服器上進行分割、複製與容錯移轉。

到 2006 年論文發表時,已有六十多項 Google 產品使用 Bigtable,包括 Google Analytics、Google Finance、Personalized Search 與 Google Earth。叢集規模從少數幾台到數千台伺服器不等,每個叢集儲存最多達數百 TB。

單一共用儲存;每項產品各自調整其結構定義

單一平台將工程與營運成本分攤到眾多產品上

應用程式控制版面配置,因此模型保持簡單,用途卻各不相同

一般商用伺服器加上自動分割,可擴展至 PB 等級

共用系統意味著一個團隊就能為所有人強化它

在擴展產品之前,先建立一次共用的基礎層:一個能讓許多團隊調整的系統,勝過許多各自為政、沒有人能共同改進的系統。

Bigtable 一直是 Google 自家服務的骨幹,後來更成為 Google Cloud 的產品,即「NoSQL 先驅」:一個受管的鍵值與寬欄儲存,適用於對延遲敏感的個人化、點擊流與 IoT 工作負載,並提供與 HBase 及 Cassandra 相容的 API。其理念也影響了 HBase 等開源複製品。

追溯依據

參考來源

  1. Bigtable: A Distributed Storage System for Structured Data USENIX (OSDI '06) · usenix.org
  2. Bigtable: fast, flexible NoSQL Google Cloud · cloud.google.com