Aurabase Logo
aurabasedocs
docsServicesDatabase

Database

PostgreSQL 17 dédié par projet, 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.

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

Postgres 17, sans abstraction

§ 01

Le service aura-db expose un CRUD générique au-dessus d'un PostgreSQL 17 dédié à votre projet. 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

§ 02

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 → HTTP GET /v1/db/{id}/rows?table=sensors
aura-db → NATS aura.svc.db verify + route
PostgREST → PgBouncer → Postgres 17
# 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

§ 03
Schema-per-project
Isolation physique. Pas de colonne tenant_id, pas de pool partagé, zéro fuite possible.
§ fondation
Migrations versionnées
SQL versionné, rollback atomique, zero-downtime. Les types TypeScript se regénèrent à chaque migration.
§ migration
Codegen TypeScript
Types exhaustifs sur tables, vues, fonctions, relations. Inférence complète sur les joins.
§ 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. Données seed clonées, URL unique, nettoyage auto.
§ preview
#
Exemple minimal

CRUD complet, typé

§ 04

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

§ 05

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