我很好奇其他人是如何解决在没有 DBA 的情况下跨许多(10 多个)开发人员维护和同步数据库更改的问题的?我的意思是,基本上,如果有人想对数据库进行更改,那么有哪些策略可以做到这一点?(即我已经创建了一个“汽车”模型,现在我想将适当的 DDL 应用到数据库等。)
我们主要是一家 Python 商店,我们的 ORM 是 SQLAlchemy。以前,我们编写模型的方式是使用 ORM 创建模型,但我们最近放弃了这种方式,因为:
- 我们无法使用 ORM 跟踪更改
- ORM 的状态与数据库不同步(例如,许多差异主要与索引和唯一约束有关)
- 除非开发人员通过电子邮件向团队记录数据库更改,否则无法审核数据库更改。
我们对这个问题的解决方案基本上是让一个“看门人”个人检查数据库中的每一个更改并将所有已接受的数据库更改应用到一个accepted_db_changes.sql
文件中,从而需要进行任何数据库更改的开发人员将他们的请求放入一个proposed_db_changes.sql
文件中。我们签入这个文件,当它更新时,我们都将更改应用到我们开发机器上的个人数据库中。我们不会在模型上创建索引或约束,它们会显式应用于数据库。
我想知道维护数据库模式的一些策略是什么,以及我们的策略是否合理。
谢谢!