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

JDBC catalog

JDBCカタログ

StarRocksは、v3.0以降でJDBCカタログをサポートしています。

JDBCカタログは、インジェストなしでJDBCを介してアクセスするデータソースからデータをクエリするための外部カタログの一種です。

また、JDBCカタログを基にしたINSERT INTOを使用して、JDBCデータソースから直接データを変換およびロードすることもできます。

JDBCカタログは現在、MySQLおよびPostgreSQLをサポートしています。

前提条件

  • StarRocksクラスタのFEおよびBEは、driver_urlパラメータで指定されたダウンロードURLからJDBCドライバをダウンロードできる必要があります。
  • 各BEノード上の**$BE_HOME/bin/start_be.shファイルのJAVA_HOME**が、JRE環境のパスではなくJDK環境のパスとして正しく設定されている必要があります。たとえば、export JAVA_HOME = <JDKの絶対パス>というように設定することができます。この設定をスクリプトの先頭に追加し、BEを再起動して設定が有効になるようにします。

JDBCカタログの作成

構文

CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES ("key"="value", ...)

パラメータ

catalog_name

JDBCカタログの名前です。命名規則は以下のとおりです。

  • 名前には、文字、数字(0-9)、アンダースコア(_)を含めることができます。ただし、先頭は文字で始める必要があります。
  • 名前は大文字と小文字を区別し、長さが1023文字を超えることはありません。

comment

JDBCカタログの説明です。このパラメータは省略可能です。

PROPERTIES

JDBCカタログのプロパティです。PROPERTIESには以下のパラメータが必要です:

パラメータ

説明

type

リソースのタイプ。値をjdbcに設定します。

user

ターゲットデータベースに接続するために使用するユーザー名です。

password

ターゲットデータベースに接続するために使用するパスワードです。

jdbc_uri

JDBCドライバがターゲットデータベースに接続するために使用するURIです。MySQLの場合、URIは"jdbc:mysql://ip:port"の形式です。PostgreSQLの場合、URIは"jdbc:postgresql://ip:port/db_name"の形式です。詳細については、 MySQL および PostgreSQL の公式ウェブサイトを参照してください。

driver_url

JDBCドライバJARパッケージのダウンロードURLです。HTTP URLまたはファイルURLがサポートされています。例えば、https://repo1.maven.org/maven2/org/postgresql/postgresql/42.3.3/postgresql-42.3.3.jarfile:///home/disk1/postgresql-42.3.3.jarなどです。

注意

JDBCドライバをFEおよびBEノードの任意の同じパスに配置し、driver_urlをそのパスに設定し、file:///<path>/to/the/driverの形式である必要があります。

driver_class

JDBCドライバのクラス名です。一般的なデータベースエンジンのJDBCドライバクラス名は以下のとおりです:

  • MySQL: com.mysql.jdbc.Driver(MySQL v5.x以前)およびcom.mysql.cj.jdbc.Driver(MySQL v6.x以降)
  • PostgreSQL: org.postgresql.Driver

注意

FEはJDBCカタログ作成時にJDBCドライバJARパッケージをダウンロードし、BEは最初のクエリ実行時にJDBCドライバJARパッケージをダウンロードします。ダウンロードにかかる時間はネットワークの状況に応じて異なります。

以下の例では、jdbc0jdbc1の2つのJDBCカタログを作成しています。

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"
);

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カタログの表示

SHOW CATALOGSを使用して、現在のStarRocksクラスタのすべてのカタログをクエリできます。

SHOW CATALOGS;

また、SHOW CREATE CATALOGを使用して、外部カタログの作成文をクエリできます。以下の例では、名前がjdbc0のJDBCカタログの作成文をクエリしています。

SHOW CREATE CATALOG jdbc0;

JDBCカタログの削除

JDBCカタログの削除を使用して、JDBCカタログを削除できます。

以下の例では、名前がjdbc0のJDBCカタログを削除しています。

DROP Catalog jdbc0;

JDBCカタログ内のテーブルのクエリ

  1. SHOW DATABASESを使用して、JDBC互換クラスタのデータベースを表示します。

    SHOW DATABASES <catalog_name>;
  2. SET CATALOGを使用して、現在のセッションで目的のカタログに切り替えます。

    SET CATALOG <catalog_name>;

    次に、USEを使用して、現在のセッションでアクティブなデータベースを指定します。

    USE <db_name>;

    または、USEを使用して、直接目的のカタログ内のアクティブなデータベースを指定することもできます。

    USE <catalog_name>.<db_name>;
  3. SELECTを使用して、指定したデータベースの目的のテーブルをクエリします。

    SELECT * FROM <table_name>;

FAQ

"Malformed database URL, failed to parse the main URL sections"というエラーが表示された場合はどうすればよいですか?

このようなエラーが発生した場合、jdbc_uriで渡したURIが無効です。渡すURIを確認し、有効であることを確認してください。詳細については、このトピックの"PROPERTIES"セクションのパラメータの説明を参照してください。