Tak naprawdę DynamoDB i MySQL to jabłka i pomarańcze. DynamoDB to warstwa pamięci masowej NoSQL, podczas gdy MySQL służy do przechowywania relacyjnego. Powinieneś wybrać, czego użyć, na podstawie rzeczywistych potrzeb Twojej aplikacji. W rzeczywistości niektóre aplikacje mogą być dobrze obsługiwane przy użyciu obu.
Jeśli na przykład przechowujesz dane, które nie pasują do schematu relacyjnego (struktury drzew, reprezentacje JSON bez schematu itp.), które można porównać z pojedynczym kluczem lub kombinacją klucz/zakres, wówczas DynamoDB ( lub jakiś inny sklep NoSQL) prawdopodobnie będzie najlepszym wyborem.
Jeśli masz dobrze zdefiniowany schemat dla swoich danych, który dobrze pasuje do struktury relacyjnej i potrzebujesz elastyczności w wyszukiwaniu danych na wiele różnych sposobów (oczywiście dodając indeksy w razie potrzeby), RDS może być lepszym rozwiązaniem .
Główną zaletą korzystania z DynamoDB jako magazynu NoSQL jest gwarantowana przepustowość odczytu/zapisu na dowolnym wymaganym poziomie bez martwienia się o zarządzanie klastrowym magazynem danych. Jeśli więc Twoja aplikacja wymaga 1000 odczytów/zapisów na sekundę, możesz po prostu udostępnić tabelę DynamoDB dla tego poziomu przepustowości i nie musisz się martwić o podstawową infrastrukturę.
RDS ma tę samą zaletę, że nie musi martwić się o samą infrastrukturę, jednak jeśli w końcu będziesz musiał wykonać znaczną liczbę zapisów do punktu, w którym największy rozmiar instancji nie będzie już nadążał, jesteś w pewnym sensie pozostawiony bez opcje (można skalować w poziomie dla odczytów przy użyciu replik do odczytu).
Zaktualizowana uwaga:DynamoDb obsługuje teraz globalne indeksowanie wtórne, dzięki czemu masz teraz możliwość wykonywania zoptymalizowanych wyszukiwań w polach danych innych niż skrót lub kombinacja kluczy skrótu i zakresu.