【发布时间】:2017-07-20 04:08:00
【问题描述】:
我正在研究如何复制由 DynamoDB 支持的 Titan 1.0.0 数据库。 DynamoDB 的正常跨区域复制可以通过 DynamoDB Streams 和 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)
请记住,复制部分很好。 NA 和 EU DynamoDB 是彼此的精确副本。
问题
- Titan 1.0.0 是否在其表中存储区域特定信息?
- 有其他人尝试过 Titan 的跨区域复制吗?
似乎为 Titan 执行跨区域复制的唯一方法是在服务代码级别,而不是通过 dynamoDB Streams + Lambda 的内置功能。
【问题讨论】:
标签: amazon-dynamodb database-replication titan