2 puntos por GN⁺ 2024-11-04 | 1 comentarios | Compartir por WhatsApp
  • Caso de uso 1: cola de trabajos

    • Redis se usa con frecuencia para coordinar trabajos en segundo plano en servicios web.
    • Desde PostgreSQL 9.5, se puede implementar una cola de trabajos usando la opción SKIP LOCKED.
    • Esta opción permite seleccionar trabajos sin esperar bloqueos, garantizando que varios workers no procesen el mismo trabajo al mismo tiempo.
  • Caso de uso 2: bloqueos de aplicación

    • Redis se usa con frecuencia para bloqueos distribuidos.
    • Se puede implementar la misma funcionalidad usando bloqueos consultivos de PostgreSQL.
    • Los bloqueos consultivos permiten aprovechar el motor interno de bloqueos de PostgreSQL para fines definidos por la aplicación.
  • Caso de uso 3: Pub/Sub

    • Redis se usa para enviar eventos a clientes activos.
    • Desde PostgreSQL 9, se ofrecen funciones de Pub/Sub mediante las sentencias LISTEN y NOTIFY.
    • Los clientes de PostgreSQL pueden suscribirse a un canal de mensajes específico, y cuando otro cliente envía un mensaje a ese canal, todos los suscriptores reciben una notificación.
  • Aprovechar PostgreSQL al máximo

    • Redis se usa para fines distintos a PostgreSQL y destaca en el caché de datos con TTL y en el almacenamiento temporal de datos.
    • PostgreSQL ofrece más que una base de datos SQL, y existe la posibilidad de reemplazar con PostgreSQL tareas para las que normalmente se usa Redis.
    • Puede ser una opción valiosa para reducir la complejidad de usar varios servicios de datos y bajar los costos operativos.

1 comentarios

 
GN⁺ 2024-11-04
Opiniones en Hacker News
  • Redis ofrece tiempos de respuesta muy rápidos cuando se ejecuta en la misma máquina que la aplicación. Eso permite hacer cosas distintas a las de Postgres

    • Un almacén clave-valor en memoria es adecuado para tareas que requieren las características de rendimiento de la RAM
    • Es evidente que no se puede obtener el rendimiento de la RAM a través de una conexión de red
  • PostgreSQL ofrece más que una simple base de datos SQL

    • Si usas la base de datos solo detrás de un ORM, podrías perderte varias de sus capacidades
    • En vez de agregar un servicio como Redis, puede ser mejor aprovechar la base de datos que ya tienes configurada
  • PGQueuer es una alternativa mínima que usa PostgreSQL para ofrecer colas de trabajos, bloqueos y notificaciones en tiempo real

    • Reduce la necesidad de Redis
  • Postgres es una base de datos potente

    • Redis tiene una barrera de entrada baja, ofrece alto rendimiento y reduce la carga sobre la base de datos principal
    • El caché de respuestas de API también puede hacerse con Postgres, pero usar Redis es más sencillo
    • Usar un sistema aparte tiene desventajas, pero en el caso de Redis no son tan grandes
  • La mayoría de los proyectos solo necesitan una cola de trabajos simple, y es importante simplificar un stack complejo

    • Existen varias alternativas con distintos intereses comerciales detrás
  • Postgres tiene algunas limitaciones

    • Puede resolver funciones como KVstore, colas, pub/sub y bloqueos, pero no de forma simple
  • Conviene empezar con PostgreSQL y cambiar a Redis cuando haga falta

    • Es importante minimizar la cantidad de piezas móviles
  • Una gran desventaja del pub/sub de Postgres es que el tamaño de los mensajes está limitado a 8000 bytes

    • Existe la opción de guardar los datos en la base de datos y enviar el ID, pero eso requiere trabajo adicional
  • El caché, una de las aplicaciones más importantes de Redis, es más complejo en Postgres

    • Las actualizaciones en Postgres son más costosas que las inserciones, y las garantías de durabilidad no son importantes para el caché
  • Al usar estas funciones en Postgres, las actualizaciones y la replicación se vuelven más difíciles

    • Es posible, pero prefiero centrarme en las funciones de Postgres que se usan más ampliamente