分布式数据库系统中的异步垃圾收集的制作方法

文档序号:9872425阅读:682来源:国知局
分布式数据库系统中的异步垃圾收集的制作方法
【专利说明】
【背景技术】
[0001]分布式数据库系统可以包括多个数据库,其中每个数据库的多个部分可以位于各个集群上。每个集群可以包括数个服务器,其中每个服务器可以拥有该数据库的一部分。当该系统的用户访问、修改、删除或重新整理每个数据库中包含的数据时,该系统可以接收对该数据库的更新。分布式数据库系统可以响应于数据库的改变,创建该数据库的不同版本。数据库的不同版本可以称为该数据库的多个代。
【附图说明】
[0002]在下面的详细描述中并且参照附图描述特定示例,其中:
[0003]图1是包括处理流水线的系统的框图;
[0004]图2是使在分布式数据库系统中能够进行异步垃圾收集的计算设备的框图;
[0005]图3是用于分布式数据库系统中的异步垃圾收集的方法流程图;
[0006]图4是用于分布式数据库系统中的异步垃圾收集的方法流程图;以及
[0007]图5是示出使在分布式数据库系统中能够进行垃圾收集的有形非暂时性计算机可读介质的框图。
[0008]在整个公开和各图中,相同的附图标记用于指相似的组件和特征。100系列的附图标记指最初在图1中出现的特征;200系列的附图标记指最初在图2中出现的特征;以此类推。
【具体实施方式】
[0009]如上面讨论的,分布式数据库可以在可以由数十个服务器组成的集群上运行。每个服务器可以存储该数据库的全部或一部分。数据库可能是在未考虑共享理念的条件下设计的,使得服务器不维护与分布式数据库系统有关的任何状态信息。在这样的情景下,分布式数据库系统由主控器(Master)协调。数据库的每个版本可以称为一代。一旦准备查询新一代的数据库,老一代就是要进行垃圾收集的候选。在一些情况下,垃圾收集是从分布式数据库系统中删除或移除旧信息。但是,老一代数据库可能由于数据耐久性和安全性原因而不能进行垃圾收集。此外,当有在老一代数据库上运行的进行中的事务时,数据库可能不能进行垃圾收集。
[0010]本文描述的实施例使在分布式数据库系统中能够进行异步垃圾收集。在实施例中,当各代数据不再贡献系统的数据耐久性或安全性时,选择与垃圾收集有关的候选代。垃圾收集在无共享架构中发生,并且垃圾收集器在整个系统上产生较小的占用空间。因此,在与使用特定垃圾收集器方法相比时,以降低的成本优化了数据耐久性和数据安全性。此外,可以释放存储资源,以产生存储系统更有效使用。主控器可以确定数据库的可以被垃圾收集的特定代,并且主控器还可以协调在集群的每个服务器上运行的垃圾收集器。
[0011]图1是包括处理流水线102的系统100的框图。处理流水线102包括摄取级104、ID(标识符)重映射级106、分类级108和合并级110。来自各更新源112的数据更新被提供给服务器系统100,以由处理流水线102处理。更新源112的示例包括可以存储组织内的数据的各种机器,其中机器可以包括台式机、笔记本计算机、个人数字助理(PDA)、各种服务器(例如,文件服务器、电子邮件服务器等)或其它类型的设备。尽管图1中示出处理流水线102的特定级,但是注意到,在不同实施例中,可以在处理流水线102中提供可选的级或其它级。流水线的每个级独立于其它级。此外,该流水线的每个级可以在不同的独立的服务器上运行。该流水线中的每个级的动作和任务由被称为主控器的主进程编排。
[0012]处理流水线102的摄取级104批处理(收集)进入的来自更新源112的数据更新。在服务器系统100中处理和存储的数据可以包括各种元数据、文件、电子邮件、视频对象、音频对象等。更新可以是数据的增加、删除或重新整理。在一些实施例中,进入的更新被批处理成数据结构。在一些情况下,该数据结构是自一致更新(SCU) ^cu是一批更新,其中该批是单个不可分割单元,并且直至该SCU中的所有单独更新都被写至存储器才被认为是持久的。因此,应用SCU的所有更新,或者不应用SCU的任何更新。任何一个SCU中的数据更新与另一SCU中的数据更新隔离。在一些实施例中,未分类的SCU是持久的,这意味着在服务器系统100具有某一错误状况或电源故障时,该SCU的更新不丢失。
[0013]经批处理的更新被提供给ID重映射级106,ID重映射级106将经批处理的更新的初始临时ID转换成全局ID。实际上,ID重映射级106将第一空间中的ID映射至第二空间中的IDo在一些实施例中,第二空间是提供单个的可搜索的ID空间的全局空间。由摄取级104使用的初始临时ID在处理每个唯一实体(例如,文件名)时被分配给每个唯一实体。使用ID来替代相对大量的进入数据(如文件路径名),这改善了查询和处理时间,并且降低了存储空间的利用。此外,在用多个处理器实现摄取级104的实施例中,由多个处理器中的每个生成的临时ID可以被重映射至全局ID空间。通过这样的方式,摄取级104的处理器不需要与彼此协作来确保唯一 ID的生成,使得可以实现更大的并行化。在一些情况下,术语处理器可以指单独的中央处理器单元(CPU)或指计算机节点。
[0014]经重映射的更新被提供给分类级108,分类级108按照一个或多个关键字来分类经重映射的更新,以创建包含一个或多个可搜索的索引的经分类的一批更新。在一些实施例中,经批处理的更新包括更新表,并且根据一个或多个关键字来对该更新表进行分类以产生一个或多个可搜索的索引。
[0015]合并级110将单独的经分类的一批更新合并成单个一组权限表114,以进一步改善查询性能。在一些情况下,权限表114指将由服务器系统100存储的数据的库,其中权限表114通常是响应于对数据的查询而搜索的表。在一些实施例中,来自更新源112中一个或多个更新源的多个更新可以共同被批处理成将自动地且一致地应用至在服务器系统100的数据储存器116中存储的权限表114的批(batch)。在一些实施例中,数据储存器116可以存储多个权限表114。更一般地,权限表114被称为数据表。在一些情况下,数据库是数据表的集入口 ο
[0016]依照一些实施例,处理流水线102的各处理级104、106、108和110是可单独地且独立地扩展的。处理流水线102的每个级可以用对应的一组一个或多个处理器实现,其中“处理器”可以指单独的CPU或指计算机节点。每个级中的并行化可以通过提供多个处理器增强。通过这样的方式,这些级中的每个级的性能可以通过用对应的基础结构实现这些级中的每个级来独立地调整。注意到,除了在每个级中实现并行化之外,每个级还可以实现流水线化,以实施对应的处理操作。
[0017]对分布式数据库系统的更新可以被实现为不可改变的文件。在一些情况下,数据库的特定一代由权限表和流水线的每个级中的所有更新组成,每个更新与特定的逻辑数据库有关。该特定一代用于在一时间点上的事务。特别地,当事务开始时,事务管理器将决定使用哪一代。在该事务全程将使用相同的一代。由于一代由不可改变的文件组成,所以这一代将不被更新,因此分布式数据库(如ExpressQuery)可以保证这一代的一致性。通过这样的方式,由于ExpressQuery将新的一组文件用于新一代,所以可以避免使用锁。事实上,当将该数据更新到一些表中时,再次生成整组表,以避免任何锁竞争。在一些情况下,锁竞争是一种冲突,该冲突是数个进程需要对相同资源的独占访问的结果。由于本技术中不使用锁,所以不存在竞争。但是,当生成新的一组表时,由于数据复制,所以使用一些其它存储空间。
[0018]为了数据库的数据耐久性和安全性目的,该流水线的每个级保持将更新和数据保存至储存器。通过这样的方式,可以在流水线的每个级处在各个时间点提供数据库的所有代。此外,在处理流水线的每个级处发现的中间数据使在发生损坏数据时能够进行系统恢复。在一些情况下,为了从可能的损坏中恢复而保留数据库的老的一些代是有用的。
[0019]摄取级104、ID重映射级106、分类级108以及合并级110中的每个包括垃圾收集器线程。因此,摄取级104包括垃圾收集器线程116,ID重映射级106包括垃圾收集器线程118,分类级108包括垃圾分类器线程120,并且合并级110包括垃圾收集器线程122。垃圾收集器线程116、118、120和122不维护分布式数据库系统的状态,并且不对要删除的信息进行决策。主控器124向垃圾收集器线程116、118、120和122中的每个发送任务。随后,垃圾收集器线程116、118、120和122执行该任务,该任务指示将删除的数据。在一些实施例中,主控器124与事务管理器126—起工作,以选择在每个级处要进行垃圾收集的正确的一组数据。事务管理器126可以用于识别当前在活跃事务中涉及的数据。
[0020]在一些实施例中,活跃事务是对服务器系统100的查询128或响应130。一个或多个客户端设备132可以向服务器系统100提交查询128。服务器系统100用响应130来对查询128做出应答,响应130被提供回一个或多个客户端设备130。注意,客户端设备130可以具有与更新源112共同的设备,也可以不具有与更新源112共同的设备。为了处理来自客户端设备130的查询,服务器系统100可以仅访问权限表114,或可选地,服务器系统100具有选择性地访问处理流水线102的处理级104、106、108和110中一个或多个处理级的选择。因此,查询128或响应中涉及的任何更新或数据是活跃事务。
[0021]图2是使在分布式数据库系统中能够进行异步垃圾收集的计算设备200的框图。计算设备200可以是例如笔记本计算机、台式计算机、平板计算机、移动设备或服务器等等。计算设备200可以包括中央处理单元(CPU)202和内存设备204,CPU 202被配置为执行所存储的指令,内存设备204存储可由CPU 202执行的指令。CPU可以通过总线206耦接至内存设备204。此外,CPU 202可以是单核处理器、多核处理器、计算集群或任意数量的其它构造。
[0022]内存设备204可以包括随机存取存储器(RAM)、只
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1