9 puntos por GN⁺ 2024-11-04 | 1 comentarios | Compartir por WhatsApp
  • Ofrece la forma más sencilla de mover y transformar datos entre bases de datos PostgreSQL
  • Streaming en tiempo real: transmite cambios de datos casi en tiempo real usando la replicación lógica de PostgreSQL
  • Copia masiva: realiza rápidamente la sincronización inicial de datos con copia masiva en paralelo
  • Transformaciones potentes: aplica transformaciones basadas en expresiones regulares, enmascara datos sensibles y filtra según los valores de las columnas
  • Enrutamiento flexible: enruta datos entre tablas sin fricciones, incluso hacia tablas con nombres distintos o hacia la misma tabla mediante mapeo personalizado de columnas
  • Ejemplos de reglas de transformación
    • Enmascarado de direcciones de correo electrónico: convierte la columna de correo electrónico con caracteres de enmascaramiento.
    • Formato de números telefónicos: transforma el formato de números telefónicos usando expresiones regulares.
  • Enrutamiento de tablas y mapeo de columnas
    • Enrutamiento flexible de tablas: enruta la tabla de usuarios a la tabla de clientes, mapeando ID y nombre de usuario a ID de cliente y nombre de cliente.
    • Enrutamiento a múltiples tablas: enruta la tabla de pedidos a la tabla de transacciones, mapeando ID y monto total a ID de transacción y monto.
  • Casos de uso comunes
    • Replicación de datos en tiempo real entre bases de datos PostgreSQL
    • Construcción de pipelines ETL con transformación de datos
    • Redireccionamiento, enmascarado y filtrado de datos
    • Ejecución de migraciones de bases de datos sin tiempo de inactividad
    • Streaming de eventos desde PostgreSQL
  • Cómo funciona
    • pg_flo aprovecha el sistema de replicación lógica de PostgreSQL para capturar y transmitir cambios de datos.
    • Usa NATS como broker de mensajes para desacoplar la lectura desde el WAL de los procesos replicadores y workers, lo que aporta flexibilidad y escalabilidad.
    • Las transformaciones y el filtrado se aplican antes de que los datos lleguen al destino.

1 comentarios

 
GN⁺ 2024-11-04
Comentarios de Hacker News
  • El proyecto pg_flo parece muy interesante, especialmente el archivado hacia S3 y la versión económica de la herramienta

    • Herramientas como Debezium permiten trabajar con datos pequeños (GBs) en lugar de datos a gran escala (TBs), lo que facilita las pruebas locales
    • Usar Kafka y Debezium es un esfuerzo de corto plazo, y se está evaluando la complejidad que implica
    • Otra solución que el equipo está evaluando es peerdb
  • Se está trabajando en un proyecto que usa replicación lógica de PostgreSQL para depurar datos de la base de datos principal y archivarlos en S3

    • Algunas tablas deben seguir disponibles en una instancia secundaria de Postgres para operaciones de lectura, y para eso se necesita replicación
    • Hay dos tipos de operaciones de borrado en la base de datos principal que generan problemas
      • La primera eliminación es para depurar datos, y no se quiere que se refleje en la base de datos replicada
      • La segunda eliminación es para rollback, y como cambia el estado de los datos, sí debería replicarse
    • Se pregunta si existe alguna manera de distinguir entre estos dos tipos de borrado para replicar solo los borrados de rollback
  • Se está investigando una solución de CDC para Postgres, y se pregunta si pg_flo podría ayudar

    • Quisiera saber si pueden explicar los modos de falla
    • Por ejemplo, qué pasa si el servidor de NATS (o un nodo worker/replicador) se cae
    • También quisiera saber qué tan difícil es mover datos de Postgres hacia ElasticSearch/ClickHouse
  • Ojalá pueda convertirse en una alternativa a Debezium

    • Debezium primero tiene que copiar todo el estado inicial de CDC a Kafka, y hay que configurar el tiempo de retención de Kafka como infinito, lo cual no está permitido en muchos sistemas de servicios de Kafka
  • pglogical puede ejecutarse dentro de Postgres, pero pg_flo parece ser un servicio externo y no una extensión

    • Eso de hecho podría ser una ventaja
    • Me pregunto si se podrá usar pg_flo con instancias de Postgres as a service como Azure Postgres, Supabase y Neon
    • También me pregunto si puede leer el WAL sin necesidad de instalar extensiones no aprobadas por el proveedor
  • Tengo muchas ganas de probar esta herramienta

    • Me pregunto si puede manejar una copia en medio de cortes o inestabilidad de la conexión de red
  • Me pregunto en qué se diferencia frente a Sequin

    • Estoy buscando una herramienta que permita flujos de trabajo basados en eventos de CDC, pero que también permita reproducir arbitrariamente el stream de eventos según se necesite
  • Estaba buscando una herramienta similar, así que llega en el momento perfecto

    • Me pregunto si soporta hacer copias masivas (por ejemplo, nocturnas) con varias transformaciones, sin necesidad de hacer streaming continuo
  • Me pregunto si usar replicación sería mejor que hacer respaldos en S3

  • Es una herramienta muy genial