Обзор веб-хранилища

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

В этой статье представлена ​​краткая основа для оценки API и сервисов хранилища, после чего мы предоставим сравнительную таблицу и некоторые общие рекомендации. В ближайшем будущем мы планируем добавить ресурсы для более глубокого понимания отдельных тем хранилища.

Таксономия хранилища

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

Модель данных

Модель хранения единиц данных определяет внутреннюю организацию данных, что влияет на простоту использования, стоимость и производительность запросов на хранение и извлечение.

  • Структурированные: данные, хранящиеся в таблицах с предопределенными полями, что типично для систем управления базами данных на основе SQL, хорошо подходят для гибких и динамических запросов, где полный диапазон типов запросов может быть неизвестен заранее. Ярким примером структурированного хранилища данных в браузере является IndexedDB.

  • Ключ/значение. Хранилища данных «ключ/значение» и связанные с ними базы данных NoSQL предлагают возможность хранить и извлекать неструктурированные данные, индексированные уникальным ключом. Хранилища данных «ключ-значение» похожи на хэш-таблицы в том смысле, что они обеспечивают постоянный доступ к индексированным непрозрачным данным. Яркими примерами хранилищ данных «ключ-значение» являются Cache API в браузере и Apache Cassandra на сервере.

  • Потоки байтов. Эта простая модель хранит данные в виде непрозрачной строки байтов переменной длины, оставляя любую форму внутренней организации на уровне приложения. Эта модель особенно хороша для файловых систем и других иерархически организованных блоков данных. Яркими примерами хранилищ данных байтовых потоков являются файловые системы и облачные службы хранения.

Упорство

Методы хранения для веб-приложений можно анализировать в зависимости от области, в которой данные становятся постоянными.

  • Сохранение сеанса: данные в этой категории сохраняются только до тех пор, пока активен один веб-сеанс или вкладка браузера. Примером механизма хранения с сохранением сеанса является API хранилища сеансов.

  • Сохранение устройства: данные в этой категории сохраняются во всех сеансах и вкладках/окнах браузера на конкретном устройстве. Примером механизма хранения с постоянством устройства является Cache API.

  • Глобальное сохранение: данные в этой категории сохраняются во всех сеансах и устройствах. Таким образом, это наиболее надежная форма сохранения данных. Примером механизма хранения с глобальным постоянством является Google Cloud Storage.

Поддержка браузера

Разработчики должны выбрать API, наиболее подходящий для их предметной области; однако им также следует учитывать тот факт, что стандартизированные и хорошо зарекомендовавшие себя API предпочтительнее пользовательских или проприетарных интерфейсов, поскольку они, как правило, более долговечны и более широко поддерживаются. Они также могут воспользоваться более широкой базой знаний и более богатой экосистемой разработчиков.

Транзакции

Часто важно, чтобы набор связанных операций с хранилищем завершился успешно или завершился сбоем атомарно. Системы управления базами данных традиционно поддерживают эту функцию, используя модель транзакций, в которой связанные обновления могут быть сгруппированы в произвольные единицы. Хотя это не всегда необходимо, это удобная, а иногда и необходимая функция в некоторых проблемных областях.

Синхронизация/Асинхронность

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

Отладка хранилища в Chrome DevTools

Ознакомьтесь со следующей документацией, чтобы узнать больше об использовании Chrome DevTools для проверки и отладки выбранного API веб-хранилища. API, не упомянутые здесь, либо не поддерживаются в DevTools, либо неприменимы.

Если вы используете несколько API-интерфейсов хранилища, воспользуйтесь функцией Clear Storage в DevTools. Эта функция позволяет очистить несколько магазинов одним нажатием кнопки. Дополнительные сведения см. в разделе Очистка сервисных работников, хранилища, баз данных и кэшей .

Куда идти дальше…

Теперь, когда мы рассмотрели некоторые важные подходы к механизмам хранения и сравнили наиболее популярные API и сервисы, доступные сегодня, мы скоро добавим больше контента, чтобы более глубоко погрузиться в одну или несколько интересующих тем: