PostgreSQL实时和测试数据库

时间:2014-09-26 15:25:30

标签: sql database postgresql

我现在正在使用PostgreSQL几个月。在上线之前,我们通常使用实时数据库几乎所有内容(在实时数据库表中创建新列,执行更新和插入查询等)。但是现在我们想要上线,在我们这样做之前我们必须采取不同的做法。最好的方法是拥有一个测试数据库和实时数据库。

现在我创建了一个实时数据库的副本,因此我们有一个测试数据库来运行测试。问题是24小时后数据已经过时了,所以我们实际上需要每24小时创建一个新的副本,手动操作并不是很聪明。

所以我的问题是,这边的人是否知道处理这个问题的正确方法?

我认为最理想的方式是: - 将实时数据库中的一组表复制到测试数据库(跳过用户表等)。 - 可以添加列,重命名甚至删除它们,当我们部署新版本的网站时,将这些更改从测试数据库传输到实时数据库(net necassary,但这将是一个很好的功能)。

1 个答案:

答案 0 :(得分:0)

如果您的数据库结构发生变化,您可以 NOT 自动进行。你吹走开发工作和数据。你想要它手动。


我曾经管理过一个类似情况的团队:多TiB数据库,每天更新,需要针对最新数据进行测试和开发。以下是我们解决问题的方式:

在我们的数据库中,我们定义了一个名为TODAY()的函数。在我们的实时系统中,这是NOW()的包装器。在我们的测试系统中,它调用了一个单列表,其中唯一的行是我们可以设置的日期。这意味着我们的测试系统是一台时间机器,它可以假装任何日期是当前日期。

这意味着我们编写的每个功能或程序都必须具有时间意识。我应该关心未来安排的活动吗?未来多远?这使得我们的功能非常强大,并且可以很容易地针对各种各样的历史数据进行测试。这有助于捕获我们从未想过会发生的大量错误,但我们看到的确会出现在我们的历史数据中。这就像数据库的函数式编程一样!

我们仍会在大约每个月左右从实时备份安排数据库更新。这样可以获得更多数据并测试我们的备份/恢复过程。我们的DBA将运行"测试后同步"将为开发人员设置权限的脚本,所以我们非常确定我们在测试系统上运行的任何内容都可以在实时系统上运行。这有助于我们构建部署数据库脚本。