回顾 2023,NebulaGraph 的这一年的变化

一年又过去了,感谢你和 NebulaGraph 一起又走过一个春夏秋冬。在这 365 天里,我们一起见证了 214 个 commit 带来的 NebulaGraph 3 个中版本的上线,它们分别是 v3.4.0、v3.5.0 和 v 3.6.0;除了内核经历了 3 个中版本的迭代之外,NebulaGraph 在 2023 年也迎来一大波新周边工具,以及已有周边工具的大更新。
由于篇幅的关系,现在我们来相对克制地了解下这 3 个版本和周边工具。
2023 年 NebulaGraph 的内核变更
一直以来,稳定性和高性能在 NebulaGraph 的产品规划中都是重中之重。今年,NebulaGraph 更是把稳定性作为第一优先级:在功能上,引入了 Memory Tracker 功能(该功能开发者分享了一篇从原理讲起的文章《内存管理实践之 Memory Tracker》);在测试上,进行了多轮的覆盖测试,同时引入了 fuzzer 等测试工具及方法,对 NebulaGraph 做了一次彻底的“全身体检",也纠正和限制了一些不符合预期的行为。
在整体上,从 v3.3.0 到 v3.6.0,NebulaGraph 的稳定性有了明显的提升;而最新的发行版 v3.6.0 版本,在性能上,针对图上常用的路径查询、多跳查询上,均有不同程度的性能提升,最高提升了 6 倍。
以下罗列了一些大家不可错过的新特性:
KILL SESSION可终止执行过慢的查询语句;#pr5146- 支持在返回语句中使用像
v.tag这样的表达式;#pr5440 - 支持
UPDATE语句中的json_extract函数;#pr5457 - 支持在
EXPLAIN输出中使用 TCK 格式;#pr5414 - DML 支持参数;
#pr5328 - 支持使用
MATCH子句检索 VID 或属性索引时使用变量;pr#5486#5553 - 优化
MATCH语句查询不存在的属性时的性能;pr#5634 - 增强了聚合函数中的属性裁剪功能;
pr#5301 - 提高了遍历执行器的性能;
pr#5308 - 优化了
FIND ALL PATH性能;pr#5409 MATCH支持 ID 集合;pr#5360- 重构了
GOplanner;pr#5369 - graphd 配置文件中添加了部分性能选项;
pr#5463
如果你对各个 NebulaGraph 版本的具体的 release note 有兴趣,可以前往 GitHub 页面阅读各个版本的信息:https://github.com/vesoft-inc/nebula/releases
2023 年新晋周边工具

除了官方出品的周边工具之外,在 nebula-contrib 组织下收录了大量社区用户贡献的实用工具。而今年,这个组织下又有了新动态:
- 2 月新增 10s 拉起 NebulaGraph Docker 服务的 nebulagraph-docker-ext:https://github.com/nebula-contrib/nebulagraph-docker-ext
- 4 月新增支持 GraphQL 查询的 NebulaGraphQL:https://github.com/nebula-contrib/NebulaGraphQL、将查询结果转为 JSON 格式的 NebulaResultSetBoot:https://github.com/nebula-contrib/NebulaResultSetBoot
- 9 月新增 Scala 客户端 zio-nebula:https://github.com/nebula-contrib/zio-nebula
- 10 月新增可用来做容器化测试的 testcontainers-nebula:https://github.com/nebula-contrib/testcontainers-nebula、基于 Plato 实现 PersonalizedPageRank、TrustRank、BeliefPropagation 三个图算法的 analytics:https://github.com/nebula-contrib/analytics、NebulaGraph Operator 的 CLI 工具 operator-cli:https://github.com/nebula-contrib/operator-cli、采用游戏引擎 CoCos 实现的可视化图探索工具 graph-player:https://github.com/nebula-contrib/graph-player
2023 年周边工具重大变化
不像 nebula-contrib 组织下的项目从零到一,下面这些大家熟悉的周边工具在 2023 年也迎来了大的功能迭代:
- 可视化工具 nebula-studio,在
nebula-studio v3.7.0版本中对 ARM 架构进行了适配,在
pr#667中优化了执行计划的可视化; - 数据导入工具 nebula-importer在 v4.0.0 版本中进行了重构,极大地提高了导入性能和导入配置文件的可读性;
- 数据导入工具 nebula-exchange在 v3.4.0 版本支持了对 HDFS 配置文件的读取,在 v3.5.0 中支持了对数据源做预处理,v3.6.0 的 nebula-exchange 则支持了批量的删除和更新操作,最新的 v3.7.0 中 nebula-exchange 支持根据数据源获取模板配置文件;
- 大数据工具 nebula-spark-connector 在 v3.6.0 对 Spark 3 进行了支持;
- 大数据工具 nebula-flink-connector 在 3.5.0 对动态表 Sink 的增删改进行了支持;
- 客户端 nebula-go 在 v3.4.0 支持了 JSON 格式的执行计划数据返回,在 v3.6.0 支持了 HTTP/2;
- 客户端 nebula-java 在 v3.4.0 支持了 Session ID 的获取以及可
Ping指定 Session,在 v3.5.0 支持配置SessionPoolConfig.setReconnect()来设定客户端是否进行现有可用服务的重连接,在 v3.6.1 支持了 HTTP/2; - 客户端 nebula-console 在 v3.4.0 支持了 ARM 架构下的 Docker 镜像,在 v3.6.0 支持了 HTTP/2;
- K8s 运维工具 nebula-operator 在 v1.4.0 支持了备份恢复(将在 v1.9.0 发布定时备份),在 v1.5.0 支持了 mTLS、日志定时清理、init-container 等特性,在 v1.6.0 支持了 Zone 可用在云上多个可用区场景,在 v1.7.0 支持了 HPA、存储卷扩容;
- 由 @CurvusY 维护的 NebulaGraph + Spring Boot 的数据库 ORM 框架 ngbatis 在 1.1.2 中支持了 nebula-java 的 session pool 以及使用 java 的继承关系实现数据库多标签的操作,而 v1.2.0 在 XML 中支持
ngql + include的用法,拓展了 NebulaDaoBasic 的多个接口,v1.2.0-jdk17 中支持了 Spring Boot 3.x。
2023 年的 NebulaGraph 和 Doris 以及 KubeBlocks
2023 年的 NebulaGrpah 不只是专注自身的发展,也同其他的开源项目紧密合作,比如:高性能实时分析数据库 Apache Doris 和云原生数据基础设施管理平台 KubeBlocks。
- Doris#19209 在这个 PR 中,知乎技术团队对 Doris 扩充图引擎 NebulaGraph,在多维分析和全文检索的基础上实现与图引擎的结合。
- KubeBlocks#3944、KubeBlocks#3981 两个 PR 完成 KubeBlocks 和 NebulaGraph 的集成,让更多的 K8s 爱好者们可以有更多的数据库部署选择。
感谢你对 NebulaGraph 的关注 (///▽///)
如果你有什么需求社区还未安排上,来和星云小姐姐 说道说道。
回顾 2023,NebulaGraph 的这一年的变化的更多相关文章
- Meteor+AngularJS:超快速Web开发
为了更好地描述Meteor和AngularJS为什么值得一谈,我先从个人角度来回顾一下这三年来WEB开发的变化: 三年前,我已经开始尝试前后端分离,后端使用php的轻量业务逻辑框架.但 ...
- 设计模式学习--复合模式(Compound Pattern)
设计模式学习--复合模式(Compound Pattern) 概述 ——————————————————————————————————————————————————— 2013年8月4日<H ...
- 2017年UX设计流行的六大趋势
UX设计在接下来的2017年会有怎样的发展趋势呢?让我们一起回顾去年用户体验设计领域中的变化,来展望新一年用户体验设计的发展趋势吧. 1. 原型制作的爆炸性增长 随着用户体验设计师和用户界面设计师 ...
- webpack 之 webpack-dev-server自动刷新
watch 首先介绍watch选项,参考这里.可实现相关源文件改变后自动更新bundle.js文件的功能.在配置文件中添加 watch:true 或执行 webpack -w,即可开启watch功能: ...
- vue--》如何使用wacth监听对象的属性变化?
在开发过程中,我们经常需要监听watch监听一个对象的变化,但是如何来实现 监听对象中属性的变化呢? 先回顾一下如何监听整个对象的变化,使用watch就行了 export default { ...
- [技术博客]在团队中使用Pull Request来管理代码
在团队中使用Pull Request来管理代码 前言 在参加多人共同开发项目,且选用Git作为代码托管工具的时候,我们不免会遇到分支冲突.覆盖.合并等问题.显然,因为同一个仓库是属于大家的,所以每个人 ...
- 再聊我们自研的那些Devops工具
两年前我写了篇文章『我们自研的那些Devops工具』介绍了我们自研的一些DevOps工具系统,两年过去了这些工具究竟还有没有在发光发热,又有哪些新的变化呢,我将通过这篇文章来回顾一下这两年的发展与变化 ...
- 2021 & 2022年终回顾:山河无恙,烟火寻常
前言 又到了一年一度年终回顾的时候了,回想起去年年底圣诞节的时候由于忙着参加黑客松大赛,一下子就进入了新的一年,失去了年终回顾的动力,所以今年提前两个月开始进行回顾,这样的话今年最后一天就可以顺利发文 ...
- 痞子衡嵌入式:盘点国内Cortex-M内核MCU厂商高主频产品(2023)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是国内Cortex-M内核MCU厂商高主频产品. 在 2021 年初痞子衡写了篇 <盘点国内Cortex-M内核MCU厂商高性能产品 ...
- 2023 年该学点什么技术?「GitHub 热点速览 v.23.03」
春节期间,小鱼干读了一篇万字回顾数据库行业的文章,在文字缝隙里我看见了两个词:AI+ 和数据两个词(当然数据是废话,毕竟是一个数据库的回顾文).在 GitHub 上热点趋势上,可见到 AI+ 的身影, ...
随机推荐
- 【小测试】fastcgo 调用 c 代码
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 找到了一个项目 https://github.com/pe ...
- 【Java】ArrayList线程不安全的坑
问题复现: 使用Java的steam().paralleStream(),foreach()方法向ArrayList添加数据,导致ArrayList中出现空值,代码如下: public static ...
- 文心千帆:PPT 制作、数字人主播一键开播等数十种应用场景惊艳到我了,下面给出简介和使用指南,快去使用起来吧
文心千帆:PPT 制作.数字人主播一键开播等数十种应用场景惊艳到我了,下面给出简介和使用指南,快去使用起来吧 文心千帆大模型平台是面向企业开发者的一站式大模型开发及服务运行平台.文心千帆不仅提供了包括 ...
- 从零开始的知识图谱生活,构建一个百科知识图谱,完成基于Deepdive的知识抽取、基于ES的简单语义搜索、基于 REfO 的简单KBQA
从零开始的知识图谱生活,构建一个百科知识图谱,完成基于Deepdive的知识抽取.基于ES的简单语义搜索.基于 REfO 的简单KBQA 个人入门知识图谱过程中的学习笔记,算是半教程类的,指引初学者对 ...
- VB6的Office颜色菜单 - 开源研究系列文章
今天把VB6里面的源码开源了( VB6各类源码开源 - 开源研究系列文章 ),这次把原来VB6里面的一个菜单控件进行介绍,需要的网友请下载安装: 1.看使用截图: 运行时截图: 设计时截图: 2.Of ...
- Linux进程通信-POSIX IPC
前言 Linux POSIX IPC的可移植性是不如System V IPC的,但是我们只用Linux,并且内核版本高于2.6.6的话就不存在该问题了.也因为POSIX IPC出现的比较晚,借鉴了sy ...
- (python)代码学习||2024.2.3||题目是codewars上的【Validate Sudoku with size `NxN`】
题目的要求是写一个Sudoku类,类中要有一个实例函数判断传给对象的二维数组是否符合数独规则 题目链接:https://www.codewars.com/kata/540afbe2dc9f615d5e ...
- [Java] 详细解说final关键字
final final 可以修饰变量.方法和类,表示所修饰的内容一旦赋值之后就不会再被改变.例如String类就是一个final类型的类. 1.具体使用场景 1.1 变量 1.1.1 成员变量 每个类 ...
- Pandas分析泰坦尼克号生还比例
提出问题 影响乘客生还的因素很多,这里只对乘客的性别.年龄.乘客等级.这三个因素感兴趣, 看看这四个因素是否会影响乘客的生还率. 1.性别是否会影响生还率 2.年龄是否会影响生还率 3.乘客等级会否会 ...
- CSS浮动&定位&布局
浮动简介 浮动最早起设计出来是为了实现文字环绕图片或者文字环绕的效果,现在浮动是主流的页面布局方式之一 float:浮动属性,值可以是left.right对应向左和向右浮动 元素浮动之后的特点 脱离文 ...