PostgreSQL per SaaS: Dati, Utenti e Crediti in LetsAI - Software & AI
Software & AI14 luglio 2025

PostgreSQL per SaaS: Dati, Utenti e Crediti in LetsAI

Scegliere il database per una piattaforma SaaS multi-utente non è banale. PostgreSQL per LetsAI: dopo due anni zero rimpianti. Utenti, crediti, storico generazioni e analytics — tutto in un database che non ci ha mai lasciato a piedi.

PostgreSQL per SaaS: Dati, Utenti e Crediti in LetsAI - Software & AI | i3k

Perché PostgreSQL e non MongoDB o MySQL

MongoDB l'abbiamo usato in progetti passati. Comodo per prototipi, ma quando i dati hanno relazioni (utenti → piani → crediti → generazioni → fatture) un database relazionale è più naturale. Le JOIN sono quello che servono. PostgreSQL ha due cose che fanno la differenza: JSONB per dati semi-strutturati (i metadata delle generazioni cambiano per provider) e le estensioni — pg_stat_statements, pg_trgm, pgcrypto. Tutto integrato. In due anni: 400.000+ record di generazioni. Le query analytics aggregate rispondono sotto i 200ms.

Multi-tenant con Row Level Security

LetsAI è multi-tenant: ogni utente vede solo i suoi dati, database condiviso. Ogni tabella ha user_id e una RLS policy. Anche se un bug dimenticasse il WHERE, PostgreSQL blocca l'accesso a dati altrui a livello database. Le RLS ci hanno salvato almeno due volte da potenziali data leak durante lo sviluppo. Costo performance: meno dell'1%.

Crediti: transazioni ACID dove servono davvero

La parte più delicata: il sistema crediti. Compri un pacchetto, generi, i crediti scalano. Se qualcosa va storto a metà, i crediti non devono scalare. Flusso: BEGIN → verifica crediti → SELECT FOR UPDATE (blocca la riga) → chiama provider AI → COMMIT o ROLLBACK. Il SELECT FOR UPDATE impedisce che due richieste simultanee spendano gli stessi crediti. In 400.000+ transazioni: zero crediti persi o duplicati.

JSONB per metadata variabili

Ogni generazione ha metadata diversi. Video: risoluzione, durata, frame rate. Immagine: dimensioni, modello, seed. Colonne per ogni campo? Folle. JSONB risolve: salvi JSON strutturato ma fai query efficienti — metadata->>'model' = 'stable-diffusion-xl'. Con indice GIN le query sono quasi veloci come su colonne normali. Consiglio: i campi per JOIN e filtri frequenti (user_id, created_at, type) restano colonne normali. JSONB solo per dati variabili.

Backup e monitoring: la routine che ci salva

pg_dump ogni 6 ore, retention 30 giorni. WAL archiving per point-in-time recovery. Test restore settimanale — un backup che non sai restorare non è un backup. pg_stat_statements per query lente (alert se >500ms). PgBouncer per connection pooling: il database accetta 100 connessioni, l'app ne vede 500. Costo: meno di 50€/mese su VPS dedicato. Gestisce tutto il traffico LetsAI.

Servizi Correlati

Scopri come applichiamo queste tecnologie nei nostri progetti enterprise.

Interessato?

Contattaci per ricevere un preventivo personalizzato.

Tutti gli articoli

Securvita S.r.l. — i3k.eu