@bimetal/store-sqlite

中文文档
0.42.0发布于 2026/10/30Apache-2.0TypeScriptES Module近 30 天下载 7956

SQLite 事件 Store 用于 @ bimetal/ event- source — 基于文件的零配置持久性

中文使用文档
文档目录6 节
  1. 安装
  2. 使用量
  3. 即时快照( A) createSqliteSnapshotStore (中文(简体) )
  4. 测量效果
  5. 选项( E) SqliteStoreOptions (中文(简体) )
  6. 测试

@bimetal/ store-sqlite (英语)

SQL 备份 EventStore 执行情况 @bimetal/event-sourcing ——基于文件的零配置 本地事件来源。 与任意域包一起使用( E)@bimetal/calendar-data, (中文(简体) ), @bimetal/table-data, (中文(简体) ), . . . . . . . better-sqlite3。 。 。 .

它是其中一种存储适配器 覆盖 存储均等测试套件 (内存 / SQLite ) EventStoreDB产生比特-等同的结果,所以它是内存商店的倒置替换.

安装

npm install @bimetal/store-sqlite

使用量

import { createSqliteEventStore } from '@bimetal/store-sqlite';
import { createCalendarStore } from '@bimetal/calendar-data';

const eventStore = createSqliteEventStore({ path: './events.db' });
const store = createCalendarStore({ eventStore });
await store.hydrate();

即时快照( A)createSqliteSnapshotStore(中文(简体) )

没有持续的快照店,每个进程都会从第一次事件开始重放流出 然后将整个日志保存在记忆中. createSqliteSnapshotStore 保存最新数据 自己每条流的快照 snapshots 表格 指向 同一文件 作为事件存储 :

import { createSqliteEventStore, createSqliteSnapshotStore } from '@bimetal/store-sqlite';
import { createCalendarStore } from '@bimetal/calendar-data';

const eventStore = createSqliteEventStore('./events.db');
const snapshotStore = createSqliteSnapshotStore('./events.db');
const store = createCalendarStore({ eventStore, snapshotStore, snapshotEveryN: 500 });
await store.hydrate(); // loads snapshot + the events after it — not the whole log
  • 每行一行, 最后保存获胜 - 与 createInMemorySnapshotStore, (中文(简体) ), 由下列因素支撑: runSnapshotStoreConformance (单位:千美元)@bimetal/event-sourcing/conformance) (中文(简体) ).
  • 写成附件 : save 运行于 a BEGIN IMMEDIATE 交易 - 写入锁是 在更新运行之前(从测试中的第二个连接中检查)进行.
  • 格式锁随行 : eventSchemaVersion 保存和返回不变; hydrate() 拒绝从更新的策略中获取快照(UnknownEventSchemaVersionError) (中文(简体) ).
  • 其他投影版本 ~ 完整重播 : hydrate() 忽略存储的快照 projectionVersion 不同,并折叠整流。 坚固的一行一直呆到下一个 即刻写出(snapshotEveryN 或者说 rebuild()),所以在此之前,每个开始完全重放.
  • 打开自己的连接. ':memory:' 是私人数据库,不与事件商店共享.
  • 聚合状态被存储为JSON(地图为条目列表). 它必须是JSON安全——它是 每当从 SQLite 中读取的事件折叠时.

测量效果

scripts/heap-messung.mjs 在一流中建立2万个日历事件的日志(2 000个条目 ×) 1 创建 + 9 更新 , 在结尾写一个快照, 然后在新的节点进程中水合物 运行( r)--expose-gc, (中文(简体) ), heapUsed 开口前和水合物后完全GC后,中位数为3. 测量了2026-10-03,节点v22.23.3:

水合物后堆积水合物时间举办的活动
无快照13.2 米贝852分钟2万个
带有快照7.5 米贝75分钟0 个

日志载荷1.2米B,快照行4.3米B. 剩下的是总体状态 本身 —— 包括实体撤消堆栈, 这就是为什么快照行大于日志 载荷在这一工作量中。 保存是日志存储开始时不再加载 : 水合之后 它只保留了快照后的事件 而不是整个溪流 数字是工作量的.

这无关紧要: 只有初始时的内存被测量和限制。 运行中 处理持有的日志随着水合物之后的每一个事件不断增长——写出一个快照 通过 snapshotEveryN 不修剪(被跟踪为双金属-316). 长期进程 仍然需要重启 以卸下日志。 重运行测量 :

npm run build -w @bimetal/store-sqlite
node packages/storage/store-sqlite/scripts/heap-messung.mjs 2000 9 3

选项( E)SqliteStoreOptions(中文(简体) )

选项目的
pathSQLite 数据库文件路径 。 使用 ':memory:' 用于内存数据库.
wal?启用 WAL 模式以更好地同时读取性能 。 默认 true。 。 。 .

测试

npm test --workspace @bimetal/store-sqlite

平等套间__tests__/storage-parity.test.ts运行相同 append编号 :read编号 :subscribe 与记忆、SQLite和事件StoreDB的序列并声称相同的结果——担保 这使得适配器可以互换.

版本与发布记录

@bimetal/store-sqlite 共发布 33 个版本,首次发布于 2026/04/29;过去 12 个月发布了 33 个版本。

版本发布日期距今
0.42.0latest2026/10/308 天前
0.41.02026/10/2415 天前
0.40.02026/10/1128 天前
0.39.02026/10/061 个月前
0.38.02026/10/041 个月前
0.37.02026/09/131 个月前

其他发布通道:next → 1.0.0-rc.3。

关于 @bimetal/store-sqlite 的常见问题

@bimetal/store-sqlite 是什么?

SQLite 事件 Store 用于 @ bimetal/ event- source — 基于文件的零配置持久性

如何安装 @bimetal/store-sqlite?

在项目目录运行 npm install @bimetal/store-sqlite,或使用 pnpm add / yarn add / bun add。

@bimetal/store-sqlite 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@bimetal/store-sqlite 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@bimetal/store-sqlite 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@bimetal/store-sqlite 可以商用吗?

@bimetal/store-sqlite 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@bimetal/store-sqlite 的下载量有多少?

根据 npm 官方下载统计,@bimetal/store-sqlite 在 2026/10/08 – 2026/11/06 这 30 天内被下载 7,956 次,日均约 265 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@bimetal/store-sqlite 还在维护吗?

最新版本 0.42.0 发布于 2026/10/30(8 天前);至今共发布 33 个版本,其中过去 12 个月发布了 33 个;首次发布于 2026/04/29。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。