利用闪存高速缓存中动态生成的替代数据格式加速查询的方法
【专利说明】利用闪存高速缓存中动态生成的替代数据格式加速查询的方法
[0001]相关申请的交叉引用
[0002]本申请与以下申请有关:(I)美国专利申请N0.12/769508,由Vineet Marwah等人于2010年4月28日提交,标题为“Compress1n Analyzer”,代理人案号为50277-3695 ;
(2)美国专利申请N0.12/769205,由Vikram Kapoor等人于2010年4月28日提交,标题为“Storing Compress1n Units In Relat1nal Tables,,,代理人案号为 50277-3696 ;
(3)美国专利申请N0.12/617669,由Amit Ganesh等人于2009年11月12日提交,标题为“Structure of Hierarchical Compressed Data Structure for Tabular Data,,,代理人案号为50277-3672 ;以及(4)美国临时专利申请N0.61/174447,于2009年4月30日提交。本段落中提到的所有专利申请的内容都通过引用并入此。申请人特此撤销在父申请或者其起诉历史中对权利要求范围的任何否认声明,并向USPTO告知本申请中的权利要求可以比父申请中的任何权利要求更宽泛。
技术领域
[0003]本申请涉及数据存储系统,并且更具体地涉及利用存储在闪存高速缓存(flashcache)中动态生成的重写数据来加速查询。
【背景技术】
[0004]传统地,按照行为主(row-major)的格式或列为主(column-major)的格式存储数据。但是,对于满足各种数据访问要求,这两种存储格式似乎都不是最佳的。例如,一些操作对行为主的数据可能比对列为主的数据执行得更快,而其它操作对纯列式数据可能比行为主的数据执行得更快。这常常是由于一些数据访问操作需要CPU资源,而其它需要1/0操作。因此,在确定用于存储数据的数据格式时,在CPU负荷和盘(disk)负荷之间维持平衡可能是有挑战性的。
[0005]一种解决方案包括在盘上创建数据的两份拷贝:每种格式一份。这种方法常常被称为断裂镜(fractured-mirror)方法。但是,虽然断裂镜方法似乎解决了查询处理的数据存取困境,但是该方法实现起来可能是昂贵的。例如,加倍磁盘容量和复制数据的成本可能较高。而且,将数据加载到盘上的时间可能明显较长。
[0006]数据存储问题的另一种解决方案可以包括在最常用的数据列上创建列式索引,并依赖该索引来加速对数据存取的访问。但是,这种方法也可能是昂贵且耗时的。
[0007]其它解决方案可以基于混合列式压缩(Hybrid Columnar Compress1n, HCC)方法。在HCC中,一组块中的数据被旋转为列为主的格式。列行程(column run)可以被限制为针对块本地指定的默认长度。这种方法既通过访问几个连续的块来允许高效的行为主的访问,也通过直接导航到所需的列以及对这些列的操作的快速列处理来允许高效的表扫描访问。
[0008]还有其它解决方案专注于降低处理常见表达式的CPU成本。这可以通过利用函数索引(funct1nal index)给表达式加索引或者在加载虚拟列期间具体化这些表达式来解决。
【附图说明】
[0009]在图1中:
[0010]图1是绘出了利用闪存高速缓存中的动态生成的列式数据来加速查询的示例性系统的框图;
[0011]图2是绘出了用于存储各种重写数据块的示例性系统的框图;
[0012]图3A是绘出了利用重写数据块来加速智能扫描请求的示例性过程的流程图;
[0013]图3B是绘出了利用重写数据块的示例性过程的流程图;及
[0014]图4是可以实现实施例的计算机系统的框图。
【具体实施方式】
[0015]在以下描述中,出于说明的目的,阐述了各种具体细节,以便提供对本发明的透彻理解。但是,很显然,在没有这些具体细节的情况下也可以实践本发明。在其它实例下,众所周知的结构和设备以框图形式示出,以避免不必要地模糊本发明。
[0016]概述
[0017]本文描述了用于加速对存储在存储设备中的数据库数据的访问的方法。存储设备在一个或更多个主存储设备中以基本主要格式存储数据块。基本主要格式可以是以下任何一种:行为主的格式、列为主的格式以及混合列式格式。响应于从数据库服务器接收到对数据的请求,存储设备把在一个或更多个主存储设备中以基本格式存储的数据块重写为重写主要格式(rewritten major format)。重写主要格式不同于基本主要格式。重写数据块存储在存储设备高速缓存中,诸如闪存高速缓存。将数据块重写为替代格式并且把重写数据块存储在存储设备高速缓存中是在本文中被称为重写数据块的操作。
[0018]该方法可以被实现为由计算设备执行的方法,由存储有指令的装置、系统、设备或者在存储有指令的计算机可读存储介质中实现,其中,所述指令在被处理器执行时实现该方法。
[0019]数据库系统
[0020]由于本发明的实施例是在数据库管理系统(DBMS)的背景下实现的,因此本文包括对数据库管理系统的描述。数据库管理系统管理数据库。数据库管理系统可以包括一个或更多个数据库服务器。数据库包括被存储在诸如一组硬盘之类的持久存储器机构上的数据库数据和元数据。元数据定义数据库对象,诸如关系表、表列、视图和触发器。
[0021]数据库应用和客户端通过向数据库服务器提交使数据库服务器对存储在数据库中的数据执行操作的命令来与数据库服务器交互。数据库命令可以是符合数据库语言的数据库语句的形式。
[0022]用于表达数据库请求的语言之一是结构化查询语言(SQL)。有许多不同版本的SQL;—些版本是标准的,其它的是专有的。还有对SQL的各种扩展。SQL数据定义语言(DDL)指令可以发布给数据库服务器,以创建或配置诸如表、视图或复杂数据类型之类的数据库对象。SQL/XML是在对象-关系数据库中操纵XML数据时使用的常见SQL扩展。
[0023]数据容器
[0024]一般而言,数据在数据库内按逻辑布置在一个或更多个数据容器中。每个容器包含记录,并且每条记录中的数据被组织成一个或更多个字段。在关系数据库系统中,数据容器典型地被称为表,记录被称为行,而字段被称为列。在面向对象的数据库中,数据容器典型地被称为对象类型或类,记录被称为对象,而字段被称为属性。其它数据库架构可以使用其它术语。实现本方法的系统不限于任何特定类型的数据容器或任何特定类型的数据库架构。但是,出于说明的目的,本文所使用的示例和术语通常与关系数据库或对象-关系数据库相关联。因此,术语“表”、“行”和“列”在本文中分别用来指代数据容器、记录和字段。
[0025]数据容器典型地被存储在硬盘上的一个或更多个数据块中。因此,虽然发布到数据库服务器的指令或查询把数据称为表、行和列,但是数据实际上作为一批数据块存储在数据库中。通过使用各种存储的元数据、索引和头部,数据库服务器能够将数据块内的数据解释为逻辑的表、行和列。
[0026]数据块是为了存储一个或更多个数据库记录(例如,行)或其部分的原始数据而分配的存储空间的原子单元(atomic unit)。典型地,数据库系统被配置为以不小于数据块的单元从持久性高速缓存和易失性存储器读取和写入数据库记录。当需要检索来自数据块的记录时,含有该记录(或该记录的相关部分)的整个数据块被读到数据库系统用来临时存储数据块的缓冲区中。被读到缓冲区中的数据块可能包含其它记录或者其部分。
[0027]存在用于将数据存储在数据库中的几种格式。两种基本格式包括行为主的格式和列为主的格式。在行为主的格式中,单个行的列值连续地存储在数据块内。在列为主的格式时,多个行的某列的值被连续地存储。在列为主的格式,数据块可以只包含一列的值。行为主的格式和列为主的格式在本文中统称为主要格式。
[0028]列为主的格式的一个优点是它允许比行为主的格式更好的压缩性。列内的值可以具有共同属性,因此,当值被连续地存储时,可以用各种压缩技术来利用共同属性。
[0029]混合列式格式
[0030]混合列式格式是主要格式的另一个示例。在混合列式格式中,对于表的行子集,数据块可以保持每个行子集的全部。但是,在数据块内,子集行的列可以按列为主的格式存储。
[0031]存在其中使用混合列式格式比使用行为主的格式或列为主的格式更有利的情形。混合列式格式的优点之一是当检索特定的行时或者当执行表扫描时提供合理的性能。在混合列式格式中,检索数据行或执行表扫描可以更有效地执行,因为混合列式格式允许按行为主的格式存储一些数据并且按列为主的格式存储其它数据,并且允许针对不同的格式使用不同的压缩算法。例如,一些数据块可以按列为主的格式存储表的第一列的数据,而其它数据块可以按行为主的格式存储表的一组多个第二列的数据。因此,表的单个行可以在几个数据块中散布。因此,存储第一列的数据的数据块可以使用与用来对保持第二列的数据的数据块中的数据进行压缩的算法不同的压缩算法。向不同的数据格式应用不同的压缩算法的能力可以导致改善检索数据或扫描表的过程。
[0032]关于数据块的更多细节可以在标题为“Structure of Hierarchical CompressedData Structure for Tabular Data” 的美国公开专利申请 N0.2010/0278446 中找到。关于各种压缩格式的附加细节可以在标题为“Compress1n Analyzer”的美国公开专利申请N0.2010/0281079中找到。关于不同数据格式存储方法的附加细节可以在以下文献中找到:Anastassia Ailamaki 等人的“Weaving Relat1ns for Cache Performance,,,2001 年罗马第27届VLDB会议期刊上发表;以及Ravishankar Ramamurthy等人的“A Case forFractured Mirrors”,在2002年香港第28届VLDB会议期刊上发表。
[0033]增强的存储设备
[0034]增强的存储设备是被配置为与数据库服务器协作并且向数据库服务器提供经过滤的和未过滤的数据块的存储设备。增强的存储设备可以基于由数据库服务器提供的过滤标准对数据块中的数据执行一些过