前言

视图是从一个或多个表导出的虚拟的表,区分权限是其重要作用之一。举个例子,在班级里,班主任需要掌握全班同学各科成绩,获悉整体状态以便全面指导,而数学老师只需要知道同学们的数学成绩。

数据库中我们常听到视图的说法。其实,大数据多源查询分析引擎openLooKeng也是有视图的概念,下面会以Hive Connector对存在的几种视图进行讲解。

VDM连接器

这个是openLooKeng新开发的一个连接器,主要可使用场景如:在一些场景中,需要在同一个会话或视图中管理或访问多个数据源,同时,用户不需要关心数据的分布和来源。

虚拟数据市场(VDM)连接器旨在将该特性引入openLooKeng。

VDM连接器支持:

· 创建、更新和删除组合多个目录的视图

· 通过视图访问真实数据

· 通过视图管理用户权限

· 记录每个用户使用VDM视图的情况

具体的配置可以参考官网:

https://openlookeng.io/zh-cn/docs/docs/connector/vdm.html

根据官网的指导我们知道VDM连接器的后端存储可以支持HDFS和关系型数据库,这里采用的是mysql进行存储。

以上是基于hive connector中的一张student表创建了一个视图存储在vdm中。

View in Hive

除了上面的提到的VDM连接器外,openLooKeng视图也可以存储在Hive connector中,我们可以按照官网的指导:

https://openlookeng.io/zh-cn/docs/docs/connector/hive.html

配置好hive connector,这样我们可以参考上面的例子进行视图的创建和查询。

以上是基于hive connector创建的openLooKeng视图然后存储在hive connector中。

Hive View

所谓的Hive view其实就是在hive 中创建的视图,openLooKeng也支持访问hive 中创建的视图,如下我们在hive中创建一个视图然后在openLooKeng中访问:

先在beeline中创建一个hive view

然后我们在openLooKeng侧对这个视图进行查询,可以看到查询结果和hive中的一致的。

原理解析

这里主要介绍视图的创建和查询流程,如下图示为视图的创建流程:

当openLooKeng接收到创建视图请求时,会调用DataDefinitionExecution进行处理,然后再调用对应MetaDataManager处理,如果是Hive 连接器则会调用HiveMetadata处理,VDM连接器则会调用VdmMetadata处理,将view中相关的sql语句编码成viewData,最后存储在connector中。

以下是视图的查询流程:

这个跟视图创建流程不太一样,当一个请求到达服务端时,由SqlQueryExectuion进行处理做语法解析,在做visitTable时,先通过MetadataManager通过对应连接器的metadata获取视图,hive 连接器则为HiveMetadata, VDM则为VdmMetadata,获取实际的table,如果获取的table为视图,则递归再进行StatementAnalyzer#paserView和#analyzeView进行视图的解析,直到解析出最终的物理表为止。在HiveMetadata#getView时,如果是Hive View则由HiveMetadata转成openLooKeng的view,再交给StatementAnalyzer做语法解析,这样处理流程就像openLooKeng的view一样处理了。

以上就是openLooKeng中视图的创建和查询流程。


openLooKeng, Make Big Data Simplified

openLooKeng是一款开源的高性能大数据多源分析引擎,提供统一的SQL接口,具备跨数据源\数据中心分析能力,为大数据用户提供极简的数据分析体验。如果您有任何想要交流的,欢迎在社区代码仓内提Issue;也欢迎加小助手微信,进入专属技术交流群。

​社区官网 https://openlookeng.io

代码仓地址 https://gitee.com/openlookeng

社区公众号 openLooKeng

社群小助手微信 openLooKengoss

openLooKeng视图详解相关推荐

  1. Django 基于类的通用视图详解

    原文出处:https://segmentfault.com/a/1190000005685454 Django 学习小组:基于类的通用视图详解(一) 通过三周的时间我们开发了一个简单的个人 Blog, ...

  2. oracle查看视图定义语句_oracle视图详解

    Oracle 视图详解 一. 视图的定义 视图(view),也称虚表, 不占用物理空间,这个也是相对概念,因为视图本身的定义语句还是要存储在数据字典里的.视图只有逻辑定义.每次使用的时候,只是重新执行 ...

  3. MySQL数据库,从入门到精通:第十四篇——MySQL视图详解

    MySQL数据库,从入门到精通:第十四篇--MySQL视图详解 第 14 篇_视图 1. 常见的数据库对象 2. 视图概述 2. 1 为什么使用视图? 2. 2 视图的理解 3. 创建视图 3. 1 ...

  4. 十六、MySQL 视图详解

    文章目录 一.常见的数据库对象 二.视图概述 2.1 为什么要使用视图? 2.2 视图的理解 2.3 视图的作用 三.视图常用操作 3.1 查看创建视图的权限 3.2 创建视图 3.3 查看视图 3. ...

  5. 【UML 建模】UML建模语言入门 -- 用例视图详解 用例视图建模实战

    . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/18964835 . 一. 用例视图概述 用例视图表述哪些 ...

  6. mysql视图_mysql之视图详解

    视图就是一个存在于数据库中的虚拟表. 视图本身没有数据,只是通过执行相应的select语句完成获得相应的数据. 目录 CREATE [OR REPLACE] [ALGORITHM = {UNDEFIN ...

  7. mysql创建全外连接的视图_关系型数据库 MySQL 表索引和视图详解

    原创: JiekeXu JiekeXu之路 一.索引 数据库索引通俗的讲就是和书本的目录一样,主要就是为了提高查询数据的效率.由于数据存储在数据库表中,所以索引是创建在数据库表对象上,由表中的一个字段 ...

  8. oracle中的视图详解

    1.视图的概述 视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据.视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表.视图来源于表,所有对视图数 ...

  9. mysql视图_MySQL视图详解

    在讲解视图的时候我们的明白下面几个概念. 什么是视图? 视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据.作为一个select语句保存在数据字典中的. 视图是干什么用的? 通过视图, ...

  10. mysql实现物化视图详解及视图与物化视图区别

    再一次sql优化中一个select count(*)语句因数据量实在太大,已经无法从简单的索引什么进行优化了,在同事的推荐下考虑到了物化视图 物化视图是相对于视图而言的,但是两者实际上并没有什么关系就 ...

最新文章

  1. python读取配置文件获取所有键值对_python笔记14-读取yaml配置文件(pyyaml)
  2. CentOS下LAMP一键yum安装脚本
  3. 单片机如何使用振动传感器801s_振动传感器如何跟踪测量机器的健康状况
  4. Oracle中start with...connect by prior子句用法
  5. 从软件工程看,语言只是工具
  6. mui组件 a 锚点定位(Demo案例演示)- 代码篇
  7. GitHub 标星 5.7w,如何用 Python 实现所有算法?
  8. mysql实现自动更新时间戳
  9. Solidworks工程图转CAD映射配置指南
  10. 主力吸筹猛攻指标源码_成功率90%以上【主力吸筹+买点提示+使用方法】通达信指标公式源码...
  11. 一卡通系统软件测试,智能一卡通管理系统检测流程
  12. matlab数据库开发教程pdf,Matlab数据库编程入门.pdf
  13. CSDN调整图片大小
  14. Python wordcloud 如何修改云图字体颜色
  15. 如何办理杭州市民卡|非杭户籍人员个人申领流程
  16. 数据库中1NF,2NF,3NF的判别
  17. 修改Google Chrome主页
  18. log 的抓取与分析
  19. 12个开源的后台管理系统
  20. Teamcenter FMS

热门文章

  1. linux如何用命令进入u盘,linux 下如何打开u盘
  2. 产品读书《社群经济:移动互联网时代未来商业驱动力》
  3. Excel-VBA基础(7):VBE开发环境的主要优化配置
  4. 马化腾绝地逢生:山重水复疑无路,柳暗花明又一村
  5. 迅雷下载VS2015地址,快、狠,准
  6. 并发与同步、信号量与管程、生产者消费者问题
  7. work-stealing调度算法
  8. 生成随机数字字母组合参数
  9. 免费开源cms自助建站系统大全,不会编程也可以自己建网站
  10. lingo纳什均衡代码_传统的战略式博弈求解纳什均衡方法——虚拟博弈(Fictitious Play)讲解及其代码...