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