BigTable是谷歌设计的数据存储系统,它是全球化的、分布式的、持久化存储的、多维度排序的(数个层级)、可以被部署在几千台计算机上用来处理海量数据的一种非关系型的数据库。
Bigtable特点:适用性广泛(全谷歌平台)、可扩展(大量数据)、高效处理性能和高可靠性。Bigtable广泛使用于谷歌的产品,适应谷歌不同平台不同的要求,可以适应大量数据快速处理,可以把数据快速输送给大量用户,可以在一台或者几台大型服务器使用,也可以在几千台小计算机配置。Bigtable在很多方面和数据库很类似,很多数据库功能它都可以实现,但是它以不同于数据库的方式在连接。
Bigtable为客户提供了简单的数据模型,利用这个模型,用户可以自己随意控制数据的尺寸读取,它是动态设置而不是静态。用户可以自己决定文件储存在什么地方,以什么样的方式储存,数据会标明储存位置,名字则可以由用户任意决定。Bigtable将存储的数据都视为字符串来进行处理,但是Bigtable本身不去解读或者修改这些东西,而交由客户程序处理。客户程序会把储存的数据用一定方式与这些字符串相关联以供使用,而这些都可以由用户自己去控制如何操作设置。最后, BigTable也可以设置数据在哪里储存,比如储存在你的硬盘还是内存之中。
特点:
1、全球大规模海量数据;
2、各地的几千台计算机同时进行都可以,效率极高;
3、没有太大限制,扩展空间高;
4、微机都可以使用;
5、适合存取,不适合编辑;
6、不适用于传统关系型数据库;
Bigtable的功能实现依靠三个主要部分:一个可以连接到每个用户的库文件,一个主要服务器控制其他,许多目录服务器来分配文件的储存。主服务器负责把目录分配到目录服务器上,检测目录服务器的改变,平衡目录服务器负载,对谷歌文件系统进行垃圾收集,还有控制不同列族等内容的改变。
每一个目录服务器都管理一组目录(一个目录服务器负责很多目录的管理)。目录服务器处理对该服务器上目录的读写请求,也就是不同目录对应的不同文件,也会将过大超过储存极限的目录分裂为多个目录来储存数据。一个Bigtable集群存储了大量的表。每一个表都由一组目录构成,每一个目录包含一定的储存数据。初始情况下,每个表仅包含一个目录。随着表内的数据的增加,它会自动分裂成多个目录来储存,默认每个表可以达到1GB。
目录以树状形式储存,读取也是有主干具体到某个文件所在的叶,一层层读取下去,每一层目录都有个记录位置关键词下面,主服务器会缓存这个关键词以供查询和备份。每个目录只能分配给一个目录服务器,主服务器会自动检测目录服务器并实现合理分配利用。