我一直听说,根据生产数据进行开发是一种不好的做法,并且目前正朝着Dev> Stage> Production模型发展,这主要是因为我有一个技能最低的新员工,而我宁愿没有他还可以直接处理生产数据。
但是很长一段时间以来,我一直以最小的麻烦直接使用生产数据,除了可能在这里或那里出现一些错误,诸如拼写问题,错误的替换文本,指向错误位置的链接之类的东西。这似乎是由于我缺乏同行评议,而不是因为使用实时数据。
那么,为什么在实时站点上进行开发却是如此糟糕呢?
我一直听说,根据生产数据进行开发是一种不好的做法,并且目前正朝着Dev> Stage> Production模型发展,这主要是因为我有一个技能最低的新员工,而我宁愿没有他还可以直接处理生产数据。
但是很长一段时间以来,我一直以最小的麻烦直接使用生产数据,除了可能在这里或那里出现一些错误,诸如拼写问题,错误的替换文本,指向错误位置的链接之类的东西。这似乎是由于我缺乏同行评议,而不是因为使用实时数据。
那么,为什么在实时站点上进行开发却是如此糟糕呢?
Answers:
如果在开发过程中运行的是包含现有数据库表INSERT
或UPDATE
在现有数据库表上的SQL命令,则可能会冒着那些数据库表对任务至关重要的风险。
有些地方每隔一段时间(例如,每周一次或应开发人员要求)将生产数据同步到开发数据库中,以便您可以使用新数据进行开发。
但是,如果您的生产数据不会受到您所做工作的威胁,例如,如果您只是在开发某些数据的视图,通常这没什么大不了的。现在,如果您正在运行进行表扫描的报告,则有可能锁定表,然后现有用户会受到影响。
在这种情况下,如果没有“官方” DBA,我会请我的数据库管理员处理,我会谨慎一些。创建一个开发数据库非常简单,甚至对我自己也是如此。在团队中至关重要。失败的话,如果您坚持只拥有一个数据库,则可以给开发数据库表加上前缀DEV_
并感觉好一点。是的,这需要进行一些代码更改,但是在开发中$debug = true
,在开发等过程中添加一些变量通常是值得的。
有很多方法可以解决这个问题。这非常取决于您的情况。
您不想在生产服务器上针对生产数据进行开发。有两个重要原因。
如果可能的话,我永远不会在现场进行开发工作。最好的选择是对数据库和页面进行备份并使用副本,然后推送更新。Msft的SyncToy是帮助我大忙的一个工具。