HugeGraph Plugin机制及插件扩展流程

本文介绍了如何扩展HugeGraph的后端存储和分词器,通过Java SPI机制实现插件化。详细步骤包括新建Maven项目,实现BackendStoreProvider、BackendStore接口,扩展配置项和系列化器,以及注册和配置SPI入口。通过这些步骤,用户可以轻松创建自定义插件并集成到HugeGraph中。
摘要由CSDN通过智能技术生成

HugeGraph是一个Java语言实现的开源图数据库,内置支持多种后端存储(Cassandra、RocksDB等),此外还支持通过插件的方式扩展存储后端。插件实现者无需更改HugeGraph本身源代码,插件使用者无需关注代码细节,就能轻松增加插件扩展功能。这篇文章主要讲述了HugeGraph扩展自定义插件的流程。

可扩展维度

目前插件方式提供如下几个维度的扩展项:

  • 后端存储:HugeGraph支持多种内置存储后端,也允许用户无需更改现有源码的情况下扩展自定义后端。
  • 系列化器:配合自定义后端实现系列化器,或者扩展内置后端的系列化器。
  • 自定义配置项:配合自定义插件扩展配置项。
  • 分词器:HugeGraph支持全文检索,全文检索功能涉及到各语言分词,目前已内置8种中文分词器,也允许用户无需更改现有源码的情况下扩展自定义分词器。

插件实现机制

  1. HugeGraph提供插件接口HugeGraphPlugin,通过Java SPI机制支持插件化
  2. HugeGraph提供了4个扩展项注册函数:registerOptions()registerBackend()registerSerializer()registerAnalyzer()
  3. 插件实现者实现相应的Options、Backend、Serializer或Analyzer的接口
  4. 插件实现者实现HugeGraphPlugin接口的register()方法,在register()中调用上述第2步中的函数,来注册第3步列出的具体实现类,并打成jar包
  5. 插件使用者将jar包放在HugeGraph-Server安装目录的plugins目录下,修改相关配置项为插件自定义值,重启即可生效

插件实现流程实例

1 新建一个maven项目

1.1 项目名称取名:hugegraph-plugin-demo
1.2 添加hugegraph-core Jar包依赖

maven pom.xml详细内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.baidu.hugegraph</groupId>
    <artifactId>hugegraph-plugin-demo</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>

    <name>hugegraph-plugin-demo</name>

    <dependencies>
        <dependency>
            <groupId>com.baidu.hugegraph</groupId>
            <artifactId>hugegraph-core</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>
</project>

2 实现扩展功能

扩展功能一般包括:扩展自定义后端存储(下文2.1讲述)和扩展自定义分词器(下文2.2讲述)。插件实现者关注其中之一即可,若有需要当然也可两者同时进行扩展,或者只扩展下文2.1.3所述系列化器等。

2.1 扩展自定义后端
2.1.1 实现接口BackendStoreProvider
  • 可实现接口:com.baidu.hugegraph.backend.store.BackendStoreProvider
  • 或者继承抽象类:com.baidu.hugegraph.backend.store.AbstractBackendStoreProvider

以RocksDB后端RocksDBStoreProvider为例:

public class RocksDBStoreProvider extends Abstract
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值