回顧 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
  • 重構了 GO planner;pr#5369
  • graphd 配置文件中添加了部分性能選項;pr#5463

如果你對各個 NebulaGraph 版本的具體的 release note 有興趣,可以前往 GitHub 頁面閱讀各個版本的信息:https://github.com/vesoft-inc/nebula/releases

2023 年新晉周邊工具

image

除了官方出品的周邊工具之外,在 nebula-contrib 組織下收錄了大量社區用戶貢獻的實用工具。而今年,這個組織下又有了新動態:

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#3944KubeBlocks#3981 兩個 PR 完成 KubeBlocks 和 NebulaGraph 的集成,讓更多的 K8s 愛好者們可以有更多的數據庫部署選擇。

感謝你對 NebulaGraph 的關注 (///▽///)

如果你有什麼需求社區還未安排上,來和星雲小姐姐 說道說道。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章