Si tengo datos estructurados en base de datos relacional y otros datos que pueden manejarse con una base de datos nosql, ¿es una buena idea usar ambas tecnologías manejadas por código o es mejor usar una base de datos relacional o base de datos nosql pero no ambas?

Como a menudo, esta es una opción de “mejor de su clase” (use ambos) frente a “compromiso unificado” (elija solo uno).

ÁCIDO
Si se requiere mantener la integridad transaccional entre los “datos inclinados a nosql” y los datos “inclinados a la relación”, entonces probablemente sea mejor comprometer y elegir un solo almacén de datos. Algunos productos pueden admitir transacciones distribuidas en varios db, pero siempre conllevará un poco de molestia.

Soporte marco
Considere también el soporte multi-db cuando use frameworks. Puede ser necesaria una gran adaptación para admitir 2 conexiones db abiertas. Aquí nuevamente, dependiendo de sus habilidades con el marco, eventualmente podría elegir comprometerse en una sola tienda.

¿Qué caso de uso de NoSQL?
Para abogar por el caso “mejor de su clase”, debe recordar que las razones profundas y sensatas para buscar una base de datos nosql cubren un número muy limitado de casos de uso.

De hecho, tiene poco que ver con la cantidad de datos, sino más bien con el método de procesamiento (por ejemplo, utilizando motores hadoop / spark para ejecutar cálculos paralelos; realizando casos especiales de búsqueda (generalmente, utilizando técnicas de indexación probabilística); …).

Por el contrario, una base de datos relacional es bastante versátil, pero hay ALGUNOS casos de uso para los que es poco adecuada. Ejemplos típicos son: conjuntos de datos jerárquicos o de tipo gráfico; relaciones como “el componente X está hecho del componente Y” (piense en el modelado de un vehículo con todas sus partes: es un problema difícil en la relación).

Hoy en día, NoSQL también incluye muchas cosas, incluso un poco de soporte SQL, pero a menudo es limitado.

Conclusión
Como en la respuesta anterior, estoy de acuerdo en que debe usar ambos para ALGUNOS casos de uso solamente. De lo contrario, y a menos que sea necesario, elija el mejor compromiso y manténgalo.

F.

¡El suyo es un caso claro de persistencia políglota! Use ambos, pero aplique estos pasos.

  1. Evalúe el tipo de requisitos que le gustaría hacer con sus datos.
  2. Descubra las posibles herramientas (db relacional y almacenes de datos no relacionales) que hacen que sus consultas sean fáciles de mantener.
  3. Vea cuánta desnacionalización podría “soportar” de sus datos estructurados.
  4. Seleccione un almacén de datos relacionales y luego seleccione una de las herramientas nosql como ayudante para realizar su manipulación de datos. por ejemplo, Redis se usa para mantener estadísticas en tiempo real, ¡pero los datos finales pueden persistir periódicamente en una base de datos relacional!
  5. Es una buena idea usar ambas tecnologías para casos de uso correctos manejados por código.

http://martinfowler.com/bliki/Po

http://www.slideshare.net/jwoods

Ahora hay una base de datos que puede hacer ambas cosas. Informix de IBM, un RDBMS admite datos JSON / BSON como un tipo de datos nativo de clase I y admite toda la API MongoDB (incluidas las operaciones DDL) con extensiones que exponen las tablas y operaciones relacionales a los clientes MongoDB. Literalmente, puede apuntar cualquier aplicación a una instancia de Informix y funcionará sin modificaciones. Si modifica su código para aprovechar las extensiones de Informix, obtendrá transacciones ACID de varios pasos, uniones entre documentos y documentos o tablas relacionales, acceso completo a declaraciones y resultados SQL (presentados como documentos JSON) y más.

Informix también expone los campos de datos JSON / BSON a clientes relacionales como si fueran columnas relacionales y la capacidad de aplicar restricciones relacionales a los campos JSON.

Todo esto y no renuncias a nada. Informix escala a máquinas masivas, a sistemas pequeños como Raspbery PI, y escala a muchos fragmentos distribuidos. Informix proporciona tecnología de replicación de datos de clase mundial, compresión de datos, cifrado en reposo y sobre la marcha. La distribución y consolidación regional de datos también son características maduras.

Entonces, lo mejor de ambos mundos en una base de datos.