Foros del Web » Programación para mayores de 30 ;) » Programación General »

Programa que reaccione a un cambio en la BBDD

Estas en el tema de Programa que reaccione a un cambio en la BBDD en el foro de Programación General en Foros del Web. Hola! Estoy desarrollando un sistema que envía a un móvil un aviso cuando se produzca un cambio en un registro de una tabla de la ...
  #1 (permalink)  
Antiguo 16/03/2016, 11:11
Avatar de laremi  
Fecha de Ingreso: febrero-2016
Mensajes: 7
Antigüedad: 8 años, 2 meses
Puntos: 0
Programa que reaccione a un cambio en la BBDD

Hola!

Estoy desarrollando un sistema que envía a un móvil un aviso cuando se produzca un cambio en un registro de una tabla de la BBDD.
El envío de los mensajes estoy casi convencido de hacerlo bajo GCM.
Lo tengo todo bastante claro excepto un punto: tengo que hacer un programa dentro del servidor que supervise los cambios de la BBDD pero ¿con que lenguaje lo hago?.
Para mi lo sencillo es hacer un programa en C que revise constantemente la BBDD y cuando ocurra un cambio lance un mensaje. Pero ¿se puede hacer en php?¿O en cualquier otro lenguaje más adaptado a este trabajo?.
¿Hay alguna posibilidad desde el propio mysql de realizar esto?. Es decir, el motor de mysql está permanentemente alerta, de manera que cuando se conecta un cliente y hace un cambo, mysql actualiza los datos. Pues en esta misma línea, cuando dicho motor reciba los datos y actualice una tabla envíe un mensaje. ¿Esto se puede hacer?.

Gracias de antemano.
  #2 (permalink)  
Antiguo 16/03/2016, 14:45
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Programa que reaccione a un cambio en la BBDD

Lo ideal es hacer un sistema que haga pooling contra la base de datos. El lenguaje depende del sistema operativo y de las necesidades. Piensa por ejemplo que un "php" no vas a poder lanzarlo cada "x" tiempo si no es con un cron, en cambio si trabajas con otros lenguajes puedes crear daemons o windows services que se vayan ejecutando de fondo.
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 18/03/2016, 02:02
Avatar de laremi  
Fecha de Ingreso: febrero-2016
Mensajes: 7
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Programa que reaccione a un cambio en la BBDD

Cita:
Iniciado por Malenko Ver Mensaje
Lo ideal es hacer un sistema que haga pooling contra la base de datos. El lenguaje depende del sistema operativo y de las necesidades. Piensa por ejemplo que un "php" no vas a poder lanzarlo cada "x" tiempo si no es con un cron, en cambio si trabajas con otros lenguajes puedes crear daemons o windows services que se vayan ejecutando de fondo.
Lo que pasa es que lo quiero hacer sin polling contra la BD.
Que digo yo que si la propia base de datos ya está haciendo polling sobre si misma, pues igual puede haber un mecanismo (trigger) que me permita hacer el proceso al revés; si la BD detecta un cambio yo ejecuto un programa.
  #4 (permalink)  
Antiguo 18/03/2016, 03:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Programa que reaccione a un cambio en la BBDD

Las bases de datos no "dialogan" con sistemas externos. Son sistemas servidor, no cliente.
Puedes diseñar programaticamente servicios que consulten a la base por cambios, pero el servidor de la case no reportará al servicio en si.
Algunos DBMS tienen herramientas administrativas para tareas como la que describes, pero no son parte del núcleo del mismo, sino agregados.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 18/03/2016, 10:50
Avatar de laremi  
Fecha de Ingreso: febrero-2016
Mensajes: 7
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Programa que reaccione a un cambio en la BBDD

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Las bases de datos no "dialogan" con sistemas externos. Son sistemas servidor, no cliente.
Puedes diseñar programaticamente servicios que consulten a la base por cambios, pero el servidor de la case no reportará al servicio en si.
Algunos DBMS tienen herramientas administrativas para tareas como la que describes, pero no son parte del núcleo del mismo, sino agregados.
Conozco los triggers y los procedimientos almacenados que se dan en casi todo que lo tenga SQL. Y dado que eso existe, me preguntaba si habría algo que permitiera aprovecharse de ellos para lanzar un mensaje al exterior.
Pero mucho me temo que tienes razón y que aún les falta por evolucionar.
Las BBDD más avanzadas si que tienen posibilidad de ejecutar cosas externas. Y aún y todo siguen siendo algo "apegado".
¿Se están quedando las BBDD's varadas en la playa de "somos servidores"?. ¿Lejos del ancho mar de las comunicaciones móviles que hacen necesario el envío de mensajes a través de nubes (GCM) que eviten que dichos sistemas se queden (por ejemplo) sin batería con el uso de polling?. Me pregunto.
  #6 (permalink)  
Antiguo 18/03/2016, 11:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Programa que reaccione a un cambio en la BBDD

Cita:
Iniciado por laremi Ver Mensaje
Conozco los triggers y los procedimientos almacenados que se dan en casi todo que lo tenga SQL. Y dado que eso existe, me preguntaba si habría algo que permitiera aprovecharse de ellos para lanzar un mensaje al exterior.
Pero mucho me temo que tienes razón y que aún les falta por evolucionar.
Las BBDD más avanzadas si que tienen posibilidad de ejecutar cosas externas. Y aún y todo siguen siendo algo "apegado".
¿Se están quedando las BBDD's varadas en la playa de "somos servidores"?. ¿Lejos del ancho mar de las comunicaciones móviles que hacen necesario el envío de mensajes a través de nubes (GCM) que eviten que dichos sistemas se queden (por ejemplo) sin batería con el uso de polling?. Me pregunto.
No exactamente. Estás mirando a las BBDD como si fuesen aplicativos comunes, que pueden ser compartidos de forma ,indiscriminada, y no los estás considerando como lo que son: Sistemas que conservan y protegen información crítica.
La idea de su aislamiento son es por capricho, sino por seguridad. Si yo te doy una puerta de acceso para que cualquier cambio sea visible desde el exterior, ¿como me aseguro que un cliente X no obtenga información contable interna de la empresa?
O es más, ¿como segurizo internamente que un área administrativa no obtenga información de cambios de estado de otra área de alto riesgo, como control de materiales tóxicos?

Precisamente por eso el monitoreo de acciones en la base no está integrado al motor de consultas, ni en SQL Server, ni en Oracle, ni tampoco en MySQL, sino en las herramientas de administración del servidor.
Incluso MySQL también las tiene, pero en su versión empresarial, y no en la Community.

Cita:
¿Lejos del ancho mar de las comunicaciones móviles que hacen necesario el envío de mensajes a través de nubes (GCM) que eviten que dichos sistemas se queden (por ejemplo) sin batería con el uso de polling?
Bueno, en realidad la transparencia de los sistemas de comunicación móvil es aparente. TE lo digo con conocimiento de causa.
Hay una enorme sección de información que no puede ser monitoreada desde ninguna otra parte, porque debe estar protegida, tanto por razones técnicas como comerciales, y sobre todo LEGALES.
¿Y desde adentro?
Desde adentro se puede ver cualquier cosa. Pero no todos pueden. Comercial no ve ni la sombra de las IF contables, solo ven resultados "cocinados", pero no pueden ver nada on-line. Y no es por que sí.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 18/03/2016 a las 11:11
  #7 (permalink)  
Antiguo 18/03/2016, 13:24
Avatar de CompuDoc  
Fecha de Ingreso: febrero-2011
Mensajes: 41
Antigüedad: 13 años, 1 mes
Puntos: 3
Respuesta: Programa que reaccione a un cambio en la BBDD

Lo que tu necesitas es algo como el Notification services de SQL Server 2005.

https://en.wikipedia.org/wiki/SQL_Server_Notification_Services


Creo que ya no se incluyo en SQL server 2008 ni posteriores.
Fue remplazado en parte por Reporting Services.

Pero esto para windows, en el mundo de unix, pues un script con cron ejecutado cada x minutos.

Saludos.

Última edición por CompuDoc; 18/03/2016 a las 13:24 Razón: Los urls no me funcionan bien.
  #8 (permalink)  
Antiguo 18/03/2016, 14:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Programa que reaccione a un cambio en la BBDD

Para MySQL esto puede ser una inspiración a fin de que logres lo que quieres... aunque vas a tener que trabajar un poquito:

Creating a SSRS report using a MySQL data source
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: bbdd, mysql, programa, sistema
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:08.