解法
到2004年,Google的每个产品都面临同样的问题:存储大量结构化数据,从网页抓取到卫星图像再到金融数据。为每个产品构建定制存储系统代价高昂,而现成的数据库无法达到所需的规模,因此公司设计了一个共享系统。
Bigtable提供了一个简单的模型:一个按行、列和时间戳排序的稀疏映射,值以未解释的字节存储。应用程序决定自己的布局,控制数据本地性,甚至选择数据是从内存还是磁盘服务,而平台在数千台商用服务器上处理分区、复制和故障转移。
到2006年论文发表时,超过60个Google产品(包括Google Analytics、Google Finance、个性化搜索和Google Earth)使用了Bigtable。集群规模从几十台到数千台服务器,存储容量每个最高可达几百TB。
取得了什么结果
一个共享存储,每个产品调整自己的模式
为什么有效
一个平台分摊了工程和运维成本到多个产品上
应用程序控制布局,因此模型保持简单但用途各异
商用服务器加上自动分区可以扩展到PB级
共享系统意味着一个团队可以为大家加固它
可以借鉴什么
在扩展产品之前,先构建共享的基础设施一次:一个许多团队调优的系统胜过许多无法共同改进的定制系统。
后续
Bigtable仍然是Google自身服务的骨干,后来成为Google Cloud的一项服务,是'NoSQL先驱':一种托管键值和大列存储,用于延迟敏感的个性化、点击流和物联网工作负载,提供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