`

HBase之数据模型(DataModel)

阅读更多

HBase基于Google的BigTable构建,是一种column-orientednosql数据库

1.模型视图

1.1概念视图

从概念模型上看,HBase的存储逻辑同关系数据库类似,是基于Table的存储,存储视图如图所示:

图中列出了表格的一条记录,com.cnn.www是该记录的主键,contents:、anchor:cnnsi.com和anchor:my.look.ca是表格的column

与关系数据库不同的是,这里的cell具有版本的概念(每个cell有多条记录,这些记录通过时间戳来区分彼此).

1.2物理视图

概念视图只是基于关系数据库的一种参照,在真正的物理存储上,HBase基于另外一种模型,模型视图如图所示:

如图所示,HBase实际上是基于列存储的数据库,可简单认为每个ColumnFamily对应一张存储表,表格的RowKey、Timestamp和column确定了每条记录的唯一索引。在物理层面上,表格的数据是通过StoreFile来存储的,每个StoreFile相当于一个可序列化的Map,Map的key和value都是可解释型字符数组,如key的字符数组主要由以下信息组成(value于此类似):

 

rowlength rowKey的字符长度
row rowKey的值
columnFamilyLength columnFamily的字符长度
columnFamily columnFamily的值
columnqualifier column
timestamp 时间戳(版本)
keytype key的类型(Put,Delete,DeleteColumn,DeleteFamily…)

这样便可从相应的Key/Value键值对中提炼出具体的rowKey、timestamp、columnKey和columnValue等信息。而多个map整合到一起,便形成一张松散的、可分布式的、多维的、可序列话的BigTable。

 

2.模型概念

2.1ColumnFamily

Column Family是一组Column的组合,在HBase中,Schema的定义主要为columnFamily的定义,同大多数nosql数据库一样,HBase也是支持SchemaFree的,但是前提要先定义出具体的columnFamily,而在随后的column定义则没有任何约束。

其次,HBase的访问权限控制,磁盘及内存统计等功能都是基于columnFamily层面完成的。

2.2Cell

概念模型中的cell由row、column和timestamp三元素组成

2.3Timestamp

HBase提供基于cell的版本管理功能,版本号默认通过timestamp来标识,并且呈倒叙排列。这样,最后添加的版本会首先遍历到

注:这里的cell指的是概念视图中

 

 

http://blog.csdn.net/javaman_chen/article/details/7196568

分享到:
评论

相关推荐

    HBase官方指南——数据模型篇

    列簇是HBase数据模型中的一个重要的概念,它可以看作是一组列的集合。每个列簇都有自己的物理存储配置,比如是否压缩、是否缓存到内存等。表中的每一行都包含相同的列簇集合,即使某些列簇对于某行没有列,相应的列...

    apache_hbase_reference_guide-3.0.0-SNAPSHOT

    3. Data Model 部分深入探讨了 HBase 的数据模型,包括概念视图、物理视图、命名空间、表、行、列族、单元格等概念,以及数据模型操作、版本、排序顺序、列元数据等。 4. HBase and Schema Design 部分关注于如何...

    HBase 官方文档

    - **Data Model Operations**:列举 HBase 支持的各种数据模型操作。 - **版本**:探讨 HBase 中版本控制机制的工作原理。 - **排序**:说明 HBase 如何处理数据排序。 - **列元数据**:介绍如何管理和使用列的元...

    Hbase中文文档

    5. 数据模型 5.1. 概念视图 5.2. 物理视图 5.3. 表 5.4. 行 5.5. 列族 5.6. Cells 5.7. Data Model Operations 5.8. 版本 5.9. 排序 5.10. 列元数据 5.11. Joins 6. HBase 和 Schema 设计 6.1. Schema 创建 6.2. ...

    apache hbase reference guide

    - **Conceptual View**(概念视图):从宏观角度介绍了HBase数据模型的设计理念。 - **Physical View**(物理视图):展示了数据如何实际存储在HBase中的细节。 - **Namespace**(命名空间):类似于数据库的概念...

    HareDB Data Model Management:用于将模式转换以及将数据从RDB迁移到HBase的GUI工具-开源

    HareDB数据模型管理是如上所述的GUI工具。 该工具提供了合并表功能,可以帮助您合并在RDB中具有关系的表。 它不仅提供了schama重新设计器,还提供了从RDB到HBase的数据加载器。 该工具可以减少从RDB到HBase的移植...

    Apache Hadoop Goes Realtime at Facebook

    4. **数据模型(Data Model)**:为了支持复杂的数据查询和处理,Facebook 需要一个灵活且强大的数据模型。 5. **可扩展性(Scalability)**:考虑到 Facebook 的用户规模和数据量,系统必须能够轻松扩展以应对...

    实时数仓2.0——打怪升级之路.pdf

    综上所述,实时数仓2.0是一种先进的数据处理框架,它通过优化数据模型、提升处理速度、确保数据质量,以及利用高级状态管理技术,来满足企业对实时数据分析的高要求。这一解决方案为企业提供了更敏捷的业务洞察,...

    kylin简介核心概念工作机制

    在数据立方体计算完毕后,有一个任务(Convert Cuboid Data to HFile),其职责是将reduce输出的运算结果(Cuboid Data)转化成Hbase中的存储载体(HFile),最终将HFile加载到Hbase表中便于查询。 Kylin是一种强大...

    2022年关于分布式数据库系统的计算机英语.docx

    这样的组织可能也会选择网络型数据模型(Network Data Model),因为这种模型非常适合在分布式系统中进行数据搜索和更新,能够处理复杂的数据关系和多对多的联系。 分布式社区间的通信是出于多种原因必不可少的。在...

    SignaIR入门例子

    2. **数据加载(Data Loading)**:SignaIR支持多种数据源,如HDFS、HBase等。在这个入门例子中,由于没有数据库,我们将使用本地文件系统上的数据。你需要创建数据迭代器(Data Iterator)来读取和处理数据。 3. *...

    Next-Gen Big Data Analytics using the Spark stack.zip

    《Next-Gen Big Data Analytics using the Spark Stack》的压缩包包含了一个关于利用Spark栈进行下一代大数据分析的主题。在这个领域,Spark作为一个快速、通用且可扩展的大数据处理框架,已经成为业界的首选工具。...

    数据库新技术ppt

    - 逻辑设计:将概念模型转化为特定DBMS所支持的数据模型。 - 物理设计:考虑存储和访问效率,优化数据库在硬件上的实现。 6. **SQL语言**: - 结构化查询语言(Structured Query Language):用于操作关系数据库...

    django基于大数据的-银行信用卡用户的数仓系统的设计与实现-1yd16-论文.zip

    1. 数据模型设计:银行信用卡数仓需要包含用户信息表、交易明细表、信用评估表等多种数据表。这些表需要满足OLAP(在线分析处理)的需求,以支持复杂的查询和分析操作。 2. ETL(Extract, Transform, Load)流程:...

    从PAXOS到ZOOKEEPER分布式一致性原理与实践

    4. **数据模型(Data Model)**:ZOOKEEPER的数据存储为树形结构,每个节点称为ZNode,可以存储数据,也可以作为其他ZNode的父节点。 5. **Watcher机制(Watcher)**:一种事件监听机制,当ZNode状态发生变化时,...

    详细的数据库专业学习课件

    - 实体-关系模型(Entity-Relationship Model, E-R Model):用于设计数据库的逻辑结构,实体、属性和关系是其主要元素。 - 数据库模式(Database Schema):描述数据库的结构,包括表、字段、键和约束等。 - ...

    java 中Spark中将对象序列化存储到hdfs

    在这篇文章中,我们使用 HBase 来存储数据,并从中读取数据来生成 Word2Vec 模型。 知识点 5:Spark 中的数据读取和写入 Spark 提供了多种数据读取和写入方式,如从 HBase 中读取数据、从 HDFS 中读取数据等。在这...

    Spring Data Jpa+SpringMVC+Jquery.pagination.js实现分页示例

    1. 设计数据模型并创建对应的实体类(Entity)和JPA Repository接口。 2. 在SpringMVC中创建控制器(Controller),定义处理请求的方法,并使用Spring Data JPA的Repository接口来获取分页数据。 3. 使用Jquery....

    大数据技术与应用人才培养方案(高职).docx

    在Java服务端技术课程中,学生需要熟练使用Tomcat服务器进行Web工程开发,理解和运用Model和MVC开发模型,同时掌握MySQL数据库操作、JDBC连接、XML解析、JSP和Servlet等技术。 在Hadoop生态系统及开发课程中,学生...

Global site tag (gtag.js) - Google Analytics