写点什么

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

评论

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

2023-05-20:go语言的slice和rust语言的Vec的扩容流程是什么?

福大大架构师每日一题

golang rust 福大大

吃透阿里2023版Java性能优化小册后,我让公司系统性能提升了200%

做梦都在改BUG

Java 性能优化 性能调优

求爷爷告奶奶,阿里大佬才甩出这份Spark+Hadoop+中台实战pdf

程序知音

大数据 hadoop spark 后端技术

专精特新 ︱ 腾讯云 CODING 助力消费电子类企业高速发展期的研运一体化

CODING DevOps

双模齐下,提质增效:CODING 携手知微共创 BizDevOps 体系新篇章

CODING DevOps

Python潮流周刊#2:Rust 让 Python 再次伟大

Python猫

Python

小白白也能学会的 PyQt 教程 —— 图像类及图像相关基础类介绍

繁依Fanyi

Python PyQt

从源码分析可重入锁(ReentrantLock)

做梦都在改BUG

Java 源码 多线程 ReentrantLock

硬核!阿里出品2023版Java架构师面试指南,涵盖Java所有核心技能

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

美团二面:聊聊ConcurrentHashMap的存储流程

Java你猿哥

Java 源码 ssm ConcurrentHashMap 红黑树

Cloud Studio 高阶玩家:强大的 YAML 模板

CODING DevOps

Turbo Boost Switcher Pro for mac(cpu温度监测工具) 2.10.2

真大的脸盆

Mac Mac 软件 CPU温度监测工具

由斯坦福、Nautilus Chain等联合主办的 Hackathon 活动,现已接受报名

西柚子

由斯坦福、Nautilus Chain等联合主办的 Hackathon 活动,现已接受报名

鳄鱼视界

Midjourney|文心一格 Prompt:完整参数列表、风格汇总、文生图词典合集

汀丶人工智能

人工智能 AI绘画 MidJourney 文生图 prompt learning

低代码实现探索(五十八)低代码平台

零道云-混合式低代码平台

5个编写高效Makefile文件的最佳实践

小万哥

c++ Linux 程序员 面试 后端

深入理解 ThreadLocal:原理及源码解读

Java你猿哥

Java 源码 多线程 ssm ThreadLocal

太猛了!Github大佬那白嫖的分布式进阶宝典,啃完感觉能吊锤面试官

Java你猿哥

Java 架构 软件开发 ssm 架构设计

如何让 300 万程序员爱上 CODING?

CODING DevOps

Django笔记三十三之缓存操作

Hunter熊

Python redis django 缓存

文心一言 VS 讯飞星火 VS chatgpt (19)-- go语言的slice和rust语言的Vec的扩容流程是什么?

福大大架构师每日一题

福大大 文心一言 讯飞星火

轻松建模、编辑、分析尽在Rhino 7中文激活版~

真大的脸盆

Mac 3D Mac 软件 建模软件 3d建模

HashMap 底层是如何实现的?

做梦都在改BUG

Java hashmap

熬了一个月肝出这份32W字Java面试手册,在Github标星31K+

程序知音

Java java面试 后端技术 Java八股文 Java面试题

AIGC背后的技术分析 | 机器学习中的卷积神经网络

TiAmo

卷积神经网络 AIGC

斯坦福、Nautilus Chain等联合主办的 Hackathon 活动,现已接受报名

股市老人

使用Go语言实现工厂模式的三种方式

Jack

Midjourney|文心一格prompt教程[进阶篇]:Midjourney Prompt 高级参数、各版本差异、官方提供常见问题

汀丶人工智能

人工智能 AI绘画 MidJourney 文生图 prompt learning

UserDAO(UWT)会是WEB3.0中新的宠儿吗?

币离海

Web3.0 UserDAO UWT

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