Aurabase Logo
aurabasedocs
docsServicesDatabase (Postgres)

Database

PostgreSQL 16, une base dédiée par projet sur le cluster de votre organisation, schémas isolés, types TypeScript auto-générés, RLS natif. Aucun fork, aucun proxy de réécriture — vos extensions, triggers et PL/pgSQL fonctionnent tels quels.

Guide Pratique8 min de lecture·Niveau intermédiaire·Révisé le 15 avr. 2026
#
Vue d’ensemble

Postgres 16, sans abstraction

Le service aura-db expose un CRUD générique au-dessus d'un PostgreSQL 16 : chaque projet a sa propre base de données, hébergée sur le cluster PostgreSQL de votre organisation (un cluster entièrement dédié à un seul projet sur l'offre entreprise). Chaque appel SDK est traduit en SQL natif via une couche fine qui respecte les RLS policies injectées dans la session.

Vous pouvez aussi bypasser le SDK et pointer Prisma, Drizzle, Kysely ou psql directement sur la connection string — nous exposons le port 5432 standard avec wire protocol PostgreSQL.

Astuce
Un pg_dump vous rend votre base complète (schéma, données, extensions, policies). Aucun lock-in, migration sortante triviale.
#
Modèle mental

Le SDK appelle PostgREST, qui appelle Postgres

Sous le capot, le SDK sérialise vos appels .from().select()… en requête HTTP vers aura-db qui délègue à un sidecar PostgREST. PostgREST traduit en SQL et ouvre une connexion pooled via PgBouncer avec le search_path du projet injecté.

flux interne
TEXT
SDK → HTTPS GET /v1/db/sensors?select=id,name
Gateway → aura-db Vérification de session & Routage
aura-db → PgBouncer → PostgreSQL 16
# Connexion avec search_path projet
SET LOCAL search_path = project_a7f3_, public;
SET LOCAL request.jwt.claims = '{ "sub": "u_9k2", "tenant": "t_4c" }';
SELECT id, name, temperature FROM sensors WHERE active = true LIMIT 50;
Info
Les policies RLS ont accès à auth.uid(), auth.role(), auth.tenant(). Ces helpers lisent request.jwt.claims injecté par le gateway — impossible à falsifier côté client.
#
Primitives

Six capacités natives

Schema-per-project
Cloisonnement appliqué par PostgreSQL : pas de colonne tenant_id, un rôle de connexion par projet, droits jamais ouverts à PUBLIC.
§ fondation
Migrations versionnées
SQL versionné, rollback atomique, zero-downtime. Les types TypeScript se regénèrent à chaque migration.
§ migration
Codegen TypeScript
Génération automatique des types pour tables, vues, enums et fonctions RPC à chaque migration.
§ typing
RLS natif
Policies déclaratives testables. Le SDK injecte le claim tenant dans chaque connexion.
§ security
Extensions premium
pgvector, PostGIS, pg_cron, TimescaleDB, PGMQ, pg_partman. Versions fixées, audits.
§ extensions
Branch previews
Une base éphémère par PR, avec données seed clonées et URL unique — roadmap, pas encore livré.
§ roadmap
#
Exemple minimal

CRUD complet, typé

Les quatre opérations de base partagent la même surface .from(table). Les types retournés sont inférés depuis votre schéma — ouvrez votre IDE, autocomplete fonctionne sur les colonnes, les joins et les retours.

queries.tsTYPESCRIPT
// Lister les 50 derniers sensors actifs
const { data, error } = await aura
.from('sensors')
.select('id, name, temperature, location!inner(city)')
.eq('active', true)
.order('captured_at', { ascending: false })
.limit(50)
Astuce
Besoin d'un SQL plus complexe ? Créez une fonction Postgres et appelez-la via aura.rpc('function_name', args). Les fonctions bénéficient des mêmes policies RLS que les tables.
#
Extensions GA

14 extensions prêtes

Activables en un clic depuis le Studio. Versions fixées, mises à jour coordonnées, audit de sécurité partagé.

pgvector 0.7
PostGIS 3.5
pg_cron 1.6
TimescaleDB 2.17
PGMQ 1.4
pg_partman 5.1
pg_stat_statements
pgcrypto
citext
uuid-ossp
hstore
ltree
pg_trgm
unaccent
Dernière mise à jour · 15 avr. 2026