CN102893265A - 管理可独立访问的数据单元的存储 - Google Patents
管理可独立访问的数据单元的存储 Download PDFInfo
- Publication number
- CN102893265A CN102893265A CN2010800667354A CN201080066735A CN102893265A CN 102893265 A CN102893265 A CN 102893265A CN 2010800667354 A CN2010800667354 A CN 2010800667354A CN 201080066735 A CN201080066735 A CN 201080066735A CN 102893265 A CN102893265 A CN 102893265A
- Authority
- CN
- China
- Prior art keywords
- data
- key assignments
- key
- data cell
- piece
- 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.)
- Granted
Links
Images
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- 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/24553—Query execution of query operations
- G06F16/24561—Intermediate data storage techniques for performance improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
管理数据包括:接收至少一组可独立访问的数据单元(200),每个数据单元由键值标识,所接收的数据单元的键值被排序;以及处理数据单元以在数据存储系统(100)中存储。所述处理包括:存储多个数据块(202);对于每个块提供包括条目的索引(114);以及生成与所存储的块关联的多个筛选数据结构(116)以便确定包括给定键值的数据单元被包括在该组可独立访问的数据单元中的概率,所述多个筛选数据结构包括用于筛选所述多个块中的一个或更多个块的第一集合的第一筛选数据结构、和用于筛选所述多个块中的一个或更多个块的第二集合的第二筛选数据结构。
Description
技术领域
本发明涉及管理可独立访问的数据单元的存储。
背景技术
数据库系统可以以多种格式中的任何一种格式来存储可独立访问的数据单元或者“记录”。每个记录可以对应于诸如信用卡交易之类的逻辑实体,并且典型地具有用于唯一地标识记录的关联主键(key)。记录可以包括与记录格式的各个字段相关联的多个值。记录可以被存储在一个或多个文件中(例如,平面文件(flat files)或结构化数据文件(structured data files),诸如XML文件)。在压缩数据库系统中,独立的记录或者记录内的值在存储时可以被压缩,并且在被访问时可以被解压缩以减少系统的存储需求。
发明内容
在一个方面中,一般地,一种管理数据的方法包括:在输入设备或端口上接收至少一组可独立访问的数据单元,每个数据单元由键值标识,所接收的数据单元的键值被排序以使得:标识在给定的第二数据单元之前接收的给定的第一数据单元的键值在排序次序中比标识给定的第二数据单元的键值出现得更早;以及处理数据单元以在数据存储系统中存储。所述处理包括:存储多个数据块,所述块中的一个或更多个的每个是通过组合多个数据单元而生成的;对于每个块提供包括条目的索引,其中所述条目中的一个或更多个使得能够基于所提供的键值来定位包括与包括所提供的键值的键值范围相对应的数据单元的块;以及生成与所存储的块关联的多个筛选(screening)数据结构以便确定包括给定键值的数据单元被包括在该组可独立访问的数据单元中的概率,所述多个筛选数据结构包括用于筛选所述多个块中的一个或更多个块的第一集合的第一筛选数据结构、和用于筛选所述多个块中的一个或更多个块的第二集合的第二筛选数据结构。
各方面可以包括以下特征中的一个或更多个。
在多个块的一个或更多个的第二集合中包括的全部数据单元具有在排序次序中比在多个块的一个或更多个的第一集合中包括的数据单元的任何键值出现得更晚的键值。
多个筛选数据结构中的每个对应于标识在一个或更多个块的对应集合中存储的数据单元的不同的非重叠键值范围。
在累积了在多个块的一个或更多个块的第一集合中存储的第一集合数据单元中的预定数量的区别键值之后生成第一筛选数据结构,而在接收在多个块的一个或更多个块的第二集合中存储的第二集合数据单元的同时生成第二筛选数据结构。
该方法还包括:使用索引和多个筛选数据结构来搜索具有给定键值的数据单元。
所述搜索包括:对于多个筛选数据结构中的每一个检查指示具有给定键值的数据单元可能被包括在该组可独立访问的数据单元中的肯定结果。
该方法还包括:响应于对于对应筛选数据结构的肯定结果,搜索索引以确定给定键值是否落入跨越被对应筛选数据结构所筛选的一个或更多个块的键值范围内。
该方法还包括:响应于给定键值落入跨越被对应筛选数据结构所筛选的多个块的键值范围内,搜索索引以找到用于搜索具有给定键值的数据单元的特定块。
对于给定键值,给定筛选数据结构确定:包括给定键值的数据单元必定没有被包括,或者包括给定键值的数据单元可能被包括。
在数据单元没有被包括时给定筛选数据结构确定包括给定键值的数据单元可能被包括的概率取决于数据结构的大小。
该方法还包括:基于标识生成块所依据的数据单元的区别键值的数量,而选择给定筛选数据结构的大小。
在输入设备或端口上接收给定数据单元之前,标识给定数据单元的键值对应于与给定数据单元关联的一个或更多个字段。
该方法还包括:在接收数据单元时累积区别键值,并且在接收到该组可独立访问的数据单元中的数据单元之后对所累积的区别键值进行计数。
在输入设备或端口上接收给定数据单元之后,标识该给定数据单元的键值才被分配给该给定数据单元。
键值是单调分配的。
所有分配的键值均有区别。
与所存储的块关联的筛选数据结构的数量基于标识该组可独立访问的数据单元中的数据单元的区别键值的数量、以及与筛选数据结构关联的目标错误肯定概率。
索引是包括至少第一级别索引和第二级别索引的分层级索引。
第一级别索引被划分为多个条目区域,其使得能够基于所提供的键值来定位包括与包括所提供的键值的键值范围对应的数据单元的块,每个区域足够小以便完全容纳在与该数据存储系统耦接的存储器内。
索引中条目的一个或更多个条目标识与生成对应块所依据的数据单元对应的键值范围。
索引中条目的至少一些中的每个条目标识对应块的存储位置。
第二级别索引足够小以完全容纳在存储器内。
第二级别索引包括用于多个区域中每个区域的相应条目。
第二级别索引中条目的一个或更多个条目使得能够基于所提供的键值来定位包括与包括所提供的键值的键值范围对应的条目的第一级别索引的区域。
在另一方面中,一般地,一种计算机可读介质存储用于管理数据的计算机程序,该计算机程序包括使得计算机执行以下操作的指令:在输入设备或端口上接收至少一组可独立访问的数据单元,每个数据单元由键值标识,所接收的数据单元的键值被排序以使得:标识在给定的第二数据单元之前接收的给定的第一数据单元的键值在排序次序中比标识给定的第二数据单元的键值出现得更早;以及处理数据单元以在数据存储系统中存储。所述处理包括:存储多个数据块,所述块中的一个或更多个的每个是通过组合多个数据单元而生成的;对于每个块提供包括条目的索引,其中所述条目中的一个或更多个使得能够基于所提供的键值来定位包括与包括所提供的键值的键值范围相对应的数据单元的块;以及生成与所存储的块关联的多个筛选数据结构以便确定包括给定键值的数据单元被包括在该组可独立访问的数据单元中的概率,所述多个筛选数据结构包括用于筛选所述多个块中的一个或更多个块的第一集合的第一筛选数据结构、和用于筛选所述多个块中的一个或更多个块的第二集合的第二筛选数据结构。
在另一方面中,一般地,一种管理数据的系统包括:输入设备或端口,被配置为接收至少一组可独立访问的数据单元,每个数据单元由键值标识,所接收的数据单元的键值被排序以使得:标识在给定的第二数据单元之前接收的给定的第一数据单元的键值在排序次序中比标识给定的第二数据单元的键值出现得更早;以及至少一个处理器,被配置为处理数据单元以在数据存储系统中存储。所述处理包括:存储多个数据块,所述块中的一个或更多个的每个是通过组合多个数据单元而生成的;对于每个块提供包括条目的索引,其中所述条目中的一个或更多个使得能够基于所提供的键值来定位包括与包括所提供的键值的键值范围相对应的数据单元的块;以及生成与所存储的块关联的多个筛选数据结构以便确定包括给定键值的数据单元被包括在该组可独立访问的数据单元中的概率,所述多个筛选数据结构包括用于筛选所述多个块中的一个或更多个块的第一集合的第一筛选数据结构、和用于筛选所述多个块中的一个或更多个块的第二集合的第二筛选数据结构。
在另一方面中,一般地,一种管理数据的系统包括:用于接收至少一组可独立访问的数据单元的部件,每个数据单元由键值标识,所接收的数据单元的键值被排序以使得:标识在给定的第二数据单元之前接收的给定的第一数据单元的键值在排序次序中比标识给定的第二数据单元的键值出现得更早;以及用于处理数据单元以在数据存储系统中存储的部件。所述处理包括:存储多个数据块,所述块中的一个或更多个的每个是通过组合多个数据单元而生成的;对于每个块提供包括条目的索引,其中所述条目中的一个或更多个使得能够基于所提供的键值来定位包括与包括所提供的键值的键值范围相对应的数据单元的块;以及生成与所存储的块关联的多个筛选数据结构以便确定包括给定键值的数据单元被包括在该组可独立访问的数据单元中的概率,所述多个筛选数据结构包括用于筛选所述多个块中的一个或更多个块的第一集合的第一筛选数据结构、和用于筛选所述多个块中的一个或更多个块的第二集合的第二筛选数据结构。
各方面可以包括以下优点中的一项或更多项。
通过压缩多个记录的块,与独立地压缩各记录相比,可以实现更大程度的压缩。加索引的块提供了在无需从压缩记录的文件的开头进行解压缩的情况下访问给定记录的能力。块的大小可以被选择为足够大以提供高压缩,并且足够小以限制访问块中的给定记录所需的解压缩量。可以使用无需提供从压缩块中的任意位置开始解压缩的能力的压缩技术,来压缩每个块。因此,可以使用提供大程度压缩的技术。
通过存储标识与生成对应块所依据的记录相对应的键值范围的索引,由于该索引不需要对于每个记录都具有条目,因此该索引可以保持较小(例如,足够小以容纳在相对块的存储器中)。索引条目使得能够定位可以被装载和解压缩的一个或更多个块,以便恢复可以用于搜索期望记录的记录集合。将筛选数据结构(例如,重叠编码的签名或其它类型的位图)与压缩块关联可以指示:期望记录不存在,排除了装载和解压缩该压缩块以搜索记录的需要。可以使用自适应技术来以不使用额外存储空间的方式递增地生成筛选数据结构。可以使用各种技术来避免错误肯定的概率的额外增加,否则通过检查许多不同的筛选数据结构可能引起错误肯定的概率的额外增加。为了搜索潜在大的索引,用于生成索引的分层级技术通过降低需要访问相对更慢的非本地存储装置的次数,而加速了索引搜索。
其它特征和优点将从以下描述并且从权利要求书中变得显而易见。
附图说明
图1是用于存储和检索记录的系统的框图。
图2A、2B、2C和2D是由该系统处理并在该系统中存储的数据的示意图。
图3A和3B是示出不同签名大小的错误肯定概率的表格。
图4A和4B是搜索记录的例程的流程图。
图5是加索引和搜索模块的框图。
具体实施方式
参考图1,记录存储和检索系统100从一个或更多个源(诸如源A-源C)接受数据。数据包括可以被表示为可独立访问的数据单元的信息。例如,信用卡公司可以从各个零售公司接收表示独立交易的数据。每个交易与表示属性(诸如,顾客姓名、日期、购买量等)的值关联。记录处理模块102保证:数据根据预定记录格式而被格式化,从而与交易关联的值被存储在记录中。在一些情况下,这可能包括根据记录格式转换来自源的数据。在其它情况下,一个或更多个源可能提供已经根据记录格式被格式化的数据。
记录处理模块102根据标识每个记录的主键值(例如,标识单个记录的唯一键,或者标识记录的多个更新版本的键)将记录排序,并且将记录划分为与主键值的非重叠范围对应的记录集合。例如,记录的每个集合可以对应于预定数量的记录(例如,100个记录)。压缩模块104将记录的每个集合压缩为压缩数据块。这些压缩块被存储在记录存储装置106(例如,非易失性存储介质,诸如一个或更多个硬盘驱动器)中的压缩记录文件中。系统100还包括加索引和搜索模块108,其为每个块提供包括条目的索引114。索引114被用来定位可能包括给定记录的块,如下面更详细描述的。加索引和搜索模块108还包括筛选数据结构116,其被用来确定何时可能需要在记录存储装置106中搜索给定记录,如下面更详细描述的。索引114和筛选数据结构116可以作为压缩记录文件被存储在相同的存储介质中,或者在一些实现方式中,索引114和筛选数据结构116的至少一部分可以被优选地存储在模块108可访问的相对更快的本地存储装置(例如,诸如动态随机访问存储器的易失性存储介质)中,这是由于索引文件典型地比压缩记录文件小得多。在这些实现方式中,索引114和/或筛选数据结构116的剩余部分可以被存储在索引存储装置110(例如,诸如一个或更多个硬盘驱动器的非易失性存储介质)中,直至需要它们并将它们移动到模块108的本地存储装置中。记录存储装置106和索引存储装置110可以驻留在相同的存储介质或者在不同的存储介质上。
在系统100的替代实现方式中,除了压缩以外或者替代压缩,可以使用其它功能来处理记录的集合以生成块,以便以某种方式组合记录(即,使得块不仅仅是记录的串连(concatenated)集合)。例如,一些系统可以处理记录集合以生成加密数据的块。
接口模块112向人和/或计算机代理(诸如代理A-代理D)提供对所存储的记录的访问。例如,接口模块112可以实现信用卡顾客的在线账户系统,以监视他们的交易。系统100可以处理对满足各种准则的交易信息的请求,并且可以从存储在记录存储装置106中的压缩块内提取对应记录。
来自一个或更多个源的输入记录流在被处理以生成压缩记录文件之前,可以被暂时存储。参考图2A,系统100接收要被存储在压缩记录文件中的记录200的集合,并且根据主键的值来对记录进行排序。
主键值可以唯一地标识数据库中的可以由一个或更多个记录表示的给定项目(例如,具有给定主键值的每个记录可能对应于项目的不同更新版本)。该主键可以是与记录的一个或多个现有字段对应的“自然键”。如果不存在确保对于每个项目唯一的字段,则主键可以是包括记录的多个字段的合成键,所述多个字段一起确保或者非常可能对于每个项目唯一。替代地,主键可以是可以在每个记录被接收到之后分配给该记录的“合成(synthetic)键”。例如,系统100可以将唯一的主键值分配为依序递增的整数,或者某种其它单调演变的值(例如,时间戳)的序列。在此情况下,表示同一项目的不同版本的记录可以被分配有不同的复合键值。如果使用整数,则可能的主键值范围(例如,如由所使用的比特数量所确定的)可以足够大,从而如果主键回转,则之前被分配了给定主键值的任何记录都可能已经从压缩记录文件中移除了。例如,旧的交易可能被移除并且被归档或丢弃。
在图2A所示的示例中,记录200被按字母表排序的主键值A、AB、CZ…来标识。系统100压缩具有主键值A-DD的N个记录的第一集合,以生成被标记为块1的对应压缩块。记录的下一个集合包括所排序的具有主键值DX-GF的N个记录。压缩模块104可以使用多种无损数据压缩算法(例如,Lempel-Ziv型算法)中的任一种。组合每个连续的压缩块以形成压缩记录文件202。
可以选择用来生成压缩块的记录的数量N,以便在压缩效率和解压缩速度之间折衷。压缩可以平均地将数据的大小减小给定因子R,其取决于正在压缩的数据的特性和正在压缩的数据的大小(例如,当压缩更多数据,R典型地更小)。压缩还可以具有平均大小O的关联开销(例如,压缩相关数据)。从M个记录(每个大小X)生成的作为结果的压缩记录文件的平均大小可以被表示为(RNX+O),对于大量块,该表达式可以被近似为RMX+OM/N。因此,在一些情况下,通过减小R并且减小开销对文件大小的贡献,N值越大,可以提供更大的压缩。N值越小则减少了解压缩给定压缩块以访问可能在该块中包含的记录所需的时间。
在其他实现方式中,不同压缩块可以包括不同数量的记录。每个块可以具有根据给定范围的数量的记录。例如,第一块包括具有主键值1-1000的记录,第二块包括具有主键值1001-2000的记录,等等。在该示例中压缩块中记录的数量可以不同,这是因为不是每个主键值都必须存在(例如,在现有数字字段被用作自然键的情况下)。
在一些实现方式中,不同的压缩块在一些情况下可以包括目标数量的记录,而在例外情况下可以包括更多或更少的记录。例如,如果记录的集合以其主键值与在排序次序中接下来的记录的主键值不同的记录结束,则那些记录被用来生成压缩块。如果记录的集合以其主键值与在排序次序中接下来的记录的主键值相同的记录结束,则具有该主键值的所有附加记录被添加到该集合。以此方式,相同的主键值不从一个压缩块跨到下一个压缩块。
加索引和搜索模块108对于每个压缩块生成索引文件204中的条目。索引条目包括键字段206,其例如通过记录的对应未压缩集合中第一个记录的主键来标识每个压缩块。条目还包括位置字段208,其标识所标识的压缩块在压缩记录文件202中的存储位置。例如,位置字段可以包含以记录存储装置106中绝对地址的形式、或者以从记录存储装置106中压缩记录文件202的开头的地址的偏移的形式的指针。
为了搜索压缩记录文件202中的给定记录,模块108可以基于键字段206执行索引文件204的搜索(例如,二值搜索)。对于提供的(例如,由代理之一提供的)给定键值,模块108定位包括与包括所提供的键值的键值范围对应的记录的块。具有所提供的键值的记录可能或者可能不包括在被用来生成所定位的块的记录的集合中,但是如果该记录存在于记录200中,则由于记录200是按照主键值被排序的,因此必将包括该记录。模块108然后解压缩所定位的块并且搜索具有所提供的键值的记录。在主键值对于每个记录不唯一的情况下,模块108可能在压缩块中找到具有所提供的键值的多个记录。在键字段206包括集合中第一个记录的主键的示例中,模块108搜索分别具有比所提供的键值更早和更晚的键值的两个连续索引条目,并且返回与具有更早的键值的条目对应的块。在一些情况下,所提供的键值可能与索引条目中的键值相同,在此情况下,模块108返回与该条目对应的块。
在不同的实现方式中,对于索引文件204中的条目而言,存在标识与生成对应块所依据的记录对应的键值范围的不同的方式。如在图2A中所示的实现方式中,键值范围可以是被用来生成块的记录的两个极端键值(例如按字母表顺序的主键值的排序序列中的第一个和最后,或者按数字顺序的主键值的排序序列中的最小值和最大值)。索引条目可以包括定义该范围的极值的任一个或两个。在一些实现方式中,如果索引条目包括定义用于给定块的范围的最小键值,则与压缩记录文件中的最后块关联的最后索引条目也可以包括定义用于该块的范围的最大键值。然后,当搜索该压缩记录文件时,该最大键值可以被用来确定何时给定键值超出范围。
替代地,键值范围可以是超过被用来生成块的记录的键值而延伸的范围。例如,在从具有介于1和1000之间的数字主键值的记录生成块的情况下,在记录中所表示的最小键值可能大于1并且在记录中所表示的最大键值可能小于1000。索引条目可以包括定义该范围的极值1和1000中的任一个或两个。
当在已经处理了初始记录组以生成压缩记录文件之后附加记录来到时,那些记录可以被存储在缓存器中并且以未压缩形式被搜索。替代地,附加记录组可以被以增量方式处理并且被存储为可由附加索引文件访问的附加压缩记录文件。在一些情况下,即使压缩较少数量的附加记录可能不提供存储大小的大量减少,压缩附加记录以保持访问记录的统一例程仍是有利的。可以以规则的时间间隔(例如,每30秒或者每5分钟),或者在已经接收了预定数量的附加记录(例如,每1000个记录或者每10000个记录)之后重复地处理附加记录。如果输入记录是基于时间间隔被处理的,则在一些间隔中,可能没有输入记录,或者有全部被压缩到单个压缩块中的较少数量的记录。
参考图2B,在已经生成了初始压缩记录文件202之后接收到附加记录的示例中,附加压缩记录文件210可以被添加到初始压缩记录文件202以形成复合压缩记录文件211。系统100按照主键值对附加记录排序,并且压缩N个记录的集合以生成压缩记录文件210的压缩块。被标记为块91的添加文件210中的第一压缩块具有主键值BA-FF。模块108生成附加索引文件212,其包括可以被用来搜索在添加文件210中表示的附加记录的条目。新索引文件212可以被添加到之前的索引文件204。
可以添加任何数量的压缩记录文件,以便形成复合压缩记录文件。如果加索引和搜索模块108在复合压缩记录文件内搜索具有给定键值的记录,则模块108使用对应的索引文件来搜索每个添加压缩记录文件内的记录。替代地,请求给定记录的代理可以指定要搜索的复合压缩记录文件中的压缩记录文件的某种数量(例如,10个最近生成的压缩记录文件,或者在前一小时内生成的任何压缩记录文件)。
在给定时间量(例如,每24小时)之后或者在已经添加了给定数量的压缩记录文件之后,系统100可以合并文件以生成源自复合压缩记录文件的单个压缩记录文件和新的对应索引文件。在合并之后,可以搜索单个索引以定位可能包含给定记录的压缩块,产生更高效的记录访问。在合并时间,系统100解压缩所述压缩记录文件以恢复对应的排序记录的集合,按照主键值对记录排序,并且生成新的压缩记录文件和索引。由于每个所恢复的记录集合已经被排序,因此通过根据主键值融合之前排序的列表来生成单个排序记录的集合,可以高效地对记录排序。
参考图2C,复合压缩记录文件211包括初始压缩记录文件202、附加压缩记录文件210、以及多个附加压缩记录文件220、221、…,附加压缩记录文件220、221、…的数量取决于已经接收到多少附加记录以及已经多么频繁地处理记录。每个压缩记录文件可以具有关联的索引文件,其可以被用来搜索该文件的压缩块中的给定记录。在该示例中,压缩记录文件220之一足够小从而仅具有单个压缩块(块95),因此不必需要关联的索引文件,但是可以具有指示该块中的主键值的范围以及其在存储装置中的位置的关联数据。在合并之后,从不同的添加压缩记录文件中恢复的记录被处理以生成单个压缩记录文件230。
在单调分配的主键的情况下,不仅在压缩记录文件内自动地对记录排序,而且还从一个文件到下一个文件自动地对记录排序,这排除了合并文件以便在单个索引搜索中访问记录的需要。参考图2D,系统100接收通过按照到达顺序为记录作为主键而分配的连续整数标识的记录250的集合。因此,记录250按照主键被自动排序。初始压缩记录文件252包括压缩块,在该示例中每个压缩块包括100个记录,并且索引文件254包括用于压缩块中第一个记录的主键值的键字段256、以及标识对应的存储位置的位置字段258。由于在初始压缩记录文件252已经被生成之后到达的记录将自动地具有在排序次序中更晚的主键值,因此添加压缩记录文件260和对应的索引文件262不需要被合并来使能基于单个索引搜索的高效记录访问。例如,索引文件262可以简单地被添加到索引文件254,并且这两个索引可以一起被搜索(例如,在单个二值搜索中)以在压缩记录文件252或260的任一个中定位压缩块。
复合压缩记录文件261可以可选地被合并以消除可能已经被插入在压缩记录文件252结尾的不完整块。在这样的合并中,仅仅第一文件252中最后的压缩块将需要被解压缩,并且取代融合记录的未压缩集合,记录的集合可以简单地被合并以形成新的记录的排序集合,所述新的记录的排序集合要被划分为100个记录的集合,其然后再被压缩以形成新的压缩记录文件。
使用连续的整数合成主键值的另一优点是:如果记录将基于主键值被分区,则由于在键值之间没有空隙,因此分区可以被自动地平衡。
可以使用多种技术中的任何技术来更新记录,并且使可能存在于压缩记录文件中的记录的任何之前版本无效。在一些情况下,记录无需被独立地移除或更新(例如,日志、交易、电话呼叫)。在这些情况下,例如从压缩记录文件的开头开始,在预定数量的压缩块的组中移除并且丢弃或存档旧的记录。在一些情况下,可以移除整个压缩记录文件。
在一些情况下,通过附加新的更新记录以存储在压缩块中来更新记录的一个或更多个值,并且记录的之前接收的版本(具有相同的主键值)可以被保留存储在不同的压缩块中。然后可能存在记录的多个版本,并且使用某种技术来确定哪个是记录的有效版本。例如,在任何压缩记录文件中出现的最后版本(最近接收的)可以隐含地或明确地被指示为有效版本,并且任何其它版本是无效的。在此情况下搜索具有给定主键的记录可以包括:找到由该主键标识的在出现次序上最后的记录。替代地,通过写入“无效记录”(其指示记录的任何之前本均不是有效的),可以在无需附加记录的新版本的情况下使记录无效。
系统100通过不同的处理来传达对存储在记录存储装置106中的压缩记录文件的访问。可以使用多种同步技术中的任一种来传达对一个或更多个压缩记录文件内的压缩块的访问。系统100确保修改文件的任何处理(例如,通过添加或合并数据)不相互影响。例如,如果在合并正在发生时新记录到达,则系统100可以等待直至合并处理完成,或者可以生成压缩块并且在将它们添加到现有压缩记录文件之前将它们暂时存储。从压缩记录文件进行读取的处理可以装载文件的完整部分,并且可以忽略可能经过修改的任何不完整部分。
系统100存储使得能够基于记录的除了主键之外的属性来搜索记录的附加数据。压缩记录文件的辅索引包括基于被指定为辅键的属性的值而提供一个或更多个主键值的信息。被指定为辅键的每个属性可以与对应的辅索引关联。例如,每个辅索引可以被组织为表格,该表格具有按照关联的辅键排序的行。每行包括辅键值以及包括该辅键值的记录的一个或更多个主键值。因此,如果代理发起对包括给定辅键值的任何记录的搜索,则系统100查找(多个)主键以用于在压缩记录文件的索引中搜索包括所述(多个)记录的(多个)压缩块。辅索引可以较大(例如,记录的数量的量级),并且在一些情况下可以存储在存储压缩记录文件的存储介质中。
在一些情况下,被指定为辅键的属性的值可以对于每个记录唯一。在这种情况下,在辅键和主键之间存在一一对应,并且接口模块112可以向代理呈现辅键属性,好像它是主键一样。
在新的压缩记录文件被添加到复合压缩记录文件时,可以更新每个辅索引。替代地,对于每个压缩记录文件,辅键可以与不同的辅索引关联,并且当压缩记录文件被合并时辅索引可以被合并到单个辅索引中。
筛选数据结构116可以与压缩记录文件关联,以便确定包括给定属性值的记录被包括在文件的压缩块中的概率。例如,使用重叠编码签名(OES)来作为筛选数据结构,使得系统100能够确定:具有给定键值(主键或辅键)的记录必定不存在(“否定”结果),还是具有给定键值的记录具有出现的概率(“肯定”结果)。对于肯定结果,系统访问适当的压缩块以便检索记录(“确认肯定”结果),或者确定该记录不存在(“错误肯定”结果)。对于否定结果,系统可以向代理给出否定结果而无需花费时间来解压缩该压缩块并搜索不存在的记录。OES的大小影响肯定结果是错误肯定的频繁程度,OES大小越大,对于给定数量的区别(即,唯一)可能键值,通常产生越少的错误肯定结果。对于给定OES大小,区别可能键值越少,通常产生越少的错误肯定。
其它类型的筛选数据结构是可能的。可以为包含压缩块集合的每个压缩记录文件提供用于给定主或辅键的筛选数据结构。替代地,可以为每个压缩块提供用于键的筛选数据结构,或者可以为压缩记录文件内的多个压缩块集合的每个提供用于键的筛选数据结构。
图3A和3B示出了提供对于示例性OES筛选数据结构的各种大小(列)和在压缩记录文件中表示的区别键值的各种数量(行)、获得键值的错误肯定结果的概率值的表格。对于OES,取决于OES的大小和区别键值的数量,可以在OES的同一部分中指示出现多于一个键值,对于那些键值之一而言,如果出现其它键值,则潜在地导致对于所述键值的错误肯定结果。该示例性OES的大小从210=1024比特(图3A的表格中)到228=256兆比特(图3B的表格中)变化。区别键值的数量从100(图3A的表格中)到100,000,000(图3B的表格中)变化。对于两个表格,右上方的空单元对应于0%,左下方的空单元对应于100%。对于错误肯定概率较低(例如,接近零)的单元,筛选数据结构可能比提供足够筛选所需的大小更大。对于错误肯定概率显著(例如,>50%)的单元,筛选数据结构可能太小而不能提供足够筛选。该示例对应于每个键值使用四个散列码来生成OES的技术。OES筛选数据结构的其它示例可能对于给定数量的区别键产生不同的错误肯定概率表格。
由于可能不知道在压缩记录文件中表示的区别键值的数量,因此系统100可以基于生成该文件所依据的记录的数量来选择用于压缩记录文件的筛选数据结构的大小。在选择大小时,在降低错误肯定概率和存储筛选数据结构所需的存储器空间之间存在折衷。该折衷的一个因素是搜索不存在的键值的可能。如果要查找的键值大多数很可能出现在解压缩记录中,则可能根本不需要筛选数据结构。如果存在将找不到键值的显著概率,则向相对大的筛选数据结构分配存储空间可能节省相当时间。
与压缩记录文件关联的筛选数据结构的大小可以取决于该文件对应于记录的初始数据库、合并的较大数据库、还是对应于对较大数据库的较小更新。对于在规则的更新间隔期间添加的压缩记录文件,可以使用相对较小的筛选数据结构,这是因为在每个更新中通常存在较少的区别键值。而且,较小的大小可以降低随着在许多更新之后压缩记录文件的数量增长而需要的存储空间。筛选数据结构的大小可以基于更新中的记录和/或区别键值的期望数量,并且基于更新的期望数量。例如,如果在24小时时段中每五分钟添加一次更新文件,则在一天结束时将有288个复合压缩记录文件。至少一个错误肯定结果的概率将是来自图3A和3B表格的适当值的288倍(假设不同更新的结果是独立的)。在合并之后,对于合并的压缩记录文件而言,因为区别键值的数量可能显著增加,因此更大的筛选数据结构可能是合适的。
压缩记录文件可以具有用于主键和用于每个辅键、或者用于键的某些子集合的筛选数据结构。例如,系统100可以提供用于主键并且仅仅用于在记录搜索中期望被最频繁使用的那些辅键的筛选数据结构。
图4A示出了用于搜索具有给定主键值的一个或更多个记录的例程400的流程图。例程400确定402是否存在与第一压缩记录文件相关的筛选数据结构。如果存在,则例程400处理404该筛选数据结构以获得肯定或否定结果。如果给定主键值没有通过筛选(否定结果),则例程400检查406下一个压缩记录文件,并且如果所述下一个压缩记录文件存在,则在该文件上重复例程。如果给定主键值通过筛选(肯定结果),则例程400在索引中搜索408可能包含具有给定主键值的记录的块。如果没有筛选数据结构与压缩记录文件关联,则例程400搜索408索引而不执行筛选。
在搜索408索引之后,如果找到了410与包括给定主键值的键值范围关联的压缩块,则例程400解压缩412在由索引条目标识的位置处的块,并且在作为结果的记录中搜索414具有给定主键值的一个或更多个记录。该例程然后检查416下一个压缩记录文件,并且如果所述下一个压缩记录文件存在,则在该文件上重复例程。如果没有找到压缩块(例如,如果给定主键值小于第一个块中的最小键值,或者大于最后块中的最大键值),则例程400检查416下一个压缩记录文件,并且如果所述下一个压缩记录文件存在,则在该文件上重复例程。
图4B示出了用于搜索具有给定辅键值的一个或更多个记录的例程450的流程图。例程450确定452是否存在与第一压缩记录文件相关的筛选数据结构。如果存在,则例程450处理454该筛选数据结构以获得肯定或否定结果。如果给定辅键值没有通过筛选(否定结果),则例程450检查456下一个压缩记录文件,并且如果所述下一个压缩记录文件存在,则在该文件上重复例程。如果给定辅键值通过筛选(肯定结果),则例程450查找458与包含给定辅键的记录对应的主键。如果没有筛选数据结构与压缩记录文件关联,则例程450查找458主键而不执行筛选。
对于找到的每个主键,例程450在索引中搜索460可能包含具有给定主键值的记录的块。在搜索460索引之后,如果找到了462与包括给定主键值的键值范围关联的压缩块,则例程450解压缩464在由索引条目标识的位置处的块,并且在作为结果的记录中搜索466具有给定主键值的一个或更多个记录。该例程然后检查468下一个压缩记录文件,并且如果所述下一个压缩记录文件存在,则在该文件上重复例程。如果没有找到压缩块,则例程450检查468下一个压缩记录文件,并且如果所述下一个压缩记录文件存在,则在该文件上重复例程。
例程400或例程450可以按照出现顺序返回所发现的具有给定主键或辅键的多个记录,或者在一些情况下,仅仅返回记录的最后版本。
如上所述,可以作为筛选数据结构的大小(越大的数据结构将降低错误肯定的概率)以及在该数据结构中表示的用于标识在块中存储的记录组的区别键的数量(越大数量的区别键将增加错误肯定的概率,区别键的数量倾向于随着使用筛选数据结构的块的数量而增加)的函数而度量筛选数据结构返回错误肯定的概率。因而,控制筛选数据结构的大小是影响错误肯定结果的概率的一种方式。然而,选择比实现可接受的错误肯定概率所需的大小更大的大小,可能使用不必要的大量的珍贵存储空间。可以例如基于用户输入而确定可接受的概率。
在一些实现方式中,为了在接收到记录时选择给定记录组所需的筛选数据结构的适当大小,在记录正被接收并存储在压缩块中的同时累积与这些记录相关的区别键。基于该累积,然后可以通过对存储器中的区别键的数量进行计数来确定实现预定的错误肯定概率P所需的筛选数据结构的大小。然后,记录处理模块102生成所确定大小的筛选数据。因此,直至该组中的所有记录都已经被接收到之后,才创建筛选数据结构。因此,可以基于所累积的区别键的数量来确定筛选数据结构的大小,并且为了实现概率P,筛选数据结构的大小将不一定很大。然而,在存储器中存储键使用了在一些系统中可能相对受限的系统资源(例如,易失性存储器)。尽管键还可以被存储在更多的冗余存储装置(例如,非易失性存储器)中,但是该技术将增加访问所存储的键的输入/输出(I/O)成本。在一些实现方式中,在该组中的记录正在被接收时可以自适应地生成一个或更多个筛选数据结构,以便限制错误肯定率,而无需等待累积不确定的和/或大数量的区别键,并且也无需等待直至已经接收到所有记录。在该自适应技术中,接收该记录组,记录的键按照排序次序被排序。例如,在一些情况下,记录具有自然主键,所述自然主键已知要被记录处理模块102接收并且已经根据它们的键被排序。在其它情况下,记录具有复合主键,所述复合主键是由记录处理模块102分配的,使得它们按照它们被分配的键(例如,作为递增整数、或时间戳、或其它单调增加值的键)而被排序。如果所分配的复合键也是唯一的,则不需要将区别键存储在存储器中来以确定已经接收了多少区别键,相反,所接收到的记录的数量的计数可以被增加以确定已经接收到多少区别键。
在一些情况下,记录组对应于要以批处理模式处理的单批记录。例如可以通过预定令牌或消息来表明该批中的最后记录。在其它情况下,记录组对应于通过重复定界符分离的连续流中的多个被定界部分之一。在任何连续的定界符对之间,如上所述,根据键对记录组进行排序。
替代需要等待直至已经接收到该组中的所有记录才生成用于该组的筛选数据结构,可以在正在接收记录时,记录处理模块102开始生成预定大小为S的筛选数据结构。一旦确定了大小,则可以在记录到达时,例如通过设置位图的比特而构建筛选数据结构。随着与筛选数据结构关联的区别键的数量增长(以及所设置的比特的数量增长),错误肯定概率也增长。如果在错误肯定概率达到P之前到达该组的结束,并且如果需要的话,则可以基于区别键的实际数量而减小筛选数据结构的大小,以便实现更接近P的错误肯定概率。如果错误肯定概率达到P(基于到目前为止的区别键的数量),则可以存储第一筛选数据结构,并且可以开始生成大小为S的第二筛选数据结构。可以丢弃存储在存储器中的任何区别键,以便为累积与接下来所接收的记录相关的新区别键而腾出空间。该处理可以继续,直至接收到该组中的最后记录为止。对于给定记录组,将存在一个或更多个筛选数据结构,每个筛选数据结构具有被选择来实现预定的错误肯定概率(例如,等于或接近P)的大小,并且每个筛选数据结构在无需累积任意大数量的区别键或者等待直至已经接收到最后记录的情况下被构建。由于按照该组中记录的键的排序次序接收到记录,因此用于该组的每个筛选数据结构(如果存在多个筛选数据结构)对应于不同的非重叠键值范围。
可以基于多种因素(诸如系统100的特性)中的任何因素来选择大小S。例如,大小S可以基于在该系统中可以高效访问的最大大小。在一些实现方式中,从主键生成预定大小的散列值(例如,32比特散列),并且可以基于该预定散列值大小来选择大小S。
在一些实现方式中,可以并行地构建两个(或更多个)筛选数据结构。例如,可以(例如利用实现概率P的区别键的数量K)来构建大小S,并且可以(例如利用实现概率P的区别键的数量K/2)来构建大小S/2。基于该组中记录的区别键的实际数量,可以选择数据结构之一(并且如果需要的话可以将其减小到适当大小)并且可以丢弃其它数据结构。例如,如果区别键的数量小于或等于K/2,则可以使用大小为S/2的筛选数据结构,并且如果需要的话可以将其减小以实现概率P。如果区别键的数量介于K和K/2之间,则可以使用大小为S的筛选数据结构,并且如果需要的话可以将其减小以实现概率P。如果区别键的数量超过K,则可以存储大小为S的筛选数据结构并且可以构建第二筛选数据结构(并且可以使用相同的并行技术来构建)。并行地构建第二筛选数据结构的成本可能低于通过对于区别键的实际数量更接近实现期望概率P所需的最优大小而实现的节省。
在一些实现方式中,对于记录的数量较小(并且因此区别键的数量较小)的情况,可以进一步降低自适应地生成筛选数据结构的时间。以大小为S/2的筛选数据结构开始并且然后将其减少到基于区别键的数量的适当大小,可能在一些情况下由于执行减少所需的操作(例如,使用“对折”操作,使用6对折可以实现从216比特的大小减少到210比特的大小)的数量而相对较慢。取代在正在接收记录时并行地生成多个筛选数据结构,可以在存储器内的键缓存器中累积键,直至该键缓存器变满或者直至在该组中没有更多记录为止。如果键缓存器变满,则可以使用所缓存的键来构建适当大小的(例如大小S的)筛选数据结构。键缓存器然后可以被丢弃,并且然后在正在接收组中所有随后记录时,可以使用该组中所有随后记录的键来生成另一筛选数据结构。如果在键缓存器变满之前接收到该组中的所有记录,则可以从所缓存的键生成适当大小的筛选数据结构,避免了在该(小数量的区别键)情况下否则将需要的任何减少操作。
下面是生成作为最大大小S为216比特(或8k字节)的位图的筛选数据结构的示例,所述筛选数据结构对应于用于假定数量的区别键的给定目标错误肯定概率。在该示例中,16比特地址足以寻址该位图中的每个比特。在输入记录被接收到时,它们的键被进行散列以生成32比特散列值。该散列的最低有效16比特被用来确定该比特在为对应键设置的位图中的位置。在已经接收到该组中的所有记录之后,例如基于区别键的数量,如果最优位图大小为210比特,则位图可以被从216比特减少到210比特。如果大小为216的位图被划分为相等大小的两部分,则存在两个位图,每个大小为215比特。使用逻辑“或(OR)”操作将两个位图的每个比特组合在一起,产生大小为215比特的对折位图。这是一个对折操作。再将该对折操作重复五次(总共六个对折操作),给出了大小为210比特的位图,使用32比特散列值的最低有效10比特可以对该位图进行寻址。大小为210比特的位图比大小为216比特的位图具有更高的错误肯定率。然而,由于接收到的区别键比假设数量的区别键更少,因此该位图仍实现给定的目标错误肯定概率。
使用生成筛选数据结构的该自适应方法,可能存在多个筛选数据结构,每个被用来筛选按照主键的排序次序存储在一组块中的记录组的不同子集。因此,多个筛选数据结构中的每个与该组块中的不同对应子集关联,并且与对应于存储在这些块中的记录的不同范围的键值关联。使用用于确定给定记录可能存储在哪个块中的索引,可以定位和搜索用于该组中(例如存储在单个压缩记录文件中)所有记录的块。在“块索引搜索”中,(例如,使用二值搜索)可能找到可能包含给定记录的单个块。在一些情况下,当搜索索引时,不需要定位可能包含给定记录的单个块,相反可能仅需要执行“块范围索引搜索”以确定给定记录的键是否落入跨越由筛选数据结构中的对应一个所筛选的多个块的键值范围内,如下面更具体描述的。为了便于该块范围索引搜索,加索引和搜索模块108可以与每个筛选数据结构关联地存储对应的键值范围的指示,如下面更具体描述的。
通过检查与该组块关联的多个筛选数据结构中的每一个,并且在至少一个肯定结果的情况下然后搜索索引以确定哪个块可能包含该记录,可以使用例程400和450来搜索记录。然而,由于肯定结果可能是错误肯定,因此在定位并解压缩块以找到记录(如果被不必要地执行,则其是所采取的可能显著减缓搜索处理的费力动作)之前,可以采取其它步骤以捕捉至少一些错误肯定。例如,可以使用块范围索引搜索来确定该记录的键是否落入与给出肯定结果的筛选数据结构对应的键值范围内。如果该键值没有落入该键值范围内,则该肯定结果必然是错误肯定。如果该键值落入该键值范围内,则错误肯定未被排除,并且加索引和搜索模块108执行块索引搜索以找到特定块用于解压缩并搜索具有给定键的记录。
检查多个筛选数据结构中的每一个以搜索具有给定键的记录的结果是:错误肯定概率被复合,并且随着所搜索的筛选数据结构的数量增加而增加(相对于单个筛选数据结构的错误肯定概率P而言)。对于小数量的筛选数据结构,这可能不明显,但是对于大数量的筛选数据结构,可以通过首先执行块范围索引搜索来标识多个筛选数据结构中哪个对应于包括给定键的键值范围来提高性能。然后,仅仅对于所标识的筛选数据结构检查肯定结果,从而将错误肯定概率限制到P。
下面的示例示出了可以如何执行块范围索引搜索。每个筛选数据结构被用来筛选存储在压缩块中的记录的不同的非重叠键值范围,其中每个压缩块由对应索引条目定位。由于每个索引条目(除了最后索引条目之外)包含由该索引条目定位的压缩数据块中的第一个记录的键值,因此由给定筛选数据结构筛选的键值范围可以通过标识与该给定筛选数据结构关联的索引条目范围来确定。在以下的简化示例中,存在被标记为“位图0”和“位图1”的两个筛选数据结构。在该示例中,索引被按照阵列存储,并且可以使用对应的向阵列中的索引依序分配的整数值(被称为“索引条目索引”(IEI))来检索给定索引条目。以下表格为该索引中的六个索引条目的每个示出了其对应的IEI值以及哪个位图被用来筛选存储在由特定键条目定位的块中的记录。该表格以“终止索引条目”结束,该“终止索引条目”包含由最后标准索引条目定位的压缩数据块中的最后记录的键值。
位图0对应于具有从0到2的IEI值的索引条目范围,位图1对应于具有从3到5的IEI值的索引条目范围。每个索引条目将由所存储的偏移定位的压缩数据块中的第一个记录的键值包含到存储压缩块的文件中。在该示例中,位图0对应于从10(包含)到310(不包含)的键值范围,位图1对应于从310(包含)到610(包含)的键值范围。将单个IEI值与每个位图相关联存储,足以指示用于该位图的对应的键值范围,诸如包含该范围的第一个键值的索引条目的IEI值。例如,IEI值0可以与位图相关联地存储,且IEI值3可以与位图1相关联地存储。终止索引条目的最终IEI值也可以被存储来指示用于最后位图的最后键值。用于该示例的筛选数据结构和对应的IEI值的结果列表将是:
使用该列表、索引、以及位图来来搜索具有键值509的记录的示例如下。
1.块范围索引搜索:在由该列表中的IEI值(0,3,6)标识的索引条目中包含的所有键值(10,310,610)中,搜索(例如,使用二值搜索)与包含最接近但是不大于509的键值的索引条目的IEI配对的位图。这产生与IEI3配对的位图1,这是因为对应的索引条目具有键值310,并且310<509<610。
2.执行筛选:相对于在块范围索引搜索中标识的筛选数据结构(位图1)来筛选键509。
3a.如果筛选产生肯定结果:执行块索引搜索。在与筛选数据结构关联的索引条目中包含的所有键值(310,410,510,610)中,搜索(例如,使用二值搜索)包含最接近但是不大于509的键值的索引条目。这产生包含键值410的索引条目,因为410<509<610。这意味着与键值509匹配的记录可能存储在由偏移800处的索引条目定位的压缩块中。该压缩块被解压缩以搜索匹配记录并且如果找到匹配记录则将其返回。
3b.如果筛选产生否定结果:无需执行块索引搜索,这是因为具有键值509的记录没有被存储在与位图1关联的三个块的任何块中。
图5示出了加索引和搜索模块108的示例实现方式,其包括用于所接收的记录组的索引114、以及被如上所述地自适应生成的多个关联的筛选结构502、504和506等等。索引114包含一系列条目,每个条目包括来自已经在其中存储了所接收的记录组的一组块(例如块506A-506I)中的块的地址、以及表示在该块中存储的第一个记录的主键的键字段。如上所述,块中的记录被按照主键排序。筛选数据结构502、504和506每个与那些块中的不同相应子集关联(例如,块集合508A、508B或508C)。在该示例中,为了简化,每个子集合包括三个块,但是筛选数据结构典型地与大数量的块关联。在一些实现方式中,如果与该记录组关联的筛选数据结构的数量大于预定阈值(例如,10或100的阈值),则加索引和搜索模块108执行块范围索引搜索以便标识筛选数据结构之一进行检查。例如,如果模块108确定给定键大于指示存储在块506D中的第一个键的条目501D的键字段并且小于指示存储在块506g中的第一个键的条目501F的键字段,则模块108检查与块集合508B对应的筛选数据结构504。如果筛选数据结构504产生否定结果,则具有给定键的记录不存在于该记录组中。如果筛选数据结构504产生肯定结果,则索引114被用来找到集合508B的块中可能包含该记录的块,并且模块108解压缩该块以搜索该记录。
在一些情况下,有可能索引114的大小可能变得太大而不能容纳在存储器中。搜索索引的一些技术(例如,二值搜索技术)导致在log2(t)量级上的读取多个索引条目,其中t是该索引中条目的总数量。(在任何给定搜索期间读取的条目的实际数量可能少于或多于该量。)如果所读取的显著数量的这些索引条目不是在此时碰巧被装载在存储器中的那部分索引,则由于需要将不同部分的索引装载到存储器的时间,因此搜索该索引所需的时间可能被显著增加。
在一些实现方式中,通过构建分层级的或“多层”索引,可以减少与搜索索引关联的访问时间。在多层索引的一个示例中,存在两层索引,存储在索引存储装置110(例如,较慢的和/或非易失性存储装置)中的主索引包含定位记录的压缩块的条目,且存储在本地存储器(例如,较快的和/或易失性存储装置)中的辅索引包含用来确定主索引的哪部分要被装载到本地存储器中的条目。为了生成这样的两层索引,如上所述,利用按照键排序的条目生成包含用于压缩块的条目的初始索引。该初始索引是主索引并且被划分为条目的连续区域,每个区域足够小以便完全容纳在本地存储器中(例如,每个区域在长度上是一“盘页”)。每个区域内的索引条目可以可选地被压缩(例如压缩为与上述的块类似的、但是存储索引条目而不是记录的一个或更多个块)。在被压缩时,该区域将甚至更小,但是在被解压缩时该区域的大小将仍完全容纳在本地存储器中。然后,生成辅索引,其也足够小以便完全容纳在本地存储器中。在该辅索引中,为所述多个区域中的每个区域创建条目。每个辅索引条目包括区域在索引存储装置110中的地址(例如,存储该区域的盘页的地址)。每个辅索引条目还包括标识存储在该区域中的第一个主索引条目的主键的键字段。
如果辅索引保持足够小以便容纳在本地存储器中,则可以降低访问成本(例如,执行输入/输出(I/O)操作所需的时间)。例如,为了检索期望记录,在辅索引(其被包含在本地存储器中)中执行第一搜索以便确定主索引的哪个区域包含与存储期望记录的块关联的条目。一旦(例如使用二值搜索)确定了主索引的适当区域,则从索引存储装置110到本地存储器中检索主索引的该区域,并且搜索该区域以便找到定位存储该记录的块的主索引条目。因此,在该示例中,在容纳在本地存储器中的辅索引内执行第一搜索,然后在一次I/O操作之后,在主索引也容纳在本地存储器中的区域内执行辅搜索。由于主索引被划分为在长度上为一个盘页的区域,因此可以减少访问该索引的I/O成本。如果辅索引太大(或变得太大)而不能被完全容纳在本地存储器内,则可以生成多层索引的第三层(以及第四层,等等),使得:最高层完全容纳在本地存储器内,并且每个较低层被划分为区域,每个区域被完全容纳在本地存储器内。最低层是存储记录的压缩块的主索引。
上述的记录存储和检索记录可以使用在计算机运行的软件来实现。例如,软件以在一个或更多个编程的或可编程的计算机系统(其可能是各种架构,诸如分布式、客户端/服务器、或网格)运行的一个或更多个计算机程序的形式形成例程,每个计算机系统包括至少一个处理器、至少一个数据存储系统(包括易失性和非易失性存储器、和/或存储元件)、至少一个输入设备或端口、以及至少一个输出设备或端口。软件可以形成更大程序的一个或更多个模块,例如,该更大程序提供与计算图的设计和配置相关的其它服务。该图的节点和元素可以被实现为存储在计算机可读介质中的数据结构、或者符合存储在数据仓库中的数据模型的其它组织数据。
软件可以被提供在可由通用或专用可编程计算机读取的介质(诸如CD-ROM)上、或者可以在其运行时通过网络被递送到(被编码在传播信号中)该计算机。可以在专用计算机上、或者使用专用硬件(诸如协处理器)执行所有功能。软件可以以分布式方式实现,其中由该软件指定的计算的不同部分由不同计算机执行。每个这样的计算机程序优选地存储在或者下载到可由通用或专用可编程计算机读取的存储介质或设备上(例如,固态存储器或介质、或者磁或光介质),用于在该存储介质或设备被计算机系统读取时配置并操作计算机执行这里描述的例程。本发明的系统还可以被考虑为实现为配置有计算机程序的计算机可读存储介质,其中如此配置的存储介质使得计算机系统以特定和预定方式操作以执行这里描述的功能。
已经描述了本发明的多个实施例。然而,将理解可以在不偏离本发明的精神和范围的情况下做出各种修改。例如,上面描述的一些步骤可以是顺序独立的,并且因此可以以与所描述的顺序不同的顺序来执行。
应理解,前面的描述意图说明并且不限制本发明的范围,本发明的范围由所附权利要求书的范围来定义。例如,上述的多个功能步骤可以以不同顺序执行,而没有实质上影响整体处理。其它实施例在所附权利要求书的范围内。
Claims (27)
1.一种管理数据的方法,该方法包括:
在输入设备或端口上接收至少一组可独立访问的数据单元,每个数据单元由键值标识,所接收的数据单元的键值被排序以使得:标识在给定的第二数据单元之前接收的给定的第一数据单元的键值在排序次序中比标识给定的第二数据单元的键值出现得更早;以及
处理数据单元以在数据存储系统中存储,所述处理包括:
存储多个数据块,所述块中的一个或更多个的每个是通过组合多个数据单元而生成的;
对于每个块提供包括条目的索引,其中所述条目中的一个或更多个使得能够基于所提供的键值来定位包括与包括所提供的键值的键值范围相对应的数据单元的块;以及
生成与所存储的块关联的多个筛选数据结构以便确定包括给定键值的数据单元被包括在该组可独立访问的数据单元中的概率,所述多个筛选数据结构包括用于筛选所述多个块中的一个或更多个块的第一集合的第一筛选数据结构、和用于筛选所述多个块中的一个或更多个块的第二集合的第二筛选数据结构。
2.如权利要求1所述的方法,其中,在多个块的一个或更多个块的第二集合中包括的全部数据单元具有在排序次序中比在多个块的一个或更多个块的第一集合中包括的数据单元的任何键值出现得更晚的键值。
3.如权利要求2所述的方法,其中,多个筛选数据结构中的每个对应于标识在一个或更多个块的对应集合中存储的数据单元的不同的非重叠键值范围。
4.如权利要求1所述的方法,其中,在累积了在多个块的一个或更多个块的第一集合中存储的第一集合数据单元中的预定数量的区别键值之后生成第一筛选数据结构,而在接收在多个块的一个或更多个块的第二集合中存储的第二集合数据单元的同时生成第二筛选数据结构。
5.如权利要求1所述的方法,还包括:使用索引和多个筛选数据结构来搜索具有给定键值的数据单元。
6.如权利要求5所述的方法,其中,所述搜索包括:检查多个筛选数据结构中的每一个,以得到指示具有给定键值的数据单元可能被包括在该组可独立访问的数据单元中的肯定结果。
7.如权利要求6所述的方法,还包括:响应于对于对应筛选数据结构的肯定结果,搜索索引以确定给定键值是否落入跨越被对应筛选数据结构所筛选的一个或更多个块的键值范围内。
8.如权利要求7所述的方法,还包括:响应于给定键值落入跨越被对应筛选数据结构所筛选的多个块的键值范围内,搜索索引以找到用于搜索具有给定键值的数据单元的特定块。
9.如权利要求1所述的方法,其中,对于给定键值,给定筛选数据结构确定:包括给定键值的数据单元必定没有被包括,或者包括给定键值的数据单元可能被包括。
10.如权利要求9所述的方法,其中,在数据单元没有被包括时给定筛选数据结构确定包括给定键值的数据单元可能被包括的概率取决于数据结构的大小。
11.如权利要求10所述的方法,还包括:基于标识生成块所依据的数据单元的区别键值的数量,而选择给定筛选数据结构的大小。
12.如权利要求1所述的方法,其中,在输入设备或端口上接收给定数据单元之前,标识给定数据单元的键值对应于与给定数据单元关联的一个或更多个字段。
13.如权利要求12所述的方法,还包括:在接收数据单元时累积区别键值,并且在接收到该组可独立访问的数据单元中的数据单元之后对所累积的区别键值进行计数。
14.如权利要求1所述的方法,其中,在输入设备或端口上接收给定数据单元之后,标识该给定数据单元的键值才被分配给该给定数据单元。
15.如权利要求14所述的方法,其中,键值是单调分配的。
16.如权利要求15所述的方法,其中,所有分配的键值是有区别的。
17.如权利要求1所述的方法,其中,与所存储的块关联的筛选数据结构的数量基于标识该组可独立访问的数据单元中的数据单元的区别键值的数量、以及与筛选数据结构关联的目标错误肯定概率。
18.如权利要求1所述的方法,其中,索引是包括至少第一级别索引和第二级别索引的分层级索引。
19.如权利要求18所述的方法,其中,第一级别索引被划分为多个条目区域,其使得能够基于所提供的键值来定位包括与包括所提供的键值的键值范围对应的数据单元的块,每个区域足够小被完全容纳在与该数据存储系统耦接的存储器内。
20.如权利要求19所述的方法,其中,索引中条目的一个或更多个条目标识与生成对应块所依据的数据单元对应的键值范围。
21.如权利要求20所述的方法,其中,索引中条目的至少一些中的每个条目标识对应块的存储位置。
22.如权利要求19所述的方法,其中,第二级别索引足够小以被完全容纳在存储器内。
23.如权利要求22所述的方法,其中,第二级别索引包括用于多个区域中每个区域的相应条目。
24.如权利要求23所述的方法,其中,第二级别索引中条目的一个或更多个条目使得能够基于所提供的键值来定位包括与包括所提供的键值的键值范围对应的条目的第一级别索引的区域。
25.一种存储用于管理数据的计算机程序的计算机可读介质,该计算机程序包括使得计算机执行以下操作的指令:
在输入设备或端口上接收至少一组可独立访问的数据单元,每个数据单元由键值标识,所接收的数据单元的键值被排序以使得:标识在给定的第二数据单元之前接收的给定的第一数据单元的键值在排序次序中比标识给定的第二数据单元的键值出现得更早;以及
处理数据单元以在数据存储系统中存储,所述处理包括:
存储多个数据块,所述块中的一个或更多个的每个是通过组合多个数据单元而生成的;
对于每个块提供包括条目的索引,其中所述条目中的一个或更多个使得能够基于所提供的键值来定位包括与包括所提供的键值的键值范围相对应的数据单元的块;以及
生成与所存储的块关联的多个筛选数据结构以便确定包括给定键值的数据单元被包括在该组可独立访问的数据单元中的概率,所述多个筛选数据结构包括用于筛选所述多个块中的一个或更多个块的第一集合的第一筛选数据结构、和用于筛选所述多个块中的一个或更多个块的第二集合的第二筛选数据结构。
26.一种管理数据的系统,该系统包括:
输入设备或端口,被配置为接收至少一组可独立访问的数据单元,每个数据单元由键值标识,所接收的数据单元的键值被排序以使得:标识在给定的第二数据单元之前接收的给定的第一数据单元的键值在排序次序中比标识给定的第二数据单元的键值出现得更早;以及
至少一个处理器,被配置为处理数据单元以在数据存储系统中存储,所述处理包括:
存储多个数据块,所述块中的一个或更多个的每个是通过组合多个数据单元而生成的;
对于每个块提供包括条目的索引,其中所述条目中的一个或更多个使得能够基于所提供的键值来定位包括与包括所提供的键值的键值范围相对应的数据单元的块;以及
生成与所存储的块关联的多个筛选数据结构以便确定包括给定键值的数据单元被包括在该组可独立访问的数据单元中的概率,所述多个筛选数据结构包括用于筛选所述多个块中的一个或更多个块的第一集合的第一筛选数据结构、和用于筛选所述多个块中的一个或更多个块的第二集合的第二筛选数据结构。
27.一种管理数据的系统,该系统包括:
用于接收至少一组可独立访问的数据单元的部件,每个数据单元由键值标识,所接收的数据单元的键值被排序以使得:标识在给定的第二数据单元之前接收的给定的第一数据单元的键值在排序次序中比标识给定的第二数据单元的键值出现得更早;以及
用于处理数据单元以在数据存储系统中存储的部件,所述处理包括:
存储多个数据块,所述块中的一个或更多个的每个是通过组合多个数据单元而生成的;
对于每个块提供包括条目的索引,其中所述条目中的一个或更多个使得能够基于所提供的键值来定位包括与包括所提供的键值的键值范围相对应的数据单元的块;以及
生成与所存储的块关联的多个筛选数据结构以便确定包括给定键值的数据单元被包括在该组可独立访问的数据单元中的概率,所述多个筛选数据结构包括用于筛选所述多个块中的一个或更多个块的第一集合的第一筛选数据结构、和用于筛选所述多个块中的一个或更多个块的第二集合的第二筛选数据结构。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2010/026817 WO2011112187A1 (en) | 2010-03-10 | 2010-03-10 | Managing storage of individually accessible data units |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102893265A true CN102893265A (zh) | 2013-01-23 |
CN102893265B CN102893265B (zh) | 2018-06-08 |
Family
ID=44563756
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080066735.4A Active CN102893265B (zh) | 2010-03-10 | 2010-03-10 | 管理可独立访问的数据单元的存储 |
Country Status (7)
Country | Link |
---|---|
EP (2) | EP3550441B1 (zh) |
JP (1) | JP5663044B2 (zh) |
KR (2) | KR101725172B1 (zh) |
CN (1) | CN102893265B (zh) |
AU (1) | AU2010347763B2 (zh) |
CA (1) | CA2791261C (zh) |
WO (1) | WO2011112187A1 (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572711A (zh) * | 2013-10-18 | 2015-04-29 | 腾讯科技(深圳)有限公司 | 一种分布式文档形数据存取方法及装置 |
CN106021266A (zh) * | 2015-03-27 | 2016-10-12 | 国际商业机器公司 | 支持动态更新的快速多层索引 |
CN109416694A (zh) * | 2016-07-11 | 2019-03-01 | 微软技术许可有限责任公司 | 包括资源有效索引的键值存储系统 |
CN109937411A (zh) * | 2017-08-25 | 2019-06-25 | 华为技术有限公司 | 将接收的数据块存储为去重数据块的装置和方法 |
US10387397B2 (en) | 2015-03-20 | 2019-08-20 | International Business Machines Corporation | Parallel build of non-partitioned join hash tables and non-enforced n:1 join hash tables |
US10489403B2 (en) | 2014-10-08 | 2019-11-26 | International Business Machines Corporation | Embracing and exploiting data skew during a join or groupby |
US10592556B2 (en) | 2013-06-14 | 2020-03-17 | International Business Machines Corporation | On-the-fly encoding method for efficient grouping and aggregation |
US10650011B2 (en) | 2015-03-20 | 2020-05-12 | International Business Machines Corporation | Efficient performance of insert and point query operations in a column store |
CN111886592A (zh) * | 2018-03-22 | 2020-11-03 | 谷歌有限责任公司 | 用于对分片数据集合执行内联接的方法和系统 |
US20210184848A1 (en) * | 2019-12-11 | 2021-06-17 | Lendingclub Corporation | Encryption key rotation framework |
US11080260B2 (en) | 2015-03-27 | 2021-08-03 | International Business Machines Corporation | Concurrent reads and inserts into a data structure without latching or waiting by readers |
CN114866483A (zh) * | 2022-03-25 | 2022-08-05 | 新华三大数据技术有限公司 | 数据压缩流控方法、装置及电子设备 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2912420C (en) * | 2013-05-17 | 2020-09-15 | Ab Initio Technology Llc | Managing memory and storage space for a data operation |
US20220405250A1 (en) * | 2019-11-27 | 2022-12-22 | Retail Ai, Inc. | Data processing device, data processing program, and data processing method |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07160557A (ja) * | 1993-12-13 | 1995-06-23 | Hitachi Ltd | データベースアクセス処理方法 |
JPH1196170A (ja) * | 1997-09-17 | 1999-04-09 | Toshiba Corp | データベース作成方法および情報検索方法および情報検索装置および記録媒体 |
US20080104149A1 (en) * | 2006-11-01 | 2008-05-01 | Ephraim Meriwether Vishniac | Managing Storage of Individually Accessible Data Units |
US20090287986A1 (en) * | 2008-05-14 | 2009-11-19 | Ab Initio Software Corporation | Managing storage of individually accessible data units |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9028A (en) * | 1852-06-15 | David kood | ||
US5444853A (en) * | 1992-03-31 | 1995-08-22 | Seiko Epson Corporation | System and method for transferring data between a plurality of virtual FIFO's and a peripheral via a hardware FIFO and selectively updating control information associated with the virtual FIFO's |
US6278992B1 (en) * | 1997-03-19 | 2001-08-21 | John Andrew Curtis | Search engine using indexing method for storing and retrieving data |
US6735670B1 (en) * | 2000-05-12 | 2004-05-11 | 3Com Corporation | Forwarding table incorporating hash table and content addressable memory |
GB0015233D0 (en) * | 2000-06-21 | 2000-08-16 | Canon Kk | Indexing method and apparatus |
US7308454B2 (en) * | 2001-11-09 | 2007-12-11 | British Telecommunications Public Limited Company | Data integration |
US6970866B1 (en) * | 2002-05-31 | 2005-11-29 | Adobe Systems Incorporated | Filter file system |
JP4782490B2 (ja) * | 2005-06-29 | 2011-09-28 | 富士通株式会社 | データ集合分割プログラム、データ集合分割装置、およびデータ集合分割方法 |
-
2010
- 2010-03-10 CA CA2791261A patent/CA2791261C/en active Active
- 2010-03-10 CN CN201080066735.4A patent/CN102893265B/zh active Active
- 2010-03-10 KR KR1020127026525A patent/KR101725172B1/ko active IP Right Grant
- 2010-03-10 EP EP19175302.9A patent/EP3550441B1/en active Active
- 2010-03-10 KR KR20157009110A patent/KR20150045532A/ko not_active Application Discontinuation
- 2010-03-10 EP EP10847599.7A patent/EP2545451B1/en active Active
- 2010-03-10 JP JP2012557017A patent/JP5663044B2/ja active Active
- 2010-03-10 WO PCT/US2010/026817 patent/WO2011112187A1/en active Application Filing
- 2010-03-10 AU AU2010347763A patent/AU2010347763B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07160557A (ja) * | 1993-12-13 | 1995-06-23 | Hitachi Ltd | データベースアクセス処理方法 |
JPH1196170A (ja) * | 1997-09-17 | 1999-04-09 | Toshiba Corp | データベース作成方法および情報検索方法および情報検索装置および記録媒体 |
US20080104149A1 (en) * | 2006-11-01 | 2008-05-01 | Ephraim Meriwether Vishniac | Managing Storage of Individually Accessible Data Units |
US20090287986A1 (en) * | 2008-05-14 | 2009-11-19 | Ab Initio Software Corporation | Managing storage of individually accessible data units |
CN102027457A (zh) * | 2008-05-14 | 2011-04-20 | 起元技术有限责任公司 | 单独可访问数据单元的管理存储 |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10592556B2 (en) | 2013-06-14 | 2020-03-17 | International Business Machines Corporation | On-the-fly encoding method for efficient grouping and aggregation |
CN104572711A (zh) * | 2013-10-18 | 2015-04-29 | 腾讯科技(深圳)有限公司 | 一种分布式文档形数据存取方法及装置 |
US10489403B2 (en) | 2014-10-08 | 2019-11-26 | International Business Machines Corporation | Embracing and exploiting data skew during a join or groupby |
US10650011B2 (en) | 2015-03-20 | 2020-05-12 | International Business Machines Corporation | Efficient performance of insert and point query operations in a column store |
US10387397B2 (en) | 2015-03-20 | 2019-08-20 | International Business Machines Corporation | Parallel build of non-partitioned join hash tables and non-enforced n:1 join hash tables |
US10394783B2 (en) | 2015-03-20 | 2019-08-27 | International Business Machines Corporation | Parallel build of non-partitioned join hash tables and non-enforced N:1 join hash tables |
US11061878B2 (en) | 2015-03-20 | 2021-07-13 | International Business Machines Corporation | Parallel build of non-partitioned join hash tables and non-enforced N:1 join hash tables |
CN106021266B (zh) * | 2015-03-27 | 2020-01-17 | 国际商业机器公司 | 支持动态更新的快速多层索引 |
CN106021266A (zh) * | 2015-03-27 | 2016-10-12 | 国际商业机器公司 | 支持动态更新的快速多层索引 |
US10831736B2 (en) | 2015-03-27 | 2020-11-10 | International Business Machines Corporation | Fast multi-tier indexing supporting dynamic update |
US11080260B2 (en) | 2015-03-27 | 2021-08-03 | International Business Machines Corporation | Concurrent reads and inserts into a data structure without latching or waiting by readers |
CN109416694B (zh) * | 2016-07-11 | 2022-01-25 | 微软技术许可有限责任公司 | 包括资源有效索引的键值存储系统 |
CN109416694A (zh) * | 2016-07-11 | 2019-03-01 | 微软技术许可有限责任公司 | 包括资源有效索引的键值存储系统 |
CN109937411B (zh) * | 2017-08-25 | 2021-08-20 | 华为技术有限公司 | 将接收的数据块存储为去重数据块的装置和方法 |
CN109937411A (zh) * | 2017-08-25 | 2019-06-25 | 华为技术有限公司 | 将接收的数据块存储为去重数据块的装置和方法 |
US11507539B2 (en) | 2017-08-25 | 2022-11-22 | Huawei Technologies Co., Ltd. | Apparatus and method for storing received data blocks as deduplicated data blocks |
CN111886592A (zh) * | 2018-03-22 | 2020-11-03 | 谷歌有限责任公司 | 用于对分片数据集合执行内联接的方法和系统 |
US20210184848A1 (en) * | 2019-12-11 | 2021-06-17 | Lendingclub Corporation | Encryption key rotation framework |
US11641275B2 (en) * | 2019-12-11 | 2023-05-02 | LendingClub Bank, National Association | Encryption key rotation framework |
US20230261865A1 (en) * | 2019-12-11 | 2023-08-17 | LendingClub Bank, National Association | Encryption key rotation framework |
US12095913B2 (en) * | 2019-12-11 | 2024-09-17 | LendingClub Bank, National Association | Encryption key rotation framework |
CN114866483A (zh) * | 2022-03-25 | 2022-08-05 | 新华三大数据技术有限公司 | 数据压缩流控方法、装置及电子设备 |
CN114866483B (zh) * | 2022-03-25 | 2023-10-03 | 新华三大数据技术有限公司 | 数据压缩流控方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
JP5663044B2 (ja) | 2015-02-04 |
EP2545451B1 (en) | 2019-06-26 |
EP2545451A4 (en) | 2017-01-04 |
JP2013522715A (ja) | 2013-06-13 |
AU2010347763B2 (en) | 2015-07-30 |
CA2791261C (en) | 2017-12-05 |
EP2545451A1 (en) | 2013-01-16 |
WO2011112187A1 (en) | 2011-09-15 |
AU2010347763A1 (en) | 2012-08-30 |
EP3550441B1 (en) | 2023-07-26 |
CN102893265B (zh) | 2018-06-08 |
KR20130036094A (ko) | 2013-04-10 |
KR101725172B1 (ko) | 2017-04-10 |
EP3550441A1 (en) | 2019-10-09 |
KR20150045532A (ko) | 2015-04-28 |
CA2791261A1 (en) | 2011-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102893265A (zh) | 管理可独立访问的数据单元的存储 | |
CN101553813B (zh) | 管理可单独访问的数据单元的存储器 | |
US7885932B2 (en) | Managing storage of individually accessible data units | |
US9405790B2 (en) | System, method and data structure for fast loading, storing and access to huge data sets in real time | |
JP2014524090A (ja) | 範囲に基づく検索のためのデータ格納の管理 | |
JP2015072711A (ja) | 個別にアクセス可能なデータ単位の記憶の管理 | |
AU2014202186B2 (en) | Managing storage of individually accessible data units |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1181491 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |