买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】面向多插入源的快照版本管理方法_上海交通大学_201710829381.8 

申请/专利权人:上海交通大学

申请日:2017-09-14

公开(公告)日:2021-09-21

公开(公告)号:CN107656992B

主分类号:G06F16/11(20190101)

分类号:G06F16/11(20190101);G06F16/182(20190101)

优先权:

专利状态码:有效-授权

法律状态:2021.09.21#授权;2018.05.18#实质审查的生效;2018.02.02#公开

摘要:本发明提供了一种面向多插入源的快照版本管理方法,包括如下步骤:步骤一:数据源发送数据,服务器接收待插入的数据;步骤二:服务器根据数据源在本地的插入状态和协调服务器发布的快照计划,判断待插入数据所属的快照,并相应的进行插入;步骤三:更新数据源在本地的插入状态,如果发现当前快照计划在本地已完成,则进行步骤四,否则直接结束;步骤四:通知协调服务器当前快照计划在本地完成,并从协调服务器获知全局快照计划是否完成,如果全局计划也已完成,则生成下一个快照的计划。本发明能够有效的管理分布式、多插入源情况下的数据快照,减小快照管理带来的开销。

主权项:1.一种面向多插入源的快照版本管理方法,其特征在于,包括如下步骤:步骤一:数据源发送数据,服务器接收待插入的数据;步骤二:服务器根据数据源在本地的插入状态和协调服务器发布的快照计划,判断待插入数据所属的快照,并相应的进行插入;步骤三:更新数据源在本地的插入状态,如果发现当前快照计划在本地已完成,则进行步骤四,否则直接结束;步骤四:通知协调服务器当前快照计划在本地完成,并从协调服务器获知全局快照计划是否完成,如果全局计划也已完成,则生成下一个快照的计划;所述步骤二包括如下步骤:步骤二十一:判断该数据源在服务器本地的插入状态是否已达到当前快照计划所规定的状态;如果已达到,说明待插入数据不属于当前快照,而是属于下一个快照,因此在插入前应该等待协调服务器发布新的快照计划;步骤二十二:确保待插入数据属于当前快照计划后,服务器将数据插入到本地键值对存储系统;具体的,在存储系统中每个键对应两个值:最新快照版本和较老快照版本;如果待插入键不存在,则将待插入值作为待插入键的最新版本插入,将其版本信息标记为当前计划的快照;如果待插入键存在,则根据如下不同情况进行插入操作:当该键的最新快照版本对应当前快照计划时,直接进行插入,即将待插入值附加到该键在本地存储系统对应的原有值之后;该键的最新版本不对应当前快照计划时,首先用该键的最新快照版本覆盖较老快照版本,然后再在最新版本上进行插入,插入方法同上;插入后,该键的最新版本对应当前快照计划,较老版本对应之前的快照计划。

全文数据:面向多插入源的快照版本管理方法技术领域[0001]本发明涉及一种快照版本管理方法,具体地,涉及一种面向多插入源的快照版本管理方法。背景技术[0002]在电脑系统中,快照Snapshot是指整个系统在某个时刻的状态。特别的,在数据库系统中,状态指的是数据库中所有存储的数据,这些数据可以通过数据库提供的修改操作改变。由于数据库系统可以同时执行多个修改操作,而且修改操作需要耗费一定的时间,所以在某个时刻所有的修改操作可以分为己完成和未完成两种类型。在某一时刻,考虑所有已完成操作对状态的影响,忽略所有未完成操作的影响,得到的系统状态称为该时刻的数据快照。通常,数据库操作需要在一个指定的数据快照上进行,从而避免未完成操作之间相互干扰导致的异常Anomaly,进而为查询提供一致性Consistency。这样的操作处理方式称为快照隔离SnapshotIsolation,其优点包括提供更好的操作并行性,排除大部分异常等;其缺点是在分布式环境下,很难在不影响操作性能的情况下获取数据快照。[0003]数据流DataStream模型在大数据、物联网、人工智能等领域越来越流行。数据流是指由一个数据源持续不断产生的数据。比如在现实世界中,社交数据流不断的从用户移动设备产生,交通信息流不断的从马路传感器产生。因此,现代数据库需要支持多数据流的同时插入,即本发明面向的多插入源。[0004]键值对存储系统Key-ValueStorageSystem是分布式数据库广泛使用的存储方式。其中,键通常是一个整数,方便查找;值通常是一个数据集合。比如键表示学生学号,值包括学生的姓名、年龄等数据。插入数据流时,通常不会对现有数据进行修改,只会增加新的数据。这样的修改模型称为只插入AppendOnly模型。[0005]远程直接内存访问(RDMA,RemoteDirectMemoryAccess是一种高性能的网络通讯技术,能够直接读写远端服务器的内存,并且不需要目标服务器CPU的参与协助。相比于传统的网络通讯,RDMA具有低延迟和高吞吐率的特点。当传输的数据量较小时,网络带宽占用率不高,RDMA通信的延迟保持在稳定且较低水平。[0006]因此如何设计一个高效的快照版本管理方法,既可以支持分布式环境中多插入源的同时修改,又可以避免暂停甚至终止正在进行的数据库操作,并且充分利用新的网络通讯技术提高管理性能,己成为本领域技术人员亟待解决的技术难题。发明内容[0007]针对现有技术中的缺陷,本发明的目的是提供一种面向多插入源的快照版本管理方法,通过定期制定数据快照计划,协调数据流插入,为分布式环境下的查询提供数据一致性,并且充分利用高性能网络降低快照管理开销。相比于传统的每次修改都创建新快照,本方法不仅拥有更高的性能,而且很好的降低了存储开销。[0008]根据本发明的一个方面,提供一种面向多插入源的快照版本管理方法,其特征在于,包括如下步骤:[0009]步骤一:数据源发送数据,服务器接收待插入的数据;[0010]步骤二:服务器根据数据源在本地的插入状态和协调服务器发布的快照计划,判断待插入数据所属的快照,并相应的进行插入;[0011]步骤三:更新数据源在本地的插入状态,如果发现当前快照计划在本地已完成,则进行步骤四,否则直接结束;[0012]步骤四:通知协调服务器当前快照计划在本地完成,并从协调服务器获知全局快照计划是否完成,如果全局计划也已完成,则生成下一个快照的计划。[0013]优选地,所述步骤一包括如下步骤:数据源将待插入数据表示成键值对的形式,然后选择一台服务器发送该数据;服务器接收到数据后,将其缓存,为后续插入工作进行准备。[0014]步骤一中的缓存步骤将数据划分成一个个小批进行处理,其优点在于在不影响查询性能的条件下提高了数据传输和插入的吞吐率。同时,通过控制每个小批包含数据的多少,可以在吞吐率和单条数据处理查询之间做出平衡。[0015]优选地,所述步骤二包括如下步骤:[0016]步骤二十一:判断该数据源在服务器本地的插入状态是否已达到当前快照计划所规定的状态;如果已达到,说明待插入数据不属于当前快照,而是属于下一个快照,因此在插入前应该等待协调服务器发布新的快照计划;[0017]步骤二十二:确保待插入数据属于当前快照计划后,服务器将数据插入到本地键值对存储系统;具体的,在存储系统中每个键对应两个值:最新快照版本和较老快照版本;如果待插入键不存在,则将待插入值作为待插入键的最新版本插入,将其版本信息标记为当前计划的快照;如果待插入键存在,则根据如下不同情况进行插入操作:[0018]当该键的最新快照版本对应当前快照计划时,直接进行插入,即将待插入值附加到该键在本地存储系统对应的原有值之后;[0019]该键的最新版本不对应当前快照计划时,首先用该键的最新快照版本覆盖较老快照版本,然后再在最新版本上进行插入,插入方法同上;插入后,该键的最新版本对应当前快照计划,较老版本对应之前的快照计划。[0020]步骤二根据快照计划对数据插入进行全局控制,其优点在于快照计划是提前制定的并在每台机器上都有拷贝,所以只需要本地信息即可完成该步骤,无需考虑分布式环境下达成一致性的复杂问题。此外,该步骤将快照计划表示为一个快照编号,而不是直接使用每个数据流的插入状态,优点在于对键值对存储屏蔽了数据流相关信息,简化了存储模块设计,并减小了内存资源占用。[0021]优选地,所述步骤三包括以下步骤:更新数据源在本地的插入状态,如果所有数据源在本地的插入状态和当前快照计划所规定的状态相同,说明当前快照计划在本地插入结束,应该进入步骤四;否则说明当前快照计划未结束,不需要更新快照计划,流程直接结束。[0022]步骤三的优点在于大部分插入操作都不会因为版本控制而增加额外的时间开销。只有在本地快照计划完成时,才会有较小的额外开销用于和其他机器进行同步,协调下一个快照计划。[0023]优选地,所述步骤四包括以下步骤:[0024]步骤四^一:通知协调服务器当前快照计划在本地结束,并从协调服务器获知其他服务器的快照计划完成情况;如果存在其他服务器未完成当前快照计划,说明此时不应该更新快照计划,流程直接结束;否则说明快照计划需要更新,进入步骤四十二;[0025]步骤四十二:生成新的快照计划,包括新的快照编号和新快照对应的所有插入源的插入状态,将新的快照计划发送到协调服务器;[0026]步骤四十三:协调服务器接收新的快照计划,宣布原有快照计划己完成,即原有计划所对应的快照在全局生效,然后发布下一个快照的插入计划。[0027]步骤四的优点在于只有完成快照计划最晚的服务器负责制定新的快照计划,从而实现整个过程的去中心化避免了对某一台具体机器的依赖。同时,如果不同服务器的处理能力不同,在制定新的快照计划时会进行充分考虑,给处理能力较差的机器分配较少插入任务从而减小全局的同步时间。[0028]与现有技术相比,本发明具有如下的有益效果:[0029]一,本发明所提出的面向多插入源的快照版本管理方法,能够有效的管理分布式键值对存储系统的数据快照,在保证查询操作一致性的同时,使得快照管理和查询执行互不干扰。相比于传统的快照管理方法,将每次修改都创建新的数据快照变为定期制定数据快照,避免了频繁创建快照造成的巨大存储开销,更加适合于多插入源同时插入的场景。[0030]二,本发明设计的快照版本管理方法充分考虑到了高性能网络RDMA的特性,使得分布式键值对存储系统内部的快照版本管理对RDMA网络操作十分友好。同时由于使用数据量很小的网络包进行快照管理,在RDMA网络中可以达到极小且稳定的同步延迟。[0031]三,本发明可以通过制定快照计划的频率,使系统可以在数据新鲜度和快照生成代价之间做出更好权衡。附图说明[0032]通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:[0033]图1是本发明使用面向多插入源的快照版本管理方法的流程图。具体实施方式[0034]下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。[0035]本发明面向多插入源的快照版本管理方法包括如下步骤:[0036]步骤一:数据源发送数据,服务器接收待插入的数据;[0037]步骤二:服务器根据数据源在本地的插入状态和协调服务器发布的快照计划,判断待插入数据所属的快照,并相应的进行插入;[0038]步骤三:更新数据源在本地的插入状态,如果发现当前快照计划在本地已完成,则进tx步骤四,否则直接结束;[0039]步骤四:通知协调服务器当前快照计划在本地完成,并从协调服务器获知全局快照计划是否完成,如果全局计划也已完成,则生成下一个快照的计划。[0040]所述步骤一包括如下步骤:数据源将待插入数据表示成键值对的形式,然后选择一台服务器发送该数据;服务器接收到数据后,将其缓存,为后续插入工作进行准备。[0041]所述步骤二包括如下步骤:[0042]步骤二十一:判断该数据源在服务器本地的插入状态是否己达到当前快照计划所规定的状态;如果己达到,说明待插入数据不属于当前快照,而是属于下一个快照,因此在插入前应该等待协调服务器发布新的快照计划;[0043]步骤二十二:确保待插入数据属于当前快照计划后,服务器将数据插入到本地键值对存储系统;具体的,在存储系统中每个键对应两个值:最新快照版本和较老快照版本;如果待插入键不存在,则将待插入值作为待插入键的最新版本插入,将其版本信息标记为当前计划的快照;如果待插入键存在,则根据如下不同情况进行插入操作:当该键的最新快照版本对应当前快照计划时,直接进行插入,即将待插入值附加到该键在本地存储系统对应的原有值之后;该键的最新版本不对应当前快照计划时,首先用该键的最新快照版本覆盖较老快照版本,然后再在最新版本上进行插入,插入方法同上;插入后,该键的最新版本对应当前快照计划,较老版本对应之前的快照计划。[0044]所述步骤三包括以下步骤:更新数据源在本地的插入状态,如果所有数据源在本地的插入状态和当前快照计划所规定的状态相同,说明当前快照计划在本地插入结束,应该进入步骤四;否则说明当前快照计划未结束,不需要更新快照计划,流程直接结束。[0045]所述步骤四包括以下步骤:[0046]步骤四十一:通知协调服务器当前快照计划在本地结束,并从协调服务器获知其他服务器的快照计划完成情况;如果存在其他服务器未完成当前快照计划,说明此时不应该更新快照计划,流程直接结束;否则说明快照计划需要更新,进入步骤四十二;[0047]步骤四十二:生成新的快照计划,包括新的快照编号和新快照对应的所有插入源的插入状态,将新的快照计划发送到协调服务器;步骤四十三:协调服务器接收新的快照计划,宣布原有快照计划己完成,即原有计划所对应的快照在全局生效,然后发布下一个快照的插入计划。[0048]如图1所示,本发明具体实施例包括如下步骤:[0049]步骤一:系统启动时初始化每台服务器上的键值对存储系统,插入初始数据;数据源将键值对形式表示的数据发送到特定服务器;[0050]步骤二:服务器根据数据源在本地的插入状态和协调服务器发布的当前快照计划,判断待插入数据所属的快照,并相应的插入到本地键值对存储系统;[0051]步骤三:更新数据源在本服务器的插入状态,如果发现当前快照计划在本地已完成,则进行步骤四,否则直接结束;[0052]步骤四:通知协调服务器当前快照计划在本地完成,并从协调服务器获知其他服务器的计划完成状况,如果全局计划已完成,则生成下一个快照的计划。[0053]所述步骤一包括:数据源将待插入数据表示成键值对的形式,根据待插入键的哈希值,在数据中心内选择一台服务器来存储该条数据。服务器接收到待插入键值对后,放入对应数据源的缓存,为后面的插入工作进行准备。[0054]所述步骤二包括以下步骤:[0055]步骤二十一:判断该数据源在服务器本地的插入状态是否已达到当前快照计划所规定的状态。如果己达到,说明待插入数据不属于当前快照,而是属于下一个快照,因此在插入前应该等待协调服务器发布新的快照计划;如果未达到,直接进行下一步骤。[0056]步骤二十二:确保待插入数据属于当前快照计划后,服务器将数据插入到本地键值对存储系统。具体的,在存储系统中每个键对应两个值:最新快照版本和较老快照版本。对于只插入模型,较老版本应该是最新版本的一个子集,所以如果值是按照时间顺序存储的话,可以将较老版本表示为最新版本内的一个位置,而不是完全的数据拷贝。如果待插入键不存在,则将待插入值作为待插入键的最新版本插入,将其版本信息标记为当前计划的快照,较老版本为空;如果待插入键存在,则根据如下不同情况进行插入操作:[0057]当该键的最新快照版本对应当前快照计划时,直接进行插入,即将待插入值和该键在存储系统中原有值进行合并,生成该键的新值。[0058]当该键的最新版本不对应当前快照计划时,首先用该键的最新快照版本覆盖较老快照版本,然后再在最新版本上进行同样的插入操作。插入后,将较老版本的快照信息赋值为原来最新版本的快照信息,将最新版本的快照信息赋值为当前计划的快照。[0059]所述步骤三包括:更新数据源在本地的插入状态,如果所有数据源在本地的插入状态和当前快照计划所规定的状态相同,说明当前快照计划在本地插入结束,在新的插入执行前应该等待协调服务器发布新的快照计划;否则说明当前快照计划未结束,不需要更新快照计划,插入流程直接结束。[0060]所述步骤四包括:[0061]步骤四十一:通知协调服务器当前快照计划在本地结束,并从协调服务器获知其他服务器的快照计划完成情况。如果存在其他服务器未完成当前快照计划,说明暂不需要新的快照计划,流程直接结束;否则说明需要生成新的快照计划,进入步骤四•2。[0062]步骤四十二:生成新的快照计划,包括新的快照编号和新快照对应的所有插入源的插入状态,后者决定了达到该计划快照所需的大致时间。将新计划发送到协调服务器。[0063]步骤四十三:协调服务器接收新的快照计划,宣布原有快照计划已完成,即原有计划所对应的快照在全局生效,可以被后续的查询访问。然后发布下一个快照的插入计划,此时所有服务器可以根据新计划继续插入操作。[0064]进一步具体地,步骤二的存储系统快照版本控制和步骤四的快照计划发布利用了高性能网络RDMA的特性。针对步骤二,本发明中每个键对应两个快照版本的值,指向两个版本的指针保存在键内,该设计有如下两个优点:[0065]—,服务器在执行查询时可以使用一次RDMA读操作获得两个版本值的内存地址和偏移量,为下一次RDMA读操作提供必要位置信息。由于RDMA次数是影响查询延时的重要因素,这样的设计可以降低查询延时,尤其适合对查询性能要求较高的场合。[G066]二,和没有快照版本管理的键值对存储系统相比,每个键的存储内容只增加了一个指针,每个键占用的内存依然很少约几十个字节)。由于在RDMA网络中,传输数据大小较小时(如小于两千字节),传输的延迟保持较低的水平且基本不变,所以服务器在执行查询时访问远端存储系统的开销基本不变。[G067]针对步骤四,本发明中的快照管理方法所需的通信次数和通讯量都较小,如上所述非常适合使用RDMA来降低延时。而且,处理数据插入的线程可以通过RDMA直接读取协调服务器上的快照计划,使得快照管理在所有服务器上都不需要专门线程,节约了CPU资源。[0068]本发明采用面向多插入源的快照版本管理方法而不是传统的快照管理方法,主要原因是传统方法无法有效实现分布式、多插入源、只插入修改模型情景下的查询一致性保证。传统方法有如下向题:每次插入都会创建新的快照,不适合于分布式大规模数据流插入场景,主要原因是传统方法会维护一个全局唯一的快照编号,每创建一个新快照都会增加该编号,在插入操作频繁时会成为分布式数据库系统的性能瓶颈。过多的快照会占用大量存储空间。比如,一个查询执行过程中,某个键的值更新了十次,传统方法在该查询执行结束之前会保留所有十个版本的值,然而这些版本大部分是不需要的,浪费了存储空间。[0069]而本发明采取的面向多插入源的快照版本管理方法,相比于传统方法有如下优势:[0070]1改为定期创建新的快照,使得创建快照的频率可控,快照控制逻辑也相对简单,系统管理员可以在数据新鲜度和创建快照开销之间做出权衡;[0071]⑵每个键只保存两个快照版本,显著降低了存储开销,并且对于高性能网络RDMA非常友好,和没有快照版本控制的查询接口基本一致;[°072]⑶充分利用RDMA的特点,在不单独占用CRJ资源的情况下高效完成快照控制。[0073]综上所述,本发明提出的面向多插入源的快照版本管理方法,通过定期制定数据快照计划,协调数据流插入,为分布式环境下的查询提供数据一致性,并且充分利用高性能网络降低快照管理开销。相比于传统的每次修改都创建新快照,本方法不仅拥有更高的性能,而且很好的降低了存储开销。本发明能够有效的管理分布式、多插入源情况下的数据快照,为查询操作提供一致的数据版本,同时充分利用到了高性能网络RDMA的特性,减小快照管理带来的开销。[0074]以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。

权利要求:1.一种面向多插入源的快照版本管理方法,其特征在于,包括如下步骤:步骤一:数据源发送数据,服务器接收待插入的数据;步骤二:服务器根据数据源在本地的插入状态和协调服务器发布的快照计划,判断待插入数据所属的快照,并相应的进行插入;步骤三:更新数据源在本地的插入状态,如果发现当前快照计划在本地已完成,则进行步骤四,否则直接结束;步骤四:通知协调服务器当前快照计划在本地完成,并从协调服务器获知全局快照计划是否完成,如果全局计划也已完成,则生成下一个快照的计划。2.根据权利要求1所述的面向多插入源的快照版本管理方法,其特征在于,所述步骤一包括如下步骤:数据源将待插入数据表示成键值对的形式,然后选择一台服务器发送该数据;服务器接收到数据后,将其缓存,为后续插入工作进行准备。3.根据权利要求1所述的面向多插入源的快照版本管理方法,其特征在于,所述步骤二包括如下步骤:步骤二十一:判断该数据源在服务器本地的插入状态是否已达到当前快照计划所规定的状态;如果已达到,说明待插入数据不属于当前快照,而是属于下一个快照,因此在插入前应该等待协调服务器发布新的快照计划;步骤二十二:确保待插入数据属于当前快照计划后,服务器将数据插入到本地键值对存储系统;具体的,在存储系统中每个键对应两个值:最新快照版本和较老快照版本;如果待插入键不存在,则将待插入值作为待插入键的最新版本插入,将其版本信息标记为当前计划的快照;如果待插入键存在,则根据如下不同情况进行插入操作:当该键的最新快照版本对应当前快照计划时,直接进行插入,即将待插入值附加到该键在本地存储系统对应的原有值之后;该键的最新版本不对应当前快照计划时,首先用该键的最新快照版本覆盖较老快照版本,然后再在最新版本上进行插入,插入方法同上;插入后,该键的最新版本对应当前快照计划,较老版本对应之前的快照计划。4.根据权利要求1所述的面向多插入源的快照版本管理方法,其特征在于,所述步骤三包括以下步骤:更新数据源在本地的插入状态,如果所有数据源在本地的插入状态和当前快照计划所规定的状态相同,说明当前快照计划在本地插入结束,应该进入步骤四;否则说明当前快照计划未结束,不需要更新快照计划,流程直接结束。5.根据权利要求1所述的面向多插入源的快照版本管理方法,其特征在于,所述步骤四包括以下步骤:步骤四十一:通知协调服务器当前快照计划在本地结束,并从协调服务器获知其他服务器的快照计划完成情况;如果存在其他服务器未完成当前快照计划,说明此时不应该更新快照计划,流程直接结束;否则说明快照计划需要更新,进入步骤四十二;步骤四十二:生成新的快照计划,包括新的快照编号和新快照对应的所有插入源的插入状态,将新的快照计划发送到协调服务器;步骤四十三:协调服务器接收新的快照计划,宣布原有快照计划己完成,即原有计划所对应的快照在全局生效,然后发布下一个快照的插入计划。

百度查询: 上海交通大学 面向多插入源的快照版本管理方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。