use*_*154 17 database version-control data-integrity data-integration
我的四人开发团队已经面临这个问题一段时间了:
有时我们需要处理同一组数据.因此,当我们在本地计算机上进行开发时,dev数据库将远程连接.
但是,有时我们需要在db上运行操作,这些操作将依赖于其他开发人员的数据,即我们破坏关联.为此,本地数据库会很好.
是否有解决这种困境的最佳做法?有没有像"数据SCM"工具?
以一种奇怪的方式,在git repo中保留SQL插入/删除/更新查询的文本文件会很有用,但我认为这可能非常快速地变慢.
你们怎么处理这个?
您可能会发现我的问题如何从源代码控制构建数据库有用.
从根本上说,有效管理共享资源(如数据库)很难.这很难,因为它需要平衡多人的需求,包括其他开发人员,测试人员,项目经理等.
通常,为个体开发人员提供他们自己的沙盒环境更有效,他们可以在这种环境中执行开发和单元测试,而不会影响其他开发人员或测试人员.这不是灵丹妙药,因为您现在必须提供一种机制来保持这些多个独立环境随着时间的推移彼此同步.您需要确保开发人员有合理的方式来获取彼此的更改(包括数据,架构和代码).这不是必须的.良好的SCM实践可以提供帮助,但仍需要相当程度的合作和协调才能实现.不仅如此,而且为每个开发人员提供他们自己的整个环境副本可能会带来存储成本,以及额外的DBA资源,以帮助管理和监督这些环境.
以下是一些供您考虑的想法:
我们使用本地开发人员数据库和单个主数据库进行集成测试。我们将创建脚本存储在 SCM 中。一位开发人员负责更新基于“黄金大师”模式的 SQL 脚本。开发人员可以根据需要对其本地数据库进行更改,根据需要从集成数据库中的数据填充,使用导入过程,或使用工具(在我们的例子中为 Red Gate Data Generator)生成数据。如有必要,开发人员可以清除他们的本地副本,并可以根据需要从创建脚本和集成数据中刷新。通常,数据库仅用于集成测试,我们将它们模拟出来用于单元测试,因此最大限度地减少了保持同步的工作量。