`
tobyqiu
  • 浏览: 40205 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hbase 扫盲和 kv 设计

 
阅读更多

hbase 不像传统数据库.区别主要是
orcl 里面 建表 要指定多少列,数据类型 等.
hbase 里面 也有建表的概念,但是只不过定义了一个表名,里面的列是不定义的.任何数据都可以往表里面塞,换句话,如果我忘记了 塞了什么,都没地方去查.这样会导致表会无限膨胀,而且没人指定表里面有什么.所以nosql数据库 都设置了生命周期, 多少时间自动回收空间.

那么塞进去的,要取出来就只能靠rowkey.
你把rowkey告诉别人,别人才能取数.

比如 下面这个

concat(concat(substr(MD5(concat(coalesce(acty_id,''),'93020')),1,4),':md5'),'\004',acty_id,':acty\004','93020:app\004',acty_id_p,':actyp\004',bc_type,':biz\004','dhr:','${date}${hour}','\004',seller_id,':seller') as rowkey

 

 

93020 是app_id ,
这个key是由 app_id,acty_id,acty_id_p,bc_type,dhr,seller_id 等组成的.

换句话,这些东西可以定义 row的唯一性,并且提供了给你select的条件. 

\004 是分隔符

这个列的第一搜索条件是app_id(93020),第二搜索条件是dhr,然后是seller_id,,然后依次是bc_type,acty_id_p,acty_id,

但是rowkey的设计并不是按照 先app,然后时间,seller来的.

原因是为了打散数据.

一个表可能有多个app,也有可能只有一个app.

如果把app现在前面

rowkey 应该是 app+时间+卖家id+卖家的属性.

那么select的时候 先回扫所有的app=1的数据,然后再扫,时间=你要的时间,再扫卖家id.

这样效率太低了.

先把 活动id+app 作md5 就是为了打散这些数据,然他存在不同的地方.为啥不用 app+活动id 作md5,也是这个原因.app肯定是比活动少的.用app+活动id 的效果没有 活动id+app 的好.

打散了以后, 因为我的业务逻辑不是要具体定位那个seller. 而是要 参加了活动的,(子活动+主活动),各种类型的卖家,在某个时间段的 所有卖家.

所有接下来就应该按照我的需求,把app,活动id,父活动id,带上.

 

注意 别的都是v+key. 如果 acty_id,':acty\004'

而到了 时间这里 是 'dhr:','${date}${hour}',

原因是,别的这么设计就是为了打散数据,而时间的话,需要给他一个标志位,定位时间节点.

 

 

 

分享到:
评论

相关推荐

    hbase原理和设计

    ### HBase原理与设计 #### 一、HBase概述 HBase是一个开源的、高性能的分布式存储系统,基于Hadoop之上构建。它提供了一个高度可靠、面向列的存储方案,适用于处理大规模的数据集。HBase的设计特点包括: 1. **高...

    HBase数据库设计.doc

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

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

    《大数据书籍-Hbase架构设计》是一本专注于大数据领域中分布式数据库Hbase的深度解析书籍,适合对大数据技术尤其是Hbase感兴趣的程序员和数据分析师。书中详细阐述了Hbase的核心原理、生态环境以及在实际项目中的...

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

    【HBase 表结构设计】 HBase 是一种分布式非关系型数据库,它是...总的来说,HBase 的表结构设计需要综合考虑数据的组织、查询效率、扩展性和数据模型的灵活性。每个实例都体现了这些原则,并根据特定场景进行了优化。

    浅谈HBASE数据结构设计.pdf

    HBase的设计目标是存储并处理大量的稀疏数据,对于拥有数以亿计的行和数以千计的列的表格,HBase可以实现快速的随机访问和高效的数据读写。 2. HBase基本概念 - 表(Table):HBase中所有的数据都存储在表中,表...

    hbase的Rowkey设计方案.pdf

    总之,HBase的Rowkey设计是一门艺术,需要平衡查询效率、数据分布和系统性能。合理的Rowkey设计能够显著提升HBase的性能,避免数据倾斜,从而更好地支持大规模数据处理和实时分析的需求。通过预分区和随机散列,我们...

    hbase 表设计

    HBase架构与传统的关系型数据库(如MySQL、PostgreSQL、Oracle等)有着显著的区别,其设计在某些方面为了扩展性和灵活的模式(Schema)而牺牲了一些传统特性。HBase的数据模型是稀疏的、分布式的、持久化的多维排序...

    hbase的rowkey设计与hbase的协处理器运用.docx

    本文将详细介绍 HBase 的 RowKey 设计和协处理器运用。 HBase 的介绍 HBase 是一个基于 HDFS 的分布式、面向列的 NoSQL 数据库,具有高性能、可靠性和扩展性等特点。HBase 的特点包括: 1. 面向列:HBase 是面向...

    基于集群的HBase安装和配置

    HBase是一个分布式、可扩展的列式数据库,它是Apache Hadoop生态系统的重要组成部分,专为处理大规模、半结构化或非结构化的数据集而设计。 - **HBase服务器架构**: - **HBaseMaster Server**:负责管理HRegion...

    大数据开发之Hbase基本使用及存储设计实战教程(视频+笔记+代码)

    │ Day15[Hbase 基本使用及存储设计].pdf │ ├─02_视频 │ Day1501_Hbase的介绍及其发展.mp4 │ Day1502_Hbase中的特殊概念.mp4 │ Day1503_Hbase与MYSQL的存储比较.mp4 │ Day1504_Hbase部署环境准备.mp4 │ Day...

    某大数据公司内部Hbase性能测试详细设计文档及用例

    本文档旨在详细介绍HBase性能测试的设计文档和实践经验,涵盖了HBase性能测试需要注意的一些参数设置和测试用例。下面是从该文档中提炼的相关知识点: 1.1 Pre-Creating Regions 在HBase中,默认情况下,在创建表...

    HbaseTemplate 操作hbase

    通过HbaseTemplate,我们可以执行常见的CRUD(创建、读取、更新和删除)操作以及更复杂的查询。 1. **HbaseTemplate的初始化**:在使用HbaseTemplate之前,我们需要在Spring配置文件中配置HBase的相关连接信息,如...

    Hbase性能测试详细设计文档及用例q

    默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都向这一个region写数据,直到这个region足够大了才进行切分。 一种可以加快批量写入速度的方法是通过预先创建一些...

    Hbase 表设计与操作

    HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。 HBase是Google Bigtable的开源实现,类似Google Bigtable...

    hbase-sdk是基于hbase-client和hbase-thrift的原生API封装的一款轻量级的HBase ORM框架

    hbase-sdk是基于hbase-client和hbase-thrift的原生API封装的一款轻量级的HBase ORM框架。 针对HBase各版本API(1.x~2.x)间的差异,在其上剥离出了一层统一的抽象。并提供了以类SQL的方式来读写HBase表中的数据。对...

    奇虎360 HBASE 二级索引的设计与实践

    结合上文提供的部分内容,我们可以看出奇虎360在设计和实践HBASE二级索引时,面对的挑战和解决这些问题时所采取的策略。首先是数据量巨大,其次是查询需求复杂,包括多维字段查询和实时查询。通用模式中的结构化存储...

    hbase备份和数据恢复

    在大数据领域,HBase是一个基于Hadoop的分布式数据库,它为海量结构化和半结构化数据提供了高可靠性、高性能的存储方案。HBase备份和数据恢复是系统运维中至关重要的一环,确保了业务连续性和数据安全性。同时,...

    hbase入门和使用

    HBase设计用于高并发读写,具有很好的水平伸缩性和自动故障转移能力。它通过预写日志(Write-Ahead Log, WAL)机制来保证数据的高可用性和一致性。HBase的表支持范围查询,且扫描操作效率很高。 5. HBase与Spark、...

    HIVE和HBASE的整合

    1. HBASE表的设计:HBASE表的设计需要考虑到数据的存储和访问需求,确保表的结构合理和高效。 2. 字段映射关系:HIVE表和HBASE表之间的字段映射关系需要明确,确保数据的正确性和一致性。 3. 数据类型:HIVE和HBASE...

    HBASE架构和原理解析

    ### HBASE架构与原理详解 ...通过其独特的数据模型和分布式架构,HBase能够在保持高可靠性和高性能的同时,支持海量数据的存储和实时访问。对于需要处理PB级数据的应用场景而言,HBase无疑是一个强大的选择。

Global site tag (gtag.js) - Google Analytics