Wirklich DynamoDB und MySQL sind Äpfel und Orangen. DynamoDB ist eine NoSQL-Speicherschicht, während MySQL für relationalen Speicher verwendet wird. Sie sollten auswählen, was basierend auf den tatsächlichen Anforderungen Ihrer Anwendung verwendet werden soll. In der Tat können einige Anwendungen mit beiden gut bedient werden.
Wenn Sie beispielsweise Daten speichern, die sich nicht gut für ein relationales Schema eignen (Baumstrukturen, schemalose JSON-Darstellungen usw.), das anhand eines einzelnen Schlüssels oder einer Schlüssel / Bereich-Kombination nachgeschlagen werden kann, dann DynamoDB ( oder ein anderer NoSQL-Speicher) wäre wahrscheinlich die beste Wahl.
Wenn Sie ein genau 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 nach Bedarf Indizes hinzufügen), 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 Cluster-Datenspeichers kümmern zu müssen. Wenn Ihre Anwendung also 1000 Lese- / Schreibvorgänge pro Sekunde erfordert, können Sie einfach Ihre DynamoDB-Tabelle für diese Durchsatzstufe 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. Wenn Sie jedoch eine erhebliche Anzahl von Schreibvorgängen bis zu dem Punkt ausführen müssen, an dem die größte Instanzgröße nicht mehr mithalten kann, bleiben Sie ohne Optionen (Sie können für Lesevorgänge mithilfe von Lesereplikaten horizontal skalieren).
Aktualisierter Hinweis: DynamoDb unterstützt jetzt die globale Sekundärindizierung, sodass Sie jetzt optimierte Suchvorgänge für andere Datenfelder als den Hash oder die Kombination von Hash- und Bereichsschlüsseln durchführen können.