简介
BigTable是谷歌自主研发的分布式数据库技术,主要在其内部使用。其优点在于可以可靠的处理PB以上级别的数据,并且能够支持前台服务器集群,实现实用性广泛、可扩展、高性能和高可用性4个目标。在谷歌BigTable已经成为很多产品的基础,包括Google Analaytics、Google Finance、Google Earch等等
架构
BigTable是一个架构非常复杂的系统,由于他是分布式的,所以有别于以往关系型数据库,需要多个节点,主要包括集群和一些依赖的服务。
集群:一个Master节点和多个Tablet节点组成,Master节点用于管理元数据,并处理来自客户端关于元数据的请求。Tablet用于存储数据,并且处理来自客户端数据的请求。
依赖服务:调动、存储和分布式锁及方面。
数据模型和调用接口
对于数据库而言,无论是关系型还是非关系型,数据模型都是核心,同样调用接口也是不可或缺的。
数据模型
表格:和普通数据表一样,也是由行和列组成,但是只支持唯一主键,没有外键用于关系建立
列组:顾名思义就是给列进行分组,提高存取效率而且避免过多的列导致表特别大
Tablet:从行的角度对表数据进行分组分隔,将Tablet分布到不同的服务器上,实现分布式存取数据
时间戳:主要用于数据同步和备份,提供根据每个单元格的时间戳来做垃圾回收
调用接口:BigTable的接口主要以API的形式对外开放,感兴趣的哥们可以做进一步研究,本文不在赘述
存储模型
Tablet运行机制:一个写请求传给Tablet,接着会提交给提交日志,然后请求存储到memtable中,异步处理memtable中的请求,将数据更新到SSTable中。
SSTable:Sorted String Table,按照键排序后存储键值对。
Compaction机制:在数据存储方面非常常用,主要用于对数据的压缩,分为Minor和Major两种数据压实操作。
分布式模型
BigTable有5中独立的构件实现分布式操作:
客户端:用于访问BigTable系统
Chubby服务:高可用和分布式的锁服务,用于协调整个BigTable的运行
Master节点:将Tablet分配给Tablet节点服务器,并且处理与数据库相关的修改操作
Tablet节点:管理Tablet节点集合,处理Tablet的读写操作,并且能够对大的Tablet进行分割
GFS系统:分布式文件系统,用于存储Tablet和SSTable文件。
文件系统
BigTable使用GFS实现数据文件的备份、负载、容错和一致性管理。
GFS:基于传统分布式文件系统实现了性能、可伸缩性、可靠性以及可用性,同时根据其自身的负载和技术情况的观察,也有其创新的设计。高度的容错机制,组件失效被认为是常态事件,在IO和块尺寸上也根据自身数据量大的情况有一定的调整。
GFS架构:存储方面文件分割成固定大小的Chunk,并且分配唯一的Chunk ID。单一Master节点策略大大简化了设计的复杂度,从数据安全的角度,每个数据块都有三个数据备份。
释放价值,分享知识和经验,解读IT前沿和技术。帮助他人,提升自己。更多交流请关注微信公众号itboxes(IT智囊)。
注:图片来源于网络,如有异议,请联系我们,我们将即时处理。