Hvordan lagre tidsstempler i DynamoDB

Hvordan lagre tidsstempler i DynamoDB
Tidstempler er en av de mest viktige databasefunksjonene og en oppgave som er verdt å mestre. DynamoDB har også forskjellige måter å representere og lagre en tidsstempel. Mer åpenbart kan du praktisk lagre tidsstempler i DynamoDB som tabellattributter.

Du kan enten lagre en tidsstempel som en talltype eller en strengdatatype. Tidsstempler lagret som en talltatatype har en UNIX tidsstempelverdi (sekunder eller millisekunder), mens de som er lagret som strengdatatyper har ISO 8601 strengformater.

Ideelt sett krever det å jobbe med tidsstempler også uslåelig presisjon. Jo mer presise tidsstempene er, jo lettere skal de spørre. For eksempel kan du spesifisere skapelsesåret for hvert element på bordet ditt eller bli mer spesifikt ved å oppgi minutt, andre eller millisekunder. Jo mer spesifikke tidsstempler er, jo lettere vil de være å sortere, spørre eller filter.

Lagre tidsstempler i dynamoDB ved å bruke talltypen

Du kan bruke talltypen til å lagre en tidsstempel. I denne illustrasjonen vil nummertypen vår typ. Et BOTO3 (AWS SDK for Python) eksempel på hvordan man lagrer en tidsstempel i DynamoDB er som følger:

Importer BOTO3
Importer DateTime
# Opprett en DynamoDB -klient
dynamodb = boto3.klient ('dynamodb')
# Få gjeldende tidsstempel
Timestamp = int (DateTime.dato tid.utcnow ().tidsstempel ())
# Lag et nytt element i tabellen din
Response = Dynamodb.put_item (
Tablename = 'my-table-name',
Element =
'id': 'n': '1234',
'Timestamp': 'n': str (tidsstempel)

)

Datatypen for ovennevnte tidsstempel lagrer nummeret på sekunder siden midnatt 1. januar 1970, som er epoken. Selvfølgelig vil den også bruke UTC -tidssonen.

Hente en tidsstempel i dynamoDB

Å hente en tidsstempel i DynamoDB er ikke et komplekst foretak. Som alle andre gjenvinningsoperasjoner i DynamoDB, vil du bruke Get_Item -kommandoen på klientavslutningen for å hente tidsstempler. Et eksempel -kommando vises nedenfor:

Importer BOTO3
# Opprett en DynamoDB -klient
dynamodb = boto3.klient ('dynamodb')
# Hent varen fra bordet ditt
Response = Dynamodb.get_item (
Tablename = 'my-table-name',
Nøkkel =
'id': 'n': '1234'

)
# Få tidsstempel fra varen
element = svar ['vare']
Timestamp = int (element ['Timestamp'] ['n'])

Konverter en tidsstempel til et DateTime -objekt

Du kan videre konvertere tidsstempel til et DateTime -objekt ved hjelp av DateTime -modulen. Se illustrasjonen nedenfor:

Importer DateTime
# Konverter tidsstemplet til et DateTime -objekt
DT = DateTime.dato tid.fromtimestamp (tidsstempel)
Print (DT)

Lagre en tidsstempel med en oppdatert_at -attributt

Interessant nok kan du også lagre en tidsstempel i dynamoDB med en oppdatert_at -attributt. I dette eksemplet vil vi sette vår oppdaterte_at-attributt til 2023-01-01.

Importer BOTO3
# Opprett en DynamoDB -klient
dynamodb = boto3.klient ('dynamodb')
# Angi tidsstempel til 2023-01-01
Timestamp = "2023-01-01"
# Angi tabellnavnet
tabell_name = "my_table-name"
# Angi den primære tasten
PK = "1234"
# Angi verdien som skal lagres
verdi = "Godt nytt år"
# Angi attributtkartet
attributt_map =
"oppdatert_at":
"S": tidsstempel
,
"Verdi":
"S": verdi


# Sett varen i tabellen
Response = Dynamodb.put_item (
Tablename = table_name,
Element =
"PK":
"S": PK
,
** attributt_map

)
trykk (svar)

Eksemplet ovenfor vil lagre et element med en primær nøkkel på 1234 og to attributter: oppdatert_at og verdi. De oppdatert_at Attributt vil bli satt til tidsstempel 2023-01-01, og verdi Attributt vil bli satt til strengen "godt nytt år.”

Spørringsdynamodb mellom to tidsstempler

Du kan spørre elementer fra en dynamodb -tabell med en oppdatert_at attributt mellom to tidsstempler. For å oppnå dette, bruk spørsmål drift og spesifisere KeyConditionExpression parameter.

Her er et eksempel på hvordan du kan spørre etter elementer med en oppdatert_at attributt mellom 2022-01-01 og 2022-12-31:

Importer BOTO3
# Opprett en DynamoDB -klient
dynamodb = boto3.klient ('dynamodb')
# Angi tabellnavnet
tabell_name = "my_table_name"
# Angi start- og slutt -tidsstempler
start_timestamp = "2022-01-01"
end_timestamp = "2022-12-31"
# Spør tabellen
Response = Dynamodb.spørsmål(
Tablename = table_name,
KeyConditionExpression = "oppdaterte_atbetween: start_timestamp og: end_timestamp",
ExpressionAttributeValues ​​=
": start_timestamp":
"S": start_timestamp
,
": end_timestamp":
"S": end_timestamp


)
# Skriv ut spørringsresultatene
trykk (svar)

Ovennevnte kode vil returnere alle elementene i tabellen som har en oppdatert_at attributt mellom 2022-01-01 og 2022-12-31, inklusive. De KeyConditionExpression Parameter spesifiserer tilstanden som må oppfylles for at et element skal returneres, og ExpressionAttributeValues Parameter angir verdiene for attributtet plassholdere i KeyConditionExpression.

Du kan også bruke Skannendexforward parameter for å spesifisere rekkefølgen gjenstandene skal returneres. Som standard, den Skannendexforward Parameteren er satt til ekte, Noe som betyr at varene vil bli returnert i stigende rekkefølge. Hvis du setter den til Falsk, Varene vil bli returnert i synkende rekkefølge.

Konklusjon

Denne artikkelen diskuterte det grunnleggende om lagring av tidsstempler i DynamoDB. Du kan nå lagre tidsstempler riktig i DynamoDB. Vi fremhevet også hvordan du kunne jobbe med tidsstempler. Som hver DynamoDB -operasjon, kan du bruke tidsstempler gjennom din foretrukne AWS SDK eller AWS CLI.