他のデータセットへの接続
データベース アーキテクチャ への移動
BDE または dbExpress を使用してデータベース サーバーに接続する、特化したクライアント データセットがあります。これらのクライアント データセットは、実際には複合コンポーネントであり、内部には、データにアクセスするための別のデータセットと、ソース データセットのデータをパッケージにまとめたりデータベース サーバーに更新を適用するプロバイダ コンポーネントを含んでいます。このような複合コンポーネントではいくらか余分なオーバーヘッドが発生しますが、以下のような利点があります。
- クライアント データセットでは、キャッシュした更新を扱う方法が非常に堅牢です。他の種類のデータセットは、デフォルトで、編集結果をデータベース サーバーに直接登録します。更新をローカルにキャッシュし、後で 1 つのトランザクションとして適用するデータセットを使用することで、ネットワーク トラフィックを減らすことができます。クライアント データセットを使って更新をキャッシュする利点については、「クライアント データセットを使用した更新情報のキャッシュ」を参照してください。
- データセットが読み取り専用の場合に、クライアント データセットがデータベース サーバーに編集結果を直接適用することができます。dbExpress を使用している場合、データセット内のデータを編集する方法はこれしかありません(dbExpress を使用している場合にデータ内を自由に移動する方法もこれだけです)。dbExpress を使用している場合以外でも、一部のクエリとすべてのストアド プロシージャの結果は読み取り専用です。クライアント データセットの使用は、そのようなデータを編集可能にする標準的な方法となります。
- クライアント データセットはディスク上の専用ファイルを直接扱うことができるため、クライアント データセットとファイルベースのモデルとを組み合わせて、柔軟な "ブリーフケース" アプリケーションを作成することができます。
特化したクライアント データセットの他に、汎用のクライアント データセット(TClientDataSet)もあります。これには内部データセットやデータセット プロバイダが含まれません。TClientDataSet にはデータベース アクセス メカニズムが組み込まれていませんが、別の外部データセットに接続してデータを取得したり更新を送信することができます。いくらか複雑ではありますが、以下のような理由で、この方法が好ましい場合があります。
- ソース データセットとデータセット プロバイダが外部にあるため、データの取得方法や更新の適用方法をより細かく制御できます。たとえば、特化したクライアント データセットを使ってデータにアクセスしているときには利用できないいくつものイベントを、プロバイダ コンポーネントで発生させることができます。
- ソース データセットが外部にあれば、マスタ/詳細関係で別のデータセットとリンクすることができます。外部プロバイダは、この関係のデータセットを、詳細をネストした 1 つのデータセットに自動的に変換します。ソース データセットが内部にあると、このような方法で詳細セットをネストさせることはできません。
- クライアント データセットを外部データセットに接続するアーキテクチャは、拡張して多層にすることが容易です。層の数が増えると開発プロセスは複雑かつ高価になるため、単層アプリケーションまたは 2 層アプリケーションとしてアプリケーション開発を始めたいと思う場合があるでしょう。データ量やユーザー数、データにアクセスするさまざまなアプリケーションの数が増えてきたら、後で多層アーキテクチャへと拡張する必要が生じるかもしれません。いずれ多層アーキテクチャを使用することになると考えるなら、クライアント データセットと外部ソース データセットを使用する方法で始めるのは有益です。そうすれば、アプリケーションが大きくなってデータのアクセスおよび操作のロジックを中間層に移動するときにもコードを再利用できるので、開発への投資は無駄になりません。
- TClientDataSet は任意のソース データセットにリンクすることができます。つまり、対応する特化したクライアント データセットがなくても、カスタム データセット(サードパーティ コンポーネント)を使用できるということです。Delphi のバージョンによっては、クライアント データセットを別のデータセットではなく XML ドキュメントに接続するための、特別なプロバイダ コンポーネントが含まれています (これは、XML プロバイダがデータセットではなく XML ドキュメントを使用するという点を除けば、クライアント データセットを別の(ソース)データセットに接続するのと同じように動作します。このような XML プロバイダの詳細は、「プロバイダのソースとしての XML ドキュメントの使用」を参照)。
クライアント データセットを外部データセットに接続するアーキテクチャには、次の 2 種類があります。