写点什么

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:001039

评论

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

鸿蒙支付安全实战:Payment Kit构建文档服务可信交易体系

huafushutong

启信宝联合六大数交所共同编制,《企业数据治理实践白皮书》发布

合合技术团队

人工智能 算法 大数据‘’

通义灵码用户说 | 编程智能体+MCP加持,秒查附近蜜雪冰城

阿里云云效

通义灵码 Qwen

IDM使用教程之如何下载网页中的视频资源,电脑网页上的视频怎么保存到本地

阿拉灯神丁

视频下载器 内容嗅探 IDM 网页视频下载工具 如何下载网页视频

鸿蒙PDF引擎实战:PDF Kit实现亿级文档极速渲染

huafushutong

FORCE 开发者论坛 | 火山引擎发布多款 Agent 开发工具

火山引擎开发者社区

火山引擎

鸿蒙实时协同实战:Live View Kit打造沉浸式文档批注系统

huafushutong

HarmonyOS SDK应用服务

鸿蒙地理围栏实战:Location Kit实现智能文档地理围栏

huafushutong

HarmonyOS SDK应用服务

鸿蒙地理可视化实战:Map Kit实现智能文档位置洞察

huafushutong

HarmonyOS SDK应用服务

如何系统化搭建超智融合算力架构 | 龙蜥大讲堂

OpenAnolis小助手

操作系统 龙蜥社区 龙蜥大讲堂 超智融合算力

鸿蒙文档预检实战:Preview Kit实现合同风险智能预判

huafushutong

鸿蒙文档解析实战:Reader Kit实现合同智能解构

huafushutong

鸿蒙安全共享实战:Share Kit实现文档一键安全分发

huafushutong

鸿蒙互动化实战:Game Service Kit重塑文档学习体验

huafushutong

HarmonyOS NEXT

语音生成+情感复刻,Cosyvoice2.0 极简云端部署

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

鸿蒙智能催办实战:Push Kit实现文档流程零延迟推进

huafushutong

鸿蒙场景融合实战:Scenario Fusion Kit实现跨文档智能关联

huafushutong

谷云科技 iPaaS 成功入选Gartner 2025 API 管理市场指南

谷云科技RestCloud

AI API网关 集成平台 ipaas API 管理

通义灵码用户说 | 编程智能体+MCP加持,秒查附近蜜雪冰城

阿里巴巴云原生

通义灵码

鸿蒙健康守护实战:Health Service Kit实现智能文档工作监护

huafushutong

HarmonyOS SDK应用服务

ITSM 与自动化联动,让运维工作轻松翻倍

智象科技

自动化 ITSM 自动化运维 一体化运维

什么是OA 系统?OA 系统要具备什么样的功能?

积木链小链

数字化转型 智能制造 OA系统

KubeEdge 1.21.0版本发布!节点任务框架全面升级!

华为云原生团队

云计算 容器 云原生

vRDMA 发布,助力云上 VPC 内高性能通信

火山引擎开发者社区

火山引擎

编程简单了,部署依旧很难|Karpathy 演讲的 5 点解读

阿里巴巴云原生

阿里云 云原生

超实用!SpringAI提示词的4种神级用法

电子尖叫食人鱼

数据库 前端

什么是链游,链游系统开发价格以及方案

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

鸿蒙智能文档治理实战:File Manager Service Kit实现企业级文件管理

huafushutong

HarmonyOS SDK应用服务

枫清科技受邀参加2025数据智能大会

Fabarta

人工智能 科技 数据智能大会

鸿蒙智能提醒实战:Notification Kit实现文档关键节点零遗漏

huafushutong

鸿蒙商业化实战:IAP Kit构建安全文档付费体系

huafushutong

HarmonyOS SDK应用服务

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