5

シック クライアントの SQL ベースの Delphi アプリケーションをマルチ ティア シン クライアントに移行することを調査しており、Delphi 2010 で Datasnap を使用することを検討しています。Bob Swart によって書かれたホワイト ペーパーに取り組み、これをさらに拡張しました。

私の主な質問は、複数のクエリが実行され、データを照会するために同時に開いたままになっているため、接続と SQL クエリに関してサーバー側を効率的にしたいということです。デモでは十分な詳細が説明されていないため、実際の Datasnap サーバー アプリケーションを設計してください。

ありがとうマット

4

1 に答える 1

1

設計で決定する必要があります。

  • (ミッドサーバー) セッションを管理するか、クライアントが接続ごとにセッションを識別します (ステートフルとステートレス)

  • (ミッドサーバー) 必要なキャッシュ データの量。厄介な非常に安定したテーブルだけをキャッシュし、それらが変更された場合にのみクエリを実行できます (すべての変更がサーバーの中間で行われる場合、そうでない場合は、データが一致するテーブルに任意のマーク (GUID、カウンター) のようなものが必要です)かわった)。

  • (クライアント/ミッドサーバー) クライアントが常にデータの完全なコレクションまたはコレクションのフラグメントのみを取得する場合。(例: 商品には、Category テーブルの FK である categoryId 列を含めることができます。常に両方を送信することも、クライアントが商品データのみを要求することもできます)。

  • (Mid-Server/RDBMS) なんらかの形式のカスタム検索を提供する必要がある場合があります。最もよく使用される検索条件の手がかりがある場合は、(必要に応じて) それをカバーするインデックスを提供できます。

  • (ミッドサーバー/RDBMS)データの積極的なキャッシングを計画している場合や、それらを有効に使用する場合を除き、優れたデータセットをミッドサーバーに持ち込まないでください。Mid-Server は、RDBMS に対するもう 1 つのクライアント アプリケーションです。両方が同じマシン上にある場合、RDBMS とのメモリ/CPU/IO の競合に入ることができます。

  • (Mid-Server/RDBMS) Mid-Server でビジネス ルールを実行することは、多くの純粋主義者のモットーです。私にとって、バランスが重要です。RDBMS に 2000 のストアド プロシージャがあり (誇張ではありません。このような数の SP を使用した実際のビジネスがあります)、ミッドサーバーは、SP によって解決されるその 2000 の問題のうち 1500 に対して優れた作業を行うことができます。しかし、最後の 500 件が最悪の事態を変える可能性がある場合は、それは放っておきましょう。1500 よりも大きな手間がかかる可能性があります。そのため、2 つを混ぜて、これらの 500 を別のバージョンのソフトウェア プロジェクトにします。

  • (Mid-Server/RDBMS) ストアド プロシージャについて説明したことは、トリガーやその他の種類の RDBMS サーバー機能にも適用でき、ライブをより簡単にすることができます。

  • (Mid-Server/DataSnap)大まかな詳細のほとんどは、データセット プロバイダーに任せることができます。ただし、OnBeforeUpdateRecord イベントを利用して、必要に応じてカスタム処理を行う方法を学習してください。

  • (Mid-Server/DataSnap)次のようなコードによって、変更されたデータのみで ClientDataset を作成できることをご存知ですか? それがどれほど役立つかは想像できません... :-)

    Cds_New.Data:= Cds_Updated.Delta;

于 2010-08-20T16:08:50.950 に答える