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 サーバーのバージョンを確認するには、Design Studio または Administration Tool でサーバーにログインし、[File] メニュー > [About...] をクリックして、[VDP server] ([installed updates] の下) を探します。ダウンロードするにはこのサイトに登録する必要があります (登録は誰でも可能)。
または、Denodo Platform のインストール (
<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:denodo://<hostName>:<port>/<databaseName>[?<paramName>=<paramValue> [&<paramName>=<paramValue>]*]
重要
接頭辞「jdbc:denodo」を使用するには、Denodo JDBC ドライバー 8.0u20210209 以降を使用する必要があります。8.0 GA のドライバーを使用する場合は、接頭辞「jdbc:vdb」を使用する必要があります。下位互換性のため、新しいドライバーでも接頭辞「jdbc:vdb」をサポートしています。
データベースの名前は必須です。
例:
jdbc:denodo://denodo-server.acme.com:9999/admin?ssl=true&queryTimeout=100000&chunkTimeout=1000&userAgent=myApplication&autoCommit=true
データベースの名前に非 ASCII 文字が含まれている場合、これらを URL エンコードする必要があります。たとえば、データベースの名前が「テスト」の場合、データベースへの接続 URL は次のようになります。
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 エスケープ構文のサポート (「 日時リテラルを使用したクエリ 」を参照)。