Кратко:
- Реляционные БД подходят не для всех задач, поэтому были созданы нереляционные модели данных, такие как NoSQL.
- Нереляционные модели данных хранят данные в разных формах, таких как документы, графы, пары "ключ-значение" и т.д.
- В MongoDB данные хранятся в документах, которые могут иметь сложную структуру и могут отличаться размером и полями.
- Однотипные документы объединяются в коллекции, аналог таблиц в реляционных БД.
- MongoDB подходит для управления большим объемом данных с неизвестной структурой и горизонтального масштабирования.
- Пример использования MongoDB: интернет-магазин с множеством товаров с разными характеристиками и национальной БД медицинских карт.
Введение. Несколько слов о NoSQL
Вы уже знаете, что реляционные БД — это набор таблиц и связей между ними. Такие БД подходят не для всех задач. Например, данные без структуры невозможно уложить в таблицу. В итоге разработчики создали для нереляционных моделей данных NoSQL (not only SQL) БД.
Различия реляционных и нереляционных БД
На этом и следующих уроках вы познакомитесь с документо-ориентированной БД MongoDB и тем, как с ней работать в Yandex Cloud.
MongoDB — это популярная NoSQL БД, в которой данные хранятся не в строках таблиц, а в документах. Один объект — один документ. Структура каждого документа подобна структуре JSON (JavaScript Object Notation).
Так может выглядеть документ из базы данных поликлиники с медицинскими картами пациентов:
{
"Имя":"Сергей",
"Фамилия":"Шишкин",
"Дата рождения":"02.12.1961",
"Номер медицинской карты":23264,
"Посещения врача":[
{
"Дата":"24.02.2021",
"Врач":"Сидорова О.С.",
"Анамнез":"...",
"Назначенные обследования":"Общий анализ крови",
"Диагноз":"ОРВИ",
"Лечение":"Теплый чай с медом перорально до 12 раз в сутки"
},
{
"Дата":"05.03.2021",
"Врач":"Сидорова О.С.",
"Анамнез":"...",
"Назначенные обследования":"",
"Диагноз":"Здоров"
}
]
}
В отличие от строк в реляционных БД, документы:
- позволяют сохранять объекты со сложной структурой, которая может изменяться;
- могут отличаться друг от друга размером и полями.
Высокоуровнево документы состоят из пар «ключ - значение». В примере с медицинской картой
имя
— это ключ, а Сергей
— его значение. Значениями могут быть числа, строки, аудиофайлы, изображения, массивы или другие объекты, даже сложные.Однотипные документы объединяются в коллекции — аналог таблиц в реляционных БД. Например, в БД поликлиники могут входить коллекции «Медицинские карты пациентов», «Результаты лабораторной диагностики» и «Листы нетрудоспособности».
MongoDB подойдет, если необходимо:
-
Управлять большим объемом данных с заранее неизвестной структурой (каталоги товаров, пользовательские профили, системы управления контентом).Пример: интернет-магазин, где продается множество товаров с разными характеристиками. Чтобы выставить товар на сайт, контент-менеджер выбирает характеристики и их значения из набора. Менеджер также может добавить или удалить любое поле и установленные для него значения.
-
Горизонтально масштабироваться.Пример: создание национальной БД медицинских карт. Реляционная БД здесь — не лучшее решение: ее горизонтальное масштабирование сопряжено с трудностями и плохо автоматизируется.