技术深度解析
Polynya的架构是将计算-存储分离原则推向逻辑极致的典范。该系统包含三个核心层:复制层,将数据流式传输到存储在对象存储(如S3、GCS)上的Apache Iceberg表中;控制平面,监听智能体触发的事件;计算结构,负责配置和销毁ClickHouse实例。
复制层: Polynya使用变更数据捕获(CDC)或批量复制,持续将源数据同步到Iceberg。Iceberg的开放表格式在此至关重要——它提供快照隔离,意味着每次写入都会创建表的一个新的、不可变的版本。这使得智能体无需锁定即可查询一致的时间点视图。该格式还支持分区演进和隐藏分区,这对于列式存储中的高效剪枝至关重要。
控制平面与事件驱动计算: 当智能体发送查询请求时,控制平面根据查询复杂度和数据量评估所需资源(CPU、内存)。然后,它从预热池中配置一个ClickHouse实例,或从头启动一个。ClickHouse因其在分析查询上卓越的单节点性能而被选中——每节点每秒可扫描数十亿行。实例通过ClickHouse的Iceberg表引擎(自v22.3版本起可用)将Iceberg表配置为数据源。查询完成后,实例被终止,任何中间结果返回给智能体或写回Iceberg。
持久化工作区: 一个关键创新是持久化工作区。这本质上是一个小型、长期存在的存储卷(由SQLite等轻量级数据库或专用Iceberg命名空间支持),用于存储智能体状态——会话变量、中间结果、学习到的模式。这使得智能体能够在多个“一次性”计算会话之间保持上下文。例如,一个欺诈检测智能体可以记住用户的历史交易模式,而无需保持ClickHouse实例存活。
性能基准测试: Polynya早期内部基准测试(在其技术博客中分享)显示了令人信服的结果:
| 指标 | 传统始终在线ClickHouse | Polynya一次性(冷启动) | Polynya一次性(预热池) |
|---|---|---|---|
| 查询延迟(p50) | 50ms | 1.2s | 180ms |
| 查询延迟(p99) | 200ms | 3.5s | 500ms |
| 每千次查询成本 | $0.50 | $0.02 | $0.03 |
| 空闲成本(24小时) | $12.00 | $0.00 | $0.00 |
数据要点: 权衡显而易见:冷启动会引入显著延迟(1.2秒 vs 50毫秒),但预热池可将此降至180毫秒——对于许多智能体工作负载而言是可接受的。成本节省惊人:每查询成本降低96%,且空闲成本为零。对于延迟敏感的智能体(如高频交易),预热池方法是必要的;对于批处理型智能体(如每日报告生成),冷启动即可。
相关开源项目: 社区可通过以下项目探索类似概念:
- Apache Iceberg (github.com/apache/iceberg):基础表格式。5800+星。对于理解快照隔离和分区演进至关重要。
- ClickHouse (github.com/ClickHouse/ClickHouse):分析引擎。38000+星。其Iceberg表引擎是关键。
- Trino (github.com/trinodb/trino):一个备选查询引擎,同样支持Iceberg,可用于类似的一次性模式。
- Flyte (github.com/flyteorg/flyte):一个工作流编排平台,可管理此类一次性计算的生命周期。
Polynya的方法并非全新——无服务器查询服务如Athena和BigQuery的dry-run模式已提供按查询付费——但Polynya与智能体状态及Iceberg事务保证的紧密耦合是独一无二的。
关键参与者与案例研究
Polynya是一家相对较新的公司,由前Infobright和ClickHouse工程师团队创立。他们从一群天使投资人(包括Snowflake和Databricks的前CTO)那里筹集了450万美元的种子轮。其当前产品处于私人测试阶段,拥有12个设计合作伙伴。
竞争格局:
| 公司/产品 | 架构 | 定价模式 | 智能体适用性 | 关键限制 |
|---|---|---|---|---|
| Polynya | 一次性ClickHouse + Iceberg | 按查询付费 + 存储 | 高(事件驱动、有状态) | 冷启动延迟;生态系统有限 |
| Snowflake | 始终在线虚拟仓库 | 按秒计算 + 存储 | 低(对间歇性查询浪费) | 最低1分钟计费;无真正零扩展 |
| BigQuery | 无服务器、自动扩展 | 按扫描字节付费 | 中(无状态管理) | 成本不可预测;无持久化智能体工作区 |
| Databricks SQL | 无服务器SQL仓库 | 按DBU(计算单元)付费 | 低(最低2分钟计费) | 短突发查询昂贵 |
| MotherDuck | 嵌入式,基于DuckDB | 待定 | 待定 | 待定 |