我需要执行一个测试,我必须在 PostgreSQL(和 TimescaleDB)数据库中模拟 20 年的历史数据。我的问题是我必须生成.sql文件并在目标数据库中摄取它们(使用psql-client )。
我们做了一些计算,结果是我们的数据库将有2610亿行在我们的表中 20 年,所以每年包含13.05B数据。
对于每一行,我们都有一个时间戳(整数类型),我认为,为了提高效率,我在我的 .sql 文件事务中写了10.000 个元素。 为了使生成的.sql文件在磁盘空间中变小(我在 python 中生成这些文件),我将每个文件限制为20M 行。
所以我想我可以在 bash 文件中动态生成这些文件,当生成一个文件时,我运行一个 psql 命令将它摄取到数据库中,但问题是我不知道如何处理它: ingest 过程比 .sql 文件生成花费更多时间,所以在 bash 命令中,恐怕我的 bash 脚本会等待 ingest 过程,然后开始生成新的 .sql 文件并再次执行 ingest 过程。
总而言之,我尝试创建一个伪批处理摄取过程,其中每个已成功摄取的生成的 .sql 文件都将被删除,以避免占用太多磁盘空间。
如何避免在开始另一个 .sql 文件生成之前等待摄取过程然后开始摄取过程的事实?
这是出于开发目的,我想要摄取的这些数据接近于我们想要在生产模式下创建的数据。目前的目标是执行读取请求并在 PostgreSQL 和 TimescaleDB 中比较这些请求。