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

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

まず、ClickHouseが実行されているマシンのUnixシェルに接続し、後でClickHouse JDBCブリッジをインストールするためのローカルフォルダーを作成します(フォルダーの名前や場所は自由に決めてください):
次に、そのフォルダーに現在のバージョンのClickHouse JDBCブリッジをダウンロードします:
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ブリッジを起動する準備が整いました:
私たちはフォアグラウンドモードでClickHouse JDBCブリッジを起動しました。ブリッジを停止するには、上記のUnixシェルウィンドウをフォアグラウンドに持ってきてCTRL+C
を押してください。
ClickHouse内からJDBC接続を使用する
ClickHouseは、jdbcテーブル関数またはJDBCテーブルエンジンを使用してMySQLデータにアクセスできます。
次の例を実行する最も簡単な方法は、 clickhouse-client
またはPlay UIにコピーして貼り付けることです。
- jdbc テーブル関数:
jdbcテーブル関数の最初のパラメータとして、上記で設定した名前付きデータソースの名前を使用します。
- JDBC テーブルエンジン:
jdbcエンジン句の最初のパラメータとして、上記で設定した名前付きデータソースの名前を使用します。
ClickHouse JDBCエンジンのテーブルスキーマと接続されるMySQLテーブルのスキーマは整合性を持たなければならず、列の名前と順序が一致し、列のデータ型が互換性がある必要があります。
ClickHouse JDBCブリッジを外部にインストールする
分散ClickHouseクラスター(複数のClickHouseホストを持つクラスター)の場合、ClickHouse JDBCブリッジを専用ホスト上に外部でインストールして実行することが理にかなっています:

これにより、各ClickHouseホストがJDBCブリッジにアクセスできる利点があります。そうしないと、外部データソースにアクセスするために、各ClickHouseインスタンスごとにJDBCブリッジをローカルにインストールする必要があります。
ClickHouse JDBCブリッジを外部にインストールするために、次の手順を実行します:
-
このガイドのセクション1の手順に従って、専用ホストにClickHouse JDBCブリッジをインストール、設定、実行します。
-
各ClickHouseホストに、ClickHouseサーバー設定への次の構成ブロックを追加します(選択した設定フォーマットに応じて、XMLまたはYAMLバージョンを使用してください):
- XML
- YAML
JDBC-Bridge-Host
を専用のClickHouse JDBCブリッジホストのホスト名またはIPアドレスに置き換える必要があります。- デフォルトのClickHouse JDBCブリッジポート
9019
を指定しました。JDBCブリッジに異なるポートを使用している場合は、上記の構成を適宜修正する必要があります。