HugeGraph + Windows + PostgreSQL 部署

1、HugeGraph

HugeGraph 是一款易用、高效、通用的**開源!開源!開源!**圖數據庫,最初由百度安全團隊自主研發。

HugeGraph 圖數據庫支持百億以上的頂點和邊快速導入,並提供毫秒級的關聯關係查詢能力(OLTP)。支持 Property Graph 和 Apache Gremlin 查詢語言,具備導入、導出、備份、恢復、可視化界面等工具組件,提供簡單易用的RESTful API 及 Client,可以輕鬆構建各種基於圖數據庫的應用和產品。

HugeGraph 圖數據庫的典型應用場景包括: 深度關係探索、 複雜關聯分析、 路徑搜索、 特徵抽取、 數據聚類、 社區檢測、 知識圖譜等。適用業務領域有如:網絡安全、電信詐騙、金融風控、廣告推薦、社交網絡和智能機器人等。

HugeGraph 圖數據庫的特徵:

  1. 易用:HugeGraph 支持 Gremlin圖查詢語言與 RESTful API,同時提供圖檢索常用接口,具備功能齊全的周邊工具,輕鬆實現基於圖的各種查詢分析運算。
  2. 高效:HugeGraph 在圖存儲和圖計算方面做了深度優化,提供多種批量導入工具,輕鬆完成百億數據快速導入,通過優化過的查詢達到圖檢索的毫秒級響應。支持數千用戶併發的在線實時操作。
  3. 通用:HugeGraph 支持 Apache Gremlin 標準圖查詢語言和 Property Graph 標準圖建模方法,支持基於圖的 OLTP 和 OLAP 方案。集成 Apache Hadoop 及 Apache Spark 大數據平臺。
  4. 可擴展:支持分佈式存儲、數據多副本及橫向擴容,內置多種後端存儲引擎(包括RocksDB、Cassandra、ScyllaDB、HBase、Palo、MySQL以及InMemory等),也可插件式輕鬆擴展後端存儲引擎。
  5. 開放:HugeGraph代碼開源(Apache 2 License [7] ),客戶可自主修改定製,選擇性回饋開源社區。

1、基礎功能

  • 頂點、邊(元素):支持基本增刪改查操作,支持有向圖,支持兩頂點間同一類型多條邊,支持超級點。
  • 屬性:支持屬性圖、支持多值屬性、支持多樣化的屬性類型、支持頂點屬性追加與合併。
  • 元數據:支持豐富的 Schema 校驗,如屬性是否可空(可選),支持 Schema 動態修改。
  • 索引:支持二級索引、範圍索引、全文索引,支持聯合索引。
  • 事務:遵循 Tinkerpop 事務規範,支持 Read Committed 級別事務。
  • 多頂點 ID 策略:支持主鍵 ID、支持自動生成 ID、支持用戶自定義字符串 ID、支持用戶自定義數字 ID。
  • 大規模數據:支持批量插入頂點/邊、支持超級頂點、支持流式分頁獲取、支持Shard並行獲取。
  • 優化的圖接口:最短路徑(Shortest Path)、K步連通子圖(K-neighbor)、K步到達鄰接點(K-out)等。
  • 其它:支持圖變量(Graph Variables)、兼容性上已通過Apache Tinkerpop官方測試用例90%兼容測試。

2、高級功能

  • 多圖實例:支持多個圖實例,圖之間數據相互隔離。
  • 用戶認證:支持多用戶,支持用戶權限認證,支持用戶角色訪問控制。可輕鬆對接現有用戶認證系統。
  • 監控接口:支持系統狀態監控、API 訪問時間監控、性能數據監控等。
  • 備份恢復:支持在線備份、支持備份數據的恢復。
  • 雲環境適應:兼容多個雲廠商平臺,輕鬆對接公有云、私有云和混合雲等多種雲環境。
  • 商業版本:商業版本提供技術諮詢、解決方案、定製化需求等服務。

3、接口支持

  • Gremlin 接口:支持標準、靈活的 Gremlin 查詢接口。
  • Restful API接口:支持功能豐富、簡單易用的 HTTP Restful 接口。提供頂點、邊、元數據等的基本操作接口;此外提供各種高級查詢接口,包括最短路徑、多路徑、交叉點、N步可達鄰居等。
  • Java Client 客戶端:支持 Java 語言客戶端,用戶可根據自身需求實現其它語言客戶端。

4、周邊工具

  • 一鍵部署(hugegraph-tools/deploy):通過部署工具簡單輕鬆的一鍵部署所有組件。
  • 可視化界面(hugegraph-studio):基於 Web 的可視化環境,提供圖操作界面、圖數據展示與分析。
  • 導入工具(hugegraph-loader):數據導入工具,支持從 txt、csv、json 等格式文件導入到 HugeGraph。
  • 導出工具(hugegraph-tools/dump):數據導出工具,可將頂點及關聯邊導出到文件,支持用戶實現 formatter 自定義格式。
  • 備份恢復工具(hugegraph-tools/backup&restore):數據備份與恢復工具,支持定時備份、手動備份、手動恢復等功能。
  • Gremlin任務工具(hugegraph-tools/gremlin):Gremlin任務執行工具,支持同步執行 Gremlin 查詢與分析(OLTP),支持異步執行Gremlin任務(OLAP)。
  • 集成Spark GraphX工具(hugegraph-spark):基於Spark GraphX的大數據環境下的圖分析工具。

在這裏插入圖片描述

2、Linux 安裝

參考文檔

HugeGraph-Server 是 HugeGraph 項目的核心部分,包含 Core、Backend、API 等子模塊。Core 模塊是 Tinkerpop 接口的實現,Backend 模塊用於管理數據存儲。

HugeGraphServer 的目錄結構:

- bin
	- checksocket.sh :  com.baidu.hugegraph.util.CheckSocket
	- dump-conf.sh : com.baidu.hugegraph.cmd.ConfDumper
	- dump-store.sh :  com.baidu.hugegraph.cmd.StoreDumper
	- gremlin-console.sh
	- hugegraph : 啓動或停止服務,會調用其他 start/stop-hugegraph.sh 腳本;
	- hugegraph-server.sh
	- hugegraph.service
	- init-store.sh : com.baidu.hugegraph.cmd.InitStore
	- install.sh:將 HugeGraphServer 安裝爲系統服務
	- monitor-hugegraph.sh
	- start-hugegraph.sh
	- start-monitor.sh
	- stop-hugegraph.sh
	- stop-monitor.sh
	- util.sh
- conf
	-  gremlin-server.yaml
	- hugegraph.properties
	- rest-server.properties
- ext
- lib 
- scripts

1、 配置

配置文件的目錄爲 hugegraph-release/conf,所有有關服務和圖本身的配置都在此目錄下。

  • gremlin-server.yaml
  • rest-server.properties
  • hugegraph.properties

HugeGraphServer 內部集成了 GremlinServer 和 RestServer,gremlin-server.yaml 和 rest-server.properties 就是用來配置這兩個 Server 的。GremlinServer 能接收用戶的 gremlin 語句,解析後再調用 Core 的代碼;RestServer 提供 Restfule API,根據不同的 HTTP 請求,嗲用對應的 Core API。

# graphs:該項爲 map 結構,key 是圖的名字,value 是該圖的配置文件路徑;
graphs: {
  hugegraph: conf/hugegraph.properties
}

gremlin-server.yaml 和 rest-server.properties 都包含 graphs 配置項,而 init-store 命令是根據 gremlin-server.yaml 的 graphs 下的圖進行初始化的。

2、 多圖

HugeGraph 支持存在多個圖,並且各個圖的後端可以不一樣,比如 graph1 以 cassandra 爲後端,graph2 以 mysql 爲後端。

3、 初始化

$ bin/init-store.sh

初始化數據庫,僅第一次啓動時需要,會根據配置文件對圖數據進行初始化。

4、 啓動

啓動分爲“首次啓動”和“非首次啓動”,首次啓動之前需要初始化後端數據庫,然後啓動服務。

HugeGraphServer 啓動時會連接後端存儲並嘗試檢查後端存儲版本號,如果未初始化後端或者後端已經初始化當時版本比匹配時,HugeGraphServer 會啓動失敗,並給出錯誤信息。

bin/start-hugegraph.sh
Starting HugeGraphServer...
Connecting to HugeGraphServer (http://127.0.0.1:8080/graphs)....OK

5、 訪問

jps 查看服務進程

jps
6475 HugeGraphServer

curl 請求 RestfulAPI

curl -o /dev/null -s -w %{http_code} “http://localhost:8080/graphs/hugegraph/graph/vertices”

返回結果200,代表server啓動正常

3、Window + PostgreSQL

下載源碼重新編譯:

  • 需要的模塊:api,core, dist, mysql, postgresql
  • 刪除 maven-autrun-plugin
  • 添加 maven-assembly-plugin,編譯可執行 jar
  • 配置
  • 創建 postgresql 數據庫 hugegraph

修改 HugeGraphServer.java

    public static void main(String[] args) throws Exception {
        HugeRestServer.register();
        InitStore.initGraph("conf/hugegraph.properties");

        HugeGraphServer server = new HugeGraphServer("conf/gremlin-server.yaml","conf/rest-server.properties");
        Runtime.getRuntime().addShutdownHook(new Thread(() -> {
            LOG.info("HugeGraphServer stopping");
            server.stop();
            LOG.info("HugeGraphServer stopped");
        }));
    }

1、postgresql 配置

配置項 描述
backend postgresql
serializer postgresql
jdbc.driver org.postgresql.Driver The JDBC driver class to connect database.
jdbc.url jdbc:postgresql://127.0.0.1:5432/ The url of database in JDBC format. 端口後的 / 不要漏掉
jdbc.username hugegraph The username to login database.
jdbc.password hugegraph The password corresponding to jdbc.username.

注意:

  • 通過配置文件中的 store 屬性來設置對應的數據庫名稱,默認是 hugegraph;
  • username 與 store 相同;因爲內部會通過 “jdbc:postgresql://127.0.0.1:5432/” 來獲取數據庫連接,得到的數據庫名與用戶名相同;

2、Windows 腳本

start.bat

cd /d %~dp0
start /B java -jar hugegraph.jar 1>nul 2>nul
- conf
- ext
- lib 
- scripts
- hugegraph.jar
- start.bat

在啓動過程中,出現 MANIFEST.MF 缺少 version 的錯誤,直接編輯 jar 中的 MANIFEST.MF 文件,添加 version: 3.4.3

參考資料

github
document
tinkerpop
tinkerpop doc

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