Введение в аналитику больших массивов данных

Документо-ориентированные

В лекции рассматриваются документо-ориентированные базы данных (на примере MongoDB) как класс NoSQL-систем. Излагается логика перехода от жестких схем к гибким структурам: сначала объясняется принцип хранения данных в виде документов и коллекций, затем разбираются механизмы масштабирования (репликация и шардинг). Далее демонстрируются базовые операции с данными, и в завершение анализируются причины популярности таких решений среди разработчиков — простота и снятие ограничений на изменение структуры.

Основные мысли

В результате изучения лекции слушатель будет способен:
1. Объяснить ключевое отличие документо-ориентированных БД от реляционных и других классов NoSQL.
2. Описать принципы хранения данных в MongoDB, включая понятия документа, коллекции и бинарного формата BSON.
3. Сравнить механизмы горизонтального масштабирования: репликацию и шардинг, выявив их влияние на операции чтения и записи.
4. Идентифицировать сценарии, в которых использование MongoDB эффективнее традиционных баз данных.
5. Проанализировать влияние гибкой схемы данных на снижение трудозатрат при разработке и эксплуатации.
Показывать лекцию целиком
Краткое изложение

Презентацию к лекции 27 Вы можете скачать здесь.

Документо-ориентированные базы данных

Следующий большой класс — это документо-ориентированные базы данных (Document-Oriented Databases). На первый взгляд их отличие от баз класса «ключ-значение» незаметно, так как они тоже обещают работу с неструктурированными данными и структурами, которые часто меняются.

Однако есть существенная разница: все данные объекта, или документа (Document), хранятся внутри одной ячейки. К ним можно обращаться через языки запросов и стандартные операции баз данных. Это уменьшает количество объединений таблиц (JOIN).

Ключевые особенности:

  1. Гибкость схемы: Структура документов не должна быть известна заранее и может изменяться динамически. При этом запросы всё равно понимают содержимое документа: если поле есть, можно указать, как к нему обращаться и что из него извлекать.
  2. Применимость: Такие базы лучше всего подходят для быстрого сохранения и доставки данных в приложениях с динамически изменяющимися схемами объектов.

MongoDB: Особенности реализации

Наиболее известный представитель этого класса — MongoDB.

  • Формат хранения: Объекты (документы) хранятся в формате BSON (Binary JSON) — это JSON-структуры, переведенные в двоичный вид для эффективности.
  • Организация данных: Документы объединены в коллекции (Collections). В отличие от таблиц в SQL, в одной коллекции могут лежать документы с абсолютно разной структурой.
  • Производительность: Файлы базы данных могут быть отображены в памяти (Memory-Mapped Files), что ускоряет работу с ними. Внутренние индексы и операции обработки обеспечивают высокую степень доступности как на запись, так и на чтение.
  • Технологии: Ядро MongoDB реализовано на C++, но существуют драйверы и API для множества других языков программирования.

Сравнение подходов к масштабированию

В контексте NoSQL важно различать два подхода к распределению данных: репликацию и шардинг.

Репликация (Replication)

Это копирование данных. Мы создаем копии и поддерживаем их синхронизацию с выделенным мастер-сервером.

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

Шардинг (Sharding)

Это разделение данных на части (шарды) и распределение их по разным серверам (дата-нодам).

  • Особенности: Нет гарантии, что в каждом узле найдется искомый блок. Для этого используется выделенный сервер (Name Node), который указывает, на каком дата-node лежит нужный блок.
  • Плюсы чтения: Чтение остается быстрым, потому что блоки распределены равномерно и считываются параллельно. Однако обращение к Name Node является «узким местом» (bottleneck).
  • Плюсы записи: Запись происходит параллельно в разные серверы. Нет необходимости синхронизировать много копий между собой (обычно поддерживается три копии блока).

MongoDB реализует оба механизма: и шардинг, и репликацию. При настройке серверов указывается, является ли узел чистым дата-нодом для шардинга или хранит реплику другого узла.

Пример операций в MongoDB

Два документа с разной структурой и разным набором полей могут спокойно храниться в одной коллекции. Часть полей может совпадать, часть — нет.

Операции над коллекцией работают только с теми документами, в которых присутствуют указанные в запросе поля.

Основные типы операций:

  1. Вставка документа.
  2. Поиск одного или нескольких документов.
  3. Обновление (Update).
  4. Удаление.
  5. Явное обновление индекса.

Причины популярности NoSQL

Ключевой фактор — простота. Разработчики, переходя с SQL, понимают, что теряют часть возможностей традиционных баз данных, но сталкиваются с меньшими трудозатратами:

  • Не нужно прилагать много усилий для создания структуры хранилища.
  • Исчезает «головная боль», связанная с изменением структуры. Если структура данных поменяется, не нужно перестраивать всю базу, терять данные или пересоздавать индексы.

Это также важный психологический фактор: проектировщик не боится ошибиться со схемой. NoSQL базы не требуют задавать структуру заранее и не ограничивают будущие изменения данных.

Краткие итоги

Анализ материала показывает, что развитие баз данных движется в сторону снятия фундаментальных ограничений, накладываемых реляционной моделью на этапе проектирования. Ключевая ценность документо-ориентированных систем заключается не просто в хранении неструктурированных данных, а в переносе ответственности за структуру с администратора базы на само приложение. Это кардинально меняет подход к разработке: вместо долгого этапа моделирования схемы и рисков, связанных с её изменением, команда получает возможность итеративно развивать продукт, модифицируя модель данных без дорогостоящих миграций.

Особое значение имеет то, как MongoDB решает проблему производительности при таком уровне гибкости. Применение отображения файлов в памяти и бинарного формата BSON позволяет нивелировать накладные расходы на интерпретацию структуры, делая скорость работы сопоставимой с более строгими системами. Механизмы масштабирования здесь рассмотрены не как конкурирующие технологии, а как взаимодополняющие инструменты. Понимание разницы между копированием (репликацией) и сегментированием (шардингом) позволяет архитектору точечно настраивать систему: жертвовать скоростью записи ради ускорения чтения или наоборот, балансируя нагрузку в зависимости от бизнес-задач.

Практическая значимость изложенного подхода состоит в том, что он снижает когнитивную нагрузку на разработчика. Устранение необходимости синхронизировать множество таблиц через JOIN-запросы упрощает код и делает логику приложения более прозрачной. В итоге выбор в пользу таких систем — это стратегическое решение об ускорении вывода продукта на рынок и упрощении поддержки кодовой базы за счет отказа от избыточной формализации на уровне хранилища.

Введение в документо-ориентированные БД

Этот класс похож на базы «ключ-значение», так как работает с неструктурированными данными. Главное отличие: данные объекта (документа) хранятся внутри одной ячейки, что уменьшает количество JOIN-ов. Схема документов неизвестна заранее и меняется динамически, но запросы всё равно понимают содержимое документа. Лучшая сфера применения — быстрое сохранение данных для динамичных приложений.

MongoDB

Самый популярный представитель класса.

Масштабирование: Репликация vs Шардинг

Операции и гибкость

В одной коллекции документы могут иметь совпадающие и не совпадающие поля. Операции работают только с теми документами, где нужные поля существуют.

Основные операции:

  1. Вставка (Insert).
  2. Поиск одного или нескольких (Find).
  3. Обновление (Update).
  4. Удаление (Delete).
  5. Обновление индекса.

Причины популярности

  1. Простота: Меньше усилий на создание структуры хранилища.
  2. Психологический фактор: Разработчик не боится ошибиться в схеме. Если данные изменятся, не нужно перестраивать всю БД, терять индексы или части информации. NoSQL базы не ограничивают будущее.

Выводы

1. Документо-ориентированные БД хранят все данные объекта в одной ячейке, что радикально снижает потребность в JOIN-запросах.
2. Схема данных в MongoDB не фиксируется заранее, что позволяет изменять структуру документов без остановки работы.
3. Документы в MongoDB хранятся в бинарном формате BSON, обеспечивающем высокую скорость обработки.
4. В отличие от реляционных таблиц, документы в одной коллекции могут иметь разную структуру.
5. Репликация данных ускоряет операции чтения за счет параллельного доступа к копиям, но замедляет запись.
6. Шардинг ускоряет запись за счет параллельного распределения данных, но требует обращения к узлу-координатору (Name Node).
7. MongoDB поддерживает оба механизма масштабирования, позволяя гибко настраивать кластер.
8. Использование памяти для отображения файлов значительно повышает производительность операций с данными.
9. Основной мотивацией перехода на NoSQL является снятие ограничений и снижение трудозатрат на проектирование схемы.
10. Гибкая структура данных позволяет разработчикам избегать сложных миграций при изменении требований к приложению.

Вопросы для самопроверки

1. Чем принципиально отличается хранение данных в документо-ориентированной БД от реляционной при работе со сложными объектами?
2. Почему формат BSON лучше подходит для внутреннего представления данных, чем текстовый JSON?
3. Что позволяет делать наличие Name Node в архитектуре шардинга?
4. Каким образом репликация влияет на производительность операций чтения и записи?
5. В чем разница между понятиями «реплика» и «шард» в контексте MongoDB?
6. Какие типовые операции поддерживаются при работе с документами в коллекции?
7. Почему NoSQL базы снимают «головную боль» у проектировщиков при изменении структуры данных?
8. Может ли внутри одной коллекции MongoDB существовать два документа с полностью разным набором полей?
9. Каким образом технология Memory-Mapped Files ускоряет работу MongoDB?
10. Что произойдет, если выполнить запрос к полю, которое отсутствует в части документов коллекции?
Вернуться к учебному плану