Realmente DynamoDB y MySQL son manzanas y naranjas. DynamoDB es una capa de almacenamiento NoSQL, mientras que MySQL se usa para el almacenamiento relacional. Debe elegir qué usar en función de las necesidades reales de su aplicación. De hecho, algunas aplicaciones pueden funcionar bien usando 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 pueden compararse con una sola clave o una combinación de clave/rango, entonces DynamoDB ( o alguna otra tienda NoSQL) probablemente sea su mejor apuesta.
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 maneras 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 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á, se queda 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 hash y de rango.