CN111190886A - 面向数据库访问的计算流图构建方法、访问方法及装置 - Google Patents
面向数据库访问的计算流图构建方法、访问方法及装置 Download PDFInfo
- Publication number
- CN111190886A CN111190886A CN201911360808.XA CN201911360808A CN111190886A CN 111190886 A CN111190886 A CN 111190886A CN 201911360808 A CN201911360808 A CN 201911360808A CN 111190886 A CN111190886 A CN 111190886A
- Authority
- CN
- China
- Prior art keywords
- flow graph
- computation flow
- nodes
- computation
- syntax tree
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/248—Presentation of query results
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种面向数据库访问的计算流图构建方法、访问方法及装置,该构建方法包括:获取SQL语句对应的语法树;根据从所述语法树获取的操作关键字,将所述语法树中的节点转换成计算流图节点,其中,所述操作关键字为From、Where、Group by、Having、Order by、Select或Limit;根据From、Where、Group by、Having、Order by、Select、Limit的从左到右的顺序,为各所述计算流图节点添加有向边;根据添加有向边后的所有所述计算流图节点生成计算流图。通过上述方案能够为数据库处理算法的优化提供便利。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种面向数据库访问的计算流图构建方法、访问方法及装置。
背景技术
现今,无论是大型企业或是中小企业,几乎都有各自需要使用数据库的业务,最为典型的就是各类电子商务平台和金融领域,需要大量的数据处理,而且对于响应速度有极高的要求,可能操作每慢一秒都意味巨额的损失,他们都需要能够提供持续到达且快速响应的数据流。技术发展至今,数据库的实现已经不再是技术瓶颈,各个企业已经不再满足“能用”这个技术层面,而是希望后端在进行数据库操作时,能够尽可能快地从数据库获得结果集。
对于数据库而言,其本质上是一个与应用程序彼此独立的数据集合。早期,开发者就总结了数据和逻辑彼此分离的诸多好处。而SQL(Structured Query Language,结构化查询语言)语言与数据库相应而生,目的是为了存取数据以及查询、更新和管理关系数据库系统。它是一种高度“非过程化”的语言,最为典型的特征就是用户无需关心“怎么做”,只需向数据库提出“做什么”。例如,用户只需要输入SQL语句“Select name from TableA”,就能从数据库名为“TableA”的表之中取出名为“name”列的值。
若要对数据库处理算法进行优化,以求提高数据库操作的执行效率,就需要技术人员阅读大量代码去理解现有数据的具体操作。然而,数据库中的操作过程和数据关系非常繁琐,给技术人员优化数据库处理算法带来很大困难。
发明内容
本发明提供了一种面向数据库访问的计算流图构建方法、访问方法及装置,以为数据库处理算法的优化提供便利。
为了达到上述目的,本发明采用以下方案实现:
根据本发明实施例的一个方面,提供了一种面向数据库访问的计算流图构建方法,包括:获取SQL语句对应的语法树;根据从所述语法树获取的操作关键字,将所述语法树中的节点转换成计算流图节点,其中,所述操作关键字为From、Where、Group by、Having、Order by、Select或Limit;根据From、Where、Group by、Having、Order by、Select、Limit的从左到右的顺序,为各所述计算流图节点添加有向边;根据添加有向边后的所有所述计算流图节点生成计算流图。
在一些实施例中,根据添加有向边后的所有所述计算流图节点生成计算流图之前,面向数据库访问的计算流图构建方法还包括:为各所述计算流图节点添加名称。根据添加有向边后的所有所述计算流图节点生成计算流图,包括:根据添加名称且添加有向边后的所有所述计算流图节点生成计算流图。
在一些实施例中,为各所述计算流图节点添加名称,包括:根据操作关键字、操作参数、及所述计算流图节点所对应的前置节点,为相应所述计算流图节点添加名称。
在一些实施例中,根据从所述语法树获取的操作关键字,将所述语法树中的节点转换成计算流图节点,包括:从所述语法树获取的操作关键字,根据每个操作关键字的操作内容对应生成一个计算流图节点。
在一些实施例中,根据From、Where、Group by、Having、Order by、Select、Limit的从左到右的顺序,为各所述计算流图节点添加有向边,包括:确认在From、Where、Group by、Having、Order by、Select、Limit的从左到右的顺序中排在最左边的第一操作关键字对应的所有第一计算流图节点;确认除所述第一操作关键字之外在From、Where、Group by、Having、Order by、Select、Limit的从左到右的顺序中排在最左边的第二操作关键字对应的所有第二计算流图节点;生成由各所述第一计算流图节点指向各所述第二计算流图节点的有向边。
在一些实施例中,从所述语法树获取的操作关键字,根据每个操作关键字的操作内容对应生成一个计算流图节点,包括:从所述语法树获取的所有操作关键字,按照From、Where、Group by、Having、Order by、Select、Limit的从左到右的顺序,根据每个操作关键字的操作内容对应生成一个计算流图节点。
在一些实施例中,获取SQL语句对应的语法树,包括:获取通过解析一条SQL语句得到的语法树。
根据本发明实施例的另一个方面,提供了一种数据库访问方法,包括:接收SQL语句,并解析SQL语句得到语法树;利用上述任一实施例所述的面向数据库访问的计算流图构建方法构建计算流图;将构建的计算流图发送至数据库,以基于构建的计算流图执行查询操作并返回查询得到的结果集。
根据本发明实施例的又一个方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一实施例所述的面向数据库访问的计算流图构建方法或上述任一实施例所述的数据库访问方法的步骤。
根据本发明实施例的再一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一实施例所述的面向数据库访问的计算流图构建方法或上述任一实施例所述的数据库访问方法的步骤。
本发明实施例的,面向数据库访问的计算流图构建方法、数据库访问方法、电子设备及计算机可读存储介质,通过对数据库访问构建计算流图,能够很清晰的表达出数据之中每次数据库操作之间的关系,可以显著表示数据库的数据依赖关系,并且可以为数据库处理算法的优化和效率提升提供很大的便利。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1是本发明一实施例的面向数据库访问的计算流图构建方法的流程示意图;
图2是本发明一实施例的数据库访问方法的流程示意图;
图3是本发明一实施例的面向数据库访问的计算流图构建方法的流程示意图;
图4是本发明一具体实施例的计算流图构建方法的伪代码示意图;
图5是本发明一具体实施例中的取出“From”节点的示意图;
图6是本发明一具体实施例中的取出“Where”节点的示意图;
图7是本发明一具体实施例中的取出“Select”节点的示意图;
图8是本发明一具体实施例中的生成“And”节点的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
需要预先说明的是,下述实施例或示例的描述或其中所提及的特征可以以相同或类似的方式,与其他实施例或示例中的特征组合,或替换其他实施例或示例中的特征,以形成可能的实施方式。另外,本文所使用的术语“包括/包含”是指特征、要素、步骤或组件的存在,但并不排除还存在一个或多个其他特征、要素、步骤或组件。
传统的数据库查询(数据库访问)技术采用的是直接编码的方式,即直接解析SQL语句,再对数据库进行操作。操作的具体逻辑体现在代码的编程之中,缺乏一定的可视化操作;且其他人需要通过阅读源码的方式去理解传统方法对于数据库的具体操作,上手难度较大。而本文发明人发现,SQL语句在解析完语义之后的处理顺序是较为固定的,所以能够通过建立“图”的方式,形象地表达数据库操作的过程以及数据依赖关系。
基于此,为了通过以计算流图建模的方式,加快对于SQL语句的执行效率,同时提高代码的可视化性,从而便于技术人员对数据库处理算法进行优化,本发明实施例提供了一种面向数据库访问的计算流图构建方法,引入计算流图的概念,给出了具体的从代码到图构建的流程,对使用SQL语句操控数据库进行基于计算流图的建模,能够通过在数据库操作过程中引入“图”的概念进行对SQL语句进行分析和执行,利用计算流图特有的可视化和易于编译优化的特征,达到提高数据库操作的优化效率的目的。
首先,对本发明实施例可能提及的术语进行解释。
AST语法树:AST(Abstract syntax code tree),可以直接理解为源代码,是源代码的抽象语法结构的树状表示,构造语法树的目的是为了给解析代码的前/后端人员一个清晰的接口;
拓扑关系:只考虑点与点之间的拓扑关系,本文“拓扑关系”可以理解为节点与节点之间顺序关系;
计算流图:由节点和有向边构成,每个节点代表一个从AST语法树中获得的关键字所生成的节点,每一条有向边代表一种节点直接的拓扑关系。
图1是本发明一实施例的面向数据库访问的计算流图构建方法的流程示意图。如图1所示,该计算流图构建方法可包括步骤S110~步骤S140。
下面将对步骤S110~步骤S140的具体实施方式进行详细说明。
步骤S110:获取SQL语句对应的语法树。
可以从客户端获得一条或多条SQL语句。对SQL语句解析后,一条SQL语句可以对应生成一个语法树。可以通过函数接口获得解析SQL语句后得到的语法树。示例性地,该步骤S110,具体地,可包括步骤:获取通过解析一条SQL语句得到的语法树。该示例中,每个语法树可以对应生成一个计算流图。
步骤S120:根据从所述语法树获取的操作关键字,将所述语法树中的节点转换成计算流图节点,其中,所述操作关键字为From、Where、Group by、Having、Order by、Select或Limit。
从一个语法树中获取的所有操作关键字可以包括From、Where、Group by、Having、Order by、Select及Limit中的一个或多个。例如,若一条SQL语句为“select id,name fromUser Where id<100”,则从该条SQL语句对应的语法树中可以获得操作关键字为“Select”、“From”及“Where”。
该步骤S120中,可以根据SQL语句的解析顺序和从左到右判断From、Where、Groupby、Having、Order by、Select及Limit是否存在来生成计算流图节点。
在一些实施例中,从语法树中提取的一个操作关键字可以对应生成一个计算流图节点。示例性地,该步骤S120,具体地,可包括步骤:S121,从所述语法树获取的操作关键字,根据每个操作关键字的操作内容对应生成一个计算流图节点。
该实施例中,通过每个操作关键字对应一个计算流图的节点,可将语法树中的操作分解为最小操作单元,计算流图使用更方便。
进一步地,上述步骤S121,具体地,可包括步骤:S1211,从所述语法树获取的所有操作关键字,按照From、Where、Group by、Having、Order by、Select、Limit的从左到右的顺序,根据每个操作关键字的操作内容对应生成一个计算流图节点。
该步骤S1211中,以From、Where、Group by、Having、Order by、Select、Limit中的一个对应生成一个计算流图节点,可使节点具有更好地原子性,便于对数据库算法进行优化。
步骤S130:根据From、Where、Group by、Having、Order by、Select、Limit的从左到右的顺序,为各所述计算流图节点添加有向边。
From、Where、Group by、Having、Order by、Select、Limit的从左到右的顺序是指From–>Where–>Group by–>Having–>Order by–>Select–>Limit的顺序。对于SQL语句而言,主要涉及From、Where、Group by、Having、Order by、Select、Limit这七中操作,以上述顺序添加有向边,能够合理体现节点处理顺序。
该步骤S130中,通过为计算流图节点添加有向边,能够便于为计算流图构建合理的拓扑关系。例如“SELECT NAME FROM TABLE_A”这条输入语句中,经过词法语法模块解析可生成AST语法树;从语法树中可以获取“SELECT”节点和“FROM”节点,“SELECT”节点和“FROM”节点的拓扑关系是“FROM”->“SELECT”。构建完节点且获得其拓扑顺序之后,一个完整的,可以表示数据流动和操作的图便定义完成了,以此完成的具有数据处理和传递功能的图可以定义为本发明实施例所述的计算流图。
在上述步骤S120包括上述步骤S121的情况下,该步骤S130具体地,可包括步骤:S131,根据From、Where、Group by、Having、Order by、Select、Limit的从左到右的顺序中排在最左边的第一操作关键字对应的所有第一计算流图节点;S132,确认除所述第一操作关键字之外在From、Where、Group by、Having、Order by、Select、Limit的从左到右的顺序中排在最左边的第二操作关键字对应的所有第二计算流图节点;S133,生成由各所述第一计算流图节点指向各所述第二计算流图节点的有向边。
该步骤S131中,从一个语法树中可以提取得到多个操作关键字,可以先看这些操作关键字是否存在From,若有,则From为最左边的第一操作关键字,若无,可继续查看是否存在Where,若有,则Where为最左边的第一操作关键字,若无,可继续查看是否存在Groupby,若有,则Group by为最左边的第一操作关键字,若无,可继续查看是否存在Having,若有,则Having为最左边的第一操作关键字,若无,可继续查看是否存在Order by,若有,则Order by为最左边的第一操作关键字,若无,可继续查看是否存在Select,若有,则Orderby为最左边的第一操作关键字,若无,可继续查看是否存在Limit,若有,则Limit为最左边的第一操作关键字,只有一种操作关键字,在此情况下,可以不用添加有向边。
该步骤S132中,在确定了第一操作关键字后,可以接着对其余从语法树中提取的操作关键字在第一操作关键字右侧的操作关键字中从左到右查看。例如,第一操作关键字为From,可以从Where向右查看。例如,是否存在Where,若有,则Where为最左边的第二操作关键字,若无,可继续查看是否存在Group by,若有,则Group by为最左边的第二操作关键字,若无,可继续查看是否存在Having,若有,则Having为最左边的第二操作关键字,若无,可继续查看是否存在Order by,若有,则Order by为最左边的第二操作关键字,若无,可继续查看是否存在Select,若有,则Order by为最左边的第二操作关键字,若无,可继续查看是否存在Limit,若有,则Limit为最左边的第二操作关键字。
该步骤S133中,包含该第一操作关键字的计算流图节点可以是一个或多个,包含该第二操作关键字的计算流图节点可以是一个或多个。以第一操作关键字对应的一个计算流图节点为起点,以第二操作关键字对应的一个计算流图节点为终点,可以确定一条有向边。以第一操作关键字对应的多个计算流图节点分别为起点,以第二操作关键字对应的多个计算流图节点分别为终点,可以确定多条有向边。
步骤S140:根据添加有向边后的所有所述计算流图节点生成计算流图。
该步骤S140可以根据计算流图节点之间的有向边以及计算流图节点的信息生成可视化的计算流图。
在上述步骤S120之后,可以为得到的计算流图节点定义名称,以便于区分不同计算流图节点。示例性地,该步骤S140之前,图1所示的方法还可包括步骤:S150,为各所述计算流图节点添加名称。该名称只要便于在一个计算流图中标识不同的计算流图节点即可。进一步地,该步骤S140,具体地,可包括步骤:根据添加名称且添加有向边后的所有所述计算流图节点生成计算流图。该示例中,可以以名称作为节点内容进行显示。
更具体地的实施例中,上述步骤S150,即,为各所述计算流图节点添加名称,更具体地,可包括步骤:S151,根据操作关键字和操作参数为相应所述计算流图节点添加名称。进一步地,可以是根据操作关键字、操作参数、及所述计算流图节点(当前图节点)所对应的前置节点(入度节点),为相应所述计算流图节点添加名称。该步骤S151中,该操作关键字可以是指该计算流图节点的属性,该操作参数可以是指该计算流图节点的参数。例如,包含“Select id”的计算流图节点,其中,操作关键字为Select,操作参数为id,则为该计算流图节点添加的名称可以为Select_id。该实施例中,根据操作关键字和操作参数定义节点的名称,可使计算流图中节点的操作内容看起来更方便。根据前置节点为计算流图节点添加名称,可使名称包含入度信息。
在一个具体实施例中,面向数据库访问的计算流图构建方法可包括以下步骤:
S1,通过函数接口获取将SQL语句解析之后的AST语法树,多条SQL语句则对应多个语法树;
S2,根据From–>Where–>Group by–>Having–>Order by–>Select–>Limit的顺序,将每个语法树的节点转换成计算流图中的节点;
S3,按照S2中的处理顺序继续遍历剩下的AST语法树,若还有剩余的树节点,则重复S2步骤,否则执行S4步骤;
S4,执行完整的计算流图,当图执行完毕时代表所有用户输入的SQL语句已经执行并响应成功,返回输出结果。
本发明实施例的方法,主要在于计算流图的定义和具体运作方式,故在不同开发语言之下,对于图的实现方式可能有所不同。本发明实施例的实现语言可为C++,可以使用C++之中的“类”来完成节点和图定义,使用图的“方法”来完成具体的图构建功能。或者,可采用其他的实现语言,例如C,Java,go等,具体代码实现方式与C++可有所不同,但实现思想一致。
基于上述任一实施例所述的面向数据库访问的计算流图构建方法,本发明实施例还提供了一种数据库访问方法。如图2所示,该数据库访问方法,可包括:
步骤S210:接收SQL语句,并解析SQL语句得到语法树;
步骤S220:利用面向数据库访问的计算流图构建方法构建计算流图;
步骤S230:将构建的计算流图发送至数据库,以基于构建的计算流图执行查询操作并返回查询得到的结果集。
其中,该步骤S220,利用上述任一实施例所述面向数据库访问的计算流图构建方法构建计算流图的过程参见前述内容,顾不赘述。
另外,该步骤S210中,可以利用现有的方法对从客户端获取的SQL语句进行解析,得到语法树。该步骤S230中,执行查询操作的方法可以是基于构建的计算流图优化后的算法。对于查询类型的SQL语句(例如查找)而言,该结果集可以查询结果,对于修改类型的SQL语句(例如排序)而言,该结果集可以是执行状态。
本实施例的数据库访问方法,由于基于计算流图实现,所以优化、执行效率更高。
此外,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一实施例所述的面向数据库访问的计算流图构建方法或上述任一实施例所述的数据库访问方法的步骤。该电子设备可以是计算机、服务器等,或者可以是FPGA(Field Programmable GateArray,现场可编程门阵列)、GPU(Graphics Processing Unit,图形处理器)等硬件。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一实施例所述的面向数据库访问的计算流图构建方法或上述任一实施例所述的数据库访问方法的步骤。
为使本领域技术人员更好地了解本发明,下面将以具体实施例说明本发明的实施方式。
图3是本发明一实施例的面向数据库访问的计算流图构建方法的流程示意图。图4是本发明一具体实施例的计算流图构建方法的伪代码示意图。参见图3和图4,在一具体实施例中,面向数据库访问的计算流图构建方法可包括以下步骤1~5。
1.通过API(应用程序接口)获取将SQL语句解析之后的AST语法树(解析SQL语句后生成的语法树),每一条SQL语句都对应一棵AST语法树。如图5~图8所示,以“select id,name from User Where id<100”作为输入。
2.根据图3所示流程图的顺序,生成计算流图中的节点,如“Select”节点,“From”节点等。图5~图8中,在接收了输入之后,按照流程图顺序,需要生成From节点、Where节点和Select节点,故依次生成对应的节点添加进计算流图之中。
3.定义From–>Where–>Group by–>Having–>Order by–>Select–>Limit的处理顺序,为生成的节点添加有向边。图6中,From节点需要指向Where节点,图7中Where节点需要指向Select节点,代表了From–>Where–>Select的具体执行顺序。
4.对不同节点进行区分,按照“属性+参数”的方法进行区分。例如“Select id”的节点记为“select_id”,“From User”记为“from_User”。图5~图8中的各个节点的属性“name”便是依照该规则进行定义。
5.构建完计算流图之后,交付底层硬件执行,获得结果集。
本实施例中,根据接收的AST语法树(由SQL语句解析生成),初始化计算流图;然后根据SQL语句解析的顺序,以及AST语法树之中的存在条件,决定是否在计算流图之中生成对应的节点;接着根据From->Where->Group by->Having->Order by->Select->Limit的节点顺序,依次生成计算流图之中的节点,每一个节点代表了对于语法树之中对应节点的具体操作;最后执行构建完毕的计算流图,返回结果集。
对于SQL语句所需要执行的操作,提供了的基于计算流图的建模方法,可以用于对SQL语句的加速执行和编译优化当中,减少其数据库操作所需要的时间开支。该建模方法能够直观地展现在计算流图之中SQL语句内部的数据依赖关系,以及可以复用的节点操作,利用这二者即可优化在数据库操作之中所需的执行时间,避免因为数据依赖所导致的处理器阻塞以及对于相同效果语句的重复计算开销。根据计算流图的特性,后续还能够方便地添加诸如图划分等算法提高整个计算流图的执行效率,达到更好地优化数据库操作的目的。
综上所述,本发明实施例的,面向数据库访问的计算流图构建方法、数据库访问方法、电子设备及计算机可读存储介质,通过对数据库访问构建计算流图,能够很清晰的表达出数据之中每次数据库操作之间的关系,可以显著表示数据库的数据依赖关系,并且可以为数据库处理算法的优化和效率提升提供很大的便利。
在本说明书的描述中,参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本发明的实施,其中的步骤顺序不作限定,可根据需要作适当调整。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种面向数据库访问的计算流图构建方法,其特征在于,包括:
获取SQL语句对应的语法树;
根据从所述语法树获取的操作关键字,将所述语法树中的节点转换成计算流图节点,其中,所述操作关键字为From、Where、Group by、Having、Order by、Select或Limit;
根据From、Where、Group by、Having、Order by、Select、Limit的从左到右的顺序,为各所述计算流图节点添加有向边;
根据添加有向边后的所有所述计算流图节点生成计算流图。
2.如权利要求1所述的面向数据库访问的计算流图构建方法,其特征在于,
根据添加有向边后的所有所述计算流图节点生成计算流图之前,还包括:
为各所述计算流图节点添加名称;
根据添加有向边后的所有所述计算流图节点生成计算流图,包括:
根据添加名称且添加有向边后的所有所述计算流图节点生成计算流图。
3.如权利要求2所述的面向数据库访问的计算流图构建方法,其特征在于,为各所述计算流图节点添加名称,包括:
根据操作关键字、操作参数、及所述计算流图节点所对应的前置节点,为相应所述计算流图节点添加名称。
4.如权利要求1所述的面向数据库访问的计算流图构建方法,其特征在于,根据从所述语法树获取的操作关键字,将所述语法树中的节点转换成计算流图节点,包括:
从所述语法树获取的操作关键字,根据每个操作关键字的操作内容对应生成一个计算流图节点。
5.如权利要求4所述的面向数据库访问的计算流图构建方法,其特征在于,根据From、Where、Group by、Having、Order by、Select、Limit的从左到右的顺序,为各所述计算流图节点添加有向边,包括:
确认在From、Where、Group by、Having、Order by、Select、Limit的从左到右的顺序中排在最左边的第一操作关键字对应的所有第一计算流图节点;
确认除所述第一操作关键字之外在From、Where、Group by、Having、Order by、Select、Limit的从左到右的顺序中排在最左边的第二操作关键字对应的所有第二计算流图节点;
生成由各所述第一计算流图节点指向各所述第二计算流图节点的有向边。
6.如权利要求4或5所述的面向数据库访问的计算流图构建方法,其特征在于,从所述语法树获取的操作关键字,根据每个操作关键字的操作内容对应生成一个计算流图节点,包括:
从所述语法树获取的所有操作关键字,按照From、Where、Group by、Having、Order by、Select、Limit的从左到右的顺序,根据每个操作关键字的操作内容对应生成一个计算流图节点。
7.如权利要求1所述的面向数据库访问的计算流图构建方法,其特征在于,获取SQL语句对应的语法树,包括:
获取通过解析一条SQL语句得到的语法树。
8.一种数据库访问方法,其特征在于,包括:
接收SQL语句,并解析SQL语句得到语法树;
利用如权利要求1至6任一项所述的面向数据库访问的计算流图构建方法构建计算流图;
将构建的计算流图发送至数据库,以基于构建的计算流图执行查询操作并返回查询得到的结果集。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至8任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至8任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911360808.XA CN111190886B (zh) | 2019-12-25 | 2019-12-25 | 面向数据库访问的计算流图构建方法、访问方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911360808.XA CN111190886B (zh) | 2019-12-25 | 2019-12-25 | 面向数据库访问的计算流图构建方法、访问方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111190886A true CN111190886A (zh) | 2020-05-22 |
CN111190886B CN111190886B (zh) | 2020-12-15 |
Family
ID=70707637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911360808.XA Active CN111190886B (zh) | 2019-12-25 | 2019-12-25 | 面向数据库访问的计算流图构建方法、访问方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111190886B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100114885A1 (en) * | 2008-10-21 | 2010-05-06 | Microsoft Corporation | Query submission pipeline using linq |
CN102609451A (zh) * | 2012-01-11 | 2012-07-25 | 华中科技大学 | 面向流式数据处理的sql查询计划生成方法 |
CN104199831A (zh) * | 2014-07-31 | 2014-12-10 | 深圳市腾讯计算机系统有限公司 | 信息处理方法及装置 |
CN106547796A (zh) * | 2015-09-23 | 2017-03-29 | 南京中兴新软件有限责任公司 | 数据库的执行方法及装置 |
CN110532280A (zh) * | 2019-07-18 | 2019-12-03 | 阿里巴巴集团控股有限公司 | Sql语句可视化方法以及装置 |
-
2019
- 2019-12-25 CN CN201911360808.XA patent/CN111190886B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100114885A1 (en) * | 2008-10-21 | 2010-05-06 | Microsoft Corporation | Query submission pipeline using linq |
CN102609451A (zh) * | 2012-01-11 | 2012-07-25 | 华中科技大学 | 面向流式数据处理的sql查询计划生成方法 |
CN104199831A (zh) * | 2014-07-31 | 2014-12-10 | 深圳市腾讯计算机系统有限公司 | 信息处理方法及装置 |
CN106547796A (zh) * | 2015-09-23 | 2017-03-29 | 南京中兴新软件有限责任公司 | 数据库的执行方法及装置 |
CN110532280A (zh) * | 2019-07-18 | 2019-12-03 | 阿里巴巴集团控股有限公司 | Sql语句可视化方法以及装置 |
Non-Patent Citations (1)
Title |
---|
吴浩: "基于数据库模式的数据流图逆向恢复技术研究", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Also Published As
Publication number | Publication date |
---|---|
CN111190886B (zh) | 2020-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Karau et al. | High performance Spark: best practices for scaling and optimizing Apache Spark | |
US7167848B2 (en) | Generating a hierarchical plain-text execution plan from a database query | |
Loncaric et al. | Fast synthesis of fast collections | |
CN111309757B (zh) | 一种HBase的SQL解释器和优化方法 | |
JPH0926873A (ja) | オブジェクト指向システムのクラス関係を識別する方法およびシステム | |
CN112434046B (zh) | 一种数据血缘分析方法、装置、设备及存储介质 | |
CN111813798B (zh) | 基于r2rml标准的映射方法、装置、设备及存储介质 | |
CN109313547B (zh) | 用于cpu利用率和代码重构的查询优化器 | |
WO2010147950A2 (en) | Data visualization system and method | |
US11698918B2 (en) | System and method for content-based data visualization using a universal knowledge graph | |
US20060122973A1 (en) | Mechanism for defining queries in terms of data objects | |
EP3570190A1 (en) | Statement parsing method for database statement | |
Kay | Ten reasons why Saxon XQuery is fast. | |
US20230325384A1 (en) | Interactive assistance for executing natural language queries to data sets | |
KR20080038306A (ko) | 널가능과 후 바인딩 | |
US8914782B2 (en) | Optimization of declarative queries | |
EP3293645B1 (en) | Iterative evaluation of data through simd processor registers | |
Lott | Functional python programming | |
CN113204593A (zh) | 一种基于大数据计算引擎的etl作业开发系统和计算机设备 | |
CN111190886B (zh) | 面向数据库访问的计算流图构建方法、访问方法及装置 | |
Rompf et al. | A SQL to C compiler in 500 lines of code | |
CN116400910A (zh) | 一种基于api替换的代码性能优化方法 | |
Paganelli et al. | Pushing ML Predictions Into DBMSs | |
US20220075778A1 (en) | Transforming operations of a computer program for execution at a database | |
CN111159218B (zh) | 数据处理方法、装置及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |