ClickHouse Engineering

58 篇内容

工程实践ClickHouse Engineering

What I learned from a month with WalShadow on ClickHouse Managed Postgres

文章记录作者对 ClickHouse Managed Postgres 内置 WalShadow 的为期一个月私有预览测试,比较其与 ClickPipes 从 Postgres 向 ClickHouse 同步变更的延迟和运维表现。作者让同一源库并行运行两条链路,以提交到目标可见为口径,在每秒 1 千至 20 万行写入下测量延迟,并校验行数、求和与哈希一致性。结果显示 WalShadow 中位延迟稳定在约 0.4 秒,而 ClickPipes 在约每秒 5 万行以内受 Sync interval 影响、超过后持续积压。文章还验证仅写 Postgres 时聚合正确,模式变更、源库重启/扩缩容、目标停止等可自动恢复,并列出按表并行可见、初始加载 _commit_ts/_lsn、大事务阻塞等边界,结论限于私有预览环境。

推荐收录:文章提供了同源同目标的并行对比实验,给出提交到可见延迟、吞吐拐点和数据一致性校验等直接证据,并系统测试扩缩容、重启、目标停止等运维场景。适合数据库工程师、数据平台与实时分析架构师评估 Postgres CDC 方案;其测量口径、故障场景清单和目的地表使用注意事项可迁移到其他同步链路。需注意这是厂商博客中的私有预览结果,默认值和性能结论可能随正式版变化。

技术文章ClickHouse Engineering

ClickHouse release 26.10

文章是 ClickHouse 26.10 版本发布说明,但并未停留在变更列表,而是用 SQL 示例解释函数组合运算符、写入行数配额、数组/Map 新函数、SQL 兼容整数除法、IN 子查询落盘、LowCardinality GROUP BY 优化、Top-K 动态过滤、实验性列缓存、LATERAL JOIN 和任意 ON 条件 JOIN 等功能。作者结合 UK 房产、IMDb 与 Amazon 评论数据集,给出耗时、读行数和峰值内存对比,说明优化收益及启用参数。文中也标注了实验特性、默认关闭项、依赖 wide part 或主键等适用边界。其价值集中在 ClickHouse 版本升级评估和查询调优参考,属于版本相关技术说明而非通用数据库理论。

推荐收录:文章虽为版本发布稿,但包含函数组合重写为 lambda、IN 集合落盘、Top-K 动态过滤与列缓存等机制说明,并配有可复现的 SQL 和性能数据。对正在使用或评估 ClickHouse 的数据库工程师、数据平台开发者有直接参考价值;需注意其结论绑定 26.10 版本和特定数据集,不能外推为通用性能结论。

工程实践ClickHouse Engineering

Fencing a Postgres primary that might still be alive

文章讨论托管 PostgreSQL 在主库可能仍存活时的 fencing:仅提升备库并切换 DNS 无法阻止旧主库继续写入,异步复制、quorum commit 和客户端取消查询都可能造成脑裂。作者介绍 Ubicloud 控制面的并行 fencing 策略:裸金属在宿主机关闭 veth,AWS 强制解绑承载用户流量的第二块网卡,GCP 删除 Dynamic NIC,并给出实测延迟。文中也指出 pg_stop 重启后失效、pg_hba 只影响新连接等局限,以及所有机制失败仍提升备库的 fail-open 取舍。结论依赖各云平台网卡可解绑能力,核心是可用性与一致性之间的显式权衡。

推荐收录:文章以真实托管 PostgreSQL 故障切换为背景,给出跨裸金属、AWS、GCP 的具体 fencing 实现、失败路径和实测耗时,而非概念性介绍。对负责数据库高可用、控制面或云基础设施的工程师,可直接借鉴“先阻断旧主库写入再提升”的流程设计、并行机制与 fail-open 取舍;注意其结论受各平台网卡解绑能力约束。

技术文章ClickHouse Engineering

Does your application need local data or faster Postgres?

文章围绕“应用变慢时该给应用加一份本地数据副本,还是直接用更快的 Postgres”展开架构权衡。作者先拆解同步引擎的机制:应用以声明方式订阅逻辑复制流中的表、行、列子集,在客户端或边缘节点物化,读走本地、写仍回中心库;代价是要维护第二份有生命周期的数据,并在乐观更新与提交变更到达之间做对账。文章认为只有离线、弱网或大量客户端重复读同一稳定工作集时,本地副本才划算,而 AI Agent 的查询路径随任务变化,使子集边界、渐进加载与同步扇出更难摊薄。作者建议先确认瓶颈是否在托管库的网络存储,包括 IOPS 与延迟、WAL、VACUUM 争用 I/O;随后介绍本地 NVMe、只读副本、跨 AZ standby 同步复制,以及 WalShadow 把分析负载下沉到 ClickHouse 的分层方案,并承认 NVMe 无法解决低效查询,连接池、查询优化和并发控制仍不可少。

推荐收录:文章把“加缓存或同步层”的常见反应拆成存储瓶颈、读写路径、数据副本生命周期、Agent 工作集可预测性四个可判断维度,并给出适用边界(离线、弱网、重复读同一工作集)与反例,对做后端与数据架构选型的读者有可迁移价值。需注意它出自 ClickHouse 官方博客,NVMe 与 PostgresBench 的对比数据属厂商自测,结论应结合自身负载复核后再采纳。

工程实践ClickHouse Engineering

How OpenRouter observes, understands, and acts on 740 million LLM requests a day with ClickHouse Cloud

文章以 OpenRouter 为例,说明其用 ClickHouse Cloud 统一承载 LLM 网关的可观测性、公开模型排行、内部 AI Agent 和路由决策数据。请求遥测通过同步/异步批量插入、ClickPipes 与 Fivetran 进入原始表,再由物化视图生成活动、端点健康和任务类型汇总,并用 dbt 与 Airflow 构建数仓。内部 Agent 通过受控 API 查询数据,支持请求失败追踪和错误归因。路由形成闭环:读取用户偏好、评估供应商、选择端点并回写结果;Jev Router 还按任务分类、真实使用排名、约束过滤和端点选择来选模型。文章属于厂商案例,缺少详细 schema、性能成本对比和失败边界。

推荐收录:文章给出了从多源摄取、物化视图汇总、dbt 数仓到 Agent 查询和路由反馈闭环的具体链路,能作为 LLM 网关与实时可观测数据平台的架构参考。适合数据工程、ML 平台和可观测性团队读者。需注意其来自 ClickHouse 厂商案例,缺少 schema、成本和故障细节,迁移时应补充压测与取舍验证。

工程实践ClickHouse Engineering

Meet GroeneAI: our autonomous contributor to ClickHouse

文章介绍 ClickHouse 的自主 AI 工程代理 GroeneAI,它基于开源 Nerve 运行时,具备持久会话、任务检查点、分层记忆和定时执行,将工作拆成规划、实现、独立复审等阶段,并把维护者反馈沉淀为可复用经验。文中以查询条件缓存误用、UNION DISTINCT 并行去重、CI 性能报告修复、SQL 注入链和 TLS 主机名校验等真实 PR 为例,说明代理如何发现、复现、修复、测试并响应评审。结论是代理在约七个月内贡献超 3000 个合并 PR,证明长期运行、记忆和流程化评审可支撑大规模开源协作;但数据主要来自厂商自述和 GitHub 统计,缺少独立评估,方法对代码库规模、CI 基础设施和维护文化有较强依赖。

推荐收录。文章用多个真实 PR 和具体缺陷链路展示了自主编码代理从任务发现、记忆、检查点到第二模型复审的完整工程闭环,并给出了可验证的测试与性能数据;适合构建 AI 编码代理、CI 自动化和工程效率平台的读者参考。主要风险是效果数据来自厂商自述,迁移到其他代码库时需重新评估基础设施和维护流程差异。

工程实践ClickHouse Engineering

The new cost-based join optimizer with reordering support for non-inner joins

文章介绍 ClickHouse 新成本模型连接优化器:用 DPsub 动态规划枚举表子集,在既有成本模型下为最多 10(可调至 12)张表的查询寻找更优连接顺序,并将在 26.10 默认启用。核心创新是引入基于 SIGMOD 2013 核心搜索空间的冲突检测器,按交换律、结合律等规则把 LEFT/RIGHT/FULL、SEMI/ANTI 连接纳入重排且保证结果不变。文章用 280 万候选计划零无效/零遗漏、1200 条随机查询零结果不一致验证正确性,并在 TPC-H/TPC-DS 上报告 25%–55% 加速,半连接下推示例中间结果缩小约 496 倍。边界是超过 12 表回退贪心优化器,收益依赖成本模型与统计信息,运行时连接过滤会削弱部分排序收益。

推荐收录。文章不仅说明新优化器的启用方式,还完整给出 DPsub 搜索、冲突检测器的代数规则、正确性/完整性验证、差分 fuzz 和 TPC-H/TPC-DS 实测,属于可复核的系统实现经验。适合数据库内核、查询优化与 OLAP 性能方向的读者,其把论文算法工程化并建立验证闭环的方法可迁移到其他优化器项目;但需注意结论受 ClickHouse 成本模型和 12 表搜索上限约束。

工程实践ClickHouse Engineering

Why ClickHouse Cloud wins at real-time analytics

文章基于 CostBench 用 1132 亿条股票报价对 ClickHouse Cloud 与 Snowflake、Databricks、BigQuery、Redshift Serverless 做连续写入与查询对比,声称端到端性价比领先 412×–1,996×。作者拆解其机制:写入时在内存完成排序和增量物化视图预聚合,避免额外写回与异步刷新,并以可合并部分聚合状态、向量化/SIMD、后台 merge 和 shared-data 计算分离降低准备与查询成本。文中报告查询延迟、压缩比、CPU/内存利用率和横向扩展数据,并给出交易风控、CI 测试分析等场景。结论是预聚合与原始数据同步使最新数据能在毫秒级回答,且准备与查询优势会相互放大。但基准由厂商主导、存储成本未计入总分、部分配置经校准,读者应结合独立复现与自身负载判断。

推荐收录为工程案例,因为它不仅给出对比结论,还解释了写入时排序/预聚合、部分聚合状态、向量化与计算分离等可迁移机制,并公开基准仓库与测量说明。适合数据库、实时分析平台和性能成本评估的读者。需注意这是厂商自测,结论有立场,且存储成本未纳入总分,应结合独立复现判断。

工程实践ClickHouse Engineering

The Agentic Analytics Benchmark: ranking tables and labeling failures with Jev

文章是 ClickHouse 的 Agentic Analytics Benchmark 第二轮工程实验:用 TypeSafe 的 Jev 分类器同时做失败归因和表检索。作者在 136 题开发集与 201 题冻结榜上把失败细分为 16 个子模式,发现“选错数据”是最大失败桶,且多为例体解析错误而非选错表;逐表 yes/no 排序在开发集达 nDCG@10 0.951,但在 75–710 表的公开目录上 recall@10 降至 87%。将排序作为 in-loop 提示回灌给 20 个模型后,准确率总体持平,回合节省只在开发集出现、在留出榜被短轨迹开销抵消。结论是标签器与排序器可复用,但指出该用哪张表并非瓶颈,正确使用表才是;实验基于 18 表 CRM 仓库,外推需验证。

推荐收录:文章公开了可复现的评测框架、16 类失败子模式、表排序指标和 in-loop 提示的负结果,并附 harness 与代码,对构建分析型 Agent、评测 LLM 或做检索增强的团队有直接迁移价值。主要风险是结论基于 18 表 CRM 仓库和特定模型/题目集,宽 schema 上排序指标明显下降,提示也未带来稳定准确率收益。

工程实践ClickHouse Engineering

How Shipsidekick replaced Neon with ClickHouse Managed Postgres for 10x faster queries and better reliability

文章是 ClickHouse 的客户案例,讲述 Shipsidekick 将基于 Vercel/Next.js 的物流 SaaS 从 Neon Postgres 迁移到 ClickHouse Managed Postgres。作者先复盘 Neon 在 Vercel Fluid 计算下因 Prisma、Vercel 与 Neon PgBouncer 多层连接池导致的池耗尽、CPU 打满和故障,再说明选型时对实例规格、单 standby 异步复制和成本取舍的考虑。迁移通过 ClickPipes 逻辑复制完成,约 500 GB 数据在 4-5 小时内同步,期间用删除并重建部分唯一索引解决在途事务冲突。迁移后 CPU 从 100% 降至 5-10%,缓存命中率从 30-35% 升至 99%,月数据查询约 10 倍加速,并补充了 AI agent 只读查询挤占主库后加超时和独立只读副本的经验。文章还指出厂商客户故事的单案例属性,性能数字未经独立复现,适合作为迁移排查线索而非通用基准。

推荐作为工程案例收录:文中给出了连接池分层、PgBouncer 托管、ClickPipes 逻辑复制、在途事务触发唯一索引冲突、单 standby 成本/一致性取舍以及 AI 只读查询限流等可迁移细节。适合正在评估 Serverless Postgres、做数据库迁移或治理高并发连接池的团队参考。但它是 ClickHouse 的客户故事,性能数字和可靠性结论缺少独立验证,读者应将其视为迁移经验与排障线索,而非中立 benchmark。

工具笔记ClickHouse Engineering

Trace and evaluate Cursor agents with Langfuse, powered by ClickHouse

文章介绍如何通过 Langfuse Observability 插件把 Cursor 编码代理的模型调用、工具执行、token 用量和耗时记录为 trace,并说明 ClickHouse 作为 Langfuse 分析后端的作用。Langfuse v4 用宽表保存 observations,并把用户、会话、标签和环境与观测放在一起,减少查询时的 join。文章给出插件安装与 API key 配置步骤,解释一次 Cursor Turn 中的 LLM、工具、子代理和上下文压缩事件。还演示用成本看板定位昂贵回合、把真实 prompt 建成数据集,并用评测比较规则改动前后的成本、延迟和完成率。边界是偏产品集成教程,未深入 ClickHouse 表结构、性能调优或评测方法有效性。

推荐收录,因为它提供了编码代理可观测性与评测闭环的可操作样本:从 trace 字段、token 计费口径到数据集评测和 CI 阈值都有具体步骤。适合正在团队中落地 Cursor 或 LLM 代理、需要控制成本或建立评测流程的开发者。主要风险是内容带有 ClickHouse 与 Langfuse 产品推广色彩,涉及的表设计与性能细节较少。

工程实践ClickHouse Engineering

Running ClickHouse on NVIDIA Vera CPU: Is your favorite database up to the challenge?

文章记录 ClickHouse 在 NVIDIA 早期 Vera CPU 上的性能测试,先运行 ClickBench,再用 1TB、625 亿条随机字符串的内存表构造过滤、聚合和连接三个微基准。测试比较不同 max_threads 下的耗时、加速比与效率,发现三类查询在物理核范围内近线性扩展,超过 176 个物理核后 SMT 对计算密集查询收益有限。简单 LIKE 查询在约 900 GB/s 处受内存带宽限制,正则过滤和聚合仍可继续利用更多核心;EXPLAIN PIPELINE 展示了算子级并行方式。SIMD 开关实验显示 NEON/SVE2 自动向量化带来约 3.5 倍差异。局限是合成数据、全内存、无压缩且基于早期硬件,不能直接代表生产 MergeTree 或完整 ClickBench 端到端表现。

推荐收录。文章给出可复现的 SQL、数据规模、线程扩展曲线和 EXPLAIN PIPELINE,具体展示了高核 Arm 服务器上数据库从内存带宽瓶颈到 SMT 收益衰减的定位过程,适合数据库内核、性能工程和基础设施选型读者。需注意其结论来自全内存合成基准和早期 Vera 硬件,生产环境应结合磁盘 I/O、压缩和真实查询进一步验证。

科研议题ClickHouse Engineering

The Agentic Analytics Benchmark, round two: GPT-6, Claude Opus 5.5, Claude Sonnet 5.5

文章是 ClickHouse 代理式分析基准第二轮评测,沿用 201 题、合成数仓和 60 轮预算,新增 GPT-6 三款与 Claude Opus/Sonnet 5.5。结果显示 Fable 5.1 居首,五个新模型在 68.7%–69.7% 间统计接近;GPT-6 默认推理未超 GPT-5.5,Sonnet 5.5 较前代提升 6.5 个百分点且无预算耗尽,约每题 5 美分。失败仍以计划错误为主,几乎无运行时错误,作者报告污染探测、评审不确定性和引擎/时区固定等改进。边界是 GPT-6 推理强度扫描未完成、部分成本记录不完整,结论依赖特定数仓与问题集。

推荐收录:文章公开了可复跑的基准 harness、固定引擎/时区、污染探测和评审不确定性分析,并给出准确率之外的轮次、成本、截断和失败类型,适合构建 Text-to-SQL/分析 Agent 的工程团队参考。风险是模型排名与成本数据受默认推理强度和网关记录影响,宜作为评估方法而非固定结论。

工程实践ClickHouse Engineering

Introducing the (blazing fast!) native TCP client for .NET

文章介绍 ClickHouse 为 .NET 发布的实验性原生 TCP 客户端,使用 Native 列式协议替代 HTTP+RowBinary,避免行列转换。实现以零拷贝、零分配为核心:按列批量读写,固定宽度类型用 MemoryMarshal 原地重解释,字符串和复合类型尽量保留线格式,POCO 通过编译表达式树映射,UUID 与 QBit 用 SIMD 加速。基准显示典型读取耗时约为 HTTP 客户端的一半,插入更快,部分场景 GC 分配降低 99% 以上。文章也明确边界:客户端仍为实验性,不支持 ADO.NET/ORM、Parquet/CSV 和 JWT,JSON 仅按文本返回,object[] 层性能优势有限,且仅支持 .NET 8+,并给出迁移检查清单。

推荐收录,因为文章不仅发布新客户端,还详细解释了 Native 列式协议、零拷贝/零分配实现、编译式 POCO 映射和 SIMD 优化,并用真实网络基准给出读取、插入与内存分配的对比数据。它适合使用 ClickHouse 或设计高性能数据库客户端的 .NET 工程师,也可为协议选型、列式数据读写和 GC 优化提供可迁移参考。需注意客户端仍为实验性且功能不完整,采用前应结合迁移清单评估 ORM、JSON 和认证等限制。

工程实践ClickHouse Engineering

Chasing that 32 ms tail latency in ClickHouse

文章复盘 ClickHouse 团队排查一个客户侧约 32 毫秒尾部延迟的完整过程:客户端与服务端相隔约 32ms,连接空闲 2 秒后的首个简单 SELECT 查询却要约 64ms(2×RTT)。根因是 Linux TCP 在空闲后将拥塞窗口重置回 initcwnd(客户环境为 8 MSS),而 ClickHouse Native 协议在 Data 包之后还需发送 Logs、Progress、ProfileEvents 等元数据包,叠加 TCP_NODELAY 的逐次写产生大量小 TCP 段,超过窗口后必须等待 ACK,从而多出一个往返。作者用网络命名空间与 tc netem 确定性地复现问题,并在应用层把元数据包合并为单次 socket 写,使 TCP 段数量减半,尾部延迟从 32ms 降至 1ms 级。文章也指出 Progress 等时效敏感包不能盲目合并,并讨论了关闭 ProfileEvents、tcp_slow_start_after_idle=0、增大 initcwnd、改用 TCP_CORK 等替代方案及其局限。

推荐收录。文章用可复现的 netns + tc 实验证明 32ms 尾部延迟来自 TCP 拥塞窗口空闲重置与 TCP_NODELAY 逐次写小包的交互,并给出应用层批量合并元数据包的补丁及 tshark 前后对比数据。对数据库、后端与基础设施工程师理解长 RTT、空闲连接下的小包放大问题很有迁移价值,同时点明时序敏感包不能盲目合并的边界。

工程实践ClickHouse Engineering

How iSAM Funds built an options research platform for a 10,000x data problem with ClickHouse Cloud

文章介绍 iSAM 期权研究团队如何将数据平台从 Postgres 原型迁移到 ClickHouse Cloud,以应对约一万个相关期权合约带来的万倍数据放大。团队指出交易所产品成交量分布不均,简单分片难以均衡负载。迁移后按时间序列存储获得 35-50 倍压缩,单核写入从每秒 8000 行提升到 80 万行,并可直接用 Arrow/Parquet/JSON 进出数据。因列存与向量化执行足够快,团队取消了预聚合、物化视图和下采样管线,把复杂度集中到业务侧。托管服务满足认证、网络隔离、备份与弹性扩容;但作为厂商客户案例,文章缺少表结构、查询模式和失败边界等可复现细节。

推荐收录,因为文章给出了可迁移的工程决策证据:从 Postgres 迁移到列存数据库后获得 35-50 倍压缩、单核写入提升百倍,并因查询足够快而删除预聚合与物化视图管线;同时讨论了负载不均、托管服务与弹性扩容等取舍。适合数据工程师和架构师评估大规模金融时序/期权数据的 OLAP 选型与迁移路径。需注意其厂商客户案例属性,缺少 schema、查询样例和失败边界,复现与独立验证价值有限。

工程实践ClickHouse Engineering

How we migrated Clera’s 500 GB production database to ClickHouse Managed Postgres overnight

Clera 是一家 AI 招聘代理公司,其原有 Postgres 数据库出现点查被后台分析查询阻塞、CPU 长期打满、超时与写入失败等问题。团队把负载拆分为热读、点查和后台分析三类,用约 500 GB 生产数据回放以及 sysbench TPC-C 基准,对 Supabase、Neon、PlanetScale 和 ClickHouse Managed Postgres 作对比,认为基于本地 NVMe 存储的方案在延迟与吞吐上更优。迁移通过两条 ClickPipes 管道在夜间完成 500+ 张表从 EU 到 US 的搬迁,随后重建触发器、索引与序列并进行对账和切流,迁移后 CPU 从 100% 降到 10–20%。文章附有开源基准仓库便于复核,但作为厂商博客的客户故事,其基准结论和选型建议带有明显推广倾向,技术细节也偏叙事而非深入权衡。

推荐收录:文中给出把生产负载分为热读、点查、后台分析三类的分析方法,以及用 500 GB 数据回放加 sysbench TPC-C 并公开基准仓库的评测流程,对计划做数据库选型或迁移的团队有可迁移价值,迁移中处理扩展、触发器、索引与切流的约束也可参考。主要风险是内容出自厂商博客的客户故事,基准与选型倾向明显偏向 ClickHouse,读者应结合自身负载验证。

工程实践ClickHouse Engineering

Why Databricks can’t match ClickHouse Cloud for real-time analytics

文章用 CostBench 基准比较 ClickHouse Cloud 与 Databricks 的实时分析端到端性价比。测试以约 100 万行/秒注入 1132 亿条行情并并发运行聚合与下钻查询,按准备成本、归一化查询成本和累计查询运行时乘积计分。ClickHouse 在异步插入路径内完成列式存储、排序和增量物化视图预聚合;Databricks 依赖 Zerobus 摄入、异步聚簇和物化视图刷新,摘要刷新间隔约 1.8 分钟,查询可能读到旧摘要。结果 ClickHouse 准备成本 28.69 美元对 695.60 美元,累计查询 56.39 秒对 29.10 分钟,整体性价比高 752 倍。作者披露未测 Lakehouse//RT、采用标价模型和刷新间隔代理等边界,但结论仍来自厂商自测,需谨慎看待。

推荐收录,因为它把实时分析的关键争议拆成准备路径、查询路径、成本模型和新鲜度边界,并公开基准仓库、SQL 与计分公式,而不仅是口号式对比。对评估 OLAP/实时数仓架构、物化视图新鲜度和性能成本模型的数据工程师有参考价值,但这是 ClickHouse 自测且 Databricks 未启用 Lakehouse//RT,752 倍结论应结合独立复现和自身负载验证。

工程实践ClickHouse Engineering

Executable UDFs are now generally available on ClickHouse Cloud

文章宣布 ClickHouse Cloud 上可执行 UDF 正式 GA,并系统介绍其 Native 运行时(支持 Rust/Go/C++/Bun 编译产物)、出站网络访问、每进程内存上限、deterministic 标志、Cloud API 与 Terraform 资源,以及 26.6+ 新增的 8 个 ProfileEvents 与 2 个异步指标。作者以 LLM 代币计数与用 Claude 打分两个 UDF 为例,展示 RowBinary 加 chunk header 的进程间协议、物化视图接入、字典定价与查询缓存用法。关键结论包括 executable_pool 优于逐块进程、应减少大块调用、按运行时而非负载设置内存、Rust 比 Python 快约 1.4 倍、比纯 Go 快约 2.9 倍,且 UDF 只适合 SQL 无法表达的逻辑。文章同时指出密钥管理缺失、Native 运行时无网络访问等当前边界,适合使用 ClickHouse 的工程团队参考。

推荐收录,因为它不是单纯的产品发布,而是给出可运行代码、吞吐与延迟实测、进程间协议细节和 beta 踩坑总结,例如 5,000 行查询从单块 165 ms 到逐行 1,544 ms 的对比,以及按运行时估算内存占用。对在数据仓库中集成编译型代码、设计 UDF 池与观测指标的工程师有直接可迁移价值;若只需功能清单,可只读 TL;DR。

工程实践ClickHouse Engineering

What is direct I/O, and why does ClickHouse Managed Postgres use it for backups?

文章解释 ClickHouse Managed Postgres 为何在备份时启用 Linux Direct I/O:默认缓冲读会经页缓存,备份流式读取数百 GB 会驱逐 Postgres 的温数据,并增加内核拷贝与 CPU 开销。作者用 wal-g 在四块 NVMe RAID0、467 GB pgbench 数据库上做对照实验,发现 Direct I/O 能保留 40 GiB 温表、把备份期间查询 p99 从约 0.18 ms 降至 0.06 ms,并减少约 14% CPU。但 Direct I/O 同时失去内核预读,默认 128 KiB 小读在 RAID0 上只命中单盘,需要按阵列宽度设置 4 MiB 读并调整并行 reader 数;密集 NVMe 和小规格机器需使用更多 reader。最终配置按服务器 vCPU、内存、盘数和实例族生成,并保留回退开关。

推荐收录:文章给出真实硬件上的对照实验和可复现配置(四盘 RAID0、467 GB 数据库、wal-g 的 WALG_DIRECT_IO_BLOCK_COUNT 与 WALG_UPLOAD_DISK_CONCURRENCY),量化了页缓存驱逐、p99 延迟、CPU 与盘利用率取舍。适合 PostgreSQL DBA、SRE、存储与后端性能工程师阅读,可迁移到备份、迁移等顺序扫盘场景;但结论依赖 wal-g、RAID0 和实例盘型,落地前需按自身阵列和负载验证。

工程实践ClickHouse Engineering

How LinkedIn extended ClickHouse from distributed tracing to metric discovery and analytics

LinkedIn将ClickHouse从分布式追踪扩展到指标元数据发现与分析。追踪系统每天约0.8万亿span和200TB数据,在三数据中心、每集群22分片部署,通过列排序和重分区将查询优化到2秒内。随后团队把超130亿指标、30%日更替的遗留RRD元数据从三个独立服务迁移到单一ClickHouse集群,用ReplacingMergeTree去重、变更捕获和别名切换实现透明迁移,并用投影支撑重聚合。新系统每分钟服务15万+查询,平均延迟68ms,内存和计算分别降至约1/5和2/3,且有余量翻倍指标量。该案例技术细节具体,但来自ClickHouse官方博客,且单分片设计和大规模迁移的后续演进未充分展开。

推荐收录,因为该文给出LinkedIn超大规模使用ClickHouse的完整工程细节:追踪系统分片、red-black部署与查询优化,指标元数据迁移的ReplacingMergeTree去重、变更捕获、别名切换和投影设计,以及150k QPM/68ms、内存降至1/5等可验证结果。适合可观测性、大规模数据平台和OLAP选型的工程师参考,迁移策略和Schema设计可迁移。主要风险是官方博客可能有宣传倾向,且单分片扩容细节未展开。

工程实践ClickHouse Engineering

Memory safety for Postgres extensions in C/C++

文章讨论在 Postgres 扩展中引入 C++ 代码时的内存安全与错误处理冲突。Postgres 使用基于 MemoryContext 的 palloc/pfree 分配,并以基于 setjmp/longjmp 的 PG_TRY/PG_CATCH/PG_FINALLY 处理错误,而 C++ 依赖 new/delete、析构函数和异常;setjmp/longjmp 会跳过 C++ 清理(属未定义行为),异常也会绕过 PG_CATCH/PG_FINALLY,未捕获异常还会 abort 进程,甚至导致 postmaster 重启并触发集群范围崩溃恢复。作者以 ClickHouse 的四个扩展给出不同策略:pg_clickhouse 彻底移除 C++ 并重写 C 库 clickhouse-c;pg_re2 把 C++ 限制在单个文件且分配全部包在 try/catch 内;pg_chdb 将 libchdb 移入独立 helper 可执行文件;pg_stat_ch 把 C++ 隔离到后台 worker,并用 terminate handler 将未捕获异常转为 ereport(FATAL)。文章明确 FATAL 方案只是缓解而非通用崩溃隔离,无法修复不一致的共享内存,并复盘了 PR #126 中中断出队导致重复释放的所有权缺陷,以及 PR #129 向 helper 进程迁移的长期方向。

推荐收录,因为文章给出了 C/C++ 混合编程在 Postgres 内存与错误模型下的具体冲突证据(setjmp/longjmp 跳过析构、异常绕过 PG_CATCH、abort 引发集群恢复),并用四个真实扩展展示了从消除 C++、单文件隔离、独立 helper 进程到 terminate handler 的递进式取舍。适合开发 Postgres 扩展、编写 C/C++ 互操作代码或负责数据库稳定性的工程师,其隔离层次划分与对 FATAL 缓解边界的反思可直接迁移到类似场景。

工程实践ClickHouse Engineering

Can your Postgres survive a bad query?

文章讨论 Postgres 在坏查询和内存压力下的可靠性,先解释 work_mem 按查询节点和后台进程分别生效、hash_mem_multiplier 与并行 worker 会成倍放大内存占用,并说明递归 CTE 的 UNION 去重哈希表无法落盘、会持续增长到查询结束。随后用一个约 1260 万节点的递归 UNION 查询,在 ClickHouse Managed Postgres、Cloud SQL、PlanetScale Postgres 和 Amazon RDS 上做并发压测,比较查询失败、会话失败和集群崩溃三种失败模式。结论是 ClickHouse 通过禁用内存 overcommit 并设置上限,让单个查询以 SQL ERROR 失败而集群保持存活;RDS 等则可能触发 OOM killer 并进入数分钟崩溃恢复。边界在于这是厂商自测,各服务的配置、内存上限和缓存策略不同,结论可能有利于自身策略。

推荐收录,因为文章既讲清了 Postgres work_mem、并行 worker 和递归 CTE 内存不可控的具体机制,又给出跨四家托管服务的可复现压测方法与失败模式分类。适合 DBA、SRE 和后端工程师在数据库选型、坏查询防护、内存上限与故障隔离设计时参考,但需警惕厂商自测和配置差异带来的公平性风险。

工程实践ClickHouse Engineering

chDB Durable Layer for agent memory

本文介绍 ClickHouse 团队为 agent memory 设计的 chDB Durable Layer。作者先复现问题:基于嵌入式 OLAP 引擎 chDB 构建的 agent memory 状态只能停留在单机磁盘,无法在 CI、短生命周期沙箱和第二台机器上复用,而已有方案(SQLite checkpointers、SQLite+Litestream、Postgres/pgvector/服务端 ClickHouse、Cloudflare Durable Objects、本地 DuckDB/chDB)在可移植性与本地热路径之间各有取舍。核心方案是“本地工作副本 + 对象存储权威副本”两层结构:查询仍在进程内 chDB 上执行,以显式 flush() 作为持久化边界,checkpoint() 折叠 WAL,head.json 配合条件写实现单写者租约与 fencing。文章给出 append-only 表建模、冷热分层、ZSTD 压缩(1.45GB 转录压至 521MiB)、本地查询比远程快 58 倍等实践数据,并以 ClickMem、Maple Local、ReplayHouse、vcfclick 为例。边界包括单写者、V1 WAL 要求确定性语句、不适合 OLTP 与多写者共享场景。

推荐收录,因为它从真实工程问题出发,给出可复用的架构取舍:本地工作副本与对象存储权威副本分工、显式 flush()/checkpoint() 持久化边界、基于 head.json 条件写的单写者租约,并附方案对比表、压缩与延迟实测以及建模最佳实践。适合为 agent/LLM 应用设计记忆与持久化层的工程师,以及需要嵌入式 OLAP 可恢复状态的读者;主要限制是仅适用单写者、单用户/单项目场景,多写者共享仍需服务端数据库。

工程实践ClickHouse Engineering

Postgres on NVMe: performance and the convergence of transactions and analytics

文章以 Postgres 在本地 NVMe 上的性能表现为切入点,在 482 GiB 数据集上对比 NVMe 与 gp3 EBS,测得 NVMe 吞吐约 9.2 倍、UPDATE 延迟 4.0 ms 对 36.9 ms。作者用 pg_stat_activity 和 CPU profile 解释:EBS 下大量后端阻塞在 DataFileRead,NVMe 将缓存未命中从毫秒级降到微秒级,并改善 VACUUM 与逻辑解码。针对本地 NVMe 的临时性,文章提出跨 AZ quorum 同步复制加 WAL-G 持续归档来保证持久性与可恢复性。随后论证存储加速只能提高行存上限,无法替代列存做大规模扫描,需用 CDC 将数据同步到 ClickHouse。适用时需注意 NVMe 容量受实例限制、复制与归档增加运维复杂度,且查询下推覆盖度需验证。

推荐收录:文章给出可复现的 benchmark 设计(pgbench 33,000、482 GiB、NVMe 对 EBS)和从 pg_stat_activity、CPU profile 到 VACUUM、逻辑解码的分层证据,并讨论本地 NVMe 临时性下的 quorum 复制与 WAL 归档方案。适合负责 PostgreSQL 性能、存储选型或 HTAP/CDC 架构的工程师,其中“存储解决 OLTP、列存解决 OLAP”的拆分逻辑可迁移。需注意文章来自 ClickHouse 厂商,benchmark 与产品推荐带有一定立场,pushdown 和运维复杂度仍需结合场景验证。

工具笔记ClickHouse Engineering

Loading Parquet data into MySQL with ClickHouse

文章介绍如何借助 clickhouse-local 与 ClickHouse 的 mysql 表函数,把 S3 上的 StackOverflow 投票 Parquet 数据直接写入并在 MySQL 中查询,因为 MySQL 本身没有原生导入 Parquet 的方式。作者用 Docker 启动 MySQL 8.4,下载 ClickHouse 二进制,并通过 ch-config.yaml 定义命名集合 mysql_demo 保存连接凭据。核心步骤包括用 DESCRIBE url() 探查 Parquet schema、在 MySQL 建表,再执行 INSERT INTO FUNCTION mysql(...) SELECT ... FROM url() 导入约 230 万行数据。文章重点区分两种查询方式:在 FROM 中写 ClickHouse 子查询时,ClickHouse 会解析并改写成 MySQL 合法 SQL;而通过 query() 传入字符串则原样下发,因此含 tuple 等 ClickHouse 特有函数会直接报错。作者也说明示例为本地演示环境,凭据以明文参数传入,生产系统应改用环境变量。

推荐收录,因为它给出可复现的完整方法,解决 MySQL 无法原生导入 Parquet 的真实数据搬运问题,并明确划出 mysql 表函数的两条边界:ClickHouse 子查询会被改写为 MySQL SQL,而 query() 字符串原样下发,这一区别容易踩坑。适合做 ETL、跨库迁移或用 clickhouse-local 做临时数据处理的工程师参考,命名集合与批量 INSERT 写法可直接迁移;不足是偏操作步骤,性能与生产安全约束讨论有限。

技术文章ClickHouse Engineering

AI Functions in ClickHouse: Upgrade your SQL to the AI age

本文介绍 ClickHouse 内置的 AI Functions 家族,让 SQL 引擎可直接调用 LLM 或 embedding 提供方,把模型调用变成类似 sum() 的普通函数,核心思路是"把模型搬到数据旁"而非把数据搬到模型。文本函数涵盖 aiClassify、aiExtract、aiGenerate、aiTranslate、aiFilter、aiRedact,向量函数涵盖 aiEmbed 与 aiSimilarity,通过 named collection 配置 OpenAI 兼容端点即可使用。作者用 Hacker News 数据集演示分类、过滤、摘要、翻译以及完整 RAG 循环(写入时嵌入、向量索引、cosineDistance 检索、生成答案)。文中还详述会话级配额设置(输入/输出 token、API 调用数、超限报错或软停),并说明 token 计数依赖 provider 上报 usage、重试计入调用配额、分布式查询在各分片独立计数。最后提醒 prompt injection、非确定性、成本随行数放大及 remote_url_allow_hosts 等上线注意事项。

推荐收录。文章并非纯功能公告,而是给出了 SQL 原生调用 LLM 的完整用法与边界:named collection 配置、库内 RAG 循环步骤、配额设置的精确语义(token 依赖 provider 上报、重试计入配额、软停产生默认值行),以及 prompt injection、非确定性和成本随行数放大的生产风险。适合在数仓内构建 AI 应用或做推理成本治理的工程师参考。

工程实践ClickHouse Engineering

ClickHouse Cloud vs. Snowflake: What drives the real-time performance-per-dollar gap

文章是 ClickHouse 团队 CostBench 的第二部分,对比 ClickHouse Cloud 与 Snowflake 在持续实时写入下的性能/成本差异。测试向两套系统灌入相同的 1132 亿行行情数据,速率约 100 万行/秒,并执行相同聚合与下钻查询,读侧资源尽量匹配到约 16 CPU。核心机制差异是 ClickHouse 在写入路径内完成排序和增量物化视图更新,Snowflake 的 Snowpipe Streaming 与异步 MV 刷新分离,MV 平均滞后约 1.4 分钟,聚合查询需在编译阶段补偿未刷新数据。结论称 ClickHouse 端到端实时性价比高 412 倍、聚合查询快 669 倍;但基准由厂商主导,Snowflake 资源估算和 fallback 成本归因需谨慎看待。

推荐收录,因为它给出了可核验的 CostBench 测试方法、相同负载和资源匹配信息,并具体解释了写入内增量 MV 与异步 MV 刷新导致查询时补偿的机制差异,而不仅是性能口号。适合实时数仓、OLAP 选型、性能成本评估方向的工程读者参考;但结论来自 ClickHouse 主导的对比,Snowflake 侧 CPU、fallback 和成本归因为估算,外推时需保留厂商立场风险。

工程实践ClickHouse Engineering

Measuring real-time performance per dollar under continuous load: CostBench’s first end-to-end results

本文介绍 CostBench 首轮端到端评测,聚焦持续负载下每美元实时性能。作者先界定查询就绪数据的三项准备(列式存储、排序与分块裁剪、预聚合),再提出新数据路径概念:在持续摄入数据的同时维护事件级物理布局与预聚合,让查询引擎读得更少、算得更少。评测用同一客户端按每秒约百万行的目标速率推送 1132 亿行 NBBO 股票行情,对比 ClickHouse Cloud、Snowflake、BigQuery 与 Redshift Serverless,统一 schema、排序键、查询集与调度,并把新数据路径成本、归一化查询服务成本和累计查询运行时合成一个越低越优的评分。结论是 ClickHouse Cloud 三项均最低,端到端性能每美元领先 412 至 1996 倍,仅查询侧差距为 32 至 101 倍。边界在于这是厂商自测,排除了存储成本,只覆盖推送式摄入,也未测试 Databricks。

推荐收录:文章公开了共享压测客户端、资源对齐策略、计费归一化公式与开源复现仓库,并给出查询就绪与新数据路径两个可迁移的分析框架,适合做实时分析系统设计和数据仓库选型的工程师参考。主要风险是厂商自测、结论明显偏向自家产品,且排除存储成本与拉取式摄入,建议结合后续逐家分析或独立评测交叉验证。

工程实践ClickHouse Engineering

Introducing WalShadow: Sub-second Postgres replication to ClickHouse from physical WAL

ClickHouse 发布开源引擎 WalShadow,直接消费 Postgres 物理 WAL 将数据复制到 ClickHouse,绕开逻辑复制槽与逻辑解码插件。其架构分四阶段:在影子 Postgres 实例中回放 catalog WAL 以维护实时 schema,并行解码堆记录,按表批量组装成 ClickHouse 原生 block,再由独立插入池并发写入。为在并行乱序下保持正确性,每行携带源 WAL 位置 _lsn,schema 变更与 truncate 等操作设置屏障等待前序数据落盘。官方基准(同区域 c8i.2xlarge)给出提交到可见延迟约 200ms、吞吐 28.9 万行/秒,对比 PeerDB 的约 10 秒与 12 万行/秒,并支持加列、改列名、删列、建表等 schema 演进。文章属产品发布稿,性能数据来自单表受限场景,未深入讨论失败模式与运维成本。

收录理由在于它给出了可迁移的 CDC 设计证据:物理 WAL 替代逻辑解码的四阶段流水线、用 _lsn 加屏障解决并行乱序正确性,以及带方法说明的延迟/吞吐基准(约 200ms、28.9 万行/秒 vs PeerDB 约 10s、12 万行/秒)。适合正在设计 Postgres→OLAP 实时同步链路的数据与平台工程师参考。需注意其厂商产品发布属性、单表基准的局限,以及托管版仍处私有预览,落地前应自行验证 schema 变更与故障恢复路径。

科研议题ClickHouse Engineering

The Agentic Analytics Benchmark: Measuring model accuracy and efficiency in analytical agents

文章发布 ClickHouse 开源的 agentic analytics 基准 harness data-agent-mnist,用 201 条来自内部分析代理 DWAINE 的真实问题,在合成数据仓库上评测 29 个模型。它指出代理式分析不同于 text-to-SQL:模型需自主发现 schema、多轮查询,并以结果集而非单条 gold SQL 评判。方法上通过筛选、匿名化、真值委员会、LLM-as-jury 和污染检测构建可复现评测,报告准确率、turn 预算、token/成本、延迟和失败模式。结果显示 Claude Fable 5.1 以 76.6% 居首,前沿模型仍占优,但成本可差 52 倍,规划错误是主要失败原因。该基准强调需在自己的数据仓库上运行,局限是真值依赖模型委员会而非人工审计,合成环境可能偏离生产。

推荐收录:文章给出可复用的开源 benchmark harness 和完整方法论,包括真实问题筛选、匿名化合成数据仓库、真值委员会、LLM-as-jury 与污染检测,并公开 29 个模型在准确率、成本、延迟和失败模式上的可比较结果。对构建分析代理、选型 LLM 或设计 AI 评测体系的读者,可直接迁移其评测框架和“规划错误优先”的结论。局限是真值依赖模型委员会而非人工审计,合成环境可能偏离真实生产。

工程实践ClickHouse Engineering

How MCP Toolbox turns agent text into ClickHouse vectors

文章介绍 Google 开源的 MCP Toolbox for Databases 如何与 ClickHouse 集成,把智能体输入的自然语言在服务端转换为向量并做语义检索。核心机制是在 YAML 中声明 Gemini 嵌入模型,并用 embeddedBy / valueFromParam 让工具参数自动嵌入文本,再以 []float32 绑定 SQL 占位符,配合 Array(Float32)、cosineDistance 和 HNSW 索引返回排序结果。作者以 57 篇跨五个主题的文档实测,验证效果并量化嵌入列压缩率低、小数据量下 HNSW 索引收益有限等开销。生产注意事项包括离线批量嵌入、为搜索设置距离阈值、参数由驱动转义而非服务端绑定,以及仅支持 Gemini、taskType 硬编码为 SEMANTIC_SIMILARITY、REST 接口需显式开启等限制。

推荐收录,因为它提供了可复现的端到端配置、57 篇文档实测、查询日志与压缩/索引开销分析,而不只是产品介绍。适合 AI 工程、数据库和 Agent 开发者理解 MCP 工具层如何把 ClickHouse 文本表变成语义搜索工具。主要风险是内容绑定 Toolbox 1.9.0、Gemini 唯一嵌入供应商且检索任务类型不可调。

工程实践ClickHouse Engineering

Build a real-time market data app with ClickHouse and Massive

文章以构建实时行情 tick 应用为主线,展示如何用 Massive(原 Polygon.io)WebSocket 订阅股票 trades 与 quotes,并用 ClickHouse 存储、Node.js/React 后端与可视化。作者给出 quotes/trades 表结构,以 sym 和一分钟时间桶设计 MergeTree 排序键,比较同步与异步插入后采用客户端批量同步写入。查询端用 argMax/argMin 结合时间戳与序列号生成实时行情表,并按两分钟窗口聚合 OHLCV;还演示 AggregatingMergeTree 物化视图预计算 1 分钟 OHLCV、摄入延迟监控与扩展建议。不足是示例缺少持久缓冲、重放、去重和鉴权,也不处理取消/更正或官方 OHLCV 重建,生产化需补齐可靠性设计。

推荐收录。文章提供了可运行的完整示例和关键设计细节:从 WebSocket 订阅、表结构与排序键、同步/异步插入取舍,到实时行情与 K 线查询、物化视图和延迟监控,均有代码与边界说明,适合构建实时分析、行情数据或 OLAP 摄取管道的工程师参考。其模式可迁移到其他高频事件流场景,但需注意示例本身不是生产级方案,缺少鉴权、持久缓冲和重放去重等能力。

技术文章ClickHouse Engineering

ClickHouse as a streaming HTTP API

文章以英国房价数据集为例,演示如何用 ClickHouse 26.8 新增能力把它本身做成一个流式 HTTP API。核心手段包括 CREATE HANDLER 定义命名端点、在查询串与 URL 路径中传类型化参数({name:Type}、正则路径捕获),以及用 filter、select、sort、order、page、output_format 等设置在改 SQL 的前提下修改结果。作者还介绍了把表直接暴露为路径端点,以及用 framing_output_format(JSONEachPacketString 与 EventStream/SSE)在同一响应中流式传输数据包与进度包,并说明进度包需调小 interactive_delay 才可见。安全部分讲解了处理器按调用者权限执行、用 SQL SECURITY DEFINER 视图只暴露聚合结果而不泄露底表,以及通过 query_log、user_query_log 观测请求。结论是:仅当 API 只暴露受控查询时可省去中间层,若含业务逻辑、编排或应用校验仍需保留应用层,且建表建处理器时只做语法检查、不做语义分析。

推荐收录:文章给出了从建表、建处理器、参数化、结果修改到流式响应、权限控制与日志观测的完整可复现流程,并明确点出何时可以去掉中间 API 层、何时仍需要应用层,边界清晰。适合构建数据库直连数据服务、流式接口或轻量 API 的工程师参考,其中的分帧输出格式、DEFINER 视图授权与结果修改设置可迁移到其他数据服务设计。

技术文章ClickHouse Engineering

Pipelined SQL in ClickHouse 26.8

文章介绍 ClickHouse 26.8 引入的管道式 SQL:用 `|>` 操作符把查询写成一系列显式变换。作者以英国房价数据集为例,对比传统 SELECT 开头、FROM 开头和管道式三种写法,并借助 EXPLAIN SYNTAX 展示管道查询会被翻译成嵌套的标准 SQL,但中间结果不会被物化,整体仍会被优化后执行。文中还说明 EXTEND 可追加计算列、聚合别名能在下一阶段复用从而免写 CTE 或嵌套子查询,并强调阶段顺序会改变语义(如在第二级聚合前插入 LIMIT 会使平均值只基于非确定性的中间子集)。管道语法可用于子查询、视图和 INSERT…SELECT。文章偏教程性质,未提供性能对比或与其他 SQL 方言的深入比较。

推荐收录,文章给出了管道式 SQL 的翻译机制(EXPLAIN SYNTAX 显示为嵌套 SELECT 且不物化中间结果)、EXTEND 与聚合别名复用等可直接套用的写法,并明确指出阶段顺序和非确定性 LIMIT 的陷阱,适合 ClickHouse 使用者与数据工程师快速评估该语法。局限是缺少性能数据与更细的语法边界分析。

技术文章ClickHouse Engineering

New system views in PostgreSQL 19

文章系统介绍 PostgreSQL 19 新增的四个系统视图,并结合作者亲自演示给出查询示例与语义边界。pg_stat_lock 提供按锁类型聚合的集群级锁等待统计,但 waits 与 wait_time 仅统计等待超过 deadlock_timeout 且最终成功的锁,fastpath_exceeded 可提示分区密集负载需调高 max_locks_per_transaction。pg_stat_recovery 以单次原子快照返回备库恢复状态,解决了多次函数调用间数值不一致的问题;pg_stat_autovacuum_scores 暴露新的 autovacuum 优先级评分与各分量权重;pg_dsm_registry_allocations 让运行时动态共享内存分配可见。作者提醒 PG19 仍处 beta、列名可能变更,且评分视图基于当前统计,只是 autovacuum 行为的提示而非保证。

推荐收录。文章不止罗列新视图,还用可复现的会话示例讲清语义细节与陷阱,例如 pg_stat_lock 只在等待超过 deadlock_timeout 时计数、fastpath_exceeded 与 max_locks_per_transaction 的关联,以及评分视图的近似性。适合 DBA、SRE 和构建 Postgres 监控与 HA 工具的读者,作为升级 PG19 时观测能力的参考。

工程实践ClickHouse Engineering

So, is ClickHouse winning the observability wars?

本文是 ClickHouse 团队对 Mat Duggan、Charity Majors 提出的“ClickHouse 正在赢得可观测性战争”观点的回应与剖析,明确“胜利”仅限定在存储与查询层。文章解释列式架构为何契合可观测性数据:按列存储与排序键利于压缩编码,稀疏主索引与跳数索引减少 I/O,向量化执行、SIMD 与跨分片并行加速聚合,并缓解高基数问题。还讨论了全文检索倒排索引、单库承载日志/追踪/部分指标、SQL 表达力与 Apache 2.0 许可带来的采纳优势。作者也坦承边界:Prometheus 式指标的 PromQL 兼容仍是最大缺口,TimeSeries 引擎与 API 尚不稳定,数据库本身不等于好的可观测性产品,小团队或自建引擎的厂商未必适用,并指出 Agent 工作负载带来低延迟、高并发与全保真留存的新要求。

推荐收录。文章虽出自厂商博客,但系统梳理了列式存储契合可观测性数据的机制——压缩、索引裁剪、向量化、并行聚合与高基数处理,并较诚实地指出 PromQL 兼容、ordering key 与 schema 设计等边界,适合负责可观测性平台或日志/追踪存储选型的工程师参考。其架构权衡与“何时不适用”的判断有可迁移价值,但读者需注意其自证立场与客户证言带来的偏向。

技术文章ClickHouse Engineering

What's new in the ClickHouse .NET Driver: the road from 1.0 to 1.3

文章梳理 ClickHouse .NET 驱动从 1.0 到 1.3 的演进,核心是类型安全与可扩展性。它用 POCO 注册取代 object[] 手写列映射,实现强类型插入和读取;并新增 IParameterTypeResolver、IParameterFormatter、IReadValueConverter 三个扩展点,分别控制参数类型推断、序列化和读取值转换。类型支持上加入多维数组、ValueTuple 和 Identifier 参数;正确性上修复 DateTime 时区被服务端 session_timezone 平移的破坏性变更及 Variant NULL 等问题。性能上允许跳过插入 schema 探测,并将默认 ReadBufferSize 从 512 KiB 降至 8 KiB,显著降低 LOH 分配与 GC 压力。文章还介绍 EF Core、Serilog 等集成和路线图,适合 .NET 数据开发与客户端 API 设计参考;作为版本发布说明,部分 API 细节会随版本更新而过时。

推荐收录,因为文章用大量代码示例和基准数据说明 .NET 驱动的具体工程决策:POCO 映射与三个可插拔扩展点的 API 设计、ReadBufferSize 从 512 KiB 降至 8 KiB 带来的 LOH 与 GC 优化,以及 DateTime 时区语义的破坏性修正。这些内容对使用 ClickHouse 的 .NET 开发者和设计数据库客户端、序列化管道的工程师有直接的可迁移价值;但它是版本发布说明,具体 API 细节会随驱动版本演进而过时,建议结合最新文档使用。

工程实践ClickHouse Engineering

Ensuring reliable OpenTelemetry ingestion at scale

ClickHouse 团队复盘内部可观测性平台 LogHouse 的 OpenTelemetry 摄取管道三次演进。第一版 agent+gateway 架构在 5000 万 events/s 规模下无法承受 ClickHouse 反压而频繁 OOM;第二版启用 collector 本地 WAL,需改造成 StatefulSet,1TiB 积压约需 4 小时排空,且 FIFO 顺序阻塞最新数据,只能截断 WAL 丢数据。团队放弃引入 Kafka,改用基于 S3 的优先级故障转移:仅在 ClickHouse 反压时由 failover connector 溢出到对象存储,再通过 SQS 事件通知由独立 catchup collector 回灌,规避常态 PUT 成本。文中给出完整 collector 配置与一小时停机 gameday 验证结果,也指出恢复期无法定位具体缺失数据、新区域需额外基础设施等局限。

推荐收录:文章完整呈现从默认两层采集架构到自研 S3 溢出方案的取舍链条,给出 5000 万 events/s、1TiB 积压需 4 小时排空、每年 10-50 万美元 PUT 成本等具体数字,并用一小时停机 gameday 验证无数据丢失。对负责可观测性采集、高吞吐数据管道或 ClickHouse/OTel 落地的工程师,其 failover connector 的队列开关顺序、优先级路由和 catchup 回灌设计可直接迁移。

技术文章ClickHouse Engineering

Read your writes: WAIT FOR in PostgreSQL 19

文章介绍 PostgreSQL 19 新增的 WAIT FOR 命令,用于在异步流复制下实现 read-your-writes 一致性。作者先描述陈旧读问题:主库提交后从库需重放 WAL 才能看到变更,并对比 synchronous_commit=remote_apply、应用侧轮询 pg_last_wal_replay_lsn()、直接读主库三种旧方案在延迟与扩展性上的代价。核心方法是在主库写入后用 pg_current_wal_insert_lsn() 取 LSN,把它传给从库会话执行 WAIT FOR,阻塞至 WAL 重放到该位置;命令支持 standby_replay/standby_write/standby_flush/primary_flush 四种模式及 TIMEOUT、NO_THROW 选项。文章还解释它必须是顶层工具命令的原因:会话持有快照会阻塞 WAL 重放,形成自死锁,因此不能放进函数、过程或高隔离级别事务。边界在于 PostgreSQL 19 仍处 beta、细节可能变化,且 LSN 比较不识别 timeline,主从切换后需谨慎对待。

该文以官方文档、SQL 示例和提交历史为依据,给出 WAIT FOR 的可用语法、四种等待模式与 LSN 传递方式,并深入解释“必须顶层运行、不能持有快照”的自死锁成因,属于可长期复用的数据库机制解析。适合使用 PostgreSQL 异步复制、希望在不付同步复制开销下获得读己之写一致性的后端与 DBA 读者,也可迁移到连接池或协议感知代理注入 WAIT FOR 的设计;需注意其基于 beta 版本且 LSN 不识别 timeline。

工程实践ClickHouse Engineering

ClickGap: Autonomous QA for ClickHouse

文章复盘 ClickHouse 自研自主 QA 智能体 ClickGap 的构建过程:它监听合并流,对每个已合并 PR 用真实构建设计并执行测试、二分定位引入回归的提交,并在无人工确认下向公开仓库提交 issue 与 PR,五个月内产出约 500 个 issue、200 余个覆盖类 PR,其中 200 多个 issue 以关联修复 PR 关闭。重点并非模型能力,而是如何让结论可信:任何发现须先通过十道门禁(可复现测试、有效引用、全文件阅读、调用方分析、多路检索既有测试、对抗式审查、历史误报比对等),其中八道以确定性代码实现,只有覆盖杀灭测试与对抗裁决依赖模型判断。作者还描述了影响版本矩阵与二分、三层记忆结构及 Loom 记忆服务、按召回率与维护者响应率节流的成本模型,以及私仓实例冷启动与命名空间单向隔离。主要边界是方法高度依赖单一代码库的领域知识,记忆能否跨代码库迁移仍未有定论。

推荐收录:文章以真实运营数据(约 500 个 issue、200+ 关联修复、约 200 个覆盖 PR)和具体缺陷案例(gini 语义变更、skip index 失效、14.6–30.9% 性能回归)支撑,完整展示了把 LLM 代理接入高风险 CI 的工程取舍。适合构建 AI 代码审查/QA 系统、SRE 与数据库内核维护者,其中十道门禁、确定性优先、对抗式审查和基于结果的记忆反馈可直接迁移;需注意其精度主要来自单库领域知识,跨代码库复用仍待验证。

技术文章ClickHouse Engineering

ClickHouse Release 26.7

文章是 ClickHouse 26.7 版本发布说明,主体是对查询执行与向量检索内部优化的解析。它把按序聚合与新增的 limit 下推融合,使 GROUP BY…ORDER BY…LIMIT 成为可提前终止的流式流水线;JOIN 新增构建键驱动的探测端 granule 裁剪、哈希表行引用压缩与 dpsub 连接顺序算法;QBit 引入 Int8 量化、跨步存储、Hadamard 旋转与量化编解码器。文中用 TPC-H 与 HackerNews 数据集给出基准,称 Top-N 提速 313 倍、峰值内存降 592 倍,JOIN 提速 6.2 倍。还简述短语位置索引、EXPLAIN ANALYZE、Remote 引擎和 URL 统一等特性,并标注部分能力为实验性。

推荐收录:虽为版本发布说明,但每项优化都给出机制解释(如按序聚合与 LIMIT 下推融合、运行期过滤器驱动 granule 裁剪)和可复现的 TPC-H/HackerNews 基准,属于有边界、可验证的工程性能证据。适合数据库内核、OLAP 查询优化与向量检索方向读者;排序键前缀聚合、构建侧过滤下推等思路可迁移。主要风险是性能倍数依赖特定数据集与硬件,不宜直接外推。

工程实践ClickHouse Engineering

What else runs on your Postgres server, and how do we stop it from taking the database down?

文章讨论 ClickHouse Managed Postgres 如何在同一个 VM 上隔离 Postgres 与周边支撑进程(PgBouncer、WAL-G 备份代理、各类 exporter、本地 Prometheus、日志收集器和看门狗),避免它们反过来拖垮数据库。核心是三层内存防护:Go 运行时的 GOMEMLIMIT 先触发更积极的 GC,cgroup v2 的 memory.high 触发直接回收与限流,memory.max 作为硬上限并在该 cgroup 内触发 OOM,从而把 OOM 受害者限定在支撑服务而非 Postgres。CPU 用调度权重、备份缓冲区固定比例、日志内存限制和导出指标白名单分别设卡;磁盘打满时看门狗读取 pg_stat_activity 终止普通应用会话,但豁免复制与监控用户以保持 WAL 流和可观测性。局限是偏设计说明,缺少压测与故障复盘数据。

推荐收录:文章给出了可迁移的资源隔离模型——运行时预算加 cgroup 软硬上限、资源白名单、带豁免的应急终止路径,并逐条说明每种边界存在的理由。对自建或托管 Postgres、需要把监控备份等边车进程与主库共置的 SRE 和 DBA 读者有直接参考价值。主要不足是缺少压测与故障复盘数据,结论偏经验性。

工程实践ClickHouse Engineering

POSETTE Talk Recap - Postgres Isn't Slow. Your Storage Is

文章复盘 POSETTE 2026 演讲,围绕 PostgreSQL 规模化后的五类症状(写入变慢、P95 读延迟不稳、autovacuum 落后、checkpoint 争抢 I/O、逻辑复制积压),论证根因常被误判,实际多来自存储。作者用 8 个相同 m6id.4xlarge 集群、3.3 亿行 pgbench 随机 UPDATE 负载,对比本地 NVMe 与 3000 IOPS 的 baseline gp3 EBS,结果 NVMe 中位 16,030 TPS 对 EBS 1,734 TPS(约 9.24×),事务中位延迟从 36.9ms 降到 4.0ms。延迟拆解显示差距主要来自页读取、WAL fsync 与锁/调度等待,CPU 本身耗时接近;等待事件与 CPU profile 也印证 EBS 更多进程处于离 CPU 等待。作者随后给出本地 NVMe 生产架构:quorum 双 standby 同步复制、WAL-G 持续备份至独立对象存储,并明确结论仅适用于该负载与存储配置。

推荐收录:文章给出了可复现的对照实验设置、量化指标(TPS、延迟拆解、等待事件、CPU profile)以及面向生产的架构取舍,而非单纯观点宣导或产品广告。适合运行大规模 PostgreSQL、关注存储选型与高可用设计的数据库/SRE 读者,其“数据库与存储一起诊断”的思路及 NVMe+quorum 复制+对象存储备份的组合可迁移到类似系统;但需注意基准使用 3000 IOPS 基线 gp3,不同 EBS 配置结论会变化。

技术文章ClickHouse Engineering

What's New with Monitoring in PostgreSQL 19

文章梳理 PostgreSQL 19 的监控与可观测性改进:log_lock_waits 默认开启、log_min_messages 可按进程类型分级、autovacuum 与 autoanalyze 日志分离。pg_stat_wal 新增 wal_fpi_bytes 统计全页镜像字节数,并引入 CopyFromRead、CopyToWrite、WaitForWalWrite 等新等待事件。作者还解释 WAL 全页镜像为何主导 WAL 体积、multixact 膨胀如何判读,以及远程复制/FDW 消息统一格式化和回卷告警阈值提高到 1 亿的变化。文末给出面向日志解析、指标采集、等待事件字典与告警阈值的升级检查清单,但内容基于 beta 版,细节可能调整。

推荐收录,因为文章不仅罗列 PostgreSQL 19 的监控变更,还结合提交记录解释 WAL 全页镜像、multixact 膨胀等底层机制,并给出可执行的工具升级清单。适合数据库运维、SRE 与可观测性工具开发者在升级前排查兼容性风险;需注意内容基于 beta 版,最终以正式发行说明为准。

工程实践ClickHouse Engineering

Why strict memory overcommit matters for Postgres

文章解释 Linux 内存 overcommit 策略为何对 Postgres 格外关键:默认策略下 OOM killer 会 SIGKILL 某个 backend,而 Postgres 只能假设共享内存段可能已损坏,于是终止所有 backend 并走崩溃恢复,等于整个实例重启。严格 overcommit(vm.overcommit_memory=2)让内核在物理内存耗尽前就以 ENOMEM 拒绝分配,Postgres 将其视为普通错误,仅报错并回滚当前事务。作者在同一台 EC2(m7i.2xlarge)上用相同 pgbench 负载对比两种策略,并给出 commit limit 的推导:先扣除预留的 huge pages,再按剩余内存的 80% 加 2GB 作为 sidecar 头寸,约为总内存的 60% 加 2GB。实验显示默认策略下 20 个旁观连接全部被断开、新连接中断约 30 秒,严格策略下仅 1 个查询失败、0 个连接受影响,且两者吞吐差异落在噪声范围内。边界是结论基于单一硬件与特定 shared_buffers、huge pages 配置。

推荐收录:文章用同一台 EC2 上默认与严格 overcommit 的对照实验,给出 CommitLimit 推导依据、OOM 杀死 backend 后的崩溃恢复日志以及 pgbench 吞吐对比,证据完整而非泛泛而谈。适合负责 Postgres/Linux 生产部署的 DBA 与 SRE,可把内存耗尽的影响从实例级重启降为单查询失败;限额计算与验证方法也可迁移到其他数据库。风险是结论依赖单一硬件与 huge pages 配置,需按实际内存布局重新核算。

工程实践ClickHouse Engineering

Announcing support for ClickStack in the ClickHouse Terraform provider

本文是 ClickHouse 工程博客,宣布在官方 Terraform provider(ClickHouse/clickhouse,v3.25 起 beta)中新增 ClickStack 资源支持,可把仪表盘、告警、数据源、已保存搜索、连接与 Webhook 纳入版本控制和代码评审。核心工程取舍是:不新建独立 provider,而是作为独立服务模块并入现有 provider,以复用发布、测试、文档与鉴权路径;同时为支撑代码生成和校验,ClickStack API 改用命名类型、统一整数字段并输出结构化错误。鉴权区分 Cloud(组织 ID、Cloud API Key、服务 ID)与自托管(endpoint、个人 API Key、team)。文中给出创建仪表盘、plan 阶段调用校验 API、terraform import 及批量导入既有资源的示例,并说明风险边界:功能仍为 beta,UI 侧编辑不会被识别为漂移,可能被后续 apply 覆盖。

推荐收录,因为它不仅介绍功能,还交代了 provider 合并而非重发、API 契约调整(命名类型、结构化错误)和 plan 阶段校验等具体工程决策,并附可执行的 Terraform 配置、import 与批量导入流程。适合用 IaC 管理可观测性配置的平台/SRE 读者借鉴,可迁移价值是把仪表盘与告警当作代码治理;主要风险是内容偏厂商发布、功能处于 beta,读者需结合官方文档确认行为变化。

工程实践ClickHouse Engineering

What's new in pg_clickhouse v0.10.0: Subqueries, TPC-H Speedups, C Driver, and Aggregates

文章介绍 pg_clickhouse v0.10.0 的更新,重点是扩大 PostgreSQL 查询向 ClickHouse 下推的范围。作者以 TPC-H 为度量,将完全下推的查询从 22 条中的 12 条提升到 16 条;Q17 从 32.7 秒降至 37 毫秒,并快于原生 PostgreSQL 的 2.1 秒。技术核心是把相关子查询与 NOT IN 下推为半连接/反连接,同时用额外空值守卫弥合 PostgreSQL 三值逻辑与 ClickHouse 二值逻辑在 NULL 上的语义差异。工程侧还改用 clickhouse-c 重写 C 驱动,统一 HTTP 与二进制 Native 协议,修复并发扫描连接冲突,并扩展统计聚合、有序集聚合和分区聚合下推。文章明确仍剩 6 条 TPC-H 查询未下推,受限于 join tree 两侧遍历,且相关子查询要求 ClickHouse 25.8 以上,否则回退本地执行。

推荐收录:文章不仅列出 pg_clickhouse 新功能,还给出可验证的 TPC-H 性能改进(Q17 32.7s→37ms)、三值/二值逻辑差异导致的正确性陷阱及守卫实现,以及驱动层从 C++ 到 C 的架构权衡和并发修复。对使用 PostgreSQL FDW、构建异构数据库查询下推、OLAP 加速或数据库扩展开发的工程师具有直接参考价值,其语义兼容性验证思路可迁移到其他数据源集成场景。

工程实践ClickHouse Engineering

What is WAL backpressure, and why does ClickHouse Managed Postgres need it?

文章解释 ClickHouse Managed Postgres 为何以及如何对 Postgres 施加 WAL 写入背压。Postgres 先把所有变更写入 WAL,归档器再把完成的段上传到对象存储,未上传的段无法删除;一旦写入快于归档,WAL 会堆积直至撑满磁盘,而磁盘耗尽会触发 PANIC 导致实例宕机。系统用一个 systemd 定时器每 15 秒统计积压段数,通过 cgroup v2 I/O 控制器按 80%/50%/20% 三档限制客户端后端的写带宽,并把归档、检查点、日志等排空路径按进程名划入不受限的 immune 组。作者在单台 m7i.2xlarge、500MB/s gp3 上以限速 4MB/s 的 archive_command 做 35 分钟 pgbench 实验,验证分级限流按阈值触发、积压清零后自动解除、数据盘始终未超 33%。文中也指出一个边界:该负载写入几乎全是 WAL,限流对吞吐的削减远大于对 WAL 生成的抑制(仅约 10%),效果取决于写负载的数据密度。

推荐收录。文章把“WAL 归档跟不上会导致磁盘写满并 PANIC”这一真实运维风险,拆解为基于 cgroup v2 的分级写带宽限流方案,并给出可复现的 35 分钟压测时间线、cgroup 分类证据和限流对 WAL 生成抑制有限的明确边界。适合负责 Postgres/数据库托管、可靠性与容量控制的工程师,其中“不限制排空路径、只在数据面自我保护、按积压分级降速”的取舍可迁移到其他写入放大与异步归档场景。

工程实践ClickHouse Engineering

Fixed cadence to seconds: making ClickHouse Cloud autoscaling more reactive

文章复盘 ClickHouse Cloud 如何把自动扩缩容推荐服务从固定定时轮询改造成秒级反应式架构。原实现按固定节奏扫描全部服务,导致周期之间发生 OOM 或负载突增时必须等到下一次 tick 才能扩容,问题本质是延迟而非推荐逻辑错误。作者复用 Kubernetes 生态的 controller-runtime 作为通用事件处理引擎,把周期性扫描与反应式快路径都抽象为 source,统一投递到带键去重、指数退避和并发上限的工作队列,由同一个幂等 reconcile 函数产出推荐,因此无需自研触发协调机制。反应式信号以事件行写入 ClickHouse 专用小表,由物化视图在写入时过滤越阈指标,source 每几秒执行一次五分钟窗口查询,使关键事件在数秒内触发扩容;周期性全量扫描仍保留作为安全网与缩容兜底。文章也明确边界:工作队列仅存在于单进程内存,无持久化与重放,它是电平触发的 reconcile 引擎而非流处理器,不支持事件时间窗口、join 或跨事件聚合,轮询间隔构成反应速度下限;若未来需要保证投递、严格顺序或状态化窗口关联,应迁移到流式平台。

推荐收录:文章给出完整的问题定义、架构改造路径和可复现的 Go 与 SQL 片段,把“用 controller-runtime 当通用事件引擎、用 ClickHouse 存反应式信号”这一非显然选择连同去重、退避、并发控制的收益讲清楚。对做自动扩缩容、Kubernetes 控制器或实时信号管道的工程师有直接迁移价值;同时明确标注内存队列无持久化、轮询间隔是延迟下限等约束,避免读者误用。

工程实践ClickHouse Engineering

I created a playground for 110 database systems

文章由 ClickHouse 作者复盘如何把 ClickBench 扩展成一个可交互的 Playground:用统一脚本接口重构上百个数据库的安装、加载与查询流程,并让约 110 个系统各自带着 1 亿行预载数据接受在线查询。核心难点在于低成本且安全地托管这些系统,作者逐项否决 EC2 常驻、Lambda、ECS/EKS 与 Docker 隔离方案,最终选择在 metal 机器上用 Firecracker/QEMU 做嵌套虚拟化,构建"云中之云"。资源层通过 CPU 超卖加看门狗、把 guest swap 映射到 host page cache 实现弹性内存、用稀疏文件与 XFS reflink、再迁移到 BtrFS+zstd 压缩,把上百个系统塞进 7.5TB 本地盘。网络层用 tap 设备加 iptables 做 NAT 网关,并基于 TLS SNI 字段实现带白名单的 HTTPS 代理,安装期放行外网、查询期断网以防逃逸和 IMDS 访问;快照冷启动控制在 5 秒内,查询出错即回滚。文章偏经验叙述,未给出完整压测数据与量化对比,隔离强度也依赖运营方自行评估。

收录理由在于它把"托管上百个异构数据库"这一非典型问题拆解到虚拟化选型、内存与磁盘超卖、网络出口过滤三条主线,每一步都给了被否决方案的原因和最终取舍,而非结论式陈述。做数据库评测平台、沙箱执行环境、多租户隔离或 Kubernetes 之外自建基础设施的工程师,可直接迁移其中的 Firecracker 嵌套虚拟化、reflink 快照与 SNI 白名单代理思路,并据此评估自身成本与安全边界。

工程实践ClickHouse Engineering

Choosing Between ClickStack and Grafana for ClickHouse Observability

文章比较 ClickStack 与 Grafana ClickHouse 插件在 ClickHouse 可观测性中的定位。Grafana 是“大帐篷”式监控优先路线,强在跨数据源仪表盘、告警和 Prometheus 生态;ClickStack 则围绕 ClickHouse 单一引擎优化,提供搜索式排查、原生日志/指标/链路/会话关联,以及 MCP 和 AI notebooks 支持自建 SRE Agent。文章给出选择规则:ClickHouse 是主要遥测库且需要调查式体验时选 ClickStack;已有异构监控体系、依赖 Prometheus 告警或跨系统仪表盘时选 Grafana,也可二者并用。作者提醒 PromQL 支持仍属实验,二者各有生态边界,应随团队工作方式调整。

推荐收录。文章把工具选择拆成监控优先与调查优先、多引擎与单引擎、预定义仪表盘与搜索式排查三组取舍,并明确给出 ClickStack/Grafana/二者并用的决策规则和 PromQL 实验性等边界。适合正在以 ClickHouse 构建可观测性平台的架构师、SRE 和平台工程团队参考;主要风险是内容来自 ClickStack 厂商,读者应结合自身数据源生态与成本验证。

工程实践ClickHouse Engineering

Benchmarking NVMe-backed Managed Postgres: PlanetScale and ClickHouse

文章基于开源可复现的 PostgresBench 基准,用 pgbench 的类 TPC-B 短事务高并发负载,在相同 AWS r8gd 实例(本地 NVMe、一主两同步备、quorum 复制)上对比 ClickHouse Managed Postgres 与 PlanetScale Metal。结果显示 ClickHouse 在 16vCPU/128GB 与 4vCPU/32GB 两种配置下均领先:100GB 数据集吞吐高约 34%–51%,500GB 数据集高约 54%,平均延迟与 P95/P99 也更低。作者把差异归因于系统级优化,如 2MB 大页、wal_compression=lz4、按实例规模调整 max_wal_size 等,并指出 PlanetScale 暴露的配置中巨大页与 WAL 压缩关闭、max_wal_size 仅 8GB。文章也承认仍存在未通过 pg_settings 暴露的实现差异,建议用户用自己的负载做概念验证。

推荐收录,因为它提供了可复现的开源基准 PostgresBench、明确的 pgbench 命令与硬件/复制配置,并对比了两项服务可见的 Postgres 配置差异(大页、WAL 压缩、max_wal_size),这些调优要点可迁移到自建或托管 Postgres 的运维中。适合评估托管 Postgres 或做 OLTP 性能调优的读者。主要风险是它由 ClickHouse 自测、属厂商对比,具体 TPS 数字会随产品迭代过时,应结合自身负载验证。

工程实践ClickHouse Engineering

Instrumenting my espresso machine with OpenTelemetry

文章以搭载 ESP32 开源控制器 GaggiMate 的 Gaggia 咖啡机为对象,把每次萃取当作分布式系统请求,用 OpenTelemetry 埋点并经 ClickStack 把遥测送入 ClickHouse 存储分析。关键工程点包括:裁剪上游 OTLP protobuf 为保留字段号的单文件子集以适配微控制器内存;把导出任务绑定第二个核心、用快照式加锁与队列满即丢弃,保证网络 I/O 不阻塞 50ms 萃取控制环;在设备端以恒定内存计算阻力变异系数等派生指标,并用 protobuf 拼接生成高分辨率曲线。文中还记录了跨线程 String 竞态与 TLS 栈溢出两个崩溃修复、基于 OCB 构建带 MQTT receiver 的定制 collector,以及只读 LLM Agent 经 MCP 查询闭环给出调整建议。结论强调 OTLP 是通用契约、埋点不得危及被观测系统、列式存储化解高基数问题;局限是整体仍属爱好级玩具问题,研磨度等关键上下文依赖人工录入。

推荐收录:文章把 OTLP protobuf 裁剪、ESP32 双核实时任务隔离、快照加锁与 drop-don't-block、设备端流式统计、protobuf 拼接、基于 OCB 的定制 MQTT collector 讲得具体且附字段号与代码,并用最坏情况测试验证编码器边界。适合可观测性、嵌入式/物联网遥测管道与列式存储方向的工程师,其中'埋点不得阻塞被观测系统''列式存储化解高基数'等经验可迁移到生产系统;局限是部分结论绑定 ClickStack/ClickHouse 生态。

工程实践ClickHouse Engineering

How we build and evaluate our MCP server for SRE agents

ClickHouse 工程博客详细介绍了为 SRE 智能体构建与评估 ClickStack MCP server 的方法,核心是开源基准框架 hdx-evals。该框架用种子 PRNG 确定性生成数千万级合成日志与 span,构造根因定位、延迟尖峰、噪声信号、健康检查、分段回归五类事件场景,并植入高音量干扰项,以防模型依赖训练记忆而非真正调查。每次运行都在隔离沙箱中以真实 Claude 进程无提示执行,保留完整工具调用轨迹;评分由加权正则检查、LLM 裁判(占 60%)与工具错误扣分合成为单一分数,答案经匿名化以避免裁判受工具品牌影响。结果显示 ClickStack MCP 在全部五个场景均胜过直连 SQL 的 ClickHouse MCP,领先 7-20 个百分点,并提炼出工具描述粒度、响应设计与查询延迟对调查质量的关键影响。其边界是当前仅覆盖 trace 与日志调查,CI 集成和更多场景仍待完善。

推荐收录:文章给出了完整的基准方法论与可复现证据,包括确定性数据生成、沙箱隔离、盲评评分公式和五场景对比结果,而非只展示营销数字。适合构建 MCP/Agent 工具、做 AI 工程评估或 SRE 可观测性的读者,其场景设计、干扰项构造和评分权重分配可直接迁移到其他 agent 工具链评测中;需注意结论基于合成数据和单一模型,落地前应补充自有数据验证。

工程实践ClickHouse Engineering

PostgresBench: Measuring the impact of High Availability on Managed Postgres performance

文章介绍 ClickHouse 团队开源的 PostgresBench 在加入高可用(HA)配置后的第二轮结果,对比 ClickHouse Managed Postgres、Crunchy Bridge、AWS RDS、Aurora 与 Neon 在匹配主库算力、相近持久化级别下的表现。作者把托管 Postgres 的 HA 实现分为共享无(本地存储 + PostgreSQL 流复制 + 热备节点)与共享存储(计算存储分离、提交路径写多份 WAL)两类,并以“主库故障后 2 分钟内恢复且零数据丢失”作为 HA 定义。在 16 vCPU/64 GB、500 GB 数据集、10 分钟压测下,同步复制代价明显:ClickHouse 双同步备库 TPS 降至单机 79%、p99 升至 254%,RDS Multi-AZ 集群 p99 升至 627%。结论是匹配持久化级别时 ClickHouse Managed Postgres 吞吐与延迟优于其他托管服务;但数据为厂商自测、存储后端冗余配置未公开,对 Neon 的评价带明显倾向,需谨慎解读。

推荐收录:文章给出可复现的开源基准、明确的 HA 定义(2 分钟 RTO + 零丢失)、各厂商实例配置,并用数据量化同步复制对 p99 尾延迟的放大(最高 6 倍以上),对做数据库选型与 HA 架构权衡的工程师有直接参考价值。风险在于这是厂商自测且对比自家产品的稿件,Aurora/Neon 存储冗余未公开、对 Neon 评价带倾向,建议以方法学与相对趋势为主,而非绝对排名。

工程实践ClickHouse Engineering

Replacing the HDB: ClickHouse for historical ticker data

文章以 Binance 公开行情归档为数据源,演示如何用 ClickHouse 承载历史 tick 数据:实时层之外的历史层是低风险试验场,适合引入新数据库。核心手段是列式存储配合针对性编码——LowCardinality 处理低基数 symbol,DoubleDelta 压缩单调递增的 ts 与 trade_id,ZSTD/LZ4 利用重复字节模式。作者给出完整建表、写入与查询示例,覆盖 VWAP、OHLC K 线、ASOF JOIN 计算滑点等交易台常用分析,并用量表统计验证:一个月 191 GiB 原始 CSV 压缩至约 10 GiB,十个月 162 亿行仅 76 GiB,Cloud 成本约每月 1.88 美元,且查询延迟不随数据量增长,因为主键 (symbol, ts) 稀疏索引将扫描裁剪到万分之一。边界在于不按 symbol 与时间过滤的查询仍需全表扫描。

收录理由:文中不仅有可直接复用的建表结构、编码选择与 VWAP/OHLC/ASOF JOIN 查询,还给出压缩比、成本与查询计划等可验证证据,属于有取舍、有量化的真实工程案例。适合从事时序/行情数据、OLAP 选型与压缩调优的读者迁移到类似高写入、按维度过滤的分析型负载。风险在于内容为厂商博客,读者需注意其面向 ClickHouse 的视角,未与其他方案横向对比。

工程实践ClickHouse Engineering

@clickhouse/rowbinary: when your library is also a parser compiler

文章介绍 ClickHouse 发布的 @clickhouse/rowbinary —— 一个读取/写入 RowBinary 格式的 Node.js 库,其独特之处在于同时以 Agent Skill 形式发布。库的第一层是按类型拆分的读取原语(覆盖 Nullable、Array、Map、Tuple、LowCardinality、DateTime64、Variant、Dynamic、JSON 等),每个原语被刻意写小、单一用途、避免 megamorphic 分派以便被 V8 单态化内联;第二层是 SKILL.md,教导编码 agent 依据查询的实际列类型把这些原语组装成专用解析器,而非在运行时逐格做类型分派。作者用基准证明:RowBinary 比正确的 JSON 路径快约 2.1–3.3 倍,agent 生成的解析器又比组合式通用读取器快 1.5–3.4 倍,每个解析器生成成本约 0.20 美元。文章还强调关键风险:从零手写解码器会静默损坏数据(UUID 字节序错误、UInt64 被舍入为 float64),而复用手写且经过测试的原语可做到“构造即正确”。适用边界明确:字符串密集型日志场景 RowBinary 反而慢于 JSONCompactEachRow,skill 自身也建议此时不要使用。

推荐收录。文章不是产品发布稿,而是用真实基准、生成成本与失败模式分析论证一个可迁移的工程范式:把传统代码生成编译器(protoc/flatc/Cap'n Proto 那种带 IR、后端和选项矩阵的形态)替换为“库作为参考实现 + agent 按查询特化”的技能,并强调生成代码是可审阅、可测试、由人提交的普通源码。对从事数据接入、数据库客户端、性能优化与 AI 工程化的读者尤其有价值;“防止 AI 生成代码静默损坏数据”以及“面向被阅读而非被调用的库该如何写注释与保持一致”的经验可直接迁移。风险在于结论依赖具体模型能力与基准环境,作者也承认小模型退化明显(Haiku 需聚焦子代理才从 52% 提升到 86%)。