ClickHouse/docs/ja/integrations/data-ingestion/dbms/jdbc-with-clickhouse.md
2024-11-18 11:58:58 +09:00

9.6 KiB
Raw Blame History

sidebar_label sidebar_position keywords slug description
JDBC 2
clickhouse
jdbc
connect
integrate
/ja/integrations/jdbc/jdbc-with-clickhouse ClickHouse JDBC Bridgeを使用すると、JDBCドライバーが利用可能な任意の外部データソースからClickHouseがデータを取得できます

import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem';

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

:::note JDBCを使用するにはClickHouse JDBC Bridgeが必要であり、ローカルマシンでclickhouse-localを使用してデータベースからClickHouse Cloudにデータをストリームする必要があります。詳細については、ドキュメントの移行セクションにあるclickhouse-localの使用ページを参照してください。 :::

概要: ClickHouse JDBC Bridgeは、jdbc テーブル関数またはJDBC テーブルエンジンと組み合わせて、JDBCドライバーが利用可能な任意の外部データソースからClickHouseにデータをアクセスできるようにします: <img src={require('./images/jdbc-01.png').default} class="image" alt="ClickHouse JDBC Bridge"/> これは、外部データソースに対してネイティブに組み込まれた統合エンジン、テーブル関数、または外部ディクショナリが利用できない場合に便利ですが、データソースのJDBCドライバーが存在します。

ClickHouse JDBC Bridgeを使用すると、複数の外部データソースに対して並行してリアルタイムでClickHouse上で分散クエリを実行することができます。

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

さあ、始めましょう!

:::note 前提条件 あなたのマシンには以下が必要です:

  1. Unixシェルとインターネットアクセス
  2. wgetがインストールされている
  3. Javaの最新バージョン(例:OpenJDK バージョン >= 17がインストールされている
  4. MySQLの最新バージョン(例:MySQL バージョン >=8がインストールされて動作している
  5. ClickHouseインストールされて動作している :::

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

最も簡単なClickHouse JDBC Bridgeの使用方法は、ClickHouseが動作しているのと同じホストにインストールして実行することです:<img src={require('./images/jdbc-02.png').default} class="image" alt="ClickHouse JDBC Bridge locally"/>

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>"
  }
}

:::note 上記の設定ファイルには

  • データソースの名前は自由に設定できます。ここでは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を開始する準備が整いました:

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

:::note ClickHouse JDBC Bridgeをフォアグラウンドモードで開始しました。ブリッジを停止するには、上記のUnixシェルウィンドウをフォアグラウンドにしてCTRL+Cを押すことができます。 :::

ClickHouseからJDBC接続を使用する

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

以下の例を実行する最も簡単な方法は、例をコピーしてclickhouse-clientまたはPlay UIに貼り付けることです。

  • jdbc テーブル関数:
SELECT * FROM jdbc('mysql8', 'mydatabase', 'mytable');

:::note jdbc テーブル関数の最初のパラメーターとして、上記で設定した名前付きデータソースの名前を使用しています。 :::

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

SELECT * FROM mytable;

:::note jdbc エンジンクロースの最初のパラメーターとして、上記で設定した名前付きデータソースの名前を使用しています。

ClickHouse JDBCエンジンテーブルのスキーマと接続されたMySQLテーブルのスキーマは一致している必要があります。例として、カラム名と順序が同じであり、カラムのデータ型が互換性がある必要があります。 :::

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

分散ClickHouseクラスター複数のClickHouseホストを持つクラスターの場合、ClickHouse JDBC Bridgeを専用のホストにインストールして実行するのが理にかなっています: <img src={require('./images/jdbc-03.png').default} class="image" alt="ClickHouse JDBC Bridge externally"/> この方法の利点は、各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>
jdbc_bridge:
    host: JDBC-Bridge-Host
    port: 9019

:::note

  • JDBC-Bridge-Hostを専用のClickHouse JDBC Bridgeホストのホスト名またはIPアドレスに置き換える必要があります
  • デフォルトのClickHouse JDBC Bridgeポート9019を指定しました。他のポートを使用する場合は、上記の設定をそれに応じて調整する必要があります :::