IndexedDB
IndexedDB — JavaScript интерфейс прикладного программирования (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]
См. также
Примечания
- ↑ IndexedDB API . W3.org.
- ↑ IndexedDB - MDC Doc Center (англ.). Developer.mozilla.org.
- ↑ Web Platform Status (англ.). Проект Chromium (21 мая 2012).
- ↑ IndexedDB (англ.), MSDN, 14 марта 2012
- ↑ What's New in macOS (англ.). Apple.
- ↑ Shankland, Stephen. Consensus emerges for key Web app standard | Deep Tech - CNET News (англ.). News.cnet.com (12 марта 2010).
- ↑ Well, I'm Back: Not Implementing Features Is Hard (англ.). Weblogs.mozillazine.org.
- ↑ Beyond HTML5: Database APIs and the Road to IndexedDB
- ↑ IndexedDB and Limits (англ.) (17 апреля 2015).
- ↑ 1 2 Gefährdeter Datenschutz: Firefox löscht lokale Datenbanken nicht (нем.) (19 сентября 2017). — Обзор поддержки браузерами.
- ↑ Can I use: IndexedDB (англ.).
- ↑ Web SQL Database (англ.).
- ↑ Using IndexedDB API today – the IndexedDB polyfills (англ.). Mozilla Hacks (31 июля 2012).
Ссылки
- Indexed Database API: официальная спецификация
- Основные понятия IndexedDB: описание в сети разработчиков Mozilla
Это заготовка статьи об Интернете. Помогите Википедии, дополнив её. |