2014-04-09 4 views
26

Vedo che DynamoDB è essenzialmente limitato a three data types: stringa, numero e binario. Che sembra lasciare due opzioni per la memorizzazione di una data o timestamp:DynamoDB data più efficiente tipo

  • String di un 8601 formato data/ora o timestamp Unix
  • Numero di un timestamp Unix

lo farò è necessario "ordinare" i risultati utilizzando questa data/timestamp come chiave di intervallo e utilizzando scanIndexForward. È possibile dire quale approccio sarebbe più efficiente?

+2

So che questa è una domanda vecchia di un anno, ma hai mai trovato una risposta a questo? – user2924127

risposta

20

Non so che sia necessariamente più efficiente, ma abbiamo avuto un buon successo utilizzando un timestamp Unix come chiavi di intervallo. È stato veloce (con latenza inferiore a 20 ms, talvolta inferiore a 10 ms) per le query e consente di ordinare "dal più recente al più recente" o "l'ultimo al primo" utilizzando il flag scanIndexForward.

Lo svantaggio è che quando si guardano le tabelle non elaborate può essere difficile confrontare due timestamp a colpo d'occhio, ma è abbastanza facile convertire un timestamp in un tipo di data nella lingua scelta.

0

Ho appena creato una DescribeTable su una delle mie tabelle DynamoDB e ho notato che DynamoDB stesso memorizza il CreationDateTime della tabella come un numero in virgola mobile UNIX in virgola mobile. Credo che l'abbiano fatto per una ragione.