Skip to Content
Author's profile photo Sawa Ito

jConnect と iAnywhere (現SQL Anywhere) JDBC ドライバーの違い – パート1 – SQL Anywhere (過去のブログ記事より)

このページは、以下の英語ページの抄訳です。最新の情報については、英語ページを参照してください。

 

 

この記事のオリジナルは、Glenn Paulley が sybase.com に 2009年3月に掲載したものです。この中で、Glenn は jConnect と SQL Anywhere JDBC ドライバーの違いについて述べています。
最近 jConnect、JDBC、SQL Anywhere の過去の特定のバージョンにおけるサポートについてまとめましたが、versions 12 と 16 の SQL Anywhere JDBC ドライバーでは、 JDBC 4.0 をサポートしていることをここでお伝えしたいと思います。
また、最新の jConnect のバージョンは 7.07 で、こちらも JDBC 4.0 をサポートしています。

 

 

最近、私は Sybase jConnect と、iAnywhere (現 SQL Anywhere) JDBC ドライバーとの違いについて質問を受けました。そこで、ここでポイントをまとめておこうと思います。
いずれテクニカルドキュメントとしてまとめたいと思います。

 

 

概要:

 

2つのJDBC の実装の違いについて、簡単にまとめると以下にとおりです。

  • jConnect は、Type 4 JDBC ドライバです。 一方、iAnywhere (現 SQL Anywhere ) JDBC ドライバは Type 1 で、適切にインストールされた ODBC ドライバーの存在に依存します。
  • jConnect は、Sybase Tabular Data Stream (TDS) ワイヤプロトコル を使用しています。一方、iAnywhere (SQL Anywhere) JDBC ドライバは、CMDSEQ と呼ばれるネイティブでプロプライエタリの SQL Anywhere アプリケーションレベルプロトコルを使用しています。
  • SQL Anywhere は、TCP/IP ネットワークプロトコルでは、TDS のみをサポートしています。それとは異なり、 SQL Anywhere-specific の CMDSEQ プロトコルは、TCP/IP も、同一コンピューター通信用に設計された効率的なシェアードメモリープロトコルも、どちらもサポートしています。
  • アプリケーションが SQL Anywhere に jConnect 経由で接続されると仮定すると、TDSを使うことになり、Sybase ASE の動作を望んでいることになります。そのため、SQL Anywhere のjConnect の実装では、アプリケーションがデータベースに接続するとすぐに ASE 互換の設定セットを設定するようサポートされています(以下参照)。
  • jConnect の様々な動作は、Sybase ASE (現SAP ASE)のネイティブサポートに由来します。これは、jConnect がカーソルと特定のデータタイプ(詳細は後で述べます) をサポートしていることに特に明白です。

 

 

JDBC ドライバータイプ

 

jConnect は、Type 4 JDBC ドライバーで、完全に Java ベースです。反対に、iAnywhere (現 SQL Anywhere) JDBC ドライバーは、Type 1 ドライバーで、ベースとなる実際に SQL Anywhere サーバーと通信する (non-Java) のODBC ドライバーに依存します。iAnywhere (現 SQL Anywhere) JDBC ドライバーも、jConnect 6.0.5 も、JDBC 4.0 準拠です。

 

SQL Anywhere Version 11 では、JDBC 3.0 (JDK 1.4 以降) しかサポートしていません。
SQL Anywhere Version 10 では、JDBC 2.0 と 3.0 の両方をサポートしています。Version 10 で出荷される jodbc.jar は、どちらのサポートも含まれますが、どちらのバージョンが使用されるかは、ドライバーの名前に依存します。

  • iAnywhere.ml.jdbcodbc.idriver は JDBC 2.0 をサポートします。
  • iAnywhere.ml.jdbcodbc.jdbc3.idriver は、JDBC 3.0 をサポートします。

 

Windows CE上の Java アプリケーションを活用したい場合には、jConnect 5.5 の方がベストの選択でしょう。
Windows CE では、Java VM としてベストなのは IBM の J9 VM と「Mobile Database Option」で、(JDK Version 1.3 の) JDBC 2.0 をサポートします。
しかしながら、jConnect 5.5 だけが JDBC 2.0-準拠—jConnect 6.05 と SQL Anywhere 11 は JDBC 3.0 が必要 — なので、jConnect 5.5 (jconn2.jar) をデバイスにインストールする必要があります。

 

どのプラットフォームでも、SQL Anywhere で jConnect を使うには、データベース内に jConnect の JDBC メタデータスキーマのインストールが必要になります。
デフォルトでは、SQL Anywhere データベースは、jConnect メタデータのサポートで生成されますが、dbupgrad -j で明示的に追加することができます。

 

 

接続オプション

 

jConnect 経由で接続する場合には、SQL Anywhere サーバーは、自動的にいくつかのオプションの設定の値をリセットして、サーバーが ASE の動作をエミュレートできるようにします。
これは、sp_tsql_environment システムプロシージャー内で起こりますが、以下の SET OPTION 文を実行して接続します。

 

  1. SET TEMPORARY OPTION allow_nulls_by_default=‘Off’;
  2. SET TEMPORARY OPTION ansi_blanks=‘On’;
  3. SET TEMPORARY OPTION ansinull=‘Off’;
  4. SET TEMPORARY OPTION chained=‘Off’;
  5. SET TEMPORARY OPTION close_on_endtrans=‘Off’;
  6. SET TEMPORARY OPTION date_format=‘YYYY-MM-DD’;
  7. SET TEMPORARY OPTION date_order=‘MDY’;
  8. SET TEMPORARY OPTION escape_character=‘Off’;
  9. SET TEMPORARY OPTION isolation_level=‘1’;
  10. SET TEMPORARY OPTION on_tsql_error=‘Continue’;
  11. SET TEMPORARY OPTION quoted_identifier=‘Off’;
  12. SET TEMPORARY OPTION time_format=‘HH:NN:SS.SSS’;
  13. SET TEMPORARY OPTION timestamp_format=‘YYYY-MM-DD HH:NN:SS.SSS’;
  14. SET TEMPORARY OPTION tsql_variables=‘On’;

 

接続の初期またはデフォルトの値は、保持されないことに注意してください。
また、TDS 接続のデフォルトの分離レベルは、「1」(READ COMMITED 確定した最新データを常に読み取る ) であることに注意してください。
DBISQL と Sybase Central の古いバージョンでは、SQL Anywhere セマンティクスをできるだけ多く保持するために、データベースサーバーに接続した後にこれらのテンポラリオプション設定を undo にします。
そのため、違いについては気づかないかもしれません。
新しいバージョンの DBISQL と Sybase Central 管理ツール (SQL Anywhere Version 10 以降) では、jConnect 経由での接続はサポートしていません。

 

次は、: jConnect と iAnywhere (現 SQL Anywhere) JDBC ドライバのセマンティックとパフォーマンスの違いについて述べます。

 

(SQL Anywhere では、iAnywhere (現 SQL Anywhere) JDBC ドライバを推奨しています。)

 

 

 

 

過去のブログ記事より

Assigned Tags

      Be the first to leave a comment
      You must be Logged on to comment or reply to a post.