AgileConfig-1.9.0 发布,支持MongoDB存储
内容提要
AgileConfig 1.9.0版本发布,支持Mongodb作为存储,需修改配置文件或使用环境变量注入参数。升级到1.9.0版本需注意系统日志表主键id数据类型变更。感谢贡献者,希望更多人支持AgileConfig。
延伸解读
MongoDB 支持背后的架构调整
为了支持 MongoDB,AgileConfig 在关系型数据库和 NoSQL 之间抽象出了一层仓储层。这一重构使得后续扩展其他数据库类型更加容易,同时项目还改进并添加了更多单元测试用例,以保障可靠性。整个合作历时两个多月,修改了超过 170 个文件。
升级前必须处理的数据类型变更
从老版本升级到 1.9.0 时,系统日志表 agc_sys_log 的主键 id 数据类型从自增 integer 改为 varchar36。这一变更源于 MongoDB 不支持自增主键。升级前需要手动修改表结构,否则可能导致兼容性问题。
生产环境使用 MongoDB 的注意事项
文章提醒,应尽量使用 MongoDB 集群作为存储,因为单节点 MongoDB 并不支持事务。这意味着在单节点模式下,某些依赖事务的操作可能无法保证一致性,影响配置管理的可靠性。
Q&A
AgileConfig 1.9.0 版本新增了什么存储支持?
AgileConfig 1.9.0 版本新增了对 MongoDB 作为存储的支持。
如何配置 AgileConfig 使用 MongoDB 作为存储?
本地运行需修改 appsettings.json 文件,设置 db.provider 为 mongodb 并配置 db.conn 连接字符串;Docker 运行则通过环境变量 db__provider=mongodb 和 db__conn 注入参数。
从旧版本升级到 AgileConfig 1.9.0 需要注意什么?
升级时需注意系统日志表 agc_sys_log 的主键 id 数据类型已从自增 integer 改为 varchar36,升级前需自行修改表结构。
为什么 AgileConfig 1.9.0 要修改系统日志表的主键类型?
因为 MongoDB 不支持自增主键,所以将主键 id 从自增 integer 改为 varchar36 字符型。
使用 MongoDB 作为 AgileConfig 存储时有什么建议?
建议尽量使用 MongoDB 集群作为存储,因为单节点 MongoDB 不支持事务。
AgileConfig 1.9.0 版本中谁贡献了 MongoDB 支持?
MongoDB 支持由贡献者 pengqian089 提供 PR,并与作者合作完成了重构。