Database 在postgresql中发布数据集

Database 在postgresql中发布数据集,database,postgresql,continuous-delivery,Database,Postgresql,Continuous Delivery,我在考虑在postgresql(或任何)关系数据库中发布数据集的最佳方法。对于我们的大多数用例,我们将拼花地板文件放在有时间戳的文件夹中,并让客户机指向最新的、经过验证的数据集。如果我们无法更改客户端,那么我们将有一个“最新”文件夹,将验证数据放入其中。对于数据库表,最好的方法是什么?生成数据并将其写入表是一项耗时的操作。我们可以关闭数据库,对其进行写入,然后将其恢复,但这需要一些停机时间。理想情况下,我正在寻找一种在后台写入数据库、验证数据、然后“翻转”以使新数据“活动”的方法。有没有简单的方

我在考虑在postgresql(或任何)关系数据库中发布数据集的最佳方法。对于我们的大多数用例,我们将拼花地板文件放在有时间戳的文件夹中,并让客户机指向最新的、经过验证的数据集。如果我们无法更改客户端,那么我们将有一个“最新”文件夹,将验证数据放入其中。对于数据库表,最好的方法是什么?生成数据并将其写入表是一项耗时的操作。我们可以关闭数据库,对其进行写入,然后将其恢复,但这需要一些停机时间。理想情况下,我正在寻找一种在后台写入数据库、验证数据、然后“翻转”以使新数据“活动”的方法。有没有简单的方法可以做到这一点?我想我可以在Green/Blue部署中拥有两个数据库,然后进行客户端更新,但不知道是否有办法在不改变客户机的情况下做到这一点。

< P>根据数据集的大小,有几种方法可以考虑。

  • 最简单的方法是带有数据的SQL脚本,例如
    INSERT
    COPY
  • CSV文件很好,允许execute获取它
  • 二进制输出文件(或文件夹)是另一种选择,应该由
  • 您可以使用您喜欢的文件格式存储数据集,并使用外部数据包装器访问它

正如你所看到的,有很多选择。所以我们需要一些细节,我相信。

所以问题不是插入数据。更重要的是如何在后台进行操作并切换到新的数据集,而无需更新客户端(并且没有停机时间)。如果我们接受宕机,我就可以截短表,像往常一样插入和恢复。因为DDL在Postgres中是完全事务性的,所以你可以将数据插入到一个临时表,然后切换到一个真正的表。这听起来很有趣。开关是如何工作的?值得注意的是,数据集将涉及多个表,但我认为这不会是一个问题。这是有效的。在加载新数据之前,我创建一个表,插入,将旧表重命名为存档表,然后将新表重命名为旧表。必须处理权限,并且只有表所有者才能重命名表。