SimpleDB có một số hạn chế về khả năng mở rộng. Bạn chỉ có thể mở rộng quy mô bằng độ sắc nét và nó có độ trễ cao hơn mongodb hoặc cassandra, nó có giới hạn thông lượng và nó có giá cao hơn các tùy chọn khác. Khả năng mở rộng là thủ công (bạn phải chia nhỏ).
Nếu bạn cần các tùy chọn truy vấn rộng hơn và bạn có tỷ lệ đọc cao và bạn không có quá nhiều dữ liệu mongodb thì tốt hơn. Nhưng để có độ bền, bạn cần sử dụng ít nhất 2 phiên bản máy chủ mongodb làm chủ / tớ. Nếu không, bạn có thể mất dữ liệu vào phút cuối cùng của mình. Khả năng mở rộng là thủ công. Nó nhanh hơn nhiều so với simpledb. Tự động sạc được triển khai trong phiên bản 1.6.
Cassandra có các tùy chọn truy vấn yếu nhưng bền như postgresql. Nó nhanh như mongo và nhanh hơn trên kích thước dữ liệu cao hơn. Thao tác ghi nhanh hơn thao tác đọc trên cassandra. Nó có thể tự động mở rộng quy mô bằng cách kích hoạt các phiên bản ec2, nhưng bạn phải sửa đổi các tệp cấu hình một chút (nếu tôi nhớ không nhầm). Nếu bạn có hàng terabyte băng dữ liệu thì tốt nhất là bạn nên đặt cược. Không cần chia nhỏ dữ liệu của bạn, nó đã được thiết kế để phân phối từ ngày đầu tiên. Bạn có thể có bất kỳ số lượng bản sao nào cho tất cả dữ liệu của mình và nếu một số máy chủ đã chết, nó sẽ tự động trả về kết quả từ những máy chủ đang hoạt động và phân phối dữ liệu của máy chủ đã chết cho những người khác. Nó có khả năng chịu lỗi cao. Bạn có thể bao gồm bất kỳ số lượng trường hợp nào, nó dễ mở rộng hơn nhiều so với các tùy chọn khác. Nó có các tùy chọn máy khách .net và java mạnh mẽ. Chúng có tính năng tổng hợp kết nối, cân bằng tải, đánh dấu các máy chủ đã chết, ...
Một tùy chọn khác là hadoop cho dữ liệu lớn nhưng nó không theo thời gian thực như những người khác, bạn có thể sử dụng hadoop cho datawarehousing. Cả cassandra hay mongo đều không có giao dịch, vì vậy nếu bạn cần giao dịch thì postgresql là lựa chọn phù hợp hơn. Một lựa chọn khác là Amazon RDS, nhưng hiệu suất kém và giá cao. Nếu bạn muốn sử dụng cơ sở dữ liệu hoặc simpledb, bạn cũng có thể cần bộ nhớ đệm dữ liệu (ví dụ:memcached).
Đối với các ứng dụng web, nếu dữ liệu của bạn nhỏ, tôi khuyên bạn nên dùng mongo, nếu dữ liệu lớn thì tốt hơn. Bạn không cần một lớp bộ nhớ đệm với mongo hoặc cassandra, chúng đã nhanh rồi. Tôi không khuyên bạn nên dùng simpledb, nó cũng khóa bạn vào Amazon như bạn đã nói.
Nếu bạn đang sử dụng c #, java hoặc scala, bạn có thể viết một giao diện và triển khai nó cho mongo, mysql, cassandra hoặc bất kỳ thứ gì khác cho lớp truy cập dữ liệu. Nó đơn giản hơn trong các ngôn ngữ động (ví dụ:rub, python, php). Bạn có thể viết nhà cung cấp cho hai trong số họ nếu bạn muốn và có thể thay đổi bộ nhớ có thể trong thời gian chạy bằng một thay đổi cấu hình duy nhất, tất cả đều có thể. Phát triển với mongo, cassandra và simpledb dễ dàng hơn cơ sở dữ liệu và chúng không có lược đồ, nó cũng phụ thuộc vào thư viện / trình kết nối máy khách mà bạn đang sử dụng. Đơn giản nhất là mongo. Chỉ có một chỉ mục cho mỗi bảng trong cassandra, vì vậy bạn phải tự quản lý các chỉ mục khác, nhưng với việc phát hành 0,7 chỉ mục phụ của cassandra sẽ có thể thực hiện được như tôi biết. Bạn cũng có thể bắt đầu với bất kỳ cái nào trong số chúng và thay thế nó trong tương lai nếu cần.