254
同期と複製

Replication 2012-02-02

  • Upload
    kmiyako

  • View
    183

  • Download
    1

Embed Size (px)

DESCRIPTION

2012年デベロッパカンファレンス資料(v12)。SQLによる同期と複製。

Citation preview

Page 1: Replication 2012-02-02

同期と複製

Page 2: Replication 2012-02-02

同期と複製

Page 3: Replication 2012-02-02

同期と複製『典型的な操作をコマンドひとつで実現』

Page 4: Replication 2012-02-02

同期と複製『典型的な操作をコマンドひとつで実現』

Page 5: Replication 2012-02-02

同期と複製

レコードの書き出し

『典型的な操作をコマンドひとつで実現』

Page 6: Replication 2012-02-02

同期と複製

レコードの書き出し

ファイルの移動

『典型的な操作をコマンドひとつで実現』

Page 7: Replication 2012-02-02

同期と複製

レコードの書き出し

ファイルの移動

レコードの読み込み

『典型的な操作をコマンドひとつで実現』

Page 8: Replication 2012-02-02

同期と複製

Page 9: Replication 2012-02-02

同期と複製役割と名称

Page 10: Replication 2012-02-02

同期と複製役割と名称

命令!

Page 11: Replication 2012-02-02

同期と複製役割と名称

命令!DATA

Page 12: Replication 2012-02-02

同期と複製役割と名称

マスター

スレイブローカル

リモート命令!DATA

Page 13: Replication 2012-02-02

同期と複製役割と名称

マスタースレイブローカル リモート

命令!DATA

Page 14: Replication 2012-02-02

同期と複製役割と名称

マスタースレイブローカル リモート

命令!DATA

命令する方が僕

Page 15: Replication 2012-02-02

同期と複製役割と名称

マスタースレイブローカル リモート

命令!DATA

命令する方が僕供給する方が主

Page 16: Replication 2012-02-02

同期と複製マスタースレイブ

ローカル リモート

Page 17: Replication 2012-02-02

同期と複製マスタースレイブ

ローカル リモート

(トランザクション)コマンド実行(エラー処理)

完全に自動

Page 18: Replication 2012-02-02

同期と複製

Page 19: Replication 2012-02-02

同期と複製

複製

Page 20: Replication 2012-02-02

同期と複製

レコードの書き出し

複製

Page 21: Replication 2012-02-02

同期と複製

レコードの書き出し

ファイルの移動

複製

Page 22: Replication 2012-02-02

同期と複製

レコードの書き出し

ファイルの移動

レコードの読み込み

複製

Page 23: Replication 2012-02-02

同期と複製

レコードの書き出し

ファイルの移動

レコードの読み込み

複製 同期

Page 24: Replication 2012-02-02

同期と複製

レコードの書き出し

ファイルの移動

レコードの読み込み

複製

▶ レコードの書き出し

同期

Page 25: Replication 2012-02-02

同期と複製

レコードの書き出し

ファイルの移動

レコードの読み込み

複製

▶ レコードの書き出し

ファイルの移動

同期

Page 26: Replication 2012-02-02

同期と複製

レコードの書き出し

ファイルの移動

レコードの読み込み

複製

▶ レコードの書き出し

ファイルの移動▲

レコードの読み込み

同期

Page 27: Replication 2012-02-02

同期と複製

複製 同期

Page 28: Replication 2012-02-02

同期と複製

複製

同期

Page 29: Replication 2012-02-02

同期と複製

複製

同期

リモートからローカルにレコードをコピーすること

Page 30: Replication 2012-02-02

同期と複製

複製

同期

リモートからローカルにレコードをコピーすること

リモートからローカルにレコードをコピーした後,ローカルからリモートにレコードをコピーすること

Page 31: Replication 2012-02-02

同期と複製

複製

同期

Page 32: Replication 2012-02-02

同期と複製

複製

同期 複製 複製≠ +

Page 33: Replication 2012-02-02

同期と複製

複製

同期 複製 複製≠ +

無限ループに陥ってしまう

Page 34: Replication 2012-02-02

複製の設定マスタースレイブ

ローカル リモート

(トランザクション)コマンド実行(エラー処理)

完全に自動

Page 35: Replication 2012-02-02

複製の設定マスタースレイブ

ローカル リモート

(トランザクション)コマンド実行(エラー処理)

完全に自動

Page 36: Replication 2012-02-02

複製の設定マスタースレイブ

ローカル リモート

(トランザクション)コマンド実行(エラー処理)

主キーを作成複製を有効にする

Page 37: Replication 2012-02-02

複製の設定

Page 38: Replication 2012-02-02

複製の設定

Page 39: Replication 2012-02-02

複製の設定

Page 40: Replication 2012-02-02

複製の設定

Page 41: Replication 2012-02-02

複製の設定

Page 42: Replication 2012-02-02

複製の設定

Page 43: Replication 2012-02-02

複製の設定

Page 44: Replication 2012-02-02

複製の設定プライマリーキー(主キー)

Page 45: Replication 2012-02-02

複製の設定プライマリーキー(主キー)

Page 46: Replication 2012-02-02

複製の設定

ALTER TABLE table ADD PRIMARY KEY column

プライマリーキー(主キー)

Page 47: Replication 2012-02-02

複製の設定

ALTER TABLE table ENABLE REPLICATE

ALTER TABLE table ADD PRIMARY KEY column

プライマリーキー(主キー)

Page 48: Replication 2012-02-02

複製の設定

ALTER TABLE table ENABLE REPLICATE

ALTER TABLE table ADD PRIMARY KEY column

プライマリーキー(主キー)

ALTER TABLE table ADD column

UUID AUTO_GENERATE

Page 49: Replication 2012-02-02

複製の設定

Page 50: Replication 2012-02-02

複製の設定4DB/4DCストラクチャファイル

4DIndyストラクチャインデックスファイル

Page 51: Replication 2012-02-02

複製の設定

4DSyncHeaderシンクヘッダーファイル

4DSyncDataシンクデータファイル

4DB/4DCストラクチャファイル

4DIndyストラクチャインデックスファイル

Page 52: Replication 2012-02-02

複製の設定

Page 53: Replication 2012-02-02

複製の設定

レコードのタッチ

Page 54: Replication 2012-02-02

複製の設定

Page 55: Replication 2012-02-02

複製の設定設定の解除

Page 56: Replication 2012-02-02

複製の設定

ALTER TABLE table DISABLE REPLICATEあるいはストラクチャエディターで『複製』を無効に。

設定の解除

Page 57: Replication 2012-02-02

複製の設定

ALTER TABLE table DISABLE REPLICATEあるいはストラクチャエディターで『複製』を無効に。

4DSyncHeader/4DSyncData複製有効テーブルが存在する限り削除してはならない。

設定の解除

Page 58: Replication 2012-02-02

複製の設定

ALTER TABLE table DISABLE REPLICATEあるいはストラクチャエディターで『複製』を無効に。

4DSyncHeader/4DSyncData複製有効テーブルが存在する限り削除してはならない。

設定の解除

Page 59: Replication 2012-02-02

複製の仕組み

Page 60: Replication 2012-02-02

複製の仕組みデータベースエンジンレベルで発生するイベントを再現Create,Read,Update,Delete

Page 61: Replication 2012-02-02

アクション何が起きた

複製の仕組みデータベースエンジンレベルで発生するイベントを再現Create,Read,Update,Delete

Page 62: Replication 2012-02-02

レコード番号どこで

アクション何が起きた

複製の仕組みデータベースエンジンレベルで発生するイベントを再現Create,Read,Update,Delete

Page 63: Replication 2012-02-02

レコード番号どこで

アクション何が起きた

複製の仕組みデータベースエンジンレベルで発生するイベントを再現Create,Read,Update,Delete

スタンプいつ

Page 64: Replication 2012-02-02

レコード番号どこで

アクション何が起きた

複製の仕組み

スタンプいつ

Page 65: Replication 2012-02-02

レコード番号どこで

アクション何が起きた

複製の仕組み

スタンプいつ

Page 66: Replication 2012-02-02

レコード番号どこで

アクション何が起きた

複製の仕組み

スタンプいつ

バーチャルフィールド複製が有効にされたテーブルに作成される疑似フィールドダブルアンダースコアから始まる名前

Page 67: Replication 2012-02-02

レコード番号: __ROW_IDどこで

スタンプ: __ROW_STAMPいつ

アクション: __ROW_ACTION何が起きた

複製の仕組みバーチャルフィールド複製が有効にされたテーブルに作成される疑似フィールドダブルアンダースコアから始まる名前

Page 68: Replication 2012-02-02

レコード番号: __ROW_IDどこで

スタンプ: __ROW_STAMPいつ

アクション: __ROW_ACTION何が起きた

複製の仕組み

Page 69: Replication 2012-02-02

レコード番号: __ROW_IDどこで

スタンプ: __ROW_STAMPいつ

アクション: __ROW_ACTION何が起きた

複製の仕組み

Page 70: Replication 2012-02-02

レコード番号: __ROW_IDどこで

スタンプ: __ROW_STAMPいつ

アクション: __ROW_ACTION何が起きた

複製の仕組みレコード操作の種類【Int16】1=更新(新規作成も)2=削除利用:複製・同期のみ

Page 71: Replication 2012-02-02

レコード番号: __ROW_IDどこで

スタンプ: __ROW_STAMPいつ

アクション: __ROW_ACTION何が起きた

複製の仕組みレコード操作の種類【Int16】1=更新(新規作成も)2=削除利用:複製・同期のみ

更新

Page 72: Replication 2012-02-02

レコード番号: __ROW_IDどこで

スタンプ: __ROW_STAMPいつ

アクション: __ROW_ACTION何が起きた

複製の仕組みレコード操作の種類【Int16】1=更新(新規作成も)2=削除利用:複製・同期のみ

更新

更新, 更新, 更新, 更新, 更新, 更新, 更新, 更新, 更新

Page 73: Replication 2012-02-02

レコード番号: __ROW_IDどこで

スタンプ: __ROW_STAMPいつ

アクション: __ROW_ACTION何が起きた

複製の仕組みレコード操作の種類【Int16】1=更新(新規作成も)2=削除利用:複製・同期のみ

更新

更新, 更新, 更新, 更新, 更新, 更新, 更新, 更新, 更新

削除。←大事なのはこのアクションだけ

Page 74: Replication 2012-02-02

レコード番号: __ROW_IDどこで

スタンプ: __ROW_STAMPいつ

アクション: __ROW_ACTION何が起きた

複製の仕組み

Page 75: Replication 2012-02-02

レコード番号: __ROW_IDどこで

スタンプ: __ROW_STAMPいつ

アクション: __ROW_ACTION何が起きた

複製の仕組みRecord number【Int32】0から始まる再利用される利用:複製・同期以外

Page 76: Replication 2012-02-02

レコード番号: __ROW_IDどこで

スタンプ: __ROW_STAMPいつ

アクション: __ROW_ACTION何が起きた

複製の仕組みRecord number【Int32】0から始まる再利用される利用:複製・同期以外

ID=0/PK=”A” 削除

Page 77: Replication 2012-02-02

レコード番号: __ROW_IDどこで

スタンプ: __ROW_STAMPいつ

アクション: __ROW_ACTION何が起きた

複製の仕組みRecord number【Int32】0から始まる再利用される利用:複製・同期以外

ID=0/PK=”A” 削除

ID=0/PK=”B” 作成

Page 78: Replication 2012-02-02

レコード番号: __ROW_IDどこで

スタンプ: __ROW_STAMPいつ

アクション: __ROW_ACTION何が起きた

複製の仕組みRecord number【Int32】0から始まる再利用される利用:複製・同期以外

ID=0/PK=”A” 削除

ID=0/PK=”B” 作成

プライマリーキーが違うので,混乱することはない

Page 79: Replication 2012-02-02

レコード番号: __ROW_IDどこで

スタンプ: __ROW_STAMPいつ

アクション: __ROW_ACTION何が起きた

複製の仕組み

Page 80: Replication 2012-02-02

レコード番号: __ROW_IDどこで

スタンプ: __ROW_STAMPいつ

アクション: __ROW_ACTION何が起きた

複製の仕組みシーケンシャル番号【Int64】1から始まる1ずつ増えるとは限らない利用:すべて

Page 81: Replication 2012-02-02

レコード番号: __ROW_IDどこで

スタンプ: __ROW_STAMPいつ

アクション: __ROW_ACTION何が起きた

複製の仕組みシーケンシャル番号【Int64】1から始まる1ずつ増えるとは限らない利用:すべて

1個のレコードに対する1個のアクションで1個のスタンプ

Page 82: Replication 2012-02-02

レコード番号: __ROW_IDどこで

スタンプ: __ROW_STAMPいつ

アクション: __ROW_ACTION何が起きた

複製の仕組みシーケンシャル番号【Int64】1から始まる1ずつ増えるとは限らない利用:すべて

1個のレコードに対する1個のアクションで1個のスタンプ

100個のレコードに対する1個のアクションで100個のスタンプ

Page 83: Replication 2012-02-02

レコード番号: __ROW_IDどこで

スタンプ: __ROW_STAMPいつ

アクション: __ROW_ACTION何が起きた

複製の仕組みシーケンシャル番号【Int64】1から始まる1ずつ増えるとは限らない利用:すべて

1個のレコードに対する1個のアクションで1個のスタンプ

100個のレコードに対する1個のアクションで100個のスタンプ

1個のレコードに対する100個のアクションで1個のスタンプ

Page 84: Replication 2012-02-02

複製の設定

Page 85: Replication 2012-02-02

複製の設定

レコードのタッチ

Page 86: Replication 2012-02-02

複製の設定

レコードのタッチ

あるいは特別なスタンプ -1

Page 87: Replication 2012-02-02

制約

Page 88: Replication 2012-02-02

制約

トリガ削除制御

自動UUID重複不可

ヌル値の入力を許可しない

Page 89: Replication 2012-02-02

制約

トリガ削除制御

自動UUID重複不可

ヌル値の入力を許可しない

すべて無視

Page 90: Replication 2012-02-02

制約

Page 91: Replication 2012-02-02

制約妥当性を検証する必要がある場合複製コマンドに配列を使用する

Page 92: Replication 2012-02-02

トランザクションマスタースレイブ

ローカル リモート

(トランザクション)コマンド実行(エラー処理)

完全に自動

Page 93: Replication 2012-02-02

トランザクションマスタースレイブ

ローカル リモート

(トランザクション)コマンド実行(エラー処理)

完全に自動

Page 94: Replication 2012-02-02

トランザクションマスタースレイブ

ローカル リモート

(トランザクション)コマンド実行(エラー処理)

完全に自動

トランザ

クション

も自動

Page 95: Replication 2012-02-02

トランザクションマスタースレイブ

ローカル リモート

(トランザクション)コマンド実行(エラー処理)

完全に自動

トランザ

クション

も自動

Page 96: Replication 2012-02-02

トランザクションマスタースレイブ

ローカル リモート

(トランザクション)コマンド実行(エラー処理)

完全に自動

トランザ

クション

も自動

Page 97: Replication 2012-02-02

トランザクションマスタースレイブ

ローカル リモート

(トランザクション)コマンド実行(エラー処理)

完全に自動

トランザ

クション

も自動

Page 98: Replication 2012-02-02

トランザクションマスタースレイブ

ローカル リモート

(トランザクション)コマンド実行(エラー処理)

完全に自動

トランザ

クション

も自動

Page 99: Replication 2012-02-02

トランザクション

Page 100: Replication 2012-02-02

トランザクション

複製中にリモートのレコードが更新された場合ページネーションされた複製の途中でスタンプが変わったとき▶複製を最初からやり直す必要がある

Page 101: Replication 2012-02-02

トランザクション

Page 102: Replication 2012-02-02

トランザクション

Page 103: Replication 2012-02-02

トランザクション

複製中にローカルのレコードが更新された場合そんなことがあってはいけない▶セレクションをロックする必要がある

Page 104: Replication 2012-02-02

トランザクション

複製中にローカルのレコードが更新された場合そんなことがあってはいけない▶セレクションをロックする必要がある

Page 105: Replication 2012-02-02

トランザクション

複製中にローカルのレコードが更新された場合そんなことがあってはいけない▶セレクションをロックする必要がある

SELECT FOR UPDATE

Page 106: Replication 2012-02-02

トランザクション

複製中にローカルのレコードが更新された場合そんなことがあってはいけない▶セレクションをロックする必要がある

SELECT FOR UPDATE

SET QUERY AND LOCK

Page 107: Replication 2012-02-02

REPLICATE

Page 108: Replication 2012-02-02

REPLICATEBegin SQLREPLICATE ....

End SQL

Page 109: Replication 2012-02-02

REPLICATEBegin SQLREPLICATE ....

End SQL

$SQL:=”REPLICATE ...”Begin SQLEXECUTE IMMEDIATE :$SQL

End SQL

Page 110: Replication 2012-02-02

REPLICATEBegin SQLREPLICATE ....

End SQL

$SQL:=”REPLICATE ...”Begin SQLEXECUTE IMMEDIATE :$SQL

End SQL

$SQL:=”REPLICATE ...”SQL EXECUTE ($SQL)

Page 111: Replication 2012-02-02

REPLICATEBegin SQLREPLICATE ....

End SQL

$SQL:=”REPLICATE ...”Begin SQLEXECUTE IMMEDIATE :$SQL

End SQL

$SQL:=”REPLICATE ...”SQL EXECUTE ($SQL)

$SQL:=”C:¥¥script.sql”SQL EXECUTE SCRIPT ($SQL; ...)

Page 112: Replication 2012-02-02

$SQL:=”REPLICATE ...”SQL EXECUTE ($SQL)

$SQL:=”C:¥¥script.sql”SQL EXECUTE SCRIPT ($SQL; ...)

REPLICATEBegin SQLREPLICATE ....

End SQL

$SQL:=”REPLICATE ...”Begin SQLEXECUTE IMMEDIATE :$SQL

End SQL

Page 113: Replication 2012-02-02

$SQL:=”REPLICATE ...”SQL EXECUTE ($SQL)

$SQL:=”C:¥¥script.sql”SQL EXECUTE SCRIPT ($SQL; ...)

REPLICATE

Begin SQLREPLICATE ....

End SQL$SQL:=”REPLICATE ...”Begin SQLEXECUTE IMMEDIATE :$SQL

End SQL

Page 114: Replication 2012-02-02

$SQL:=”REPLICATE ...”SQL EXECUTE ($SQL)

$SQL:=”C:¥¥script.sql”SQL EXECUTE SCRIPT ($SQL; ...)

REPLICATE

Begin SQLREPLICATE ....

End SQL$SQL:=”REPLICATE ...”Begin SQLEXECUTE IMMEDIATE :$SQL

End SQL

SQL LOGIN(“IP:192.168.1.1”; ... ;*)

Page 115: Replication 2012-02-02

$SQL:=”REPLICATE ...”SQL EXECUTE ($SQL)

$SQL:=”C:¥¥script.sql”SQL EXECUTE SCRIPT ($SQL; ...)

REPLICATE

Begin SQLREPLICATE ....

End SQL$SQL:=”REPLICATE ...”Begin SQLEXECUTE IMMEDIATE :$SQL

End SQL

SQL LOGIN(“IP:192.168.1.1”; ... ;*)SQL LOGIN(“4D:MyServer”; ... ;*)

Page 116: Replication 2012-02-02

$SQL:=”REPLICATE ...”SQL EXECUTE ($SQL)

$SQL:=”C:¥¥script.sql”SQL EXECUTE SCRIPT ($SQL; ...)

REPLICATE

Begin SQLREPLICATE ....

End SQL$SQL:=”REPLICATE ...”Begin SQLEXECUTE IMMEDIATE :$SQL

End SQL

SQL LOGIN(“IP:192.168.1.1”; ... ;*)SQL LOGIN(“4D:MyServer”; ... ;*)SQL LOGIN(“ODBC:MyDSN”; ... ;*)

Page 117: Replication 2012-02-02

$SQL:=”REPLICATE ...”SQL EXECUTE ($SQL)

$SQL:=”C:¥¥script.sql”SQL EXECUTE SCRIPT ($SQL; ...)

REPLICATE

Begin SQLREPLICATE ....

End SQL$SQL:=”REPLICATE ...”Begin SQLEXECUTE IMMEDIATE :$SQL

End SQL

SQL LOGIN(“IP:192.168.1.1”; ... ;*)SQL LOGIN(“4D:MyServer”; ... ;*)SQL LOGIN(“ODBC:MyDSN”; ... ;*)

Page 118: Replication 2012-02-02

REPLICATE

Page 119: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

Page 120: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

マスタースレイブローカル リモート

Page 121: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

マスタースレイブローカル リモート

Page 122: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

マスタースレイブローカル リモート

Page 123: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

マスタースレイブローカル リモート

Page 124: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

マスタースレイブローカル リモートSTAMP

1

Page 125: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

マスタースレイブローカル リモート

STAMP1

Page 126: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

マスタースレイブローカル リモート

STAMP1

Page 127: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

マスタースレイブローカル リモート

STAMP1

Page 128: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

マスタースレイブローカル リモート

STAMP1

Page 129: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

マスタースレイブローカル リモート

STAMP2

Page 130: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

マスタースレイブローカル リモート

STAMP3

Page 131: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

マスタースレイブローカル リモート

STAMP4

Page 132: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

マスタースレイブローカル リモート

STAMP5

Page 133: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

マスタースレイブローカル リモート

STAMP6

Page 134: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

マスタースレイブローカル リモート

STAMP7

Page 135: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

マスタースレイブローカル リモート

STAMP8

Page 136: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

マスタースレイブローカル リモート

STAMP9

Page 137: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

マスタースレイブローカル リモート

STAMP9

Page 138: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

マスタースレイブローカル リモートSTAMP

9

Page 139: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

マスタースレイブローカル リモートSTAMP

9

Page 140: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

Page 141: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

Page 142: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

Page 143: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

OFFSET :inOffset

Page 144: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

OFFSET :inOffset

マスタースレイブローカル リモート

Page 145: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

OFFSET :inOffset

マスタースレイブローカル リモート

Page 146: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

OFFSET :inOffset

マスタースレイブローカル リモート

Page 147: Replication 2012-02-02

REPLICATE

Page 148: Replication 2012-02-02

REPLICATE複製の途中でスタンプが変わったとき!!

Page 149: Replication 2012-02-02

REPLICATE複製の途中でスタンプが変わったとき!!

最初からやり直してください

Page 150: Replication 2012-02-02

REPLICATE複製の途中でスタンプが変わったとき!!

最初からやり直してくださいトランザクション

Page 151: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

OFFSET :inOffset

Page 152: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

OFFSET :inOffset

Page 153: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

OFFSET :inOffset

WHERE :condition

Page 154: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

OFFSET :inOffset

WHERE :condition

Page 155: Replication 2012-02-02

REPLICATE

Page 156: Replication 2012-02-02

REPLICATEレコードがWHERE句で取れなくなったとき!!

Page 157: Replication 2012-02-02

REPLICATEレコードがWHERE句で取れなくなったとき!!

オーファンレコード

Page 158: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

OFFSET :inOffset

WHERE :condition

Page 159: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

OFFSET :inOffset

WHERE :condition

Page 160: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

OFFSET :inOffset

WHERE :condition

LOCAL STAMP :inStampLocal

LOCAL OVER REMOTE REMOTE OVER LOCALl

LATEST LOCAL STAMP :outStampLocal

Page 161: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

OFFSET :inOffset

WHERE :condition

LOCAL STAMP :inStampLocal

LOCAL OVER REMOTE REMOTE OVER LOCAL

LATEST LOCAL STAMP :outStampLocal

Page 162: Replication 2012-02-02

REPLICATE

Page 163: Replication 2012-02-02

REPLICATEコンフリクトレゾリューション

Page 164: Replication 2012-02-02

REPLICATEコンフリクトレゾリューション

Page 165: Replication 2012-02-02

REPLICATEコンフリクトレゾリューション

Page 166: Replication 2012-02-02

REPLICATEコンフリクトレゾリューション

特定のレコードが,複製と複製の間に,リモートとローカルの両方で更新された状況

Page 167: Replication 2012-02-02

REPLICATEコンフリクトレゾリューション

特定のレコードが,複製と複製の間に,リモートとローカルの両方で更新された状況

Page 168: Replication 2012-02-02

REPLICATEコンフリクトレゾリューション

特定のレコードが,複製と複製の間に,リモートとローカルの両方で更新された状況

マスタースレイブローカル リモート

STAMP3

Page 169: Replication 2012-02-02

REPLICATEコンフリクトレゾリューション

特定のレコードが,複製と複製の間に,リモートとローカルの両方で更新された状況

マスタースレイブローカル リモートSTAMP

3

Page 170: Replication 2012-02-02

REPLICATEコンフリクトレゾリューション

特定のレコードが,複製と複製の間に,リモートとローカルの両方で更新された状況

マスタースレイブローカル リモートSTAMP

3

Page 171: Replication 2012-02-02

REPLICATEコンフリクトレゾリューション

特定のレコードが,複製と複製の間に,リモートとローカルの両方で更新された状況

マスタースレイブローカル リモートSTAMP

34

Page 172: Replication 2012-02-02

REPLICATEコンフリクトレゾリューション

特定のレコードが,複製と複製の間に,リモートとローカルの両方で更新された状況

マスタースレイブローカル リモートSTAMP

35

Page 173: Replication 2012-02-02

REPLICATEコンフリクトレゾリューション

特定のレコードが,複製と複製の間に,リモートとローカルの両方で更新された状況

マスタースレイブローカル リモートSTAMP

36

Page 174: Replication 2012-02-02

REPLICATEコンフリクトレゾリューション

特定のレコードが,複製と複製の間に,リモートとローカルの両方で更新された状況

マスタースレイブローカル リモートSTAMP

37

Page 175: Replication 2012-02-02

REPLICATEコンフリクトレゾリューション

マスタースレイブローカル リモート

特定のレコードが,複製と複製の間に,リモートとローカルの両方で更新された状況

STAMP7 3

Page 176: Replication 2012-02-02

REPLICATEコンフリクトレゾリューション

マスタースレイブローカル リモート

特定のレコードが,複製と複製の間に,リモートとローカルの両方で更新された状況

STAMP5

STAMP7 3

Page 177: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LIMIT :inLimit

OFFSET :inOffset

WHERE :condition

LOCAL STAMP :inStampLocal

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

Page 178: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LIMIT :inLimit

OFFSET :inOffset

WHERE :condition

LOCAL STAMP :inStampLocal

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LOCAL OVER REMOTE REMOTE OVER LOCALl

LATEST LOCAL STAMP :outStampLocal

Page 179: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

OFFSET :inOffset

WHERE :condition

LOCAL STAMP :inStampLocal

LOCAL OVER REMOTE REMOTE OVER LOCALl

LATEST LOCAL STAMP :outStampLocal

Page 180: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

OFFSET :inOffset

WHERE :condition

LOCAL STAMP :inStampLocal

LOCAL OVER REMOTE REMOTE OVER LOCALl

LATEST LOCAL STAMP :outStampLocal

Page 181: Replication 2012-02-02

REPLICATEREPLICATE column, column,...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

OFFSET :inOffset

WHERE :condition

LOCAL STAMP :inStampLocal

LOCAL OVER REMOTE REMOTE OVER LOCALl

LATEST LOCAL STAMP :outStampLocal

Page 182: Replication 2012-02-02

REPLICATE

マスタースレイブローカル リモート

STAMP5

STAMP7 3

LOCAL OVER REMOTE REMOTE OVER LOCALl

Page 183: Replication 2012-02-02

REPLICATE

マスタースレイブローカル リモート

STAMP5

STAMP7 3

LOCAL OVER REMOTE REMOTE OVER LOCALl

YOU WIN!

YOU LOSE!

Page 184: Replication 2012-02-02

REPLICATE

マスタースレイブローカル リモート

STAMP5

STAMP7 3

LOCAL OVER REMOTE REMOTE OVER LOCALl

Page 185: Replication 2012-02-02

YOU LOSE!

REPLICATE

マスタースレイブローカル リモート

STAMP5

STAMP7 3

LOCAL OVER REMOTE REMOTE OVER LOCALl

YOU WIN!

Page 186: Replication 2012-02-02

SYNCHRONIZE

Page 187: Replication 2012-02-02

SYNCHRONIZE

Page 188: Replication 2012-02-02

SYNCHRONIZESYNCHRONIZE LOCAL TABLE table (column, ...)

WITH REMOTE TABLE table (column, ...)

LATEST LOCAL STAMP :outStampLocal;

LOCAL OVER REMOTE REMOTE OVER LOCALLATEST REMOTE STAMP :outStamp

LOCAL STAMP :inStampLocal

Page 189: Replication 2012-02-02

SYNCHRONIZESYNCHRONIZE LOCAL TABLE table (column, ...)

WITH REMOTE TABLE table (column, ...)

LATEST LOCAL STAMP :outStampLocal;

LOCAL OVER REMOTE REMOTE OVER LOCALLATEST REMOTE STAMP :outStamp

LOCAL STAMP :inStampLocal

ローカル リモート

Page 190: Replication 2012-02-02

SYNCHRONIZESYNCHRONIZE LOCAL TABLE table (column, ...)

WITH REMOTE TABLE table (column, ...)

LATEST LOCAL STAMP :outStampLocal;

LOCAL OVER REMOTE REMOTE OVER LOCALLATEST REMOTE STAMP :outStamp

LOCAL STAMP :inStampLocal

ローカル リモート

Page 191: Replication 2012-02-02

SYNCHRONIZESYNCHRONIZE LOCAL TABLE table (column, ...)

WITH REMOTE TABLE table (column, ...)

LATEST LOCAL STAMP :outStampLocal;

LOCAL OVER REMOTE REMOTE OVER LOCALLATEST REMOTE STAMP :outStamp

LOCAL STAMP :inStampLocal

ローカル リモート

Page 192: Replication 2012-02-02

SYNCHRONIZESYNCHRONIZE LOCAL TABLE table (column, ...)

WITH REMOTE TABLE table (column, ...)

LATEST LOCAL STAMP :outStampLocal;

LOCAL OVER REMOTE REMOTE OVER LOCALLATEST REMOTE STAMP :outStamp

LOCAL STAMP :inStampLocal

ローカル リモート

Page 193: Replication 2012-02-02

SYNCHRONIZESYNCHRONIZE LOCAL TABLE table (column, ...)

WITH REMOTE TABLE table (column, ...)

LATEST LOCAL STAMP :outStampLocal;

LOCAL OVER REMOTE REMOTE OVER LOCALLATEST REMOTE STAMP :outStamp

LOCAL STAMP :inStampLocal

ローカル リモート

REPLICATE

と同じ

Page 194: Replication 2012-02-02

SYNCHRONIZESYNCHRONIZE LOCAL TABLE table (column, ...)

WITH REMOTE TABLE table (column, ...)

LATEST LOCAL STAMP :outStampLocal;

LOCAL OVER REMOTE REMOTE OVER LOCALLATEST REMOTE STAMP :outStamp

LOCAL STAMP :inStampLocal

Page 195: Replication 2012-02-02

SYNCHRONIZESYNCHRONIZE LOCAL TABLE table (column, ...)

WITH REMOTE TABLE table (column, ...)

LATEST LOCAL STAMP :outStampLocal;

LOCAL OVER REMOTE REMOTE OVER LOCALLATEST REMOTE STAMP :outStamp

LOCAL STAMP :inStampLocal

Page 196: Replication 2012-02-02

SYNCHRONIZESYNCHRONIZE LOCAL TABLE table (column, ...)

WITH REMOTE TABLE table (column, ...)

LATEST LOCAL STAMP :outStampLocal;

LOCAL OVER REMOTE REMOTE OVER LOCALLATEST REMOTE STAMP :outStamp

LOCAL STAMP :inStampLocal

LIMIT :inLimit

OFFSET :inOffset

WHERE :condition

Page 197: Replication 2012-02-02

SYNCHRONIZESYNCHRONIZE LOCAL TABLE table (column, ...)

WITH REMOTE TABLE table (column, ...)

LATEST LOCAL STAMP :outStampLocal;

LOCAL OVER REMOTE REMOTE OVER LOCALLATEST REMOTE STAMP :outStamp

LOCAL STAMP :inStampLocal

LIMIT :inLimit

OFFSET :inOffset

WHERE :condition

意味がないでしょ

う!

Page 198: Replication 2012-02-02

SYNCHRONIZESYNCHRONIZE LOCAL TABLE table (column, ...)

WITH REMOTE TABLE table (column, ...)

LATEST LOCAL STAMP :outStampLocal;

LOCAL OVER REMOTE REMOTE OVER LOCALLATEST REMOTE STAMP :outStamp

LOCAL STAMP :inStampLocal

LIMIT :inLimit

OFFSET :inOffset

WHERE :condition

Page 199: Replication 2012-02-02

SYNCHRONIZEREPLICATE

Page 200: Replication 2012-02-02

SYNCHRONIZE

できるだけコンフリクトを起こさない!

REPLICATE

Page 201: Replication 2012-02-02

SYNCHRONIZE

できるだけコンフリクトを起こさない!最良の運用スタイル

▶間隔をできるだけ短くすること

REPLICATE

Page 202: Replication 2012-02-02

4DSYNC

Page 203: Replication 2012-02-02

4DSYNC

Page 204: Replication 2012-02-02

4DSYNC

Page 205: Replication 2012-02-02

4DSYNC

GET!

Page 206: Replication 2012-02-02

4DSYNC

GET!DATADATADATADATA

Page 207: Replication 2012-02-02

4DSYNC

GET!DATADATADATADATA

Page 208: Replication 2012-02-02

4DSYNC

POST

Page 209: Replication 2012-02-02

4DSYNC

POSTDATADATADATADATA

Page 210: Replication 2012-02-02

4DSYNC

Page 211: Replication 2012-02-02

4DSYNC

(JavaScript) 完全に自動

Page 212: Replication 2012-02-02

4DSYNC

Page 213: Replication 2012-02-02

4DSYNC

Page 214: Replication 2012-02-02

4DSYNC

Page 215: Replication 2012-02-02

4DSYNC

Page 216: Replication 2012-02-02

4DSYNC

Page 217: Replication 2012-02-02

4DSYNC

Page 218: Replication 2012-02-02

4DSYNC

Page 219: Replication 2012-02-02

4DSYNC複製 + Webサーバー = 4DSYNC稼働中

Page 220: Replication 2012-02-02

4DSYNC

Page 221: Replication 2012-02-02

4DSYNCGET /4DSYNC/$catalog

Page 222: Replication 2012-02-02

4DSYNCGET /4DSYNC/$catalog

Table_1 34

Page 223: Replication 2012-02-02

4DSYNCGET /4DSYNC/$catalog

Page 224: Replication 2012-02-02

4DSYNCGET /4DSYNC/$catalog/Table_1

Page 225: Replication 2012-02-02

4DSYNCGET /4DSYNC/$catalog/Table_1

<?xml version="1.0" encoding="UTF-8"?><Table_1 name="Table_1" uuid="8AD069A45F4B43DAA9B3A69C0F2C8349" leave_tag_on_delete="true" keep_record_sync_info="true" sql_schema_id="0">

<field name="Field_1" uuid="7AE0A739EC8049FB99D2708B83D53D0D" type="10" limiting_length="255" never_null="true" id="1" />

</Table_1>

Page 226: Replication 2012-02-02

4DSYNCGET /4DSYNC/$catalog/Table_1

<?xml version="1.0" encoding="UTF-8"?><Table_1 name="Table_1" uuid="8AD069A45F4B43DAA9B3A69C0F2C8349" leave_tag_on_delete="true" keep_record_sync_info="true" sql_schema_id="0">

<field name="Field_1" uuid="7AE0A739EC8049FB99D2708B83D53D0D" type="10" limiting_length="255" never_null="true" id="1" />

</Table_1>

Page 227: Replication 2012-02-02

4DSYNCGET /4DSYNC/$catalog/Table_1

<?xml version="1.0" encoding="UTF-8"?><Table_1 name="Table_1" uuid="8AD069A45F4B43DAA9B3A69C0F2C8349" leave_tag_on_delete="true" keep_record_sync_info="true" sql_schema_id="0">

<field name="Field_1" uuid="7AE0A739EC8049FB99D2708B83D53D0D" type="10" limiting_length="255" never_null="true" id="1" />

</Table_1>

Page 228: Replication 2012-02-02

4DSYNCGET /4DSYNC/$catalog/Table_1

Page 229: Replication 2012-02-02

4DSYNCGET /4DSYNC/$catalog/Table_1/Field_1

Page 230: Replication 2012-02-02

4DSYNCGET /4DSYNC/$catalog/Table_1/Field_1,

Page 231: Replication 2012-02-02

4DSYNCGET /4DSYNC/$catalog/Table_1/Field_1,Field_2Field_3,

Page 232: Replication 2012-02-02

4DSYNCGET /4DSYNC/$catalog/Table_1/Field_1,Field_2Field_3, ,

Page 233: Replication 2012-02-02

4DSYNCGET /4DSYNC/$catalog/Table_1/Field_1,Field_2Field_3, ,,Field_3

Page 234: Replication 2012-02-02

4DSYNCGET /4DSYNC/$catalog/Table_1/Field_1,Field_2,Field_3,

REPLICATE column,column,column...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

OFFSET :inOffset

Page 235: Replication 2012-02-02

4DSYNCGET /4DSYNC/$catalog/Table_1/Field_1,Field_2,Field_3

REPLICATE column,column,column...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

OFFSET :inOffset

Page 236: Replication 2012-02-02

4DSYNCGET /4DSYNC/$catalog/Table_1/Field_1,Field_2,Field_3

REPLICATE column,column,column...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

OFFSET :inOffset

Page 237: Replication 2012-02-02

4DSYNCGET /4DSYNC/$catalog/Table_1/Field_1,Field_2,Field_3

REPLICATE column,column,column...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

OFFSET :inOffset

Page 238: Replication 2012-02-02

4DSYNCGET /4DSYNC/$catalog/Table_1/Field_1,Field_2,Field_3

REPLICATE column,column,column...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

OFFSET :inOffset

Page 239: Replication 2012-02-02

4DSYNCGET /4DSYNC/$catalog/Table_1/Field_1,Field_2,Field_3

REPLICATE column,column,column...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

OFFSET :inOffset

?$stamp=0&$top=3&$skip=1

Page 240: Replication 2012-02-02

4DSYNCGET /4DSYNC/$catalog/Table_1/Field_1,Field_2,Field_3

REPLICATE column,column,column...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

OFFSET :inOffset

?$stamp=0&$top=3&$skip=1

Page 241: Replication 2012-02-02

4DSYNCGET /4DSYNC/$catalog/Table_1/Field_1,Field_2,Field_3

REPLICATE column,column,column...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

OFFSET :inOffset

?$stamp=0&$top=3&$skip=1

Page 242: Replication 2012-02-02

4DSYNCGET /4DSYNC/$catalog/Table_1/Field_1,Field_2,Field_3

REPLICATE column,column,column...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

OFFSET :inOffset

?$stamp=0&$top=3&$skip=1&$format=json

Page 243: Replication 2012-02-02

4DSYNCGET /4DSYNC/$catalog/Table_1/Field_1,Field_2,Field_3

REPLICATE column,column,column...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

OFFSET :inOffset

?$stamp=0&$top=3&$skip=1&$format=json

Page 244: Replication 2012-02-02

4DSYNCGET /4DSYNC/$catalog/Table_1/Field_1,Field_2,Field_3

REPLICATE column,column,column...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

OFFSET :inOffset

?$stamp=0&$top=3&$skip=1&$format=json

"__LATEST_STAMP": "230","__ACTIONS": [{"__ACTION": "delete","__PRIMARY_KEY_COUNT": 1,"__PRIMARY_KEY": {"Field_1": "A2D7D202E6CF486788D12DAA1A943259"},"__STAMP": 100,"__TIMESTAMP": "Fri, 02 Oct 2012 04:50:19 GMT"},{"__ACTION": "update","__PRIMARY_KEY_COUNT": 1,"__PRIMARY_KEY": {"Meeting_ID": "72A13E4FE0254679829028E15C4F999B"

Page 245: Replication 2012-02-02

4DSYNCGET /4DSYNC/$catalog/Table_1/Field_1,Field_2,Field_3

REPLICATE column,column,column...FROM table

FOR REMOTE STAMP :inStamp

LATEST REMOTE STAMP :outStamp

INTO table (column, column, ...);

LIMIT :inLimit

OFFSET :inOffset

?$stamp=0&$top=3&$skip=1&$format=json

Page 246: Replication 2012-02-02

4DSYNC

Page 247: Replication 2012-02-02

4DSYNC複製 + Webサーバー = 4DSYNC稼働中

Page 248: Replication 2012-02-02

4DSYNC複製 + Webサーバー = 4DSYNC稼働中

Page 249: Replication 2012-02-02

4DSYNC複製 + Webサーバー = 4DSYNC稼働中

セキュリティ

?

Page 250: Replication 2012-02-02

4DSYNC

Page 251: Replication 2012-02-02

4DSYNC

On Web Authentication

Case of:($1=”/4DSYNC/@”)

Else

End case

Page 252: Replication 2012-02-02

4DSYNC

Page 253: Replication 2012-02-02

4DSYNC

Page 254: Replication 2012-02-02

同期と複製