none
Trigger o Proceso manual RRS feed

  • Pregunta

  • hola que tal buen día. Estamos desarrollando una aplicación web y tengo una duda antes de comenzar un desarrollo y acudo al foro para que de favor me den recomendaciones al respecto y de antemano muchas gracias.

    La aplicación Web la tenemos en la web y tenemos una aplicación que compramos que es en escritorio. La aplicación de escritorio debe enviar e insertar los registros de clientes que se registren en la aplicación de escritorio a la aplicación web, entonces estaba pensando que lo envíe a guardar cada vez que se inserte un nuevo cliente en la aplicación de escritorio y mi otra opción es crear un procesos que a través de un botón se verifiquen la tabla de clientes y aquellos que no estén que se den de alta, también los que hayan cambiado que se cambien y también los que se hayan eliminado. Los clientes no serán muchos pero cuando lo implemente en productos, si se estarán modificando y dando de alta muy seguido en el transcurso del día. Ambas bases de datos están en SQL Server y ya tengo comunicación con mi servidor remoto desde el servidor loca.

    Gracias por la ayuda.

    Saludos

    martes, 7 de julio de 2020 21:48

Respuestas

Todas las respuestas

  • Hola Jorge_Ruiz:

    Personalmente me decanto por la automatización, que según el encabezado de tú pregunta, ya has decidido que sea un trigger en la base de datos de escritorio, el que desencadene la opción de inserción en la base de datos web. A priori esto puede ser, pero hay que tener en consideración dos cosas.

    La primera es que si una inserción ocurre en la base de datos de escritorio, y esta falla en la base de datos web, supongo que no debería de interferir en la inserción de escritorio, por tanto hay que capturar la excepción y realizar el commit en la de escritorio.

    Luego para solventar estos problemas, habrá que hacer también algo manual, o más bien periódico  (por ejemplo 1 vez al día), que escanee la tabla completa de escritorio e inserte, actualice o borre en la de web, según corresponda.

    La segunda es la unidad de tiempo que demorará para la primera base de datos, conectarse a la segunda, lo cual penalizará a los usuarios a la hora de hacer inserciones.

    Como ventaja de la opción automatización, es que realmente, solo estás tratando los registros nuevos insertados, y no estás leyendo la tabla completa, por tanto cuando el servidor esté agobiado, su proceso de inserción es pequeño.

    Con la solución "manual", o más bien diría yo que debiera de ser periódica (por ejemplo cada 10 minutos), porque crear botones para que el usuario le de no suele funcionar muy bien, requieren de leer el al menos clustered index de la tabla para saber si insertar, o borrar, y lo mismo del de la tabla de destino. Lo cual, dependiendo de la periodicidad, en determinados momentos  de carga de trabajo, puede ser muy duro. Además para saber si un registro ha cambiado, tendrás que o tener una columna timestamp en la tabla de origen y destino, para no tener que leer la tabla completa.

    O la solución mixta, botón a petición de usuario, y periódica una vez al día.

    martes, 7 de julio de 2020 22:26
  • Muchas gracias por tu sugerencia Javi, así lo haremos. Saludos cordiales
    miércoles, 8 de julio de 2020 17:00