技术文章QuestDB Engineering
文章系统比较 QuestDB 的五种时序 JOIN:ASOF、WINDOW、HORIZON、LT、SPLICE,并说明 LATERAL JOIN 如何按行复用它们。作者以 FX 交易与行情表为例,在公开 demo 上给出可运行 SQL,解释每种连接的时间匹配方式、返回行数、聚合行为和典型用途:ASOF 取事件时刻的最新值,WINDOW 聚合时间窗口内多行,HORIZON 在多个固定偏移上重复 ASOF,LT 取严格早于当前时间戳的前值,SPLICE 实现双向全外 ASOF。文章还讨论 TOLERANCE、EXCLUDE PREVAILING、CTE 组合限制、WINDOW 与 HORIZON 的混淆、LT 避免前视偏差等边界。最后提醒 demo 数据为合成数据,应关注查询语义而非市场结论。
推荐收录:文章不是泛泛介绍,而是用一组可运行 SQL 和返回行数直接证明五种时序 JOIN 的语义差异,并给出选择依据与组合限制。它适合数据库、时序数据分析、量化/监控系统开发者作为查询设计与选型参考,ASOF/WINDOW/HORIZON 的区别和 LT 防前视偏差等方法可迁移到其他时序系统;主要风险是语法和部分行为绑定 QuestDB。
工程实践QuestDB Engineering
文章对比两种开放表格式在元数据存放位置上的根本差异:Iceberg 把元数据写成对象存储中的 metadata JSON、manifest list 和 Avro manifest 文件,目录只保存指向当前元数据文件的指针;DuckLake 则把全部元数据(文件列表、schema 历史、快照、统计信息)存放在 SQLite、Postgres 或 DuckDB 这类 SQL 数据库中,目录即元数据本身。作者由此推导出三点后果:查询规划退化为对索引表的 SQL 查询、不存在元数据小文件堆积因而无需 compaction、但读取方必须能连接该数据库导致生态覆盖较窄。文章随后给出把 QuestDB 冷存储的 Hive 分区 Parquet 通过 ducklake_add_data_files 零拷贝注册进 DuckLake 的具体脚本,并讨论增量同步、删除单文件时需重新注册存活集合、关闭 auto_compact 保护原始文件,以及纳秒时间戳在 DuckDB 视图中降为微秒的边界。
推荐收录。文章不是产品宣传,而是把“表格式即 Parquet 之上的元数据层”这一抽象讲清楚,并用 Iceberg 与 DuckLake 元数据存放位置的差异推导出查询规划、运维成本和生态覆盖上的具体取舍。附带的注册与同步脚本、零拷贝约束和版本相关注意事项,对做数据湖、冷存储分层或 lakehouse 选型的工程师有直接可迁移价值;需注意示例仓库明确非生产工具,且结论带有 QuestDB 自身存储的视角。
技术文章QuestDB Engineering
文章系统解释 Parquet 文件格式与 Iceberg 表格式的分层关系。先讲 Parquet 的列式布局、统计信息与谓词下推优势,再指出以目录管理多个 Parquet 会在原子提交、并发写、快照、schema 演进和小文件上出问题,而 Iceberg 正是为了解决这些问题。Iceberg 不替代 Parquet,而是在文件之上增加元数据层,通过快照实现原子提交、时间旅行与多引擎互操作,且可直接注册已有 Parquet 而无需重写。文章以 QuestDB 冷存储为例,展示将历史分区转为 Parquet 放入对象存储、再用 PyIceberg 的 add_files 注册为 Iceberg 表的流程,并说明分区同步、纳秒时间戳和 UUID 兼容等运维边界。作者明确演示脚本是 demo,生产需自建带认证目录。
本文清晰区分了文件格式与表格式的职责边界,并用 QuestDB 冷存储配合 Iceberg 注册的完整示例证明 Parquet 可以无需重写即被 Iceberg 采用,概念解释与工程实践并重,属于长期可参考的数据工程内容。适合数据平台工程师、数据架构师及希望理解 Lakehouse 底层原理的读者。文中也提醒了分区同步和类型映射等落地风险,但厂商背景和 demo 代码需结合生产环境谨慎对待。
工程实践QuestDB Engineering
QuestDB 10.0引入新的二进制列式线协议QWP,用于替代ILP(文本摄取)和PGWire(行式查询)的组合。文章介绍了QWP的设计动机:性能差距(QWP摄取19M行/秒,ILP仅5.3M;查询结果回传220M行/秒)以及单一客户端同时支持读写、DataFrame和Arrow双向传输、内置故障转移的需求。QWP在线上传输类型化列而非行,SYMBOL列字典编码,客户端将批量数据零拷贝映射到Arrow缓冲,但可空列、位压缩时间戳和zstd压缩仍需额外处理。文章还详细说明了多主机故障转移机制(服务器通告角色和区域,客户端路由至主或副本)、存储转发队列(支持磁盘持久化和重放)以及至少一次语义,建议在表上声明DEDUP UPSERT KEYS。作者对比了ILP/PGWire/REST的使用场景,并指出QWP适合新项目和自己编写的客户端,第三方工具仍应使用既有兼容协议。
这是一篇来自QuestDB官方工程博客的技术文章,提供了QWP协议的完整设计细节和基准数据,包括性能对比、柱式格式、Arrow集成、故障转移和存储转发机制,内容有实质深度而非单纯宣传。适合数据库内核开发者、时序数据库用户以及需要设计高性能数据摄入/查询协议的系统工程师阅读。文章中的协议取舍、迁移路径和客户端行为规范具有可迁移价值,但需注意官方立场可能对性能数字偏乐观,读者应结合自身场景验证。
工程实践QuestDB Engineering
文章测试 QuestDB 新 QWP 协议将查询结果流式传输到 Apache Arrow 的性能,并与 ClickHouse、TimescaleDB 对比。作者用简单查询和并行读取器基准,测量 500M 行数据的导出速度。最初几轮结果受磁盘 I/O、Python GIL 等因素影响,修正后 QuestDB 达到 220M 行/秒,首批数据仅 32ms,比 ClickHouse 最快流式路径快 2.35 倍。文章还分析了每行字节数、存储占用、扩展性和协调成本,并指出测试的局限(单一 schema、低基数字符串等)。该文提供了可复现的测试方法和详实的过程反思。
推荐收录,因为它不是简单的产品宣传,而是深入的工程基准测试,展示了如何识别并消除磁盘、GIL、协调成本等测试伪影,并提供了可复现的仓库和明确的局限声明。适合数据库选型、性能评估或数据管道设计的读者,可迁移价值在于严谨的流式数据导出基准测试方法和工程分析框架。