Convex 是一个开源响应式数据库,专为 Web 应用开发者(包括人类和 LLM)设计,旨在简化开发工作。它通过纯 TypeScript 编写数据获取和业务逻辑,并保证强一致性。Convex 提供数据库、服务器函数编写位置和客户端库,帮助开发者轻松构建和扩展动态实时更新应用。
主要能力:
- 响应式数据库:数据变更自动实时更新到客户端。
- 纯 TypeScript 编写业务逻辑:查询和变更使用用户定义函数(UDF)。
- 强一致性:数据操作保证一致性。
- 云端平台:提供慷慨的免费套餐,适合小型应用和副项目零成本运行。
- 自托管:包含仪表盘和 CLI 等大部分云功能,可与 Neon、Fly.io、Vercel、Netlify、RDS、Sqlite、Postgres 等工具配合使用。
- 部署方式:推荐使用 Docker,也可使用预编译二进制。
使用方式:
- 入门:访问官方文档查看指南。
- 云端:使用 Convex 云平台快速构建。
- 自托管:参考自托管指南,可使用 Docker 或预编译二进制。社区支持在 Discord 的 #self-hosted 频道。
- 从源码构建:不推荐,若选择请参考自托管指南,并确保更改实例密钥和管理密钥。
- 自托管构建包含一个信标(beacon)以帮助改进产品,信息匿名且最小化,可通过 --disable-beacon 标志禁用。信标消息包括:部署的随机标识符(不用于其他地方)、数据库迁移版本、后端 Git 版本、后端运行时间。
适用场景:
- 需要实时数据更新的 Web 应用。
- 希望用 TypeScript 统一前后端逻辑的项目。
- 小型应用和副项目可利用免费套餐零维护运行。
- 需要自托管或与现有工具集成的场景。
限制:
- 开源版本不包含内部测试框架。
- 在 Linux 和 Mac 上测试最充分,Windows 经验较少。
- 自托管时需注意更改默认的实例密钥和管理密钥。
- 信标可禁用,但默认开启。
仓库布局:
- crates/:Rust 代码。主二进制 local_backend/ 是运行时的应用服务器,作为 Convex 云的 serving edge。
- npm-packages/:公共和内部 TypeScript 包。内部包中 udf-runtime/ 设置用户定义函数的 JS 环境;system-udfs/ 包含 Convex 系统使用的函数(如 CLI)。
社区与支持:可通过 Discord 获取帮助,通过 GitHub Issues 报告问题。提交 PR 即表示确认 Convex 可按照其选择的条款使用、修改、复制和重新分发贡献。