一种原生多模型数据库操作方法及装置与流程

文档序号:28376109发布日期:2022-01-07 21:54阅读:75来源:国知局
一种原生多模型数据库操作方法及装置与流程

1.本发明涉及数据库操作技术领域,尤其涉及一种原生多模型数据库操作方法及装置。


背景技术:

2.arangodb是一个原生多模型数据库,兼有key/value键/值对、graph图和document文档数据模型,提供了涵盖三种数据模型的统一的数据库查询语言,并允许在单个查询中混合使用三种模型。基于其本地集成多模型特性,可以搭建高性能程序,并且这三种数据模型均支持水平扩展。
3.在java领域,现有的查询arangodb的方案有arangodb java driver和spring data arangodb,其中arangodb java driver仅提供了操作arangodb的接口及api,所有操作都需要用户自己手动实现,且所有的aql语句都与要硬编码形式集成在代码中,而aql语句往往又是业务的关键控制点,当aql语句以硬编码形式集成在代码中时,就会显得特别分散,难以统一管理,其次,当要实现比较复杂的业务时,aql语句一般都很复杂,大部分场景会用到动态语句,集成在代码中的aql语句要想实现动态效果,就需要使用大量的拼接及判断等,这会使相关aql语句更加难以管理,除此而外,维护难度将大大增加。spring data arangodb是在arangodb java driver基础之上利用spring的特性做了一系列的封装,一些常用的操作无需用户写相关aql语句,直接调用其api即可,有点类似于spring data jpa或hibernate,但它仍然未解决上述两点问题,不是最佳解决方案。


技术实现要素:

4.本发明实施例提供一种原生多模型数据库操作方法及装置,用以解决目前操作arangodb的aql语句难以统一管理且维护难度增大的问题。
5.第一方面,本发明实施例提供一种原生多模型数据库操作方法,包括:构建包括基础层、核心层和接口层的软件架构;其中,所述基础层连接原生多模型数据库;所述核心层包括aql执行器;通过所述核心层对所述基础层的基础配置进行解析得到配置文件解析结果,将基于所述配置文件解析结果生成的aql语句分发至对应的aql执行器后基于所述基础层的数据源得到执行结果,并基于所述基础层中对应的反射操作将所述执行结果生成对应的操作结果,以完成用户通过所述接口层操作原生多模型数据库;其中,所述基础层中的基础配置包括创建数据源、扫描配置文件aql.xml、扫描aql接口和注入全局配置。
6.进一步地,所述核心层还包括配置解析器;所述通过所述核心层对所述基础层的基础配置进行解析得到配置文件解析结果,包括:基于所述基础层的基础配置扫描到的aql接口使用jdk动态代理的方式生成对应
的接口代理;基于对应的接口代理通过所述配置解析器解析配置文件aql.xml,并为配置文件aql.xml中每个子节点aql标签生成一个aqlmethod对象,所述aqlmethod对象记录当前配置文件aql.xml的文件位置、返回值类型及具体aql语句;其中,所述aqlmethod对象包括aql语句的参数和子标签;将所述接口代理和所述aqlmethod对象通过域名空间namespace进行绑定,并将对应绑定关系记录在所述配置解析器的配置configuration对象中,得到配置文件解析结果。
7.进一步地,所述基于对应的接口代理通过所述配置解析器解析配置文件aql.xml,包括:将每个配置文件aql.xml通过域名空间namespace属性和所述aql接口关联起来;其中,配置文件aql.xml的根节点为aqls,子节点为aql,每个aql子节点定义id属性作为唯一标识,id属性值和关联的aql接口中的接口方法一一对应,所述配置文件aql.xml和所述aql接口一一对应。
8.进一步地,所述核心层还包括参数处理器;基于所述配置文件解析结果生成aql语句,包括:将所述aql接口的参数列表输入至参数处理器,若参数有@aqlparam注解时将注解中的值作为可用参数依据,否则生成默认的值作为可用参数依据;基于可用参数将实际参数值替换到各参数所在实际位置生成aql语句。
9.进一步地,所述核心层还包括结果映射器;所述基于所述基础层中对应的反射操作将所述执行结果生成对应的操作结果,包括:对于查询语句得到执行结果的数据后根据aqlmethod中的结果类型resulttype经过所述结果映射器采用基础层中特定的反射操作生成对应的pojo对象作为操作结果。
10.第二方面,本发明实施例提供一种原生多模型数据库操作装置,包括:架构构建单元,用于构建包括基础层、核心层和接口层的软件架构;其中,所述基础层连接所述原生多模型数据库;所述核心层包括aql执行器;操作单元,用于通过所述核心层对所述基础层的基础配置进行解析得到配置文件解析,将基于所述配置文件解析生成的aql语句分发至对应的aql执行器后基于所述基础层的数据源得到执行结果,并基于所述基础层中对应的反射操作将所述执行结果生成对应的操作结果,以完成用户通过所述接口层操作原生多模型数据库;其中,所述基础层中的基础配置包括创建数据源、扫描配置文件aql.xml、扫描aql接口和注入全局配置。
11.进一步地,所述核心层还包括配置解析器;所述操作单元包括代理生成模块、文件解析模块和关系绑定模块;所述代理生成模块,用于基于所述基础层的基础配置扫描到的aql接口使用jdk动态代理的方式生成对应的接口代理;所述文件解析模块,用于基于对应的接口代理通过所述配置解析器解析配置文件aql.xml,并为配置文件aql.xml中每个子节点aql标签生成一个aqlmethod对象,所述aqlmethod对象记录当前配置文件aql.xml的文件位置、返回值类型及具体aql语句;其中,
所述aqlmethod对象包括aql语句的参数和子标签;所述关系绑定模块,用于将所述接口代理和所述aqlmethod对象通过域名空间namespace进行绑定,并将对应绑定关系记录在所述配置解析器的配置configuration对象中,得到配置文件解析结果。
12.进一步地,所述文件解析模块,具体用于将每个配置文件aql.xml通过域名空间namespace属性和所述aql接口关联起来;其中,配置文件aql.xml的根节点为aqls,子节点为aql,每个aql子节点定义id属性作为唯一标识,id属性值和关联的aql接口中的接口方法一一对应,所述配置文件aql.xml和所述aql接口一一对应。
13.第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述第一方面所提供的任一项所述原生多模型数据库操作方法的步骤。
14.第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述第一方面所提供的任一项所述原生多模型数据库操作方法的步骤。
15.本发明实施例提供的一种原生多模型数据库操作方法及装置,构建包括基础层、核心层和接口层的软件架构;通过所述核心层对所述基础层的基础配置进行解析得到配置文件解析结果,将基于所述配置文件解析结果生成的aql语句分发至对应的aql执行器后基于所述基础层的数据源得到执行结果,并基于所述基础层中对应的反射操作将所述执行结果生成对应的操作结果,以完成用户通过所述接口层操作原生多模型数据库。本发明实现了操作原生多模型数据库arangodb的aql语句的统一管理且维护方便。
附图说明
16.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
17.图1是本发明提供的一种原生多模型数据库操作方法的流程示意图;图 2 是本发明提供的操作原生多模型数据库的整体架构图;图 3 是本发明提供的操作原生多模型数据库的执行流程示意图;图4是本发明提供的一种原生多模型数据库操作装置的结构示意图;图5是本发明提供的电子设备的结构示意图。
具体实施方式
18.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
19.下面结合图1-图5描述本发明提供的一种原生多模型数据库操作方法及装置。
20.本发明实施例提供了一种原生多模型数据库操作方法。图1为本发明实施例提供
的原生多模型数据库操作方法的流程示意图,如图1所示,该方法包括:步骤110,构建包括基础层、核心层和接口层的软件架构;其中,所述基础层连接原生多模型数据库;所述核心层包括aql执行器;具体地,如图2所示,整个软件架构分为以下三层:1)基础层:本层提供一些基础的服务及操作,例如提供数据源、创建代理、各种反射操作等;2)核心层:本层为本发明技术方案的核心处理逻辑,其中包含配置解析器、参数处理器、执行aql器及结果映射器四个模块;其中,aql执行器主要负责将不同的aql语句分发给对应的executor,使用配置的数据源执行;3)接口层:本层是对用户提供接入本发明操作方案的能力,使得用户通过接口层易于操作原生多模型数据库arangodb。
21.步骤120,通过所述核心层对所述基础层的基础配置进行解析得到配置文件解析结果,将基于所述配置文件解析结果生成的aql语句分发至对应的aql执行器后基于所述基础层的数据源得到执行结果,并基于所述基础层中对应的反射操作将所述执行结果生成对应的操作结果,以完成用户通过所述接口层操作原生多模型数据库,如图3所示的操作原生多模型数据库的流程示意图;其中,所述基础层中的基础配置包括创建数据源、扫描配置文件aql.xml、扫描aql接口和注入全局配置。
22.本发明实施例提供的方法,以arangodb java driver为基础,相较于现有方案有以下改进:1)将aql语句统一放在xml文件中统一管理;2)xml文件中的aql语句可根据实际需求使用不同的标签做动态化处理。
23.基于上述任一实施例,所述核心层还包括配置解析器;具体地,配置解析器主要负责加载全局配置、加载并创建数据源、扫描aql.xml文件、加载参数映射配置、加载结果映射配置等。
24.结合图3,所述通过所述核心层对所述基础层的基础配置进行解析得到配置文件解析结果,包括:基于所述基础层的基础配置扫描到的aql接口使用jdk动态代理的方式生成对应的接口代理;具体地,配置文件解析阶段主要处理一些基础配置,具体包括以下几点:创建数据源;扫描aql.xml;扫描aql接口;注入全局配置;生成接口代理阶段会将对上述配置文件解析阶段扫描到的接口aql使用jdk动态代理的方式为其生成对应的代理类,此代理类只存在于内存对象中。
25.需要说明的是,本发明采用了jdk动态代理的方式作为代理模式,代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用,通俗来讲,代理模式就是生活中常见的中介。本发明使用的是jdk动态代理,jdk动态代理是代理模式的一种实现方式,其只能代理接口。
26.基于对应的接口代理通过所述配置解析器解析配置文件aql.xml,并为配置文件aql.xml中每个子节点aql标签生成一个aqlmethod对象,所述aqlmethod对象记录当前配置文件aql.xml的文件位置、返回值类型及具体aql语句;其中,所述aqlmethod对象包括aql语
句的参数和子标签;也即,解析配置文件aql.xml阶段会为每个aql标签生成一个aqlmethod对象,该对象会记录当前aql.xml文件位置、返回值类型及具体aql语句。
27.需要说明的是,aqlmethod中的aql语句一般无法直接执行,它往往会带一些参数或一些子标签,对于参数会在参数处理器中进行处理,对于子标签则会使用组合模式结合开源组件ongl进行处理,例如逻辑判断处理、遍历处理等。
28.本发明采用的组合模式又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类,该类提供了修改相同对象组的方式,核心在于:1、抽象构件角色:定义叶子和容器构件的共同点2、叶子构件角色:无子节点3、容器构件角色:有容器特征,可包含子节点组合模式在本发明中应用于aqlmethod解析阶段,aql语句在此阶段中可能包含多个子标签,这些子标签有对应的层级,可视为树状结构,对于不同的层级应用不同的aqlnode进行解析。
29.本发明采用的ognl的全称是object graph navigation language(对象图导航语言),它是一种强大的表达式语言,通过简单一致的表达式语法来读取和设置java对象的属性值,调用对象的方法,遍历整个对象的结构图,实现字段类型转换等功能。相对于其它的表达式语言,ognl的功能更为强大,它提供了很多高级而必需的特性,例如强大的类型转换功能、静态或实例方法的执行、跨集合投影,以及动态lambda表达式定义等。
30.ongl在本发明中应用于aqlmethod解析阶段,即aqlnode解析操作中,当aql语句包含动态标签,例如逻辑判断标签、动态属性判断操作等,则会调用ongl相关api进行相关逻辑的解析操作。
31.将所述接口代理和所述aqlmethod对象通过域名空间namespace进行绑定,并将对应绑定关系记录在所述配置解析器的配置configuration对象中,得到配置文件解析结果。
32.基于上述任一实施例,结合图3,所述基于对应的接口代理通过所述配置解析器解析配置文件aql.xml,包括:将每个配置文件aql.xml通过域名空间namespace属性和所述aql接口关联起来;其中,配置文件aql.xml的根节点为aqls,子节点为aql,每个aql子节点定义id属性作为唯一标识,id属性值和关联的aql接口中的接口方法一一对应,所述配置文件aql.xml和所述aql接口一一对应。
33.基于上述任一实施例,所述核心层还包括参数处理器;具体地,参数处理器主要负责解析aql语句中的参数及涉及的属性,并对其做一定的包装,结合动态标签及参数映射配置生成最终aql语句。
34.结合图3,基于所述配置文件解析结果生成aql语句,包括:将所述aql接口的参数列表输入至参数处理器,若参数有@aqlparam注解时将注解中的值作为可用参数依据,否则生成默认的值作为可用参数依据;基于可用参数将实际参数值替换到各参数所在实际位置生成aql语句。
35.基于上述任一实施例,所述核心层还包括结果映射器;
具体地,结果映射器主要负责映射结果集,并根据结果映射配置使用对应的反射操作生成对应的操作结果。
36.结合图3,所述基于所述基础层中对应的反射操作将所述执行结果生成对应的操作结果,包括:对于查询语句得到执行结果的数据后根据aqlmethod中的结果类型resulttype经过所述结果映射器采用基础层中特定的反射操作生成对应的pojo对象作为操作结果。
37.需要说明的是,全局异常处理中对于每个aql操作,会在其执行上下文中记录以下信息:错误消息,产生错误的aql.xml文件位置,产生错误的对象(具体接口方法),产生错误的阶段,产生错误的aql语句,错误堆栈信息。当使用本发明技术方案执行aql语句发生异常时,可根据详细错误信息迅速找到问题点,从而显著提升了定位问题的效率。
38.下面对本发明提供的一种原生多模型数据库操作装置进行描述,下文描述的与上文描述的一种原生多模型数据库操作方法可相互对应参照。
39.图4为本发明实施例提供的一种原生多模型数据库操作装置的结构示意图,如图4所示,该装置包括架构构建单元410和操作单元420;架构构建单元410,用于构建包括基础层、核心层和接口层的软件架构;其中,所述基础层连接所述原生多模型数据库;所述核心层包括aql执行器;操作单元420,用于通过所述核心层对所述基础层的基础配置进行解析得到配置文件解析,将基于所述配置文件解析生成的aql语句分发至对应的aql执行器后基于所述基础层的数据源得到执行结果,并基于所述基础层中对应的反射操作将所述执行结果生成对应的操作结果,以完成用户通过所述接口层操作原生多模型数据库;其中,所述基础层中的基础配置包括创建数据源、扫描配置文件aql.xml、扫描aql接口和注入全局配置。
40.本发明实施例提供的装置,以arangodb java driver为基础,相较于现有方案有以下改进:1)将aql语句统一放在xml文件中统一管理;2)xml文件中的aql语句可根据实际需求使用不同的标签做动态化处理。
41.基于上述任一实施例,所述核心层还包括配置解析器;所述操作单元包括代理生成模块、文件解析模块和关系绑定模块;所述代理生成模块,用于基于所述基础层的基础配置扫描到的aql接口使用jdk动态代理的方式生成对应的接口代理;所述文件解析模块,用于基于对应的接口代理通过所述配置解析器解析配置文件aql.xml,并为配置文件aql.xml中每个子节点aql标签生成一个aqlmethod对象,所述aqlmethod对象记录当前配置文件aql.xml的文件位置、返回值类型及具体aql语句;其中,所述aqlmethod对象包括aql语句的参数和子标签;所述关系绑定模块,用于将所述接口代理和所述aqlmethod对象通过域名空间namespace进行绑定,并将对应绑定关系记录在所述配置解析器的配置configuration对象中,得到配置文件解析结果。
42.基于上述任一实施例,所述文件解析模块,具体用于将每个配置文件aql.xml通过域名空间namespace属性和所述aql接口关联起来;其中,配置文件aql.xml的根节点为aqls,子节点为aql,每个aql子节点定义id属性作为唯一标识,id属性值和关联的aql接口
中的接口方法一一对应,所述配置文件aql.xml和所述aql接口一一对应。
43.基于上述任一实施例,所述核心层还包括参数处理器;所述操作单元还包括参数处理模块和语句生成模块;所述参数处理模块,用于将所述aql接口的参数列表输入至参数处理器,若参数有@aqlparam注解时将注解中的值作为可用参数依据,否则生成默认的值作为可用参数依据;所述语句生成模块,用于基于可用参数将实际参数值替换到各参数所在实际位置生成aql语句。
44.基于上述任一实施例,所述核心层还包括结果映射器;所述操作单元还包括反射操作模块;所述反射操作模块,用于对于查询语句得到执行结果的数据后根据aqlmethod中的结果类型resulttype经过所述结果映射器采用基础层中特定的反射操作生成对应的pojo对象作为操作结果。
45.图5为本发明实施例提供的电子设备的结构示意图,如图5所示,该电子设备可以包括:处理器(processor)510、通信接口(communications interface)520、存储器(memory)530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。处理器510可以调用存储器530中的逻辑指令,以执行原生多模型数据库操作方法,该方法包括:构建包括基础层、核心层和接口层的软件架构;其中,所述基础层连接原生多模型数据库;所述核心层包括aql执行器;通过所述核心层对所述基础层的基础配置进行解析得到配置文件解析结果,将基于所述配置文件解析结果生成的aql语句分发至对应的aql执行器后基于所述基础层的数据源得到执行结果,并基于所述基础层中对应的反射操作将所述执行结果生成对应的操作结果,以完成用户通过所述接口层操作原生多模型数据库;其中,所述基础层中的基础配置包括创建数据源、扫描配置文件aql.xml、扫描aql接口和注入全局配置。
46.此外,上述的存储器530中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
47.另一方面,本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的原生多模型数据库操作方法,该方法包括:构建包括基础层、核心层和接口层的软件架构;其中,所述基础层连接原生多模型数据库;所述核心层包括aql执行器;通过所述核心层对所述基础层的基础配置进行解析得到配置文件解析结果,将基于所述配置文件解析结果生成的aql语句分发至对应的aql执行器后基于所述基础层的数据源得到执行结果,并基于所述基础层中对应的反射
操作将所述执行结果生成对应的操作结果,以完成用户通过所述接口层操作原生多模型数据库;其中,所述基础层中的基础配置包括创建数据源、扫描配置文件aql.xml、扫描aql接口和注入全局配置。
48.又一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的原生多模型数据库操作方法,该方法包括:构建包括基础层、核心层和接口层的软件架构;其中,所述基础层连接原生多模型数据库;所述核心层包括aql执行器;通过所述核心层对所述基础层的基础配置进行解析得到配置文件解析结果,将基于所述配置文件解析结果生成的aql语句分发至对应的aql执行器后基于所述基础层的数据源得到执行结果,并基于所述基础层中对应的反射操作将所述执行结果生成对应的操作结果,以完成用户通过所述接口层操作原生多模型数据库;其中,所述基础层中的基础配置包括创建数据源、扫描配置文件aql.xml、扫描aql接口和注入全局配置。
49.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
50.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
51.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1