Mobile Link は、フォールト・トレラントになっています。たとえば、同期中に通信リンクに障害が起きた場合は、リモート・データベースと統合データベースの両方が同じ状態のままになります。
クライアントでは、障害はリターン・コードで示されます。
同期障害の処理方法は、発生したタイミングによって異なります。次に示すケースは、それぞれ異なる方法で処理されます。
アップロード中の障害 アップロードの構築中や適用中に障害が起きた場合は、リモート・データベースは同期の起動時とまったく同じ状態のままになります。サーバ側では、適用されたアップロードのすべての部分がロールバックされます。
アップロードとダウンロード間の障害 アップロードの完了後、Mobile Link クライアントがダウンロードを受信する前に障害が発生した場合、クライアントはアップロードした変更が統合データベースに適切に適用されたかどうかを確認できません。アップロードが完全に適用されコミットされているか、サーバがアップロード全体を適用する前に障害が起きています。Mobile Link サーバは、統合データベースにある不完全なトランザクションを自動的にロールバックします。
アップロードされたすべての変更を再送する必要が生じた場合に備え、Mobile Link クライアントはそれらの記録を維持します。Mobile Link クライアントは、次に同期したときに前回のアップロードの状態を要求してから、新しいアップロードを構築します。前回のアップロードがコミットされていない場合は、新しいアップロードに前回のアップロードからの変更がすべて含まれます。
ダウンロード中の障害 ダウンロードの適用中にリモート・デバイスで障害が起きた場合は、適用されたダウンロードはすべての部分がロールバックされ、リモート・データベースはダウンロード前と同じ状態のままになります。
ブロッキング・ダウンロード確認を使用している場合、Mobile Link サーバでは統合データベースのダウンロード・トランザクションもロールバックされます。
非ブロッキング・ダウンロード確認を使用している場合、ダウンロード・トランザクションはすでにコミットされていますが、nonblocking_download_ack スクリプトと publication_nonblocking_download_ack スクリプトは呼び出されません。
ダウンロード確認を使用していない場合、ダウンロード中に障害が発生しても、サーバ側には影響はありません。
どのような障害が発生しても、データは失われません。Mobile Link サーバと Mobile Link クライアントが障害時のデータ管理を行います。開発者やユーザは、アプリケーション内のデータが一貫性を保持しているかどうか心配する必要はありません。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |