Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » Mobile Link - クイック・スタート » Mobile Link テクノロジの概要 » Mobile Link 同期の概要 » 同期処理

 

アップロードの処理方法

Mobile Link サーバが Mobile Link クライアントからアップロードを受信すると、同期が完了するまでアップロード全体が格納されます。このような処理が行われるのは、次の理由によります。

  • ダウンロード・ローのフィルタ   ダウンロードするローを決定する方法で最も一般的なのは、前回のダウンロード以後に修正されたローをダウンロードすることです。同期中は、ダウンロードよりアップロードが優先されます。アップロード中に挿入または更新されたローが、前回のダウンロード以後に修正されたローになります。

    アップロードの一部として送られたダウンロード・ローから除外する download_cursor スクリプトを記述するのは困難です。このため、Mobile Link サーバがダウンロードからこのようなローを自動的に取り除きます。

  • 挿入と更新の処理   デフォルトでは、アップロード内のテーブルは、参照整合性に違反しない順序で統合データベースに適用されます。アップロード内のテーブルは、外部キー関係に基づいて並べられます。たとえば、テーブル A とテーブル C の両方がテーブル B のプライマリ・キー・カラムを参照する外部キーを持っている場合は、テーブル B のローの挿入や更新が先にアップロードされます。

  • 挿入と更新後の削除の処理   削除は、すべての挿入と更新が適用された後で統合データベースに適用されます。削除が適用されると、テーブルはアップロードの処理とは逆の順序で処理されます。削除されるローが、削除される別のテーブルのローを参照している場合、この操作の順序では、参照元ローが参照先ローより先に削除されることになります。

  • デッドロック   アップロードを統合データベースに適用すると、他のトランザクションとの同時実行性が原因でデッドロックが発生することがあります。そのトランザクションは、他の Mobile Link サーバのデータベース接続からのアップロード・トランザクションの場合や、統合データベースを使用している他のアプリケーションからのトランザクションの場合があります。アップロード・トランザクションがデッドロックされている場合は、そのトランザクションはロールバックされ、Mobile Link サーバが自動的にアップロードをもう一度最初から適用し始めます。

    パフォーマンスに関するヒント

    競合をできるだけ避けるように同期スクリプトを書くことが重要です。複数のユーザが同時に同期しているときに競合が起きると、パフォーマンスに大きな影響があります。