图表数据库 以精美而又有效的形式呈现条目(通常称为顶点或节点)和条目之间的关系(用线条连接)。下面是一个图表的简单举例:
Bill和 Candace有一个女儿,名叫Janet,Janet有个儿子,名叫Bob。这种关系使Candace成为Bob的外祖母,而Bill成为Bob的外祖父。
一旦一个图表构建好之后,人们就可以通过遍历两个顶点之间的线条对它进行处理。在上面的图表中,我们可以从Bill到Janet,再从Janet到Bob。图表可用来对社交网络(朋友网和类似网络),商业关系(公司,员工,合伙人,供应商和客户),依赖关系等进行建模。顶点和线条都可以被定型;一些顶点可以使我们的举例中的人们,其他顶点可以是各种地方。类似地,一些线条可能表示家庭关系(正如上面的例子中展示的),其他的线条可能表示一些爱好。每一个图表数据库都允许附加的信息被附加到每一个顶点和每一个线条中,通常是以名称-值组对的形式。
Titan 是一个可伸缩的图表数据库,它被优化后,用来存储和查询包含成千上万亿顶点和线条的图表。它是事务型的,可以支持成千上万用户的同时访问。
适用于Titan的DynamoDB存储后端
Titan的可插拔数据存储层已经支持若干种非关系型数据库和密钥值存储。这使你能够选择后端来提供你的应用所需要的性能和特性,同时给你充分的自由,在对应用代码进行最小改动的情况下从一个后端切换到另一个后端。
现在我们正在努力使适用于 Titan 的 DynamoDB 存储后端 可用。在 Amazon DynamoDB 中存储Titan图表能够伸缩处理大量的图表,而不用担心创建,运行或维护自己的数据库集群。因为DynamoDB可以伸缩到任意大小,并提供很高的数据可用性和可预测的性能,你可以聚焦于应用,而不是图表存储和处理基础设施。你也可以在笔记本电脑上运行Titan和 DynamoDB Local ,用于开发和测试。
存储后端要与Titan 0.4.4和0.5.4版本共同使用。Titan的这两个版本支持快速遍历,定向和定型的线条,和存储的各种关系。较新的版本也新增支持顶点区分,顶点标签和用户定义的交易日志。后端是基于客户端的;我们没有对DynamoDB进行任何修改,DynamoDB就能支持该后端。你只是在使用DynamoDB作为存储Titan图表的一种有效方式。
Titan 0.4.4版本与 Tinkerpop 堆栈的2.4版本兼容;Titan 0.5.4版本与堆栈的2.5版本兼容。Tinkerpop是一批工具和算法,这些工具和算法可以在图表处理和分析选项方面为你提供更多帮助。
既然我正在谈论图表,我应该以图表的形式阐明我所谈论过的所有项目!下面就是你想要的:
我的同事 Alex Patrikalakis 创建了下面的魔法脚本。它使用Titan和DynamoDB复制了上面的图表:
conf = new BaseConfiguration() conf.setProperty("storage.backend", "com.amazon.titan.diskstorage.dynamodb.DynamoDBStoreManager") conf.setProperty("storage.dynamodb.client.endpoint", "http://localhost:4567") g = TitanFactory.open(conf) titan = g.addVertex(null, [name:"Titan"]) blueprints = g.addVertex(null, [name:"Blueprints"]) pipes = g.addVertex(null, [name:"Pipes"]) gremlin = g.addVertex(null, [name:"Gremlin"]) frames = g.addVertex(null, [name:"Frames"]) furnace = g.addVertex(null, [name:"Furnace"]) rexster = g.addVertex(null, [name:"Rexster"]) DynamoDBStorageBackend = g.addVertex(null, [name:"DynamoDB Storage Backend for Titan"]) DynamoDBLocal = g.addVertex(null, [name:"DynamoDB Local"]) DynamoDB = g.addVertex(null, [name:"DynamoDB"]) g.addEdge(titan, blueprints, "implements") g.addEdge(pipes, blueprints, "builds-on") g.addEdge(gremlin, blueprints, "builds-on") g.addEdge(frames, blueprints, "builds-on") g.addEdge(furnace, blueprints, "builds-on") g.addEdge(rexster, blueprints, "builds-on") g.addEdge(titan, DynamoDBStorageBackend, "backed-by") g.addEdge(DynamoDBStorageBackend, DynamoDBLocal, "connects-to") g.addEdge(DynamoDBStorageBackend, DynamoDB, "connects-to") g.commit() Getting Started入门
DynamoDB Storage Backend for Titan (适用于Titan的DynamoDB存储后端)在GitHub作为一个Maven项目可用。它运行在Windows,OSX和Linux操作系统上,需要使用Maven和Java 1.7(或更新版本)。 Amazon DynamoDB Storage Backend for Titan 包含安装说明和一个举例,该举例创造性地利用了 Marvel Universe Social Graph 公共数据集。我们也已创建了一个 CloudFormation模板 ,该模板将会启动一个EC2实例,并且该实例已经安装了Titan/Rexster堆栈和适用于Titan的DynamoDB存储后端,并且堆栈和存储后端是可以即刻使用的。
原文链接 : https://aws.amazon.com/cn/blogs/aws/new-store-and-process-graph-data-using-the-dynamodb-storage-backend-for-titan/
( 翻译/吕冬梅 责编/王鑫贺 )
订阅“AWS中文技术社区”微信公众号,实时掌握AWS技术及产品消息!
AWS中文技术社区为广大开发者提供了一个Amazon Web Service技术交流平台 ,推送AWS最新资讯、技术视频、技术文档、精彩技术博文等相关精彩内容,更有AWS社区专家与您直接沟通交流!快加入AWS中文技术社区,更快更好的了解AWS云计算技术。