报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

Amazon Neptune – 完全托管的图形数据库服务

  • 2019-11-05
  • 本文字数:2755 字

    阅读完需:约 9 分钟

Amazon Neptune – 完全托管的图形数据库服务

在我们用来支持现代生活的所有数据结构和算法中,图形不断改变着世界。各企业不断产生和获取关系复杂的丰富数据。然而,开发人员仍然不得不在传统数据库中对这些复杂关系进行建模。这导致查询极为复杂,并且成本高昂,随着关系的增加,性能也会不断下降。我们希望能简化这些越来越复杂的新式数据集、关系和模式的处理。

欢迎 Amazon Neptune

今天,我们要发布 Amazon Neptune 有限预览版,这是一个快速可靠的图形数据库服务,可供客户轻松洞悉高度连接的数据集之间的关系。Amazon Neptune 的核心是专门构建的高性能图形数据库引擎,它进行了优化,可存储数十亿关系并将图形查询延迟减至毫秒级。Amazon Neptune 作为完全托管的数据库提供,让客户能够腾出手来集中精力开发其应用程序,而不用忙于执行枯燥的重复性操作,如维护、修补、备份和恢复。该服务支持快速故障转移、时间点恢复以及多可用区部署,从而实现高可用性。它支持多达 15 个只读副本,您可以将查询吞吐量扩展到每秒数十万个查询。Amazon Neptune 在 Amazon Virtual Private Cloud 内运行,因此您可以加密静态数据,可完全控制传输中数据和静态数据的完整性。



这项服务有很多有趣的功能,不过可能很多人还不熟悉图形数据库,因此我们首先介绍一下概念。

图形数据库

图形数据库用于存储顶点 (节点) 和边缘 (关系或连接),这两种元素都可以键值对的形式存储其属性。对于连接的上下文关系驱动数据,图形数据库很有用。一些典型的应用包括社交媒体网络、推荐引擎、驾车路线、物流、诊断、欺诈检测以及基因测序。


Amazon Neptune 支持两种开放式图形描述和查询标准:


  • 使用 Gremlin 查询的 Apache TinkerPop3 样式属性图。Gremlin 是一种图形遍历语言,在这种语言中,查询是由沿着边缘到节点的离散步骤组成的遍历。通过用于 TinkerPop 的现有工具和客户端,可以快速开始使用 Neptune。

  • 使用 SPARQL 查询的资源描述框架 (RDF)。SPARQL 是一种声明式语言,它基于 W3C 的 Semantic Web 标准。它遵从“主->谓->宾”模型。具体地说,Neptune 支持以下标准:RDF 1.1、SPARQL Query 1.1、SPARQL Update 1.1 和 SPARQL Protocol 1.1。


如果现有应用程序可使用 SPARQL 或 TinkerPop,则只需更新这些应用程序所连接的终端节点,就可以开始使用 Neptune。


我们介绍一下如何启动 Amazon Neptune。

启动 Amazon Neptune

首先导航到 Neptune 控制台,然后单击“Launch Neptune”打开启动向导。



在第一个屏幕上,只需命名实例和选择实例类型。接下来配置高级选项。如果您以前启动过基于实例的 AWS 数据库服务,如 Amazon Relational Database Service (RDS)Amazon ElastiCache,现在的很多步骤您可能会觉得很熟悉。



Amazon Neptune 在 VPC 内安全运行,可以创建它自己的安全组,您可以添加 EC2 实例以便访问。



现在,我们可以配置其他一些选项,如参数组、端口和群集名称。



在下一个屏幕上,我们可以启用基于 KMS 的静态加密、故障转移优先级和备份保留时间。



与 RDS 类似,数据库维护可由该服务处理。


实例配置完毕后,您可以在群集的“Details”页面上找到连接终端节点。在我这个例子中是 triton.cae1ofmxxhy7.us-east-1.rds.amazonaws.com


使用 Amazon Neptune

如上所述,Amazon Neptune 可以使用两个不同的查询引擎。


要连接到 Gremlin 终端节点,可通过 /gremlin 使用终端节点执行某些操作,如:


Bash


curl -X POST -d '{"gremlin":"g.V()"}' https://your-neptune-endpoint:8182/gremlin
复制代码


同样,可以通过 /sparql 连接到 SPARQL 终端节点


Bash


curl -G https://your-neptune-endpoint:8182/sparql --data-urlencode 'query=select ?s ?p ?o where {?s ?p ?o}'
复制代码


我们需要先填充数据库,然后才能查询数据。假设我们对 AWS re:Invent 建模,使用批量加载 API 插入一些数据。


对于属性图,Neptune 支持使用存储在 Amazon Simple Storage Service (S3) 中的 CSV 来加载节点、节点属性、边缘和边缘属性。


典型的顶点 CSV 看起来是这样的:


~label,name,email,title,~idAttendee,George Harrison,george@thebeatles.com,Lead Guitarist,1Attendee,John Lennon,john@thebeatles.com,Guitarist,2Attendee,Paul McCartney,paul@thebeatles.com,Lead Vocalist,3
复制代码


边缘 CSV 看起来是这样的:


~label,~from,~to ,~idattends,2,ARC307,attends22attends,3,SRV422,attends27
复制代码


现在将一个结构类似的 CSV 加载到 Neptune 中,运行如下代码:


Bash


curl -H 'Content-Type: application/json' \https://neptune-endpoint:8182/loader -d '{    "source": "s3://super-secret-reinvent-data/vertex.csv",    "format": "csv",    "region": "us-east-1",    "accessKey": "AKIATHESEARENOTREAL",    "secretKey": "ThEseARE+AlsoNotRea1K3YSl0l1234coVFefE12"  }'
复制代码


将返回:


Json


{    "status" : "200 OK",    "payload" : {        "loadId" : "2cafaa88-5cce-43c9-89cd-c1e68f4d0f53"    }}
复制代码


我使用该返回结果,查询加载状态: curl https://neptune-endpoint:8182/loader/2cafaa88-5cce-43c9-89cd-c1e68f4d0f53


Json


{    "status" : "200 OK",    "payload" : {        "feedCount" : [{"LOAD_COMPLETED" : 1}],        "overallStatus" : {            "fullUri" : "s3://super-secret-reinvent-data/stuff.csv",            "runNumber" : 1,            "retryNumber" : 0,            "status" : "LOAD_COMPLETED",            "totalTimeSpent" : 1,            "totalRecords" : 987,            "totalDuplicates" : 0,            "parsingErrors" : 0,            "datatypeMismatchErrors" : 0,            "insertErrors" : 0        }    }}
复制代码


对于此数据序列化格式,我对各边缘重复执行此加载过程。


对于 RDF,Neptune 支持四种序列化:Turtle、N-Triples、N-Quads 和 RDF/XML。我可以通过同一个加载 API 加载以上所有对象。


现在,我的数据库中已经有数据了,可以运行查询。我们用 Gremlin 以图形遍历形式编写查询。我是 Paul McCartney 的忠实粉丝,我需要查找他将举行的所有演唱会:


g.V().has("name","Paul McCartney").out("attends").id()


这样就定义了一个图形遍历,它查找属性“name”的值为“Paul McCartney”的所有节点 (只有一个!)。接下来,它从该节点沿所有类型为“attends”的边缘查找,获取结果节点的 ID。


==>ENT332==>SRV422==>DVC201==>GPSBUS216==>ENT323
复制代码


Paul 看起来很忙。


希望这个例子能让您简要了解图形数据库的功能。图形数据库为很多客户带来了各种全新可能,而 Amazon Neptune 让大规模存储和查询数据变得更简单。我很高兴看到我们的客户构建出精彩的新产品。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/amazon-neptune-a-fully-managed-graph-database-service/


2019-11-05 08:00887

评论

发布
暂无评论
发现更多内容

中国信通院正式启动视联网产业与技术研究工作

信通院IOMM数字化转型团队

中国信通院 视频行业 视联网

如何快速上手Visio?从入门到精通 | Visio替代软件,建议收藏!

彭宏豪95

效率工具 在线白板 架构图 绘图软件 Visio

一站式解决对接问题,让企业管理更轻松!

聚道云软件连接器

案例分享

一起畅玩!幻兽帕鲁服务器华为云搭建教程(Windows平台)

YG科技

演讲回顾 | 清晖资深讲师分析敏捷实践的最新趋势,帮助大型企业落地敏捷开发

龙智—DevSecOps解决方案

敏捷 Atlassian

追求成长还是追求“高薪”?

老张

个人成长 能力提升

媒体声音|PolarDB再升级:欢迎来到云数据库 x AI新时代

阿里云瑶池数据库

人工智能 数据库 云计算 阿里云 云原生

低代码开发视角下的大模型时代:探索“新思维”技术管理

不在线第一只蜗牛

人工智能 低代码 大模型 AI模型

独立站的客户支持体系:提高客户满意度的秘密武器

技术冰糖葫芦

API

解密三维CAD选择难题,谁是企业研发设计的「最佳拍档」?

ToB行业头条

软件测试/测试开发|给你剖析闭包与装饰器的魔力

霍格沃兹测试开发学社

测试开发高薪私教线下班手把手带你提升职业技能

霍格沃兹测试开发学社

中国信通院筹备启动“边缘算力网络推进计划”,招募首批成员单位

信通院IOMM数字化转型团队

边缘计算 边缘算力网络

如何降低微服务复杂度丨云栖大会微服务主题分享实录

阿里巴巴云原生

阿里云 微服务 云原生

WorkPlus开启高效沟通新时代,领先的IM工具之选

BeeWorks

构建端到端可观测全景丨云栖大会可观测分享实录

阿里巴巴云原生

阿里云 Serverless Kubernetes 云原生

🛠 Open Source Instant Messaging (IM) Project OpenIM Source Code

Geek_1ef48b

【第七在线】智能商品计划:重塑服装行业的供应链管理

第七在线

链路传播(Propagate)机制及使用场景

观测云

APM 链路

山寨币发展的崛起:随着比特币 ETF 重新定义市场动态,山寨币激增

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

Atlassian为Jira、Confluence引入AI新功能,进一步释放团队潜能

龙智—DevSecOps解决方案

AI Atlassian

ClickHouse分析效率翻倍提升,揭秘奇点云对归因分析场景的优化实践

奇点云

奇点云 clickhosue DataKun

WorkPlus打造高效协作的即时通讯工具,提升工作效率

BeeWorks

Amazon Neptune – 完全托管的图形数据库服务_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章