JDBC を使用して ClickHouse を外部データソースに接続する
JDBC を使用するには ClickHouse JDBC Bridge が必要なため、ローカルマシン上で clickhouse-local を使用して、データベースから ClickHouse Cloud へデータをストリーミングする必要があります。詳細については、ドキュメントの Migrate セクションにある Using clickhouse-local ページを参照してください。
概要: ClickHouse JDBC Bridge を jdbc テーブル関数 または JDBC テーブルエンジン と組み合わせて使用することで、JDBC ドライバー が提供されている任意の外部データソース上のデータに ClickHouse からアクセスできるようになります。

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

まず、ClickHouse が動作しているマシンの Unix シェルに接続し、後で ClickHouse JDBC Bridge をインストールするためのローカルフォルダを作成します(フォルダ名や場所は自由に決めてかまいません)。
次に、そのフォルダに ClickHouse JDBC Bridge の最新バージョンをダウンロードします。
MySQL に接続できるように、名前付きデータソースを作成します。
これで、以下の設定を ~/clickhouse-jdbc-bridge/config/datasources/mysql8.json ファイルにコピーして貼り付けることができます:
上記の設定ファイルでは、
- データソース名は任意の名前を付けることができます。この例では
mysql8を使用しています jdbcUrlの値では、稼働中の MySQL インスタンスに合わせて<host>と<port>を適切な値に置き換える必要があります(例:"jdbc:mysql://localhost:3306")<username>と<password>は、MySQL の認証情報に置き換えてください。パスワードを使用しない場合は、上記の設定ファイルから"password": "<password>"の行を削除できますdriverUrlsの値には、MySQL JDBC ドライバーの最新バージョンをダウンロードできる URL を指定しています。これだけで、ClickHouse JDBC Bridge がその JDBC ドライバーを自動的に(OS 固有のディレクトリに)ダウンロードします。
これで ClickHouse JDBC Bridge を起動する準備が整いました。
ClickHouse JDBC Bridge をフォアグラウンドモードで起動しました。Bridge を停止するには、先ほど開いた Unix シェルウィンドウをフォアグラウンドに切り替え、CTRL+C を押します。
ClickHouse 内から JDBC 接続を使用する
ClickHouse は、jdbc テーブル関数 または JDBC テーブルエンジン を使用して、MySQL のデータにアクセスできます。
次の例を実行する最も簡単な方法は、それらを clickhouse-client または Play UI にコピー&ペーストすることです。
- jdbc テーブル関数:
jdbc テーブル関数の最初のパラメータとして、上で構成した名前付きデータソースの名前を使用します。
- JDBC テーブルエンジン:
jdbc エンジン句の最初のパラメータには、上で設定した名前付きデータソースの名前を指定しています。
ClickHouse JDBC エンジンテーブルのスキーマと、接続されている MySQL テーブルのスキーマは一致している必要があります。例えば、カラム名とその順序は同一でなければならず、カラムのデータ型も互換性がある必要があります。
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 版のいずれかを使用してください)。
- XML
- YAML
JDBC-Bridge-Hostは、専用の ClickHouse JDBC Bridge ホストのホスト名または IP アドレスに置き換えてください- ここでは ClickHouse JDBC Bridge のデフォルトポート
9019を指定しています。JDBC Bridge に別のポートを使用している場合は、それに応じて上記の設定を調整してください