Ediciones
Gresbase tiene dos ediciones que salen del mismo código. Studio añade un modo avanzado para ver la base por dentro y administrarla.
En esta página
Dos ediciones#
Del mismo código salen dos ediciones de Gresbase:
- Gresbase, la edición base: todo lo que cuenta el resto de esta documentación. Su imagen es
ghcr.io/amtzespinosa/gresbase:latest. - Gresbase Studio: la edición base más un modo avanzado, con diagrama del esquema, métricas,
EXPLAINvisual, buscar y reemplazar, y pantallas para administrar roles, permisos, extensiones y otros objetos. Su imagen esghcr.io/amtzespinosa/gresbase:latest-studio:latest.
La edición Studio llegó con la v0.5. Para compilarla desde el repositorio, sigue Compilar desde el código y añade --build-arg EDITION=studio.
| Gresbase | Gresbase Studio | |
|---|---|---|
| Imagen | ghcr.io/amtzespinosa/gresbase:latest |
ghcr.io/amtzespinosa/gresbase:latest-studio |
| Binario | gresbase |
gresbase-studio |
| Tablas, edición, estructura, editor SQL, búsqueda | Sí | Sí, lo mismo |
| Selector Básico / Avanzado | No | Sí |
| Diagrama del esquema | No | Modo avanzado |
| Métricas | No | Modo avanzado |
| EXPLAIN visual | No | Modo avanzado, en el editor SQL |
| Buscar y reemplazar | No | Modo avanzado |
| Roles, permisos y seguridad por filas | No | Modo avanzado |
| Extensiones | No | Modo avanzado |
| Objetos: vistas, funciones, triggers, tipos, secuencias, ajustes | No | Modo avanzado |
Todo lo demás es común: configuración, inicio de sesión, conexiones guardadas, modo libre, volumen de datos y comprobación de salud. Dentro de la imagen el binario es /gresbase en las dos ediciones. En la imagen Studio, /gresbase version escribe gresbase-studio <versión>.
La edición base no lleva código de Studio. Sus rutas de Studio no existen (responden 404) y en su interfaz no hay rastro del modo avanzado. Si no necesitas Studio, la imagen base sigue tan pequeña y sencilla como antes.
Elegir la imagen#
Solo cambia la línea image:. El resto del fichero de Compose, las variables y el volumen /data son iguales en las dos ediciones, así que puedes pasar de una a otra sin perder tus ajustes ni tus consultas guardadas.
services:
gresbase:
image: ghcr.io/amtzespinosa/gresbase:latest
restart: unless-stopped
environment:
DATABASE_URL: postgres://USUARIO:CONTRASEÑA@HOST:5432/BASE
volumes:
- gresbase-data:/data
ports:
- "127.0.0.1:8082:8080"
volumes:
gresbase-data:services:
gresbase:
image: ghcr.io/amtzespinosa/gresbase:latest-studio:latest
restart: unless-stopped
environment:
DATABASE_URL: postgres://USUARIO:CONTRASEÑA@HOST:5432/BASE
GRESBASE_MODE: advanced
volumes:
- gresbase-data:/data
ports:
- "127.0.0.1:8082:8080"
volumes:
gresbase-data:El Inicio rápido explica cada línea. Con docker run, pon el nombre de la imagen Studio en la última línea del comando.
Básico y Avanzado#
En la edición Studio, la barra lateral tiene bajo el buscador un selector Modo con Básico y Avanzado. Con la barra plegada es un botón de icono.
- Básico es la app tal como es en la edición base.
- Avanzado añade a la barra lateral la sección Avanzado, con una entrada por módulo: Esquema, Métricas, Buscar y reemplazar, Roles y permisos, Extensiones y Objetos. Además, el editor SQL gana los botones Explain y Explain analyze.
Cada persona elige su modo y el navegador lo recuerda. Quien aún no ha elegido empieza en el modo de GRESBASE_MODE: basic por defecto, o advanced. La edición base ignora esta variable.
La paleta de comandos (Ctrl K, o ⌘ K en Mac) tiene Cambiar al modo avanzado y Cambiar al modo básico y, en modo avanzado, lista las pantallas avanzadas. Si abres la dirección de una pantalla avanzada en modo básico, vuelves a Tablas con el aviso «Esa pantalla es del modo avanzado. Actívalo en la barra lateral.».
La pantalla abierta queda resaltada en la barra lateral. La dirección de la sección, /advanced, abre Esquema.
Quién puede usarlo#
El modo avanzado se puede quitar a un rol de PostgreSQL, en Roles: Puede usar el modo avanzado. Es un ajuste de Gresbase, guardado en el volumen de datos para ese rol en ese servidor, no de PostgreSQL. Un rol sin él no ve el selector, solo el modo básico, y las pantallas avanzadas le responden 403. Los roles que nadie ha cambiado pueden usarlo, así que las instalaciones que ya existen siguen igual; un rol creado desde Gresbase empieza sin él salvo que marques la casilla. Importa sobre todo en el modo libre, donde cada persona entra con su propio rol.
Cada cambio enseña su SQL#
Las pantallas avanzadas que cambian la base (roles, permisos, seguridad por filas, extensiones y objetos) siguen todas los mismos pasos:
- Haces el cambio en un formulario o con un botón.
- Gresbase enseña el SQL exacto bajo SQL que se ejecutará, con avisos cuando el cambio tiene riesgo: crear un superusuario, eliminar con
CASCADE, algo que no se puede deshacer. Las contraseñas salen como'********'. - No se ejecuta nada hasta que confirmas. Para eliminar, te pide escribir el nombre de lo que eliminas.
- Las sentencias se ejecutan en una transacción: o se aplican todas o ninguna. Las pocas que PostgreSQL no admite dentro de una transacción (como
REFRESH MATERIALIZED VIEW CONCURRENTLY) van una a una, y el diálogo lo dice.
Buscar y reemplazar funciona como la edición de datos: vista previa, una transacción y deshacer. Mira Buscar y reemplazar.
Permisos y solo lectura#
Studio hace lo que puede hacer el rol de PostgreSQL con el que conecta, nada más. Cada pantalla mira antes ese rol: si le faltan privilegios, enseña todo lo que puede leer y explica qué falta en lugar de ofrecer botones que fallarían. En Seguridad y red tienes los privilegios que necesita cada módulo.
En modo solo lectura, o con un servidor en recuperación (una réplica), todos los módulos de Studio son de solo consulta. Puedes ver el diagrama, las métricas, los roles y los objetos, y hacer la vista previa de un buscar y reemplazar, pero nada cambia. La API también rechaza esos cambios con read_only.
En modo libre, cada persona usa Studio con su propio rol de PostgreSQL.