Это доступная из исходного кода, кроссплатформенная, документоориентированная база данных. Классифицируемая как NoSQL-база данных, MongoDB отказывается от традиционной структуры реляционных баз данных на основе таблиц в пользу JSON-подобных документов с необязательными схемами.
Основные концепции
1. Документоориентированное хранение данных
В отличие от реляционных баз данных, использующих строки и столбцы, MongoDB хранит данные в формате BSON (Binary JSON). Это позволяет создавать вложенные структуры, массивы и различные типы полей в рамках одной коллекции.
Коллекции: эквивалентны таблицам в SQL.
Документы: эквивалентны строкам или записям.
Поля: эквивалентны столбцам.
2. Динамическая схема
MongoDB обладает гибкой схемой, что означает, что документы в одной коллекции не обязательно должны иметь одинаковый набор полей или структуру. Это особенно полезно для:
Быстрого прототипирования и итеративной разработки.
Обработки неструктурированных или полуструктурированных данных. Аналитика в реальном времени, где форматы данных могут меняться.
Ключевые особенности
3. Масштабируемость:
MongoDB разработана для обеспечения высокой доступности и горизонтального масштабирования. Благодаря шардингу данные распределяются по нескольким машинам для обработки больших объемов данных и больших наборов данных.
3. Высокая доступность:
Благодаря репликационным наборам MongoDB поддерживает несколько копий данных на разных серверах, гарантируя, что в случае отказа одного узла система останется работоспособной.
4. Мощные запросы:
Поддерживаются запросы ad hoc, индексирование и агрегация в реальном времени. Язык запросов MongoDB (MQL) выразителен и прост в освоении для разработчиков.
Индексирование: Поддержка различных типов индексов (однополочные, составные, геопространственные, текстовые) обеспечивает высокопроизводительный поиск.
Распространенные сценарии использования
Системы управления контентом (CMS): Хранение различных типов медиафайлов, статей и пользовательского контента.
Электронная коммерция: Управление каталогами товаров, где разные товары имеют разные атрибуты.
Аналитика в реальном времени: обработка высокоскоростных данных с IoT-устройств или лент социальных сетей.
Мобильные приложения: предоставление гибкой серверной части, которая может развиваться вместе с функциями приложения.
Почему разработчики выбирают MongoDB ?
Главное преимущество MongoDB - это удобство для разработчиков. Поскольку документы напрямую сопоставляются с объектами в большинстве современных языков программирования (таких как JavaScript, Python и Java), разработчики могут тратить меньше времени на написание сложных слоев объектно-реляционного отображения (ORM) и больше времени на разработку функций.
К сожалению из личного опыта есть проблема что некоторые разработчики пытаются работать с Mongo DB как и с реляционными пытаясь эмулировать какие - то ORM что приводит часто к
редкостному бреду и даже идиотизму которые обращают плюсы в минусы. Думаю что если очень хочется этим заниматься то просто Mongo DB для такого разработчика критически не подходит :-)
Хотя в целом тема ORM это отдельная тема для разговора . Их смысл в эпоху микросервисов и AI который может легко генерировать запросы сильно под вопросом, к сожалению есть проблема что люди к чему то привыкли и упорно не хотят с этого уходить ....
Это доступная из исходного кода, кроссплатформенная, документоориентированная база данных. Классифицируемая как NoSQL-база данных, MongoDB отказывается от традиционной структуры реляционных баз данных на основе таблиц в пользу JSON-подобных документов с необязательными схемами.
Основные концепции
1. Документоориентированное хранение данных
В отличие от реляционных баз данных, использующих строки и столбцы, MongoDB хранит данные в формате BSON (Binary JSON). Это позволяет создавать вложенные структуры, массивы и различные типы полей в рамках одной коллекции.
Коллекции: эквивалентны таблицам в SQL.
Документы: эквивалентны строкам или записям.
Поля: эквивалентны столбцам.
2. Динамическая схема
MongoDB обладает гибкой схемой, что означает, что документы в одной коллекции не обязательно должны иметь одинаковый набор полей или структуру. Это особенно полезно для:
Быстрого прототипирования и итеративной разработки.
Обработки неструктурированных или полуструктурированных данных. Аналитика в реальном времени, где форматы данных могут меняться.
Ключевые особенности
3. Масштабируемость:
MongoDB разработана для обеспечения высокой доступности и горизонтального масштабирования. Благодаря шардингу данные распределяются по нескольким машинам для обработки больших объемов данных и больших наборов данных.
3. Высокая доступность:
Благодаря репликационным наборам MongoDB поддерживает несколько копий данных на разных серверах, гарантируя, что в случае отказа одного узла система останется работоспособной.
4. Мощные запросы:
Поддерживаются запросы ad hoc, индексирование и агрегация в реальном времени. Язык запросов MongoDB (MQL) выразителен и прост в освоении для разработчиков.
Индексирование: Поддержка различных типов индексов (однополочные, составные, геопространственные, текстовые) обеспечивает высокопроизводительный поиск.
Распространенные сценарии использования
Системы управления контентом (CMS): Хранение различных типов медиафайлов, статей и пользовательского контента.
Электронная коммерция: Управление каталогами товаров, где разные товары имеют разные атрибуты.
Аналитика в реальном времени: обработка высокоскоростных данных с IoT-устройств или лент социальных сетей.
Мобильные приложения: предоставление гибкой серверной части, которая может развиваться вместе с функциями приложения.
Почему разработчики выбирают MongoDB ?
Главное преимущество MongoDB - это удобство для разработчиков. Поскольку документы напрямую сопоставляются с объектами в большинстве современных языков программирования (таких как JavaScript, Python и Java), разработчики могут тратить меньше времени на написание сложных слоев объектно-реляционного отображения (ORM) и больше времени на разработку функций.
К сожалению из личного опыта есть проблема что некоторые разработчики пытаются работать с Mongo DB как и с реляционными пытаясь эмулировать какие - то ORM что приводит часто к
редкостному бреду и даже идиотизму которые обращают плюсы в минусы. Думаю что если очень хочется этим заниматься то просто Mongo DB для такого разработчика критически не подходит :-)
Хотя в целом тема ORM это отдельная тема для разговора . Их смысл в эпоху микросервисов и AI который может легко генерировать запросы сильно под вопросом, к сожалению есть проблема что люди к чему то привыкли и упорно не хотят с этого уходить ....
Изменено пользователем Тьяльф
картинка