在 postgresql 中传送数据集
Shipping datasets in postgresql
我正在考虑在 postgresql(或任何)关系数据库中传输数据集的最佳方式。对于我们的大多数用例,我们将镶木地板文件放在带时间戳的文件夹中,并让客户指向最新的、经过验证的数据集。如果我们无法更改客户端,那么我们将拥有一个“最新”文件夹,我们会将经过验证的数据放入其中。使用数据库表执行此操作的最佳方法是什么?生成数据并将其写入表是一项耗时的操作。我们可以关闭数据库,写入数据,然后重新启动,但这需要一些停机时间。理想情况下,我正在寻找一种在后台写入数据库、验证数据,然后“翻转”以使新数据“生效”的方法。有没有简单的方法可以做到这一点?我想我可以在绿色/蓝色部署中有两个数据库,然后更新客户端,但想知道是否有办法在不更改客户端的情况下执行此操作。
根据数据集的大小,我会考虑几种方法。
- 最简单的是 SQL 带有数据的脚本,例如
INSERT
或 COPY
.
- CSV 文件很好,允许执行
COPY
来获取它。
- pg_dump binary output file (or folder) is another choice and should be restored by pg_restore
- 您可以以您喜欢的文件格式存储您的数据集,并使用
file_fdw
外部数据包装器来访问它。
如您所见,有很多选项。所以我们需要一些细节,我相信。
我正在考虑在 postgresql(或任何)关系数据库中传输数据集的最佳方式。对于我们的大多数用例,我们将镶木地板文件放在带时间戳的文件夹中,并让客户指向最新的、经过验证的数据集。如果我们无法更改客户端,那么我们将拥有一个“最新”文件夹,我们会将经过验证的数据放入其中。使用数据库表执行此操作的最佳方法是什么?生成数据并将其写入表是一项耗时的操作。我们可以关闭数据库,写入数据,然后重新启动,但这需要一些停机时间。理想情况下,我正在寻找一种在后台写入数据库、验证数据,然后“翻转”以使新数据“生效”的方法。有没有简单的方法可以做到这一点?我想我可以在绿色/蓝色部署中有两个数据库,然后更新客户端,但想知道是否有办法在不更改客户端的情况下执行此操作。
根据数据集的大小,我会考虑几种方法。
- 最简单的是 SQL 带有数据的脚本,例如
INSERT
或COPY
. - CSV 文件很好,允许执行
COPY
来获取它。 - pg_dump binary output file (or folder) is another choice and should be restored by pg_restore
- 您可以以您喜欢的文件格式存储您的数据集,并使用
file_fdw
外部数据包装器来访问它。
如您所见,有很多选项。所以我们需要一些细节,我相信。