Google设计BigTable的动机主要有如下三个方面:
(1)需要存储的数据种类繁多。Google目前向公众开放的服务很多,需要处理的数据类型也非常多。包括URL、网页内容和用户的个性化设置在内的数据都是Google需要经常处理的。
(2)海量的服务请求。Google运行着目前世界上最繁忙的系统,它每时每刻处理的客户服务请求数量是普通的系统根本无法承受的。
(3)商用数据库无法满足Google 的需求。一方面现有商用数据库的设计着眼点在于其通用性,面对Google的苛刻服务要求根本无法满足,而且在数量庞大的服务器上根本无法成功部署普通的商用数据库。另一方面对于底层系统的完全掌控会给后期的系统维护和升级带来极大的便利。
在仔细考察了Google的日常需求后,BigTable开发团队确定了BigTable设计所需达到的如下几个基本目标:
(1)广泛的适用性。BigTable是为了满足一系列Google 产品而并非特定产品的存储要求。
(2)很强的可扩展性。根据需要随时可以加入或撤销服务器。
(3)高可用性。对于客户来说,有时候即使短暂的服务中断也是不能忍受的。BigTable设计的重要目标之一就是确保几乎所有的情况下系统都可用。
(4)简单性。底层系统的简单性既可以减少系统出错的概率,也为上层应用的开发带来便利。
在目标确定之后,Google开发者就在现有的数据库技术中进行了大规模的筛选,希望各种技术之间能够扬长避短,巧妙地结合起来。最终实现的系统也确实达到了原定的目标。