写点什么

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

评论

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

全域释放活力,增长质效兼收——2025年“双11”大促第一周期观察

易观分析

数字经济 双11 消费 周期观察

5 倍性能优于开源版,火山 Milvus 集成 DiskANN+RaBitQ

北京中暄互动广告传媒有限公司

云服务模式进化论:企业云战略的致命误区,从IaaS到FaaS的死亡之旅!

六边形架构

云计算 IaaS PaaS SaaS Faas

AI智能体 - 反思模式

Hernon AI

AI开发 AI 智能体 AI应用开发 AI开发框架

springboot整合redis五种数据结构API

刘大猫

人工智能 redis 云计算 算法 物联网

一个基于 .NET 8 + DDD 搭建的模块化微服务框架

追逐时光者

.net

网站减碳优化指南:最小化环境影响的实用策略

qife122

网站优化 可持续发展

HarmonyOS preview 预览文件 Kit 的入门讲解

万少

HarmonyOS HarmonyOS NEXT

Vibe Coding 实战!花了两天时间,让 AI 写了一个富文本渲染引擎!

非专业程序员Ping

swift ios 开发 vibe coding vibecoding Claude Code

低代码报表设计全流程:从新建到菜单发布,多版本 + 导入导出一次搞定

引迈信息

AI 与我的边界

田威AI

AI

电商大促核心测试场景清单

优测云服务平台

接口测试 #性能测试 电商节

全球可观测厂商怎么选?2025年可观测性平台深度分析

博睿数据

智能运维 可观测 #运维

你的代码正在腐烂!你的团队正走在死亡螺旋上:技术债务积累的5个危险信号!

六边形架构

自动化 代码规范 技术债务 系统优化 系统重构

从“实时分账”到“智能问数”:汇付天下以“Data Agent”重塑支付业务决策效率

科技新消息

上海伙伴+华为坤灵,靠什么把申城中小企业智能化做成好生意?

脑极体

AI

微软MS17-012安全更新详解:六大Windows漏洞修复指南

qife122

网络安全 Windows安全

汽车与机器人产业加速融合,聚焦技术同源共探协同新路径

科技经济

中文语音识别,“讯飞系”对比“苹果系”的胜负手

新消费日报

如何构建可信智能 Data Agent?推荐 Aloudata Agent 分析决策智能体

Aloudata

数据分析 ChatBI 智能问数 dataagent

论文解读 - 大型多模态模型中现实世界个性化基准测试

合合技术团队

人工智能 大数据 算法

JAVA Heap Dump 采集最佳实践

观测云

Java

BOE(京东方)荣获第四届“纪念彼得·德鲁克中国管理奖” 创新管理模式获权威认可

爱极客侠

华为云沃土代金券&Token服务,送你2.5亿免费Tokens

YG科技

Fabarta开发伙伴招募!技术兜底+场景实战+商业变现,AI应用领先者邀您共拓产业智能新蓝海

Fabarta

开发 智能体 招募

工业仪表 过程仪表经验总结(9)

万里无云万里天

工业 工厂运维

工业管理 项目管理经验总结(31)

万里无云万里天

项目管理 工业 工厂管理

87%的商务邮件都在浪费时间:一条AI指令如何重塑企业沟通效率

HuiZhuDev

效率工具 数字化转型 企业管理 AI指令 商务沟通

IDC中国集成平台技术评估报告,谷云科技iPaaS平台获八项满分

谷云科技RestCloud

IDC 集成平台 ipaas

Agentic AI基础设施实践经验系列(七):可观测性在Agent应用的挑战与实践

亚马逊云科技 (Amazon Web Services)

人工智能

绿电直连平台层核心能力:数据中台构建与算力协同技术

西格电力

绿电直连 可再生能源发电 低碳经济 能源解决方案 低碳节能

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