CN110244956A - 数据解析方法、装置以及系统 - Google Patents
数据解析方法、装置以及系统 Download PDFInfo
- Publication number
- CN110244956A CN110244956A CN201910482644.1A CN201910482644A CN110244956A CN 110244956 A CN110244956 A CN 110244956A CN 201910482644 A CN201910482644 A CN 201910482644A CN 110244956 A CN110244956 A CN 110244956A
- Authority
- CN
- China
- Prior art keywords
- data
- script
- resolved
- parsing
- script engine
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提供一种数据解析方法、装置以及系统,其中方法包括从Map数据结构的数据库中确定待解析的数据,所述待解析的数据以键值对的形式存储在所述数据库中;接收解析脚本,所述解析脚本与所述待解析的数据相关;根据所述解析脚本,从脚本引擎库中确定对应的目标脚本引擎;由所述目标脚本引擎对所述解析脚本和待解析数据进行解析,将解析结果以预设的统一数据格式进行保存;其中,所述脚本引擎库中预先注册至少两种脚本引擎。本发明实施例会大幅提高工作效率,并成功地降低项目成本。
Description
技术领域
本发明涉及计算机技术领域,更具体地,涉及数据解析方法、装置及系统。
背景技术
在对企业内部网络中的物理设备(存储,路由器,网关,防火墙)、操作系统、数据库、应用软件(WEB容器,中间件)等进行数据采集过程中,不同厂商、不同产品、不同版本会有不同的数据格式(如:XML、JSON、CSV、XLS等),这些数据需要解析成符合某种应用要求的格式(如:JSON),解析过程如果采用内置固定的程序实现,当新增采集目标时,原来的程序就不能正确解析数据,这时必须修改程序来适配新的采集目标,导致程序使用上不方便,不灵活,适用性差,很难满足客户需求。
针对这种场景,如果采用外接脚本(支持多种语言)方式,编写适配不同数据源的解析脚本,将异构数据解析成统一的中间结果,然后再把中间数据提供给具体的应用程序,由应用程序进一步处理,这样会大大增强程序的灵活性,适用性,更加方便用户使用,满足用户需求。
但目前软件即使有外接脚本功能,一般情况下也只支持单一脚本,然而,一线用户和工程师可能对提供的脚本语言并不熟悉,需要投入大量时间和精力来学习新的脚本语言,接下来又需要很长时间来实践才能成为一名熟练的脚本编写者,这个过程给一线用户和工程师带来很大的实施难度,因此拉长了项目工期,同时也增加了项目成本。
发明内容
本发明实施例提供一种克服上述问题或者至少部分地解决上述问题的数据解析方法、装置以及系统。
第一个方面,本发明实施例提供一种数据解析方法,包括:
从Map数据结构的数据库中确定待解析的数据,所述待解析的数据以键值对的形式存储在所述数据库中;
接收解析脚本,所述解析脚本与所述待解析的数据相关;
根据所述解析脚本,从脚本引擎库中确定对应的目标脚本引擎;
由所述目标脚本引擎对所述解析脚本和待解析数据进行解析,将解析结果以预设的统一数据格式进行保存;
其中,所述脚本引擎库中预先注册至少两种脚本引擎
第二个方面,本发明实施例提供一种数据解析装置,包括:
数据读取模块,用于从Map数据结构的数据库中确定待解析的数据,所述待解析的数据以键值对的形式存储在所述数据库中;
脚本接收模块,用于接收解析脚本,所述解析脚本与所述待解析的数据相关;
引擎确定模块,用于根据所述解析脚本,从脚本引擎库中确定对应的目标脚本引擎;
解析模块,用于由所述目标脚本引擎对所述解析脚本和待解析数据进行解析,将解析结果以预设的统一数据格式进行保存;
其中,所述脚本引擎库中预先注册至少两种脚本引擎。
第三个方面,本发明实施例提供一种数据解析系统,其特征在于,包括:
如上述实施例所述的数据解析装置;
数据库,用于以键值对的形式存储待解析的数据;以及
脚本引擎库,用于注册脚本引擎。
第四方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所提供的方法的步骤。
第五方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所提供的方法的步骤。
本发明实施例提供的数据解析方法、装置以及系统,为一线用户和实施工程师提供了便利,他们可以使用自己熟悉的脚本语言工作,而不必再次学习新脚本语言,因此会大幅提高工作效率,并成功地降低项目成本,其次统一数据接口,有效地屏蔽数据复杂性,让用户和实施工程师把注意力集中在异构数据的解析上,无须再分散精力去理解数据来源和去向,简化实施内容。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例的数据解析方法的流程示意图;
图2为本发明实施例提供的数据解析装置的结构示意图;
图3为本发明实施例的数据解析系统的结构示意图;
图4为本发明实施例提供的电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例的数据解析方法的流程示意图,如图1所示,该方法包括S101、S102、S103和S104,具体地
S101、从Map数据结构的数据库中确定待解析的数据,所述待解析的数据以键值对的形式存储在所述数据库中。
需要说明的是,本发明实施例考虑到异构数据的结构复杂性以及使用者编写脚本时的简洁性,所以本发明实施例中的待解析的数据均以键值对(key=value)的形式存储到Map当中。这样的好处是脚本编写者不需要知道数据的具体来源,而是把全部精力用于数据的解析工作。
S102、接收解析脚本,所述解析脚本与所述待解析的数据相关。
需要说明的是,使用者针对具体的待解析数据编写解析脚本,并输入至本发明实施例的执行主体。可以理解的是,本发明实施例中解析脚本的源代码需要命名后进行保存,以方便重复加载执行。
S103、根据所述解析脚本,从脚本引擎库中确定对应的目标脚本引擎。所述脚本引擎库中预先注册至少两种脚本引擎。
需要说明的是,本发明实施例预设了脚本引擎库,脚本引擎库注意完成两项工作:1、注册脚本引擎,2、创建脚本引擎实例。新的脚本引擎必须实现脚本接口(Scriptinterface),然后通过脚本引擎库的register函数注册到脚本引擎库中,其实这是一个登记过程,被注册的脚本引擎是此后创建脚本引擎实例的模板,脚本引擎库可以注册多种语言脚本引擎。
S104、由所述目标脚本引擎对所述解析脚本和待解析数据进行解析,将解析结果以预设的统一数据格式进行保存。
需要说明的是,本发明实施例的数据解析方法为一线用户和实施工程师提供了便利,他们可以使用自己熟悉的脚本语言工作,而不必再次学习新脚本语言,因此会大幅提高工作效率,并成功地降低项目成本,其次统一数据接口,有效地屏蔽数据复杂性,让用户和实施工程师把注意力集中在异构数据的解析上,无须再分散精力去理解数据来源和去向,简化实施内容。
在上述各实施例的基础上在,作为一种可选实施例,从脚本引擎库中确定目标脚本引擎,之前还包括:
通过预设的脚本接口,通过register函数将至少两种脚本引擎注册至所述脚本引擎库中。
需要说明的是,本发明实施例支持脚本语言快速动态扩展,当用户需要某种新脚本语言时,本发明只需要实现脚本接口(Script Interface),然后注册到脚本引擎库即可,缩短了开发周期。
在上述各实施例的基础上在,作为一种可选实施例,脚本引擎对应的脚本语言包括但不限于JavaScript,、Groovy、BeanShell和Python。
在上述各实施例的基础上在,作为一种可选实施例,解析结果具体以JSON格式进行保存。
在上述各实施例的基础上在,作为一种可选实施例,所述从Map数据结构的数据库中确定待解析的数据,具体为:
输入待解析的数据的key值,从所述数据库中查找与所述key值对应的待解析数据的value值。
需要说明的是,由于数据预先已键值对(key=value)的薪水存储在数据库中,因此用户编写脚本时通过Key来读取数据,这样的好处是脚本编写者不需要知道数据的具体来源,而是把全部精力用于数据的解析工作。
图2为本发明实施例提供的数据解析装置的结构示意图,如图2所示,该数据解析装置包括:数据读取模块201、脚本接收模块202、引擎确定模块203和解析模块204,其中:
数据读取模块201,用于从Map数据结构的数据库中确定待解析的数据,所述待解析的数据以键值对的形式存储在所述数据库中。
需要说明的是,本发明实施例考虑到异构数据的结构复杂性以及使用者编写脚本时的简洁性,所以本发明实施例中的待解析的数据均以键值对(key=value)的形式存储到Map当中。这样的好处是脚本编写者不需要知道数据的具体来源,而是把全部精力用于数据的解析工作。
脚本接收模块202,用于接收解析脚本,所述解析脚本与所述待解析的数据相关。
需要说明的是,使用者针对具体的待解析数据编写解析脚本,并输入至本发明实施例的执行主体。可以理解的是,本发明实施例中解析脚本的源代码需要命名后进行保存,以方便重复加载执行。
引擎确定模块203,用于根据所述解析脚本,从脚本引擎库中确定对应的目标脚本引擎。
需要说明的是,本发明实施例预设了脚本引擎库,脚本引擎库注意完成两项工作:1、注册脚本引擎,2、创建脚本引擎实例。新的脚本引擎必须实现脚本接口(Scriptinterface),然后通过脚本引擎库的register函数注册到脚本引擎库中,其实这是一个登记过程,被注册的脚本引擎是此后创建脚本引擎实例的模板,脚本引擎库可以注册多种语言脚本引擎。
解析模块204,用于由所述目标脚本引擎对所述解析脚本和待解析数据进行解析,将解析结果以预设的统一数据格式进行保存;
其中,所述脚本引擎库中预先注册至少两种脚本引擎。
本发明实施例提供的数据解析装置,具体执行上述各数据解析方法实施例流程,具体请详见上述各数据解析方法实施例的内容,在此不再赘述。本发明实施例提供的数据解析装置为一线用户和实施工程师提供了便利,他们可以使用自己熟悉的脚本语言工作,而不必再次学习新脚本语言,因此会大幅提高工作效率,并成功地降低项目成本,其次统一数据接口,有效地屏蔽数据复杂性,让用户和实施工程师把注意力集中在异构数据的解析上,无须再分散精力去理解数据来源和去向,简化实施内容。
图3为本发明实施例的数据解析系统的结构示意图,如图3所示,数据解析系统包括:
上述实施例的数据解析装置301;
数据库302,用于以键值对的形式存储待解析的数据。考虑到异构数据的结构复杂性及用户编写脚本时的简洁性,数据库采用Map数据结构来包装输入数据(即待解析数据),输入数据均以Key=Value形式存储到Map当中,用户编写脚本时通过Key来读取外部数据,这样的好处是脚本编写者不需要知道数据的具体来源,而是把全部精力用于数据的解析工作。
脚本引擎库303,用于注册脚本引擎。需要注意的是,新的脚本引擎必须实现脚本接口(Script interface),然后通过脚本工厂的register函数注册到脚本引擎库中,其实这是一个登记过程,被注册的脚本引擎是此后创建脚本引擎实例的模板,脚本引擎库可以注册多种语言脚本引擎。
图4为本发明实施例提供的电子设备的实体结构示意图,如图4所示,该电子设备可以包括:处理器(processor)410、通信接口(Communications Interface)420、存储器(memory)430和通信总线440,其中,处理器410,通信接口420,存储器430通过通信总线440完成相互间的通信。处理器410可以调用存储在存储器430上并可在处理器410上运行的计算机程序,以执行上述各实施例提供的数据解析方法,例如包括:从Map数据结构的数据库中确定待解析的数据,所述待解析的数据以键值对的形式存储在所述数据库中;接收解析脚本,所述解析脚本与所述待解析的数据相关;根据所述解析脚本,从脚本引擎库中确定对应的目标脚本引擎;由所述目标脚本引擎对所述解析脚本和待解析数据进行解析,将解析结果以预设的统一数据格式进行保存;其中,所述脚本引擎库中预先注册至少两种脚本引擎。
此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的数据解析方法,例如包括:从Map数据结构的数据库中确定待解析的数据,所述待解析的数据以键值对的形式存储在所述数据库中;接收解析脚本,所述解析脚本与所述待解析的数据相关;根据所述解析脚本,从脚本引擎库中确定对应的目标脚本引擎;由所述目标脚本引擎对所述解析脚本和待解析数据进行解析,将解析结果以预设的统一数据格式进行保存;其中,所述脚本引擎库中预先注册至少两种脚本引擎。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种数据解析方法,其特征在于,包括:
从Map数据结构的数据库中确定待解析的数据,所述待解析的数据以键值对的形式存储在所述数据库中;
接收解析脚本,所述解析脚本与所述待解析的数据相关;
根据所述解析脚本,从脚本引擎库中确定对应的目标脚本引擎;
由所述目标脚本引擎对所述解析脚本和待解析数据进行解析,将解析结果以预设的统一数据格式进行保存;
其中,所述脚本引擎库中预先注册至少两种脚本引擎。
2.根据权利要求1所述的数据解析方法,其特征在于,所述从脚本引擎库中确定目标脚本引擎,之前还包括:
通过预设的脚本接口,通过register函数将至少两种脚本引擎注册至所述脚本引擎库中。
3.根据权利要求1所述的数据解析方法,其特征在于,所述脚本引擎对应的脚本语言包括但不限于JavaScript,、Groovy、BeanShell和Python。
4.根据权利要求1所述的数据解析方法,其特征在于,所述解析结果具体以JSON格式进行保存。
5.根据权利要求1所述的数据解析方法,其特征在于,所述从Map数据结构的数据库中确定待解析的数据,具体为:
输入待解析的数据的key值,从所述数据库中查找与所述key值对应的待解析数据的value值。
6.一种数据解析装置,其特征在于,包括:
数据读取模块,用于从Map数据结构的数据库中确定待解析的数据,所述待解析的数据以键值对的形式存储在所述数据库中;
脚本接收模块,用于接收解析脚本,所述解析脚本与所述待解析的数据相关;
引擎确定模块,用于根据所述解析脚本,从脚本引擎库中确定对应的目标脚本引擎;
解析模块,用于由所述目标脚本引擎对所述解析脚本和待解析数据进行解析,将解析结果以预设的统一数据格式进行保存;
其中,所述脚本引擎库中预先注册至少两种脚本引擎。
7.一种数据解析系统,其特征在于,包括:
如权利要求5所述的数据解析装置;
数据库,用于以键值对的形式存储待解析的数据;以及
脚本引擎库,用于注册脚本引擎。
8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至5任一项所述的数据解析方法的步骤。
9.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至5中任意一项所述的数据解析方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910482644.1A CN110244956A (zh) | 2019-06-04 | 2019-06-04 | 数据解析方法、装置以及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910482644.1A CN110244956A (zh) | 2019-06-04 | 2019-06-04 | 数据解析方法、装置以及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110244956A true CN110244956A (zh) | 2019-09-17 |
Family
ID=67885932
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910482644.1A Pending CN110244956A (zh) | 2019-06-04 | 2019-06-04 | 数据解析方法、装置以及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110244956A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101989294A (zh) * | 2009-08-07 | 2011-03-23 | 阿里巴巴集团控股有限公司 | 分布式文件解析方法和解析系统 |
CN102023856A (zh) * | 2010-10-21 | 2011-04-20 | 杭州万格网络科技有限公司 | 根据用户的需求格式化输出及操作伺服端业务数据的方法 |
CN103092817A (zh) * | 2013-01-18 | 2013-05-08 | 五八同城信息技术有限公司 | 一种基于脚本引擎的数据采集方法和装置 |
CN105354020A (zh) * | 2015-09-30 | 2016-02-24 | 武汉钢铁(集团)公司 | 一种Json格式数据解析方法及数据接收端 |
CN106201643A (zh) * | 2016-07-14 | 2016-12-07 | 北京邮电大学 | 数据解析方法及装置 |
CN108228875A (zh) * | 2018-01-18 | 2018-06-29 | 北京奇安信科技有限公司 | 基于完美哈希的日志解析方法及装置 |
US20190065972A1 (en) * | 2017-05-12 | 2019-02-28 | Qliktech International Ab | Cognitive rule engine |
-
2019
- 2019-06-04 CN CN201910482644.1A patent/CN110244956A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101989294A (zh) * | 2009-08-07 | 2011-03-23 | 阿里巴巴集团控股有限公司 | 分布式文件解析方法和解析系统 |
CN102023856A (zh) * | 2010-10-21 | 2011-04-20 | 杭州万格网络科技有限公司 | 根据用户的需求格式化输出及操作伺服端业务数据的方法 |
CN103092817A (zh) * | 2013-01-18 | 2013-05-08 | 五八同城信息技术有限公司 | 一种基于脚本引擎的数据采集方法和装置 |
CN105354020A (zh) * | 2015-09-30 | 2016-02-24 | 武汉钢铁(集团)公司 | 一种Json格式数据解析方法及数据接收端 |
CN106201643A (zh) * | 2016-07-14 | 2016-12-07 | 北京邮电大学 | 数据解析方法及装置 |
US20190065972A1 (en) * | 2017-05-12 | 2019-02-28 | Qliktech International Ab | Cognitive rule engine |
CN108228875A (zh) * | 2018-01-18 | 2018-06-29 | 北京奇安信科技有限公司 | 基于完美哈希的日志解析方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11449379B2 (en) | Root cause and predictive analyses for technical issues of a computing environment | |
US10430466B2 (en) | Streamlining support dialogues via transitive relationships between different dialogues | |
CN110309071B (zh) | 测试代码的生成方法及模块、测试方法及系统 | |
US20230418570A1 (en) | Constructing executable program code based on sequence codes | |
US10078579B1 (en) | Metrics-based analysis for testing a service | |
CN109408247A (zh) | 交互数据处理方法及装置 | |
US10254986B2 (en) | Implicit coordination for deployment of computing systems using a data sharing service | |
CN113760359A (zh) | 数据处理方法、装置、设备及计算机可读存储介质 | |
CN108958711A (zh) | 一种接口平台的实现方法和装置 | |
Challita et al. | Towards formal-based semantic interoperability in multi-clouds: the fclouds framework | |
CN110297771A (zh) | 用于仓单页面的分布式测试方法及装置 | |
US20230359657A1 (en) | Summary generation guided by pre-defined queries | |
CN111767217A (zh) | Js单元测试案例生成方法及装置 | |
CN109828759A (zh) | 代码编译方法、装置、计算机装置及存储介质 | |
CN108804279A (zh) | 修改日志打印等级的方法及应用设备 | |
US20160364233A1 (en) | Automatically complete a specific software task using hidden tags | |
Golis et al. | Creating Microservices and using infrastructure as code within the CI/CD for dynamic container creation | |
US11182272B2 (en) | Application state monitoring | |
CN113360365A (zh) | 一种流程测试方法和流程测试系统 | |
US12093684B2 (en) | Application transition and transformation | |
CN110362294A (zh) | 开发任务执行方法、装置、电子设备及存储介质 | |
CN110244956A (zh) | 数据解析方法、装置以及系统 | |
CN109510735A (zh) | 一种报文测试的方法及装置 | |
US11347623B1 (en) | Automated defect type based logging integration within source code | |
CN108804889A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190917 |