CN110309214A - 一种指令执行方法及其设备、存储介质、服务器 - Google Patents
一种指令执行方法及其设备、存储介质、服务器 Download PDFInfo
- Publication number
- CN110309214A CN110309214A CN201810315507.4A CN201810315507A CN110309214A CN 110309214 A CN110309214 A CN 110309214A CN 201810315507 A CN201810315507 A CN 201810315507A CN 110309214 A CN110309214 A CN 110309214A
- Authority
- CN
- China
- Prior art keywords
- data source
- data
- target
- target instruction
- target word
- 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
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/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开一种指令执行方法及其设备、存储介质、服务器,其中该方法包括如下步骤:获取针对当前的任务事件所输入的任务指令,在数据源集合中获取任务指令所指示的初始数据类型的初始指令数据源;将初始指令数据源转换为目标数据类型的目标指令数据源;基于任务指令所指示的任务事件的任务信息对所述目标指令数据源进行解析,以生成所述任务事件的命令序列;执行所述命令序列以输出所述任务事件对应的执行结果。采用本申请的技术方案,可以将初始指令数据源的数据类型转换为统一的数据类型而实现跨数据源的数据导出,不必受到数据源类型的限制,具有充分的可扩展性,为各业务的数据导出,日常数据运维,数据分析提供了快速简洁的服务。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种指令执行方法及其设备、存储介质、服务器。
背景技术
在数据提取平台上接入互联网+医疗,互联网+影像AI,互联网+社区,天鉴,新农合等线上业务后,可以导出与各业务相关的数据。
现有的数据导出方案大体只关注数据定量高效导出以及海量数据存储方式这两个方面,而并不关注数据源类型。比如支持海量数据存储的自动化工具,只受用于分布式文件系统之间的文件传输,又比如现有的一种数据导出方式是基于正则匹配的方式进行数据字段的分割而实现数据提取,但却没有关注到底层数据源数据类型不一致的问题,从而使得应用面受限。可见,现有的数据导出方法对于数据源的类型要求很具体,容易导致系统应用面只受限于具体的数据源类型而难以扩展。
发明内容
本发明实施例提供了一种指令执行方法及其设备、存储介质、服务器,可以将初始指令数据源的数据类型转换为统一的数据类型而实现跨数据源的数据导出,不必受到数据源类型的限制,具有充分的可扩展性,为各业务的数据导出,日常数据运维,数据分析提供了快速简洁的服务。
本发明实施例一方面提供一种指令执行方法,包括:
获取针对当前的任务事件所输入的任务指令,在数据源集合中获取所述任务指令所指示的初始数据类型的初始指令数据源;
将所述初始指令数据源转换为目标数据类型的目标指令数据源;
基于所述任务指令所指示的所述任务事件的任务信息对所述目标指令数据源进行解析,以生成所述任务事件的命令序列;
执行所述命令序列以输出所述任务事件对应的执行结果。
可选的,所述将所述初始指令数据源转换为目标数据类型的目标指令数据源,包括:
当在格式转换数据库中存在所述初始数据类型对应的格式转换脚本时,采用所述格式转换脚本将所述初始指令数据源转换为目标数据类型的目标指令数据源;
当在所述格式转换数据库中不存在所述初始数据类型对应的格式转换脚本时,在所述格式转换数据库中创建所述初始数据类型对应的格式转换脚本,并采用所述格式转换脚本将所述初始指令数据源转换为目标数据类型的目标指令数据源。
可选的,当所述目标指令数据源为多个目标指令数据源时,所述基于所述任务指令所指示的所述任务事件的任务信息对所述目标指令数据源进行解析,以生成所述任务事件的命令序列,包括:
基于所述多个目标指令数据源中各目标指令数据源对应的数据信息,确定所述各目标指令数据源之间的数据关联性;
按照所述数据关联性对所述各目标指令数据源进行关联排列,以生成关联排列后的数据源序列;
基于所述任务指令所指示的所述任务事件的任务信息对所述数据源序列进行解析,以生成所述任务事件的命令序列。
可选的,所述基于所述多个目标指令数据源中各目标指令数据源的数据信息,确定所述各目标指令数据源之间的数据关联性,包括:
获取所述多个目标指令数据源中第一目标指令数据源对应的第一数据关键字集合,并获取所述多个目标指令数据源中第二目标指令数据源对应的第二数据关键字集合;
当所述第一数据关键字集合与所述第二数据关键字集合存在相同的数据关键字时,确定所述第一目标指令数据源与所述第二目标指令数据源存在数据关联性;
当所述第一数据关键字集合与所述第二数据关键字集合不存在相同的数据关键字时,确定所述第一目标指令数据源与所述第二目标指令数据源不存在数据关联性。
可选的,所述按照所述数据关联性对所述各目标指令数据源进行关联排列,以生成关联排列后的数据源序列,包括:
遍历所述多个目标指令数据源中各目标指令数据源;
当遍历到的所述第一目标指令数据源与所述第二目标指令数据源存在数据关联性时,将所述第一目标指令数据源相邻排列在所述第二目标指令数据源之前,并存储在第一数组中;
将所述第二目标指令数据源设置为所述第一目标指令数据源,并执行所述当遍历到的所述第一目标指令数据源与所述第二目标指令数据源存在数据关联性时,将所述第一目标指令数据源相邻排列在所述第二目标指令数据源之前的步骤;
当遍历到的所述第一目标指令数据源与所述第二目标指令数据源不存在数据关联性时,将所述第一目标指令数据源存储在第二数组中,并执行遍历所述多个目标指令数据源中各目标指令数据源的步骤。
可选的,所述任务信息包括关联关键字集合,所述基于所述任务指令所指示的所述任务事件的任务信息对所述数据源序列进行解析,以生成所述任务事件的命令序列,包括:
获取所述关联关键字集合中各关联关键字的先后顺序;
按照所述先后顺序并基于所述关联关键字集合,以生成所述任务事件的命令序列。
可选的,所述按照所述先后顺序并基于所述关联关键字集合,以生成所述任务事件的命令序列,包括:
创建所述关联关键字集合中各关联关键字分别对应的子命令序列;
按照所述先后顺序将所述子命令序列进行组合,以得到所述任务事件对应的命令序列。
本发明实施例一方面提供一种指令执行设备,包括:
数据源获取单元,用于获取针对当前的任务事件所输入的任务指令,在数据源集合中获取所述任务指令所指示的初始数据类型的初始指令数据源;
数据源转换单元,用于将所述初始指令数据源转换为目标数据类型的目标指令数据源;
序列生成单元,用于基于所述任务指令所指示的所述任务事件的任务信息对所述目标指令数据源进行解析,以生成所述任务事件的命令序列;
序列执行单元,用于执行所述命令序列以输出所述任务事件对应的执行结果。
可选的,所述数据源转换单元,具体用于:
当在格式转换数据库中存在所述初始数据类型对应的格式转换脚本时,采用所述格式转换脚本将所述初始指令数据源转换为目标数据类型的目标指令数据源;
当在所述格式转换数据库中不存在所述初始数据类型对应的格式转换脚本时,在所述格式转换数据库中创建所述初始数据类型对应的格式转换脚本,并采用所述格式转换脚本将所述初始指令数据源转换为目标数据类型的目标指令数据源。
可选的,当所述目标指令数据源为多个目标指令数据源时,所述序列生成单元,包括:
关联性确定子单元,用于基于所述多个目标指令数据源中各目标指令数据源对应的数据信息,确定所述各目标指令数据源之间的数据关联性;
数据源排列子单元,用于按照所述数据关联性对所述各目标指令数据源进行关联排列,以生成关联排列后的数据源序列;
序列生成子单元,用于基于所述任务指令所指示的所述任务事件的任务信息对所述数据源序列进行解析,以生成所述任务事件的命令序列。
可选的,所述关联性确定子单元,具体用于:
获取所述多个目标指令数据源中第一目标指令数据源对应的第一数据关键字集合,并获取所述多个目标指令数据源中第二目标指令数据源对应的第二数据关键字集合;
当所述第一数据关键字集合与所述第二数据关键字集合存在相同的数据关键字时,确定所述第一目标指令数据源与所述第二目标指令数据源存在数据关联性;
当所述第一数据关键字集合与所述第二数据关键字集合不存在相同的数据关键字时,确定所述第一目标指令数据源与所述第二目标指令数据源不存在数据关联性。
可选的,所述数据源排列子单元,具体用于:
遍历所述多个目标指令数据源中各目标指令数据源;
当遍历到的所述第一目标指令数据源与所述第二目标指令数据源存在数据关联性时,将所述第一目标指令数据源相邻排列在所述第二目标指令数据源之前,并存储在第一数组中;
将所述第二目标指令数据源设置为所述第一目标指令数据源,并执行所述当遍历到的所述第一目标指令数据源与所述第二目标指令数据源存在数据关联性时,将所述第一目标指令数据源相邻排列在所述第二目标指令数据源之前的步骤;
当遍历到的所述第一目标指令数据源与所述第二目标指令数据源不存在数据关联性时,将所述第一目标指令数据源存储在第二数组中,并执行遍历所述多个目标指令数据源中各目标指令数据源的步骤。
可选的,所述任务信息包括关联关键字集合,所述序列生成子单元,具体用于:
获取所述关联关键字集合中各关联关键字的先后顺序;
按照所述先后顺序并基于所述关联关键字集合,以生成所述任务事件的命令序列。
可选的,所述序列生成子单元,具体用于:
创建所述关联关键字集合中各关联关键字分别对应的子命令序列;
按照所述先后顺序将所述子命令序列进行组合,以得到所述任务事件对应的命令序列。
本发明实施例一方面提供一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行上述的方法步骤。
本发明实施例一方面提供一种服务器,包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行以下步骤:
获取针对当前的任务事件所输入的任务指令,在数据源集合中获取所述任务指令所指示的初始数据类型的初始指令数据源;
将所述初始指令数据源转换为目标数据类型的目标指令数据源;
基于所述任务指令所指示的所述任务事件的任务信息对所述目标指令数据源进行解析,以生成所述任务事件的命令序列;
执行所述命令序列以输出所述任务事件对应的执行结果。
在本发明实施例中,通过获取针对当前的任务事件所输入的任务指令,在数据源集合中获取任务指令所指示的初始数据类型的初始指令数据源,将初始指令数据源转换为目标数据类型的目标指令数据源,并基于任务指令所指示的任务事件的任务信息对目标指令数据源进行解析,以生成任务事件的命令序列,执行命令序列以输出任务事件对应的执行结果。可以不必关心数据源的具体数据类型,通过将初始指令数据源的数据类型转换为统一的数据类型而实现跨数据源的数据导出,不必受到数据源类型的限制,具有充分的可扩展性,为各业务的数据导出,日常数据运维,数据分析提供了快速简洁的服务。
附图说明
为了说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1是本发明实施例提供的一种指令执行方法的流程示意图;
图2是本发明实施例提供的一种指令执行方法的流程示意图;
图3是本发明实施例提供的一种指令执行方法的流程示意图;
图4是本发明实施例提供的一种指令执行方法的流程示意图;
图5是本发明实施例提供的一种指令执行方法的流程示意图;
图6是本发明实施例提供的一种指令执行设备的架构示意图;
图7是本发明实施例提供的一种指令执行设备的结构示意图;
图8是本发明实施例提供的一种序列生成单元的结构示意图;
图9是本发明实施例提供的一种服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
下面将结合附图1-附图5,对本发明实施例提供的指令执行方法进行详细介绍。
请参见图1,为本发明实施例提供了一种指令执行方法的流程示意图。如图1所示,本发明实施例的所述方法可以包括以下步骤S101-步骤S104。
S101,获取针对当前的任务事件所输入的任务指令,在数据源集合中获取所述任务指令所指示的初始数据类型的初始指令数据源;
可以理解的是,所述任务事件为用户所定义,用户通过编写任务指令指示指令执行设备分析、调度并执行所述任务事件对应的任务。
所述数据源集合中包括至少一种数据类型的指令数据源,所述指令数据源可以为任何能输出数据的对象,如mysql、hive等DB数据源;单个的文件(file)或者分布式文件(hdfs);一段可以执行的代码(shell脚本);网址等。
具体实现中,当指令执行设备接收到用户输入的任务指令时,获取任务指令携带的数据类型,通过在数据源集合中查找与该数据类型相匹配的初始数据类型,并将该初始数据类型对应的数据源确定为初始指令数据源,再通过与该数据类型对应的数据接口将所述初始指令数据源接入至指令执行设备中。如果该数据源为一种新的数据类型,则需要增加一个适配接口即可接入该数据源。也就是说,通过数据类型的转换后,可对外提供统一的数据接口接入目标指令数据源。而在现有技术中只支持java数据库连接(Java DataBaseConnectivity,JDBC)访问的数据源,不能提供更一般性,更普适的接入方式。所述JDBC是一种用于执行sql语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
表1
数据类型 | 指令数据源 |
mysql | A |
hive | B |
文件 | C |
脚本 | D |
网址 | E |
其中,所述数据源集合中指令数据源存储形式可以为数据类型与指令数据源对应存储。本发明实施例涉及的指令执行设备可以为具备计算处理功能的服务器。
例如,如表1所示为一种形式的数据源集合,若任务指令指示的数据类型为mysql,则查表1可确定初始指令数据源为A。
需要说明的是,所述指令执行设备可以直接无差别同时接入多个指令数据源,该多个指令数据源的数据内容可以完全相同,也可以完全不同,还可以部分相同,具体不限定。
S102,将所述初始指令数据源转换为目标数据类型的目标指令数据源;
可以理解的是,将一种数据类型的指令数据源转换为另一种数据类型的指令数据源,可采用格式转换脚本进行转换,且在数据类型转换前和数据类型转换后,初始指令数据源与目标指令数据源中的数据内容相同,只是数据格式的变换。
其中,所述格式转换脚本即数据生成脚本(generator),所述generator是一个拥有数据输出能力的对象,其与数据类型一一对应,可将所有数据类型的数据源都抽象成generator类型。所述脚本是批处理文件的延伸,是一种纯文本保存的程序,一般来说的计算机脚本程序是确定的一系列控制计算机进行运算操作动作的组合,在其中可以实现一定的逻辑分支等。
具体实现中,当在格式转换数据库中存在所述初始数据类型对应的格式转换脚本时,采用所述格式转换脚本将所述初始指令数据源转换为目标数据类型的目标指令数据源;当在所述格式转换数据库中不存在所述初始数据类型对应的格式转换脚本时,在所述格式转换数据库中创建所述初始数据类型对应的格式转换脚本,并采用所述格式转换脚本将所述初始指令数据源转换为目标数据类型的目标指令数据源,通过每种数据类型对应的格式转换脚本可将初始指令数据源转换为同一种类型的目标指令数据源,所述同一种类型即为目标数据类型。所述格式转换数据库为预先建立,在该格式转换数据库中包括至少一种数据转换脚本,每个数据转换脚本中携带有数据类型信息。
其中,一种具体的创建格式转换脚本的方式是给SOURCE_COMMAND字段赋值,从而构造一个以SOURCE_TYPE为前缀的通用脚本univeral_generator,并进行部分代码填充。
S103,基于所述任务指令所指示的所述任务事件的任务信息对所述目标指令数据源进行解析,以生成所述任务事件的命令序列;
可以理解的是,所述指令执行设备可以支持任务指令指示的任务事件对应的单个目标指令数据源的解析,也可以支持任务指令指示的任务事件对应的多个目标指令数据源的解析。
对于单个目标指令数据源,只需要基于任务信息进行重新分析,解释,从而生成命令序列即可;对于多个目标指令数据源,可以对多个目标指令数据源中每个目标指令数据源分别进行分析,解释,并得到多条命令序列。
优选的,对于多个目标指令数据源,基于深度优先算法对多个目标指令数据源进行迭代构造而得到数据源序列,并对数据源序列进行解析,从而包裹成一条可执行的命令序列。比如多个目标指令数据源为A1,B1,C1,而B1由D1和E1生成,那么基于深度优先算法(Depth-First-Search,DFS)进行迭代构造并融合,最终形成一个可执行的“大”命令序列A1,D1,E1,B1,C1。可以实现多数据源的关联提取功能,基于DFS深度优先算法组装出可执行的命令序列,展示多维度多数据源的数据视图。
所述DFS算法是搜索算法的一种。即沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所有边都已被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。属于盲目搜索。深度优先搜索是图论中的经典算法,利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等。
具体实现中,当所述目标指令数据源为单个目标指令数据源时,只需要基于任务信息进行重新分析,解释,从而生成命令序列即可;当所述目标指令数据源为多个目标指令数据源时,基于所述多个目标指令数据源中各目标指令数据源对应的数据信息,确定所述各目标指令数据源之间的数据关联性,按照所述数据关联性对所述各目标指令数据源进行关联排列,以生成关联排列后的数据源序列,基于所述任务指令所指示的所述任务事件的任务信息对所述数据源序列进行解析,以生成所述任务事件的命令序列。
S104,执行所述命令序列以输出所述任务事件对应的执行结果。
具体实现中,指令执行设备基于该命令序列的存储路径执行该命令序列,并把结果写回到该存储路径即可。
在本发明实施例中,通过获取针对当前的任务事件所输入的任务指令,在数据源集合中获取任务指令所指示的初始数据类型的初始指令数据源,将初始指令数据源转换为目标数据类型的目标指令数据源,并基于任务指令所指示的任务事件的任务信息对目标指令数据源进行解析,以生成任务事件的命令序列,执行命令序列以输出任务事件对应的执行结果。可以不必关心数据源的具体数据类型,通过将初始指令数据源的数据类型转换为统一的数据类型而实现跨数据源的数据导出,不必受到数据源类型的限制,具有充分的可扩展性,为各业务的数据导出,日常数据运维,数据分析提供了快速简洁的服务。
请参见图2,为本发明实施例提供了一种指令执行方法的流程示意图。如图2所示,本发明实施例的所述方法可以包括以下步骤S201-步骤S208。
S201,获取针对当前的任务事件所输入的任务指令,在数据源集合中获取所述任务指令所指示的初始数据类型的初始指令数据源;
可以理解的是,所述任务事件为用户所定义,用户通过编写任务指令指示指令执行设备分析、调度并执行所述任务事件对应的任务。
所述数据源集合中包括至少一种数据类型的指令数据源,所述指令数据源可以为任何能输出数据的对象,如mysql、hive等DB数据源;单个的文件(file)或者分布式文件(hdfs);一段可以执行的代码(shell脚本);网址等。
具体实现中,当指令执行设备接收到用户输入的任务指令时,获取任务指令携带的数据类型,通过在数据源集合中查找与该数据类型相匹配的初始数据类型,并将该初始数据类型对应的指令数据源确定为初始指令数据源,再通过与该数据类型对应的数据接口将所述初始指令数据源接入至指令执行设备中。而在现有技术中只支持JDBC访问的数据源,却不能提供更一般性,更普适的数据源接入方式。所述JDBC是一种用于执行sql语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
其中,所述数据源集合中数据源存储形式可以为数据类型与指令数据源对应存储。本发明实施例涉及的指令执行设备可以为具备计算处理功能的服务器。
例如,如表1所示为一种形式的数据源集合,若任务指令指示的数据类型为mysql,则查表1可确定初始指令数据源为A。
需要说明的是,所述指令执行设备可以直接无差别同时接入多个指令数据源,该多个指令数据源的数据内容可以完全相同,也可以完全不同,还可以部分相同,具体不限定。
S202,当在格式转换数据库中存在所述初始数据类型对应的格式转换脚本时,采用所述格式转换脚本将所述初始指令数据源转换为目标数据类型的目标指令数据源;
可以理解的是,所述初始数据类型包括至少一种数据类型,所述目标数据类型为一种数据类型。将一种数据类型的指令数据源转换为另一种数据类型的指令数据源,可采用格式转换脚本进行转换,且在数据类型转换前和数据类型转换后,初始指令数据源与目标指令数据源中的数据内容相同,只是数据格式的变换。
所述数据转换脚本存储与格式转换数据库中,所述格式转换数据库为预先建立,在该格式转换数据库中包括至少一种数据转换脚本,每个数据转换脚本中携带有数据类型信息。
具体实现中,通过遍历格式转换数据库中各格式转换脚本对应的数据类型,当遍历到的格式转换脚本对应的数据类型与初始数据类型相匹配时,采用该格式转换脚本对初始指令数据源的初始数据类型进行转换,并将转换后的数据源设置为目标指令数据源。
S203,当在所述格式转换数据库中不存在所述初始数据类型对应的格式转换脚本时,在所述格式转换数据库中创建所述初始数据类型对应的格式转换脚本,并采用所述格式转换脚本将所述初始指令数据源转换为目标数据类型的目标指令数据源。
具体实现中,当在格式转换数据库中未查找到与初始数据类型相匹配的格式转换脚本时,表明该初始数据类型为一种新的数据类型,在格式转换数据库中未创建该新的数据类型的格式转换脚本,此时需要为该新的数据类型创建对应的格式转换脚本以便进行格式转换,同时,将所创建的格式转换脚本添加到格式转换数据库中以对格式转换数据库进行更新。
其中,一种具体的创建格式转换脚本的方式是给SOURCE_COMMAND字段赋值,从而构造一个以SOURCE_TYPE为前缀的通用脚本univeral_generator,并进行部分代码填充。
S204,当所述目标指令数据源为多个目标指令数据源时,基于所述多个目标指令数据源中各目标指令数据源对应的数据信息,确定所述各目标指令数据源之间的数据关联性;
可以理解的是,所述多个目标指令数据源中各目标指令数据源分别对应有相关的数据信息,所述数据信息可以由各数据关键字项组成,如以列表形式存储的个人数据信息中包括有“姓名”项、“性别”项、“年龄”项以及“家庭住址”项,相应的数据关键字为“姓名”、“性别”、“年龄”、“家庭住址”。
所述数据关联性可以理解为各数据信息中是否有相同的数据关键字项,若有,则表明两数据源之间存在数据关联性,若没有,则两数据源之间不存在数据关联性。
对于多个目标指令数据源,可基于DFS算法确定多个目标指令数据源之间的数据关联性以便进行迭代构造。所述DFS算法是搜索算法的一种。即沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所有边都已被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。属于盲目搜索。深度优先搜索是图论中的经典算法,利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等。
在一种具体的实现方式中,所述基于所述多个目标指令数据源中各目标指令数据源对应的数据信息,确定所述各目标指令数据源之间的数据关联性可以包括以下步骤,如图3所示:
S301,获取所述多个目标指令数据源中第一目标指令数据源对应的第一数据关键字集合,并获取所述多个目标指令数据源中第二目标指令数据源对应的第二数据关键字集合;
可以理解的是,所述多个目标指令数据源包括但不限于所述第一目标指令数据源和第二目标指令数据源,此处仅通过第一目标指令数据源和第二目标指令数据源进行说明。
每个目标指令数据源分别对应一个数据关键字集合,该数据关键字集合中包括至少一个数据关键字。将第一目标指令数据源对应的数据关键字集合作为第一数据关键字集合,将第二目标指令数据源对应的数据关键字集合作为第二数据关键字集合。可通过直接在所存储的数据信息中分别查找第一目标指令数据源对应的数据信息以及第二目标指令数据源对应的数据信息,然后读取查找到的数据信息中的数据关键字即可。
S302,当所述第一数据关键字集合与所述第二数据关键字集合存在相同的数据关键字时,确定所述第一目标指令数据源与所述第二目标指令数据源存在数据关联性;
具体实现中,通过比对第一数据关键字集合中的各数据关键字以及第二数据关键字集合中的各数据关键字,若有相同的关键字存在,则确定两目标指令数据源存在数据关联性。所述相同的数据关键字不限定一个,可以有多个相同的数据关键字。
例如,若第一数据关键字集合包括“姓名、性别、年龄、家庭住址”,第二数据关键字集合包括“姓名、语文成绩、数学成绩、英语成绩”,两数据关键字集合存在相同的数据关键字“姓名”,表明第一目标指令数据源与所述第二目标指令数据源存在数据关联性。
S303,当所述第一数据关键字集合与所述第二数据关键字集合不存在相同的数据关键字时,确定所述第一目标指令数据源与所述第二目标指令数据源不存在数据关联性。
具体实现中,通过比对第一数据关键字集合中的各数据关键字以及第二数据关键字集合中的各数据关键字,若没有相同的数据关键字存在,则确定两目标指令数据源不存在数据关联性。
例如,若第一数据关键字集合包括“姓名、性别、年龄、家庭住址”,第二数据关键字集合包括“项目、日期、品名、数量”,两数据关键字集合没有相同的数据关键字,表明第一目标指令数据源与所述第二目标指令数据源不存在数据关联性。
S205,按照所述数据关联性对所述各目标指令数据源进行关联排列,以生成关联排列后的数据源序列;
具体实现中,依次遍历各目标指令数据源,判断当前遍历到的目标指令数据源和其他目标指令数据源(或者指定的目标指令数据源、或者用户选定的目标指令数据源)是否存在数据关联性,如果没有关联,就将当前读取到的目标指令数据源存放在一个存储空间(如cmd数组)中,并继续遍历下一目标指令数据源。如果有关联,将当前读取到的目标指令数据源放在另一存储空间(如generator数组)的第一位置,将关联的目标指令数据源放第一位置后面的第二位置,同时,将该关联的目标指令数据源作为当前的目标指令数据源,再继续查找与该当前的目标指令数据源相关联的其它目标指令数据源。
在一种具体的实现方式中,所述按照所述数据关联性对所述各目标指令数据源进行关联排列,以生成关联排列后的数据源序列可以包括以下步骤,如图4所示:
S401,遍历所述多个目标指令数据源中各目标指令数据源;
例如,多个目标指令数据源为generator[1,2,3,...,10],则依次遍历这10个元素,并将当前遍历到的目标指令数据源设置为第一目标指令数据源,而其它的目标指令数据源设置为第二目标指令数据源。若当前遍历到generator1,则第一目标指令数据源为generator1,generator[1,2,3,...,9]均为第二目标指令数据源。
S402,当遍历到的所述第一目标指令数据源与所述第二目标指令数据源存在数据关联性时,将所述第一目标指令数据源相邻排列在所述第二目标指令数据源之前,并存储在第一数组中;
表2
generator1 |
generator5 |
generator6 |
… |
例如,第一目标指令数据源为generator1,则依次判断generator1与generator2~generator10的数据关联性,若generator1与generator5存在数据关联性,则将generator1与generator5关联排列在第一数组中,如表2所示。
S403,将所述第二目标指令数据源设置为所述第一目标指令数据源,并执行所述当遍历到的所述第一目标指令数据源与所述第二目标指令数据源存在数据关联性时,将所述第一目标指令数据源相邻排列在所述第二目标指令数据源之前的步骤;
可以理解的是,基于S402的判断结果,将generator5确定为被关联对象,并判断generator2、generator3、generator4以及generator6~generator10的数据关联性,若确定generator5与generator6关联,再将generator6与generator5关联排列的第一数组中,并依此方法依次将具有数据关联性的目标指令数据源关联存储,从而得到最终的数据源序列。
优选的,当第一数组为generator数组时,直接将generator5取出并与generator1关联排列即可。
其中,对应的具体循环步骤为:设变量i=1,当前遍历到的目标指令数据源generator_tmp=generator[i],如果generator_tmp有数据关联项generator[k],则将generator_tmp放置到generator的头部,generator[k]取出来并放在generator_tmp后面,设置generator_tmp=generator[k],再继续查找generator[k]的数据关联项,得到最终的数据源序列。
S404,当遍历到的所述第一目标指令数据源与所述第二目标指令数据源不存在数据关联性时,将所述第一目标指令数据源存储在第二数组中,并执行遍历所述多个目标指令数据源中各目标指令数据源的步骤。
表3
generator2 |
generator3 |
generator4 |
… |
generator10 |
例如,第一目标指令数据源为generator1,则依次判断generator1与generator2~generator10的数据关联性,若generator1与generator2不存在数据关联性,则将generator2放在第二数组(cmd执行命令栈)中,如表3所示,继续generator1与generator3判断,若不存在数据关联性,则将generator3从generator数组中取出并存放在generator2后,同理,将generator4放在generator3后,当generator1与generator5关联时,将generator5确定为第一目标指令数据源,并将generator6~generator10取出后存放在cmd执行命令栈中,再在存放在cmd执行命令栈中各目标指令数据源找出与generator5相关联的generator[k]。
S206,所述任务信息包括关联关键字集合,获取所述关联关键字集合中各关联关键字的先后顺序;
可以理解的是,所述关联关键字集合中包括至少一个关联关键字,所述至少一个关联关键字为用户输入,当所述关联关键字包括多个时,所输入的先后顺序即为各关联关键字的先后顺序。
S207,按照所述先后顺序并基于所述关联关键字集合,以生成所述任务事件的命令序列。
可以理解的是,所述命令序列即为可执行的指令序列,如sql语句。所述命令序列由多个子命令序列组合而成,每个子命令序列与一个关联关键字对应,按照每个关联关键字的先后顺序分别对各个子命令序列进行拼接,在执行该命令序列时,则会按照先后顺序获取相关数据。
在一种具体的实现方式中,所述按照所述先后顺序并基于所述关联关键字集合,以生成所述任务事件的命令序列可以包括以下步骤,如图5所示:
S501,创建所述关联关键字集合中各关联关键字分别对应的子命令序列;
可以理解的是,在获取数据源序列后,所读取到的数据源序列中各目标指令数据源对应的数据信息以文本的方式存储起来,在创建命令序列时,需要将文本数据加载到公共的存储数据库中的临时数据表中,本发明实施例中采用hive数据库作为中间结果层,当然也可以采用更高效的计算平台替代。
具体实现中,在目标指令数据源关联完成之后,将关联数据提交到hive临时表中,读取关联关键字集合中各关联关键字,并分别基于各关联关键字创建一个子命令序列。
例如,若关联关键字集合包括“关键字1、关键字2、关键字3”,得到数据关联后的数据源为generator[1,5,6,2,3,8,9,10,4,7],确定“关键字1”所属的数据源序列为generator1对应的table1以及generator5对应的table5,则创建子命令序列tmp_sql关联table1和table5,读取cmd_final,如果cmd_final为空,则cmd_final=tmp_sql,否则cmd_final为cmd_final与tmp_sql的关联结果,相应的获取关键字的子命令序列和关键字3的子命令序列。需要说明的是,在本发明实施例中,字段关联逻辑是以类sql的语句进行关联,也就是说,所创建的子命令序列采用类sql语句,当然也可以通过mondrian schema进行替代。但目前来说,类sql语句对于大多数人来说门槛更低,适用面更广一些。
S502,按照所述先后顺序将所述子命令序列进行组合,以得到所述任务事件对应的命令序列。
按照关键字1、关键字2和关键字3的先后输入顺序将所得到的3个子命令序列关联,所述关联的关联方式可以为采用“与”“或”“非”或其它关联关系对这3个子命令序列组合,从而得到一条大的可执行的组合命令序列,并将该命令序列确定为任务事件对应的命令序列。
S208,执行所述命令序列以输出所述任务事件对应的执行结果。
具体实现中,指令执行设备基于该命令序列的存储路径执行该命令序列,并把结果写回到该存储路径即可。
在本发明实施例中,通过获取针对当前的任务事件所输入的任务指令,在数据源集合中获取任务指令所指示的初始数据类型的初始指令数据源,将初始指令数据源转换为目标数据类型的目标指令数据源,并基于任务指令所指示的任务事件的任务信息对目标指令数据源进行解析,以生成任务事件的命令序列,执行命令序列以输出任务事件对应的执行结果。可以不必关心数据源的具体数据类型,通过将初始指令数据源的数据类型转换为统一的数据类型而实现跨数据源的数据导出,不必受到数据源类型的限制,具有充分的可扩展性,为各业务的数据导出,日常数据运维,数据分析提供了快速简洁的服务。另外,可以实现多数据源的关联提取功能,基于DFS深度优先算法组装出可执行的命令序列,展示多维度多数据源的数据视图。
下面将结合附图6-附图9,对本发明实施例提供的指令执行设备进行详细介绍。需要说明的是,附图6-附图9所示的设备,用于执行本发明图1-图5所示实施例的方法,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明图1-图5所示的实施例。
请参见图6,为本发明实施例提供了一种指令执行设备的架构示意图。如图6所示,本发明实施例的所述指令执行设备可以包括:数据接入层、数据适配层、数据执行层和结果反馈层,其中:
所述数据接入层获取针对当前的任务事件所输入的任务指令,在数据源集合中获取所述任务指令所指示的初始数据类型的初始指令数据源。
所述数据接入层将所述初始指令数据源转换为目标数据类型的目标指令数据源,包括:
当在格式转换数据库中存在所述初始数据类型对应的格式转换脚本时,所述数据接入层采用所述格式转换脚本将所述初始指令数据源转换为目标数据类型的目标指令数据源;
当在所述格式转换数据库中不存在所述初始数据类型对应的格式转换脚本时,所述数据接入层在所述格式转换数据库中创建所述初始数据类型对应的格式转换脚本,并采用所述格式转换脚本将所述初始指令数据源转换为目标数据类型的目标指令数据源。
所述数据接入层将所述初始指令数据源转换为目标数据类型的目标指令数据源;
所述数据适配层基于所述任务指令所指示的所述任务事件的任务信息对所述目标指令数据源进行解析,以生成所述任务事件的命令序列。
当所述目标指令数据源为多个目标指令数据源时,所述数据适配层基于所述任务指令所指示的所述任务事件的任务信息对所述目标指令数据源进行解析,以生成所述任务事件的命令序列,包括:
所述数据适配层基于所述多个目标指令数据源中各目标指令数据源对应的数据信息,确定所述各目标指令数据源之间的数据关联性;
所述数据适配层按照所述数据关联性对所述各目标指令数据源进行关联排列,以生成关联排列后的数据源序列;
所述数据适配层基于所述任务指令所指示的所述任务事件的任务信息对所述数据源序列进行解析,以生成所述任务事件的命令序列。
所述数据适配层基于所述多个目标指令数据源中各目标指令数据源的数据信息,确定所述各目标指令数据源之间的数据关联性,包括:
所述数据适配层获取所述多个目标指令数据源中第一目标指令数据源对应的第一数据关键字集合,并获取所述多个目标指令数据源中第二目标指令数据源对应的第二数据关键字集合;
当所述第一数据关键字集合与所述第二数据关键字集合存在相同的数据关键字时,所述数据适配层确定所述第一目标指令数据源与所述第二目标指令数据源存在数据关联性;
当所述第一数据关键字集合与所述第二数据关键字集合不存在相同的数据关键字时,所述数据适配层确定所述第一目标指令数据源与所述第二目标指令数据源不存在数据关联性。
所述数据适配层按照所述数据关联性对所述各目标指令数据源进行关联排列,以生成关联排列后的数据源序列,包括:
所述数据适配层遍历所述多个目标指令数据源中各目标指令数据源;
当所述数据适配层遍历到的所述第一目标指令数据源与所述第二目标指令数据源存在数据关联性时,将所述第一目标指令数据源相邻排列在所述第二目标指令数据源之前,并存储在第一数组中;
所述数据适配层将所述第二目标指令数据源设置为所述第一目标指令数据源,并执行所述当遍历到的所述第一目标指令数据源与所述第二目标指令数据源存在数据关联性时,将所述第一目标指令数据源相邻排列在所述第二目标指令数据源之前的步骤;
当所述数据适配层遍历到的所述第一目标指令数据源与所述第二目标指令数据源不存在数据关联性时,将所述第一目标指令数据源存储在第二数组中,并执行遍历所述多个目标指令数据源中各目标指令数据源的步骤。
所述任务信息包括关联关键字集合,所述数据适配层基于所述任务指令所指示的所述任务事件的任务信息对所述数据源序列进行解析,以生成所述任务事件的命令序列,包括:
所述数据适配层获取所述关联关键字集合中各关联关键字的先后顺序;
所述数据适配层按照所述先后顺序并基于所述关联关键字集合,以生成所述任务事件的命令序列。
所述数据适配层按照所述先后顺序并基于所述关联关键字集合,以生成所述任务事件的命令序列,包括:
所述数据适配层创建所述关联关键字集合中各关联关键字分别对应的子命令序列;
所述数据适配层按照所述先后顺序将所述子命令序列进行组合,以得到所述任务事件对应的命令序列。
所述数据执行层执行所述命令序列以输出所述任务事件对应的执行结果,将所述执行结果发送至结果反馈层。
在本发明实施例中,通过获取针对当前的任务事件所输入的任务指令,在数据源集合中获取任务指令所指示的初始数据类型的初始指令数据源,将初始指令数据源转换为目标数据类型的目标指令数据源,并基于任务指令所指示的任务事件的任务信息对目标指令数据源进行解析,以生成任务事件的命令序列,执行命令序列以输出任务事件对应的执行结果。可以不必关心数据源的具体数据类型,通过将初始指令数据源的数据类型转换为统一的数据类型而实现跨数据源的数据导出,不必受到数据源类型的限制,具有充分的可扩展性,为各业务的数据导出,日常数据运维,数据分析提供了快速简洁的服务。
请参见图7,为本发明实施例提供了一种指令执行设备的结构示意图。如图7所示,本发明实施例的所述指令执行设备1可以包括:数据源获取单元11、数据源转换单元12、序列生成单元13和序列执行单元14。
数据源获取单元11,用于获取针对当前的任务事件所输入的任务指令,在数据源集合中获取所述任务指令所指示的初始数据类型的初始指令数据源;
可以理解的是,所述任务事件为用户所定义,用户通过编写任务指令指示指令执行设备分析、调度并执行所述任务事件对应的任务。
所述数据源集合中包括至少一种数据类型的指令数据源,所述指令数据源可以为任何能输出数据的对象,如mysql、hive等DB数据源;单个的文件(file)或者分布式文件(hdfs);一段可以执行的代码(shell脚本);网址等。
具体实现中,当数据源获取单元11接收到用户输入的任务指令时,获取任务指令携带的数据类型,通过在数据源集合中查找与该数据类型相匹配的初始数据类型,并将该初始数据类型对应的数据源确定为初始指令数据源,再通过与该数据类型对应的数据接口将所述初始指令数据源接入至指令执行设备中。如果该数据源为一种新的数据类型,则需要增加一个适配接口即可接入该数据源。也就是说,通过数据类型的转换后,可对外提供统一的数据接口接入目标指令数据源。而在现有技术中只支持JDBC访问的数据源,不能提供更一般性,更普适的接入方式。所述JDBC是一种用于执行sql语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
其中,所述数据源集合中指令数据源存储形式可以为数据类型与指令数据源对应存储。
例如,如表1所示为一种形式的数据源集合,若任务指令指示的数据类型为mysql,则查表1可确定初始指令数据源为A。
需要说明的是,所述数据源获取单元11可以直接无差别同时接入多个指令数据源,该多个指令数据源的数据内容可以完全相同,也可以完全不同,还可以部分相同,具体不限定。
数据源转换单元12,用于将所述初始指令数据源转换为目标数据类型的目标指令数据源;
可以理解的是,将一种数据类型的指令数据源转换为另一种数据类型的指令数据源,可采用格式转换脚本进行转换,且在数据类型转换前和数据类型转换后,初始指令数据源与目标指令数据源中的数据内容相同,只是数据格式的变换。
其中,所述格式转换脚本即generator,所述generator是一个拥有数据输出能力的对象,其与数据类型一一对应,可将所有数据类型的数据源都抽象成generator类型。所述脚本是批处理文件的延伸,是一种纯文本保存的程序,一般来说的计算机脚本程序是确定的一系列控制计算机进行运算操作动作的组合,在其中可以实现一定的逻辑分支等。
具体实现中,当数据源转换单元12在格式转换数据库中存在所述初始数据类型对应的格式转换脚本时,采用所述格式转换脚本将所述初始指令数据源转换为目标数据类型的目标指令数据源;当在所述格式转换数据库中不存在所述初始数据类型对应的格式转换脚本时,在所述格式转换数据库中创建所述初始数据类型对应的格式转换脚本,并采用所述格式转换脚本将所述初始指令数据源转换为目标数据类型的目标指令数据源,通过每种数据类型对应的格式转换脚本可将初始指令数据源转换为同一种类型的目标指令数据源,所述同一种类型即为目标数据类型。所述格式转换数据库为预先建立,在该格式转换数据库中包括至少一种数据转换脚本,每个数据转换脚本中携带有数据类型信息。
其中,一种具体的创建格式转换脚本的方式是给SOURCE_COMMAND字段赋值,从而构造一个以SOURCE_TYPE为前缀的通用脚本univeral_generator,并进行部分代码填充。
序列生成单元13,用于基于所述任务指令所指示的所述任务事件的任务信息对所述目标指令数据源进行解析,以生成所述任务事件的命令序列;
可以理解的是,所述序列生成单元13可以支持任务指令指示的任务事件对应的单个目标指令数据源的解析,也可以支持任务指令指示的任务事件对应的多个目标指令数据源的解析。
对于单个目标指令数据源,只需要基于任务信息进行重新分析,解释,从而生成命令序列即可;对于多个目标指令数据源,可以对多个目标指令数据源中每个目标指令数据源分别进行分析,解释,并得到多条命令序列。
优选的,对于多个目标指令数据源,基于深度优先算法对多个目标指令数据源进行迭代构造而得到数据源序列,并对数据源序列进行解析,从而包裹成一条可执行的命令序列。比如多个目标指令数据源为A1,B1,C1,而B1由D1和E1生成,那么DFS算法进行迭代构造并融合,最终形成一个可执行的“大”命令序列A1,D1,E1,B1,C1。可以实现多数据源的关联提取功能,基于DFS深度优先算法组装出可执行的命令序列,展示多维度多数据源的数据视图。
所述DFS算法是搜索算法的一种。即沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所有边都已被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。属于盲目搜索。深度优先搜索是图论中的经典算法,利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等。
具体实现中,当所述目标指令数据源为单个目标指令数据源时,只需要基于任务信息进行重新分析,解释,从而生成命令序列即可;当所述目标指令数据源为多个目标指令数据源时,基于所述多个目标指令数据源中各目标指令数据源对应的数据信息,确定所述各目标指令数据源之间的数据关联性,按照所述数据关联性对所述各目标指令数据源进行关联排列,以生成关联排列后的数据源序列,基于所述任务指令所指示的所述任务事件的任务信息对所述数据源序列进行解析,以生成所述任务事件的命令序列。
序列执行单元14,用于执行所述命令序列以输出所述任务事件对应的执行结果。
具体实现中,序列执行单元14基于该命令序列的存储路径执行该命令序列,并把结果写回到该存储路径即可。
在本发明实施例中,通过获取针对当前的任务事件所输入的任务指令,在数据源集合中获取任务指令所指示的初始数据类型的初始指令数据源,将初始指令数据源转换为目标数据类型的目标指令数据源,并基于任务指令所指示的任务事件的任务信息对目标指令数据源进行解析,以生成任务事件的命令序列,执行命令序列以输出任务事件对应的执行结果。可以不必关心数据源的具体数据类型,通过将初始指令数据源的数据类型转换为统一的数据类型而实现跨数据源的数据导出,不必受到数据源类型的限制,具有充分的可扩展性,为各业务的数据导出,日常数据运维,数据分析提供了快速简洁的服务。另外,可以实现多数据源的关联提取功能组装出可执行的命令序列,展示多维度多数据源的数据视图。
具体的,请一并参见图7-8,为本发明实施例提供了一种指令执行设备的结构示意图。如图7-8所示,可以包括:
数据源获取单元11,用于获取针对当前的任务事件所输入的任务指令,在数据源集合中获取所述任务指令所指示的初始数据类型的初始指令数据源;
可以理解的是,所述任务事件为用户所定义,用户通过编写任务指令指示指令执行设备分析、调度并执行所述任务事件对应的任务。
所述数据源集合中包括至少一种数据类型的指令数据源,所述指令数据源可以为任何能输出数据的对象,如mysql、hive等DB数据源;单个的文件(file)或者分布式文件(hdfs);一段可以执行的代码(shell脚本);网址等。
具体实现中,当数据源获取单元11接收到用户输入的任务指令时,获取任务指令携带的数据类型,通过在数据源集合中查找与该数据类型相匹配的初始数据类型,并将该初始数据类型对应的数据源确定为初始指令数据源,再通过与该数据类型对应的数据接口将所述初始指令数据源接入至数据源获取单元11中。如果该数据源为一种新的数据类型,则需要增加一个适配接口即可接入该数据源。也就是说,通过数据类型的转换后,可对外提供统一的数据接口接入目标指令数据源。而在现有技术中只支持JDBC访问的数据源,不能提供更一般性,更普适的接入方式。所述JDBC是一种用于执行sql语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
其中,所述数据源集合中指令数据源存储形式可以为数据类型与指令数据源对应存储。
例如,如表1所示为一种形式的数据源集合,若任务指令指示的数据类型为mysql,则查表1可确定初始指令数据源为A。
需要说明的是,所述数据源获取单元11可以直接无差别同时接入多个指令数据源,该多个指令数据源的数据内容可以完全相同,也可以完全不同,还可以部分相同,具体不限定。
数据源转换单元12,用于将所述初始指令数据源转换为目标数据类型的目标指令数据源;
可以理解的是,将一种数据类型的指令数据源转换为另一种数据类型的指令数据源,可采用格式转换脚本进行转换,且在数据类型转换前和数据类型转换后,初始指令数据源与目标指令数据源中的数据内容相同,只是数据格式的变换。
其中,所述格式转换脚本即generator,所述generator是一个拥有数据输出能力的对象,其与数据类型一一对应,可将所有数据类型的数据源都抽象成generator类型。所述脚本是批处理文件的延伸,是一种纯文本保存的程序,一般来说的计算机脚本程序是确定的一系列控制计算机进行运算操作动作的组合,在其中可以实现一定的逻辑分支等。
具体实现中,当数据源转换单元12在格式转换数据库中存在所述初始数据类型对应的格式转换脚本时,采用所述格式转换脚本将所述初始指令数据源转换为目标数据类型的目标指令数据源;当数据源转换单元12在所述格式转换数据库中不存在所述初始数据类型对应的格式转换脚本时,在所述格式转换数据库中创建所述初始数据类型对应的格式转换脚本,并采用所述格式转换脚本将所述初始指令数据源转换为目标数据类型的目标指令数据源,通过每种数据类型对应的格式转换脚本可将初始指令数据源转换为同一种类型的目标指令数据源,所述同一种类型即为目标数据类型。所述格式转换数据库为预先建立,在该格式转换数据库中包括至少一种数据转换脚本,每个数据转换脚本中携带有数据类型信息。
可选的,所述数据源转换单元12,具体用于:
当在格式转换数据库中存在所述初始数据类型对应的格式转换脚本时,采用所述格式转换脚本将所述初始指令数据源转换为目标数据类型的目标指令数据源;
可以理解的是,所述初始数据类型包括至少一种数据类型,所述目标数据类型为一种数据类型。将一种数据类型的指令数据源转换为另一种数据类型的指令数据源,可采用格式转换脚本进行转换,且在数据类型转换前和数据类型转换后,初始指令数据源与目标指令数据源中的数据内容相同,只是数据格式的变换。
所述数据转换脚本存储与格式转换数据库中,所述格式转换数据库为预先建立,在该格式转换数据库中包括至少一种数据转换脚本,每个数据转换脚本中携带有数据类型信息。
具体实现中,通过数据源转换单元12遍历格式转换数据库中各格式转换脚本对应的数据类型,当遍历到的格式转换脚本对应的数据类型与初始数据类型相匹配时,采用该格式转换脚本对初始指令数据源的初始数据类型进行转换,并将转换后的数据源设置为目标指令数据源。
当在所述格式转换数据库中不存在所述初始数据类型对应的格式转换脚本时,在所述格式转换数据库中创建所述初始数据类型对应的格式转换脚本,并采用所述格式转换脚本将所述初始指令数据源转换为目标数据类型的目标指令数据源。
具体实现中,当数据源转换单元12在格式转换数据库中未查找到与初始数据类型相匹配的格式转换脚本时,表明该初始数据类型为一种新的数据类型,在格式转换数据库中未创建该新的数据类型的格式转换脚本,此时需要为该新的数据类型创建对应的格式转换脚本以便进行格式转换,同时,将所创建的格式转换脚本添加到格式转换数据库中以对格式转换数据库进行更新。
其中,一种具体的创建格式转换脚本的方式是给SOURCE_COMMAND字段赋值,从而构造一个以SOURCE_TYPE为前缀的通用脚本univeral_generator,并进行部分代码填充。
序列生成单元13,用于基于所述任务指令所指示的所述任务事件的任务信息对所述目标指令数据源进行解析,以生成所述任务事件的命令序列;
可以理解的是,所述序列生成单元13可以支持任务指令指示的任务事件对应的单个目标指令数据源的解析,也可以支持任务指令指示的任务事件对应的多个目标指令数据源的解析。
对于单个目标指令数据源,只需要基于任务信息进行重新分析,解释,从而生成命令序列即可;对于多个目标指令数据源,可以对多个目标指令数据源中每个目标指令数据源分别进行分析,解释,并得到多条命令序列;优选的,对于多个目标指令数据源,基于DFS算法对多个目标指令数据源进行迭代构造而得到数据源序列,并对数据源序列进行解析,从而包裹成一条可执行的命令序列。
所述DFS算法是搜索算法的一种。即沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所有边都已被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。属于盲目搜索。深度优先搜索是图论中的经典算法,利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等。
具体实现中,当所述目标指令数据源为单个目标指令数据源时,只需要基于任务信息进行重新分析,解释,从而生成命令序列即可;当所述目标指令数据源为多个目标指令数据源时,基于所述多个目标指令数据源中各目标指令数据源对应的数据信息,确定所述各目标指令数据源之间的数据关联性,按照所述数据关联性对所述各目标指令数据源进行关联排列,以生成关联排列后的数据源序列,基于所述任务指令所指示的所述任务事件的任务信息对所述数据源序列进行解析,以生成所述任务事件的命令序列。
可选的,如图8所示,当所述目标指令数据源为多个目标指令数据源时,所述序列生成单元13,包括:
关联性确定子单元131,用于基于所述多个目标指令数据源中各目标指令数据源对应的数据信息,确定所述各目标指令数据源之间的数据关联性;
可以理解的是,所述多个目标指令数据源中各目标指令数据源分别对应有相关的数据信息,所述数据信息可以由各数据关键字项组成,如以列表形式存储的个人数据信息中包括有“姓名”项、“性别”项、“年龄”项以及“家庭住址”项,相应的数据关键字为“姓名”、“性别”、“年龄”、“家庭住址”。
所述数据关联性可以理解为各数据信息中是否有相同的数据关键字项,若有,则表明两数据源之间存在数据关联性,若没有,则两数据源之间不存在数据关联性。
可选的,所述关联性确定子单元1311,具体用于:
获取所述多个目标指令数据源中第一目标指令数据源对应的第一数据关键字集合,并获取所述多个目标指令数据源中第二目标指令数据源对应的第二数据关键字集合;
可以理解的是,所述多个目标指令数据源包括但不限于所述第一目标指令数据源和第二目标指令数据源,此处仅通过第一目标指令数据源和第二目标指令数据源进行说明。
每个目标指令数据源分别对应一个数据关键字集合,该数据关键字集合中包括至少一个数据关键字。将第一目标指令数据源对应的数据关键字集合作为第一数据关键字集合,将第二目标指令数据源对应的数据关键字集合作为第二数据关键字集合。可通过直接在所存储的数据信息中分别查找第一目标指令数据源对应的数据信息以及第二目标指令数据源对应的数据信息,然后读取查找到的数据信息中的数据关键字即可。
当所述第一数据关键字集合与所述第二数据关键字集合存在相同的数据关键字时,确定所述第一目标指令数据源与所述第二目标指令数据源存在数据关联性;
具体实现中,通过比对第一数据关键字集合中的各数据关键字以及第二数据关键字集合中的各数据关键字,若有相同的关键字存在,则确定两目标指令数据源存在数据关联性。所述相同的数据关键字不限定一个,可以有多个相同的数据关键字。
例如,若第一数据关键字集合包括“姓名、性别、年龄、家庭住址”,第二数据关键字集合包括“姓名、语文成绩、数学成绩、英语成绩”,两数据关键字集合存在相同的数据关键字“姓名”,表明第一目标指令数据源与所述第二目标指令数据源存在数据关联性。
当所述第一数据关键字集合与所述第二数据关键字集合不存在相同的数据关键字时,确定所述第一目标指令数据源与所述第二目标指令数据源不存在数据关联性。
具体实现中,通过比对第一数据关键字集合中的各数据关键字以及第二数据关键字集合中的各数据关键字,若没有相同的数据关键字存在,则确定两目标指令数据源不存在数据关联性。
例如,若第一数据关键字集合包括“姓名、性别、年龄、家庭住址”,第二数据关键字集合包括“项目、日期、品名、数量”,两数据关键字集合没有相同的数据关键字,表明第一目标指令数据源与所述第二目标指令数据源不存在数据关联性。
数据源排列子单元132,用于按照所述数据关联性对所述各目标指令数据源进行关联排列,以生成关联排列后的数据源序列;
具体实现中,依次遍历各目标指令数据源,判断当前遍历到的目标指令数据源和其他目标指令数据源(或者指定的目标指令数据源、或者用户选定的目标指令数据源)是否存在数据关联性,如果没有关联,就将当前读取到的目标指令数据源存放在一个存储空间(如cmd数组)中,并继续遍历下一目标指令数据源。如果有关联,将当前读取到的目标指令数据源放在另一存储空间(如generator数组)的第一位置,将关联的目标指令数据源放第一位置后面的第二位置,同时,将该关联的目标指令数据源作为当前的目标指令数据源,再继续查找与该当前的目标指令数据源相关联的其它目标指令数据源。
可选的,所述数据源排列子单元132,具体用于:
遍历所述多个目标指令数据源中各目标指令数据源;
例如,多个目标指令数据源为generator[1,2,3,...,10],则依次遍历这10个元素,并将当前遍历到的目标指令数据源设置为第一目标指令数据源,而其它的目标指令数据源设置为第二目标指令数据源。若当前遍历到generator1,则第一目标指令数据源为generator1,generator[1,2,3,...,9]均为第二目标指令数据源。
当遍历到的所述第一目标指令数据源与所述第二目标指令数据源存在数据关联性时,将所述第一目标指令数据源相邻排列在所述第二目标指令数据源之前,并存储在第一数组中;
例如,第一目标指令数据源为generator1,则依次判断generator1与generator2~generator10的数据关联性,若generator1与generator5存在数据关联性,则将generator1与generator5关联排列在第一数组中,如表2所示。
将所述第二目标指令数据源设置为所述第一目标指令数据源,并执行所述当遍历到的所述第一目标指令数据源与所述第二目标指令数据源存在数据关联性时,将所述第一目标指令数据源相邻排列在所述第二目标指令数据源之前的步骤;
可以理解的是,基于上述的判断结果,将generator5确定为被关联对象,并判断generator2、generator3、generator4以及generator6~generator10的数据关联性,若确定generator5与generator6关联,再将generator6与generator5关联排列的第一数组中,并依此方法依次将具有数据关联性的目标指令数据源关联存储,从而得到最终的数据源序列。
优选的,当第一数组为generator数组时,直接将generator5取出并与generator1关联排列即可。
其中,对应的具体循环步骤为:设变量i=1,当前遍历到的目标指令数据源generator_tmp=generator[i],如果generator_tmp有数据关联项generator[k],则将generator_tmp放置到generator的头部,generator[k]取出来并放在generator_tmp后面,设置generator_tmp=generator[k],再继续查找generator[k]的数据关联项,得到最终的数据源序列。
当遍历到的所述第一目标指令数据源与所述第二目标指令数据源不存在数据关联性时,将所述第一目标指令数据源存储在第二数组中,并执行遍历所述多个目标指令数据源中各目标指令数据源的步骤。
例如,第一目标指令数据源为generator1,则依次判断generator1与generator2~generator10的数据关联性,若generator1与generator2不存在数据关联性,则将generator2放在第二数组(cmd执行命令栈)中,如表3所示,继续generator1与generator3判断,若不存在数据关联性,则将generator3从generator数组中取出并存放在generator2后,同理,将generator4放在generator3后,当generator1与generator5关联时,将generator5确定为第一目标指令数据源,并将generator6~generator10取出后存放在cmd执行命令栈中,再在存放在cmd执行命令栈中各目标指令数据源找出与generator5相关联的generator[k]。
序列生成子单元133,用于基于所述任务指令所指示的所述任务事件的任务信息对所述数据源序列进行解析,以生成所述任务事件的命令序列。
可选的,所述任务信息包括关联关键字集合,所述序列生成子单元133,具体用于:
获取所述关联关键字集合中各关联关键字的先后顺序;
可以理解的是,所述关联关键字集合中包括至少一个关联关键字,所述至少一个关联关键字为用户输入,当所述关联关键字包括多个时,所输入的先后顺序即为各关联关键字的先后顺序。
按照所述先后顺序并基于所述关联关键字集合,以生成所述任务事件的命令序列。
可以理解的是,所述命令序列即为可执行的指令序列,如sql语句。所述命令序列由多个子命令序列组合而成,每个子命令序列与一个关联关键字对应,按照每个关联关键字的先后顺序分别对各个子命令序列进行拼接,在执行该命令序列时,则会按照先后顺序获取相关数据。
进一步地,所述序列生成子单元133,具体用于:
创建所述关联关键字集合中各关联关键字分别对应的子命令序列;
可以理解的是,在获取数据源序列后,所读取到的数据源序列中各目标指令数据源对应的数据信息以文本的方式存储起来,在创建命令序列时,需要将文本数据加载到公共的存储数据库中的临时数据表中,本发明实施例中采用hive数据库作为中间结果层,当然也可以采用更高效的计算平台替代。
具体实现中,在目标指令数据源关联完成之后,将关联数据提交到hive临时表中,读取关联关键字集合中各关联关键字,并分别基于各关联关键字创建一个子命令序列。
例如,若关联关键字集合包括“关键字1、关键字2、关键字3”,得到数据关联后的数据源为generator[1,5,6,2,3,8,9,10,4,7],确定“关键字1”所属的数据源序列为generator1对应的table1以及generator5对应的table5,则创建子命令序列tmp_sql关联table1和table5,读取cmd_final,如果cmd_final为空,则cmd_final=tmp_sql,否则cmd_final为cmd_final与tmp_sql的关联结果,相应的获取关键字的子命令序列和关键字3的子命令序列。
需要说明的是,在本发明实施例中,字段关联逻辑是以类sql的语句进行关联,也就是说,所创建的子命令序列采用类sql语句,当然也可以通过mondrian schema进行替代。但目前来说,类sql语句对于大多数人来说门槛更低,适用面更广一些。
按照所述先后顺序将所述子命令序列进行组合,以得到所述任务事件对应的命令序列。
按照关键字1、关键字2和关键字3的先后输入顺序将所得到的3个子命令序列关联,所述关联的关联方式可以为采用“与”“或”“非”或其它关联关系对这3个子命令序列组合,从而得到一条大的可执行的组合命令序列,并将该命令序列确定为任务事件对应的命令序列。
序列执行单元14,用于执行所述命令序列以输出所述任务事件对应的执行结果。
具体实现中,序列执行单元14基于该命令序列的存储路径执行该命令序列,并把结果写回到该存储路径即可。
在本发明实施例中,通过获取针对当前的任务事件所输入的任务指令,在数据源集合中获取任务指令所指示的初始数据类型的初始指令数据源,将初始指令数据源转换为目标数据类型的目标指令数据源,并基于任务指令所指示的任务事件的任务信息对目标指令数据源进行解析,以生成任务事件的命令序列,执行命令序列以输出任务事件对应的执行结果。可以不必关心数据源的具体数据类型,通过将初始指令数据源的数据类型转换为统一的数据类型而实现跨数据源的数据导出,不必受到数据源类型的限制,具有充分的可扩展性,为各业务的数据导出,日常数据运维,数据分析提供了快速简洁的服务。另外,可以实现多数据源的关联提取功能组装出可执行的命令序列,展示多维度多数据源的数据视图。
本发明实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述图1-图5所示实施例的方法步骤,具体执行过程可以参见图1-图5所示实施例的具体说明,在此不进行赘述。
请参见图9,为本发明实施例提供了一种服务器的结构示意图。如图9所示,所述服务器1000可以包括:至少一个处理器1001,例如CPU,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、摄像头(Camera),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如Wi-Fi接口)。存储器1005可以是高速RAM存储器,也可以是非易失性的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图9所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及指令执行应用程序。
在图9所示的服务器1000中,用户接口1003主要用于为用户提供输入的接口,获取用户输入的数据;而处理器1001可以用于调用存储器1005中存储的指令执行应用程序,并具体执行以下操作:
获取针对当前的任务事件所输入的任务指令,在数据源集合中获取所述任务指令所指示的初始数据类型的初始指令数据源;
将所述初始指令数据源转换为目标数据类型的目标指令数据源;
基于所述任务指令所指示的所述任务事件的任务信息对所述目标指令数据源进行解析,以生成所述任务事件的命令序列;
执行所述命令序列以输出所述任务事件对应的执行结果。
在一个实施例中,所述处理器1001在执行将所述初始指令数据源转换为目标数据类型的目标指令数据源时,具体执行以下操作:
当在格式转换数据库中存在所述初始数据类型对应的格式转换脚本时,采用所述格式转换脚本将所述初始指令数据源转换为目标数据类型的目标指令数据源;
当在所述格式转换数据库中不存在所述初始数据类型对应的格式转换脚本时,在所述格式转换数据库中创建所述初始数据类型对应的格式转换脚本,并采用所述格式转换脚本将所述初始指令数据源转换为目标数据类型的目标指令数据源。
在一个实施例中,当所述目标指令数据源为多个目标指令数据源时,所述处理器1001在执行基于所述任务指令所指示的所述任务事件的任务信息对所述目标指令数据源进行解析,以生成所述任务事件的命令序列时,具体执行以下操作:
基于所述多个目标指令数据源中各目标指令数据源对应的数据信息,确定所述各目标指令数据源之间的数据关联性;
按照所述数据关联性对所述各目标指令数据源进行关联排列,以生成关联排列后的数据源序列;
基于所述任务指令所指示的所述任务事件的任务信息对所述数据源序列进行解析,以生成所述任务事件的命令序列。
在一个实施例中,所述处理器1001在执行基于所述多个目标指令数据源中各目标指令数据源的数据信息,确定所述各目标指令数据源之间的数据关联性时,具体执行以下操作:
获取所述多个目标指令数据源中第一目标指令数据源对应的第一数据关键字集合,并获取所述多个目标指令数据源中第二目标指令数据源对应的第二数据关键字集合;
当所述第一数据关键字集合与所述第二数据关键字集合存在相同的数据关键字时,确定所述第一目标指令数据源与所述第二目标指令数据源存在数据关联性;
当所述第一数据关键字集合与所述第二数据关键字集合不存在相同的数据关键字时,确定所述第一目标指令数据源与所述第二目标指令数据源不存在数据关联性。
在一个实施例中,所述处理器1001在执行按照所述数据关联性对所述各目标指令数据源进行关联排列,以生成关联排列后的数据源序列时,具体执行以下操作:
遍历所述多个目标指令数据源中各目标指令数据源;
当遍历到的所述第一目标指令数据源与所述第二目标指令数据源存在数据关联性时,将所述第一目标指令数据源相邻排列在所述第二目标指令数据源之前,并存储在第一数组中;
将所述第二目标指令数据源设置为所述第一目标指令数据源,并执行所述当遍历到的所述第一目标指令数据源与所述第二目标指令数据源存在数据关联性时,将所述第一目标指令数据源相邻排列在所述第二目标指令数据源之前的步骤;
当遍历到的所述第一目标指令数据源与所述第二目标指令数据源不存在数据关联性时,将所述第一目标指令数据源存储在第二数组中,并执行遍历所述多个目标指令数据源中各目标指令数据源的步骤。
在一个实施例中,所述任务信息包括关联关键字集合,所述处理器1001在执行基于所述任务指令所指示的所述任务事件的任务信息对所述数据源序列进行解析,以生成所述任务事件的命令序列时,具体执行以下操作:
获取所述关联关键字集合中各关联关键字的先后顺序;
按照所述先后顺序并基于所述关联关键字集合,以生成所述任务事件的命令序列。
在一个实施例中,所述处理器1001在执行按照所述先后顺序并基于所述关联关键字集合,以生成所述任务事件的命令序列时,具体执行以下操作:
创建所述关联关键字集合中各关联关键字分别对应的子命令序列;
按照所述先后顺序将所述子命令序列进行组合,以得到所述任务事件对应的命令序列。
在本发明实施例中,通过获取针对当前的任务事件所输入的任务指令,在数据源集合中获取任务指令所指示的初始数据类型的初始指令数据源,将初始指令数据源转换为目标数据类型的目标指令数据源,并基于任务指令所指示的任务事件的任务信息对目标指令数据源进行解析,以生成任务事件的命令序列,执行命令序列以输出任务事件对应的执行结果。可以不必关心数据源的具体数据类型,通过将初始指令数据源的数据类型转换为统一的数据类型而实现跨数据源的数据导出,不必受到数据源类型的限制,具有充分的可扩展性,为各业务的数据导出,日常数据运维,数据分析提供了快速简洁的服务。另外,可以实现多数据源的关联提取功能组装出可执行的命令序列,展示多维度多数据源的数据视图。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
Claims (15)
1.一种指令执行方法,其特征在于,包括:
获取针对当前的任务事件所输入的任务指令,在数据源集合中获取所述任务指令所指示的初始数据类型的初始指令数据源;
将所述初始指令数据源转换为目标数据类型的目标指令数据源;
基于所述任务指令所指示的所述任务事件的任务信息对所述目标指令数据源进行解析,以生成所述任务事件的命令序列;
执行所述命令序列以输出所述任务事件对应的执行结果。
2.根据权利要求1所述的方法,其特征在于,所述将所述初始指令数据源转换为目标数据类型的目标指令数据源,包括:
当在格式转换数据库中存在所述初始数据类型对应的格式转换脚本时,采用所述格式转换脚本将所述初始指令数据源转换为目标数据类型的目标指令数据源;
当在所述格式转换数据库中不存在所述初始数据类型对应的格式转换脚本时,在所述格式转换数据库中创建所述初始数据类型对应的格式转换脚本,并采用所述格式转换脚本将所述初始指令数据源转换为目标数据类型的目标指令数据源。
3.根据权利要求1所述的方法,其特征在于,当所述目标指令数据源为多个目标指令数据源时,所述基于所述任务指令所指示的所述任务事件的任务信息对所述目标指令数据源进行解析,以生成所述任务事件的命令序列,包括:
基于所述多个目标指令数据源中各目标指令数据源对应的数据信息,确定所述各目标指令数据源之间的数据关联性;
按照所述数据关联性对所述各目标指令数据源进行关联排列,以生成关联排列后的数据源序列;
基于所述任务指令所指示的所述任务事件的任务信息对所述数据源序列进行解析,以生成所述任务事件的命令序列。
4.根据权利要求3所述的方法,其特征在于,所述基于所述多个目标指令数据源中各目标指令数据源的数据信息,确定所述各目标指令数据源之间的数据关联性,包括:
获取所述多个目标指令数据源中第一目标指令数据源对应的第一数据关键字集合,并获取所述多个目标指令数据源中第二目标指令数据源对应的第二数据关键字集合;
当所述第一数据关键字集合与所述第二数据关键字集合存在相同的数据关键字时,确定所述第一目标指令数据源与所述第二目标指令数据源存在数据关联性;
当所述第一数据关键字集合与所述第二数据关键字集合不存在相同的数据关键字时,确定所述第一目标指令数据源与所述第二目标指令数据源不存在数据关联性。
5.根据权利要求4所述的方法,其特征在于,所述按照所述数据关联性对所述各目标指令数据源进行关联排列,以生成关联排列后的数据源序列,包括:
遍历所述多个目标指令数据源中各目标指令数据源;
当遍历到的所述第一目标指令数据源与所述第二目标指令数据源存在数据关联性时,将所述第一目标指令数据源相邻排列在所述第二目标指令数据源之前,并存储在第一数组中;
将所述第二目标指令数据源设置为所述第一目标指令数据源,并执行所述当遍历到的所述第一目标指令数据源与所述第二目标指令数据源存在数据关联性时,将所述第一目标指令数据源相邻排列在所述第二目标指令数据源之前的步骤;
当遍历到的所述第一目标指令数据源与所述第二目标指令数据源不存在数据关联性时,将所述第一目标指令数据源存储在第二数组中,并执行遍历所述多个目标指令数据源中各目标指令数据源的步骤。
6.根据权利要求3所述的方法,其特征在于,所述任务信息包括关联关键字集合,所述基于所述任务指令所指示的所述任务事件的任务信息对所述数据源序列进行解析,以生成所述任务事件的命令序列,包括:
获取所述关联关键字集合中各关联关键字的先后顺序;
按照所述先后顺序并基于所述关联关键字集合,以生成所述任务事件的命令序列。
7.根据权利要求6所述的方法,其特征在于,所述按照所述先后顺序并基于所述关联关键字集合,以生成所述任务事件的命令序列,包括:
创建所述关联关键字集合中各关联关键字分别对应的子命令序列;
按照所述先后顺序将所述子命令序列进行组合,以得到所述任务事件对应的命令序列。
8.一种指令执行设备,其特征在于,包括:
数据源获取单元,用于获取针对当前的任务事件所输入的任务指令,在数据源集合中获取所述任务指令所指示的初始数据类型的初始指令数据源;
数据源转换单元,用于将所述初始指令数据源转换为目标数据类型的目标指令数据源;
序列生成单元,用于基于所述任务指令所指示的所述任务事件的任务信息对所述目标指令数据源进行解析,以生成所述任务事件的命令序列;
序列执行单元,用于执行所述命令序列以输出所述任务事件对应的执行结果。
9.根据权利要求8所述的设备,其特征在于,所述数据源转换单元,具体用于:
当在格式转换数据库中存在所述初始数据类型对应的格式转换脚本时,采用所述格式转换脚本将所述初始指令数据源转换为目标数据类型的目标指令数据源;
当在所述格式转换数据库中不存在所述初始数据类型对应的格式转换脚本时,在所述格式转换数据库中创建所述初始数据类型对应的格式转换脚本,并采用所述格式转换脚本将所述初始指令数据源转换为目标数据类型的目标指令数据源。
10.根据权利要求8所述的设备,其特征在于,当所述目标指令数据源为多个目标指令数据源时,所述序列生成单元,包括:
关联性确定子单元,用于基于所述多个目标指令数据源中各目标指令数据源对应的数据信息,确定所述各目标指令数据源之间的数据关联性;
数据源排列子单元,用于按照所述数据关联性对所述各目标指令数据源进行关联排列,以生成关联排列后的数据源序列;
序列生成子单元,用于基于所述任务指令所指示的所述任务事件的任务信息对所述数据源序列进行解析,以生成所述任务事件的命令序列。
11.根据权利要求10所述的设备,其特征在于,所述关联性确定子单元,具体用于:
获取所述多个目标指令数据源中第一目标指令数据源对应的第一数据关键字集合,并获取所述多个目标指令数据源中第二目标指令数据源对应的第二数据关键字集合;
当所述第一数据关键字集合与所述第二数据关键字集合存在相同的数据关键字时,确定所述第一目标指令数据源与所述第二目标指令数据源存在数据关联性;
当所述第一数据关键字集合与所述第二数据关键字集合不存在相同的数据关键字时,确定所述第一目标指令数据源与所述第二目标指令数据源不存在数据关联性。
12.根据权利要求11所述的设备,其特征在于,所述数据源排列子单元,具体用于:
遍历所述多个目标指令数据源中各目标指令数据源;
当遍历到的所述第一目标指令数据源与所述第二目标指令数据源存在数据关联性时,将所述第一目标指令数据源相邻排列在所述第二目标指令数据源之前,并存储在第一数组中;
将所述第二目标指令数据源设置为所述第一目标指令数据源,并执行所述当遍历到的所述第一目标指令数据源与所述第二目标指令数据源存在数据关联性时,将所述第一目标指令数据源相邻排列在所述第二目标指令数据源之前的步骤;
当遍历到的所述第一目标指令数据源与所述第二目标指令数据源不存在数据关联性时,将所述第一目标指令数据源存储在第二数组中,并执行遍历所述多个目标指令数据源中各目标指令数据源的步骤。
13.根据权利要求10所述的设备,其特征在于,所述任务信息包括关联关键字集合,所述序列生成子单元,具体用于:
获取所述关联关键字集合中各关联关键字的先后顺序;
按照所述先后顺序并基于所述关联关键字集合,以生成所述任务事件的命令序列。
14.一种计算机存储介质,其特征在于,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行如权利要求1~7任意一项的方法步骤。
15.一种服务器,其特征在于,包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行以下步骤:
获取针对当前的任务事件所输入的任务指令,在数据源集合中获取所述任务指令所指示的初始数据类型的初始指令数据源;
将所述初始指令数据源转换为目标数据类型的目标指令数据源;
基于所述任务指令所指示的所述任务事件的任务信息对所述目标指令数据源进行解析,以生成所述任务事件的命令序列;
执行所述命令序列以输出所述任务事件对应的执行结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810315507.4A CN110309214B (zh) | 2018-04-10 | 2018-04-10 | 一种指令执行方法及其设备、存储介质、服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810315507.4A CN110309214B (zh) | 2018-04-10 | 2018-04-10 | 一种指令执行方法及其设备、存储介质、服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110309214A true CN110309214A (zh) | 2019-10-08 |
CN110309214B CN110309214B (zh) | 2023-06-23 |
Family
ID=68074001
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810315507.4A Active CN110309214B (zh) | 2018-04-10 | 2018-04-10 | 一种指令执行方法及其设备、存储介质、服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110309214B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111125238A (zh) * | 2019-12-25 | 2020-05-08 | 中国人民解放军63920部队 | 显示数据的处理方法及装置 |
WO2021114548A1 (zh) * | 2019-12-12 | 2021-06-17 | 浪潮(北京)电子信息产业有限公司 | 一种批处理方法、装置、设备及存储介质 |
CN114020348A (zh) * | 2021-10-11 | 2022-02-08 | 中科创达软件科技(深圳)有限公司 | 一种命令的处理方法和装置 |
Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060047704A1 (en) * | 2004-08-31 | 2006-03-02 | Kumar Chitra Gopalakrishnan | Method and system for providing information services relevant to visual imagery |
US20110181628A1 (en) * | 2010-01-27 | 2011-07-28 | Industrial Technology Research Institute | Power-saving and context-showing display information converting system and corresponding apparatus |
US20110214082A1 (en) * | 2010-02-28 | 2011-09-01 | Osterhout Group, Inc. | Projection triggering through an external marker in an augmented reality eyepiece |
CN103345207A (zh) * | 2013-05-31 | 2013-10-09 | 北京泰乐德信息技术有限公司 | 一种轨道交通监控数据的挖掘分析与故障诊断系统 |
CN103907137A (zh) * | 2011-08-31 | 2014-07-02 | 岩石国际集团私人有限公司 | 虚拟广告平台 |
CN104135737A (zh) * | 2014-05-20 | 2014-11-05 | 浙江明讯网络技术有限公司 | 一种lte网络基站网元配置数据获取方法 |
CN104317974A (zh) * | 2014-11-21 | 2015-01-28 | 武汉理工大学 | 一种可重构的erp系统中多源数据导入方法 |
CN105426394A (zh) * | 2015-10-18 | 2016-03-23 | 广州赛意信息科技股份有限公司 | 基于跨平台的移动报表生成方法和系统 |
CN106407278A (zh) * | 2016-08-26 | 2017-02-15 | 武汉钢铁工程技术集团自动化有限责任公司 | 一种大数据平台的架构设计系统 |
CN106446131A (zh) * | 2016-09-19 | 2017-02-22 | 中国南方电网有限责任公司电网技术研究中心 | 配用电多源异构数据的混合存储方法和系统 |
CN106547766A (zh) * | 2015-09-18 | 2017-03-29 | 华为技术有限公司 | 一种数据访问方法和装置 |
CN106709067A (zh) * | 2017-01-19 | 2017-05-24 | 中国测绘科学研究院 | 一种基于Oracle数据库的多源异构空间数据流转方法 |
CN106777278A (zh) * | 2016-12-29 | 2017-05-31 | 海尔优家智能科技(北京)有限公司 | 一种基于Spark的数据处理方法及装置 |
CN106933206A (zh) * | 2015-10-09 | 2017-07-07 | 费希尔-罗斯蒙特系统公司 | 分布式工业系统中的独立于源的查询 |
CN107370786A (zh) * | 2017-06-02 | 2017-11-21 | 广州杰赛科技股份有限公司 | 一种基于微服务架构的通用信息管理系统 |
CN107665233A (zh) * | 2017-07-24 | 2018-02-06 | 上海壹账通金融科技有限公司 | 数据库数据处理方法、装置、计算机设备和存储介质 |
CN107766572A (zh) * | 2017-11-13 | 2018-03-06 | 北京国信宏数科技有限责任公司 | 基于经济领域数据的分布式提取及可视化分析方法和系统 |
-
2018
- 2018-04-10 CN CN201810315507.4A patent/CN110309214B/zh active Active
Patent Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060047704A1 (en) * | 2004-08-31 | 2006-03-02 | Kumar Chitra Gopalakrishnan | Method and system for providing information services relevant to visual imagery |
US20110181628A1 (en) * | 2010-01-27 | 2011-07-28 | Industrial Technology Research Institute | Power-saving and context-showing display information converting system and corresponding apparatus |
US20110214082A1 (en) * | 2010-02-28 | 2011-09-01 | Osterhout Group, Inc. | Projection triggering through an external marker in an augmented reality eyepiece |
CN103907137A (zh) * | 2011-08-31 | 2014-07-02 | 岩石国际集团私人有限公司 | 虚拟广告平台 |
CN103345207A (zh) * | 2013-05-31 | 2013-10-09 | 北京泰乐德信息技术有限公司 | 一种轨道交通监控数据的挖掘分析与故障诊断系统 |
CN104135737A (zh) * | 2014-05-20 | 2014-11-05 | 浙江明讯网络技术有限公司 | 一种lte网络基站网元配置数据获取方法 |
CN104317974A (zh) * | 2014-11-21 | 2015-01-28 | 武汉理工大学 | 一种可重构的erp系统中多源数据导入方法 |
CN106547766A (zh) * | 2015-09-18 | 2017-03-29 | 华为技术有限公司 | 一种数据访问方法和装置 |
CN106933206A (zh) * | 2015-10-09 | 2017-07-07 | 费希尔-罗斯蒙特系统公司 | 分布式工业系统中的独立于源的查询 |
CN105426394A (zh) * | 2015-10-18 | 2016-03-23 | 广州赛意信息科技股份有限公司 | 基于跨平台的移动报表生成方法和系统 |
CN106407278A (zh) * | 2016-08-26 | 2017-02-15 | 武汉钢铁工程技术集团自动化有限责任公司 | 一种大数据平台的架构设计系统 |
CN106446131A (zh) * | 2016-09-19 | 2017-02-22 | 中国南方电网有限责任公司电网技术研究中心 | 配用电多源异构数据的混合存储方法和系统 |
CN106777278A (zh) * | 2016-12-29 | 2017-05-31 | 海尔优家智能科技(北京)有限公司 | 一种基于Spark的数据处理方法及装置 |
CN106709067A (zh) * | 2017-01-19 | 2017-05-24 | 中国测绘科学研究院 | 一种基于Oracle数据库的多源异构空间数据流转方法 |
CN107370786A (zh) * | 2017-06-02 | 2017-11-21 | 广州杰赛科技股份有限公司 | 一种基于微服务架构的通用信息管理系统 |
CN107665233A (zh) * | 2017-07-24 | 2018-02-06 | 上海壹账通金融科技有限公司 | 数据库数据处理方法、装置、计算机设备和存储介质 |
CN107766572A (zh) * | 2017-11-13 | 2018-03-06 | 北京国信宏数科技有限责任公司 | 基于经济领域数据的分布式提取及可视化分析方法和系统 |
Non-Patent Citations (1)
Title |
---|
王博等: "异构数据源模式集成方法研究", 《小型微型计算机系统》, pages 1020 - 1026 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021114548A1 (zh) * | 2019-12-12 | 2021-06-17 | 浪潮(北京)电子信息产业有限公司 | 一种批处理方法、装置、设备及存储介质 |
CN111125238A (zh) * | 2019-12-25 | 2020-05-08 | 中国人民解放军63920部队 | 显示数据的处理方法及装置 |
CN111125238B (zh) * | 2019-12-25 | 2023-09-01 | 中国人民解放军63920部队 | 显示数据的处理方法及装置 |
CN114020348A (zh) * | 2021-10-11 | 2022-02-08 | 中科创达软件科技(深圳)有限公司 | 一种命令的处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110309214B (zh) | 2023-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101835345B1 (ko) | 지식베이스 기반의 개념그래프 확장 시스템 | |
US10853357B2 (en) | Extensible automatic query language generator for semantic data | |
US9703830B2 (en) | Translation of a SPARQL query to a SQL query | |
US10713429B2 (en) | Joining web data with spreadsheet data using examples | |
EP3218811B1 (en) | Testing insecure computing environments using random data sets generated from characterizations of real data sets | |
EP3671526B1 (en) | Dependency graph based natural language processing | |
CN105706092B (zh) | 四值模拟的方法和系统 | |
US8037057B2 (en) | Multi-column statistics usage within index selection tools | |
CN106062751A (zh) | 对与数据类型有关的数据剖析操作的管理 | |
CN112434024B (zh) | 面向关系型数据库的数据字典生成方法、装置、设备及介质 | |
US20170193036A1 (en) | Framework for joining datasets | |
WO2015010509A1 (zh) | 一种基于一维线性空间实现Trie树的词典检索方法 | |
CN110309214A (zh) | 一种指令执行方法及其设备、存储介质、服务器 | |
CN104484478B (zh) | 一种关联聚类数据瘦身方法及系统 | |
Le et al. | Interactive program synthesis | |
CN110795526A (zh) | 一种用于检索系统的数学公式索引创建方法与系统 | |
Oluwagbemi et al. | Automatic generation of test cases from activity diagrams for UML based testing (UBT) | |
CN105760418A (zh) | 用于对关系数据库表进行交叉列搜索的方法和系统 | |
CN108932225B (zh) | 用于将自然语言需求转换成为语义建模语言语句的方法和系统 | |
Ferdjoukh et al. | Measuring differences to compare sets of models and improve diversity in MDE | |
KR101783791B1 (ko) | 프로버넌스 관리를 위한 압축 장치 및 방법 | |
CN115878814A (zh) | 一种基于机器阅读理解的知识图谱问答方法及其系统 | |
RU2605387C2 (ru) | Способ и система для хранения данных графов | |
CN111291373B (zh) | 用于分析数据污染传播的方法、设备和计算机可读存储介质 | |
US9477927B2 (en) | Automatic test generation for decision table based rules |
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 |