Это не официальный сайт wikipedia.org 01.01.2023

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 могут постоянно хранить и читать данные клиентского хранилища. Каждый домен имеет свою собственную область хранения, доступ к данным, хранящимся в другом домене, не предоставляется в соответствии с принципом одинакового источника (англ. Same Origin Policy). Размер доступной памяти зависит от браузера, обычно существует фиксированный предел, который не может быть превышен, и мягкий предел, из которого пользователь должен сначала согласиться на хранение.[9] В принципе, хранилище является постоянным, но браузеры предлагают своим пользователям возможность удаления сохраненных данных.[10]

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

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

РеализацииПравить

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

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

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

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

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

См. такжеПравить

ПримечанияПравить

  1. IndexedDB API  (неопр.). W3.org. Архивировано 2 февраля 2011 года.
  2. IndexedDB - MDC Doc Center (англ.). Developer.mozilla.org. Архивировано из оригинала 26 мая 2012 года.
  3. Web Platform Status (англ.). Проект Chromium (21 мая 2012). Архивировано 4 марта 2017 года.
  4. IndexedDB, MSDN, 2012-03-14, <http://msdn.microsoft.com/en-us/library/ie/hh673548(v=vs.85).aspx>  Архивная копия от 26 марта 2015 на Wayback Machine
  5. What's New in macOS (англ.). Apple. Архивировано 12 декабря 2017 года.
  6. Shankland, Stephen Consensus emerges for key Web app standard | Deep Tech - CNET News (англ.). News.cnet.com (12 марта 2010). Архивировано 8 апреля 2013 года.
  7. Well, I'm Back: Not Implementing Features Is Hard (англ.). Weblogs.mozillazine.org. Архивировано 6 августа 2011 года.
  8. Beyond HTML5: Database APIs and the Road to IndexedDB  (неопр.). Дата обращения: 8 февраля 2019. Архивировано 14 февраля 2021 года.
  9. Raymond Camden. IndexedDB and Limits (англ.) (17 апреля 2015). Архивировано 9 февраля 2019 года.
  10. 1 2 Gefährdeter Datenschutz: Firefox löscht lokale Datenbanken nicht (нем.) (19 сентября 2017). — Обзор поддержки браузерами. Архивировано 9 февраля 2019 года.
  11. Can I use: IndexedDB (англ.). Архивировано 8 апреля 2017 года.
  12. Ian Hickson. Web SQL Database (англ.). Архивировано 3 февраля 2019 года.
  13. Parashuram Narasimhan. Using IndexedDB API today – the IndexedDB polyfills (англ.). Mozilla Hacks (31 июля 2012). Архивировано 9 февраля 2019 года.

СсылкиПравить