IndexedDB 是浏览器内置的 NoSQL 数据库,支持存储大量结构化对象、事务操作和索引查询,适合离线应用和大数据存储场景。

论据/示例

基本结构

数据库 (Database)
  ↓
对象仓库 (Object Store) → 类似表
  ↓
索引 (Index)
  ↓
数据 (Record)

基本用法

// 打开数据库
const request = indexedDB.open('MyDB', 1);
 
// 创建对象仓库
request.onupgradeneeded = (e) => {
    const db = e.target.result;
    const store = db.createObjectStore('users', { keyPath: 'id' });
    store.createIndex('name', 'name', { unique: false });
};
 
// 写入数据
const tx = db.transaction('users', 'readwrite');
const store = tx.objectStore('users');
store.add({ id: 1, name: 'Alice' });

特点

  • 容量:无明确限制(取决于磁盘空间)
  • 数据类型:结构化对象(不限于字符串)
  • API:异步 API(基于回调/Promise)
  • 事务:支持事务,保证数据一致性
  • 索引:支持创建索引加速查询

常见用途

  • 离线应用数据缓存
  • 大型数据集存储
  • 客户端搜索功能

关联