SimpleDB má určitá omezení škálovatelnosti. Škálovat lze pouze shardováním a má vyšší latenci než mongodb nebo cassandra, má limit propustnosti a je dražší než ostatní možnosti. Škálovatelnost je manuální (musíte shardovat).
Pokud potřebujete širší možnosti dotazů a máte vysokou rychlost čtení a nemáte tolik dat, je lepší mongodb. Ale pro trvanlivost musíte použít alespoň 2 instance serveru mongodb jako master/slave. Jinak můžete ztratit poslední minutu svých dat. Škálovatelnost je manuální. Je to mnohem rychlejší než simpledb. Autosharding je implementován ve verzi 1.6.
Cassandra má slabé možnosti dotazů, ale je stejně odolná jako postgresql. Je stejně rychlý jako mongo a rychlejší při větší velikosti dat. Operace zápisu jsou rychlejší než operace čtení na cassandře. Může se automaticky škálovat spouštěním instancí ec2, ale musíte trochu upravit konfigurační soubory (pokud si dobře pamatuji). Pokud máte terabajty dat, cassandra je vaše nejlepší sázka. Není třeba svá data shardovat, byla navržena distribuovaná od 1. dne. Můžete mít libovolný počet kopií pro všechna svá data a pokud jsou některé servery mrtvé, automaticky vrátí výsledky z živých a distribuuje data mrtvého serveru ostatním. Je vysoce odolný vůči chybám. Můžete zahrnout libovolný počet instancí, škálování je mnohem jednodušší než jiné možnosti. Má silné možnosti .net a java klienta. Mají sdružování připojení, vyvažování zátěže, označování mrtvých serverů,...
Další možností je hadoop pro velká data, ale není tak realtime jako ostatní, můžete použít hadoop pro datové sklady. Cassandra ani mongo nemají transakce, takže pokud potřebujete transakce, je lepší postgresql. Další možností je Amazon RDS, ale jeho výkon je špatný a cena je vysoká. Pokud chcete používat databáze nebo simpledb, možná budete potřebovat také ukládání dat do mezipaměti (např.:memcached).
Pro webové aplikace, pokud jsou vaše data malá, doporučuji mongo, pokud jsou velká, je lepší cassandra. S mongo nebo cassandrou nepotřebujete cachovací vrstvu, ty už jsou rychlé. Simpledb nedoporučuji, taky tě to zamyká na Amazon jak jsi říkal.
Pokud používáte c#, java nebo scala, můžete napsat rozhraní a implementovat jej pro mongo, mysql, cassandra nebo cokoli jiného pro vrstvu přístupu k datům. Jednodušší je to v dynamických jazycích (např. rub,python,php). Můžete napsat poskytovatele pro dva z nich, pokud chcete a můžete změnit úložiště možná za běhu pouze změnou konfigurace, všechny jsou možné. Vývoj s mongo, cassandra a simpledb je jednodušší než databáze a jsou bez schématu, záleží také na klientské knihovně/konektoru, který používáte. Nejjednodušší je mongo. V cassandře je pouze jeden index na tabulku, takže ostatní indexy musíte spravovat sami, ale s vydáním cassandra 0.7 budou sekundární indexy možné, jak vím. Můžete také začít s kterýmkoli z nich a v případě potřeby jej v budoucnu nahradit.