热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Hbase笔记一(数据模型)

ABigtableisasparse,distributed,persistentmultidimensionalsortedmap.Hbase(HadoopDatabase)是基

A Bigtable is a sparse, distributed, persistent multidimensional sorted map.

Hbase(Hadoop Database)是基于hadoop HDFS的数据库。Hbase是一个稀疏的、分布式的、序列化的、多维排序的Map,由Row Key、column key、timestamp索引。对Hbase的数据模型可以有三种理解:表格、多维Map和keyvalue存储结构。

表格

对Hbase最简单和自然的数据模型理解,就是想像成一个有row和column的表格。这和我们熟悉的关系型数据库表的理解差不多,但还是有些不同的。(与关系型数据库还是有很大不同的,后面会讲到)。接下来定义几个名词:

Table:表。Hbase把数据装入表中

Row:Row由row key唯一确定。row key没有数据类型,往往看作一个byte[]

ColumnFamily:Row中的数据是由column family分组的。column family会影响到数据在hbase中的物理结构,所以必须提前定义好,否则以后很难修改。表中所有的row有相同的column family,尽管一个row不需要其所有的column family存有数据。column family 由字符串组成。

Column(Column Qualifier):column family中的数据是存在column中的,和column family一样,column也需要提前定义好。不同row之间的column不需要具有一贯性。和row key一样,column没有数据类型,往往看作一个byte[].

Cell:一个row key、一个column family和一个column唯一确定一个Cell。

Timestamp:cell中的值是有多个版本的。版本号默认就是数据被写入时的时间戳。如果写入数据时没有指定时间戳,则使用当前时间;如果读取数据时没有指定时间戳,则使用最新的版本。cell默认有三个版本。

综上,表结构如图所示:

《Hbase笔记一(数据模型)》

图一

Hbase的数据操作API有三个:Get、Put和Scan。Get和Put针对具体的row,所以需要提供row key。scan针对一系列row,可以通过提供一个start row key和一个end row key来获得一系列的row,如果不提供起始和结束,则针对整个表操作。

多维Map

有时候,将hbase的数据模型理解成一个多维Map更容易理解,如果将图一中的第一行row理解成多维Map,则如图二所示:

《Hbase笔记一(数据模型)》

图二

值得注意的是,row key和关系型数据库中的primary key的作用类似。Hbase表设置好之后,你将不能选择其他row作为row key。

key value存储

Hbase数据模型还可以看作是以key-value的形式存储。如图三所示,key可以认为是row key,还可以认为是row key, column family, column, timestamp的组合,这就取决于你对哪些cell感兴趣了。如图三,图一的第一行row可以表示成以下几种key value组合。

《Hbase笔记一(数据模型)》

图三

下篇文章将继续讲解Hbase的设计架构

未经允许,请勿转载!

——完——


推荐阅读
  • 高端存储技术演进与趋势
    本文探讨了高端存储技术的发展趋势,包括松耦合架构、虚拟化、高性能、高安全性和智能化等方面。同时,分析了全闪存阵列和中端存储集群对高端存储市场的冲击,以及高端存储在不同应用场景中的发展趋势。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
  • 美团优选推荐系统架构师 L7/L8:算法与工程深度融合 ... [详细]
  • 本文介绍了UUID(通用唯一标识符)的概念及其在JavaScript中生成Java兼容UUID的代码实现与优化技巧。UUID是一个128位的唯一标识符,广泛应用于分布式系统中以确保唯一性。文章详细探讨了如何利用JavaScript生成符合Java标准的UUID,并提供了多种优化方法,以提高生成效率和兼容性。 ... [详细]
author-avatar
安全小护士
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有