Amazon DynamoDB
开发人员指南 (API Version 2012-08-10)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

适用于 Titan 的 Amazon DynamoDB 存储后端

适用于 Titan 的 DynamoDB 存储后端 程序包是适用于基于 Amazon DynamoDB 实施的 Titan 图形数据库的存储后端。Titan 是针对存储和查询图形进行优化的可扩展图形数据库。适用于 Titan 的 DynamoDB 存储后端 程序包在 GitHub 上提供。Titan:分布式图形数据库 也在 GitHub 上提供:Titan 版本 0.4.4Titan 版本 0.5.4Titan 版本 1.0.0

以下部分将介绍图形数据库、图形数据库的一些使用案例,以及如何结合使用 DynamoDB 存储后端 与 Titan:分布式图形数据库。

使用图形数据库

图形数据库是用于存储顶点以及连接这些顶点的指向性边缘的存储区。这些顶点和边缘都具有可存储为键值对的属性。

图形数据库使用邻接列表或矩阵来存储边缘,因此能够实现简单遍历。图形数据库中的图形可依据具体的边缘类型进行遍历,或者也可对整个图形进行遍历。

图形数据库可以通过使用操作、所有权和父项关系等来表示实体之间的关联关系。如果实体间的连接或关系是您正在尝试建模的数据核心,那就适合使用图形数据库。因此,图形数据库对于建模和查询社交网络、业务关系、依赖关系、货物移动等类似项目非常有用。

您可以使用图形数据库中的边缘来显示实体(也称顶点或节点)之间的类型化关系。边缘可以描述父项-子项关系、操作、产品推荐和购买等。关系(或边缘)是两个顶点之间的连接,始终具有开始节点、结束节点、类型和方向。请务必注意,图形数据库中不允许存在无效链接。所有链接均用于描述两个节点之间的关系。删除节点即会删除其所有事件关系(即,在要删除的节点中开始或结束的关系)。

以下是社交网络图形的示例。

社交网络图形示例。

此示例将一组好友及其爱好建模成图形。

注意

每个边缘都有方向(用箭头标示),但是边缘信息仍会同时存储在“进”节点和“出”节点中。

此图形的简单遍历可以告知您 Justin 朋友们的爱好。

带 适用于 Titan 的 DynamoDB 存储后端 的 Titan

Titan 具有插件架构,这使其能够使用众多图形存储后端之一。适用于 Titan 的 DynamoDB 存储后端 就是此类插件中的一个。下表将 DynamoDB 存储后端 添加到 Titan 存储后端概览页面上的奇偶校验矩阵中。

存储后端比较

名称 存储后端配置值 一致性 可用性 可扩展性 复制 持久性
DynamoDB com.amazon.titan.diskstorage.dynamodb.DynamoDBStoreManager 最终一致性,托管 高可用性,托管 线性可扩展性,托管 是,托管 SSD,托管
Cassandra cassandra 最终一致性 高可用性 线性可扩展性 磁盘
HBase hbase 顶点一致性 故障转移恢复 线性可扩展性 磁盘
BerkeleyDB berkeleyje ACID 单点故障 单个设备 可用的 HA 模式 磁盘
Persistit persistit ACID 单点故障 单个设备 磁盘
InMemory inmemory ACID 单点故障 单个设备

使用 DynamoDB 进行图形存储时,您可以获得高度可扩展的分布式图形数据库,并且无需管理数据库集群。DynamoDB 不仅可以扩展为任意大小,提供快速、可预测的性能,而且高度可用,能够在一个 AWS 区域中的三个可用区自动复制数据。此外,它还通过给 Titan 图表加上前缀,在单个账户和区域中提供 AWS 托管身份验证和多个图形。

Titan 功能

适用于 Titan 的 DynamoDB 存储后端 插件支持 Titan 版本 0.4.4、0.5.4 和 1.0.0。

我们建议您使用 适用于 Titan 的 DynamoDB 存储后端 1.0.0,但 Titan 的插件版本 0.4.4 和 0.5.4 仍可用。

Titan 提供以下内容:

  • 特定边缘类型的快速遍历和随机遍历

  • 类型化指向性边缘

  • 存储关系

Titan 0.4.4 通过实施 Blueprints API 为 TinkerPop 2.4 堆栈提供支持。TinkerPop 包括以下组件:

  • Rexster 图形服务器

  • Furnace 图形算法

  • Frames 对象/图形映射器

  • Gremlin 遍历语言

  • Pipes 数据流

  • Blueprints 通用图形 API

有关 TinkerPop 堆栈(包括 Gremlin、Rexster、Furnace、Frames 和 Blueprints)的信息,请转至 TinkerPop 首页

Titan 版本 0.5.4 实施了一些重要增改:

  • 对 TinkerPop 2.5 堆栈的支持

  • 对顶点分区的支持

  • 对顶点标签的支持

  • 用户定义的事务日志

  • 两个新系统事务日志表:txlogsystemlog

  • edgeindexvertexindex 将合并到一个 graphindex 表中

Titan 版本 0.5.4 的功能是 Titan 版本 0.4.4 功能的超集。有关 Titan 变更的更多信息,请参阅 Titan 0.5.4 发行说明

Titan 版本 1.0.0 实施了以下增改:

  • 对 TinkerPop 3.0 堆栈的支持。

  • 适用于 TinkerPop 的 Titan 特定遍历策略。

  • 查询执行引擎优化。

Titan 版本 1.0.0 的功能是 Titan 版本 0.5.4 功能的超集。有关 Titan 变更的更多信息,请参阅 Titan 1.0 发行说明

有关 Titan 功能的更多信息,请转至 Titan 文档页面。

与其他 Titan 存储后端一样,您不仅可以使用 Java 原生 API 或 Blueprints API,还能使用 Gremlin shell 和 Groovy 语言来处理 Titan 图形。

下表比较了 Titan 存储后端中的可用功能。

功能名称 dynamodb cassandra berkeleyje hbase persistit(仅限版本 0.4.4) inmemory(版本 0.5.4 和 1.0.0)
batchMutation
distributed
keyConsistent 取决于配置 取决于配置
keyOrdered 取决于分区器
localKeyPartition 取决于分区器
locking
multiQuery 是,除了 cassandra 嵌入式查询外
orderedScan 取决于分区器
transactional
unorderedScan 取决于分区器
optimisticLocking
cellTTL(仅限版本 0.5.4)
storeTTL(仅限版本 0.5.4)
preferredTimestamps(仅限版本 0.5.4) MILLI
timestamps(仅限版本 0.5.4)
visibility(仅限版本 0.5.4)

Cassandra 分区器
分区器 随机 字节顺序

keyOrdered / localKeyPartition

orderedScan
unorderedScan

下一步