在 postgresql 中传送数据集

Shipping datasets in postgresql

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

根据数据集的大小,我会考虑几种方法。

  • 最简单的是 SQL 带有数据的脚本,例如INSERTCOPY.
  • CSV 文件很好,允许执行 COPY 来获取它。
  • pg_dump binary output file (or folder) is another choice and should be restored by pg_restore
  • 您可以以您喜欢的文件格式存储您的数据集,并使用 file_fdw 外部数据包装器来访问它。

如您所见,有很多选项。所以我们需要一些细节,我相信。