sql >> Base de Datos >  >> NoSQL >> MongoDB

¿MongoDB en el servidor EC2 o AWS SimpleDB?

SimpleDB tiene algunas limitaciones de escalabilidad. Solo puede escalar fragmentando y tiene una latencia más alta que mongodb o cassandra, tiene un límite de rendimiento y tiene un precio más alto que otras opciones. La escalabilidad es manual (tienes que 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 está implementado en la versión 1.6.

Cassandra tiene opciones de consulta débiles pero es tan duradera como postgresql. Es tan rápido como mongo y más rápido en datos de mayor tamaño. Las operaciones de escritura son más rápidas que las operaciones de lectura en cassandra. Puede escalar automáticamente activando instancias ec2, pero debe modificar un poco los archivos de configuración (si no recuerdo mal). Si tiene terabytes de datos, Cassandra es su mejor opción. No es necesario fragmentar sus datos, se diseñó para distribuirse desde el primer día. Puede tener cualquier cantidad de copias para todos sus datos y, si algunos servidores están inactivos, devolverá automáticamente los resultados de los activos y distribuirá los datos del servidor inactivo a otros. Es altamente tolerante a fallas. Puede incluir cualquier cantidad de instancias, es mucho más fácil de escalar que otras opciones. Tiene sólidas opciones de cliente .net y java. Disponen de agrupación de conexiones, balanceo de carga, marcado de servidores muertos,...

Otra opción es hadoop para big data, pero no es tan en tiempo real como otras, puede usar hadoop para el almacenamiento de datos. Ni cassandra ni mongo tienen transacciones, por lo que si necesita 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 caché de datos (p. ej., memcached).

Para aplicaciones web, si sus datos son pequeños, recomiendo mongo, si son grandes, cassandra es mejor. No necesita una capa de almacenamiento en caché con mongo o cassandra, ya son rápidos. No recomiendo simpledb, también te bloquea en Amazon como dijiste.

Si usa 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 lenguajes dinámicos (por ejemplo, rub, python, php). Puede escribir un proveedor para dos de ellos si lo desea y puede cambiar el almacenamiento tal vez en tiempo de ejecución con solo 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 del cliente que esté utilizando. El más simple es mongo. Solo hay un índice por tabla en cassandra, por lo que debe administrar otros índices usted 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.