Thực sự DynamoDB và MySQL là táo và cam. DynamoDB là một lớp lưu trữ NoSQL trong khi MySQL được sử dụng để lưu trữ quan hệ. Bạn nên chọn những gì để sử dụng dựa trên nhu cầu thực tế của ứng dụng của bạn. Trên thực tế, một số ứng dụng có thể được phục vụ tốt bằng cách sử dụng cả hai.
Ví dụ: nếu bạn đang lưu trữ dữ liệu không phù hợp tốt với lược đồ quan hệ (cấu trúc cây, biểu diễn JSON không có lược đồ, v.v.) có thể được tra cứu dựa trên một khóa đơn hoặc tổ hợp khóa / phạm vi thì DynamoDB ( hoặc một số cửa hàng NoSQL khác) có thể sẽ là lựa chọn tốt nhất của bạn.
Nếu bạn có một lược đồ được xác định rõ ràng cho dữ liệu của mình có thể phù hợp tốt với cấu trúc quan hệ và bạn cần sự linh hoạt để truy vấn dữ liệu theo một số cách khác nhau (tất nhiên là thêm chỉ mục nếu cần), thì RDS có thể là giải pháp tốt hơn .
Lợi ích chính khi sử dụng DynamoDB làm kho lưu trữ NoSQL là bạn nhận được thông lượng đọc / ghi được đảm bảo ở bất kỳ mức nào bạn yêu cầu mà không phải lo lắng về việc quản lý một kho dữ liệu được phân nhóm. Vì vậy, nếu ứng dụng của bạn yêu cầu 1000 lần đọc / ghi mỗi giây, bạn chỉ có thể cung cấp bảng DynamoDB của mình cho mức thông lượng đó và không thực sự phải lo lắng về cơ sở hạ tầng bên dưới.
RDS có nhiều lợi ích tương tự là không phải lo lắng về bản thân cơ sở hạ tầng, tuy nhiên nếu cuối cùng bạn cần thực hiện một số lượng ghi đáng kể đến mức kích thước phiên bản lớn nhất sẽ không còn theo kịp, bạn sẽ không còn tùy chọn (bạn có thể chia tỷ lệ theo chiều ngang để đọc bằng cách sử dụng các bản sao đã đọc).
Lưu ý cập nhật: DynamoDb hiện hỗ trợ lập chỉ mục thứ cấp toàn cầu, vì vậy bạn hiện có khả năng thực hiện tra cứu được tối ưu hóa trên các trường dữ liệu ngoài hàm băm hoặc kết hợp các khóa băm và phạm vi.