在现代Web和移动应用开发中,数据同步一直是一个复杂的问题。用户期望离线时也能使用应用,联网后自动同步数据。Triplit就是为解决这个问题而生的开源数据库,它在Hacker News上获得了279分的热度。
Triplit是什么
Triplit是一款全栈同步数据库,由Aspen Cloud开发。它的核心特点是:
- 双端运行:同时在服务端和客户端运行,客户端使用IndexedDB作为存储后端
- 实时同步:数据变更通过WebSocket实时推送到所有连接的客户端
- 本地优先:应用首先读写本地数据,后台自动同步到服务端
- 自托管:可以部署在自己的服务器上,完全掌控数据
项目地址:github.com/aspen-cloud/triplit
核心功能
1. TypeScript原生
Triplit用TypeScript编写,提供完整的类型安全。查询、Schema定义、数据操作全部有类型提示,减少运行时错误。
2. 内置认证和权限
Triplit内置了JWT认证和基于角色的访问控制。你可以在Schema中定义每个表的读写权限规则,不需要额外的认证中间件。
3. 离线支持
客户端Triplit数据库可以在完全离线的状态下工作。用户的所有操作都记录在本地,联网后自动与服务端合并。冲突解决策略可配置。
4. 实时订阅
通过useQuery钩子(React/Vue/Svelte),你可以订阅数据查询,当数据变化时UI自动更新,无需手动管理状态。
部署方式
Triplit支持多种部署方式:
- Docker部署:官方提供Docker镜像,一键启动
- Triplit Cloud:官方托管服务,适合快速原型开发
- 自托管:在自己的VPS或云服务器上部署,完全掌控数据
快速开始(Docker)
docker run -p 6543:6543 triplit/triplit-server
启动后,服务端运行在 http://localhost:6543,可以通过HTTP和WebSocket连接。
客户端集成
npm install @triplit/client
在应用中创建客户端实例并开始查询:
import { TriplitClient } from '@triplit/client';
const client = new TriplitClient({
serverUrl: 'http://localhost:6543',
token: 'your-token'
});
// 查询数据
const todos = await client.fetch({
collection: 'todos',
where: [['completed', '=', false]]
});
适用场景
- 协作应用:文档编辑、项目管理、白板等需要多人实时协作的场景
- 离线优先应用:移动端、PWA等需要离线工作能力的应用
- 替代Firebase:如果你需要Firebase的实时同步能力但想自托管数据
- 快速原型开发:内置认证和权限,减少后端开发工作量
与其他方案的对比
Triplit的定位介于传统数据库和BaaS(Backend as a Service)之间:
- vs Firebase:功能类似但完全开源可自托管,数据不锁定在Google
- vs Supabase:Supabase侧重传统PostgreSQL + 实时功能,Triplit更偏向本地优先架构
- vs CRDT方案(如Yjs):Triplit提供了完整的数据库层,不仅仅是数据同步
简评
Triplit解决了一个真实存在的痛点:如何在保持数据一致性的同时支持离线操作和实时同步。对于需要这些能力的站长和开发者来说,Triplit提供了一个比Firebase更灵活、比自建同步层更省力的选择。自托管方案也让你完全掌控用户数据。
来源:
© 版权声明
THE END

















暂无评论内容