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