Realmente DynamoDB y MySQL son manzanas y naranjas. DynamoDB es una capa de almacenamiento NoSQL, mientras que MySQL se usa para almacenamiento relacional. Debe elegir qué usar según las necesidades reales de su aplicación. De hecho, algunas aplicaciones podrían funcionar bien con ambos.
Si, por ejemplo, está almacenando datos que no se prestan bien a un esquema relacional (estructuras de árbol, representaciones JSON sin esquema, etc.) que se pueden comparar con una sola clave o una combinación de clave / rango, entonces DynamoDB ( o alguna otra tienda NoSQL) probablemente sea su mejor opción.
Si tiene un esquema bien definido para sus datos que puede encajar bien en una estructura relacional y necesita la flexibilidad para consultar los datos de varias formas diferentes (agregando índices según sea necesario, por supuesto), entonces RDS podría ser una mejor solución .
El principal beneficio de usar DynamoDB como un almacén NoSQL es que obtiene un rendimiento de lectura / escritura garantizado en cualquier nivel que necesite sin tener que preocuparse por administrar un almacén de datos en clúster. Entonces, si su aplicación requiere 1000 lecturas / escrituras por segundo, puede simplemente aprovisionar su tabla de DynamoDB para ese nivel de rendimiento y no tener que preocuparse realmente por la infraestructura subyacente.
RDS tiene el mismo beneficio de no tener que preocuparse por la infraestructura en sí, sin embargo, si termina necesitando hacer una cantidad significativa de escrituras hasta el punto en que el tamaño de instancia más grande ya no se mantendrá al día, se quedará sin opciones (puede escalar horizontalmente para lecturas usando réplicas de lectura).
Nota actualizada: DynamoDb ahora admite la indexación secundaria global, por lo que ahora tiene la capacidad de realizar búsquedas optimizadas en campos de datos que no sean el hash o la combinación de claves de rango y hash.