如何将 ILP 数据插入到 QuestDB 中的非 WAL 表中?

问题描述 投票:0回答:1

我开始使用QuestDB并尝试使用ILP客户端发送数据。我做了一个这样的表格:

CREATE TABLE 'trades' (
  symbol SYMBOL,
  side SYMBOL,
  price DOUBLE,
  amount DOUBLE,
  timestamp TIMESTAMP
) timestamp (timestamp) PARTITION BY NONE BYPASS WAL;

我使用Python客户端发送,如下所示:

from questdb.ingress import Sender, TimestampNanos

conf = f'http::addr=localhost:9000;'
with Sender.from_conf(conf) as sender:
    sender.row(
        'trades',
        symbols={'symbol': 'ETH-USD', 'side': 'sell'},
        columns={'price': 2615.54, 'amount': 0.00044},
        at=TimestampNanos.now())
    sender.flush()

但是当我发送它时,我收到一个错误,说我无法将数据插入到非 WAL 表中。我该如何解决这个问题?

database time-series questdb
1个回答
0
投票

默认情况下,ILP 客户端使用 HTTP 传输将数据发送到 QuestDB。 ILP/HTTP 连接器仅与 WAL 表兼容。如果您希望将数据发送到非 WAL 表,则应该使用 ILP/TCP,只需对配置字符串进行简单更改即可对其进行配置:

conf = f'tcp::addr=localhost:9009;'

在大多数情况下,应该首选 WAL 表,因为它们支持多个协议的并发摄取,并且可以更好地处理无序数据。

此外,使用 HTTP 传输进行 ILP 提交可提供事务性和错误处理,从而更轻松地发送数据并保证幂等性。使用 TCP 传输,可以进行部分写入或断开连接,而不会出现有用的客户端错误。

如果您遇到 WAL 表问题,您应该联系 QuestDB 支持寻求帮助!

© www.soinside.com 2019 - 2024. All rights reserved.