4

Azure Table Storage 用の新しいストレージ クライアント ライブラリの使用に移行しています。

以前のストレージ クライアント ライブラリ 1.7名前空間を使用したクエリ:

var orders = serviceContext
                 .CreateQuery<Order>(tableName)
                 .AsTableServiceQuery<Order>()
                 .Where(e => e.PartitionKey == partitionKey && e.RowKey == rowKey)

新しいストレージ クライアント ライブラリ 2.0クラスを使用したクエリ:

string partitionKeyFilter = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, partitionKey);
string rowKeyFilter = TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.Equal, rowKey);
string combinedFilter = TableQuery.CombineFilters(partitionKeyFilter, TableOperators.And, rowKeyFilter);

var query = new TableQuery<Order>().Where(combinedFilter);
var orders = table.ExecuteQuery<Order>(query);

間違っている場合は訂正してください。ただし、1.7 はよりクリーンで、厳密に型指定されたエンティティを使用し、IQueryable インターフェイスを実装し、LINQ の全機能を利用しています。バージョン 2.0 では、ADO.NET データセットを再び使用しているように感じます。

ここでプロットを完全に見逃していますか?パフォーマンスが大幅に向上したことは理解していますが、バージョン 2.0 が API としてのダウングレードのように感じるのはなぜですか?

4

2 に答える 2

3

ストレージ クライアント ライブラリ 2.0 には、別の名前空間にレガシ DataServices 実装がまだ含まれています。一方、新しいテーブルの実装では、更新された DataServices 実装および以前のバージョンの SDK よりもパフォーマンスが大幅に向上しています。操作によっては、レイテンシが 25% から 75% 改善され、システム リソースの使用率も大幅に減少しました。

詳細については、Windows Azure Storage Client Library 2.0 Tables Deep Diveブログ投稿を参照してください。ブログ投稿にも記載されているように、LINQ を使用する場合は、Microsoft.WindowsAzure.Storage.Table.DataServices 名前空間に移行された従来の DataServices 実装を引き続き使用できます。

新しいテーブル サービス レイヤーでの IQueryable のサポートは、現在開発中です。現時点では、これ以上具体的なタイムラインの詳細を共有することはできません。

于 2013-02-26T21:20:24.017 に答える
2

関連して、テーブル サービス レイヤーの IQueryable (かなり最適化された) を含む 2.1 RC が利用可能になりました。見る

http://blogs.msdn.com/b/windowsazurestorage/archive/2013/07/12/introducing-storage-client-library-2-1-rc-for-net-and-windows-phone-8.aspx

http://www.nuget.org/packages/WindowsAzure.Storage

ジョー

于 2013-08-05T16:38:48.140 に答える