Mah*_*der 9 python database postgresql sqlalchemy database-schema
我很好奇其他人如何在没有DBA的情况下解决了许多(10+)开发人员维护和同步数据库更改的问题?我的意思是,基本上,如果有人想要对数据库进行更改,那么采取哪些策略呢?(即我已经创建了一个'Car'模型,现在我想将适当的DDL应用于数据库等.)
我们主要是一个Python商店,我们的ORM是SQLAlchemy.以前,我们用这样的方式编写了我们的模型来使用我们的ORM创建模型,但是我们最近放弃了这个模型,因为:
我们解决这个问题的方法是基本上有一个"看门人",他会检查数据库中的每个更改,并将所有接受的数据库更改应用到accepted_db_changes.sql文件中,从而需要进行任何数据库更改的开发人员将他们的请求放入proposed_db_changes.sql文件中.我们检查这个文件,并且,当它更新时,我们都将更改应用到我们的开发机器上的个人数据库.我们不在模型上创建索引或约束,它们明确地应用于数据库.
我想知道维护数据库模式的一些策略是什么,如果我们看起来合理的话.
谢谢!
该解决方案是行政性的而不是技术性的:)
一般规则很简单,项目中应该只存在树状依赖关系: - 应该始终有一个模式的主源,与版本控制中的项目源代码一起存储 - 受主变化影响的所有内容每次更新主源代码时都应自动重新生成源代码,不允许手动干预,如果自动生成不起作用 - 修复主源代码或生成器,不要手动更新源代码 - 所有重新生成都应该由更新主源的同一个人执行,并且包括主源更改在内的所有更改应被视为单个事务(单个源控制提交、每个受影响环境的单个构建/部署,包括数据库更新)
执行后,结果 100% 可靠。
主源本质上有 3 种可能的选择 1) 数据库元数据,源是在数据库更新后由连接到实时数据库的某些工具生成的 2) 源代码,某些工具从源生成 SQL 方案,以特殊方式注释和然后 SQL 在 DB 上运行 3) DDL,SQL 模式和源代码都是由某个工具生成的 4) 使用一些其他描述(比如由生成 SQL 模式和源代码的特殊 Perl 脚本读取的文本文件)
1,2,3 同样好,前提是您需要的工具存在并且不太昂贵 4 是一种通用方法,但应该从项目一开始就应用它,并且会产生数千行代码的开销维护一种奇怪的语言
| 归档时间: |
|
| 查看次数: |
867 次 |
| 最近记录: |