Jak przechowywać znaczniki czasu w DynamoDB

Jak przechowywać znaczniki czasu w DynamoDB
Znacznik czasu to jedna z najważniejszych funkcji bazy danych i zadaniem warte opanowania. DynamODB ma również różne sposoby reprezentowania i przechowywania znacznika czasu. Bardziej oczywiście, możesz wygodnie przechowywać znaczniki czasu w DynamoDB jako atrybuty tabeli.

Możesz przechowywać znacznik czasu jako typ danych liczbowych lub typ danych. Znacznik czasu przechowywane jako typ danych liczbowych mają wartość znacznika czasu UNIX (sekundy lub milisekund), podczas gdy te przechowywane jako typy danych String mają formaty ciągów ISO 8601.

Idealnie, praca z znacznikiem czasu wymaga również niezrównanej precyzji. Im bardziej precyzyjne są twoje znaczniki czasu, tym łatwiej je zapytać. Na przykład możesz określić rok tworzenia dla każdego elementu na stole lub uzyskać bardziej szczegółowe informacje, podając minutę, drugą lub milisekundową. Im bardziej szczegółowe są twoje znaczniki czasu, tym łatwiej będą sortować, zapytać lub filtrować.

Przechowuj znaczniki czasu w DynamoDB za pomocą typu danych liczbowych

Możesz użyć typu danych liczbowych do przechowywania znacznika czasu. W tej ilustracji nasz typ danych liczbowych przybierze formę atrybutu daty. Boto3 (AWS SDK dla Pythona) Przykład, jak przechowywać znacznik czasu w DynamoDB, jest następujący:

Import Boto3
Importuj datetime
# Utwórz klienta DynamoDB
DynamODB = Boto3.Klient („DynamODB”)
# Zdobądź aktualny znacznik czasu
timestamp = int (dateTime.Datetime.utcnow ().znak czasu())
# Utwórz nowy element w swoim stole
Odpowiedź = DynamODB.put_item (
TableName = „My-Table-Nazwa”,
Pozycja =
„id”: 'n': '1234',
„Znacznik czasu”: 'n': str (timestamp)

)

Typ danych dla powyższego znacznika czasu przechowuje liczbę w sekundach od północy 1 stycznia 1970 r., Która jest epoką. Oczywiście użyje również strefy czasowej UTC.

Odzyskać znacznik czasu w DynamoDB

Osiągnięcie znacznika czasu w DynamoDB nie jest złożonym przedsięwzięciem. Jak każda inna operacja wyszukiwania w DynamoDB, użyjesz polecenia get_item na końcu klienta, aby pobrać znaczniki czasu. Przykładowe polecenie pokazano poniżej:

Import Boto3
# Utwórz klienta DynamoDB
DynamODB = Boto3.Klient („DynamODB”)
# Odzyskaj element ze swojego stołu
Odpowiedź = DynamODB.Zdobądź przedmiot(
TableName = „My-Table-Nazwa”,
Key =
„id”: 'n': '1234'

)
# Zdobądź znacznik czasu z przedmiotu
pozycja = odpowiedź ['item']
timestamp = int (item ['timestamp'] ['n'])

Konwertuj znacznik czasu na obiekt DateTime

Możesz dalej przekonwertować swój znacznik czasu na obiekt DateTime za pomocą modułu DATETIME. Zobacz ilustrację poniżej:

Importuj datetime
# Konwertuj znacznik czasu na obiekt DateTime
dt = datetime.Datetime.Fromtimestamp (znacznik czasu)
Drukuj (DT)

Przechowuj znacznik czasu z aktualizowanym atrybutem_at

Co ciekawe, możesz również przechowywać znacznik czasu w DynamoDB z aktualizowanym atrybutem_at. W tym przykładzie ustawimy nasz atrybut aktualizacji_at na 2023-01-01.

Import Boto3
# Utwórz klienta DynamoDB
DynamODB = Boto3.Klient („DynamODB”)
# Ustaw znacznik czasu na 2023-01-01
Timestamp = "2023-01-01"
# Ustaw nazwę tabeli
TABLE_NAME = "MY_TABLET-NAME"
# Ustaw klucz podstawowy
pk = "1234"
# Ustaw wartość do przechowywania
wartość = „Szczęśliwego Nowego Roku”
# Ustaw mapę atrybutu
atrybut_map =
„aktualizowany_at”:
„S”: znacznik czasu
,
"wartość":
„S”: wartość


# Umieść element w tabeli
Odpowiedź = DynamODB.put_item (
TableName = Table_name,
Pozycja =
„PK”:
„S”: PK
,
** atrybut_map

)
Drukuj (odpowiedź)

Powyższy przykład będzie przechowywać element z kluczowym kluczem 1234 i dwa atrybuty: aktualizowany_at I wartość. aktualizowany_at atrybut zostanie ustawiony na znacznik czasu 2023-01-01, i wartość atrybut zostanie ustawiony na ciąg "Wszystkiego najlepszego w Nowym Roku."

Zapytanie DynamiDB między dwoma znacznikami czasu

Możesz zapytać elementy z tabeli DynamOdB z aktualizowany_at atrybut między dwoma znacznikami. Aby to osiągnąć, użyj zapytanie Działanie i określ KeyconditionExpression parametr.

Oto przykład tego, jak możesz zapytać o przedmioty z aktualizowany_at atrybut między 2022-01-01 I 2022-12-31:

Import Boto3
# Utwórz klienta DynamoDB
DynamODB = Boto3.Klient („DynamODB”)
# Ustaw nazwę tabeli
TABLE_NAME = "my_Table_name"
# Ustaw znaczniki czasu start i końcówki
start_timestamp = "2022-01-01"
end_timestamp = "2022-12-31"
# Zapytaj stół
Odpowiedź = DynamODB.zapytanie(
TableName = Table_name,
KeyConditionExpression = "aktualizate_atbetween: start_timestamp i: end_timestamp",
ExpressionAttributeValues ​​=
": start_timestamp":
„S”: start_timestamp
,
": end_timestamp":
„S”: end_timestamp


)
# Wydrukuj wyniki zapytania
Drukuj (odpowiedź)

Powyższy kod zwróci wszystkie elementy w tabeli, które mają aktualizowany_at atrybut między 2022-01-01 I 2022-12-31, włącznie. KeyconditionExpression Parametr określa warunek, który należy spełnić, aby element został zwrócony, oraz ExpressionAttributeValues Parametr ustawia wartości dla symbolicznych symboliczne w KeyconditionExpression.

Możesz także użyć SCANINDEXFORD parametr w celu określenia kolejności, w jakiej elementy powinny zostać zwrócone. Domyślnie, SCANINDEXFORD parametr jest ustawiony na PRAWDA, co oznacza, że ​​elementy zostaną zwrócone w kolejności rosnącej. Jeśli ustawisz to do FAŁSZ, Przedmioty zostaną zwrócone w kolejności malejącej.

Wniosek

W tym artykule omówiono podstawy przechowywania znaczników czasu w DynamoDB. Możesz teraz przechowywać znaczniki czasu prawidłowo w DynamoDB. Podkreśliliśmy również, w jaki sposób możesz pracować z znacznikami czasu. Jak każda operacja DynamoDB, możesz używać znaczników czasu za pośrednictwem preferowanego AWS SDK lub AWS CLI.