CloudBeaver扩展数据库操作说明

5

主题

9

帖子

17

积分

新手上路

Rank: 1

积分
17
发表于 2022-12-2 15:42:29 | 显示全部楼层
CloudBeaver是一个Web服务器,它提供了一个丰富的Web界面。它由两部分组成:

  • 服务器后端:它是用Java编写的,并重用DBeaver的“平台”库
  • 前端部分:它是用TypeScript和JavaScript编写的
CloudBeaver支持其他数据库的操作方式有两种:

  • 方式一:git clone 源码,修改相关plugin.xml文件后进行构建



源码构建方式


  • 方式二:docker pull 最新版cloudbeaver镜像,执行镜像后进入容器,修改与扩展数据库相关的jar包



docker修改容器方式

需要说明的是:

  • 方式二整个过程相当于修改了方式一构建好的服务
  • 当存在已经修改好的jar包时,可以不用每次都修改当前服务的plugin.xml文件,而是直接将修改好的jar包替换上去并添加驱动即可,但是要保证修改好的jar包名称要与当前服务原jar包的名称一致
方式一:源码构建

此方式要求先安装相应的依赖,这些依赖有着硬性的版本要求,为了保证正常构建,必须下载相应的版本,构建过程中根据镜像源的不同也会对构建结果产生影响
步骤一:安装环境依赖

依赖版本要求(请一定按照该版本要求):

  • Java 17
  • Apache Maven (3.8.6+)
  • Node.js (14.x)
  • Yarn
  • NPM + Lerna
安装依赖:

  • 添加 Node.js(版本 14.x 最低版本 14.17)和 Yarn 最新版本存储库:
注意:最后一行命令是添加Node.js(14.x) 版本依赖库,由于使用的镜像是源镜像,会导致下载变慢,这里推荐不执行最后一行,而是下载相应版本包(亲测14.20可行),进行手动安装,然后修改node.js镜像源
curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -

  • 安装包
注意:这里的mavennodejsnpm建议下载版本包手动安装并配置镜像源,一是避免版本错误,二是避免下载安装过慢,安装完毕后不要不忘记配置环境变量,执行 source /etc/profile 来刷新环境变量,安装完后请检查一下版本是否都达到要求了
sudo apt update   
sudo apt install openjdk-17-jdk   
sudo apt install maven   
sudo apt install yarn   
sudo apt install nodejs   
sudo apt install npm   
sudo npm install -g lerna

  • 修改镜像源(为了加快下载速度)
maven镜像源(亲测配置此镜像源构建是最顺利的)
<mirror>
  <id>alimaven</id>
  <mirrorOf>central</mirrorOf>
  <name>aliyun maven</name>
  <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
<mirror>
  <id>nexus-aliyun</id>
  <mirrorOf>central</mirrorOf>
  <name>Nexus aliyun</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<mirror>
  <id>nju_mirror</id>
  <mirrorOf>central</mirrorOf>
  <url>https://repo.nju.edu.cn/repository/maven-public/</url>
</mirror>
<!-- 中央仓库1 -->
<mirror>
  <id>repo1</id>
  <mirrorOf>central</mirrorOf>
  <name>Human Readable Name for this Mirror.</name>
  <url>http://repo1.maven.org/maven2/</url>
</mirror>

<!-- 中央仓库2 -->
<mirror>
  <id>repo2</id>
  <mirrorOf>central</mirrorOf>
  <name>Human Readable Name for this Mirror.</name>
  <url>http://repo2.maven.org/maven2/</url>
</mirror>npm镜像源
#设置淘宝镜像源
npm config set registry https://registry.npm.taobao.org
#查看使用的镜像源
npm config get registry
#安装淘宝镜像源
npm install -g cnpm --registry=https://registry.npm.taobao.org步骤二:构建和部署

注意:第一次构建会比较耗时,因为会将dbeaver源码下载下来
git clone https://github.com/dbeaver/cloudbeaver.git
cd cloudbeaver/deploy
./build.sh最终构建好的可以在 deploy/cloudbeaver 中找到,而dbeaver源码也可以在cloudbeaver源码同级目录找到
Cloudbeaver底层依赖Dbeaver,用过Dbeaver的朋友都知道,如果想要Dbeaver支持一种新的数据库(驱动),可以编写一个插件,这插件在这种数据库的JDBC Driver外封装了一层,针对这种数据库增加特殊的操作界面,但如果新的数据库只要求支持通用的JDBC操作,则可以使用已有的org.jkiss.dbeaver.ext.generic插件,不需要专门编写插件代码。这里扩展数据库驱动就是用这种方法,并没有专门为扩展数据库写一个Dbeaver插件。
扩展数据库步骤:

  • 首先进入dbeaver源码目录,修改plugins/org.jkiss.dbeaver.ext.generic/plugin.xml,增加驱动描述,如下(通过查找drivers字符串可以找到添加位置):
<driver
        id="dm"
        label="DM"
        icon="icons/dm_icon.png"
        iconBig="icons/dm_icon.png"
        class="dm.jdbc.driver.DmDriver"
        sampleURL="jdbc:dm://{host}[:{port}]/[{daStabase}]"
        defaultPort="5432"
        webURL="https://www.dameng.com/"
        description="DM JDBC driver">

    <file type="jar" path="drivers/dm" bundle="drivers.dm"/>

</driver>

  • id="dm" 是达梦数据库驱动的ID,后面cloudbeaver的配置中,要用这个字符串识别。
  • label="DM" 显示在界面数据库驱动的名称。
  • icon 和 iconBig 是自定义驱动的图标文件,路径是相对于plugins/org.jkiss.dbeaver.ext.generic/,例如 icon="icons/dm_icon.png" 表示图标文件在plugins/org.jkiss.dbeaver.ext.generic/icons/dm_icon.png。这两个图标文件可以是同一个,这里需要将图标文件放入相应。
  • class="dm.jdbc.driver.DmDriver" 是java源文件导入(import)jdbc驱动时的类名,DM JDBC驱动的jar文件(DmJdbcDriver18.jar)里提供的类就是dm.jdbc.driver.DmDriver。
  • sampleURL="jdbc:dm://{host}[:{port}]/[{database}]" 是DM的JDBC连接字符串。
  • defaultPort="5432" 默认连接DM的端口号,可以随便写,因为创建连接时还可以在页面修改。
  • webURL="https://www.dameng.com/" 可以随便写。
  • description="DM JDBC driver." 可以随便写,只用来在界面显示。
  •   表示 DM JDBC Driver的jar包,在cloudbeaver编译结果(deploy/cloudbeaver)目录下的drivers/dm/中。
  • 进入cloudbeaver源码目录,修改server/bundles/io.cloudbeaver.resources.drivers.base/plugin.xml,增加下面内容:
+        <resource name="drivers/dm"/>
     </extension>

     <!-- Bundles  -->
+        <bundle id="drivers.dm" label="DM drivers"/>
     </extension>

     <!-- Enabled drivers -->
+        <driver id="generic:dm"/>
     </extension>其中resource对应上一步plugins/org.jkiss.dbeaver.ext.generic/plugin.xml中的path,bundle对应其中的bundle,driver id对应其中的id
2. 如果没有下载好的数据库驱动,需要maven仓库进行下载,则执行此步,否则跳过(这里以opengauss数据库为例):
2.1 修改cloudbeaver源码目录下/server/drivers/pom.xml,增加下面内容:
         <module>sqlite</module>
         <module>sqlserver</module>
         <module>trino</module>
+        <module>opengauss</module>
     </modules>

     <build>2.2 创建目录 server/drivers/opengauss,再在其中创建pom.xml,内容如下图,这样构建cloudbeaver时,maven会到中央仓库下载opengauss-jdbc-3.0.0.jar,它就是OpenGauss的JDBC驱动。
<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>
    <artifactId>drivers.opengauss</artifactId>
    <version>1.0.0</version>
    <parent>
        <groupId>io.cloudbeaver</groupId>
        <artifactId>drivers</artifactId>
        <version>1.0.0</version>
        <relativePath>../</relativePath>
    </parent>

    <properties>
        <deps.output.dir>opengauss</deps.output.dir>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.opengauss</groupId>
            <artifactId>opengauss-jdbc</artifactId>
            <version>3.0.0</version>
        </dependency>
    </dependencies>

</project>3. 重新编译cloudbeaver:
cd cloudbeaver/deploy   
./build.sh如果执行了第三步的情况下,编译好的cloudbeaver/drivers/目录下会多出一个opengauss目录,里面有opengauss-jdbc-3.0.0.jar。
如果没有执行第三步,即已下载好相应的数据库驱动(如达梦数据库驱动),则还需要执行以下步骤:

  • 在编译好的cloudbeaver/drivers/目录下新建dm文件夹(与第一步驱动path对应)
  • 将DM JDBC驱动的jar文件(DmJdbcDriver18.jar)放置dm文件夹下
4. 启动服务
cd cloudbeaver   
./run-server.sh默认情况下,服务器侦听端口8978(可以在 conf/cloudbeaver.conf 中更改它)。因此,只需导航到http://localhost:8978。
方式二:修改docker容器

CloudBeaver 映像位于 DockerHub:https://hub.docker.com/r/dbeaver/cloudbeaver 上。

  • dbeaver/cloudbeaver:latest- 最新版本。
  • dbeaver/cloudbeaver:dev- 最新的开发人员版本。
步骤一:安装镜像

要安装最新版本的 CloudBeaver,请使用以下脚本:
sudo docker pull dbeaver/cloudbeaver:latest步骤二:运行镜像

sudo docker run --name cloudbeaver -d --rm -ti -p 8978:8978 -v /var/cloudbeaver/workspace:/opt/cloudbeaver/workspace dbeaver/cloudbeaver:latest参数说明:
参数说明
--name cloudbeaver容器名称
--rm在停止时移除容器
-ti启用终端模式(允许停止容器CTRL+C)
-p 8080:8978将 CloudBeaver 公共端口 (8978) 映射到主机端口(例如 8080)
-v local_path:/opt/cloudbeaver/workspace将本地文件夹“/var/cloudbeaver/workspace”挂载到服务器工作区。容器重启后需要保留 CloudBeaver 数据。
dbeaver/cloudbeaver:latest容器标识
步骤三:修改容器文件


  • 修改jar包中plugin.xml配置文件
获取容器中/opt/cloudbeaver/server/plugins/目录下两个与扩展数据库相关的jar包:

  • org.jkiss.dbeaver.ext.generic_[version].jar
  • io.cloudbeaver.resources.drivers.base_[version].jar
docker cp container_id:<docker容器内的路径> <本地保存文件的路径>得到jar包后,需要注意的是,jar包名称不能修改,我们只改其中的配置文件

  • 将两个jar包后缀改为.zip,后解压
    对于org.jkiss.dbeaver.ext.generic_[version].zip解压后可以得到 icons文件夹plugin.xml
    对于io.cloudbeaver.resources.drivers.base_[version].zip解压后可以得到plugin.xml
  • 编辑org.jkiss.dbeaver.ext.generic_[version].zip解压得到的plugin.xml,并将 dm_icon.png 放入 icons 目录下
    添加驱动描述:
<driver
        id="dm"
        label="DM"
        icon="icons/dm_icon.png"
        iconBig="icons/dm_icon.png"
        class="dm.jdbc.driver.DmDriver"
        sampleURL="jdbc:dm://{host}[:{port}]/[{daStabase}]"
        defaultPort="5432"
        webURL="https://www.dameng.com/"
        description="DM JDBC driver">

    <file type="jar" path="drivers/dm" bundle="drivers.dm"/>

</driver>


    • id="dm" 是达梦数据库驱动的ID,后面cloudbeaver的配置中,要用这个字符串识别。
    • label="DM" 显示在界面数据库驱动的名称。
    • icon 和 iconBig 是自定义驱动的图标文件,路径是相对于plugins/org.jkiss.dbeaver.ext.generic/,例如 icon="icons/dm_icon.png" 表示图标文件在plugins/org.jkiss.dbeaver.ext.generic/icons/dm_icon.png。这两个图标文件可以是同一个,这里需要将图标文件放入相应。
    • class="dm.jdbc.driver.DmDriver" 是java源文件导入(import)jdbc驱动时的类名,DM JDBC驱动的jar文件(DmJdbcDriver18.jar)里提供的类就是dm.jdbc.driver.DmDriver。
    • sampleURL="jdbc:dm://{host}[:{port}]/[{database}]" 是DM的JDBC连接字符串。
    • defaultPort="5432" 默认连接DM的端口号,可以随便写,因为创建连接时还可以在页面修改。
    • webURL="https://www.dameng.com/" 可以随便写。
    • description="DM JDBC driver." 可以随便写,只用来在界面显示。
    •   表示 DM JDBC Driver的jar包,在cloudbeaver编译结果(deploy/cloudbeaver)目录下的drivers/dm/中。

  • 编辑io.cloudbeaver.resources.drivers.base_[version].zip解压得到的plugin.xml
    在相应位置添加以下三行,与上一步配置对应:
<resource name="drivers/dm"/>

<bundle id="drivers.dm" label="DM drivers"/>

<driver id="generic:dm"/>

  • 修改完成后将两个目录重新压缩为jar包,注意压缩包名称要与下载时一致,最关键的版本号别忘了
2. 将修改好的jar包上传至容器原位置,即 /opt/cloudbeaver/server/plugins 目录下,覆盖原来的两个jar包
3. 添加数据库驱动(以达梦数据库为例):
docker exec -it ContainerID /bin/bash

  • 在cloudbeaver/drivers/目录下新建dm文件夹(与第一步驱动path对应)
  • 将本地DM JDBC驱动的jar文件(DmJdbcDriver18.jar)放置容器dm文件夹下
docker cp 本地文件的路径 container_id:<docker容器内的路径>步骤四:重启容器

docker restart ContainerID再次访问cloudbeaver界面,添加驱动可以看到达梦数据库驱动已经扩展完毕
回复

举报 使用道具

您需要登录后才可以回帖 登录 | 立即注册
快速回复 返回顶部 返回列表