Desarrollo9 de enero de 2026

Tiempo real + Postgres = ?

Las actualizaciones en tiempo real forman parte de casi cualquier aplicación web y móvil moderna, desde las apps de banca hasta los feeds de noticias. Hay tantas formas de gestionarlas que siempre habrá debate sobre cuál es la mejor.

Un poco de historia

Durante los últimos 10 años, el enfoque más habitual ha sido usar un cliente y un servidor de websockets, como socket.io, y enviar eventos a los clientes a través de él lanzándolos desde el backend.

También hay soluciones más recientes basadas en los datos, como RethinkDB. Me gusta mucho este enfoque porque, desde mi punto de vista, son los cambios en los datos los que deberían disparar los eventos: los clientes se suscriben a una consulta concreta y sus datos se actualizan en consecuencia. Eso es lo que ofrece RethinkDB: buenas librerías de cliente, su propia sintaxis de consultas y escalabilidad. Por desgracia, el proyecto RethinkDB se cerró y ahora solo lo mantiene la comunidad.

GraphQL es otra novedad prometedora y más reciente, pero sus primeras versiones no tenían suscripciones, así que está por ver hasta dónde llegará. GraphQL sigue un enfoque parecido al de RethinkDB: es una solución eficaz, independiente y escalable con la que puedes pedir los datos directamente desde el cliente, lo que viene muy bien para sustituir las llamadas a la API del backend.

Hoy GraphQL ya permite suscripciones en tiempo real, pero sigue existiendo el problema de que funciona como una capa separada de la base de datos. En muchos casos no pasa nada, pero no está claro qué pueden hacer quienes usan PostgreSQL. No todas las empresas tienen recursos para migrar a GraphQL, sobre todo si tienen un producto enorme con mucha lógica a nivel de base de datos.

Este problema surgió en un proyecto en el que hacía falta una forma sencilla de implementar actualizaciones en tiempo real sin renunciar a PostgreSQL. ¡Y aquí es donde entra Hasura! Encontrarlo en Product Hunt fue una alegría, porque era la solución que llevaba unos tres años buscando para este problema.

¿Qué es Hasura?

Hasura es una capa proxy entre tu base de datos PostgreSQL y un servidor GraphQL que te permite configurar muy rápido actualizaciones en tiempo real desde PostgreSQL, y además es open source. Obtienes todas las ventajas de GraphQL sin renunciar al acceso a tu base de datos original: librerías de cliente para web y móvil, sintaxis de consultas y suscripciones.

Funcionalidades clave de Hasura

Actualizaciones en tiempo real desde tu base de datos PostgreSQL Cuando vi lo fácil que era configurarlo, me quedé impresionado.

GATSBY_EMPTY_ALT

Control de acceso dinámico y autenticación

Si usas Auth0 como proveedor de autenticación, Hasura te permite restringir el acceso a los datos mediante JWT. Además, Hasura tiene una UX muy buena y sencilla para configurar las reglas de acceso desde la interfaz. Echa un vistazo a este vídeo para verlo en acción.

Por ejemplo, puedes tener varias tablas que usas desde la parte cliente. Puedes configurarlo para que un usuario solo acceda a los datos si es su propietario, y definir si tiene permisos de lectura, escritura o borrado.

GATSBY_EMPTY_ALT

Triggers sobre eventos de la base de datos

Puedes suscribirte a cada acción de creación, actualización y borrado en tu base de datos y llamar a otro servicio pasándole esos datos. Un posible caso de uso es emplearlo como canal de comunicación entre microservicios o para llamar a funciones serverless.

El lanzamiento de esta funcionalidad fue una gran noticia: antes, la alternativa era usar las suscripciones nativas de PostgreSQL, pero mantenerlo requería mucho código y no había un punto central con una solución a prueba de balas.

Lo realmente interesante es que es una solución muy fiable. Pase lo que pase con Hasura o con la conexión de red, el evento se entregará en cuanto se restablezca. Lo mismo ocurre si, por algún problema imprevisto, los cambios llegan a PostgreSQL mediante llamadas a la API del backend pero otra parte de tu aplicación está caída.

Fallback de WS a HTTP

No es algo exclusivo de Hasura, pero cuando usas suscripciones GraphQL y tu cliente no admite WebSockets, se usa automáticamente HTTP como alternativa sin que tengas que hacer nada más.

Por supuesto, hay otras funcionalidades que te pueden resultar útiles, como las mutaciones de datos y los resolvers personalizados.

Experiencia práctica

Hasura es un producto realmente bueno que puede ahorrar muchísimo tiempo. Todavía no tiene una versión estable y sigue en desarrollo, pero ya se puede usar en producción, porque las funcionalidades principales funcionan sin problemas. Casi cada semana sale una actualización nueva y los desarrolladores se acercan a la v1.0.0.

En el proyecto mencionado, la migración a Hasura llevó solo dos semanas: una de desarrollo con un único desarrollador y otra para corrección de bugs y QA. El resultado fue una solución buena y sostenible que sirve tanto para la web como para las apps móviles. Los siguientes pasos pasaban por usar más triggers de eventos y migrar a serverless.

Puedes probar Hasura gratis ahora mismo con el despliegue en un clic a Heroku siguiendo el enlace de su web. Si quieres saber más, otro buen tema para un próximo artículo sería cómo configurarlo sobre un PostgreSQL existente y usarlo con una aplicación React/Redux.

Cuéntanos tu caso

Escríbenos