Что такое базы данных NoSQL?
Базы данных NoSQL специально созданы для конкретных моделей данных и хранят информацию в гибких схемах, которые легко масштабируются для современных приложений. Базы данных NoSQL получили широкое распространение в связи с простотой разработки, функциональностью и производительностью при любых масштабах. На этой странице собраны ресурсы, которые помогут вам лучше понять базы данных NoSQL и начать работу.
В чем преимущества баз данных NoSQL?
Современные приложения сталкиваются с рядом проблем, которые могут быть решены с помощью баз данных NoSQL. Например, приложения обрабатывают большой объем данных из разных источников, таких как социальные сети, интеллектуальные датчики и сторонние базы данных. Все эти разрозненные данные не совсем вписываются в реляционную модель. Применение табличных структур может привести к избыточности, дублированию данных и проблемам с производительностью при масштабировании.
Базы данных NoSQL специально созданы для нереляционных моделей данных и обладают гибкими схемами, что позволяет разрабатывать современные приложения. Они получили широкое распространение в связи с простотой разработки, функциональности и производительности при любых масштабах. Ниже перечислены преимущества баз данных NoSQL.
Гибкость
Как правило, базы данных NoSQL предлагают гибкие схемы, что позволяет осуществлять разработку быстрее и обеспечивает возможность поэтапной реализации. Базы данных NoSQL хорошо подходят для частично структурированных и неструктурированных данных благодаря использованию гибких моделей данных.
Возможности масштабирования
Базы данных NoSQL обычно рассчитаны на масштабирование с использованием распределенных кластеров аппаратного обеспечения, а не путем добавления дорогих надежных серверов. Некоторые поставщики облачных услуг проводят эти операции в фоновом режиме, обеспечивая полностью управляемый сервис.
Высокая производительность
Базы данных NoSQL оптимизированы для конкретных моделей данных и шаблонов доступа. Они обеспечивают более высокую производительность, чем если бы вы пытались реализовать аналогичную функциональность с реляционными базами данных.
Широкие функциональные возможности
Базы данных NoSQL предоставляют API и типы данных с широкой функциональностью, которые специально разработаны для соответствующих моделей данных.
Каковы варианты использования баз данных NoSQL?
Вы можете использовать базы данных NoSQL для создания широкого спектра высокопроизводительных мобильных приложений, приложений Интернета вещей (IoT), игр и веб-приложений, которые обеспечивают отличное взаимодействие с пользователем в любом масштабе. Диапазон баз данных NoSQL и варианты их использования очень разнообразны. Хотя представить репрезентативный набор вариантов использования сложно, ниже мы приведем несколько наглядных примеров, которые заставят вас задуматься. Мы призываем вас узнать больше о каждой базе данных NoSQL и соответствующих вариантах использования.
Управление данными в реальном времени
С помощью баз данных NoSQL можно предоставлять рекомендации в реальном времени, персонализировать и улучшать взаимодействие с пользователем. Например, Disney+ предоставляет свою обширную библиотеку цифрового контента более чем 150 миллионам подписчиков, используя технологию баз данных NoSQL. Благодаря Amazon DynamoDB этот сервис может масштабировать и поддерживать популярные возможности, такие как «Продолжить просмотр», «Список на просмотр» и «Персонализированные рекомендации».
Безопасность облака
Графовые базы данных можно использовать для быстрого обнаружения сложных взаимосвязей в данных. Например, компания Wiz переосмыслила облачную безопасность в виде графов базы данных с помощью Amazon Neptune. Wiz помогает своим клиентам повысить уровень безопасности, быстро выявляя наиболее критические риски и устраняя их. Они используют модель графовой базы данных Amazon Neptune, чтобы выявить опасные сочетания факторов риска, являющиеся критическими. Механизмы управления рисками Wiz перемещаются по графам и в течение нескольких секунд объединяют ряд взаимосвязанных факторов рисков в графе безопасности.
Приложения с высокой доступностью
Распределенные базы данных NoSQL отлично подходят для создания приложений с высокой доступностью и низкой задержкой для обмена сообщениями и файлами, социальных сетей, а также многого другого. Например,более 290 миллионов пользователей Snapchat ежедневно отправляют миллиарды фотографий и видеосообщений. В этом приложении используются системы баз данных NoSQL для снижения средней задержки отправки сообщений на 20 %.
Как работают базы данных NoSQL?
Базы данных NoSQL используют разнообразные модели данных для доступа к информации и управления ею. Базы данных таких типов оптимизированы специально для приложений, требующих гибких моделей данных, больших объемов и низких задержек. Все это достигается путем смягчения жестких требований к согласованности данных, характерных для реляционных типов баз данных. В зависимости от модели данных реализация может отличаться. Однако во многих базах данных NoSQL используется текстовый формат обмена данными, основанный на языке Javascript (JSON), – открытый формат обмена данными, представляющий данные в виде набора пар «имя-значение».
Пример базы данных NoSQL
Рассмотрим пример моделирования схемы для простой базы данных книг.
- В реляционной базе данных запись о книге часто разделяется на несколько частей (или «нормализуется») и хранится в отдельных таблицах, отношения между которыми определяются ограничениями первичных и внешних ключей. В этом примере в таблице «Книги» имеются столбцы «ISBN», «Название книги» и «Номер издания», в таблице «Авторы» – столбцы «ИД автора» и «Имя автора», а в таблице «Автор–ISBN» – столбцы «Автор» и «ISBN». Реляционная модель создана таким образом, чтобы обеспечить целостность ссылочных данных между таблицами в базе данных. Информация нормализована для снижения избыточности и в целом оптимизирована для хранения.
- В базе данных NoSQL запись о книге обычно хранится как документ. Для каждой книги (или элемента) значения «ISBN», «Название книги», «Номер издания», «Имя автора» и «ИД автора» хранятся в качестве атрибутов в едином документе. В такой модели данные оптимизированы для интуитивно понятной разработки и горизонтальной масштабируемости.
Сравнение терминологии SQL и NoSQL
В таблице ниже сравниваются терминологии некоторых баз данных NoSQL и баз данных SQL.
SQL | MongoDB | DynamoDB | Cassandra | Couchbase |
---|---|---|---|---|
Таблица | Коллекция | Таблица | Таблица | Корзина данных |
Ряд | Документ | Элемент | Ряд | Документ |
Столбец | Поле | Атрибут | Столбец | Поле |
Первичный ключ | ObjectId | Первичный ключ |
Первичный ключ | ИД документа |
Индекс | Индекс | Вторичный индекс | Индекс | Индекс |
Представление | Представление | Глобальный вторичный индекс | Материализованное представление | Представление |
Вложенная таблица или объект | Встроенный документ | Карта | Карта | Карта |
Массив | Массив | Список | Список | Список |
Какие существуют типы баз данных NoSQL?
Существует несколько различных систем баз данных NoSQL в связи с различиями в способах работы и хранения данных без схем. Ниже приводится объяснение некоторых из распространенных типов.
Базы данных «ключ‑значение»
Базы данных «ключ-значение» поддерживают высокую разделяемость и допускают горизонтальное масштабирование на уровне, недоступном для других типов баз данных NoSQL. База данных «ключ‑значение» хранит данные как совокупность пар «ключ‑значение», в которых ключ служит уникальным идентификатором. Ключи и значения могут представлять собой что угодно: от простых до сложных составных объектов. Хорошими примерами использования хранилищ данных «ключ‑значение» являются игровые, рекламные приложения и приложения IoT. Amazon DynamoDB обеспечивает стабильную производительность с задержкой в несколько миллисекунд для рабочих нагрузок любого масштаба.
Базы данных документов
У баз данных документов тот же формат модели документа, который разработчики используют в коде своих приложений. Такие базы данных хранят информацию в виде гибких, полуструктурированных и иерархических по своей природе объектов JSON. Гибкий, полуструктурированный, иерархический характер документов и документных баз данных позволяет им развиваться в соответствии с потребностями приложений. Модель базы данных документов хорошо работает в каталогах, пользовательских профилях и системах управления контентом, где каждый документ уникален и изменяется со временем. Amazon DocumentDB (совместимая с MongoDB) и MongoDB – распространенные документные базы данных, которые предоставляют функциональные и интуитивно понятные API для гибкой разработки.
Графовые базы данных
Графовые базы данных предназначены для упрощения разработки и запуска приложений, работающих с наборами тесно связанных данных. В таких базах данных используются узлы для хранения сущностей информации и ребра для хранения взаимосвязей между этими сущностями. Ребро всегда имеет начальный и конечный узел, тип и направление. Ребра могут описывать взаимосвязи типа «предок‑потомок», действия, права владения и тому подобное. Количество и типы взаимосвязей, которые может иметь узел, неограничены. Графовые базы данных можно использовать для разработки и запуска приложений, работающих с наборами тесно связанных данных. В числе стандартных примеров использования графовой базы данных – социальные сети, сервисы рекомендаций, системы выявления мошенничества и графы знаний. Amazon Neptune – это полностью управляемый сервис графовых баз данных, поддерживающий обе модели Property Graph и Resource Description Framework (RDF) с возможностью выбора двух графических API (TinkerPop и RDF/SPARQL).
Базы данных в памяти
В то время как другие нереляционные базы данных хранят данные на дисках или SSD, хранилища данных в памяти предназначены для устранения необходимости доступа к дискам. Они идеально подходят для приложений, требующих микросекундного времени отклика или имеющих большие пики трафика. Вы можете использовать их в игровых и рекламных приложениях для таблиц результатов, хранилищ сессий и аналитики в реальном времени. Amazon MemoryDB для Redis – это совместимый с Redis надежный сервис базы данных в памяти, который уменьшает задержку чтения до миллисекунд и обеспечивает надежность в нескольких зонах доступности. Amazon ElastiCache – это полностью управляемый сервис кэширования в памяти, совместимый с Redis и Memcached для обслуживания рабочих нагрузок с низкой задержкой и высокой пропускной способностью. Ускоритель Amazon DynamoDB (DAX) – это еще один пример специализированного хранилища данных, которое на порядок ускоряет чтение DynamoDB.
Поисковые базы данных
База данных поисковой системы – это тип нереляционной базы данных, предназначенной для поиска содержимого информации, например журналов выходных данных приложений, используемых разработчиками для устранения неполадок. В таких базах используются индексы для классификации схожих характеристик данных и облегчения поиска. Движок поисковых баз данных оптимизирован для сортировки неструктурированных данных, таких как изображения и видео. Сервис Amazon OpenSearch – это специально разработанный сервис для визуализации и аналитики автоматически генерируемых потоков данных в режиме, близком к реальному времени, путем индексирования, агрегации частично структурированных журналов и метрик, а также поиска по ним.
В чем разница между базами данных NoSQL и SQL?
На протяжении десятилетий доминирующей моделью данных при разработке приложений была реляционная модель данных, в которой информация хранилась в таблицах, состоящих из строк и столбцов. Для создания и редактирования этих реляционных таблиц использовался структурированный язык запросов (Structured Query Language, SQL). Благодаря базам данных SQL отношения между данными моделируются в виде таблиц. Каждая строка таблицы представляет собой набор связанных значений, относящихся к одному объекту или сущности. Каждый столбец таблицы представляет собой атрибут данных, а в поле (или ячейке таблицы) хранится фактическое значение атрибута. Можно использовать систему управления реляционными базами данных (Relational Database Management System, RDBMS) для доступа к информации различными способами без реорганизации самих таблиц базы данных.
Но в середине – конце 2000‑х годов стали широко использоваться и другие гибкие модели данных. Для обозначения появившихся классов баз и моделей данных был введен термин «NoSQL». NoSQL означает «не только SQL» или «не SQL». Часто NoSQL используется в качестве синонима к термину «нереляционный». Основные различия между реляционными и нереляционными базами данных приведены в таблице ниже.
|
Реляционные базы данных |
Базы данных NoSQL |
Подходящие рабочие нагрузки
|
Реляционные базы данных предназначены для транзакционных и строго непротиворечивых приложений онлайн-обработки транзакций (OLTP). Они также хорошо подходят для аналитической обработки онлайн (OLAP). |
Базы данных NoSQL предназначены для работы с целым рядом шаблонов доступа к данным, в том числе приложений с низкой задержкой. Поисковые базы данных NoSQL предназначены для аналитики частично структурированных данных.
|
Модель данных |
Реляционная модель нормализует данные и преобразует их в таблицы, состоящие из строк и столбцов. Схема четко задает таблицы, строки, столбцы, индексы, отношения между таблицами и прочие элементы базы данных. Такая база данных обеспечивает целостность ссылочных данных в отношениях между таблицами. |
Базы данных NoSQL предоставляют разнообразные модели данных, такие как пары «ключ-значение», документы, графы и колонки, оптимизированные для высокой производительности и масштабируемости. |
Свойства ACID |
Реляционные базы данных обеспечивают набор свойств ACID: атомарность, непротиворечивость, изолированность, надежность.
|
Большинство баз данных NoSQL предлагают компромисс, смягчая жесткие требования свойств ACID ради более гибкой модели данных, которая допускает горизонтальное масштабирование. Благодаря этому базы данных NoSQL – отличный выбор для примеров использования с высокой пропускной способностью и низкой задержкой, в которых требуется горизонтальное масштабирование, не ограниченное рамками одного инстанса. |
Производительность |
Производительность главным образом зависит от дисковой подсистемы. Для обеспечения максимальной производительности часто требуется оптимизация запросов, индексов и структуры таблицы. |
Производительность обычно зависит от размера кластера базового аппаратного обеспечения, задержки сети и вызывающего приложения. |
Масштабирование |
Реляционные базы данных обычно масштабируются путем увеличения вычислительных возможностей аппаратного обеспечения или добавления отдельных копий для рабочих нагрузок чтения. |
Базы данных NoSQL обычно разделяемы. Это возможно благодаря шаблонам доступа с возможностью масштабирования на основе распределенной архитектуры. Такая возможность повышает пропускную способность и обеспечивает устойчивую производительность почти в неограниченных масштабах. |
API |
Запросы на хранение и извлечение данных составляются на языке SQL. Эти запросы анализирует и выполняет реляционная база данных. |
Объектно‑ориентированные API позволяют разработчикам приложений без труда хранить и извлекать структуры данных. Благодаря использованию ключей секций приложения могут вести поиск по парам «ключ‑значение», наборам столбцов или частично структурированным документам, содержащим серийные объекты и атрибуты приложений. |
Когда следует выбирать базы данных NoSQL вместо баз данных SQL?
База данных NoSQL лучше всего подходит для обработки неопределенных, несвязанных или быстро меняющихся данных. Она интуитивно понятна разработчикам, когда приложение диктует схему базы данных. Эту базу данных можно использовать в приложениях, в которых:
- Нужны гибкие схемы, обеспечивающие более быструю и итеративную разработку.
- Предпочитается производительность, а не высокая согласованность данных и сохранение связей между таблицами данных (ссылочная целостность).
- Требуется горизонтальное масштабирование путем сегментирования между серверами.
- Поддерживается частично структурированные или неструктурированные данные.
Не всегда нужно выбирать между нереляционной и реляционной схемой базы данных. В приложениях можно использовать комбинацию баз данных SQL и NoSQL. Этот гибридный подход довольно распространен и обеспечивает сопоставление каждой рабочей нагрузки с нужной базой данных для оптимального соотношения цены и качества.
Как AWS может удовлетворить ваши требования по работе с базой данных NoSQL?
AWS предлагает несколько сервисов баз данных NoSQL, отвечающих всем вашим требованиям NoSQL. Пример:
- Amazon DynamoDB – это бессерверный, полностью управляемый сервис баз данных «ключ-значение», который обеспечивает стабильную производительностью на уровне нескольких миллисекунд на операцию и неограниченную масштабируемость.
- Amazon DocumentDB (совместимость с MongoDB) – это полностью управляемая база данных документов с поддержкой JSON, которая делает более выгодной и упрощает эксплуатацию важнейших рабочих нагрузок по обработке документов практически в любых масштабах без необходимости управлять инфраструктурой.
- Amazon Neptune – это бессерверный и полностью управляемый сервис графовых баз данных, обеспечивающий превосходную масштабируемость и доступность, а также возможность запрашивать миллиарды связей за считанные секунды.
- Amazon MemoryDB для Redis – это надежный сервис баз данных в памяти, который обеспечивает сверхбыструю производительность и отклик на операции чтения и записи за микросекунды.
- Amazon ElastiCache – это полностью управляемый сервис кэширования и хранения данных в памяти, совместимый с Redis и Memcached и обеспечивающий оптимизированную по затратам производительность.
- Amazon Keyspaces (для Apache Cassandra) – это бессерверная и полностью управляемая база данных с широкими столбцами, обеспечивающая доступность до 99,999 % при мультирегиональной репликации. Масштабируемый, высокодоступный и управляемый сервис баз данных, совместимый с Apache Cassandra.
- Amazon Timestream – это бессерверная и полностью управляемая база данных временных рядов, которая упрощает хранение и анализ триллионов событий в день, выполняя свою работу в 1000 раз быстрее, чем реляционная база данных.
- Amazon OpenSearch Service – это полностью управляемый пакет распределенного поиска и аналитики, который обеспечивает поиск, мониторинг и анализ корпоративных и операционных данных в реальном времени.
Начните работу с NoSQL на AWS, создав бесплатный аккаунт уже сегодня.