2012-11-15 12 views
5

Penso a un notevole miglioramento di Archiviazione tabelle di Azure. È possibile inviare una query a Table Storage con operazioni specifiche come "incrementare il campo entità [nome] per [valore] dove [PartitionKey = somestingPK] e [RowKey = somethingRK]"?Incampamento int campo tabella di Windows Azure

@smarx questa funzione sarà disponibile?

+0

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

risposta

0

Questo è simile alla query UPDATE di MySQL e attualmente non è possibile eseguire in Archiviazione tabelle di Azure. Non sono sicuro se sia possibile ottenere questo tipo di database, poiché devi prima ottenere l'intera entità, aggiornare i campi che desideri e archiviarli nel database.

+0

So che non è possibile ora. Voglio condividere il mio suggerimento con gli sviluppatori :) –

1

Sì, questo è possibile, ma forse non esattamente come si sta pensando. Stai cercando il MERGE operation. Per usarlo, devi conoscere l'entità (cioè la chiave di partizione e il tasto di riga dell'entità) che stai bersagliando. Non è necessario recuperare l'entità per aggiornarla, ma è necessario indirizzare specificatamente ciascuna entità per ogni chiamata REST o utilizzando le funzionalità batch (che presenta alcune restrizioni).

+3

Sta cercando un incremento atomico. Non esiste una cosa del genere oggi. – smarx

+0

Ma non posso usare l'operazione di incremento. Solo impostato. Suggerisco, che non è impossibile aggiornare l'entità in Table Storage. Ma questa operazione non è disponibile tramite l'API REST. –

4

È possibile eseguire questa operazione con la memorizzazione della tabella o della pagina con il tracciamento ETAG abilitato. Uso questa tecnica per creare un valore Identity per ogni voce in Azure Table. L'idea è questa:

  • leggere il valore dalla pagina Blob, lasciare il monitoraggio ETAG abilitato

  • Incremento del valore recuperato

  • POST il valore recuperato, e se c'è un ETAG conflitto, riprovare nuovamente l'intera operazione. È possibile utilizzare qui un algoritmo di backoff esponenziale per evitare di sovraccaricare il contenitore o la partizione di destinazione.

+1

Io chiamo questo approccio come "kostyil". Tuttavia, desidero utilizzare l'implementazione nativa di incremento atomico in Table Storage. –