1

私は現在、SQLAzureデータベースを使用して次のアプリケーションのデータを格納するプロジェクトに取り組んでいます。プロジェクトの目標の1つは、SQL Azureでフェデレーション(シャーディング)を利用できるようにすることです。プロジェクトのもう1つの目標は、クライアントがこのシナリオを選択した場合に、ローカルハードウェアでこのアプリケーションを実行できるようにすることです。

私が直面している「障害」の1つは、フェデレーションにおけるIDENTITYのサポートの欠如です。

http://blogs.msdn.com/b/cbiyikoglu/archive/2011/06/20/id-generation-in-federations-identity-sequences-and-guids-uniqueidentifier.aspx

AzureでIDENTITYがサポートされていない理由は理解していますが、クラスター化されたインデックスとしてGUIDを使用することをお勧めするという精神的な障害があるようです。

クラスター化インデックスと非クラスター化インデックスのパフォーマンス

上記の最初のリンクでサンプルテストを実行し、クラスター化されたインデックスとしてGUIDを使用してテーブルにレコードを挿入する場合と、クラスター化されたインデックスを使用して同じ量のレコードをテーブルに挿入する場合で、Azureのパフォーマンスにほとんど違いがないことを確認しました。クラスタ化されたインデックスとして機能するintIDフィールド。

ただし、オンプレミスインストールもサポートする必要があるため、int IDを使用する代わりに、クラスター化されたインデックスとしてGUIDを使用すると、ローカルでのパフォーマンスが低下すると言っても差し支えないと思います。

パフォーマンス関連の懸念に加えて、クラスター化されたインデックスとして16バイト幅のGUIDを使用するのに対して、クラスター化されたインデックスとして4バイト幅の整数を使用することについても懸念しています。確かに、ディスク容量は比較的安価ですが、それでもかなり急速に増加します(そしておそらく不必要にそうなります)。

私は、これらの述べられたプロジェクトの目標の両方をサポートする必要性に基づいて、最終的にトレードオフを行う必要があることを認識していますが、私はできる限り多くの情報に基づいた決定を下すことを目指しています。

中間層のIDジェネレーターを使用する以外に、フェデレーションを使用しながらAzureでクラスター化インデックス(および\または主キー)としてGuidを使用する代わりにどのような方法がありますか?

または、Guidをクラスター化されたインデックスのオフベースとして使用することに関する私の懸念はありますか(私はそれらが非常にうまくいく可能性があることを認めています)?もしそうなら、なぜですか?

4

2 に答える 2

0

あなたは16バイトのGuidと4バイトのIntについて悩むのは正しいです(私もそうします)。ただし、明るい面を考えてください。フェデレーションにより、DBレイヤーを大規模に拡張できます。

ここで質問になります-オンラインドキュメントによると、フェデレーション配布タイプは次のいずれかになります。

INT、BIGINT、UNIQUEIDENTIFIER、またはVARBINARY(n)。ここで、nは最大900です。

ですから、UNIQUEIDENTITIFIERは本当にあなたのアプリの唯一の選択肢だと思います。

アプリケーションレベルで任意の種類のIDジェネレーターを使用すると、単一障害点/単一点の「クラッシュ」またはボトルネックが発生します。これは、明らかにSQLAzureフェデレーションがカバーしようとしていることです。したがって、アプリケーション側ではGuid.NewGuid()、DB側ではNEWID()ではなく、ID生成ロジックを使用しません。

オンプレミスソリューションに対するUNIQUEIDENTIFIERのパフォーマンスへの影響については、話せません。これは別の質問です。

于 2012-10-08T10:15:50.267 に答える
0

SQL Azure で GUID を使用しても、オンプレミスの SQL Server インストールで発生するようなパフォーマンスの問題は発生しないようです。

多くの人が、GUID (uniqueidentifier) が順序付けられず、ページ分割を引き起こし、より高いレイテンシーと断片化を引き起こすことを考えると、キーをクラスタリングするのに悪い候補であることを示唆する経験を持っていますか? SQL Azure ではそうではありません

http://blogs.msdn.com/b/cbiyikoglu/archive/2012/05/17/id-generation-in-federations-identity-sequences-and-guids-uniqueidentifier.aspx

だから私はおそらくGuid'sに行くでしょう

于 2012-10-09T04:32:21.930 に答える