HBase数据库相关基本知识
HBase数据库相关知识
1、 HBase相关概念模型
l 表(table),与关系型数据库一样就是有行和列的表
l 行(row),在表里数据按行存储、行由行键(rowkey)唯一标识,没有数据类型统一为byte[]数组
l 列族(column family),行里的数据按列族分组String类型,每个表必须至少有一个列族
l 列限定符(column qualifier),列族里的数据用列限定符定位。类似关系型数据库里面的列,不必事前定义,没有数据类型同样是byte[]数组
l 单元(cell),单元值我们真实存储的数据(value),没有数据类型byte[]数组
l 时间版本(version),单元值有时间版本,时间版本用时间戳标识long类型(默认保留3个数据版本)
2、 数据存储模型
Hbase集群数据存储底层使用HDFS保障数据容错(一个节点宕机负责迁移数据到另外节点保证数据一致),多机器分布式存储(下图为一个机器节点存储示意图)
每个Hbase服务host主机被HDFS视为一个DataNode(数据节点)每个数据节点有一个RegionServer(区域服务)负责读写服务。
3、 表存储分区
下图是一张表在Hbase中存储的数据分割,数据通过行键(rowkey)进行数据分割到不同Regionserver(如果行键是有一定规则的Hbase一般不会负载分发数据,一般会将行键原始值进行MD5或哈希散列计算之后作为行键存储)
4、 表中各元素关系
一个表中可以有多个列族,但不宜太多(有待考究)一般是3~5个左右。其中类某些列族里面的数据可以一对多的关系,两个列族之间互不影响(见下图)
5、 Hbase数据物理存储与逻辑表结构及数据版本的关系
Hbase的张表是一个目录,下面是列族目录,不同的列族在存储路径上互不影响,一个列族内的数据存储在一个HFile上面。
每个列族内的每一列的每个cell数据都有自己的版本(Hbase默认保存3个版本的数据,可设置)。
插入新数据作为数据(value)的第一个版本(如不指定时间戳版本Hbase自动生成)。
更新数据不会再原有数据上做更新,同插入数据一样,只不过在之前版本的前面(逻辑上)获取新的时间戳(version)。
读取数据的时候一般读取倒序第一行就是后插入的数据,同时也可以读取之前保存的版本数据。
删除数据不会马上真实的删除存储的数据,只是对要删除的数据进行标记(不会被查询到),等待HFile数据合并的时候进行一起删除。
下图为键值关系及版本示意图
要想定位 “张三” 需要 行键,列族,列,时间戳(version)定位到。
6、 HBase优势
通过上面简单了解HBase有如下特点
- 非常突出“列”的概念,null值不占空间
- 每张表只能有一个索引,就是行键(rowkey)
- 列族可以标识一类列,两个列族之间互不影响
- 存在多个数据版本
- 更新和删除操作比较特殊
- 数据结构无限制
通过特点有一下优势
- 吞吐量高
- 随机读非常快(按rowkey读取)
- 集群容错好
- 横向扩展方便,适合长期存储
劣势
1. 不支持二级索引
2. HFile数据文件合并或拆分会对服务可用性造成一定影响
3. 行键(rowkey)实际使用需要进行良好设计
4. 很难进行模糊查询和部分数据提取
7、 针对不足一些方案
针对不支持二级索引的可以使用另一张表进行二级索引存储或使用redis进行二级索引存储。
HFile数据合并或拆分在业务闲时进行操作
行键根据实际业务需求进行设计
HBase数据库相关基本知识的更多相关文章
- 数据库相关知识积累(sqlserver、oracle、mysql)
数据库相关知识积累(sqlserver.oracle.mysql) 1. sqlserver :断开所有连接: (还原数据库) 1.数据库 分离 2. USE master GO ALTER DAT ...
- 【转载】HBase 数据库检索性能优化策略
转自:http://www.ibm.com/developerworks/cn/java/j-lo-HBase/index.html 高性能 HBase 数据库 本文首先介绍了 HBase 数据库基本 ...
- 基于C#的MongoDB数据库开发应用(1)--MongoDB数据库的基础知识和使用
在花了不少时间研究学习了MongoDB数据库的相关知识,以及利用C#对MongoDB数据库的封装.测试应用后,决定花一些时间来总结一下最近的研究心得,把这个数据库的应用单独作为一个系列来介绍,希望从各 ...
- iOS网络相关零散知识总结
iOS网络相关零散知识总结 1. URL和HTTP知识 (1) URL的全称是Uniform Resource Locator(统一资源定位符). URL的基本格式 = 协议://主机地址/路径 ...
- 深入理解mysql之BDB系列(1)---BDB相关基础知识
深入理解mysql之BDB系列(1) ---BDB相关基础知识 作者:杨万富 一:BDB体系结构 1.1.BDB体系结构 BDB总体的体系结构如图1.1所看到的,包括五个子系统(见图1.1 ...
- 【RAC】RAC相关基础知识
[RAC]RAC相关基础知识 1.CRS简介 从Oracle 10G开始,oracle引进一套完整的集群管理解决方案—-Cluster-Ready Services,它包括集群连通性.消息和锁. ...
- HBase 数据库检索性能优化策略--转
https://www.ibm.com/developerworks/cn/java/j-lo-HBase/index.html HBase 数据表介绍 HBase 数据库是一个基于分布式的.面向列的 ...
- 一文让您全面了解清楚HBase数据库的所有知识点,值得收藏!
一.HBase基本概念:列式数据库 在Hadoop生态体系结构中,HBase位于HDFS(Hadoop分布式文件系统)的上一层,不依赖于MapReduce,那么如果没有HBase这种Nosql数据库会 ...
- Linux实战教学笔记19:Linux相关网络知识梳理
第十九节 Linux相关网络知识梳理 标签(空格分隔): Linux实战教学笔记-陈思齐 一,前言 一个运维有时也要和网络打交道,所以具备最基本的网络知识,对一个运维人员来说是必要的.但,对于我们的工 ...
随机推荐
- .net DBHelper
DBHelper.cs是程序来连接数据的,也是一个程序必不可少的一个类(本人道行浅,目前这样认为).由于一个程序基本写一次,容易忘记.所有写在这里备注 首先是引用 using System.Data; ...
- npoi实现数据导出Excel
npoi .NET第三方的Office功能组件. 链接地址 http://npoi.codeplex.com/ 引用命名空间 using NPOI.HSSF.UserModel; using ...
- 继承、接口、static、abstract
继承: 1.用extends来完成继承 2.子类可以继承父类全部的数据域但是只有部分的数据域对子类可见 3.在java中支持单继承 4.单继承和多继承的比较 (1)多继承比单继承能够更好的提高代码的复 ...
- vbscript 语言通过序列和ADODB实现取号不重复
目的:通过VBScript脚本利用序列的性质,实现取号不重复 首先,表空间中创建表名为TABLE_YEWID的表格,主要有以下几个字段 -- Create table create table TAB ...
- WPF Modern UI 主题更换原理
WPF Modern UI 主题更换原理 一 . 如何更换主题? 二 . 代码分析 代码路径 : FirstFloor.ModernUI.App / Content / SettingsAppeara ...
- js 简单日历
源地址:https://jingyan.baidu.com/article/546ae185fa4f721149f28cbf.htm 文件:index.htm <!DOCTYPE html> ...
- css 如何让背景图片拉伸填充避免重复显示
如何让背景图片拉伸填充,这个问题听起来似乎很简单.但是很遗憾的告诉大家.不是我们想的那么简单. 比如一个容器(body,div,span)中设定一个背景.这个背景的长宽值在css2.1之前是不能被修改 ...
- CSS gradient渐变之webkit核心浏览器下的使用以及实例
一.关于渐变 渐变是一种应用于平面的视觉效果,可以从一种颜色逐渐地转变成另外一种颜色,故可以创建类似于彩虹的效果渐变可以应用在任何可以使用图片的地方.例如,您可以指定一个这么一个渐变:顶部的颜色是红色 ...
- echarts功能配置实例----柱/折线、饼图
---恢复内容开始--- echarts中的柱状图和折线图的参数配置可以共用,一般只需要修改图表类型这一个参数即可. 一.echarts最简单的实例 1.折线图/柱状图 <html> &l ...
- bootstrap日期控件(双日期、清空等问题解决)
bootstrap以它优美的外观和丰富的组件,使它成为目前最流行的前端框架.在项目开发中,我们使用它的日期控件确实遇到了一些问题: 1.日期控件后面两个图标点击触发失效 2.双日期关联问题 3.双日期 ...