SimpleDB tiene algunas limitaciones de escalabilidad. Solo puede escalar por fragmentación y tiene una mayor latencia que mongodb o cassandra, tiene un límite de rendimiento y tiene un precio más alto que otras opciones. La escalabilidad es manual (debe fragmentar).
Si necesita opciones de consulta más amplias y tiene una tasa de lectura alta y no tiene tantos datos, mongodb es mejor. Pero para mayor durabilidad, debe usar al menos 2 instancias de servidor mongodb como maestro/esclavo. De lo contrario, puede perder el último minuto de sus datos. La escalabilidad es manual. Es mucho más rápido que simpledb. Autosharding se implementa en la versión 1.6.
Cassandra tiene opciones de consulta débiles pero es tan duradero como postgresql. Es tan rápido como mongo y más rápido en un tamaño de datos más alto. Las operaciones de escritura son más rápidas que las operaciones de lectura en cassandra. Se puede escalar automáticamente disparando instancias de ec2, pero tienes que modificar un poco los archivos de configuración (si no recuerdo mal). Si tienes terabytes de datos, Casandra es tu mejor opción. No es necesario fragmentar sus datos, fue diseñado distribuido desde el primer día. Puede tener cualquier número de copias para todos sus datos y, si algunos servidores están muertos, devolverá automáticamente los resultados de los vivos y distribuirá los datos del servidor muerto a otros. Es altamente tolerante a fallas. Puede incluir cualquier cantidad de instancias, es mucho más fácil escalar que otras opciones. Tiene fuertes opciones de cliente .net y java. Tienen agrupación de conexiones, equilibrio de carga, marcado de servidores muertos, ...
Otra opción es hadoop para big data pero no es tan realtime como otros, puede usar hadoop para datawarehousing. Ni cassandra ni mongo tienen transacciones, por lo que si necesitas transacciones postgresql es una mejor opción. Otra opción es Amazon RDS, pero su rendimiento es malo y el precio es alto. Si desea utilizar bases de datos o simpledb, es posible que también necesite el almacenamiento en memoria caché de datos (p. Ej .: memcached).
Para aplicaciones web, si sus datos son pequeños, recomiendo mongo, si es grande, cassandra es mejor. No necesitas una capa de almacenamiento en caché con mongo o cassandra, ya son rápidos. No recomiendo SimpleDB, también te bloquea a Amazon como dijiste.
Si está utilizando C#, java o scala puede escribir una interfaz e implementarla para mongo, mysql, cassandra o cualquier otra cosa para la capa de acceso a datos. Es más simple en los lenguajes dinámicos (por ejemplo, frotar, python, php). Puede escribir un proveedor para dos de ellos si lo desea y puede cambiar el almacenamiento en tiempo de ejecución solo con un cambio de configuración, todos son posibles. El desarrollo con mongo, cassandra y simpledb es más fácil que una base de datos, y están libres de esquemas, también depende de la biblioteca/conector de cliente que esté utilizando. El más simple es mongo. Solo hay un índice por tabla en Casandra, por lo que debes administrar otros índices tú mismo, pero con la versión 0.7 de cassandra los índices secundarios serán posibles, como sé. También puede comenzar con cualquiera de ellos y reemplazarlo en el futuro si es necesario.
"Pero para mayor durabilidad, necesita usar al menos 2 instancias del servidor mongodb como maestro/esclavo. De lo contrario, puede perder el último minuto de sus datos". MongoDB admite la durabilidad de un solo servidor desde 1.8 – dan