Базы данных NoSQL

Общие сведения для начала работы

Что такое базы данных NoSQL?

Базы данных NoSQL также называют нереляционными или "не SQL", чтобы подчеркнуть тот факт, что они отличаются от реляционных баз данных (SQL) со строками и таблицами, но также позволяют обрабатывать огромные объемы быстро меняющихся неструктурированных данных.

Технологии NoSQL появились еще в 1960-х и носили различные названия, но нынешний всплеск их популярности связан с тем, что картина данных меняется, а разработчикам необходимо адаптироваться к огромным объемам и массивам данных, поступающим из облака, мобильных устройств, социальных сетей и систем обработки больших данных.

Новые данные и их типы — от вирусных твитов знаменитостей до жизненно важных сведений в электронных медицинских записях — создаются с головокружительной скоростью. Базы данных NoSQL призваны помочь разработчикам быстро создавать системы баз данных для хранения данных, а также сделать их доступными для поиска, консолидации и анализа.

Преимущества баз данных NoSQL

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

Гибкая разработка

Благодаря возможности реагировать на незапланированные ситуации базы данных NoSQL подходят для интенсивных циклов выпуска программного обеспечения, а также для быстрой и гибкой разработки приложений.

Гибкая обработка данных

NoSQL дает разработчикам больше свободы, ускоряет их работу, а также позволяет менять схемы и запросы в соответствии с требованиями к данным. Хранение данных в виде агрегатов помогает быстро вносить итеративные улучшения, не проектируя схему заранее.

Работа в любых масштабах

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

Типы моделей данных с базами данных NoSQL

Большинство нереляционных баз данных высокой производительности (иногда называемых "не только SQL") также могут обрабатывать данные со сложной структурой. При этом они не привязаны к фиксированным моделям данных, как реляционные базы данных (SQL).

Вот четыре наиболее распространенных типа баз данных NoSQL:

Ключ-значение

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

Базы данных документов

Базы данных документов — это расширенная версия баз данных типа "ключ-значение", в которой целые документы упорядочиваются по группам, называемым коллекциями. Они поддерживают вложенные пары "ключ-значение" и запросы к любым атрибутам документов.

Столбчатые базы данных

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

Граф

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

Выбор между реляционными (SQL) и нереляционными (NoSQL) базами данных

Недоступно NoSQL (нереляционные базы данных) SQL (реляционные базы данных)
Предназначение
  • Обработка крупных, не связанных между собой, неопределенных или быстро меняющихся данных.
  • Не зависящие от схемы данные или схема, задаваемая приложением.
  • Приложения, для которых производительность и доступность важнее, чем строгая согласованность.
  • Непрерывно работающие приложения, которые обслуживают пользователей по всему миру.
  • Обработка реляционных данных с логичными и обособленными требованиями, которые можно определить заранее.
  • Схема, которую требуется хранить, поддерживая синхронизацию между приложением и базой данных.
  • Устаревшие системы, предназначенные для реляционных структур.
  • Приложения, требующие использования сложных запросов или многострочных транзакций.
Сценарии:
  • Мобильные приложения.
  • Аналитика в реальном времени.
  • Управление содержимым.
  • Персонализация.
  • Приложения Интернета вещей.
  • Перенос баз данных.
  • Бухгалтерские, финансовые и банковские системы.
  • Системы управления запасами.
  • Системы управления транзакциями.
Масштабирование:
  • Горизонтальное масштабирование данных путем сегментирования между серверами.
  • Вертикальное масштабирование данных путем повышения серверной нагрузки.
Модель данных:
  • Типы баз данных: ключ-значение, базы данных документов, столбчатые и графовые базы данных.
  • Хранение данных в зависимости от типа базы данных.
  • Тип базы данных: таблицы строк, сгруппированные по связям.
  • Использование языка SQL.
  • Данные хранятся в виде строк таблиц. Связанные данные хранятся отдельно и объединяются для сложных запросов.
Недоступно Подробнее о нереляционных моделях данных Подробнее о реляционных моделях данных

Как оценить базу данных NoSQL?

Выберите модель данных

Многие базы данных NoSQL рассчитаны на работу с агрегатами — коллекциями данных, с которыми пользователи взаимодействуют как с единицами. Благодаря этому они намного лучше сочетаются с современными объектно-ориентированными языками программирования. Чтобы подобрать базу данных NoSQL, рекомендуем сначала выбрать модель данных. После этого следует рассмотреть поддерживающие ее базы данных NoSQL, а также языки программирования и пакеты SDK, поддерживаемые каждой базой данных.

Подробнее о моделях программирования и API

Рассмотрите компромиссы, связанные с согласованностью

Большинство баз данных NoSQL поддерживают два крайних уровня согласованности: строгую (вы получаете наиболее актуальные данные, но возможна задержка) и итоговую (быстрый отклик, но данные могут быть устаревшими). Многие базы данных NoSQL поддерживают и другие, промежуточные уровни согласованности. Выберите базу данных NoSQL, которая обеспечивает максимальную гибкость и возможности управления моделями согласованности в соответствии с вашими потребностями.

Подробнее о согласованности, доступности и устойчивости к разделению

Проанализируйте возможности переноса баз данных в облако

Благодаря их распределенному характеру и горизонтальной масштабируемости базы данных NoSQL идеально подходят для облачных вычислений, но вы также можете найти множество систем баз данных NoSQL, предназначенных для работы в локальных или гибридных средах.

Оценивая различные варианты облака, учитывайте перечисленные ниже особенности.

  • Поддерживаемые модели данных. Поддерживает ли поставщик облачных служб все модели данных, которые могут вам потребоваться?
  • Развертывание и эксплуатация. Насколько легко развернуть базу данных и реплицировать ее в другие регионы при необходимости?
  • Географическое присутствие. Где находятся центры обработки данных поставщика облачных служб? Удастся ли разместить данные в нужных расположениях? Как вы будете обеспечивать соответствие международным нормам конфиденциальности данных, например регламенту GDPR в Европейском Союзе?
  • Удобство репликации. Как происходит репликация базы данных в другой географический регион?
  • Масштабируемость. Позволяют ли ресурсы базы данных NoSQL обеспечить надлежащую производительность, а также масштабирование для роста? Сможете ли вы выполнять вертикальное или горизонтальное масштабирование?
  • Высокий уровень доступности. Что произойдет в случае непредвиденного сбоя? Встроены ли в службу возможности по обеспечению высокого уровня доступности и аварийного восстановления?
  • Уровни обслуживания. Какие уровни доступности и гарантии по задержкам предоставляются?
  • Экосистема. Насколько тесно база данных интегрирована с остальными компонентами облачной платформы, и можно ли быстро совмещать ее с другими компонентами для создания новых решений?

Применения систем баз данных NoSQL

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

Распространение приложений по всему миру

Привлеките больше пользователей со всего мира благодаря повышенной производительности приложений с высокой доступностью и аварийным восстановлением.

Взаимодействие с пользователями в реальном времени

Обеспечьте персонализацию, предоставляйте рекомендации в реальном времени и повысьте удобство работы пользователей, используя базы данных NoSQL.

Поддержка разнообразных рабочих нагрузок Интернета вещей

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

Улучшение приложений для электронной коммерции

Благодаря гибким схемам и иерархическим данным базы данных NoSQL отлично подходят для хранения каталогов продукции, содержащих изделия с различными атрибутами.

Новый контент для привлечения игроков

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

Создание бессерверных приложений

Удобное масштабирование приема данных, пропускной способности и объемов данных с мгновенной доступностью, автоматическим индексированием, стабильной скоростью приема и высокой производительностью запросов.

Углубленный анализ больших данных

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

Перенос имеющихся рабочих нагрузок NoSQL в облако

Тратьте меньше времени на управление локальной базой данных благодаря переносу в облако. При этом можно и далее использовать имеющиеся инструменты, драйверы, библиотеки и пакеты SDK.

Приступите к работе с NoSQL и переносу баз данных в облако

Узнайте, как разрабатывать приложения, гибко управляя системами баз данных и разнообразными типами данных, а также переносом баз данных в облако для имеющихся рабочих нагрузок NoSQL. Ознакомьтесь с техническим обзором Azure Cosmos DB для разработчиков и узнайте больше о встроенной поддержке NoSQL в глобально распределяемой и масштабируемой службе баз данных, поддерживающей множество моделей.

Подробнее об Azure Cosmos DB для данных NoSQL

Дополнительные сведения