phoenix关联表(视图)

简介

本篇主要介绍phoenix关联hbase表的各种情况,组件的版本不过多介绍了,前面的篇章提了很多次了,想了解的读者可以查看其它篇章

关联表(视图)

phoenix可以理解为一个为hbase服务的中间件,它可以创建关联表或者关联视图跟已有的hbase表建立联系,也可以创建hbase中不存在的表,以下简单介绍一下关联表的特性

  1. 同生共死,phoenix中删除关联表,会将hbase中的表一并删除,这个要非常注意
  2. 字段压缩,phoenix中插入数据,hbase中会将映射的字段压缩,导致hbase中基本看不出原先的字段,当然这也是为了提高性能,实在接受不了也有办法解决,不过性能有些影响
  3. hbase端插入无效,在不关闭字段压缩的情况下,hbase段插入数据无法同步到phoenix段,只有phoenix端插入才有效

当然,以上介绍的可能有点枯燥抽象,下边上点图

伪关联表

使用如下语句,创建hbase中已存在的表映射,此时hbase中已有的数据将获取不到,因为字段压缩编码问题(这真是个神坑这里)

CREATE TABLE RATINGSM (
id VARCHAR NOT NULL PRIMARY KEY ,
"info"."userId" VARCHAR ,
"info"."movieId" VARCHAR ,
"info"."rating" VARCHAR 
)

phoenix端插入数据
在这里插入图片描述
hbase端显示的字段全都是压缩后的编码
在这里插入图片描述
原先的字段在phoenix中全是字符串
在这里插入图片描述
此时hbase端插入数据,phoenix查询不到新数据,可以说这种关联方式是伪关联,单方面以phoenix端为主,而且字段压缩导致hbase端字段理解困难

真关联表

真关联实际上跟伪关联创建的方式类似,就是多了一个字端压缩关闭的设置

CREATE TABLE RATINGSM (
id VARCHAR NOT NULL PRIMARY KEY ,
"info"."userId" VARCHAR ,
"info"."movieId" VARCHAR ,
"info"."rating" VARCHAR 
)column_encoded_bytes=0;

以这种方式创建的关联表可以算真正意义上的关联,无论是hbase端插入数据,还是phoenix端插入数据都可以同步更新,而且编码也是正常的,但是这种方式多少会影响一点性能

还有一点需要注意的地方是,关联表不要从hbase端删除表,会导致phoenix端查询报错,这个就相当于釜底抽薪

关联视图

关联视图,就是在phoenix上建立一个hbase表的视图,hbase表更新的时候,视图也会同步更新,这个没什么坑,视图的id主键一般是由hbase的rowkey映射过来的,所以根据id查询速度会非常快,甚至要超过hbase,因为phoenix是并发查询,但是其它字段就相对慢了,有兴趣了解性能的可以看我另一篇测试2200W数据查询性能的文章:https://blog.csdn.net/weixin_42814075/article/details/95450741

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

局外人一枚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值