`

【原创】HBase中列族设计的原则

阅读更多

    HBase表在进行模式设计时,首先考虑的一个问题是,这个表应该有多少个列族。一张表设计多少列族合理呢?相信这个问题困扰着不少HBase初学者。让我们来先简单分析一下HBase的实现原理。

    HBase中的表和其数据库一样,也是由行和列组成的,虽说模式有些不同。HBase中的表可能达到数十亿行和数百万列,表的大小可能达到TB级,显然不可能在一台机器上存放整张表。相反,一张表在存储时会切分成小一点儿的数据单位,然后分配到多台服务器上。这个小一点儿的数据单位叫region。HBase表中数据的访问是通过其对应region来进行管理的,region内对列族的管理如下图:

 
    每个列族都会MemStore和BlockCache,数据在硬盘中以HFile形式存储。HFile不会存储跨列族的数据。
    因此,根据上图可以得出,HBase表中列族设计的原则是:
    一、同一个列族里存储相似访问模式的所有有数据。
    可以理解为关系数据库中一对一关系,一对一关系的两张表,在HBase中可以存储在一张表中,放到不同的列族。
    二、大多数的表,设计一个列族就够了。
    在HBase中,高表比宽表性能好,可以设计多张表来满足需求。
 
  • 大小: 64.8 KB
分享到:
评论

相关推荐

    Hbase 删除某一列

    删除Hbase中某个表的一列值 命令 java -jar deleteOneColumn.jar(这个文件的路径) '表名' '列簇名' '列名'

    HBase数据库设计.doc

    HBase的模式设计包括创建和更新列族,以及行键的设计原则。行键设计是关键,因为它决定了数据的存储和访问效率。通常建议行键设计为能够快速定位数据且具有一定排序意义的值。 HBase的拓扑结构由RegionServer、...

    hbase 表设计

    当一个行键被访问时,该行键下的所有列族都会被加载到内存中,因此合理的列族设计可以有效地减少数据的加载时间和提升访问速度。 时间戳的使用是HBase设计的另一个重要方面。HBase通过时间戳支持数据的版本控制,这...

    hbase原理和设计

    1. **表和列族**:HBase中的表由行和列组成,列被划分成多个列族(Column Family),每个列族又包含多个列。RowKey是表的主键,用于排序记录。 2. **Region**:随着数据量的增长,表会自动分割成多个Region。每个...

    浅谈HBASE数据结构设计.pdf

    - Delete:Delete操作用于删除HBase中的数据,可以指定删除某行的全部数据,也可以指定删除某行的某列的数据。 7. 高级特性 - 分区键(Partition Key):通过配置HBase的分区键,可以实现数据的预分区,有助于提高...

    nosql实验二-HBase的表结构设计.docx

    - **稀疏性**:由于列族是预定义的,设计时应考虑到列族内的列可能是稀疏的,即并非所有行都会包含所有列。 - **时间戳**:HBase 自动为每条数据记录时间戳,便于版本控制和历史数据追踪。 - **分区键**:RowKey ...

    HBase官方文档中文版-HBase手册中文版

    HBase是一种分布式、基于列族的NoSQL数据库,由Apache软件基金会开发并维护,是Hadoop生态系统中的重要组件。这份“HBase官方文档中文版”提供了全面深入的HBase知识,帮助用户理解和掌握如何在大数据场景下有效地...

    Hbase 官方中文文档

    - 涉及了在HBase中进行模式设计时需要考虑的要素,包括列族的创建、行键设计、版本数量控制等。 - 探讨了支持的数据类型和使用第二索引以及替代查询路径。 - 讨论了设计时的一些限制和用例,以及对操作和性能产生...

    大数据书籍-Hbase架构设计(高清)

    1. **Hbase基础理论**:包括Hbase的数据模型、表的设计、行键与列族的概念,以及Hbase如何通过 Region Server 实现数据分区和负载均衡。 2. **Hbase操作与管理**:介绍如何使用Hbase Shell进行数据操作,如创建、...

    【HBase企业应用开发】工作中自己总结的Hbase文档,非常全面!

    2. 列族(Column Family):在HBase中,表中的每个列都属于某个列族。列族是表的schema的一部分,并且必须在使用表之前进行定义。列名都以列族作为前缀。列族的访问控制、磁盘和内存的使用统计等都是在列族层面进行...

    HBASE数据库.docx

    在物理存储层面,HBase将每个列族的数据存储在HDFS上的单独文件中,不存储空值。每个Cell由Row Key、Column(Family+Label)和Version唯一确定,其数据以字节码形式存储。表的所有行按照Row Key的字典序排列,并...

    HBASE schema design

    在HBase中,表由行键、列族和列限定符组成。行键在表中是唯一的,并且在插入数据时才实际存在。列族是列的集合,并且在设计时需要注意的是,一旦创建,列族下的列就可以动态添加,这提供了很大的灵活性。列限定符与...

    hbase 完全使用手册

    它的设计灵感来源于 Google 的 Bigtable,是一个列式存储的数据库管理系统,利用了列族概念来优化数据库的读写性能和存储效率。 该手册内容全面,涵盖了从 HBase 的基本概念、安装配置到运行维护的方方面面。首先,...

    hbase的Rowkey设计方案.pdf

    在HBase中,MemStore和BlockCache是两个关键的缓存机制。MemStore用于列族/Store级别的写入缓存,而BlockCache则服务于RegionServer级别的读取缓存。Rowkey长度的控制尤为重要,过长的Rowkey会导致缓存中数据密度...

    HBase中文教程.pdf

    在HBase中,表结构不是静态的,可以动态地添加新的列族或者列。这种灵活的数据模型在处理非结构化数据或半结构化数据时非常有用。HBase是专为大数据场景设计的,具有横向扩展的能力,可以运行在普通的商用硬件集群上...

    HbaseTemplate 操作hbase

    HbaseTemplate的`get`方法接受RowKey作为参数,返回一个Result对象,其中包含了该行的所有列族和列的信息。 4. **执行(execute)操作**:`execute`方法是一个更为灵活的接口,允许我们传递一个HBase操作的回调函数...

    java大数据作业_3HBase

    在HBase中,表结构由一系列的行组成,每行都有唯一的row key,并且每个单元格都存储在列族下。为了描述这样一个表结构,我们可以使用Java中的Map来表示列族,List来表示具体的列名。以下是一个简单的示例代码: ```...

    HBase官方文档

    在HBase中,用户需要对数据进行建模和设计。这包括选择合适的列族数量、设计行键、设置版本数量、支持的数据类型以及如何处理生存时间(TTL)等。良好的Schema设计能够大幅提高HBase的性能。 ### HBase与MapReduce ...

    Python-HBase中文参考指南

    在Python中创建HBase表,需要指定表名、列族以及可能的初始配置。例如,使用`happybase`创建一个名为`my_table`,列族为`cf1`的表: ```python import happybase connection = happybase.Connection('localhost') ...

Global site tag (gtag.js) - Google Analytics