Capítulo 18
Cumplimiento, almacenamiento & operación
Admin:
#pSystem
Motores de almacenamiento (SQLite, MS SQL Server, PostgreSQL 18), clustering & actualizador
nextxch separa limpiamente los metadatos estructurados y los índices de texto completo de los blobs MIME deduplicados por SHA-256 y comprimidos con Zstandard (-62 % de espacio en disco). Elija libremente entre tres motores SQL de primer nivel sin ninguna dependencia de Redis, Elasticsearch ni Kafka.
Consejo operativo y nota de arquitectura
Antes de aplicar cualquier actualización in situ, el actualizador integrado de 1 clic (#pSystem) verifica criptográficamente el resumen SHA-256 frente a SHA256SUMS.txt, conservando estrictamente appsettings.Production.json, los certificados TLS y los datos de los buzones.
Ejemplo de configuración de almacenamiento en appsettings.Production.json
Elija 'Sqlite' (nodo único), 'SqlServer' (Windows / Azure SQL) o 'Postgres' (clúster de alta disponibilidad en Linux).
{
"Storage": {
"Provider": "SqlServer",
"ConnectionString": "Server=sql01.intern;Database=nextxch;Integrated Security=True;TrustServerCertificate=True;",
"BlobDirectory": "D:\\NextxchData\\blobs"
}
}
Configuración, valores predeterminados y buenas prácticas
| Ajuste / ubicación | Descripción | Valor predeterminado | Buena práctica de producción |
|---|---|---|---|
SQLite WAL (Storage:Provider = Sqlite) |
Base de datos integrada sin configuración que funciona en modo Write-Ahead-Logging (WAL), con búsqueda FTS5 integrada y sin demonios externos. | Standard für Einzelserver |
Ideal para implementaciones de nodo único de hasta ~250 buzones activos en almacenamiento SSD/NVMe local (¡no coloque nunca los archivos WAL de SQLite en recursos compartidos de red SMB/NFS!). |
Microsoft SQL Server (SqlServer) |
Motor Microsoft.Data.SqlClient de primera clase para SQL Server 2019-2025, Express, Docker y Azure SQL, con clustering mediante sp_getapplock y búsqueda sin complementos. | READ_COMMITTED_SNAPSHOT auto |
La mejor opción para infraestructuras Windows Server: funciona de inmediato incluso con SQL Server Express, sin necesidad de complementos de búsqueda de texto completo del sistema operativo. |
PostgreSQL 18 (Postgres) |
Motor de clúster activo-activo de alto rendimiento que aprovecha LISTEN/NOTIFY (< 2 ms de push), tablas UNLOGGED y pg_try_advisory_lock. | Empfohlen für Linux-Cluster |
Motor de referencia para 500 a más de 100.000 buzones y clústeres Linux/Kubernetes Active-Active de varios nodos. |
Deutsche Volltextsuche (alle drei Engines) |
Raíces alemanas (Snowball german2) en una columna separada o como prefijo de token en SQL Server, transcripción de diéresis (ae, oe, ue), palabras compuestas y un reintento ante errores tipográficos sobre el vocabulario del índice cuando no hay resultados. | Ohne Zusatzdienst |
La medición con casos de prueba sintéticos en alemán está en el repositorio, en bench/ (exhaustividad media del 87 %). Las partes de palabra en medio de un compuesto no se encuentran; para ello haría falta un diccionario. |
1-Klick-System-Updater (#pSystem) |
Consulta /api/releases/latest, verifica las sumas de comprobación SHA-256, prepara los binarios y reinicia sin interrupciones el servicio de Windows o la unidad systemd. | SHA-256-geprüft |
Inicie actualizaciones con 1 clic directamente desde #pSystem (o mediante install.sh --update / asistente MSI), con reconexión automática en cuanto arranca la nueva versión. |