[发明专利]一种实现数据表查询限制的装置和方法在审
申请号: | 201710481713.8 | 申请日: | 2017-06-22 |
公开(公告)号: | CN107403104A | 公开(公告)日: | 2017-11-28 |
发明(设计)人: | 高宋俤 | 申请(专利权)人: | 努比亚技术有限公司 |
主分类号: | G06F21/62 | 分类号: | G06F21/62 |
代理公司: | 深圳鼎合诚知识产权代理有限公司44281 | 代理人: | 江婷,李发兵 |
地址: | 518057 广东省深圳市南山区*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 实现 数据表 查询 限制 装置 方法 | ||
技术领域
本发明涉及大数据技术领域,尤其涉及一种实现数据表查询限制的装置。
背景技术
大数据集群天生存在多租户问题,租户之间的数据既要隔离又要互通。在存放大量数据的数据仓库中,所有应用的数据存放在一个数据库表中,并通过各大应用的id号和事件发生的时间ds(一般按天)作为数据仓库的分区字段来区分不同的应用,这个是大数据集群常用的集中式数据存储的方式。对于这种几种存储,就有这样的问题:如何解决租户之间的数据的隔离,同时又具备各大应用之间的数据共享。
如果没有做数据隔离,A应用访问数据时,采用形如:“select*from tbl_events”的查询语句,就会查询到数据库表中其他应用的所有数据。普通的web业务系统碰到这种情况,一般会在查询语句中添加数据访问权限隔离语句(一般是数据所属应用信息),来完成数据访问权限的隔离,添加的数据访问权限隔离语句形如“where tbl_event.appid=xxx”。但遗憾的是,大数据平台有一种即席查询这种业务场景,访问数据使用的sql语句并非程序员编写,而是由数据分析师或者其他接入业务方来编写。普通业务系统碰到这种情况,完全不知道在哪个地方添加数据访问权限隔离语句。
发明内容
本发明的主要目的在于提出一种实现数据表查询限制的装置和方法,旨在解决如何自动在SQL语句中正确地添加数据访问权限隔离语句的问题。
为实现上述目的,本发明提供一种实现数据表查询限制的装置,包括:
解析模块,用于利用语法解析器对待解析语句进行词法、语法的解析,生成语法树;
查询模块,用于查询语法树中是否有表名和/或表重命名对应的第一节点;
判断模块,用于若查询结果为是,则根据第一节点所属的父节点的类型,判断待解析语句中是否存在属于子查询或第一级查询的子句;
更改模块,用于若存在子句,则在子句后加入过滤条件,过滤条件用于利用待查表在数据库中的实际表名对待查表的查询范围进行限定,待查表为表名或表重命名对应的表。
可选的,判断模块,用于判断第一节点所属的父节点中,是否存在上级节点类型为预设查询节点类型的第二节点,若存在,则第二节点对应的子句是属于子查询或第一级查询的子句。
可选的,判断模块,用于对第一节点所属的父节点,按照从下向上的顺序循环以下的步骤:获取该父节点的上级节点类型,并判断上级节点类型是否为预设查询节点类型;若是,则确定当前的父节点是第二节点;否则判断上级节点类型是否是语法树顶级节点类型,若是,则退出。
可选的,查询模块,用于利用事件触发监听的方法对语法树进行遍历;若触发预设的进入表名事件,则触发预设的进入表名事件的节点为表名或表重命名对应的第一节点。
可选的,更改模块,用于判断子句中是否存在预设的查询位置词;若存在,则在查询位置词后面添加限制待查表中被查寻数据来源的语句,待查表为表名或表重命名对应的表;否则,在子句之后添加预设的查询位置词和限制待查表中被查寻数据来源的语句,待查表为表名或表重命名对应的表。
为实现上述目的,本发明还提供一种实现数据表查询限制的方法,包括:
利用语法解析器对待解析语句进行词法、语法的解析,生成语法树;
查询语法树中是否有表名或表重命名对应的第一节点;
若查询结果为是,则根据第一节点所属的父节点的类型,判断待解析语句中是否存在属于子查询或第一级查询的子句;
若存在子句,则在子句后加入过滤条件,过滤条件用于利用待查表在数据库中的实际表名对待查表的查询范围进行限定,待查表为表名或表重命名对应的表。
可选的,根据第一节点所属的父节点的类型,判断待解析语句中是否存在属于子查询或第一级查询的子句包括:
判断第一节点所属的父节点中,是否存在上级节点类型为预设查询节点类型的第二节点,若存在,则第二节点对应的子句是属于子查询或第一级查询的子句。
可选的,判断第一节点所属的父节点中,是否存在上级节点类型为预设查询节点类型的第二节点包括:
对第一节点所属的父节点,按照从下向上的顺序循环以下的步骤:
获取该父节点的上级节点类型,并判断上级节点类型是否为预设查询节点类型;
若是,则确定当前的父节点是第二节点;
否则判断上级节点类型是否是语法树顶级节点类型,若是,则退出。
可选的,查询语法树中是否有表名或表重命名对应的第一节点包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于努比亚技术有限公司,未经努比亚技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710481713.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:文件解密方法和装置
- 下一篇:一种文件系统的权限设置方法及装置