编辑: 黎文定 2019-06-27

5 /

17 数据加载方法 对于每个图数据库,我们选择了最有利的初始数据批量加载方法 : Table

3 C 每个数据库的数据加载方法 我们发现,一些图数据库要么需要一些前置处理、要么需要一些后处理工作. 我们的数据集只包含边列表,但是其他系统要么必须 (Neo4j,Neptune,ArangoDB) 在加载边之前加 载顶点、要么 (JanusGraph) 能从加载边之前加载顶点的方式获得益处. 因此,我们编写了一个简单的脚本来生成一个顶点文件,它包含了边列表中所有惟一的顶点 id. Neptune 的数据格式要求比其他的要严格.为了避免在使用 JanusGraph 时的内存问题,我们将数据 文件分割成几个小的数据集,然后按顺序加载它们. 对于 Neo4j,用户需要在加载后,额外构建一个索引以获得良好的查询性能.我们将整个数据加载分 为四个阶段,并测量每个阶段的耗时. 顶点文件准备 : 生成顶点文件的时间. 顶点加载 : 将顶点加载到图的时间. 边的加载 : 将边 ( 也许有顶点 ) 加载到图的时间. 索引构建 : 大多数图数据库在加载期间构建一个主 ID 索引.Neo4j 要求这是作为一个单独 的步骤来完成的.如果没有索引,查询性能会显著降低. 加载耗时和速度 下面的表格显示了两个数据集的总加载耗时和每个数据库的每个阶段耗时. Name Loading API or Method TigerGraph GSQL声明加载作业 Neo4j neo4j-import (脱机加载器),然后在顶点上构建索引以加快查询速度 Neptune 将外部文件(存储在S3中的)直接加载到Neptune DB实例的Neptune加载器 JanusGraph 使用TinkerPop API 添加顶点和边的Java程序 ArangoDB arangoimp 批量导入工具

6 /

17 Table 4A C graph500 的数据加载耗时 ( 单位 : 秒)Table 4B C Twitter 数据加载耗时 ( 单位 : 秒)4ArangoDB.m 的边加载时间为 24.4 小时,加载了 54% 的数据,然后耗尽了内存. * Neo4j 批量加载过程包括加载顶点文件和边文件两个部分,我们记录了批量加载的总耗时. 下面以图方式说明了这些加载耗时. 图1A - graph500 数据加载耗时 TigerGraph Neo4j Neptune1 Neptune2 JanusGraph ArangoDB.m ArangoDB.r edge 56.0 37.3 1,571.0 1,052.0 574.6 599.6 944.9 vertex - - 45.0 30.0 43.9 11.5 44.5 vertex file prep - 54.4 93.2 93.2 54.4 54.4 54.4 index - 7.99 total 56.0 99.7 1,709.2 1,175.2 672.9 665.5 1,043.8 relative

1 1.8 30.5 21.0 12.0 11.9 18.6 TigerGraph Neo4j Neptune1 Neptune2 JanusGraph ArangoDB.m ArangoDB.r edge

785 685

42248 21700

12192 N/A4

20137 vertex - -

733 503

839 206

272 vertex file prep -

1270 2259

2259 1270 -

1270 index -

126 total

785 2081

45240 24462

14301 N/A

21679 relative

1 2.7 57.6 31.2 18.2 N/A 27.6

7 /

17 图1B - Twitter 数据加载耗时 只有 Neo4j 的加载时间与 TigerGraph 的加载时间是可比的 ( 比TigerGraph 慢1.8 倍到 2.7 倍). 我们使用 Neo4j 的离线加载方法 ( 不允许并发数据库操作 );

它的在线加载方法要慢得多

5 . 除了 Neo4j 之外,TigerGraph 比其他图数据库加载小数据集时快

12 到31 倍,加载大数据集时 快18 到58 倍. TigerGraph 具有最简单的加载过程,不需要前置处理或后处理.

5 我们在

2017 年对 Neo4j 的离线和在线加载方法进行了基准测试 : https://doc.tigergraph.com/report/WP_NPGbenchmark_Sep17_web.pdf 加载后数据占用的磁盘容量 加载后数据占用的磁盘容量是系统成本和性能的重要考虑因素.在其他条件相同的情况下,一个紧凑 的数据库存储可以在给定的机器上存储更多的数据和拥有更快的访问时间,因为它可以获得更多的缓 存和页面命中率. TigerGraph 自动编码和压缩数据,将加载后数据的大小减少到小于原始数据量的一半.相反,所有 其他数据库都放大了输入数据量.我们在加载后测量了数据库存储数据的大小.对于 Neptune,我们 使用 Cloudwatch 控制台来获得加载后数据的存储量大小.亚马逊用户指南说他们的系统自动复制

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题