Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

JDBC を使用して ClickHouse を外部データソースに接続する

概要: ClickHouse JDBC Bridgejdbc テーブル関数 または JDBC テーブルエンジン と組み合わせることで、JDBCドライバー が利用可能な任意の外部データソースに ClickHouse からアクセスできます。また、ネイティブな組み込みの integration engine が存在しないデータソースでも利用可能です:

ClickHouse JDBC Bridge のアーキテクチャ図

これは、対象の外部データソース向けのネイティブな組み込み integration engine、table function、または外部 Dictionary は利用できない一方で、そのデータソース向けの JDBCドライバー は存在する場合に便利です。

ClickHouse JDBC Bridge は、読み取りと書き込みの両方に使用できます。また、複数の外部データソースに対して並行して使用することも可能です。たとえば、複数の外部および内部データソースにまたがる分散クエリを ClickHouse 上でリアルタイムに実行できます。

このレッスンでは、ClickHouse JDBC Bridge のインストール、設定、実行を行い、ClickHouse を外部データソースに接続する方法を紹介します。このレッスンでは、外部データソースとして MySQL を使用します。

それでは始めましょう!

ClickHouse JDBC Bridge をローカルにインストールする

ClickHouse JDBC Bridge を利用する最も簡単な方法は、ClickHouse が動作しているのと同じホストにインストールして実行することです。

ClickHouse JDBC Bridge のローカルデプロイ構成図

まず、ClickHouse が動作しているマシンの Unix シェルに接続し、あとで ClickHouse JDBC Bridge をインストールするためのローカルフォルダーを作成します (フォルダー名や配置場所は任意です) :

mkdir ~/clickhouse-jdbc-bridge

次に、そのフォルダに ClickHouse JDBC Bridge の最新バージョンをダウンロードします。

cd ~/clickhouse-jdbc-bridge
wget https://github.com/ClickHouse/clickhouse-jdbc-bridge/releases/download/v2.0.7/clickhouse-jdbc-bridge-2.0.7-shaded.jar

MySQL に接続できるよう、名前付きデータソースを作成します。

 cd ~/clickhouse-jdbc-bridge
 mkdir -p config/datasources
 touch config/datasources/mysql8.json

以下の設定を ~/clickhouse-jdbc-bridge/config/datasources/mysql8.json ファイルにコピーして貼り付けます。

 {
   "mysql8": {
   "driverUrls": [
     "https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.28/mysql-connector-java-8.0.28.jar"
   ],
   "jdbcUrl": "jdbc:mysql://<host>:<port>",
   "username": "<username>",
   "password": "<password>"
   }
 }

これで ClickHouse JDBC Bridge を起動する準備が整いました。

 cd ~/clickhouse-jdbc-bridge
 java -jar clickhouse-jdbc-bridge-2.0.7-shaded.jar

ClickHouse 内から JDBC 接続を使用する

ClickHouse では、jdbc テーブル関数 または JDBC テーブルエンジン を使用して MySQL のデータにアクセスできます。

以下の例を実行する最も簡単な方法は、clickhouse-client または Play UI にコピー&ペーストすることです。

  • jdbc テーブル関数:
 SELECT * FROM jdbc('mysql8', 'mydatabase', 'mytable');
  • JDBC テーブルエンジン:
 CREATE TABLE mytable (
      <column> <column_type>,
      ...
 )
 ENGINE = JDBC('mysql8', 'mydatabase', 'mytable');

 SELECT * FROM mytable;

ClickHouse JDBC Bridge を外部にインストールする

分散 ClickHouse クラスター (ClickHouse ホストが複数あるクラスター) では、ClickHouse JDBC Bridge を専用ホストに外部インストールして実行するのが適切です。

ClickHouse JDBC Bridge 外部デプロイメント図

この構成には、各 ClickHouse ホストから JDBC Bridge にアクセスできるという利点があります。そうでない場合、Bridge 経由で外部データソースにアクセスする ClickHouse インスタンスごとに、JDBC Bridge をローカルにインストールする必要があります。

ClickHouse JDBC Bridge を外部にインストールするには、次の手順を実行します。

  1. このガイドのセクション 1 に記載された手順に従って、専用ホストに ClickHouse JDBC Bridge をインストールし、設定して実行します。

  2. 各 ClickHouse ホストで、ClickHouse サーバー設定に次の設定ブロックを追加します (使用する設定フォーマットに応じて、XML 版または YAML 版を使用してください)。

<jdbc_bridge>
   <host>JDBC-Bridge-Host</host>
   <port>9019</port>
</jdbc_bridge>
Navigation