CData JDBC-ODBC ブリッジと Sun JDBC-ODBC ブリッジの比較



JDK 8 で JDBC-ODBC ブリッジが非推奨となったことにより、Java ベースのアプリケーションにおける ODBC 接続のサポートに空白が生じています。CData JDBC-ODBC ブリッジは、Sun JDBC-ODBC ブリッジのシームレスな代替製品です。CData JDBC-ODBC ブリッジをドロップインで配置するだけで、まったく同じ方法で ODBC データソースに接続できます。追加のアプリケーションやインストールは必要ありません。

準備

この記事では、Sun JDBC-ODBC ブリッジ(JDK 7 で利用可能)と CData JDBC-ODBC ブリッジ1を比較します。比較にあたっては、CData 独自の MySQL 用 ODBC ドライバーを使用することによるバイアスを避けるため、オープンソースの MySQL Connector/ODBC2 を採用しました。ベンチマークを設定するために、テストマシンに MySQL Server 5.7 をインストールし、比較的大規模なデータセットをデータベースに挿入しました。

テストマシンの仕様は以下のとおりです:
オペレーティングシステム:Windows 7 Ultimate, SP1
プロセッサ:Intel® CoreTM i3-2120 CPU @ 3.30GHz
搭載メモリ(RAM):8.00 GB
システムの種類:64 ビットオペレーティングシステム

ブリッジを並べて比較しているため、マシン自体のパフォーマンスは比較的重要ではありません。重要なのは、ブリッジ同士の相対的なパフォーマンスの違いです。

比較



比較を開始するにあたり、MySQL に新しいデータベースを作成し、以下に示す「restaurant」というテーブルを作成しました:

+-----------------+---------------+------+-----+---------+-------+
| Field           | Type          | Null | Key | Default | Extra |
+-----------------+---------------+------+-----+---------+-------+
| _id             | int(10)       | NO   | PRI |         |       |
| grades          | varchar(2000) | YES  |     | NULL    |       |
| address_street  | varchar(255)  | YES  |     | NULL    |       |
| address_zipcode | int(11)       | YES  |     | NULL    |       |
| address_coord   | varchar(255)  | YES  |     | NULL    |       |
| building        | varchar(127)  | YES  |     | NULL    |       |
| name            | varchar(255)  | YES  |     | NULL    |       |
| restaurant_id   | bigint(20)    | NO   |     | NULL    |       |
| borough         | varchar(255)  | YES  |     | NULL    |       |
| cuisine         | varchar(255)  | YES  |     | NULL    |       |
| avg_score       | double        | YES  |     | NULL    |       |
+-----------------+---------------+------+-----+---------+-------+

データセットは、レストランに関する情報を含む 1,026,779 行のデータ(3.45 GB)で構成されています。

この調査の主な目的は、ブリッジの相対的なパフォーマンスを比較することでした。そのため、各ブリッジで同じ DSN に対して同じクエリを実行しました。実行したクエリは以下のとおりです:

  1. SELECT * FROM restaurant LIMIT 250000
  2. SELECT * FROM restaurant LIMIT 500000
  3. SELECT * FROM restaurant LIMIT 1000000


結果



シンプルな Java アプリケーションから、各 JDBC-ODBC ブリッジで同じ DSN を使用して MySQL データベースに接続し、上記のクエリを繰り返し実行しました。各ブリッジで使用した JDBC URL は以下のとおりです:

  • CData JDBC-ODBCjdbc:jdbcodbc:DSN='MySQL Source';
  • Sun JDBC-ODBCjdbc:odbc:MySQL Source

結果は読み込まれ、各行ごとに新しい文字列変数に格納されました。下記のチャートに示されている時間は、複数のクエリに基づく平均値であり、ネットワークトラフィックの急増などによる外れ値を平準化しています。

ドライバー別クエリ時間(ミリ秒)
クエリ CData ブリッジ Sun ブリッジ
1(250,000 行) 4,446 (316% 高速) 14,058
2(500,000 行) 8,882 (316% 高速) 28,036
3(1,000,000 行) 17,726 (327% 高速) 57,883

結果からわかるように、CData JDBC-ODBC ブリッジは Sun JDBC-ODBC ブリッジと比較して大幅なパフォーマンス向上を実現しており、一貫して3倍以上の速度で結果を取得・処理しています。特筆すべき点として、CData ブリッジはデータセットのサイズが大きくなるほど、そのパフォーマンス優位性が向上しています。

各クエリの平均実行時間の比較を以下のチャートに示します:

結果


結論



CData JDBC-ODBC ブリッジは、Sun JDBC-ODBC ブリッジをはるかに上回るパフォーマンスを提供します。CData の開発者は、結果処理のパフォーマンス最適化に数え切れないほどの時間を費やしており、ドライバーのボトルネックはウェブトラフィックとサーバー処理時間のみとなっています。このパフォーマンスは、大量のデータを処理する必要がある場合に特に顕著です。

参考文献



  1. MySQL Connector/ODBC
  2. CData JDBC-ODBC ブリッジ

関連記事



始める準備はできましたか?

無料トライアルをダウンロード:

今すぐダウンロード

詳細:

JDBC-ODBC Bridge Driver

JDBC-ODBC Bridge は、あらゆるJava アプリからWindows、Linux、Mac 上のODBC データソースへのJDBC アクセスを提供します。CData JDBC-ODBC Bridge は、レポートや分析にJava ベースのツールを使用する場合でも、カスタムJava ソリューションを構築する場合でも、あらゆるODBC データソースに簡単に接続できます。