Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
リモートデータベースの各トランザクションを、1 つの同期内で独立したトランザクションとしてアップロードするように指定します。
dbmlsync -tu ...
-tu オプションを使用するときは、「トランザクションアップロード」を作成します。dbmlsync はリモートデータベースの各トランザクションを別個のトランザクションとしてアップロードします。Mobile Link サーバは各トランザクションを受信したときに別々に適用およびコミットします。
-tu オプションを使用すると、リモートデータベースのトランザクションの順序は、常に統合データベースで保持されます。ただし、トランザクションでの操作の順序は保持されないことがあります。これには、以下の 2 つの理由があります。
Mobile Link は、常に外部キー関係に基づいて更新を適用します。たとえば、外部キーテーブルとプライマリキーテーブルでデータが変更されると、Mobile Link はデータの挿入をプライマリキーテーブル、外部キーテーブルの順に行いますが、データの削除は外部キーテーブル、プライマリキーテーブルの順に行います。リモートの操作がこの順序に従っていない場合は、統合データベースでは操作の順序が異なります。
トランザクション内の操作は結合されます。つまり、1 つのトランザクションで同じローを 3 回変更しても、最後の形式のローのみがアップロードされます。
トランザクションアップロードが中断された場合、送信されなかったデータは、次の同期で送信されます。通常、正常に完了しなかったトランザクションだけが、この時点で送信されます。また、サブスクリプションの最初の同期中にアップロードが失敗した場合などは、dbmlsync はすべてのトランザクションを再送します。
-tu オプションを使用しないと、Mobile Link はリモートデータベースでのすべての変更を結合し、アップロードの 1 つのトランザクションにします。つまり、同期と同期の間に同じローを 3 回変更しても、リモートトランザクションの数に関係なく、最後の形式のローのみがアップロードされます。このデフォルトの動作は、効率がよく、多くの状況に最適です。
ただし、特定の状況では、統合データベースでリモートトランザクションを保持したい場合があります。たとえば、リモートデータベースでトランザクションが発生したときに、そのトランザクションに基づいてアクションを行うトリガを統合データベースで定義したいことがあります。
さらに、アップロードを小さいトランザクションに分割することには利点があります。多くの統合データベースは、小さなトランザクションを対象として最適化されているため、巨大なトランザクションは効率的でなく、多数の競合が発生することがあります。また、-tu オプションを使用すると、アップロード中に通信エラーが発生してもアップロード全体を失わずに済むことがあります。-tu オプションを使用している場合にアップロードエラーが発生しても、正常にアップロードされたすべてのトランザクションが適用されます。
-tu オプションを指定すると、Mobile Link は SQL Remote とほぼ同じように動作します。主な相違点は、SQL Remote がすべての変更を発生順にリモートデータベースにレプリケートし、結合を行わないことです。このように動作させるには、リモートデータベースで各データベース操作の後にコミットしてください。
Increment 拡張オプションやスクリプト化されたアップロードに -tu を使用することはできません。