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

これは、対象の外部データソース向けのネイティブな組み込み integration engine、table function、または外部 Dictionary は利用できない一方で、そのデータソース向けの JDBCドライバー は存在する場合に便利です。
ClickHouse JDBC Bridge は、読み取りと書き込みの両方に使用できます。また、複数の外部データソースに対して並行して使用することも可能です。たとえば、複数の外部および内部データソースにまたがる分散クエリを ClickHouse 上でリアルタイムに実行できます。
このレッスンでは、ClickHouse JDBC Bridge のインストール、設定、実行を行い、ClickHouse を外部データソースに接続する方法を紹介します。このレッスンでは、外部データソースとして MySQL を使用します。
それでは始めましょう!
ClickHouse JDBC Bridge をローカルにインストールする
ClickHouse JDBC Bridge を利用する最も簡単な方法は、ClickHouse が動作しているのと同じホストにインストールして実行することです。

まず、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.jarMySQL に接続できるよう、名前付きデータソースを作成します。
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.jarClickHouse 内から 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 にアクセスできるという利点があります。そうでない場合、Bridge 経由で外部データソースにアクセスする ClickHouse インスタンスごとに、JDBC Bridge をローカルにインストールする必要があります。
ClickHouse JDBC Bridge を外部にインストールするには、次の手順を実行します。
-
このガイドのセクション 1 に記載された手順に従って、専用ホストに ClickHouse JDBC Bridge をインストールし、設定して実行します。
-
各 ClickHouse ホストで、ClickHouse サーバー設定に次の設定ブロックを追加します (使用する設定フォーマットに応じて、XML 版または YAML 版を使用してください)。
<jdbc_bridge>
<host>JDBC-Bridge-Host</host>
<port>9019</port>
</jdbc_bridge>jdbc_bridge:
host: JDBC-Bridge-Host
port: 9019