Kontynuując przeglądanie strony, wyrażasz zgodę na używanie przez nas plików cookies. Sprawdź jej szczegóły Polityki Prywatności i Cookies.

Akceptuję arrow

Bezpieczna i wysoko dostępna usługa baz danych - Amazon Dynamo DB Best Practices

9.5.2019 | LCloud
Udostępnij:

Zacznijmy od tego czym jest Amazon Dynamo DB i do czego może się nam przydać. Jest to jedna z usług chmury Amazona, dostarczana jako serwis. AWS zajmuje się zarządzaniem poszczególnymi komponentami tego serwisu. DynamoDB jest bazą danych NoSQL i została zaprojektowana do przechowywania i zarządzania danymi w formie pojedynczej tabeli. Sama tabela Dynamo DB może być zlokalizowana w wielu regionach AWS i działać jako tabela multimaster. Jej możliwości pozwalają na obsłużenie ponad 10 bilionów requestów dziennie oraz przyjęcie do 20 milionów requestów na sekundę.

Niezaprzeczalną zaletą jest wydajność i skalowalność usługi. Można zastosować ją praktycznie do każdej ilości posiadanych danych. Kolejną zaletą jest to, że jest to usługa w stu procentach serverless – AWS zajmuje się niskopoziomowym zarządzaniem i skalowaniem infrastruktury potrzebnej do jej działania. 

Dynamo DB automatycznie skaluje tabele w celu dostosowania pojemności i utrzymuje wydajność przy zerowej administracji. W trybie on-demand usługa Amazon Dynamo DB automatycznie dostosowuje się do pojawiających  obciążeń. Efektem jest większa wydajność oraz brak konieczności zmiany kodu aplikacji i możliwość korzystania z istniejących interfejsów API. Dynamo DB zapewnia automatyczne skalowanie przepustowości i pamięci masowej w oparciu o wcześniej ustawioną wydajność, monitorując wykorzystanie wydajności aplikacji.

Integracja usługi z AWS Lambda pozwala na użycie triggerów, za pomocą których można automatycznie wykonać funkcję niestandardową po wykryciu zmiany stanu w tabeli Dynamo DB.

Ostatnim i również bardzo ważnym aspektem jest gotowość korporacyjna (enterprise ready) usługi. Znaczy to mniej więcej tyle, że jest ona zbudowana z myślą o obciążeniach krytycznych jako support dla transakcji ACID, które wymagają złożonej logiki biznesowej. Usługa wspiera również ochronę danych poprzez ich kodowanie oraz nieustanny backup gwarantujący  umowny poziom SLA.

Skoro jasnym jest czym jest Dynamo DB, przejdźmy  do najlepszych praktyk związanych z Amazon Dynamo DB.
Pierwszą zasadą jest efektywne projektowanie i wykorzystanie kluczy partycji.

Do wyboru mamy dwa typy klucza: podstawowy i złożony. Podstawowy jest prostym kluczem partycji, natomiast złożony może być rozbudowany o klucz sortowania. Odpowiedni sposób ich projektowania pozwala na uzyskanie benefitów związanych z dostępną pojemnością i jej adaptacją do zmieniających się wymagań. Dynamo DB została zaprojektowana, by najwydajniej przetwarzać dane równomiernie rozłożone na partycje.

Drugą zasadą jest używanie klucza sortowania w celu kategoryzacji danych.

Dobrze zaprojektowane klucze sortowania, zbierają powiązane informacje w jednym miejscu. Klucze sortowania złożonego umożliwiają również definiowanie hierarchicznych (one-to-many) relacji w danych.

Trzecią zasadą jest efektywne korzystanie z indeksowania secondary.

Dodatkowe indeksy są często niezbędne do obsługi wzorców zapytań wymaganych przez aplikację. Jednocześnie, jeśli nie ma potrzeby korzystania z indeksowania, nie należy go stosować. Możemy wówczas niepotrzebnie zwiększać koszty i zmniejszać wydajność naszej aplikacji.

Czwarta zasada polega na zrozumieniu w jaki sposób należy przechowywać dane oraz ich atrybuty.

Usługa Dynamo DB ogranicza rozmiar każdego zasobu, tak aby można było przechowywać go w tabeli. Dzięki możliwościom kompresowania, istnieje opcja zmniejszenia wielkości przechowywanych elementów. Sprawne wykorzystanie indeksowania wg. kluczy sortowania, pozwala również na podzielenie większego elementu na kilka mniejszych. A dzięki integracji Dynamo DB z usługą Amazon S3 istnieje możliwość magazynowania w niej zasobów, jako obiektów lub identyfikatora obiektu w S3 w tabeli Dynamo DB.

Piąta zasada odnosi się do wykorzystania tabel w Dynamo DB.

Zalecenia mówią, iż należy ograniczyć ilość wykorzystywanych tabel do minimum. Jedna tabela w zupełności wystarczy do kilku aplikacji, Natomiast jeśli chodzi o dane w szeregach czasowych, należy korzystać z jednej tabeli dla aplikacji na cykl.

Szósta zasada to zarządzanie wieloma zależnościami.

Pojawiające się tu listy rozgraniczeń są wzorcem projektowym w modelowaniu zarządzania wieloma zależnościami. Zapewniają sposób reprezentowania danych wykresu w Dynamo DB.

Siódma zasada odnosi się do wdrażania środowisk hybrydowych.

Jeśli migracja danych do usługi Dynamo DB nie jest możliwa do realizacji, warto pomyśleć o rozwiązaniu, którym może okazać się stworzenie środowiska hybrydowego.

W ósmej zasadzie poświęcamy uwagę modelowaniu danych relacyjnych w NoSQL.

Gdy oczekujemy szybko realizowanych zapytań, podczas dużego natężenia ruchu, zastosowanie NoSQL ma swoje ekonomiczne i techniczne zalety. Dzięki Dynamo DB; jego właściwościom oraz korzystnemu cennikowi usługi, możemy uniknąć problemów z ograniczeniami związanymi ze skalowalnością.

Dziewiąta zasada związana jest z zapytaniami i skanowaniem danych.

W tym aspekcie najlepsze praktyki odnoszą się do wydajności skanowania, unikania skoków w aktywności odczytów czy użyciu skanowania równoległego. Więcej znajdziesz w dokumentacji AWS dostępnej tutaj.

Ostatnia, dziesiąta zasada związana jest z globalnymi tabelami i ich zastosowaniem.

Usługa Amazon Dynamo DB pozwala na tworzenie rozwiązań w pełni skalowalnych i zarządzalnych, bez konieczności utrzymania i tworzenia własnej repliki. Podczas tworzenia globalnej tabeli, określamy regiony AWS, w których tabela ma być dostępna. A Dynamo DB zadba o resztę zadań związanych z tworzeniem i aktualizacją pozostałych tabel, w wybranych regionach.

Wszystkie wcześniej wymienione zasady są podstawą do uzyskania jak najlepszych efektów zarówno wdrożeniowych, jak i kosztowych. Dlaczego Amazon Dynamo DB jest konkurencyjnym rozwiązaniem na rynku? Ponieważ pozwala na szybkie i wydajne zastosowanie usługi do każdej ilości danych, z uwzględnieniem braku konieczności zaplecza serwerowego. W celu uzyskania odpowiedzi na nurtujące Was pytania warto zajrzeć na AWS’owe forum poświęcone Dynamo DB.