背景
1、产品的问题点
- PG 函数和存储过程没有版本管理
2、问题点背后涉及的技术原理
- create or replace function|procedure会直接覆盖原来的函数或存储过程.
3、这个问题将影响哪些行业以及业务场景
- 通用
4、会导致什么问题?
- 在执行create or replace function|procedure 后如果想回退, 必须有以前的函数或存储过程定义, 否则就只能从逻辑备份中或者PITR模式恢复了.
5、业务上应该如何避免这个坑
- 先备份原有的存储过程或函数定义, 再覆盖.
6、业务上避免这个坑牺牲了什么, 会引入什么新的问题
- 管理复杂度增加, 而且依赖人, 还是容易出问题.
7、数据库未来产品迭代如何修复这个坑
- function和procedure的逻辑无异于业务的代码逻辑, 所以希望内核增加function和procedure的版本管理能力, 可以查询到历史版本内容, 方便回退版本.