Введение. Несколько слов о NoSQL

/

Вы уже знаете, что реляционные БД — это набор таблиц и связей между ними. Такие БД подходят не для всех задач. Например, данные без структуры невозможно уложить в таблицу. В итоге разработчики создали для нереляционных моделей данных NoSQL (not only SQL) БД.Различия реляционных и нереляционных БД

РеляционныеНереляционные
Способ хранения данныхВ таблицахПо-разному: как документы, как граф из вершин и ребер, как пары «ключ-значение» и т. д.
Структура данныхЖесткая: у каждого объекта одни и те же поляЖестких требований нет — у объектов могут быть разные поля
Добавление полейПотребует изменить структуру таблицы и все объекты в нейНе потребует ничего менять — можно добавить поля только к новым объектам
ACID*Соответствуют требованиям ACIDACID могут жертвовать, чтобы увеличить скорость работы или горизонтально масштабировать БД
МасштабированиеВ основном вертикальное: с помощью увеличения мощности серверовВертикальное и горизонтальное: с помощью увеличения мощности серверов или их количества
Язык запросовSQL или близкие к нему диалектыРазные синтаксисы. Например, в MongoDB используются запросы в формате JSON

* Требования ACID — это:

  • Atomicity — атомарность: транзакция не выполняется, пока не выполнены все ее части;
  • Consistency — целостность: когда транзакция завершилась, данные соответствуют схеме БД, а все реплики базы синхронизированы;
  • Isolation — изолированность: параллельные транзакции выполняются отдельно друг от друга;
  • Durability — надежность: способность восстанавливаться до последнего сохраненного состояния после сбоя.

На этом и следующих уроках вы познакомитесь с документоориентированной БД MongoDB и тем, как с ней работать в Yandex.Cloud.MongoDB — это популярная NoSQL БД, в которой данные хранятся не в строках таблиц, а в документах. Один объект — один документ. Структура каждого документа подобна структуре JSON (JavaScript Object Notation).Так может выглядеть документ из базы данных поликлиники с медицинскими картами пациентов:

Скопировать код{
  "Имя":"Сергей",
  "Фамилия":"Шишкин",
  "Дата рождения":"02.12.1961",
  "Номер медицинской карты":23264,
  "Посещения врача":[
    {
      "Дата":"24.02.2021",
      "Врач":"Сидорова О.С.",
      "Анамнез":"...",
      "Назначенные обследования":"Общий анализ крови",
      "Диагноз":"ОРВИ",
      "Лечение":"Теплый чай с медом перорально до 12 раз в сутки"
    },
    {
      "Дата":"05.03.2021",
      "Врач":"Сидорова О.С.",
      "Анамнез”":"...",
      "Назначенные обследования":"",
      "Диагноз":"Здоров"
    }
  ]
}
 

В отличие от строк в реляционных БД, документы:

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

Высокоуровнево документы состоят из пар ключ + значение. В примере с медицинской картой имя — это ключ, а Сергей — его значение. Значениями могут быть числа, строки, аудиофайлы, изображения, массивы или другие объекты, даже сложные.Однотипные документы объединяются в коллекции — аналог таблиц в реляционных БД. Например, в БД поликлиники могут входить коллекции «Медицинские карты пациентов», «Результаты лабораторной диагностики» и «Листы нетрудоспособности».MongoDB подойдет, если необходимо:

  • Управлять большим объемом данных с заранее неизвестной структурой (каталоги товаров, пользовательские профили, системы управления контентом).Пример: интернет-магазин, где продается множество товаров с разными характеристиками. Чтобы выставить товар на сайт, контент-менеджер выбирает характеристики и их значения из набора. Менеджер также может добавить или удалить любое поле и установленные для него значения.
  • Горизонтально масштабироваться.Пример: создание национальной БД медицинских карт. Реляционная БД здесь — не лучшее решение: ее горизонтальное масштабирование сопряжено с трудностями и плохо автоматизируется.
Previous Story

Миграция данных в Облако репликацией

Next Story

Практическая работа. Создание кластера

Latest from Blog

Zabbix – Docker – Raspberry Pi

Для начала установим Portainer – веб-интерфейс для управления docker-контейнерами. Бесплатно, удобно, подойдет новичкам в docker. Установка

Сетевая папка/диск в Linux

x.x.x.x адрес шары /mnt/shara точка монтирования user пользователь с доступом к шаре 1234 пароль пользователя Для

Памятка SSH

В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые

0 £0.00