1

集中的にホストされたデータベース (MS SQL Server) があり、分散クライアントがインターネット経由でデータを保存しています。インターネット接続がダウンすると、クライアントは新しいデータを SQLite インスタンスにローカルに保存し始めます。インターネット接続がオンラインに戻ると、蓄積されたローカル データが中央データベースに移動されます (挿入されます)。

このシナリオで一意の ID を処理する最善の方法は何ですか? その他の重要な情報:

  • ローカル クライアントは、オフライン時にリンクの目的でローカル データベース ID を記憶できます。したがって、ローカル ID はグローバルに一意になるように生成する必要があります。

  • ローカル データベースの一意の ID は、中央データベースに再びマージされるときに変更しないでください。

  • デバイスに応じて、将来ローカル操作用にさまざまな種類のデータベースが選択される可能性があります。たとえば、JavaDb、TextFileDb などです。したがって、このソリューションには単一の独自のデータベース機能を使用するべきではないと思います。

  • 変更が中央データベースにマージされると、すべてのレコードに一意の ID が必要になります。

この質問では、MyTableフィールドで名前が付けられた単純なテーブルを想定しています: ID(主/一意のキーは、どのようなタイプであってもよい) とField1, Field2,Field3後者は実際には問題ではありません。

最初に頭に浮かんだのは、GUID の使用です。これよりも優れたパターンやプラクティス、またはこれを実行するためのより良い方法はありますか?

編集: Microsoft .NET と ADO.NET の使用

4

2 に答える 2

1

GUID は機能します。

それを超えて、これは Microsoft Sync Framework で大部分が解決された問題です (開発プラットフォームについて言及していないため、ここには仮定があります)。データベース、データ型、またはプロトコルに結び付けられておらず、さまざまなオフライン シナリオで動作するように構成できます (わかりました、これはコマーシャルのように聞こえ始めています...)

http://msdn.microsoft.com/en-us/sync/bb887625.aspx

于 2010-01-27T03:53:58.347 に答える
0

あなたが言ったように、GUID は多くの明白な理由で頭に浮かびますが、そのいくつかはここで説明されています 主キー: ID と GUID

この回答も読みたいと思うかもしれません テーブルの主キーのベストプラクティスは何ですか?

于 2010-01-27T03:48:19.933 に答える