首页> 中国专利> 用于基于列的数据库的列智能机制

用于基于列的数据库的列智能机制

摘要

本公开的实施例可以提供用于在数据库的基于列的存储部上处理在线事务处理(OLTP)事务的系统和方法。所述方法可以包括接收对访问基于列的存储部上的数据的OLTP事务的请求。可以确定与数据库相关联的高速缓存是否包括用于OLTP事务的列信息。如果高速缓存包括用于OLTP事务的列信息,则所述方法可以包括利用高速缓存中的列信息处理OLTP事务。如果高速缓存不包括用于OLTP事务的列信息,则所述方法可以包括从数据库的基于列的存储部选择列。

著录项

  • 公开/公告号CN103870497A

    专利类型发明专利

  • 公开/公告日2014-06-18

    原文格式PDF

  • 申请/专利权人 SAP股份公司;

    申请/专利号CN201210544711.6

  • 发明设计人 刘英峭;朱琳;姜华阳;

    申请日2012-12-14

  • 分类号G06F17/30;

  • 代理机构北京市柳沈律师事务所;

  • 代理人刘虹

  • 地址 德国瓦尔多夫

  • 入库时间 2024-02-20 00:20:11

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-03-12

    授权

    授权

  • 2015-11-25

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20121214

    实质审查的生效

  • 2014-11-26

    著录事项变更 IPC(主分类):G06F17/30 变更前: 变更后: 申请日:20121214

    著录事项变更

  • 2014-06-18

    公开

    公开

说明书

技术领域

本公开一般涉及数据库,更具体来说,涉及用于基于列的数据库的列智 能机制(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示出了根据本公开的示范性实施例的用于处理对数据库的事务 (transaction to database)的方法。

图3是示范性计算机系统的框图。

具体实施方式

本公开的实施例可以提供用于在数据库的基于列的存储部(a  column-based storage of a database)上处理在线事务处理(OLTP)事务的系统 和方法。所述方法可以包括接收访问所述基于列的存储部上的数据的OLTP 事务的请求。可以对与数据库相关联的高速缓存是否包括用于OLTP事务的 列信息做出确定。如果高速缓存包括用于OLTP事务的列信息,则所述方法 可以包括利用高速缓存中的列信息处理OLTP事务。如果高速缓存不包括用 于OLTP事务的列信息,则所述方法可以包括从所述数据库的基于列的存储 部选择列。

本公开的实施例提供了一种智能的查询优化机制(smart query  optimization mechanism),用于使发出的访问数据库中不必要的列信息的查询 最少。这些实施例提供了在基于列的数据库(例如,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…,FROM  Table1 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)。数据源也可以包括其中数据未被有形地存储或者是瞬 时的数据源,例如数据流、广播数据,等等。这些数据源可以包括相关联的 数据基础、语义层、管理系统、安全系统,诸如此类。

语义层是叠加一个或更多个数据源的抽象。对于用户来说,其去除了当 写查询时掌握现有查询语音的各种细微之处的需要。所提供的抽象包括数据 源的元数据描述。元数据可以包括对于用户来说有意义的术语,代替数据源 所使用的逻辑或者物理描述。例如,常见的业务术语代替表和列名称。这些 术语可以被本地化和/或特定于领域。层可以包括与底层数据相关联的允许其 自动制定用于对底层数据源运行的查询的逻辑。该逻辑包括到数据源的连接, 用于数据源的结构和数据源的方面。某些语义层可以被公布,使得其可以被 很多客户端和用户共享。某些语义层在对应于底层数据源的结构的粒度或者 在语义层实施安全性。语义层的具体形式包括描述底层数据源并利用底层数 据定义维度、属性和度量的数据模型对象。对象可以代表维度成员之间的关 系,提供与底层数据相关联的计算。

在上面的描述中,为了提供对本公开实施例的透彻理解给出了许多具体 细节。但是本领域技术人员将发现,无需这些具体细节中的一个或更多个, 或者利用其他的方法、组件、技术等能够实践各种实施例。在其他的实例中, 为了避免模糊本公开的方面,公知的操作或者结构未被示出或详细描述。

尽管这里示出和描述的过程包括一系列步骤,但是将会理解,本公开的 不同实施例不受所示出的步骤的顺序限制,因为某些步骤可以按不同顺序出 现,某些与这里示出和描述的步骤之外的其他步骤同时发生。此外,为了实 施根据本公开的方法,并不要求全部示出的步骤。而且,将会理解,过程可 以被与这里示出和描述的装置和系统相关联地以及与其他未被示出的系统相 关联地实施。

本公开实施例的上述描述和图示,包括在摘要中所描述的,并非旨在彻 底穷尽或者把实施例限于所公开的精确形式。虽然在这里为了说明的目的描 述实施例的具体实施例和例子,但是本领域技术人员将会发现,在本公开的 范围内,各种等同的修改是可能的。考虑到上面的详细描述,可以对实施例 做出这些修改。相反,本公开的范围要由所附权利要求确定,要依据已确立 的权利要求构造准则来解释所附权利要求。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号