亚马逊云科技产 Amazon Neptune 图数据库服务体验

图数据库

图数据库是一种专门用于存储和处理图形数据结构的数据库管理系统。图形数据结构由节点(Node)和边(Edge)组成,节点代表实体,边代表实体之间的关系。
图形数据库经过优化,可以存储和查询数据项之间的关系。它们将数据项本身存储为图的顶点,将它们之间的关系存储为边。每条边都有一种类型,并且从一个顶点(起点)指向另一个顶点(终点)。关系可以称为谓词,也可以称为边,顶点有时也称为节点。在所谓的属性图中,顶点和边都可以具有 与之关联的其他属性。比如下图是一个表示社交网络中的朋友和爱好的图表:
在这里插入图片描述

为什么使用图数据库

在当今互联网飞速发展的背景下,传统的关系型数据库在处理复杂关系操作时显得力不从心。然而,图数据库通过存储数据和其相互关系,大大提升了对数据节点和关系操作的效率。图数据库能够在线性时间复杂度内访问数据节点和关系,甚至可以在一秒钟内遍历数百万级的关系边,表现出显著的性能优势。所以图数据库的优势越发明显,在开发过程中扮演着重要角色。

Amazon Neptune

亚马逊云科技产品Amazon Neptune 数据库是一个无服务器图形数据库,旨在实现卓越的可扩展性和可用性。Neptune 数据库提供内置安全性、持续备份以及与其他 AWS 服务的集成。Neptune 全球数据库为全球分布式应用程序提供跨区域数据复制,以实现低延迟读写、灾难恢复和可扩展性。其中Neptune具有优势极其显著,具体如下:

  • Neptune 支持图形用例,例如推荐引擎、欺诈检测、知识图谱、药物发现和网络安全。

  • Neptune 数据库具有高可用性,具有只读副本、时间点恢复、持续备份到 Amazon S3 以及跨可用区复制等功能。

  • Neptune 提供数据安全功能,支持静态和动态加密。

  • Neptune 是完全托管的,因此您不再需要担心数据库管理任务,例如硬件配置、软件修补、设置、配置或备份。

实践

接下来我们来体验一波!

登陆

首先需要打开亚马逊云科技官网,注册登录。

创建 S3 存储桶

控制台搜索cloudshell
在这里插入图片描述
然后切换一下节点,随便选择一个
在这里插入图片描述
接下来就可以创建 S3 存储桶了
在这里插入图片描述
cheetah-qing为自己的桶名,需要自定义。创建完成之后需要创建堆栈

aws cloudformation create-stack --stack-name get-started-neptune-ml --template-url https://s3.amazonaws.com/ee-assets-prod-us-east-1/modules/4f0f18a83e6148e895b10d87d4d89068/v1/gcr-buildon-selfpace/gcr-buildon-neptune-ml-nested-stack.json --capabilities CAPABILITY_IAM --region us-east-1 --disable-rollback

然后就需要等待服务启动。

notebook

在搜索栏输入neptune,点击进入,导航栏选择“笔记本”
在这里插入图片描述
紧接着点击右侧的“查看笔记本文档”。
在这里插入图片描述
注意:倘若没有 notebook,需确定地区是否选择正确,其次确认后台服务是否都启动完成。

图神经网络快速构建

我们在上方已经打开笔记,接着在控制台输入命令来检查集群是否已正确配置可以运行 Neptune ML
在这里插入图片描述

加载数据

这里使用 Bulk Loader来加载数据,通过编写脚本可以实现自动执行从MovieLens网站下载数据,调整数据格式,并将数据载入Neptune的全过程。

s3_bucket_uri="s3://cheetah-qing"
# remove trailing slashes
s3_bucket_uri = s3_bucket_uri[:-1] if s3_bucket_uri.endswith('/') else s3_bucket_uri

执行response = neptune_ml.prepare_movielens_data(s3_bucket_uri)命令即可下载 MovieLens 数据,并将其调整为可被 NeptuneBulk Loader 兼容的格式。
结果如下:

Completed Processing, data is ready for loading us![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1c0bc19a3cd84c79976827820d721a17.png)
ing the s3 url below:
s3://cheetah-qing/neptune-formatted/movielens-100k

操作完成后,执行下面代码加载数据

%load -s {response} -f csv -p OVERSUBSCRIBE --run

在这里插入图片描述

配置端点

执行命令来创建端点,并获取到推理端点的端点名称。

setup_node_classification=True
setup_node_regression=True
setup_link_prediction=True
setup_edge_classification=True
setup_edge_regression=True

endpoints=neptune_ml.setup_pretrained_endpoints(s3_bucket_uri, setup_node_classification, setup_node_regression, setup_link_prediction, setup_edge_classification, setup_edge_regression)

node_classification_endpoint=endpoints['node_classification_endpoint_name']['EndpointName']
node_regression_endpoint=endpoints['node_regression_endpoint_name']['EndpointName']
link_prediction_endpoint=endpoints['prediction_endpoint_name']['EndpointName']
edge_classification_endpoint=endpoints['edge_classification_endpoint_name']['EndpointName']
edge_regression_endpoint=endpoints['edge_regression_endpoint_name']['EndpointName']

Gremlin 查询

先执行下面代码,来验证图谱中,Forrest Gump 这个 moviegenre 不包含任何 genre
在这里插入图片描述

接下来我们修改这个查询。首先指定要在 Gremlin查询中使用的推理端点:g.with("Neptune#ml.endpoint","<INSERT ENDPOINT NAME>"),然后指定我们想要获取该属性的预测值:with("Neptune#ml.classification")。将这些内容结合在一起就可以得到下方的查询,该查询可通过我们的产品知识图谱 Forrest Gumpgenre。执行下面命令

%%gremlin
g.with("Neptune#ml.endpoint","${node_classification_endpoint}").
  V().has('title', 'Forrest Gump (1994)').properties("genre").with("Neptune#ml.classification").value()

结果如下:
在这里插入图片描述
查看结果可知,预测结果似乎是正确的,Forrest 似乎被正确预测为 Drama 类型。

删除环境

如果不需要这个服务,就把它删除掉,防止持续扣费。
在这里插入图片描述

删除 S3 存储桶

选择 cloudshell,执行aws s3 rb s3://cheetah-qing --force删除 S3 存储桶。
在这里插入图片描述

总结

Amazon Neptune 是一种高性能、可扩展且完全托管的图数据库服务,具有许多优势,使其在处理复杂关系数据时非常有效。

  • 快速开发和部署:Neptune 提供灵活的开发和部署环境,支持快速原型设计和部署,减少开发时间和成本。
  • Neptune 无缝集成 AWS 的其他服务,如 AWS LambdaAmazon CloudWatchAmazon S3 等,便于构建复杂的应用程序和数据管道。
  • 全球部署:通过 Amazon Neptune 全球部署选项,可以在全球多个区域快速部署和访问图数据库,实现低延迟和高可用性。
  • 高性能:Neptune 设计用于快速、低延迟的图查询,能够高效处理包含数十亿个关系和节点的图数据。其优化的存储引擎和查询引擎能提供快速的图遍历和查询性能。
  • 完全托管:作为 AWS 的托管服务,Amazon Neptune 减少了用户管理数据库基础设施的负担。AWS 负责软件更新、补丁管理、备份和恢复等操作,使用户可以专注于应用开发。

当然Amazon Neptune 还有很多操作,期待在以后的使用过程中继续挖掘!

评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不叫猫先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值