Come archiviare i timestamp in DynamoDB

Come archiviare i timestamp in DynamoDB
I timestamp sono una delle funzionalità di database più vitali e un'attività degna di essere padroneggiata. DynamoDB presenta anche vari modi per rappresentare e archiviare un timestamp. Più ovviamente, puoi memorizzare comodamente i timestamp in DynamoDB come attributi della tabella.

È possibile archiviare un timestamp come tipo di dati o un tipo di dati stringa. I timestamp memorizzati come un numero di dati numerici hanno un valore Timestamp UNIX (secondi o millisecondi), mentre quelli memorizzati come tipi di dati di stringa sono dotati dei formati di stringa ISO 8601.

Idealmente, lavorare con i timestamp richiede anche una precisione imbattibile. Più sono precisi i tuoi timestamp, più facile sono query. Ad esempio, è possibile specificare l'anno di creazione per ogni elemento sul tavolo o ottenere più specifici affermando il minuto, il secondo o il millisecondo. Più specifici sono i tuoi timestamp, più facile saranno ordinare, interrogare o filtrare.

Memorizza i timestamp in DynamoDB utilizzando il tipo di dati numerici

È possibile utilizzare il tipo di dati numerici per archiviare un timestamp. In questa illustrazione, il nostro tipo di dati numerico assumerà la forma di un attributo della data. Un esempio Boto3 (AWS SDK per Python) di come archiviare un timestamp in DynamoDB è il seguente:

Importa Boto3
Importa DateTime
# Crea un client DynamoDB
DynamoDB = boto3.Client ('DynamoDB')
# Ottieni l'attuale timestamp
timestamp = int (datetime.appuntamento.utcnow ().timestamp ())
# Crea un nuovo elemento nella tua tabella
Risposta = DynamoDB.put_item (
Tablename = 'my-table-name',
Item =
'id': 'n': '1234',
'timestamp': 'n': str (timestamp)

)

Il tipo di dati per il timestamp sopra memorizza il numero in pochi secondi dalla mezzanotte del 1 gennaio 1970, che è l'epoca. Certo, utilizzerà anche il fuso orario UTC.

Recupera un timestamp in DynamoDB

Il recupero di un timestamp in DynamoDB non è un'impresa complessa. Come ogni altra operazione di recupero in DynamoDB, utilizzerai il comando get_item sulla fine del client per recuperare i timestamp. Un comando di esempio è mostrato di seguito:

Importa Boto3
# Crea un client DynamoDB
DynamoDB = boto3.Client ('DynamoDB')
# Recupera l'elemento dal tuo tavolo
Risposta = DynamoDB.get_item (
Tablename = 'my-table-name',
Key =
'id': 'n': '1234'

)
# Ottieni il timestamp dall'articolo
Item = Response ['Item']
timestamp = int (item ['timestamp'] ['n'])

Converti un timestamp in un oggetto datetime

È possibile convertire ulteriormente il tuo timestamp in un oggetto DateTime utilizzando il modulo DateTime. Vedi l'illustrazione qui sotto:

Importa DateTime
# Converti il ​​timestamp in un oggetto datetime
dt = datetime.appuntamento.datimestamp (timestamp)
Stampa (DT)

Memorizza un timestamp con un attributo aggiornato_at

È interessante notare che puoi anche archiviare un timestamp in DynamoDB con un attributo aggiornato_at. In questo esempio, imposteremo il nostro attributo aggiornato_at su 2023-01-01.

Importa Boto3
# Crea un client DynamoDB
DynamoDB = boto3.Client ('DynamoDB')
# Imposta il timestamp su 2023-01-01
timestamp = "2023-01-01"
# Imposta il nome della tabella
table_name = "my_table-name"
# Imposta la chiave primaria
pk = "1234"
# Imposta il valore da memorizzare
valori = "felice anno nuovo"
# Imposta la mappa degli attributi
attributo_map =
"aggiornato_at":
"S": timestamp
,
"valore":
"S": valore


# Metti l'articolo nel tavolo
Risposta = DynamoDB.put_item (
Tablename = table_name,
Item =
"pk":
"S": PK
,
** Attribute_map

)
Stampa (risposta)

L'esempio sopra archiverà un elemento con una chiave primaria di 1234 e due attributi: aggiornato_at E valore. IL aggiornato_at L'attributo verrà impostato sul timestamp 2023-01-01, e il valore L'attributo verrà impostato sulla stringa "Buon Anno."

Query DynamoDB tra due timestamp

È possibile interrogare elementi da una tabella Dynamodb con un file aggiornato_at attributo tra due timestamp. Per raggiungere questo obiettivo, usa il Domanda operazione e specificare il file KeyconditionExpression parametro.

Ecco un esempio di come è possibile interrogare per gli articoli con un aggiornato_at attributo tra 2022-01-01 E 2022-12-31:

Importa Boto3
# Crea un client DynamoDB
DynamoDB = boto3.Client ('DynamoDB')
# Imposta il nome della tabella
table_name = "my_table_name"
# Imposta i timestamp di inizio e fine
start_timestamp = "2022-01-01"
end_timestamp = "2022-12-31"
# Interroga il tavolo
Risposta = DynamoDB.query (
Tablename = table_name,
KeyconditionExpression = "updated_atbetween: start_timestamp e: end_timestamp",
EspressionAttributeValues ​​=
": start_timestamp":
"S": start_timestamp
,
": end_timestamp":
"S": end_timestamp


)
# Stampa i risultati delle query
Stampa (risposta)

Il codice sopra restituirà tutti gli elementi nella tabella che hanno un aggiornato_at attributo tra 2022-01-01 E 2022-12-31, inclusivo. IL KeyconditionExpression Il parametro specifica la condizione che deve essere soddisfatta per la restituzione di un elemento e il Espressionittributevalues Il parametro imposta i valori per i segnapunti di attributo in KeyconditionExpression.

Puoi anche usare il Scanindexforward parametro per specificare l'ordine in cui gli elementi devono essere restituiti. Per impostazione predefinita, il Scanindexforward Il parametro è impostato su VERO, Ciò significa che gli elementi verranno restituiti in ordine crescente. Se lo imposti su Falso, Gli elementi verranno restituiti in ordine decrescente.

Conclusione

Questo articolo ha discusso delle basi dell'archiviazione dei timestamp in DynamoDB. Ora puoi archiviare i timestamp correttamente in DynamoDB. Abbiamo anche messo in evidenza come potresti lavorare con i timestamp. Come ogni operazione DynamoDB, puoi utilizzare i timestamp tramite il tuo SDK AWS preferito o AWS CLI.