7.3.6 数据迁移

目录是Spanner中对数据分区、复制和迁移的基本单位,用户可以指定一个目录有多少个副本,分别存放在哪些机房中,例如将用户的目录存放在这个用户所在地区附近的几个机房中。

一个Paxos组包含多个目录,目录可以在Paxos组之间移动。Spanner移动一个目录一般出于以下几种考虑:

●某个Paxos组的负载太大,需要切分;

●将数据移动到离用户更近的地方,减少访问延时;

●把经常一起访问的目录放进同一个Paxos组。

移动目录的操作在后台进行,不影响前台的客户端读写操作。一般来说,移动一个50MB的目录大约只需要几秒钟时间。实现时,首先将目录的实际数据移动到指定位置,然后再用一个原子操作更新元数据,从而完成整个移动过程。