CN103870497B - 用于基于列的数据库的列智能机制 - Google Patents
用于基于列的数据库的列智能机制 Download PDFInfo
- Publication number
- CN103870497B CN103870497B CN201210544711.6A CN201210544711A CN103870497B CN 103870497 B CN103870497 B CN 103870497B CN 201210544711 A CN201210544711 A CN 201210544711A CN 103870497 B CN103870497 B CN 103870497B
- Authority
- CN
- China
- Prior art keywords
- column
- affairs
- oltp
- cache
- database
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Software Systems (AREA)
Abstract
本公开的实施例可以提供用于在数据库的基于列的存储部上处理在线事务处理(OLTP)事务的系统和方法。所述方法可以包括接收对访问基于列的存储部上的数据的OLTP事务的请求。可以确定与数据库相关联的高速缓存是否包括用于OLTP事务的列信息。如果高速缓存包括用于OLTP事务的列信息,则所述方法可以包括利用高速缓存中的列信息处理OLTP事务。如果高速缓存不包括用于OLTP事务的列信息,则所述方法可以包括从数据库的基于列的存储部选择列。
Description
技术领域
本公开一般涉及数据库,更具体来说,涉及用于基于列的数据库的列智能机制(column smart mechanism)。
背景技术
数据库界使用OLTP(Online Transactional Processing,在线事务处理)系统和OLAP(Online Analytical Processing,在线分析处理)系统。在面向事务的应用中通常使用OLTP系统,其中应用进行大量的短事务(例如,插入、更新、删除、选择)。在OLTP系统中,元素的列表被存储在盘上,并被高速缓存在数据库服务器的主存储器中。OLTP系统一般被用于面向行的关系数据库一起使用。
在面向分析的应用(例如,分析和财务策划应用)中通常使用OLAP系统,其中查询更为复杂。在OLAP系统中,使用字典将属性(attribute)压缩,并且可以进行多维查询。OLTP系统一般被用于面向列的关系数据库。
由于每种系统的优点所致,OLTP和OLAP系统传统上是分离的,并且应用被设计成支持一种环境或者另一种环境。但是近些年来,数据库界已经显示出对内存计算(in-memory computing)和并行计算技术的逐渐增长的兴趣。这些技术已经导致OLTP和OLAP系统被用在同一数据库上。例如,在同一基于列的内存数据库(例如,SAPHANA数据库)上已经采用了OLTP和OLAP事务。这些努力是受减少系统的复杂性和总成本的兴趣的驱使。
但是,因为OLTP和OLAP系统的每一个均被设计成在特定类型的数据库上高效地操作,所以在相同类型的数据库上既运行OLTP系统也运行OLAP系统可能具有某些缺点。例如,虽然在基于列的存储数据库上采用OLAP系统提供了提高的效率,但是在这样的数据库上采用OLTP系统与OLTP系统在传统的基于行的数据库上的性能相比并不提高效率。已经提出了改善OLTP系统在基于列的内存数据库上的性能的方法(例如,把计算逻辑下推到其可以被更快地执行的数据库层)。但是,即使利用这些方法,应用代码仍将包括从数据库访问所需数据的查询。
发明内容
根据本发明的另一个方面,提供一种方法,该方法包含:接收对访问数据库的基于列的存储部中的数据的在线事务处理(OLTP)事务的请求;如果高速缓存包括用于该OLTP事务的列信息,则利用高速缓存中的列信息处理OLTP事务;并且如果高速缓存不包括用于OLTP事务的列信息,则从数据库的基于列的存储部选择列。
根据本发明的另一个方面,提供一种存储一个或更多个被配置成由处理器运行的程序的非瞬态计算机可读存储介质,所述一个或更多个程序包含指令,用于:接收对访问数据库的基于列的存储部中的数据的在线事务处理(OLTP)事务的请求;确定与数据库相关联的高速缓存是否包括用于该OLTP事务的列信息;如果高速缓存包括用于该OLTP事务的列信息,则利用高速缓存中的列信息处理该OLTP事务,并且如果高速缓存不包括用于该OLTP事务的列信息,则从数据库的基于列的存储部选择列。
根据本发明的另一个方面,提供一种系统,该系统包含:一个或更多个处理器;以及存储器,用于存储一个或更多个供所述一个或更多个处理器运行的程序,所述一个或更多个程序包括指令,用于:接收对访问数据库的基于列的存储部中的数据的在线分析处理(OLAP)事务的请求;接收对访问数据库的基于列的存储部中的数据的在线事务处理(OLTP)事务的请求;确定与数据库相关联的高速缓存是否包括用于OLTP事务的列信息;如果高速缓存包括用于OLTP事务的列信息,在利用高速缓存中的列信息处理OLTP事务;如果高速缓存不包括用于OLTP事务的列信息,则从数据库的基于列的存储部选择列;高速缓存从数据库的基于列的存储部选择的列的名称或者列的索引;以及在将列的名称或者列的索引高速缓存之后,利用高速缓存中的列信息处理该OLTP事务。
附图说明
附图图示了各种实施例,并且与描述一起,进一步起到说明这些实施例的原理并使本领域技术人员做出和使用这些实施例的作用。
图1示出了用于产生馈送(feed)的过程的实施例。
图2示出了根据本公开的示范性实施例的用于处理对数据库的事务(transactionto database)的方法。
图3是示范性计算机系统的框图。
具体实施方式
本公开的实施例可以提供用于在数据库的基于列的存储部(a column-basedstorage of a database)上处理在线事务处理(OLTP)事务的系统和方法。所述方法可以包括接收访问所述基于列的存储部上的数据的OLTP事务的请求。可以对与数据库相关联的高速缓存是否包括用于OLTP事务的列信息做出确定。如果高速缓存包括用于OLTP事务的列信息,则所述方法可以包括利用高速缓存中的列信息处理OLTP事务。如果高速缓存不包括用于OLTP事务的列信息,则所述方法可以包括从所述数据库的基于列的存储部选择列。
本公开的实施例提供了一种智能的查询优化机制(smart query optimizationmechanism),用于使发出的访问数据库中不必要的列信息的查询最少。这些实施例提供了在基于列的数据库(例如,SAPHANA数据库,但不限于此)上的OLTP事务的改善的性能。
图1示出了用于在数据库上实施OLTP和OLAP事务的系统的实施例。该系统可以包括发出OLAP事务112和OLTP事务114的应用110以及数据库120。根据本公开的各种实施例,OLTP和OLAP事务都可以被在包括基于列的存储部的数据库上以高效的方式处理,以便降低数据库的响应时间。例如,当在高速缓存中可获得用于OLTP事务的信息时,通过把OLTP事务配置成仅读取感兴趣的域(field),可以降低数据库的响应时间。
具体来说,通过具有学习模式(learning mode)和已学习模式(learned mode),可以高效处理OLTP事务。在学习模式中,表的所有列都可以基于OLTP事务来选择,并且关于被选择列的信息可以被包括在高速缓存中。在已学习模式中,高速缓存中的信息可被用来处理OLTP事务。如果在高速缓存中可获得与OLTP事务相关联的信息,则学习模式可以被绕过。
应用程序110可以是通过OLAP事务112和/或OLTP事务114访问数据库120中的信息的应用。应用110可以访问数据库120来获取用于管理和/或为销售、客户关系、库存、运营、财务和人力资源提供支持的信息。应用110可以是整合机构信息的内部和外部管理的集成企业资源规划应用(例如,SAPBusiness One)。应用110可以从多个数据库120访问信息。多个应用110可以从一个或更多个数据库120访问信息。
数据库120可以是使用基于列的存储部的内存数据库(例如,SAPHANA数据库),但不限于此。数据库120可以是具有关系数据库引擎的关系数据库。通过保持数据靠近计算而非把数据存储在应用程序层或者在多个数据库之间发送数据,内存数据库可以允许较大数据集的更快计算。
数据库120可以包括按列存储关系数据的基于列的存储部122和按行存储关系数据的基于行的存储部124。在一个实施例中,数据库120可以只包括基于列的存储部122。基于列的存储部122可以允许列的值被存储在连续的存储器位置中,并且基于行的存储部可以允许表被作为一系列记录存储在一个行中。
通过由一个或更多个应用110实施的不同接口,可以访问数据库120中的数据。接口可以包括SQL、MDX和BICS,但不限于此。应用110可以使用可获得的接口发出请求。该请求可以是OLTP事务和/或OLAP事务。该请求可能将要访问数据库120中的某些数据,或者对数据库120中的数据执行计算或者分析。可以在数据库120中执行响应于来自应用110的请求的计算或者分析,不把数据移动到应用层中。
数据库120可以包括存储数据和/或关于数据库120中的数据的信息的高速缓存126(例如,数据库110的存储器)。如图1中所示,高速缓存126不一定是数据库的一部分,而是可以与数据库120分离。高速缓存126可以保持近来参考过的来自访问数据库120的请求的信息。高速缓存126允许这些信息被保持得靠近处理器。高速缓存可以用来响应于访问数据库120中的数据的请求,存储数据和/或关于数据库120中的数据的信息。列高速缓存126可被用于多个数据库120。
基于列的存储部122提供了要被存储在数据库120中的信息的增大的密度。访问基于列的存储部122中的数据的请求导致更多的信息被加载到高速缓存126中供一次处理。因此,与在基于行的存储部124中的请求相比,可以需要更少的从基于列的存储部122到高速缓存126的加载动作。但是,每一次在基于列的存储部122中访问数据时,表的所有列都被选择。因此,即使与该请求不相关的列也可能被选择并取回到高速缓存中。因为这样的查询包括与该请求不相关的列,所以它们可能增大数据库120的响应时间。响应时间将随着大量的列显著地增大。
例如,一个查询可能请求添加产品的销售订单。对于这样的查询,需要来自数据库的产品的信息。该查询将使用例如“SELECT*FROM[PRODUCT NAME]”向数据库120请求该产品的整个记录。虽然为了添加销售订单可能只需要单价和重量列,但是记录可能包括对于销售订单来说并不需要的产品信息(例如,产品说明书者制造计划)。这样的请求在基于行的存储部124中可能是可接受的,但是在基于列的存储部122中可能显著增加响应时间,因为对于基于列的存储部,时间成本对查询的列计数很敏感。
访问数据库120的查询可以被处理,以确定高速缓存126是否包括用于该查询的列信息。高速缓存126中所包括的列信息可以通过查询优化机制确定,所述查询优化机制学习并高速缓存来自一个或更多个先前的事务的列数据(例如,域名称和/或索引)。如果高速缓存包括用于该查询的列信息,则该查询无需被处理以访问数据库120的所有列。因此,不必要的列不需要随着每一个查询被访问。当高速缓存不包括查询所需的列信息时,可以响应于该查询而访问数据库120。
图2示出了根据本公开的示范性实施例的处理对数据库的事务的方法。方法200可以在被配置成在具有基于列的存储部的内存数据库(例如,SAPHANA数据库)上处理OLAP和OLTP事务的系统上实施。所述方法可以包括:接收对事务的请求(块210)、确定高速缓存是否包括用于该事务的列信息(块220),如果高速缓存不包括用于该事务的列信息,则进入学习模式(块230),如果高速缓存包括用于该事务的列信息,则进入已学习模式(块240)。在学习模式中,方法200可以包括选择列(块232)和高速缓存在该事务中使用的列的名称和/或索引(块234)。在已学习模式中,方法200可以包括优化该事务以选择高速缓存中的列(块242)。
对事务的请求(块210)可以是用户通过启动事务的应用做出的请求。可以在应用层发出该请求。该事务可以是访问一个或更多个数据库(例如,具有基于列的存储部的数据库)中的数据的OLTP事务或者OLAP事务。可以确定所请求的事务是否是OLTP事务(块212)。如果该请求不是OLTP事务(例如是OLAP事务),则对事务的请求可以被处理(块214)。如果该请求是针对OLTP事务,则OLTP事务可被处理,以确定高速缓存是否包括用于该事务的列信息(块220)。对事务的请求可以包括对多个事务的请求,并且每一事务可以被个别处理,或者被作为一批事务来处理。
OLTP事务可能以大量短事务(例如,选择、删除、插入、更新)为特征。例如,OLTP事务可以包括添加销售订单或者客户信息,但是不限于此。响应于对事务的请求,查询可被发出以加载被查询的数据和/或数据对象。
如果该请求是OLTP事务,则可以确定与数据库相关联的高速缓存是否包括用于该事务的列信息(块220)。高速缓存可以包括被加载到高速缓存中供处理的信息。高速缓存可以包括与特定查询不相关的列。高速缓存中的信息可以是响应于一个或更多个在先查询而被加载的信息。高速缓存中的信息(例如,表域名称和/或索引)可以被与OLTP事务所需要的信息进行比较。确定高速缓存是否包括该事务所需要的信息(块220)可以包括把该事务和/或请求的查询与系统处理过的先前的事务和/或查询进行比较。高速缓存可以包括先前处理过的事务和/或查询的类型。
如果OLTP事务所需要的信息未被包括在高速缓存中,则可以进入学习模式(块230)。在学习模式中,可以基于OLTP事务选择表的列(块232)。该选择可以响应于选择表的所有列的查询(例如,SELECT*)。该选择可被向多个表做出,并且,表中的所有列都可以被选择。在OLTP事务中使用的列的名称和/或索引可以被高速缓存(块234),和/或被与OLTP事务相关联。响应于该查询选择的所有的列名称和/或索引都可以被高速缓存(块234)和/或被与OLTP事务相关联。
如果OLTP事务所需要的信息被包括在高速缓存中,则可以进入已学习模式(块240)。在已学习模式中,因为在高速缓存中已经提供了与OLTP事务相关联的信息,所以不需要处理查询以便从数据库取回数据(例如,必要的数据和不必要的数据)。对数据库的这样的查询(例如,SELECT*)将花费不必要的时间,并选择OLTP事务可能不需要的列。进入已学习模式,通过采用在高速缓存中提供的信息降低了时间成本和计算成本。在已学习模式中,可以基于在高速缓存中可获得的信息处理OLTP事务。
在已学习模式中,所述方法可以包括优化OLTP事务的查询(块242)。优化OLTP事务的查询可以包括在查询被运行之前优化查询,使得只有被高速缓存的列和/或只有事务所需要的列被查询。
优化查询可以包括重写查询。可以基于先前事务的运行来重写查询。被重写的查询可以使用与原始查询将会提供的数据结构相同的数据结构来提供结果。例如,当在特定事务(例如,添加销售订单)中运行查询“SELECT*FROM Table1 WHERE KEY=”时,该查询可以基于先前的事务(例如,在学习模式中运行的事务)取回该事务所需要的表1的全部的列信息而无需取回表1的所有列。原始查询可以被重写成例如“SELECT Col1,Col2…,FROMTable1 WHERE KEY=”,其中,Col1、Col2是该事务所需要的列。被重写的查询可以被发送到数据库管理系统(database management system,DBMS)。为了兼容(例如,与现有业务逻辑层兼容),被重写的查询可以利用与原始查询将会利用其返回结果的数据结构相同的数据结构来返回结果。事务所需要的列可被来自DBMS的数据填充,并且事务不需要的列可以被其他值(例如,伪值、缺省值或者随机值)填充。利用相同数据结构提供结果允许改善各个层(例如,业务逻辑层)中的性能而不改变这些层。在如ERP系统的系统中,这些层中的一些非常大,并且会显著增大改变所需的时间和/或成本。
在已学习模式中,可以包括进入学习模式的选项(块244)。当处于已学习模式中时,如果确定在高速缓存中不存在对某个列的访问,则可以进入学习模式。当做出OLTP事务的查询的优化(块242)时,可以做出该确定。响应于在高速缓存中缺失信息,可以自动执行从已学习模式切换到学习模式。在学习模式中,表的所有列都可以被查询,并且可以利用已访问的列刷新高速缓存。
某些实施例可以包括上述方法被写成一个或更多个软件组件。这些组件,以及与每一个相关联的功能,可以被客户端、服务器、分布式或者对等计算机系统使用。这些组件可以用对应于一个或更多个编程语言的计算机语言书写,例如功能性语言、说明性语言、过程语言、面向对象语言、低级语言,等等。它们可以通过各种应用编程接口被链接到其他组件,然后被汇编为用于服务器或者客户端的一个完整应用。或者,这些组件可以在服务器和客户端应用中被实施。此外,这些组件可以通过各种分布式编程协议被链接在一起。某些示范性实施例可以包括远程过程调用,用来跨越分布式编程环境实施这些组件中的一个或更多个。例如,逻辑层可以驻留在第一计算机系统上,第一计算机系统远离包含接口层(例如,图形用户接口)的第二计算机系统。这些第一和第二计算机系统可以被以服务器-客户端、对等、或者某种其他结构来配置。客户端在复杂性上可以变化,从移动和手持设备到瘦客户端,继而到厚客户端乃至其他服务器。
上面说明的软件组件被有形地存储在计算机可读存储介质上作为指令。术语“计算机可读存储介质”应该被认为包括存储一个或更多个指令集的单个介质或者多个介质。术语“计算机可读存储介质”应该被认为包括任何能够经过一组物理变化以便物理地存储、编码或者以其他方式携带供计算机系统运行的指令集的物品,所述指令集导致计算机系统执行这里描述、表示或者图示的方法或者过程步骤中的任何一个。计算机可读存储介质的例子包括但不限于:磁性介质,例如硬盘、软盘和磁带;光学介质,例如CD-ROM、DVD和全息器件;磁光介质;和被专门配置成存储和运行的硬件设备,例如专用集成电路(“ASIC”)、可编程逻辑器件(“PLD”)以及ROM和RAM器件。计算机可读指令的例子包括机器码,例如由编译器产生的机器码,以及包含由计算机使用解释器运行的高级代码的文件。例如,本公开的实施例可被使用Java、C++或者其他面向对象编程语言和开发工具来实施。本公开的其他实施例可被实施在硬连线的电路中,代替机器可读软件指令或者与其结合。
图3是示范性计算机系统300的框图。计算机系统300包括处理器305,处理器305运行存储在计算机可读存储介质355上的软件指令或者代码以便执行上面说明的本公开的方法。计算机系统300包括从计算机可读存储介质355读取指令并把指令存储在存储器310或者随机访问存储器(RAM)315中的介质读取器340。存储器310提供了用于保持静态数据的大空间,其中至少可以存储一些指令供以后运行。存储的指令可以被进一步汇编以产生指令的其他表示,并可以被动态地存储在RAM 315中。处理器305从RAM 315读取指令,并按指令执行动作。根据本公开的一个实施例,计算机系统300还包括输出设备325(例如,显示器)和输入设备330,输出设备325用于向用户提供执行结果的至少一些作为输出,包括但不限于视觉信息,输入设备330用于给用户或者其他设备提供输入数据和/或以其他方式与计算机系统300交互作用的手段。这些输出设备325和输入设备330的每一个可以与一个或更多个另外的外围设备结合,以便进一步扩展计算机系统300的能力。可以提供网络通信器335以便把计算机系统300连接到网络350,并进而连接到与网络350连接的其他设备,例如包括其他的客户端、服务器、数据仓库和接口。计算机系统300的模块通过总线345互连。计算机系统300包括访问数据源360的数据源接口320。可以通过在硬件或者软件中实施的一个或更多个抽象层访问数据源360。例如,数据源360可被网络350访问。在某些实施例中,可以通过例如语义层的抽象层访问数据源360。
数据源是一种信息源。数据源包括实现数据存储和检索的数据的来源。数据源可以包括数据库,例如关系数据库、事务数据库、层级数据库、多维数据库(例如,OLAP)、面向对象的数据库,等等。此外,数据源包括表列数据(例如,电子表格、定界(delimited)文本文件)、以标记语音标记的数据(例如,XML数据)、事务数据、非结构化数据(例如,文本文件、屏幕抓取)、层级数据(例如,文件系统中的数据、XML数据)、文件、多个报告,以及可通过已制定的由底层软件系统(例如,ERP系统)等产生的协议访问的任何其他数据源,所述协议例如开放数据库连接(Open DataBase Connectivity,ODBC)。数据源也可以包括其中数据未被有形地存储或者是瞬时的数据源,例如数据流、广播数据,等等。这些数据源可以包括相关联的数据基础、语义层、管理系统、安全系统,诸如此类。
语义层是叠加一个或更多个数据源的抽象。对于用户来说,其去除了当写查询时掌握现有查询语音的各种细微之处的需要。所提供的抽象包括数据源的元数据描述。元数据可以包括对于用户来说有意义的术语,代替数据源所使用的逻辑或者物理描述。例如,常见的业务术语代替表和列名称。这些术语可以被本地化和/或特定于领域。层可以包括与底层数据相关联的允许其自动制定用于对底层数据源运行的查询的逻辑。该逻辑包括到数据源的连接,用于数据源的结构和数据源的方面。某些语义层可以被公布,使得其可以被很多客户端和用户共享。某些语义层在对应于底层数据源的结构的粒度或者在语义层实施安全性。语义层的具体形式包括描述底层数据源并利用底层数据定义维度、属性和度量的数据模型对象。对象可以代表维度成员之间的关系,提供与底层数据相关联的计算。
在上面的描述中,为了提供对本公开实施例的透彻理解给出了许多具体细节。但是本领域技术人员将发现,无需这些具体细节中的一个或更多个,或者利用其他的方法、组件、技术等能够实践各种实施例。在其他的实例中,为了避免模糊本公开的方面,公知的操作或者结构未被示出或详细描述。
尽管这里示出和描述的过程包括一系列步骤,但是将会理解,本公开的不同实施例不受所示出的步骤的顺序限制,因为某些步骤可以按不同顺序出现,某些与这里示出和描述的步骤之外的其他步骤同时发生。此外,为了实施根据本公开的方法,并不要求全部示出的步骤。而且,将会理解,过程可以被与这里示出和描述的装置和系统相关联地以及与其他未被示出的系统相关联地实施。
本公开实施例的上述描述和图示,包括在摘要中所描述的,并非旨在彻底穷尽或者把实施例限于所公开的精确形式。虽然在这里为了说明的目的描述实施例的具体实施例和例子,但是本领域技术人员将会发现,在本公开的范围内,各种等同的修改是可能的。考虑到上面的详细描述,可以对实施例做出这些修改。相反,本公开的范围要由所附权利要求确定,要依据已确立的权利要求构造准则来解释所附权利要求。
Claims (18)
1.一种方法,包含:
接收对访问数据库的基于列的存储部中的数据的在线事务处理OLTP事务的请求,OLTP事务包括对访问所述基于列的存储部中的数据的查询;
如果高速缓存包括OLTP事务的列信息,则进入已学习模式;
响应于进入已学习模式,对OLTP事务的查询进行优化,并基于优化后的查询利用高速缓存中的列信息来处理OLTP事务,对查询的所述优化包括基于先前在学习模式中对OLTP事务的处理来重写查询;并且
如果高速缓存不包括用于OLTP事务的列信息,则进入学习模式并从所述数据库的基于列的存储部选择列、与所选择的列相关的每个列的名称或者列的索引、利用所选择的列刷新高速缓存,并且进入已学习模式和利用高速缓存中的列信息来处理OLTP事务。
2.如权利要求1所述的方法,其中,高速缓存与数据库相关联,并且所述方法还包含确定高速缓存是否包括用于OLTP事务的列信息。
3.如权利要求1所述的方法,还包含接收对访问数据库的基于列的存储部中的数据的在线分析处理OLAP事务的请求。
4.如权利要求1所述的方法,其中,从数据库的基于列的存储部选择列包括选择具有与该OLTP事务相关联的列的表的所有列。
5.如权利要求4所述的方法,其中,从数据库的基于列的存储部选择的列包括该OLTP事务所需要的至少一列、以及该事务所不需要的至少一列。
6.如权利要求1所述的方法,其中,高速缓存包括来自至少一个先前的请求的列信息。
7.如权利要求1所述的方法,还包含:
高速缓存从数据库的基于列的存储部选择的列的名称或者列的索引;和
在把列的名称或者列的索引高速缓存之后,利用高速缓存中的列信息处理该OLTP事务。
8.如权利要求1所述的方法,其中,利用高速缓存中的列信息处理OLTP事务包括优化OLTP事务以访问高速缓存中而非数据库中的列信息。
9.如权利要求2所述的方法,其中,确定与数据库相关联的高速缓存是否包括用于OLTP事务的列信息包括:将该OLTP事务与先前处理过的OLTP事务进行比较。
10.一种存储一个或更多个被配置成由处理器运行的程序的非瞬态计算机可读存储介质,所述一个或更多个程序包含指令,用于:
接收对访问数据库的基于列的存储部中的数据的在线事务处理OLTP事务的请求,OLTP事务包括对访问所述基于列的存储部中的数据的查询;
确定与数据库相关联的高速缓存是否包括用于该OLTP事务的列信息;
如果高速缓存包括OLTP事务的列信息,则进入已学习模式;
响应于进入已学习模式,对OLTP事务的查询进行优化,并基于优化后的查询利用高速缓存中的列信息来处理OLTP事务,对查询的所述优化包括基于先前在学习模式中对OLTP事务的处理来重写查询;并且
如果高速缓存不包括用于该OLTP事务的列信息,则进入学习模式并从所述数据库的基于列的存储部选择列、与所选择的列相关的每个列的名称或者列的索引、利用所选择的列刷新高速缓存,并且进入已学习模式和利用高速缓存中的列信息来处理OLTP事务。
11.如权利要求10所述的计算机可读存储介质,还包含指令,用于接收对访问数据库的基于列的存储部中的数据的在线分析处理OLAP事务的请求。
12.如权利要求10所述的计算机可读存储介质,其中,从数据库的基于列的存储部选择列包括:选择具有与该OLTP事务相关联的列的表的所有列。
13.如权利要求12所述的计算机可读存储介质,其中,从数据库的基于列的存储部选择的列包括该OLTP事务所需要的,以及该事务不需要的至少一列。
14.如权利要求10所述的计算机可读存储介质,其中,高速缓存包括来自至少一个先前的请求的列信息。
15.如权利要求10所述的计算机可读存储介质,还包含指令,用于:
高速缓存从数据库的基于列的存储部选择的列的名称或者列的索引;和
在将列的名称或者列的索引高速缓存之后,利用高速缓存中的列信息处理该OLTP事务。
16.如权利要求10所述的计算机可读存储介质,其中,利用高速缓存中的列信息处理OLTP事务包括:优化该OLTP事务以访问高速缓存中而非数据库中的列信息。
17.如权利要求10所述的计算机可读存储介质,其中,确定与数据库相关联的高速缓存是否包括用于该OLTP事务的列信息包括:将该OLTP事务与先前处理过的OLTP事务进行比较。
18.一种系统,包含:
一个或更多个处理器;以及
存储器,用于存储一个或更多个供所述一个或更多个处理器运行的程序,所述一个或更多个程序包括指令,用于:
接收对访问数据库的基于列的存储部中的数据的在线分析处理OLAP事务的请求;
接收对访问数据库的基于列的存储部中的数据的在线事务处理OLTP事务的请求,OLTP事务包括对访问所述基于列的存储部中的数据的查询;
确定与数据库相关联的高速缓存是否包括用于OLTP事务的列信息;
如果高速缓存包括OLTP事务的列信息,则进入已学习模式;
响应于进入已学习模式,对OLTP事务的查询进行优化,并基于优化后的查询利用高速缓存中的列信息来处理OLTP事务,对查询的所述优化包括基于先前在学习模式中对OLTP事务的处理来重写查询;
如果高速缓存不包括用于OLTP事务的列信息,则进入学习模式并从所述数据库的基于列的存储部选择列、与所选择的列相关的每个列的名称或者列的索引、利用所选择的列刷新高速缓存,并且进入已学习模式和利用高速缓存中的列信息来处理OLTP事务。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210544711.6A CN103870497B (zh) | 2012-12-14 | 2012-12-14 | 用于基于列的数据库的列智能机制 |
US13/729,632 US10108668B2 (en) | 2012-12-14 | 2012-12-28 | Column smart mechanism for column based database |
CA2824319A CA2824319C (en) | 2012-12-14 | 2013-08-19 | Column smart mechanism for column based database |
JP2013197953A JP5819376B2 (ja) | 2012-12-14 | 2013-09-25 | 列ベースのデータベースに対する列スマートな機構 |
EP20130005790 EP2743839A1 (en) | 2012-12-14 | 2013-12-12 | Column caching mechanism for column based database |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210544711.6A CN103870497B (zh) | 2012-12-14 | 2012-12-14 | 用于基于列的数据库的列智能机制 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103870497A CN103870497A (zh) | 2014-06-18 |
CN103870497B true CN103870497B (zh) | 2019-03-12 |
Family
ID=50909038
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210544711.6A Active CN103870497B (zh) | 2012-12-14 | 2012-12-14 | 用于基于列的数据库的列智能机制 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103870497B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160125022A1 (en) * | 2014-10-31 | 2016-05-05 | Microsoft Corporation | Efficient maintenance of column store indexes on memory-optimized tables |
CN104537030B (zh) * | 2014-12-22 | 2018-03-02 | 华为技术有限公司 | 一种业务数据查询方法及装置、数据库系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101828182A (zh) * | 2007-09-21 | 2010-09-08 | 哈索-普拉特纳-研究所软件系统有限责任公司 | 报告oltp数据的无etl零冗余系统和方法 |
CN102591910A (zh) * | 2010-12-08 | 2012-07-18 | 达索系统艾诺维亚公司 | 用于组合oltp数据库和olap数据库环境的计算机方法和系统 |
-
2012
- 2012-12-14 CN CN201210544711.6A patent/CN103870497B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101828182A (zh) * | 2007-09-21 | 2010-09-08 | 哈索-普拉特纳-研究所软件系统有限责任公司 | 报告oltp数据的无etl零冗余系统和方法 |
CN102591910A (zh) * | 2010-12-08 | 2012-07-18 | 达索系统艾诺维亚公司 | 用于组合oltp数据库和olap数据库环境的计算机方法和系统 |
Non-Patent Citations (1)
Title |
---|
HyPer: A Hybrid OLTP&OLAP Main Memory Database System Based on Virtual Memory Snapshot;KEMPER, ALfons 等;《ICDE Conference》;20110516;第195-206页 |
Also Published As
Publication number | Publication date |
---|---|
CN103870497A (zh) | 2014-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2824319C (en) | Column smart mechanism for column based database | |
US20230084389A1 (en) | System and method for providing bottom-up aggregation in a multidimensional database environment | |
US20200226151A1 (en) | System and method for supporting queries having sub-select constructs in a multidimensional database environment | |
US11263211B2 (en) | Data partitioning and ordering | |
US20230334030A1 (en) | System and method for slowly changing dimension and metadata versioning in a multidimensional database environment | |
US20210311964A1 (en) | System and method for load, aggregate and batch calculation in one scan in a multidimensional database environment | |
US12013878B2 (en) | System and method for sandboxing support in a multidimensional database environment | |
US20170116311A1 (en) | System and method for use of automatic slice merge in a multidimensional database environment | |
US20150169655A1 (en) | Efficient query processing in columnar databases using bloom filters | |
US11797559B2 (en) | System and method for real time data aggregation in a virtual cube in a multidimensional database environment | |
US20100235344A1 (en) | Mechanism for utilizing partitioning pruning techniques for xml indexes | |
US20220277012A1 (en) | Workload-aware column inprints | |
US10095738B1 (en) | Dynamic assignment of logical partitions according to query predicate evaluations | |
CN103870497B (zh) | 用于基于列的数据库的列智能机制 | |
US20240184793A1 (en) | Deep mining of enterprise data sources | |
US20210303583A1 (en) | Ranking filter algorithms | |
Xavier | Evaluation and performance of reading from big data formats | |
Bog et al. | Enterprise Data Management for Transaction and Analytical Processing | |
Grimes | MySQL V5-Ready for Prime Time Business Intelligence | |
Tkachuk et al. | Analysis Services Performance Guide |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C53 | Correction of patent for invention or patent application | ||
CB02 | Change of applicant information |
Address after: German Waldo Applicant after: SAP AG Address before: German Waldo Applicant before: SAP AG |
|
COR | Change of bibliographic data |
Free format text: CORRECT: APPLICANT; FROM: SAP AG TO: SAP EUROPE AG |
|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |