批量乱序数据导入QuestDB
Bulk out-of-order data import into QuestDB
我正在考虑使用 QuestDB 处理大量金融交易数据。
我已阅读并理解 https://questdb.io/docs/guides/importing-data 但我的情况略有不同。
- 我有多种工具的交易数据。
- 对于每台仪器,微秒时间戳数据跨越数年。
- 每个仪器的数据都在一个单独的 CSV 文件中。
我的主要用例是查询任意工具子集的全局时间排序交易序列。为了清楚起见,查询的结果看起来像
timestamp,instrument,...
0001,A,...
0003,B,...
0004,C,...
0004,A,...
0005,B,...
因此,我认为我需要将所有交易放在一个 table 中,并带有指定的时间戳和工具索引。我现在不一定需要 QuestDB 的任何时间序列处理功能,但我确实需要按时间戳排序而不是 运行 内存不足。
我的问题是(除了这种方法通常是否有意义之外):
考虑到每个 CSV 文件跨越数年,是否有一种有效(且简单)的方法将数据合并为一个 table?
以后每次添加新乐器都需要重建table吗?
从 6.0 开始,您可以简单地将 CSV 逐一附加到相同的 table,因为 table 已指定时间戳并对其进行分区。
如果您的 CSV 很大,我认为将它们分批处理在几百万行的事务中比一次卸载数十亿要好。
根据您拥有的数据量和您的盒子内存,您需要以单个分区适合内存多次的方式进行分区。因此,您可以选择是要按天分区还是按月分区。
决定分区后,如果您能够从所有 CSV 中逐日(或逐月)上传,则可以加快上传速度。
您不需要每次添加仪器时都重建table,当您乱序插入记录时,table会自动逐个分区重写。
我正在考虑使用 QuestDB 处理大量金融交易数据。
我已阅读并理解 https://questdb.io/docs/guides/importing-data 但我的情况略有不同。
- 我有多种工具的交易数据。
- 对于每台仪器,微秒时间戳数据跨越数年。
- 每个仪器的数据都在一个单独的 CSV 文件中。
我的主要用例是查询任意工具子集的全局时间排序交易序列。为了清楚起见,查询的结果看起来像
timestamp,instrument,...
0001,A,...
0003,B,...
0004,C,...
0004,A,...
0005,B,...
因此,我认为我需要将所有交易放在一个 table 中,并带有指定的时间戳和工具索引。我现在不一定需要 QuestDB 的任何时间序列处理功能,但我确实需要按时间戳排序而不是 运行 内存不足。
我的问题是(除了这种方法通常是否有意义之外):
考虑到每个 CSV 文件跨越数年,是否有一种有效(且简单)的方法将数据合并为一个 table?
以后每次添加新乐器都需要重建table吗?
从 6.0 开始,您可以简单地将 CSV 逐一附加到相同的 table,因为 table 已指定时间戳并对其进行分区。
如果您的 CSV 很大,我认为将它们分批处理在几百万行的事务中比一次卸载数十亿要好。
根据您拥有的数据量和您的盒子内存,您需要以单个分区适合内存多次的方式进行分区。因此,您可以选择是要按天分区还是按月分区。
决定分区后,如果您能够从所有 CSV 中逐日(或逐月)上传,则可以加快上传速度。
您不需要每次添加仪器时都重建table,当您乱序插入记录时,table会自动逐个分区重写。