一种动态编译视图的方法和系统技术方案

技术编号:41186413 阅读:15 留言:0更新日期:2024-05-07 22:18
本发明专利技术涉及视图访问技术领域,提供一种动态编译视图的方法和系统,包括:在创建视图时,构建视图依赖的查询树结构以及数据库依赖对象表,将构建的查询树结构以及数据库依赖对象表保存至视图系统表中;在解析视图引用时,对视图系统表中的数据库依赖对象表进行依赖检查;根据依赖检查结果,对视图进行动态编译。本发明专利技术动态编译视图的方法和系统,可以减少开发工作;当视图依赖的数据库对象发生变化时,只需更新视图已有查询树中的数据库对象OID信息,不需要重新生成整个查询树;通过将重新更新后的数据库依赖对象表、查询树结构更新到视图系统表中,使得再次访问视图时即可获取最新的查询树结构,避免应用层手动删除视图和重建视图。

【技术实现步骤摘要】

本专利技术涉及视图访问,尤其涉及一种动态编译视图的方法和系统


技术介绍

1、视图(view)是一种虚拟的表,其结构和数据来自于一个或多个基本表,可以被当作普通表一样进行查询操作,但实际上不存储任何数据。在数据库中,视图可以被看作是一种数据访问的方式,它可以隐藏底层表的复杂性,提供简洁易懂的数据访问接口,方便用户进行查询、分析和报表等操作。

2、opengauss在创建视图时,会将视图依赖的查询语句解析为查询树结构,将查询树结构序列化后会保存到系统表中。其他sql语句访问视图时,从系统表中获取序列化后的查询树,经过反序列化并合并到当前sql的查询树中,进而实现视图的访问。但是,opengauss的视图在生成化查询树时,将数据库对象都转换为相应的对象标识符oid,oid是一种内部的标识,而sql中都是通过数据库对象名进行操作;当数据库对象发生删除后重新创建、重新编译等ddl操作时,数据库对象的oid会发生变化,就导致视图查询树信息中的oid失效,并且不确定变化后的数据库对象oid是什么,导致视图失效。

3、目前,opengauss通过本文档来自技高网...

【技术保护点】

1.一种动态编译视图的方法,其特征在于,所述方法包括:

2.根据权利要求1所述的动态编译视图的方法,其特征在于,在创建视图时,构建视图依赖的查询树结构以及数据库依赖对象表,将构建的查询树结构以及数据库依赖对象表保存至视图系统表中,包括:

3.根据权利要求2所述的动态编译视图的方法,其特征在于,数据库对象信息包括数据库对象的对象标识符、名称和类型信息。

4.根据权利要求1所述的动态编译视图的方法,其特征在于,在解析视图引用时,对视图系统表中的数据库依赖对象表进行依赖检查,包括:当其他SQL语句访问视图时,从视图系统表中获取视图依赖的查询树结构,在将获取的...

【技术特征摘要】

1.一种动态编译视图的方法,其特征在于,所述方法包括:

2.根据权利要求1所述的动态编译视图的方法,其特征在于,在创建视图时,构建视图依赖的查询树结构以及数据库依赖对象表,将构建的查询树结构以及数据库依赖对象表保存至视图系统表中,包括:

3.根据权利要求2所述的动态编译视图的方法,其特征在于,数据库对象信息包括数据库对象的对象标识符、名称和类型信息。

4.根据权利要求1所述的动态编译视图的方法,其特征在于,在解析视图引用时,对视图系统表中的数据库依赖对象表进行依赖检查,包括:当其他sql语句访问视图时,从视图系统表中获取视图依赖的查询树结构,在将获取的查询树结构经过反序列化合并至当前sql语句的查询树之前,对视图依赖的数据库依赖对象表进行依赖检查。

5.根据权利要求1所述的动态编译视图的方法,其特征在于,在解析视图引用时,对视图系统表中的数据库依赖对象表进行依赖检查,包括:从视图系统中表中获取数据库依赖对象表,检查数据库依赖对象表中的每个数据库依赖对象的对象标识符是否有效。

6.根据权利要求1所述的动态编译视图的方法,其...

【专利技术属性】
技术研发人员:那海涛何小栋
申请(专利权)人:北京海量数据技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1