1

いくつかのテーブルの正規化されたレコードの数に対応するランダム GUID を生成するアプリケーションがあるとします。GUID "tenant_id" を持つこれらのレコードは、SQL Azure で複数のフェデレーション メンバーに分割する必要があります。SPLIT AT コマンドが発行されたときに、特定のポイント (tenant_id) でメンバーを分割するために使用される順序付けメカニズムは何ですか? ORDER BY GUID_FIELD ASC/DESC 結果セットに似ていますか? GUID はランダムに生成されるため、将来の分割で範囲を作成する最良の方法は何ですか?

ありがとうございました

4

2 に答える 2

0

GUIDの範囲は、SQLServerでの並べ替え順序に従って分割されます。これはORDERBYとインデックスに使用されるものと同じです。詳細については、次のブログ投稿を参照してください:http ://sqlblog.com/blogs/alberto_ferrari/archive/2007/08/31/how-are-guids-sorted-by-sql-server.aspx

GUIDをランダムに生成していて、分割する必要がある場合は、GUIDの順序定義を使用して、分割するメンバーのGUIDセットの中央のどこかでポイントを選択する必要があります(中央で分割する場合)。

どのテナントがどこに移動するかをより細かく制御したい場合は、独自の「カスタム」GUIDを生成できますが、「カスタム」GUIDのグローバル一意生成を保証しない限り、もちろんGUIDが持つグローバル一意性プロパティは失われます。

-ハンス・オラフ

于 2012-06-05T01:49:22.450 に答える
0

基本的に、split at は 1 つのフェデレーションを 2 つに分割します。分散キー (federated on 句で渡したキー) に依存します。たとえば、年齢でフェデレートするとします。最初のフェデレーションを 0 ~ 20 歳と 21 ~ 40 歳の 2 つの部分に分割します。SQL Azure はデータを自動的に整理して、各フェデレーションが確実に一致するようにします。範囲要件。そうです、それは一種の注文のようなものです。

通常、フェデレーションは GUID では使用されません。代わりに、より詳細に制御できるキーで使用されます。GUID の使用は問題ありませんが、フェデレーションのバランスを崩すリスクがあります。一方のフェデレーションには大量のデータが含まれ、もう一方のフェデレーションには少量しか含まれない場合があります。

于 2012-06-05T01:42:35.167 に答える