图数据库爱好者的聚会在谈论什么?

简介: 上周六,一群图数据库爱好者聚集在 Nebula Graph 总部,谈论了图数据库的…

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

聚会概述

在上周六的聚会中,Nebula Graph Committer 吴敏给爱好者们介绍了整体架构和特性,并随后被各位大佬轮番蹂躏(划掉)。

image.png

本次分享主要介绍了 Nebula Graph 的特性,以及新上线的《使用 Docker 构建 Nebula Graph》功能。

下面是现场的 Topic ( 以下简称:T ) & Discussion ( 以下简称:D ) 速记:

讨论话题目录

  • 算法和语言

    • 图库的 builtin 只搞在线查询可以吗?有必要搞传播算法和最短路径吗?Nebula 怎么实现对图分析算法的支持?
    • 为什么要新开发一种查询语言 nGQL?做了哪些优化?
    • 对于超大点,有啥优化的办法吗,或者对于构图有什么建议嘛?
    • 图库相比其它系统和数据库未来发展趋势,比如相比文档和关系型,它的核心价值是什么?
  • 架构和工程

    • key 为什么选择用 hash 而不是 range?
    • gRPC,bRPC,fbthrift 为什么这么选 rpc?有没有打算自己写一个?
    • 图库在设计上趋同化和同质化,架构上还有哪些创新值得尝试?
  • 关于生态

    • 图的生态怎么打造?和周边其它系统怎么集成融合?

算法和语言

T: 图库的 builtin 只搞在线查询可以吗?有必要搞传播算法和最短路径吗?Nebula 怎么实现对图分析算法的支持?

️D:Nebula 目前阶段侧重 OLTP,现在支持的算法是 全路径 和 最短路径 。在图库 builtin LPA 有不少工作要做(当然其实市面上也有产品),Nebula 现阶段的考虑是采用 存储计算分离架构 ,用户可以将图结构或者子图抽取到 GraphX 这种图计算框架,在图计算框架中实现传播算法。如果 OLTP 这块工作完成比较多了,再考虑向 OLAP 这个方向走。

T:为什么要新开发一种查询语言 nGQL?做了哪些优化?

️ D:其实目前市场上没有统一的图查询语言,可能 Cypher 和 Gremlin 影响力要大一些,当然要说图语言类的其实更多,比如还有 GraphQL,SPARQL。nGQL 与 SQL 接近,比较容易上手,但不用 SQL 那样嵌套(embedding)。

我感觉描述性的语言,大家的总体风格还是挺类似的,上手学习成本其实真没有想象那么高,花个十几分钟看看大概也明白了。有点类似中国各地方言(温州话除外,划掉),或者欧洲的各语言,共通的部分挺多的,连蒙带猜基本也能用。当然特别复杂的逻辑还是得看看手册才行。

优化方面:为避免存储层将过多数据回传到计算层,占用宝贵带宽,Nebula 做了 计算下沉 ,条件过滤会随查询条件一同下发到存储层节点。如果不带这个过滤,传 100% 和 1% 的数据,性能是数量级的差异。

对图查询的执行计划优化也进行了一定的探索,包括 执行计划缓存 和上下文无关语句的 并发执行 。当然其实查询优化挺难做的,我感觉 更能有效提升速度的是如何构图 。因为图的自由度还是挺大的,同一个东西,其实既可以构图成点、边也可以做成属性,其实对大多数目前的使用者来说,构图对性能的影响应该会比 DB 优化更明显更快。当然构图其实是和 DB 怎么实现也挺有关系的,比如减少网络传输(比如过滤)、用好 SSD 和 cache(比如减少随机读)、增加各种并发(多线程、多机)。

还有不要构造一个超大点出来,不然热点太明显了。回到语言,我们也考虑是不是 nGQL 上面加一层 Driver 支持 Cypher 和 Gremlin,比如 80% 的常见功能。还有就是考虑在 webconsole 上增加一些流程图的功能模块,CRUD 操作用图形化支持,复杂的就写 query,对长尾用户上手也有帮助。

T:刚才聊到超大点,有啥优化的办法吗,或者对于构图有什么建议嘛?

️ D:对于超大点建议还是构图和查询时,想办法处理(分解)比较好,这个和 SQL 分库分表差不多。比如:遍历过程中 touch 到的交易对手很大(比如:美团),那最好能给这种大点打标,遍历时候过滤掉。当然打标可能要离线 count 一下才知道。

比方说,根据业务类型、时间片段,把一个超大点最好能拆成多个小点,这样操作点一般不会落在一个 partition 上,再把当中热点的 partition 迁移到不同的机器上。举例来说,遍历太深的话,通常性能都不会太好,所以可以把属性放在起点和终点上。像 (Subject1)->(Predicate1)->(Object1)  这样, (Subject1)、(Predicate1)、(Object1) 三个节点,两跳深度,可能要走一次网络,但改成 (Subject1)-[Predicate1]->(Object1)  这样 -[Predicate1]->  改成一种类型的边,那就不走网络,特别当查询深度更深时,这种构图对性能优化很明显。类似的,还有属性值处理,如:起点的 Name(string),不要作为边属性,不然同一个点出去的所有边上都冗余了这个 Name(string),更新的时候也巨麻烦。

T:图库相比其它系统和数据库未来发展趋势,比如相比文档和关系型,它的核心价值是什么?

️ D: Everything is connected. 图数据库天生适合表达 connection,或者说多对多的关系。

图数据库可以很高效的查询几度关系,而传统关系型数据库不擅长,一般都需要做表连接,表连接是一个很昂贵的操作,涉及到大量的 IO 操作及内存消耗。

但我觉得其实文档、关系和图相互还是借鉴非常多的,我记得《DesigningData-Intensive Applications》里面有章就是做它们之间的比较。

架构和工程

T:key 为什么选择用 hash 而不是 range?

️ D:其实并不是一定要 hash,只是要求 vid 是定长的 64 bit。定长主要是出于对齐性能考虑,还可以用上 prefix bloomfilter。那么变长 id 一般 hash 成 64 bit 最简单,当然用户自己指定 vid 也是支持的,一般这个时候,需要把原始 id 放到点的属性里。

T:gRPC,bRPC,fbthrift 为什么这么选 rpc?有没有打算自己写一个?

️ D:从使用体验上看,fbthrift 易读性不错。gRPC 之前用过也挺多。当然写个好的 rpc 还是挺不容易的,这个轮子暂时不是很急迫。

T:图库在设计上趋同化和同质化,架构上还有哪些创新值得尝试?

️ D:其实图产品有很多,我觉得这些产品不能说都是趋同,毕竟从几个知名竞品的架构看,彼此之间相差还是蛮大的 :)。因为功能集和架构出发点主要还是针对业务目标,Nebula 设计目标是实现 万亿级别关联关系 和 大并发 低时延 ,所以选择了存储计算分离,存储层采用 raft 一致协议,数据 partition 到不同机器上。这样设计主要考虑到存储和计算两者的业务特点和增长速度不一样,比如 learner 可以拿来给一些 throughput 优先的场景使用,原集群给 latency 优先的场景使用。

说到大的架构创新,主要看长期的硬件更新速度。当然 DB 可做的优化的事情已经很多的,刚才 PPT 里面有提及。

T:在测试方面,Nebula 做了哪些工作?

️ D:一个是集成测试框架,包括 混沌工程 、 错误注入 这些,等完善之后也会开放出来。还有是关于测试集和数据集,对于 DB 来说,这部分的价值是最大的,不过图领域可参考的数据集较少,都是大家自己积累的。

关于生态

T:图的生态怎么打造?和周边其它系统怎么集成融合?

️ D:在查询语言方面,增加对 Gremlin、Cypher 的支持。

在工具方面,提供数据批量导入和导出的工具,比如 GraphX,Yarn,Spark 等。还有,就是对机器学习的需求支持,存储计算相分离的架构使得 Nebula 非常容易集成图计算框架。因为 Nebula 是开源产品,这些工具欢迎大家一起参与:)

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

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

官方博客:https://nebula-graph.io/cn/posts/

微博:https://weibo.com/nebulagraph

相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
目录
相关文章
|
开发框架 前端开发 .NET
C#编程与Web开发
【4月更文挑战第21天】本文探讨了C#在Web开发中的应用,包括使用ASP.NET框架、MVC模式、Web API和Entity Framework。C#作为.NET框架的主要语言,结合这些工具,能创建动态、高效的Web应用。实际案例涉及企业级应用、电子商务和社交媒体平台。尽管面临竞争和挑战,但C#在Web开发领域的前景将持续拓展。
705 3
|
8月前
|
Web App开发 传感器 物联网
WebGL 数字孪生项目开发
WebGL是实现网页端数字孪生的核心技术,无需插件即可调用GPU进行高性能3D渲染。项目开发多采用Three.js、Cesium等引擎,结合glTF模型、PBR材质与LOD优化,通过实例化渲染、纹理压缩与遮挡剔除保障性能。验收需关注帧率、加载速度、显存占用及数据延迟,确保跨端稳定运行。#webgl开发 #数字孪生
|
6月前
|
人工智能 自然语言处理 监控
企业有哪些Agent应用场景(2026年2月)
2026年,瓴羊基于“AgentOne”平台推出企业级AI智能体矩阵,涵盖Data Agent(数据治理)、数据分析Agent(自然语言问数)、客服Agent(情绪识别+服务转化)及营销Agent(创意→投放→归因全链路),助力5万+企业实现“AI+人”的超级组织升级。(239字)
|
5月前
|
自然语言处理 安全 搜索推荐
ChatGPT的实用应用场景汇总
随着人工智能技术的普及,ChatGPT已从单纯的聊天工具,转变为覆盖工作、学习、生活、娱乐等多领域的实用助手。
475 0
|
7月前
|
人工智能 程序员 调度
智能体来了(西南总部):AI调度官与 AI Agent 指挥官的 Prompt 与 Workflow 实战
在大模型落地产业的浪潮中,成都AI智能体产业基地正崛起为西南AI枢纽。AI Agent指挥官作为新职业角色,通过Prompt设计、Workflow编排与多智能体协同,推动AI从“能聊天”到“会办事”的跃迁,成为企业智能化转型的核心调度者。
416 4
|
8月前
|
人工智能 自然语言处理 监控
AI Ping: 一站式大模型服务评测与API调用平台技术解析
在当前大模型应用爆发式增长的背景下,开发者面临着一个共同的痛点:如何高效、低成本地调用大模型服务? 本文将深入解析AI Ping如何通过其vibe coding工具链实现"零成本"接入三大主流免费模型,帮助开发者在日常开发中显著降低AI使用成本。
AI Ping: 一站式大模型服务评测与API调用平台技术解析
|
7月前
|
机器学习/深度学习 人工智能
从“复读机”到“学霸”:大模型参数避坑指南与实战模板
AI博主详解大模型调参核心:学习率、训练轮次、Dropout三大关键参数,用炒菜类比讲清原理;提供新手“抄作业”配置表、问题诊断方案及LLaMA-Factory一键调参工具推荐,助你告别复读机,提升模型泛化能力。(239字)
287 0
|
监控 NoSQL 算法
百万级URL重定向工程:大规模网站架构设计与性能优化实战
本文深入探讨了大规模重定向系统的核心挑战与解决方案,涵盖技术瓶颈分析、分布式架构设计、十亿级URL处理策略、全球化部署方案及全链路监控体系。通过数学建模与性能优化,提出三层架构模型,并结合一致性哈希分片算法实现高效路由。同时,对比不同架构的吞吐量与容灾能力,分享某电商平台实践案例,展示性能显著提升。最后展望重定向即服务(RaaS)未来趋势,包括AI动态路由、量子安全跳转和边缘智能等关键技术,为企业提供扩展性强、稳定性高的系统设计参考。
520 25
|
Web App开发 数据安全/隐私保护
快手批量发布作品工具,短视频一键发布到多个平台, 自媒体批量发布工具
这个批量发布工具支持快手、抖音、B站和YouTube平台,使用Selenium实现自动化上传
|
测试技术 语音技术 索引
GenPRM:思维链+代码验证,通过生成式推理的过程奖励让大模型推理准确率显著提升
本文提出GenPRM,一种生成式过程奖励模型,通过显式Chain-of-Thought推理与代码验证提升大型语言模型性能。针对传统PRMs的局限,GenPRM结合相对进展估计和监督微调,优化推理评估精度。实验表明,GenPRM在ProcessBench及数学任务中显著优于现有方法,且可通过测试时扩展进一步增强性能。然而,该方法在计算开销和跨领域应用上仍存在局限性。
595 0
GenPRM:思维链+代码验证,通过生成式推理的过程奖励让大模型推理准确率显著提升