Шкуро, Андрей Григорьевич
- 1 year ago
- 0
- 0
IndexedDB — JavaScript -интерфейс прикладного программирования ( API ) клиентского хранилища большого объема структурированных данных, в том числе файлы / blobs . Другими словами, это NoSQL -хранилище данных в формате JSON внутри браузера . Стандарт разработан W3C и внедрен в браузерах с 2011 года.
Поддержка IndexedDB была добавлена в Firefox версии 4, Google Chrome версии 11, и Internet Explorer версии 10. Safari в конечном счете добавил поддержку в версии 8.
База данных Web SQL была предшествующим API, разработанным Apple . Но Mozilla выступила против его стандартизации, потому что не было предложено альтернатив движку SQLite . Таким образом, он был объявлен устаревшим в пользу IndexedDB .
В базе данных сайты IndexedDB могут постоянно хранить и читать данные клиентского хранилища. Каждый домен имеет свою собственную область хранения, доступ к данным, хранящимся в другом домене, не предоставляется в соответствии с принципом одинакового источника ( англ. Same Origin Policy ). Размер доступной памяти зависит от браузера, обычно существует фиксированный предел, который не может быть превышен, и мягкий предел, из которого пользователь должен сначала согласиться на хранение. В принципе, хранилище является постоянным, но браузеры предлагают своим пользователям возможность удаления сохраненных данных.
База данных является объектной базой данных, обычно хранятся объекты JavaScript, с одной из записей в качестве ключа, с помощью которого можно получить данные. Индексы также могут быть созданы для других записей хранимых объектов, чтобы обеспечить эффективный поиск.
Доступ к базе данных асинхронный: клиент делает запрос и регистрирует функции обратного вызова. Как только станет известен результат запроса, он будет проинформирован об этом и, в случае успеха будут предоставлены запрошенные данные, в случае ошибки - причина. При доступе транзакции используются для обеспечения согласованности данных, даже если, например, две одновременно открытые вкладки имеют независимый доступ к базе данных.
Точная реализация базы данных не фиксирована, однако она представляет собой B-дерево . Все современные браузеры поддерживают стандарт, так как он постоянно развивается, не всегда в текущей версии. В браузерах Microsoft интерфейс реализован лишь частично. Старых версиях браузеров API все еще частично снабжен префиксом разработчика.
Web Storage — гораздо более простая альтернатива хранения данных, но с меньшим числом возможностей, предназначенная для небольшого объема данных.
Альтернативным стандартом, представляющим собой базу данных, к которой можно обращаться посредством SQL -запросов, был Web SQL . Однако этот стандарт был реализован только в нескольких браузерах, поэтому его разработка была прекращена в пользу IndexedDB .
В старых браузерах IndexedDB можно моделировать с помощью полифилов ( англ. Polyfill ).