集中的にホストされたデータベース (MS SQL Server) があり、分散クライアントがインターネット経由でデータを保存しています。インターネット接続がダウンすると、クライアントは新しいデータを SQLite インスタンスにローカルに保存し始めます。インターネット接続がオンラインに戻ると、蓄積されたローカル データが中央データベースに移動されます (挿入されます)。
このシナリオで一意の ID を処理する最善の方法は何ですか? その他の重要な情報:
ローカル クライアントは、オフライン時にリンクの目的でローカル データベース ID を記憶できます。したがって、ローカル ID はグローバルに一意になるように生成する必要があります。
ローカル データベースの一意の ID は、中央データベースに再びマージされるときに変更しないでください。
デバイスに応じて、将来ローカル操作用にさまざまな種類のデータベースが選択される可能性があります。たとえば、JavaDb、TextFileDb などです。したがって、このソリューションには単一の独自のデータベース機能を使用するべきではないと思います。
- 変更が中央データベースにマージされると、すべてのレコードに一意の ID が必要になります。
この質問では、MyTable
フィールドで名前が付けられた単純なテーブルを想定しています: ID
(主/一意のキーは、どのようなタイプであってもよい) とField1
, Field2
,Field3
後者は実際には問題ではありません。
最初に頭に浮かんだのは、GUID の使用です。これよりも優れたパターンやプラクティス、またはこれを実行するためのより良い方法はありますか?
編集: Microsoft .NET と ADO.NET の使用