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 サーバ API » ダイレクト・ロー・ハンドリング » ダイレクト・ロー・ハンドリングの概要

 

ダイレクト・ロー・ハンドリングに関する開発のヒント

ユニークなプライマリ・キー

Mobile Link 同期 (ダイレクト・ロー・ハンドリングを含む) では、データ・ソースは、更新されないユニークなプライマリ・キーを必要とします。スプレッドシートやテキスト・ファイルなどの非リレーショナル・データ・ソースの場合、これは、1 つのカラムに、ローを識別するユニークで不変の値が含まれている必要があることを意味します。

ユニークなプライマリ・キーの管理を参照してください。

カラム名

ダイレクト・ロー・ハンドリングを使用するとき、テーブルのカラム名は、Mobile Link クライアントがカラム名を送信するように設定されている場合にのみ使用できます。または、カラム・インデックスを使用してローの情報にアクセスすることもできます。

カラム名を使用するには、次の項を参照してください。

ダウンロードに最終ダウンロード時刻を使用する

可能なかぎり、タイムスタンプベースの SQL アプリケーションのようにダイレクト・ロー・ハンドリング・アプリケーションを設定してください。つまり、last_modified カラムを維持し、そのカラムに基づいてデータをダウンロードします。この方法によって、異なるダウンロード方法を使用した場合に発生する可能性がある予期しない問題を回避できます。

タイムスタンプベースのダウンロードを参照してください。

アップロードのトランザクション管理

Mobile Link 統合データベースを使用してトランザクションをコミットすることはできません。一方、ダイレクト・ロー・ハンドリング・データ・ソースを使用してトランザクションをコミットすることは可能です。トランザクション管理を設定する場合は、次のヒントを参考にしてください。

  • アップロードは Mobile Link によってコミットされる前にコミットする   Mobile Link は、アップロードを適用するとき、end_upload イベントの最後で変更をコミットします。保持するすべてのアップロード変更は、end_upload スクリプトが終了する前にコミットしてください。これを実行しなかった場合、エラーや失敗が発生したときに、アプリケーションはアップロードが適用されたとみなしていても Mobile Link はデータを適用していない状態になり、その結果、データが喪失する可能性があります。

  • 冗長なアップロードを処理する   アップロードされたローをアプリケーションがコミットしてから Mobile Link サーバがコミットするまでにエラーや失敗が発生すると、Mobile Link サーバとデータソースの一貫性が失われる場合があります。この問題を解決するには、冗長なアップロードを許可し、冗長なアップロードが適切に適用されるようにするための論理を用意します。特に、アプリケーションがアップロードをもう一度送信する場合は、アップロードが再度適用されないようにしてください。

エラーの処理

エラーを処理するには、上記のように、適切なトランザクション管理を使用します。また、ローを処理する Java コードおよび .NET コードでは、発生するすべての例外を Mobile Link サーバに送信してください。Mobile Link サーバまたはアプリケーションが変更をコミットする前にエラーが発生した場合、Mobile Link は、トランザクションをロールバックし、アプリケーションとの一貫性がある状態を維持します。

クラス・インスタンス

ダイレクト・ロー・ハンドリングでは、Mobile Link は、データベース接続ごとにクラス・インスタンスを 1 つ作成します。クラス・インスタンスが破棄されるのは、同期の最後ではなく、データベース接続が閉じられたときです。クラス・レベル変数は、以前の同期から値を保持します。