欢迎来到DIVCSS5查找CSS资料与学习DIV CSS布局技术!
在本文中,我们将实践 GBase8s 和 MySQL 的跨数据源联合查询,案例中 MySQL 数据源中存放商品信息,GBase8s 数据源中存放订单信息。 整体架构如下
 
好了,我们开始吧。
 
环境准备
 
GBase8s
 
安装镜像 docker pull liaosnet/gbase8s
 
启动容器 docker run -itd -p 19088:9088 liaosnet/gbase8s
 
容器基本信息:
 
JDBC JAR:/home/gbase/gbasedbtjdbc_3.3.0_2.jar
 
类名:com.gbasedbt.jdbc.Driver
 
URL:jdbc:gbasedbt-sqli://IPADDR:19088/testdb:GBASEDBTSERVER=gbase01;DB_LOCALE=zh_CN.utf8;CLIENT_LOCALE=zh_CN.utf8;IFX_LOCK_MODE_WAIT=30;
 
用户:gbasedbt
 
密码:GBase123
 
其中:IPADDR为docker所在机器的IP地址,同时需要放通19088端口。
 
MySQL
 
安装镜像 docker pull liaosnet/gbase8s
 
启动容器 docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=dafei1288 -d mysql
 
数据准备
 
GBase8s
 
CREATE TABLE order_table (
 
oid INTEGER NOT NULL,
 
iid INTEGER,
 
icount INTEGER,
 
PRIMARY KEY (oid) CONSTRAINT order_table_pk
 
);
 
INSERT INTO order_table (oid, iid, icount) VALUES(1, 1, 10);
 
INSERT INTO order_table (oid, iid, icount) VALUES(2, 3, 30);
 
MySQL
 
create table item
 
 
    i_id    int auto_increment
 
        primary key,
 
    catalog varchar(20) null,
 
    pname   varchar(20) null,
 
    price   float       null,
 
    constraint item_i_id_uindex
 
        unique (i_id)
 
);
 
INSERT INTO test.item (i_id, catalog, pname, price) VALUES (1, '游戏', '大航海时代IV', 300);
 
INSERT INTO test.item (i_id, catalog, pname, price) VALUES (2, '游戏', '马车8', 300);
 
INSERT INTO test.item (i_id, catalog, pname, price) VALUES (3, '食品', '青椒豆腐乳西瓜', 20);
 
工程准备
 
创建 maven 工程,目录如下图所示:
 
添加依赖
 
<?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>org.example</groupId>
 
    <artifactId>calcite_multi_database</artifactId>
 
    <version>1.0-SNAPSHOT</version>
 
    <properties>
 
        <maven.compiler.source>17</maven.compiler.source>
 
        <maven.compiler.target>17</maven.compiler.target>
 
    </properties>
 
    <dependencies>
 
        <dependency>
 
            <groupId>org.apache.calcite</groupId>
 
            <artifactId>calcite-core</artifactId>
 
            <version>1.29.0</version>
 
        </dependency>
 
        <dependency>
 
            <groupId>mysql</groupId>
 
            <artifactId>mysql-connector-java</artifactId>
 
            <version>8.0.28</version>
 
        </dependency>
 
        <dependency>
 
            <groupId>com.google.code.gson</groupId>
 
            <artifactId>gson</artifactId>
 
            <version>2.8.9</version>
 
        </dependency>
 
        <dependency>
 
            <groupId>gbase</groupId>
 
            <artifactId>gbasedbt</artifactId>
 
            <version>330</version>
 
            <scope>system</scope>
 
            <systemPath>${project.basedir}/libs/gbasedbtjdbc_3.3.0_2_36477d.jar</systemPath>
 
        </dependency>
 
    </dependencies>
 
</project>
 
添加数据源配置文件 multiSource.json
 
{
 
  "defaultSchema": "gbasedbt",
 
  "schemas": [
 
    {
 
      "factory": "org.apache.calcite.adapter.jdbc.JdbcSchema$Factory",
 
      "name": "mysql",
 
      "operand": {
 
        "jdbcDriver": "com.mysql.cj.jdbc.Driver",
 
        "jdbcUrl": "jdbc:mysql://localhost:3306/test",
 
        "jdbcUser": "root",
 
        "jdbcPassword": "dafei1288"
 
      },
 
      "type": "custom"
 
    },
 
    {
 
      "factory": "org.apache.calcite.adapter.jdbc.JdbcSchema$Factory",
 
      "name": "gbasedbt",
 
      "operand": {
 
        "jdbcDriver": "com.gbasedbt.jdbc.Driver",
 
        "jdbcUrl": "jdbc:gbasedbt-sqli://localhost:19088/testdb:GBASEDBTSERVER=gbase01;DB_LOCALE=zh_CN.utf8;CLIENT_LOCALE=zh_CN.utf8;IFX_LOCK_MODE_WAIT=30;",
 
        "jdbcUser": "gbasedbt",
 
        "jdbcPassword": "GBase123"
 
      },
 
      "type": "custom"
 
    }
 
  ],
 
  "version": "1.0"
 
}

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h65103.shtml