OPPO 圖數(shù)據(jù)庫平臺(tái)建設(shè)和業(yè)務(wù)落地
1、什么是圖數(shù)據(jù)庫
圖數(shù)據(jù)庫(Graph database)是以圖這種數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)和查詢的數(shù)據(jù)庫。與其他數(shù)據(jù)庫不同,關(guān)系在圖數(shù)據(jù)庫中占首要地位。這意味著應(yīng)用程序不必使用外鍵或帶外處理(如 MapReduce)來推斷數(shù)據(jù)連接。與關(guān)系數(shù)據(jù)庫或其他 NoSQL 數(shù)據(jù)庫相比,圖數(shù)據(jù)庫的數(shù)據(jù)模型也更加簡(jiǎn)單,更具表現(xiàn)力。
圖數(shù)據(jù)庫在社交網(wǎng)絡(luò)、知識(shí)圖譜、金融風(fēng)控、個(gè)性化推薦、網(wǎng)絡(luò)安全等領(lǐng)域應(yīng)用廣泛。
2、圖數(shù)據(jù)庫調(diào)研
2.1、調(diào)研背景
隨著知識(shí)圖譜等業(yè)務(wù)數(shù)據(jù)的不斷增長(zhǎng),現(xiàn)有圖數(shù)據(jù)庫 JanusGraph 應(yīng)對(duì)已經(jīng)比較吃力,導(dǎo)入時(shí)間已經(jīng)無法滿足業(yè)務(wù)的要求。因此尋找性能更好的開源屬性圖數(shù)據(jù)庫已經(jīng)成為了當(dāng)前迫切要做的事情。
2.2、調(diào)研過程
第一步,搜集常見的開源分布式屬性圖數(shù)據(jù)庫,
第二步,基于美團(tuán)、LightGraph、TigerGraph、GalaxyBase 等圖數(shù)據(jù)庫測(cè)試報(bào)告,分析可得幾個(gè)圖數(shù)據(jù)庫性能
第三步,為了驗(yàn)證 Nebula Graph 的性能,對(duì) Nebula Graph 和 JanusGraph 進(jìn)行了一次性能對(duì)比測(cè)試,測(cè)試結(jié)果如下:
2.3、調(diào)研結(jié)論
Nebula Graph 導(dǎo)入性能、響應(yīng)時(shí)間、以及穩(wěn)定性均符合需求,支持?jǐn)?shù)據(jù)切分,分布式版本免費(fèi)開源,使用的企業(yè)也多,中文文檔,文檔全面,社區(qū)活躍,是開源圖數(shù)據(jù)庫的理想選擇。
3、Nebula Graph 簡(jiǎn)介
圖片來源于 Nebula Graph 文檔站
Nebula Graph 是一款開源的、分布式的、易擴(kuò)展的原生圖數(shù)據(jù)庫,能夠承載數(shù)千億個(gè)點(diǎn)和數(shù)萬億條邊的超大規(guī)模數(shù)據(jù)集,并且提供毫秒級(jí)查詢。
Nebula Graph 基于圖數(shù)據(jù)庫的特性使用 C++ 編寫,采用 shared-nothing 架構(gòu),支持在不停止數(shù)據(jù)庫服務(wù)的情況下擴(kuò)縮容,而且提供了非常多原生工具,例如 Nebula Graph Studio、Nebula Console、Nebula Exchange 等,可以大大降低使用圖數(shù)據(jù)庫的門檻。
圖片來源于 Nebula Graph 文檔站
Nebula Graph 由三種服務(wù)構(gòu)成:Graph 服務(wù)、Meta 服務(wù)和 Storage 服務(wù),是一種存儲(chǔ)與計(jì)算分離的架構(gòu)。
4、圖數(shù)據(jù)庫平臺(tái)建設(shè)
之前在使用 JanusGraph 的時(shí)候,遇到過導(dǎo)入緩慢、查詢慢、高并發(fā) OOM(JanusGraph 線程池采用無界隊(duì)列導(dǎo)致)、FULL GC(業(yè)務(wù) Gremlin 語句中包含 Value 導(dǎo)致元空間不斷膨脹導(dǎo)致)等問題,這些在切到 Nebula Graph 后基本得到了解決。
JanusGraph 并沒有好用的管理界面,如上圖所示,我們開發(fā)了一套包含多圖管理、Schema 管理、圖可視化、圖導(dǎo)入、權(quán)限管理的管理界面。
而 Nebula Graph Studio 提供多圖管理、Schema 管理、圖可視化、圖導(dǎo)入等功能,省去了很多開發(fā)工作,降低了使用門檻。
整個(gè)圖數(shù)據(jù)庫平臺(tái)的結(jié)構(gòu)如上圖所示,基于 Nebula Graph 和 Nebula Graph 官方工具,著重開發(fā)了 全量導(dǎo)入、增量導(dǎo)入、圖導(dǎo)出、備份/還原、查詢工程(圖檢索)等功能。
5、業(yè)務(wù)落地
5.1、知識(shí)圖譜及智能問答
5.2、內(nèi)容標(biāo)簽
5.3、數(shù)據(jù)血源
在數(shù)倉中,經(jīng)常需要運(yùn)行各種 ETL Job,數(shù)據(jù)表和任務(wù)非常多,如何直觀的觀察數(shù)據(jù)表上下游與任務(wù)之間的關(guān)系變成一個(gè)亟需解決的問題。
5.4、服務(wù)架構(gòu)拓?fù)?/p>
6、總結(jié)
通過知識(shí)圖譜等業(yè)務(wù)實(shí)踐落地,完成了從 JanusGraph 向 Nebula Graph 的轉(zhuǎn)變,導(dǎo)入性能提升了一個(gè)數(shù)量級(jí),查詢性能以及并發(fā)能力都有 3-6 倍的提升。而且,Nebula Graph 比 JanusGraph 更穩(wěn)定。在實(shí)踐的過程中,也遇到過很多問題,得到了 Nebula Graph 社區(qū)非常多的幫助,十分感謝社區(qū)的支持!
圖數(shù)據(jù)庫在最近這幾年發(fā)展很快,Neo4j 今年上半年融資3.25 億美金,刷新了數(shù)據(jù)庫的融資記錄。Gartner 發(fā)布的報(bào)告指出:“到 2023 年,圖技術(shù)將促進(jìn)全球 30% 企業(yè)的快速?zèng)Q策場(chǎng)景化。圖技術(shù)應(yīng)用的年增長(zhǎng)率超過 100%。”隨著 5G 和物聯(lián)網(wǎng)的普及,圖數(shù)據(jù)庫將成為處理關(guān)系的基礎(chǔ)設(shè)施。
作者簡(jiǎn)介
Qirong, OPPO 高級(jí)后端工程師, 主要從事圖數(shù)據(jù)庫、圖計(jì)算及相關(guān)領(lǐng)域的工作。


