Amazon dynamodb DynamoDB支持的Titan跨区域复制

Amazon dynamodb DynamoDB支持的Titan跨区域复制,amazon-dynamodb,database-replication,titan,Amazon Dynamodb,Database Replication,Titan,我正在研究如何复制由DynamoDB支持的Titan 1.0.0数据库。DynamoDB的正常跨区域复制可以通过DynamoDB流和Lambda完成,因此我想对启动时生成的Titan表执行相同的操作 我所做的一步一步的过程: 启动NA堆栈上的Gremlin服务器 将从Titan及其数据生成的所有dynamoDB表复制到欧盟地区的dynamoDB 在将所有表/数据从NA复制到EU后,尝试在EU堆栈上启动Gremlin服务器 当我尝试在欧盟地区启动新的Gremlin服务器时出现此错误: java.l

我正在研究如何复制由DynamoDB支持的Titan 1.0.0数据库。DynamoDB的正常跨区域复制可以通过DynamoDB流和Lambda完成,因此我想对启动时生成的Titan表执行相同的操作

我所做的一步一步的过程:

  • 启动NA堆栈上的Gremlin服务器
  • 将从Titan及其数据生成的所有dynamoDB表复制到欧盟地区的dynamoDB
  • 在将所有表/数据从NA复制到EU后,尝试在EU堆栈上启动Gremlin服务器
  • 当我尝试在欧盟地区启动新的Gremlin服务器时出现此错误:

    java.lang.ArrayIndexOutOfBoundsException: Required size [1] exceeds actual remaining size [0]
        at com.thinkaurelius.titan.diskstorage.util.StaticArrayBuffer.require(StaticArrayBuffer.java:80)
        at com.thinkaurelius.titan.diskstorage.util.StaticArrayBuffer.getByte(StaticArrayBuffer.java:156)
        at com.thinkaurelius.titan.diskstorage.util.ReadArrayBuffer.getByte(ReadArrayBuffer.java:67)
        at com.thinkaurelius.titan.graphdb.database.idhandling.VariableLong.readUnsigned(VariableLong.java:34)
        at com.thinkaurelius.titan.graphdb.database.idhandling.VariableLong.readPositive(VariableLong.java:80)
        at com.thinkaurelius.titan.graphdb.database.serialize.StandardSerializer.readClassAndObject(StandardSerializer.java:265)
        at com.thinkaurelius.titan.diskstorage.configuration.backend.KCVSConfiguration.staticBuffer2Object(KCVSConfiguration.java:250)
        at com.thinkaurelius.titan.diskstorage.configuration.backend.KCVSConfiguration.get(KCVSConfiguration.java:102)
        at com.thinkaurelius.titan.diskstorage.configuration.BasicConfiguration.isFrozen(BasicConfiguration.java:93)
        at com.thinkaurelius.titan.graphdb.configuration.GraphDatabaseConfiguration.<init>(GraphDatabaseConfiguration.java:1338)
    
    java.lang.ArrayIndexOutOfBoundsException:所需大小[1]超过实际剩余大小[0]
    位于com.thinkaurelius.titan.diskstorage.util.StaticArrayBuffer.require(StaticArrayBuffer.java:80)
    位于com.thinkaurelius.titan.diskstorage.util.StaticArrayBuffer.getByte(StaticArrayBuffer.java:156)
    位于com.thinkaurelius.titan.diskstorage.util.ReadArrayBuffer.getByte(ReadArrayBuffer.java:67)
    位于com.thinkaurelius.titan.graphdb.database.idhandling.VariableLong.readUnsigned(VariableLong.java:34)
    位于com.thinkaurelius.titan.graphdb.database.idhandling.VariableLong.readPositive(VariableLong.java:80)
    位于com.thinkaurelius.titan.graphdb.database.serialize.StandardSerializer.readClassAndObject(StandardSerializer.java:265)
    位于com.thinkaurelius.titan.diskstorage.configuration.backend.KCVSConfiguration.StaticBuffer2OObject(KCVSConfiguration.java:250)
    位于com.thinkaurelius.titan.diskstorage.configuration.backend.KCVSConfiguration.get(KCVSConfiguration.java:102)
    位于com.thinkaurelius.titan.diskstorage.configuration.BasicConfiguration.isfronged(BasicConfiguration.java:93)
    位于com.thinkaurelius.titan.graphdb.configuration.GraphDatabaseConfiguration。(GraphDatabaseConfiguration.java:1338)
    
    请记住,复制部分没有问题。NA和EU DynamoDB是彼此的精确复制品

    问题
  • Titan 1.0.0是否在其表中存储特定于区域的信息
  • 还有人尝试过Titan的跨区域复制吗
  • 似乎为Titan执行跨区域复制的唯一方法是在服务代码级别,而不是使用dynamoDB Streams+Lambda的内置功能

  • edgestore
    存储所有顶点、顶点属性和边及其属性
    graphindex
    是存储顶点和边属性的所有复合索引的位置。这些索引仅支持相等查找
    systemlog
    是Titan的系统日志,记录模式更改等内容
    txlog
    是事务日志,在将工作提交到
    edgestore
    之前,您可以选择让Titan写入该日志
    titan_id
    存储启动时分配给titan服务器的每个唯一_机器_id的id范围租约。最后,
    system\u properties
    存储图形模式(属性类型、多重性、索引等)之类的内容
  • 我从未实际实施过Titan跨区域复制解决方案,尽管我知道这是可能的
  • edgestore
    存储所有顶点、顶点属性和边及其属性
    graphindex
    是存储顶点和边属性的所有复合索引的位置。这些索引仅支持相等查找
    systemlog
    是Titan的系统日志,记录模式更改等内容
    txlog
    是事务日志,在将工作提交到
    edgestore
    之前,您可以选择让Titan写入该日志
    titan_id
    存储启动时分配给titan服务器的每个唯一_机器_id的id范围租约。最后,
    system\u properties
    存储图形模式(属性类型、多重性、索引等)之类的内容
  • 我从未实际实施过Titan跨区域复制解决方案,尽管我知道这是可能的