4D v16SYNCHRONIZE |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16
SYNCHRONIZE
SYNCHRONIZE
SYNCHRONIZEコマンドを使用して異なる2つの4D SQLサーバ上に存在する2つのテーブルを同期できます。いずれかのテーブルに対して行われた変更は他方のテーブルに対しても実行されます。コマンドを実行する4D SQLサーバはローカルサーバと呼ばれ、他方のサーバはリモートサーバと呼ばれます。 SYNCHRONIZEコマンドはREPLICATEコマンドを内部的に2回呼び出したものです。一回目の呼び出しでリモートサーバからのデータをローカルサーバに複製し、二回目の呼び出しでローカルサーバのデータをリモートサーバに複製します。なので同期されるテーブルは複製用に設定されていなければなりません:
詳細はREPLICATEコマンドの説明を参照してください。 SYNCHRONIZEコマンドは4つのスタンプ2つの入力スタンプと2つの出力スタンプ (最新の更新) を"引数"として受け入れます。入力スタンプはそれぞれのサーバ上での最新の同期の時期を示すために使用されます。この時期はコード化された情報として、継続時間なしで表現されます。出力スタンプは最新の更新直後のそれぞれのサーバ上での更新スタンプの値を返します。この原則により、SYNCHRONIZEコマンドが定期的に呼ばれるとき、次回の入力スタンプとして、最新の同期の出力スタンプを使用できます。 注: 入力および出力スタンプは数値として表現され、タイムスタンプとはなりません。これらのスタンプについてはREPLICATEコマンドの説明を参照してください。 エラーが発生すると、関連するサーバの出力スタンプには、エラーのもととなったレコードのスタンプが戻されます。エラーが同期以外の原因で引き起こされた場合 (例えばネットワークの問題など)、スタンプは0となります。 REMOTE OVER LOCAL とLOCAL OVER REMOTE句を使用して、アプリケーションの特性に応じて、同期の方向を強制的に指定できます。実装メカニズムについてはREPLICATEコマンドの説明を参照してください。 4Dは LATEST REMOTE STAMP と LATEST LOCAL STAMP 句の 4d_language_ref 変数にそれぞれ、リモートおよびローカルの最後のスタンプ値を返します。この情報を使用して同期処理を自動化できます。これらの情報は同期処理終了直後のスタンプ値に対応します。そのあとの REPLICATE や SYNCHRONIZE 文でこれらを使用する場合、値をインクリメントする必要はありません。REPLICATE コマンド実行後、自動でインクリメントされています。 同期処理に関連するメカニズムを理解するために、同期された2つのデータベース両側で既存のレコードが変更されたケースを考えます。 同期に使用されるメソッドは以下の形式です: C_LONGINT(vRemoteStamp) 初期のデータは以下の通り:
LOCAL STAMP と REMOTE STAMP に渡された値や使用される優先度オプションに基づき SYNCHRONIZE コマンドにより実行される同期は以下のようになります: ROL = REMOTE OVER LOCAL、LOR = LOCAL OVER REMOTE:
参照
|
プロパティ
プロダクト: 4D
履歴
ARTICLE USAGE
SQLリファレンス ( 4D v16) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||