- 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
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.
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
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
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
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
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 navegador — dbfor.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
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
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
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 pruebaTambié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