书签 分享 收藏 举报 版权申诉 / 29

单独可访问数据单元的管理存储.pdf

  • 上传人:奻奴
  • 文档编号:627967
  • 上传时间:2018-02-27
  • 格式:PDF
  • 页数:29
  • 大小:7.07MB
  • 摘要
    申请专利号:

    CN201410290632.6

    申请日:

    2009.05.13

    公开号:

    CN104199816A

    公开日:

    2014.12.10

    当前法律状态:

    实审

    有效性:

    审中

    法律详情:

    实质审查的生效IPC(主分类):G06F 17/30申请日:20090513|||公开

    IPC分类号:

    G06F17/30

    主分类号:

    G06F17/30

    申请人:

    起元技术有限责任公司

    发明人:

    伊弗雷姆.M.维施尼亚克; 克雷格.W.斯坦菲尔

    地址:

    美国马萨诸塞州

    优先权:

    2008.05.14 US 12/120,468

    专利代理机构:

    北京市柳沈律师事务所 11105

    代理人:

    邸万奎

    PDF完整版下载: PDF下载
    内容摘要

    一种单独可访问数据单元的管理存储。本发明公开了一种方法、装置和计算机可读的介质。所述方法包括:向第一文件和向缓冲器添加来自数据流的数据;响应于满足预定义条件,将添加到缓冲器的数据转移为压缩文件;以及在来自缓冲器的数据已经被转移为压缩文件之后,向第二文件和向缓冲器添加来自数据流的数据。

    权利要求书

    1.  一种方法,包括:
    向第一文件和向缓冲器添加来自数据流的数据;
    响应于满足预定义条件,将添加到缓冲器的数据转移为压缩文件;以及
    在来自缓冲器的数据已经被转移为压缩文件之后,向第二文件和向缓冲器添加来自数据流的数据。

    2.
      根据权利要求1的方法,其中,第一文件和第二文件是同一文件。

    3.
      根据权利要求1的方法,其中,
    来自数据流的数据在被添加到第一文件、缓冲器或两者之前被复制,并且
    来自数据流的数据在被添加到第二文件、缓冲器或两者之前被复制。

    4.
      根据权利要求1的方法,包括在缓冲器中的数据被转移为压缩文件之前分类缓冲器中的该数据。

    5.
      根据权利要求4的方法,其中当来自数据流的数据被添加到缓冲器时在缓冲器中分类来自数据流的该数据。

    6.
      根据权利要求1的方法,其中添加到第一文件的数据和添加到第二文件的数据具有非压缩形式。

    7.
      根据权利要求1的方法,其中添加到第一文件的数据和添加到第二文件的数据是可搜索的。

    8.
      根据权利要求7的方法,其中添加到第一文件的数据在被添加到第一文件的同时是可搜索的,添加到第二文件的数据在被添加到第二文件的同时是可搜索的。

    9.
      根据权利要求1的方法,包括在来自缓冲器的文件已被转移为压缩文件之后删除第一文件。

    10.
      根据权利要求1的方法,包括在添加到缓冲器的数据正被转移为压缩文件的同时,锁闭指示第一文件的状态的状态信息。

    11.
      根据权利要求1的方法,包括基于第二文件的创建、第一文件的删除以及从缓冲器向压缩文件的数据转移中的一个或多个更新指示第一文件的状态的状态信息。

    12.
      根据权利要求10的方法,其中在状态信息被锁闭的同时,通过索引 或搜索操作不能访问该状态信息。

    13.
      根据权利要求11的方法,包括在状态信息已经更新之后解锁该状态信息。

    14.
      根据权利要求13的方法,包括在已经更新状态信息之后,删除所述第一文件。

    15.
      根据权利要求1的方法,其中,所述预定义条件基于时间。

    16.
      根据权利要求1的方法,其中,所述预定义条件基于第一文件的尺寸。

    17.
      根据权利要求1的方法,其中,所述预定义条件基于记录的数量。

    18.
      一种计算机可读的介质,其存储用于从设备信号获得值的可执行指令,所述指令用于使得计算机执行如下操作:
    向第一文件和向缓冲器添加来自数据流的数据;
    响应于满足预定义条件,将添加到缓冲器的数据转移为压缩文件;以及
    在来自缓冲器的数据已经被转移为压缩文件之后,向第二文件和向缓冲器添加来自数据流的数据。

    19.
      根据权利要求18的计算机可读的介质,其中,第一文件和第二文件是同一文件。

    20.
      根据权利要求18的计算机可读的介质,其中,
    来自数据流的数据在被添加到第一文件、缓冲器或两者之前被复制,并且
    来自数据流的数据在被添加到第二文件、缓冲器或两者之前被复制。

    21.
      根据权利要求18的计算机可读的介质,包括用于使得计算机在缓冲器中的数据被转移为压缩文件之前分类缓冲器中的该数据的指令。

    22.
      根据权利要求21的计算机可读的介质,其中当来自数据流的数据被添加到缓冲器时在缓冲器中分类来自数据流的该数据。

    23.
      根据权利要求18的计算机可读的介质,其中添加到第一文件的数据和添加到第二文件的数据具有非压缩形式。

    24.
      根据权利要求18的计算机可读的介质,其中添加到第一文件的数据和添加到第二文件的数据是可搜索的。

    25.
      根据权利要求24的计算机可读的介质,其中添加到第一文件的数据在被添加到第一文件的同时是可搜索的,添加到第二文件的数据在被添加到 第二文件的同时是可搜索的。

    26.
      根据权利要求18的计算机可读的介质,包括用于使得计算机在来自缓冲器的文件已被转移为压缩文件之后删除第一文件的指令。

    27.
      根据权利要求18的计算机可读的介质,包括用于使得计算机在添加到缓冲器的数据正被转移为压缩文件的同时,锁闭指示第一文件的状态的状态信息的指令。

    28.
      根据权利要求18的计算机可读的介质,包括用于使得计算机基于第二文件的创建、第一文件的删除以及从缓冲器向压缩文件的数据转移中的一个或多个更新指示第一文件的状态的状态信息的指令。

    29.
      根据权利要求27的计算机可读的介质,其中在状态信息被锁闭的同时,通过索引或搜索操作不能访问该状态信息。

    30.
      根据权利要求28的计算机可读的介质,包括用于使得计算机在状态信息已经更新之后解锁该状态信息的指令。

    31.
      根据权利要求30的计算机可读的介质,包括用于使得计算机在已经更新状态信息之后删除所述第一文件的指令。

    32.
      根据权利要求18的计算机可读的介质,其中,所述预定义条件基于时间。

    33.
      根据权利要求18的计算机可读的介质,其中,所述预定义条件基于第一文件的尺寸。

    34.
      根据权利要求18的计算机可读的介质,其中,所述预定义条件基于记录的数量。

    35.
      一种系统,包括:
    用于向第一文件和向缓冲器添加来自数据流的数据的装置;
    用于响应于满足预定义条件,将添加到缓冲器的数据转移为压缩文件的装置;以及
    用于在来自缓冲器的数据已经被转移为压缩文件之后,向第二文件和向缓冲器添加来自数据流的数据的装置。

    36.
      根据权利要求35的系统,其中,第一文件和第二文件是同一文件。

    37.
      根据权利要求35的系统,其中,
    来自数据流的数据在被添加到第一文件、缓冲器或两者之前被复制,并且
    来自数据流的数据在被添加到第二文件、缓冲器或两者之前被复制。

    38.
      根据权利要求35的系统,包括用于在缓冲器中的数据被转移为压缩文件之前分类缓冲器中的该数据的装置。

    39.
      根据权利要求38的系统,其中当来自数据流的数据被添加到缓冲器时在缓冲器中分类来自数据流的该数据。

    40.
      根据权利要求35的系统,其中添加到第一文件的数据和添加到第二文件的数据具有非压缩形式。

    41.
      根据权利要求35的系统,其中添加到第一文件的数据和添加到第二文件的数据是可搜索的。

    42.
      根据权利要求41的系统,其中添加到第一文件的数据在被添加到第一文件的同时是可搜索的,添加到第二文件的数据在被添加到第二文件的同时是可搜索的。

    43.
      根据权利要求35的系统,包括用于在来自缓冲器的文件已被转移为压缩文件之后删除第一文件的装置。

    44.
      根据权利要求35的系统,包括用于在添加到缓冲器的数据正被转移为压缩文件的同时,锁闭指示第一文件的状态的状态信息的装置。

    45.
      根据权利要求35的系统,包括用于基于第二文件的创建、第一文件的删除以及从缓冲器向压缩文件的数据转移中的一个或多个更新指示第一文件的状态的状态信息的装置。

    46.
      根据权利要求44的系统,其中在状态信息被锁闭的同时,通过索引或搜索操作不能访问该状态信息。

    47.
      根据权利要求45的系统,包括用于在状态信息已经更新之后解锁该状态信息的装置。

    48.
      根据权利要求47的系统,包括用于在已经更新状态信息之后,删除所述第一文件的装置。

    49.
      根据权利要求35的系统,其中,所述预定义条件基于时间。

    50.
      根据权利要求35的系统,其中,所述预定义条件基于第一文件的尺寸。

    51.
      根据权利要求35的系统,其中,所述预定义条件基于记录的数量。

    说明书

    单独可访问数据单元的管理存储
    本申请是申请日为2009年5月13日、申请号为200980117202.1(国际申请号为PCT/US2009/043737)、发明名称为“单独可访问数据单元的管理存储”的发明专利申请的分案申请。
    技术领域
    本发明涉及单独可存储的数据单元的管理存储。
    背景技术
    数据库系统可以以任何各种格式存储单独可访问的数据单元或“记录”。每个记录可以对应于诸如信用卡交易的逻辑实体,且典型地具有用于唯一地标识该记录的关联首要键(primary key)。该记录可以包括与记录格式的相应字段关联的多个值。这些记录可以被存储在一个或多个文件(例如,平面文件或诸如XML文件的结构化数据文件)中。在压缩的数据库系统中,记录内的各个记录或值可以当被存储时被压缩,且当被访问以减少系统的存储需求时被解压缩。
    发明内容
    通常,在一个方面中,一种方法包括确定文件的长度并在第一存储器位置中存储该文件的长度。确定在该文件内的最后完整的记录的结束点,以及在第二存储器位置中存储该结束点。在第一存储器位置中存储的文件的长度与该文件的当前长度比较,且如果该文件的当前长度超过在第一存储器位置中存储的文件的长度,则更新与在结束点处开始的文件关联的数据结构。
    各方面可以包括一个或多个以下特征。该数据结构可以是关联的数据结构,诸如哈希(hash)表或二进制树。该结束点还可以表示文件的结束。该结束点可以在文件的不完整记录之前。可以检查该文件以寻找错误。检查该文件以寻找错误可以包括确定该文件的当前长度是否小于在第一存储器位置中存储的文件的长度。该文件可以是未压缩数据文件。
    通常,在另一方面,一种方法包括向第一文件且向缓冲器同时添加来自数据流的数据。在满足预定义条件之后,将与缓冲器关联的数据转移为压缩文件。在来自缓冲器的数据已经被转移为压缩文件之后,创建第二文件以从数据流接收数据。
    各方面可以包括一个或多个以下特征。在来自缓冲器的数据已经被转移为压缩文件之后,可以删除第一文件。状态信息可以标识第一文件是否有效。在与缓冲器关联的数据正被转移为压缩文件的同时,可以锁闭该状态信息。可以更新该状态信息以反映第二文件的创建、第一文件的删除和在缓冲器和压缩文件之间的数据的转移。当状态信息被锁闭(lock)时,可能通过索引或搜索操作不能访问该状态信息。该状态信息可以在其被更新了之后被解锁。该第一文件可以在该状态信息被更新了之后被删除。该预定义条件可以基于时间。该预定义条件可以基于第一文件的尺寸。该预定义条件可以基于记录的数量。
    通常,在另一方面,一种计算机可读介质存储用于从设备信号获取值的可执行指令,所述指令导致计算机确定文件的长度并在第一存储器位置中存储文件的长度。可以确定在该文件内的最后完整的记录的结束点,以及可以在第二存储器位置中存储该结束点。可以比较在第一存储器位置中存储的文件的长度与该文件的当前长度。如果该文件的当前长度超过在第一存储器位置中存储的文件的长度,则可以更新与在结束点处开始的文件关联的数据结构。
    各方面可以包括一个或多个以下特征。该数据结构可以是关联的数据结构,诸如哈希表或二进制树。该结束点还可以表示文件的结束。该结束点可以在文件的不完整记录之前。这些指令还可以使得计算机检查该文件以寻找错误。检查该文件以寻找错误可以包括确定该文件的当前长度是否小于在第一存储器位置中存储的文件的长度。该文件可以是未压缩数据文件。
    通常,在另一方面,一种计算机可读介质存储用于从设备信号获取值的可执行指令,所述指令导致计算机向第一文件且向缓冲器同时添加来自数据流的数据。在满足预定义条件之后,将与缓冲器关联的数据转移为压缩文件。在来自缓冲器的数据已经被转移为压缩文件之后,创建第二文件以从数据流接收数据。
    各方面可以包括一个或多个以下特征。在来自缓冲器的数据已经被转移 为压缩文件之后,可以删除第一文件。状态信息可以标识第一文件是否有效。在与缓冲器关联的数据正被转移为压缩文件的同时,可以锁闭该状态信息。可以更新该状态信息,以反映第二文件的创建、第一文件的删除和在缓冲器和压缩文件之间的数据的转移。当状态信息被锁闭时,可能通过索引或搜索操作不能访问该状态信息。该状态信息可以在其被更新了之后被解锁。该第一文件可以在该状态信息被更新了之后被删除。该预定义条件可以基于时间。该预定义条件可以基于第一文件的尺寸。该预定义条件可以基于记录的数量。
    通常,在一个方面中,一种系统包括用于确定文件的长度并在第一存储器位置中存储该文件的长度的装置。该系统还包括用于确定在该文件内的最后完整的记录的结束点、并在第二存储器位置中存储该结束点的装置。该系统还包括用于比较在第一存储器位置中存储的文件的长度与该文件的当前长度的装置,以及用于如果该文件的当前长度超过在第一存储器位置中存储的文件的长度、则更新与在结束点处开始的文件关联的数据结构的装置。
    通常,在另一方面,一种系统包括用于向第一文件且向缓冲器同时添加来自数据流的数据的装置。该系统还包括用于在满足预定义条件之后、将与缓冲器关联的数据转移为压缩文件的装置,以及用于在来自缓冲器的数据已经被转移为压缩文件之后、创建第二文件以从数据流接收数据的装置。
    在再一方面,一种方法包括:向第一文件和向缓冲器添加来自数据流的数据;响应于满足预定义条件,将添加到缓冲器的数据转移为压缩文件;以及在来自缓冲器的数据已经被转移为压缩文件之后,向第二文件和向缓冲器添加来自数据流的数据。
    在又一方面,一种计算机可读的介质存储用于从设备信号获得值的可执行指令,所述指令用于使得计算机执行如下操作:向第一文件和向缓冲器添加来自数据流的数据;响应于满足预定义条件,将添加到缓冲器的数据转移为压缩文件;以及在来自缓冲器的数据已经被转移为压缩文件之后,向第二文件和向缓冲器添加来自数据流的数据。
    在再又一方面,一种系统,包括:用于向第一文件和向缓冲器添加来自数据流的数据的装置;用于响应于满足预定义条件,将添加到缓冲器的数据转移为压缩文件的装置;以及用于在来自缓冲器的数据已经被转移为压缩文件之后,向第二文件和向缓冲器添加来自数据流的数据的装置。
    附图说明
    图1是用于存储和检索记录的系统的方框图。
    图2A、图2B、图2C、和图2D是由系统处理且在系统中存储的数据的示意图。
    图3A和图3B是示出不同签名尺寸的伪造(false)肯定概率的表。
    图4A和图4B是用于搜索记录的过程的流程图。
    图5是查询记录的过程的流程图。
    图6A和图6B是可附属查找文件的示意图。
    图7是查询可附属查找文件的过程的流程图。
    图8是存储数据的过程的流程图。
    具体实施方式
    参考图1,记录存储和检索系统100从一个或多个源(诸如源A-源C)接受数据。数据包括可以表示为单独可存取数据单元的信息。例如,信用卡公司可以从各种零售公司接收表示各个交易的数据。每个交易与表示诸如客户名称、日期、购买量等的属性的值关联。记录处理模块102保证根据预定义记录格式来格式化该数据,以便与交易关联的值被存储在记录中。在一些情况下,这可以包括根据记录格式变换来自源的数据。在其他情况下,一个或多个源可以提供已经根据记录格式格式化了的数据。
    记录处理模块102准备记录用于以取决于各种因素的各类数据结构存储,各种因素诸如是否有必要快速访问所存储的记录。当准备记录用于在可附属查找文件中快速访问时,处理模块102在记录到达时将这些记录附属到可附属查找文件中,并维持存储器内(in-memory)索引,如以下更详细描述的。当准备记录用于在压缩记录文件中的压缩存储时,处理模块102通过标识每个记录的首要键值(例如,标识单个记录的唯一键、或标识记录的多个更新版本的键)来将记录分类,并将这些记录划分为对应于首要键值的不重叠范围的记录组。例如,每组记录可以对应于预定义数量的记录(例如100个记录)。
    文件管理模块104管理可附属查找文件(在其被使用的情形下)和压缩查找文件两者。当管理压缩记录文件时,文件管理模块104将每组记录压缩为压缩的数据块。这些压缩块被存储在记录存储器106中(例如,在诸如一 个或多个硬盘驱动的非易失性存储介质中)的压缩记录文件中。
    该系统100还包括索引和搜索模块108,其提供包括对压缩记录文件中的每个块的入口的索引。该索引被用于定位可能包括给定记录的块,如以下更详细描述的。该索引可以被存储在索引存储器110中的索引文件中。例如,当可以在相同存储介质中存储索引文件作为压缩记录文件时,优选地可以在相对更快速的存储器(例如,诸如动态随机存取存储器的易失性存储介质)中存储索引文件,因为索引文件典型地比压缩记录文件小得多。该索引还可以是被维持作为存储器内数据结构的动态索引114。动态索引114的一些例子是哈希表、二进制树和b树。索引和搜索模块108还提供用于搜索可附属查找文件的接口,如以下更详细地描述的。
    在系统100的替换实施方式中,各组记录可以被处理以使用除了压缩以外或取代压缩的其他函数来生成块,以按某种方式组合这些记录(即,使得块不仅仅是级联的一组记录)。例如,一些系统可以处理一组记录来生成加密数据的块。
    接口模块112向人和/或计算机代理(诸如代理A-代理D)提供对存储的记录的访问。例如,接口模块112可以实现在线账户系统,用于信用卡客户来监视其交易。可以由系统100处理对满足各种准则的交易信息的请求,且可以从记录存储器106中存储的压缩块内检索对应的记录。
    来自一个或多个源的到来记录流可以在被处理以生成压缩记录文件之前被临时存储。
    图2A-图2D、图3A-图3B、和图4A-图4B示出了管理在压缩记录文件中的记录的例子。图5和图6A-图6B示出了使用可附属查找文件管理记录的例子。参考图2A,系统100接收要在压缩记录文件中存储的一组记录200,且根据首要键的值来对这些记录分类。
    首要键值可以唯一地标识可以由一个或多个记录表示的数据库中的给定项目(例如,具有给定首要键值的每个记录可以对应于该项目的不同更新版本)。首要键可以是对应于记录的一个或多个现有字段的“自然键”。如果没有保证对每个项目唯一的字段,首要键可以是包括记录的多个字段的复合键,其一起保证或很可能对每个项目是唯一的。或者,首要键可以是可以在被接收之后分配给每个记录的“合成键”。例如,系统100可以分配唯一的首要键值为顺序递增的整数,或某种其他顺序的单调递进的值(例如,时间戳)。在 该情况下,表示相同项目的不同版本的记录可以被分配不同的合成键值。如果使用整数,(例如,如由使用的位数确定的)可能的首要键值的范围可以足够大,以至于如果首要键浮动(roll over),则已经从压缩记录文件中移除先前被分配了给定首要键值的任何记录。例如,可以移除和存档或丢弃旧的交易。
    在图2A所示的例子中,记录200由字母分类的首要键值标识:A,AB,CZ,…。系统100压缩具有首要键值A-DD的第一组N个记录,以生成标为块1的对应的压缩块。下一组记录包括具有首要键值DX-GF的接下来的N个分类记录。文件管理模块104可以使用各种无损数据压缩算法(例如,Lempel-Ziv型算法)中的任意。从压缩记录文件202组合每个相继的压缩块。
    用于生成压缩块的数目为N的记录可以被选择以在压缩效率和解压缩速度之间折衷。该压缩可以用取决于正被压缩的数据的特性和正被压缩的数据的尺寸的给定因子R来减少平均的数据尺寸(例如,当更多数据正被压缩时R通常更小)。压缩还可以具有平均尺寸O的关联开销(例如压缩相关数据)。从每个尺寸X的M个记录中生成的得到的压缩记录文件的平均尺寸可以被表述为「M/N」(RNX+O),其对于大量块可以近似为RMY+OM/N。因此,更大的N值可以在某些情况下通过减少R并减少耗费对文件的尺寸的开销贡献来提供更大的压缩。更小的N值减少了解压缩给定的压缩块来访问可以在块中包含的记录所需的时间。
    在其他实施方式中,不同的压缩块可以包括不同数量的记录。每个块可以具有根据预定范围的许多记录。例如,第一块包括具有首要键值1-1000的记录,且第二块包括具有首要键值1001-2000的记录,等等。在该例子中的压缩块中的记录的数量可以不同,因为不一定存在每个首要键值(例如,在现有数值字段用作自然键的情况下)。
    在一些实施方式中,不同的压缩块在一些情况下可以包括目标数量的记录,且在例外情况下可以包括更多或更少的记录。例如,如果一组记录以如下记录结束,即其首要键值不同于按分类的顺序接下来的记录的首要键值的记录,则使用那些记录以生成压缩块。如果一组记录以如下的记录结束,即其首要键值相同于按分类的顺序接下来的记录的首要键值的记录,则向该组添加具有该首要键值的所有的附加的记录。以此方式,相同的首要键值不从一个压缩块横跨到下一个。
    索引和搜索模块108为每个压缩块在索引文件204中生成入口。索引入口包括键字段206,其例如通过在对应的未压缩的该组记录中的第一记录的首要键值来标识每个压缩块。这些入口还包括标识所标识的压缩块在压缩记录文件202内的存储位置的位置字段208。例如,位置字段可以包含以记录存储器106中的绝对地址形式、或以从记录存储器106中的压缩记录文件202的开始的地址的偏移量的形式的指针。
    为了搜索压缩记录文件202中的给定记录,模块108可以基于键字段206执行索引文件204的搜索(例如二进制搜索)。对于提供的键值(例如由代理之一提供),模块108定位包括与包括提供的键值的键值范围对应的记录的块。具有提供的键值的记录可以或可以不被包括在用于生成所定位的块的该组记录中,但是如果在记录200中存在该记录,则该记录已经被包括,因为记录200先前根据首要键值分类了。然后,模块108解压缩所定位的块,并搜索具有提供的键值的记录。在首要键值对每个记录不唯一的情况下,模块108可以在压缩块中找到具有提供的键值的多个记录。在键字段206包括一组中的第一记录的首要键的该例子中,模块208搜索分别具有比提供的键值更早和更后的键值的两个连贯的索引入口,并返回与具有之前的键值的入口对应的块。在一些情况下,提供的键值可以与索引入口中的键值相同,在该情况下,模块208返回对应于该入口的块。
    在不同实施方式中,存在不同方式使得索引文件204中的入口标识与从其中生成对应块的记录对应的键值范围。如在图2A所示的实施方式中,键值的范围可以是在用于生成块的记录的两个极值键值(例如,在字母分类顺序的首要键值中的第一和最后,或在数值分类顺序的首要键值中的最小和最大)之间的范围。该索引入口可以包括定义该范围的任一或两个极值。在一些实施方式中,如果索引入口包括定义给定块的范围的最小键值,则与压缩记录文件中的最后块关联的最后索引入口还可以包括定义该块的范围的最大键值。然后,该最大键值可以在搜索压缩记录文件以确定给定键值何时超出范围时使用。
    或者,键值的范围可以是延伸超过用于生成块的记录的键值的范围。例如,在块从具有1和1000之间的数值首要键值的记录中生成的情况下,在记录中表示的最小键值可以大于1,且在记录中表示的最大键值可以小于1000。该索引入口可以包括定义该范围的极值1和1000中的任一或两者。
    当在记录的最初的组被处理以生成压缩记录文件之后附加的记录到达时,那些记录可以以未压缩形式被存储在缓冲器中且被搜索。或者,可以递增地处理附加组的记录,并将其存储为可由附加的索引文件访问的附加的压缩记录文件。在一些情况下,即使当压缩小数量的附加记录可能不提供存储尺寸的大程度减少时,压缩附加的记录以维持用于存取记录的统一过程也可能是有利的。可以按规则的时间间隔(例如,每30秒或每5分钟)或在已经接收了预定数量的附加记录之后(例如,每1000个记录或每10000个记录),重复地处理附加的记录。如果基于时间间隔来处理到来的记录,在一些间隔中,可能没有到来的记录或存在全被压缩为单个压缩块的很少量记录。
    参考图2B,在已经生成了初始压缩的记录文件202之后已经由系统100接收了附加记录的例子中,附加的压缩记录文件210可以被附属到初始的压缩记录文件202以形成复合压缩记录文件211。系统100通过首要键值对附加的记录进行分类,并压缩这些组N个记录来生成压缩记录文件210的压缩块。在标为块91的附属文件210中的第一压缩块具有首要键值BA-FF。模块108生成包括可用于搜索在附属文件210内表示的附加记录的入口的附加索引文件212。该新的索引文件212可以被附属到先前的索引文件204。
    可以被附属任意数量的压缩记录文件以形成复合压缩记录文件。如果索引和搜索模块108正在复合压缩记录文件内搜索具有给定键值的记录,则模块108使用对应的索引文件搜索每个附属压缩记录文件内的记录。或者,请求给定记录的代理可以指定要搜索的具有复合压缩记录文件的一些数量的压缩记录文件(例如,最近生成的10个,或最近一小时内生成的任何)。
    在给定量的时间(例如,每24小时)之后或在已经附属了给定数量的压缩记录文件之后,系统100可以整合(consolidate)这些文件以从复合压缩记录文件和新的对应的索引文件生成单个压缩记录文件。在整合之后,可以搜索单个索引以定位可能包含给定记录的压缩块,得到更有效的记录访问。在整合时,系统100解压缩这些压缩记录文件以恢复对应组的已分类记录,通过首要键值对这些记录分类,并生成新的压缩记录文件和索引。由于已经对恢复的各组记录的每个进行了分类,因此可以通过根据首要键值合并先前分类的列表以生成单组分类的记录来有效地对记录分类。
    参考图2C,取决于多少附加记录已经到达以及已经多么频繁地处理这些记录,复合压缩记录文件211包括初始的压缩记录文件202、附加的压缩记 录文件210和一些附加的压缩记录文件220、221……。每个压缩记录文件可以具有可以用于搜索该文件的压缩块内的给定记录的关联索引文件。在该例子中,压缩记录文件220之一足够小以至于仅具有单个压缩块(BLOCK95),且因此不一定需要关联索引文件,但可能具有指示在该块中的首要键值的范围和其在存储器中的位置的关联数据。在整合之后,从不同附属压缩记录文件恢复的记录被处理以生成单个压缩记录文件230。
    在单调地分配首要键的情况下,不仅在压缩记录文件内而且从一个文件到下一个文件自动地对记录分类,而不需要整合文件以便在单个索引搜索中访问记录。参考图2D,系统100接收一组记录250,由作为记录的首要键的按到达顺序分配的连贯整数来标识该组记录250。因此,记录250由首要键自动分类。在该例子中,初始压缩记录文件252包括每个包括100个记录的压缩块,且索引文件254包括用于压缩块中的第一记录的首要键值的键字段256、和标识对应的存储位置的位置字段258。由于在已经生成了初始压缩记录文件252之后到达的记录将自动地具有分类的顺序中稍后的首要键值,因此附属压缩记录文件260和对应的索引文件262不需要被整合,以基于单个索引搜索来使能有效的记录访问。例如,索引文件262可以仅被附属到索引文件254,且两个索引可以被一起搜索(例如,在单个二进制搜索中)以在压缩记录文件252或260的任一中定位压缩块。
    复合压缩记录文件261可以可选地被整合以消除可能已经被插入在压缩记录文件252的末尾的不完整的块。在这种整合中,将仅需要解压缩第一文件252中的最后压缩块,且取代合并解压缩的各组记录,可以将各组记录简单地级联以形成新的分类的一组记录以被划分为各组100个记录,然后各组100个记录被再次压缩以形成新的压缩记录文件。
    使用连贯整数合成首要键值的另一优点在于,如果正要基于首要键值来对这些记录分区,则由于在键值之间不存在间断,因此可以自动地平衡这些分区。
    可以使用各种技术的任一种来更新记录并无效可能存在于压缩记录文件中的任何先前版本的记录。在一些情况下,记录不需要被单独移除或更新(例如,日志、交易、电话呼叫)。在这些情况下,在预定数量的压缩块的组中,例如从压缩记录文件的开始,移除和丢弃或存档旧的记录。在一些情况下,可以移除全部压缩记录文件。
    在一些情况下,通过添加用于在压缩块中存储的新的更新记录来更新记录的一个或多个值,且先前接收的记录版本(具有相同的首要键值)可以留下来被存储在不同的压缩块中。然后,可能存在记录的多个版本,且使用某种技术来确定哪个是记录的有效版本。例如,出现在任何压缩记录文件的(最近接收的)最后版本可以含蓄地或明示地指示为有效版本,且任何其他版本是无效的。在该情况下搜索具有给定首要键的记录可以包括找到按出现顺序由该首要键标识的最后记录。或者,记录可以通过写“无效记录”被无效,该“无效记录”指示任何先前版本的记录都不是有效,而不一定添加新的版本的记录。
    系统100通过不同的处理来协调对在记录存储器106中存储的压缩记录文件的访问。各种同步技术中的任一个可用于协调对一个或多个压缩记录文件内的压缩块的访问。系统100保证修改文件的任何处理(例如,通过附属或整合数据)不互相干扰。例如,如果新的记录在正发生整合时到达,系统100可以等待直到完成了整合处理,或可以生成压缩块,并且在将它们附属到现有压缩记录文件之前临时存储它们。从压缩记录文件读取的处理可以负载完整的文件的一部分,且可以忽略可能正经历修改的任何不完整的部分。
    系统100存储使能基于除了首要键以外的记录属性来搜索记录的附加数据。压缩记录文件的次要索引包括基于被指定为次要键(secondary key)的属性值提供一个或多个首要键值的信息。被指定为次要键的每个属性可以与对应的次要索引关联。例如,每个次要索引可以被组织为具有根据关联次要键分类的行的表。每行包括次要键值和包括次要键值的记录的一个或多个首要键值。因此,如果代理开始搜索包括给定次要键值的任何记录,则系统100查找(多个)首要键以用来搜索包括(多个)记录的(多个)压缩块的压缩记录文件的索引。次要索引可以大(例如,以记录的数量的量级),且在某些情况下可以被存储在存储了压缩记录文件的存储介质中。
    在一些情况下,被指定为次要键的属性值可以对每个记录是唯一的。在这种情况下,存在在次要键和首要键之间的一一对应,且接口模块112可以向代理呈现次要键属性,好像其是首要键一样。
    可以在新的压缩记录文件被附属到复合压缩记录文件时更新每个次要索引。或者,次要键可以与每个压缩记录文件的不同次要索引关联,且当压缩记录文件被整合时可以将次要索引整合到单个次要索引中。
    筛选(screening)数据结构可以与压缩记录文件关联,以确定包括给定属性值的记录被包括在该文件的压缩块中的可能性。例如,使用重叠编码的签名(OES)作为筛选数据结构使得系统100能够确定具有给定键值(首要键或次要键)的记录一定不存在(“否定”结果)或具有给定键值的记录是否具有存在的可能性(“肯定”结果)。对于肯定结果,系统访问适当的压缩块以检索记录(“确定的肯定”结果),或确定该记录不存在(“假肯定”结果)。对于否定结果,系统可以向代理给出否定结果,而无需花费时间解压缩和搜索压缩块来寻找不存在的记录。OES的尺寸影响了肯定结果隔多久成为假肯定,且更大的OES尺寸通常导致更少的假肯定结果。对于给定的OES尺寸,更少的不同可能的键值通常导致更少的假肯定。
    其他类型的筛选数据结构是可能的。可以为每个压缩记录文件提供用于给定的首要或次要键的筛选数据结构。或者,可以为每个压缩块提供用于键的筛选数据结构。
    图3A和图3B示出了如下的表,该表提供用于获得各种尺寸的示例OES筛选数据结构的键值(列)和在压缩记录文件中表示的各种数量的不同键值(行)的假肯定结果的可能性值。对于OES,取决于OES的尺寸和不同键值的数量,可以在OES的相同部分中指示存在多于一个键值,潜在地导致如果存在另一个则那些键值之一的假肯定结果。该示例OES的尺寸从210=1024位(在图3A的表中)到228=256兆位(图3B的表中)改变。该不同键值的数量从100(在图3A的表中)到100000000(图3B的表中)改变。对于这两个表,在右上的空白单元对应于0%,且左下的空白单元对应于100%。对于其中假肯定可能性低(例如接近零)的单元,筛选数据结构可能大于提供足够筛选所必需的。对于其中假肯定可能性显著(例如>50%)的单元,筛选数据结构可能太小以至于不能提供足够的筛选。该例子对应于用于使用每个键值四个哈希码来生成OES的技术。对于给定数量的不同键,OES筛选数据结构的其他例子可以得出假肯定可能性的不同表。
    由于可能不知道在压缩记录文件中表示的不同键值的数量,因此系统100可以基于从其生成了该文件的记录的数量来选择压缩记录文件的筛选数据结构的尺寸。在选择尺寸时,在减少假肯定可能性和存储筛选数据结构所需的存储器空间之间存在折衷。在该折衷种的一个因素为搜索不存在的键值的可能性。如果要被查找的大多数键值很可能存在于解压缩记录中,则完全可以 不需要筛选数据结构。如果存在将无法找到键值的显著可能性,则为相对大的筛选数据结构分配存储空间可以节省相当的时间。
    与压缩记录文件关联的筛选数据结构的尺寸可以取决于该文件是对应于记录的初始或整合的大数据库还是对应于对更大的数据库的更小更新。可以使用相对更小的筛选数据结构尺寸用于在规则的更新间隔期间附属的压缩记录文件,因为在每个更新中通常存在更少的不同键值。而且,随着在许多更新之后压缩记录文件的数量增长,小尺寸可以减少所需的存储空间。筛选数据结构的尺寸可以基于在更新中的预期的记录数量和/不同的键值,且基于预期更新数量。例如,如果通过24小时时间段每5分钟附属更新文件,将在该天结束时存在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来返回用给定的首要或次要键找到的多个记录,或者在某些情况下,仅返回记录的最后版本。
    文件管理模块104还使用可附属查找文件来管理记录的存储和访问。在使用可附属查找文件的一个例子中,系统100管理大的首要数据集合(例如,包括几百个百万兆字节的首要数据)。该首要数据集合将通常被存储在(可能被级联为复合压缩记录文件的)一个或一系列多压缩记录文件中。但是,如果在其到达之后很短时间地(例如在一分钟或更少时间内)需要数据可见,则用可附属查找文件补充压缩记录文件可能有用。该可附属查找文件能够减少在新数据到达的时间与该数据变得可用于各种查询处理的时间之间的延迟。新的数据可以从例如有效地写数据到文件的另一处理得到。系统100能够管理对可能不完整的部分可附属查找文件的访问。在一些系统中,如果查询处理遇到部分文件,则将导致程序错误。为了避免这种程序错误,这些系统中的一些将在每次查询文件时重新载入与该文件关联的索引。在每次查询时重新载入索引可能在某些情形下是低效的,且可能消耗相当量的系统资源。
    通常,可附属查找表是未压缩数据文件,其容忍在文件的末尾处添加的部分记录。可附属查找文件能够识别不完整的记录,且即使当查询的文件包 含不完整记录时也能够处理查询请求。可附属查找文件不具有压缩记录文件的如上所述的那类索引文件;而是,可附属查找文件具有映射每个记录在相对快工作存储器(例如,易失性存储介质,诸如动态随机存取存储器)中存储的数据结构中的位置的“动态索引”。例如,这些动态索引可以具有哈希表、二进制树、b-树或另一类型的关联数据结构。图5是通过其查询可附属查找文件的处理的例子。关于可附属查找文件的操作的处理流程500包括载入处理502和查询处理504。在文件被载入506之后(诸如当该文件被查询时),确定508该文件的长度。在已经确定508了该文件的长度之后,在存储器位置(诸如在工作的存储器中)存储510所确定的长度。
    然后,系统确定512“结束点”,其是表示文件内的最后完整的记录的结束的位置。在一些情况下,诸如当没有新的数据正被写入该文件时,该结束点将仅表示该文件的结束。结束点还可以表示在新数据的第一片段(segment)之前紧挨着的位置(见图6)。在已经确定512了结束点之后,在存储器位置(诸如在主要存储器中)存储514它。
    在查询处理504期间,系统100决定是处理该查询522还是更新518与所查询的文件关联的关联数据结构。为了进行该确定,该系统比较516该文件的当前长度与先前确定并在存储器中存储的文件长度。可以以大量方式来进行该确定。例如,该系统可以审查文件元数据、文件头,或可以搜索该文件以寻找新的行字符(line character)。如果该文件的长度不超过先前存储的文件长度,则没有新的数据被添加到数据文件的结尾,且处理522该查询。如果该文件的当前长度超过先前存储的文件长度,在先前存储的结束点开始,更新518关联数据结构。以此方式,可以更新关联的数据结构而不必须整个重新载入或重新建立它。相反,已经被载入存储器中的数据维持被载入,且在先前存储的结束点开始附属新的数据。在处理该查询之前,还更新520文件长度和结束点。在此处理中可以执行诸如错误检查的其他步骤。例如,如果系统确定该文件的当前长度小于先前存储的文件长度,可以标记错误。
    图6A和图6B是文件内的结束点的位置的例子,如由图5中的步骤512确定的。在图6a中,可附属查找文件600包括完整的记录602和不完整的记录604。在该情况下,结束点606是表示可附属查找文件600内的最后完整的记录的结尾的位置,且就在不完整记录604的开始之前。
    在图6B的例子中,可附属查找文件650由完全完整的记录652构成。在 该情况下,结束点654再次表示可附属查找文件650内的最后的完整记录的结尾;但是,结束点654还表示该文件的结尾。
    数据可以连续的附属到可附属查找文件,其依次被连续地更新。因此,可附属查找文件变得在尺寸上越来越大,且其载入可附属查找文件所花费的时间相应地增加。可附属查找文件可以与其他形式的动态可载入的索引文件相组合以避免可附属查找文件变得太大以不能在可期望的时间量内载入。
    在一些应用中,要被载入到可查询数据结构的连续流的数据可以以高速率到达,且可以期望在其到达之后很快访问该数据。当数据到达时,由双处理来处理它。首先,复制数据,且同时被添加到可附属查找文件(以便其立即可见且可由文件系统访问)和第二文件或“缓冲器”两者。该数据继续在可附属查找文件和缓冲器两者中累积直到满足预定义条件。该预定义条件可以是大量的准则。例如,预定义准则可以是时间长度、文件尺寸、数据量或数据内的记录数量。
    在满足预定义条件之后,已经在缓冲器中积累的数据块被添加到压缩记录文件用于长期存储。在数据被添加到压缩记录文件之后,创建新的可附属查找文件,且开始从数据流收集数据。旧的可附属查找文件完成,且在压缩记录文件包含所有对应的数据之后被删除。
    当由缓冲器和可附属查找文件两者接收数据的同时,可以对缓冲器中的数据分类。因为分类该数据消耗了大量时间和系统资源,所以尽可能早地开始分类处理以允许更快地将数据转移为压缩记录文件是有利的。
    或者,可以使用可附属查找文件作为缓冲器。在该实施例中,该数据在可附属查找文件中累积直到满足预定义条件。然后,可附属查找文件的内容被添加到压缩记录文件,同时旧的可附属查找表完成,并创建新的可附属查找文件,且开始从数据流收集数据。再次,旧的可附属查找文件在压缩记录文件包含所有对应的数据之后被删除。
    在该处理的每个循环期间,将可期望同时向压缩记录文件添加数据并删除可附属查找文件中的所有数据。但是,因为两个更新可能导致竞争(race)情况,因此将存在显著的窗口,其中已经删除了旧的可附属查找文件但还没有利用其数据来更新压缩记录文件。这将导致临时的数据丢失。为了防止这一点,可以在该处理的附加循环中保持旧的可附属查找文件。索引和搜索模块108被配置为检测其中可能在可附属查找文件和压缩记录文件两者中存在 复制数据的情况,且如果在该情况期间进行查询,则索引和搜索模块108过滤出复制数据。
    或者,文件管理模块104可以在例如状态信息文件107中维持状态信息,以在数据缓冲器已经被写入压缩查找文件或可附属查找文件的内容已经被添加到了压缩查找文件之后调整可附属查找文件的引退。状态信息文件107标识当前有效的记录关联数据结构。例如,状态信息文件107标识所有压缩数据文件和它们包含的块数量以及当前有效的所有可附属查找文件。索引和搜索模块108将忽视不在状态信息文件中出现的任何可附属查找文件、压缩数据文件和压缩数据文件内的块。当创建新的可附属查找文件时,接下来是由文件管理模块104观察的协议的例子。文件管理模块104向压缩数据文件添加新的数据,并创建新的可附属查找文件;文件管理模块104锁闭状态信息文件以防止其被索引和搜索模块108访问;文件管理模块更新状态信息文件以将新数据的添加、旧的可附属查找文件的移除和新的可附属查找文件的创建反映给压缩数据文件;文件管理模块解锁状态信息文件,允许其再次被索引和搜索模块108访问;文件管理模块104移除旧的可附属查找文件。
    索引和搜索模块108遵循以下示例协议:其锁闭状态信息文件以防止文件管理模块104更新它;其根据在状态信息文件中标识的可附属查找文件和压缩数据文件来执行该查询;其解锁状态信息文件以再一次允许文件管理模块104来更新状态信息文件。
    状态信息文件107可以被存储在盘或存储器中。该协议保证搜索模块将或者看到在从旧的可附属查找文件并入数据之前的旧的可附属查找文件和压缩数据文件,或者看到新的可附属查找文件和更新的压缩数据文件。
    当在同时存在新的可附属查找文件和旧的可附属查找文件时进行查询时,在一个实现中,系统查看目录以看到哪个可附属查找文件是当前有效的(例如,由于新的可附属查找表可能不变为有效直到其被创建之后的某个量的延迟,因此新的可附属查找文件或旧的可附属查找文件可能是有效的)。或者,当系统处理查询时,其首先查看最新的可附属查找文件,然后查看旧的可附属查找文件。如果还没有定位被查询的数据,则系统查看压缩记录文件。
    在图7中,由系统100执行的过程700确定文件的长度702,并将文件的长度存储在第一存储器位置中704。过程700确定文件内的最后完整的记录的结束点706,并在第二存储器位置中存储该结束点708。该过程比较在第 一存储器位置中存储的文件长度与文件的当前长度710,并如果文件的当前长度超过在第一存储器位置中存储的文件的长度,在该结束点开始,更新与该文件关联的数据结构712。
    在图8中,由系统100进行的过程800同时向第一文件和缓冲器添加来自数据流的数据802,且在满足预定义条件之后将与缓冲器关联的数据转移为压缩文件804。过程800在来自缓冲器的数据已经被转移为压缩文件之后,创建第二文件以从数据流接收数据806。
    可以使用在计算机上执行的软件来实现上述记录存储和检索方法,包括系统100的模块和由系统100进行的过程。例如,软件形成在一个或多个已编程或可编程计算机系统(其可以是各种架构,诸如分布式、客户端/服务器式、或网格式)上执行的一个或多个计算机程序中的过程,该计算机系统各自包括至少一个处理器、至少一个数据存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备或端口和至少一个输出设备或端口。软件可以形成例如提供与计算图的设计和配置相关的其他服务的更大程序的一个或多个模块。图中的节点和元件可以被实现为在计算机可读介质中存储的数据结构、或符合在数据储存库中储存的数据模型的其他组织的数据。
    软件可以被提供在诸如可由通用或专用可编程计算机读取的CD-ROM之类的存储介质上,或通过网络的通信介质将其传递(在传播的信号中被编码)到它被执行的计算机。所有功能可以在专用计算机上或使用专用硬件(诸如协处理器)来执行。软件可以按分布式方式实现,其中由软件指定的计算的不同部分被不同计算机执行。每个这种计算机程序优选地被存储在或被下载到可由通用或专用可编程计算机读取的存储介质或设备(例如,固态存储器或介质、或磁或光介质),用于当存储介质或设备被计算机系统读取时配置和操作该计算机以进行在此描述的过程。本发明的系统还可以被考虑实现为用计算机程序配置的计算机可读存储介质,其中如此配置的存储介质使得计算机系统按规定且预定义的方式操作以进行在此描述的功能。
    已经描述了本发明的大量实施例。但是,将理解,可以在不脱离本发明的精神和范围的情况下进行各种修改。例如,上述步骤的一些可以是无关顺序的,且因此可以按不同于上述顺序的顺序来执行。
    要理解,上述描述意欲例示而非限制本发明的范围,本发明的范围由所附权利要求的范围限定。例如,上述大量功能步骤可以按不同的顺序执行, 而不实质影响整个处理。其他实施例也在以下权利要求的范围内。

    关 键  词:
    单独 访问 数据 单元 管理 存储
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:单独可访问数据单元的管理存储.pdf
    链接地址:https://www.zhuanlichaxun.net/p-627967.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1