Edición Studio /

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, EXPLAIN visual, buscar y reemplazar, y pantallas para administrar roles, permisos, extensiones y otros objetos. Su imagen es ghcr.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:

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:

  1. Haces el cambio en un formulario o con un botón.
  2. 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 '********'.
  3. No se ejecuta nada hasta que confirmas. Para eliminar, te pide escribir el nombre de lo que eliminas.
  4. 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.