2012-11-15 15 views
5

Azureテーブルストレージの大幅な改善を考えています。 [PartitionKey = somestingPK]と[RowKey = somethingRK]の[エンティティフィールド[name]を[value]で増分するなどの特定の操作でテーブルストレージにクエリを送信できますか?Windows Azureテーブルストレージintフィールド増分

@smarxはこの機能を利用できますか?

+0

http://stackoverflow.com/a/11853335/67824 –

答えて

0

これはMySQLのクエリUPDATEと似ていますが、現在Azure Table Storageで実行することはできません。最初にエンティティ全体を取得し、必要なフィールドを更新してデータベースに保存する必要があるため、このようなデータベースタイプで実現することができるかどうかは不明です。

+0

これは現在できません。私は開発者と私の提案を共有したい:) –

1

はい、これは可能ですが、考えている通りではないかもしれません。あなたはMERGE operationを探しています。これを使用するには、対象とするエンティティ(つまり、エンティティのパーティションキーと行キー)を知っている必要があります。エンティティを取得するためにエンティティを取得する必要はありませんが、RESTコールごとまたはバッチ機能(いくつかの制限があります)を使用して、各エンティティに具体的に対処する必要があります。

+3

彼は原子インクリメントを探している。今日はそんなことはありません。 – smarx

+0

しかし、増分操作は使用できません。設定するだけです。私は、Table Storageのエンティティを更新することは不可能ではないことを示唆しています。ただし、この操作はREST APIでは使用できません。 –

4

これは、ETAGトラッキングを有効にしたテーブルまたはページ記憶域を使用して実行できます。 Azure Tableの各エントリのID値を作成するには、この手法を使用します。アイデアは、このように書きます:

  • は、ページブロブから値を読むETAG追跡を残す有効

  • インクリメント取得した値

  • POST検索された値、およびETAGがあればコンフリクト、再度操作全体を再試行します。おそらく指数バックオフアルゴリズムを使用して、ターゲットコンテナまたはパーティションのオーバーロードを防ぐことができます。

+1

私はこのアプローチを「kostyil」と命名します。 しかし、私はTable Storageで原子インクリメントのネイティブ実装を使用したいと思います。 –

関連する問題