说明书一种业务数据查询方法及装置、数据库系统
技术领域
本发明涉及数据库技术领域,尤其涉及一种业务数据查询方法及装置、 数据库系统。
背景技术
商业智能(Business Intelligence,简称BI)又称商业智慧或商务智能, BI数据库凭借其优秀的数据库、联机分析处理(On-Line Analytical Processing, 简称OLAP)、数据挖掘等技术,可以有效地对业务数据进行查询、分析以及 多维展现等操作,从而可以帮助企业做出明智的业务经营决策。在实际应用 中,BI数据库通常会以列的方式存储数据(即列式数据库),从而可以满足 基于规则的分析型业务的数据快速查询的需求;然而,对于基于事件触发的 事务型业务的数据而言,通常要满足极高吞吐量查询需求,这就要求数据以 行的方式存储在BI数据库中(即行式数据库),显然,以列的方式存储数据 的BI数据库难以满足事务型业务的数据查询需求。
发明内容
本发明实施例公开了一种业务数据查询方法及装置、数据库系统,能够 满足事务型业务的数据查询需求。
本发明实施例第一方面公开一种业务数据查询方法,数据库内存中包括 列式缓冲区和行式缓冲区,所述列式缓冲区的列用于加载数据库的列数据, 所述行式缓冲区的行用于加载所述列式缓冲区的列数据或所述数据库的列数 据,所述方法包括:
当收到事务型业务系统发送的包括目标列标识和第一查询条件的事务型 业务数据查询请求时,检测是否存在所述目标列标识对应的行索引;
若存在所述目标列标识对应的行索引,以所述第一查询条件为依据,查 询所述行式缓冲区中所述行索引对应行内的所述目标列标识对应的列数据以 获得查询结果并返回给所述事务型业务系统。
在本发明实施例第一方面的第一种可能的实现方式中,若不存在所述目 标列标识对应的行索引,所述方法还包括:
检测所述列式缓冲区中是否加载所述目标列标识对应的列数据,若所述 列式缓冲区中加载所述目标列标识对应的列数据,从所述列式缓冲区中读取 所述目标列标识对应的列数据;
以及,将读取的所述目标列标识对应的列数据加载至所述行式缓冲区中 的行;
以及,建立所述目标列标识与所述行的行索引的对应关系,并执行所述 的以所述第一查询条件为依据,查询所述行式缓冲区中所述行索引对应行内 的目标列标识对应的列数据以获得查询结果并返回给所述事务型业务系统的 步骤。
结合本发明实施例第一方面的第一种可能的实现方式,在本发明实施例 第一方面的第二种可能的实现方式中,若所述列式缓冲区中未加载所述目标 列标识对应的列数据,所述将读取的所述目标列标识对应的列数据加载至所 述行式缓冲区中的行之前,所述方法还包括:
从所述数据库中读取所述目标列标识对应的列数据。
在本发明实施例第一方面的第三种可能的实现方式中,当收到事务型业 务系统发送的包括目标列标识和第一查询条件的事务型业务数据查询请求之 前,所述方法还包括:
当收到事务型业务系统发送的包括目标列标识的查询注册请求时,检测 所述行式缓冲区中是否加载所述目标列标识对应的列数据,若所述行式缓冲 区中未加载所述目标列标识对应的列数据,检测所述列式缓冲区中是否加载 所述目标列标识对应的列数据,若所述列式缓冲区中加载所述目标列标识对 应的列数据,从所述列式缓冲区中读取所述目标列标识对应的列数据;若所 述列式缓冲区中未加载所述目标列标识对应的列数据,从所述数据库中读取 所述目标列标识对应的列数据;
以及,将读取的所述目标列标识对应的列数据加载至所述行式缓冲区中 的行;
以及,建立所述目标列标识与所述行的行索引的对应关系。
结合本发明实施例第一方面的第一种至第三种中的任一种可能的实现方 式,在本发明实施例第一方面的第四种可能的实现方式中,所述行式缓冲区 包括若干个子缓冲区,每个所述子缓冲区包括长度相同的若干个行,并且每 个所述子缓冲区的行数目相同,所述若干个子缓冲区中排序相同的行共用同 一行索引;所述将读取的所述目标列标识对应的列数据加载至所述行式缓冲 区中的行包括:
将读取的所述目标列标识对应的列数据按照所述行式缓冲区中的所述子 缓冲区的行数目进行划分,并将划分得到的各部分列数据一一加载至任意一 个所述子缓冲区包括的各个行的相同位置中。
结合本发明实施例第一方面的第四种可能的实现方式,在本发明实施例 第一方面的第五种可能的实现方式中,所述以所述第一查询条件为依据,查 询所述行式缓冲区中所述行索引对应行内的目标列标识对应的列数据以获得 查询结果包括:
确定所述行式缓冲区中所述行索引对应的位于任意一个所述子缓冲区的 各个行;
以所述第一查询条件为依据,对所述行索引对应的位于任意一个所述子 缓冲区的各个行中相同位置加载的所述目标列标识对应的各部分列数据进行 查询,以获得查询结果。
结合本发明实施例第一方面的第一种或第二种可能的实现方式,在本发 明实施例第一方面的第六种可能的实现方式中,当收到分析型业务系统发送 的包括指定列标识和第二查询条件的分析型业务数据查询请求时,检测所述 列式缓冲区中是否加载所述指定列标识对应的列数据,若加载,以所述第二 查询条件为依据,查询所述列式缓冲区内所述指定列标识对应的列数据以获 得查询结果并返回给所述分析型业务系统。
结合本发明实施例第一方面的第六种可能的实现方式,在本发明实施例 第一方面的第七种可能的实现方式中,若所述列式缓冲区中未加载所述指定 列标识对应的列数据,所述方法还包括:
从所述数据库中读取所述指定列标识对应的列数据;
将读取的所述指定列标识对应的列数据加载至所述列式缓冲区的列,并 执行所述的以所述第二查询条件为依据,查询所述列式缓冲区内所述指定列 标识对应的列数据以获得查询结果并返回给所述分析型业务系统的步骤。
本发明实施例第二方面公开一种业务数据查询装置,数据库内存中包括 列式缓冲区和行式缓冲区,所述列式缓冲区的列用于加载数据库的列数据, 所述行式缓冲区的行用于加载所述列式缓冲区的列数据或所述数据库的列数 据,所述装置包括:
第一检测单元,用于当收到事务型业务系统发送的包括目标列标识和第 一查询条件的事务型业务数据查询请求时,检测是否存在所述目标列标识对 应的行索引;
第一查询单元,用于在所述第一检测单元检测存在所述目标列标识对应 的行索引时,以所述第一查询条件为依据,查询所述行式缓冲区中所述行索 引对应行内的所述目标列标识对应的列数据以获得查询结果,并输出给交互 单元;
所述交互单元,用于将所述第一查询单元获得的所述查询结果返回给所 述事务型业务系统。
在本发明实施例第二方面的第一种可能的实现方式中,所述装置还包括:
第二检测单元,用于在所述第一检测单元检测不存在所述目标列标识对 应的行索引时,检测所述列式缓冲区中是否加载所述目标列标识对应的列数 据;
第一读取单元,用于在所述第二检测单元检测所述列式缓冲区中加载所 述目标列标识对应的列数据时,从所述列式缓冲区中读取所述目标列标识对 应的列数据;
第一加载单元,用于将所述第一读取单元读取的所述目标列标识对应的 列数据加载至所述行式缓冲区中的行;
第一建立单元,用于建立所述目标列标识与所述行的行索引的对应关系, 并触发所述第一查询单元执行所述的以所述第一查询条件为依据,查询所述 行式缓冲区中所述行索引对应行内的所述目标列标识对应的列数据以获得查 询结果的操作。
结合本发明实施例第二方面的第一种可能的实现方式,在本发明实施例 第二方面的第二种可能的实现方式中,所述第一读取单元,还用于在所述第 二检测单元检测所述列式缓冲区中未加载所述目标列标识对应的列数据时, 从所述数据库中读取所述目标列标识对应的列数据。
在本发明实施例第二方面的第三种可能的实现方式中,所述第一检测单 元,还用于在收到事务型业务系统发送的包括目标列标识和第一查询条件的 事务型业务数据查询请求之前,当收到事务型业务系统发送的包括目标列标 识的查询注册请求时,检测所述行式缓冲区中是否加载所述目标列标识对应 的列数据;
第三检测单元,用于在所述第一检测单元检测所述行式缓冲区中未加载 所述目标列标识对应的列数据时,检测所述列式缓冲区中是否加载所述目标 列标识对应的列数据;
第二读取单元,用于在所述第三检测单元检测所述列式缓冲区中加载所 述目标列标识对应的列数据时,从所述列式缓冲区中读取所述目标列标识对 应的列数据;以及,还用于在所述第三检测单元检测所述列式缓冲区中未加 载所述目标列标识对应的列数据时,从所述数据库中读取所述目标列标识对 应的列数据;
第二加载单元,用于将所述第二读取单元读取的所述目标列标识对应的 列数据加载至所述行式缓冲区中的行;
第二建立单元,用于建立所述目标列标识与所述行的行索引的对应关系。
结合本发明实施例第二方面的第一种至第三种中的任一种可能的实现方 式,在本发明实施例第二方面的第四种可能的实现方式中,所述行式缓冲区 包括若干个子缓冲区,每个所述子缓冲区包括长度相同的若干个行,并且每 个所述子缓冲区的行数目相同,所述若干个子缓冲区中排序相同的行共用同 一行索引;其中,将读取的所述目标列标识对应的列数据加载至所述行式缓 冲区中的行的方式具体为:将读取的所述目标列标识对应的列数据按照所述 行式缓冲区中的所述子缓冲区的行数目进行划分,并将划分得到的各部分列 数据一一加载至任意一个所述子缓冲区包括的各个行的相同位置中。
结合本发明实施例第二方面的第四种可能的实现方式,在本发明实施例 第二方面的第五种可能的实现方式中,所述第一查询单元包括:
确定子单元,用于确定所述行式缓冲区中所述行索引对应的位于任意一 个所述子缓冲区的各个行;
查询子单元,用于以所述第一查询条件为依据,对所述行索引对应的位 于任意一个所述子缓冲区的各个行中相同位置加载的所述目标列标识对应的 部分列数据进行查询,以获得查询结果。
结合本发明实施例第二方面的第一种或第二种可能的实现方式,在本发 明实施例第二方面的第六种可能的实现方式中,所述第一检测单元,还用于 当收到分析型业务系统发送的包括指定列标识和第二查询条件的分析型业务 数据查询请求时,检测所述列式缓冲区中是否加载所述指定列标识对应的列 数据;
所述第一查询单元,还用于在所述第一检测单元检测所述列式缓冲区中 加载所述指定列标识对应的列数据时,以所述第二查询条件为依据,查询所 述列式缓冲区内所述指定列标识对应的列数据以获得查询结果并输出给所述 交互单元。
结合本发明实施例第二方面的第六种可能的实现方式,在本发明实施例 第二方面的第七种可能的实现方式中,
所述第一读取单元,还用于在所述第一检测单元检测所述列式缓冲区中 未加载所述指定列标识对应的列数据时,从所述数据库中读取所述指定列标 识对应的列数据;
所述第一加载单元,还用于将所述第一读取单元读取的所述指定列标识 对应的列数据加载至所述列式缓冲区的列,并触发所述第一查询单元执行所 述的以所述第二查询条件为依据,查询所述列式缓冲区内所述指定列标识对 应的列数据以获得查询结果并输出给所述交互单元的操作。
本发明实施例第三方面公开一种数据库系统,包括本发明实施例第二方 面公开的任一种所述业务数据查询装置、数据库内存和数据库,其中,所述 数据库内存中包括列式缓冲区和行式缓冲区,所述列式缓冲区的列用于加载 所述数据库的列数据,所述行式缓冲区的行用于加载所述列式缓冲区的列数 据或所述数据库的列数据。
本发明实施例中,数据库内存中不仅包括用于加载数据库的列数据列式 缓冲区,还包括用于加载列式缓冲区的列数据或数据库的列数据的行式缓冲 区,这样当收到事务型业务系统发送的包括目标列标识和第一查询条件的事 务型业务数据查询请求时,如果检测存在目标列标识对应的行索引,可以以 第一查询条件为依据,直接查询行式缓冲区中该行索引对应行内的目标列标 识对应的列数据以获得查询结果并返回给事务型业务系统,从而可以在以列 的方式存储数据的数据库中实现事务型业务数据的查询。此外,本发明实施 例无需针对分析型业务和事务型业务去创建两套数据库,可以省去了采用两 套数据库时需要维护的两套数据库之间的数据同步,从而可以降低数据库维 护的难度,而且省去了采用两套数据库的方式还可以有效地降低数据库的系 统复杂度。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需 要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明 的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提 下,还可以根据这些附图获得其他的附图。
图1是本发明实施例公开的一种业务数据查询的网络架构示意图;
图2是本发明实施例公开的一种业务数据查询装置的结构示意图;
图3是本发明实施例公开的一种业务数据查询方法的流程示意图;
图4是本发明实施例公开的另一种业务数据查询方法的流程示意图;
图5是本发明实施例公开的另一种业务数据查询方法的流程示意图;
图6是本发明实施例公开的另一种业务数据查询装置的结构示意图;
图7是本发明实施例公开的又一种业务数据查询装置的结构示意图;
图8是本发明实施例公开的一种数据库系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行 清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不 是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出 创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种业务数据查询方法及装置、数据库系统,可以 在以列的方式存储数据的数据库中实现事务型业务数据的查询,此外,无需 针对分析型业务和事务型业务去创建两套数据库,可以省去了采用两套数据 库时需要维护的两套数据库之间的数据同步,从而可以降低数据库维护的难 度,而且省去了采用两套数据库的方式还可以有效地降低数据库的系统复杂 度。以下分别进行详细说明。
为了更好的理解本发明实施例,下面先对本发明实施例公开的一种业务 数据查询的网络架构进行描述。
请参阅图1,图1是本发明实施例公开的一种业务数据查询的网络架构示 意图。如图1所示,该业务数据查询的网络架构可以包括业务系统和BI数据库 系统,其中,业务系统可以包括分析型业务系统和事务型业务系统,其中, 分析型业务系统也被业界称为联机分析处理(Online Analytics Proess,OLAP) 系统,事务型业务系统也被业界称为联机事务处理(Online Transation Proess, OLTP)。数据库系统可以包括数据库以及预先为数据库创建的位于数据库内 存中的列式缓冲区和行式缓冲区。本发明实施例中,数据库可以包括以列的 方式存储数据的BI数据库(也被业界称为BI数据仓库)或者其他以列的方式 存储数据的数据库,例如VFP、dBASE、oracle以及SQL等,本发明实施例不 作限定。
分析型业务系统主要用于进行分析型业务的数据查询,这类分析型业务 的数据查询通常要满足快速查询的需求,要求数据以列的方式存储;而事务 型业务系统主要用于进行事务型业务的数据查询,这类事务型业务的数据查 询通常要满足极高吞吐量查询的需求,要求数据以行的方式存储。其中,分 析型业务的数据查询通常是指基于用户自定义的条件,对数据进行过滤、分 段统计等查询操作,以供用户研究数据的规律,从而可以探索用户的行为特 征,为指定市场策略、营销规则提供基础;而事务型业务的数据查询是指当 用户的某种事件发生时(例如到达预先定义的区域、呼叫预先定义的号码、 访问符合预先定义的规则的网页等),可以给出合适的响应特征。如图1所示, 数据库中可以存储列1~列8等列数据;列式缓冲区可以采用列式存储体系架构 进行列数据(如列1、列3、列5)的存储,主要适合于快速查询;行式缓冲区 采用行式存储体系架构进行列数据(如列3、列6、列8)的存储,主要适合于 极高吞吐量查询。
在图1所示的业务数据查询的网络架构中,一种业务数据查询操作过程可 以包括以下步骤:
(1)、当执行分析型业务数据查询时,分析型业务系统会发送包括指定 列标识和第二查询条件的分析型业务数据查询请求给数据库系统,数据库系 统可以直接检测数据库内存的列式缓冲区中是否加载指定列标识对应的列数 据,若加载,以第二查询条件为依据,查询列式缓冲区内指定列标识对应的 列数据以获得查询结果并返回给上述分析型业务系统。
(2)、当数据库系统检测数据库内存的列式缓冲区中未加载指定列标识 对应的列数据时,数据库系统可以从数据库中读取指定列标识对应的列数据, 并将读取的指定列标识对应的列数据加载至列式缓冲区的列。在此基础上, 可以以第二查询条件为依据,查询列式缓冲区内指定列标识对应的列数据以 获得查询结果并返回给分析型业务系统。必要时,数据库系统可以将列式缓 冲区内最久没有使用的列数据退出列式缓冲区。
(3)、当执行查询注册请求时,事务型业务系统可以发送包括目标列标 识的查询注册请求给数据库系统,数据库系统可以检测是否存在目标列标识 对应的行索引,若存在,说明已声明了行式缓冲区中已加载目标列标识对应 的列数据。
(4)、若数据库系统检测不存在目标列标识对应的行索引,说明行式缓 冲区中未加载目标列标识对应的列数据。进一步地,数据库系统可以检测列 式缓冲区中是否加载目标列标识对应的列数据,若检测列式缓冲区中加载目 标列标识对应的列数据,那么数据库系统可以从列式缓冲区中读取目标列标 识对应的列数据,并将读取的目标列标识对应的列数据加载至行式缓冲区中 的行(即列-行转换存储)。更进一步地,数据库系统可以建立目标列标识与该 行(即行式缓冲区中加载了目标列标识对应的列数据的行)的行索引的对应 关系,以便于下一次根据该对应关系可以检测是否存在目标列标识对应的行 索引。
(5)、若数据库系统检测列式缓冲区中未加载目标列标识对应的列数据, 那么数据库系统可以从数据库中读取目标列标识对应的列数据,并将读取的 目标列标识对应的列数据加载至行式缓冲区中的行(即列-行转换存储)。更进 一步地,数据库系统可以建立目标列标识与该行(即行式缓冲区中加载了目 标列标识对应的列数据的行)的行索引的对应关系,以便于下一次根据该对 应关系可以检测是否存在目标列标识对应的行索引。
(6)、当执行事务型业务数据查询请求时,事务型业务系统可以发送包 括目标列标识和第一查询条件的事务型业务数据查询请求给数据库系统,相 应地,数据库系统可以检测是否存在目标列标识对应的行索引,若存在,以 第一查询条件为依据,查询数据库内存的行式缓冲区中行索引对应行内的目 标列标识对应的列数据以获得查询结果并返回给上述事务型业务系统。
其中,通过实施上述步骤1)~步骤6),可以在以列的方式存储数据的数 据库中实现事务型业务数据的查询,此外,无需针对分析型业务和事务型业 务去创建两套数据库,可以省去了采用两套数据库时需要维护的两套数据库 之间的数据同步,从而可以降低数据库维护的难度,而且省去了采用两套数 据库的方式还可以有效地降低数据库的系统复杂度。
在图1所示的业务数据查询的网络架构中,数据库内存的行式缓冲区中, 行式缓冲区可以被格式化成若干行,每一个行的长度相同(长度以字节为单 位),此时,里面没有放任何的列数据。举例来说,当行式缓冲区被格式化成 长度相同的3行时,在某些列数据被加载至行式缓冲区的行之后,行式缓冲区 的结构可以如下表1所示:
表1
列1 列2 列3 列4 列5
列1 列2 列3 列4 列5
列1 列2 列3 列4 列5
如表1所示,数据库系统可以列1数据按照行式缓冲区中的行数目(即3行) 进行划分,得到固定长度的各部分列1数据,并将划分得到的各部分列1数据 一一加载至行式缓冲区的各个行的相同位置中(即实现列1数据的列-行转换); 数据库系统可以列2数据按照行式缓冲区中的行数目(即3行)进行划分,得 到固定长度的各部分列2数据,并将划分得到的各部分列2数据一一加载至行 式缓冲区的各个行的相同位置中(即实现列2数据的列-行转换);……;以及, 数据库系统可以列5数据按照行式缓冲区中的行数目(即3行)进行划分,得 到固定长度的各部分列5数据,并将划分得到的各部分列5数据一一加载至行 式缓冲区的各个行的相同位置中(即实现列5数据的列-行转换)。
本发明实施例中,举例来说,由表1可以看出,列1数据划分成的各部分 列1数据的长度相同,且列1数据划分成的各部分列1数据的在行式缓冲区的各 个行的位置也相同;列2数据划分成的各部分列2数据的长度相同,且列2数据 划分成的各部分列2数据的在行式缓冲区的各个行的位置也相同;但各部分列 1数据的长度与各部分列2数据的长度可以不同,也即是说,不同列数据划分 的长度可能不同,但同一个列数据在不同行上的长度,保存位置相同。
本发明实施例中,以表1所示的行式缓冲区的结构为例,该行式缓冲区中 的部分列数据可能会因为长时间未被使用等原因,被数据库系统退出行式缓 冲区,而新的列数据可能继续被数据库系统加载至行式缓冲区,此时,举例 来说,行式缓冲区的结构可以如下表2所示:
表2
列1 列3 列4 列5 列6 列7 列8
列1 列3 列4 列5 列6 列7 列8
列1 列3 列4 列5 列6 列7 列8
如表2所示,假设列2数据长时间未被使用,那么数据库系统可以将列2数 据退出行式缓冲区,而列6数据~列8数据作为新的列数据可以被数据库系统加 载至行式缓冲区。
本发明实施例中,行式缓冲区中一些被数据库系统退出的列数据所占用 的各行位置可以被重复利用,以实现加载新的列数据。以表2所示的行式缓冲 区的结构为例,数据库系统将列2数据退出行式缓冲区之后,列2数据所占用 的各行位置可以被重复利用,以实现加载列9数据,此时,行式缓冲区的结构 可以如下表3所示:
表3
列1 列9 列3 列4 列5 列6 列7 列8
列1 列9 列3 列4 列5 列6 列7 列8
列1 列9 列3 列4 列5 列6 列7 列8
本发明实施例中,当行式缓冲区的行没有可加载空间时,数据库系统可 以为行式缓冲区创建若干个子缓冲区,其中,每个子缓冲区包括长度相同的 若干个行,并且每个子缓冲区的行数目相同,并且若干个子缓冲区中排序相 同的行共用同一行索引,也即是说,若干个子缓冲区中排序相同的行是同一 行。如表4和表5所示,表4和表5是数据库系统为行式缓冲区创建的2个子缓冲 区,其中,表4和表5所示的子缓冲区均包括3个行;其中,表4的子缓冲区中 的第1行与表5的子缓冲区中的第1行为同一行,表4的子缓冲区中的第2行与表 5的子缓冲区中的第2行为同一行,表4的子缓冲区中的第3行与表5的子缓冲区 中的第3行为同一行。
表4
列1 列9 列3 列4 列5 列6 列7 列8 列10
列1 列9 列3 列4 列5 列6 列7 列8 列10
列1 列9 列3 列4 列5 列6 列7 列8 列10
表5
列11 列12 列13
列11 列12 列13
列11 列12 列13
举例来说,如表4所示,列1数据被划分成的长度相同的3部分列1数据, 且列1数据被划分成的3部分列1数据一一加载在表4所示的子缓冲区包括的各 个行的相同位置中;如表5所示,列12数据被划分成的长度相同的3部分列12 数据,且列12数据被划分成的3部分列12数据一一加载在表5所示的子缓冲区 包括的各个行的相同位置中。
本发明实施例中,当行式缓冲区中的子缓冲区较多时,数据库系统可以 执行子缓冲区的合并,并增加行式缓冲区的行的长度,如表6所示:
表6
列1 列9 列3 列4 列5 列6 …… 列n
列1 列9 列3 列4 列5 列6 …… 列n
列1 列9 列3 列4 列5 列6 …… 列n
本发明实施例中,对于一些无法固定长度的列数据,无法直接加载到上 述的行式缓冲区中,这种情况下数据库系统可以在行式缓冲区中各个行的相 同位置上需要增加一个固定长度的位置,用于存储无法固定长度的列数据的 索引信息(即每个列数据的起始存储位置),然后将无法固定长度的列数据存 储到列式缓冲区。这种情况下,当查询这种列数据时,可以根据该列数据的 索引信息从列式缓冲区中快速定位到该列数据。
本发明实施例中,在图1所示的一种业务数据查询的网络架构下,可以在 以列的方式存储数据的数据库中实现事务型业务数据的查询,此外,无需针 对分析型业务和事务型业务去创建两套数据库,可以省去了采用两套数据库 时需要维护的两套数据库之间的数据同步,从而可以降低数据库维护的难度, 而且省去了采用两套数据库的方式还可以有效地降低数据库的系统复杂度。
请参阅图2,图2是本发明实施例公开的一种业务数据查询装置的结构示 意图。其中,图2所描述的一种业务数据查询装置可以用于执行上述数据库系 统的功能。本发明实施例中,图2所描述的业务数据查询装置可以物理形态上 可以是数据库系统。本发明实施例中,以数据库为BI数据库为例进行描述, 当数据库是其他类型的数据库时,不影响本发明实施例的实现。如图2所示, 该业务数据查询装置可以包括输入模块201、处理器202、输出模块203、存储 器204以及BI数据库内存模块205等组件。其中,这些组件可以通过一条或多 条通信总线进行通信。本领域技术人员可以理解,图2中示出的业务数据查询 装置的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星 型结构,还可以包括比图2所示的更多或更少的部件,或者组合某些部件,或 者不同的部件布置。
本发明实施例中,输入模块201可以是有线或无线接收机,用于接收业务 系统(如分析型业务系统和事务型业务系统)发送的业务数据查询请求,并 输出给处理器202;而输出模块203可以是有线或无线发射机,用于将处理器 202查询到的业务数据发送给业务系统。
本发明实施例中,存储器204可以是高速RAM存储器,也可以是非不稳定 的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器204可选 的还可以是至少一个位于远离前述处理器202的存储装置。如图2所示,作为 一种计算机物理存储介质的存储器204中可以包括操作系统、软件程序以及BI 数据库以及其他存储信息,本发明实施例不作限定。
本发明实施例中,BI数据库内存模块205作为位于一种BI数据库与外界接 口之间的缓冲器,可以用于创建列式缓冲区和行式缓冲区,其中,列式缓冲 区采用列式存储体系架构进行列数据的存储,主要适合于快速查询;而行式 缓冲区采用行式存储体系架构进行列数据的存储,主要适合于极高吞吐量查 询。
在图2所示的业务数据查询装置中,处理器202可以用于调用存储器204中 存储的软件程序以执行以下操作:
当通过接收模块201收到事务型业务系统发送的包括目标列标识和第一 查询条件的事务型业务数据查询请求时,检测存储器204中是否存在目标列标 识对应的行索引,若存在,以第一查询条件为依据,查询BI数据库内存模块 205的行式缓冲区中该行索引对应行内的目标列标识对应的列数据以获得查 询结果并通过输出模块203返回给事务型业务系统;其中,目标列标识对应的 列数据预先从BI数据库或列式缓冲区加载至行式缓冲区的行;
当通过接收模块201收到分析型业务系统发送的包括指定列标识和第二 查询条件的分析型业务数据查询请求时,检测BI数据库内存模块205的列式缓 冲区中是否加载指定列标识对应的列数据,若加载,以第二查询条件为依据, 查询列式缓冲区内指定列标识对应的列数据以获得查询结果并通过输出模块 203返回给分析型业务系统;其中,指定列标识对应的列数据预先从BI数据库 加载至列式缓冲区的列。
作为一种可选的实施方式,处理器202调用存储器204中存储的软件程序 还可以执行以下操作:
若检测BI数据库内存模块205的列式缓冲区中未加载指定列标识对应的 列数据,从BI数据库中读取指定列标识对应的列数据;
以及,将读取的指定列标识对应的列数据加载至列式缓冲区的列。
作为一种可选的实施方式,处理器202调用存储器204中存储的软件程序 还可以执行以下操作:
若检测存储器204中不存在目标列标识对应的行索引,检测列式缓冲区中 是否加载目标列标识对应的列数据,若列式缓冲区中加载目标列标识对应的 列数据,从列式缓冲区中读取目标列标识对应的列数据;若列式缓冲区中未 加载目标列标识对应的列数据,从BI数据库中读取目标列标识对应的列数据;
以及,将读取的目标列标识对应的列数据加载至行式缓冲区中的行;
以及,建立目标列标识与该行(即行式缓冲区中加载目标列标识对应的 列数据的行)的行索引的对应关系并存储至存储器204,以及并执行上述的以 第一查询条件为依据,查询BI数据库内存模块205的行式缓冲区中行索引对应 行内的目标列标识对应的列数据以获得查询结果并通过输出模块203返回给 事务型业务系统的操作。
作为一种可选的实施方式,处理器202调用存储器204中存储的软件程序 还可以执行以下操作:
当通过接收模块201收到事务型业务系统发送的包括目标列标识和第一 查询条件的事务型业务数据查询请求之前,若通过接收模块201收到事务型业 务系统发送的包括目标列标识的查询注册请求,检测BI数据库内存模块205的 行式缓冲区中是否加载目标列标识对应的列数据,若行式缓冲区中未加载目 标列标识对应的列数据,检测列式缓冲区中是否加载目标列标识对应的列数 据,若列式缓冲区中加载目标列标识对应的列数据,从列式缓冲区中读取目 标列标识对应的列数据;若列式缓冲区中未加载目标列标识对应的列数据, 从BI数据库中读取所述目标列标识对应的列数据;
以及,将读取的目标列标识对应的列数据加载至行式缓冲区中的行;
以及,建立目标列标识与该行(即行式缓冲区中加载目标列标识对应的 列数据的行)的行索引的对应关系并存储至存储器204,以及并执行上述的以 第一查询条件为依据,查询BI数据库内存模块205的行式缓冲区中行索引对应 行内的目标列标识对应的列数据以获得查询结果并通过输出模块203返回给 事务型业务系统的操作。
在一个实施例中,行式缓冲区可以包括若干个子缓冲区,每个子缓冲区 包括长度相同的若干个行,并且每个子缓冲区的行数目相同,该若干个子缓 冲区中排序相同的行共用同一行索引,即该若干个子缓冲区中排序相同的行 是同一行;相应地,处理器202将读取的目标列标识对应的列数据加载至行式 缓冲区中的缓存行的方式具体可以为:
将读取的目标列标识对应的列数据按照行式缓冲区中的子缓冲区的行数 目进行划分,并将划分得到的各部分列数据一一加载至任意一个子缓冲区包 括的各个行的相同位置中。
在一个实施例中,处理器202以第一查询条件为依据,查询BI数据库内存 的行式缓冲区中行索引对应行内的目标列标识对应的列数据以获得查询结果 的方式具体为:
确定BI数据库内存的行式缓冲区中行索引对应的位于任意一个子缓冲区 的各个行;
以第一查询条件为依据,对行索引对应的位于任意一个子缓冲区的各个 行中相同位置加载的目标列标识对应的部分列数据进行查询,以获得查询结 果。
本发明实施例中,通过实施图2所示的一种业务数据查询装置,可以在以 列的方式存储数据的BI数据库中实现事务型业务数据的查询,此外,无需针 对分析型业务和事务型业务去创建两套BI数据库,可以省去了采用两套BI数 据库时需要维护的两套BI数据库之间的数据同步,从而可以降低BI数据库维 护的难度,而且省去了采用两套BI数据库的方式还可以有效地降低BI数据库 的系统复杂度。
请参阅图3,图3是本发明实施例公开的一种业务数据查询方法的流程示 意图。本发明实施例中,以数据库为BI数据库为例进行描述,当数据库是其 他类型的数据库时,不影响本发明实施例的实现。如图3所示,该业务数据查 询方法可以包括以下步骤:
301、BI数据库系统识别收到的业务数据查询请求,当业务数据查询请求 为分析型业务系统发送的包括指定列标识和第二查询条件的分析型业务数据 查询请求时,执行步骤302;当业务数据查询请求为事务型业务系统发送的包 括目标列标识和第一查询条件的事务型业务数据查询请求时,执行步骤306。
在一个实施例中,BI数据库系统可以采用不同的端口分别接收分析型业 务系统发送的分析型业务数据查询请求和事务型业务系统发送的事务型业务 数据查询请求,进一步地,BI数据库系统可以根据接收到业务数据查询请求 的端口来识别业务数据查询请求是分析型业务系统发送的包括指定列标识和 第二查询条件的分析型业务数据查询请求,还是事务型业务系统发送的包括 目标列标识和第一查询条件的事务型业务数据查询请求。
在另一个实施例中,分析型业务系统发送的分析型业务数据查询请求和 事务型业务系统发送的事务型业务数据查询请求可以分别携带不同的业务类 型标识,进一步地,BI数据库系统可以根据接收到的业务数据查询请求携带 的业务类型标识来识别业务数据查询请求是分析型业务系统发送的包括指定 列标识和第二查询条件的分析型业务数据查询请求,还是事务型业务系统发 送的包括目标列标识和第一查询条件的事务型业务数据查询请求。
本发明实施例中,上述的指定列标识和目标列标识也可以称为客户标识, 因为在BI数据库中,每一个客户的所有数据可以作为一个列数据进行存储。
本发明实施例中,上述的第一查询条件、第二查询条件主要用于进行列 数据的过滤、统计等查询操作。
302、BI数据库系统检测BI数据库内存的列式缓冲区中是否加载指定列标 识对应的列数据,若未加载,执行步骤303;若加载,执行步骤304~305。
303、BI数据库系统从BI数据库中读取指定列标识对应的列数据,并将读 取的指定列标识对应的列数据加载至列式缓冲区的列,并执行步骤304~305。
其中,BI数据库系统可以预先将指定列标识对应的列数据从BI数据库加 载至列式缓冲区的列。
304、BI数据库系统以第二查询条件为依据,查询列式缓冲区内指定列标 识对应的列数据以获得查询结果。
举例来说,假设BI数据库中创建了下面的表6和表7:
表6(表名为t1)
字段名(即列标识) 类型
attr0 User Id
attr1 Amount
attr2 Amount
attr3 Amount
attr4 Amount
attr5 Integer
attr6 Integer
attr7 Integer
…… ……
表7(表名为t2):
字段名(即列标识) 类型
attr0 User Id
f1 Amount
f2 Amount
f3 Amount
f4 Short
f5 Integer
f6 Integer
f7 Integer
f8 Dict
…… ……
其中,上述的表6和表7可以用文件方式存储,如表8所示:
表8
文件名(即列标识) 文件类型
t1.attr0 列式数据文件
t1.attr1 列式数据文件
t1.attr2 列式数据文件
t1.attr3 列式数据文件
t1.attr4 列式数据文件
t1.attr5 列式数据文件
t1.attr6 列式数据文件
t1.attr7 列式数据文件
…… ……
t2.attr0 列式数据文件
t2.f1 列式数据文件
t2.f2 列式数据文件
t2.f3 列式数据文件
t2.f4 列式数据文件
t2.f5 列式数据文件
…… ……
在BI数据库中创建了表6和表7的基础上,进一步假设BI数据库系统收到 分析型业务系统发送的分析型业务数据查询请求中可以包括以下第二查询条 件,即:
select avg(t1.attr1)from t1,t2where t1.attr0=t2.attr0and t2.f1>30.5
其中,t1.attr1、t1.attr0、t2.attr0以及t2.f1等都表示指定列标识,在SQL 语法中上述的第二查询条件的含义是在t1和t2关联时,若t2.f1对应的列数据大 于30.5,则对t1.attr1对应的列数据求均值。
相应地,BI数据库系统可以检测BI数据库内存的列式缓冲区中是否加载 t1.attr1、t1.attr0、t2.attr0以及t2.f1对应的列数据,若加载,以第二查询条件为 依据,查询列式缓冲区内t1.attr1、t1.attr0、t2.attr0以及t2.f1对应的列数据以获 得查询结果;若未加载,BI数据库系统从BI数据库中读取t1.attr1、t1.attr0、 t2.attr0以及t2.f1对应的列数据,并将读取的列数据加载至列式缓冲区的列,以 及以第二查询条件为依据,查询列式缓冲区内t1.attr1、t1.attr0、t2.attr0以及t2.f1 对应的列数据以获得查询结果。
本发明实施例中,上述的查询结果可以包括流量值、销售金额、销售指 标、交易数据等各种业务数据。
305、BI数据库系统返回查询结果给分析型业务系统,并结束本流程。
306、BI数据库系统检测是否存在目标列标识对应的行索引,若检测不存 在目标列标识对应的行索引,执行步骤307;若检测存在目标列标识对应的行 索引,执行步骤312~313。
307、BI数据库系统检测列式缓冲区中是否加载目标列标识对应的列数 据,若列式缓冲区中加载目标列标识对应的列数据,执行步骤308;若列式缓 冲区中未加载目标列标识对应的列数据,执行步骤309。
308、BI数据库系统从列式缓冲区中读取目标列标识对应的列数据,并执 行步骤310。
309、BI数据库系统从BI数据库中读取目标列标识对应的列数据,并执行 步骤310。
310、BI数据库系统将读取的目标列标识对应的列数据加载至行式缓冲区 中的行。
本发明实施例中,行式缓冲区可以包括若干个子缓冲区,每个子缓冲区 包括长度相同的若干个行,并且每个子缓冲区的行数目相同,该若干个子缓 冲区中排序相同的行共用同一行索引,也即是说,若干个子缓冲区中排序相 同的行为同一行。
相应地,上述步骤310中,BI数据库系统将读取的目标列标识对应的列数 据加载至行式缓冲区中的行的方式具体可以为:
BI数据库系统将读取的目标列标识对应的列数据按照所述行式缓冲区中 的所述子缓冲区的行数目进行划分,并将划分得到的各部分列数据一一加载 至任意一个所述子缓冲区包括的各个行的相同位置中。
本发明实施例中,在BI数据库中创建了表6和表7的基础上,进一步假设 BI数据库系统收到事务型业务系统发送的事务型业务数据查询请求中可以包 括以下第一查询条件,即:
select t1.attr0,t1.attr1,t1.attr2,t1.attr3,t1.attr4,t1.attr5,t1.attr6,t2.f6,t2.f7, t2.f8,t2.f9from t1,t2where t1.attr0=t2.attr0and t1.attr0=?
其中,t1.attr0,t1.attr1,t1.attr2,t1.attr3,t1.attr4,t1.attr5,t1.attr6,t2.f6,t2.f7, t2.f8,t2.f9等表示目标列标识,在SQL语法中上述的第一查询条件的含义在t1、 t2等关联时,选择t1.attr0,t1.attr1,t1.attr2,t1.attr3,t1.attr4,t1.attr5,t1.attr6,t2.f6, t2.f7,t2.f8,t2.f9等目标列标识对应的列数据。
相应地,BI数据库系统可以检测是否存在t1.attr0,t1.attr1,t1.attr2,t1.attr3, t1.attr4,t1.attr5,t1.attr6,t2.f6,t2.f7,t2.f8,t2.f9等目标列标识对应的行索引,若 存在t1.attr0,t2.f6对应的行索引,说明t1.attr0,t2.f6对应的列数据已经加载到了 行式缓冲区的行;若不存在t1.attr1,t1.attr2,t1.attr3,t1.attr4,t1.attr5,t1.attr6, t2.f7,t2.f8,t2.f9对应的行索引,说明t1.attr1,t1.attr2,t1.attr3,t1.attr4,t1.attr5, t1.attr6,t2.f7,t2.f8,t2.f9对应的列数据未加载到行式缓冲区的行,相应地,BI 数据库系统可以检测列式缓冲区中是否加载t1.attr1,t1.attr2,t1.attr3,t1.attr4, t1.attr5,t1.attr6,t2.f7,t2.f8,t2.f9对应的列数据,若列式缓冲区中加载t1.attr1, t1.attr2,t1.attr3,t1.attr4,t1.attr5,t1.attr6,t2.f7,t2.f8,t2.f9对应的列数据,BI数据 库系统可以从列式缓冲区中读取t1.attr1,t1.attr2,t1.attr3,t1.attr4,t1.attr5, t1.attr6,t2.f7,t2.f8,t2.f9对应的列数据;若列式缓冲区中未加载t1.attr1,t1.attr2, t1.attr3,t1.attr4,t1.attr5,t1.attr6,t2.f7,t2.f8,t2.f9对应的列数据,那么BI数据库 系统可以从BI数据库中读取t1.attr1,t1.attr2,t1.attr3,t1.attr4,t1.attr5,t1.attr6, t2.f7,t2.f8,t2.f9对应的列数据;进一步地,BI数据库系统可以将读取的t1.attr1, t1.attr2,t1.attr3,t1.attr4,t1.attr5,t1.attr6,t2.f7,t2.f8,t2.f9对应的列数据加载至行 式缓冲区中的行(即列-行转换)。
本发明实施例中,如果行式缓冲区的存储空间足够,但因为内存碎片导 致空间不够,可以考虑整理内存。或者,如果行式缓冲区的存储空间不足, 可以为行式缓冲区新建子缓冲区。当行式缓冲区的子缓冲区的数量较多(如 超过3个),则执行合并子缓冲区的操作。
311、BI数据库系统建立目标列标识与行式缓冲区中加载目标列标识对应 的列数据的行的行索引的对应关系,并执行312。
本发明实施例中,BI数据库系统建立目标列标识与行式缓冲区中加载目 标列标识对应的列数据的行的行索引的对应关系之后,该对应关系可以用于 声明目标列标识对应的列数据已经加载至行式缓冲区的行,这样下次BI数据 库系统可以依据该对应关系来检测存在目标列标识对应的行索引。
312、BI数据库系统以第一查询条件为依据,查询BI数据库内存的行式缓 冲区中该行索引对应行内的目标列标识对应的列数据以获得查询结果。
本发明实施例中,上述步骤312中,BI数据库系统以第一查询条件为依据, 查询BI数据库内存的行式缓冲区中该行索引对应行内的目标列标识对应的列 数据以获得查询结果的方式具体可以为:
BI数据库系统可以确定BI数据库内存的行式缓冲区中该行索引对应的位 于任一个子缓冲区的各个行,以第一查询条件为依据,对该行索引对应的位 于任一个子缓冲区的各个行中相同位置加载的目标列标识对应的各部分列数 据进行查询,以获得查询结果。
举例来说,本发明实施例中,当t1.attr0,t1.attr1,t1.attr2,t1.attr3,t1.attr4, t1.attr5,t1.attr6,t2.f6,t2.f7,t2.f8,t2.f9对应的列数据都加载至行式缓冲区的行 之后,假如行索引为13800138000,那么BI数据库系统可以确定BI数据库内存 的行式缓冲区中行索引13800138000对应的位于任一个子缓冲区的各个行,进 而可以以第一查询条件为依据,对行索引13800138000对应的位于任一个子缓 冲区的各个行中相同位置加载的t1.attr0,t1.attr1,t1.attr2,t1.attr3,t1.attr4, t1.attr5,t1.attr6,t2.f6,t2.f7,t2.f8,t2.f9对应的各部分列数据进行查询,以获得查 询结果。
313、BI数据库系统返回查询结果给事务型业务系统,并结束本流程。
本发明实施例中,通过实施图3所示的一种业务数据查询方法,可以在以 列的方式存储数据的BI数据库中实现事务型业务数据的查询,此外,无需针 对分析型业务和事务型业务去创建两套BI数据库,可以省去了采用两套BI数 据库时需要维护的两套BI数据库之间的数据同步,从而可以降低BI数据库维 护的难度,而且省去了采用两套BI数据库的方式还可以有效地降低BI数据库 的系统复杂度。
请参阅图4,图4是本发明实施例公开的另一种业务数据查询方法的流程 示意图。本发明实施例中,以数据库为BI数据库为例进行描述,当数据库是 其他类型的数据库时,不影响本发明实施例的实现。其中,在图4所描述的业 务数据查询方法中,BI数据库系统可以预先接收事务型业务系统发送的查询 注册请求,并响应该查询注册请求将未加载至BI数据库内存的行式缓冲区中 的列数据预先加载至行式缓冲区,以便于后续事务型业务系统执行事务型业 务数据查询。如图4所示,该业务数据查询方法可以包括以下步骤:
401、BI数据库系统在收到事务型业务系统发送的包括目标列标识的查询 注册请求时,检测BI数据库内存的行式缓冲区中是否加载目标列标识对应的 列数据,如果行式缓冲区中未加载目标列标识对应的列数据,执行步骤402; 如果行式缓冲区中已加载目标列标识对应的列数据,执行步骤407。
举例来说,BI数据库系统收到的事务型业务系统发送的包括目标列标识 的查询注册请求可以为:
regist query 910as“select t1.attr0,t1.attr1,t1.attr2,t1.attr3,t1.attr4,t1.attr5, t1.attr6,t2.f6,t2.f7,t2.f8,t2.f9from t1,t2where t1.attr0=t2.attr0and t1.attr0=?”
其中,t1.attr0,t1.attr1,t1.attr2,t1.attr3,t1.attr4,t1.attr5,t1.attr6,t2.f6,t2.f7, t2.f8,t2.f9表示目标列标识,BI数据库系统可以检测BI数据库内存的行式缓冲 区中是否加载t1.attr0,t1.attr1,t1.attr2,t1.attr3,t1.attr4,t1.attr5,t1.attr6,t2.f6, t2.f7,t2.f8,t2.f9对应的列数据,如果否,执行步骤402;如果是,执行步骤407。
402、BI数据库系统检测列式缓冲区中是否加载目标列标识对应的列数 据,若列式缓冲区中加载目标列标识对应的列数据,执行步骤403;若列式缓 冲区中未加载目标列标识对应的列数据,执行步骤404。
403、BI数据库系统从列式缓冲区中读取目标列标识对应的列数据,并执 行步骤405。
404、BI数据库系统从BI数据库中读取目标列标识对应的列数据,并执行 步骤405。
405、BI数据库系统将读取的目标列标识对应的列数据加载至行式缓冲区 中的行。
本发明实施例中,行式缓冲区可以包括若干个子缓冲区,每个子缓冲区 包括长度相同的若干个行,并且每个子缓冲区的行数目相同,该若干个子缓 冲区中排序相同的行共用同一行索引,也即是说,若干个子缓冲区中排序相 同的行为同一行。
相应地,上述步骤405中,BI数据库系统将读取的目标列标识对应的列数 据加载至行式缓冲区中的行的方式具体可以为:
BI数据库系统将读取的目标列标识对应的列数据按照所述行式缓冲区中 的所述子缓冲区的行数目进行划分,并将划分得到的各部分列数据一一加载 至任意一个所述子缓冲区包括的各个行的相同位置中。
406、BI数据库系统建立目标列标识与行的行索引的对应关系。
407、BI数据库系统返回查询注册结果给事务型业务系统。
其中,上述的查询注册结果也称为元数据,主要用于指示行式缓冲区中 已加载目标列标识对应的列数据。
408、BI数据库系统识别收到的业务数据查询请求,当业务数据查询请求 为分析型业务系统发送的包括指定列标识和第二查询条件的分析型业务数据 查询请求时,执行步骤409;当业务数据查询请求为事务型业务系统发送的包 括目标列标识和第一查询条件的事务型业务数据查询请求时,执行步骤413。
409、BI数据库系统检测BI数据库内存的列式缓冲区中是否加载指定列标 识对应的列数据,若未加载,执行步骤410;若加载,执行步骤411~412。
410、BI数据库系统从BI数据库中读取指定列标识对应的列数据,并将读 取的指定列标识对应的列数据加载至列式缓冲区的列,并执行步骤411~412。
411、BI数据库系统以上述的第二查询条件为依据,查询列式缓冲区内指 定列标识对应的列数据以获得查询结果。
412、BI数据库系统返回查询结果给分析型业务系统。
413、BI数据库系统检测是否存在目标列标识对应的行索引,若检测不存 在目标列标识对应的行索引,结束本流程;若检测存在目标列标识对应的行 索引,执行步骤414-415。
其中,BI数据库系统可以根据上述步骤406建立的对应关系检测是否存在 目标列标识对应的行索引。
414、BI数据库系统以上述的第一查询条件为依据,查询BI数据库内存的 行式缓冲区中该行索引对应行内的目标列标识对应的列数据以获得查询结 果。
本发明实施例中,上述步骤414中,BI数据库系统以第一查询条件为依据, 查询BI数据库内存的行式缓冲区中该行索引对应行内的目标列标识对应的列 数据以获得查询结果的方式具体可以为:
BI数据库系统可以确定BI数据库内存的行式缓冲区中该行索引对应的位 于任一个子缓冲区的各个行,以第一查询条件为依据,对该行索引对应的位 于任一个子缓冲区的各个行中相同位置加载的目标列标识对应的各部分列数 据进行查询,以获得查询结果。
415、BI数据库系统返回查询结果给事务型业务系统。
本发明实施例中,通过实施图4所示的一种业务数据查询方法,可以在以 列的方式存储数据的BI数据库中实现事务型业务数据的查询,此外,无需针 对分析型业务和事务型业务去创建两套BI数据库,可以省去了采用两套BI数 据库时需要维护的两套BI数据库之间的数据同步,从而可以降低BI数据库维 护的难度,而且省去了采用两套BI数据库的方式还可以有效地降低BI数据库 的系统复杂度。
请参阅图5,图5是本发明实施例公开的一种业务数据查询装置的结构示 意图。其中,图5所示的业务数据查询装置用于执行上述的数据库系统的功能。 本发明实施例中,数据库内存中包括列式缓冲区和行式缓冲区,列式缓冲区 的列用于加载数据库的列数据,而行式缓冲区的行用于加载列式缓冲区的列 数据或数据库的列数据。本发明实施例中,数据库可以包括以列的方式存储 数据的BI数据库(也被业界称为BI数据仓库)或者其他以列的方式存储数据 的数据库,例如VFP、dBASE、oracle以及SQL等,本发明实施例不作限定。 如图5所示,该业务数据查询装置可以包括:
第一检测单元501,用于当收到事务型业务系统发送的包括目标列标识和 第一查询条件的事务型业务数据查询请求时,检测是否存在目标列标识对应 的行索引;
第一查询单元502,用于在第一检测单元501检测存在目标列标识对应的 行索引时,以第一查询条件为依据,查询行式缓冲区中该行索引对应行内的 目标列标识对应的列数据以获得查询结果,并输出给交互单元503;
交互单元503,用于将第一查询单元502获得的查询结果返回给事务型业 务系统。
请一并参阅图6,图6是本发明实施例公开的另一种业务数据查询装置的 结构示意图。其中,图6所示的业务数据查询装置是由图5所示的业务数据查 询装置进行优化得到的。与图5所示的业务数据查询装置相比,图6所示的业 务数据查询装置还可以包括:
第二检测单元504,用于在第一检测单元501检测不存在目标列标识对应 的行索引时,检测列式缓冲区中是否加载目标列标识对应的列数据;
第一读取单元505,用于在第二检测单元504检测列式缓冲区中加载目标 列标识对应的列数据时,从列式缓冲区中读取目标列标识对应的列数据;或 者,在第二检测单元504检测列式缓冲区中未加载目标列标识对应的列数据 时,从数据库中读取目标列标识对应的列数据;
第一加载单元506,用于将第一读取单元505读取的目标列标识对应的列 数据加载至行式缓冲区中的行;
第一建立单元507,用于建立目标列标识与该行(即行式缓冲区中加载目 标列标识对应的列数据的行)的行索引的对应关系,并触发第一查询单元502 执行的以第一查询条件为依据,查询行式缓冲区中该行索引对应行内的目标 列标识对应的列数据以获得查询结果的操作。
在图6所描述的业务数据查询装置中,行式缓冲区可以包括若干个子缓冲 区,每个子缓冲区包括长度相同的若干个行,并且每个子缓冲区的行数目相 同,该若干个子缓冲区中排序相同的行共用同一行索引,即该若干个子缓冲 区中排序相同的行为同一行;其中,第一加载单元506将读取的目标列标识对 应的列数据加载至行式缓冲区中的行的方式具体可以为:第一加载单元506将 读取的目标列标识对应的列数据按照行式缓冲区中的子缓冲区的行数目进行 划分,并将划分得到的各部分列数据一一加载至任意一个子缓冲区包括的各 个行的相同位置中。
相应地,在图6所描述的业务数据查询装置中,第一查询单元502包括:
确定子单元5021,用于确定行式缓冲区中该行索引对应的位于任意一个 子缓冲区的各个行;
查询子单元5022,用于以第一查询条件为依据,对该行索引对应的位于 任意一个子缓冲区的各个行中相同位置加载的目标列标识对应的部分列数据 进行查询,以获得查询结果。
本发明实施例中,在图6所描述的业务数据查询装置中:
第一检测单元501,还用于当收到分析型业务系统发送的包括指定列标识 和第二查询条件的分析型业务数据查询请求时,检测列式缓冲区中是否加载 指定列标识对应的列数据;
第一查询单元502,还用于在第一检测单元501检测列式缓冲区中加载指 定列标识对应的列数据时,以第二查询条件为依据,查询列式缓冲区内指定 列标识对应的列数据以获得查询结果并输出给交互单元503;具体地,确定子 单元5021可以确定列式缓冲区内指定列标识对应的列数据,查询子单元5022 可以以第二查询条件为依据,查询确定子单元5021确定出的列式缓冲区内指 定列标识对应的列数据以获得查询结果并输出给交互单元503;
第一读取单元505,还用于在第一检测单元501检测列式缓冲区中未加载 指定列标识对应的列数据时,从数据库中读取指定列标识对应的列数据;
第一加载单元506,还用于将第一读取单元505读取的指定列标识对应的 列数据加载至列式缓冲区的列,并触发第一查询单元502执行以第二查询条件 为依据,查询列式缓冲区内指定列标识对应的列数据以获得查询结果并输出 给交互单元503的操作。
请一并参阅图7,图7是本发明实施例公开的另一种业务数据查询装置的 结构示意图。其中,图7所示的业务数据查询装置是由图5所示的业务数据查 询装置进行优化得到的。与图5所示的业务数据查询装置相比,图7所示的业 务数据查询装置还可以包括第三检测单元508、第二读取单元509、第二加载 单元510和第二建立单元511,其中:
第一检测单元501,还用于在收到事务型业务系统发送的包括目标列标识 和第一查询条件的事务型业务数据查询请求之前,当收到事务型业务系统发 送的包括目标列标识的查询注册请求时,检测行式缓冲区中是否加载目标列 标识对应的列数据;
第三检测单元508,用于在第一检测单元501检测行式缓冲区中未加载目 标列标识对应的列数据时,检测列式缓冲区中是否加载目标列标识对应的列 数据;
第二读取单元509,用于在第三检测单元509检测列式缓冲区中加载目标 列标识对应的列数据时,从列式缓冲区中读取目标列标识对应的列数据;以 及,还用于在第三检测单元508检测列式缓冲区中未加载目标列标识对应的列 数据时,从数据库中读取目标列标识对应的列数据;
第二加载单元510,用于将第二读取单元509读取的目标列标识对应的列 数据加载至行式缓冲区中的行;
第二建立单元511,用于建立目标列标识与该行(即行式缓冲区中加载目 标列标识对应的列数据的行)的行索引的对应关系。
相应地,第一检测单元501当收到事务型业务系统发送的包括目标列标识 和第一查询条件的事务型业务数据查询请求时,可以检测第二建立单元511建 立的对应关系中是否存在目标列标识对应的行索引。
在图7所描述的业务数据查询装置中,行式缓冲区可以包括若干个子缓冲 区,每个子缓冲区包括长度相同的若干个行,并且每个子缓冲区的行数目相 同,该若干个子缓冲区中排序相同的行共用同一行索引,即该若干个子缓冲 区中排序相同的行为同一行;其中,第二加载单元510将读取的目标列标识对 应的列数据加载至行式缓冲区中的行的方式具体为:第二加载单元510将读取 的目标列标识对应的列数据按照行式缓冲区中的子缓冲区的行数目进行划 分,并将划分得到的各部分列数据一一加载至任意一个子缓冲区包括的各个 行的相同位置中。
相应地,在图7所描述的业务数据查询装置中,第一查询单元502包括:
确定子单元5021,用于确定行式缓冲区中该行索引对应的位于任意一个 子缓冲区的各个行;
查询子单元5022,用于以第一查询条件为依据,对该行索引对应的位于 任意一个子缓冲区的各个行中相同位置加载的目标列标识对应的部分列数据 进行查询,以获得查询结果。
本发明实施例中,在图7所描述的业务数据查询装置中:
第一检测单元501,还用于当收到分析型业务系统发送的包括指定列标识 和第二查询条件的分析型业务数据查询请求时,检测列式缓冲区中是否加载 指定列标识对应的列数据;
第一查询单元502,还用于在第一检测单元501检测列式缓冲区中加载指 定列标识对应的列数据时,以第二查询条件为依据,查询列式缓冲区内指定 列标识对应的列数据以获得查询结果并输出给交互单元503;具体地,确定子 单元5021可以确定列式缓冲区内指定列标识对应的列数据,查询子单元5022 可以以第二查询条件为依据,查询确定子单元5021确定出的列式缓冲区内指 定列标识对应的列数据以获得查询结果并输出给交互单元503;
第二读取单元509,还用于在第一检测单元501检测列式缓冲区中未加载 指定列标识对应的列数据时,从数据库中读取指定列标识对应的列数据;
第二加载单元510,还用于将第二读取单元505读取的指定列标识对应的 列数据加载至列式缓冲区的列,并触发第一查询单元502执行以第二查询条件 为依据,查询列式缓冲区内指定列标识对应的列数据以获得查询结果并输出 给交互单元503的操作。
本发明实施例中,通过实施图5~图7所示的业务数据查询装置,可以在以 列的方式存储数据的数据库中实现事务型业务数据的查询,此外,无需针对 分析型业务和事务型业务去创建两套数据库,可以省去了采用两套数据库时 需要维护的两套数据库之间的数据同步,从而可以降低数据库维护的难度, 而且省去了采用两套数据库的方式还可以有效地降低数据库的系统复杂度。
请参阅图8,图8是本发明实施例公开的一种数据库系统的结构示意图。 如图8所示,该数据库系统可以包括业务数据查询装置801、数据库内存802和 数据库803等组件,其中,业务数据查询装置801、BI数据库内存802和数据库 803等组件可以通过总线互联;其中,业务数据查询装置801的功能、结构可 以和图5~图7任一种业务数据查询装置的功能、结构相同,本发明实施例不作 赘述。其中,数据库内存802中可以包括列式缓冲区和行式缓冲区,列式缓冲 区的列用于加载数据库803的列数据,行式缓冲区的行用于加载列式缓冲区的 列数据或数据库803的列数据。本发明实施例中,数据库803可以包括以列的 方式存储数据的BI数据库(也被业界称为BI数据仓库)或者其他以列的方式 存储数据的数据库,例如VFP、dBASE、oracle以及SQL等,本发明实施例不 作限定
本发明实施例中,实施图8所描述的系统,可以在以列的方式存储数据的 数据库中实现事务型业务数据的查询,此外,无需针对分析型业务和事务型 业务去创建两套数据库,可以省去了采用两套数据库时需要维护的两套数据 库之间的数据同步,从而可以降低数据库维护的难度,而且省去了采用两套 数据库的方式还可以有效地降低数据库的系统复杂度。
以上对本发明实施例公开的网络架构、装置、方法以及系统进行了详细 介绍,为了更好地体现本发明所带来的效果,下面将本发明和一些可选方案 进行对比,对比结果如表9所示:
表9
本发明实施例的方法中的步骤可以根据实际需要进行顺序调整、合并和 删减。
本发明实施例终端或设备中的单元或子单元可以根据实际需要进行合 并、划分和删减。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步 骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可 读存储介质中,存储介质包括只读存储器(Read-Only Memory,ROM)、随机 存储器(Random Access Memory,RAM)、可编程只读存储器(Programmable Read-only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、一次可编程只读存储器(One-time Programmable Read-Only Memory,OTPROM)、电子抹除式可复写只读存储器 (Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只读光 盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储器、磁盘 存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其 他介质。
以上对本发明实施例公开的业务数据查询方法及装置、数据库系统进行 了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述, 以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对 于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围 上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。