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
) から取得します。
この JDBC ドライバーは、Java 8、9、10、および 11 と互換性があります。
Virtual DataPort サーバーは、 同じメジャーバージョン内の JDBC ドライバーおよび他のクライアントとの下位互換性があります。つまり、ある更新プログラムの Denodo JDBC ドライバーを使用して接続できるのは、同じ更新プログラムまたはより新しい更新プログラムがインストールされている Virtual DataPort サーバーです。次に例を示します。
Denodo サーバーバージョン 7.0 更新プログラム 20181011 に接続する場合は、同じ更新プログラムに同梱の JDBC ドライバー、あるいは 7.0 20180926、7.0 20180611、または 7.0 GA に同梱のドライバーを使用できます。
Denodo サーバーバージョン 7.0 更新プログラム 20180926 に接続する場合は、7.0 20181011 に同梱の JDBC ドライバーを使用しないでください。このドライバーの方がサーバーより新しいためです。これはサポートされていない構成であるため、一部の操作が失敗する場合があります。
Denodo 8.0 GA または 8.0 更新プログラムの JDBC ドライバーは、Denodo 7.0 以前のバージョンに接続しようとするとエラーを返します。
ドライバーを実装するクラスは、 com.denodo.vdp.jdbc.Driver
です。
データベース URL の構文は次のとおりです。
jdbc:vdb://<hostName>:<port>/<databaseName>[?<paramName>=<paramValue> [&<paramName>=<paramValue>]* ]
データベースの名前は必須です。
例:
jdbc:vdb://localhost:9999/admin?queryTimeout=100000&chunkTimeout=1000&userAgent=myApplication&autoCommit=true
データベースの名前に非 ASCII 文字が含まれている場合、これらを URL エンコードする必要があります。たとえば、データベースの名前が「テスト」の場合、データベースへのコネクション URL は次のようになります。
jdbc:vdb://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 ドライバーがサポートする 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
)。