CN111209319B - 一种数据服务方法及装置 - Google Patents
一种数据服务方法及装置 Download PDFInfo
- Publication number
- CN111209319B CN111209319B CN201811390507.7A CN201811390507A CN111209319B CN 111209319 B CN111209319 B CN 111209319B CN 201811390507 A CN201811390507 A CN 201811390507A CN 111209319 B CN111209319 B CN 111209319B
- Authority
- CN
- China
- Prior art keywords
- data table
- business object
- description model
- information
- data
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 68
- 238000013507 mapping Methods 0.000 claims description 98
- 238000012545 processing Methods 0.000 claims description 27
- 238000013461 design Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 13
- 238000004590 computer program Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 9
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 241001417539 Liza Species 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种数据服务方法及装置,用以解决现有技术中开发者工作量大、数据请求效率较低的问题。本申请中,通过在数据服务提供端将业务数据封装为业务对象,使得数据请求端可以通过访问业务对象描述模型,访问业务数据,数据请求端不需要知道业务数据的存储格式、存储位置等信息,也不需要编写相应的数据请求模块,可减少开发者的工作量。此外,通过本申请的方法,将业务对象描述模型与两个来自异构数据库的数据表描述模型关联映射,使得数据请求端可以同时请求两个数据库的数据,可提高数据的请求效率。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据服务方法及装置。
背景技术
随着物联网(internet of things,IoT)技术的发展,人与物之间以及物与物之间的通信成为可能。在物联网场景下,随着可通信实体的急速增加,由可通信实体产生的数据类型和数据量也在急速增加。例如,在车联网场景中,所涉及的数据类型可包括车辆本身的数据、用户的驾驶行为数据、行驶使用的地图数据、车载娱乐数据、用户兴趣点数据以及天气数据等,这些数据不仅类型多样化,而且数据量非常大。不同类型的数据可能存储在不同的数据库(例如MySQL数据库,HBase数据库,文件数据库(例如excel文件数据库、逗号分隔值(comma-separated values,CSV)文件数据库)),当数据请求端需要访问不同类型的数据时可能涉及到多种异构数据源的访问。
现有技术中,数据请求端在向多种异构数据源请求数据时,需要了解各种类型数据的存储信息(例如存储位置、存储格式等),编写相应的数据请求模块,这会增加开发者的工作量。此外,数据请求端采用该方法请求数据,不支持异构数据源的关联混合访问,以异构数据源为MySQL数据库和HBase数据库为例,当数据请求端需要请求MySQL数据库和HBase数据库中的数据时,需要编写不同的数据请求模块,并分别通过这些数据请求模块向MySQL数据库和HBase数据库请求数据,这样数据请求的效率较低。
发明内容
本申请实施例提供一种数据服务方法及装置,用以解决现有技术中开发者工作量大、数据请求效率较低的问题。
第一方面,本申请实施例提供一种数据服务方法,该方法可应用于数据服务装置。该方法包括:从数据请求端接收包括业务对象的标识和查询条件的请求消息,请求消息用于请求与查询条件对应的业务数据,业务对象由业务数据对应的字段封装得到,根据标识以及预先存储的对应关系,确定与标识对应的业务对象描述模型和业务对象-数据表映射模型,根据业务对象-数据表映射模型、第一数据表描述模型、第二数据表描述模型以及查询条件,查询第一数据库得到第一结果集,查询第二数据库得到第二结果集,根据业务对象描述模型、第一结果集以及第二结果集,生成与查询条件对应的业务对象的实例,实例中包括与查询条件对应的业务数据,向数据请求端发送业务对象的实例。
其中,对应关系包括各个业务对象的标识与各个业务对象描述模型与各个业务对象-数据表映射模型的一一对应关系,业务对象描述模型与第一数据表描述模型和第二数据表描述模型具备关联关系,业务对象描述模型用于对业务对象进行格式化描述,业务对象-数据表映射模型用于对业务对象描述模型与第一数据表描述模型和第二数据表描述模型的关联关系进行格式化描述,第一数据表描述模型用于对第一数据库中第一数据表的字段进行格式化描述,第二数据表描述模型用于对第二数据库中第二数据表的字段进行格式化描述,第一数据库和第二数据库为异构数据库。
通过上述方法,数据请求端不需要知道所需要访问数据的存储方式、存储位置以及存储格式等,也不需要编写相应的数据请求模块,可以减少开发人员的工作量。此外,通过该方法,将业务对象描述模型与异构数据库中的数据表关联,可支持异构数据源的关联混合访问,也就是说,数据请求端可以通过只访问一个业务对象的方式同时请求两个数据库的数据,当然,本申请是以访问两个数据库为例说明,通过本申请的方法可以扩展为同时请求多个数据库的数据,可提高数据的请求效率。
在一种可能的设计中,可采用如下方式根据业务对象-数据表映射模型、第一数据表描述模型、第二数据表描述模型以及查询条件,查询第一数据库得到第一结果集,查询第二数据库得到第二结果集:根据业务对象-数据表映射模型包括的业务对象-数据表的映射信息、查询条件以及第一数据表描述模型包括的第一数据库的类型,生成第一查询命令,根据业务对象-数据表的映射信息、查询条件以及第二数据表描述模型包括的第二数据库的类型,生成第二查询命令,其中,业务对象-数据表的映射信息包括第一数据表描述模型映射到业务对象描述模型的字段信息以及第二数据表描述模型映射到业务对象描述模型的字段信息,根据第一数据表描述模型包括的第一数据库的地址信息以及第一查询命令,查询第一数据库得到第一结果集,根据第二数据表描述模型包括的第二数据库的地址信息以及第二查询命令,查询第二数据库得到第二结果集。
在一种可能的设计中,从数据请求端接收包括业务对象的标识和查询条件的请求消息之前,还可以创建第一数据表描述模型和第二数据表描述模型。示例性的,获取第一数据表的字段以及第二数据表的字段;根据第一数据表的字段创建第一数据表描述模型,根据第二数据表的字段创建第二数据表描述模型。
其中,第一数据表描述模型和第二数据表描述模型均包括数据表标识、数据表语义信息、数据表存储信息以及数据表的字段信息,数据表标识用于唯一标识一个数据表描述模型,数据表语义信息用于语义搜索,数据表存储信息用于数据请求,数据表的字段信息用于描述数据表的字段。
第一数据表描述模型可以格式化描述为:
<第一标识,第一数据表语义信息,第一数据表的字段信息,第一数据表存储信息>
第一标识,用于唯一标识第一数据表描述模型;
第一数据表语义信息包括第一数据表的字段的描述和/或标签;
第一数据表的字段信息包括字段的名称、类型和说明;
第一数据表存储信息包括第一数据库的存储地址和第一数据库的类型;
第二数据表描述模型可以格式化描述为:
<第二标识,第二数据表语义信息,第二数据表的字段信息,第二数据表存储信息>
第二标识,用于唯一标识第二数据表描述模型;
第二数据表语义信息包括第二数据表的字段的描述和/或标签;
第二数据表的字段信息包括字段的名称、类型和说明;
第二数据表存储信息包括第二数据库的存储地址和第二数据库的类型;
其中,第一数据库的类型为关系型且第二数据库的类型为非关系型,或者,第一数据库的类型和第二数据库的类型均为非关系型且第一数据库和第二数据库为不同类型的非关系型数据库。
通过上述方法,将数据表封装为描述模型,使得后续使用数据表封装业务对象时,可以灵活选取多个数据表描述模型封装为一个业务对象,使得数据请求端可以通过访问一个业务对象,请求到来自多个数据库的数据表中的数据。
在一种可能的设计中,从数据请求端接收包括业务对象的标识和查询条件的请求消息之前,还可以创建业务对象描述模型。示例性的,获取数据请求端的业务需求信息,业务需求信息用于表征数据请求端对业务对象的需求,并根据业务需求信息,创建业务对象描述模型。
其中,业务对象描述模型包括业务对象的标识、业务对象语义信息以及业务对象的字段信息,业务对象的标识用于唯一标识业务对象描述模型,业务对象语义信息用于对业务对象描述模型进行语义搜索,业务对象的字段信息用于描述业务对象包括的字段。
业务对象描述模型可以格式化描述为:
<业务对象的标识,业务对象语义信息,业务对象的字段信息>
业务对象语义信息可以包括业务对象的字段的描述和/或标签;
业务对象的字段信息可以包括字段的名称、类型和说明,其中,业务对象的字段包括第一数据表与第二数据表中包括的关联字段,且包括第一数据表中除关联字段的全部或部分字段,且包括第二数据表中除关联字段的全部或部分字段。
通过上述方法,根据数据请求端的业务需求封装业务对象,使得封装的业务对象更符合数据请求端的需求。
在一种可能的设计中,根据业务需求信息,创建业务对象描述模型之后,还可以创建业务对象-数据表映射模型。示例性的,根据预设的映射信息,将业务对象描述模型和第一数据表描述模型以及第二数据表描述模型进行映射,得到业务对象-数据表映射模型。
其中,业务对象-数据表映射模型包括业务对象的标识、映射的数据表列表以及业务对象-数据表的映射信息,映射的数据表列表用于指示与业务对象描述模型关联的数据表描述模型,业务对象-数据表的映射信息用于表征业务对象描述模型和数据表描述模型的映射关系。
业务对象-数据表映射模型可以格式化描述为:
<业务对象的标识,映射的数据表列表,业务对象-数据表的映射信息>
映射的数据表列表中包括第一标识和第二标识;
业务对象-数据表的映射信息包括第一数据表描述模型映射到业务对象描述模型的字段信息以及第二数据表描述模型映射到业务对象描述模型的字段信息。
通过上述方法,根据数据请求端的业务需求封装业务对象,使得封装的业务对象更符合数据请求端的需求。
在一种可能的设计中,从数据请求端接收包括业务对象的标识和查询条件的请求消息之前,还可以创建用于访问业务对象的访问接口描述模型。访问接口描述模型可以格式化描述为:<接口描述标识,业务对象列表,接口信息>。其中,访问接口描述模型包括接口描述标识、业务对象列表以及接口信息,接口信息包括接口访问地址、业务对象请求格式以及业务对象返回格式,业务对象列表用于指示可通过访问接口描述模型访问的业务对象。在该种设计中,向数据请求端发送业务对象的实例之前,还可以将业务对象的实例转化为业务对象返回格式。
通过上述方法,为访问业务对象提供统一的访问接口描述模型,使得数据请求端可方便的根据该模型访问业务对象描述模型。
在一种可能的设计中,第一数据表描述模型和第二数据表描述模型中还包括统计信息,统计信息用于估算每个查询命令对应的查询结果数目。在该种设计中,生成第一查询命令和第二查询命令之后,还可以根据统计信息,估算第一查询命令和第二查询命令分别对应的查询结果数目,当确定第一查询命令为查询结果数目最小的查询命令时,依次执行第一查询命令和第二查询命令,其中,第一结果集中包括关联字段对应的数据。在该种设计中,可采用如下方式根据第二数据表描述模型包括的第二数据库的地址信息以及第二查询命令,查询第二数据库得到第二结果集:根据关联字段对应的数据以及第二查询命令,生成第三查询命令,并根据第二数据库的地址信息以及第三查询命令,查询第二数据库,得到第二结果集。
通过上述方法,可以利用不同数据库的数据统计特征,构建最优的查询命令,可以快速返回结果,可减少数据请求端的等待时间,提高查询效率。
在一种可能的设计中,第一查询命令和第二查询命令可以为多条。在该种设计中,根据统计信息,估算第一查询命令和第二查询命令分别对应的查询结果数目之后,还可以将查询结果数目大于预设阈值的第一查询命令和第二查询命令确定为复杂查询命令,将查询结果数目大于预设阈值的第一查询命令和第二查询命令确定为简单查询命令,并将复杂查询命令推入第一线程池排队等待,并将简单查询命令推入第二线程池排队等待。
通过上述方法,将简单查询命令和复杂查询命令分开排队,可以避免简单查询命令无限等待的情况发生。例如,假设简单查询命令和复杂查询命令在同一个线程池排队等待,由于复杂查询命令执行时间比较久,可能导致在复杂查询命令之后排队的简单查询命令一直等待,而通过该方法,使得简单查询命令和复杂查询命令分开排队,进而使得简单查询命令可以及时的执行。
第二方面,本申请实施例中提供一种数据服务装置,该装置可以包括:接收单元、处理单元和发送单元,这些单元可以执行上述第一方面或第一方面的任意可能的设计中的方法。
第三方面,本申请实施例中还提供一种计算机存储介质,所述计算机存储介质存储有计算机可执行指令,所述计算机可执行指令在被计算机调用时,使所述计算机执行上述第一方面或上述第一方面的任意一种设计提供的方法。
第四方面,本申请实施例中还提供一种计算机程序产品,所述计算机程序产品中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面或上述第一方面的任意一种可能的设计中所述的方法。
附图说明
图1为一种现有技术中数据库访问架构示意图;
图2为本申请实施例提供的一种数据服务方法实施流程图;
图3为本申请实施例提供的一种数据服务访问示意图;
图4为本申请实施例提供的一种数据服务装置结构示意图。
具体实施方式
为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例作进一步地详细描述。
以下,对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
(1)异构数据源,是指不同类型或者不同模式的数据源。数据源,是指存储数据的存储端。
(2)数据服务(data service),是指通过服务接口,向应用提供业务对象的增加、删除、修改以及查询的服务。
(3)数据表的字段,用于描述数据表的特征,可以理解为数据表的表头。例如,以表1示出的出租车司机数据表为例,表1中驾驶员编号、驾驶车辆编号、姓名、性别以及年龄即为表1的表头,可以理解为表1的字段,也可以称为业务数据对应的字段,其中,表1中表头下面的具体信息行可以称为业务数据实例,例如,{1,111,李某,男,31}、{2,222,赵某,男,38}以及{3,333,王某,女,45}均为业务数据实例。
表1
驾驶员编号 | 驾驶车辆编号 | 姓名 | 性别 | 年龄 |
1 | 111 | 李某 | 男 | 31 |
2 | 222 | 赵某 | 男 | 38 |
3 | 333 | 王某 | 女 | 45 |
(4)业务数据对应的字段,是指与业务数据对应的用于描述业务数据的字段。例如,上述表1中,“111”、“222”以及“333”是驾驶车辆的编号,是具体的业务数据,而“驾驶车辆编号”是用于描述车辆编号的字段,该字段可以称为与业务数据“111”、“222”以及“333”对应的字段,可以简称为业务数据对应的字段。
(5)异构数据库,本申请中将一个或多个关系型数据库,与一个或多个非关系型数据库称为异构数据库。例如,一个或多个MySQL数据库,与一个或多个NoSQL数据库可以称为异构数据库。或者,将多个不同类型的非关系型数据库称为异构数据库。例如,HBase数据库与MongoDB数据库可以称为异构数据库。
(6)本申请中“多个”是指两个或两个以上,其它量词与之类似。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。“第一”,“第二”,“第三”,及“第四”仅仅用于区分,不表示顺序或先后的意义。
参阅图1所示,其为现有技术中数据库访问架构示意图。如图1所示,该架构包括数据请求端、访问接口、数据库中间件以及数据源,其中,数据源中包括三个数据库,分别为数据库1、数据库2以及数据库3,每个数据库中可存储不同类型的数据,图1中以三个数据库为异构数据库为例示意,实际应用中数据源可包括多个数据库,图1仅以3个数据库作为示例性示意,此外,数据库中间件中包括对应数据库1的数据库中间件1、对应数据库2的数据库中间件2、对应数据库3的数据库中间件3,访问接口为数据请求端访问数据源提供统一的接口,数据库中间件用于适配数据源中的数据库,简单来说,数据库中间件用于将数据请求端的数据请求转换为与该数据库中间件对应的数据库可识别的数据库请求,例如,数据库中间件1用于将数据请求端的数据请求转换为数据库1可识别的数据库请求,类似的,数据库中间件2用于将数据请求端的数据请求转换为数据库2可识别的数据库请求,数据库中间件3用于将数据请求端的数据请求转换为数据库3可识别的数据库请求。基于图1所示的数据库访问架构,数据请求端在向三个异构数据库请求数据时,需要了解每个数据库中数据的存储位置以及存储格式等存储信息,编写相应的数据请求模块,例如,针对数据库1、数据库2以及数据库3的访问分别编写了数据请求模块1、数据请求模块2以及数据请求模块3。此外,基于图1所示的数据库访问架构,数据请求端在向数据源请求数据时,需要数据请求模块、数据库中间件以及数据库的配合使用,以数据请求端请求数据库3中存储的数据为例,数据请求端需要通过数据请求模块3向访问接口发送数据请求,访问接口将该数据请求转发至数据库中间件3,进而由数据库中间件3将该数据请求转换为数据库3可识别的数据请求并发送至数据库3,数据库3将请求的数据沿着接收数据请求的相反路径返回至数据请求端。
基于图1所示的数据库访问架构,数据请求端在向多种异构数据库请求数据时,需要了解各种类型数据的存储信息(例如存储位置、存储格式等),编写相应的数据请求模块,这会增加开发者的工作量。此外,数据请求端采用现有技术的方法请求数据,不支持异构数据库的关联混合访问,以图1中所示的数据请求端向数据库1和数据库2请求数据为例,当数据请求端请求数据库1和数据库2中的数据时,需要编写不同的数据请求模块1和数据请求模块2,并分别通过这些数据请求模块向数据库1和数据库2请求数据,不能同时请求数据库1和数据库2中的数据,数据请求效率较低。
基于上述存在的问题,本申请实施例提供一种数据服务方法,用以减少开发者的工作量,并提高数据请求效率。
参阅图2所示,其为本申请实施例提供的一种数据服务方法实施流程图。参阅图2所示,该方法包括:
S101:从数据请求端接收包括业务对象的标识和查询条件的请求消息,该请求消息用于请求与该查询条件对应的业务数据。
本申请实施例中以将该数据服务方法应用于数据服务装置为例说明。
本申请实施例提供的方法,在数据服务装置中将业务数据对应的字段封装为业务对象,数据请求端预先获取到数据服务装置中封装的业务对象的标识,当数据请求端需要使用业务数据时,可通过访问业务对象获取到相应的业务对象实例,进而可得到业务数据。
一个可能的实例中,数据服务装置可通过如下方法将业务数据对应的字段封装为业务对象,该方法包括以下步骤:
步骤1:数据服务装置获取第一数据库中第一数据表的字段以及第二数据库中第二数据表的字段,其中,该第一数据库和该第二数据库为异构数据库。
本申请实施例中以从两个异构数据库获取数据表的字段为例说明,实际应用中可以从多个异构数据库中获取数据表的字段,本申请不做限定。
需要说明的是,本申请实施例中第一数据表和第二数据表是指具有某种关联关系的数据表,而不是独立的数据表。例如,该关联关系可以是关联字段,可以理解为第一数据表和第二数据表是指具有关联字段的数据表。以表2和表3为例,这两个数据表的关联字段为“驾驶车辆编号”,通过该关联字段可将表2和表3的其它字段建立关联关系。
举例说明,假设第一数据表为表2所示,第二数据表为表3所示,数据服务装置可以获取第一数据表和第二数据表均包括的关联字段“驾驶车辆编号”,通过该关联字段可以将第一数据表和第二数据表建立关联,此外,数据服务装置还可以获取第一数据表包括的“驾驶员编号”、“姓名”、“性别”以及“年龄”中的部分字段或全部字段,数据服务装置还可以获取第二数据表包括的“行驶记录编号”、“行驶里程”、“行驶时间”、“本次收费”以及“行驶区域”中的部分字段或全部字段。本申请实施例中,下文以数据服务装置获取字段“驾驶车辆编号”、字段“姓名”以及字段“行驶区域”为例说明。
表2
驾驶员编号 | 驾驶车辆编号 | 姓名 | 性别 | 年龄 |
1 | 111 | 李某 | 男 | 31 |
2 | 222 | 赵某 | 男 | 38 |
3 | 333 | 王某 | 女 | 45 |
4 | 444 | 白某 | 男 | 46 |
5 | 555 | 周某 | 男 | 39 |
…… | …… | …… | …… | …… |
表3
需要说明的是,表2和表3中省略的部分表示该数据表中包括多个数据行,而表2和表3中仅以5个数据行为例示意。
步骤2:数据服务装置根据第一数据表的字段创建第一数据表描述模型,并根据第二数据表的字段创建第二数据表描述模型。第一数据表描述模型用于对第一数据库中第一数据表的字段进行格式化描述。第二数据表描述模型用于对第二数据库中第二数据表的字段进行格式化描述。
仍以上述举例说明,数据服务装置获取第一数据表包括的字段“驾驶车辆编号”以及字段“姓名”,并获取第二数据表包括的字段“驾驶车辆编号”以及字段“行驶区域”,数据服务装置获取到第一数据表的字段和第二数据表的字段后,可根据第一数据表的字段创建第一数据表描述模型,并根据第二数据表的字段创建第二数据表描述模型。
其中,第一数据表描述模型和第二数据表描述模型均可以包括数据表标识、数据表语义信息、数据表存储信息以及数据表的字段信息。数据表标识用于唯一标识一个数据表描述模型,数据表语义信息用于语义搜索,数据表存储信息用于数据请求,数据表的字段信息用于描述数据表的字段。
第一数据表描述模型可以格式化描述为:
<第一标识,第一数据表语义信息,第一数据表的字段信息,第一数据表存储信息>
第一标识,用于唯一标识第一数据表描述模型。例如,针对上述举例来说,可将该第一标识记为Driver_1。
第一数据表语义信息可以包括第一数据表的字段的描述和/或标签。例如,针对上述举例来说,第一数据表语义信息可以描述为“北京市出租车司机记录数据表”,“驾驶员”,“驾驶车辆”等,标签可以描述为“出租车”、“北京”、“行驶记录”等,用于语义搜索。
第一数据表的字段信息可以包括字段的名称、类型和说明。例如,针对上述举例表2为第一数据表,该第一数据表的字段信息可以包括字段的名称“驾驶员编号”、“驾驶车辆编号”、“姓名”、“性别”以及“年龄”,也可以包括字段的类型,例如,字段“驾驶员编号”的类型可以是“string”,字段“性别”的类型可以是“boolean”,字段“年龄”的类型可以是“integer”。
第一数据表存储信息可以包括第一数据库的存储地址和类型。此外,还可以包括用户密码、访问方式等。
第二数据表描述模型可以格式化描述为:
<第二标识,第二数据表语义信息,第二数据表的字段信息,第二数据表存储信息>
第二标识,用于唯一标识第二数据表描述模型。例如,针对上述举例来说,可将该第二标识记为Trip_1。
第二数据表语义信息可以包括第二数据表的字段的描述和/或标签。例如,针对上述举例来说,第二数据表语义信息可以描述为“北京市出租车行驶记录数据表”,“行驶记录”,“驾驶车辆”、“行驶区域”等,标签可以描述为“出租车”、“北京”、“行驶记录”等,用于语义搜索。
第二数据表的字段信息可以包括字段的名称、类型和说明。例如,针对上述举例表3为第二数据表,该第二数据表的字段信息可以包括字段的名称“行驶记录编号”、“驾驶车辆编号”、“行驶里程”、“行驶时间”、“本次收费”以及“行驶区域”,也可以包括字段的类型,例如,字段“行驶记录编号”的类型可以是“string”,字段“行驶里程”的类型可以是“double”,字段“行驶区域”的类型可以是“location”。
第二数据表存储信息可以包括第二数据库的存储地址和类型。
在一些可能的实例中,第一数据表描述模型和第二数据表描述模型还可以包括统计信息,该统计信息可以用于估算每个查询命令对应的查询结果数目。例如,该统计信息可以包括数据总量、范围等。
步骤3:数据服务装置获取数据请求端的业务需求信息,并根据业务需求信息,创建业务对象描述模型。该业务需求信息用于表征数据请求端对业务对象的需求。业务对象描述模型用于对业务对象进行格式化描述。
举例来说,假设数据请求端频繁查询驾驶员姓名和驾驶员所驾驶的车辆所行驶的区域,也就是说,数据请求端有使用驾驶员姓名以及行驶区域的业务需求,数据服务装置可获取该需求信息,进而可根据该需求信息创建业务对象描述模型。
其中,业务对象描述模型可以包括业务对象的标识、业务对象语义信息以及业务对象的字段信息。业务对象的标识用于唯一标识业务对象描述模型,例如,针对上述举例,可以将业务对象的标识记为Driver_Trip。业务对象语义信息用于对业务对象描述模型进行语义搜索,业务对象的字段信息用于描述业务对象包括的字段。
业务对象描述模型可以格式化描述为:
<业务对象的标识,业务对象语义信息,业务对象的字段信息>
业务对象语义信息可以包括业务对象的字段的描述和/或标签。例如,针对上述举例来说,业务对象语义信息可以为“驾驶员”,“驾驶车辆”、“车辆行驶记录”等。
业务对象的字段信息可以包括字段的名称、类型和说明,其中,业务对象的字段包括第一数据表与第二数据表中包括的关联字段,且包括第一数据表中除关联字段的全部或部分字段,且包括第二数据表中除关联字段的全部或部分字段。例如,针对上述举例,数据请求端有使用驾驶员姓名以及行驶区域的业务需求,数据服务装置可根据该需求创建业务对象描述模型,使得该业务对象描述模型中的业务对象的字段信息包括“驾驶车辆编号”、“姓名”以及“行驶区域”,这样,数据请求端可以通过访问业务对象描述模型来访问所需要的数据,采用本申请的方法数据请求端不需要针对访问的每种数据编写数据请求模块,可以减少开发者的工作量。本申请以下举例中仍以业务对象的字段信息包括“驾驶车辆编号”、“姓名”以及“行驶区域”为例说明。
步骤4:数据服务装置根据业务需求信息,创建业务对象描述模型之后,根据预设的映射信息,将业务对象描述模型和第一数据表描述模型以及第二数据表描述模型进行映射,得到业务对象-数据表映射模型。业务对象-数据表映射模型用于对业务对象描述模型与第一数据表描述模型和第二数据表描述模型的关联关系进行格式化描述。
其中,业务对象-数据表映射模型包括业务对象的标识、映射的数据表列表以及业务对象-数据表的映射信息,映射的数据表列表用于指示与业务对象描述模型关联的数据表描述模型,业务对象-数据表的映射信息用于表征业务对象描述模型和数据表描述模型的映射关系。
业务对象-数据表映射模型可以格式化描述为:
<业务对象的标识,映射的数据表列表,业务对象-数据表的映射信息>
针对上述举例,将业务对象描述模型与表2和表3的描述模型进行映射,该映射的数据表列表中包括与表2对应的第一标识和与表3对应的第二标识。
业务对象-数据表的映射信息包括第一数据表描述模型映射到业务对象描述模型的字段信息以及第二数据表描述模型映射到业务对象描述模型的字段信息。例如,假设将第一数据表的字段“姓名”、“驾驶车辆编号”与第二数据表的字段“行驶区域”、“驾驶车辆编号”映射到业务对象描述模型,则业务对象-数据表的映射信息可以包括字段“姓名”、“驾驶车辆编号”与字段“行驶区域”的相关信息。例如,该业务对象-数据表的映射信息可以包括字段“姓名”、“驾驶车辆编号”与字段“行驶区域”的字段名称、类型以及说明等。
步骤5:数据服务装置在创建业务对象描述模型以及业务对象-数据表映射模型之后,还可创建用于访问业务对象的访问接口描述模型。该访问接口描述模型为业务对象的访问提供统一的接口。
访问接口描述模型可以格式化描述为:
<接口描述标识,业务对象列表,接口信息>
其中,访问接口描述模型包括接口描述标识、业务对象列表以及接口信息。接口信息可以包括接口访问地址、业务对象请求格式以及业务对象返回格式。业务对象列表用于指示可通过访问接口描述模型访问的业务对象。例如,假设可通过该访问接口描述模型访问的业务对象包括业务对象1、业务对象2以及业务对象3,则该业务对象列表中可以包括业务对象1、业务对象2以及业务对象3的业务对象标识。
一种可能的实现方式中,数据服务装置在创建访问接口描述模型之后,还可将该访问接口描述模型注册到一个统一的服务平台,参阅图3所示,如图3中,所有的数据请求端在向数据服务装置发送请求消息之前,都可以通过在该服务平台发现数据服务,进而可通过该服务平台获取用于访问业务对象的访问接口描述模型,在数据请求端获取到该访问接口描述模型后,可根据该访问接口描述模型调用数据服务,即,可以通过该访问接口描述模型访问业务对象,采用本申请的方法,数据请求端无需获知数据存储方式和存储位置,也不需要编写相应的数据请求模块,大大减小了开发者的工作量。
可以理解,本申请实施例仅以分别来自两个异构数据库的数据表为例,对数据服务装置如何将业务数据对应的字段封装为业务对象进行说明,而不是限定。本申请提供的上述封装业务对象的方法不仅可应用于两个数据库的场景,也可以应用于多个异构数据库的场景,也就是说,本申请中的业务对象可以由多个异构数据库中的数据封装得到。
S102:数据服务装置接收到数据请求端发送的业务对象的标识后,可以根据该业务对象的标识以及预先存储的对应关系,确定与该标识对应的业务对象描述模型和业务对象-数据表映射模型。
其中,预先存储的对应关系包括各个业务对象的标识与各个业务对象描述模型与各个业务对象-数据表映射模型的一一对应关系。
仍以上述举例说明,假设数据服务装置接收到的请求消息中包括的业务对象标识为Driver_Trip,则数据服务装置可根据该标识以及预先存储的对应关系,确定出与该标识对应的业务对象描述模型,该业务对象描述模型与标识为Driver_1的第一数据表描述模型和标识为Trip_1的第二数据表描述模型具备关联关系。
S103:数据服务装置根据业务对象-数据表映射模型、第一数据表描述模型、第二数据表描述模型以及查询条件,查询第一数据库得到第一结果集,查询第二数据库得到第二结果集。
一种可能的实现方式中,数据服务装置可通过如下方式根据业务对象-数据表映射模型、第一数据表描述模型、第二数据表描述模型以及查询条件,查询第一数据库得到第一结果集,查询第二数据库得到第二结果集:
步骤1:根据业务对象-数据表映射模型包括的业务对象-数据表的映射信息、查询条件以及第一数据表描述模型包括的第一数据库的类型,生成第一查询命令。
本申请中查询条件可以查询某个字段对应的全部数据,也可以查询某个字段对应的其中部分数据。
例如,假设查询条件为请求关于驾驶员姓名、行驶区域的数据,根据业务对象-数据表映射模型包括的业务对象-数据表的映射信息(第一数据表描述模型映射到业务对象描述模型的字段信息以及第二数据表描述模型映射到业务对象描述模型的字段信息)可知,有关驾驶员姓名的数据存储在第一数据库的第一数据表中,有关行驶区域的数据存储在第二数据库的第二数据表中,进而可分别生成查询第一数据库和第二数据库的查询命令。示例性的,以第一数据库为MySQL数据库为例,数据服务装置可以根据业务对象-数据表的映射信息、查询条件以及MySQL数据库的类型,生成第一查询命令:select姓名fromDriver_1。
又例如,假设查询条件为请求关于驾驶员姓名为李某、行驶区域为海淀的数据,根据业务对象-数据表映射模型包括的业务对象-数据表的映射信息(第一数据表描述模型映射到业务对象描述模型的字段信息以及第二数据表描述模型映射到业务对象描述模型的字段信息)可知,有关驾驶员姓名为李某的数据存储在第一数据库的第一数据表中,有关行驶区域为海淀的数据存储在第二数据库的第二数据表中,进而可分别生成查询第一数据库和第二数据库的查询命令。示例性的,以第一数据库为MySQL数据库为例,数据服务装置可以根据业务对象-数据表的映射信息、查询条件以及MySQL数据库的类型,生成第一查询命令:select*from Driver_1where姓名=‘李某’。
步骤2:根据业务对象-数据表的映射信息、查询条件以及第二数据表描述模型包括的第二数据库的类型,生成第二查询命令。
例如,以第二数据库为HBase数据库为例,假设查询条件为请求关于驾驶员姓名、行驶区域的数据,数据服务装置可以根据业务对象-数据表的映射信息、查询条件以及HBase数据库的类型,生成第二查询命令:scan‘Trip_1’,[‘行驶区域’]。
又例如,以第二数据库为HBase数据库为例,假设查询条件为请求关于驾驶员姓名为李某、行驶区域为海淀的数据,数据服务装置可以根据业务对象-数据表的映射信息、查询条件以及HBase数据库的类型,生成第二查询命令:scan‘Trip_1’,{COLUMS=>’行驶区域’,FILTER=>”ValueFilter(=,’binaryprefix:海淀’)”}。
步骤3:数据服务装置可根据第一数据表描述模型包括的第一数据库的地址信息以及第一查询命令,查询第一数据库得到第一结果集。
仍以上述举例为例,假设查询条件为请求关于驾驶员姓名、行驶区域的数据,表2为第一数据表,可通过第一查询命令查询到第一结果集{李某,赵某、王某、白某、周某},若假设查询条件为请求关于驾驶员姓名为李某、行驶区域为海淀的数据,表2为第一数据表,可通过第一查询命令查询到第一结果集{李某}。
步骤4:根据第二数据表描述模型包括的第二数据库的地址信息以及第二查询命令,查询第二数据库得到第二结果集。
仍以上述举例为例,假设查询条件为请求关于驾驶员姓名、行驶区域的数据,表3为第二数据表,可通过第二查询命令查询到第二结果集{海淀、丰台、朝阳、大兴、海淀},若假设查询条件为请求关于驾驶员姓名为李某、行驶区域为海淀的数据,表3为第二数据表,可通过第二查询命令查询到第二结果集{海淀、海淀}。
S104:数据服务装置可根据业务对象描述模型、第一结果集以及第二结果集,生成与查询条件对应的业务对象的实例,业务对象的实例中包括与查询条件对应的业务数据。
仍以上述举例为例,假设第一结果集为{李某,赵某、王某、白某、周某},第二结果集为{海淀、丰台、朝阳、大兴、海淀},则数据服务装置可根据业务对象描述模型中包括的第一数据表和第二数据表的关联字段“驾驶车辆编号”,将第一结果集{李某,赵某、王某、白某、周某}与第二结果集{海淀,丰台、朝阳、大兴、海淀}进行关联,生成与查询条件对应的业务对象的实例:实例1{李某,海淀}、实例2{赵某,丰台}、实例3{王某,朝阳}、实例4{白某,大兴}以及实例5{周某,海淀}。若假设第一结果集为{李某},第二结果集为{海淀、海淀},则数据服务装置可根据业务对象描述模型中包括的第一数据表和第二数据表的关联字段“驾驶车辆编号”,将第一结果集{李某}与第二结果集{海淀、海淀}进行关联,生成与查询条件对应的业务对象的实例:实例1{李某,海淀}。
S105:向数据请求端发送业务对象的实例。
数据服务装置生成业务对象实例后,可向数据请求端发送该业务对象的实例,以使该数据请求端根据接收到的业务对象的实例获取数据。
在一个可能的实例中,数据服务装置在向数据请求端发送业务对象的实例之前,将业务对象的实例转化为业务对象返回格式。例如,可以将实例1{李某,海淀}转化为JSON格式{姓名:“李某”,行驶区域:“海淀”}返回给数据请求端。又例如,可以将实例2{赵某,丰台}转化为JSON格式{姓名:“赵某”,行驶区域:“丰台”}返回给数据请求端。
通过本申请实施例提供的上述方法,数据请求端不需要知道所需要访问数据的存储方式、存储位置以及存储格式等,也不需要编写相应的数据请求模块,可以减少开发人员的工作量。此外,通过该方法,可支持异构数据的混合访问,也就是说可以同时请求两个数据库的数据,当然,本申请是以访问两个数据库为例说明,通过本申请的方法可以扩展为同时请求多个数据库的数据,可提高数据的请求效率。
一种可能的实现方式中,第一数据表描述模型和第二数据表描述模型中还包括统计信息,统计信息用于估算每个查询命令对应的查询结果数目。在该种实现方式中,数据服务装置在生成第一查询命令和第二查询命令之后,还可以根据统计信息,估算第一查询命令和第二查询命令分别对应的查询结果数目,当确定第一查询命令为查询结果数目最小的查询命令时,依次执行第一查询命令和第二查询命令,在该种实现方式中,首先执行第一查询命令得到第一结果集,其中,第一结果集中包括关联字段对应的数据,得到第一结果集后,根据第一结果集中包括的关联字段对应的数据以及第二查询命令生成第三查询命令,并根据第二数据库的地址信息以及第三查询命令,查询第二数据库,得到第二结果集。
仍以上述举例说明,假设数据服务装置根据统计信息,估算第一查询命令:select*fromDriver_1where姓名=‘李某’,对应的查询结果数目为1条,估算第二查询命令:scan‘Trip_1’,{COLUMS=>’行驶区域’,FILTER=>”ValueFilter(=,’binaryprefix:海淀’)”}对应的查询结果数目为100万条,此时确定第一查询命令为查询结果数目最小的查询命令,则依次执行第一查询命令和第二查询命令,也就是说,先在第一数据库的第一数据表中查询姓名为李某的数据,这里需要注意的是,虽然查询条件只给出姓名和行驶区域,但是通过本申请的方法返回给数据请求端的是业务对象实例,故在查询姓名=李某的同时,还需要在第一数据表中获取姓名=李某对应的驾驶车辆编号(111),故,通过执行该第一查询命令得到的第一结果集包括{李某,111},得到该第一结果集后,根据第一结果集中包括的驾驶车辆编号(111)以及第二查询命令:scan‘Trip_1’,{COLUMS=>’行驶区域’,FILTER=>”ValueFilter(=,’binaryprefix:海淀’)”},生成第三查询命令:get‘Trip_1’,’111’,{COLUMS=>’行驶区域’,FILTER=>”ValueFilter(=,’binaryprefix:海淀’)”},并根据第二数据库的地址信息以及第三查询命令,查询第二数据库,得到第二结果集{111,李某,海淀}。采用该方法,可以利用不同数据库的数据统计特征,构建最优的查询命令,可以快速返回结果,可减少数据请求端的等待时间,提高查询效率。
一种可能的实现方式中,第一查询命令和第二查询命令可以为多条,该多条查询命令可以在同一请求消息中发送,也可以在多条请求消息中发送。在该种实现方式中,数据服务装置根据统计信息,估算第一查询命令和第二查询命令分别对应的查询结果数目之后,还可以将查询结果数目大于预设阈值的第一查询命令和第二查询命令确定为复杂查询命令,将查询结果数目大于预设阈值的第一查询命令和第二查询命令确定为简单查询命令,并将复杂查询命令推入第一线程池排队等待,并将简单查询命令推入第二线程池排队等待。通过该方法将简单查询命令和复杂查询命令分开排队,可以避免简单查询命令无限等待的情况发生。例如,假设简单查询命令和复杂查询命令在同一个线程池排队等待,由于复杂查询命令执行时间比较久,可能导致在复杂查询命令之后排队的简单查询命令一直等待,而通过该方法,使得简单查询命令和复杂查询命令分开排队,进而使得简单查询命令可以及时的执行。
可选的,在简单查询命令全部执行完毕之后,还可以将复杂查询命令推入第二线程池排队等待,使得第一线程池和第二线程池并行工作,提高执行效率。
需要说明的是,上述预设阈值是根据实际应用经验总结的经验值,本申请不做限定。以数据库为MySQL数据库和HBase数据库为例,该预设阈值可以是50、500或1000等。
基于与方法实施例的同一发明构思,本申请实施例还提供了一种数据服务装置。可以理解的是,该数据服务装置为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在采用集成单元的情况下,图4示出了本申请实施例涉及的数据服务装置的一种可能的结构示意图。如图4所示,数据服务装置400包括接收单元401、处理单元402以及发送单元403。接收单元401和发送单元403用于支持数据服务装置400与其他设备的交互,处理单元402用于对数据服务装置400的动作进行控制管理,例如,接收单元401可以用于执行图2中的S101技术过程,处理单元402可以用于执行图2中的S102-S104等技术过程,发送单元403可以用于执行图2中的S105技术过程。数据服务装置400还可以包括存储单元404,用于存储数据服务装置400的程序代码和数据。
应理解以上装置中单元的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且装置中的单元可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分单元以软件通过处理元件调用的形式实现,部分单元以硬件的形式实现。例如,各个单元可以为单独设立的处理元件,也可以集成在装置的某一个芯片中实现,此外,也可以以程序的形式存储于存储器中,由装置的某一个处理元件调用并执行该单元的功能。此外这些单元全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件又可以成为处理器,可以是一种具有信号的处理能力的集成电路。在实现过程中,上述方法的各步骤或以上各个单元可以通过处理器元件中的硬件的集成逻辑电路实现或者以软件通过处理元件调用的形式实现。
在一个例子中,以上任一装置中的单元可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(application specific integratedcircuit,ASIC),或,一个或多个微处理器(digital singnal processor,DSP),或,一个或者多个现场可编程门阵列(field programmable gate array,FPGA),或这些集成电路形式中至少两种的组合。再如,当装置中的单元可以通过处理元件调度程序的形式实现时,该处理元件可以是通用处理器,例如中央处理器(central processing unit,CPU)或其它可以调用程序的处理器。再如,这些单元可以集成在一起,以片上系统(system-on-a-chip,SOC)的形式实现。
基于与上述方法实施例相同构思,本申请实施例中还提供一种计算机存储介质,所述计算机存储介质存储有计算机可执行指令,所述计算机可执行指令在被计算机调用时,使所述计算机执行上述提供的方法实施例中的各个实施例的具体过程。本申请实施例中,对所述计算机可读存储介质不做限定,例如,可以是RAM(random-access memory,随机存取存储器)、ROM(read-only memory,只读存储器)等。
基于与上述方法实施例相同构思,本申请实施例中还提供一种计算机程序产品,所述计算机程序产品中存储有指令,当其在计算机上运行时,使得计算机执行上述任意一种可能的设计中提供的方法。
本领域内的技术人员应明白,本申请实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请中一些可能的实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括本申请实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (16)
1.一种数据服务方法,其特征在于,包括:
从数据请求端接收包括业务对象的标识和查询条件的请求消息,所述请求消息用于请求与所述查询条件对应的业务数据,所述业务对象由业务数据对应的字段封装得到;
根据所述标识以及预先存储的对应关系,确定与所述标识对应的业务对象描述模型和业务对象-数据表映射模型,所述对应关系包括各个业务对象的标识与各个业务对象描述模型与各个业务对象-数据表映射模型的一一对应关系,所述业务对象描述模型与第一数据表描述模型和第二数据表描述模型具备关联关系,所述业务对象描述模型用于对所述业务对象进行格式化描述,所述业务对象-数据表映射模型用于对所述业务对象描述模型与第一数据表描述模型和第二数据表描述模型的关联关系进行格式化描述,所述第一数据表描述模型用于对第一数据库中第一数据表的字段进行格式化描述,所述第二数据表描述模型用于对第二数据库中第二数据表的字段进行格式化描述,所述第一数据库和所述第二数据库为异构数据库;
其中,所述第一数据表描述模型和所述第二数据表描述模型均包括数据表标识、数据表语义信息、数据表存储信息以及数据表的字段信息,所述数据表标识用于唯一标识一个数据表描述模型,所述数据表语义信息用于语义搜索,所述数据表存储信息用于数据请求,所述数据表的字段信息用于描述所述数据表的字段;
根据所述业务对象-数据表映射模型、所述第一数据表描述模型、所述第二数据表描述模型以及所述查询条件,查询所述第一数据库得到第一结果集,查询所述第二数据库得到第二结果集;
根据所述业务对象描述模型、所述第一结果集以及所述第二结果集,生成与所述查询条件对应的所述业务对象的实例,所述实例中包括与所述查询条件对应的业务数据;
向所述数据请求端发送所述业务对象的实例。
2.如权利要求1所述的方法,其特征在于,根据所述业务对象-数据表映射模型、所述第一数据表描述模型、所述第二数据表描述模型以及所述查询条件,查询所述第一数据库得到第一结果集,查询所述第二数据库得到第二结果集,包括:
根据所述业务对象-数据表映射模型包括的业务对象-数据表的映射信息、所述查询条件以及所述第一数据表描述模型包括的所述第一数据库的类型,生成第一查询命令;
根据所述业务对象-数据表的映射信息、所述查询条件以及所述第二数据表描述模型包括的所述第二数据库的类型,生成第二查询命令,其中,所述业务对象-数据表的映射信息包括所述第一数据表描述模型映射到所述业务对象描述模型的字段信息以及所述第二数据表描述模型映射到所述业务对象描述模型的字段信息;
根据所述第一数据表描述模型包括的第一数据库的地址信息以及所述第一查询命令,查询所述第一数据库得到第一结果集;
根据所述第二数据表描述模型包括的第二数据库的地址信息以及所述第二查询命令,查询所述第二数据库得到第二结果集。
3.如权利要求1所述的方法,其特征在于,从数据请求端接收包括业务对象的标识和查询条件的请求消息之前,还包括:
获取所述第一数据表的字段以及所述第二数据表的字段;
根据所述第一数据表的字段创建第一数据表描述模型,根据所述第二数据表的字段创建第二数据表描述模型;
所述第一数据表描述模型格式化描述为:
<第一标识,第一数据表语义信息,第一数据表的字段信息,第一数据表存储信息>
所述第一标识,用于唯一标识所述第一数据表描述模型;
所述第一数据表语义信息包括所述第一数据表的字段的描述和/或标签;
所述第一数据表的字段信息包括字段的名称、类型和说明;
所述第一数据表存储信息包括所述第一数据库的存储地址和所述第一数据库的类型;
所述第二数据表描述模型格式化描述为:
<第二标识,第二数据表语义信息,第二数据表的字段信息,第二数据表存储信息>
所述第二标识,用于唯一标识所述第二数据表描述模型;
所述第二数据表语义信息包括所述第二数据表的字段的描述和/或标签;
所述第二数据表的字段信息包括字段的名称、类型和说明;
所述第二数据表存储信息包括所述第二数据库的存储地址和所述第二数据库的类型;
其中,所述第一数据库的类型为关系型且所述第二数据库的类型为非关系型,或者,所述第一数据库的类型和所述第二数据库的类型均为非关系型且所述第一数据库和所述第二数据库为不同类型的非关系型数据库。
4.如权利要求3所述的方法,其特征在于,从数据请求端接收包括业务对象的标识和查询条件的请求消息之前,还包括:
获取所述数据请求端的业务需求信息,所述业务需求信息用于表征所述数据请求端对所述业务对象的需求;
根据所述业务需求信息,创建业务对象描述模型;
其中,所述业务对象描述模型包括业务对象的标识、业务对象语义信息以及业务对象的字段信息,所述业务对象的标识用于唯一标识所述业务对象描述模型,所述业务对象语义信息用于对所述业务对象描述模型进行语义搜索,所述业务对象的字段信息用于描述所述业务对象包括的字段;
所述业务对象描述模型格式化描述为:
<业务对象的标识,业务对象语义信息,业务对象的字段信息>
所述业务对象语义信息包括所述业务对象的字段的描述和/或标签;
所述业务对象的字段信息包括字段的名称、类型和说明,其中,所述业务对象的字段包括所述第一数据表与所述第二数据表中包括的关联字段,且包括所述第一数据表中除所述关联字段的全部或部分字段,且包括所述第二数据表中除所述关联字段的全部或部分字段。
5.如权利要求4所述的方法,其特征在于,根据所述业务需求信息,创建业务对象描述模型之后,还包括:
根据预设的映射信息,将所述业务对象描述模型和所述第一数据表描述模型以及所述第二数据表描述模型进行映射,得到所述业务对象-数据表映射模型;
其中,所述业务对象-数据表映射模型包括业务对象的标识、映射的数据表列表以及业务对象-数据表的映射信息,所述映射的数据表列表用于指示与所述业务对象描述模型关联的数据表描述模型,所述业务对象-数据表的映射信息用于表征所述业务对象描述模型和数据表描述模型的映射关系;
所述业务对象-数据表映射模型格式化描述为:
<业务对象的标识,映射的数据表列表,业务对象-数据表的映射信息>
所述映射的数据表列表中包括所述第一标识和所述第二标识;
所述业务对象-数据表的映射信息包括所述第一数据表描述模型映射到所述业务对象描述模型的字段信息以及所述第二数据表描述模型映射到所述业务对象描述模型的字段信息。
6.如权利要求1至5任一项所述的方法,其特征在于,从数据请求端接收包括业务对象的标识和查询条件的请求消息之前,还包括:
创建用于访问所述业务对象的访问接口描述模型;
所述访问接口描述模型格式化描述为:
<接口描述标识,业务对象列表,接口信息>
其中,所述访问接口描述模型包括接口描述标识、业务对象列表以及接口信息,所述接口信息包括接口访问地址、业务对象请求格式以及业务对象返回格式,所述业务对象列表用于指示可通过所述访问接口描述模型访问的业务对象;
向所述数据请求端发送所述业务对象的实例之前,还包括:
将所述业务对象的实例转化为所述业务对象返回格式。
7.如权利要求2所述的方法,其特征在于,所述第一数据表描述模型和所述第二数据表描述模型中还包括统计信息,所述统计信息用于估算每个查询命令对应的查询结果数目;
生成所述第一查询命令和所述第二查询命令之后,还包括:
根据所述统计信息,估算所述第一查询命令和所述第二查询命令分别对应的查询结果数目,当确定所述第一查询命令为查询结果数目最小的查询命令时,依次执行所述第一查询命令和所述第二查询命令,其中,所述第一结果集中包括关联字段对应的数据;
根据所述第二数据表描述模型包括的第二数据库的地址信息以及所述第二查询命令,查询所述第二数据库得到第二结果集,包括:
根据所述关联字段对应的数据以及所述第二查询命令,生成第三查询命令;
根据所述第二数据库的地址信息以及所述第三查询命令,查询所述第二数据库,得到所述第二结果集。
8.如权利要求7所述的方法,其特征在于,所述第一查询命令和所述第二查询命令为多条;
根据所述统计信息,估算所述第一查询命令和所述第二查询命令分别对应的查询结果数目之后,还包括:
将所述查询结果数目大于预设阈值的所述第一查询命令和所述第二查询命令确定为复杂查询命令,将所述查询结果数目大于预设阈值的所述第一查询命令和所述第二查询命令确定为简单查询命令;
将所述复杂查询命令推入第一线程池排队等待,并将所述简单查询命令推入第二线程池排队等待。
9.一种数据服务装置,其特征在于,包括:
接收单元,用于从数据请求端接收包括业务对象的标识和查询条件的请求消息,所述请求消息用于请求与所述查询条件对应的业务数据,所述业务对象由业务数据对应的字段封装得到;
处理单元,用于根据所述标识以及预先存储的对应关系,确定与所述标识对应的业务对象描述模型和业务对象-数据表映射模型,根据所述业务对象-数据表映射模型、第一数据表描述模型、第二数据表描述模型以及所述查询条件,查询第一数据库得到第一结果集,查询第二数据库得到第二结果集,根据所述业务对象描述模型、所述第一结果集以及所述第二结果集,生成与所述查询条件对应的所述业务对象的实例,所述实例中包括与所述查询条件对应的业务数据,其中,所述对应关系包括各个业务对象的标识与各个业务对象描述模型与各个业务对象-数据表映射模型的一一对应关系,所述业务对象描述模型与所述第一数据表描述模型和所述第二数据表描述模型具备关联关系,所述业务对象描述模型用于对所述业务对象进行格式化描述,所述业务对象-数据表映射模型用于对所述业务对象描述模型与所述第一数据表描述模型和所述第二数据表描述模型的关联关系进行格式化描述,所述第一数据表描述模型用于对第一数据库中第一数据表的字段进行格式化描述,所述第二数据表描述模型用于对第二数据库中第二数据表的字段进行格式化描述,所述第一数据库和所述第二数据库为异构数据库;
其中,所述第一数据表描述模型和所述第二数据表描述模型均包括数据表标识、数据表语义信息、数据表存储信息以及数据表的字段信息,所述数据表标识用于唯一标识一个数据表描述模型,所述数据表语义信息用于语义搜索,所述数据表存储信息用于数据请求,所述数据表的字段信息用于描述所述数据表的字段;
发送单元,用于向所述数据请求端发送所述业务对象的实例。
10.如权利要求9所述的装置,其特征在于,所述处理单元采用如下方式根据所述业务对象-数据表映射模型、所述第一数据表描述模型、所述第二数据表描述模型以及所述查询条件,查询所述第一数据库得到第一结果集,查询所述第二数据库得到第二结果集:
根据所述业务对象-数据表映射模型包括的业务对象-数据表的映射信息、所述查询条件以及所述第一数据表描述模型包括的所述第一数据库的类型,生成第一查询命令;
根据所述业务对象-数据表的映射信息、所述查询条件以及所述第二数据表描述模型包括的所述第二数据库的类型,生成第二查询命令,其中,所述业务对象-数据表的映射信息包括所述第一数据表描述模型映射到所述业务对象描述模型的字段信息以及所述第二数据表描述模型映射到所述业务对象描述模型的字段信息;
根据所述第一数据表描述模型包括的第一数据库的地址信息以及所述第一查询命令,查询所述第一数据库得到第一结果集;
根据所述第二数据表描述模型包括的第二数据库的地址信息以及所述第二查询命令,查询所述第二数据库得到第二结果集。
11.如权利要求9所述的装置,其特征在于,所述处理单元还用于:
在所述接收单元从数据请求端接收包括业务对象的标识和查询条件的请求消息之前,获取所述第一数据表的字段以及所述第二数据表的字段,并根据所述第一数据表的字段创建第一数据表描述模型,根据所述第二数据表的字段创建第二数据表描述模型;
所述第一数据表描述模型格式化描述为:
<第一标识,第一数据表语义信息,第一数据表的字段信息,第一数据表存储信息>
所述第一标识,用于唯一标识所述第一数据表描述模型;
所述第一数据表语义信息包括所述第一数据表的字段的描述和/或标签;
所述第一数据表的字段信息包括字段的名称、类型和说明;
所述第一数据表存储信息包括所述第一数据库的存储地址和所述第一数据库的类型;
所述第二数据表描述模型格式化描述为:
<第二标识,第二数据表语义信息,第二数据表的字段信息,第二数据表存储信息>
所述第二标识,用于唯一标识所述第二数据表描述模型;
所述第二数据表语义信息包括所述第二数据表的字段的描述和/或标签;
所述第二数据表的字段信息包括字段的名称、类型和说明;
所述第二数据表存储信息包括所述第二数据库的存储地址和所述第二数据库的类型;
其中,所述第一数据库的类型为关系型且所述第二数据库的类型为非关系型,或者,所述第一数据库的类型和所述第二数据库的类型均为非关系型且所述第一数据库和所述第二数据库为不同类型的非关系型数据库。
12.如权利要求11所述的装置,其特征在于,所述处理单元还用于:
在所述接收单元从数据请求端接收包括业务对象的标识和查询条件的请求消息之前,控制所述接收单元获取所述数据请求端的业务需求信息,所述业务需求信息用于表征所述数据请求端对所述业务对象的需求,并根据所述业务需求信息,创建业务对象描述模型;
其中,所述业务对象描述模型包括业务对象的标识、业务对象语义信息以及业务对象的字段信息,所述业务对象的标识用于唯一标识所述业务对象描述模型,所述业务对象语义信息用于对所述业务对象描述模型进行语义搜索,所述业务对象的字段信息用于描述所述业务对象包括的字段;
所述业务对象描述模型格式化描述为:
<业务对象的标识,业务对象语义信息,业务对象的字段信息>
所述业务对象语义信息包括所述业务对象的字段的描述和/或标签;
所述业务对象的字段信息包括字段的名称、类型和说明,其中,所述业务对象的字段包括所述第一数据表与所述第二数据表中包括的关联字段,且包括所述第一数据表中除所述关联字段的全部或部分字段,且包括所述第二数据表中除所述关联字段的全部或部分字段。
13.如权利要求12所述的装置,其特征在于,所述处理单元还用于:
在根据所述业务需求信息,创建业务对象描述模型之后,根据预设的映射信息,将所述业务对象描述模型和所述第一数据表描述模型以及所述第二数据表描述模型进行映射,得到所述业务对象-数据表映射模型;
其中,所述业务对象-数据表映射模型包括业务对象的标识、映射的数据表列表以及业务对象-数据表的映射信息,所述映射的数据表列表用于指示与所述业务对象描述模型关联的数据表描述模型,所述业务对象-数据表的映射信息用于表征所述业务对象描述模型和数据表描述模型的映射关系;
所述业务对象-数据表映射模型格式化描述为:
<业务对象的标识,映射的数据表列表,业务对象-数据表的映射信息>
所述映射的数据表列表中包括所述第一标识和所述第二标识;
所述业务对象-数据表的映射信息包括所述第一数据表描述模型映射到所述业务对象描述模型的字段信息以及所述第二数据表描述模型映射到所述业务对象描述模型的字段信息。
14.如权利要求9至13任一项所述的装置,其特征在于,所述处理单元还用于:
在所述接收单元从数据请求端接收包括业务对象的标识和查询条件的请求消息之前,创建用于访问所述业务对象的访问接口描述模型;
所述访问接口描述模型格式化描述为:
<接口描述标识,业务对象列表,接口信息>
其中,所述访问接口描述模型包括接口描述标识、业务对象列表以及接口信息,所述接口信息包括接口访问地址、业务对象请求格式以及业务对象返回格式,所述业务对象列表用于指示可通过所述访问接口描述模型访问的业务对象;
向所述数据请求端发送所述业务对象的实例之前,还包括:
将所述业务对象的实例转化为所述业务对象返回格式。
15.如权利要求10所述的装置,其特征在于,所述第一数据表描述模型和所述第二数据表描述模型中还包括统计信息,所述统计信息用于估算每个查询命令对应的查询结果数目;
所述处理单元还用于:
在生成所述第一查询命令和所述第二查询命令之后,根据所述统计信息,估算所述第一查询命令和所述第二查询命令分别对应的查询结果数目,当确定所述第一查询命令为查询结果数目最小的查询命令时,依次执行所述第一查询命令和所述第二查询命令,其中,所述第一结果集中包括关联字段对应的数据;
所述处理单元采用如下方式根据所述第二数据表描述模型包括的第二数据库的地址信息以及所述第二查询命令,查询所述第二数据库得到第二结果集:
根据所述关联字段对应的数据以及所述第二查询命令,生成第三查询命令;
根据所述第二数据库的地址信息以及所述第三查询命令,查询所述第二数据库,得到所述第二结果集。
16.如权利要求15所述的装置,其特征在于,所述第一查询命令和所述第二查询命令为多条;
所述处理单元还用于:
在根据所述统计信息,估算所述第一查询命令和所述第二查询命令分别对应的查询结果数目之后,将所述查询结果数目大于预设阈值的所述第一查询命令和所述第二查询命令确定为复杂查询命令,将所述查询结果数目大于预设阈值的所述第一查询命令和所述第二查询命令确定为简单查询命令,将所述复杂查询命令推入第一线程池排队等待,并将所述简单查询命令推入第二线程池排队等待。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811390507.7A CN111209319B (zh) | 2018-11-21 | 2018-11-21 | 一种数据服务方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811390507.7A CN111209319B (zh) | 2018-11-21 | 2018-11-21 | 一种数据服务方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111209319A CN111209319A (zh) | 2020-05-29 |
CN111209319B true CN111209319B (zh) | 2022-03-29 |
Family
ID=70787666
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811390507.7A Active CN111209319B (zh) | 2018-11-21 | 2018-11-21 | 一种数据服务方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111209319B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111813405A (zh) * | 2020-06-29 | 2020-10-23 | 四川长虹电器股份有限公司 | 一种快速更新和发布目标数据接口的方法 |
CN112115122B (zh) * | 2020-09-18 | 2024-08-30 | 北京金山云网络技术有限公司 | 一种数据访问方法、装置及电子设备 |
CN112965723B (zh) * | 2021-04-01 | 2021-12-28 | 北京数易云服科技有限公司 | 一种对象数据库实现方法和虚拟对象数据库 |
CN113268507B (zh) * | 2021-05-26 | 2023-03-14 | 大箴(杭州)科技有限公司 | 数据库的数据读取系统及方法、装置、电子设备 |
CN113312390A (zh) * | 2021-06-01 | 2021-08-27 | 北京沃东天骏信息技术有限公司 | 业务数据调用方法、装置及存储介质和电子设备 |
CN114443704A (zh) * | 2021-12-20 | 2022-05-06 | 珠海格力电器股份有限公司 | 一种数据分析平台中通用数据模型的复用方法及装置 |
CN113946594B (zh) * | 2021-12-22 | 2022-07-12 | 昆仑智汇数据科技(北京)有限公司 | 一种工业多源异构数据的集成查询方法、装置及设备 |
CN114900557A (zh) * | 2022-03-30 | 2022-08-12 | 中国科学院上海微系统与信息技术研究所 | 一种面向物联网网关的异构设备数据的处理装置和方法 |
CN114780553B (zh) * | 2022-06-21 | 2022-09-06 | 昆仑智汇数据科技(北京)有限公司 | 一种基于工业数据模型的异构数据存储方法、装置及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101000618A (zh) * | 2006-12-25 | 2007-07-18 | 华为技术有限公司 | 建立无连接的数据编程模型的方法、装置及其应用 |
CN101067814A (zh) * | 2007-05-10 | 2007-11-07 | 浪潮集团山东通用软件有限公司 | 数据访问层Xml格式数据与关系数据间的映射转换方法 |
CN106886592A (zh) * | 2017-02-21 | 2017-06-23 | 北京航空航天大学 | 一种基于数据源服务的城市时空数据汇聚系统及方法 |
CN107045534A (zh) * | 2017-01-20 | 2017-08-15 | 中国航天系统科学与工程研究院 | 大数据环境下基于HBase的异构数据库在线交换与共享系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011123604A (ja) * | 2009-12-09 | 2011-06-23 | Toshiba Tec Corp | データベースシステム、サーバ装置、端末装置およびプログラム |
-
2018
- 2018-11-21 CN CN201811390507.7A patent/CN111209319B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101000618A (zh) * | 2006-12-25 | 2007-07-18 | 华为技术有限公司 | 建立无连接的数据编程模型的方法、装置及其应用 |
CN101067814A (zh) * | 2007-05-10 | 2007-11-07 | 浪潮集团山东通用软件有限公司 | 数据访问层Xml格式数据与关系数据间的映射转换方法 |
CN107045534A (zh) * | 2017-01-20 | 2017-08-15 | 中国航天系统科学与工程研究院 | 大数据环境下基于HBase的异构数据库在线交换与共享系统 |
CN106886592A (zh) * | 2017-02-21 | 2017-06-23 | 北京航空航天大学 | 一种基于数据源服务的城市时空数据汇聚系统及方法 |
Non-Patent Citations (2)
Title |
---|
基于Web Services的语义异构数据集成设计与实现;黄浩等;《计算机工程与设计》;20091016(第19期);第4406-4410页 * |
流域水环境风险评估预警系统中间件的设计与实现;李朝奎等;《环境工程技术学报》;20120920(第05期);第396-402页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111209319A (zh) | 2020-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111209319B (zh) | 一种数据服务方法及装置 | |
US9990362B2 (en) | Profiling data with location information | |
CN105786808B (zh) | 一种用于分布式执行关系型计算指令的方法与设备 | |
US20150293994A1 (en) | Enhanced graph traversal | |
US10904316B2 (en) | Data processing method and apparatus in service-oriented architecture system, and the service-oriented architecture system | |
US8527532B2 (en) | Transforming function calls for interaction with hierarchical data structures | |
CN107038161B (zh) | 一种用于过滤数据的设备及方法 | |
US20140310278A1 (en) | Creating global aggregated namespaces for storage management | |
US20200050450A1 (en) | Method and Apparatus for Executing Instruction | |
CN112513836B (zh) | 结构化记录检索方法、计算系统和计算机可读介质 | |
CN109766337B (zh) | 树形结构数据的存储方法、电子设备、存储介质及系统 | |
US10372766B2 (en) | Method and system for generating a virtual thing for a machine-to-machine application and a method and system for providing a result of a virtual thing to a machine-to-machine application | |
CN110609839A (zh) | 区块链数据处理的方法、装置、设备及可读存储介质 | |
CN111723161A (zh) | 一种数据处理方法、装置及设备 | |
CN110020243A (zh) | 物联网数据的查询方法、装置、物联网服务器和存储介质 | |
US20150293971A1 (en) | Distributed queries over geometric objects | |
CN117708164A (zh) | 基于并行处理数据库的数据存储方法、装置和设备 | |
CN116383211A (zh) | 车联网数据处理方法、装置及电子设备、存储介质 | |
US20230124100A1 (en) | Low-Latency Data Management And Query Processing Cross-Optimizations | |
CN112541001A (zh) | 数据查询方法、装置、存储介质及设备 | |
CN116186022A (zh) | 表单处理方法、装置、分布式表单系统和计算机存储介质 | |
CN105025459B (zh) | 一种资源通告方法和系统、本地cse以及远程cse | |
CN112671867A (zh) | 一种融合多种交通方式的出行一体化云服务系统及方法 | |
WO2019169962A1 (zh) | 多业务共享召回模式下的业务召回方法、系统和服务器 | |
WO2021197327A1 (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220216 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Applicant after: Huawei Cloud Computing Technologies Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |