Русская Википедия:IndexedDB

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

IndexedDBJavaScript-интерфейс прикладного программирования (API) клиентского хранилища большого объема структурированных данных, в том числе файлы/blobs. Другими словами, это NoSQL-хранилище данных в формате JSON внутри браузера. Стандарт разработан W3C и внедрен в браузерах с 2011 года.[1]

История

Поддержка IndexedDB была добавлена ​​в Firefox версии 4,[2] Google Chrome версии 11,[3] и Internet Explorer версии 10.[4] Safari в конечном счете добавил поддержку в версии 8.[5]

База данных Web SQL была предшествующим API, разработанным Apple.[6] Но Mozilla выступила против его стандартизации, потому что не было предложено альтернатив движку SQLite.[7][8] Таким образом, он был объявлен устаревшим в пользу IndexedDB.

Основные принципы

В базе данных сайты IndexedDB могут постоянно хранить и читать данные клиентского хранилища. Каждый домен имеет свою собственную область хранения, доступ к данным, хранящимся в другом домене, не предоставляется в соответствии с принципом одинакового источника (Шаблон:Lang-en). Размер доступной памяти зависит от браузера, обычно существует фиксированный предел, который не может быть превышен, и мягкий предел, из которого пользователь должен сначала согласиться на хранение.[9] В принципе, хранилище является постоянным, но браузеры предлагают своим пользователям возможность удаления сохраненных данных.[10]

База данных является объектной базой данных, обычно хранятся объекты JavaScript, с одной из записей в качестве ключа, с помощью которого можно получить данные. Индексы также могут быть созданы для других записей хранимых объектов, чтобы обеспечить эффективный поиск.

Доступ к базе данных асинхронный: клиент делает запрос и регистрирует функции обратного вызова. Как только станет известен результат запроса, он будет проинформирован об этом и, в случае успеха будут предоставлены запрошенные данные, в случае ошибки - причина. При доступе транзакции используются для обеспечения согласованности данных, даже если, например, две одновременно открытые вкладки имеют независимый доступ к базе данных.

Реализации

Точная реализация базы данных не фиксирована, однако она представляет собой B-дерево. Все современные браузеры поддерживают стандарт, так как он постоянно развивается, не всегда в текущей версии. В браузерах Microsoft интерфейс реализован лишь частично.[10] Старых версиях браузеров API все еще частично снабжен префиксом разработчика.[11]

Альтернативы

Web Storage — гораздо более простая альтернатива хранения данных, но с меньшим числом возможностей, предназначенная для небольшого объема данных.

Альтернативным стандартом, представляющим собой базу данных, к которой можно обращаться посредством SQL-запросов, был Web SQL. Однако этот стандарт был реализован только в нескольких браузерах, поэтому его разработка была прекращена в пользу IndexedDB.[12]

В старых браузерах IndexedDB можно моделировать с помощью полифилов (Шаблон:Lang-en).[13]

См. также

Примечания

Шаблон:Примечания

Ссылки