![755414df52cde4914efe0d998c56ad60.png](https://i-blog.csdnimg.cn/blog_migrate/861748573b15e05ba8c171454f099e07.jpeg)
亚马逊的图数据库服务为数十亿关系提供ACID属性,即时一致性和自动扩展存储。
图数据库,例如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数据存储层由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应用程序。Neptune不要求创建特定的索引来实现良好的查询性能,这是通过仔细调整索引来平衡查询和写入性能的一个可喜的变化。
![411e10933433a48772ae6318d49fdaba.png](https://i-blog.csdnimg.cn/blog_migrate/a0047912518f366a08e2d827b5c1f579.jpeg)
上图是高层面的Amazon Neptune架构。请注意,Neptune图引擎位于云原生存储服务层与Gremlin和SPARQL接口之间。
Amazon Neptune不支持分析查询算法,例如PageRank,它们在其他一些图数据库中有特色,例如Neo4j,TigerGraph和AnzoGraph。Neptune旨在成为大型数据集的低延迟事务(OLTP)图形数据库,而不是分析(OLAP)数据库,并且根本不针对涉及三个以上跃点的分析用例或查询进行优化,并且PageRank触及每个项目在数据库中。
Amazon Neptune确实支持聚合,所以它可以做一些分析,但不是很多。与Neptune一样,Neo4j最初也打算用于OLTP,但在2017年增加了一个分析查询库。Neptune分析功能受限的事实并不一定是排除它的理由,因为它是一个低延迟的OLTP图数据库使用全局分布的只读副本,处理64 TB数据的能力无需打喷嚏。
开始使用Amazon Neptune
可以通过两种方式启动Amazon Neptune群集:直接从Amazon Neptune控制台启动,或使用AWS CloudFormation模板创建Neptune堆栈。请注意,提供的CloudFormation模板不适合生产,因为它不是非常安全,它旨在作为教程的基础。
可以从小规模开始,并在应用程序需要时添加容量更大的VM或更多只读副本。存储会自动增长,只需为使用的存储付费。
在下面的屏幕截图中,我展示了从控制台创建的Neptune图的一些生命周期。我从创建集群开始。
![ebc9548b6d94cb028050a944ba4e72c5.png](https://i-blog.csdnimg.cn/blog_migrate/ea95c390dc932a3aa2682b5b5ca99cec.jpeg)
创建Neptune群集或实例时,需要指定要使用的实例类。它们的范围从2到64个CPU,具有15 GiB到488 GiB的RAM。
想要群集的高可用性吗? 这根本不难。
![c2f5fa045994a11ffb011d1ec21d95ad.png](https://i-blog.csdnimg.cn/blog_migrate/49a963b4ba2c67ffa46dc67635f4dc85.jpeg)
选择实例大小后,可以决定是否要为群集启用高可用性。它真的只需点击一下。
在高级设置中,有多个面板。 幸运的是,大多数默认设置应该满足需求。
![f7413814dc1cd0fec9ae281f383d05c9.png](https://i-blog.csdnimg.cn/blog_migrate/b6fcf1c006984171b0c24e9fc437b425.jpeg)
高级设置的前两部分定义了Amazon Neptune群集的网络安全性和端口。此外,还可以通过IAM用户和角色启用数据库身份验证。
![e71b6b7905c70fdc7e6f86bade731847.png](https://i-blog.csdnimg.cn/blog_migrate/f7d2963f5bf2aae1f04668ef6e2ea8db.jpeg)
可以启用数据加密,并使用AWS提供的密钥或您自己的密钥。 在故障转移的情况下,可以很好地控制只读副本的优先级成为主要副本,并且可以指定备份的保留期。
最后,在按下按钮启动数据库之前,您会看到警告。 如果您确实需要查看说明,请右键单击该链接并将其显示在另一个选项卡中。 (我希望这个bug会被修复。)
![e75bfeb62fa5cd52b1837afca049b88c.png](https://i-blog.csdnimg.cn/blog_migrate/e73ef65c909e80477f91d0f41f74d400.jpeg)
在高级屏幕之后,你将看到有关授予权限的警告。它们可能没问题,但是不要左键单击“了解更多”链接,当我这样做时,我丢失了所有设置,不得不从头开始重新创建群集。
拥有工作集群后,可以对实例执行多个操作。
![328f54f58f2293f3cbf0836e781811ff.png](https://i-blog.csdnimg.cn/blog_migrate/79132266ef83c4815d989b70c115aa3b.jpeg)
我们的主要Amazon Neptune实例和只读副本正在运行且可用。你可以修改,重新启动,删除或故障转移每个。你还可以创建只读副本,拍摄快照或将主数据库还原到某个时间点。
在群集级别,你可以显示摘要。
![c276d20572b735701bee5d6779638c5d.png](https://i-blog.csdnimg.cn/blog_migrate/63bb21be10fb2477779b428a4b26e118.jpeg)
Amazon Neptune群集概述。 可以在此处找到集群编写器和读取器端点。
在实例级别,可以看到性能图表。
![24850140991b13d7400d135ed8b0d9b3.png](https://i-blog.csdnimg.cn/blog_migrate/e1c8cb59580c8d5f4a64425b382e2435.jpeg)
默认情况下,可以查看Amazon Neptune实例的CPU,内存和网络图。
将数据加载到Amazon Neptune
要将数据加载到Amazon Neptune,首先要以正确的格式将文件加载到Amazon S3:Gremlin的CSV,以及RDF的三元组,四元组,RDF / XML或Turtle。加载程序支持单个文件的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,Practical Gremlin:An Apache TinkerPop Tutorial的全书。本书使用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端点连接到SPARQL中的Amazon Neptune实例,并从与数据库相同的VPC中的EC2 VM进行查询。对于应用程序更有用,可以使用Java中的SPARQL查询Neptune。 SPARQL 1.1查询语言规范定义了如何构造查询。如果你在网上搜索“sparql教程”,你会发现一些关于这个主题的免费书面和视频教程。加载数据后,这些都应该与海王星一起使用。
SPARQL看起来不像Gremlin那样功能代码,更像是SQL。例如:
SELECT ?book ?who
WHERE { ?book dc:creator ?who }
Amazon Neptun的表现和扩展
Amazon Neptune专为在大型(最多64 TB)数据库上最多三跳的低延迟图查询而设计。它支持三个可用区域内最多15个低延迟读取副本,以扩展读取容量,据亚马逊称,每秒可执行100,000多个图查询。
它的实例大小从2到64个vCPU,15个GiB到488 GiB的RAM,每个步骤大约加倍。 Neptune最多可以使用64个vCPU乘以16个实例,总共1024个vCPU,488个GiB RAM乘以16个实例,总共7808个GiB的RAM。考虑到实例大小和只读副本的数量,这可能是512x的整体可能扩展增长。成本几乎完全跟踪资源扩展。
如果正在寻找交易图数据库作为服务,亚马逊Neptune是一个可行的选择。鉴于Neptune同时支持Gremlin和SPARQL查询语言,应该能够找到针对它构建应用程序的开发人员。另一方面,Neptune缺乏Cypher支持可能会阻碍现有的Neo4j用户,而且缺乏OLAP和图形算法支持将阻碍那些想要单个图形数据库进行交易和分析的人。
亚马逊Neptune广泛的容量(最大16倍大小和16个实例),高最大交易率(每秒100,000个查询)和按需付费定价应该适合大多数业务需求。但是,由于缺乏内部部署选项,可能会阻止其在有策略的公司中使用,这些政策不会将敏感数据放入云中,而是倾向于将资本支出减记到持续运营支出的公司。
成本:每实例小时0.348美元至5.568美元,具体取决于实例大小,每GB存储月费0.10美元,每百万I / O请求0.20美元,备份存储每GB每月0.023美元,出站数据传输每GB 0.12美元;各种价格优惠适用。
平台:亚马逊网络服务;支持Apache TinkerPop Gremlin或SPARQL查询;通过AWS控制台,HTTP REST和Java以及RDF4J Workbench(SPARQL)和Python,.Net和Node.js(Gremlin)进行访问。
原文链接:
https://www.infoworld.com/article/3394860/amazon-neptune-review-a-scalable-graph-database-for-oltp.html