Hbase数据库的一些基础知识
来源:互联网 发布:windows模块更新程序 编辑:程序博客网 时间:2024/05/17 02:29
Hbase是一种NoSql数据库,与传统的RDBMS(关系型数据库)有着本质的区别。
一、NoSql
NoSql的字面意思是Not Only SQL,泛指用来解决大数据相关问题而创建的数据库技术,目前在市场上常用的有Mongo DB,阿里巴巴开源的OceanBase等,当然也包括本文所介绍的HBase。虽然NoSql数据库是面向大数据而应运而生的,但是也并非说在大数据时代,传统的关系型数据库就没有了用武之地,其实,目前,在很多方面,非关系型数据库还是不能完全取代关系型数据库的。
二、Hbase数据模型
Hbase好有几种数据模型,主要有以下几种:
(1)列族(column family)
即为Hbase表中的每个列,都归属于某个列族。列族是表的schema的一部分(而列不是),必须在使用表之前定义。列名都以列族作为前缀。例如:courses:history,courses:math都属于courses这个列族。列族中可以动态添加新的列。
(2)单元
Hbase中通过row和column确定为一个存储单元成为cell。
(3)时间戳
每个单元都保存着同一份数据的多个版本。版本通过时间戳来索引。时间戳的类型是64位整型。时间戳可以由Hbase(在数据写入时自动)赋值,此时时间戳是精确到毫秒的当前系统时间。时间戳也可以由客户显式赋值。如果应用程序要避免数据版本冲突,就必须自己生成唯一性的时间戳。每个cell中,不同版本的数据按照时间顺序来排序。此外,为了节省空间以应对稀疏的数据,列可以被赋空值来节省空间。
(4)Row Key
与NoSql数据库们一样,row key用来检索记录的主键,访问Hbase table中的行,只有三种方式:
1)通过单个row key访问
2)通过row key的range
3)全表扫描
row key行键(row key)可以是任意字符串(最大长度是64KB,实际应用中一般为10-100bytes),在Hbase内部,row key保存为字节数组。存储时,数据按照row key的字典序(byte order)排序存储。设计key时,要充分利用排序存储的特性,将经常一起读取的行存放到一块。(位置相关性)
三、具体的例子对比
RDBMS table
SSN-primary key Last Name First Name Account Number Type of Account Timestamp
01234 Smith John abcd1234 Checking 20120118
01235 Johnson Micheal wxyz1234 Checking 20120118
01235 Johnson Micheal aabb1234 Checking 20111123
Hbase table
Row Key Value(CF,Column,Version,Cell)
01234 info:{'lastname':'Smith',
'firstname':'John'}
acct:{'checking':'abcd1234'}
01235 info:{'lastname':'Johnson'
'firstname':'Micheal'}
acct:{'checking':'wxyz1234'@ts=2012,
'checking':'aabb1234'@ts=2011}
上述对于相同的内容,关系型数据库和Hbase数据库所存储的方式就完全不同了。
- Hbase数据库的一些基础知识
- 数据库的一些基础知识
- mysql数据库的一些基础知识
- 数据库基础知识--数据库知识的一些小总结
- HBase的一些理解
- 有关与数据库的一些基础知识(待完善)
- 关于数据库事务的一些基础知识(转载)
- Hbase 基础知识
- HBase 基础知识
- HBase基础知识
- hbase-基础知识
- Hbase基础知识
- hbase基础知识
- HBase基础知识
- hbase基础知识
- 模块的一些基础知识
- 模块的一些基础知识
- 操作系统的一些基础知识
- 再读SIFT理论及源码
- HDU 1847(Good Luck in CET-4 Everybody!) 巴什博弈 Java
- 单调队列入门
- 查找——线性索引查找
- unix 02
- Hbase数据库的一些基础知识
- 【AndroidManifest.xml详解】Manifest属性之versionCode,versionName
- 应用CXF开发RESTful风格的WebService入门实例
- 关于Scanner中nextxxx()须注意的一点
- 设计一个不能被继承的类
- 设计模式讲解与代码实践(九)——组合
- 部署phpmyadmin
- 从底层实现重新理解HashMap
- 大数据(2)