Tecnologia e componenti
Tecnologia scelta
Repository primario:
PostgreSQL 18
Versione minima accettabile:
PostgreSQL 17
PostgreSQL viene usato per:
- dati transazionali;
- configurazioni platform;
- identita e permessi;
- document metadata;
- artifact e JSON semi-strutturati;
- audit;
- dati business dei prodotti;
- lookup, viste e query operative.
Non viene usato per memorizzare file binari pesanti. PDF, immagini e allegati restano su object storage o storage provider dedicato.
Componenti dati complementari
| Tecnologia | Uso |
|---|---|
| PostgreSQL | Source of truth transazionale |
| Object storage | File, PDF, immagini, allegati |
| Redis | Code, stream, cache volatile, eventi runtime |
| Qdrant | Vector search operativo iniziale |
| pgvector | Opzione futura o complementare per vector search dentro PostgreSQL |
Qdrant resta il vector database operativo iniziale se gia presente nell'architettura. pgvector va considerato per dataset piccoli/medi, query ibride SQL+vector o riduzione della complessita infrastrutturale in ambienti piu semplici.
Estensioni PostgreSQL
| Estensione | Obbligatoria | Uso |
|---|---|---|
pgcrypto | Si | UUID/random, funzioni crittografiche utili a token e chiavi applicative |
citext | Si | Email, codici e identificativi case-insensitive |
pg_trgm | Si | Similarita testuale, ricerca fuzzy su nomi, issuer, file, entita |
unaccent | Si | Normalizzazione ricerca testuale multilingua |
btree_gin | Consigliata | Indici GIN composti e ottimizzazioni su JSONB/search |
pg_stat_statements | Consigliata | Osservabilita query e tuning |
pgvector | Opzionale | Vector similarity search in PostgreSQL |
postgres_fdw | Opzionale futuro | Accesso federato a database PostgreSQL separati |
Esempio bootstrap:
CREATE EXTENSION IF NOT EXISTS pgcrypto;
CREATE EXTENSION IF NOT EXISTS citext;
CREATE EXTENSION IF NOT EXISTS pg_trgm;
CREATE EXTENSION IF NOT EXISTS unaccent;
CREATE EXTENSION IF NOT EXISTS btree_gin;
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
-- CREATE EXTENSION IF NOT EXISTS vector;
-- CREATE EXTENSION IF NOT EXISTS postgres_fdw;
Migration
schema_migrations e legacy/opzionale.
Serve solo se si introduce un migration runner controllato. Se le migration restano manuali, non e obbligatoria nella nuova backbone.