Как работает MongoDB(продолжение
предыдущего поста)
MongoDB был создан из необходимости. Основатели столкнулись с проблемами при создании масштабных веб-приложений с использованием существующих баз данных.
По мере роста интернета, появления всё более динамичных веб-сайтов и приложений, старые инструменты баз данных не справлялись с нагрузкой.
MongoDB был разработан для заполнения этого пробела.
MongoDB предложил гибкость, масштабируемость и простоту использования, которые были необходимы разработчикам для нового веба.
MongoDB в основном написан на C++, но использует JavaScript для своей оболочки и Python для некоторых инструментов и драйверов.
📌
Как рабоатет MongoDB* По своей сути MongoDB — это NoSQL, документоориентированная база данных.
* Традиционные реляционные базы данных хранят данные в таблицах и строках.
Но:
* MongoDB «внутренне» хранит данные в бинарном формате, называемом BSON (Binary JSON).
* BSON — это расширенный набор JSON.
* Он может представлять всё, что может JSON, плюс дополнительные типы данных, такие как даты и бинарные данные.
* BSON более компактен, чем JSON, что уменьшает объём памяти и повышает производительность.
* Такая структура позволяет более естественно представлять реальные объекты и связи между ними.
📌
Разберём архитектуру MongoDB1.
Модель документовГибкие, похожие на 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 может быть дорогим в эксплуатации, особенно при масштабировании.