最新要闻
- 小红书布局AI大模型:上线AI绘画应用
- 旅客问路被工作人员怼回去多读书 车站回应:严肃处理|环球微速讯
- 天天视讯!航拍安徽岳西茭白田:满眼葱绿孕育生机
- 88年后入土为安 云南禄劝隆重安葬21具红军烈士遗骸
- 新消息丨厂商为何要封杀32位APP?真实原因揭开
- 比商超便宜一半多!伊利巧乐兹大促:券后每支2.4元起
- 3090 Ti能抵7200元 iGame以旧换新7日开启:RTX 40显卡这下真的便宜了 天天视讯
- 焦点快播:1049元 创维推出新款23.8电竞显示器:165Hz Fast IPS屏
- 每日聚焦:村里又来年轻人 发展动力更强劲
- 重磅!“听音写稿”成真 讯飞听见重大升级:一段录音 一键成稿 今热点
- 热资讯!菜鸟驿站爆改大征集:夜间自助取件 这5个城市方便了
- 国产AI逆袭!一图看懂讯飞星火:文本生成、知识问答、数学三大能力已超越ChatGPT
- 理想汽车五一出行报告出炉:行程1.44亿公里、一半都在烧油
- 世界聚焦:山东黄金董事长李航:预计金价仍有进一步上涨空间
- 今日视点:首座深远海浮式风电平台完成海上安装
- 头条:男孩掉入黄河被救 家长抬羊登门拜谢 网友:知恩图报的正确打开方式
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
最新消息:SQL 解析在 CloudQuery 中的应用
hi 好久不见!今天将为大家带来一期干货满满的技术分享。
作为一款数据库管控平台,大家通常认为 CloudQuery 的核心能力是对平台的管控,包括统一入口管理、权限体系、审计分析等,但实际上 CloudQuery 的核心技术点之一在于其独特的 SQL 解析能力。
01
(资料图片)
SQL 解析功能界定
SQL 解析是指将结构化查询语言( SQL 语句)转换成可以被数据库系统理解和执行的内部表示形式的过程。在执行 SQL 查询之前,数据库系统需要对查询语句进行解析,以确定查询语句的语法是否正确,是否存在语义错误,并生成执行计划。
目前 SQL 解析工具有 Druid、JSqlParser、Apache Calcite、Presto 等,它们都提供了一些 API 用于分析 SQL 语句中的信息,比如获取表名、列名等字段。但是上述工具提供的 SQL 解析功能通常封装性比较强,扩展性不足,支持的数据源有限,在许多特殊场景下它们无法准确的给出 SQL 解析结果。
因此, CloudQuery 技术团队选择使用 ANTLR 作为 SQL 解析的引擎。ANTLR 作为 SQL 解析引擎具有很多优势,它帮助我们构建高效、可扩展和易于维护的 SQL 解析器。
02
SQL 解析原理介绍
SQL 解析是将用户输入的 SQL 语句转换为数据库能够理解的结构化查询语言的过程,与普通编程语言的解析无本质区别。主要分为词法分析、语法分析、语义分析、优化、代码生成这些步骤。SQL 解析的原理可以分为两个主要阶段:词法分析和语法分析。
词法分析
词法分析是将 SQL 语句分解为一个个单独的 Token,标识每一个关键字、符号或者其他语法元素的过程。词法分析器会逐个读取 SQL 语句中的字符,根据预定义好的规则组成不同的 Token,并将 Token 序列传递给下一个步骤。
比如,下面是一个简单的 SELECT 语句:
SELECT FirstName FROM Employee WHERE Department = "Sales"
在进行词法分析后,将生成的 Token 序列如下:
图片
语法分析
语法分析是将 Token 序列转换成语法分析树,并进行语义分析、类型检查等处理的过程。语法分析器会根据事先定义好的 SQL 语法规则,将 Token 序列转换为语法分析树,并对其进行分析,以确定 SQL 语句是否符合语法规范。
比如,针对上述 SELECT 语句,语法分析器会将其转换为以下语法分析树:
SELECT_STATEMENT/ | \ SELECT COLUMN_LIST FROM WHERE| | |FirstName Employee Department = "Sales"
SQL 语句数据收集
在经过词法分析和语法分析的步骤后,我们就得到了一棵语法分析树。我们要收集 SQL 语句中的表名、列名、表达式等信息,其实就是遍历这个语法树的各个节点,将想要获取的信息保存下来。
在上面的语法树中,我们通过访问 COLUMN_LIST 节点可以获取到语句中查询的列名,通过 FROM 节点可以获取到语句中查询的表名,通过WHERE 节点可以获取到语句中的查询条件。
有了这些信息,我们就可以基于这些信息做许多数据库方面的功能,比如 SQL 语句权限管控、SQL 合法性检查、SQL 高危操作检查等。
03
SQL 解析在 CloudQuery 中的应用
CloudQuery 很多功能的实现都离不开强大的 SQL 解析能力,SQL 解析是 CQ 稳步前行的一大基石。
SQL 高亮
在编辑框中输入一条 SQL 语句,可以看到语句中的关键字部分 SELECT、FROM、WHERE 会被渲染成蓝色,这其实就是上面讲到的词法分析的应用。
图片
在语句经过词法分析后,语句会变成一系列 Token,Token 代表了语句中不同类型的字符。Token 大致上可以分为关键字、标识符、数字、字符串、注释这几种,然后编辑器就可以根据这几种类别,将用户输入的 SQL 语句进行着色。
语法提示
我们在输入 SQL 的过程中,比如输入下面的文本:
SELECT * FROM SYS.
通常输入到这里的时候,我们希望提示出 SYS 下面的一些信息来帮助我们快速写完 SQL,比如提示出表名、视图名、函数名等。目前 CloudQuery 在用户书写 SQL 语句的过程中有完善的智能提示功能, 包括提示出关键字、表名、列名、函数名、子查询别名等。
这里 SQL 的智能提示技术就是上面讲到的语法分析的应用,当我们输入 SELECT FROM SYS. 的时候,其实已经经过语法分析构成了一棵语法树,只是这棵语法树不完整,CloudQuery 在用户输入 SQL 语句时会实时遍历语法树,找出当前语法树中缺失的节点,在例子中缺失的节点就是表名节点,由此可以得到我们当前提示信息应该是 SYS 下的表名或视图名。
图片
SQL 语句权限控制
CloudQuery 使用基于角色的权限访问控制体系,权限控制粒度可以详细到每一种 SQL 语句、每一个数据库对象。比如常用的 SELECT、UPDATE、DELETE、CREATE TABLE、CREATE FUNCTION、函数调用等语句。
这里语句权限的控制就是 SQL 解析的重要应用场景,CloudQuery 在接收到用户输入的 SQL 语句后,会经过上述的词法分析和语法分析步骤,再遍历语法树收集 SQL 语句中的信息。在信息收集过程中,会提取出 SQL 语句中涉及到的所有表名、列名、别名、函数、查询条件等信息,接下来会对这些信息做进一步加工处理,比如消除 TABLE 的别名、绑定列的来源表、对象的真实类型查询等。
无权限的用户输入下面的SQL语句,将会受到权限管控:
SELECT * FROM "SYS"."ACCESS$" LEFT JOIN "SYS"."ACLMV$";DELETE FROM "CQ"."USER" WHERE ID = 1;CREATE OR REPLACE FUNCTION GET_UUID RETURN VARCHAR2 ISuuid VARCHAR2(32);BEGINuuid := REPLACE(SYS_GUID(),"-","");RETURN uuid;END;BEGIN"CQ"."GET_UUID"();END;
图片
动态过滤数据行
CloudQuery 支持数据行安全控制,行安全控制是 CloudQuery 的一项安全特性,它允许管理员定义基于行的安全规则,以限制用户在表中的访问权限。
使用行安全控制,可以根据用户的角色、组织、部门等信息来动态控制数据的可见性,从而增强数据库的安全性。CloudQuery 的行安全控制条件支持任意的 SQL 表达式、支持引用用户的任何参数值、支持引用系统级别的参数值、支持引用环境变量等。
下面用一个例子说明行安全控制的使用场景: 存在一张业务数据表,其中有一个部门字段( dept ),管理员希望普通用户在查询这张表里的数据时,只能查询到自己部门的数据。在 CloudQuery 可以通过给表配置行安全控制实现上面的需求,配置方式类似下面这样:
DEPT = "${USER.DEPT}"
上面配置中 DEPT 是表中的列名, ${USER.DEPT} 是引用用户的部门参数,在真正执行 SQL 时这里会被替换成用户的真实部门值。用户在执行下面的 SQL 语句时:
SELECT * FROM DEPT;
最终执行的 SQL 会被修改成:
SELECT * FROM DEPT WHERE DEPT = "dept1";
行安全控制的实现方式也依赖于 SQL 解析,在经过前面所说的词法分析、语法分析、SQL 语句信息收集这几步后,我们可以收集到语句中的需要行过滤的表名,当然还要知道这个表名所在的 SELECT 语句的位置信息, 以及所在 SELECT 语句中 FROM 的位置和WHERE条件的位置。通过这些信息,我们就可以对原始语句进行改写。
以上就是 SQL 解析在 CloudQuery 中的基本应用,正是凭借强大的 SQL 解析能力,CloudQuery 持续不断地为用户提供稳定高效的操作体验。
图片
关键词:
最新消息:SQL 解析在 CloudQuery 中的应用
小红书布局AI大模型:上线AI绘画应用
旅客问路被工作人员怼回去多读书 车站回应:严肃处理|环球微速讯
天天视讯!航拍安徽岳西茭白田:满眼葱绿孕育生机
世界热点评!C#高级编程--反射与特性
88年后入土为安 云南禄劝隆重安葬21具红军烈士遗骸
新消息丨厂商为何要封杀32位APP?真实原因揭开
比商超便宜一半多!伊利巧乐兹大促:券后每支2.4元起
3090 Ti能抵7200元 iGame以旧换新7日开启:RTX 40显卡这下真的便宜了 天天视讯
焦点快播:1049元 创维推出新款23.8电竞显示器:165Hz Fast IPS屏
每日聚焦:村里又来年轻人 发展动力更强劲
推荐6个我经常逛的“小网站”,嘿嘿嘿!!!
【全球播资讯】用Radare2模拟shellcode运行
全球时讯:数仓建模规范--非常全
Vue2的生命周期 每日速递
美国制裁升级,推动国产化网卡发展刻不容缓
重磅!“听音写稿”成真 讯飞听见重大升级:一段录音 一键成稿 今热点
热资讯!菜鸟驿站爆改大征集:夜间自助取件 这5个城市方便了
国产AI逆袭!一图看懂讯飞星火:文本生成、知识问答、数学三大能力已超越ChatGPT
理想汽车五一出行报告出炉:行程1.44亿公里、一半都在烧油
世界聚焦:山东黄金董事长李航:预计金价仍有进一步上涨空间
新消息丨前端开发环境搭建踩坑笔记——npm install node-sass安装失败的解决方案
C/C++代码内捕获异常发生时的调用栈
天天即时看!如何通过代码接入手机在网状态 API
不一样的设计模式——— 重新理解6大原则[外篇]
今日视点:首座深远海浮式风电平台完成海上安装
头条:男孩掉入黄河被救 家长抬羊登门拜谢 网友:知恩图报的正确打开方式
遥遥领先!讯飞星火认知大模型可自动创作 生成虚拟人朗读-每日消息
《银河护卫队3》上映2天票房破7000万 豆瓣评分高达8.7-天天热头条
18.98万起售 曝比亚迪海豹冠军版接受预定:比现款便宜多了
天天速读:科大讯飞刘庆峰:讯飞星火大模型中文能力已经超过ChatGPT
Idea编译:Java找不到符号(终极解决方案篇)_天天要闻
分布式场景下,如何对外提供易变的服务,打造可靠的注册中心?
每日消息!涨知识!你不知道的中国手机号码的编码和划分规则
汽车的供电状态
江阴枪击案嫌犯或已跟踪受害人半年具体是什么情况
哨兵模式立大功 理想L9遭遇奥迪“开门杀”:清清楚楚拍下全过程
天天动态:1.6亿赔款谁来出?承重墙被砸现高楼内仍有人居住 网友称楼体扭曲变形
国产最强AI来了!讯飞星火认知大模型发布:中文超越ChatGPT 英文已接近
要闻:传比亚迪电池配套欧版特斯拉 官方:不予置评
当前区块链研究领域的前沿技术和研究方向
快克智能(603203):短期承压不改趋势 半导体业务落地打开新空间|环球讯息
全球报道:没有金刚钻别揽瓷器活 特斯拉Model Y涉水越野:“脸”都烂了
同比猛涨128% 奇瑞4月销量出炉:狂卖12.7万辆站稳自主第一梯队 天天快播报
环球热头条丨AIGPT中文版(无需魔法)最简单的方式实现AI绘画
当前聚焦:热门的免费 API 合辑整理
.NET几种微服务框架,你用过吗?
热点聚焦:两个系统之间跳转免密登录
承重墙被砸1.6亿赔款谁来出? 法律人士:租户、施工队责任重大
中国电子云成为政企信创促进中心首批成员单位
科济药业AB011联合用药一线治疗胃癌获批临床 全球热文
梦幻西游检查更新失败是什么原因?梦幻西游检查更新失败怎么解决?
美剧《西游ABC》新海报发布:杨紫琼观音、吴彦祖美猴王下凡_世界资讯
男子花32万买二手奔驰获赔98万:车商隐瞒是泡水报废车
戴尔xps13怎么增加固态硬盘?戴尔xps13笔记本参数
富士宝电磁炉质量怎么样?富士宝电磁炉故障大全
多玩盒子是什么时候出的?多玩盒子怎么卸载?
索尼投影机灯泡时间怎么清零?索尼投影机驱动怎么安装?
教师节是中国的还是国际的?教师节为什么定在9月10号?
天天亮点!手机内存卡怎么加密码_手机内存卡怎么加密
旷亮无比的意思是什么?旷亮无比的天空仿写三个词语
林书豪现在在哪个球队?林书豪的父母简介
生肖是按农历还是阳历计算的?96属鼠跟什么属相更配?正确的属相划分时间是什么?
什么是文创产品?文创产品的功能有哪些?文创发展趋势是什么?
一文详解如何在 ChengYing 中通过产品线部署一键提升效率-每日热门
今日快看!存货、负债、坏账持增 经营现金流量净额转负 宏工科技能过会么
特斯拉索赔500万名誉维权案将开庭 被告方为“刹车失灵”车主张女士:积极应诉 每日热议
达人契约能增加多少伤害(达人契约)
MYSQL数据库基础--MySQL子查询怎么操作?_世界百事通
易基因:2023年植物表观转录组研究的最新进展(m6A+m5C)|深度综述
32位进程设置大地址(3G)空间-世界滚动
Unix教程_编程入门自学教程_菜鸟教程-免费教程分享 最新消息
讯息:抖音芭比q是什么意思梗_网络语芭比q是什么意思
天天实时:5月26上映!迪士尼发真人版《小美人鱼》极清剧照:黑小美人鱼好看吗?
德国进口:Knoppers榛子巧克力威化饼干29.9元/13包|环球热闻
漫威回归内地首作!《黑豹2》今日上线网播:“优爱腾”同步上线
天天最新:智联招聘:应届毕业生选择单位就业比例升至57.6%
解析智慧园区的发展瓶颈
Linux下搭建Python2.7环境 环球观焦点
今日快看!git~分支管理规范
余维佳退出?世纪证券官宣新董事长和新总经理,去年投行资管双丰收|世界消息
立夏吃一蛋力气长一万!夏天模式开启:你那有什么习俗?_每日热讯
4999元起!小米13/13 Ultra限量定制色今日首发:三款新配色|全球热议
39999元买它!索尼:我们是游戏电视的引领者
强劲非农数据重燃紧缩预期 美债收益率全线回升 全球快资讯
凝望是什么意思_凝望的意思 天天微头条
环球新资讯:4倍降温吹凉风!小米米家智能蒸发式冷风扇上架:众筹价489元
全球最资讯丨Mate50立功!华为站起来 跻身前十背后:4G打败5G 品牌溢价高买手机就认它
天天热资讯!学系统集成项目管理工程师(中项)系列18a_进度管理(上)
恩施州气象台发布雷电黄色预警【III级/较重】【2023-05-06】
世界热门:ChatGPT最全提示词Prompts总结,看这一篇就够了!
Unity开发Hololens2—交互发布配置
中国高铁真狂魔!一张照片里 五条隧道、五座大桥 观热点
喜欢在沙里挖陷阱的小虫子叫啥?儿时经常玩 如今一斤卖6000 世界观速讯
环球今日报丨研究称脂肪过多会降低智商:吓得我感觉吃个烧烤压压惊
全球热议:火锅里咬起来咯吱咯吱的“贡菜”:究竟是什么?
30%的苹果税不好赚了 iOS 17大改:第三方应用来了
环球视讯!BLG晋级正赛,队内语音很欢乐,Bin想冲进敌方泉水,随便赢
大一一封家书范文500字(热门27篇) 环球动态
灵跃武器怎么转换_灵跃武器怎么获得