QuestDB线路协议

QuestDB Line Protocol

我正在使用此处的 NodeJS 演示代码:https://questdb.io/docs/develop/insert-data/ 将数据插入 QuestDB,如下所示:

   setInterval(() => {
        run();
    }, 3000);

(桥接网络上有 2 Docker 个容器)

我有一个浏览器 window 打开 运行

select count(*) from 'trades'

但是,查询只运行一次,然后returns结果相同。如果我重新启动 docker 容器,查询 returns 一个更新的值,所以我假设这些值已成功进入数据库,但它们没有反映在 Postgres 查询中。当我在 Node 中使用 pg 客户端时,我看到了相同的行为。

有什么解释或理论可以帮助我找到根本原因吗?

在 QDB 中,数据在提交之前对查询不可见。 在 ILP 接收者提交的情况下,不会在每一行之后甚至在断开连接时发生。相反,QDB 使用许多属性来确定何时有效提交。 在这种情况下,减少插入到提交延迟的最简单方法是将 cairo.max.uncommitted.rows 减少到例如10 in conf/server.conf (plus instance/container restart) 然后插入10+条记录 .

您将在以下位置找到有关 ILP 提交的更多详细信息 https://questdb.io/docs/reference/api/ilp/tcp-receiver/#commit-strategy