0

Введение. Несколько слов о 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

Интеграция Asterisk и Битрикс24

В сети есть разные варианты интеграции IP-АТС Asterisk и CRM Битрикс24, но мы, все таки, решили написать свою. По функционалу все стандартно: Под катом расскажу как все настроить у себя и дам

Nextcloud migrate to PostgreSQL

Also getting the famous “1213 Deadlock found when trying to get lock; try restarting transaction”? A few users reported switching to PostgreSQL fixed it. While I did not believe at first… Yes…

Автоматизированные бэкапы postgresql

Всем привет! Я бы сказал что эта статья cookbok по которому можно создать простое и эффективное решение для создания бэкапов базы данных. Казалось бы довольно очевидная задача но тем не менее когда

Быстрое восстановлении базы 1С в PostgreSQL bash скриптом

В прошлом уроке мы успешно применили скрипт для создания резервной копии базы. Сегодня мы разберем скрипт, с помощью которого можно быстро восстановить базу из последнего созданного бэкапа. Скрипт можно скачать здесь >>> Все что надо
Go toTop

Don't Miss

elk

Что такое стек ELK: применение, установка и настройка Elasticsearch, Logstash и Kibana

Всего понемногу об ELK-стек Название стека представляет собой аббревиатуру первых