我正在使用 QuestDB,我可以使用客户端库通过 HTTP 通过 ILP 摄取数据,因此 QuestDB 中有一个可用的 HTTP 端点用于摄取。
我希望能够在没有依赖关系的情况下进行摄取,仅使用
curl
或任何其他 HTTP 客户端,但是当我尝试这样做时:
curl -X PUT http://localhost:9000 --data-binary $'trades,symbol=ETH-USD,side=sell price=2615.54,amount=0.00044 1646762637609765000\n'
我明白了
Method not supported
摄取的 url 和端口确实是(默认情况下)
http://localhost:9000
,但是摄取的端点是 /write
,所以我们必须像这样发送数据:
curl -X POST http://localhost:9000/write --data-binary $'trades,symbol=ETH-USD,side=sell price=2615.54,amount=0.00044 1646762637609765000\n'
值得注意的是,在使用客户端库时,它们会处理诸如缓冲行(按行数或频率)或在发生任何暂时性故障时重新连接之类的事情,但是当使用独立的 HTTP 客户端时,我们不会得到其中任何一个。
至少,批量写入数据是个好主意,除非我们的摄取量非常低。否则,服务器将因小事务而承受大量开销。作为参考,官方库的默认值为每批 75K 行(或 1000 毫秒,以先到者为准)。
一次性发送多行就像用换行符分隔它们一样简单,如下所示:
curl -X POST http://localhost:9000/write --data-binary $'trades,symbol=ETH-USD,side=sell price=2615.54,amount=0.00044 1646762637609765000\ntrades,symbol=BTC-USD,side=sell price=39269.98,amount=0.001 1646762637710419000'
``