【高手問答彙總】聊聊圖數據庫 Nebula Graph

將數據資產視爲公司重要資產是企業的共識,數據的產生、存儲、消費…每個數據流動環節都不可忽視。伴隨着企業業務的多元化,一方面業務數據量激增,另一方面,數據不統一、數據孤島、數據價值被低估等問題也浮出水面,其根本原因在於忽視了數據之間的關聯性。

圖數據庫技術的出現,爲企業賦予了挖掘數據關聯價值的能力。而大數據時代的圖數據庫,除了具備優秀的關聯價值挖掘能力,還要應對海量數據的存儲計算挑戰。圖數據庫 Nebula Graph 應運而生,它是一款開源的分佈式圖數據庫,其 shared-nothing 分佈式架構和存儲與計算分離的架構特性,使得它尤其擅長處理千億頂點、萬億條邊的超大規模數據集,同時保持毫秒級低延時。Nebula Graph 目前已應用在多家互聯網頭部企業的金融風控、數據治理、實時推薦、智能問答等業務場景。

資深圖數據庫技術專家,開源的分佈式圖數據庫 Nebula Graph 研發商歐若數網 CEO Sherman 在 03.08 - 03.14 期間同 開源中國·高手問答 的小夥伴們以「聊聊圖數據庫 Nebula Graph」爲切入點展開討論,包括:「Nebula Graph 的技術設計」、「Nebula Graph 應用場景」、「圖數據庫技術展望」等方面內容,本文整理於他和開源中國小夥伴對圖數據庫的討論內容~

嘉賓簡介

Sherman,資深圖數據庫技術專家,現任杭州歐若數網科技有限公司 CEO,曾任職 Facebook、螞蟻金服等公司。一直從事圖數據庫研發工作,主導了分佈式圖數據庫 Nebula Graph 的研發,並將其開源爲美團、京東、騰訊等一線大廠業務所用。

本文目錄

  • 圖數據庫的場景應用
    • 和 AI 結合的場景
    • 對物聯網行業有沒有什麼應用場景
    • 圖數據庫的應用場景是什麼?有哪些行業應用?
  • 認識圖數據庫 Nebula Graph
    • Nebula Graph 高性能的原因
    • Nebula Graph 數據庫設計的取捨
    • Nebula Graph 的查詢優化
  • 圖數據庫 Nebula Graph 的未來
    • Nebula Graph 對 HDD 的支持程度
    • Nebula Graph 對客戶端的規劃
    • Nebula Graph 2021 年的開發重點和方向是什麼

圖數據庫的場景應用

和 AI 結合的場景?

@edra:請問這個作爲分佈式圖形處理數據庫,有和 AI 技術結合使用的場景嗎。

你好,目前跟 AI 結合的應用場景有兩類,一類是常見的知識圖譜,另一類是基於圖的機器學習,簡稱 GNN,在模型訓練中將數據之間的關聯關係考慮進去。

圖數據庫對物聯網行業有沒有什麼應用場景?

@豬娃娃:您好,圖數據庫對物聯網行業有沒有什麼應用場景?

物聯網本身是物體之間的關聯,所以很自然地可以用圖數據庫來存放,隨着智能汽車的使用,物聯網中的關係在動態變化中,圖數據庫是解決這種動態變化的關係網絡最好的工具。

圖數據庫的應用場景是什麼?有哪些行業應用?

@開源中國首席羅納爾多:您好,請問圖數據庫的應用場景是什麼?有哪些行業應用?

這個是一個通用問題啦,常見的是社交推薦、知識圖譜、金融風控、機器學習 AI、區塊鏈等等應用。你可以關注 Nebula Graph 之前的線下分享的文字整理稿:https://my.oschina.net/u/4169309/blog/3085990, 當然除了上面的,之前微衆銀行也分享了他們用圖數據庫 Nebula Graph 做數據治理的分享,可以看看我們發在開源中國的博文呀,感謝支持^ ^

認識圖數據庫 Nebula Graph

Nebula Graph 高性能的原因

@jasonwu24:老師您好!之前看過一篇文章,其中對比了 Neo4j、 Nebula Graph 以及 Huge Graph 這三大圖數據庫在入庫時間、一度好友查詢、二度好友查詢、共同好友查詢等幾個方面的性能,在導入性能上,數據量小的時候 Nebula Graph 的導入效率稍慢於 Neo4j,但在大數據量的時候 Nebula Graph 的導入明顯優於其他兩款圖數據庫。在 3 種查詢場景下, Nebula Graph 的效率都明顯高於 Neo4j,與 HugeGraph 相比也有一定的優勢。這是因爲 Nebula Graph 採用 shared-nothing 分佈式架構,所以更擅長處理千億節點萬億條邊的超大規模數據集嗎?除此之外還有沒有其他方面的原因使其性能更爲突出呢?謝謝!

你好,感謝提問。除了 shared-nothing 的架構,還有一方面是因爲數據分片和存儲的方式(將點和其相鄰的關係放在一起,增加 data locality),另外一方面我們在查詢層也做了一些優化,比如計算下推。具體可以參考我們的架構系列博客文章:https://nebula-graph.com.cn/tags/%E6%9E%B6%E6%9E%84%E5%89%96%E6%9E%90/

Nebula Graph 數據庫設計的取捨

@赤腳小子:在 NEBULA 研發過程中肯定會有很多取捨,比如事務,是否可以更新結構,歷史數據是否可以更新/刪除等等特性。

一開始 NEBULA 在做支持某些特性不支持某些特性的過程中,是怎樣的一個思考過程?一開始就有明確的使用場景/商業領域在指引?還是也是亦步亦趨直到最後走出自己的路的?

是的,在研發過程中是有取捨的,目前 Nebula 專注的場景是高併發低延時的 TP 場景。所以,取捨的原則就是一個新特性是否能很好地支撐 TP 場景的性能要求。隨着產品的成熟,我們也會慢慢開始支持 AP 場景,如離線分析和計算。

Nebula Graph 的查詢優化

@osc_64757058:請問 nebula graph 在查詢時有哪些優化,是否支持並行計算?

Nebula 在查詢時做了很多優化,如計算下推、執行計算重構等。Nebula 支持多種計算框架,例如 GraphX、Plato 等。

最佳分區配置

@becke:看介紹,Nebula Graph 使用了raft 協議保持數據一致性,性能由底層的 partition 數據決定,不清楚怎麼來選擇最佳的分區數據?

我們建議一臺機器上的分區數量不小於機器的 CPU 核數,同時考慮到未來擴容的需要,這個數量可以適當放大。 圖數據庫 Nebula Graph 的未來

Nebula Graph 對 HDD 的支持程度

@osc_ajxzbfuw:您好, Nebula 現在也是越來越火, 關注的人越來越多啦。

有個小需求, 就是 Nebula 增加是 HDD 磁盤的優化, 不知道可有這方面的計劃,優先級是怎樣的,畢竟 Nebula 可能還有更重要的功能需要開發、支持。

在實際的企業中, 受限於預算、審批流程等各種原因的限制,SSD 磁盤的主機並不容易獲得。

你好,由於 HDD 磁盤本身的限制,在數據量大的 TP 場景下,無論怎麼優化,性能都不會很好。如果你的數據量小到足夠放在內存中處理,今年我們會推出基於內存的存儲引擎,這樣可以解決你的問題。但是對於大數據量的 TP 場景,還是建議申請 SSD 磁盤。HDD 磁盤用於 AP 場景是可行的,今年我們會解決這個問題。

Nebula Graph 對客戶端的規劃

@荒野刀客 :你好 ,最近也在選型圖數據庫,初步考慮 nebula graph,但看到客戶端 cpp client 好像活躍度不高,沒幾個人在 github 上貢獻,而 go 語言等客戶端 SDK 貢獻者很多,這塊兒後續有什麼計劃?另外純 C 的客戶端也沒有看到 ,使用可以將 go 語言的 nebula client 編譯成動態庫,輸出一些 C API?

CPP Client 一直是我們優先級最高的 Client 之一,我們會持續支持。純 C 的客戶端目前確實沒有,這是因爲目前好像沒有看到這方面的需求,如果需求量大的話,我們也會考慮支持。也歡迎你來貢獻!

Nebula Graph 2021 年的開發重點和方向是什麼

@榮飛coder:1.Nebula Graph 2021 年的開發重點和方向是什麼?我知道 2.0 ga 馬上就要發佈了,這個應該算是一個里程碑;2.Nebula Graph的目的其實是發揮數據價值的。數據價值很重的一個方面是數據關係,圖計算在關係處理裏面作用很大(圖計算 我理解有限,還在學習),想知道圖計算和 Nebula Graph 結合的案例以及有沒有相關資料推薦啊,謝謝

  1. 2021 年的重點是在加強性能和穩定性的基礎上,增加圖計算的融合,同時推出雲服務;
  2. Nebula 跟圖計算結合的案例我們博客裏有幾篇,比如這篇 GraphX 的:https://nebula-graph.com.cn/posts/practice-graphx-nebula-graph-algorithm/

以上爲本次圖數據庫交流的整理,如果你打算使用圖數據庫,在使用 Nebula Graph 過程中遇到任何問題,記得來我們的論壇和我們交流下:https://discuss.nebula-graph.com.cn/ ,在實踐之前記得關注下我們的開源中國專欄瞭解更多 Nebula Graph 的特性呀:https://my.oschina.net/u/4169309

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