写点什么

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

评论

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

兆骑科创创新创业服务平台,海内外高层次人才引进,赛事承办

兆骑科创凤阁

网络组件axios可以在OpenHarmony上使用了

OpenHarmony开发者

Open Harmony

移动端App自动化之触屏操作自动化

霍格沃兹测试开发学社

最常见的两个Jenkins问题,以及解决方法

龙智—DevSecOps解决方案

ci CI/CD CI/CD管道

你还有什么问题吗?

AlwaysBeta

程序员 面试

BulkProcessor异步批处理组件使用

大河

elasticsearch bboss bulkprocess

bboss数据同步ETL工具介绍

大河

elasticsearch ETL bboss

GOPS现场 | 对话龙智董事长何明,探讨DevOps安全新概念

龙智—DevSecOps解决方案

运维 GOPS大会 GOPS全球运维大会

技术分享 | 这些常用测试平台,你们公司在用的是哪些呢?

霍格沃兹测试开发学社

节能环保LED显示屏为什么是未来发展趋势?

Dylan

LED显示屏 led显示屏厂家

技术分享 | 测试人员必须掌握的测试用例

霍格沃兹测试开发学社

【小程序】view视图,swiper轮播图,scroll-view滑动列表 (在线详细手册)

计算机魔术师

8月月更

项目经理和ScrumMaster可以是同一个人吗?

ShineScrum

Scrum 敏捷 ScrumMaster 项目经理

蓝牙5.0简介、nRF52832 BLE样例工程框架及main函数初始化流程简析

矜辰所致

蓝牙 启动流程 8月月更 nRF52832

入门机器学习?还是先抢救一下数学吧!

博文视点Broadview

如何应对ITSM难题,打造现代化、高效的ITSM解决方案?

龙智—DevSecOps解决方案

ITSM ITSM软件 ITSM解决方案

Tapdata 获得阿里云首批产品生态集成认证,携手阿里云共建新合作

阿里巴巴云原生

阿里云 Serverless 云原生 SAE 合作

leetcode 227. Basic Calculator II 基本计算器 II(中等)

okokabcd

LeetCode 算法与数据结构

2022 世界人工智能大会|人工智能与开源技术先锋论坛即将开幕

Kyligence

开源技术 人工智能大会

Kyligence 亮相 Gartner 2022 数据与分析峰会,解锁数据智能新潜力

Kyligence

数据管理 指标中台

兆骑科创人才引进服务平台,线上直播路演,投融资对接

兆骑科创凤阁

AntDB最新成果亮相全球分布式云大会,推动企业数字化变革深入

亚信AntDB数据库

AntDB

厚积薄发--一文带您了解阿里云 RocketMQ 轻量版消息队列(MNS)

阿里巴巴云原生

阿里云 RocketMQ 云原生 消息队列

为什么MatrixOne 0.5变慢了

MatrixOrigin

矩阵起源 MatirxOrigin MatirxOne 因子化

【小程序项目开发 --- 京东商城】 启航篇之uni-app项目搭建

计算机魔术师

8月月更

【小程序项目开发-- 京东商城】uni-app开发之配置 tabBar & 窗口样式

计算机魔术师

8月月更

NFT平台开发:NFT数字馆藏平台开发

开源直播系统源码

数字藏品软件开发 数字藏品开发 数字藏品系统

校区多,客情管理难?看中进教育使用明道云的新解法

明道云

Elasticsearch添加修改删除索引文档

大河

elasticsearch bboss

这份SVN命令备忘清单,请查收

龙智—DevSecOps解决方案

svn 版本控制系统

字节跳动基于 ClickHouse 优化实践之“查询优化器”

字节跳动数据平台

OLAP Clickhouse 查询优化 数据库开发 数据引擎

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