query que iniciar dynamodb descargar datetime amazon-web-services amazon-dynamodb sqldatatypes

datetime - que - iniciar dynamodb local



¿Qué tipo de datos se debe usar para la marca de tiempo en DynamoDB? (2)

Soy nuevo en DynamoDB. Deseo crear una tabla que use DeviceID como la clave hash, Timestamp como mi clave de rango y algunos datos.

{ DeviceID: 123, Timestamp: "2016-11-11T17:21:07.5272333Z", X: 12, Y: 35 }

En SQL, podemos usar el tipo de fecha y hora para Timestamp, pero en DynamoDB no hay ninguno.

  1. ¿Qué tipo de datos debo usar? ¿Cuerda? ¿Número?

  2. Para el tipo de datos elegido, ¿en qué tipo de formato de marca de tiempo debo escribir? Formato ISO (por ejemplo: 2016-11-11T17: 21: 07.5272333Z) o tiempo de época (por ejemplo: 1478943038816)?

  3. Necesito buscar en la tabla a través de un rango de tiempo, por ejemplo: 1/1/2015 10:00:00 am hasta 31/12/2016 11:00:00 pm


El tipo de datos de cadena debe usarse para fecha o marca de tiempo.

Puede usar el tipo de datos String para representar una fecha o una marca de tiempo. Una forma de hacerlo es mediante el uso de cadenas ISO 8601, como se muestra en estos ejemplos:

2016-02-15

2015-12-21T17: 42: 34Z

20150311T122706Z

Tipo de datos DynamoDB para fecha o marca de tiempo

Sí, las consultas de Rango son compatibles cuando la fecha se almacena como Cadena. ENTRE se puede utilizar en FilterExpresssion. Tengo los elementos en el resultado usando las siguientes expresiones de filtro.

FilterExpression sin tiempo: -

FilterExpression : ''createdate between :val1 and :val2'', ExpressionAttributeValues : { '':hkey'' : year_val, '':rkey'' : title, ":val1" : "2010-01-01", ":val2" : "2010-12-31" }

FilterExpression con el tiempo: -

FilterExpression : ''createdate between :val1 and :val2'', ExpressionAttributeValues : { '':hkey'' : year_val, '':rkey'' : title, ":val1" : "2010-01-01T00:00:00", ":val2" : "2010-12-31T00:00:00" }

Valores de la base de datos: -

Formato 1 - con zona horaria:

{"Item":{"createdate":{"S":"2010-12-21T17:42:34+00:00"},"title":{"S":"The Big New Movie 2010"},"yearkey":{"N":"2010"},"info":{"M":{"rating":{"N":"0"},"plot":{"S":"Nothing happens at all."}}}}}

Formato 2 - sin zona horaria: -

{"Item":{"createdate":{"S":"2010-12-21T17:42:34Z"},"title":{"S":"The Big New Movie 2010"},"yearkey":{"N":"2010"},"info":{"M":{"rating":{"N":"0"},"plot":{"S":"Nothing happens at all."}}}}}


El tipo de datos depende de sus requisitos.

Puede usar String con formato ISO o Number con formato de época.

La ventaja del formato ISO (String) es la legibilidad humana, sin embargo, DynamoDB no admite Time To Live (TTL) para este formato. Todos los filtros funcionan como ''entre'' y ''rango'' como se explica por notionquest.

Time To Live (TTL) para DynamoDB le permite definir cuándo caducan los elementos de una tabla para que puedan eliminarse automáticamente de la base de datos.

La ventaja de usar el formato de época (Número) es que puede usar la función TTL y todos los filtros.

TLDR;

Formato de época (tipo de número): puede usar Time To Live
Formato ISO (tipo de cadena): no se puede usar Time To Live pero es más legible para los humanos