Amazon Neptune评论:OLTP的可扩展图形数据库

Graph数据库 (例如Neo4j ,Apache Spark GraphX,DataStax Enterprise Graph,IBM Graph,JanusGraph, TigerGraph , AnzoGraph , Azure Cosmos DB的图形部分)以及本次审查的主题Amazon Neptune都适用于涉及以下几种应用程序高度关联的数据集,例如提供基于社交图的建议,执行欺诈检测,提供实时产品建议以及检测网络和IT运营中的入侵。 在这些领域中,由于需要对大型数据集进行操作的复杂SQL连接,传统的关系数据库往往变得效率低下且速度缓慢。

Neptune是具有ACID属性和即时一致性的完全托管的图形数据库服务,其核心是专用的高性能图形数据库引擎,该引擎经过优化,可存储数十亿个关系并以毫秒级的延迟查询图形。 Neptune支持两种最流行的开源图形查询语言, Apache TinkerPop Gremlin和W3C SPARQL 。 Neo4j中使用的流行的Cypher Query Language (CQL)最初是专有的,但后来变成了开源 。

Gremlin和SPARQL解决了不同种类的图形数据库。 像CQL一样,Gremlin用于属性图数据库。 SPARQL用于资源描述框架(RDF)三元组,是为Web设计的。 Gremlin是一种图形遍历语言; SPARQL是带有SELECT和WHERE子句的查询语言。

Amazon Neptune实施允许在单个数据库实例中同时使用Gremlin和SPARQL语言,但它们无法看到彼此的数据。 允许两者都使用的原因是让新用户找出哪种方法更适合他们的需求。

Neptune文档提供了使用Gremlin的Gremlin-Groovy,Gremlin-Java和Gremlin-Python变体的示例。 Neptune允许控制台中的Gremlin,HTTP REST调用,Java,Python,.Net和Node.js程序。 在SPARQL方面,Neptune支持Eclipse RDF4J控制台和工作台,HTTP REST调用以及Java程序。

Amazon Neptune功能和优势

作为一种完全托管的事务型图形数据库即服务,Amazon Neptune不仅可以免除维护数据库硬件和软件的需求,还可以轻松扩展,提供超过99.99%的可用性以及多种安全级别。 Neptune数据库群集在三个可用区中的六个数据副本中可以具有高达64 TB的自动扩展存储,如果您通过在其他区域中使用只读副本来实现高可用性,则可以拥有更多的自动扩展存储。

Neptune数据存储层由SSD支持,具有容错功能和自我修复功能。 磁盘故障可在后台修复,而不会损失数据库可用性。 Neptune自动检测数据库崩溃,并通常在30秒或更短的时间内重新启动,而无需执行崩溃恢复或重建数据库缓存,因为该缓存与数据库进程是隔离的,并且可以在重启后幸存下来。 如果整个主实例发生故障,Neptune将自动故障转移到最多15个只读副本之一。 备份连续流式传输到S3。

您可以通过修改实例来扩大和缩小Amazon Neptune集群,或者(为避免停机)通过添加所需大小的实例并在迁移数据副本并将新实例升级为旧实例后关闭旧实例来关闭它。主。 Neptune VM实例的大小范围从db.r4.large(两个vCPU和16 GiB的RAM)到db.r4.16xlarge(64个vCPU和488 GiB的RAM)。

Amazon Neptune通过在VPC(虚拟私有云)网络中运行引擎并有选择地使用AWS Key Management Service加密静态数据来实现安全性。 除了加密基础存储外,Neptune还加密备份,快照和副本。 Neptune有资格在HIPAA应用程序中使用 。 海王星不需要您创建特定的索引以实现良好的查询性能,这是通过仔细调整指数平衡查询和写入性能的可喜变化。

Amazon Neptune评论:OLTP的可扩展图形数据库_第1张图片 IDG

该图显示了Amazon Neptune架构的高级图。 请注意,Neptune图引擎位于云原生存储服务层与Gremlin和SPARQL接口之间。

亚马逊海王星支持分析查询算法,如PageRank的,这是在其他一些图形数据库,如特色的Neo4j , TigerGraph和AnzoGraph 。 Neptune旨在成为用于海量数据集的低延迟事务(OLTP)图数据库,而不是分析(OLAP)数据库,并且根本没有针对分析用例或涉及三跳以上的查询进行优化-PageRank涉及到每一项在数据库中。

Amazon Neptune确实支持聚合,因此可以进行一些分析,但不能做很多分析。 与Neptune一样,Neo4j最初也打算用于OLTP,但在2017年添加了一个分析查询库。作为低延迟OLTP图形数据库,Neptune中分析能力有限的事实并不一定是排除它的原因。具有全球分布的只读副本,并且能够处理64 TB数据的能力丝毫不容小at。

Amazon Neptune入门

您可以通过两种方式启动Amazon Neptune集群: 直接从Amazon Neptune控制台启动 ,或使用AWS CloudFormation模板创建Neptune堆栈。 请注意,由于提供的CloudFormation模板不是很安全,因此它不适用于生产,它是作为教程的基础。

无论您的应用程序需要什么,都可以从小处开始并增加容量(更大的VM或更多的只读副本)。 存储空间会自动增长,您只需为使用的存储空间付费。

在以下屏幕截图中,我展示了从Neptune控制台创建的Neptune映像的生命周期。 我从创建集群开始。

Amazon Neptune评论:OLTP的可扩展图形数据库_第2张图片 IDG

创建Neptune群集或实例时,需要指定要使用的实例类。 这些范围从2到64个CPU,具有15 GiB到488 GiB的RAM。

您想要集群的高可用性吗? 一点也不难。

Amazon Neptune评论:OLTP的可扩展图形数据库_第3张图片 IDG

选择实例大小后,您决定是否要为集群启用高可用性。 只需单击即可。

在高级设置中,有多个面板。 幸运的是,大多数默认设置都可以满足您的需求。

Amazon Neptune评论:OLTP的可扩展图形数据库_第4张图片 IDG

高级设置的前两个部分定义了Amazon Neptune群集的网络安全性和端口。 此外,您可以通过IAM用户和角色启用数据库身份验证。

Amazon Neptune评论:OLTP的可扩展图形数据库_第5张图片 IDG

您可以启用数据加密,并使用AWS提供的密钥或您自己的密钥之一。 在故障转移的情况下,您可以很好地控制只读副本的优先级,使其成为主要副本,还可以指定备份的保留期。

最后,在按下按钮启动数据库之前,您将看到警告。 如果确实需要查看说明,请右键单击链接,然后在另一个选项卡中显示它。 (我希望此错误将得到解决。)

亚马逊海王星权限警告06 IDG

在高级屏幕之后,您将看到有关授予权限的警告。 他们可能没问题,但是不要用鼠标左键单击“了解更多”链接-当我这样做时,我丢失了所有设置,不得不重新从头开始创建集群。

拥有正常工作的集群后,您可以对实例执行多项操作。

Amazon Neptune评论:OLTP的可扩展图形数据库_第6张图片 IDG

我们的主要Amazon Neptune实例和只读副本正在运行并且可用。 您可以修改,重新引导,删除或故障转移每个。 您还可以创建只读副本,拍摄快照或将主数据库还原到某个时间点。

在集群级别,您可以显示一个摘要。

Amazon Neptune评论:OLTP的可扩展图形数据库_第7张图片 IDG

Amazon Neptune群集概述。 在这里可以找到集群写入器和读取器端点。

在实例级别,您可以看到性能图。

Amazon Neptune评论:OLTP的可扩展图形数据库_第8张图片 IDG

默认情况下,您可以查看Amazon Neptune实例的CPU,内存和网络图。

将数据加载到Amazon Neptune

要将数据加载到Amazon Neptune中 ,您首先需要以一种正确的格式将文件加载到Amazon S3中:CSV(用于Gremlin),以及三元组,四元组,RDF / XML或Turtle(用于RDF)。 加载程序支持单个文件的gzip压缩。

您需要创建一个IAM角色和S3 VPC端点,以授予Neptune权限来访问您的S3存储桶,除非它们已经被创建(例如通过CloudFormation模板)。 有一个可以通过REST端点(例如从curl命令)调用的Neptune加载器API ,它可以承担IAM角色并将数据批量加载到您的集群中。 GitHub上还有一个从GraphML到CSV的转换器 。 数据加载演练适用于任何受支持的数据格式。

使用Gremlin查询Amazon Neptune

您可以使用Gremlin控制台和REST端点从与数据库相同的VPC中的EC2 VM连接并查询Gremlin中的Amazon Neptune实例。 对于应用程序更有用的是,您可以使用Java , Python , .Net和Node.js中的 Gremlin查询Neptune。

开尔文·劳伦斯(Kelvin Lawrence) 撰写了一本有关Gremlin的整本书,《 实用Gremlin:Apache TinkerPop教程》 该书将TinkerGraph用作其数据库,但是相同的Gremlin语法适用于Neptune,但亚马逊记录了一些小例外 。

Gremlin查询描述了如何导航图形的顶点和边。 本书中讨论的航空路线数据库示例找到了从德克萨斯州奥斯丁(机场代码AUS)飞往印度阿格拉(机场代码AGR)的两种途经的所有方式:

g.V().has(‘code’,’AUS’).repeat(out()).times(3).has(‘code’,’AGR’).path().by(‘code’)

如果要尝试使用Amazon Neptune上的书中的示例,则首先需要使用AWS CLI cp命令将边缘和节点CSV文件复制到S3存储桶,然后将数据从那里加载到Neptune中。

使用SPARQL查询Amazon Neptune

您可以使用RDF4J控制台 , RDF4J工作台和REST端点从与数据库相同的VPC中的EC2 VM连接并查询SPARQL中的Amazon Neptune实例。 对于应用程序更有用的是,您可以使用Java中的 SPARQL查询Neptune。 SPARQL 1.1查询语言规范定义了如何构造查询。 如果您在网上搜索“ sparql教程”,则会发现许多与此主题有关的免费书面和视频教程。 加载数据后,所有这些都应与Neptune一起使用。

SPARQL看起来不像Gremlin那样类似于功能代码,而更像SQL。 例如:

SELECT ?book ?who
WHERE { ?book dc:creator ?who }

Amazon Neptune的性能和扩展

Amazon Neptune设计用于在大型(最大64 TB)数据库上进行多达三跳的低延迟图形查询。 它在三个可用区中最多支持15个低延迟只读副本,以扩展读取容量,并且据Amazon称,每秒可以执行100,000多个图形查询。

它的实例大小从2个到64个vCPU(具有15 GiB到488 GiB的RAM),在每个步骤中都大约翻了一番。 Neptune最多可以使用64个vCPU x 16个实例,总共1024个vCPU,以及488 GiB RAM x 16个实例,总共7808 GiB RAM。 考虑到实例大小和只读副本数量,整体上可能会扩展到512倍。 成本几乎完全跟踪资源的扩展。

如果您正在寻找事务性图形数据库即服务,那么Amazon Neptune是一个可行的选择。 鉴于Neptune同时支持Gremlin和SPARQL查询语言,您应该能够找到开发人员针对它来构建应用程序。 另一方面,海王星缺乏Cypher支持可能会阻止现有的Neo4j用户,而其缺乏OLAP和图形算法支持将使希望使用单个图形数据库进行交易和分析的人们感到沮丧。

Amazon Neptune的各种容量(最大16倍的大小和16个实例),高的最大交易速率(每秒100,000个查询)和即付即用定价应符合大多数业务需求。 但是,由于缺少本地选项,因此可能无法将其用于制定了将敏感数据置于云中的政策的公司,以及倾向于将资本支出和资本支出减记为持续运营支出的公司。

-

成本:每实例小时$ 0.348到$ 5.568,具体取决于实例大小,每月每GB存储$ 0.10,每百万个I / O请求$ 0.20,备份存储每GB月$ 0.023,出站数据传输每GB $ 0.12; 实行各种价格优惠。

平台: Amazon Web Services; 支持Apache TinkerPop Gremlin或SPARQL查询; 通过AWS控制台,HTTP REST和Java以及RDF4J Workbench(SPARQL)和Python,.Net和Node.js(Gremlin)进行访问。

From: https://www.infoworld.com/article/3394860/amazon-neptune-review-a-scalable-graph-database-for-oltp.html

你可能感兴趣的:(Amazon Neptune评论:OLTP的可扩展图形数据库)