На самом деле DynamoDB и MySQL - это яблоки и апельсины. DynamoDB - это уровень хранения NoSQL, в то время как MySQL используется для реляционного хранилища. Вы должны выбрать, что использовать, исходя из реальных потребностей вашего приложения. Фактически, некоторые приложения можно было бы хорошо обслуживать, используя оба.
Если, например, вы храните данные, которые не подходят для реляционной схемы (древовидные структуры, представления JSON без схемы и т. Д.), Которые можно искать по одному ключу или комбинации ключ / диапазон, то DynamoDB ( или какой-нибудь другой магазин NoSQL), вероятно, будет вашим лучшим выбором.
Если у вас есть четко определенная схема для ваших данных, которая может хорошо вписаться в реляционную структуру, и вам нужна гибкость для запроса данных несколькими различными способами (конечно, добавление индексов по мере необходимости), тогда RDS может быть лучшим решением. .
Основное преимущество использования DynamoDB в качестве хранилища NoSQL заключается в том, что вы получаете гарантированную пропускную способность чтения / записи на любом требуемом уровне, не беспокоясь об управлении хранилищем кластеризованных данных. Поэтому, если вашему приложению требуется 1000 операций чтения / записи в секунду, вы можете просто подготовить свою таблицу DynamoDB для этого уровня пропускной способности и не беспокоиться о базовой инфраструктуре.
У RDS есть почти то же самое преимущество, заключающееся в том, что вам не нужно беспокоиться о самой инфраструктуре, однако, если вам в конечном итоге потребуется выполнить значительное количество операций записи до точки, когда самый большой размер экземпляра больше не будет соответствовать, вы как бы останетесь без параметры (вы можете масштабировать по горизонтали для чтения с помощью реплик чтения).
Обновленное примечание: DynamoDb теперь поддерживает глобальную вторичную индексацию, поэтому теперь у вас есть возможность выполнять оптимизированный поиск в полях данных, отличных от хэша или комбинации хеш-ключей и ключей диапазона.