メインコンテンツまでスキップ
メインコンテンツまでスキップ

ClickHouseをJDBCで外部データソースに接続する

注記

JDBCを使用するにはClickHouse JDBCブリッジが必要ですので、ローカルマシンでclickhouse-localを使用してデータベースからClickHouse Cloudにデータをストリーミングする必要があります。詳細については、Migrateセクションのclickhouse-localの使用ページをご覧ください。

概要: ClickHouse JDBCブリッジは、jdbcテーブル関数またはJDBCテーブルエンジンと組み合わせて、ClickHouseが利用可能な任意の外部データソースからデータにアクセスすることを可能にします。このデータソースにはJDBCドライバーが必要です。

ClickHouse JDBC Bridge

ネイティブの組み込みの統合エンジン、テーブル関数、または外部辞書が利用できない外部データソースがある場合でも、データソースに対するJDBCドライバーが存在すれば便利です。

ClickHouse JDBCブリッジは、読み取りと書き込みの両方に使用できます。また、複数の外部データソース向けにリアルタイムで分散クエリを実行できます。

このレッスンでは、ClickHouseと外部データソースを接続するためにClickHouse JDBCブリッジをインストール、設定、および実行する方法を簡単にご紹介します。このレッスンでは、MySQLを外部データソースとして使用します。

さあ、始めましょう!

事前条件

以下の条件を満たすマシンへのアクセスが必要です:

  1. Unixシェルとインターネットアクセス
  2. wgetがインストールされていること
  3. 現在のバージョンのJava(例:OpenJDK バージョン >= 17)がインストールされていること
  4. 現在のバージョンのMySQL(例:MySQL バージョン >=8)がインストールされ、実行中であること
  5. 現在のバージョンのClickHouseインストールされ、実行中であること

ClickHouse JDBCブリッジをローカルにインストールする

ClickHouse JDBCブリッジを使用する最も簡単な方法は、ClickHouseが実行されているのと同じホストにインストールして実行することです。ClickHouse JDBC Bridge locally

まず、ClickHouseが実行されているマシンのUnixシェルに接続し、後でClickHouse JDBCブリッジをインストールするローカルフォルダーを作成します(フォルダーの名前を自由に設定し、好きな場所に置いてください):

次に、そのフォルダーに 現在のバージョン のClickHouse JDBCブリッジをダウンロードします:

MySQLに接続するために、名前付きデータソースを作成します:

以下の設定を~/clickhouse-jdbc-bridge/config/datasources/mysql8.jsonファイルにコピー&ペーストできます:

注記

上記の設定ファイルについて

  • データソースの名前には自由に名前を設定できますが、ここではmysql8を使用しました。
  • jdbcUrlの値において、<host>および<port>を実行中のMySQLインスタンスに応じた値に置き換える必要があります(例: "jdbc:mysql://localhost:3306")。
  • <username>および<password>をMySQLの認証情報に置き換える必要があります。パスワードを使用しない場合は、上記設定ファイルの"password": "<password>"行を削除できます。
  • driverUrlsの値には、MySQL JDBCドライバーの現在のバージョンをダウンロードできるURLを指定しました。これで、ClickHouse JDBCブリッジはその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 Bridge externally

これにより、各ClickHouseホストがJDBCブリッジにアクセスできるという利点があります。そうでなければ、JDBCブリッジは外部データソースにアクセスする必要のある各ClickHouseインスタンスにローカルにインストールする必要があります。

ClickHouse JDBCブリッジを外部にインストールするために、以下のステップを実行します:

  1. 専用ホストでClickHouse JDBCブリッジをインストール、設定、および実行するために、ガイドのセクション1の手順に従います。

  2. 各ClickHouseホストに対して、以下の構成ブロックをClickHouseサーバー構成に追加します(選択した構成形式によって、XMLまたはYAMLバージョンを使用してください):

注記
  • JDBC-Bridge-Hostを専用のClickHouse JDBCブリッジホストのホスト名またはIPアドレスに置き換える必要があります。
  • デフォルトのClickHouse JDBCブリッジポート9019を指定しました。別のポートを使用する場合は、上記の構成を適宜修正してください。