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

[Preview] JDBC catalog

JDBC catalog は、JDBC を介してアクセスされるデータソースからデータを取り込まずにクエリを実行できる一種の external catalog です。

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

JDBC catalog は現在、MySQL と PostgreSQL をサポートしています。

前提条件

  • CelerData クラスター内の FE と BE が、driver_url パラメーターで指定されたダウンロード URL から JDBC ドライバーをダウンロードできること。
  • 各 BE ノードの $BE_HOME/bin/start_be.sh ファイル内の JAVA_HOME が、JRE 環境のパスではなく JDK 環境のパスとして適切に設定されていること。例えば、export JAVA_HOME = <JDK_absolute_path> と設定できます。

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 には以下のパラメーターを含める必要があります:

ParameterDescription
typeリソースのタイプ。値を jdbc に設定します。
userターゲットデータベースに接続するために使用されるユーザー名。
passwordターゲットデータベースに接続するために使用されるパスワード。
jdbc_uriJDBC ドライバーがターゲットデータベースに接続するために使用する URI。MySQL の場合、URI は "jdbc:mysql://ip:port" 形式です。PostgreSQL の場合、URI は "jdbc:postgresql://ip:port/db_name" 形式です。詳細は MySQL および PostgreSQL の公式サイトを参照してください。
driver_urlJDBC ドライバー 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 です。
NOTE
JDBC ドライバーを FE および BE ノードの同じパスに配置し、driver_url をそのパスに設定することもできます。この場合、file://<path>/to/the/driver 形式でなければなりません。
driver_classJDBC ドライバーのクラス名。一般的なデータベースエンジンの JDBC ドライバークラス名は以下の通りです:
  • MySQL: com.mysql.jdbc.Driver (MySQL v5.x およびそれ以前) および com.mysql.cj.jdbc.Driver (MySQL v6.x およびそれ以降)
  • PostgreSQL: org.postgresql.Driver

NOTE

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

以下の例では、jdbc0 という名前の JDBC catalog と、jdbc1 という名前の JDBC catalog を作成します。

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 catalog の表示

現在の CelerData クラスター内のすべての 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 内のテーブルをクエリする

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

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

    SET CATALOG <catalog_name>;

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

    USE <db_name>;

    または、目的の catalog 内でアクティブなデータベースを直接指定するには、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」セクションのパラメーター説明を参照してください。