【HBase】三、HBase和RDBMS的比较
HBase作为一种NoSQL的数据库,和传统的类似于mysql这样的关系型数据库是有很大区别的,本文来对他们做一个对比分析,以便更加深入的了解HBase。
主要区别体现在以下六个方面:
1、数据类型
关系型数据库采用关系模型,具有丰富的数据类型和存储方式,比如我们熟知的mysql可以存储char、varchar、int等等各种类型的数据,而HBase则采用了更简单的数据模型,将数据存储为未解释的字符数组,所有数据都没有类型,都直接作为字符数组来看待。
2、数据操作
关系型数据库有丰富的数据操作,最基本的如:增删改查,并且这其中涉及复杂的多表连接,而HBase操作则不存在复杂的表与表之间的连接关系,只有简单的插入、查询、删除、清空等操作,因为HBase在设计上就避免了复杂的表和表之间的关系。
3、存储模式
关系型数据库是基于行模式来存储的,而HBase正如我们介绍的那样,它是基于列存储的,每个列族的数据都保存在一起,不同列族的文件是相互分离的。
4、数据索引
在关系型数据库中,有模式、表、视图、索引等多个概念,RDBMS可以根据不同列构建复杂的多个索引,以此来提高数据访问的性能,而HBase我们看到,实际上它只有一个索引,那就是行键,HBase表的所有访问都要通过行键,通过巧妙的设计,HBase中的所有访问方法,或者通过行键访问,或者通过行键扫描。
5、数据维护
关系型数据库中,更新操作会用当前的最新值去替换记录中的旧值,旧值被覆盖后就不再存在了,而HBase中的每个单元格是有一个以时间戳表示的版本号的,它在执行更新操作时,并不会删除数据的旧版本,而是生成一个具有更新的版本号的新数据,原有旧数据仍然会保存。
6、可伸缩性
关系型数据库大多受限于一台机器的存储容量,只能进行垂直扩展(更换大容量的设备、提升设备性能等等),很难做到横向扩展,而HBase设计的初衷本来也就是为了实现灵活的横向扩展,能够通过简单的增加节点数量来实现扩展,从而可以存储超大规模数据集,实现超大规模数据的随机访问。
【HBase】三、HBase和RDBMS的比较的更多相关文章
- Hbase(三) hbase协处理器与二级索引
一.协处理器—Coprocessor 1. 起源Hbase 作为列族数据库最经常被人诟病的特性包括:无法轻易建立“二级索引”,难以执 行求和.计数.排序等操作.比如,在旧版本的(<0.92)Hb ...
- Apache Hadoop集群离线安装部署(三)——Hbase安装
Apache Hadoop集群离线安装部署(一)——Hadoop(HDFS.YARN.MR)安装:http://www.cnblogs.com/pojishou/p/6366542.html Apac ...
- Hadoop集群(三) Hbase搭建
前面已经完成Zookeeper和HDFS的安装,本文会详细介绍Hbase的安装步骤.以及安装过程中遇到问题的汇总. 系列文章: Hadoop集群(一) Zookeeper搭建 Hadoop集群(二 ...
- 【Hbase三】Java,python操作Hbase
Java,python操作Hbase 操作Hbase python操作Hbase 安装Thrift之前所需准备 安装Thrift 产生针对Python的Hbase的API 启动Thrift服务 执行p ...
- Hbase总结(一)-hbase命令,hbase安装,与Hive的区别,与传统数据库的区别,Hbase数据模型
Hbase总结(一)-hbase命令 下面我们看看HBase Shell的一些基本操作命令,我列出了几个常用的HBase Shell命令,如下: 名称 命令表达式 创建表 create '表名称', ...
- Hbase系列-Hbase简介
自1970年以来,关系数据库用于数据存储和维护有关问题的解决方案.大数据的出现后,好多公司实现处理大数据并从中受益,并开始选择像 Hadoop 的解决方案.Hadoop使用分布式文件系统,用于存储大数 ...
- Hbase学习Hbase基础介绍
一.产生背景 自1970年以来,关系数据库用于数据存储和维护有关问题的解决方案.大数据的出现后,好多公司实现处理大数据并从中受益,并开始选择像Hadoop的解决方案.Hadoop使用分布式文件系统,用 ...
- 【HBase】HBase Getting Started(HBase 入门指南)
入门指南 1. 简介 Quickstart 会让你启动和运行一个单节点单机HBase. 2. 快速启动 – 单点HBase 这部分描述单节点单机HBase的配置.一个单例拥有所有的HBase守护线程- ...
- HBase(五): HBase运维管理
HBase自带的很多工具可用于管理.分析.修复和调试,这些工具一部分的入口是hbase shell 客户端,另一部分是在hbase的Jar包中. 目录: hbck hfile 数据备份与恢复 Snap ...
- HBase学习-HBase原理
1.系统架构 1.1 图解 从HBase的架构图上可以看出,HBase中的组件包括Client.Zookeeper.HMaster.HRegionServer.HRegion.Store.MemS ...
随机推荐
- imagecreatefromjpeg(): gd-jpeg: JPEG library reports unrecoverable
错误: imagecreatefromstring(): Empty string or invalid image 或者 imagesx() expects parameter 1 to be re ...
- set uniion()
union()方法返回两个集合的并集,包含所有集合的元素,重复元素只会出现一次. 语法: set.union(set1,set2) 参数: set1必填参数,合并的目标集合 set2选填参数,其他要合 ...
- mysql参数sql_log_bin配置
mysql参数sql_log_bin配置 如果想在主库上执行一些操作,但不复制到slave库上,可以通过修改参数sql_log_bin来实现.比如说,这里模拟主从同步复制异常. 还有一种场景,就是导入 ...
- UML中共有5种静态图
用例图,类图,对象图,组件图和配置图.
- 阿里云移动研发平台 EMAS 助力银行业打造测试中台,提升发版效能
随着移动互联网的发展,手机银行凭借低成本.操作简单.不受时间空间约束等优势,正逐步替代传统的网银交易方式.越来越多的银行开始了“业务移动化”转型之路,“手机APP”已经成为企业价值传递和关系维护的关键 ...
- C++ - C++简介
一.C与C++ 一般来说,计算机要处理两个概念--算法和数据.C在面世时是过程性的语言,过程性的语言指的是程序的过程较比其他语言,会更加的有序可读(清晰性和可读性).因为它把程序分解成各个分支,并执行 ...
- sublime安装完插件后出现的一些问题
1.安装anaconda后代码前面出现小方框 解决办法:这是由于不符合PEP8代码规范,在空白地方右击,选择anaconda --> autoformat PEP8 Errors ,同时保证导入 ...
- Python3学习笔记(五):列表和元组
一.列表 列表是可变的--可以改变列表的内容 list函数可以把各种类型的序列拆分列表 >>> list('Hello') ['H', 'e', 'l', 'l', 'o'] 二.列 ...
- Spring Boot教程(二十三)使用Swagger2构建强大的RESTful API文档(2)
添加文档内容 在完成了上述配置后,其实已经可以生产文档内容,但是这样的文档主要针对请求本身,而描述主要来源于函数等命名产生,对用户并不友好,我们通常需要自己增加一些说明来丰富文档内容.如下所示,我们通 ...
- Spring Boot教程(八)创建含有多module的springboot工程
创建根工程 创建一个maven 工程,其pom文件为: <?xml version="1.0" encoding="UTF-8"?> <pro ...