20 puntos por GN⁺ 2025-12-05 | 2 comentarios | Compartir por WhatsApp
  • PGlite es una solución ligera que permite ejecutar localmente una base de datos Postgres completa en un entorno WASM
  • Con un tamaño de menos de 3 MB comprimido, puede ejecutarse fácilmente incluso en navegadores o entornos cliente
  • Incluye funciones integradas de carga de datos, sincronización y consultas en tiempo real, lo que permite un procesamiento de datos reactivo
  • Compatible con carga dinámica de extensiones, incluido pgvector, para aprovechar distintos módulos de extensión
  • A través de database.build, basado en Supabase, se pueden crear e implementar bases de datos Postgres con IA, aumentando la flexibilidad del desarrollo de bases de datos en la web

Descripción general

  • PGlite es una base de datos Postgres embebida que se ejecuta en un entorno WASM (WebAssembly)
    • Permite ejecutar una instancia completa de Postgres en un entorno local
    • Admite procesamiento de datos reactivo y sincronización en tiempo real

Características principales

  • Ligereza: ofrece una compilación completa de Postgres de menos de 3 MB con compresión Gzip
    • Puede ejecutarse incluso en navegadores o entornos cliente ligeros
  • Extensibilidad: permite añadir varias extensiones de Postgres mediante un mecanismo de carga dinámica de extensiones
    • Incluye compatibilidad nativa con la extensión pgvector
  • Capacidad de respuesta: incluye funciones integradas para carga de datos, sincronización y consultas en tiempo real
    • Adecuado para actualizaciones de datos en tiempo real y para crear aplicaciones reactivas

Pruebas y uso

  • En la plataforma database.build se pueden crear y publicar bases de datos Postgres basadas en PGlite
    • Es una herramienta basada en IA creada por Supabase, con la que los usuarios pueden crear bases de datos directamente
  • Es posible ejecutar directamente una instancia de Postgres de PGlite dentro del navegador
    • Incluye pgvector
    • Las extensiones adicionales pueden probarse en el entorno playground (REPL)

Importancia

  • PGlite extiende las capacidades de Postgres al nivel del navegador, haciendo posible la ejecución de bases de datos centrada en el cliente
  • Al combinar ligereza, extensibilidad y capacidad de respuesta, está llamando la atención como una solución de base de datos adecuada para el desarrollo de aplicaciones web de próxima generación

2 comentarios

 
qqq7300 2025-12-10

Vi este artículo y probé incorporar PGlite de forma experimental en mi proyecto. Sin duda, para pruebas simples es realmente rápido y funciona muy bien. Me da mucha expectativa lo que venga en adelante.

 
GN⁺ 2025-12-05
Opiniones de Hacker News
  • Trabajo en el equipo de PGlite. Me da gusto verlo de nuevo en HN
    Recientemente superó los 3 millones de descargas semanales y pronto llegará a 4 millones — ver la página del paquete en npm
    Originalmente lo hicimos para incrustarlo en apps web, pero ahora su uso está creciendo de forma explosiva en herramientas de desarrollo y entornos CLI. Google Firebase y Prisma también integran PGlite en sus respectivos CLI para emular productos de servidor

    • Interesante. Pero me pregunto por qué lo hicieron solo para WASM. Normalmente parecería que el orden sería primero convertirlo en biblioteca y luego llevarlo a WASM, así que siento que me estoy perdiendo algo
    • Gracias por el gran trabajo. Quería preguntar si tienen planes de soportar el escenario de http-vfs read-only
      Me refiero a leer bloques desde una URL remota mediante range requests, como DuckDB o sql.js-httpvfs
      En nuestro laboratorio también estamos trabajando en un proyecto así, pero el ecosistema de http-vfs sigue estando a nivel de prototipo, así que casi no hay bibliotecas optimizadas
      También me pregunto si el patrón de acceso a disco de PostgreSQL se adapta mejor a http-vfs que el de SQLite
    • Quisiera preguntar si hay planes para una biblioteca para Flutter
    • Me pregunto si PGlite es más rápido que Postgres normal en modo memoria
      Si es así, sería increíble que soportara el protocolo de red para poder usarlo también en entornos de CI de lenguajes que no sean JS
    • Se ve realmente genial. Me gustaría saber en qué casos de uso concretos conviene usar esto
      Me pregunto si el objetivo es convertirse en una alternativa a SQLite o DuckDB
  • Quiero usar PGlite en runtimes que no sean JavaScript
    Por ejemplo, incrustarlo en un CLI de Go con un runtime de WASM y usarlo como reemplazo de SQLite
    Según el issue #89, parece que existen bindings de terceros para Rust, pero me gustaría saber si planean soportar oficialmente bindings para otros lenguajes

    • Sí, la combinación PGlite + Go suena realmente muy buena
  • PGlite es excelente. Lo estoy usando para desarrollo como un servidor PostgreSQL dentro del navegador
    El servidor implementa el protocolo PG, y cuando un cliente se conecta, envía las consultas al navegador para que PGlite las ejecute internamente
    El resultado es un servidor PG completo dentro del navegadordbfor.dev

  • Este proyecto es muy interesante. Uno de los puntos débiles de Postgres es que siempre hay que configurar un servidor, y esto resuelve ese problema
    Me pregunto si hay alguna forma de compilarlo como biblioteca nativa. Parece que parte del código podría reutilizarse

    • Yo hice una compilación experimental para React Native. Postgres corre en iOS y Android — enlace al PR
    • La biblioteca nativa actualmente está incluida en la hoja de ruta
    • Totalmente de acuerdo. Sería increíble poder pasar de embebido a modo de red sin cambiar el SQL ni el comportamiento
  • Me pregunto cuáles son las diferencias entre PGlite y SQLite
    Yo he usado SQLite sobre todo en entornos embebidos y del lado del cliente en navegador
    La ventaja de SQLite es su simplicidad, pero en PGlite llaman la atención sus múltiples extensiones. Me gustaría entender cuál es la diferencia esencial entre ambas bases de datos

    • En mi opinión, el uso principal está en entornos de pruebas/CI
      Puedes correr pruebas rápidamente con SQLite, pero si tu infraestructura real es PostgreSQL, su valor es limitado
  • Para pruebas unitarias sigo usando TestContainers para levantar Postgres basado en Docker
    Pero gracias a alternativas como esta también se hicieron posibles herramientas de prueba en Python como py-pglite
    Aun así, me da más confianza algo como pgserver, donde puedes ejecutar Postgres real de forma ligera como paquete de pip
    Mi opinión es únicamente desde la perspectiva de pruebas unitarias

    • Me pregunto cuáles son los trade-offs entre ambos enfoques. Este tipo de experiencias siempre ayuda
  • Nuestro equipo adoptó PGlite en el entorno de pruebas mientras creábamos un nuevo servicio interno
    Configuramos un wrapper para usar PGlite durante las pruebas y una instancia de Postgres en la ejecución real, y fue todo un éxito
    En especial, la función .clone() permite crear checkpoints de la base de datos y restaurar el estado inicial para cada prueba
    También se volvió muy fácil ejecutar en paralelo 50 suites de pruebas

  • Lo estoy usando para pruebas, y se siente como un punto intermedio entre SQLite en memoria y una instancia completa de Postgres
    Llevaba mucho tiempo buscando algo así, y estoy contento porque aceleró las pruebas. Hasta ahora casi no he encontrado limitaciones

  • También existe Doltgres, un Postgres en forma de ejecutable único
    Como Deno, descargas un solo archivo .exe, lo ejecutas y Postgres arranca de inmediato — documentación de instalación de Doltgres