Skip to main content

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

TecnologiaUso
PostgreSQLSource of truth transazionale
Object storageFile, PDF, immagini, allegati
RedisCode, stream, cache volatile, eventi runtime
QdrantVector search operativo iniziale
pgvectorOpzione 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

EstensioneObbligatoriaUso
pgcryptoSiUUID/random, funzioni crittografiche utili a token e chiavi applicative
citextSiEmail, codici e identificativi case-insensitive
pg_trgmSiSimilarita testuale, ricerca fuzzy su nomi, issuer, file, entita
unaccentSiNormalizzazione ricerca testuale multilingua
btree_ginConsigliataIndici GIN composti e ottimizzazioni su JSONB/search
pg_stat_statementsConsigliataOsservabilita query e tuning
pgvectorOpzionaleVector similarity search in PostgreSQL
postgres_fdwOpzionale futuroAccesso 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.