postgres-wasm, el servidor PostgreSQL que se ejecuta en un navegador con WebAssembly

postgres-wasm

Postgres-wasm es un proyecto en el cual PostgreSQL ha sido portado a WebAssembly

Hace poco se dio a conocer mediante un anunciado el acceso gratuito a postgres-wasm, el cual es un servidor PostgreSQL que se ejecuta en un navegador y ofrece un conjunto completo de funciones, incluida la persistencia del estado en el navegador, la restauración desde pg_dump y la replicación lógica desde una base de datos remota.

Postgres-wasm es un proyecto lanzado bajo una licencia Open Source gracias al cual PostgreSQL ha sido portado a WebAssembly. Esta es una solución desarrollada gracias a la colaboración entre Supabase, un proveedor de bases de datos en la nube, y Snaplet, una empresa especializada en programación de bases de datos.

«Hoy estamos lanzando postgres-wasm con nuestros amigos en Snaplet», dijo el ingeniero de Supabase Mark Burggraf

Para quienes desconocen de Postgres, deben saber que es uno de los sistemas de gestión de bases de datos de código abierto más avanzados. Es rico en funciones, con tipos de datos robustos, indexación potente y una amplia gama de funciones integradas que se pueden usar para simplificar la pila de datos y permitir que los desarrolladores se centren en crear su aplicación. Postgres es más que una base de datos relacional, se ha convertido en su plataforma de datos de confianza.

Sobre Postgres-wasm

Supabase no es el primero en hacer que Postgres funcione en un navegador; ese título va para el equipo de Crunchy Data que compartió su versión en HN hace un mes. En su deseo de desarrollar una versión de código abierto de la versión propietaria de Crunchy Data, Supabase se asoció con Snaplet para construir Postgres-wasm.

Gracias a Postgres-wasm, PostgreSQL puede ejecutarse directamente a través de un navegador para la navegación Web, para ello se utilizó la distribución Linux Buildroot, caracterizada por dimensiones extremadamente reducidas, y el emulador v86 que permite replicar el funcionamiento de una terminal x86.

Por la parte de WebAssembly, este tiene como propósito permitir que se construyan aplicaciones de alto rendimiento en páginas web, «pero no hace suposiciones específicas de la web ni proporciona una funcionalidad específica de la web, por lo que también se puede usar en otros entornos. Es un estándar abierto que tiene como objetivo admitir cualquier idioma en cualquier sistema operativo y, en la práctica, todos los idiomas más populares ya tienen al menos algún nivel de soporte. Supabase usa v86 para ejecutar su VM dentro del navegador.

Ejecutar Postgres en un navegador es excelente, pero conectarse a él con PgAdmin es aún mejor. Desafortunadamente, los navegadores bloquean el acceso a la red TCP de la VM. Para eludir esto, Supabase enruta el tráfico a través de websockets. Utilizan una bifurcación de Websockproxy que permite que el emulador se comunique con Internet al convertir los datos enviados a través de un puerto websocket en paquetes TCP. La bifurcación Websockproxy agrega la capacidad de tunelizar el servidor Postgres.

Dentro de las características que se destacan del proyecto, se mencionan las siguientes:

  • Postgres 14.5, psql, pg_dump, etc.
  • Guardar y restaurar el estado a/desde un archivo.
  • Guarde y restaure el estado de Postgres en/desde el almacenamiento del navegador (IndexedDB).
  • Inicio rápido desde un archivo de estado o reinicio completo del emulador.
  • Opciones de configuración de memoria de 128 MB a 1024 MB.
  • Ajuste el tamaño de fuente para el terminal.
  • Cargue archivos en el emulador (incluidos volcados de base de datos y CSV).
  • Descargar archivos del emulador.
  • Conectividad de red saliente desde el emulador a Internet.
  • Túnel de red entrante al puerto postgres 5432 dentro del emulador.

En general, todo el proyecto está contenido en una sola instantánea del tamaño de 12 MB con la que ejecutar un servidor PostgreSQL.

Como admiten los desarrolladores de Postgres-wasm, el rendimiento en tiempo de ejecución no es muy alto, pero en sí, el objetivo de hacer que PostgreSQL 14.5 sea utilizable desde un navegador completo con una interfaz de línea de comandos psql se ha logrado con éxito.

Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.