立即体验
v0.1.11 已发布

前端的 SQL 数据库

TypeScript 原生构建,内存与磁盘双模式,支持完整 SQL 查询。
零运行时依赖,开箱即用。

为什么选择 metona-sqlark

专为前端打造的数据库引擎

🧠

双模式存储

Memory(内存)保证极致速度,Disk(IndexedDB / OPFS)提供持久化。Hybrid 模式一键兼顾。

完整 SQL 支持

SELECT / INSERT / UPDATE / DELETE / JOIN / GROUP BY / HAVING / DISTINCT — 手写递归下降解析器。

🔗

Query Builder

链式 API,TypeScript 友好。.select().where().innerJoin().orderBy().limit() — 代码即查询。

🔒

事务支持

原子性操作,事务内任意步骤失败自动回滚。IndexedDB 引擎利用浏览器原生事务。

🧩

插件系统

14 种生命周期钩子,注册自定义插件。beforeQuery / afterInsert / beforeTransaction……

📦

零运行时依赖

纯 TypeScript 实现,不依赖任何第三方库。Tree-shakable,最小体积不到 10KB gzip。

5 行代码开始

像写 SQL 一样操作前端数据

// 创建数据库
const db = await MetonaSqlark.create({ name: 'my-app', mode: 'hybrid' });

// 定义表结构
await db.defineTable('users', {
  id: { type: 'string', primaryKey: true },
  name: { type: 'string', required: true },
  age: { type: 'number' },
});

// SQL 查询
await db.query("INSERT INTO users VALUES ('1', 'Alice', 30)");
const rows = await db.query('SELECT * FROM users WHERE age > 18');

// 或者 Query Builder
const rows2 = await db.table('users')
  .select().where({ age: { $gt: 18 } })
  .orderBy('name').limit(10).execute();

数字说话

metona-sqlark 的核心指标

235+
测试用例
78.9%
代码覆盖率
~10KB
gzip 体积
4
存储引擎