Google Bigtable 分布式数据存储系统

1 概述

GFS的出现虽然解决了海量数据的存储问题,但是还是存在一个问题就是如果需要存储的数据是结构化的,对结构化数据的使用往往是希望和关系型数据库一样,进行复杂的数据操作的。但是GFS并没有支持基于特定属性(如行键、列名、时间戳)的高效查询、更新、聚合等操作。自然就需要发数据版本的关系型数据库,这就是分布式数据库

Bigtable作为一个管理大规模结构化数据而设计的分布式存储系统,可以扩展到PB级数据和上千台服务器。很多Google的项目使用Bigtable存储数据,这些应用对Bigtable提出了不同的挑战,比如数据规模的要求、延迟的要求。Bigtable能满足这些多变的要求,为这些产品成功地提供了灵活、高性能的存储解决方案。

Bigtable看起来像一个数据库,采用了很多数据库的实现策略。但是Bigtable并不支持完整的关系数据库模型,而是为客户端提供了一个简单的数据模型,客户端可以动态的控制数据的布局和格式,并且采用底层数据存储的局部性特征。Bigtable将数据统统看成无意义的字符串,客户端需要将结构化和非结构化数据串行化再存入Bigtable。

  • Bigtable是基于GFS而来的,底层使用GFS进行数据存储,所以满足了海量数据的存取要求。
  • 但是对数据进行灵活操作,需要在中间层里使用巧妙的数据组织逻辑进行数据管理。

总的来说,Bigtable依托于Google的GFS、Chubby及SSTable而生,用于解决Google内部不同产品在对数据存储的容量和响应时延需求的差异化,力求在确保能够容纳大量数据的同时减少数据的查询耗时。需要能够处理海量数据、提供灵活的、高性能的数据存储方案、使用类似于数据库的实现策略却不支持完整的数据库模型。

  • SSTable的全称是Sorted Strings Table,是一种不可修改的有序的键值映射,提供了查询、遍历等工嗯呢。每个SSTable由一系列的块组成,Bigtable将块设置为64KB。在SSTable的尾部存储块索引。
  • Chubby是一种高可用的分布式锁服务,Chubby有5个活跃副本,同时只有一个主副本提供服务,副本之间用Paxos算法维持一致性,Chubby提供了一个命名空间(包括一些目录和文件),每个目录和文件就是一个锁,Chubby的客户端必须和Chubby保持会话,客户端的会话若过期则会丢失所有的锁。

2 数据模型

Bigtable把数据存储在若干个table中,其数据特征是一个稀疏的、分布式的、持久化存储多维度排序映射。

  • 键有三维:
    • 行键字典序列组织,提供行级事务的支持,即程序在对某一行进行并发操作更新都是原子的,Tablet每一行都可以参与动态分区,一个分区称为一个Tablet,Tablet是Bigtable中数据分布和负载均衡的最小单位
    • 列键:Bigtable列列关键字组成的集合称为列族,它是对表进行访问控制的基本单位,访问权限包括增加新的基本数据、读取基本数据并创建继承的列族和浏览数据等,除了访问控制之外,磁盘和内存的使用统计也是在列族层面进行的。
    • 时间戳:区分数据的不同版本
  • 访问一条记录可以表示为:

3 Bigtable集群

Bigtable集群包括三个主要部分:一个供客户端使用的库、一个主服务器(master)、许多片服务器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值