当前位置: 首页 > news >正文

HBASE分布式数据库

HBASE的数据模型:

HBase是一个稀疏、多维度、排序的映射表,这张表的索引是行键、列族、列限定符和时间截每个值是一个未经解释的字符串,没有数据类型
用户在表中存储数据,每一.行都有一个可排序的行键和任意多的列表在水平方向由一个或者多个列族组成,一个列族中可以包含任意多个列,同一个列族里面的数据存储在一起列族支持动态扩展,可以很轻松地添加一一个列族或列,无需预先定义列的数量以及类型,所有列均以字符串形式存储,用户需要自行进行,数据类型转换
HBase中执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,旧有的版本仍然保留(这是和HDFS只允许追加不允许修改的特性相关的)

HBASE数据模型的相关概念

表: HBase采用表来组织数据,表由行和列组成,列划分为若千个列族
行:每个HBase表都由若干行组成,每个行由行键(row key)来标识
列族:一个HBase表被分组成许多“列族”(Column Family)的集合,它是基本的访问控制单元
列限定符:列族里的数据通过列限定符(或列)来定位行
单元格:在HBase表中,通过行、列族和列限定符确定一个“单元格”(cell),单元格中存储的数据没有数据类型,

总被视为字节数组byte[]
时间戳:每个单元格都保存着同一份数据的多个版本,这些版本采用时间戳进行索引

HBASE数据坐标:

HBASE数据的概念视图:

HBASE数据的物理视图:

列式存储和行式存储:

 

HBase与传统的关系数据库的区别主要体现在以下几个方面:

数据类型、数据操作、存储模式、数据索引、数据维护、可伸缩性。

一、数据类型
关系数据库采用关系模型,具有丰富的数据类型和存储方式,
HBase则采用了更加简单的数据模型,它把数据存储为未经解释的字符串

二、数据操作
关系数据库中包含了丰富的操作,其中会涉及复杂的多表连接。
HBase操 作则不存在复杂的表与表之间的关系,只有简单的插入、查询、删除、清空等,
因为HBase在设计,上就避免了复杂的表和表之间的关系

三、存储模式
关系数据库是基于行模式存储的。
HBase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的

四、数据索引
关系数据库通常可以针对不同列构建复杂的多个索引,以提高数据访问性能。HBase只有一个索引一行键, 通过巧妙
的设计,HBase中的所有访问方法,或者通过行键访问,或者通过行键扫描,从而使得整个系统不会慢下来。

五、数据维护
在关系数据库中,更新操作会用最新的当前值去替换记录中原来的旧值,旧值被覆盖后就不会存在。而在HBase中执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,旧有的版本仍然保留

六、可伸缩性
关系数据库很难实现横向扩展,纵向扩展的空间也比较有限。相反,HBase和BigTable这些分布式数据库就是为了实现
灵活的水平扩展而开发的,能够轻易地通过在集群中增加或者减少硬件数量来实现性能的伸缩

相关文章:

  • Java 的类加载机制
  • K-means算法
  • 如何管理自己的情绪
  • 记录win10装jdk
  • 按照开发阶段划分测试技术
  • 数据倾斜
  • Tomcat9启动乱码
  • @GetMapping和@RequestMapping的区别
  • 正则表达式-匹配A和B之间字符串
  • HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.
  • urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:833)
  • Mac下Chromedriver存放位置
  • 解决 Cannot open pip-script.py
  • Python安装docx库
  • Windows下Chromedriver存放位置
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 0x05 Python数据分析,Anaconda八斩刀
  • Android优雅地处理按钮重复点击
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • Debian下无root权限使用Python访问Oracle
  • emacs初体验
  • Git 使用集
  • Idea+maven+scala构建包并在spark on yarn 运行
  • JavaScript设计模式系列一:工厂模式
  • java第三方包学习之lombok
  • laravel with 查询列表限制条数
  • Rancher-k8s加速安装文档
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • windows下使用nginx调试简介
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 使用 QuickBI 搭建酷炫可视化分析
  • 我从编程教室毕业
  • 异常机制详解
  • 最近的计划
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • Mac 上flink的安装与启动
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #Z0458. 树的中心2
  • (2)STM32单片机上位机
  • (2.2w字)前端单元测试之Jest详解篇
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • ****Linux下Mysql的安装和配置
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .NET MVC第五章、模型绑定获取表单数据
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)