分布式存储系统的数据更新方法及服务器技术方案

技术编号:9573187 阅读:145 留言:0更新日期:2014-01-16 05:48
本发明专利技术实施例提供分布式键值对Key-Value存储系统的数据更新方法,通过将需要更新的节点、父节点、上级节点、根节点复制至Key-Value存储系统的缓冲层中,并修改需要更新的节点、父节点和上级节点的键值及内容,修改根节点的内容,使得这些节点有别于存储层中原来的节点。本发明专利技术方法先将需要更新的节点、父节点、上级节点存储到存储层中,再将根节点存储到键值对系统。由于缓冲层中的需更新的节点先于缓冲层中的根节点存储到存储层,因此,在需更新的节点在存储过程中发生的读操作将无法读取到需更新的节点,从而避免读取到脏数据。本发明专利技术还提供了相应的读取索引节点的方法及服务器。

【技术实现步骤摘要】
【国外来华专利技术】分布式存储系统的数据更新方法及服务器
本专利技术涉及数据处理领域,特别是涉及处理索引节点的方法及服务器。
技术介绍
随着电子通信技术的发展,电子数据的存储量不断增大,用户对于数据存储系统的容量要求也不断提高。作为具有具备高可用性、高可扩展性以及大容量特点的分布式键值对Key-Value存储系统受到广大用户的欢迎。分布式键值对Key-Value存储系统是以键值对Key-Value作为数据的组织方式,按照一定的哈希算法,将这些Key-Value分配在海量的节点上的存储系统。对于分布式Key-Value存储系统中的节点数据的处理,可以通过基于分布式Key-Value存储系统之上的分布式简单数据库系统SimpleDB实施查询及增加、修改、删除等操作。在对节点数据实施查询及增加、修改、删除等操作过程中,需要通过分布式索引来查找分布式Key-Value存储系统中的节点数据,该分布式索引是由大量的Key-Value构成,通常呈树状结构,存在一个根节点,对应于分布式索引中的节点上的数据存储在分布式Key-Value系统中。当通过分布式索引进行处理节点数据时,存在同时进行写和读请求的情况,这将导致读取的数据可能是脏数据,而非所要读取的修改前或修改后的数据。为了避免读取到脏数据,目前主要是采用分布式锁控制并发的方法进行读和写操作。具体的,当实施读请求时,需要获取一个分布式的共享锁,对目标节点加共享锁,使得在读操作时,对该目标节点的写请求被阻塞;当实施写请求时,需要获取一个分布式的排他锁,对目标节点加排他锁,使得在写操作时,对该目标节点的读请求被阻塞。因此,采用分布式锁控制并发的方法进行读和写操作,可以防止节点数据在修改的过程中被读取,确保读取到完整的节点数据。然而,上述方法虽然能够避免读取脏数据,但是并发性差,不能够同时进行读和写操作,这削弱了分布式Key-Value存储系统的可用性。例如,在通过分布式索引进行写操作时,该写操作可能耗时数秒,甚至数分钟,这导致读操作被大幅延迟,严重影响了分布式Key-Value存储系统的可用性。
技术实现思路
本专利技术提供了一种分布式键值对Key-Value存储系统的数据更新方法以及相应的服务器。使用本专利技术方法,不仅可以避免读取到脏数据,而且实现了读写并发。本专利技术第一方面提供一种新增索引节点的方法,包括:所述分布式Key-Value存储系统中的存储层包括第一存储树,所述第一存储树包括第一根节点,所述方法包括:获取第一数据更新请求,其中,所述第一数据更新请求包括需要在所述第一存储树中增加第一节点的键值和内容;复制所述第一根节点到所述分布式Key-Value存储系统的缓冲层中;确定所述第一节点的父节点,复制所述父节点到所述分布式Key-Value存储系统的缓冲层中,为所述父节点分配新键值,在所述父节点的内容中增加对所述第一节点的指向,其中,所述父节点的新键值与所述父节点的原始键值不同;依次复制所述父节点到所述第一根节点的分支上的其它上级节点到所述分布式Key-Value存储系统的缓冲层中,直到到达所述根节点,并为每个上级节点分配新键值,以及在所述每个上级节点的内容中分别增加对分配新键值的下一级节点的指向,其中,所述每个上级节点的新键值与其对应的原始键值不同;在所述第一根节点的内容中增加对所述上级节点的第一级节点的指向,其中,所述第一级节点为所述父节点到所述第一根节点的分支上距离所述根节点最近的节点;将所述第一节点、所述第一节点的父节点以及所述父节点的上级节点存储到所述分布式Key-Value存储系统中的存储层中;将所述第一根节点存储到所述分布式Key-Value存储系统中的存储层中的所述第一存储树中。结合第一方面,在第一种可能的实现方式中,所述父节点新键值和每个所述上级节点的新键值都是所述第一存储树中的唯一键值。结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,在复制所述第一根节点到所述分布式Key-Value存储系统的缓冲层中之后,所述方法还包括:为复制的第一根节点分配新的版本号;则,所述父节点的新的键值为将所述父节点的原始键值中的版本号更换为所述新的版本号后得到的键值,所述每个上级节点的新的键值为将所述每个上级节点对应的原始键值中的版本号更换为所述新的版本号后得到的键值。本专利技术第二方面提供一种分布式键值对Key-Value存储系统的数据更新方法,所述分布式Key-Value存储系统中的存储层包括第一存储树,所述第一存储树包括第一根节点,所述方法包括:获取第二数据更新请求,其中,所述第二数据更新请求包括需要更新的第二节点的新内容;复制所述第一根节点到所述分布式Key-Value存储系统的缓冲层中;复制所述第二节点的原始键值和原始内容到所述分布式Key-Value存储系统的缓冲层中,为所述第二节点分配新的键值,并将所述第二节点的原始内容更新为所述第二节点的新内容,其中,所述第二节点的新键值与所述第二节点的原始键值不同;确定所述第二节点的父节点,复制所述父节点到所述分布式Key-Value存储系统的缓冲层中,为所述父节点分配新键值,将所述父节点的内容中对具有原始键值的第二节点的指向修改为具有新键值的第二节点的指向,其中,所述父节点的新键值与所述父节点的原始键值不同;依次复制所述父节点到所述第一根节点的分支上的其它上级节点到所述分布式Key-Value存储系统的缓冲层中,直到到达所述根节点,并为每个上级节点分配新键值,以及在所述每个上级节点的内容中分别增加对分配新键值的下一级节点的指向,其中,所述每个上级节点的新键值与其对应的原始键值不同;在所述第一根节点的内容中增加对所述上级节点的第一级节点的指向,其中所述第一级节点为所述父节点到所述第一根节点的分支上距离所述根节点最近的节点;将所述第二节点、所述第二节点的父节点以及所述父节点的上级节点存储到所述分布式Key-Value存储系统中的存储层中;将所述第一根节点存储到所述分布式Key-Value存储系统中的存储层中的所述第一存储树中。结合本专利技术的第二方面,在本专利技术第二方面的第一种可能的实现方式中,所述第二节点的新键值、父节点的新键值和每个所述上级节点的新键值都是所述第一存储树中的唯一键值。结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,在复制所述第一根节点到所述分布式Key-Value存储系统的缓冲层中之后,所述方法还包括:为所述复制的第一根节点分配新的版本号;则,所述第二节点的新键值为将所述第二节点的原始键值中的版本号更换为所述新的版本号后得到的键值,所述父节点的新的键值为将所述父节点的原始键值中的版本号更换为所述新的版本号后得到的键值,所述每个上级节点的新的键值为将所述每个上级节点对应的原始键值中的版本号更换为所述新的版本号后得到的键值。本专利技术第三方面提供一种分布式键值对Key-Value存储系统的数据更新方法,所述分布式Key-Value存储系统中的存储层包括第一存储树,所述第一存储树包括第一根节点,所述方法包括:获取第三数据更新请求,其中,所述第三数据更新请求包括需要删除的第三节占.复制所述第一根节点到所述分布式Key-Value存储系统的缓冲层中;确定所述第三节点的父节点,复制所述父节点到所述分布本文档来自技高网
...

【技术保护点】
一种分布式键值对Key?Value存储系统的数据更新方法,其特征在于,所述分布式Key?Value存储系统中的存储层包括第一存储树,所述第一存储树包括第一根节点,所述方法包括:获取第一数据更新请求,其中,所述第一数据更新请求包括需要在所述第一存储树中增加第一节点的键值和内容;复制所述第一根节点到所述分布式Key?Value存储系统的缓冲层中;确定所述第一节点在所述第一存储树中的父节点,复制所述父节点到所述分布式Key?Value存储系统的缓冲层中,为所述父节点分配新键值,在所述父节点的内容中增加对所述第一节点的指向,其中,所述父节点的新键值与所述父节点的原始键值不同;依次复制所述父节点到所述第一根节点的分支上的其它上级节点到所述分布式Key?Value存储系统的缓冲层中,直到到达所述根节点,并为每个上级节点分配新键值,以及在所述每个上级节点的内容中分别增加对分配新键值的下一级节点的指向,其中,所述每个上级节点的新键值与其对应的原始键值不同;在所述第一根节点的内容中增加对所述上级节点的第一级节点的指向,其中,所述第一级节点为所述父节点到所述第一根节点的分支上距离所述根节点最近的节点;将所述第一节点、所述第一节点的父节点以及所述父节点的上级节点存储到所述分布式Key?Value存储系统中的存储层中;将所述第一根节点存储到所述分布式Key?Value存储系统中的存储层中的所述第一存储树中。...

【技术特征摘要】
【国外来华专利技术】1.一种分布式键值对Key-Value存储系统的数据更新方法,其特征在于,所述分布式Key-Value存储系统中的存储层包括第一存储树,所述第一存储树包括第一根节点,所述方法包括: 获取第一数据更新请求,其中,所述第一数据更新请求包括需要在所述第一存储树中增加第一节点的键值和内容; 复制所述第一根节点到所述分布式Key-Value存储系统的缓冲层中; 确定所述第一节点在所述第一存储树中的父节点,复制所述父节点到所述分布式Key-Value存储系统的缓冲层中,为所述父节点分配新键值,在所述父节点的内容中增加对所述第一节点的指向,其中,所述父节点的新键值与所述父节点的原始键值不同; 依次复制所述父节点到所述第一根节点的分支上的其它上级节点到所述分布式Key-Value存储系统的缓冲层中,直到到达所述根节点,并为每个上级节点分配新键值,以及在所述每个上级节点的内容中分别增加对分配新键值的下一级节点的指向,其中,所述每个上级节点的新键值与其对应的原始键值不同; 在所述第一根节点的内容中增加对所述上级节点的第一级节点的指向,其中,所述第一级节点为所述父节点到所述第一根节点的分支上距离所述根节点最近的节点; 将所述第一节点、所述第一节点的父节点以及所述父节点的上级节点存储到所述分布式Key-Value存储系统中的存储层中; 将所述第一根节点存储到所述分布式Key-Value存储系统中的存储层中的所述第一存储树中。2.如权利要求1所述的方法,其特征在于,所述父节点的新键值和每个所述上级节点的新键值都是所述第一存储树中的唯一键值。3.如权利要求2所述的方法,其特征在于,在复制所述第一根节点到所述分布式Key-Value存储系统的缓冲层中之后,还包括: 为复制的第一根节点分配新的版本号; 贝U,所述父节点的新的键值为将所述父节点的原始键值中的版本号更换为所述新的版本号后得到的键值,所述每个上级节点的新的键值为将所述每个上级节点对应的原始键值中的版本号更换为所述新的版本号后得到的键值。4.一种分布式键值对Key-Value存储系统的数据更新方法,其特征在于,所述分布式Key-Value存储系统中的存储层包括第一存储树,所述第一存储树包括第一根节点,所述方法包括: 获取第二数据更新请求,其中,所述第二数据更新请求包括需要更新的第二节点的新内容; 复制所述第一根节点到所述分布式Key-Value存储系统的缓冲层中; 复制所述第二节点的原始键值和原始内容到所述分布式Key-Value存储系统的缓冲层中,为所述第二节点分配新的键值,并将所述第二节点的原始内容更新为所述第二节点的新内容,其中,所述第二节点的新键值与所述第二节点的原始键值不同; 确定所述第二节点的父节点,复制所述父节点到所述分布式Key-Value存储系统的缓冲层中,为所述父节点分配新键值,将所述父节点的内容中对具有原始键值的第二节点的指向修改为具有新键值的第二节点的指向,其中,所述父节点的新键值与所述父节点的原始键值不同; 依次复制所述父节点到所述第一根节点的分支上的其它上级节点到所述分布式Key-Value存储系统的缓冲层中,直到到达所述根节点,并为每个上级节点分配新键值,以及在所述每个上级节点的内容中分别增加对分配新键值的下一级节点的指向,其中,所述每个上级节点的新键值与其对应的原始键值不同; 在所述第一根节点的内容中增加对所述上级节点的第一级节点的指向,其中所述第一级节点为所述父节点到所述第一根节点的分支上距离所述根节点最近的节点; 将所述第二节点、所述第二节点的父节点以及所述父节点的上级节点存储到所述分布式Key-Value存储系统中的存储层中; 将所述第一根节点存储到所述分布式Key-Value存储系统中的存储层中的所述第一存储树中。5.如权利要求4所述的方法,其特征在于,所述第二节点的新键值、父节点的新键值和每个所述上级节点的新键值都是所述第一存储树中的唯一键值。6.如权利要求5所述的方法,其特征在于,在复制所述第一根节点到所述分布式Key-Value存储系统的缓冲层中之后,还包括: 为所述复制的第一根节点分配新的版本号; 贝U,所述第二节点的新键值为将所述第二节点的原始键值中的版本号更换为所述新的版本号后得到的键值,所述父节点的新的键值为将所述父节点的原始键值中的版本号更换为所述新的版本号后得到的键值,所述每个上级节点的新的键值为将所述每个上级节点对应的原始键值中的版本号更换为所述新的版本号后得到的键值。7.一种分布式键值对Key -Value存储系统的数据更新方法,其特征在于,所述分布式Key-Value存储系统中的存储层包括第一存储树,所述第一存储树包括第一根节点,所述方法包括: 获取第三数据更新请求,其中,所述第三数据更新请求包括需要删除的第三节点; 复制所述第一根节点到所述分布式Key-Value存储系统的缓冲层中; 确定所述第三节点的父节点,复制所述父节点到所述分布式Key-Value存储系统的缓冲层中,为所述父节点分配新键值,删除所述父节点的内容中对所述第三节点的指向,其中,所述父节点的新键值与所述父节点的原始键值不同; 依次复制所述父节点到所述第一根节点的分支上的其它上级节点到所述分布式Key-Value存储系统的缓冲层中,直到到达所述根节点,并为每个上级节点分配新键值,以及在所述每个上级节点的内容中分别增加对分配新键值的下一级节点的指向,其中,所述每个上级节点的新键值与其对应的原始键值不同; 在所述第一根节点的内容中增加对所述上级节点的第一级节点的指向,其中所述第一级节点为所述父节点到所述第一根节点的分支上距离所述根节点最近的节点; 将所述第三节点的父节点以及所述父节点的上级节点存储到所述分布式Key-Value存储系统中的存储层中; 将所述第一根节点存储到所述分布式Key-Value存储系统中的存储层中的所述第一存储树中。8.如权利要求7所述的方法,其特征在于,所述第三节点的父节点的新键值和每个所述上级节点的新键值都是所述第一存储树中的唯一键值。9.如权利要求8所述的方法,其特征在于,在复制所述第一根节点到所述分布式Key-Value存储系统的缓冲层中之后,还包括: 为所述复制的第一根节点分配新的版本号; 贝U,所述父节点的新的键值为将所述父节点的原始键值中的版本号更换为所述新的版本号后得到的键值,所述每个上级节点的新的键值为将所述每个上级节点对应的原始键值中的版本号更换为所述新的版本号后得到的键值。10.一种读索引节点的方法,其特征在于,包括: 读取索引中的根节点; 获取与当前读取的根节点的版本号对应的共享锁; 在获取所述共享锁之后,重新读取所述根节点; 验证所述共享锁对应的版本号与重新读取后的根节点的版本号是否一致,若所述共享锁对应的版本号与重新读取后的根节点的版本号一致,则对所述重新读取后的根节点加所述共孚锁; 在对所述重新读取后的根节点加所述共享锁之后,执行从键值对Key-Value系统的存储层中读取所述根节点下的目标节点的操作。11.根据权利要求10所述的读索引节点的方法,其特征在于,还包括:若所述共享锁对应的版本号与重新读取后的根节点的版本号不一致,则将所述重新读取后的根节点的版本号作为当前读取的根节点的版本号,返回所述获取与当前读取的根节点的版本号相对应的共享锁的步骤。12.一种服务器,其特征在于,包括: 获取单元,用于获取第一数据更新请求,其中,所述第一数据更新请求包括需要在分布式Key-Value存储系统中的存储层中的第一存储树中增加第一节点的键值和内容,所述第一存储树包括第一根节点; 处理单元,用于复制所述第一根节点到所述分布式Key-Value存储系统的缓冲层中;还用于确定所述第一节点的父节点,复制所述父节点到所述分布式Key-Value存储系...

【专利技术属性】
技术研发人员:娄东风周训淼
申请(专利权)人:华为技术有限公司
类型:
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1