最近在搞好友推薦方便的工做,選擇了圖數據的方法,使用並學習了HugeGraph,再次記錄一下。html
HugeGraph是百度在2018年中旬開源的一款圖數據庫(Graph Database)系統,能夠存儲海量的頂點(Vertex)和邊(Edge)。實現了Apache ThinkerPop 3[^1]框架,支持Gremlin圖查詢語言[^2]。HugeGraph支持多用戶並行操做,用戶可輸入Gremlin查詢語句,並及時獲得圖查詢結果。也能夠再用戶程序中調用hugeGraph API進行圖分析或查詢。java
HugeGraph支持在線及離線環境下的圖操做,支持批量導入數據,支持高效的負責關聯關係分析,而且可以與大數據平臺無縫集成。git
HugeGraph具有以下特色:github
**總結:**部署HugeGraph須要HugeGraph-Server,在網頁上操做圖須要HugeGraph-Studio,在java項目中操做圖須要HugeGraph-Client,其餘三個視狀況須要的時候再部署使用。算法
依賴:sql
JDK1.8shell
使用使用的是RocksDB存儲則須要GCC >= 4.3.0 ,下面的步驟假設使用RocksDB做爲存儲數據庫
步驟1:後端
# 下載tar包 wget https://github.com/hugegraph/hugegraph/releases/download/v${version}/hugegraph-${version}.tar.gz tar -zxvf hugegraph-${version}.tar.gz
步驟2:瀏覽器
修改 hugegraph.properties
backend=rocksdb serializer=binary rocksdb.data_path=. rocksdb.wal_path=.
步驟3:
初始化數據庫(僅第一次啓動時須要)
cd hugegraph-${version} bin/init-store.sh
步驟4:
啓動server
bin/start-hugegraph.sh Starting HugeGraphServer... Connecting to HugeGraphServer (http://127.0.0.1:8080/graphs)....OK
步驟5:
查看服務狀態:
jps 6475 HugeGraphServer # curl請求restuflAPI,結果返回200,表明server啓動正常 echo `curl -o /dev/null -s -w %{http_code} "http://localhost:8080/graphs/hugegraph/graph/vertices"`
步驟6:
# 中止server $cd hugegraph-${version} $bin/stop-hugegraph.sh
步驟1:
# 下載tar包並解壓 wget https://github.com/hugegraph/hugegraph-studio/releases/download/v${version}/hugegraph-studio-${version}.tar.gz tar zxvf hugegraph-studio-${version}.tar.gz
步驟2:
修改配置文件hugegraph-studio.properties
studio.server.host
的值localhost
修改爲機器名或 IP,這是 HugeGraphStudio 對外提供服務的host
,若是隻須要本地訪問則保持不變便可;studio.server.port
的值8088
修改爲想要的端口,這是 HugeGraphStudio 對外提供服務的port
;graph.server.host
的值localhost
修改爲 HugeGraphServer 的host
,HugeGraphStudio 經過此項和graph.server.port
與 HugeGraphServer 創建鏈接;graph.server.port
的值8080
修改爲 HugeGraphServer 的port
,HugeGraphStudio 經過graph.server.host
和此項與 HugeGraphServer 創建鏈接;graph.name
的值hugegraph
修改爲要鏈接的 HugeGraphServer 的圖名,目前只容許鏈接一個圖。# 啓動HugeGraph-Studio $ cd hugegraph-studio-${version} $ bin/hugegraph-studio.sh
步驟3:
瀏覽器打開:http://localhost:8088便可訪問。
官網給了一個性能測試的報告:https://hugegraph.github.io/hugegraph-doc/performance/hugegraph-benchmark-0.5.6.html
總結起來就是:
當時選擇HugeGraph的緣由一是需求須要導大量的數據,涉及大約十幾億的插入,因此須要找一個插入性能高的,而且好友關係變更的時候也須要異步更新圖關係。而是HugeGraph雖然是新秀,可是中文官方文檔很簡介清楚,利於學習使用。
參考:
[^1]: Apache ThinkerPop 3是圖形數據庫(OLTP)和圖形分析系統(OLAP)的圖形計算框架。 [^2]: Gremlin是Apache ThinkerPop框架下的圖遍歷語言,Gremlin是一種函數式數據流語言,可使用戶使用簡潔的方式表述複雜的屬性圖的遍歷或查詢。