Microsoft Sync Framework
Microsoft Sync Framework は、アプリケーション、サービス、およびデバイスのコラボレーションとオフライン アクセスを可能にする包括的な同期プラットフォームであり、ローミング、共有、データのオフライン化を実現するテクノロジとツールを備えています。開発時に Sync Framework を使用することで、ネットワーク上で任意のプロトコルを使用するあらゆるストアのデータをあらゆるアプリケーションと統合する同期エコシステムを構築できます。
Sync Framework は、以下に示すテクノロジで構成されます。このうち最初の 3 つは、SQL Server 2008 と共にインストールできます。
Sync Services for ADO.NET は、オフラインおよびコラボレーションのシナリオでデータベースを同期する場合に使用できます。
Sync Framework コア コンポーネントは、Sync Services for ADO.NET がデータベースを同期する場合、および他の種類のデータ ストア用に同期プロバイダを作成する場合に使用できます。
Sync Services for FeedSync は、RSS フィードや ATOM フィードをローカル ストア内のデータと同期する場合に使用できます。
Sync Services for File Systems は、ファイル システム内でファイルとフォルダを同期する場合に使用できます。
メタデータ ストレージ サービスは、同期メタデータを SQL Server Compact 3.5 に格納する場合に使用できます。
このトピックの残りの部分では、Sync Services for ADO.NET の概要について説明し、他の Microsoft テクノロジと比較します。Sync Services for ADO.NET および Sync Framework の詳細なドキュメントについては、Microsoft Sync Framework デベロッパー センターを参照してください。
Microsoft Sync Framework および Sync Services for ADO.NET のインストール
Sync Framework をインストールするには、SQL Server 2008 インストール ウィザードまたはコマンド ライン インストール オプションを使用します。ウィザードを使用して Sync Framework をインストールする場合は、[機能の選択] ページで [Microsoft Sync Framework] を選択します。SQL Server および関連コンポーネントのインストール方法の詳細については、「SQL Server のインストールの概要」を参照してください。
概要と同期のシナリオ
組織の間で、移動中やリモートの社員をサポートする機能の重要性が日々高まっています。社内にいるときと同じように社員が情報にアクセスできるようにすることは、組織にとって非常に重要です。こうしたユーザーのほとんどは、ラップトップ、オフィス デスクトップ、Smartphone、または PDA を使用します。これらのデバイスからは、多くの場合、VPN 接続または企業ネットワークに直接接続するその他の方法を使用して、ユーザーのデータに直接アクセスできます。このソリューションは次に示す領域で大きな欠点があるために、大部分のリモート ユーザーにとって十分とは言えません。
ネットワーク要件
ユーザーが情報にアクセスできるようにするには、データにアクセスしているリモート デバイスが、企業ネットワークと常時接続されている必要があります。自宅で作業する社員などにとっては、このことは問題となりません。それ以外の、常に移動している営業担当者などにとっては、これが大きな難点となります。たとえば、顧客を訪問している営業担当者が、ネットワークに接続できないために在庫データにアクセスできないと、業務を効率的に進めることができません。
データ アクセスの速度
一般的な企業のクライアント/サーバー環境では、ユーザーは高速ネットワークにより情報にすばやくアクセスできます。一方、リモートの社員の多くは、低速で信頼性の低い有線または無線ネットワークを通じて接続しています。一般的なソリューションでは、デバイスにデータを保持できないために、ユーザーが必要とするあらゆるデータを必要時に毎回ダウンロードしなければなりません。たとえば、営業担当者がアプリケーションを起動するたびに製品リストをダウンロードしなければならない場合、アプリケーションに情報を取り込むために必要なタイム ラグがフラストレーションをもたらします。
単一障害点
この種のソリューションでは、すべてのユーザーが単一のサーバーに依存します。予定されたサーバーのダウンタイムまたはサーバー障害のためにデータベースが利用できなくなると、すべてのリモートの社員がデータにアクセスできなくなります。
サーバーのスケーラビリティ
リモートで作業するユーザーが増えると、企業サーバーのパフォーマンスが影響を受けるようになり、ハードウェアの追加が必要になります。
常時接続でないアプリケーション
前のセクションで説明したソリューションの代わりに、常時接続でないアプリケーションを実装する方法があります。常時接続でないアプリケーションを使用すると、リモートの社員が継続的にデータにアクセスできるようになります。ただし、必要な情報を直接取得するためにユーザーが企業データベースにアクセスする必要がある前のシナリオとは異なり、必要な情報はローカルのデバイスに保存されます。ローカル データベースにデータを取り込むために、常時接続でないアプリケーションでは一般にデータの同期が使用されます。
データの同期では、クライアント データベース (SQL Server Compact 3.5 など) に格納されている情報を定期的に取得して、サーバー データベース (SQL Server など) と変更内容を同期する処理が行われます。同期ベースのソリューションには、ネットワークに常時接続されていなくてもユーザーが情報にアクセスできるという利点があります。データはローカルに保存されるため、中央のデータベースから処理がオフロードされている間も、ユーザーは常にデータにアクセスできます。また、ネットワークの速度に制限されることがなくなるため、ユーザーはデバイスの速度でデータにアクセスできるようになります。
Sync Services for ADO.NET
Sync Services for ADO.NET は、データベース間の同期を可能にします。また、直感的で柔軟な API を使用して、オフラインおよびコラボレーションのシナリオを対象としたアプリケーションを構築できます。Sync Services for ADO.NET では、2 つのピア (SQL Server データベースなど) の間、または SQL Server Compact 3.5 クライアント データベースと ADO.NET プロバイダを使用できるサーバー データベースの間で同期を実行することができます。API では、アプリケーションのアーキテクチャと要件に応じて、用意されたコンポーネントの全部または一部のみを使用できます。
以下の図に示す常時接続でないアプリケーションの例では、リモートの社員のローカル デバイスにデータ (緑のデータベース) が保持されます。最初の例は、情報がユーザーのデバイスに直接格納されるスタンドアロンのデータベース システムを示しています。2 番目の例では、リモート オフィスの複数の社員がデータにアクセスできるように、情報がこのリモート オフィスのワークグループ データベースに格納されています。
このような常時接続でないアプリケーションで一般的な拡張機能が、コラボレーションのシナリオをサポートする機能です。このシナリオでは、2 つのデータベースを中央のハブを経由せずにピア ツー ピアで同期できます。次の図に示すように、リモート データベースは他のどのデータベースとも自由に情報を交換できます。この種類のソリューションは、リモートの社員 (オンサイトの財務監査担当者など) がリモートでグループとして作業する場合に役立ちます。この場合、社員は頻繁に情報を相互共有する必要があります。ただし、中央のデータベースには接続されていないので、何らかのピア ツー ピア ネットワークを通じて情報を共有する必要があります。
SQL Server での Sync Services for ADO.NET の使用
Sync Services for ADO.NET では、データベースが次のようにサポートされます。
オフラインのシナリオでは、クライアント データベースが SQL Server Compact 3.5 以降であることが必要です。サーバーは、ADO.NET プロバイダを利用できるものであればどのデータベースでもかまいません。
コラボレーションのシナリオでは、各ピア データベースが SQL Server 2000 Service Pack 4 以降のバージョンであることが必要です。
SQL Server はエンタープライズ クラスのデータベースとして、同期を必要とするアプリケーションに強固な基盤を提供します。SQL Server 2008 では、同期の作成に最も役立つ機能の 1 つである変更の追跡を提供しています。Sync Services for ADO.NET には、変更を同期するための API が備えられていますが、実際にはサーバーやピア データベースでの変更が追跡されません (SQL Server Compact 3.5 では、クライアント データベースでの変更が追跡されます)。カスタムの変更追跡システムを作成することもできますが、一般に複雑さやパフォーマンスのオーバーヘッドが大幅に増加します。構成が簡単でパフォーマンスの高い追跡を実現できる SQL Server 2008 の変更の追跡を使用することをお勧めします。詳細については、「データ変更の追跡」を参照してください。
Sync Services for ADO.NET と他のテクノロジの比較
Microsoft では、同期を実行するアプリケーション向けに設計された複数のテクノロジを提供しています。そこで参考のために、Sync Services for ADO.NET と、オフラインおよびコラボレーションのシナリオで使用されるその他のテクノロジを比較します。
オフラインの同期
オフライン同期の最も重要な Microsoft テクノロジを次に示します。
リモート データ アクセス (RDA)。このテクノロジは、SQL Server Compact 3.5 データベースを SQL Server の別のエディションのデータベースと同期する場合に使用します。詳細については、SQL Server Compact 3.5 オンライン ブックを参照してください。
マージ レプリケーション。このテクノロジは、SQL Server Compact 3.5 を含む SQL Server の複数のエディションを同期する場合に使用します。詳細については、「マージ レプリケーションの概要」および「適切なレプリケーションの種類の選択」を参照してください。
構築するアプリケーションに適したテクノロジを判断する際には、次の表が参考になります。
主な機能 |
RDA |
マージ レプリケーション |
Sync Services |
---|---|---|---|
n 層アーキテクチャまたは SOA (Service Oriented Architecture) を使用した同期 |
不可能 |
不可能 |
可能 |
異種データベースのサポート |
不可能 |
不可能 |
可能 |
追加変更の追跡 |
不可能1 |
可能 |
可能 |
競合の検出と解決 |
不可能 |
可能2 |
可能 |
クライアントでの容易なデータ ビューの作成 |
不可能 |
不可能 |
可能 |
スキーマとデータの自動的な初期化 |
可能 |
可能 |
可能 |
大きなデータセットのサポート |
可能 |
可能 |
可能 |
ローカルでのクエリ プロセッサの使用 |
可能 |
可能 |
可能 |
スキーマの変更の自動的な反映 |
不可能 |
可能 |
不可能 |
データの自動的なパーティション再分割 |
不可能 |
可能 |
不可能 |
デバイスでの使用 |
可能 |
可能 |
可能 |
1 RDA では増分アップロードがサポートされますが、ダウンロードは常にクライアント上の全データを更新するスナップショットとなります。
2 マージ レプリケーションには競合解決機能が組み込まれています。これに対し、Sync Services for ADO.NET は、競合解決スキームを構築するためのフレームワークを提供します。
コラボレーションでの同期
コラボレーションでの同期に関して最も重要な比較対象となるテクノロジは、複数の SQL Server Enterprise データベースを同期する場合に使用されるピア ツー ピア トランザクション レプリケーションです。Sync Services for ADO.NET とトランザクション レプリケーションは、どちらもピア ツー ピアの同期をサポートします。トランザクション レプリケーションは、複数のサーバー間で高可用性を維持し、読み取り操作のスケーリングを行う場合に最適です。これに対し Sync Services for ADO.NET は、ユーザーが同じデータを使って共同作業するアプリケーションに最も適しています。
構築するアプリケーションに適したテクノロジを判断する際には、次の表が参考になります。ピア ツー ピア トランザクション レプリケーションの詳細については、「ピア ツー ピア トランザクション レプリケーション」を参照してください。
主な機能 |
ピア ツー ピア トランザクション レプリケーション |
Sync Services |
---|---|---|
n 層アーキテクチャまたは SOA (Service Oriented Architecture) を使用した同期 |
不可能 |
可能 |
異種データベースのサポート |
不可能 |
可能 |
追加変更の追跡1 |
可能 |
可能 |
競合の検出と解決2 |
可能 |
可能 |
スキーマとデータの自動的な初期化 |
可能 |
可能 |
大きなデータセットのサポート |
可能 |
可能 |
ローカルでのクエリ プロセッサの使用 |
可能 |
可能 |
スキーマの変更の自動的な反映 |
可能 |
不可能 |
デバイスでの使用 |
不可能 |
このバージョンでは不可能 |
SQL Server Compact 3.5 との併用 |
不可能 |
このバージョンでは不可能 |
1Sync Services for ADO.NET では、行の最後のバージョンを同期する差分変更の追跡が使用されます。ピア ツー ピア トランザクション レプリケーションでは、行に対するすべての変更が各ピアで順番に適用されます。
2 レプリケーションには競合解決機能が組み込まれています。これに対し、Sync Services for ADO.NET は、競合解決スキームを構築するためのフレームワークを提供します。
使用するテクノロジの決定
Sync Services for ADO.NET は、オフライン データ セットのようなプログラミング モデルの柔軟性と、レプリケーションに見られるような豊富な同期機能セットを備えており、その機能性は RDA より優れています。レプリケーションはデータベース管理者向けであり、主に SQL Server データベースを同期するために設計されています。レプリケーションでは、ウィザード、ストアド プロシージャ、および独自の API を通じて重要な機能を構成できるようになっています。Sync Services for ADO.NET は開発者向けであり、異種データベース、およびサービス (Windows Communication Foundation (WCF) など) を通じた同期をサポートします。アプリケーションで SQL Server 以外のデータベースを同期する場合や、アプリケーションで各種のトランスポートやサービスを通じた同期を行うために別々のコンポーネントが必要である場合は、Sync Services for ADO.NET を使用します。
一部のアプリケーションでは、使用するテクノロジを簡単に決定できます。SQL Server データベース以外のデータ ソースを同期する必要がある場合は、Sync Services for ADO.NET がソリューションとなります。プログラミングをあまり行わずに同期を構成したいと考えているデータベース管理者にとっては、レプリケーションの方が適しているでしょう。最終的には、アプリケーションの要件を入念に検討し、Sync Services for ADO.NET API が適切なテクノロジかどうかを判断する必要があります。必要な操作が、データベース間でスキーマとそのデータをレプリケートすることだけにとどまらない場合は、Sync Services for ADO.NET の使用をお勧めします。