数据管理技术(三)列式存储数据库与HBase基础

列式存储数据库概述

  • 列式数据库是以列相关存储架构进行数据存储的数据库,主要适合于批量数据处理和及时查询。
  • 列式数据库把一列中的数据值串在一起存储起来,然后存储下一列的数据。
  • 行式数据库的特点
    • 数据按行存储
    • 操作某列必需读入整行
    • 建索引或聚合表需花费大量时间和资源
  • 列式存储数据库特点
    • 数据按列存储->每一列单独存放
    • 数据即是索引
    • 只访问查询涉及的列->大量降低系统IO
    • 每一列由一个线程来处理->查询并发处理
    • 数据类型一致,数据特征相似->方便压缩
      • 传统的行存储数据库存储的数据差异较大,压缩效果不好
      • 列存储适合轻量级压缩
        在这里插入图片描述
列式存储数据库中的索引
  • 块级索引
    • 数据分块,对块建立索引而不是对条目建立索引
    • 块级索引一般都是粗粒度
    • 举例
      • 每个数据块的块索引记录该块数据的最大值和最小值
      • 查询时,根据条件,就可以判断符合条件的数据是否命中该数据块
      • 如果进行max,sum等聚合操作,可以直接从块索引读取数据而不用读取块内数据
  • 位图索引
    • 位图索引一般建立在列的cardinality(基数)比较低的情况下
    • 举例:性别属性只有男和女,那么这个列的cardinality就是2
      在这里插入图片描述

HBase的历史与发展

HBase的起源
  • HBase是Google公司云计算平台中Big Table数据库的开源实现
  • Google云计算技术具体包括
    • Google文件系统海量数据分布存储技术(GFS, Google File System)
    • 分布式计算编程模型Map Reduce
    • 分布式锁服务Chuuby
    • 分布式结构化数据存储系统Big Table等
      在这里插入图片描述
GFS(Google File System)
  • 一个适用于大规模分布式数据处理相关应用的,可拓展的分布式文件系统
  • 基于普通的不算昂贵的硬件设备,实现了容错的设计,且为大量客户端提供极高的聚合处理性能
  • GFS的设计思路(同样适用于BigTable 和HBase)
    • 将文件划分为若干块(Chunk)存储,每个块固定大小(64M)
    • 通过冗余来提高可靠性,每个数据块至少在3个数据块服务器上冗余
    • 通过单个master来协调数据访问、元数据存储。结构简单,容易保持元数据一致性。
  • 特点
    • GFS将容错的任务交给文件系统完成,利用软件的方法解决系统可靠性的问题,使存储的成本成被下降
    • GFS将服务器故障视为正常现象,并采用多种方法,从多个角度,使用不同的容错措施。
    • 确保数据存储的安全、保证实施不间断的数据存储服务
  • GFS架构
    • Client(客户端):应用程序的访问接口
    • Master(主服务器):管理节点,在逻辑上只有一个,保存系统的元数据,负则整个文件系统的管理
    • Chunk Server(数据块服务器):负则具体的存储工作,数据以文件的形式存储在Chunk Server上
      在这里插入图片描述
分布式结构化数据表Big Table
  • 设计动机
    • 需要存储与计算的数据种类繁多:包括URL、网页内容、用户的个性化设置等。
    • 海量的服务请求:繁忙的查询请求,Google每时每刻处理海量的客户服务请求
    • 商用数据库无法满足Google的需求:一方面现有的商用数据库设计着眼于通用性,无法满足Google的苛刻服务要求,另一方面对于底层系统的完全掌握会给后期的系统维护、升级带来极大的便利。
  • 设计目标
    • 广泛的适用性:Big Table是为了满足系列Google产品而非特定产品存储要求
    • 高可用性:确保系统在多种存取状态下均可用,包括高并发、高吞吐量等情况。
    • 高可拓展性:根据需要随时可以加入或撤销服务器
    • 简单性:底层系统简单性既可减少系统出错概率,也为上层应用开发带来便利。
  • Big Table的数据模型
    • Bigtable是一个分布式多维映射表

      • 表中的数据通过一个行关键字(Row Key)、一个列关键字(Column Key)以及一个时间戳(Time Stamp)进行索引
      • Bigtable对存储在其中的数据不做任何解析,一律看作字符串
      • Bigtable的存储逻辑可以表示为(row:string, column:string, time:int64)->字符串
      • Bigtable的行关键字可以是任意的字符串,但是大小不能操作64kb
      • Bigtable和传统的关系型数据库不同,它不支持一般意义上的事务,但能保证对于行的读写操作具有原子性
      • 表中数据都是根据行关键字进行排序的,排序使用的是字典序。
      • 示例:com.cnn.www是一个行关键字,不直接存储网页地址而存储其倒排
      • 带来两个好处:同一地址域的网页会被存储在表中的连续位置,有利于用户查找和分析;倒排便于数据压缩,可以大幅提高压缩率。
        在这里插入图片描述
      • BigTable并不是简单的存储所有的关键字,而是将其组织成列族,每个族中的数据都属于同一个类型,并且同族的数据会被压缩在一起保存
      • 引入了列族这个概念后,列关键字采用下述的语法规则定义
      • 族名:限定词(family: qualifier)
      • 族名必需有意义,限定词则可以任意选定
      • 图中,内容、锚点都是不同的族;而cnnsi.com和my.lock.ca则是锚点族中不同的限定词
      • 族同时也是Bigtable中访问控制(Access Control)基本单元,即访问权限的设置是在族这一级别上进行的。
    • 时间戳

      • 为了简化不同版本的数据管理,Bigtable目前提供了两种设置
      • 一种是保留最近的N个不同版本,图中数据模型采取的就是这种方法,它保存最新的三个版本数据
      • 另一种就是保留限定时间内的所有不同版本,比如可以保存最近10天的所有不同版本数据
  • Big Table架构
    • Big Table数据库的架构,由主服务器和分服务器构成,将数据库划分为基本的小表,称为Tablet,是Big Table中最小的处理单位
    • 主服务器负则将Tablet分配到Tablet服务器,检测新增和过期的Tablet服务器,平衡Tablet服务器之间的负载,GFS垃圾文件的回收,数据模式的改变(例如创建表)等
    • Tablet服务器负则处理数据的读写,并在Tablet规模过大时进行拆分
    • Bigtablet使用集群管理系统来调度任务、管理资源、检测服务器状态并处理服务器故障。
      在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值