2

Zumero for SQL Server のドキュメントによると、既定の競合解決動作はレコード バージョン番号を使用することです。

ただし、代わりにタイムスタンプに基づくことは可能ですか? ビジネス ルールでは、最後に更新されたレコードが優先されます。

また、サーバー側データベースの特定のサブセクションを各クライアントデバイスに同期することは可能ですか (そして十分に簡単ですか)?

PS: クライアント デバイスの時刻がインターネット時刻とほぼ同期していることを前提としています。デバイスで定期的にチェックが実行されます。データの性質上、クライアントのクロックが数秒ずれていても問題ありません。更新が互いに 5 秒以内に発生する例外的なケースでは、どちらが勝つかは問題ではありません。最も重要なことは、平均してすべてのクライアントで、最後のレコードが勝つということです。

4

1 に答える 1

1

タイムスタンプによる競合解決

要するに、いいえ。今日のタイムスタンプで「勝者」の変更を選択することはできません。しかし、それが本当にあなたが望んでいることなのかどうかを疑問視する必要があります。:)

Zumero for SQL Server ドキュメントは不完全ですが、クラウド サーバー ドキュメントの競合解決の詳細はまだ正しいです。(設定方法は変わりますが、ルール自体は変わりません。) 要するに:

レコードにはバージョン番号があります。2 人のユーザーが同じレコードの同じバージョンを変更しない限り、最新バージョンが常に受け入れられます。これは、タイムスタンプで得られるのと同じ動作です (不正確なシステム クロックに関連する問題はありません)。

2 人のユーザーが同じバージョンの行を変更すると、競合が発生します。デフォルトの競合解決は列のマージです。

  • 同じレコードの異なる列への変更はすべて受け入れられます。
  • 同じレコードの同じ列に対する競合する変更については、最後にサーバーに到達したものが受け入れられます。

サーバーが同期された最新バージョンを受け入れるように競合解決を変更できますが、列をマージする必要はありません。サーバーの観点からは、これが最新のレコードです。situation_mod_after_modこれを行うには、解像度を に変更しaction_acceptます。

SQL Server データベースの分割

バージョン 1.0 (および現在のプレビュー リリース) では、SQL Server データベースをテーブルごとに細かく分割できます。ZSS Manager アプリを使用して、 dbfile を定義します

  • dbfile は、同期可能な最小単位です。
  • クライアントでは、dbfile は sqlite データベース ファイルになります。
  • サーバー上で、dbfile に追加するテーブルを選択します。
  • SQL Server テーブルは、単一の dbfile にのみ属することができます。

詳細については、ZSS Manager のドキュメントを参照してください。

于 2013-10-30T14:00:26.087 に答える