Как работает MongoDB
(продолжение предыдущего поста)
MongoDB был создан из необходимости. Основатели столкнулись с проблемами при создании масштабных веб-приложений с использованием существующих баз данных.
По мере роста интернета, появления всё более динамичных веб-сайтов и приложений, старые инструменты баз данных не справлялись с нагрузкой.
MongoDB был разработан для заполнения этого пробела.
MongoDB предложил гибкость, масштабируемость и простоту использования, которые были необходимы разработчикам для нового веба.
MongoDB в основном написан на C++, но использует JavaScript для своей оболочки и Python для некоторых инструментов и драйверов.
📌 Как рабоатет MongoDB
* По своей сути MongoDB — это NoSQL, документоориентированная база данных.
* Традиционные реляционные базы данных хранят данные в таблицах и строках.
Но:
* MongoDB «внутренне» хранит данные в бинарном формате, называемом BSON (Binary JSON).
* BSON — это расширенный набор JSON.
* Он может представлять всё, что может JSON, плюс дополнительные типы данных, такие как даты и бинарные данные.
* BSON более компактен, чем JSON, что уменьшает объём памяти и повышает производительность.
* Такая структура позволяет более естественно представлять реальные объекты и связи между ними.
📌 Разберём архитектуру MongoDB
1. Модель документов
Гибкие, похожие на JSON документы хранят данные, позволяя использовать различные структуры и вложенные объекты.
2. Коллекции
Группы документов, аналогичные таблицам, но без схемы, обеспечивающие гибкую организацию.
3. mongod
Основной процесс, обрабатывающий хранение, запросы и администрирование (основной демон-процесс).
4. mongos (если используется шардирование)
Маршрутизирует запросы в распределённом кластере к правильным разделам данных (соответствующим шардам).
5. Реплика-сеты
Несколько узлов поддерживают копии данных, обеспечивая высокую доступность и отказоустойчивость.
6. Шардирование
Горизонтальное масштабирование путём распределения данных по нескольким серверам для больших наборов данных и высокой нагрузки.
7. Индексы
Структуры данных для ускорения запросов, поддерживающие различные типы для разных шаблонов доступа.
8. WiredTiger
Механизм хранения по умолчанию, оптимизированный для использования памяти и диска с контролем параллелизма.
9. Фреймворк агрегации
Мощный конвейерный фреймворк для сложного анализа и преобразования данных.
10. Язык запросов
Выразительный язык для фильтрации, сортировки, проецирования и агрегации данных.
📌 Некоторые варианты использования
1. Управление контентом.
2. Аналитика в реальном времени.
3. Интернет вещей (IoT).
4. Мобильные приложения.
5. Каталоги продукции.
📌 Проблемы
1. Транзакции
Использует модель «snapshot isolation», которая может иметь последствия для приложений, требующих строгих гарантий ACID.
2. Моделирование данных
Гибкость требует продуманного проектирования.
3. Соединения
MongoDB не поддерживает традиционные SQL-соединения.
4. Операционные затраты
MongoDB может требовать больше операционных знаний.
5. Стоимость
MongoDB может быть дорогим в эксплуатации, особенно при масштабировании.
Post #2125
1.66K