【高手问答汇总】聊聊图数据库 Nebula Graph

原创
03/16 17:44
阅读数 3.2K

将数据资产视为公司重要资产是企业的共识,数据的产生、存储、消费…每个数据流动环节都不可忽视。伴随着企业业务的多元化,一方面业务数据量激增,另一方面,数据不统一、数据孤岛、数据价值被低估等问题也浮出水面,其根本原因在于忽视了数据之间的关联性。

图数据库技术的出现,为企业赋予了挖掘数据关联价值的能力。而大数据时代的图数据库,除了具备优秀的关联价值挖掘能力,还要应对海量数据的存储计算挑战。图数据库 Nebula Graph 应运而生,它是一款开源的分布式图数据库,其 shared-nothing 分布式架构和存储与计算分离的架构特性,使得它尤其擅长处理千亿顶点、万亿条边的超大规模数据集,同时保持毫秒级低延时。Nebula Graph 目前已应用在多家互联网头部企业的金融风控、数据治理、实时推荐、智能问答等业务场景。

资深图数据库技术专家,开源的分布式图数据库 Nebula Graph 研发商欧若数网 CEO Sherman 在 03.08 - 03.14 期间同 开源中国·高手问答 的小伙伴们以「聊聊图数据库 Nebula Graph」为切入点展开讨论,包括:「Nebula Graph 的技术设计」、「Nebula Graph 应用场景」、「图数据库技术展望」等方面内容,本文整理于他和开源中国小伙伴对图数据库的讨论内容~

嘉宾简介

Sherman,资深图数据库技术专家,现任杭州欧若数网科技有限公司 CEO,曾任职 Facebook、蚂蚁金服等公司。一直从事图数据库研发工作,主导了分布式图数据库 Nebula Graph 的研发,并将其开源为美团、京东、腾讯等一线大厂业务所用。

本文目录

  • 图数据库的场景应用
    • 和 AI 结合的场景
    • 对物联网行业有没有什么应用场景
    • 图数据库的应用场景是什么?有哪些行业应用?
  • 认识图数据库 Nebula Graph
    • Nebula Graph 高性能的原因
    • Nebula Graph 数据库设计的取舍
    • Nebula Graph 的查询优化
  • 图数据库 Nebula Graph 的未来
    • Nebula Graph 对 HDD 的支持程度
    • Nebula Graph 对客户端的规划
    • Nebula Graph 2021 年的开发重点和方向是什么

图数据库的场景应用

和 AI 结合的场景?

@edra:请问这个作为分布式图形处理数据库,有和 AI 技术结合使用的场景吗。

你好,目前跟 AI 结合的应用场景有两类,一类是常见的知识图谱,另一类是基于图的机器学习,简称 GNN,在模型训练中将数据之间的关联关系考虑进去。

图数据库对物联网行业有没有什么应用场景?

@猪娃娃:您好,图数据库对物联网行业有没有什么应用场景?

物联网本身是物体之间的关联,所以很自然地可以用图数据库来存放,随着智能汽车的使用,物联网中的关系在动态变化中,图数据库是解决这种动态变化的关系网络最好的工具。

图数据库的应用场景是什么?有哪些行业应用?

@开源中国首席罗纳尔多:您好,请问图数据库的应用场景是什么?有哪些行业应用?

这个是一个通用问题啦,常见的是社交推荐、知识图谱、金融风控、机器学习 AI、区块链等等应用。你可以关注 Nebula Graph 之前的线下分享的文字整理稿:https://my.oschina.net/u/4169309/blog/3085990, 当然除了上面的,之前微众银行也分享了他们用图数据库 Nebula Graph 做数据治理的分享,可以看看我们发在开源中国的博文呀,感谢支持^ ^

认识图数据库 Nebula Graph

Nebula Graph 高性能的原因

@jasonwu24:老师您好!之前看过一篇文章,其中对比了 Neo4j、 Nebula Graph 以及 Huge Graph 这三大图数据库在入库时间、一度好友查询、二度好友查询、共同好友查询等几个方面的性能,在导入性能上,数据量小的时候 Nebula Graph 的导入效率稍慢于 Neo4j,但在大数据量的时候 Nebula Graph 的导入明显优于其他两款图数据库。在 3 种查询场景下, Nebula Graph 的效率都明显高于 Neo4j,与 HugeGraph 相比也有一定的优势。这是因为 Nebula Graph 采用 shared-nothing 分布式架构,所以更擅长处理千亿节点万亿条边的超大规模数据集吗?除此之外还有没有其他方面的原因使其性能更为突出呢?谢谢!

你好,感谢提问。除了 shared-nothing 的架构,还有一方面是因为数据分片和存储的方式(将点和其相邻的关系放在一起,增加 data locality),另外一方面我们在查询层也做了一些优化,比如计算下推。具体可以参考我们的架构系列博客文章:https://nebula-graph.com.cn/tags/%E6%9E%B6%E6%9E%84%E5%89%96%E6%9E%90/

Nebula Graph 数据库设计的取舍

@赤脚小子:在 NEBULA 研发过程中肯定会有很多取舍,比如事务,是否可以更新结构,历史数据是否可以更新/删除等等特性。

一开始 NEBULA 在做支持某些特性不支持某些特性的过程中,是怎样的一个思考过程?一开始就有明确的使用场景/商业领域在指引?还是也是亦步亦趋直到最后走出自己的路的?

是的,在研发过程中是有取舍的,目前 Nebula 专注的场景是高并发低延时的 TP 场景。所以,取舍的原则就是一个新特性是否能很好地支撑 TP 场景的性能要求。随着产品的成熟,我们也会慢慢开始支持 AP 场景,如离线分析和计算。

Nebula Graph 的查询优化

@osc_64757058:请问 nebula graph 在查询时有哪些优化,是否支持并行计算?

Nebula 在查询时做了很多优化,如计算下推、执行计算重构等。Nebula 支持多种计算框架,例如 GraphX、Plato 等。

最佳分区配置

@becke:看介绍,Nebula Graph 使用了raft 协议保持数据一致性,性能由底层的 partition 数据决定,不清楚怎么来选择最佳的分区数据?

我们建议一台机器上的分区数量不小于机器的 CPU 核数,同时考虑到未来扩容的需要,这个数量可以适当放大。 图数据库 Nebula Graph 的未来

Nebula Graph 对 HDD 的支持程度

@osc_ajxzbfuw:您好, Nebula 现在也是越来越火, 关注的人越来越多啦。

有个小需求, 就是 Nebula 增加是 HDD 磁盘的优化, 不知道可有这方面的计划,优先级是怎样的,毕竟 Nebula 可能还有更重要的功能需要开发、支持。

在实际的企业中, 受限于预算、审批流程等各种原因的限制,SSD 磁盘的主机并不容易获得。

你好,由于 HDD 磁盘本身的限制,在数据量大的 TP 场景下,无论怎么优化,性能都不会很好。如果你的数据量小到足够放在内存中处理,今年我们会推出基于内存的存储引擎,这样可以解决你的问题。但是对于大数据量的 TP 场景,还是建议申请 SSD 磁盘。HDD 磁盘用于 AP 场景是可行的,今年我们会解决这个问题。

Nebula Graph 对客户端的规划

@荒野刀客 :你好 ,最近也在选型图数据库,初步考虑 nebula graph,但看到客户端 cpp client 好像活跃度不高,没几个人在 github 上贡献,而 go 语言等客户端 SDK 贡献者很多,这块儿后续有什么计划?另外纯 C 的客户端也没有看到 ,使用可以将 go 语言的 nebula client 编译成动态库,输出一些 C API?

CPP Client 一直是我们优先级最高的 Client 之一,我们会持续支持。纯 C 的客户端目前确实没有,这是因为目前好像没有看到这方面的需求,如果需求量大的话,我们也会考虑支持。也欢迎你来贡献!

Nebula Graph 2021 年的开发重点和方向是什么

@荣飞coder:1.Nebula Graph 2021 年的开发重点和方向是什么?我知道 2.0 ga 马上就要发布了,这个应该算是一个里程碑;2.Nebula Graph的目的其实是发挥数据价值的。数据价值很重的一个方面是数据关系,图计算在关系处理里面作用很大(图计算 我理解有限,还在学习),想知道图计算和 Nebula Graph 结合的案例以及有没有相关资料推荐啊,谢谢

  1. 2021 年的重点是在加强性能和稳定性的基础上,增加图计算的融合,同时推出云服务;
  2. Nebula 跟图计算结合的案例我们博客里有几篇,比如这篇 GraphX 的:https://nebula-graph.com.cn/posts/practice-graphx-nebula-graph-algorithm/

以上为本次图数据库交流的整理,如果你打算使用图数据库,在使用 Nebula Graph 过程中遇到任何问题,记得来我们的论坛和我们交流下:https://discuss.nebula-graph.com.cn/ ,在实践之前记得关注下我们的开源中国专栏了解更多 Nebula Graph 的特性呀:https://my.oschina.net/u/4169309

展开阅读全文
打赏
0
0 收藏
分享
加载中
打赏
1 评论
0 收藏
0
分享
返回顶部
顶部