inet_aton generar descargar mysql events triggers notify

generar - MySQL escuchar notificar equivalente



mysql download (4)

Bien, lo que encontré es que puedes hacer funciones UDF en mysql que pueden hacer cualquier cosa pero necesitan estar escritas en C / C ++. A continuación, se pueden llamar desde los activadores de las actualizaciones en la base de datos y notificar a su aplicación cuando ocurrió la actualización. Vi que hay algunas preocupaciones de seguridad. No lo usé yo mismo, pero por lo que puedo ver, parece algo que podría lograr lo que usted quiere hacer y más.

http://dev.mysql.com/doc/refman/5.6/en/adding-udf.html

¿Hay un equivalente de la notify y listen de PostgresQL en MySQL? Básicamente, necesito escuchar los disparadores en mi servidor de aplicaciones Java.


El proyecto github mysql-notification proporciona una función MySQL definida por el usuario MySQLNotification() como un complemento a MySQL que enviará eventos de notificación a través de una interfaz de socket. Este proyecto incluye un servidor de prueba NodeJS de muestra que recibe los eventos de notificación que podrían adaptarse para Java o cualquier otro servicio de socket.

Ejemplo de uso:

$ DELIMITER @@ $ CREATE TRIGGER <triggerName> AFTER INSERT ON <table> FOR EACH ROW BEGIN SELECT MySQLNotification(NEW.id, 2) INTO @x; END@@

El proyecto incluye el código fuente completo y las instrucciones de instalación para OSX y Linux. La licencia es GNU v3.


Necesitaba hacer esto, así que diseñé mi aplicación para enviar los avisos de actualización.

Por ejemplo, --Scenario-- El usuario A está mirando el registro 1 El usuario B guarda una actualización en el registro 1 mientras el usuario A lo tiene abierto.

Proceso:

Escribí mi propio servidor de socket como un servicio de Windows. Diseñé un sistema que me gusta, que es básicamente,

EntityType EntityID NoticeType

Donde el EntityType es el tipo de Poco en mi capa de datos que necesita enviar avisos, EntityID es el valor de la clave principal de la fila que cambió en sql (los valores del poco), y NoticeType es 1 Actualizado, 2 Insertado y 3 Eliminado.

El servidor de socket acepta conexiones desde el código de la aplicación del lado del servidor en una conexión segura "lo que significa que el código del lado del cliente no puede realizar solicitudes diseñadas para ser enviadas por el código de la aplicación del lado del servidor"

El servidor de socket acepta un mensaje como

900 1 1023 1

Lo que significaría que el servidor debe notificar a las conexiones de clientes en cuestión que la "Persona" del tipo de entidad 1 con ID 1023 se actualizó.

El servidor sabe lo que los usuarios necesitan que se les notifique porque cuando el Usuario mira un registro, se registra en el servidor de socket con un interés en el registro y la ID del registro que se realiza mediante el código de socket web en el Javascript del lado del cliente.

El registro 1 es un POCO en el código de mi aplicación que tiene un campo IsNew e IsDirty. "Usando EntityFrameWork6 y MySql" Si el guardado del Usuario B causó un cambio real (y no solo guardando los datos existentes), IsDirty se cumplirá en la devolución del POCO del UsuarioB.

El registro del código de la aplicación está sucio, luego se notifica al servidor de socket con un socket del lado del servidor "que se permitirá" que dice que la Entidad 1 con el ID 1023 se actualizó.

El servidor de socket lo ve, y lo pone en la cola.

Al ser .Net, tengo una clase para usuarios preocupados que usa los mismos pocos datos de la capa de datos que se ejecuta en el servicio de ventana de Socket Server. Uso linq para seleccionar usuarios que trabajan con una entidad que coincida con el tipo de entidad y el ID de clave principal de la entidad en la cola.

Luego pasa por esos usuarios y les envía un socket como 901 1 1023 1 para informarles que la entidad se ha actualizado.

El javascript en el lado del cliente lo recibe, lo que hace que la página de los usuarios B realice una devolución de datos ajax en el Registro 1, pero lo que sucede con los UserA es diferente.

Si el usuario A estaba en el proceso de hacer un cambio, obtendría una ventana emergente para mostrarle qué cambió, y cuál será su nuevo valor si hacen clic en guardar y les pregunta qué cambio desean mantener. Si el Usuario A no tiene un cambio, realiza una devolución de datos ajax con una barra de notificación en la parte superior que dice "Cambio de Registro: Renovado automáticamente" que expira después de unos segundos.

Los Contras a esto, 1. Es muy complejo 2. No detectará las operaciones de inserción / actualización / eliminación desde fuera de la aplicación.

En mi caso, 2 no sucederá y si 2 sucede, es por mí o por otro desarrollador que sabe cómo crear manualmente las solicitudes de notificación de notificación "creando una página de administración para eso".


No, todavía no hay funciones integradas como estas. Debe "hacer ping" (cada 1 a 5 segundos) de la base de datos con la selección con un marcador prefabricado como "leer" 0/1. Después

SELECT * FROM mytable WHERE read = 0

actualízalo con read = 1