Capitolo 18 Conformità, storage & operatività Admin: #pSystem

Motori di storage (SQLite, MS SQL Server, PostgreSQL 18), clustering & updater

nextxch separa nettamente i metadati strutturati e gli indici full-text dai blob MIME deduplicati SHA-256 e compressi con Zstandard (-62% di occupazione del disco). Si può scegliere liberamente tra tre motori SQL di prima classe, senza alcuna dipendenza da Redis, Elasticsearch o Kafka.

Suggerimento operativo & nota sull'architettura

Prima di applicare un aggiornamento in-place, l'1-Click Updater integrato (#pSystem) verifica crittograficamente il digest SHA-256 rispetto a SHA256SUMS.txt, preservando rigorosamente appsettings.Production.json, i certificati TLS e i dati delle caselle di posta.

Esempio di configurazione dello storage in appsettings.Production.json

Scegliere 'Sqlite' (nodo singolo), 'SqlServer' (Windows / Azure SQL) o 'Postgres' (cluster HA Linux).

Riferimento / configurazione
{
  "Storage": {
    "Provider": "SqlServer",
    "ConnectionString": "Server=sql01.intern;Database=nextxch;Integrated Security=True;TrustServerCertificate=True;",
    "BlobDirectory": "D:\\NextxchData\\blobs"
  }
}

Impostazioni, valori predefiniti e best practice

Impostazione / posizione Descrizione Valore predefinito Best practice per la produzione
SQLite WAL (Storage:Provider = Sqlite) Database integrato senza configurazione, in modalità Write-Ahead-Logging (WAL), con ricerca FTS5 integrata e nessun daemon esterno. Standard für Einzelserver Ideale per deployment a nodo singolo fino a ~250 caselle di posta attive su storage SSD/NVMe locale (non collocare mai i file SQLite WAL su condivisioni di rete SMB/NFS!).
Microsoft SQL Server (SqlServer) Motore Microsoft.Data.SqlClient di prima classe per SQL Server 2019-2025, Express, Docker e Azure SQL, con clustering sp_getapplock e ricerca senza componenti aggiuntivi. READ_COMMITTED_SNAPSHOT auto Scelta ideale per le infrastrutture Windows Server: funziona subito anche su SQL Server Express senza richiedere componenti aggiuntivi di ricerca full-text del sistema operativo.
PostgreSQL 18 (Postgres) Motore cluster active-active ad alto throughput basato su LISTEN/NOTIFY (push < 2 ms), tabelle UNLOGGED e pg_try_advisory_lock. Empfohlen für Linux-Cluster Motore di riferimento per 500-100.000+ caselle di posta e cluster Linux/Kubernetes multi-nodo Active-Active.
Deutsche Volltextsuche (alle drei Engines) Radici tedesche (Snowball german2) in una colonna separata o come prefisso di token su SQL Server, trascrizione delle dieresi (ae, oe, ue), parole composte e un nuovo tentativo con correzione dei refusi sul vocabolario dell'indice quando non ci sono risultati. Ohne Zusatzdienst La misurazione con casi di test sintetici in tedesco si trova nel repository sotto bench/ (recall medio 87%). Le parti di parola al centro di un composto non vengono trovate; servirebbe un dizionario.
1-Klick-System-Updater (#pSystem) Controlla /api/releases/latest, verifica i checksum SHA-256, prepara i binari e riavvia senza interruzioni il servizio Windows o la unit systemd. SHA-256-geprüft Avviare gli aggiornamenti con 1 clic direttamente da #pSystem (o tramite install.sh --update / procedura guidata MSI), con riconnessione automatica all'avvio della nuova versione.