Bases de datos

Cómo añadir una base de datos Postgres a tu app

Para añadir Postgres a una app en Codara Cloud, crea una base de datos en el entorno de la app y conéctala: Codara inyecta DATABASE_URL y DATABASE_DIRECT_URL en la app y la reinicia, así que nunca copias una contraseña. La base de datos funciona dentro de la capacidad de tu plan y su almacenamiento cuenta para el almacenamiento persistente del plan. Ejecuta las migraciones con la URL directa como comando previo al despliegue.

Por Codara Solutions · Revisada el

¿Postgres compartido o dedicado?

Una base de datos compartida es un inquilino en una instancia de Postgres común: se crea rápido y encaja con desarrollo y apps pequeñas, con copias diarias y restauraciones en autoservicio cuando activas las copias. Una base de datos dedicada tiene su propia instancia, CPU, memoria y disco, y siempre tiene copias continuas. Toda base de datos empieza con 10 GiB de almacenamiento; el nivel define cuánto puede crecer.

El motor, la versión, el aislamiento y la región se fijan al crear la base de datos; el nivel, el almacenamiento y el pool de conexiones pueden cambiar después. Hay PostgreSQL 14, 15 y 16.

El almacenamiento de una base de datos cuenta para tu plan: 10 GiB en Starter, 20 GiB en Standard, 50 GiB en Pro y 150 GiB en Scale, más el almacenamiento extra que compres. En Starter, una base de datos compartida reserva los 10 GiB.

Opciones de Postgres en Codara Cloud
NivelAislamientoAlmacenamiento máximoCopias y restauración
starterCompartida por defecto10 GiBVolcado diario cuando lo activas; restauras tú
standardDedicada20 GiBSiempre activas: copia base semanal más archivado continuo de WAL; restaura Codara bajo petición
proDedicada100 GiBIgual que standard

¿Cómo creas la base de datos y la conectas?

En la consola, abre el lienzo del entorno, añade una base de datos y conéctala a la app. Desde la CLI, créala en el mismo espacio de trabajo, proyecto y entorno que la app y después añade la conexión. Al conectarla se inyectan las variables y la app se reinicia.

Terminal
codaracloud databases create main-db --engine postgres --tier starter \
  --client my-workspace --project shop --env production

codaracloud apps connections add api main-db --client my-workspace
codaracloud apps connections list api --client my-workspace

Para conectar una segunda base de datos, como una caché, dale un prefijo con --as CACHE; sus claves empezarán por CACHE_.

Variables que se inyectan en la app
VariablePara qué sirve
DATABASE_URLLas consultas de tu aplicación. En Postgres compartido pasa por un pool de conexiones.
DATABASE_DIRECT_URLMigraciones y herramientas que necesitan una conexión directa.
DATABASE_HOST, _PORT, _NAME, _USER, _PASSWORDBibliotecas que quieren los datos por separado.
El lienzo de producción del proyecto Storefront: los servicios storefront y storefront-api, una base de datos PostgreSQL 16 con 8 claves de conexión y la tarea cron nightly-report, con líneas para la red privada, las variables y la conexión de la tarea con postgres.
El lienzo del entorno: storefront recibe DATABASE_URL de postgres, y la API y la tarea nightly-report se conectan a la misma base de datos.

¿Cómo la usa tu código?

Lee DATABASE_URL del entorno; nunca escribas las credenciales en el código. Apunta tu herramienta de migraciones (Prisma, Drizzle, Alembic, Django u otras) a DATABASE_DIRECT_URL, que evita el pool de conexiones.

Node.js · pg
import pg from "pg";

const pool = new pg.Pool({ connectionString: process.env.DATABASE_URL });
const { rows } = await pool.query("select version()");
Python · psycopg
import os
import psycopg

with psycopg.connect(os.environ["DATABASE_URL"]) as conn:
    print(conn.execute("select version()").fetchone())

Ejecuta las migraciones como comando previo al despliegue de la app, por ejemplo npx prisma migrate deploy, alembic upgrade head o python manage.py migrate. Se ejecuta una vez en la imagen nueva antes de mover el tráfico, y si falla, la versión actual sigue sirviendo.

¿Cómo importas datos existentes o inspeccionas la base de datos?

Abre un túnel local a través de la plataforma y usa psql o tu cliente habitual; no necesitas acceso al clúster. Es también la forma más sencilla de cargar un pg_dump de otro proveedor. Para volcados grandes, las bases de datos Postgres y MariaDB pueden importar un volcado SQL plano desde una URL HTTPS como un job dentro de la plataforma, con la API o las herramientas MCP; pide a tu agente de programación que ejecute databases_import.

Terminal
# Exporta desde el proveedor anterior
pg_dump --no-owner --no-acl "$OLD_DATABASE_URL" > dump.sql

# Abre un túnel (Ctrl-C para pararlo)
codaracloud databases proxy main-db --client my-workspace --local-port 5433

# En otra terminal: credenciales y después la importación
codaracloud databases connection main-db --client my-workspace --reveal
psql "postgresql://USER:PASSWORD@127.0.0.1:5433/main-db" -f dump.sql

La consola también tiene un explorador de tablas de solo lectura para Postgres (abre la base de datos y elige Studio). Recorre las filas por páginas; no ejecuta SQL.

¿Cómo funcionan las copias de seguridad y las restauraciones?

Comprueba la protección de cada base de datos en lugar de darla por hecha. Postgres compartido hace un volcado diario cuando activas las copias, y puedes restaurarlo tú. Postgres dedicado siempre tiene copias y no se pueden desactivar; Codara lo restaura bajo petición. En los planes de autoservicio, las copias se conservan hasta 7 días, en otro proveedor.

Una restauración siempre crea una base de datos nueva y nunca sobrescribe la original. Verifica los datos restaurados y después apunta la app a ella. También puedes hacer una copia antes de un cambio arriesgado, una vez por base de datos y día UTC.

Terminal
codaracloud databases backup main-db --wait --client my-workspace

codaracloud databases restore main-db --from <backup-name> \
  --as main-db-recovered --client my-workspace
codaracloud apps connections rm api main-db --client my-workspace
codaracloud apps connections add api main-db-recovered --client my-workspace

Preguntas

¿Postgres está incluido en el precio de Codara Cloud?
Sí. Las bases de datos funcionan dentro de la capacidad de tu plan sin coste adicional, y su almacenamiento cuenta para el almacenamiento persistente del plan. No hay una factura aparte por la base de datos.
¿Puedo usar una base de datos externa, como Neon o Supabase?
Sí. Define su URL de conexión como variable de entorno de ejecución de la app. El proveedor externo la factura y hace sus copias según sus propias condiciones.
¿Qué otras bases de datos hay?
MySQL, MariaDB, Redis y MongoDB también son gestionadas. Redis puede ser compartida o dedicada; MySQL, MariaDB y MongoDB solo dedicadas.

Sigue leyendo