For faster navigation, this Iframe is preloading the Wikiwand page for IndexedDB.

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, Архивировано 26 марта 2015 Источник. Дата обращения: 8 февраля 2019. Архивировано 26 марта 2015 года.
  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 года.
{{bottomLinkPreText}} {{bottomLinkText}}
IndexedDB
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?