Wirklich, DynamoDB und MySQL sind Äpfel und Orangen. DynamoDB ist eine NoSQL-Speicherschicht, während MySQL für die relationale Speicherung verwendet wird. Sie sollten auswählen, was Sie verwenden möchten, basierend auf den tatsächlichen Anforderungen Ihrer Anwendung. Tatsächlich könnten einige Anwendungen gut bedient werden, wenn beide verwendet werden.
Wenn Sie beispielsweise Daten speichern, die sich nicht gut für ein relationales Schema eignen (Baumstrukturen, schemalose JSON-Darstellungen usw.), die anhand eines einzelnen Schlüssels oder einer Schlüssel/Bereichs-Kombination nachgeschlagen werden können, dann ist DynamoDB ( oder ein anderer NoSQL-Speicher) wäre wahrscheinlich die beste Wahl.
Wenn Sie ein gut definiertes Schema für Ihre Daten haben, das gut in eine relationale Struktur passt, und Sie die Flexibilität benötigen, die Daten auf verschiedene Arten abzufragen (natürlich durch Hinzufügen von Indizes nach Bedarf), dann ist RDS möglicherweise die bessere Lösung .
Der Hauptvorteil der Verwendung von DynamoDB als NoSQL-Speicher besteht darin, dass Sie einen garantierten Lese-/Schreibdurchsatz auf jeder gewünschten Ebene erhalten, ohne sich um die Verwaltung eines geclusterten Datenspeichers kümmern zu müssen. Wenn Ihre Anwendung also 1000 Lese-/Schreibvorgänge pro Sekunde erfordert, können Sie Ihre DynamoDB-Tabelle einfach für diesen Durchsatz bereitstellen und müssen sich nicht wirklich um die zugrunde liegende Infrastruktur kümmern.
RDS hat den gleichen Vorteil, dass Sie sich nicht um die Infrastruktur selbst kümmern müssen, aber wenn Sie am Ende eine beträchtliche Anzahl von Schreibvorgängen bis zu dem Punkt durchführen müssen, an dem die größte Instanzgröße nicht mehr mithalten kann, bleiben Sie irgendwie ohne Optionen (Sie können für Lesevorgänge mit Lesereplikaten horizontal skalieren).
Aktualisierter Hinweis:DynamoDb unterstützt jetzt die globale Sekundärindizierung, sodass Sie jetzt die Möglichkeit haben, optimierte Suchvorgänge für andere Datenfelder als den Hash oder eine Kombination aus Hash- und Bereichsschlüsseln durchzuführen.