面向分布式图数据库的数据动态迁移方法及系统与流程

文档序号:19491997发布日期:2019-12-24 14:04阅读:414来源:国知局
面向分布式图数据库的数据动态迁移方法及系统与流程

本发明涉及数据处理领域,具体地,涉及一种面向分布式图数据库的数据动态迁移方法及系统。



背景技术:

在加速分布式图数据库系统的方法中,提高数据的局部性是其中的重要方法之一。提高数据局部性是一种重要的、广泛应用于加速各种数据库系统的方法。它将数据库系统中查询操作相关的数据尽可能地存储在同一台机器上,从而加速查询。这是因为在同一台机器通过内存访问数据比跨机器地通过网络访问数据要快至少一个数量级。

在分布式图数据库系统中提高数据局部性的技术主要有三种:静态数据划分技术、数据备份技术、数据动态迁移技术。静态数据划分技术只能针对某个特地的查询工作集,不能适用于动态变化的工作集;数据备份技术虽然可以优化动态变化的工作集,但有巨大的内存开销,并且使得数据的同步变得额外复杂;数据动态迁移技术根据工作集的变化,在机器之间调整数据的位置,即动态地调整数据的划分方式,既没有巨大的额外开销,又可以在动态变化的工作集中,提高分布式图数据库的数据局部性。

目前,应用于分布式图数据库的数据动态迁移技术是一种基于数据块的动态迁移技术。基于数据块的动态迁移技术在传统的关系型数据库中被广泛使用。该技术将数据划分为多个块,以块为单位进行数据迁移。将基于数据块的动态迁移技术应用于特殊的分布式图数据库中会面临两个问题:一是当数据块比较大时,由于图数据独有的特征——极差的局部性,该数据动态迁移技术在做了很多的数据迁移的工作之后,只能获得很差的数据局部性的提升,所以加速查询的效果很不明显;二是当数据块很小时,虽然可以较明显地加速图查询,但有巨大的元数据开销。这个元数据开销会同时带来内存上和查询速度上的开销,并且这个开销是随着系统中机器的数量不断增加的。所以,这个元数据开销是不可接受的。因此,现有的数据动态迁移技术无法应用于分布式图数据库。



技术实现要素:

针对现有技术中的缺陷,本发明的目的是提供一种面向分布式图数据库的数据动态迁移方法及系统。

根据本发明提供的一种面向分布式图数据库的数据动态迁移方法,包括:由每台设备上的监控器收集数据的访问信息,将访问信息发送给一个共同的协调者,所述协调者根据访问信息与迁移策略生成迁移计划,并将迁移计划发送给每台设备上的迁移者,所述迁移者根据计划完成数据从设备中的起始端到目标端的迁移。

优选地,所述面向分布式图数据库的数据动态迁移方法包括步骤:

步骤1:目标端获取键值对中的键,根据键得到值的位置信息;

步骤2:目标端在本地分配内存空间;

步骤3:目标端访问起始端的内存,拷贝键值对中的值;

步骤4:目标端原子性地更新键中存储的值的位置信息;

步骤5:目标端在起始端标记,使起始端存储的旧的值失效;

步骤6:目标端在起始端标记,记录需要做内存回收的地址,所述需要做内存回收的地址为起始端中存储的旧的值的地址。

优选地,步骤1中目标端通过远程直接内存访问的读操作获取键值对中的键。

优选地,步骤2中目标端通过步骤1中得到的位置信息获取值的大小,从而分配所需大小的内存空间。

优选地,步骤3中目标端通过远程直接内存访问的读操作实现对值的拷贝。

优选地,步骤4中目标端通过远程直接内存访问的比较交换操作实现对位置信息的原子性修改。

优选地,步骤5中目标端通过远程直接内存访问的写操作对值的头信息进行修改,标记值失效。

优选地,步骤6中目标端通过远程直接内存访问的写操作标记,通知起始端回收旧的值的存储空间。

根据本发明提供的一种面向分布式图数据库的数据动态迁移系统,包括:采用权利要求1至8任意一项所述的面向分布式图数据库的数据动态迁移方法。

优选地,多台设备通过支持远程直接内存访问的网络连接为一个集群。

与现有技术相比,本发明具有如下的有益效果:

1、采用迁移值的迁移方法对数据进行细粒度的迁移,因此分布式图数据库可以显著地提高数据局部性,从而显著地加速查询操作;

2、采用键不动的迁移方法,键的位置是静态的,所以不需要元数据来记录键值对的位置,因此没有传统方法中的巨大的元数据开销;

3、数据迁移由目标端机器单方面就可以完成,不需要多台机器的同步操作,因此迁移十分灵活。即当工作集发生变化时,数据迁移可以立马调整数据的划分以适应新的工作集,从而提升局部性与系统性能;

4、数据迁移中对位置信息的修改是原子性的,因此在数据迁移时,键值对并发的读写操作是一致的。即该数据迁移不会干扰图数据库中对数据的查询、插入等操作。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为本发明的工作流程图;

图2为本发明的硬件结构示意图。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。

如图1所示,本实施例提供的一种面向分布式图数据库的数据动态迁移方法,只把键值对中的值在不同机器间动态迁移。下面结合图1对本发明的分离式数据动态迁移方法步骤进行详细描述:

在步骤401中,目标端通过计算得到键的位置,再通过rdma(远程直接内存访问,remotedirectmemoryaccess)读操作(one-sidedread)读取并查找到键确切的位置,然后读取键对应的值的位置信息。值得注意的是键所在的机器不一定是起始端。

在步骤402中,目标端根据步骤401中得到的位置信息中的值的大小,在本地分配不小于这个大小的内存空间。

在步骤403中,目标端根据步骤401中得到的位置信息,通过rdma读操作将起始端内存中的值拷贝到上一步分配的内存中。

在步骤404中,目标端通过rdma比较交换操作(compare-and-swap)原子性的更新键对应的值的位置信息。同401一样,键所在的机器不一定是起始端,而需要通过计算得出的。比较交换操作具体使用的参数是步骤401中得到的位置信息,步骤402中分配的内存对应的位置信息。如果比较交换操作成功,则进行步骤405;如果失败,则进行步骤407。比较交换指令限制了位置信息至多只能是64比特。这可以通过将未迁移过的值的位置信息与迁移过的值的位置信息分别编码实现。

在步骤405中,目标端通过rdma写操作(one-sidedwrite),修改起始端中值的头信息,将旧的值标记为失效。对应的,系统中键值对的读操作时需要检查值是否有效。

在步骤406中,目标端通过rdma写操作,在起始端标记步骤401中得到的位置信息。该步骤的目的是通知起始端需要回收旧的值的内存空间。对应的,系统中每台机器,作为起始端,会检查并回收内存空间。

在步骤407中,目标端回收步骤402中分配的内存,并跳转到步骤401,重新尝试迁移数据。

除了上述数据迁移过程,系统中数据读写操作的过程有相应的调整。接下来,对数据读写操作过程作进一步说明。

读键值对时,当读到值时,需要检查值的头信息,只有当值有效时读操作才完成;否则,重新读取位置信息,再读取值。

写键值对的值时,使用rdma的比较交换操作对值的位置信息进行更新。与步骤404相似,如果比较交换操作成功,则写操作成功;如果失败,则将写操作转发给值当前所在的机器。

如图2所示,本发明是在一个计算机集群中部署的。每台机器都装载了支持rdma网络特性的网卡,并通过rdma的网线连接到一个支持rdma网络特性的网络交换机上。每台计算机既可以是上述的目标端也可以是起始端。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1