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).
{
"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. |