对基于列的数据编码的结构的高效的大规模处理的制作方法

文档序号:6594431阅读:183来源:国知局
专利名称:对基于列的数据编码的结构的高效的大规模处理的制作方法
技术领域
本发明一般涉及用于减小大规模量的数据的大小并提高处理或查询数据的速度 的、高效的基于列的数据编码。背景作为关于常规压缩的背景,当大量数据被存储在数据库中时,如当服务器计算机 收集很长时间段内的大量数据记录或事务时,其他计算机有时候希望访问该数据或该数据 的目标子集。在这一情况下,其他计算机可经由一个或多个查询运算符来查询所需数据。在 这一方面,历史上,关系型数据库已经出于此目的而演变,并且已经被用于此类大规模数据 集合,并且已经开发了指示数据库管理软件代表查询客户机从关系型数据库或一组分布式 数据库中检索数据的各种查询语言。传统上,关系型数据库是根据对应于记录的、具有字段的行来组织的。例如,第一 行可能包括关于其对应于各列的字段的各种信息(姓名1、年龄1、地址1、性别1等),这 些信息定义了该第一行的记录;而第二行可能包括关于第二行的各个字段的各种不同信息 (姓名2、年龄2、地址2、性别2等)。然而,传统上,客户机对巨大量的数据的查询或对本地 查询或本地商业智能检索巨大量的数据受到限制,因为它们无法满足实时或近乎实时的要 求。尤其是在客户机希望具有来自服务器的最新数据的本地副本的情况下,在给定有限的 网络带宽和有限的客户机高速缓存存储的情况下,从服务器传输这样大规模量的数据对于 许多应用迄今仍是不切实际的。例如,当前,扫描并聚集各自具有大约160字节数据的6亿行数据(大约100吉字 节数据),使用两个“按……分组”操作和四个聚集操作作为样本查询,如行业标准TPC-H度 量所测量的最快的已知关系型数据库管理系统(RDBMS)可以在大约39. 9秒内递送并处理 这些数据。这表示了以大约2. 5( /秒的位速率的,或大约1500万行/秒的递送。然而,现 有系统的当今状态从成本观点来看需要大约$200,000,这对于大多数用户而言是很高的进 入障碍。此外,尽管很快,但39. 9秒并未开始满足最严密的实时需求和要求,并且为改进留 下了很大的空间。作为进一步的背景,由于将不同的行概念化为不同记录对于作为体系结构的一部 分的关系型数据库是很方便的,因此由于如何组织关系型数据库的本质,用于减小数据集 大小的技术迄今已聚焦于行。换言之,行信息通过将每一记录的所有字段一起保持在一行 上来保存每一记录,并且用于减小聚集数据的大小的传统技术将字段保持在一起来作为编 码其自身的一部分。行程长度编码(RLE)是一种常规形式的数据压缩,其中数据行程,即其中相同的 数据值出现在许多相继的数据元素中的序列,作为单个数据值和计数来存储,而非作为原 始行程来存储。实际上,对于大量的E,定义行程长度“6个E”,而非列出“EEEEEE”来作为 一条目。RLE对于包含许多这样的行程的数据是有用的,例如,相对简单的图形图像,如图 标、线条画和动画。然而,在数据倾向于在各个值或各个像素等之间都是唯一的或者另外地 在每一处几乎都是唯一的情况下,已知RLE较低效。由此,有时候RLE本身不会有助于高效
4的数据减小,从而浪费了珍贵的处理时间而只有极少或没有增益。已经应用于数据的另一种类型的压缩包括字典编码,该编码通过经由与所得数据 一起使用的字典将字段数据值权标化(tokenize)为诸如顺序整数等采用紧凑表示的减小 的位集以从该紧凑表示中获得原始字段数据值来操作。已应用于数据的另一类型的压缩包括值编码,该编码通过对数据执行某种启用更 紧凑表示的变换,例如对数据应用可逆数学函数,将实数转换成整数,这减少了表示数据所 需的位数。例如,诸如浮点数等实数在存储器中比整数值占用更多空间,且因此可逆地将浮 点值转换成整数值减小了存储大小,且因此使用该数据的处理器可在需要时导出浮点值。已经应用于数据的还有一种类型的压缩包括位打包,该位打包对不同数据值的数 量进行计数或确定不同值所跨越的范围,然后用优化函数所确定的最小数量的位来表示该 组数量或值。例如,可能给定列的每一字段仅跨有限的范围,且因此代替如最初为该字段所 定义的那样用例如10个位来表示每一值,结果可以是只需要6个位来表示值。位打包根据 数据的更高效的6位表示来还原值。这些常规压缩技术中的每一个已经独立地例如经由行集合运算符来应用于关系 型数据库的按行组织的信息,但这些技术中的每一个遭受缺点,因为没有一种技术足以解 决满足从数据库快速地将巨大量的数据递送到对于最新数据有实时要求的消费客户机的 问题。主要地,常规的方法聚焦于减小所存储的数据的大小以最大化对于给定的盘大小或 存储限制能存储的数据量。然而,由于对必须被传送来完成询问的压缩存储结构的数据密集型解码或整体式 大小,这些技术本身实际上可能最终会增大根据对数据的扫描或查询而花费在数据上的处 理时间量。例如,采用许多常规的压缩技术,压缩数据所花费的时间越长,在大小方面所达 到的节省就越大;然而另一方面,用此类常规压缩方案压缩数据所花费的时间越长,则作为 结果解压并处理所花费的时间也越长。因此,常规系统无法提供不仅压缩数据,而且还以使 得对数据的查询、搜索和扫描更快的方式来压缩数据的数据编码技术。另外,网络传输带宽的限制固有地限制了客户机能多快地接收压缩数据,从而在 对巨大量的数据的请求上施加了瓶颈。因此,期望提供一种在数据大小减小和查询处理速 度方面达到同时增益的解决方案。还期望提供一种允许在用于大量数据的基于查询的系统 中进行高效压缩和处理的改进的数据编码技术。当今的关系型数据库和对应的压缩技术的上述缺点仅旨在提供常规系统的一些 问题的概览,并且不旨在是穷尽性的。常规系统的其他问题以及此处所描述的各非限制性 实施例的对应的益处可以在审阅以下描述后变得更显而易见。概述此处提供了简化概述以帮助能够对以下更详细的描述和附图中的示例性、非限制 性实施例的各方面有基本或大体的理解。然而,本概述并不旨在作为详尽的或穷尽的概观。 相反,本概述的唯一目的是以简化的形式来提出与一些示例性非限制性实施例相关的一些 概念,作为以下各实施例的更为详细的描述的序言。描述了对基于列的数据编码的结构的处理的各实施例。各非限制实施例允许在大 规模数据存储上进行高效的查询处理。接收查询所蕴含的列子集来作为对应于不同数据列 的整数编码的且压缩的值序列。基于在数据子集的整数编码的且压缩的值序列中出现的压缩类型的转变来定义跨列子集的查询处理桶。然后在存储器中以按桶计的方式并基于如以 下更详细定义的当前桶的类型,例如,纯桶、单杂质桶、双杂质桶等,来处理查询。数据的基于列的组织以及混合的行程长度编码和位打包技术的应用允许实时的 高效且快速的查询响应。混合数据减小技术与基于列的组织相呼应的协同作用,加上归功 于基于列的紧凑表示的扫描和查询效率中的增益,以常规系统的一小部分成本得到了显著 改进的数据压缩,例如,以少于最快的已知常规系统的成本的1/10的成本但快了 400倍。这些和其他实施例在下面将更详细地描述。附图简述各非限制性实施例参考附图来进一步描述,附图中各非限制性实施例参考附图来进一步描述,附图中

图1是示出基于列的编码技术以及对已编码数据的查询的存储器内客户机侧处 理的一般框图;图2是示出采用基于列的编码技术的编码装置的示例性、非限制实现的框图;图3是示出用于向大规模数据应用基于列的编码的示例性、非限制过程的流程 图;图4是原始数据的基于列的表示的图示,其中记录被分解成其各自的字段,相同 类型的字段然后被串行化来形成向量;图5是例示记录数据的列化的非限制框图;图6示出了对关于查询所接收到的列数据的存储器内客户机侧处理的工作可在 多个核之间拆分,以便共享处理跨列组织的大量行的负担;图7是示出字典编码的概念的非限制框图;图8是示出值编码的概念的非限制框图;图9是示出在混合压缩技术的一方面中应用的位打包的概念的非限制框图;图10是示出在混合压缩技术的另一方面中应用的行程长度编码的概念的非限制 框图;图11是示出采用基于列的编码技术的编码装置的示例性、非限制实现的框图;图12是示出根据一实现的用于向大规模数据应用基于列的编码的示例性、非限 制过程的流程图;图13-14是执行贪婪行程长度编码压缩算法的方式的示例性图示,包括任选地应 用阈值节省算法来应用一替代压缩技术;图15是进一步示出贪婪行程长度编码压缩算法的框图;图16是示出混合的行程长度编码和位打包压缩算法的框图;图17是示出基于总计的位节省分析来自适应地提供不同类型的压缩的混合压缩 技术的应用的流程图;图18是示出根据本发明的各实施例的基于列的编码的示例执行来减小总体数据 大小的框图;图19示出了关于纯和非纯区域之间的转换(以及相反)可应用于基于列的已编 码数据的桶化过程;图20示出了根据一实施例的关于列的桶化的非纯等级;
图21示出了将查询/扫描运算符高效地划分成对应于与当前查询/扫描相关的 列中存在的不同类型的桶的子运算符;图22示出了基于列的编码的能力,其中所得的纯桶表示数据的超过50%的行;图23示出了用于以标准化方式指定对数据的查询的、用于查询语言的示例性、非 限制查询构件块;图M示出了对消费客户机设备所请求的对于可经由网络获得的大规模数据的样 本查询的代表性处理;图25是示出根据各实施例的用于根据列来编码数据的过程的流程图;图沈是示出根据一个或多个实施例的用于位打包整数序列的过程的流程图;图27是示出用于对数据的基于列的表示进行查询的过程的流程图;图28是表示其中可实现此处所描述的各实施例的示例性、非限制性联网环境的 框图;以及图四是表示其中可实现此处所描述的各实施例的一个或多个方面的示例性、非 限制性计算系统或操作环境的框图。详细描述概览如在背景中所讨论的,特别地,由于当前压缩技术的限制、网络上的传输带宽的限 制以及本地高速缓冲存储器的限制,常规系统不足以处理在存储器内非常快地从服务器或 “云”中的其他数据存储读取巨大量的数据的问题。例如,每秒读取相当于1. 5T字节的数据 将是非常好的技能,且目前成本是非常高的,其中最昂贵的常规解决方案以该速度的一小 部分来操作( 2. 5Gb/秒)。因此,在各非限制实施例中,向大量数据应用面向列的编码技术来压缩数据且同 时组织数据以使得稍后对该数据的扫描/搜索/查询运算显著地更高效。作为以下内容的 路标,首先描述各实施例的概览,然后更详细地讨论示例性的、非限制任选实现来提供补充 的上下文和理解。首先,描述了用于对大量数据打包的基于列的编码技术,包括经由混合压 缩技术自适应地在行程长度编码的性能益处和位打包的性能益处之间进行折衷的示例性 实施例。在一示例性、非限制实施例中,在将原始数据列化成一组值序列,对每一列有一个 值序列(例如,串行化数据列的各字段,例如,所有“姓”串行化为一个序列,或所有“Po订单 号”串行化为另一序列,等等)之后,对该数据进行“整数化”以便形成每一列的整数序列, 该整数序列根据字典编码、值编码或字典编码和值编码一起以任意次序来统一地表示。该 整数化阶段得到统一表示的列向量,并且本身能达到显著的节省,尤其是在数据中记录了 诸如文本串等长字段的情况下。接着,检查所有的列,压缩阶段迭代地将行程长度编码应用 于任何列的行程,这将导致对整体的列向量集合的最大量的整体大小节省。如上所述,打包技术是基于列的,其不仅提供了优秀的压缩,而且该压缩技术本身 有助于在一旦将压缩的整数列向量递送到客户机侧之后快速地处理数据。在各非限制实施例中,如图1所示,提供了基于列的编码器/压缩器110来用于压 缩大规模数据存储100并且还用于使得结果对于数据的扫描/搜索/查询运算显著更高 效。响应于数据处理区C中的数据消费设备120的查询,压缩器110通过数据传输区B的传输网络115来发送涉及该查询的压缩列。该数据被递送到存储器内存储130,且因此对 相关列的解压可以由数据处理区C中的解码器和查询处理器140来非常快地执行。在这 一点上,向涉及该查询的解压的列所表示的行应用桶走查来获得额外的高效处理层。在桶 走查期间充分利用行的相似性,使得重复动作被一起执行。如以下更详细描述的,当以具有 196GbRAM的标准或商用服务器将该技术应用于真实的样本数据,如大量的web通信数据或 交易数据时,以大约每秒1. 5T字节数据实现了服务器数据的查询/扫描,这是超越常规系 统的能力的极大飞跃,却只花费了显著降低的硬件成本。尽管可被压缩的具体数据类型决不限于任何特定数据类型,且取决于对巨大量的 数据的大规模扫描的情形数量类似地是无限的,但在实时商业智能应用中将这些技术应用 于商业数据或记录的商业重要性是不容置疑的。该压缩技术所实现的查询处理速度的极大 获益将实时报告和趋势标识带到了一个全新的水平。基于列的数据编码如在概览中所提到的,在各实施例中可向大量数据应用面向列的编码和压缩来压 缩且同时组织数据以使得稍后对数据的扫描/搜索/查询运算显著更高效。在各实施例中, 为了开始编码和压缩,最初将原始数据重新组织为列化的数据流。编码器的一个实施例在图2中概括地示出,其中在200处,从存储接收或读取原始 数据,此时编码装置和/或编码软件250在210处将数据组织为列。在220处,将列流变换 成统一向量表示。例如,可应用整数编码来将像姓名或地点这样的各个条目映射到整数。这 一整数编码可以是字典编码技术,该技术可将数据减小2倍到10倍。另外,或另选地,值编 码可在大小上提供1倍到2倍的减小。这在220处为每一列留下了一整数向量。这一性能 提高对所压缩的数据敏感,并且这一大小减小范围仅作为非限制估计来给出,以便给出不 同步骤的相对性能的一般概念。然后,在230处,可进一步压缩已编码的统一列向量。在一个实施例中,应用行程 长度编码技术,该技术确定所有列上的最频繁的值或值的出现,在这一情况下,为该值定义 一行程长度,且该过程迭代直到行程长度编码的益处为边际效益的时刻,例如对于在列中 具有至少64次出现的重复出现的整数值。在另一实施例中,检查应用行程长度编码所得的位节省,并且在该迭代过程的每 一步,通过应用对行程长度的重新排序和定义来选择各列中达到最大位节省的列。换言之, 由于目标是用尽可能少的位来表示列,因此在每一步,在提供最大节省的列处最大化了位 节省。就这一点而言,行程长度编码本身可以提供显著的压缩改善,例如100倍或更多。在另一实施例中,在230处应用混合压缩技术,该技术采用了位打包和行程长度 编码的组合。应用检查两种技术的潜在节省的压缩分析,并且在例如认为行程长度编码导 致不足够的净位节省的情况下,则向列向量的其余值应用位打包。因此,一旦根据一个或 多个准则确定行程长度节省是最小的,则该算法对于该列的其余相对唯一的值切换到位打 包。例如,在列中所表示的值变得相对唯一(其中非独唯一或重复值已经被行程长度编码) 的情况下,可对这些值应用位打包而非行程长度编码在240处,输出的是对应于根据上述 技术编码并压缩的列值的一组压缩的列序列。图3概括地根据以原始数据300的输入为开始的流程图描述了上述方法。在310, 如上所述,根据原始数据300的列来重新组织数据,而不是像常规系统那样将记录的每一字段保持在一起。例如,如图4所示,每一列形成一独立的序列,如序列C401、C402、C403、 C404、C405、C406。在零售交易数据是该数据的情况下,例如,列C401可能是产品价格的串, 列C402可能表示购买日期的串,列C403可能表示商店位置,等等。考虑到计算机系统所收 集的大多数真实世界数据在所表示的值方面并不是非常不同的,因此基于列的组织维持了 数据类型内的固有相似性。在320处,基于列的数据经历一个或多个转换来形成统一表示 的基于列的数据序列。在一个实施例中,步骤320经由字典编码和/或值编码将每一列简 化为数据的整数序列。在330处,用行程长度编码过程以及可任选地用位打包来压缩基于列的序列。在 一个实施例中,行程长度编码过程对所有各列中达到最高压缩节省的列的列数据值序列重 新排序。由此,行程长度编码达到最高节省的列被重新排序来对由行程长度编码替换的共 同值进行分组,然后为重新排序的组定义行程长度。在一个实施例中,跨各列迭代地应用行 程长度编码算法,在每一步检查每一列来确定将达到最高压缩节省的列。当根据一个或多个准则应用行程长度编码的益处变为边际效益或最小,如不足够 的位节省或节省小于一阈值时,则其应用的益处相应地下降。结果,该算法可以停止,或者 对于每一列中未被行程长度编码来编码的剩余值,可应用位打包来进一步降低对这些值的 存储要求。在组合中,混合行程长度编码和位打包技术可能是强大的,以便减小列序列,尤 其是具有序列中表示的有穷或有限数量的值的那些序列。例如,字段“性别”仅有两个字段值男和女。采用行程长度编码,这一字段可被相 当简单地表示,只要数据是根据如上所述的原始数据的基于列的表示来编码的。这是因为 背景中所描述的聚焦于行的常规技术实际上通过将每一记录的字段保存在一起而破坏了 列数据的共同性。接在诸如“21”等年龄值后面的“男”不如仅仅接在“男”或“女”值后面 的“男”值压缩得那样好。由此,数据的基于列的组织启用了高效的压缩,且该过程的结果 是数据340的一组离散的、统一表示且压缩的、基于列的序列。图5给出了基于实际数据的列化过程的示例。图5的示例针对4个数据记录500、 501、502和503,但这仅出于图示简单的目的,因为本发明可适用于上万亿字节的数据。一 般而言,当计算机系统记录交易数据时,它是逐个记录地记录的,且一般按照接收记录的时 间次序来记录。由此,数据实际上具有对应于每一记录的行。在图5中,记录500具有带有值“Jon”511的姓名字段510、带有值“555_1212”521 的电话字段520、带有值“j0n@g0”531的电子邮件字段530、带有值“2 1st St" 541的地址 字段讨0、以及带有值“Wash” 551的州字段550。记录501具有带有值“Amy”512的姓名字段510、带有值“ 123_4567”522的电话字 段520、带有值“Amy@WO”532的电子邮件字段530、带有值“ 1 2nd Pl”542的地址字段M0、 以及带有值“Mont” 552的州字段550。记录502具有带有值“Jimmy”513的姓名字段510、带有值“765-4321 ”523的电话 字段520、带有值“Jim@SO”533的电子邮件字段530、带有值“9FlyRd,、43的地址字段M0、 以及带有值“0reg”553的州字段550。记录503具有带有值“Kim”514的姓名字段510、带有值“987_6M3”524的电话字 段520、带有值“Kim@to”534的电子邮件字段530、带有值“91Y St"544的地址字段M0、以 及带有值“Miss” 554的州字段550。
当行表示560被列化为重新组织的列表示570时,代替具有各自有5个字段的4 个记录,形成对应于这些字段的5个列。由此,列1对应于带有值“Jon”511、之后是值“Amy”512、之后是值“Jimmy”513、 之后是值“Kim”514的姓名字段510。类似地,列2对应于带有值“555-1212” 521、之后是 值 “ 123-4567” 522、之后是值 “765-4321 ” 523、之后是值 “987-6M3” 524 的电话字段 520。 列3对应于带有值“ jonOgo ” 531、之后是值“AmyOw0,,532、之后是值“ Jimfeo,,533、之后是 值“Kim@to”534的电子邮件字段530。进而,列4对应于带有值“2 1st St” Ml、之后是值 “1 2nd Pl,、42、之后是值“9 Fly Rd” M3、之后是值“91 Y St” M4的地址字段M0。以 及,列5对应于带有值“Wash”551、之后是值“Mont”552、之后是值“0reg”553、之后是值 “Miss” 554 的州字段 550。在一个实施例中,当对应于上述技术的压缩列被加载到消费客户机系统上的存储 器中时,该数据跨每一列Cl、C2、C3、C4、C5、C6来分段,以形成段600、602、604、606等等。 在这一点上,由于每一段可包括数亿行或更多,并行化提高了例如根据查询对数据的处理 或扫描速度。每一段的结果被聚集,以形成一组完整的结果,而每一段被分开处理。图7是示出此处所描述的实施例采用的字典编码的非限制示例的框图。典型的城 市列700可包括值“kattle”、“L0S AngeleW'Redmond”等等,且这些值可以不断地重复 自己。采用字典编码,已编码的列710包括对应于每一不同值的码元,如每一值一个唯一整 数。由此,代替多次表示文本“Seattle”,存储整数“1”,这要紧凑得多。越经常重复自己的 值可以用到最紧凑表示(最少位、最少位变化等)的映射来枚举。仍作为字 典720的一部分被包括在编码中,但是“kattle”只需被表示一次而非许多次。已编码列 710的存储节省远超过了字典720所蕴含的额外存储。图8是示出此处所描述的实施例采用的值编码的非限制示例的框图。列800表示 销售额,且包括典型的包括小数的美元和美分表示,这涉及浮点存储。为了使存储更紧凑, 采用值编码来编码的列810可向其应用因子10,例如102,以便使用整数代替浮点值来表示 各值,其中整数需要较少的位来存储。该变换可类似地应用于减少表示值的整数数量。例 如,列中始终以百万结束的值,如2,000, 000、185,000, 000等都可除以IO6来将值减小到更 紧凑的表示2、185等。图9是示出此处所描述的实施例采用的位打包的非限制示例的框图。列900表示 通过字典和/或值编码来整数化的订单量,但保留了每行32位来表示这些值。位打包试图 对段中的值使用最少数量的位。在该示例中,可使用10位/行来表示值590、110、680和 320,这表示了对于被应用来形成列910的第一层位打包的充分节省。位打包还可移除共同的10 (或其他数字)的幂来形成第二打包列920。由此,如果 值如同该示例中那样以0结束,这意味着不需要使用3位/行来表示订单量,且将存储结构 减少到7位/行。类似于字典编码,位节省远超过了由于将数据恢复到列900所需的元数 据(如使用10的几次幂)而引起的任何增加的存储。作为形成第三打包列930的另一层位打包,可以认识到它采取7位/行来表示像 68那样的值,但是由于最低值是11,则范围可位移11 (将每一个值减去11),因而最高数是 68-11 = 57,这可以仅用6位/行来表示,因为有26 = 64个值可能性。尽管图9表示了打 包层的特定次序,但各层可用不同的次序来执行,或者另选地,打包层可被选择性地移除或用其他已知的位打包技术来补充。图10是示出此处所描述的实施例采用的行程长度编码的非限制示例的框图。如 图所示,由于值的重复,诸如列1000等表示订单类型的列可用行程长度编码来高效地编 码。列值行程表1010将订单类型映射到订单类型的行程长度。尽管表1010的元数据的表 示上允许些许变化,但基本思想是行程长度编码对于100的行程长度可给出50倍的压缩, 这要优于位打包一般可为同一数据集提供的增益。图11是此处提供的一实施例的概括框图,其中将图7-10的技术合成到统一编码 和压缩方案的各实施例中。原始数据1100根据列组织1110被组织为列流。字典编码1120 和/或值编码1130提供了如上所述的相应大小减小。然后,在混合RLE和位打包阶段,压 缩分析1140在确定是应用行程长度编码1150还是位压缩1160时跨各列检查潜在的位节省。在图12的流程图中对图11进行扩展。在1200,根据固有行表示来接收原始数 据。在1210,将数据重新组织为列。在1220,应用字典和/或值编码来第一次减小数据。 在1230,可应用如上所述的混合RLE和位打包技术。在1M0,存储基于压缩的且编码的列 的数据序列。然后,当客户机请求全部基于压缩的已编码列的数据序列或请求其一子集时, 在1250,将受影响的列发送到作出请求的客户机。图13是执行混合压缩技术的压缩分析的示例性方式的框图。例如,从列1300中计 算直方图1310,该直方图表示值的出现频率,或各个行程长度的出现频率。任选地,可设置 阈值1312,使得行程长度编码不应用于其中行程长度增益可能最小的、数量上较少的值的 重复出现。另选地,或另外地,位节省直方图1320不仅表示了值的出现频率,而且还表示了 将通过应用该混合压缩模型的压缩技术中的一种或另一种来达到的总的位节省。另外,再 一次可任选地应用阈值1322以便画出其中行程长度编码益处不足以应用该技术的线。取 而代之,可对列的这些值应用位打包。另外,任选地,在应用列1300的行程长度编码之前,可对列1300重新排序来将所 有最相似的值分组为经重新排序的列1300。在该示例中,这意味着将A分组在一起以供行 程长度编码,并留下B进行位打包,因为对于2个B值,频率和总的位节省都未证明行程长 度编码是合理的。在这一点上,可向其他列应用重新排序来保持记录数据处于锁定步骤,或 者它可经由关于如何撤消行程长度编码的重新排序的列专用元数据来记住。图14示出了一相似的示例,其中向相似的列1400应用压缩分析,但是更改了每一 次替换行程长度的位节省,使得现在,根据混合压缩分析判断要对2个B值执行行程长度编 码(即使是在10个A值之前),因为2个B值导致更高的净位节省。在这一点上,与贪食 者从具有不同食物的10个不同盘子中进行选择非常相像,应用行程长度编码是“贪婪的”, 这表现在它在每一步都跨所有列寻找大小减小方面的最高增益。类似于图13,可构建频率 直方图1410和/或位节省直方图1420数据结构,以便作出关于是应用如所描述的行程长 度编码还是位打包的确定。同样,在决定是否采取RLE或位打包时可使用任选阈值1412和 1422。经重新排序的列1430可帮助行程长度编码定义更长的行程长度,且因此达到更大的 行程长度节省。图15示出了行程长度编码的“贪婪”方面,该方面在每一步跨所有列来检查哪里 达到最高位节省,并且可任选地包括将列重新排序为列1530、1532等来最大化行程长度节省。在某一点,行程长度节省可能相对不重要,因为值是相对唯一的,此时停止行程长度编 码。在混合实施例中,向其余值的范围应用位打包,这在图16中示出。在这一点上,应 用混合压缩技术,经重新排序的列1600包括RLE部分1610和位打包部分1620,它们一般分 别对应于重复出现的值和相对唯一的值。类似地,经重新排序的列1602包括RLE部分1612 和BP部分1622。在图17所示的一个实施例中,混合算法计算来自位打包的位节省和来自行程长 度编码的位节省1700,然后在1710将来自位打包的位节省和来自行程长度的位节省进行 比较或检查这两种节省以便在1720确定哪一压缩技术最大化位节省。上述编码和压缩技术的示例性执行示出了可在真实数据样本1801、1802、1803、 1804、1805、1806、1807和1808上达到的显著增益,其范围在大约9倍到99. 7倍的性能改 进,且特别地取决于特定的大规模数据样本中的相对的值重复量。图19是示出此处在各实施例中描述的列化、编码和压缩过程的最终结果的框图。 在这一点上,每一列C1、C2、C3、…、CN包括具有向其应用行程长度编码的同类重复值的区 域,以及图中标记为“其他”的、表示列中的各组异类值的其他区域。具有由行程长度定义 的相同的重复值的区域是纯区域1920,且具有多样化值的区域是非纯区域1910,如图例中 所指示的。在这一方面,当一个人的眼睛“走查”各列时,作为此处讨论的压缩技术的固有 好处,浮现数据上的新视图。跨所有各列,在非纯区域1910和纯区域1920之间或从相反方向的第一转换点,按 照从第一行到转换点处的行的各行来定义桶。在这方面,桶1900沿着各列向下在每一转换 点处定义,如虚线所示。桶1900由各转换之间的行来定义。图20示出了基于跨特定行的纯和非纯区域的数量来为桶定义的命名法。纯桶 2000是没有非纯区域的桶2000。单非纯桶2010是跨该桶的各行具有1个非纯区域的桶。 双非纯桶2010是跨该桶的各行具有2个非纯区域的桶。三非纯桶具有3个非纯区域,以此 类推。由此,在示例性数据加载过程期间,以适合稍后的高效查询的表示来对数据进行 编码、压缩、存储,并且压缩技术可以是所使用的查找一段内的数据分布并试图比位打包更 频繁地使用RLE压缩的技术。在这一点上,RLE对于压缩和查询都提供了以下优点=(A)RLE 通常比位打包需要少得多的存储,以及(B) RLE包括高效地“快进”通过数据范围同时执行 诸如“按……分组”、“过滤”和/或“聚集”等查询构件块运算的能力;这些运算可以在数学 上变成对按列组织的数据的高效运算。在各非限制实施例中,代替在对同一段中的另一列进行排序之前一次对一个列进 行排序,该压缩技术基于数据的分布来对数据行进行聚类,且由此增加了在段中对RLE的 使用。如此处所使用的,术语“桶”用于描述行的聚类,为了避免疑惑,该术语应被认为与术 语“分区”不同,分区是定义明确的在线分析处理(OLAP)和RDBMS概念。以上讨论的技术由于认识到数据分布是歪斜的且在大量数据中很少存在均勻分 布,因而是有效的。在压缩用语中,算术编码通过以下来充分利用这一点以总计使用较少 的位为目的,使用较少的位来表示频繁使用的字符,并使用较多的位来表示不频繁使用的 字符。
采用位打包,利用固定大小的数据表示来进行较快的随机存取。然而,此处描述的 压缩技术还具有使用RLE的能力,这提供了对于较频繁的值使用较少的位的方式。例如,如 果原始表(为图示简明起见,包括一个列“Coll”)表现如下
权利要求
1.一种用于处理数据的方法,包括响应于查询,接收2700所述数据的子集作为对应于所述数据的不同列的整数编码的 且压缩的值序列;基于所述数据的子集的整数编码的且压缩的值序列的任一个中出现的压缩类型的变 化来定义跨作为整数编码的且压缩的值序列接收的所述数据的子集的处理桶2710 ;以及在处理所述整数编码的且压缩的值序列以返回查询结果时,基于当前桶的类型来执行 由所述查询定义的运算2720。
2.如权利要求1所述的方法,其特征在于,所述接收2700包括在存储器中接收所述子 集以便进行对所述数据的子集的快速的存储器运算和处理。
3.如权利要求1所述的方法,其特征在于,所述接收2700包括从关系型数据库接收所 述数据的子集,并且所述数据的不同列对应于所述关系型数据库的列。
4.如权利要求1所述的方法,其特征在于,所述执行2720包括基于跨所述序列的所述 桶中的值的不同部分是根据第一类型的压缩还是第二类型的压缩来压缩的,来执行所述查 询所定义的运算。
5.如权利要求1所述的方法,其特征在于,所述执行2720包括基于跨所述序列的所述 桶中的值的不同部分是根据行程长度编码压缩还是位打包压缩来压缩的,来执行所述查询 所定义的运算。
6.如权利要求1所述的方法,其特征在于,所述执行2720包括基于有多少跨所述序列 的所述桶中的值的不同部分是根据位打包压缩来压缩的,来执行所述查询所定义的运算。
7.如权利要求6所述的方法,其特征在于,所述执行2720包括基于是否(1)跨所述序 列的所述桶中的值的不同部分都是根据行程长度编码压缩来压缩的,即定义了纯桶,(2)除 了一个部分之外都是根据行程长度编码来压缩的,即定义了单非纯桶,或(3)除了两个部 分之外都是根据行程长度编码来压缩的,即定义了双非纯桶,来执行所述查询所定义的运 笪弁。
8.如权利要求1所述的方法,其特征在于,所述执行2720包括基于所处理的当前桶的 类型来执行所述查询所定义的运算,以及按序处理桶。
9.如权利要求1所述的方法,其特征在于,所述执行2720包括通过利用多个处理器以 及从所述序列划分的对应数量的段来并行化所述查询所定义的运算,每一段由一不同处理 器来处理。
10.如权利要求1所述的方法,其特征在于,所述执行2720包括在处理所述整数编码的 且压缩的值序列以返回查询结果时,基于所处理的当前桶的类型来执行所述查询所定义的 逻辑或查询片运算,或其中已指定了关系的多个表之间的查询联接运算。
11.如权利要求1所述的方法,其特征在于,所述执行2720包括在处理所述整数编码的 且压缩的值序列以返回查询结果时,基于所处理的当前桶的类型来执行所述查询所定义的 过滤运算、分组运算、代理列运算或聚集运算中的至少一个。
12.如权利要求11所述的方法,其特征在于,过滤运算、分组运算、代理列运算或聚集 运算中的至少一个在对于当前桶的各阶段中彼此分开地处理2720,且处理按桶发生。
13.一种用于处理数据的设备,包括高速存储器内存储130,用于存储数据的子集,所述数据的子集是作为对应于所述数据的不同字段的整数编码的且压缩的值序列而接收的;以及至少一个查询处理器140,所述至少一个查询处理器根据桶走查过程来处理对所述数 据的子集的查询,所述桶走查过程基于从行程长度编码到位打包的压缩算法转换或相反的 转换来定义跨所述值序列的桶,然后基于跨正被处理的当前桶的序列应用的压缩类型,根 据为所述当前桶确定的桶类型来按桶处理对所述数据的子集的查询。
14.如权利要求13所述的设备,其特征在于,所述压缩类型包括行程长度编码和位打包。
15.如权利要求13所述的设备,其特征在于,所述至少一个查询处理器140基于所述桶 类型来处理对所述数据的子集的查询的过滤运算。
16.如权利要求13所述的设备,其特征在于,所述至少一个查询处理器140基于所述桶 类型来处理对所述数据的子集的查询的分组运算。
17.如权利要求13所述的设备,其特征在于,所述至少一个查询处理器140基于所述桶 类型来处理对所述数据的子集的查询的代理列运算。
18.如权利要求13所述的设备,其特征在于,所述至少一个查询处理器140基于所述桶 类型来处理对所述数据的子集的查询的聚集运算。
19.如权利要求13所述的设备,其特征在于,所述至少一个查询处理器140基于不同的 桶类型来跨所有桶确定查询结果。
20.如权利要求13所述的设备,其特征在于,还包括用于将所述整数编码的且压缩的 值序列解码为所表示的数据字段的解码器140。
21.一种数据查询装置,包括用于按照对应于不同数据列的整数编码的且压缩的值序列检索115、200查询所蕴含 的列子集的装置;用于基于出现在数据子集的整数编码的且压缩的值序列中的压缩类型的变化来定义 跨所述列子集的查询处理桶140的装置;以及用于在存储器中以按桶计的方式处理140所述查询且在处理所述整数编码的且压缩 的值序列时基于当前桶的类型来处理所述查询的装置。
全文摘要
本发明涉及对大规模数据存储的高效查询处理。一示例性过程包括按照对应于不同数据列的整数编码的且压缩的值序列来检索查询所涉及的列的子集,基于出现在该数据子集的整数编码的且压缩的值序列中的压缩类型的变化来定义跨列子集的查询处理桶,以及在存储器中以按桶计的方式处理查询并且当处理该整数编码的且压缩的值序列时基于当前桶的类型来处理查询。数据的基于列的组织以及混合的行程长度编码和位打包技术的应用允许实时的高效且快速的查询响应。
文档编号G06F17/30GK102112986SQ200980130978
公开日2011年6月29日 申请日期2009年7月31日 优先权日2008年7月31日
发明者A·耐茨, C·佩特克勒斯克 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1