第 18 章 合规、存储与运维 管理:#pSystem

存储引擎(SQLite、MS SQL Server、PostgreSQL 18)、集群 & 更新程序

nextxch 将结构化元数据和全文索引与经过 SHA-256 去重、Zstandard 压缩的 MIME 数据块清晰分离(磁盘占用减少 62%)。可在三种一流的 SQL 引擎中自由选择,无需依赖 Redis、Elasticsearch 或 Kafka。

运维提示与架构说明

在执行任何就地更新之前,内置的一键更新程序 (#pSystem) 会对照 SHA256SUMS.txt 以加密方式校验 SHA-256 摘要,同时严格保留 appsettings.Production.json、TLS 证书和邮箱数据。

appsettings.Production.json 中的存储配置示例

选择 'Sqlite'(单节点)、'SqlServer'(Windows / Azure SQL)或 'Postgres'(Linux 高可用集群)。

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

设置、默认值与最佳实践

设置 / 位置 说明 默认值 生产环境最佳实践
SQLite WAL (Storage:Provider = Sqlite) 零配置的嵌入式数据库,以预写日志 (WAL) 模式运行,内置 FTS5 搜索,无需任何外部守护进程。 Standard für Einzelserver 适用于在本地 SSD/NVMe 存储上部署、最多约 250 个活跃邮箱的单节点环境(切勿将 SQLite WAL 文件放在 SMB/NFS 网络共享上!)。
Microsoft SQL Server (SqlServer) 一流的 Microsoft.Data.SqlClient 引擎,支持 SQL Server 2019-2025、Express、Docker 和 Azure SQL,采用 sp_getapplock 集群协调,搜索无需附加组件。 READ_COMMITTED_SNAPSHOT auto Windows Server 基础架构的首选:即使在 SQL Server Express 上也开箱即用,无需操作系统全文搜索附加组件。
PostgreSQL 18 (Postgres) 高吞吐量双活集群引擎,利用 LISTEN/NOTIFY(< 2 ms 推送)、UNLOGGED 表和 pg_try_advisory_lock。 Empfohlen für Linux-Cluster 适用于 500 至 100,000+ 个邮箱以及多节点 Active-Active Linux/Kubernetes 集群的参考引擎。
Deutsche Volltextsuche (alle drei Engines) 德语词干(Snowball german2)存储在单独的列中,或在 SQL Server 上作为词元前缀;变音字母转写(ae、oe、ue)、复合词处理,以及无命中时基于索引词汇的拼写错误重试。 Ohne Zusatzdienst 使用合成德语测试用例的测量结果位于仓库的 bench/ 目录下(平均召回率 87%)。位于复合词中间的词部分无法被找到;这需要一个词典。
1-Klick-System-Updater (#pSystem) 检查 /api/releases/latest,校验 SHA-256 校验和,暂存二进制文件,并无缝重启 Windows 服务或 systemd 单元。 SHA-256-geprüft 直接在 #pSystem 中触发一键更新(或通过 install.sh --update / MSI 向导),新版本启动后自动重新连接。