数据的查询方法及查询装置的制造方法

文档序号:9432556阅读:260来源:国知局
数据的查询方法及查询装置的制造方法
【技术领域】
[0001]本申请涉及数据库技术领域,尤其涉及一种数据的查询方法及数据的查询装置。
【背景技术】
[0002]随着社交网络和移动互联网的发展,数据呈现爆炸式增长,甚至过去数年里产生的数据量超越了以往数千年的数据量。数据成为企业最宝贵的资源,而数据挖掘、数据分析等技术的不断深入,使得企业决策越来越依赖于数据,全面、完整的数据将为决策提供更好的支持。
[0003]企业可获得的数据往往涉及到各种不同的存储引擎和存储模式,例如,既有RDS(Relat1nal Database Service,关系型数据库服务)类型的数据库,包括Oracle、MySQL、OceanBase等存储引擎,也有KV (Key-Value,键值)类型的数据库,包括Tair、Hbase等存储引擎。如果某个上层业务需要查询所有这些数据库,则实现起来有一定难度。
[0004]现有技术中,微软的Polybase技术通过将PDW(ParalIel Data Warehouse,并彳丁数据仓库)中的数据导出或导入到Hadoop,可以实现关联查询Hadoop数据和关系型数据库,从而能够部分实现上述功能。但是,将数据导入导出Hadoop仍需要相当的工作量,并且不能够适配所有的存储引擎(如Tai^OceanBase等并不适用),影响了数据查询的完整性。

【发明内容】

[0005]有鉴于此,本申请提供一种数据的查询方法,所述数据保存在至少两个不同的数据库中,所述方法包括:
[0006]接收基于业务模型的查询请求;所述业务模型包括业务元素;
[0007]根据业务模型与存储模型的转换规则,将所述查询请求转换为匹配于所查询数据库的执行方式;所述存储模型包括所查询数据库的属性信息;所述转换规则包括业务元素与所查询数据库中属性的对应关系;
[0008]按照所述执行方式访问对应的数据库。
[0009]本申请还提供了一种数据的查询装置,所述数据保存在至少两个不同的数据库中,所述装置包括:
[0010]请求接收单元,用于接收基于业务模型的查询请求;所述业务模型包括业务元素;
[0011]转换单元,用于根据业务模型与存储模型的转换规则,将所述查询请求转换为匹配于所查询数据库的执行方式;所述存储模型包括所查询数据库的属性信息;所述转换规则包括业务元素与所查询数据库中属性的对应关系;
[0012]数据库访问单元,用于按照所述执行方式访问对应的数据库。
[0013]由以上技术方案可见,本申请的实施例通过业务模型和存储模型间的转换规则,将用户以业务模型为基础的查询请求转换为针对所查询数据库的执行方式,不仅避免了数据在不同数据库间的导入导出,而且能够对适用的数据库没有限制;同时在用户层面屏蔽了底层数据库的差异,提高了查询的便利性和完备性。
【附图说明】
[0014]图1是本申请实施例中业务模型的一种元数据描述示例图;
[0015]图2是本申请实施例中数据的查询方法的流程图;
[0016]图3是计算设备的一种硬件结构图;
[0017]图4是本申请实施例中一种数据的查询装置的逻辑结构图。
【具体实施方式】
[0018]本申请的实施例提出一种新的数据的查询方法来解决现有技术中存在的问题。本申请的实施例中,按照业务需求,总结业务特征,生成面向业务的业务模型;依据被访问数据库的存储引擎、数据存储结构、存储模式等因素生成存储模型;在业务模型和存储模型之间建立转换规则,将用户从业务角度所做的查询转换为匹配于被访问数据库的查询指令,从而能够适配与任何类型的数据库;并且对用户而言只需关注于业务本身,屏蔽了底层的数据差异。
[0019]业务模型通常由业务人员分析业务的具体场景,将完成业务场景所需的各项信息作为业务元素,并且结合业务特征总结这些业务元素之间的关联关系,从而生成描述业务场景的业务模型。
[0020]在一种实施方式中,可以采用以元数据格式来描述业务场景的业务模型。例如,一个业务模型可以用如下元数据描述,其示意图请参见图1:
[0021]业务元素子集:定义该业务模型中包括的各项业务元素;
[0022]约束子集:定义业务元素的约束信息、和/或业务元素之间的约束信息;如业务元素的值域范围、某些业务元素不能同时使用等;
[0023]实例子集:定义业务元素的实例信息,即使用业务元素描述的实例是哪些;
[0024]流子集:定义数据流信息,即与业务元素相关的时序流程、动作等;
[0025]映射子集:定义本业务模型与其他业务模型的映射关系,包括与其他模型之间的关联、对应以及相互转换的情形。
[0026]以一种具体的业务场景——客户管理为例,总结业务特征抽象的业务模型——客户模型的元数据描述包括:
[0027]业务元素子集:客户编号、客户名称、客户类型、客户联系方式;
[0028]约束子集:客户编号、客户名称不能为空;客户类型为个人或机构二选一;
[0029]实例子集:客户模型的实例有个人客户和机构客户。
[0030]通过采用元数据语言,在更高的抽象层面统一了业务元素和业务模型的建模方法,提供了完整、共享、一致的业务元素和业务模型的视图。
[0031]本申请的实施例中,存储模型描述所查询数据库的数据存储,包括定义一个数据存储所需的必要信息,还可以包括各类实际存储引擎共性的信息。具体而言,存储模型包括所查询数据库的属性信息,还可以包括存储数据源名称、存储数据源类型、存储sharding(分片)模式和/或存储数据区名称。
[0032]所查询数据库的属性信息包括数据库中实体型所具有的属性;存储数据源名称包括用来建立到所查询数据库的连接所需的信息;存储数据源类型可以是所查询数据库的存储引擎等信息;存储sharding模式可以是读写分离、水平拆分等;存储数据区名称对关系型数据库可以是表,对KV存储可以是命名空间等。
[0033]可以根据具体的应用场景需要来确定存储模型中具体要包括哪些信息。例如,如果需要查询的所有数据库都采用同样的sharding模式、具有同样的存储数据源类型,则存储模型中可以不包括这两项。
[0034]存储模型可以人工生成,也可以由程序自动生成。
[0035]本申请实施例中的数据查询方法应用于所查询的数据保存在至少两个不同的数据库中的场景。这些数据库的不同是指对这些数据库做相同的查询时,其具体的实现方式不同,例如,可以是所采用的存储引擎不同,也可以是存储引擎相同而数据的组织形式不同。本实施例中,数据查询方法的流程如图2所示。
[0036]在步骤S210,接收基于业务模型的查询请求。
[0037]本实施例中,向用户提供基于业务模型的查询方式。由于业务模型以业务元素为基础,用户的查询请求中通常包括基于业务元素的查询条件。如前所述,业务模型是针对业务场景抽象而成的,基于业务模型的查询方式可以使得用户关注于业务需求本身,而不必关心底层不同数据库之间的差异。
[0038]查询请求的格式可以根据业务需求自行定义,也可以参照数据库的查询指令来定义。本实施例对此不作限定。
[0039]在一种实施方式中,可以在查询请求包括两种基于业务元素的查询条件:基于业务元素的存储获取条件和结果过滤条件。其中,存储获取条件用来作为查询条件,将查询请求转换为匹配于所查询数据库的执行方式;而结果过滤条件用来作为在结果中进行过滤的条件,在从各个数据库获得的访问结果中进行筛选(即,在步骤S230中获得的查询结果中进行筛选)。
[0040]例如,面向业务的查询请求可以以CQL(Cassandra Query Language,Cassandra查询语句)为载体,采用基于业务模型元数据的类sql (Structured Query Language,结构化查询语言)查询语言,来尽量完备、无歧义的描述查询语义。
[0041]一种可能的CQL语句如下:
[0042]SELECT [业务元素,业务模型]FROM [业务模型]
[0043]ID业务元素判断条件I [AND业务元素判断条件2]
[0044][WHERE业务元素判断条件3 [AND业务元素判断条件4]]
[0045]上述语句的含义为:在业务模型中查找符合业务元素判断条件1、业务元素判断条件2 (可选)、业务元素判断条件3 (可选)和业务元素判断条件4 (可选)的业务元素或业务模型。其中,业务元素判断条件I和业务元素判断条件2为存储获取条件,业务元素判断条件3和业务元素判断条件4为结果过滤条件。
[0046]在步骤S220,根据业务模型与存储模型的转换规则,将所述查询请求转换为匹配于所查询数据库的执行方式。
[0047]业务模型到存储模型之间的转换规则将业务模型中的业务元素与所查询数据库中存储的数据联系起来,并且将面向业务的查询请求转换为所查询面向数据库的查询指令,从而将从用户接收的查询请求转换为匹配于数据库的执行方式。
[0048]转换规则中包括业务元素与所查询数据库中属性的对应关系。例如,一个名称为CsCustomer的业务模型,包括业务元素UserType ;一个名称为cs_customer的存储模型,包括属性user_type ;则业务模型CsCustomer到存储模型cs_customer的转换规则可以是:「CsCustomer, UserType, cs_customer, user_type, oneToOneMapping」,含义为 Customer 业务模型中的UserType业务元素在cs_customer存储模型中的user_type属性字段里,这个业务元素与属性之间是一一映射的(即在数据库中是什么值,在业务模型里就是什么值)。在根据转换规则将查询请求转换为匹配于所查询数据库的执行方式时,会按照业务元素与属性的对应关系,将查询条件、或者还包括查询对象由业务元素描述转换为由数据库的属性描述。
[0049]根据具体的业务场景、所采用的业务模型和存储模型,转换规则中还可以包括将查询请求转换为对数据库访问指令所需的其他规则。例如,要查询的数据库采用不同存储引擎(如包括Oracle数据库和Tair数据库的情形),则转换规则中,还会包括所查询数据库的存储数据
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1