JDBC catalog
JDBC catalog は、データを取り込むことなく、JDBC を通じてアクセスされるデータソースからデータをクエリすることを可能にする一種の external catalog です。
また、JDBC catalog を使用して、JDBC データソースからデータを直接変換してロードすることもできます。INSERT INTO を使用します。
JDBC catalog は MySQL と PostgreSQL をサポートしています。
前提条件
- StarRocks クラスター内の FEs と BEs または CNs が、
driver_urlパラメーターで指定されたダウンロード URL から JDBC ドライバーをダウンロードできること。
JDBC catalog の作成
構文
CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES ("key"="value", ...)
パラメーター
catalog_name
JDBC catalog の名前。命名規則は以下の通りです:
- 名前には文字、数字 (0-9)、アンダースコア (_) を含めることができます。文字で始める必要があります。
- 名前は大文字と小文字を区別し、長さは 1023 文字を超えることはできません。
comment
JDBC catalog の説明。このパラメーターはオプションです。
PROPERTIES
JDBC catalog のプロパティ。PROPERTIES には以下のパラメーターを含める必要があります:
| Parameter | Description |
|---|---|
| type | リソースのタイプ。値を jdbc に設定します。 |
| user | ターゲットデータベースに接続するために使用されるユーザー名。 |
| password | ターゲットデータベースに接続するために使用されるパスワード。 |
| jdbc_uri | JDBC ドライバーがターゲットデータベースに接続するために使用する URI。MySQL の場合、URI は "jdbc:mysql://ip:port" 形式です。PostgreSQL の場合、URI は "jdbc:postgresql://ip:port/db_name" 形式です。詳細は PostgreSQL を参照してください。 |
| driver_url | JDBC ドライバー JAR パッケージのダウンロード URL。例えば、https://repo1.maven.org/maven2/org/postgresql/postgresql/42.3.3/postgresql-42.3.3.jar です。 |
| driver_class | JDBC ドライバーのクラス名。一般的なデータベースエンジンの JDBC ドライバークラス名は以下の通りです:
|
オプションの行数キャッシュプロパティ
StarRocks は JDBC データソースのテーブルごとの行数をキャッシュし、クエリプランニング時のブロッキングを回避します。これらのプロパティを使用して、カタログごとにキャッシュの動作を調整できます。設定しない場合は、グローバル FE 設定値が使用されます。
| パラメータ | デフォルト | 説明 |
|---|---|---|
| jdbc_row_count_cache_refresh_sec | 600 | バックグラウンド更新間隔(秒)。この間隔を過ぎると、古いキャッシュ値を即座に返しながらバックグラウンドで非同期に再読み込みします。 |
| jdbc_row_count_cache_expire_sec | 1200 | 強制削除 TTL(秒)。この期間内にアクセスされなかったキャッシュエントリは削除されます。jdbc_row_count_cache_refresh_sec より大きい値を設定してください。 |
| jdbc_row_count_cache_max_size | 10000 | このカタログの行数キャッシュの最大テーブルエントリ数。 |
注意
FEs は JDBC catalog 作成時に JDBC ドライバー JAR パッケージをダウンロードし、BEs または CNs は最初のクエリ時に JDBC ドライバー JAR パッケージをダウンロードします。ダウンロードにかかる時間はネットワークの状況によって異なります。
例
以下の例では、2 つの異なる JDBC catalog を作成します。
-- PostgresSQL
CREATE EXTERNAL CATALOG jdbc0
PROPERTIES
(
"type"="jdbc",
"user"="postgres",
"password"="changeme",
"jdbc_uri"="jdbc:postgresql://127.0.0.1:5432/jdbc_test",
"driver_url"="https://repo1.maven.org/maven2/org/postgresql/postgresql/42.3.3/postgresql-42.3.3.jar",
"driver_class"="org.postgresql.Driver"
);
-- MySQL
CREATE EXTERNAL CATALOG jdbc1
PROPERTIES
(
"type"="jdbc",
"user"="root",
"password"="changeme",
"jdbc_uri"="jdbc:mysql://127.0.0.1:3306",
"driver_url"="https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.28/mysql-connector-java-8.0.28.jar",
"driver_class"="com.mysql.cj.jdbc.Driver"
);
JDBC catalog の表示
現在の StarRocks クラスター内のすべての catalog をクエリするには、SHOW CATALOGS を使用します。
SHOW CATALOGS;
また、external catalog の作成ステートメントをクエリするには、SHOW CREATE CATALOG を使用します。以下の例では、jdbc0 という名前の JDBC catalog の作成ステートメントをクエリします。
SHOW CREATE CATALOG jdbc0;
JDBC catalog の削除
JDBC catalog を削除するには、DROP CATALOG を使用します。
以下の例では、jdbc0 という名前の JDBC catalog を削除します。
DROP Catalog jdbc0;
JDBC catalog のテーブルをクエリする
-
JDBC 互換クラスター内のデータベースを表示するには、SHOW DATABASES を使用します。
SHOW DATABASES FROM <catalog_name>; -
現在のセッションで目的の catalog に切り替えるには、SET CATALOG を使用します。
SET CATALOG <catalog_name>;次に、現在のセッションでアクティブなデータベースを指定するには、USE を使用します。
USE <db_name>;または、目的の catalog 内でアクティブなデータベースを直接指定するには、USE を使用します。
USE <catalog_name>.<db_name>; -
指定されたデータベース内の目的のテーブルをクエリするには、SELECT を使用します。
SELECT * FROM <table_name>;
FAQ
「Malformed database URL, failed to parse the main URL sections」というエラーが発生した場合はどうすればよいですか?
このようなエラーが発生した場合、jdbc_uri に渡した URI が無効です。渡した URI を確認し、有効であることを確認してください。詳細については、このトピックの「PROPERTIES」セクションのパラメーター説明を参照してください。