SQL azure でのシャーディングの概念は、現時点で 50Gb の DB サイズ制限を超えるための最も推奨されるオプションの 1 つです。シャーディングの重要な戦略は、アトミック ユニットと呼ばれる関連するレコードを 1 つのシャードにグループ化することです。これにより、アプリケーションは 1 つの SQL azure インスタンスに対してクエリを実行するだけでデータを取得できます。
ただし、ソーシャル ネットワーキング アプリなどのアプリケーションでは、エンティティとレコードが相互に接続されているため、アトミック ユニットを 1 つのシャードにグループ化することは簡単ではありません。そのようなシナリオに基づく推奨されるアプローチは何でしょうか?
また、シャード DB では、テーブルにどの主キーを使用する必要がありますか? Big Int または GUID。現在、BIGINT ID 列を使用していますが、何らかの理由でデータをマージする場合、異なるシャードの値が競合するために問題が発生します。GUID (UniqueIdentifier) を推奨する人がいると聞いたことがありますが、これがパフォーマンスにどのように影響するか心配です。UniqueIdentifier 列を使用してオンプレミスの SQL サーバーにインデックスを作成することはできません。UniqueIdentifier 列を使用する場合、Azure SQL が同様の戦略をどのように実装するのか疑問に思います。