neptune 命令行窗口
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查询语言 (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数据库群集可以具有多达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应用程序中使用 。 海王星不需要您创建特定的索引以实现良好的查询性能,这是通过仔细调整指数平衡查询和写入性能的可喜变化。
亚马逊海王星不支持分析查询算法,如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
要将数据加载到Amazon Neptune中 ,您首先需要以以下一种正确格式将文件加载到Amazon S3中:CSV(用于Gremlin),以及三元组,四元组,RDF / XML或Turtle(用于RDF)。 加载程序支持单个文件的gzip压缩。
您需要创建一个IAM角色和S3 VPC端点,以授予Neptune权限来访问您的S3存储桶,除非它们已经被创建(例如通过CloudFormation模板)。 有一个Neptune加载器API,可以通过REST端点(例如,通过curl命令)调用,该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)进行访问。
neptune 命令行窗口