SimpleDB има някои ограничения за мащабируемост. Можете да мащабирате само чрез шардинг и има по-висока латентност от mongodb или cassandra, има ограничение на пропускателната способност и цената му е по-висока от другите опции. Мащабируемостта е ръчна (трябва да разделите).
Ако имате нужда от по-широки опции за заявки и имате висока скорост на четене и нямате толкова много данни, mongodb е по-добре. Но за издръжливост трябва да използвате поне 2 сървърни инстанции на mongodb като главен/подчинен. В противен случай можете да загубите последната минута от вашите данни. Мащабируемостта е ръчна. Много по-бързо е от simpledb. Автоматичното споделяне е внедрено във версия 1.6.
Cassandra има слаби опции за заявки, но е толкова издръжлив, колкото postgresql. Бърз е като mongo и по-бърз при по-голям размер на данните. Операциите за запис са по-бързи от операциите за четене на cassandra. Може да мащабира автоматично чрез задействане на екземпляри на ec2, но трябва да промените малко конфигурационните файлове (ако си спомням правилно). Ако имате терабайти данни, cassandra е най-добрият ви залог. Няма нужда да разделяте вашите данни, те са предназначени за разпространение от първия ден. Можете да имате произволен брой копия за всички ваши данни и ако някои сървъри са мъртви, той автоматично ще върне резултатите от живите и ще разпространи данните на мъртвия сървър на други. Той е силно устойчив на грешки. Можете да включите произволен брой екземпляри, това е много по-лесно за мащабиране от други опции. Има силни .net и java клиентски опции. Имат групиране на връзки, балансиране на натоварването, маркиране на мъртви сървъри,...
Друг вариант е hadoop за големи данни, но не е в реално време като другите, можете да използвате hadoop за складиране на данни. Нито cassandra, нито mongo имат транзакции, така че ако имате нужда от транзакции, postgresql е по-подходящ. Друг вариант е Amazon RDS, но неговата производителност е лоша и цената е висока. Ако искате да използвате бази данни или simpledb, може също да имате нужда от кеширане на данни (напр. memcached).
За уеб приложения, ако данните ви са малки, препоръчвам mongo, ако са големи, cassandra е по-добре. Нямате нужда от кеширащ слой с mongo или cassandra, те вече са бързи. Не препоръчвам simpledb, той също ви заключва към Amazon, както казахте.
Ако използвате c#, java или scala, можете да напишете интерфейс и да го внедрите за mongo, mysql, cassandra или нещо друго за слой за достъп до данни. По-просто е в динамичните езици (напр. rub,python,php). Можете да напишете доставчик за два от тях, ако искате, и можете да промените хранилището може би по време на изпълнение само чрез промяна на конфигурацията, всички те са възможни. Разработката с mongo, cassandra и simpledb е по-лесна от база данни и те са без схема, също зависи от клиентската библиотека/конектор, който използвате. Най-простият е mongo. Има само един индекс на таблица в cassandra, така че трябва сами да управлявате други индекси, но с изданието 0.7 на cassandra вторичните индекси ще бъдат възможни, доколкото знам. Можете също да започнете с някой от тях и да го замените в бъдеще, ако трябва.