这个问题我和很多头部大厂都深入的聊过,如果是非常简单的场景,且没有复杂的事务,非常简单。如何定义简单,就是SQL可以脚本化的方式,比如数据库结构、触发器、过程、函数、索引、视图的变更,这是简单,那什么不简单,涉及了业务数据和应用数据的回滚,那就是不简单。
举个简单的例子,变更的时候加了一列字段,放了业务进行验证,发现有问题,如何回滚?必须要人的介入才能回滚。
所以,数据库的敏捷有好的地方,也有不好的地方,那如何将数据库纳入到持续部署的环节,我个人认为,首先要有专享Schema。其次要将sql纳入到版本控制,然后要对测试过程进行严格的管控,最后也是最重要的,一定要有UAT环境进行流量试错。
数据库的持续发布,难的不是技术,难的是复杂的业务场景下,业务逻辑和数据的回滚,也就是我们所说的脏数据的处理。