SimpleDB memiliki beberapa batasan skalabilitas. Anda hanya dapat menskalakan dengan sharding dan memiliki latensi lebih tinggi daripada mongodb atau cassandra, ia memiliki batas throughput dan harganya lebih tinggi daripada opsi lain. Skalabilitas bersifat manual (Anda harus melakukan shard).
Jika Anda memerlukan opsi kueri yang lebih luas dan Anda memiliki kecepatan baca yang tinggi dan Anda tidak memiliki banyak data, mongodb lebih baik. Tetapi untuk daya tahan, Anda harus menggunakan setidaknya 2 instance server mongodb sebagai master/slave. Jika tidak, Anda dapat kehilangan menit terakhir data Anda. Skalabilitas adalah manual. Ini jauh lebih cepat daripada simpledb. Autosharding diimplementasikan dalam versi 1.6.
Cassandra memiliki opsi kueri yang lemah tetapi tahan lama seperti postgresql. Ini secepat mongo dan lebih cepat pada ukuran data yang lebih tinggi. Operasi tulis lebih cepat daripada operasi baca di cassandra. Itu dapat menskalakan secara otomatis dengan menembakkan instance EC2, tetapi Anda harus sedikit memodifikasi file konfigurasi (jika saya ingat dengan benar). Jika Anda memiliki terabyte data, cassandra adalah pilihan terbaik Anda. Tidak perlu melakukan sharding data Anda, itu dirancang didistribusikan dari hari pertama. Anda dapat memiliki sejumlah salinan untuk semua data Anda dan jika beberapa server mati maka secara otomatis akan mengembalikan hasil dari yang hidup dan mendistribusikan data server mati ke orang lain. Ini sangat toleran terhadap kesalahan. Anda dapat menyertakan sejumlah instance, ini jauh lebih mudah untuk diskalakan daripada opsi lain. Ini memiliki opsi klien .net dan java yang kuat. Mereka memiliki penyatuan koneksi, penyeimbangan beban, penandaan server mati,...
Pilihan lain adalah hadoop untuk data besar tetapi tidak realtime seperti yang lain, Anda dapat menggunakan hadoop untuk datawarehousing. Baik cassandra atau mongo tidak memiliki transaksi, jadi jika Anda membutuhkan transaksi, postgresql lebih cocok. Pilihan lainnya adalah Amazon RDS, tetapi kinerjanya buruk dan harganya tinggi. Jika Anda ingin menggunakan database atau simpledb, Anda mungkin juga memerlukan cache data (misalnya:memcached).
Untuk aplikasi web, jika data Anda kecil saya sarankan mongo, jika cassandra besar lebih baik. Anda tidak memerlukan lapisan caching dengan mongo atau cassandra, mereka sudah cepat. Saya tidak merekomendasikan simpledb, itu juga mengunci Anda ke Amazon seperti yang Anda katakan.
Jika Anda menggunakan c#, java atau scala, Anda dapat menulis antarmuka dan mengimplementasikannya untuk mongo, mysql, cassandra atau apa pun untuk lapisan akses data. Ini lebih sederhana dalam bahasa dinamis (misalnya rub,python,php). Anda dapat menulis penyedia untuk dua di antaranya jika Anda mau dan dapat mengubah penyimpanan mungkin saat runtime hanya dengan perubahan konfigurasi, semuanya mungkin. Pengembangan dengan mongo, cassandra, dan simpledb lebih mudah daripada database, dan bebas dari skema, juga tergantung pada pustaka/konektor klien yang Anda gunakan. Yang paling sederhana adalah mongo. Hanya ada satu indeks per tabel di cassandra, jadi Anda harus mengelola indeks lain sendiri, tetapi dengan rilis 0,7 indeks sekunder cassandra akan memungkinkan seperti yang saya tahu. Anda juga dapat memulai dengan salah satu dari mereka dan menggantinya di masa mendatang jika perlu.