Nebula Graph:一个开源的分布式图数据库

所在行业

IT-高新技术产业

机构网站

https://github.com/vesoft-inc/nebula

机构简介

A high performance distributed graph database.

机构主体

杭州欧若数网科技有限公司

Nebula Graph DBaaS

作为一款 DBaaS(DataBase as s Service)的产品,Nebula Graph Cloud Service 极大地降低了研发人员使用 Nebula Graph 的成本,更专注于使用 Nebula Graph 挖掘、分析数据背后的关联价值。
作者:NebulaGraph
链接:https://zhuanlan.zhihu.com/p/259201695
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Neo4j 导入 Nebula Graph 的实现原理与实践

Nebula Graph Exchange 的数据处理原理

我们这个导入工具名字是 Nebula Graph Exchange,采用 Spark 作为导入平台,来支持海量数据的导入和保障性能。Spark 本身提供了不错的抽象——DataFrame,使得可以轻松支持多种数据源。在 DataFrame 的支持下,添加新的数据源只需提供配置文件读取的代码和返回 DataFrame 的 Reader 类,即可支持新的数据源。

DataFrame 可以视为一种分布式存表格。DataFrame 可以存储在多个节点的不同分区中,多个分区可以存储在不同的机器上,从而支持并行操作。Spark 还提供了一套简洁的 API 使用户轻松操作 DataFrame 如同操作本地数据集一般。现在大多数数据库提供直接将数据导出成 DataFrame 功能,即使某个数据库并未提供此功能也可以通过数据库 driver 手动构建 DataFrame。

Nebula Graph Exchange 将数据源的数据处理成 DataFrame 之后,会遍历它的每一行,根据配置文件中 fields 的映射关系,按列名获取对应的值。在遍历 batchSize 个行之后,Exchange 会将获取的数据一次性写入到 Nebula Graph 中。目前,Exchange 是通过生成 nGQL 语句再由 Nebula Client 异步写入数据,下一步会支持直接导出 Nebula Graph 底层存储的 sst 文件,以获取更好的性能。接下来介绍一下 Neo4j 数据源导入的具体实现。

Neo4j 数据导入具体实现

虽然 Neo4j 官方提供了可将数据直接导出为 DataFrame 的库,但使用它读取数据难以满足断点续传的需求,我们未直接使用这个库,而是使用 Neo4j 官方的 driver 实现数据读取。Exchange 通过在不同分区调取 Neo4j driver 执行不同 skip 和 limit 的 Cypher 语句,将数据分布在不同的分区,来获取更好的性能。这个分区数量由配置项 partition 指定。

Exchange 中的 Neo4jReader 类会先将用户配置中的 exec Cypher 语句,return 后边的语句替换成 count(*) 执行获取数据总量,再根据分区数计算每个分区的起始偏移量和大小。这里如果用户配置了 check_point_path 目录,会读取目录中的文件,如果处于续传的状态,Exchange 会计算出每个分区应该的偏移量和大小。然后每个分区在 Cypher 语句后边添加不同的 skip 和 limit,调用 driver 执行。最后将返回的数据处理成 DataFrame 就完成了 Neo4j 的数据导入。

过程如下图所示:

https://zhuanlan.zhihu.com/p/245658174

Nebula Graph相关推荐

  1. model存数据_Jepsen 测试框架在图数据库 Nebula Graph 中的实践

    在本篇文章中主要介绍图数据库 Nebula Graph 在 Jepsen 这块的实践. Jepsen 简介 Jepsen 是一款用于系统测试的开源软件库,致力于提高分布式数据库.队列.共识系统等的安全 ...

  2. 亿万级图数据库 Nebula Graph 的数据模型和系统架构设计

    Nebula Graph:一个开源的分布式图数据库.作为唯一能够存储万亿个带属性的节点和边的在线图数据库,Nebula Graph 不仅能够在高并发场景下满足毫秒级的低时延查询要求,还能够实现服务高可 ...

  3. 众测 Nebula Graph | 捉虫计划已开启,这项有礼

    Nebulan Graph 捉虫计划 是开源的分布式图数据库 -- Nebula 发起的「找 Bug」活动,旨在发动开源社区的力量共建图数据库 Nebula. Nebula Graph:一个开源的分布 ...

  4. 技术实践 | 用 NetworkX + Gephi + Nebula Graph 分析权力的游戏人物关系(上篇)

    本文转载自公众号:Nebula Graph Community . 我们都知道<权利的游戏>在全世界都很多忠实的粉丝,除去你永远不知道剧情下一秒谁会挂这种意外"惊喜", ...

  5. gephi生成网络关系图_用 NetworkX + Gephi + Nebula Graph 分析lt;权力的游戏gt;人物关系(上)

    我们都知道<权利的游戏>在全世界都很多忠实的粉丝,除去你永远不知道剧情下一秒谁会挂这种意外"惊喜",当中复杂交错的人物关系也是它火爆的原因之一,而本文介绍如何通过 Ne ...

  6. Nebula Graph 在企查查的应用

    本文首发于 Nebula Graph Community 公众号 解决思路 解决 K8s 部署 Nebula Graph 集群后连接不上集群问题最方便的方法是将 nebula-algorithm / ...

  7. Nebula Graph|信息图谱在携程酒店的应用

    本文首发于 Nebula Graph Community 公众号 对于用户的每一次查询,都能根据其意图做到相应的场景和产品的匹配",是携程酒店技术团队的目标,但实现这个目标他们遇到了三大问题 ...

  8. Nebula Graph 招募社区布道师

    点击上方"开源社"关注我们 | 编辑:钱英宇.李明康 | 设计:王福政 01 Nebula Graph 社区布道师 作为一款开源的数据库产品,社区对 Nebula Graph 团队 ...

  9. Nebula Graph学习篇1_基础概念、初步使用、整合SpringBoot使用

    目录 一.基础概念 图数据库的概念 适用场景 数据模型 路径 点的VID 架构 二.初步使用 Windows安装Nebula-Graph服务 Nebula Console 连接 Nebula-Grap ...

  10. GraphX 在图数据库 Nebula Graph 的图计算实践

    不同来源的异构数据间存在着千丝万缕的关联,这种数据之间隐藏的关联关系和网络结构特性对于数据分析至关重要,图计算就是以图作为数据模型来表达问题并予以解决的过程. 一.背景 随着网络信息技术的飞速发展,数 ...

最新文章

  1. 重工行业:IT运维精细化管理新篇章
  2. 其利断金前一句是什么_绍兴晚报丨裘亚黎说|围城外的灵魂拷问:人为什么要结婚?...
  3. State(状态)--对象行为型模式
  4. ubuntu dhcp ping 不通 自己_??2、DHCP安装和配置
  5. ubuntu所有php扩展php-7.0扩展列表
  6. 当某个快捷键不能用时很可能是热键冲突
  7. 快速卷积与快速相关——MATLAB
  8. 高并发高可用系统的常见应对策略
  9. 基本sql语句--增删改查
  10. 使用 ASP.NET 2.0 ObjectDataSource 控件(整理自msdn)
  11. PlatformIO中arduino框架下stm32编程实现原理
  12. 计算机教育实习日志,计算机教师实习日志
  13. 交易类APP原型设计分享 - 5miles
  14. win2008虚拟化服务器配置,Win2008虚拟化实战之创建虚拟机
  15. ios苹果应用ipa一键签名工具_win和Mac电脑端自行签名ipa教程
  16. 金融小白进阶记——金融加速器
  17. revel MySQL_使用Revel(go)开发网站
  18. JAVA+selenium+testNG QQ邮箱登录及邮箱发送
  19. 《管理者必读12篇》如何购买
  20. Z 字形变换(C语言)

热门文章

  1. 2018-5-18笔记
  2. Adobe 正式发布 Flash Player 10 [version 10.0.12.36]
  3. 评测三款最流行的txt阅读器
  4. Ubuntu20.04 通过deb包方式安装微信
  5. 不得不知的MySQL索引和查询优化
  6. 大数据项目实施风险(一)
  7. 【ML】机器学习数据集:sklearn中分类数据集介绍
  8. 浙政钉扫一扫获取用户信息
  9. 安装时提示错误1402的解决办法
  10. 首旅如家打造中高端品牌璞隐酒店,计划五年实现100家门店