Nebula Graph 技术总监陈恒:图数据库怎么和深度学习框架进行结合?
引子
Nebula Graph 的技术总监在 09.24 - 09.30 期间同开源中国·高手问答的小伙伴们以「图数据库的设计和实践」为切入点展开讨论,包括:「图数据库的存储设计」、「图数据库的计算设计」、「图数据库的架构设计」等方面内容,本文整理于他和开源中国小伙伴对图数据库的讨论内容~
嘉宾·陈恒介绍
陈恒,开源的分布式图数据库 Nebula Graph 技术总监,图数据库领域专家 & HBase Committer。北京邮电大学硕士,曾就职于蚂蚁金服、猿题库、网易等公司,一直从事基础设施相关研发工作。
本文目录
- 图数据库怎么和深度学习框架进行结合?
- 图数据库它可以被认为是 MySQL 中的一种数据库引擎,具备特殊的查询功能,以及特殊的数据结构?
- Nebula 和 Neo4j 的图数据库的优势和劣势?为何要新开发使用 Nebula ?
- 图数据库目前主要用于哪些应用场景?
- 图数据库和一般数据库结构相比,优势在哪里?
- Nebula 的实践问题
- 存储计算分离
- Nebula 高度可扩展具体指的是什么?存储层是否还支持其他类型的数据库?
- 「图数据库」是基于已有数据库衍生出来的产品吗?如何设计图数据库?
- 图数据库为何没有通用的图查询语言?
- 图数据库适合存储什么类型数据,比如树形目录?
- Nebula 的部署安装配置要求是什么?
图数据库怎么和深度学习框架进行结合?
Stiofan:
图数据库打破了关系数据库的这种古老数据存储模式,将图形化特性属性数据存入,但是关于这些特性化属性的数据使用图数据库和将其转换为类型数据放入深度学习框架,两个之间的关系或者说使用场景应如何来规划。
我们见过一些机器学习使用图数据库的 case,最主要的是 feature extraction 阶段,使用图数据库来拿到当前点相关联的点的一些属性作为 feature,或者产生一些随机游走的路径,使用图数据库可以大大加速整个过程。
图数据库它可以被认为是 MySQL 中的一种数据库引擎,具备特殊的查询功能,以及特殊的数据结构?
钛元素:
恒大你好,我对图数据库不是很明白,是否可以这样理解:它可以被认为是 MySQL 中的一种数据库引擎,具备特殊的查询功能,以及特殊的数据结构?谢谢。
不是特别准确, 图数据库是为了网络结构的数据(比如社交网络,资金网络等)而专门设计的一类数据库。 这类的数据库有着自己独特的数据组织形式, 以及自己独特的查询语句。 它并不是 MySQL 中的一种存储引擎, 而是一个独立的产品,就像 HBase 与 MySQL 的关系一样。
开源中国·sixliu 小伙伴补充:你可以这样理解,原先这些数据都是用关系数据库存的,分别为主体表和关系表,但是在应用使用时查询性能,比如查 n 度关系。所以为了提升查询使用图数据库天然符合,节点(主体)和边(关系),比如说要查 A 的 2 度关系,那么通过 id 直接 key 匹配到 A,然后再获取到路径 <=2 的节点就可以获得结果。
Nebula 和 Neo4j 的图数据库的优势和劣势?为何要新开发使用 Nebula ?
5G加ios:
Nebula 和 Neo4j 的图数据库的优势和劣势? 为何要新开发使用 Nebula ??
Neo4j 是目前市面上知名度最高的图数据库, 是一款非常优秀的产品。 但是开源的 Neo4j 最大的问题在于它是一款单机数据库, 扩展能力存在比较大的问题。 Nebula 是在互联网公司的长期实践中诞生的一款产品, 相比于Neo4j, Nebula 最大的特色便是分布式的架构,扩展性要好很多。
图数据库目前主要用于哪些应用场景?
crf1111:
你好,最近在开发分布式任务处理系统,使用到了有向无环图(DAG)的概念。请问,图数据库目前主要用于哪些应用场景。
对于Nebula,目前提供了几种 client 库,是否能兼容 python-networkx 中的 Graph 对象?
图数据库主要应用于网络结构数据的存储与查询, 比如在社交关系中, 查找一个人的 N 度好友(可以带一些过滤条件),用传统的关系数据库来搞,不仅性能不能满足要求, 还会使用很复杂的 SQL 描述, 对于用户十分不友好。 而在图数据库中,这样的查询就是一条语句而已。
当前 Nebula 提供了 Go / Java / C++ / Python 的 client,对于其他语言可以直接使用 thrift 生成相应的接口。而我们的 Python client 能链接 Nebula Graph,执行相应的 nGQL 语句,暂时不支持 python-networkx 中的 Graph 对象。
图数据库和一般数据库结构相比,优势在哪里?
KelvinQ :
请问图数据库和一般数据库结构相比,优势在哪里?
Everything is connected. 图数据库天生适合表达 connection,或者说多对多的关系。 图数据库可以很高效的查询几度关系,而传统关系型数据库不擅长,一般都需要做表连接,表连接是一个很昂贵的操作,涉及到大量的 IO 操作及内存消耗。当然,文档、关系型数据库和图数据库相互可借鉴点还是非常多的。
Nebula 的实践问题
Li_Peng :
您好,最近刚开始注意到 Nebula,有 3 个问题想请教一下:
1、Neo4j 社区版的单节点限制问题,目前看 Nebula 应该不存在类似问题,不知道这样理解是否正确?
2、Nebula 支持类 SQL 查询,是否有相关 JDBC 驱动可以使用?目前看 GitHub上貌似没有,后期是否会支持?
3、官方文档 https://docs.nebula-graph.io/manual-index/ 地址打开有点慢,目前是否有微信或者钉钉群可以交流?
- 是的, Nebula 相比于 Neo4j 最大的优势便在于分布式的设计。
- 目前我们使用的是 thrift rpc 进行 client 与 server 的通信。对于JDBC 的支持,如果客户的需求比较强烈,会考虑提供支持。
- 可以关注我们的微信公众号 NebulaGraphCommunity, 里面有微信交流群,可以添加我们的小助手进群:NebulaGraphbot
存储计算分离
长眉欧巴:
想问个跨界的问题,貌似目前的数据库走存算分离的路线,而硬件方面却走存算一体的路线,比如类脑芯片,参考人类大脑神经系统的功能。神经元是存算一体的(虽然还没定论,但这更可能)。而图数据库的结构天生跟神经系统有异曲同工之妙,到最后是不是更应该也存算一体?
所谓的存储计算分离,也没有说完全分割,比如说在 Nebula 里面,很多的计算其实是在存储层完成的,也就是所谓的计算下推。
之所以采用存储计算分离的架构,主要是为了扩展性和上云的考虑。
开源中国·sixliu 小伙伴补充:可以把它理解成之前 存储过程完成复杂逻辑->应用层完成逻辑。主要就是为了满足高容错和可扩展。存储层只要提供高度抽象的谓词下推即可。
Nebula 高度可扩展具体指的是什么?存储层是否还支持其他类型的数据库?
myw31415926:
陈大,您好。Nebula 的高度可扩展包含哪些,能说明一下吗?存储层是否还支持其他类型的数据库,如 Oracle 和 PostgreSQL?多谢
Nebula 采用了存储计算分离的架构,对于计算层,因为是无状态服务,可以随意扩容。对于存储层, 我们提供了扩容相关的运维语句,可以比较简单的扩容。存储层支持 storage plugin, 目前已经有 HBase 的 plugin,其他的 plugin 也可以根据需求来支持。但是我们并不推荐在关系型数据库上使用图数据库,因为这样的效率会非常低,扩展起来也会很麻烦。
「图数据库」是基于已有数据库衍生出来的产品吗?如何设计图数据库?
海参拉面:
老师,图数据库是基于现在已有的数据库产品衍生出来的吗?怎么设计呢?
图这种关联关系和相应的需求其实很早很早就有了,只是各种技术上的原因。
以前大家只能用关系型数据库来存储,但是这样需要使用者把关联关系适配成表结构,并不直观,所以图数据库也是这样发展出来的。
关于怎么设计,其实参考了很多 SQL,NoSQL 和各种分布式系统的工程实现,欢迎阅读 Nebula 的系列技术文章。
图数据库为何没有通用的图查询语言?
JIANGGuo:
你好,请问图数据库作为 NoSQL 中的一类,底层都是图数据结构来存储的,为什么没有通用的图查询语言呢,Nebula Graph 用 nGQL,Neo4j 用 Cypher ?谢谢。
很好的问题。
我觉得最大的原因是图数据库比较新,各家的产品应对的场景也不尽相同,所以到现在也没有产生统一的图查询语言。
图数据库适合存储什么类型数据,比如树形目录?
荒野刀客:
图数据库是否适合存储树形的数据,比如树形目录? Nebula 和 Neo4j 相比,语法是否兼容,是否容易切换?
数据结构上来说,树是图的子集。只是单纯树的业务场景不多,我碰到过的树的场景主要是数据仓库里面的数据血缘。
Nebula 语法上和 Neo4j 接近,但并不兼容。我们设计时语法更接近 SQL,你可以下个Docker 试试,我觉得花个 15 分钟,应该能熟悉语法了。
Nebula 的部署安装配置要求是什么?
图数据库猫:
数据库 Nebula Graph 可以安装在 Win7 64 上吗?CentOS 的版本有要求吗?
建议安装在 Linux 服务器上。如果是 Windows 环境,可以下载一个 Docker 试用,https://hub.docker.com/r/vesoft/nebula-graph. CentOS 建议版本是 7.5+
附录
最后是 Nebula 的 GitHub 地址,欢迎大家试用,有什么问题可以向我们提 issue。
GitHub 地址:https://github.com/vesoft-inc/nebula ,加入 Nebula Graph 交流群,请联系 Nebula Graph 官方小助手微信号:NebulaGraphbot
Nebula Graph:一个开源的分布式图数据库。
Nebula Graph 技术总监陈恒:图数据库怎么和深度学习框架进行结合?的更多相关文章
- 一图看懂深度学习框架对比----Caffe Torch Theano TensorFlow
Caffe Torch Theano TensorFlow Language C++, Python Lua Python Python Pretrained Yes ++ Yes ++ Yes ...
- 图数据库 Nebula Graph 是什么
图数据库(英语:Graph Database)是一个使用图结构进行语义查询的数据库.该系统的关键概念是图,形式上是点 (Node 或者 Vertex) 和边 (Edge 或者 Relationship ...
- 分布式图数据库 Nebula RC2 发布:增强了 CSV Importer 功能
Nebula Graph 是开源的分布式图数据库,可应用于知识图谱.社交推荐.风控.IoT 等场景. 本次 RC2 主要新增 GO FROM ... REVERSELY 和 GROUP BY 等语句, ...
- 让AI简单且强大:深度学习引擎OneFlow技术实践
本文内容节选自由msup主办的第七届TOP100summit,北京一流科技有限公司首席科学家袁进辉(老师木)分享的<让AI简单且强大:深度学习引擎OneFlow背后的技术实践>实录. 北京 ...
- 华为云ModelArts图深度学习,学习知识还能考取微认证
作为人工智能最前沿的技术之一,图深度学习被公认是人工智能认识世界实现因果推理的关键,也是深度学习未来发展的方向.但深度学习对图数据模型的支持性差一直是众多研究者难以攻克的难点,因此图深度学习在实际生产 ...
- 分布式图数据库 Nebula Graph 的 Index 实践
导读 索引是数据库系统中不可或缺的一个功能,数据库索引好比是书的目录,能加快数据库的查询速度,其实质是数据库管理系统中一个排序的数据结构.不同的数据库系统有不同的排序结构,目前常见的索引实现类型如 B ...
- COSCon'19 | 如何设计新一代的图数据库 Nebula
11 月 2 号 - 11 月 3 号,以"大爱无疆,开源无界"为主题的 2019 中国开源年会(COSCon'19)正式启动,大会以开源治理.国际接轨.社区发展和开源项目为切入点 ...
- Nebula Graph 在企查查的应用
本文首发于 Nebula Graph Community 公众号 背景 企查查是企查查科技有限公司旗下的一款企业信用查询工具,旨在为用户提供快速查询企业工商信息.法院判决信息.关联企业信息.法律诉讼. ...
- Nebula Graph 在网易游戏业务中的实践
本文首发于 Nebula Graph Community 公众号 当游戏上知识图谱,网易游戏是如何应对大规模图数据的管理问题,Nebula Graph 又是如何帮助网易游戏落地游戏内复杂的图的业务呢? ...
随机推荐
- 复习+dfs
1.参考:https://www.cnblogs.com/ckxkexing/p/8466097.html 这道题自己写过,还写过blog,但是第二次写还是不会. (于是开坑,想做做dfs的整理.
- gulp的介绍和手动安装
gulp, 前端自动化工具, 文件操作, 项目上线之前,将碎片文件合并,将ES6转成ES5,文件压缩,快速搭建服务器... gulp基于node环境 gulp就是node的一个非内置的小模块 gulp ...
- IDEA中工程上传到SVN
1.先在IDEA上集成SVN 2.查看SVN仓库:连接SVN ①此时应该先去SVN服务器中新建一个SVN服务: 点击下一步 点击下一步 点击create ②查看SVN仓库 先复制SVN的地址 把复制的 ...
- Linux上安装JDK1.7步骤
1.使用SecurtCRT连接上Linux,把jdk的压缩包传递过去:(传递的方法在我的博客中也有写,参考之前的博客) 2.解压缩jdk:tar -zxvf jdk-7u55-linux-i586.t ...
- android Action中的data属性
(2) 根据Action和Data匹配 <activity android:name=".MyActivityTwo" android:label="@string ...
- kafka对消费者分配分区规则(Java源码)
在上一篇 kafka topic消息分配partition规则(Java源码) 我们对生产者产生的消息分配partition规则进行了分析,那么本章我们来看看消费者是怎么样分配partition的. ...
- DevExpress的PdfViewer添加工具栏实现PDF打开、预览、保存、打印
场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...
- 【学习笔记】第二章 python安全编程基础---正则表达式
一.python正则表达式 定义:正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式相匹配: 1.1RE模块:是python语言拥有全部的正则表达式功能的一个正则模块: 常见 ...
- 分别设计点类Point和圆类Circle,点类有两个私有数据纵坐标和横坐标;圆类有也两个私有数据圆心和半径,其中圆心是一个点类对象;要求如下所述: (1) 通过构造方法初始化数据成员,数据成员的初始化通过构造方法的参数传递;(2) 分别编写点和圆的输出函数,其中圆的输出包括圆心和半径的输出;点的输出x,y;
题目相对简单: package naizi; public class Circle { //私有成员及构造方法 private Point center; private int r; Circle ...
- JS 防抖和节流
防抖和节流 在处理高频事件,类似于window的resize或者scorll,或者input输入校验等操作时.如果直接执行事件处理器,会增大浏览器的负担,严重的直接卡死,用户体验非常不好. 面对这种情 ...