Como armazenar registros de data e hora no DynamoDB

Como armazenar registros de data e hora no DynamoDB
Timestamps são um dos recursos de banco de dados mais vitais e uma tarefa que vale a pena dominar. O DynamoDB também apresenta várias maneiras de representar e armazenar um registro de data e hora. Mais obviamente, você pode armazenar convenientemente os registros de data e hora no DynamoDB como atributos da tabela.

Você pode armazenar um registro de data e hora como um tipo de dados numérico ou um tipo de dados de string. Timestamps armazenados como um tipo de dados numéricos têm um valor de timestamp UNIX (segundos ou milissegundos), enquanto aqueles armazenados como tipos de dados de string apresentam os formatos ISO 8601 String.

Idealmente, trabalhar com registros de data e hora também requer precisão imbatível. Quanto mais precisos seus timestamps são, mais fáceis eles são de consultar. Por exemplo, você pode especificar o ano de criação para cada item da sua mesa ou ficar mais específico afirmando o minuto, o segundo ou o milissegundo. Quanto mais específicos seus timestamps são, mais fáceis serão classificar, consultar ou filtrar.

Armazene o registro de data e hora no DynamoDB usando o tipo de dados numéricos

Você pode usar o tipo de dados numérico para armazenar um registro de data e hora. Nesta ilustração, nosso tipo de dados numérico assumirá a forma de um atributo de data. Um exemplo de BOTO3 (AWS SDK for Python) de como armazenar um registro de data e hora no DynamoDB é o seguinte:

Importar BOTO3
importar datetime
# Crie um cliente do DynamoDB
DynamoDB = BOTO3.Client ('DynamoDB')
# Pegue o registro de data e hora atual
Timestamp = int (DateTime.data hora.utcnow ().Timestamp ())
# Crie um novo item em sua mesa
Resposta = DynamoDB.put_item (
TableName = 'My-Table-Name',
Item =
'id': 'n': '1234',
'Timestamp': 'n': str (timestamp)

)

O tipo de dados para o timestamp acima armazena o número em segundos desde a meia -noite de 1º de janeiro de 1970, que é a época. Claro, ele também usará o fuso horário da UTC.

Recuperar um registro de data e hora no DynamoDB

Recuperar um registro de data e hora no DynamoDB não é um empreendimento complexo. Como qualquer outra operação de recuperação no DynamoDB, você usará o comando get_item no final do cliente para recuperar o registro de data e hora. Um comando de exemplo é mostrado abaixo:

Importar BOTO3
# Crie um cliente do DynamoDB
DynamoDB = BOTO3.Client ('DynamoDB')
# Recupere o item da sua mesa
Resposta = DynamoDB.get_item (
TableName = 'My-Table-Name',
Chave =
'id': 'n': '1234'

)
# Obtenha o registro de data e hora do item
item = resposta ['item']
Timestamp = int (item ['Timestamp'] ['n']))

Converta um registro de data e hora em um objeto DateTime

Você pode converter ainda mais seu timestamp em um objeto DateTime usando o módulo DateTime. Veja a ilustração abaixo:

importar datetime
# Converta o registro de data e hora em um objeto DATETIME
dt = DateTime.data hora.Detimestamp (registro de data e hora)
impressão (dt)

Armazene um registro de data e hora com um atributo atualizado_at

Curiosamente, você também pode armazenar um registro de data e hora no DynamoDB com um atributo atualizado_at. Neste exemplo, definiremos nosso atributo atualizado_at para 2023-01-01.

Importar BOTO3
# Crie um cliente do DynamoDB
DynamoDB = BOTO3.Client ('DynamoDB')
# Defina o timestamp como 2023-01-01
Timestamp = "2023-01-01"
# Defina o nome da tabela
tabela_name = "my_table-name"
# Defina a chave primária
pk = "1234"
# Defina o valor a ser armazenado
value = "feliz ano novo"
# Defina o mapa de atributo
attribute_map =
"Update_at":
"S": Timestamp
,
"valor":
"S": valor


# Coloque o item na tabela
Resposta = DynamoDB.put_item (
TableName = tabela_name,
Item =
"pk":
"S": pk
,
** attribption_map

)
Imprimir (resposta)

O exemplo acima armazenará um item com uma chave primária de 1234 e dois atributos: atualizado_at e valor. O atualizado_at atributo será definido para o registro de data e hora 2023-01-01, e a valor o atributo será definido para a string "feliz Ano Novo.”

DynamoDB de consulta entre dois registros de data e hora

Você pode consultar itens de uma tabela de dynamoDB com um atualizado_at atributo entre dois registros de data e hora. Para conseguir isso, use o consulta operação e especificar o KeyConditionExpression parâmetro.

Aqui está um exemplo de como você pode consultar itens com um atualizado_at atributo entre 2022-01-01 e 2022-12-31:

Importar BOTO3
# Crie um cliente do DynamoDB
DynamoDB = BOTO3.Client ('DynamoDB')
# Defina o nome da tabela
tabela_name = "my_table_name"
# Defina os registros de data e hora de partida e final
start_timestamp = "2022-01-01"
end_timestamp = "2022-12-31"
# Consulte a tabela
Resposta = DynamoDB.consulta(
TableName = tabela_name,
KeyconditionExpression = "UPDATED_ATBETWEN: start_timestamp e: end_timestamp",
ExpressionAttributeValues ​​=
": start_timestamp":
"S": start_timestamp
,
": end_timestamp":
"S": end_timestamp


)
# Imprima os resultados da consulta
Imprimir (resposta)

O código acima retornará todos os itens da tabela que têm um atualizado_at atributo entre 2022-01-01 e 2022-12-31, inclusive. O KeyConditionExpression parâmetro especifica a condição que deve ser atendida para um item a ser retornado e o ExpressionAttributeValues parâmetros define os valores para os espaços reservados para atributos no KeyConditionExpression.

Você também pode usar o Scanindexforward parâmetro para especificar a ordem em que os itens devem ser devolvidos. Por padrão, o Scanindexforward O parâmetro está definido como Verdadeiro, o que significa que os itens serão devolvidos em ordem crescente. Se você defini -lo como Falso, Os itens serão devolvidos em ordem decrescente.

Conclusão

Este artigo discutiu o básico do armazenamento de data e hora no DynamoDB. Agora você pode armazenar o registro de data e hora corretamente no DynamoDB. Também destacamos como você poderia trabalhar com registros de data e hora. Como todas as operações do DynamoDB, você pode usar timestamps através do seu AWS SDK preferido ou da AWS CLI.