43

ここ数年、Microsoft は「テーブル ストレージ」と呼ばれる「NoSQL」キー/値ストレージを提供しています ( http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-テーブル/ )

Table Storage は、高いパフォーマンス、スケーラビリティ (パーティショニングによる)、および比較的低コストを提供します。テーブルの主な欠点は、パーティション キーと行キーのみにインデックスを作成できることです。そのため、値に対してクエリを実行するのは非常に非効率的です。

最近、Microsoft は「DocumentDB」と呼ばれる新しい「NoSQL」サービスを発表しました ( http://azure.microsoft.com/en-us/documentation/services/documentdb/ ) 。

プロパティのリストを格納する代わりに (Tables のように)、DocumentDB は JSON オブジェクトを格納します。オブジェクト全体にインデックスが作成されるため、格納されたオブジェクトのすべてのプロパティとネストされたプロパティに基づいて効率的なクエリを作成できます。

Microsoft は、DocumentDB は高いパフォーマンスとスケーラビリティも提供すると述べています。

もしそうなら、なぜ DocumentDB よりも Table Storage を使用するのでしょうか? DocumentDB は Tables と同じ機能を提供するように思えますが、あらゆるものにインデックスを付ける機能などの追加機能を備えています。

DocumentDB と Table Storage を比較して、それぞれの長所と短所を強調していただければ幸いです。

4

5 に答える 5

54

どちらも NoSQL テクノロジーですが、大きく異なります。Azure テーブルは単純なキー/値ストアであり、複雑なクエリのような複雑な機能をサポートしていません (それらのほとんどはいずれにせよ完全なパーティション/テーブル スキャンを必要とし、パフォーマンスとコストの節約を台無しにします)、カスタム インデックス作成 (インデックス作成はに基づいています) PartitionKey と RowKey のみ。現在、他のエンティティ プロパティでインデックスを作成することはできず、PartitionKey/RowKey の組み合わせ以外のものを検索するには、パーティション/テーブル スキャンが必要になります)、またはストアド プロシージャです。また、複数のエンティティの読み取り要求をバッチ処理することもできません (すべてのエンティティが同じパーティションに属している場合、バッチ書き込み要求がサポートされます)。Azure Tables の実際のアプリケーションについては、こちらを参照してください。

データのニーズ (特にデータのクエリに関するもの) が単純である場合 (上記の例のように)、必要なものは Azure Tables で提供されますが、価格、パフォーマンス、およびストレージ容量のために、DocDB を優先してそれを使用することになる可能性があります。たとえば、Azure テーブルのパフォーマンス目標は、1 秒あたり 20.000 操作です。DocDB で同じレベルのパフォーマンスを得ようとすると、サービス コストが大幅に高くなります。また、Azure テーブルは Azure ストレージ アカウントの容量 ( 500 TB ) によって制限されますが、 DocDBストレージは購入した容量ユニットによって制限されます。

于 2015-03-09T16:11:33.813 に答える
18

Table Services は主にキー値型の NOSQL であり、DocumentDB は (名前が示すように) ドキュメント型の NoSQL ストアです。あなたが求めているのは、本質的にこれら2つのタイプのNOSQLアプローチの違いです。これに基づいて研究を進めれば、確実に理解を深めることができるはずです。

単純にするために、DocumentDB と Table Services の価格設定の違いを検討することをお勧めします。これらのサービスのコストが互いに大きく異なるだけでなく、DocumentDB が「プロビジョニング ファースト」モデルで動作し、Table Services が純粋な消費ベースの価格で提供されるという事実は、比較/対照に関するいくつかの手がかりを与える可能性があります。

質問させてください。Table Services の機能が自分のニーズを十分に満たしているのに、なぜ DocumentDB を使用するのでしょうか? ;) 現在の Azure Diagnostics ツールが Azure Storage Services をどのように使用しているか、Storage Metrics が Azure Storage 自体をどのように使用しているかを調べて、Table Services がどれほど有用であるか、状況によっては DocumentDB がいかにやり過ぎであるかを理解することをお勧めします。

お役に立てれば。

于 2015-03-09T06:52:41.233 に答える
4

実際の例:

いくつかのトークンを保存、取得、削除する必要があります。これまでに実行されたクエリのみがユーザー ID に基づきます。

そのため、私の要件を完全に満たすテーブルストレージを使用しています。ユーザー ID に対してトークンを保存します。

ドキュメント DB は、これにはやり過ぎのように思われました。

于 2016-05-06T04:16:40.537 に答える