本文介绍: Hbase如何解决非索引查询速度慢的问题?原因:Hbase以Rowkey作为唯一索引现象:只要查询条件不是Rowkey前缀,不走索引解决:构建二级索引思想:自己建rowkey索引表,通过走两次索引来代替全表扫描步骤问题:不同查询条件需要不同索引表,维护原表数据与索引数据同步问题解决方案一:手动管理:自己建表、自己写入数据【原表、索引表】方案二:自己开发处理器:协处理器开发成本非常高方案三:第三方工具:PhoenixPhoenix支持哪几种索引,各自的区别和实现原理是什么?

Flume+Kafka+Hbase+Flink+FineBI的实时综合案例

01:课程回顾

  1. Hbase如何解决非索引查询速度慢的问题?

  2. Phoenix支持哪几种索引,各自的区别和实现原理是什么?

    • 索引设计:加快查询的效率

    • 全局索引

      create index 
      
      • 索引表来实现
        • rowkey:查询条件+原表rowkey
        • col:x【占位】
      • 过程:先查询索引表,从索引中查找满足条件的rowkey,再拿rowkey到原表查询结果
      • 场景:写少读多
      • 实现:先拦截写原表的请求,先写索引表,再去写原表
      • 问题:查询的数据都在原表中,必须到原表拿数据,性能相对比较
    • 覆盖索引:基于全局索引

      create index …… include
      
      • 索引表来实现
        • rowkey:查询条件+原表rowkey
        • col:x【占位】
        • col……:经常作为查询结果返回的列
      • 过程:根据查询条件,直接从索引表返回,不再查询原表
      • 场景:写少读多
      • 实现:先拦截写原表的请求,先写索引表,再去写原表
      • 问题:写的性能受到了较大影响
    • 本地索引

      create local index 
      
      • 将索引与数据存储在原表中,索引用一个单独的列族来存储
        • rowkey:这条数据所在Region的StartKey + 查询条件 + 数据的rowey
      • 过程:必须加载全部索引来进行索引查询,牺牲了一定读的性能
      • 场景:写多读多
      • 实现:在写入数据时,直接通过协处理器将数据和数据的索引写入原表的同一个region
      • 特点:数据侵入性比较高,所有读写都基于Phoenix进行读写,盐表不能使用本地索引
    • 函数索引:一般不用

02:课程目标

03:案例需求

原文地址:https://blog.csdn.net/xianyu120/article/details/133805789

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_5181.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注