none
Uso de más de un motor de BD: es considerado una buena práctica? RRS feed

  • Pregunta

  • Hola a todos. Primero que todo me presento. Soy Nicolás, vivo en Colombia y soy ingeniero de sistemas.

    Actualmente estoy desarrollando una herramienta para la empresa en la que trabajo. Básicamente lo que tengo que hacer es una relación entre clientes y los productos que la empresa les suministra. La empresa tiene varias sedes en varias ciudades y dentro de ellas están nuestros clientes, a quienes se les entregan unos recursos para su uso.

    Aleatoriamente, los clientes solicitan cambio de los recursos por fallas en su funcionamiento; se reemplazan y se envían a reparación (que es por parte de un proveedor externo, quien ofrece garantías por las reparaciones que se hacen) si el caso lo amerita. Si no, se almacenan en stock para suministrarlos en otra ocasión y cliente.

    Conforme se realicen entregas, cambios y reparaciones, se va creando la hoja de vida dentro de la empresa de cada dispositivo. Esta hoja de vida es útil para nosotros para saber qué clientes tienen qué producto y sus características, así como si cuenta con garantía por parte del proveedor por defectos, cuántas veces ha sido reparada y si por cantidad de reparaciones se debe dar de baja el dispositivo.

    La solución que estoy planteando incluye SQL Server y MongoDB.

    Uso SQL Server para la relación entre la empresa, los clientes y sus empleados. Uso MongoDB para agregar los movimientos del dispositivo dentro de la empresa. En otras palabras, SQL Server para la información de la empresa y los clientes y MongoDB para la hoja de vida de los dispositivos.

    Dentro de SQL tengo varias tablas: ubicaciones (sedes de la empresa), técnicos, clientes, y usuarios (quienes usan los dispositivos). Una ubicación tiene muchos clientes y muchos técnicos y, un cliente tiene muchos empleados.

    Dentro de las características de cada movimiento de cada dispositivo, se incluye información almacenada en SQL (como información del cliente, sede e información del técnico (quien realiza los movimientos de los dispositivos), además de otra información como: consecutivo de cada dispositivo, fecha del movimiento, identificador del estado (si está en uso por el cliente, si está en reparación, si fue dado de de baja o si está en stock).

    Mi pregunta es si manejar las dos bases de datos es considerado de alguna manera una mala práctica.

    Les agradezco mucho sus opiniones. Un saludo.

    viernes, 16 de diciembre de 2016 17:00

Todas las respuestas

  • hola

    pero porque dos medio persistented diferentes? lo que planteas se podria logar simplemente usando sql server, si usas Mongo es simplemente porque quieres, no por una necesidad

    >>Mi pregunta es si manejar las dos bases de datos es considerado de alguna manera una mala práctica.

    no necesariamente es algo malo, pero deberias evaluar si es necesario

    quizas con un sistema de replicacion usando sql server alcanza, o quizas usar Sql Compact si quieres algo offline que luego se sincronice con un Sql Server central

    pero bueno si quieres replicar mongo contra un sql server central tampoco estaria mal, el tema es la forma de disponibilizar los datos, ya que una db es relacional y la otra no

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 16 de diciembre de 2016 17:27
  • Gracias por la respuesta, Leandro.

    Como mencionaba, paulatinamente se irá agregando información a cada dispositivo, pero no un número específico. Es decir, un dispositivo puede tener apenas cuatro movimientos antes de darse de baja, mientras otro puedo puede tener 300.

    Desconozco cómo se puede implementar en este caso SQL y, uso este por la facilidad para crear relaciones y las reacciones en cascada entre llaves foráneas.

    Un poco de orientación acerca del tema me sería de mucha ayuda.

    Gracias de antemano.

    viernes, 16 de diciembre de 2016 18:02
  • mhg100,

    No mencionas el criterio del porque decidiste contener la información en base de datos distintas, sin embargo -a menos que no nos hayas comentado todo- no veo la restricción de parte de SQL Server para cubrir las exigencias expuestas. Sería conveniente que nos comentes que procesos supones restrictivos en SQL Server, si continuas con la idea de acceder a ambos orígenes de datos y tienes un sustento técnico para hacerlo no es incorrecto ni una mala practica, no si no hay soluciones más óptimas.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    sábado, 17 de diciembre de 2016 15:04
  • mhg100,

    No mencionas el criterio del porque decidiste contener la información en base de datos distintas, sin embargo -a menos que no nos hayas comentado todo- no veo la restricción de parte de SQL Server para cubrir las exigencias expuestas. Sería conveniente que nos comentes que procesos supones restrictivos en SQL Server, si continuas con la idea de acceder a ambos orígenes de datos y tienes un sustento técnico para hacerlo no es incorrecto ni una mala practica, no si no hay soluciones más óptimas.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.

    Como menciono en mi anterior post, desconozco cómo implementar una cantidad no definida de registros en una columna. Pensé en usar XML y almacenar la información en un varchar de longitud, por decir algo, pero me parece que con el tiempo la legibilidad de los registros de la base de datos se iba a perder.

    Por otro lado, también pensé en usar tablas anidadas, pero se me pasó por la mente que si el proyecto crece, no iba a ser tan maneable (ejemplo, si se quiere implementar el seguimiento a más dispositivos).

    Agradezco sugerencias. Cordial saludo.

    lunes, 19 de diciembre de 2016 18:40