解決方案
到了 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 等開源複製品。
追溯依據
參考來源
- Bigtable: A Distributed Storage System for Structured Data USENIX (OSDI '06) · usenix.org
- Bigtable: fast, flexible NoSQL Google Cloud · cloud.google.com