| サーバ・データベース操作(MySQL、Oracle) |
| サーバ連携 | ||||||||||||||||||
| 作者 岡田 一志 | ||||||||||||||||||
| 2008年4月08日(火曜日) 10:36 | ||||||||||||||||||
|
Curlではデータベースサーバに接続し、RecordSetを生成することができる機能を持っています。これは、CDBC(Curl DataBase Connectivity)と呼ばれており、下図のようにJDBC経由でCurlからOracleやMySQLなどのサーバサイドデータベースに接続することができます。
この機能の操作方法を説明していきます。 事前準備これを利用するには、以下のものが必要となります。
これらのセットアップ及びserver.xml等のセッティング方法は、以下のページを参照してください。 RecordSetの作成まずは、CDBCを利用するために2つのパッケージをインポートします。
次にデータベースに接続するために、Connectionクラスを継承したBasicConnectionクラスのインスタンスを生成します。この際、BasicConnectionのコンストラクタの引数にCDBCサーバのURLを渡します。
単純にRecordSet(ここではConnectedRecordSetを継承したCDBC用クラスのBasicCeoonectedRecordSet)を生成するには、BasicConnectionのcreate-record-setメソッドを実行します。この引数には、データベース名とテーブル名(もしくはSQL文)を指定します。以下の例では、RecordGridに表示させています。
SQL文の実行SQL文を実行する際、create-record-setを用いて、select文よりRecordSetを取得できます。
それ以外に、insert、update、delete、create、drop等のSQLを実行する際は、BasicConnection.executeメソッドを実行します。このメソッドは一度に複数のSQL文も実行することができます。
直接SQL文を実行しなくても、BasicConnectedRecordSetのappend等のメソッドを用いたり、RecordGridの操作で、自動的にSQLを生成し、データの追加・更新・削除等を行いことができます。 データベースメタ情報の取得いくつかのデータベース・メタ情報を取得するConnectionクラスのメソッドを以下に記載します。
その他機能Curl6.0からいくつかの機能(圧縮、非同期通信、認証、独自バイナリフォーマット通信など)が追加されました。それらの一部を紹介します。 大量データを扱う場合に、パフォーマンスを向上させるための方法として、2つサポートしています。1つはHTTP圧縮機能です。これを用いますとサーバとの通信時に自動的に圧縮・解凍され、トラフィックが低減されます。利用するには、BasicConnectionのインスタンス生成時にcompress?キーワード引数にtrueをセットします。
もう一つのパフォーマンス向上機能として、通信フォーマットのシリアル化があります。通常CDBCはXMLで通信を行いますが、通信及びパースの高速化を行うため、Curl独自バイナリフォーマットのシリアル化・デシリアル化を自動的に行うという機能がサポートされました。これは通常のXMLと比べ5分の1から10分の1程度のスピードアップします。(ただし、データ量やデータ内容などによりスピードアップ率が変わる可能性があります。)これを利用するには、BasicConnectionのインスタンス生成時にserialize?キーワード引数にtrueをセットします。下位互換のためデフォルトはfalseとなっていますが、基本的にはこのパラメータをtrueにすることをお勧めします。
その他の機能として、非同期通信及びrealmを利用した認証があります。どちらもBasicConnectionのインスタンス生成時にキーワード引数として指定します。非同期通信の場合には、async?、realm認証の場合にはusernameとpasswordを指定することにより、この機能を利用することができます。 また、JDBCで扱われるデータタイプのほとんどが、Curlのデータタイプに自動的にマッピングされますので、開発者は簡単にアプリケーションの開発を行うことができます。例えば、Curl6.0からサポートされた機能ですと、OracleのBLOBタイプをCurlのByteArrayにマッピングしてくれます。 関連ドキュメント
|
||||||||||||||||||
| 最終更新 ( 2008年4月09日(水曜日) 17:48 ) | ||||||||||||||||||
