Pregunta

Se ha hablado mucho sobre las bases de datos no contradvolucionarias de NOSQL como cassandra , couchdb , hipertable , mongodb , Proyecto Voldemort , Bigtable , y muchos más. En lo que a mí respecta, los profesionales más fuertes son la escalabilidad, el rendimiento y la simplicidad.

Estoy considerando seriamente a sugerirle el uso de un DB no relacionado para nuestro próximo proyecto. Sin embargo, algunos equipos comprenden algunos fanáticos de RDBMS, por lo que convincente un interruptor duro podría ser imposible en algunos casos solo por razones emocionales. Además, cuando se trata de modelos de datos complejos, personalmente todavía creo en el poder de RDBMS con sus mecanismos de cumplimiento de consistencia de bajo nivel.

AHORA Aquí viene mi pregunta: me preguntaba, si alguien podría considerar seriamente el uso de DB, RDBMS y DB no relacionado en un nuevo proyecto: el complejo, pero no el modelo de datos crítico de rendimiento aún Se implementará utilizando un modelo relacional y DB, mientras que todos los modelos críticos de rendimiento, aún, se implementarán modelos simples con un DB no relacionado. Además, un cambio de paradigma tan suave sería mucho más fácil de vender a algunos miembros de equipo altamente emocionalizados que uno duro.

¿Alguien recomendaría un enfoque de este tipo? ¿O preferiría recomendar un enfoque en blanco o negro, es decir, en relación con el enfoque relacional o no relacionado? Todos los comentarios ¡Es muy bienvenido!


P.s.: ¿Alguna idea de que una mezcla de este tipo funcione bien con la primavera y la hibernación / JPA?

¿Fue útil?

Solución

Rob Cony escribió recientemente sobre su Experiencia construyendo su popular aplicación web tekpub con MongoDB y MySQL, destacando las fortalezas de ambos:

Las cosas de alta lectura (Información de la cuenta, producciones y información del episodio) son perfectos para un tipo de "ahora mismo" como MongoDB. El "lo que sucedió ayer" es perfecto para un sistema relacional.

En un alto nivel, Rob rompe sus datos de solicitud en dos ámbitos: datos de tiempo de ejecución y datos históricos. El estado actual del carrito de compras de un usuario, por ejemplo, es ideal para mantenerse en MongoDB. Es un blob de objeto que está constantemente mutante. Para mantener un registro histórico de lo que entró y salió del carrito de compras; cuando paso; El estado de la caja es ideal para datos relacionales, tabulares en MySQL.

se resume con esto:

funciona perfectamente. Podría no es más feliz con nuestra configuración. Es increíblemente bajo mantenimiento, podemos respaldarlo como cualquier otra solución, y tenemos los datos que necesitamos cuando lo necesitamos.

Actualización Mayo de 2016 (6 años después)

Esto solo se ha vuelto más cierto en los últimos 6 años. Ahora es común ver las bases de datos de NOSQL que alimentan las tiendas transaccionales y las bases de datos relacionales tradicionales que alimentan las bases de datos analíticas.

Otros consejos

Yo uso ambos.RDBMS es bueno para un análisis complejo, informes y datos a los que se accede de diferentes maneras por múltiples usuarios.NOSQL es genial cuando estoy buscando un Datos desde una sola perspectiva de usuarios.Una pregunta que me pregunto es: "¿Quién está accediendo a estos datos?".Si la respuesta es 1 usuario, uso NOSQL para guardarlo.

Por supuesto, hay otras ocasiones en las que es apropiado, pero ese es solo un ejemplo.

Como mencionó, NOSQL es un almacenamiento más sencillo, y podría hacer que tenga que el código complejo correcto para mantener los datos ... por ejemplo, almacenar una lista de conexiones.

Las bases de datos no relacionadas con el valor de la clave se utilizan mejor para el almacenamiento de blob y el almacenamiento en caché.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top