SuperAPI AI 工具集

db-core/persistence

数据与分析

查看项目

更新于 10-16 12:44

技能介绍

用途:为 TanStack DB 集合提供基于 SQLite 的持久化层,是 db-core 与 db-core/collection-setup 的后续技能。数据在页面刷新、应用重启与离线期间依然保留;对同步集合而言服务器仍是权威来源,持久化只作为本地缓存实现即时恢复。

主要能力:各平台提供独立包与创建函数,如浏览器(OPFS)用 @tanstack/browser-db-sqlite-persistence 的 createBrowserWASQLitePersistence,另有 React Native、Expo、Electron、Node.js、Capacitor、Tauri、Cloudflare Durable Objects 等版本,均从核心重导出 persistedCollectionOptions。用法分两种:本地无服务端时传入 id、getKey、persistence、schemaVersion;同步场景则在 persistedCollectionOptions 中展开既有适配器选项并追加 persistence 与 schemaVersion,可与 electricCollectionOptions、queryCollectionOptions、powerSyncCollectionOptions 等配合。协调器负责领导者选举与跨实例通信:浏览器用 BrowserCollectionCoordinator,Electron 用 ElectronCollectionCoordinator,单进程平台用 SingleProcessCoordinator。协调器必须实现 requestApplyCommittedTx(collectionId, tx),否则集合配置会失败。

限制与注意:本地持久化必须显式提供 id,否则每次会话生成随机 UUID,数据在刷新后被静默丢弃;多标签共享同一 OPFS 数据库时需使用 BrowserCollectionCoordinator,单标签应用不要添加;schemaVersion 变化会触发整体重置,没有自定义迁移函数,同步集合可由服务器重新提供数据,本地集合会抛错。applied_tx 日志默认按 appliedTxPruneMaxRows(1_000)与 appliedTxPruneMaxAgeSeconds(86_400)裁剪,设为 0 可禁用;裁剪不缩小 SQLite 文件。关闭或热重载时应调用 coordinator.dispose() 并关闭数据库。资料未提供具体价格与性能数据。