華為云GaussDB新產品特性亮相DTC2021,重磅新品開源預告
804
2025-04-07
11 月 2 號 - 11 月 3 號,以“大愛無疆,開源無界”為主題的 2019 中國開源年會(COSCon'19)正式啟動,大會以開源治理、國際接軌、社區發展和開源項目為切入點同全球開源愛好者們共同交流開源。
作為圖數據庫技術的代表,Nebula Graph 總監——吳敏在本次大會上將會講述了大規模分布式圖數據庫設計思考和實踐。在信息爆發式增長和內容平臺遍地開花的信息時代,圖數據庫在當中扮演了什么樣的角色?同傳統數據庫相比,圖數據庫又有什么優勢?圖數據庫開發需要哪些新技術?就此,開源社特訪吳敏來分享下圖數據庫主題內容,從圖數據 Nebula 的研發開始,就傳統數據庫面臨的挑戰,開源模式的優勢,Nebula 的社區開展和產品規劃等問題進行深入解析。
About Nebula 總監--吳敏
開源社:Hi,吳敏,先和大家介紹下自己。
大家好,我是吳敏,VEsoft 總監,博士畢業于浙江大學。 曾就職于阿里云、螞蟻金服,從事分布式圖數據庫以及云存儲相關工作。
開源社:談談您在?COSCon'19?上的分享話題。
隨著抖音、小紅書等社交內容平臺的爆紅誕生了一種基于社交關系網路的推薦需求,而以垂直領域作為切入點的知識圖譜過去兩年的“爆火”,傳統數據庫在處理社交推薦、風控、知識圖譜方面的性能缺陷,圖數據庫的研發應運而生。
本演講開篇將陳述圖數據庫行業現狀,讓你對圖數據庫存儲的數據及對場景有所了解,再從開源的分布式圖數據庫 Nebula Graph 切入深度講解大規模分布式圖數據庫應該如何設計存儲、計算及架構,最后講述開源對圖數據庫開發的影響。
內容大綱
圖數據庫概述及應用
Nebula Graph 設計介紹
技術細節
開源社區及服務
開源社:哪些人可以應該了解這個內容?
對圖數據庫有興趣,或是有推薦、風控、知識圖譜等業務場景需求的人。
Nebula 研發之旅
開源社:為什么給圖數據庫取名 Nebula ?
Nebula 是星云的意思,很大嘛,也是漫威宇宙里面漂亮的星云小姐姐。對了,Nebula的發音是:[?n?bj?l?]
開源社:現在數據庫領域百花齊放,國產的 OceanBase 和 TiDB 都發展得不錯,為什么還要研發 Nebula 這樣的圖數據庫?
OceanBase、TiDB 這類 NewSQL 最近發展勢頭很強勁,他們的出現更多的是對傳統單機的關系型數據庫在可用性的補充。
Nebula 聚焦在圖數據庫這一領域,也是近年來在數據庫各分支中增長最為快速的領域。圖數據庫使用圖(或者網)的方式很直接、自然的表達現實世界的關系: 用節點來表示實體,邊來表示關聯關系,everything is connected。能高效的提供圖檢索,提供專業的分析算法、工具,比如 ShortestPath、PageRank、標簽傳播等等。
開源社:圖數據庫應用場景有哪些?
典型的應用場景有社交網絡,金融風控,推薦引擎,知識圖譜等。
社交網絡,比如,推薦一條最短路徑讓我結識迪納熱巴,還可以加上篩選條件,路徑中的每個人都是單身女性。
金融風控場景,比如,去查一個信用卡反套現的網絡。很典型的一個場景,A 轉賬到 B,B 轉賬到 C,C 又轉回給 A 即是一個典型的閉環。對于這樣的閉環,這類查詢在圖數據庫大規模應用之前,大部分都是采用離線計算的方式去查找,但是離線場景很難去控制當前發生的這筆交易。一個信用卡交易或者在線貸款,整個作業流程很長,而在反套現這塊的審核時間又限制在毫秒級,這就是圖數據庫非常大的一個應用場景。
在推薦算法中,為某個人推薦他的好友?,F在的方案是去找好友的好友,判斷好友的好友有沒有可能成為某人的新好友,這當中涉及好友關系的親密度,抵達好友的好友的最短路徑等。業務方可能會用 MySQL 等傳統數據庫或是 HBase 來存各類好友關系,然后通過多個串行的 Key-Value 來做查詢,但這在線上場景是很難滿足性能要求的。
知識圖譜這些年非?;?,知識圖譜結合自然語言的形式在金融,醫療,互聯網等眾多領域被廣泛使用,常見的有語音助手、聊天機器人、智能問答等應用場景。而圖數據庫存儲的數據結構完全適配知識圖譜數據,圖譜中的實體對應圖數據庫的點,實體與實體的關系對應圖數據庫的邊,拿 Nebula 為例,Nebula Graph Schema 采用屬性圖,點邊上的屬性對應圖譜實體和關系中的屬性,邊的方向表示了關系的方向,邊上的標記表示了關系的類型。
再說到最近國內非?;鸬膮^塊鏈場景,由于區塊鏈上的所有行為都是公開被記錄的又是不可篡改的,因此所有的交易行為,不管是歷史數據,還是大概每幾分鐘產生的新 block,都可以對 DAT 文件解析后導入到圖數據庫和 GNN 中做分析。例如我們都聽說在一些數字貨幣場景下,洗錢、盜竊、團伙、操縱市場的各類事情很多,通過圖的手段包括可以幫助我們挖掘里面的非法行為。
開源社:作為圖數據庫,有參考借鑒了哪些數據庫嗎?哪些方面是 Nebula 有特點的設計?
Nebula 是完全自主研發的數據庫,它主要有以下的技術特點
對于 Nebula Graph 來講,有這么幾個技術特點:第一個就是采用了存儲計算分離的架構,主要好處就是為了上云或者說彈性,方便單獨擴容。業務水位總是很難預測的,一段時間存儲不夠了,有些時候計算不夠了。在云上或者使用容器技術,計算存儲分離的架構運維起來會比較方便,成本也更好控制。大家使用 HBase 那么久,這方面的感觸肯定很多。
Nebula Graph 的第二個技術特點是它的查詢語言,我們稱為 nGQL,比較接近 SQL。唯一大一點的語法差異就是 不用嵌套 (embedding)。大家都知道嵌套的 SQL,讀起來是非常痛苦的,要從里向外讀。另外,由于圖這塊目前并沒有統一的國際標準,這對整個行業的發展并不是好事,用戶的學習成本很高。目前有個 ISO / IEC 組織在準備圖語言的國際標準,我們也在積極兼容標準。
第三個特點就是 Nebula Graph 支持多種后端存儲,除了原生的引擎外,也支持 HBase。 因為很多用戶,對 HBase 已經相當熟悉了,并不希望多一套存儲架構。從架構上來說,Nebula Graph 是完全對等的分布式系統。
和 HBase 的 CoProcessor 一樣,Nebula Graph 支持數據計算下推。數據過濾,包括一些簡單的聚合運算,能夠在存儲層就做掉,這樣對于性能來講能提升會非常大。
多租戶,Nebula Graph是通過多 Space 來實現的。Space 是物理隔離。
除了圖查詢外,還有很常見的一種場景是全局的屬性查詢。這個和 MySQL 一樣,要提升性能的主要辦法是為屬性建立索引 ,這個也是 Nebula Graph 原生支持的功能。
最后的技術特點就是關于圖算法方面。
這里的算法和全圖計算不太一樣,更多是一個子圖的計算,比如最短路徑。大家知道數據庫通常有 OLTP 和 OLAP 兩種差異很大的場景,當然現在有很多 HTAP 方面的努力。那對于圖數據庫來說也是類似,我們在設計 Nebula Graph 的時候,做了一些權衡。我們認為全圖的計算,比如 Page Rank,LPA,它的技術挑戰和 OLTP 的挑戰和對應的設計相差很大。所以 Nebula 的查詢引擎主要針對 OLTP 類的場景。
那么,對于 OLAP 類的計算需求,我們的考慮是通過支持和 Spark 的相互訪問,來支持 Spark 上圖計算,比如 graphX。這塊工作正在開發中,應該在最近一兩個月會發布。
開源社:為什么會考慮存儲計算分離的架構呢?
存儲計算分離是個很熱的話題。我們將存儲模塊和 Query Engine 層分開主要有以下考慮。
成本的原因。存儲和計算對計算機資源要求不一樣,存儲依賴 I/O,計算對 CPU 和內存的要求更高,業務在不同的應用或者發展時期,需要不同的存儲空間和計算能力配比,存儲和計算的耦合會使得機器的選型會比較復雜,存儲計算分離的架構,使得 storage 的 scale out/in 更容易。
存儲層抽象出來可以給計算帶來新的選擇,比如對接 Pregel, Spark GraphX 這些計算引擎。通常來說,圖計算對于存儲的要求是吞吐量優先的,而在線查詢是時延優先的。通過把存儲層分離出來,不管是開發的時候(做 QoS )還是運維的時候(單獨集群部署),都會更容易一些。
在云計算場景下,能實現真正的彈性計算。
開源社:作為一個分布式數據庫,是如何保障數據一致性的?
我們使用 Raft 協議,Raft 一致性協議使得 shared-nothing 的 kv 有一致性保障。為什么選擇 Raft?相對于 Paxos,Raft 更加有利于工程化實現。Nebula 存儲層 Raft 使用 Multi-Raft 的模型,多個 replica 上的同一個 partition 組成一個 Raft 組,同一個集群內存在互相獨立 Raft 組,在一致性保障的同時,提高了系統的并發能力。
開源社:在數據庫的優化方面,Nebula 做了哪些?
Nebula 在數據優化方面主要做了以下工作:
異步和并發執行:由于 IO 和網絡均為長時延操作,Nebula Graph 采用異步及并發操作。此外,為避免一些大query 的長尾影響,為每個 query 設置單獨的資源池以保證服務質量 QoS。
計算下沉:為避免存儲層將過多數據回傳到計算層,占用寶貴帶寬,條件過濾等算子會隨查詢條件一同下發到存儲層節點。
數據庫系統的優化與數據的物理存儲方式以及數據的分布息息相關。而且隨著業務的發展,數據分布是會發生變化的,一開始設計的索引和數據存儲或者分區會慢慢變得不是最優的,這就需要系統能夠做一些動態的調整。我們 storage 支持 scale out/in, load balance。系統的調整會帶來 overhead,這是需要權衡考慮的問題。
開源社:現在市面上已有一些圖數據庫,Nebula 考慮兼容部分數據庫讓已有的用戶無縫切到 Nebula 嗎?
Nebula 有 CSV、HDFS 批量 數據導入工具。用戶可以將數倉的數據導入到 Nebula。也提供 C++,Java,Golang,Python 的客戶端。另外對于市面上已有的一些產品,現在也正在開發將它的數據格式直接解析為 Nebula 的數據格式,這樣就可以非常方便的遷移,包括查詢語言層面的兼容。
開源社:水平伸縮能夠支持多大的規模?
存儲層?shared-nothing?的架構,理論上支持無限加機器。
開源社:Nebula 最新的版本 RC1 支持最短路徑和全路徑算法,可以具體講下這塊的實現,及以后的研發規劃嗎?
目前實現較為簡單,基于雙向搜索,返回點邊組合的路徑。未來規劃是計劃在執行計劃與優化器都完成后,完善對路徑的支持,包括實現 match,支持雙向 bfs、雙向 dijkstra、allpair(全路徑),kshortest 等。當然我們歡迎社區的同學們都參與完善 Nebula 的路徑算法。
開源社:使用 Nebula 之前,用戶應該做哪些準備工作?
對于剛開始使用圖數據庫的用戶,我們提供了詳細的文檔;
對于已經在使用其他圖數據庫,想要試試 Nebula 的用戶,我們提供了數據導入等工具,有疑問或者任何問題,歡迎在 GitHub 上給我們提 issue,我們的工程師會在第一時間為您解答。
Nebula 和開源
開源社:作為一個企業級產品,為什么 Nebula 一開始就選擇了走開源路線?
如果沒 Linux,現在互聯網的格局也不會是今天這樣。我們想要建立圖數據庫的社區,做出更好的圖數據庫產品,也希望更多對 Nebula,對圖數據庫感興趣的同學成為社區的貢獻者,一起努力,共同建立一個互助互利的社區。
開源社:在開源的過程中,有遇到什么困難嗎?
很多人都想為開源做一份力,但會被開源項目的門檻“勸退”,尤其是 Nebula 是一個即使耕耘在數據庫領域多年的數據庫專家,如果對圖數據庫的不夠了解的話,都會感嘆“高大上”的一個項目。但技術是為業務服務的,所以 Nebula 力求自己的文檔讓你即使你對圖數據庫一無所知,通過 Nebula 的文檔也能夠了解到圖數據庫及其應用場景。
開源社:在開源社區搭建這塊,有什么可以和開源社小伙伴們分享的嗎?
開源項目最重要的是生態的搭建,Nebula Graph 剛開源半年在社區搭建這塊只能說略有心得,僅供大家參考 :) 開源社區運營主要從下面幾個方面展開
簡潔明了的文檔:一個好的文檔能讓使用者快速同產品拉近距離,Nebula 的文檔從“讓非技術人做技術事”的出發,力求即使你是一個不懂技術的人也可以按照文檔部署 Nebula,玩起來——用 Nebula 完成簡單的 CRUD,如果開源社的小伙伴閱讀過 Nebula 文檔覺得哪里有更改意見,歡迎聯系我們;
實時的反饋回復:用戶的反饋,我們會第一時間進行回復,在 GitHub 的 issue 及用戶交流群里進行回復;
同用戶直接對話:在線上,Nebula 在各大技術平臺同圖數據庫和 Nebula 愛好者們進行交流,包括 Nebula 架構設計、用戶使用實操等系列文章;在線下,我們也開展了主題 Meetup 同各地愛好者交流圖數據庫技術及 Nebula 的開發心得;
社區用戶體系:在 Nebula 的 GitHub 上,現階段你可以看到 3 種用戶,User、Contributor、Committer,User 通過向 Nebula 提 issue / pr 或者投稿等方式成為 Contributor,Contributor 再進階成為 Committer。配合 Nebula 開展的各類社區活動,eg:捉蟲活動,幫助社區用戶完成角色“升級”;
最后,打個小廣告:歡迎大家來參與到 Nebula 的建設中,為開源貢獻一份力 :)
程序員寄語
開源社: 作為資深數據庫從業人員,怎樣讓自己的眼界更加開闊,怎么獲取這個領域的最前沿信息?
多看看論文,看看開源分布式系統的設計以及源代碼;多關注數據庫的的會議,比如,SIGMOD, VLDB,關注學術界的最新成果;多關注業界相關公司的發展和動態,比如 OsceanBase,TiDB。
Nebula 有話說
以上為開源社對圖數據庫 Nebula 總監——吳敏的采訪,歡迎你關注 Nebula GitHub:github.com/vesoft-inc/nebula?了解 Nebula 最新動態或添加 Nebula 小助手為好友進圖數據庫技術交流群分享技術,小助手微信號:NebulaGraphbot
推薦閱讀
億萬級圖數據庫 Nebula Graph 的數據模型和系統架構設計
Nebula Graph 在 HBaseCon Asia2019 的分享實錄
Vol.03 nMeetup | 圖數據庫綜述與 Nebula 在圖數據庫設計的實踐
區塊鏈 知識圖譜 數據庫
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。