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
我正在使用此处的 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