专利名称:管理数据的方法、系统和计算机系统的制作方法
技术领域:
本发明涉及管理可单独访问的数据单元的存储器。本发明具体涉及用于管理数据的方法、系统和计算机系统。
背景技术:
数据库系统可以用多种格式中任意一种存储数据或“记录”的可单独访问(individually accessible)单元。每个记录可以对应诸如信用卡交易这样的逻辑实体,并且典型地具有用于唯一识别该记录的关联的主键(primary key)。该记录可以包括与记录·格式的各个字段(field)相关联的多个值。所述记录可以存储在一个或多个文件中(例如,平面文件或诸如XML文件这样的结构数据文件)。在压缩的数据库系统中,记录中的单独记录或值可以在存储时压缩,并在访问时解压缩,以降低系统的存储要求。
发明内容
在一个方面,一般来说,用于管理数据的方法包括接收可单独访问的数据单元,每个数据单元由键值来识别(identify);存储多个数据块,至少一些块中的每一个是通过组合多个所述数据单元而生成的;以及提供包括用于每个所述块的条目(entry)的索引,其中,一个或多个条目基于所提供的键值使能包括数据单元的块的位置,该数据单元与包括所提供的键值的键值范围对应。在另一个方面,一般来说,用于管理数据的系统包括用于接收可单独访问的数据单元的装置,每个数据单元由键值来识别;用于存储多个数据块的装置,至少一些块中的每一个是通过组合多个所述数据单元而生成的;以及用于提供包括用于每个所述块的条目的索引的装置,其中,一个或多个条目基于所提供的键值使能包括数据单元的块的位置,该数据单元与包括所提供的键值的键值范围对应。在再一个方面,一般来说,存储在计算机可读介质上的用于管理数据的计算机程序,包括用于使计算机执行以下步骤的指令接收可单独访问的数据单元,每个数据单元由键值来识别;存储多个数据块,至少一些块中的每一个是通过组合多个所述数据单元而生成的;以及提供包括用于每个所述块的条目的索引,其中,一个或多个条目基于所提供的键值使能包括数据单元的块的位置,该数据单元与包括所提供的键值的键值范围对应。在另一个方面,一般来说,用于管理数据的方法包括接收可单独访问的数据单元,每个数据单元由各自的键值来识别;存储多个数据块,至少一些块中的每一个是通过压缩多个接收的数据单元而生成的;以及管理各块中用于搜索数据单元的索引的集合,其中所述索引的集合中的第一索引包括针对每个所述块的条目,所述条目基于第一键值使能包括各数据单元的块的位置,所述数据单元对应于包括所述第一键值的各键值的范围,所述索引的集合还包括第二索引,所述第二索引包括用于从对应于所述第一键值的数据单元的属性值确定所述第一键值的条目。在另一个方面,一般来说,用于管理数据的计算机系统包括输入设备,配置为接收可单独访问的数据单元,每个数据单元由各自的键值来识别;至少一个处理器,配置为处理数据单元,该处理包括存储多个数据块,至少一些块中的每一个是通过压缩多个接收的数据单元而生成的;以及管理各块中用于搜索数据单元的索引的集合,其中所述索引的集合中的第一索引包括针对每个所述块的条目,所述条目基于第一键值使能包括各数据单元的块的位置,所述数据单元对应于包括所述第一键值的各键值的范围,所述索引的集合还包括第二索引,所述第二索引包括用于从对应于所述第一键值的数据单元的属性值确定所述第一键值的条目。在另一个方面,一般来说,用于管理数据的系统包括用于接收可单独访问的数据单元的装置,每个数据单元由各自的键值来识别;用于存储多个数据块的装置,至少一些块中的每一个是通过压缩多个接收的数据单元而生成的;以及用于管理各块中用于搜索数据单元的索引的集合的装置,其中所述索引的集合中的第一索引包括针对每个所述块的条 目,所述条目基于第一键值使能包括各数据单元的块的位置,所述数据单元对应于包括所述第一键值的各键值的范围,所述索引的集合还包括第二索引,所述第二索引包括用于从对应于所述第一键值的数据单元的属性值确定所述第一键值的条目。这些方面可以包括一个或多个下列特征。至少一些块是通过基于所述键值的定义的顺序(defined order)来组合所述数据单元而生成的。所述定义的顺序是字母顺序(alphabetical)。所述定义的顺序是数字顺序(numerical )。各个块是从数据单元的各个集合生成的,并且这些集合根据定义的顺序对应于无重叠的键值范围。索引中的一个或多个条目识别与对应块从其生成的数据单元对应的键值范围。所述键值范围由包括键值范围的至少一个极值的信息来识别。所述键值范围由来自索引中第一条目的第一极值和来自索引中第二条目的第二极值来识别。所述键值范围由包括与对应块从其生成的数据单元相关联的键值的至少一个极值的信息来识别。所述键值范围由来自索引中第一条目的第一极值和来自索引中第二条目的第二极值来识别。索引中至少一些条目中的每一个识别对应块的存储位置。通过组合多个数据单元生成块包括压缩数据单元的集合。解压缩通过压缩数据单元的集合而生成的块包括处理整个块。所述数据单元是每个都具有一个或多个与对应字段相关联的值的记录。识别所接收的数据单元的键值对应于在被接收之前与给定数据单元相关联的一个或多个字段。识别所接收的数据单元的键值被分配给在被接收之后的数据单元。
键值被单调地(monotonically)分配。键值被顺序地(sequentially)分配。所存储的数据块被存储为块的第一集合。所述块的第一集合被存储在文件中。存储一个或多个数据块的第二集合,所述第二集合中的至少一些块的每一个是从在存储所述块的第一集合之后接收到的多个数据单元中生成的。所述第二集合中的至少一些块是通过压缩数据单元的集合而生成的。提供包括用于第二集合中每个块的条目的索引,其中,一个或多个条目基于所提供的键值使能包括数据单元的块的位置,该数据单元与包括所提供的键值的键值范围对 应。处理块的第一和第二集合,以便恢复从其生成块的数据单元;根据与所述数据单元对应的键值的顺序,排序从第一集合中恢复的数据单元和从第二集合中恢复的数据单元,以生成经排序的数据单元的集合;以及生成块的第三集合,所述第三集合中至少一些块的每一个是通过组合多个经排序的数据单元而生成的。排序从第一集合中恢复的数据单元和从第二集合恢复的数据单元包括,根据与所述数据单元对应的键值的顺序,合并从第一集合恢复的数据单元和从第二集合恢复的数据单元,以生成经排序的数据单元的集合。提供包括用于第三集合中每个块的条目的第三集合的索引,其中,一个或多个条目基于所提供的键值使能包括数据单元的块的位置,所述数据单元与包括所提供的键值的键值范围对应。提供与所存储的块相关联的筛选数据结构(screening data structure),用于确定包括给定属性值的数据单元包括在从其生成所述块的数据单元中的可能性(possibility)。所述属性值包括识别单元的键值。所述筛选数据结构对于给定属性值确定包括给定属性值的数据单元肯定没有包括(definitely not included),或者包括给定属性值的数据单元可能被包括(possiblyincluded)。当所述数据单元没有被包括时,所述筛选数据结构确定包括给定属性值的数据单元可能被包括的概率(probab i I i ty )取决于所述数据结构的大小基于从其生成所述块的数据单元的数目来选择筛选数据结构的大小。提供与所存储的块相关联的次级索引,用于确定包括给定属性值的数据单元的一个或多个键值。所述数据单元是每个都具有与对应字段相关联的一个或多个值的记录,识别记录的键值对应于主键值,并且与次级索引相关联的属性值对应于所述辅键值。所述次级索引包括表,该表具有通过所述数据单元中的属性值而非键值进行排序的行。这些方面可以包括一个或多个下列优点。通过压缩多个记录的块,可以实现比单独压缩记录更高的压缩度。索引的块(indexed blocks)提供在无需从压缩记录的文件开头进行解压缩的条件下访问给定记录的能力。块的大小可以选择为足够大以提供高压缩度,以及选择为足够小以限制访问块内给定记录所需的解压缩量。可以使用这样的压缩技术来压缩每个块这些技术不需要提供从压缩块的任意位置开始解压缩的能力。从而可以使用提供较大压缩度的技术。通过存储识别与从其生成对应块的记录相对应的键值范围的索引,由于不需要具有每个记录的条目,所以索引可以被保持得很小(例如,小到足以适应相对较快的存储器)。索引条目使能可以载入(loaded)和解压缩的一个或多个块的位置,以便恢复能够用来搜索期望记录的记录集合。将签字 与压缩块相关联可以表示期望记录不存在,排除了载入压缩块以搜索该记录的需要。其它特征和优点将从下面的说明以及权利要求中变得清楚。
图I是用于存储和检索记录的系统的框图。图2A、2B、2C和2D是由系统处理和存储在系统中的数据的示意图。图3A和3B是示出对于不同的签字大小的错误肯定概率(false positiveprobability)的表。 图4A和4B是用于搜索记录的过程的流程图。
具体实施例方式参照图1,记录存储与检索系统100从一个或多个源接受数据,如SOURCE A (源A)- SOURCE C (源C)。数据包括能够表示为可单独访问的数据单元的信息。例如,信用卡公司可以从各种零售公司接收表示单个交易的数据。每笔交易都与表示属性的值相关联,所述属性诸如客户名字、日期、购买量等。记录处理模块102确保所述数据根据预定记录格式被格式化,以使得与交易相关联的值被存储在记录中。在某些情况下,这可以包括根据记录格式转换来自源的数据。在其它情况下,一个或多个源可以提供已经根据记录格式被格式化的数据。记录处理模块102通过识别每个记录的主键(primary key)值排序记录(例如,识别单个记录的唯一键、或者识别记录的多个更新的版本的键),并且将记录分成与主键值的不重叠范围相对应的记录集合。例如,每个记录集合可以对应于预定数目的记录(例如,100个记录)。压缩模块104将每个记录集合压缩到经压缩的数据块中。这些压缩的块被存储在记录存储器106中的压缩记录文件中(例如,如一个或多个硬盘驱动器的非易失性存储介质中)。系统100还包括提供索引的索引与搜索模块108,所述索引包括每个块的条目。该索引用于定位可能包括给定记录的块,如下面更详细描述的。该索引可以存储在索引存储器110中的索引文件中。例如,索引文件可以作为压缩记录文件存储在相同存储介质中,由于索引文件典型地远小于压缩记录文件,因而索引文件可以优选地存储在相对较快的存储器中(例如,如动态随机存取存储器的易失性存储介质)。在系统100的可替换实施例中,可以使用除了压缩之外的功能或者取代压缩功能来处理记录集合以生成块,以便将记录以某种方式组合(即,以使得块不仅仅只是连续的记录集合)。例如,某些系统处理记录集合,以便生成加密数据块。接口模块112向人们和/或诸如AGENT A (代理A) — AGENT D (代理D)这样的计算机代理提供对所存储的记录的访问。例如,接口模块112可以实现在线账户(account)系统,以便信用卡顾客监视他们的交易。对满足各种准则的交易信息的请求可以由系统100来处理,并且可以从存储在记录存储器106中的压缩块中检索相应的记录。在对来自一个或多个源的输入记录流进行处理以便生成压缩记录文件之前可以将其暂时存储。参照图2,系统100检索将要存储在压缩记录文件中的记录集合200,并且根据主键的值对记录进行排序。主键值可以唯一地识别数据库中可以由一个或多个记录表示的给定项(item)(例如,每个具有给定主键值的记录可以对应于不同更新版本的项)。主键可以是与记录的一个或多个已有字段对应的“固有键(natural key)”。如果没有保证对每个项都是唯一字段, 那么主键可以是包含记录的多个字段的复合键,该多个字段一起保证或者非常可能对每个记录是唯一的。可替换地,主键可以是在被接收之后分配给每个记录的“合成键(synthetickey)”。例如,系统100可以将顺序递增的整数或者某些其它单调变化值(monotonicallyprogressing values)的序列(例如,时戳)作为唯一的主键值进行分配。在这种情况下,表示不同版本的相同条目的记录可以被分配不同的合成键值。如果使用整数,那么可能的主键值的范围(例如,如由所使用的比特数所确定的)可以足够大以使得如果主键值滚计(roll over),则先前被分配以给定主键值的任何记录都已经从压缩记录文件中去除。例如,旧的交易可以被去除并且存档或者丢弃。在图2A中所示的例子中,记录200由按字母排序的主键值来识别A、AB、CZ......。
系统100压缩具有主键值A-DD的N个记录的第一集合,以生成标记为BLOCK I (块I)的对应压缩块。下一个记录集合包括具有主键值DX-GF的下N个排序的记录。压缩模块104可以使用各种无损数据压缩算法中的任意一种(例如,Lempel-Ziv型算法)。每个连续压缩块被组合,形成压缩记录文件202。可以选择用于生成压缩块的记录的数目N,以在压缩效率和解压缩速度之间进行权衡(trade off)。所述压缩可以通过给定因子R来平均缩减数据的大小,该因子R取决于被压缩的数据的本质(nature)以及被压缩的数据的大小(例如,当更多数据被压缩时,R典型地较小)。所述压缩还可以具有平均大小O相关联的开销(overhead)(例如,压缩相关数据)。从每个大小为X的M个记录中生成的、结果得到的压缩记录文件的平均大小可以被表达为[M/N] (RNX+0),对于大量块来说,可以近似为RMX+0M/N。从而,在某些情况下,较大的值N可以通过减小R以及减少开销对文件大小的份额(contribution)两者来提供较大压缩。较小的N值减少解压缩给定压缩块以访问可能包含在该块中的记录所需的时间。在其它实施方式中,不同的压缩块可以包括不同数目的记录。每个块可以根据预定范围具有一定数目的记录(a number of records)。例如,第一块包括具有主键值1-1000的记录,并且第二块包括具有主键值1001-2000的记录,等等。本例中压缩块中的记录的数目可以是不同的,因为不是每个主键值都必须存在(例如,在已有数字字段被用作固有键的情况下)。在某些实施方式中,不同的压缩块在某些情况下可以包括目标数目的记录,并且在例外情况下,可以包括更多或更少的记录。例如,如果记录集合以这样的记录结尾该记录的主键值不同于以排序顺序中之后记录的主键值,那么那些记录用于生成压缩块。如果记录集合以这样的记录结尾该记录的主键值与排序顺序中之后记录的主键值相同,那么具有主键值的所有附加记录都被添加到该集合中。通过这种方式,相同的主键值不从一个压缩块跨到(cross over)另一个压缩块。索引与搜索模块108对每一个压缩块的生成索引文件204中的条目。索引条目包括识别每个压缩块的键字段206,例如,通过相应的未压缩的记录集合中的第一个记录的主键。这些条目还包括位置字段208,其识别压缩记录文件202中经识别的压缩块的存储位置。例如,位置字段可以包含以记录存储器106中的绝对地址的形式的指针,或者以从记录存储器106中压缩记录文件202的开始地址开始的偏移量的形式的指针。为了在压缩记录文件202中搜索给定记录,模块108可以基于键字段206执行对索引文件204的搜索(例如,二进制搜索)。对提供的键值(例如,由代理之一提供的),模块108定位包括与键值范围对应的记录的块,所述键值范围包括提供的键值。带有所提供的键值的记录可以已经包括在用于生成定位的块的记录集合中或者可以未包括在其中,但是,如果该记录存在于记录200中,那么由于记录200按主键值进行了排序,则该记录应当已经
被包括。然后,模块108解压缩定位的块,并且用提供的键值搜索记录。在主键值对每个记录不是唯一的情况下,模块108可以用提供的键值在压缩块中找出多个记录。在本例中,键字段206包括集合中第一个记录的主键,模块108搜索分别具有早于和晚于所提供的键值的键值的两个连续索引条目,并且返回与具有较早键值的条目相对应的块。在某些情况下,所提供的键值可以与索引条目中的键值相同,在这种情况下模块108返回与该条目相对应的块。在不同的实施方式中,在索引文件204中的条目有不同方法来识别与从其生成相应块的记录相对应的键值范围。如图2A中所示的实施方式中,键值范围可以是用于生成块的记录的两个键值极值之间的范围(例如,在按字母顺序的主键值的排序序列中的第一个和最后一个,或者在按数字顺序的主键值的排序序列中的最小值和最大值)。索引条目可以包括定义所述范围的极值中的一个或两者。在某些实施方式中,如果索引条目包括针对给定块定义的范围的最小键值,那么压缩记录中与最后一个块相关联的最后一个索引条目还可以包括定义该块的范围的最大键值。然后,该最大键值可以在搜索压缩记录文件时使用,以便确定何时给定键值在范围之外。可替换地,键值范围可以扩展到用于生成块的记录的键值之外的范围。例如,在从具有I到1000之间按数字排列的主键值的记录生成的块的情况下,记录中所表示的最小键值可以大于1,而记录中所表示的最大键值可以小于1000。索引条目可以包括定义范围的极值I和1000中的一个或者两者。当在原始记录组已经被处理而生成压缩记录文件之后附加记录到达时,可以将那些记录存储在缓冲器中并且以未压缩的(uncompressed)形式进行搜索。可替换地,附加记录组可以被增量处理(incrementally processed),并且存储为可被附加索引文件访问的附加压缩记录文件。在某些情况下,即使在压缩少量附加记录不会提供存储空间大小的很大降低时,将附加记录进行压缩以保持访问记录的统一过程也是有好处的。可以以固定时间间隔(例如,每30秒或每5分钟)或者在接收到了预定数目的附加记录之后(例如,每1000个记录或每10,000个记录),重复处理附加记录。如果基于时间间隔处理输入记录,那么在某些间隔中可能没有输入记录或者有少量记录,该少量记录全部被压缩到一个压缩块中。参照图2B,在原始压缩记录文件202已经被生成之后,在附加记录被系统100接收的例子中,附加压缩记录文件210可以被附到原始压缩记录文件202上,以形成复合压缩记录文件211。系统100用主键值对附加记录进行排序,并且将N个记录的集合进行压缩,以生成压缩记录文件210的压缩块。被标记为BLOCK 91 (块91)的、附加文件(appendedfile) 210中的压缩块具有主键值BA-FF。模块108生成包括条目的附加索引文件212,所述条目可以用于搜索附加文件210内所表示的附加记录。新的索引文件212可以附到先前的索引文件204上。可以附上任意数目的压缩记录文件,以便形成复合压缩记录文件。如果索引与搜索模块108在复合压缩记录文件内以给定键值搜索记录,那么模块108就使用相应的索引文件在每个所附压缩记录文件内搜索记录。可替换地,请求给定记录的代理可以用要搜索的复合压缩记录指定一定数目的压缩记录文件(例如,最近生成的10个压缩记录文件或者最后一小时内生成的任意压缩记录文件)。在给定时间量(例如,每24小时)之后或者已经附上给定数目的压缩记录文件之后,系统100可以合并(consolidate)这些文件,以便从复合压缩记录文件生成单一压缩记 录文件以及新的对应索引文件。在合并之后,可以搜索单个索引,以定位可能包含给定记录的压缩块,从而导致更有效率的记录访问。在合并时间,系统100对压缩记录文件进行解压缩以便恢复对应的排序记录集合,通过主键值对记录进行排序,并且生成新的压缩记录文件和索引。由于每个所恢复的记录集合已经被排序,所以可以通过合并(merging)以前根据主键值排序的列表来有效地对记录进行排序,以便生成单一排序记录集合。参照图2C,根据有多少附加记录已经到达以及这些记录曾经以怎样的频率(howoften)被处理,复合压缩记录文件211包括初始压缩记录文件202、附加压缩记录文件210和许多(number of)附加压缩记录文件220、221、...。每个压缩记录文件都可以具有相关联的索引文件,索引文件可以用于在那个文件的压缩块内搜索给定记录。在本例中,压缩记录文件220中的一个足够小以具有单一压缩块(BLOCK 95 (块95)),因此不必需要相关联的索引文件,但是可以具有表示块中的主键值范围以及其在存储器中的位置的相关联数据。在合并之后,从不同的所附压缩记录文件中恢复的记录被处理,以生成单个压缩记录文件 230。在经单调分配的主键的情况下,不仅可以在压缩记录文件内自动排序记录,还可以从一个文件到下一个文件自动排序记录,消除合并文件的需要,以便在单一索引搜索中访问记录。参照图2D,系统100接收记录集合250,所述记录集合用连续整数识别,所述连续整数以到达顺序分配,作为记录的主键。因此,记录250通过主键自动排序。在本例中,初始压缩记录文件252包括每个都包括100个记录的压缩块,索引文件254包括键字段256和位置字段258,键字段256用于压缩块中第一个记录的主键值,位置字段258识别对应的存储器位置。由于在已经生成初始压缩记录文件252之后到达的记录将稍后以排序顺序自动具有主键值,所以所附的压缩记录文件260和相应索引文件262不需要被合并以基于单一索引搜索使能有效记录访问。例如,索引文件262可以简单地附在索引文件254上,并且可以一起搜索两个索引(例如,在单一二进制搜索中),用于定位压缩记录文件252或者压缩记录文件262之一中的压缩块。可以选择性地合并复合压缩记录文件261,以便消除可能已经在压缩记录文件252结尾处插入的不完整块。在这样的合并中,只有第一个文件252中的最后一个压缩块会需要被解压缩,并且代替合并经过解压缩的记录集合,而是记录集合可以简单地合并以形成新的排序的记录集合,该记录集合将被分为包含100个记录的集合中,并且然后再次压缩以形成新的压缩记录文件 。使用连续整数合成主键值的另一个好处是,如果将要基于主键值划分记录,那么由于在键值中没有间隙,所以所述划分可以自动进行平衡(balanced)。多种技术中的任意一种可以使用来更新记录以及使存在于压缩记录文件中的先前版本的记录无效。在某些情况下,不需要单独地去除或更新记录(例如,日志、交易、电话)。在这些情况下,旧记录被去除和丢弃,或者按预定数目的压缩块的组进行存档,例如,从压缩记录文件的开头开始进行存档。在某些情况下,可以去除整个压缩记录文件。在某些情况下,通过添加新的更新记录来更新一个记录的一个或多个值,用于存储在压缩块中,而以前接收到的记录版本(具有相同主键值)可以存储留在不同的压缩块中。然后,可以存在多个版本的记录,并且一些技术被用来确定哪个是有效记录版本。例如,出现在任意一个压缩记录文件中的最后一个版本(最近接收到的)可以被隐含地(implicitly)或明确地(explicitly)指定为有效版本,而任意其它版本都是无效的。在这种情况下以给定主键搜索记录可以包括按照出现顺序找出用该主键识别的最后一个记录。可替换地,通过写(write)表示该记录的任意先前版本不是有效的“无效记录”,可以使记录无效而无需添加新版本的记录。系统100通过不同的处理过程来传递(mediate)对存储在记录存储器106中的压缩记录文件的访问。多种同步技术中的任意一种可以用于调解对一个或多个压缩记录文件内的压缩块的访问。系统100确保修改文件的任何处理(例如,通过附上数据或者合并数据)不互相干扰。例如,如果在发生合并时新记录到达,系统100可以等待,直到合并处理完成,或者可以生成压缩块,并且在将它们附到当前压缩记录文件之前暂时存储它们。从压缩记录文件中读出的处理可以载入完整的一部分文件,并且可以忽视可能正在修改的任何不完整部分。系统100存储附加数据,该附加数据基于记录的属性而非主键来使能对记录的搜索。压缩记录文件的次级索引包括基于被指定为辅键(secondary key)的属性的值提供一个或多个主键值的信息。每个指定为辅键的属性都可以与相应的次级索引相关联。例如,每个次级索引都可以被组织为一个表,该表具有用相关联的辅键进行排序的行。每行都包括辅键值以及包括该辅键值的记录的一个或多个主键值。因此,如果代理发起对包括给定辅键值的任意记录的搜索,那么系统100就查找主键,主键用于在压缩记录文件的索引中搜索包括所述记录的压缩块。次级索引可以较大(例如,与记录的数目相近),并且在某些情况下可以存储在存储压缩记录文件的存储介质中。在某些情况下,被分配为辅键的属性的值可以对于每个记录是唯一的。在这种情况下,在辅键与主键之间为一对一对应关系,并且接口模块112可以将该辅键属性像它是主键一样呈现给代理。在新的压缩记录文件被附到复合压缩记录文件时,每个次级索引都可以被更新。可替换地,对每个压缩记录文件,可以将辅键与不同的次级索引相关联,并且当压缩记录文件被合并时,次级索引可以被合并为单一次级索引。筛选数据结构可以与压缩记录文件相关联,用于确定包括给定属性值的记录被包括在该文件的压缩块中的可能性。例如,使用重叠编码签字(overlap encoded signature,OES)作为筛选数据结构使系统100能够确定具有给定键值(主键或辅键)的记录肯定不存在(“否定”结果),或者具有给定键值的记录有存在的可能性(“肯定”结果)。对于肯定结果,系统访问适当的压缩块以便检索记录(“确认肯定”结果)或者确定该记录不存在(“错误肯定”结果)。对于否定结果,系统可以将否定结果给代理而无需为不存在的记录花费时间解压缩和搜索压缩块。OES的大小对肯定结果为错误肯定结果的频率有影响,一般来说,较大的OES大小会产生较少的错误肯定结果。对于给定的OES大小,一般来说,越少区别可能键值(fewer distinct possible key)会产生越少错误肯定结果。其它类型的筛选数据结构是可能的。可以针对每个压缩记录文件提供用于给定主键或辅键的筛选数据结构。可替换地,可以针对每个压缩块提供用于密钥的筛选数据结构。图3A和3B示出的表中提供了针对各种大小的示范性OES筛选数据结构(列)以及针对压缩记录文件中表现的各种数目的区别键值(行),获得键值的错误肯定结果的概率 值。对于一个OES来说,根据该OES的大小以及区别键值的数目,多于一个键值的存在可以表示在OES的同一部分,对于那些键值中的一个,如果存在其它键值则可能导致错误肯定结果。本示范性OES的大小从210=1024bits (图3A的表中)到228=256Mbits (图3B的表中)不等。区别键值的数目从100 (图3A的表中)到100,000,000 (图3B的表中)不等。对于这两个表来说,右上方的空单元格对应于0%,而左下方的空单元格对应于100%。对于错误肯定结果低的单元格(例如,接近零),筛选数据结构可能大于提供充分筛选所需。对于错误肯定概率相当大的单元格(例如,>50%),筛选数据结构可能太小而不能提供充分筛选。本例对应于每个键值使用四个散列(hash)码来生成OES的技术。对于给定数目的区别密钥,其它OES筛选数据结构的例子可能产生不同的错误肯定概率表。由于压缩记录文件中表现的区别键值的数目可能是未知的,所以系统100可以基于从其生成文件的记录的数目,对压缩记录文件选择筛选数据结构的大小。在选择大小时,在降低错误肯定概率与存储筛选数据结构所需要的存储空间之间存在权衡。该权衡中的一个因素是搜索不存在的(absent)键值的可能性。如果大多数要查找的键值可能存在于解压缩记录中,则可能根本不需要筛选数据结构。如果有相当大可能性找不到键值,那么对于相对较大的筛选数据结构分配存储空间会节省相当多时间。与压缩记录文件相关联的筛选数据结构的大小取决于该文件对应于该记录的初始或合并的大型数据库、还是对应于对较大数据库进行的较小更新。相对较小的筛选数据结构大小可以用于在固定更新间隔期间被附加的压缩记录文件,因为在每次更新中通常存在较少区别键值。而且,随着多次更新之后压缩记录文件的数目增长,较小的大小可以缩减所需的存储空间。筛选数据结构的大小可以基于更新中期望的记录和/或区别键值的数目、以及基于期望的更新次数。例如,如果在24小时的时段中,每五分钟附加上更新的文件,那么在一天结束时将有288个压缩记录文件。至少一个错误肯定结果的概率将是图3A和3B的表中的适当值的288倍(假定对于不同更新的结果是独立的)。在合并之后,由于区别键值的数目会显著增长,所以较大的筛选数据结构对于合并后的压缩记录文件可能是合适的。压缩记录文件可以具有针对主键和针对每个辅键、或者针对密钥的某些子集(subset)的筛选数据结构。例如,系统100可以提供针对主键以及只针对那些期待在搜索记录时最经常使用的辅键的筛选数据结构。图4A示出了用于以给定主键值搜索一个或多个记录的过程400的流程图。过程400确定402是否存在与第一压缩记录文件相关联的筛选数据结构。如果存在,则过程400处理404筛选数据结构,以获得肯定结果或者否定结果。如果给定主键值没有通过筛选(否定结果),过程400检查406下一个压缩记录文件,并且如果存在那个文件则对其重复筛选(repeat on)。如果给定主键值通过筛选(肯定结果),过程400以给定主键值搜索408可能包含记录的块的索引。如果没有筛选数据结构与压缩记录文件相关联,则过程400搜索408索引而不执行筛选。在搜索408索引之后,如果找到410与包括给定主键值的键值范围相关联的压缩块,那么过程400解压缩412在由索引条目识别的位置处的块,并且以给定主键值搜索414结果记录中一个或多个记录。然后,过程检查416下一个压缩记录文件,并且如果该文件存在则对其重复筛选。如果没有发现压缩块(例如,如果给定主键值小于第一块中的最小键值或大于最后一个块中的最大键值),那么过程400就检查416下一个压缩记录文件,并且如 果该文件存在则对其重复筛选。图4B示出了用于以给定辅键值搜索一个或多个记录的过程400的流程图。过程450确定452是否存在与第一压缩记录文件相关联的筛选数据结构。如果存在,则过程450处理454筛选数据结构,以获得肯定结果或者否定结果。如果给定辅键值没有通过筛选(否定结果),那么过程450检查406下一个压缩记录文件,并且如果该文件存在则对其重复筛选。如果给定辅键值通过筛选(肯定结果),则过程450查找458对应于包含给定辅键的记录的主键。如果没有筛选数据结构与压缩记录文件相关联,则过程450查找458主键而不执行筛选。对于找到的每一个主键,过程450以给定主键值搜索460可能包含记录的块的索弓I。在搜索460索引之后,如果找到462与包括给定主键值的键值范围相关联的压缩块,则过程450解压缩464在由索引条目识别的位置处的块,并且以给定主键值搜索466结果记录中的一个或多个记录。然后,过程检查468下一个压缩记录文件,并且如果该文件存在则对其重复筛选。如果没有发现压缩块,则过程450检查468下一个压缩记录文件,并且如果该文件存在则对其重复筛选。可以按照出现的顺序由过程400或过程450返回以给定主键或辅键找到的多个记录,或者,在某些情况下,只返回最后版本的记录。上面所描述的记录存储与检索方案可以使用用于在计算机上执行的软件来实现。例如,该软件形成在一个或多个经编程或可编程的计算机系统(可以具有各种结构,诸如分布的、客户端/服务器、或网格)上执行的一个或多个计算机程序中的过程,每个计算机系统包括至少一个处理器、至少一个数据存储系统(包括易失性存储器和非易失性存储器和/或存储元件)、至少一个输入设备或端口、以及至少一个输出设备或端口。该软件可以形成大型程序的一个或多个模块,例如,该大型程序提供与计算图表的设计和配置相关的其它业务。图表的节点和元素可以被实施为存储在计算机可读介质中的数据结构或者符合存储在数据库中的数据模型的其它组织的数据。该软件可以被提供在诸如⑶-ROM这样的介质上,其可以被通用或专用可编程计算机读取或者通过网络递送(编码在传播信号中)到执行它的计算机。所有功能可以在专用计算机上执行,或者使用诸如协处理器这样的专用硬件执行。该软件可以以分布方式实施,在该分布方式中,由该软件指定的不同的计算部分由不同的计算器执行。每个这样的计算机程序被优选地存储在或下载到可由通用或专用可编程计算机读取的存储介质或设备中(例如,固态存储器或介质、或者磁介质或光介质),用于在存储介质或设备被计算机系统读取时配置并运行计算机,以便执行这里所描述的过程。也可以考虑将本发明的系统实施为计算机可读存储介质,其配置有计算机程序,其中,这样配置的存储介质使得计算机系统以指定或预定义的方式运行,以便执行这里所描述的功能。已经描述了本发明的许多实施例。但是,应当理解,可以进行各种修改,而在不脱离本发明的精神和范围。例如,上面所描述的某些步骤可以单独排序,从而可以以不同于所述的顺序来执行。将理解的是,前述描述意在说明而非局限本发明的范围,本发明的范围由后附权利要求限定。例如,可以以不同的顺序来执行上述的许多功能步骤,而基本不影响总体处
理。其它实施例也在后附权利要求的范围内。
权利要求
1.一种用于管理数据的方法,该方法包括 接收可单独访问的数据单元,每个数据单元由各自的键值来识别; 存储多个数据块,至少一些块中的每一个是通过压缩多个接收的数据单元而生成的;以及 管理各块中用于搜索数据单元的索引的集合,其中所述索引的集合中的第一索引包括针对每个所述块的条目,所述条目基于第一键值使能包括各数据单元的块的位置,所述数据单元对应于包括所述第一键值的各键值的范围,所述索引的集合还包括第二索引,所述第二索引包括用于从对应于所述第一键值的数据单元的属性值确定所述第一键值的条目。
2.如权利要求I所述的方法,其中,至少一些块是通过基于所述键值的定义的顺序压缩所述数据单元而生成的。
3.如权利要求2所述的方法,其中,各自的块是从数据单元的各自的集合生成的,并且这些集合根据定义的顺序对应于无重叠的第一键值的范围。
4.如权利要求I所述的方法,其中,所述第一索引中的一个或多个条目识别与对应块从其生成的数据单元对应的第一键值的范围。
5.如权利要求4所述的方法,其中,所述第一键值的范围由包括所述第一键值的范围的至少一个极值的信息来识别。
6.如权利要求4所述的方法,其中,所述第一键值的范围由包括与对应块从其生成的数据单元相关联的第一键值的至少一个极值的信息来识别。
7.如权利要求I所述的方法,其中,所述第一索引中至少一些条目中的每一个识别对应块的存储位置。
8.如权利要求I所述的方法,其中,所述数据单元是每一个都具有一个或多个与对应字段相关联的值的记录。
9.如权利要求I所述的方法,其中,所述第一键值对应于在被接收之前与给定数据单元相关联的一个或多个字段。
10.如权利要求I所述的方法,其中,所述第一键值在被接收到之后被分配给所述数据单元。
11.如权利要求I所述的方法,其中,所述第一键值被单调地分配。
12.如权利要求I所述的方法,其中,与所存储的块相关联的筛选数据结构用于确定包括给定属性值的数据单元包括在从其生成所述块的数据单元中的可能性。
13.如权利要求I所述的方法,其中,所述数据单元是每一个都具有与对应字段相关联的一个或多个值的记录,识别记录的所述第一键值对应于主键值,并且与所述第二索引相关联的属性值对应于辅键值。
14.如权利要求I所述的方法,其中,所述第二索引包括表,该表具有按所述数据单元中的属性值进行排序的行。
15.一种用于管理数据的计算机系统,该计算机系统包括 输入设备,配置为接收可单独访问的数据单元,每个数据单元由各自的键值来识别; 至少一个处理器,配置为处理数据单元,该处理包括 存储多个数据块,至少一些块中的每一个是通过压缩多个接收的数据单元而生成的;以及管理各块中用于搜索数据单元的索引的集合,其中所述索引的集合中的第一索引包括针对每个所述块的条目,所述条目基于第一键值使能包括各数据单元的块的位置,所述数据单元对应于包括所述第一键值的各键值的范围,所述索引的集合还包括第二索引,所述第二索引包括用于从对应于所述第一键值的数据单元的属性值确定所述第一键值的条目。
16.如权利要求15所述的计算机系统,其中,至少一些块是通过基于所述键值的定义的顺序压缩所述数据单元而生成的。
17.如权利要求16所述的计算机系统,其中,各自的块是从数据单元的各自的集合生成的,并且这些集合根据定义的顺序对应于无重叠的第一键值的范围。
18.如权利要求15所述的计算机系统,其中,所述第一索引中的一个或多个条目识别与对应块从其生成的数据单元对应的第一键值的范围。
19.如权利要求18所述的计算机系统,其中,所述第一键值的范围由包括所述第一键值的范围的至少一个极值的信息来识别。
20.如权利要求18所述的计算机系统,其中,所述第一键值的范围由包括与对应块从其生成的数据单元相关联的第一键值的至少一个极值的信息来识别。
21.如权利要求15所述的计算机系统,其中,所述第一索引中至少一些条目中的每一个识别对应块的存储位置。
22.如权利要求15所述的计算机系统,其中,所述数据单元是每一个都具有一个或多个与对应字段相关联的值的记录。
23.如权利要求15所述的计算机系统,其中,所述第一键值对应于在被接收之前与给定数据单元相关联的一个或多个字段。
24.如权利要求15所述的计算机系统,其中,所述第一键值在被接收到之后被分配给所述数据单元。
25.如权利要求15所述的计算机系统,其中,所述第一键值被单调地分配。
26.如权利要求15所述的计算机系统,其中,与所存储的块相关联的筛选数据结构用于确定包括给定属性值的数据单元包括在从其生成所述块的数据单元中的可能性。
27.如权利要求15所述的计算机系统,其中,所述数据单元是每一个都具有与对应字段相关联的一个或多个值的记录,识别记录的所述第一键值对应于主键值,并且与所述第二索引相关联的属性值对应于辅键值。
28.如权利要求15所述的计算机系统,其中,所述第二索引包括表,该表具有按所述数据单元中的属性值进行排序的行。
29.一种用于管理数据的系统,该系统包括 用于接收可单独访问的数据单元的装置,每个数据单元由各自的键值来识别; 用于存储多个数据块的装置,至少一些块中的每一个是通过压缩多个接收的数据单元而生成的;以及 用于管理各块中用于搜索数据单元的索引的集合的装置,其中所述索引的集合中的第一索引包括针对每个所述块的条目,所述条目基于第一键值使能包括各数据单元的块的位置,所述数据单元对应于包括所述第一键值的各键值的范围,所述索引的集合还包括第二索引,所述第二索引包括用于从对应于所述第一键值的数据单元的属性值确定所述第一键值的条目。
30.如权利要求29所述的计算机系统,其中,至少一些块是通过基于所述键值的定义的顺序压缩所述数据单元而生成的。
31.如权利要求30所述的计算机系统,其中,各自的块是从数据单元的各自的集合生成的,并且这些集合根据定义的顺序对应于无重叠的第一键值的范围。
32.如权利要求29所述的计算机系统,其中,所述第一索引中的一个或多个条目识别与对应块从其生成的数据单元对应的第一键值的范围。
33.如权利要求32所述的计算机系统,其中,所述第一键值的范围由包括所述第一键值的范围的至少一个极值的信息来识别。
34.如权利要求32所述的计算机系统,其中,所述第一键值的范围由包括与对应块从其生成的数据单元相关联的第一键值的至少一个极值的信息来识别。
35.如权利要求29所述的计算机系统,其中,所述第一索引中至少一些条目中的每一 个识别对应块的存储位置。
36.如权利要求29所述的计算机系统,其中,所述数据单元是每一个都具有一个或多个与对应字段相关联的值的记录。
37.如权利要求29所述的计算机系统,其中,所述第一键值对应于在被接收之前与给定数据单元相关联的一个或多个字段。
38.如权利要求29所述的计算机系统,其中,所述第一键值在被接收到之后被分配给所述数据单元。
39.如权利要求29所述的计算机系统,其中,所述第一键值被单调地分配。
40.如权利要求29所述的计算机系统,其中,与所存储的块相关联的筛选数据结构用于确定包括给定属性值的数据单元包括在从其生成所述块的数据单元中的可能性。
41.如权利要求29所述的计算机系统,其中,所述数据单元是每一个都具有与对应字段相关联的一个或多个值的记录,识别记录的所述第一键值对应于主键值,并且与所述第二索引相关联的属性值对应于辅键值。
42.如权利要求29所述的计算机系统,其中,所述第二索引包括表,该表具有按所述数据单元中的属性值进行排序的行。
全文摘要
提供一种用于管理数据的方法,该方法包括接收可单独访问的数据单元,每个数据单元由各自的键值来识别;存储多个数据块,至少一些块中的每一个是通过压缩多个接收的数据单元而生成的;以及管理各块中用于搜索数据单元的索引的集合,其中所述索引的集合中的第一索引包括针对每个所述块的条目,所述条目基于第一键值使能包括各数据单元的块的位置,所述数据单元对应于包括所述第一键值的各键值的范围,所述索引的集合还包括第二索引,所述第二索引包括用于从对应于所述第一键值的数据单元的属性值确定所述第一键值的条目。
文档编号G06F17/30GK102945242SQ20121035004
公开日2013年2月27日 申请日期2007年10月29日 优先权日2006年11月1日
发明者埃弗雷姆.M.维施尼亚克, 马歇尔.A.伊斯曼, 保罗.贝, H.马克.布罗姆利, 约翰.L.理查森 申请人:起元技术有限责任公司