首页 / 专利库 / 专利权 / 申请 / 国际申请 / 修改 / 日志结构管理系统及方法

日志结构管理系统及方法

阅读:575发布:2021-12-02

专利汇可以提供日志结构管理系统及方法专利检索,专利查询,专利分析的服务。并且本 发明 提供了一种管理存储数据条目的数据存储设备的装置,所述装置包括:存储日志结构的所述数据存储设备,所述日志结构包括分别存储数据条目的 片段 ,每个数据条目包括存储数据的数据字段和指示存储在所述数据字段中的所述数据的年龄的时间参数;以及处理器,用于 修改 存储在所述日志结构的某个片段的某个数据条目的数据字段中的数据,并且根据所述已修改数据,更新所述某个数据条目的时间参数。将新数据和/或已修改数据添加到日志结构的单个日志头的其它方法导致争用并行写操作,相比之下,修改存储在所述日志结构的片段的数据字段中的数据(本文也称为原地更新)提高了计算性能(例如,缩短了处理时间)。,下面是日志结构管理系统及方法专利的具体信息内容。

1.一种用于管理存储数据条目的数据存储设备(404)的装置(402),其特征在于,所述装置(402)包括:
所述数据存储设备(404),存储:
日志结构(404A),包括分别存储数据条目的片段,每个数据条目包括存储数据的数据字段和指示存储在所述数据字段中的所述数据的年龄的时间参数;以及
处理器(408),用于:
修改存储在所述日志结构(404A)的某个片段的某个数据条目的数据字段中的数据,并且根据所述已修改数据,更新所述某个数据条目的时间参数。
2.根据权利要求1所述的装置(402),其特征在于,所述处理器(408)用于将正在读取的所述某个数据条目指定为固定用于读访问(pinned for reading access,R-Pin),其中,授权并行执行进程对具有R-Pin指定的所述某个数据条目进行读访问,拒绝所述并行执行进程对所述具有R-Pin指定的所述某个数据条目进行写访问。
3.根据权利要求2所述的装置(402),其特征在于,当所述并行执行进程试图修改所述具有R-Pin指定的某个数据条目时,指示所述并行执行进程将所述已修改数据作为新数据条目写入位于所述日志结构(404A)头部的日志头片段中。
4.根据权利要求3所述的装置(402),其特征在于,所述处理器(408)用于:根据位于所述日志头片段处的所述新数据条目的最新时间参数,更新将所述日志结构(404A)编入索引的索引结构(404B)。
5.根据上述权利要求中任一项所述的装置(402),其特征在于,所述处理器(408)用于将所述正在修改的某个数据条目指定为固定用于独占写(pinned for exclusive write,X-Pin)访问,其中,拒绝并行执行进程对所述具有X-Pin指定的某个数据条目进行写访问。
6.根据权利要求5所述的装置(402),其特征在于,所述处理器(408)用于:当在提交协议终止时移除所述X-Pin指定时,根据所述提交的某个数据条目的最新时间参数,更新将所述日志结构(404A)编入索引的索引结构(404B)。
7.根据上述权利要求中任一项所述的装置(402),其特征在于,当存储在所述某个数据条目的所述数据字段中的所述已修改数据短于存储在所述某个条目的所述数据字段中的未修改数据时,所述处理器(408)用于将空闲空间数据条目添加到所述某个片段中,所述空闲空间数据条目对应于所述已修改数据与所述未修改数据之间的大小之差。
8.根据权利要求7所述的装置(402),其特征在于,所述处理器(408)用于:根据所述已修改数据的大小,计算所述某个数据条目的条目长度参数;根据按照所述大小之差计算出的可用空闲空间,将值写入所述空闲空间数据条目的所述条目长度参数中。
9.根据权利要求1-6中任一项所述的装置(402),其特征在于,当存储在所述某个数据条目的所述数据字段中的所述已修改数据长于存储在所述某个条目的所述数据字段中的未修改数据时,所述处理器(408)用于在下一个顺序空闲空间数据条目内写入。
10.根据权利要求9所述的装置(402),其特征在于,所述处理器(408)用于:根据所述已修改数据的大小,并根据所述下一个顺序空闲空间数据字段的剩余空闲空间,计算所述某个数据条目的条目长度参数。
11.根据上述权利要求中任一项所述的装置(402),其特征在于,所述时间参数包括以下中的一个或多个:指示存储在所述某个数据条目的所述数据字段中的所述数据的版本的版本参数,以及指示在所述某个数据条目的所述数据字段中存储或修改所述数据的时间的时间戳。
12.根据上述权利要求中任一项所述的装置(402),其特征在于,所述数据存储设备(404)存储索引结构(404B),所述索引结构(404B)将与所述日志结构(404A)的每个数据条目相关联的唯一键映射到对应数据条目在所述日志结构上的存储位置;修改存储在所述某个数据条目的所述数据字段中的所述数据,无需更新所述索引结构(404B)到其它数据条目的映射关系,也无需更新所述日志结构(404A)上的其它数据条目。
13.根据上述权利要求中任一项所述的装置(402),其特征在于,所述处理器(408)用于指定整个日志结构(404A)用于严格日志记录,以允许顺序读访问;授权并行执行进程对所述日志结构(404A)进行读访问,拒绝所述并行执行进程对所述日志结构(404A)进行原地写访问。
14.根据权利要求2至13中任一项所述的装置(402),其特征在于,当所述并行执行进程在需要严格日志记录的时候试图修改所述某个数据条目时,指示所述并行执行进程将所述已修改数据作为新数据条目写入位于所述日志结构(404A)头部的日志头片段中。
15.一种管理存储数据条目的数据存储设备的方法,其特征在于,所述方法包括:
修改存储在日志结构(302)的某个片段的某个数据条目的数据字段中的数据;以及根据所述已修改数据(310),更新所述某个数据条目的时间参数,其中
所述日志结构包括分别存储数据条目的片段,每个数据条目包括存储数据的数据字段和指示存储在所述数据字段中的所述数据的年龄的时间参数。

说明书全文

日志结构管理系统及方法

背景技术

[0001] 本发明在其一些实施例中涉及数据条目的管理,更具体地但不限于,管理存储数据条目的日志结构的系统和方法。
[0002] 日志结构为一系列任意数据条目,按照可能具有固定大小的片段进行组织。日志结构的输入顺序保持属性使数据库系统具有几个优点:
[0003] *重做日志能,便于一致性查询和在线迁移。
[0004] *高效多版本,直接支持并行事务。
[0005] *数据存储不可变,方便无读操作。

发明内容

[0006] 本发明的目的在于提供一种管理存储包括数据条目的片段的日志结构的装置、方法、计算机程序产品和系统。
[0007] 上述和其它目的通过独立权利要求的特征来实现。更多实施形式在从属权利要求说明书附图中显而易见。
[0008] 根据第一方面,一种管理存储数据条目的数据存储设备的装置包括:存储日志结构的所述数据存储设备,所述日志结构包括分别存储数据条目的片段,每个数据条目包括存储数据的数据字段和指示存储在所述数据字段中的所述数据的年龄的时间参数;以及处理器,用于修改存储在所述日志结构的某个片段的某个数据条目的数据字段中的数据,并且根据所述已修改数据,更新所述某个数据条目的时间参数。
[0009] 根据第二方面,一种管理存储数据条目的数据存储设备的方法包括:修改存储在日志结构的某个片段的某个数据条目的数据字段中的数据,以及根据所述已修改数据,更新所述某个数据条目的时间参数,其中,所述日志结构包括分别存储数据条目的片段,每个数据条目包括存储数据的数据字段和指示存储在所述数据字段中的所述数据的年龄的时间参数。
[0010] 本文所描述的系统、装置、方法和/或代码指令提高了在写密集型工作量过程中处理日志结构的计算效率。将新数据和/或已修改数据添加到日志结构的单个日志头的其它方法导致争用并行写操作,相比之下,修改存储在所述日志结构的片段的数据字段中的数据(本文也称为原地更新)提高了计算性能(例如,缩短了处理时间)。更新存储在数据字段中的数据,提高了处理和/或内存利用率(例如,减少了存储空间和/或带宽),而不是将整个条目全部复制到日志头(即使在更新了一小部分数据的时候),后者产生了处理器开销和/或内存开销,这在写密集型工作量期间会非常大。
[0011] 相比于将新数据和/或已修改数据添加到日志结构的日志头中的方法,修改存储在日志结构的片段的数据字段中的数据避免或减少了在日志结构中创建和累积过时条目。过时条目占用的内存空间通过计算成本大(例如,在处理器利用率和/或处理时间方面)的日志结构清理进程来回收。
[0012] 修改存储在日志结构的片段的数据字段中的数据在任何时候都可以保持片段完整性,使得仍然有可能通过顺序扫描来访问片段进行一致性查询和在线迁移。
[0013] 在所述第一和第二方面的另一实现方式中,所述处理器用于将所述正在读取的某个数据条目指定为固定用于读访问(pinned for reading access,R-Pin),其中,授权并行执行进程对所述具有R-Pin指定的某个数据条目进行读访问,拒绝所述并行执行进程对所述具有R-Pin指定的某个数据条目进行写访问。
[0014] R-Pin防止并行读取某个数据条目。R-Pin使条目在并行更新时暂时不可变。R-Pin使并行读进程稳定地进行读访问。
[0015] 在所述第一和第二方面的另一实现方式中,当所述并行执行进程试图修改所述具有R-Pin指定的某个数据条目时,指示所述并行执行进程将所述已修改数据作为新数据条目写入位于所述日志结构头部的日志头片段中。
[0016] 在所述第一和第二方面的另一实现方式中,所述方法还包括和/或所述处理器用于:根据位于所述日志头片段处的所述新数据条目的最新时间参数,更新将所述日志结构编入索引的索引结构。
[0017] 在所述第一和第二方面的另一实现方式中,所述方法还包括和/或所述处理器用于将所述正在修改的某个数据条目指定为固定用于独占写(pinned for exclusive write,X-Pin)访问,其中,拒绝并行执行进程对所述具有X-Pin指定的某个数据条目进行写访问。
[0018] X-Pin使某个数据条目进行独占写访问,以便使用两阶段提交(two-phase-commit,2PC)协议并行提交分布式事务。X-Pin使条目在并行更新时暂时不可变。
[0019] 在所述第一和第二方面的另一实现方式中,所述方法还包括和/或所述处理器用于:当在提交协议终止时移除所述X-Pin指定时,根据所述提交的某个数据条目的最新时间参数,更新将所述日志结构编入索引的索引结构。
[0020] 在所述第一和第二方面的另一实现方式中,所述方法还包括和/或所述处理器用于:当执行所述更新操作或获得管脚(pin)时,锁定某个索引结构条目和/或数据条目。
[0021] 在所述第一和第二方面的另一实现方式中,当存储在所述某个数据条目的所述数据字段中的所述已修改数据短于所述存储在所述某个条目的所述数据字段中的未修改数据时,所述处理器用于将空闲空间数据条目添加到所述某个片段中,所述空闲空间数据条目对应于所述已修改数据与所述未修改数据之间的大小之差。
[0022] 添加空闲空间数据条目恢复了片段完整性。未修改其它实时数据和/或其它索引条目。锁定某个数据条目的索引条目和/或某个数据条目能够充分防止并行写入。
[0023] 在所述第一和第二方面的另一实现方式中,所述方法还包括和/或所述处理器用于:根据所述已修改数据的大小,计算所述某个数据条目的条目长度参数;以及根据按照所述大小之差计算出的可用空闲空间,将值写入所述空闲空间数据条目的所述条目长度参数中。
[0024] 在所述第一和第二方面的另一实现方式中,当存储在所述某个数据条目的所述数据字段中的所述已修改数据长于存储在所述某个数据条目的所述数据字段中的未修改数据时,所述方法还包括和/或所述处理器用于在下一个顺序空闲空间数据条目内写入。
[0025] 在下一个顺序数据字段的空闲空间数据条目内写入恢复了片段完整性。未修改其它实时数据和/或其它索引条目。锁定某个数据条目的索引条目和/或某个数据条目能够充分防止并行写入。
[0026] 在所述第一和第二方面的另一实现方式中,所述方法还包括和/或所述处理器用于:根据所述已修改数据的大小,并根据所述下一个顺序空闲空间数据字段的剩余空闲空间,计算所述某个数据条目的条目长度参数。
[0027] 在所述第一和第二方面的另一实现方式中,所述时间参数包括以下中的一个或多个:指示存储在所述某个数据条目的所述数据字段中的所述数据的版本的版本参数,以及指示在所述某个数据条目的所述数据字段中存储所述数据的时间的时间戳。
[0028] 在所述第一和第二方面的另一实现方式中,所述数据存储设备存储索引结构,所述数据存储设备存储索引结构,所述索引结构将与所述日志结构的每个数据条目相关联的唯一键映射到对应数据条目在所述日志结构上的存储位置;修改存储在所述某个数据条目的所述数据字段中的所述数据,无需更新所述索引结构到其它数据条目的映射关系,也无需更新所述日志结构上的其它数据条目。
[0029] 在所述第一和第二方面的另一实现方式中,所述方法还包括和/或所述处理器用于指定整个日志结构用于严格日志记录,以允许顺序读访问;授权并行执行进程对所述日志结构进行读访问,拒绝所述并行执行进程对所述日志结构进行原地写访问。
[0030] 在所述第一和第二方面的另一实现方式中,当所述并行执行进程需要严格日志记录的时候试图修改所述某个数据条目时,指示所述并行执行进程将所述已修改数据作为新数据条目写入位于所述日志结构头部的日志头片段中。
[0031] (基于其它方法)将新数据和/或已修改数据添加到日志结构的日志头中可以按需暂时激活,例如,在数据扫描和/或数据迁移期间。在某些场景下(例如,当没有扫描和/或迁移处于激活状态时),未执行(基于其它方法)将新数据和/或已修改数据添加到日志头,并且对存储在日志结构的片段的数据字段中的数据进行修改,以提高计算性能(例如降低处理器利用率、减少处理时间和/或降低数据存储要求)。
[0032] 除非另有定义,否则本文使用的所有技术和/或科学术语具有与本发明所属领域的普通技术人员通常理解的相同含义。虽然与本文描述的方法和材料类似或等效的方法和材料可以用于本发明实施例的实践或测试,但下文描述了示例性方法和/或材料。如有冲突,专利说明书,包括定义,将予以控制。此外,这些材料、方法和示例仅是说明性的,并不一定具有限制性。

附图说明

[0033] 本文仅通过举例结合附图描述本发明的一些实施例。现在具体结合附图,需要强调的是所示的详细说明作为示例,为了说明性地讨论本发明的实施例。这样,根据附图说明,如何实践本发明实施例对本领域技术人员而言是显而易见的。
[0034] 附图中:
[0035] 图1是描述日志结构的一个实现方式的示意图,有助于理解本发明一些实施例;
[0036] 图2是描述日志结构的示例性实现方式的示意图,有助于理解本发明一些实施例;
[0037] 图3是本发明一些实施例提供的通过对存储在日志结构中某个片段的某个数据条目的数据字段中的数据进行修改来管理存储数据条目的日志结构的方法流程图
[0038] 图4是本发明一些实施例提供的通过对存储在日志结构中某个片段的某个数据条目的数据字段中的数据进行修改来管理一个或多个日志结构的系统的组件的框图
[0039] 图5是本发明一些实施例提供的空间不变原地修改过程的图形表示、缩小数据条目以适应比某个数据字段短的数据修改过程的图形表示以及修改下一个顺序数据字段以适应比某个数据字段长的数据修改过程的图形表示;
[0040] 图6是描述本发明一些实施例提供的R-Pin和X-Pin兼容性矩阵的图;以及[0041] 图7是本发明一些实施例提供的是否原地应用数据修改或是否将已修改数据添加到日志结构的日志头中的示例性决策过程的流程图。

具体实施方式

[0042] 本发明在其一些实施例中涉及数据条目的管理,更具体地但不限于,管理存储数据条目的日志结构的系统和方法。
[0043] 如本文所用,术语“修改数据”是指更改现有数据,和/或删除现有数据,和/或(可选地在现有数据上)写入新数据。
[0044] 本发明一些实施例的一个方面涉及一种系统、装置、方法和/或代码指令(存储在可由一个或多个处理器执行的数据存储设备中),用于修改存储在日志结构内片段的数据条目的数据字段中的数据,本文也称为原地更新或修改。根据已修改数据来更新与数据条目相关联的、存储在数据字段中的数据的年龄的时间参数。
[0045] 可选地,将正在读取的数据条目指定为固定用于读访问(本文表示为R-Pin)。授权并行执行进程对具有R-Pin指定的数据条目进行读访问,拒绝并行执行进程对具有R-Pin指定的数据条目进行写访问。可替代地或另外,将正在修改的数据条目指定为固定用于独占写访问(本文表示为X-Pin)。拒绝并行执行进程对具有X-Pin指定的数据条目进行写访问。
[0046] 可选地,当存储在数据条目的数据字段中的已修改数据短于存储在该条目的数据字段中的未修改数据时,将空闲空间数据条目添加到片段中。可替代地,当存储在数据条目的数据字段中的已修改数据长于存储在该条目的数据字段中的未修改数据时,覆写下一个顺序数据字段的空闲空间数据条目。
[0047] 执行数据修改时无需更新日志结构的其它数据条目,也无需更新索引结构到其它数据条目的映射关系(将与日志结构的每个数据条目相关联的唯一键映射到相应数据条目在日志结构中的存储位置)。
[0048] 本文所描述的系统、装置、方法和/或代码指令提高了在写密集型工作量过程中处理日志结构的计算效率。将新数据和/或已修改数据添加到日志结构的单个日志头的其它方法导致争用并行写操作,相比之下,修改存储在所述日志结构的片段的数据字段中的数据(本文也称为原地更新)提高了计算性能(例如,缩短了处理时间)。更新存储在数据字段中的数据,提高了处理和/或内存利用率(例如,减少了存储空间和/或带宽),而不是将整个条目全部复制到日志头(即使在更新了一小部分数据的时候),后者产生了处理器开销和/或内存开销,这在写密集型工作量期间会非常大。
[0049] 相比于将新数据和/或已修改数据添加到日志结构的日志头中的方法,修改存储在日志结构的片段的数据字段中的数据避免或减少了在日志结构中创建和累积过时条目。过时条目占用的内存空间通过计算成本大(例如,在处理器利用率和/或处理时间方面)的日志结构清理进程来回收。
[0050] 修改存储在日志结构的片段的数据字段中的数据在任何时候都可以保持片段完整性,使得仍然有可能通过顺序扫描来访问片段进行一致性查询和在线迁移。
[0051] 在详细解释本发明的至少一个实施例之前,应当理解,本发明不必将其应用限于下面描述中阐述的和/或在附图和/或示例中说明的部件和/或方法的结构和布置的细节。本发明可以有其它实施例或可以采用各种方式实践或执行。
[0052] 本发明可以是一种系统、方法和/或计算机程序产品。所述计算机程序产品可以包括具有计算机可读程序指令的一个(或多个)计算机可读存储介质,所述指令用于使处理器执行本发明的各个方面。
[0053] 计算机可读存储介质可以是能够保留和存储指令以供指令执行设备使用的有形设备。计算机可读存储介质可以是但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或上述几者的任意合适组合。
[0054] 可以从计算机可读存储介质将本文描述的计算机可读程序指令下载到各个计算/处理设备,或者通过网络下载到外部计算机或外部存储设备上,所述网络为因特网、局域网、广域网和/或无线网络等。
[0055] 计算机可读程序指令可以完全在用户电脑上执行,或作为独立的软件包,部分在用户电脑上执行,部分在远程电脑上执行,或者完全在远程电脑或服务器上执行。在后一种场景下,远程电脑可以通过任何类型的网络与用户电脑连接,包括局域网(local area network,LAN)或广域网(wide area network,WAN),或者可以(例如,通过使用特网服务提供商提供的因特网)在外部电脑上建立所述连接。在一些实施例中,包括可编程逻辑电路、现场可编程阵列(feld programmable  gate array,FPGA)或可编程逻辑阵列(programmable logic array,PLA)等的电子电路可以利用计算机可读程序指令的状态信息执行计算机可读程序指令以个性化所述电子电路,以便执行本发明的各方面。
[0056] 本文结合本发明实施例的方法、装置(系统)以及计算机程序产品的流程图和/或框图描述了本发明的各方面。应当理解,流程图和/或框图中的每个步骤以及流程图和/或框图中的步骤的组合可以由计算机可读程序指令来实现。
[0057] 附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。此时,流程图或框图中的每个步骤都可以代表一个模、片段或部分指令,其包括一个或多个用于实现某个逻辑功能的可执行指令。在一些可选的实现方式中,步骤中指出的功能可以不按照图中的顺序实现。例如,事实上,连续示出的两个步骤可以大体上同时执行,或者步骤有时候可以按照相反的顺序执行,这取决于所涉及的功能。还应注意的是,框图和/或流程图中的每个步骤以及框图和/或流程图中步骤的组合可以由基于专用硬件的系统执行,该系统执行指定的功能或动作,或者执行专用硬件和计算机指令的组合。
[0058] 现在参考图1,图1是描述日志结构102的一个实现方式的示意图,有助于理解本发明一些实施例。日志结构102包括一系列数据条目,即,在片段(为了清楚说明,示出一个片段106)大小固定的存储实体中组织的实时数据(为了清楚说明,示出一个条目104)。将新数据添加到日志头108中。每个片段在关闭时不可变。索引结构110访问存储在日志结构102中的数据条目。当数据条目更新时,调整索引结构110以指向日志头108处的新版本。
[0059] 随着时间的推移添加新数据,部分新数据替换旧数据,日志结构102累积了过时条目112,即废弃数据。垃圾收集进程选择稀疏片段,这些片段存储有大部分废弃的数据。将实时数据条目移动到侧片段(side segment)114。相应地更新索引结构110。
[0060] 当侧片段114充满了移动后的实时数据条目时,将侧片段114作为注入片段(injected segment)116添加到日志头108中。从日志结构102中移除实时数据条目已经从中移动且仅包括废弃数据的释放片段(released segment)118。事实上,日志结构102在交换片段之前和之后存储有相同的数据条目。
[0061] 垃圾收集进程和添加操作的并行性在索引结构110和日志头108上同步。
[0062] 数据条目在日志结构102内不断移动和重排序,这些是处理器密集型操作。
[0063] 现在参考图2,图2是描述日志结构202的一个示例性实现方式的示意图,有助于理解本发明一些实施例。存储在片段中的每个数据条目204包括元数据头,存储有参数L、V、T、Key和Data。L表示关联数据条目的长度。V表示关联数据条目的版本。T表示关联数据条目的时间戳。Key表示唯一输入键,用于按索引结构210进行查找。Data表示存储在关联数据条目中的实时数据。
[0064] 每个片段206存储一系列数据条目204。通过使用前一个数据条目的长度来计算下一个数据条目的开头,迭代数据条目204。当使用某个数据条目的键在索引结构210中进行的查找指向某个数据条目的开头时,某个数据条目处于激活状态。即使存在非激活数据条目,也保持了片段完整性,而且有可能迭代片段。
[0065] 现在参考图3,图3是本发明一些实施例提供的通过对存储在日志结构的某个片段的某个数据条目的数据字段中的数据进行修改来管理存储数据条目的日志结构的方法流程图。还参考图4,图4为本发明一些实施例提供的系统400的组件的框图,系统400包括计算设备402,用于通过对存储在日志结构404A的某个片段的某个数据条目的数据字段中的数据进行修改来管理存储在一个或多个存储设备404和/或406中的一个或多个日志结构404A。
[0066] 日志结构404A包括多个片段,每个片段存储一个或多个数据条目。每个数据条目包括存储数据的数据字段,以及可选地包括指示存储在数据字段中的数据的年龄的时间参数。时间参数例如可以为指示存储在数据条目的数据字段中的数据的版本的版本参数,和/或指示将数据存储在数据条目的数据字段中的时间的时间戳,等等。需要注意的是,时间参数可以存储在映射到日志结构的数据条目的其它数据结构中。
[0067] 索引结构404B(可选地存储在存储设备404中和/或存储在数据存储设备406中)将与日志结构404A的每个数据条目相关联的唯一键映射到相应数据条目在日志结构上的存储位置。如本文所述,修改存储在某个数据条目的数据字段中的数据,无需更新索引结构404B到其它数据条目的映射关系,也无需更新日志结构404B上的其它数据条目。
[0068] 计算设备402可以为例如以下中的一个或多个:单个计算设备、并排设置的一组计算设备、计算虚拟机、网络服务器、存储服务器、本地服务器、远程服务器、客户端、移动设备、固定设备、公用信息机、智能手机、笔记本、平板电脑可穿戴计算设备、眼镜计算设备、手表计算设备和台式电脑。
[0069] 存储设备404可以与计算设备402集成,例如安装在计算设备402内,例如,数据存储设备404安装在计算设备402的物理盒内。存储设备404可以由计算设备402独占使用,并且位于计算设备402的外部,例如外部硬盘驱动器和/或远程存储服务器。存储设备404可以由计算设备402共享和/或安装在其它计算系统(未示出)内,例如,在网络内。存储设备404通过本地总线、网络、直接链路、无线和/或有线方式等与计算设备402通信。
[0070] 存储设备404可以存储索引结构404B,该索引结构404B将日志结构404A编入索引。
[0071] 示例性存储设备404包括以下中的一个或多个:缓存、随机存取存储器(random access memory,RAM)、固态硬盘(solid state drive,SSD)、硬盘驱动器(hard disk drive,HDD)、可移动存储单元、远程存储设备、计算云、非易失性存储器磁性介质、半导体存储器设备、硬盘驱动器、可移动存储器和光学介质。应注意,存储设备404可以与数据存储设备406集成和/或互换,和/或存储设备404可以是与数据存储设备406分离的唯一组件。
[0072] 计算设备402包括一个或多个处理器408,例如,为中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、现场可编程门阵列(feld programmable gate array,FPGA)、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specifc integrated circuit,ASIC)、定制电路、与其它单元连接的处理器和/或专用硬件加速器等。处理器408可以为单个处理器、多核处理器和/或用于并行处理的处理器集群(可以包括同构和/或异构处理器架构)。应注意,可以设计处理器408在硬件中实现一个或多个存储为代码指令406A的特征。
[0073] 数据存储设备(例如,存储器)406存储可由处理器408执行的代码指令,可选地为实现结合图3描述的方法的一个或多个动作的代码指令406A。存储器406可以为随机存取存储器(random access memory,RAM)、只读存储器(read-only memor,ROM)和/或存储设备,例如非易失性存储器、磁性介质、半导体存储器设备、硬盘驱动器、可移动存储器和光学介质(例如,DVD、CD-ROM)。
[0074] 计算设备402可以与用户界面410通信,用户界面410向用户呈现数据和/或包括数据输入机制,例如触摸屏、显示器、键盘鼠标、语音激活软件和麦克中的一个或多个。
[0075] 现在返回参考图3,在300A处,开始日志操作过程。
[0076] 在300B处,在索引结构404B中执行查找,以确定要修改的某个数据条目在日志结构404A的片段中的位置。
[0077] 在300C处,锁定识别出的条目。可以对识别出的条目执行三个操作。
[0078] 在第一操作中,在302处,修改存储在日志结构404A的某个片段的某个数据条目的数据字段中的数据,例如,将已修改数据写入数据字段中,在现有数据之上写入新数据,删除现有数据,和/或更改现有数据。
[0079] 直接原地执行空间不变更新。
[0080] 相比于将新数据添加到日志结构的日志头的其它方法,原地修改存储在数据字段中的数据。
[0081] 执行原地更新并不一定包括保持日志结构404A的完整性。除了更新与已修改数据相关的索引条目之外,不更新索引结构404B,例如避免与其它数据条目相关的更新,这在采用添加到日志头等其它方法时执行。
[0082] 应注意,当不满足本文描述的执行原地修改的一个或多个条件时,可以基于标准方法将已修改数据添加到日志结构404A的日志头中。
[0083] 在304A处,当存储在正在访问进行修改的某个数据条目的数据字段中的已修改数据短于存储在某个条目的数据字段中的未修改数据(即原始现有数据)(本文也称为收缩更新)时,将空闲空间数据条目添加到与数据条目相关联的片段中。可以在存储有已修改数据的数据条目之后依次添加空闲空间数据条目。空闲空间数据条目的大小对应于已修改数据与未修改数据(即原始现有数据)之间的大小之差。
[0084] 添加空闲空间数据条目恢复了片段完整性。未修改其它实时数据条目和/或其它索引条目(即,除了存储已修改数据的数据条目和/或空闲空间数据条目之外)。锁定某个数据条目的索引条目和/或某个数据条目能够充分防止并行写入。
[0085] 相比于将新数据添加到日志结构的日志头中的其它方法,原地修改存储在数据字段中的数据。更新数据条目的元数据,例如根据已修改数据来更新时间参数。
[0086] 每个数据条目可以存储有和/或关联于条目长度参数,该参数表示存储在数据条目的数据字段中的数据的大小。长度参数可以存储为每个对应数据条目的元数据字段。可选地,根据已修改数据的大小来计算数据条目的条目长度参数。根据按照大小之差计算出的可用空闲空间,将值写入空闲空间数据条目的条目长度参数中。空闲空间数据条目的条目长度参数表示空闲空间数据条目内的可用存储空间量。
[0087] 可替代地,在304B处,当存储在某个数据条目的数据字段中的已修改数据长于存储在某个条目的数据字段中的未修改数据(即原始现有数据)(本文还称为放大更新)时,将无法装入到现有数据空间内的其它已修改数据写入到下一个顺序数据字段的空闲空间数据条目内。应注意,下一个空闲空间数据条目可指一个独立的空闲数据条目,还可指能够合并为一个空闲数据条目的一系列空闲数据条目。数据条目的大小随着下一个顺序数据条目中可用的空闲空间增大而增大,以容纳已修改数据。根据已修改数据的大小并且根据下一个顺序空闲空间数据字段的剩余空闲空间,计算某个数据条目的条目长度参数。
[0088] 在下一个顺序数据字段的空闲空间数据条目内写入恢复了片段完整性。未修改其它实时数据和/或其它索引条目(即,除了存储有已修改数据的数据条目和/或空闲空间数据条目之外)。锁定某个数据条目的索引条目和/或某个数据条目能够充分防止并行写入。
[0089] 相比于将新数据添加到日志结构的日志头中的其它方法,原地修改存储在数据字段中的数据。更新数据条目的元数据,例如根据已修改数据来更新时间参数。
[0090] 现在参考图5,图5包括本发明一些实施例提供的空间不变原地修改过程的图形表示502A和502B(如结合图3中的步骤302所述),缩小数据条目以容纳在修改后短于修改前的某个数据字段的数据字段的过程的图形表示504A和504B(如结合图3中的步骤304A所述),以及修改下一个未使用的顺序数据字段以容纳在修改后长于修改前的某个数据字段的数据字段的过程的图形表示506A和506B(如结合图3中的步骤304B所述)。应注意,索引数据结构到日志结构的数据条目的映射关系仍然不受修改的影响(即,索引未更新)。
[0091] 在502A和502B处,用相同大小的新数据字段508B替换日志结构的旧数据字段508A。片段完整性不受影响。
[0092] 在504A和504B处,用短数据字段510B以及空闲空间f510C替换日志结构的长数据字段510A,短数据字段510B的长度小于长数据字段510A。短数据字段510B的大小与空闲空间f510C之和等于长数据字段510A的大小。通过添加空闲空间f510C来恢复存储长数据字段510A的片段的完整性。
[0093] 在506A和506B处,用长数据字段512C和大小减小的空闲空间数据字段512B’替换短数据字段512A和空闲空间数据字段512B。短数据字段512A的大小与空闲空间数据字段512B之和等于长数据字段512C的大小与大小减小的空闲空间数据字段512B’之和。通过将空闲空间数据字段512B修改成大小减小的空闲空间数据字段512B’,恢复了存储短数据字段512A的数据片段的完整性。
[0094] 现在返回参考图3,在310处,根据已修改数据来更新某个数据条目的时间参数。更新数据条目的元数据,例如,根据修改数据的时间来更新时间参数,和/或根据已修改数据的版本来更新版本参数。
[0095] 在312处,相应地更新索引结构404B。
[0096] 在350处,解锁该条目。
[0097] 在352处,日志操作结束。
[0098] 可替代地,在对日志执行另一操作时,在306处,将某个数据条目指定为固定用于读访问(pinned for reading access,R-Pin)并解锁(306A)。授权并行执行进程对具有R-Pin指定的某个数据条目进行读访问。拒绝并行执行进程对具有R-Pin指定的某个数据条目进行写访问。
[0099] R-Pin防止并行读取某个数据条目(306B)。由于实际上是在覆写数据,因此并行执行进程和/或线程在修改数据条目时访问该数据条目会导致并行执行进程读取的数据不一致。R-Pin使条目在并行更新时暂时不可变。R-Pin使并行读进程稳定地进行读访问。
[0100] 当并行执行进程试图修改具有R-Pin指定的某个数据条目,指示并行执行进程将已修改数据作为新数据条目写入位于日志结构404A头部的日志头片段中。更新索引结构404B以指向新数据条目在日志结构404A的日志头片段的位置。
[0101] 锁定正在修改的某个数据条目的索引条目和/或某个数据条目(306C)。锁定充分防止了并行写入。
[0102] 当从某个数据条目中移除R-Pin指定(306D),并且原始指定写入到某个数据条目中的已修改数据已写入到日志结构404A的日志头中,则将某个数据条目内的存储空间指定为空闲空间。
[0103] 可替代地,在对日志执行又一操作时,在308处,将正在修改的某个数据条目指定为固定用于独占写(pinned for exclusive write,X-Pin)访问。将新版本添加到日志中(308A)。解锁该条目(308B),拒绝并行执行进程对具有X-Pin指定的某个数据条目进行写访问。X-Pin使某个数据条目进行独占写访问,以便使用两阶段提交(two-phase-commit,2PC)协议并行提交分布式事务(308C)。X-Pin使条目在并行更新时暂时不可变。锁定正在修改的某个数据条目的索引条目和/或某个数据条目(306D)。锁定充分防止了并行写入。从条目中移除(即释放(unpin))X-Pin(308E)。
[0104] 现在参考图6,图6是描述本发明一些实施例提供的R-Pin和X-Pin兼容性矩阵的图表。R表示R-Pin,X表示X-Pin,y表示兼容,n表示不兼容。根据矩阵,可以兼容如下组合:R-Pin和R-Pin,R-Pin和X-Pin,X-Pin和R-Pin。X-Pin和X-Pin的组合不兼容。
[0105] 现在返回参考图3,在312处,相应地更新索引结构404B。
[0106] 如结合步骤306所述,当并行执行进程试图修改具有R-Pin指定的某个数据条目时,指示并行执行进程将已修改数据作为新数据条目写入位于日志结构404A头部的日志头片段。更新索引结构404B以指向新数据条目在日志结构404A的日志头片段的位置。根据日志头片段处新数据条目的最新时间参数来更新索引结构404B。
[0107] 当步骤308(和308A至308E)执行完成后,更新索引结构404B,以映射到数据的最新已提交版本(312)。当从某个数据条目中移除X-Pin指定时,可选地,在提交协议终止时,可选地根据已提交的某个数据条目的最近时间参数,相应地重定向索引结构404B。
[0108] 除了执行三个日志操作(302、306和208)之一之外,在314处,可选地,指定日志结构404A用于严格或宽松日志记录。严格日志记录可以按需切换,例如,通过代码指令切换。在指定严格日志记录期间,授权并行执行进程对日志结构进行读访问,以及拒绝并行执行进程对日志结构进行写访问。在指定严格日志记录的同时并行执行进程试图修改某个数据条目时,指示并行执行进程将已修改数据作为新数据条目写入位于日志结构404A头部的日志头片段中。
[0109] 日志结构404A可以指定用于允许顺序读访问的严格日志记录,例如,支持查询的顺序扫描操作、分布式计算系统中的数据迁移和/或其它应用。检测顺序读访问操作的代码指令可以切换到严格日志记录。
[0110] (基于其它方法)将新数据和/或已修改数据添加到日志结构的日志头中可以按需暂时激活,例如,在数据扫描和/或数据迁移期间。在某些场景下(例如,当没有扫描和/或迁移处于激活状态时),未执行(基于其它方法)将新数据和/或已修改数据添加到日志头,并且对存储在日志结构的片段的数据字段中的数据进行修改,以提高计算性能(例如降低处理器利用率、减少处理时间和/或降低数据存储要求)。
[0111] 现在参考图7,图7是本发明一些实施例提供的是否原地应用数据修改或是否将已修改数据添加到日志结构的日志头中的示例性决策过程的流程图。结合图7描述的决策过程可以包括和/或基于结合图3描述的一个或多个动作。结合图7描述的决策过程由执行存储在存储器406中的代码指令406A的计算设备402中的处理器408来实现,如结合图4所述。
[0112] 在702处,开始向日志结构404A写入的过程。
[0113] 在704处,在索引结构404B中执行查找,以确定要修改的某个数据条目在日志结构404A的片段中的位置。
[0114] 在706处,例如当并行提交分布式事务(例如,基于两阶段提交协议)时决定是否将某个数据条目指定为X-Pin。在708处,某个数据条目获得X-Pin指定。在710处,将已修改数据添加到日志结构404A的日志头中,写操作在712处终止。步骤706、708和710可根据结合图3描述的步骤308来实现。
[0115] 可替代地,当某个数据条目未指定为X-Pin时,在714处,确定某个数据条目是否存在于日志结构404A内。在716处,当不存在某个数据条目时,将已修改数据添加到日志结构404A的日志头中。在718处,将索引结构404B重定向到添加的已修改数据,写操作在712处终止。
[0116] 可替代地,当某个数据条目存在于日志结构404A内时,例如在并行读进程执行时,确定某个数据条目是否已指定为R-Pin。获取用于并行读取的R-Pin可以根据结合图3描述的步骤306来实现。在716处,当某个数据条目指定为R-Pin时,将已修改数据添加到日志结构404A的日志头中。在718处,将索引结构404B重定向到添加的已修改数据,写操作在712处终止。步骤718可根据结合图3描述的步骤312来实现。
[0117] 可替代地,当某个数据条目未指定为R-Pin时,在722处,通过添加到日志头片段,确定是否基于标准方法将已修改数据记录到日志结构404A中。在716处,将已修改数据添加到日志结构404A的日志头中。在718处,将索引结构404B重定向到添加的已修改数据,写操作在712处终止。
[0118] 可替代地,当选择原地修改时,在724处,执行分析以确定某个数据条目的数据字段的长度是否足够容纳数据的修改,和/或下一个顺序数据条目(或多个条目)是否包括足以容纳数据的修改的空闲空间。在716处,当没有足够的空间容纳已修改数据时,将已修改数据添加到日志结构404A的日志头中。在718处,将索引结构404B重定向到添加的已修改数据,写操作在712处终止。
[0119] 可替代地,在726处,当某个数据条目和/或下一个顺序数据条目能够容纳已修改数据时,执行原地更新,如结合图3中的步骤302、304A和/或304B所述。
[0120] 在728处,通过添加和/或调整如结合图3中的步骤304A和/或304B所述的空闲条目来恢复日志结构404A的完整性,写操作在712处终止。
[0121] 在研究下文附图和详细描述之后,本发明的其它系统、方法、特征和优点对于本领域技术人员来说是或变得显而易见的。希望所有这些其它系统、方法、特征和优点包含在本说明书中,在本发明的范围内,并且受所附权利要求的保护。
[0122] 对本发明各个实施例的描述只是为了说明的目的,而这些描述并不旨在穷举或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,本领域技术人员可以清楚理解许多修改和变化。相比于市场上可找到的技术,选择本文使用的术语可最好地解释本实施例的原理、实际应用或技术进步,或使本领域其它技术人员理解此处公开的实施例。
[0123] 预期在从本申请开始走向成熟的专利的生命周期中,将会开发出许多相关日志结构,术语“日志结构”的范围旨在包括所有这类先验新技术。
[0124] 如本文所用,术语“约”是指±10%。
[0125] 术语“包括”以及它们的结合词表示“包括但不限于”。这个术语包括了术语“由……组成”以及“本质上由……组成”。
[0126] 短语“本质上由…组成”意指组成物或方法可以包括额外成分和/或步骤,但前提是所述额外成分和/或步骤不会实质上改变所要求的组成物或方法的基本和新颖特性。
[0127] 除非上下文中另有明确说明,此处使用的单数形式“一个”和“所述”包括复数含义。例如,术语“一种化合物”或“至少一种化合物”可以包括多种化合物,包括其混合物。
[0128] 本文使用的“示例性”一词用于表示“作为示例、实例或例证”。任何描述为“示例性”的实施例都不一定被解释为比其它实施例更优选或更有利,和/或从其它实施例中排除特征的结合。
[0129] 这里,“可选地”一词是指在某些实施例中提供,而在其它实施例中不提供。本发明的任何特定实施例可以包括多个可选特征,除非这些特征冲突。
[0130] 在整个本申请中,本发明的各种实施例可以以范围格式来呈现。应理解,范围格式的描述仅为了方便和简洁,不应理解为对本发明范围的一种不灵活的限制。因此,对范围的描述应被视为已具体披露了该范围内的所有可能子范围以及单个数值。例如,对于例如从1到6的范围的描述应被视为已具体公开了从1到3从1到4从1到5从2到4从2到6从3到6等的子范围以及该范围内的单个数字例如1、2、3、4、5和6。不论该范围的宽度为多少,这都适用。
[0131] 当本文指出一个数字范围时,表示包含了在指出的这个范围内的任意所列举的数字(分数或整数)。本文使用的短语“位于第一指示数与第二指示数之间的范围”和短语“从第一指示数到第二指示数之间的范围”可以互换,意在包括第一和第二指示数以及两者之间的所有分数和整数。
[0132] 应了解,为简洁起见,在单独实施例的上下文中描述的本发明的某些特征还可以组合提供于单个实施例中。相反地,为简洁起见,在单个实施例的上下文中描述的本发明的各个特征也可以单独地或以任何合适的子组合或作为本发明的任何合适的其它实施例提供。在各个实施例的上下文中描述的某些特征未视为那些实施例的基本特征,除非没有这些元素所述实施例无效。
[0133] 此处,本说明书中提及的所有出版物、专利和专利说明书都通过引用本说明书结合在本说明书中,同样,每个单独的出版物、专利或专利说明书也具体且单独地结合在此。此外,对本申请的任何参考的引用或识别不可当做是允许这样的参考在现有技术中优先于本发明。就使用节标题而言,不应该将节标题理解成必要的限定。
相关专利内容
标题 发布/更新时间 阅读量
一种环保修改液 2020-05-12 611
声学信号修改 2020-05-12 288
修改命令 2020-05-11 234
多功能修改器 2020-05-12 318
修改比特流 2020-05-12 91
修改带 2020-05-11 58
OCT图像修改 2020-05-12 120
声学信号修改 2020-05-12 729
修改带 2020-05-11 935
修改液 2020-05-11 760
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈