diff --git a/README.md b/README.md index 60c2c5d..85babd3 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # MetonaSqlark
- v0.2.0 新增 — AriaEngine 是专为 MetonaSqlark 设计的页面式存储引擎,对标 SQLite 设计理念。
+
@@ -23,7 +23,7 @@
- 🔄 **事务回滚** — Memory/IndexedDB/Hybrid/Aria 四引擎事务原子性,自动回滚
- 🌲 **RB-Tree 完整实现** — 标准红黑树插入+删除修复,O(log n) 保证
- 🌐 **浏览器兼容** — Chrome 80+ / Firefox 80+ / Safari 14+ / Edge 80+ / Node.js 16+
-- 🧪 **526 测试 · 91.0% 覆盖率** — 27 套件,生产级质量保证
+- 🧪 **701 测试 · 91.0% 覆盖率** — 32 套件,生产级质量保证
---
@@ -270,7 +270,7 @@ const { data, loading, refresh } = useSqlarkQuery(db, 'SELECT * FROM users');
---
-## 🌲 AriaEngine — 自研存储引擎 (v0.2.0)
+## 🌲 AriaEngine — 自研存储引擎 (v0.2.4)
AriaEngine 是内置的页面式存储引擎,对标 SQLite 的设计理念:
@@ -279,7 +279,7 @@ AriaEngine 是内置的页面式存储引擎,对标 SQLite 的设计理念:
const db = await MetonaSqlark.create({
name: 'my-app',
mode: 'aria', // 🆕 自研引擎模式
- diskEngine: 'indexeddb', // 底层存储后端
+ diskEngine: 'indexeddb', // 'indexeddb' | 'opfs' | 'memory'
});
// 与现有 API 完全兼容
@@ -295,15 +295,19 @@ const rows = await db.query('SELECT * FROM users');
```
┌──────────────────────────────────────────┐
-│ AriaEngine │
+│ AriaEngine v0.2.4 │
│ (implements IStorageEngine) │
├──────────────────────────────────────────┤
│ LSM-Tree │ Buffer Pool │ WAL │
│ MemTable │ LRU (256pp) │ Recovery │
-│ +SSTable │ │ │
+│ +SSTable │ +FileManager │ +CRC │
├──────────────────────────────────────────┤
│ MVCC │ Bloom Filter │ LZ4 │
│ Snapshot │ FNV-1a+Murmur│ Compress │
+│ +Savepoint│ +Serialize │ │
+├──────────────────────────────────────────┤
+│ AES-GCM │ 二级索引 │ ANALYZE │
+│ Encrypt │ Per-Column │ EXPLAIN │
├──────────────────────────────────────────┤
│ Storage Backend (IDB / OPFS / Memory) │
└──────────────────────────────────────────┘
@@ -311,14 +315,15 @@ const rows = await db.query('SELECT * FROM users');
| 特性 | 说明 |
|------|------|
-| **LSM-Tree** | MemTable (红黑树) → SSTable 多级索引,写优化,支持点查 + 范围扫描 |
-| **WAL** | Write-Ahead Log 二进制格式,full/batch/none 三种同步模式 |
-| **MVCC** | 版本链 + 快照隔离,事务读写不互斥 |
-| **Buffer Pool** | LRU 页面缓存,默认 256 页 ≈ 1MB 可控内存 |
-| **Bloom Filter** | FNV-1a + Murmur 双哈希,快速否定 key |
-| **Slotted Page** | 4KB 固定页面,Slot Directory + Tuple 二进制序列化 |
-| **Compaction** | Leveled Compaction,自动合并回收空间 |
-| **OPFS Backend** 🆕 | 自研文件存储后端,零外部依赖,纯二进制页面文件 |
+| **LSM-Tree** | MemTable (红黑树) → SSTable 多级索引,异步 Compaction,写背压 |
+| **WAL** | Write-Ahead Log 二进制格式,CRC 校验,full/batch/none 三种模式,16MB 阈值 |
+| **MVCC** | 版本链 + 快照隔离,事务读写不互斥,自动 GC(每10次检查点) |
+| **Buffer Pool** | FileManager + LRU 页面缓存,256 页 ≈ 1MB 可控内存 |
+| **Bloom Filter** | FNV-1a + Murmur 双哈希,SSTable footer 序列化,查询时 probe |
+| **二级索引** | 每列独立 LSM Tree,支持 $eq/$in/$gt/$lt 范围扫描 |
+| **AES-GCM** | PBKDF2 密钥派生 + AES-256-GCM 页面级加密 |
+| **Compaction** | 异步 Leveled Compaction,Level 0 > 8 触发同步背压 |
+| **OPFS Backend** | 纯浏览器文件系统,Promise 队列串行写,零外部依赖 |
---
@@ -340,7 +345,7 @@ npm run typecheck # 类型检查
| 指标 | 数值 |
|------|------|
| 测试用例 | 701 |
-| 测试套件 | 27 |
+| 测试套件 | 32 |
| 行覆盖率 | 91.0% |
| SQL 关键字 | 33 |
| 存储引擎 | 5(Memory / IndexedDB / OPFS / Hybrid / **Aria** 🆕) |
diff --git a/site/docs.html b/site/docs.html
index 4358446..dcbe14c 100644
--- a/site/docs.html
+++ b/site/docs.html
@@ -629,7 +629,17 @@ db.emit('users', { 🌲 AriaEngine 自研存储引擎
-v0.2.4 生产级 — 二级索引 · MVCC事务 · BloomFilter · WAL全同步 · AES-GCM加密 · Savepoint · EXPLAIN · ANALYZE · REINDEX · VACUUM · BufferPool · 701测试全覆盖。
| 特性 | Memory | Disk(IDB) | Disk(OPFS) | Hybrid | Aria |
|---|---|---|---|---|---|
| 持久化 | ❌ | ✅ IDB | ✅ OPFS | ✅ 双写 | ✅ 后端决定 |
| 事务 | ✅ 快照 | ✅ 原子 | ✅ 快照 | ✅ 双引擎 | ✅ MVCC |
| 索引 | Hash | Hash | Hash | Hash | LSM二级 |
| 上限 | 内存 | ~2GB | 磁盘 | ~2GB | 内存 |
| 浏览器 | 全部 | 全部 | Chromium | 全部 | 全部 |