PassFront
  1. PassFront
  2. База знаний
  3. DOM и браузер

Что такое IndexedDB?

DOM и браузер

IndexedDB — это встроенная в браузер база данных для хранения больших объёмов структурированных данных на клиенте с асинхронным API и поддержкой индексов.

Особенности

  • Большой объём — сотни МБ и больше (в отличие от ~5 МБ у localStorage).
  • Структурированные данные — хранит объекты (не только строки), включая файлы/блобы.
  • Асинхронный API — не блокирует основной поток (в отличие от синхронного localStorage).
  • Индексы — быстрый поиск по полям.
  • Транзакции — атомарные операции.
  • Хранит по origin.

Модель

  • Database → Object Stores (аналог таблиц) → записи (объекты) с ключами.
  • Поиск по ключу или индексу.
const request = indexedDB.open('myDB', 1);
request.onupgradeneeded = (e) => {
  e.target.result.createObjectStore('users', { keyPath: 'id' });
};
request.onsuccess = (e) => {
  const db = e.target.result;
  const tx = db.transaction('users', 'readwrite');
  tx.objectStore('users').add({ id: 1, name: 'Ann' });
};

API низкоуровневый — часто используют обёртки (idb, Dexie.js).

Где применяют

  • Офлайн-приложения (PWA), кеш больших наборов данных, хранение файлов, черновики.

IndexedDB против localStorage

  • localStorage — простой, синхронный, ~5 МБ, только строки.
  • IndexedDB — сложный, асинхронный, большой объём, структурированные данные и индексы.

Коротко для собеседования

IndexedDB — клиентская БД для больших объёмов структурированных данных: асинхронная, с индексами и транзакциями, хранит объекты и файлы. Для офлайна (PWA) и кеша. Сложнее localStorage — часто используют обёртки (idb, Dexie).

Другие вопросы раздела