我正在构建一个测试应用程序,该应用程序需要一个功能稳定的数据库,该数据库中填充有确保能在我的应用程序中工作的数据。我的团队拥有一个稳定的环境(数据质量和性能),还有一堆要用于新应用程序的preprod数据库。我全部通过AWS进行管理。
问题: 测试/预生产数据库可能与通用的功能稳定的数据库不同步(我们称此功能稳定的数据库为“ stage db”)。理想情况下,出于我的应用程序的目的,它将对已知的功能稳定的数据库进行测试,而不必在每次测试/预生产数据库被错误的测试污染时都还原不良数据(因为我们拥有并维护一个干净的数据库[stage-db],我们应该获取其数据集)。
方法1: 手动转储相关的数据库表,仅将那些表还原到现有数据库。 这应该是高性能的,但可能会变得棘手。我怀疑这里会有很多意想不到的挑战。我将其更多地视为经典方法,但我自己从未做到过,因此我对此表示怀疑。 This is an example所述方法。
方法2(到目前为止,我建议的方法): 每次污染数据库时,都会从干净数据库的已知快照中启动新数据库。 性能或成本效益不高,但每次都可确保数据库稳定。这造成了不断旋转数据库的可怕情况,并为该新数据库的完全建立产生了延迟。 可以创建一个数据库池,而不必等待一个数据库启动(使用/污染一个数据库后,只需销毁它,启动另一个数据库并为其指向通用DNS)即可;但是,这在成本上效率低下,而且闻起来不合常规。
方法3: 创建一个数据同步应用程序以在已知的测试数据库受到污染时对其进行更新。触发器可以按计划触发同步代码。
我很想听听对这些想法的想法和批评。也许经典方法(方法1)以某种方式演变了!我可能离理想的答案还很远,所以我全神贯注!我将在与这个主题的其他人会面时更新此SO帖子。