NoSQL (Azure Table Storage) Design RowKey per i dati ordinati

2

Conservo grandi quantità di dati GPS nelle tabelle di archiviazione. Ogni partizione può raggiungere fino a 1 milione di entità. Ogni entità GPS inserita nella tabella è effettivamente sequenziale rispetto ai dati precedenti inseriti, quindi l'ordine è importante.

A volte ho bisogno di eseguire la seguente query:

Get the previous/next 3 GPS entities from the current entity (within the same partition).

Opzioni per il design RowKey:

  1. Crea un intero incrementale. Ma come faccio a tenere traccia di quale sia la dimensione corrente della tabella? Non è possibile ottenere il conteggio delle righe della tabella o ottenere l'ultima riga inserita.

  2. Utilizza le zecche DateTime. Ma come si fa a ottenere l'entità precedente / successiva usando le zecche?

Sto utilizzando l'SDK versione 2.0 in C #.

    
posta davenewza 05.03.2013 - 07:18
fonte

1 risposta

1

Penso che dovrai avere un RowKey come Ticks + Guid - e penso che dovrai specificare una precisione di misurazione del tempo che è significativa per la tua applicazione GPS. Vuoi tre dati sequenziali in tempo reale non solo il tempo registrato. Se usi semplicemente le zecche, ti ritroverai con i duplicati come descritto in questo post: Perché sto ottenendo il RowKey duplicato con DateTime.UtcNow.Ticks? Il tuo sistema di misurazione del tempo ha una precisione finita.

Sarà comunque necessario interrogare la partizione per tutte le entità nella partizione. Ma dovresti essere in grado di identificare i dati che sono realmente in sequenza temporale per la precisione pratica del tuo sistema.

    
risposta data 06.03.2013 - 19:59
fonte

Leggi altre domande sui tag