Windows Azure ではハイブリッド アーキテクチャを使用しており、ほとんどのエンティティを SQL Azure データベースに格納していますが、大量のストレージ スペースを必要とする可能性のあるものはすべて Azure Table Storage に投入しています。
ただし、このアーキテクチャでは、Azure Table Storage に関するあらゆる種類の問題に直面しています。これは、せいぜい未熟で不完全な製品のように思えます。最大の制限は、実用上、書き込み専用のデータ ストアであることです。コンセンサスは、その書き込み機能は非常にうまく拡張できるが、クエリ機能とインデックス機能は驚くほど限られているということです (何年にもわたるユーザーの不満と Microsoft の約束にもかかわらず)) 私は、基本的に緊急時にのみ ATS からデータを取得しようとするべきであるという結論に達しました。複雑でリアルタイムのトランザクション アプリケーションからデータを取得することは、本来よりもはるかに困難です。もちろん、データの複数のコピーを維持する、コピーごとに異なるインデックス作成戦略を使用する、クエリを分割して並列に実行するなどの回避策がありますが、クラウド サービスの全体的なポイントがそれを最小限に抑えることである場合、複雑さが増します。
とは言っても、私たちは今のところ Azure に取り組んでおり、できれば実際にこの道を実際に運用している人々から、代替案と落とし穴が何であるかについて良い感覚を得たいと思っています.
VM または他のクラウドのいずれかで実行できるNoSQL オプションがたくさんあることは十分承知しています (たとえば、この質問: What NoSQL solutions are out there for .NET? にリストされているすべてのオプション)。 . しかし、Azure の PAAS モデルにうまく適合するものがあるかどうかを知りたいと思っています。つまり、私が Azure を使用していて、自分の VM を管理したくなく、ATS によって約束された (完全に提供されることはありませんが) ほぼ自動でほぼ無限のスケーラビリティにできるだけ近いものが必要な場合、どのようなオプションがありますか?人々は貴重だと思いましたか?MongoDB/Azure ラッパーはシンプルで実行可能な代替手段ですか? それとも、弾丸をかじって自分の VM をスピンアップする必要がありますか? それとも AWS に切り替えますか? それとも Azure SQL を使い続けますか?
(サイズ要件の感覚をつかむために: 10 億行以上を格納する必要があると考えています。巨大ではありませんが、無視できるほどでもありません。)