Naprawdę DynamoDB i MySQL to jabłka i pomarańcze. DynamoDB to warstwa pamięci NoSQL, podczas gdy MySQL jest używany do przechowywania relacyjnego. Powinieneś wybrać, czego chcesz użyć, na podstawie rzeczywistych potrzeb 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 nadają się dobrze do schematu relacyjnego (struktury drzewa, reprezentacje JSON bez schematu itp.), Które można porównać z pojedynczym kluczem lub kombinacją klucz / zakres, wówczas DynamoDB ( lub inny sklep NoSQL) byłby prawdopodobnie najlepszym rozwiązaniem.
Jeśli masz dobrze zdefiniowany schemat danych, który może dobrze pasować 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ą korzyścią z używania DynamoDB jako magazynu NoSQL jest to, że masz gwarantowaną przepustowość odczytu / zapisu na dowolnym wymaganym poziomie bez martwienia się o zarządzanie magazynem danych w klastrze. Więc jeśli Twoja aplikacja wymaga 1000 odczytów / zapisów na sekundę, możesz po prostu udostępnić swoją tabelę DynamoDB dla tego poziomu przepustowości i tak naprawdę nie musisz się martwić o podstawową infrastrukturę.
RDS ma taką samą korzyść, że nie musisz 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ł, pozostaniesz bez opcje (można skalować w poziomie dla odczytów przy użyciu replik do odczytu).
Zaktualizowana uwaga: DynamoDb obsługuje teraz globalne indeksowanie pomocnicze, więc masz teraz możliwość wykonywania zoptymalizowanych wyszukiwań w polach danych innych niż hash lub kombinacja kluczy hash i range.