feat: v0.6.1 — AriaEngine 可选自研 KVStore 后端(storageBackend: 'kv')+ KVStore APPEND 日志类型 + 10 个 aria+kv 集成测试 + 文档全量同步
This commit is contained in:
@@ -3,8 +3,8 @@
|
||||
<p align="center">
|
||||
<img src="https://img.shields.io/badge/version-0.6.1-blue?style=flat-square" alt="version">
|
||||
<img src="https://img.shields.io/badge/license-MIT-green?style=flat-square" alt="license">
|
||||
<img src="https://img.shields.io/badge/coverage-89.3%25-brightgreen?style=flat-square" alt="coverage">
|
||||
<img src="https://img.shields.io/badge/tests-1049%20passed-success?style=flat-square" alt="tests">
|
||||
<img src="https://img.shields.io/badge/coverage-89.4%25-brightgreen?style=flat-square" alt="coverage">
|
||||
<img src="https://img.shields.io/badge/tests-1064%20passed-success?style=flat-square" alt="tests">
|
||||
</p>
|
||||
|
||||
> 基于 TypeScript 的**前端关系型数据库**,支持完整 SQL 查询、Query Builder 链式 API、与 **AriaEngine 自研存储引擎**。
|
||||
@@ -20,7 +20,7 @@
|
||||
- 🛠 **维护语句 SQL 入口** — `EXPLAIN`/`ANALYZE`/`REINDEX`/`VACUUM`/`SAVEPOINT` 原生 SQL 支持(v0.5.1 补齐)
|
||||
- 🛡 **输入校验全覆盖** — `maxLength`/`min`/`max` 约束、类型检查、必填验证
|
||||
- 💾 **多引擎架构** — Memory / **KVStore**(自研 KV 引擎)/ OPFS / Hybrid(write-through) / Aria 五种模式(v0.6.0: IndexedDB 完全移除)
|
||||
- 💾 **KVStore 自研 KV 引擎** — 日志结构化事务存储:多 key 原子写(putMany/deleteMany 单记录原子追加)、快照 checkpoint、崩溃两阶段恢复、CRC-32 自愈;替代 IndexedDB(v0.6.0)
|
||||
- 💾 **KVStore 自研 KV 引擎** — 日志结构化事务存储:多 key 原子写(putMany/deleteMany 单记录原子追加)、快照 checkpoint、崩溃两阶段恢复、CRC-32 自愈、APPEND 追加写入(aria WAL 分片用);替代 IndexedDB(v0.6.0)且可作 AriaEngine 后端(v0.6.1)
|
||||
- 🔄 **旧库一键迁移** — `migrateFromIndexedDB()` 把旧 IndexedDB 数据(schema/索引/行)导入新引擎(v0.6.0)
|
||||
- 📝 **完整 SQL 支持** — SELECT/JOIN/子查询/GROUP BY/HAVING/ORDER BY/LIMIT/BETWEEN/IF NOT EXISTS/ALTER TABLE/TRUNCATE TABLE/UNION/INSERT...SELECT/事务语句/CREATE INDEX/EXISTS(v0.3.0)+ CASE WHEN/哈希连接/组提交(v0.3.1)+ 多标签页同步(v0.3.2)
|
||||
- 🚰 **流式查询** — `queryStream`/`stream()` 逐行回调,Aria LSM 惰性扫描不物化结果集(v0.4.0)
|
||||
@@ -36,7 +36,7 @@
|
||||
- 🛡 **级联环路保护** — A→B→A 循环引用 + CASCADE 不无限递归(visited 保护,全引擎)(v0.6.1)
|
||||
- ⚛️ **多表事务真原子** — 事务 commit / 级联更新合并单条日志记录(崩溃无部分提交)(v0.6.1)
|
||||
- 🌐 **浏览器兼容** — Chrome 102+ / Firefox 111+ / Safari 15.2+ / Edge 102+ / Node.js 16+
|
||||
- 🧪 **1049 测试 · 89.3% 覆盖率** — 65 套件 + 12 个 Playwright 真实 Chromium e2e(含崩溃注入),生产级质量保证
|
||||
- 🧪 **1064 测试 · 89.4% 覆盖率** — 66 套件 + 12 个 Playwright 真实 Chromium e2e(含崩溃注入),生产级质量保证
|
||||
|
||||
---
|
||||
|
||||
@@ -111,7 +111,7 @@ import { MetonaSqlark } from '@metona-team/metona-sqlark';
|
||||
const db = await MetonaSqlark.create({
|
||||
name: 'my-app',
|
||||
mode: 'hybrid', // 'memory' | 'disk' | 'hybrid' | 'aria'
|
||||
diskEngine: 'opfs', // 'opfs' | 'memory'(v0.6.0: IndexedDB 已移除)
|
||||
diskEngine: 'opfs', // 'opfs' | 'kv'(自研 KVStore 后端)| 'memory'(v0.6.0: IndexedDB 已移除)
|
||||
});
|
||||
|
||||
// 定义表 — 支持外键级联
|
||||
@@ -218,7 +218,7 @@ await db2.disconnect(); // 引用计数 -1
|
||||
|------|------|------|------|
|
||||
| `name` | `string` | `'metona-sqlark'` | 数据库名称 |
|
||||
| `mode` | `'memory' \| 'disk' \| 'hybrid' \| 'aria'` | `'hybrid'` | 存储模式 🆕 aria |
|
||||
| `diskEngine` | `'opfs' \| 'memory'` | `'opfs'` | 磁盘引擎(aria 模式下为存储后端;v0.6.0: IndexedDB 已移除) |
|
||||
| `diskEngine` | `'opfs' \| 'memory' \| 'kv'` | `'opfs'` | 磁盘引擎(aria 模式下为存储后端;'kv' = 自研 KVStore 后端 v0.6.1) |
|
||||
| `version` | `number` | `1` | 版本号 |
|
||||
| `maxRowsPerQuery` | `number` | `0` | 查询结果行数上限(0=不限制)✅ v0.2.5 生效 |
|
||||
| `debug` | `boolean` | `false` | 调试模式,输出详细日志 🆕 |
|
||||
@@ -363,7 +363,7 @@ const { data, loading, refresh } = useSqlarkQuery(db, 'SELECT * FROM users');
|
||||
- **适用**: 需要内存速度 + 磁盘持久化的混合场景
|
||||
|
||||
### Aria 模式
|
||||
- **环境**: 所有浏览器(后端可选 OPFS / Memory)
|
||||
- **环境**: 所有浏览器(后端可选 OPFS / **KVStore**(自研,v0.6.1)/ Memory)
|
||||
- **限制**: Memory 后端重启丢失;OPFS 后端需 OPFS 支持(Chrome 102+ / Firefox 111+ / Safari 15.2+);同一库仅允许一个标签页打开(Web Locks 独占锁,第二个标签页抛 `ARIA_LOCKED`)
|
||||
- **能力**: LSM-Tree 存储引擎、SSTable 4KB 页面化物理存储(OPFS 后端默认启用,BufferPool LRU 缓存)、二级索引(跨重启恢复)、MVCC 事务、WAL 分片文件原子写入崩溃恢复(真追加 + 空洞检测)、ON UPDATE/DELETE 外键级联、Bloom Filter、**全库 AES-GCM 透明加密**(v0.5.0)、LZ4 压缩、Savepoint、EXPLAIN、ANALYZE、REINDEX、VACUUM、`repair()` 自愈(含孤儿页面清理)
|
||||
- **适用**: 大规模数据分析、需要自研引擎可控性的高级场景
|
||||
@@ -379,7 +379,7 @@ AriaEngine 是内置的页面式存储引擎,对标 SQLite 的设计理念:
|
||||
const db = await MetonaSqlark.create({
|
||||
name: 'my-app',
|
||||
mode: 'aria', // 🆕 自研引擎模式
|
||||
diskEngine: 'opfs', // 'opfs' | 'memory'
|
||||
diskEngine: 'opfs', // 'opfs' | 'kv'(自研 KVStore 后端)| 'memory'
|
||||
aria: { // 🆕 AriaEngine 专属配置透传(v0.5.0)
|
||||
walSyncMode: 'full', // WAL 同步模式
|
||||
encryption: { password: 'my-password' }, // 全库 AES-GCM 加密
|
||||
@@ -453,9 +453,9 @@ npm run typecheck # 类型检查
|
||||
|
||||
| 指标 | 数值 |
|
||||
|------|------|
|
||||
| 测试用例 | 1049 |
|
||||
| 测试套件 | 65(+12 Playwright e2e) |
|
||||
| 行覆盖率 | 89.3% |
|
||||
| 测试用例 | 1064 |
|
||||
| 测试套件 | 66(+12 Playwright e2e) |
|
||||
| 行覆盖率 | 89.4% |
|
||||
| SQL 关键字 | 72 |
|
||||
| 存储引擎 | 5(Memory / **KVStore** / OPFS / Hybrid / **Aria**) |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user