Linee guida di modellazione
Chiavi e identificativi
- Usare
uuidper identificativi pubblici/API. - Usare
bigint generatedouuidcome primary key interna, da decidere per schema. - Evitare chiavi naturali come primary key.
- Ogni tabella product-aware in schema condiviso deve avere
application_codeetenant_id.
JSONB
Usare jsonb per:
- artifact LLM;
- raw extraction;
- metadata provider;
- payload eventi;
- configurazioni flessibili;
- campi di benchmark.
Non usare jsonb per dati core con query frequenti, vincoli o join stabili. In quel caso usare colonne relazionali.
Sicurezza e tenant
Il primo livello di enforcement resta applicativo tramite data-service.
PostgreSQL Row-Level Security e una opzione futura per rafforzare l'isolamento tenant/application a livello DB, soprattutto sugli schemi condivisi.
Migrazione da MySQL
La migrazione non deve essere un port meccanico MySQL -> PostgreSQL.
Ordine consigliato:
- creare schemi PostgreSQL target;
- portare prima
rendicontazione; - portare le tabelle platform minime;
- portare document metadata necessari;
- portare AI/document processing necessario al primo prodotto;
- lasciare le tabelle rAInty immobiliari nel vecchio DB finche il verticale non migra;
- introdurre test di compatibilita API prima di ogni cut-over.
Riferimenti
- PostgreSQL JSON/JSONB: https://www.postgresql.org/docs/current/datatype-json.html
- PostgreSQL Full Text Search: https://www.postgresql.org/docs/current/textsearch.html
- PostgreSQL Row-Level Security: https://www.postgresql.org/docs/current/ddl-rowsecurity.html
- PostgreSQL FDW: https://www.postgresql.org/docs/current/postgres-fdw.html
- pgvector: https://github.com/pgvector/pgvector