Библиотека Idb-keyval построена на основе IndexedDB и предоставляет упрощённый API для работы с ключ–значение парами. Основная идея заключается в минимизации сложности взаимодействия с IndexedDB: вместо создания транзакций, объектов хранилищ и обработчиков событий, разработчик получает функции для простого чтения, записи и удаления данных.
Idb-keyval использует единственное хранилище
объектов (store) и оперирует исключительно ключами
и значениями. Каждый ключ должен быть уникальным, а значение может быть
любым сериализуемым объектом. Такая структура делает библиотеку удобной
для задач типа сохранения настроек, кеширования данных или хранения
небольших коллекций объектов.
В IndexedDB индексы создаются для того, чтобы обеспечить быстрый доступ к данным по вторичному ключу или свойству объекта. В Idb-keyval отсутствует поддержка индексов, что напрямую связано с архитектурной философией библиотеки:
Следовательно, библиотека ориентирована на сценарии, где доступ по ключу является основным способом извлечения данных. Попытка использовать фильтрацию по значениям или свойствам объектов через индексы невозможна напрямую, вместо этого предлагается извлекать весь набор данных и выполнять фильтрацию на уровне приложения.
Курсоры в IndexedDB позволяют последовательно обходить записи хранилища с возможностью фильтрации и сортировки. В Idb-keyval нет поддержки курсоров по нескольким причинам:
Таким образом, курсоры заменены на более простые функции, такие как
get(), set(), del() и
clear(). Эти методы покрывают большинство практических
сценариев без необходимости изучения сложной структуры IndexedDB.
Отсутствие поддержки индексов и курсоров накладывает ограничения на архитектуру приложения:
Библиотека выбирает путь простоты и доступности ценой отказа от более сложных механизмов IndexedDB. Ключевые принципы:
Такой подход позволяет максимально быстро интегрировать хранение данных в проект, сохраняя прозрачность и предсказуемость поведения, но требует сознательного планирования, если проект растёт и появляются задачи сложной фильтрации и поиска.