高手问答第 241 期 —— 图数据库开发与应用实战分享

xplanet 发布于 03/18 08:53
阅读 3K+
收藏 18

当前,互联网数据呈指数级增长,集中表现在数据量级的飞越和数据关联的复杂化加深。对于企业而言,如何如何通过挖掘大数据的关联性去探索“隐藏”在背后的价值变得越发重要。

然而,传统的关系型数据库,在处理复杂数据关系运算上表现很差,随着数据量和深度的增加,关系型数据库无法在有效的时间内计算出结果。所以,为了更好地利用数据间的连接,企业需要一种——将关系信息存储为实体、灵活拓展数据模型的数据库技术,这项技术就是图数据库。

2019 年 Gartner 数据与分析峰会上,图数据被列为年度十大数据和分析趋势之一。并且,预计到 2022 年,全球图处理及图数据的应用将以每年 100% 的速度迅猛增长。根据 DB Engines 近 7 年数据库流行趋势显示,图数据库相较其他主流数据库受欢迎程度遥遥领先。

OSCHINA 本期高手问答 (2020 年 03 月 18 日 - 2020 年 03 月 25 日) 将以【图数据库的优势】为话题展开讨论,包括「图数据库入门」、「图数据库在具体场景的应用」、「图数据库的技术原理」、「图数据库如何解决面临的挑战」、「图数据库的选型」、「图数据库在人工智能的展望」等,当然也可以延伸到图数据库的整个领域,或聚焦于有关 HugeGraph 图数据库 的实战问题。

嘉宾简介

李章梅,现任百度安全部资深研发工程师,HugeGraph 开源图数据库技术负责人。主要从事图数据库及分布式存储的研发工作,曾在【第十届中国数据库技术大会】图数据库论坛发表演讲。开源技术爱好者,持续参与开源社区贡献,包括 OpenStack、Ceph、ScyllaDB、RocksDB、TinkerPop 等。

为了鼓励踊跃提问,华章图书会在问答结束后从提问者中抽取 3 名幸运读者赠予深入浅出图神经网络:GNN原理解析一书。 该书将理论与实践相结合,分别从原理、算法、实现、应用 4 个维度详细讲解了图神经网络。

购书地址:https://item.jd.com/12615065.html?dist=jd

此外,另抽取三位幸运读者,分别赠送百度熊一只 :D

OSCHINA 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家向李章梅老师 @JermyLi 积极提问,直接回帖提问即可。

加载中
0
flygogo
flygogo

@JermyLi

@JermyLi

你好, HugeGraph有看过, 我个人觉得还有一些问题, 我提出来, 你看看是否合理.

1. 数据结构的设计不太适合非内存缓存, 也不好限制内存, 是否可能导致溢出.

2. 在结合存储方面感觉也没有细致优化到让 存储发挥其性能优势, 节点删除的适合, 以本节点开始方向的关系是可以用key的范围删除的.

3.  没有单独针对关系计算方面的内存的优化, 比如很多时候做关系计算, 可以不考虑属性的.

4. 周边工具上感觉还是有些问题, 比如导入组件的设计上性能各方面还有很大优化空间.

提上面几点问题, 但总体Hugegraph是一个非常好的图数据, 持续关注

J
JermyLi
分别解答: 1、内存缓存如果配置较大容量时,容易导致内存耗尽OOM,另一方面可能会导致GC压力大,前者建议调小缓存,后者在v0.11版中会通过offheap堆外缓存解决。
J
JermyLi
2、使用key的范围删除,早期我们是有使用这个特性的,比如RocksDB deleteRange,但这会导致后续查询时出现严重的性能问题所以弃用了;另外很多存储引擎是不支持这个特性的。HugeGraph中Cassandra、HBase、RocksDB这几种后端存储都都是经过精心优化的,抛弃使用大一统的KV接口,代码实现都是经过大量实践、对比、优化之后的结果。
J
JermyLi
3、由于产品在场景适用性上的选择,目前HugeGraph更多的是关注百亿以上规模的关联分析,内存优化对于小规模数据确实优势明显,但是对大规模数据挑战非常大,有好的想法欢迎继续交流。关系计算忽略属性是一个非常好的思想,不过也需要综合权衡返回结果中需要边属性的场景,所以是个两难的问题。
J
JermyLi
4、导入组件性能优化是指哪方面呢?个人的理解是,工具链在一般情况下都不会成为性能瓶颈,目前遇到的绝大部分场景Loader都能把后端存储打满,往往瓶颈是在存储IO上。当然,在工具链上的性能和易用性上面我们还是会持续优化改进的,比如Hubble新版界面将会支持可视化建模、数据导入、精细化图分析等功能。 感谢关注。
0
becke
becke
作为没有图数据库经验的人怎样系统的学习图数据库技术!学习路线是怎样的?需要哪些基础知识的储备?
J
JermyLi
另外,欢迎关注【图数据库】专栏:https://zhuanlan.zhihu.com/graph-db,那里会不定期更新图数据库的基础知识与技术应用。
J
JermyLi
建议:1、先学习图数据库的概念与优势。2、再结合实际例子了解应用流程:比如图建模、数据导入、图分析,形成全局认识。3、找一门图语言比如Gremlin,直接进行实践,很多技术点结合实际操作容易理解。4、慢慢形成图的思维方式,”万物互联“,最终从图数据里面挖掘关联关系的特征,可以学习各类通用的图算法,包括路径搜索、协同推荐、相似性、中心性、社区发现等类别的算法;若通用算法无法满足业务需求,则可自己开发
0
灰灰
灰灰

@JermyLi 原关系数据库需要考虑展示,看到网上有些图数据库的展示效果不错,是不是要考虑将原关系库转换为图数据库?要从哪一个方向考虑重构问题?

J
JermyLi
是的,相比关系数据库,图数据库的展示效果不错,直观自然。重构的思路是,把关系数据库中的实体转换为图中的顶点,把关系转换为边,剩下的就是将一条一条的局部数据插入到图中,图数据库会自动的构建好图结构,提供高效的图关联分析。
J
JermyLi
图优势: 1. 可以很自然的表达现实世界中的实体及其关联关系(对应图的顶点及边); 2. 灵活的数据模型可以适应不断变化的业务需求; 3. 灵活的图查询语言,轻松实现复杂关系网络的分析; 4. 关系型数据库在遍历关系网络并抽取信息的能力非常弱,图数据库则为此而生; 5. 关系型数据库在数据规模庞大时很难做多层关联关系分析(Join操作往往消耗过长时间而失败),图数据库则天然把关联数据连接在一起
J
JermyLi
关于转换,有部分图数据库提供了转换工具,HugeGraph图数据库可以通过Loader工具直接把关系数据库中的数据导入到图中,只需要配置一下映射即可(支持MySQL、Oracle、PostgreSQL、SQL-Server等),使用流程可参考:https://hugegraph.github.io/hugegraph-doc/quickstart/hugegraph-loader.html
0
震秦
震秦

@JermyLi 图数据库现阶段可能还是规模问题,有的只是在HBase 上套一层壳子。这不叫图数据库只是HBase上一种关联性关系的设计。对于规模、性能、易用性  @JermyLi   有什么经验分享。

J
JermyLi
图数据的规模确实是一个非常大的挑战,而图数据库的强需求往往又是:大规模数据的复杂关联分析场景。一般来说目前的图数据库支持10亿规模边还是比较常见的,HugeGraph有支持1000亿边规模的业务实践,理论上还可以更大规模。这对于传统关系型数据库来说是困难巨大的,当然不好跟HDFS这类文件系统的数据规模比,毕竟数据库专注的是高效查询和分析。
J
JermyLi
“壳子”的问题见仁见智,技术上大家可能觉得原生存储厉害,其实原生存储与否,本质上都是为了解决2个核心需求:存储数据与高效检索,归根到底是通过邻接表或类似思想来实现。原生存储与否,性能上两者一般不会有本质的差别。有不少同学问免索引邻接技术(一般认为是原生存储的专属),其实它并非银弹、有利有弊,后续我们也会分享一篇文章分析“免索引邻接并非完美”。欢迎关注知乎【图数据库】专栏。
J
JermyLi
规模、性能、易用性对于图数据库来说,都是非常核心的点。 规模上,更多的是工程化的实践,需要业务场景驱动、不断迭代提升; 性能上,在充分利用完磁盘存储的性能后,一般会往内存上进行优化来提升性能,但是大规模数据对内存依然是一个挑战;
J
JermyLi
易用性上,包括的方面就非常多了,好不好用是一个产品给用户的第一直观感受、也是影响更大范围推广使用的关键因素,我个人非常看重易用性,图数据库易用性主要表现在两个核心方面:可视化的操作界面降低用户门槛,简单一致的接口&标准的图查询语言,前者针对数据分析型用户、后者针对程序开发者来说。
0
LeoXu
LeoXu

@JermyLi 你好,我自己的工作经历中,会遇到从大量的数据中分析出统计数据过程缓慢的问题,想问下图数据库能否有效解决这个问题,是不是能达到秒出的效果,谢谢。

J
JermyLi
图数据库的一个核心是解决关联关系分析问题,如果统计的维度是关系分析,则可以秒级响应,如果是基于全量数据的统计,那是任何数据库都难以做到秒级的,图数据库也不例外。建议:或许某些场景可以通过索引来优化,或者通过并行计算来加速。需要针对具体需求进行分析。
0
刘忠雨
刘忠雨

引用来自“多睡多精神”的评论

@JermyLi  直接关注老师的GitHub了,学习了  ,请问python3.7运行应该也没有问题吧? 这个 配套代码 项目 ,为啥没有用TensorFlow或者caffe ?? 

这个技术选项考虑是?

python>=3.6
jupyter
scipy
numpy
matplotlib
torch>=1.2.0
https://github.com/FighterLYL/GraphNeuralNetwork

你好,近期我会组织一次对于该书籍的问答活动,敬请关注。鉴于自己的习惯,选用了Pytorch,TensorFlow2.0 现在跟Pytorch 使用接口差不多了,可进行快速迁移。

0
建安七子
建安七子

@JermyLi

你好,我之前使用hugegraph为基础做了一些图谱类的应用,在这方面并没有感觉相较于titan,neo4j有特别突出的优势,不知道这块是不是我没有用到。从hugegraph的定位以及以后的发展线路来讲是聚焦在图学习上吗?这块在把hugegraph-spark闭源之后不知道会不会推出其他新的工具?从技术路线上,hugegraph往后的版本会提供什么新的特性呢?

J
JermyLi
HugeGraph的优势主要包括:支持大规模数据与图分区、高性能、功能丰富、支持中文社区等,支持可视化的数据建模与导入、支持丰富的图算法和可视化图分析。 关于Neo4j、JanusGraph、HugeGraph这3个图数据库的详细对比,可以参考这篇文章:https://zhuanlan.zhihu.com/p/114834574
0
miller-he
miller-he

@JermyLi 你好,我目前从事开发的系统中存在很多图片文件,现在的处理手法都是利用传统有关系数据库来存放文件路径的方法来处理,对于后期的数据分析非常不友好,请问,类似的从传统数据库转成图象处理为主的系统,就如何引用图象数据库之类的来更新?

J
JermyLi
有一个经常引起误会的点:大家以为图数据库是处理图像的,其实这里的图是指Graph而非Image,图数据库是用来处理关联关系形成的网络图谱这种数据。所以你提到的这个问题是否也有一些误会? 关于问题“关系数据库存放文件路径时数据分析非常不友好”,是指文件路径和数据不在一起导致的吗?或许可以考虑对象存储系统,比如Ceph等。
0
该昵称已占用
该昵称已占用

@JermyLi 请问HugeGraph-Server配置 authentication 后,HugeGraph-Studio需要怎样配置才能正常连接server,文档中只有HugeGraph-Server的配置方式

J
JermyLi
hugegraph-studio 不支持配置用户认证,新版前端 hugegraph-hubble 是支持多图连接以及用户认证的,请关注。
0
多学习多思考
多学习多思考

@JermyLi  金融风控 用图数据库处理, 是如何发现 有贷款还不上的风险的问题的?  关联分析ip,手机号码吗?

多学习多思考
多学习多思考
回复 @JermyLi : 大量账户同时拥有同一个手机号 大量用户同时使用同一个手机或WiFi网络 同一个账号或设备在多平台申请借贷 自相矛盾关系检测,包括:用户填写的关系自相矛盾、用户公司地址自相矛盾、通话记录与职业自相矛盾等等 关系环路检测(比如检测是否有循环担保) 多层关系高度聚集性检测,比如大量账号通过大量虚假设备接入同一个网络
J
JermyLi
可以通过检测贷款资金去向、财务信息、通话信息等异常特征进行贷后风控。 贷前风控可以参考:https://zhuanlan.zhihu.com/p/114665466
返回顶部
顶部