专利名称:用于读取优化的批数据存储的设备和方法
技术领域:
本发明总地涉及数字数据存储和检索。更具体地,本发明涉及在数据仓库数据库中的读取优化的批数据存储。
背景技术:
在线事务处理(OLTP)指的是一类计算机数据库系统,其帮助和管理事务导向的应用。如在此使用,事务(transaction)指的是立刻处理用户请求的数据库事务。在OLTP 中,记录经常被更新并且设计重点在于能够发现少量记录并且快速有效地更新这些记录。 OLTP事务通常读取50或更少记录,并且插入和/或更新少量的记录。数据仓库数据库是机构电子存储数据的知识库。数据仓库数据库向决定支持系统提供来自操作系统(例如OLTP系统)的数据流的结构。在一些例子中,例如并行数据库, 查询可以同时读取数十亿记录。在这样的系统中,数据通常以非常大的批次(例如百万) 插入,并且与OLTP工作量相比更新的频率小得多。数据库事务具有称为ACID(单元性、一致性、隔离性、耐久性)属性的集合,其确保一组分布的读取和写入被可靠地处理。单元性确保所有的写入事务被执行或者没有写入事务被执行。一致性确保仅将有效的数据写入数据库。隔离性确保在事务过程中其他事务不能接入或看到处于中间状态的数据。可靠性确保当用户被通知成功时,写入交易将不受系统故障影响以及不会未完成。许多数据库依赖锁定来提供ACID能力,特别是对于OLTP优化的数据库。在读取和写入数据库数据之前获取锁定。然而,数据仓库数据库可以具有数十亿记录,使得维持大量锁定或者逐步升级覆盖行范围的锁定是复杂的并且花费大量开销。大量锁定也损害并发性能。锁定的可选方案是多版本的并发控制(简称为MVCC),其中数据库保持修改的记录的分开副本。这允许用户读取数据而不获得任何锁定,并且对于数据参考数据库是理想的。 MVCC是隔离性ACID保证的放宽。MVCC有时指的是快照隔离。因为OLTP记录被经常更新,不同记录的MVCC信息显著不同。OLTP数据库比数据仓库数据库小得多。结果,每个记录的MVCC开销对于OLTP是不重要的问题。另一方面,在数据仓库数据库中,每个记录的MVCC开销存在问题。在数据仓库中,几乎所有的记录具有相同的事务快照版本(MVCC)信息,因为插入事务写入大量记录并且更新是更不频繁的。该信息非常冗余并且可能变成显著的磁盘空间开销。这个开销也减小了数据读取速率。如前所述,期望提供一种改善的技术,用于实现快照隔离以优化数据仓库数据库。
发明内容
计算机可读存储介质包括可执行指令以在数据仓库内的只加表格的新的行中存储载入数据,而不更新或删除只加表格中的现有行。在数据库事务中加入新的行,该数据库事务确保可靠地处理所有事务的分布的读取和写入并且事务遵守快照隔离规则。在分离的更新表中保存与载入数据相关的数据变化。合并来自只加表格的数据和来自更新表的数据改变以提供读取数据。
当通过结合附图参考下面的具体实施方式
时,将更好地理解本发明,其中图1示出根据本发明的实施例配置的计算机系统。图2示出根据本发明的实施例使用的只加(append only)存储器机制。图3和4示出根据本发明的实施例使用的事务id处理。图5示出根据本发明的实施例使用的合并处理。相同的附图标记指的是若干视图中对应的部分。
具体实施例方式图1示出了根据本发明的实施例配置的计算机系统100。系统100包括第一组计算机102_1到102_N以及第二组计算机104_1到104_N。在一个实施例中,第一组计算机 102支持事务处理。此外,第一组计算机支持向第二组计算机104的数据转移操作,该第二组计算机可以作为数据仓库。数据仓库支持根据本发明的读取优化的数据存储。计算机102_1包括标准元件,例如中央处理单元110和通过总线114连接的输入 /输出设备112。输入/输出设备112可以包括键盘、鼠标、显示器、打印机等。网络接口电路116还连接至总线以支持与其他计算机102和/或104的通信。存储器120还连接至总线114。存储器存储事务数据库122。在线事务处理(OLTP)模块IM与事务数据库122 — 起支持在线事务处理操作。存储器120还存储提取、转换和载入(ETL)模块126。ETL模块从事务数据库122 提取数据,将其转换为适应特定标准(例如数据质量水平),并且将其载入到目标中(例如数据库或数据仓库)。由此,数据库或数据仓库中填入事务数据。数据分析模块1 可以用于分析事务数据库122中的数据。此外,数据分析模块 128可以被用于分析被转移到有计算机104支持的数据库或数据仓库的数据。结合成百个技术节点支持的数据仓库的大量并行数据库来实现本发明。通过示例,一个计算节点可以是计算机104_1,其包括标准元件,例如由总线162链接的网络接口电路166、输入/输出设备164和中央处理单元160。存储器170也连接至总线162。存储器包括根据本发明配置的只加数据存储172。 如下所述,只加数据存储172将新的行添加到表格而不更新或删除现有行。此外,通过消除事务可见信息来简化每一行,这可以每行节省许多字节的信息。事务可见信息可以由ETL 模块126消除,或者可以由与只加数据存储172相关的可执行指令消除。因为数据被直接加到只加表格(例如,数据被迫使进入磁盘存储),在事务记录中对此不进行记录。这节省了写入操作。此外,因为每行或每个数组不存在事务可见信息,那么就不存在关于要被写入的数据库块的示意比特。这节省了另一个写入操作。不使用改变的数据信息更新只加数据存储172。因为不存在更新,可以紧密打包数组。此外,不需要更新区域中的数组的索引指示。只读可见管理器174集合只加数据存储172 —起操作。特别地,只读可见管理器 174控制对只加数据存储172的访问。如其名字所暗示的,只读可见管理器174确定对于用户操作可见的只加数据存储172的区域。结合只加数据存储执行只读操作。这是因为只加数据存储不包括任何改变的数据信息(即,写入的信息)。只读可见管理器174包括与数据存储相关联的更新的信息。例如,只读可见管理器174可以包括从只加数据存储中取消(删除)行的信息和/或将新的值加入(更新)只加数据存储172的信息。由此,只读可见管理器174处理要被应用至只加数据存储的信息。合并模块176包括可执行的指令以从只加数据存储172读取可见信息。合并模块还从只读可见管理器174读取数据改变信息。合并模块176如来自只读可见管理器174的数据改变信息指定的那样从只加数据存储172删除或更新值。图2示出了用于只加数据存储的示例存储器映射。在这个例子中,N个用户写入存储器的N个不同的区域。用户可以是机器,例如在ETL处理中可操作的机器。每个区域可以被看作一个文件。因为不同的用户写入不同的区域。支持并发写入。用户_1在区域 200中具有一组承担的事务。用户_2是在区域202中插入记录的处理。用户_3是在区域 204中一组承担的事务,而用户_N是在区域206中插入记录的处理。应该知道在许多机器之间可以分布存储器存储。实际上,在许多机器之间可以分布每个用户的存储器区域或文件。图3和4提供根据本发明的实施例执行的存储器写入操作的具体例子。参考图3, 块200表示分配给第一用户的第一存储器区域,而块202表示分配给第二用户的第二存储器区域。当启动写入事务时,分配事务识别号(Xim)。XID#在事务开始时提出。该图还示出了事务完成时间(t#)。事务完成时间号越大,事务完成的时间越晚。然后观察单个物理文件,文件以提交时间顺序(commit time order)增长。另一方面,文件不以XID#排序。由此,通过排序能确定时间可见性。然而,可以通过在完成对只加存储区域写入事务时分配XID#可以执行简化的数据可见机制,如图4所示。图4示出了通过确定正确有效的文件结尾(EOF)边界可以计算数据可见性。这可以通过使得只读可见性管理器174将物理文件改变列表从最新的条目跨越到最旧的条目来完成。如果区域的完成XID小于读取请求XID,那么数据对于读取请求是可见的。另一方面,如果区域的完成XID不存在或大于读取请求XID,那么区域不可见,因为读取请求在写入操作承诺之前开始。以具有XID为10的读取请求为例。参考图4的存储器段200,最大的完成XID是 11,其大于读取请求XID。由此,XIDll和XID9之间的区域是不可见的。然而,由于XID9小于10,则剩余的数据是可见的。即,从文件的开始到XID9的数据是可见的。现在结合存储器块202考虑相同的读取请求值。这里10对应于XID10,这意味着相同的事务被写入。由此,可以读取数组。由于该段是可见的,整个存储器块202是可见的。 换句话说,当插入事务提交时,使得私有区域公开为潜在大范围的新提交的记录,使得其他事务可以读取这些记录。
只加可视管理器174可以修整为每个文件保存的信息。需要保存文件的结尾标记。由此,可以保存文件号的简单列表和文件的结尾位置。建议保持最低活性的XID的条目以提供文件的索引。由此,在保存过程中,只读可见管理器可以扫描处理中的XID的列表, 发现最小的一个并且去掉剩余的条目。图4中的信息是多余的不需要存储开始XID或时间戳。仅需要当前XID (文件的结尾位置)。图5示出了具有四个数组的只加数据存储172。该图还示出了只读可见管理器 174,其具有没有被载入到只加数据存储172中的更新信息。合并模块176包括可执行指令以合并来自只加数据存储172的信息和来自只读可见管理器174的信息以产生读取数据 500。在这个例子中,因为只读可见管理器174中的删除指令,从读取数据500消除数组1。 数组2和3包括在读取数据500中,而数组4具有更新的值7 (更新自其原始值4)。这是因为只读可见管理器174中的更新指令。读取数据500可以被读入私有存储器而不通过共享的存储器缓冲争夺。观察得出只读可见管理器174还包括多版本并发控制(MVCC)信息。只加数据存储172不包括具有每个记录的MVCC头。而是,通过只读可见管理器174保存少量MVCC头。 为了只读表格使用MVCC头来覆盖大量记录,在事务过程中插入必须在私有记录存储区域中写入。OLTP优化的存储能够在页的级别混合并发的插入记录,因为每个记录具有MVCC 头。但是因为只读表格的每个记录不具有MVCC头,记录不具有将其与其他并发插入记录相区别所需的信息。当提交插入事务时,将私有区域公开为潜在大范围新提交的记录,使得其他事务可以读取记录。由此,每个MVCC头的特征在于一定范围连续提交的记录。只加表格是连续提交范围的记录的集合。每个范围由一个MVCC头覆盖。MVCC信息允许读者确定关于读者的事务快照提交什么范围的只加表格的记录,并且仅读取这些记录范围。在范围内提交的记录的数目初始地为单个事务中插入的记录的数目。后来当运行重组命令时,这些范围被合并成较大范围的提交的记录,并且使用较少的MVCC头。尽管参考了覆盖记录范围的MVCC头,该信息仅为小的表格中存储的记录。由此, 可见系统目录OLTP优化的记录内含具有可见记录范围信息。重组操作自然地将范围合并, 因为范围由最高的行数识别(文件结尾)。即,对于系统目录的较早更新的高潮行数离开, 而留下最新的最高提交的行号作为范围的结尾。只加数据存储通常用于不经常被更新的数据,例如事实表和分区表中的分区。如果表格是大的或者需要大量载入时间,则应当使用只加数据表。另一方面,经常更新的维度表或返回较少行的小到中等尺寸的表格应该使用传统方式处理,例如OLTP优化的存储。本领域普通技术人员将认识到与本发明相关的若干优点。例如,本发明包括数据的物理存储组织,其在连续的存储中在对于彼此相邻的给定事务的表中物理地互相定位所有行。存在最小的存储开销以支持MVCC。此外,本发明支持对于远程系统的快速和递增的复制,避免不必要的缓存池高速缓冲的额开销,并且存储与表数据不协调的可见元数据。这导致读取操作的性能增强,并且允许以非常低的开销差进行快速简单的复制。这些特征允许将100千兆字节的数据仓库记录存储的存储开销从大约100千兆字节减少到大约100千字节。本发明的实施例涉及计算机存储产品,具有计算机可读介质,计算机可读介质上具有计算机代码用于执行各种计算机实施的操作。介质和计算机代码可以是为了本发明的目的特别设计和构建的,或者可以是公知的并且计算机软件领域的普通技术人员可以使用。计算机可读介质的例子包括但不局限于磁性介质例如硬盘、软盘和磁带;光介质例如 ⑶-ROM、DVD和全息设备;磁光介质;以及通常被配置为存储和执行程序代码的硬件设备例如专用集成电路(ASIC)、可编程逻辑器件(PLD)和ROM及RAM设备。计算机代码的例子包括例如由编译器产生的机器代码,以及包含由计算机使用翻译器执行的高级代码的文件。 例如,本发明的实施例可以使用Java、C++或其他面向对象的编程语言和开发工具实现。本发明的另一个实施例可以在硬件电路中实现而不是由机器可执行的软件指令实现,或者在硬件电路中结合机器可执行的软件指令实现。 为了说明的目的,前述描述使用特定的术语来提供本发明的完全理解。然而,对于本领域普通技术人员显而易见,实施本发明不需要特定细节。由此,本发明的特定实施例的前述描述仅用于示例和描述的目的。它们不是耗尽的或者限制本发明到公开的特定形式, 很明显,通过上述教导很多修改和变化是可能的。选择和描述实施例从而更好地解释本发明的宗旨和它的实际应用,由此使得本发明的普通技术人员可以更好地利用本发明,并且具有各种修改的各种实施例适于考虑的特定使用。所附的权利要求及其等效物用于限定本发明的范围。
权利要求
1.一种计算机可读存储介质,包括可执行指令,所述可执行指令用于在数据仓库内的只加表格的新的行中存储载入数据,而不更新或删除只加表格中的现有行;在分离的更新表中保存与载入数据相关的数据变化;以及合并来自只加表格的数据和来自更新表的数据变化以提供读取数据。
2.根据权利要求1所述的计算机可读存储介质,其中,用于存储的可执行指令包括允许N个不同的源将数据并行存储在N个不同文件的可执行指令。
3.根据权利要求1所述的计算机可读存储介质,其中,用于存储的可执行指令包括迫使将载入数据写入到磁盘存储但不具有事务记录条目的可执行指令。
4.根据权利要求1所述的计算机可读存储介质,还包括将事务可见信息从载入数据剥离的可执行指令。
5.根据权利要求4所述的计算机可读存储介质,其中由提取、转换和载入模块执行剥离事务可见信息的可执行指令。
6.根据权利要求4所述的计算机可读存储介质,其中,在数据仓库执行剥离事务可见信息的可执行指令。
7.根据权利要求1所述的计算机可读存储介质,其中,载入数据被压缩。
8.根据权利要求1所述的计算机可读存储介质,其中,在使用多个计算节点在并行数据仓库的并行分区表上执行可执行指令。
9.根据权利要求1所述的计算机可读存储介质,其中,从提取、转换和载入模块接收载入数据。
10.根据权利要求1所述的计算机可读存储介质,其中,数据变化包括数据删除和数据更新。
11.根据权利要求1所述的计算机可读存储介质,其中,数据变化与多版本并发控制 (MVCC)信息相关联。
12.根据权利要求11所述的计算机可读存储介质,还包括使用MVCC信息追踪只加表格中的数据可见性的可执行指令。
13.根据权利要求12所述的计算机可读存储介质,其中,MVCC信息指定最高提交的行值,该行值指示文件的结尾。
全文摘要
一种计算机可读存储介质包括可执行指令以在数据仓库内只加表格的新的行中存储载入数据,而不更新或删除只加表格中的现有行。在数据库事务中加入新的行,该数据库事务确保可靠地处理所有事务的分布的读取和写入并且事务遵守快照隔离规则。在分离的更新表中保存与载入数据相关的数据变化。合并来自只加表格的数据和来自更新表的数据改变以提供读取数据。
文档编号G06F7/00GK102473083SQ201080031023
公开日2012年5月23日 申请日期2010年7月8日 优先权日2009年7月8日
发明者克拉克·马修·麦克林内, 卢克·朗尼根, 库尔特·哈里曼, 格伦·约翰·艾什尔曼, 艾尔伦·戈尔德舒文, 艾拉·杰弗里·科恩 申请人:伊姆西公司