如何对与数据库通信的源代码进行版本控制?

问题描述 投票:0回答:1

我正在编写与 MySQL 服务器通信的 C++ 代码。 C++代码和MySQL服务器相互依赖。我使用

git
来控制 C++ 代码的版本,并使用 MySQL Workbench 来管理数据库。每当我对数据库查询存储过程进行更改时; Db 和 C++ 代码必须处于匹配状态。我不知道如何用git管理数据库。这使得从 Dev 环境转移到 Prod 时可能会出错。像这样的分布式系统版本控制的最佳实践是什么?

git mysql-workbench distributed-system
1个回答
0
投票

数据库配置/脚本/模式和 C++ 代码通常驻留在不同的代码存储库中。

第一步是使部署的代码和数据库与其相应的存储库保持同步(但彼此之间不同步,稍后会详细介绍)。通常,有两种选择:手动 - 通过某种 SOP(标准操作程序),或自动 - 有一个管道/工具来监视这些存储库中的更改,并通过逐步过程(开发/预生产/产品)。

第二步是谁让数据库和代码保持同步。例如,如果表被重命名,代码需要知道名称已更改。要回答的大问题是:我们是否希望系统在迁移更改时保持在线(可操作)。

如果系统可以离线,那很好,因为它可以简化事情。操作员或自动化将减少系统的使用并单独更新数据库(架构迁移)并部署新代码。系统恢复上线后。

如果系统必须保持可用,则需要涵盖两个项目。首先是数据库迁移,这可能很棘手,更新时复制等工具可能会有所帮助。这很棘手,取决于数据库和数据库更改的性质。

保持系统运行的第二部分是让部署的代码在数据库更新时正常工作。部署代码时,它会看到旧的数据库,然后在代码已经存在的情况下更新数据库。基本上,需要编写代码来支持更改前后状态的数据库。这种方法称为向后/向前兼容性。

© www.soinside.com 2019 - 2024. All rights reserved.