第 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 向导),新版本启动后自动重新连接。 |