Paweł Łukasiewicz
2024-01-10
Paweł Łukasiewicz
2024-01-10
Udostępnij Udostępnij Kontakt
Wprowadzenie

Zanim przejdziemy dalej musimy jeszcze spojrzeć na interfejs API, który oferuje nam DynamoDB. W tym wpisie przejdziemy przez metody pozwalające na manipulowanie tabelami (mam tutaj na myśli tworzenie, aktualizowanie czy kasowanie), operacje odczytu danych (do których zaliczamy m.in. pobieranie danych czy operacje Scan oraz Query o których pisałem we wprowadzeniu) oraz operacje pozwalające na modyfikację danych takie jak dodawanie, aktualizowanie czy kasowanie poszczególnych wpisów.

DynamoDB oferuje oczywiście dużo szerszy zestaw metod niż te o których wspomniałem powyżej – pamiętajcie jednak, że w tym cyklu zaczynamy swoją przygodę z DynamoDB. Musimy również pamiętać, że Amazon zaleca korzystanie z AWS SDK zamiast wywoływania niskopoziomych API. Dostępne biblioteki sprawiają, że bezpośrednia interakcja z niskopoziomowymi interfejsami API jest zbędna. Biblioteki upraszczają współdzielone zadania takie jak uwierzytelnianie czy serializację.

Manipulowanie tabelami

DynamoDB oferuje pięć niskopoziomowych akcji do zarządzania tabelami (niektóre z nich omówiliśmy w poprzednich wpisach bazując na przykładach w języku C#). Do wspomnianych akcji zaliczamy:

  • CreateTable - metoda pozwalająca na utworzenie tabeli oraz ustawienie wartości przepustowości, które możemy modyfikować używając metody UpdateTable o której jednak za chwilę. Operacja tworzenia tabeli wymaga podania klucza głównego, złożonego lub prostego. Pozwala także na określenie jednego lub wielu indeksów wtórnych. Tematem indeksów również się zajmiemy – wszystko jednak w swoim czasie;
  • ListTables - po utworzeniu tabeli możemy posłużyć się metodą ListTables, która pozwala na wylistowanie wszystkich tabel utworzonych na bieżącym koncie AWS i powiązanych z jego punktem końcowym. W naszym przypadku będziemy posługiwać się obrazem Dockera i lokalną instancją bazy danych – to jednak w niczym nie przeszkadza i również zostaną zwrócone rezultaty wykonania metody;
  • UpdateTable - wspomniana wcześniej metoda pozwala na aktualizacje przepustowości tabeli oraz globalnego indeksu wtórego;
  • DescribeTable - metoda zwraca metadane tabeli, np. stan, rozmiar czy zdefiniowane indeksy;
  • DeleteTable - metoda usuwająca tabelę i jej indeksy.

Odczyt danych

DynamoDB oferuje cztery niskopoziomowe akcje odczytywania danych:

  • GetItem - metoda jako parametr przyjmuje klucz główny a zwraca atrybuty powiązanego elementu. Pozwala na zmianę domyślnego, ostatecznie spójnego (eventually consistent read), ustawienia odczytu danych;
  • BatchGetItem - wykonuje wiele żądań GetItem na wielu elementach poprzez klucze główne z opcją jednej lub wielu tabel. Zwraca nie więcej niż 100 elementów i musi charakteryzować się rozmiarem mniejszym niż 16MB. Pozwala na ostatecznie spójne i silnie spójne odczyty danych (strongly consistent reads);
  • Scan - operacja skanowania odczytuje wszystkie elementy tabeli i tworzy ostatecznie spójny zestaw wyników, które możemy filtrować poprzez odpowiednie warunki. Metoda unika użycia indeksu i skanuje całą tabelę. Należy pamiętać, że nie należy używać tej operacji do zapytań wymagających przewidywalności;
  • Query - operacja zapytania zwraca jeden lub wiele elementów tabeli lub elementy indeksu wtórnego. Używa określonej wartości dla klucza partycji i pozwala na użycie operatorów porównania w celu zawężenia zakresu zwracanych rezultatów. Zawiera wsparcie dla obu (wspomnianych wcześniej) trybów spójności a każda odpowiedź podlega ograniczeniu do rozmiaru 1MB.

Modyfikacja danych

DynamoDB pozwala na cztery niskopoziomowe akcje modyfikacji danych:

  • PutItem - operacja pozwala na dodanie nowego elementu lub zastępuje istniejący. W przypadku wykrycia identycznych kluczy główny, domyślnie zastępuje element. Oparatory warunkowe pozwalają obejść domyślne zachowanie nadpisania elementu i zastąpić je tylko w określonych (zdefiniowanych) warunkach;
  • BatchWriteItem - wykonuje wiele żądań PutItem oraz DeleteItem w obrębie wielu tabel. Jeżeli jedno żądanie się nie powiedzie, nie ma to wpływu na całą operację. Limit wynosi 25 elementów i 16MB wielkości;
  • UpdateItem - operacja zmienia atrybuty istniejącego elementu i pozwala na użycie operatorów warunkowych w celu wykonania aktualizacji tylko określonych warunkach;
  • DeleteItem - używa klucza głównego do usunięcia elementu, pozwala również na użycie operatorów warunkowych do określenia warunków usunięcia.

Podsumowanie

Po serii poprzednich wpisów wprowadzających różne pojęcia związane z DynamoDB oraz po zapoznaniu się z interfejsem API możemy przejść do ćwiczeń praktycznych. Skonfigurowany projekt, wraz z jedną przykładową metodą kontrolera, możecie znaleźć tutaj: DynamoDB - tworzenie tabeli

Pamiętajcie jedynie od odpaleniu Dockera z naszym obrazem DynamoDB.