docs: v0.2.4 五模式对比表 + 环境限制/能力详细说明 + 701测试
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
<img src="https://img.shields.io/badge/version-0.2.2-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-91.0%25-brightgreen?style=flat-square" alt="coverage">
|
||||
<img src="https://img.shields.io/badge/tests-543%20passed-success?style=flat-square" alt="tests">
|
||||
<img src="https://img.shields.io/badge/tests-701%20passed-success?style=flat-square" alt="tests">
|
||||
</p>
|
||||
|
||||
> 基于 TypeScript 的**前端关系型数据库**,支持完整 SQL 查询、Query Builder 链式 API、与 **AriaEngine 自研页面式存储引擎**。
|
||||
@@ -225,6 +225,51 @@ const { data, loading, refresh } = useSqlarkQuery(db, 'SELECT * FROM users');
|
||||
|
||||
---
|
||||
|
||||
## 📊 存储模式对比
|
||||
|
||||
| 特性 | Memory | Disk (IndexedDB) | Disk (OPFS) | Hybrid | Aria |
|
||||
|------|--------|------------------|-------------|--------|------|
|
||||
| **持久化** | ❌ 重启丢失 | ✅ IndexedDB | ✅ OPFS文件系统 | ✅ 内存+磁盘 | ✅ 后端决定 |
|
||||
| **事务回滚** | ✅ 快照 | ✅ 原子flush | ✅ 快照 | ✅ 双引擎 | ✅ MVCC |
|
||||
| **二级索引** | ✅ Hash | ✅ Hash | ✅ Hash | ✅ Hash | ✅ LSM |
|
||||
| **查询性能** | ⚡ O(1) PK | 🟡 O(1) PK | 🟡 O(1) PK | ⚡ O(1) PK | ⚡ O(log n) |
|
||||
| **数据上限** | 内存限制 | ~2GB(IDB限制) | ~磁盘可用 | ~2GB(IDB) | 内存限制 |
|
||||
| **浏览器** | 全部 | 全部 | Chrome/Edge 102+ | 全部 | 全部 |
|
||||
| **适用场景** | 缓存/测试 | 标准持久化 | Chromium专有 | 速度+持久化 | 大规模/分析 |
|
||||
| **测试覆盖** | 30+ | 30+ | 12 | 15+ | 200+ |
|
||||
|
||||
### Memory 模式
|
||||
- **环境**: 所有浏览器、Node.js
|
||||
- **限制**: 数据不持久化,页面刷新/进程重启后数据丢失
|
||||
- **能力**: 完整 CRUD、事务回滚、外键级联、二级索引、SQL 全支持
|
||||
- **适用**: 临时数据、单元测试、缓存层
|
||||
|
||||
### Disk (IndexedDB) 模式
|
||||
- **环境**: 所有现代浏览器(Chrome/Firefox/Safari/Edge)、Node.js(fake-indexeddb)
|
||||
- **限制**: 受浏览器 IndexedDB 配额限制(通常 ~2GB),多标签页需处理版本冲突
|
||||
- **能力**: 完整 CRUD、事务原子性(单 IDB 事务包裹)、外键级联、onversionchange 感知
|
||||
- **适用**: 标准前端数据库持久化场景
|
||||
|
||||
### Disk (OPFS) 模式
|
||||
- **环境**: **仅限** Chrome 102+ / Edge 102+(Origin Private File System)
|
||||
- **限制**: Firefox/Safari 不支持 OPFS API;每次写入重写整表 JSON 文件(大表性能差,不建议 >1000 行)
|
||||
- **能力**: 完整 CRUD、重启自动加载数据、事务回滚
|
||||
- **适用**: Chromium 独占场景、小数据集持久化
|
||||
|
||||
### Hybrid 模式
|
||||
- **环境**: 所有浏览器
|
||||
- **限制**: 磁盘引擎决定底层限制(IndexedDB ~2GB / OPFS Chrome only)
|
||||
- **能力**: write-through 双写(内存+磁盘)、提交顺序保证(磁盘优先)、读从内存
|
||||
- **适用**: 需要内存速度 + 磁盘持久化的混合场景
|
||||
|
||||
### Aria 模式
|
||||
- **环境**: 所有浏览器(后端可选 IndexedDB / OPFS / Memory)
|
||||
- **限制**: Memory 后端重启丢失;IndexedDB 后端受配额限制;OPFS 后端仅 Chromium
|
||||
- **能力**: LSM-Tree 存储引擎、二级索引、MVCC 事务、WAL 崩溃恢复、Bloom Filter、AES-GCM 加密、Savepoint、EXPLAIN、ANALYZE、REINDEX、VACUUM
|
||||
- **适用**: 大规模数据分析、需要自研引擎可控性的高级场景
|
||||
|
||||
---
|
||||
|
||||
## 🌲 AriaEngine — 自研存储引擎 (v0.2.0)
|
||||
|
||||
AriaEngine 是内置的页面式存储引擎,对标 SQLite 的设计理念:
|
||||
@@ -294,7 +339,7 @@ npm run typecheck # 类型检查
|
||||
|
||||
| 指标 | 数值 |
|
||||
|------|------|
|
||||
| 测试用例 | 543 |
|
||||
| 测试用例 | 701 |
|
||||
| 测试套件 | 27 |
|
||||
| 行覆盖率 | 91.0% |
|
||||
| SQL 关键字 | 33 |
|
||||
|
||||
Reference in New Issue
Block a user