Perplexity认为自己在DynamoDB上花费过多,同时也无法获得想要的读取性能控制权。于是公司决定自建数据库:CobbleDB。
这款数据库由两名工程师耗时两个月打造,开发过程中借助了数百个持续工作的编程智能体,最终形成一个约4万行代码的Rust键值存储系统,目前已承担Perplexity部分生产环境的搜索流量。公司测算显示,切换后批量读取的中位延迟为5.6毫秒,而此前DynamoDB的数据为31.4毫秒;p99延迟则从123毫秒降至24.2毫秒。
预计新系统成本至少比DynamoDB低20%,公司还计划未来将该数据库开源。
但数据库本身只是故事的一部分。卡内基梅隆大学教授Andy Pavlo今年早些时候在Percona Live大会上指出,数据库是AI智能体面临的最难也最重要的挑战之一,部分原因在于涉及生产数据的错误往往难以甚至无法撤销。
尽管如此,Perplexity还是动用了数百个智能体参与数据库构建,但并未将生产环境的控制权交给它们。
预计新系统成本至少比DynamoDB低20%,公司还计划未来将该数据库开源。
DynamoDB为何难以满足需求
每次搜索都需要服务层检索预先分块的文本段落和向量嵌入,单次Search API调用会以每批10到20个的方式获取100到120个页面键,每条数据平均大小约为50KB。
DynamoDB在读取处理方式上给予Perplexity的控制权有限,这意味着一个响应缓慢的副本就可能拖慢整体请求。同时,搜索、抓取和重新处理过程中产生的大量稳定读写流量也带来了持续的费用支出,随着流量和数据规模的增长,云成本变得越来越难以证明合理性。
这促使Perplexity将长期文档存储与服务实时搜索的数据库分离开来。
搜索数据的三层架构
存储架构被拆分为三个部分。Pillar负责在基于HDD的YTsaurus系统中保存持久化的文档状态,包括带版本的元数据、文本块和嵌入向量;Lorry则将更新打包成针对特定分区的批次,并通过S3将其传输至CobbleDB。
处理后的页面数据按分区分布在三个副本中,使用哈希化的URL作为键,RocksDB负责将常用数据保留在内存中,其余数据则存放在本地NVMe存储上。读取操作会尽量保持在同一可用区内完成,如果某个副本响应较慢,路由器可以尝试访问另一个副本,而不会让整个批次请求被拖慢。
更新数据通过S3传入,并被独立应用,这使得某个副本即便暂时落后,也能在不阻塞其他副本的情况下自行追赶进度。
批量读取延迟降低约5倍
在Perplexity测量CobbleDB性能时,系统每秒处理约20万次请求,批量读取的中位延迟为5.6毫秒,相比之下此前DynamoDB的数据为31.4毫秒。p99延迟则从123毫秒降至24.2毫秒。
在随后的负载测试中,CobbleDB在性能开始下降之前,达到了每秒50万次请求的处理能力。
需要指出的是,这一对比存在一个重要前提:DynamoDB与CobbleDB并未在相同流量条件下进行同步对比测试——DynamoDB的数据是在切换前记录的,而CobbleDB的数据则是在切换后记录的。此外,Perplexity还单独进行了合成基准测试,测试中每批次包含10到15个键,数值大小从100字节到100KiB不等。
其成本模型显示,在所评估的各种承诺方案中,CobbleDB的成本都比DynamoDB低至少20%,不过这一估算并未包含维护该数据库所需的工程成本。
在随后的负载测试中,CobbleDB在性能开始下降之前,达到了每秒50万次请求的处理能力。
智能体负责构建 工程师掌控运行
智能体能够在不同会话之间保留上下文,在修复问题和编写测试的过程中,发现了恢复假设和运行时配置方面的问题。但它们并不负责数据库的实际运行。
两名工程师始终掌控着架构设计和生产系统,这一点尤为重要,正如Pavlo此前警告的那样,让智能体接近关键生产数据存在风险。
自建系统的长期成本
用八周时间交付CobbleDB解决了Perplexity当下的工程瓶颈,但维护一个定制数据存储系统可能会困难得多。目前的延迟测试结果并非来自严格受控的同步基准对比,而且预计节省的成本中也未包含维护CobbleDB及处理故障所需的工程师投入。
与Shopify和Ramp基于第三方模型构建定制编程智能体的做法类似,Perplexity保留了云基础设施,但用自建系统替换了原本的托管服务。CobbleDB展示了AI辅助开发正在如何改变这种成本考量,使得定制基础设施对规模较小的工程团队而言也变得更加可行。
CobbleDB展示了AI辅助开发正在如何改变这种成本考量,使得定制基础设施对规模较小的工程团队而言也变得更加可行。
Q&A
Q1:CobbleDB是什么?
A:CobbleDB是Perplexity自主研发的数据库系统,由两名工程师借助数百个AI编程智能体,耗时两个月开发完成,是一个约4万行代码的Rust键值存储系统,用于替代DynamoDB处理部分搜索流量。
Q2:CobbleDB相比DynamoDB性能提升了多少?
A:切换后批量读取的中位延迟为5.6毫秒,而DynamoDB此前为31.4毫秒;p99延迟从123毫秒降至24.2毫秒,预计成本也比DynamoDB低至少20%。
Q3:AI智能体在CobbleDB开发中扮演了什么角色?
A:数百个AI智能体参与了开发过程,帮助发现恢复假设和运行时配置方面的问题,但并未被允许接管数据库的实际运行,架构设计和生产系统始终由两名工程师掌控。
