本文最初发布于 PostHog 官方博客。
在使用代理利用autoresearch成功提高查询性能后,我想尝试一些更有野心的事情。
我使用多个长时间运行的并行 Claude Code 会话重写了 PostHog 的 SQL 解析器。
结果是 16K 行“手工”编写的解析器代码,5K 行工具代码,几千行测试代码,以及大约 70 倍的速度提升。
在所有针对实际应用场景的查询中,新解析器均与旧解析器等效,仅在极少数由“恶作剧之神”编写的极端边缘案例中存在差异(例如,针对 SELECT SELECT FROM FROM WHERE WHERE AND AND 这类完全合法但极具迷惑性的 SQL 语句的测试用例)。
以下是我的实现过程以及我在这个过程中学到的东西。
为什么 PostHog 会有一个 SQL 解析器?
PostHog 允许你直接使用 SQL 访问数据。
我们将你的 SQL 转译成原始的 ClickHouse SQL,因为:
我们希望呈现一个与数据库物理布局无关的数据逻辑视图。
这让我们可以在数据库层进行变更,而不会破坏现有查询。
我们还可以添加许多性能优化和访问控制。
🔗 原始来源
如果你要核对细节,可以再看原文: InfoQ AI原文链接
AI热榜