【问题标题】:Cross-Region replication for Titan backed by DynamoDB由 DynamoDB 支持的 Titan 跨区域复制
【发布时间】:2017-07-20 04:08:00
【问题描述】:

我正在研究如何复制由 DynamoDB 支持的 Titan 1.0.0 数据库。 DynamoDB 的正常跨区域复制可以通过 DynamoDB Streams 和 Lambda 完成,所以我想对启动时生成的 Titan 表做同样的事情。

我所做的逐步过程:

  1. 在 NA 堆栈上启动 Gremlin 服务器
  2. 将从 Titan 及其数据生成的所有 dynamoDB 表复制到欧盟地区的 dynamoDB。
  3. 在将所有表/数据从 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 是彼此的精确副本。

问题

  1. Titan 1.0.0 是否在其表中存储区域特定信息?
  2. 有其他人尝试过 Titan 的跨区域复制吗?

似乎为 Titan 执行跨区域复制的唯一方法是在服务代码级别,而不是通过 dynamoDB Streams + Lambda 的内置功能。

【问题讨论】:

    标签: amazon-dynamodb database-replication titan


    【解决方案1】:
    1. edgestore 存储所有顶点、顶点属性和边及其属性。 graphindex 是存储所有顶点和边属性的复合索引的地方。这些索引仅支持相等查找。 systemlog 是 Titan 的系统日志,记录架构更改等内容。 txlog 是事务日志,您可以选择让 Titan 在向 edgestore 提交工作之前写入该日志。 titan_ids 在 Titan 服务器启动时存储分配给 Titan 服务器的每个 UNIQUE_MACHINE_ID 的 id 范围租约。最后,system_properties 存储图形模式(属性类型、多重性、索引等)等内容。
    2. 我从未真正实施过 Titan 跨区域复制解决方案,尽管我知道这是可能的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-16
      相关资源
      最近更新 更多