JDBC 経由でのアクセス

JDBC (Java Database Connectivity) は、使用するデータベース管理システムを問わず、リレーショナルデータベースに対してステートメントを実行できるようにする Java API です。

Denodo は、JDBC 4.1 API (Java Database Connectivity) の主要な機能を実装する JDBC タイプ 4 ドライバーを提供しています。

Denodo JDBC ドライバーは、以下の場所から取得できます。

  • Denodo Community (https://community.denodo.com/drivers/jdbc/)。Denodo サーバーにインストールされている更新プログラムのバージョンをダウンロードします。接続している Denodo サーバーのバージョンを確認するには、Administration Tool でサーバーにログインし、[File] メニュー > [About...] をクリックして、[VDP server] ([installed updates] の下) を探します。

  • または、インストール (<DENODO_HOME>/tools/client-drivers/jdbc/vdp-jdbcdriver-core/denodo-vdp-jdbcdriver.jar) から取得します。

Java のバージョン

この JDBC ドライバーは、Java 8、9、10、および 11 と互換性があります。

ドライバークラスの名前

このドライバーのクラス名は次のとおりです。

com.denodo.vdp.jdbc.Driver

接続 URL

データベース URL の構文は次のとおりです。

JDBC 接続 URL の構文
jdbc:denodo://<hostName>:<port>/<databaseName>[?<paramName>=<paramValue> [&<paramName>=<paramValue>]*]

重要

接頭辞「jdbc:denodo」を使用するには、Denodo JDBC ドライバー 8.0u20210209 以降を使用する必要があります。8.0 GA のドライバーを使用する場合は、接頭辞「jdbc:vdb」を使用する必要があります。下位互換性のため、新しいドライバーでも接頭辞「jdbc:vdb」をサポートしています。

データベースの名前は必須です。

例:

JDBC 接続 URL の例
jdbc:denodo://denodo-server.acme.com:9999/admin?ssl=true&queryTimeout=100000&chunkTimeout=1000&userAgent=myApplication&autoCommit=true

データベースの名前に非 ASCII 文字が含まれている場合、これらを URL エンコードする必要があります。たとえば、データベースの名前が「テスト」の場合、データベースへの接続 URL は次のようになります。

JDBC 接続 URL の例 (非 ASCII 文字が含まれている場合)
jdbc:denodo://localhost:9999/%E3%83%86%E3%82%B9%E3%83%88?queryTimeout=900000&chunkTimeout=1000&userAgent=myApplication&autoCommit=true

パス <DENODO_HOME>/samples/vdp/vdp-clients には、JDBC 経由で Virtual DataPort にアクセスするクライアントプログラムの例が含まれています (このパスの README ファイルには、この例のクライアントがアクセスするビューの生成および公開の方法が記載されています)。

下位互換性

Virtual DataPort は、同じメジャーバージョンの JDBC ドライバーとその他のクライアントに対する下位互換性があります。つまり、以下の例のように、ある更新プログラムの Virtual DataPort に接続するには、同じ更新プログラム、またはそれ以前の更新プログラムに同梱の JDBC ドライバーを使用します。

  • Denodo サーバーバージョン 8.0 更新プログラム 20210715 に接続する場合は、同じ更新プログラム、またはそれ以前の更新プログラムに同梱の JDBC ドライバーを使用します。

  • Virtual DataPort 8.0 更新プログラム 20210209 またはそれ以前の更新プログラムに接続する場合は、8.0 20210715 に同梱の JDBC ドライバーを使用しないでください。このドライバーの方がサーバーより新しいためです。これはサポートされていない構成であるため、一部の操作が失敗する場合があります。

  • Denodo 8.0 GA または 8.0 更新プログラムの JDBC ドライバーは、Denodo 7.0 以前のバージョンに接続しようとするとエラーを返します。

このドライバーの機能

以下に、Virtual DataPort JDBC ドライバーがサポートする JDBC 仕様の特徴の一部を示します。

  • サポートされているデータ型は、『 VQL ガイド 』に定義されています (すべての基本型のサポートと、array 型および register 型のフィールドのサポートを含みます)。

  • データのクエリ、挿入、更新、および削除を行うためのステートメントのほか、データソースやビューなどの新しいエレメントを作成するためのステートメントの実行。

  • メタデータ記述ステートメントおよびサーバーカタログエレメントのリストのサポート。

  • PreparedStatements のサポート。

  • java.sql.Statement クラスの cancel() メソッドによる、現在のステートメント実行のキャンセルのサポート。クエリがキャンセルされると、Virtual DataPort サーバーはデータソースとキャッシュへの現在のアクセスをすべてキャンセルします。 cancel メソッドの呼び出し後でも、ソースアクセスのキャンセルが有効になる前に結果が取得されている場合、サーバーは一部の結果を返すことができます。そのため、クエリをキャンセルしても、使用されている ResultSet が閉じられるわけではありません。

  • CALL ステートメントによるストアドプロシージャの呼び出し

  • コマンドの一括送信のサポート

  • Virtual DataPort によって返される ResultSet オブジェクトは更新不可 (CONCUR_READ_ONLY) であり、前方移動のみ (TYPE_FORWARD_ONLY) のカーソルを持ちます。さらに、 ResultSet オブジェクトは現在のトランザクションがコミットされると閉じられます (CLOSE_CURSORS_AT_COMMIT)。

  • このドライバーは、 java.sql.Statement クラスの ResultSet getGeneratedKeys() メソッドを実装します (「 IDU ステートメントによる自動生成キーの取得 」を参照)。

  • タイムスタンプ、日付、時刻のリテラルの JDBC エスケープ構文のサポート (「 日時リテラルを使用したクエリ 」を参照)。