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

Fail2ban обязательная защита сервера VPS

В операционной системе Ubuntu 18.04.4 LTS, 20.04.1 LTS Fail2ban ставиться очень просто, если вам нужна только защита SSH и вы используете для настройки фаервола iptables для начинающих: Простое управление брандмауэром с UFW. $

NGINX UPSTREAM

Чтобы наш сервер мог распределять нагрузку, создадим группу веб-серверов, на которые будут переводиться запросы: vi /etc/nginx/conf.d/upstreams.conf * в данном примере мы создаем файл upstreams.conf, в котором можем хранить все наши апстримы. NGINX автоматически

Очереди в Mikrotik

Рассмотрим примеры настройки Simple Queues (Простых очередей), SQ+Mangle (Простые очереди с маркировкой соединений и пакетов) и Queues Tree (Деревья очередей). Цвет иконок: использование доступной полосы. Параметры, на которые стоит обратить внимание: Kind PCQ:Классифицирует

Настройка Nginx в качестве обратного прокси-сервера для развертывания нескольких сервисов на одном сервере с помощью Docker

Чтобы легко начать работу с этой статьей, вам потребуются следующие знания. Но вы можете обойтись и без них. Мы использовали domain.ru в качестве примера доменного имени в статье. Убедитесь, что вы изменили
Go toTop

Don't Miss

elk

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

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