特性请求: 支持交易模式 DB 连接和/或 SELECT 查询的独立 DB 端点
作者: eskander48创建于 2025年8月15日更新于 2026年4月18日
标签enhancement
问题 在带有PostgreSQL(如CNPG)的Kubernetes环境中,许多部署旨在优化性能,将SELECT查询通过路由到与卡斯道舱相同的可用区中只读的复制品,同时将INSERT/UPDATE/DELETE查询保留在主节点上.
目前,Casdoor的数据库访问模式使这一点变得很困难,因为:
- 应用程序在多个交易中重新使用准备的语句, 使用 Pgcat 或 Odyssey 等中间软件在交易集合模式中失败( pq: prepared语句不存在) 。
- 在会话集合模式中,Pgcat无法可靠地根据类型进行路由查询,导致DELETE/UPDATE被发送到复制品,从而导致只读交易出错.
- 卡斯道没有内置选项来配置读取和写取的单独连接。
因此,如果不修改卡斯多尔的源代码,就不可能在代理层使用有效的读取/写分拆.
建议的解决办法 添加支持 :
交易集合兼容性 – 确保每个交易都会生成已准备好的报表,因此交易模式中像Pgcat那样的中间软件可以工作.
可选的单独读取连接——允许指定一个额外的 READ DB DSN(或类似),以便SELECT 查询可以被路由到只读的数据库连接,独立于写作.
这将使Casdoor能够更有效地扩大生产规模,减少阅读繁重工作量的延迟性,并更好地与Postgres HA设置相融合.
内容来源: casdoor/casdoor