2

次のようなシナリオがあります。

多くのマシンがあり、それぞれにデータベースがあります。また、すべてのマシンからデータを取得してローカル データベースに追加できるクライアント マシンが 1 台あります (以前のダウンロードのデータが含まれている可能性があります)。したがって、「多くの」データベースのテーブルには一意の識別子が必要です。

many- 各マシン上のデータベース

merged- データベースからデータをプルするクライアント マシン上のmanyデータベース。

私の2つのアイデア:

  1. GUIDmanyデータベースおよびGUIDマージされたデータベースの主キー。ここでは、マシン間の行を区別するために、マシンの列 ID も必要です。

  2. データベースの整数主キーmanyとマージされた複合キー (マシンの GUID ID +manyデータベースの整数主キー)

    ここでは、各manyデータベースはそれ自体には GUID を必要とせず、merged1 つのデータベースにのみ必要であると想定しているため、GUID は必要なだけmergedであり、複合キーです。

このシナリオでは、どちらを選択するのが適切ですか? 多分私は何かが恋しいです。

4

1 に答える 1

0

GUIDこのようなシステムには理想的です。主キーの競合が発生しないことが実質的に保証されます。設計中なので、GUID をmanyデータベースで一時的な識別子として使用し、それらを整数キーに置き換えることができますmerged

もう 1 つのオプションは、ID をmanyデータベース間で分割することです。これにより、それぞれが他のデータベースが使用できない範囲の ID のみを使用できるようになります。これをうまく行うのは簡単ではありません (つまり、これらのデータベースが再同期なしで存在できる期間の見積もりがなければ、「オーバーフロー」する可能性があります。データベースが「使い果たされた」場合は、追加の範囲を提供できるようにする必要があります...)。特定のニーズに合わない場合があります。

于 2012-05-12T20:24:02.750 に答える