原創/朱季謙
若你還沒接觸過圖數據庫,可能看到這個概念時,會比較蒙蔽。
圖是什么?圖數據庫又是什么?
首先,在數據結構中,圖是一種由頂點(vertex)集合及頂點間關系集合組成的一種非線性數據結構。
而圖數據庫,則是以圖這種具有點邊結構來增、刪、改、查之類操作的NoSQL數據庫,它特別擅長處理大數據之間的關聯。
常見的圖數據庫有Neo4j,JanuasGraph,Tigergraph等,其中,Gremlin是一種操作圖數據庫的圖語言,它是Apache ThinkerPop框架下的圖遍歷語言。
那么HugeGraph又是什么呢?
根據官網上的介紹,HugeGraph是一款易用、高效、通用的開源圖數據庫系統(Graph Database),實現了Apache TinkerPop3框架及完全兼容Gremlin查詢語言,支持百億以上的頂點和邊快速導入,並提供毫秒級的關聯關系查詢能力(OLTP),並可與Hadoop、Spark等大數據平台集成以進行離線分析(OLAP)。
HugeGraph是百度自主研發的圖數據庫,在2018年8月開始對外開源,我們之前做一款圖庫產品時技術選型就是選了HugeGraph,總體感覺這個技術比較前沿也比較厲害。
HugeGraph有以下特點:
-
頂點、邊:支持基本增刪改查操作,支持有向圖,支持兩頂點間同一類型多條邊,支持超級點。
-
屬性:支持屬性圖、支持多值屬性、支持多樣化的屬性類型、支持頂點屬性追加與合並。
-
元數據:支持豐富的Schema校驗,如屬性是否可空(可選),支持Schema動態修改。
-
索引:支持二級索引、范圍索引、全文索引,支持聯合索引。
-
事務:遵循Tinkerpop事務規范,支持Read Committed級別事務。
-
多頂點ID策略:支持主鍵ID、支持自動生成ID、支持用戶自定義字符串ID、支持用戶自定義數字ID。
-
大規模數據:支持批量插入頂點/邊、支持超級頂點、支持流式分頁獲取、支持Shard並行獲取。
-
優化的圖接口:最短路徑(Shortest Path)、K步連通子圖(K-neighbor)、K步到達鄰接點(K-out)等。
-
其它:支持圖變量(Graph Variables)、兼容性上已通過Apache Tinkerpop官方測試用例90%兼容測試。
說了這么多,那么圖庫技術有什么用呢?
主要可以用在知識圖譜、金融反欺詐、社交關系網絡、推薦、用戶分析、搜索等等,以及其他。
學習Gremilin的第一步,當然是從安裝環境開始,下面,我就把之前的安裝教程分享出來:
網盤下載核心安裝包HugeGraph Server包和圖形界面HugeGraph Studio包(截圖是目前最新版本)。
網盤下載地址:
鏈接:https://pan.baidu.com/s/11qPFOFU-d9nxGEdws4zggQ
提取碼:pqpy
利用HugeGraph學習Gremlin,主要只用安裝以上兩個包,它們的功能分別是:
核心HugeGraph-Server: HugeGraph-Server是HugeGraph項目的核心部分,包含Core、Backend、API等子模塊——
-
Core:圖引擎實現,向下連接Backend模塊,向上支持API模塊;
-
Backend:實現將圖數據存儲到后端,支持的后端包括:Memory、Cassandra、ScyllaDB、RocksDB、HBase及MySQL,用戶根據實際情況選擇一種即可;
-
API:內置REST Server,向用戶提供RESTful API,同時完全兼容Gremlin查詢。
可視化界面(hugegraph-studio):基於Web的可視化環境,提供圖操作界面、圖數據展示與分析。
一.先安裝HugeGraph Server。
1.把壓縮包放在你選擇放的文件夾里,進行解壓:
tar -zxvf hugegraph-0.10.4.tar.gz
解壓完成后,進入到已解壓的文件目錄里,執行:vim conf/rest-server.properties,進入到編輯狀態,將restserver.url改成:http://0.0.0.0:8080,代表本機以及其他機器都可以訪問,修改完成后,:wq保存退出。
2.配置文件修改完后,需對后端做初始化操作,執行指令:
bin/init-store.sh
執行成功會打印以下信息:
初始化完成后,自動生成一個corksdb-data的文件,這個文件禁止刪除,它是與數據存儲相關的文件,HugeGraph其實可以與Hbase等第三方組件集成,可在conf目錄下的hugegraph.properties文件中進行配置。
3.接下來就可以啟動HugeGraph Server服務了,執行指令:
bin/start-hugegraph.sh
執行成功后,會打印以下信息:
最后,輸入jps,若出現HugeGraph Server的進程,則證明已經安裝啟動成功。
二.接下來,就開始安裝啟動圖形化HugeGraph Studio
1.解壓HugeGraph Studio壓縮包:
tar -zxvf hugegraph-studio-0.10.0.tar.gz
解壓完成后,進入已解壓的文件目錄里,執行指令:vim conf/hugegraph-studio.properties,進行配置文件編輯狀態:
其中,studio.server.port填8088,studio.server.host填0.0.0.0,可令本機與本機之外的機器訪問,graph.server.host填的是HugeGraph Server所在機器的地址IP,其安裝在虛擬機192.168.200.128機器上,graphGraph Server.port對應的是HugeGraph Server配置設置的8080端口,只需修改設置下圖截圖ip與端口即可。
2.安裝完成后,即可執行指令bin/hugegraph-studio.sh進行啟動操作,成功啟動后,顯示打印以下信息:
在瀏覽器測試運行下,輸入1+3,若能顯示[4],即已經完整啟動完成,可在以下Studio界面玩Gremlin圖數據庫語言了。
過程遇到的問題:
剛開始,我參考網上一些教程,把HugeGraph Studio的配置文件中graph.server.host改成0.0.0.0。
發現可以出現圖形化界面,但是,在操作運行時,報了“Failed to connect HugeGraphServer.com.baidu.hugeGraph.rest.ClientException:Failed to do request的錯誤,后經檢查,發現這里不能填對應HugeGraph Server配置文件里設置的0.0.0.0,而需要填HugeGraph Server所在的機器Ip,例如其所在虛擬機Ip,這樣才能正常運行。
圖數據庫是一項很前沿的技術,歡迎小伙伴關注我,我會把學習筆記做成專欄記錄下來。