文章目录

  • 术语
    • Table
    • Row
    • Column Family(列簇或列族)
    • Column
    • Column Qualifier
    • Cell
    • Timestamp
  • 标识设计要点
    • hbase与关系型数据库对比
    • 设计时考虑因素
    • 设计要点
      • 行键rowkey设计
      • 列簇设计
    • 列簇属性
  • 总结

术语

Table

  • Hbase的table由多个行组成。

Row

  • 一个行在Hbase中由一个或多个有值的列组成。Row按照字母进行排序,因此行键的设计非常重要。这种设计方式可以让有关系的行非常的近,通常行键的设计是网站的域名反转,比如(org.apache.www, org.apache.mail, org.apache.jira),这样的话所有的Apache的域名就很接近。

Column Family(列簇或列族)

  • 列簇在物理上包含了许多的列与列的值,每个列簇都有一些存储的属性可配置。例如是否使用缓存,压缩类型,存储版本数等。在表中,每一行都有相同的列簇,尽管有些列簇什么东西也没有存。

Column

  • 列由列簇加上列的标识组成,一般是“列簇:列标识”,创建表的时候不用指定列名(列标识)

Column Qualifier

  • 列簇的限定词,理解为列的唯一标识。但是列标识是可以改变的,因此每一行可能有不同的列标识

Cell

  • Cell是由row,column family,column qualifier包含时间戳与值组成的,一般表达某个值的版本。

Timestamp

  • 时间戳一般写在value的旁边,代表某个值的版本号,默认的时间戳是写入数据的那一刻,也可以在写入数据的时候指定不同的时间戳

标识设计要点

  • 只要是数据库都存在,模式设计的问题,关系型中有模式设计的范式,Hbase作为列式存储数据库,其模式设计也非常重要。

hbase与关系型数据库对比

属性 hbase RDBMS
数据类型 只有字符串 丰富的数据类型
数据操作 增删改查,不支持join 各种各样的函数与表连接
存储模式 基于列式存储 基于表结构和行式存储
数据保护 更新后仍然保留旧数据 数据替换
可伸缩性 轻易增加节点 需要中间层,牺牲性能

设计时考虑因素

  • Hbase关键概念:表,rowkey,列簇,时间戳

    • 这个表应该有多少列簇
    • 列簇使用什么数据
    • 每个列簇有有多少列
    • 列名是什么,尽管列名不必在建表时定义,但读写数据是要知道的
    • 单元应该存放什么数据
    • 每个单元存储多少时间版本
    • 行键(rowKey)结构是什么,应该包含什么信息

设计要点

行键rowkey设计

  • 说明

    • 行键是关键部分,直接关系到后续服务的访问性能。如果行键设计不合理,后续查询服务效率会成倍的递减。
  • 细节
    • rowkey全局唯一,如果重复添加数据会覆盖。
    • 避免单调的递增行键,因为Hbase的行键是有序排列的,这样可能导致一段时间内大部分写入集中在某一个Region上进行操作,负载都在一台节点上。可以设计成: [metric_type][event_timestamp],不同的metric_type可以将压力分散到不同的region上
    • 行键短到可读即可,因为查询短键比长键性能好些,所以设计时要权衡长度,最好不要超过16个字节。
    • 行键不能改变,唯一可以改变的方式是先删除后插入

列簇设计

  • 说明

    • 列簇是一些列的集合,一个列簇的成员有相同的前缀,以冒号(:)作为分隔符。
  • 细节
    • 当前Hbase不能很好处理2~3个以上的列簇,所以尽可能让列簇少一些,如果表有多个列簇,列簇A有100万行数据,列簇B有10亿行,那么列簇A会分散到很多的Region导致扫描列簇A的时候效率底下。
    • 列簇名的长度要尽量小,一个为了节省空间,另外加快效率,比如d表示data,v表示value

列簇属性

  • HFile数据块,默认是64KB,数据库数据的大小影响数据块索引的大小。数据块大的话一次加载进内存的数据越多,扫描查询效果越好。但是数据块小的话,随机查询性能更好
  • 数据块缓存,数据块缓存默认是打开的,如果一些比较少访问的数据可以选择关闭缓存
  • 数据压缩,压缩会提高磁盘利用率,但是会增加CPU的负载,看情况进行控制

总结

  • 了解hbase设计是影响hbase查询效率的关键因素,信息的排列方式,决定数据的聚集性,使用时根据实际场景设计,如数据多对一时,增加索引表,实现多种信息规则关联。如复杂计算过滤查询,可使用Elasticsearch作为hbase查询入口。
  • 实践出真知,任何理论知识必须经历实际场景的考验,才能真正学会,融汇贯通。

HBase数据模型和表设计相关推荐

  1. HBase基础: 表设计思路

    简介 通过几天的学习对HBase 在存储结构上和过滤器适用上也有了一点了解,同时也遇到很多问题?例如:查询方式,数据版本,查询时部分过滤器可能会导致数据不准确等这些问题如果不熟悉或与特殊业务场景结合很 ...

  2. Hbase数据模型入门

    在HBase中,数据存储在具有行和列的表中.这是与关系数据库(RDBMS)的术语重叠,但这并不是一个有用的类比.相反,将HBase表视为多维映射会有所帮助. HBase数据模型术语 表 一个HBase ...

  3. HBase数据模型解析和基本的表设计分析

     编辑 删除 最近在学习HBase的使用,并仔细阅读了一篇官方推荐的博客,在这里就以一边翻译一边总结的方式和大家一起梳理一下HBase的数据模型和基本的表设计思路. 官方推荐的博客原文地址:htt ...

  4. HBase表设计介绍

    概述 在不久的过去,大数据的应用越来越多.为了支持这些应用以及扩展老的应用,很多新的数据管理系统被开发出来,被称作大数据革命.这些系统中很多都是开源和社区驱动的.Apache Hbase就是这样的一个 ...

  5. HBase概念学习(八)开发一个类twitter系统之表设计

    这边文章先将可能的需求分析一下,设计出HBase表,下一步再開始编写client代码. TwiBase系统 1.背景 为了加深HBase基本概念的学习,參考HBase实战这本书实际动手做了这个样例. ...

  6. HBase 的表设计

    1 ColumnFamily 设计 追求的原则是:在合理的范围内能尽量少的减少列簇就尽量减少列簇. 最优设计是:将所有相关性很强的 Key-Value 都放在同一个列簇下,这样既能做到查询效率最高,也 ...

  7. 走向云计算之HBase模式设计及表设计案例

    一.概述 HBase有以下几个特点: HBase列的可以动态增加,并且列为空就不存储数据,节省存储空间. hbase自动切分数据,使得数据存储自动具有水平scalability. Hbase可以提供高 ...

  8. hbase快速入门之---表设计(使用建议)

    ØColumn Family 建议不要在一张表里定义多个的 column family .目前 Hbase 并不能很好的处理超过 2~3 个 column family 的表.因为某个 column ...

  9. HBase的表设计笔记

    HBase的RowKey设计 HBase是三维有序存储的,通过rowkey(行键),column key(column family和qualifier)和TimeStamp(时间戳)这个三个维度可以 ...

最新文章

  1. 同花顺python_python的解析库pyquery解析并读取同花顺网站的焦点新闻
  2. 以cisco 3550为例介绍IOS的恢复方法:
  3. Array.prototype.slice.call(arguments)对象转成数组
  4. 为什么嵌入式工程师会对8位MCU有误解?
  5. leetcode315. 计算右侧小于当前元素的个数(树状数组解法)
  6. excel小写转大写公式_喂!这边居然有演示的Excel快捷键!
  7. SpringAOP 学习笔记
  8. AVR单片机教程——UART进阶
  9. 通达信版弘历软件指标_弘历主图指标详解 通达信指标
  10. 家庭财务软件的概要分析
  11. python 修改文件内容3种方法,Python实现修改文件内容的方法分析
  12. 家庭NAS方案-树莓派安装使用OpenMediaVault
  13. k8s的service端口暴露与代理
  14. OpenLDAP配置坎坷路
  15. JPEG系列一 JPEG图片的文件格式
  16. spark和tez的区别
  17. excel这几大数据处理技巧,高效率操作技能,今天免费交给你!
  18. Bloomberg彭博终端函数和EXCEL插件
  19. 【LeetCode】1652. 拆炸弹(C++)
  20. 数据库学习笔记四收缩数据库

热门文章

  1. 计算机小学期实践报告,北科大一小学期暑期计算机实践实习报告.pdf
  2. Coreos 安装及配置
  3. 计算机科学 征稿,计算机科学征稿函.doc
  4. 小米架构师 php,小米首席架构师汪文俊:MIUI无惧安卓闭源
  5. mysql jion on月季_月季花展游人如织
  6. 尼彩A700 root教程_方法
  7. Vs错误:One of the identified items was in an invalid format.
  8. Fiddler抓包解析https且配置安卓手机CA证书、抓取微信数据包
  9. useState使用TS声明类型
  10. 注会考试能用计算机吗,cpa机考能带计算器吗