Necesita algunos consejos de diseño para implementar un sistema de notificaciones automáticas. Estoy usando para el backend Symfony 3, Doctrine y postgres como base de datos. El sistema de notificación tendrá dos tipos de notificaciones: 1. Notificaciones instantáneas 2. Notificaciones programadas Las notificaciones instantáneas son cuando se realiza una acción en el backend y se envía una notificación instantáneamente. Por ejemplo, una notificación cuando se elimina un usuario en la base de datos.
Las notificaciones programadas son para una notificación que aún no se ha activado, pero que lo hará en algún momento conocido en el futuro. La notificación solo se activará cuando llegue a ese tiempo establecido. Por ejemplo, un despertador.
En base a esto, he diseñado tablas simples de la siguiente manera con algunos datos simulados:
Entonces, con la información anterior, el concepto de API está en el dispositivo del usuario, como un teléfono móvil, ejecutará una API GET/notificaciones cada 2 minutos. La API devolverá las notificaciones anteriores a la fecha actual y que no hayan sido descartadas para ese usuario. Por ejemplo, si USER2 ejecuta GET/notificaciones con la fecha actual el 18 de abril de 2017, devolverá el registro 3.
Mi pregunta es este tipo de diseño aceptable si no, ¿cuál sería la práctica convencional? Además, con muchos usuarios que ejecutan la misma API GET cada 2 minutos, ¿existe la posibilidad de ralentizar el sistema? Supongo que como máximo 3000 usuarios.
Finalmente, a medida que la tabla de notificaciones crece en registros, ¿postgres se ralentizará al realizar esta API?
Quien se haya tomado el tiempo de leerlo completo, gracias, estoy muy agradecido por cualquier consejo.
Notificación de inserción.
Si sus dispositivos cliente solicitan notificaciones a través de una llamada GET API, no se denominan notificaciones Push. Con el tiempo, será pesado en el lado del servidor manejar demasiadas solicitudes innecesarias, ya que es posible que todos los usuarios no tengan tantas notificaciones.
No debe dejar que sus clientes llamen. En su lugar, debe enviar las notificaciones al cliente. Las aplicaciones de iOS
y Android
se pueden configurar para recibir notificaciones automáticas a través deviceId
y uuid
. Pregúntele a sus desarrolladores móviles por lo mismo. En estos días, incluso los navegadores HTML5 admiten notificaciones automáticas.
Para almacenamiento :
Creo que no tiene que almacenar instant push notifications
en la base de datos, a menos que tenga un requisito de nivel de aplicación para almacenar los registros.
Solo debe almacenar scheduled notifications
para que un Cron job
pueda seleccionar y enviar esas notificaciones cuando vencen.
¡Espero que esto ayude!