CN104537030B - 一种业务数据查询方法及装置、数据库系统 - Google Patents
一种业务数据查询方法及装置、数据库系统 Download PDFInfo
- Publication number
- CN104537030B CN104537030B CN201410804281.6A CN201410804281A CN104537030B CN 104537030 B CN104537030 B CN 104537030B CN 201410804281 A CN201410804281 A CN 201410804281A CN 104537030 B CN104537030 B CN 104537030B
- Authority
- CN
- China
- Prior art keywords
- column
- row
- buffering area
- mark
- line
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种业务数据查询方法及装置、数据库系统,该方法的特点是数据库内存中包括列式缓冲区和行式缓冲区,所述列式缓冲区的列用于加载数据库的列数据,所述行式缓冲区的行用于加载所述列式缓冲区的列数据或所述数据库的列数据,当收到事务型业务系统发送的包括目标列标识和第一查询条件的事务型业务数据查询请求时,检测是否存在所述目标列标识对应的行索引;若存在所述目标列标识对应的行索引,以所述第一查询条件为依据,查询所述行式缓冲区中所述行索引对应行内的所述目标列标识对应的列数据以获得查询结果并返回给所述事务型业务系统。实施本发明实施例可以满足事务型业务的数据查询需求。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及一种业务数据查询方法及装置、数据库系统。
背景技术
商业智能(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.attr0andt1.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)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
以上对本发明实施例公开的业务数据查询方法及装置、数据库系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (17)
1.一种业务数据查询方法,其特征在于,数据库内存中包括列式缓冲区和行式缓冲区,所述列式缓冲区的列用于加载数据库的列数据,所述行式缓冲区的行用于加载所述列式缓冲区的列数据或所述数据库的列数据,所述方法包括:
当收到事务型业务系统发送的包括目标列标识和第一查询条件的事务型业务数据查询请求时,检测是否存在所述目标列标识对应的行索引;
若存在所述目标列标识对应的行索引,以所述第一查询条件为依据,查询所述行式缓冲区中所述行索引对应行内的所述目标列标识对应的列数据以获得查询结果并返回给所述事务型业务系统。
2.根据权利要求1所述的方法,其特征在于,若不存在所述目标列标识对应的行索引,所述方法还包括:
检测所述列式缓冲区中是否加载所述目标列标识对应的列数据,若所述列式缓冲区中加载所述目标列标识对应的列数据,从所述列式缓冲区中读取所述目标列标识对应的列数据;
以及,将读取的所述目标列标识对应的列数据加载至所述行式缓冲区中的行;
以及,建立所述目标列标识与所述行的行索引的对应关系,并执行所述的以所述第一查询条件为依据,查询所述行式缓冲区中所述行索引对应行内的目标列标识对应的列数据以获得查询结果并返回给所述事务型业务系统的步骤。
3.根据权利要求2所述的方法,其特征在于,若所述列式缓冲区中未加载所述目标列标识对应的列数据,所述将读取的所述目标列标识对应的列数据加载至所述行式缓冲区中的行之前,所述方法还包括:
从所述数据库中读取所述目标列标识对应的列数据。
4.根据权利要求1所述的方法,其特征在于,当收到事务型业务系统发送的包括目标列标识和第一查询条件的事务型业务数据查询请求之前,所述方法还包括:
当收到事务型业务系统发送的包括目标列标识的查询注册请求时,检测所述行式缓冲区中是否加载所述目标列标识对应的列数据,若所述行式缓冲区中未加载所述目标列标识对应的列数据,检测所述列式缓冲区中是否加载所述目标列标识对应的列数据,若所述列式缓冲区中加载所述目标列标识对应的列数据,从所述列式缓冲区中读取所述目标列标识对应的列数据;若所述列式缓冲区中未加载所述目标列标识对应的列数据,从所述数据库中读取所述目标列标识对应的列数据;
以及,将读取的所述目标列标识对应的列数据加载至所述行式缓冲区中的行;
以及,建立所述目标列标识与所述行的行索引的对应关系。
5.根据权利要求2、3或4所述的方法,其特征在于,所述行式缓冲区包括若干个子缓冲区,每个所述子缓冲区包括长度相同的若干个行,并且每个所述子缓冲区的行数目相同,所述若干个子缓冲区中排序相同的行共用同一行索引;所述将读取的所述目标列标识对应的列数据加载至所述行式缓冲区中的行包括:
将读取的所述目标列标识对应的列数据按照所述行式缓冲区中的所述子缓冲区的行数目进行划分,并将划分得到的各部分列数据一一加载至任意一个所述子缓冲区包括的各个行的相同位置中。
6.根据权利要求5所述的方法,其特征在于,所述以所述第一查询条件为依据,查询所述行式缓冲区中所述行索引对应行内的目标列标识对应的列数据以获得查询结果包括:
确定所述行式缓冲区中所述行索引对应的位于任意一个所述子缓冲区的各个行;
以所述第一查询条件为依据,对所述行索引对应的位于任意一个所述子缓冲区的各个行中相同位置加载的所述目标列标识对应的各部分列数据进行查询,以获得查询结果。
7.根据权利要求2或3所述的方法,其特征在于,
当收到分析型业务系统发送的包括指定列标识和第二查询条件的分析型业务数据查询请求时,检测所述列式缓冲区中是否加载所述指定列标识对应的列数据,若加载,以所述第二查询条件为依据,查询所述列式缓冲区内所述指定列标识对应的列数据以获得查询结果并返回给所述分析型业务系统。
8.根据权利要求7所述的方法,其特征在于,若所述列式缓冲区中未加载所述指定列标识对应的列数据,所述方法还包括:
从所述数据库中读取所述指定列标识对应的列数据;
将读取的所述指定列标识对应的列数据加载至所述列式缓冲区的列,并执行所述的以所述第二查询条件为依据,查询所述列式缓冲区内所述指定列标识对应的列数据以获得查询结果并返回给所述分析型业务系统的步骤。
9.一种业务数据查询装置,其特征在于,数据库内存中包括列式缓冲区和行式缓冲区,所述列式缓冲区的列用于加载数据库的列数据,所述行式缓冲区的行用于加载所述列式缓冲区的列数据或所述数据库的列数据,所述装置包括:
第一检测单元,用于当收到事务型业务系统发送的包括目标列标识和第一查询条件的事务型业务数据查询请求时,检测是否存在所述目标列标识对应的行索引;
第一查询单元,用于在所述第一检测单元检测存在所述目标列标识对应的行索引时,以所述第一查询条件为依据,查询所述行式缓冲区中所述行索引对应行内的所述目标列标识对应的列数据以获得查询结果,并输出给交互单元;
所述交互单元,用于将所述第一查询单元获得的所述查询结果返回给所述事务型业务系统。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
第二检测单元,用于在所述第一检测单元检测不存在所述目标列标识对应的行索引时,检测所述列式缓冲区中是否加载所述目标列标识对应的列数据;
第一读取单元,用于在所述第二检测单元检测所述列式缓冲区中加载所述目标列标识对应的列数据时,从所述列式缓冲区中读取所述目标列标识对应的列数据;
第一加载单元,用于将所述第一读取单元读取的所述目标列标识对应的列数据加载至所述行式缓冲区中的行;
第一建立单元,用于建立所述目标列标识与所述行的行索引的对应关系,并触发所述第一查询单元执行所述的以所述第一查询条件为依据,查询所述行式缓冲区中所述行索引对应行内的所述目标列标识对应的列数据以获得查询结果的操作。
11.根据权利要求10所述的装置,其特征在于:
所述第一读取单元,还用于在所述第二检测单元检测所述列式缓冲区中未加载所述目标列标识对应的列数据时,从所述数据库中读取所述目标列标识对应的列数据。
12.根据权利要求9所述的装置,其特征在于:
所述第一检测单元,还用于在收到事务型业务系统发送的包括目标列标识和第一查询条件的事务型业务数据查询请求之前,当收到事务型业务系统发送的包括目标列标识的查询注册请求时,检测所述行式缓冲区中是否加载所述目标列标识对应的列数据;
第三检测单元,用于在所述第一检测单元检测所述行式缓冲区中未加载所述目标列标识对应的列数据时,检测所述列式缓冲区中是否加载所述目标列标识对应的列数据;
第二读取单元,用于在所述第三检测单元检测所述列式缓冲区中加载所述目标列标识对应的列数据时,从所述列式缓冲区中读取所述目标列标识对应的列数据;以及,还用于在所述第三检测单元检测所述列式缓冲区中未加载所述目标列标识对应的列数据时,从所述数据库中读取所述目标列标识对应的列数据;
第二加载单元,用于将所述第二读取单元读取的所述目标列标识对应的列数据加载至所述行式缓冲区中的行;
第二建立单元,用于建立所述目标列标识与所述行的行索引的对应关系。
13.根据权利要求10、11或12所述的装置,其特征在于,所述行式缓冲区包括若干个子缓冲区,每个所述子缓冲区包括长度相同的若干个行,并且每个所述子缓冲区的行数目相同,所述若干个子缓冲区中排序相同的行共用同一行索引;其中,将读取的所述目标列标识对应的列数据加载至所述行式缓冲区中的行的方式具体为:将读取的所述目标列标识对应的列数据按照所述行式缓冲区中的所述子缓冲区的行数目进行划分,并将划分得到的各部分列数据一一加载至任意一个所述子缓冲区包括的各个行的相同位置中。
14.根据权利要求13所述的装置,其特征在于,所述第一查询单元包括:
确定子单元,用于确定所述行式缓冲区中所述行索引对应的位于任意一个所述子缓冲区的各个行;
查询子单元,用于以所述第一查询条件为依据,对所述行索引对应的位于任意一个所述子缓冲区的各个行中相同位置加载的所述目标列标识对应的部分列数据进行查询,以获得查询结果。
15.根据权利要求10或11所述的装置,其特征在于,
所述第一检测单元,还用于当收到分析型业务系统发送的包括指定列标识和第二查询条件的分析型业务数据查询请求时,检测所述列式缓冲区中是否加载所述指定列标识对应的列数据;
所述第一查询单元,还用于在所述第一检测单元检测所述列式缓冲区中加载所述指定列标识对应的列数据时,以所述第二查询条件为依据,查询所述列式缓冲区内所述指定列标识对应的列数据以获得查询结果并输出给所述交互单元。
16.根据权利要求15所述的装置,其特征在于:
所述第一读取单元,还用于在所述第一检测单元检测所述列式缓冲区中未加载所述指定列标识对应的列数据时,从所述数据库中读取所述指定列标识对应的列数据;
所述第一加载单元,还用于将所述第一读取单元读取的所述指定列标识对应的列数据加载至所述列式缓冲区的列,并触发所述第一查询单元执行所述的以所述第二查询条件为依据,查询所述列式缓冲区内所述指定列标识对应的列数据以获得查询结果并输出给所述交互单元的操作。
17.一种数据库系统,其特征在于,包括权利要求9~16任一项所述的业务数据查询装置、数据库内存和数据库,其中,所述数据库内存中包括列式缓冲区和行式缓冲区,所述列式缓冲区的列用于加载所述数据库的列数据,所述行式缓冲区的行用于加载所述列式缓冲区的列数据或所述数据库的列数据。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410804281.6A CN104537030B (zh) | 2014-12-22 | 2014-12-22 | 一种业务数据查询方法及装置、数据库系统 |
PCT/CN2015/089802 WO2016101659A1 (zh) | 2014-12-22 | 2015-09-16 | 一种业务数据查询方法及装置、数据库系统 |
EP15871733.0A EP3226152B1 (en) | 2014-12-22 | 2015-09-16 | Service data query method and apparatus and database system |
US15/630,195 US20170286470A1 (en) | 2014-12-22 | 2017-06-22 | Method and Apparatus for Querying Service Data, and Database System |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410804281.6A CN104537030B (zh) | 2014-12-22 | 2014-12-22 | 一种业务数据查询方法及装置、数据库系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104537030A CN104537030A (zh) | 2015-04-22 |
CN104537030B true CN104537030B (zh) | 2018-03-02 |
Family
ID=52852558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410804281.6A Active CN104537030B (zh) | 2014-12-22 | 2014-12-22 | 一种业务数据查询方法及装置、数据库系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20170286470A1 (zh) |
EP (1) | EP3226152B1 (zh) |
CN (1) | CN104537030B (zh) |
WO (1) | WO2016101659A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104537030B (zh) * | 2014-12-22 | 2018-03-02 | 华为技术有限公司 | 一种业务数据查询方法及装置、数据库系统 |
CN107220186A (zh) * | 2017-07-03 | 2017-09-29 | 福建新和兴信息技术有限公司 | Android系统中业务对象的缓存管理方法及终端 |
WO2019055282A1 (en) * | 2017-09-14 | 2019-03-21 | Savizar, Inc. | DATABASE ENGINE |
CN109634951B (zh) * | 2018-10-23 | 2023-12-22 | 平安科技(深圳)有限公司 | 大数据采集方法、装置、计算机设备及存储介质 |
CN109656930A (zh) * | 2018-12-27 | 2019-04-19 | 广州华多网络科技有限公司 | 数据查询方法、装置及系统 |
CN109800237A (zh) * | 2019-01-28 | 2019-05-24 | 广州酷狗计算机科技有限公司 | 数据查询方法、装置和计算机可读存储介质 |
CN110502551A (zh) * | 2019-08-02 | 2019-11-26 | 阿里巴巴集团控股有限公司 | 数据读写方法、系统及架构组件 |
CN110866006A (zh) * | 2019-10-12 | 2020-03-06 | 苏宁云计算有限公司 | 过期数据的归档方法和装置 |
CN113254480B (zh) * | 2020-02-13 | 2024-04-19 | 中国移动通信集团广东有限公司 | 一种数据查询方法及装置 |
CN113626449A (zh) * | 2021-07-02 | 2021-11-09 | 上海硬通网络科技有限公司 | 数据存储、数据查询方法及相关设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495905A (zh) * | 2011-12-23 | 2012-06-13 | 天津神舟通用数据技术有限公司 | 一种基于行存数据库引擎的列存方法 |
CN102609492A (zh) * | 2012-01-21 | 2012-07-25 | 东华大学 | 一种支持表模式可变的元数据管理方法 |
CN103177058A (zh) * | 2011-12-22 | 2013-06-26 | Sap股份公司 | 存储为行存储和列存储二者的混合数据库表 |
CN103218415A (zh) * | 2013-03-27 | 2013-07-24 | 互爱互动(北京)科技有限公司 | 基于数据仓库的数据处理系统和方法 |
CN103870497A (zh) * | 2012-12-14 | 2014-06-18 | Sap股份公司 | 用于基于列的数据库的列智能机制 |
CN103942342A (zh) * | 2014-05-12 | 2014-07-23 | 中国人民大学 | 一种内存数据库oltp&olap并发查询优化方法 |
CN103970870A (zh) * | 2014-05-12 | 2014-08-06 | 华为技术有限公司 | 数据库查询方法和服务器 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10152504B2 (en) * | 2009-03-11 | 2018-12-11 | Actian Netherlands B.V. | Column-store database architecture utilizing positional delta tree update system and methods |
CN101840430B (zh) * | 2010-04-28 | 2012-02-29 | 北京握奇数据系统有限公司 | 智能卡数据库多表操作方法及装置 |
US10108668B2 (en) * | 2012-12-14 | 2018-10-23 | Sap Se | Column smart mechanism for column based database |
US10296462B2 (en) * | 2013-03-15 | 2019-05-21 | Oracle International Corporation | Method to accelerate queries using dynamically generated alternate data formats in flash cache |
CN103226610B (zh) * | 2013-05-07 | 2016-06-29 | 华为技术有限公司 | 数据库表查询方法和装置 |
CN104090987B (zh) * | 2014-07-28 | 2018-03-13 | 华中科技大学 | 一种历史数据存储及索引方法 |
CN104537030B (zh) * | 2014-12-22 | 2018-03-02 | 华为技术有限公司 | 一种业务数据查询方法及装置、数据库系统 |
-
2014
- 2014-12-22 CN CN201410804281.6A patent/CN104537030B/zh active Active
-
2015
- 2015-09-16 EP EP15871733.0A patent/EP3226152B1/en active Active
- 2015-09-16 WO PCT/CN2015/089802 patent/WO2016101659A1/zh active Application Filing
-
2017
- 2017-06-22 US US15/630,195 patent/US20170286470A1/en not_active Abandoned
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103177058A (zh) * | 2011-12-22 | 2013-06-26 | Sap股份公司 | 存储为行存储和列存储二者的混合数据库表 |
CN102495905A (zh) * | 2011-12-23 | 2012-06-13 | 天津神舟通用数据技术有限公司 | 一种基于行存数据库引擎的列存方法 |
CN102609492A (zh) * | 2012-01-21 | 2012-07-25 | 东华大学 | 一种支持表模式可变的元数据管理方法 |
CN103870497A (zh) * | 2012-12-14 | 2014-06-18 | Sap股份公司 | 用于基于列的数据库的列智能机制 |
CN103218415A (zh) * | 2013-03-27 | 2013-07-24 | 互爱互动(北京)科技有限公司 | 基于数据仓库的数据处理系统和方法 |
CN103942342A (zh) * | 2014-05-12 | 2014-07-23 | 中国人民大学 | 一种内存数据库oltp&olap并发查询优化方法 |
CN103970870A (zh) * | 2014-05-12 | 2014-08-06 | 华为技术有限公司 | 数据库查询方法和服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN104537030A (zh) | 2015-04-22 |
WO2016101659A1 (zh) | 2016-06-30 |
EP3226152A4 (en) | 2017-11-22 |
EP3226152A1 (en) | 2017-10-04 |
EP3226152B1 (en) | 2020-07-15 |
US20170286470A1 (en) | 2017-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104537030B (zh) | 一种业务数据查询方法及装置、数据库系统 | |
US7756889B2 (en) | Partitioning of nested tables | |
US8620888B2 (en) | Partitioning in virtual columns | |
US10162857B2 (en) | Optimized inequality join method | |
EP3657348B1 (en) | Profiling data with source tracking | |
US10642831B2 (en) | Static data caching for queries with a clause that requires multiple iterations to execute | |
EP3070620A1 (en) | Lightweight table comparison | |
US9734223B2 (en) | Difference determination in a database environment | |
US8788660B2 (en) | Query execution and optimization with autonomic error recovery from network failures in a parallel computer system with multiple networks | |
US9251179B2 (en) | Managing record location lookup caching in a relational database | |
US7761455B2 (en) | Loading data from a vertical database table into a horizontal database table | |
US20170357708A1 (en) | Apparatus and method for processing multi-dimensional queries in a shared nothing system through tree reduction | |
US10565201B2 (en) | Query processing management in a database management system | |
US8688819B2 (en) | Query optimization in a parallel computer system with multiple networks | |
CN102799634A (zh) | 数据存储方法及装置 | |
US8046352B2 (en) | Expression replacement in virtual columns | |
Li et al. | Event stream processing with out-of-order data arrival | |
CN101566986A (zh) | 联机事务处理中的数据处理方法和装置 | |
WO2017070247A1 (en) | Parallel execution of queries with a recursive clause | |
US9477702B1 (en) | Apparatus and method for accessing materialized and non-materialized values in a shared nothing system | |
CN109947804B (zh) | 数据集合查询的优化方法、装置、服务器和存储介质 | |
US8260761B2 (en) | Detecting performance degrading design and algorithm issues in database applications | |
US8229940B2 (en) | Query predicate generator to construct a database query predicate from received query conditions | |
CN103488475A (zh) | 多维数据分析系统和多维数据分析方法 | |
US20150363442A1 (en) | Index merge ordering |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |