Что такое MongoDB?
MongoDB - это документно-ориентированная база данных NoSQL, используемая для хранения больших объемов данных. Вместо использования таблиц и строк, как в традиционных реляционных базах данных, MongoDB использует коллекции и документы. Документы состоят из пар ключ-значение, которые являются основной единицей данных в MongoDB. Коллекции содержат наборы документов и функций, которые эквивалентны таблицам реляционной базы данных. MongoDB - это база данных, которая появилась на свет примерно в середине 2000-х годов.
В этом руководстве вы узнаете:
- Возможности MongoDB
- Пример MongoDB
- Ключевые компоненты архитектуры MongoDB
- Зачем использовать MongoDB
- Моделирование данных в MongoDB
- Разница между MongoDB и СУБД
Возможности MongoDB
- Каждая база данных содержит коллекции, которые, в свою очередь, содержат документы. Каждый документ может отличаться разным количеством полей. Размер и содержание каждого документа могут отличаться друг от друга.
- Структура документа больше соответствует тому, как разработчики создают свои классы и объекты на своих соответствующих языках программирования. Разработчики часто говорят, что их классы не являются строками и столбцами, а имеют четкую структуру с парами ключ-значение.
- Строки (или документы, как они называются в MongoDB) не обязательно должны иметь заранее определенную схему. Вместо этого поля можно создавать «на лету».
- Модель данных, доступная в MongoDB, позволяет вам более легко представлять иерархические отношения, хранить массивы и другие более сложные структуры.
- Масштабируемость - среды MongoDB очень масштабируемы. Компании по всему миру определили кластеры, некоторые из которых имеют более 100 узлов с миллионами документов в базе данных.
Пример MongoDB
В приведенном ниже примере показано, как смоделировать документ в MongoDB.
- Поле _id добавляется MongoDB для уникальной идентификации документа в коллекции.
- Что вы можете отметить, так это то, что данные заказа (идентификатор заказа, продукт и количество), которые в СУБД обычно хранятся в отдельной таблице, тогда как в MongoDB они фактически хранятся как встроенный документ в самой коллекции. Это одно из ключевых отличий в моделировании данных в MongoDB.
Ключевые компоненты архитектуры MongoDB
Ниже приведены несколько общих терминов, используемых в MongoDB.
- _id - это поле, обязательное в каждом документе MongoDB. Поле _id представляет уникальное значение в документе MongoDB. Поле _id похоже на первичный ключ документа. Если вы создаете новый документ без поля _id, MongoDB автоматически создаст это поле. Так, например, если мы увидим пример приведенной выше таблицы клиентов, Mongo DB добавит 24-значный уникальный идентификатор к каждому документу в коллекции.
_Идентификатор | Пользовательский ИД | Имя Клиента | Номер заказа |
---|---|---|---|
563479cc8a8a4246bd27d784 | 11 | Guru99 | 111 |
563479cc7a8a4246bd47d784 | 22 | Тревор Смит | 222 |
563479cc9a8a4246bd57d784 | 33 | Николь | 333 |
- Коллекция - это группа документов MongoDB. Коллекция - это эквивалент таблицы, которая создается в любой другой СУБД, такой как Oracle или MS SQL. Коллекция существует в одной базе данных. Как видно из введения, коллекции не требуют какой-либо структуры.
- Курсор - это указатель на набор результатов запроса. Клиенты могут перемещаться по курсору для получения результатов.
- База данных - это контейнер для коллекций, как в RDMS, где он является контейнером для таблиц. Каждая база данных получает свой собственный набор файлов в файловой системе. Сервер MongoDB может хранить несколько баз данных.
- Документ - запись в коллекции MongoDB обычно называется документом. Документ, в свою очередь, будет состоять из имени поля и значений.
- Поле - пара имя-значение в документе. В документе нет полей или больше. Поля аналогичны столбцам в реляционных базах данных.
На следующей диаграмме показан пример полей с парами «ключ-значение». Итак, в приведенном ниже примере CustomerID и 11 - одна из пар ключ-значение, определенных в документе.
- JSON - это известно как нотация объектов JavaScript. Это удобный для чтения текстовый формат для представления структурированных данных. В настоящее время JSON поддерживается на многих языках программирования.
Просто небольшое примечание о ключевом различии между полем _id и обычным полем коллекции. Поле _id используется для уникальной идентификации документов в коллекции и автоматически добавляется MongoDB при создании коллекции.
Зачем использовать MongoDB?
Ниже приведены несколько причин, по которым следует начать использовать MongoDB.
- Ориентированная на документы - поскольку MongoDB является базой данных типа NoSQL, вместо того, чтобы иметь данные в формате реляционного типа, она хранит данные в документах. Это делает MongoDB очень гибким и адаптируемым к реальной ситуации и требованиям делового мира.
- Специальные запросы - MongoDB поддерживает поиск по полям, диапазонам и поиск по регулярным выражениям. Могут быть сделаны запросы для возврата определенных полей в документах.
- Индексирование - можно создавать индексы для повышения производительности поиска в MongoDB. Любое поле в документе MongoDB можно проиндексировать.
- Репликация - MongoDB может обеспечить высокую доступность с помощью наборов реплик. Набор реплик состоит из двух или более экземпляров mongo DB. Каждый член набора реплик может выступать в роли первичной или вторичной реплики в любое время. Первичная реплика - это главный сервер, который взаимодействует с клиентом и выполняет все операции чтения / записи. Вторичные реплики поддерживают копию данных первичной реплики с помощью встроенной репликации. При выходе из строя первичной реплики набор реплик автоматически переключается на вторичный, а затем становится первичным сервером.
- Балансировка нагрузки - MongoDB использует концепцию сегментирования для горизонтального масштабирования путем разделения данных между несколькими экземплярами MongoDB. MongoDB может работать на нескольких серверах, балансируя нагрузку и / или дублируя данные, чтобы система оставалась работоспособной в случае отказа оборудования.
Моделирование данных в MongoDB
Как мы видели из раздела «Введение», данные в MongoDB имеют гибкую схему. В отличие от баз данных SQL, где вы должны объявить схему таблицы перед вставкой данных, коллекции MongoDB не обеспечивают соблюдение структуры документа. Такая гибкость делает MongoDB настолько мощным.
При моделировании данных в Mongo имейте в виду следующее.
- Каковы потребности приложения - изучите бизнес-потребности приложения и выясните, какие данные и тип данных необходимы для приложения. Исходя из этого, убедитесь, что структура документа определена соответствующим образом.
- Что такое шаблоны извлечения данных - если вы предвидите интенсивное использование запросов, рассмотрите возможность использования индексов в вашей модели данных для повышения эффективности запросов.
- Часто ли происходят вставки, обновления и удаления в базе данных? Пересмотрите использование индексов или включите сегментирование, если требуется, в проект моделирования данных, чтобы повысить эффективность всей среды MongoDB.
Разница между MongoDB и СУБД
Ниже приведены некоторые ключевые различия терминов между MongoDB и СУБД.
СУБД | MongoDB | Разница |
---|---|---|
Стол | Коллекция | В СУБД таблица содержит столбцы и строки, которые используются для хранения данных, тогда как в MongoDB эта же структура известна как коллекция. Коллекция содержит документы, которые, в свою очередь, содержат поля, которые, в свою очередь, представляют собой пары "ключ-значение". |
Ряд | Документ | В СУБД строка представляет собой один элемент неявно структурированных данных в таблице. В MongoDB данные хранятся в документах. |
Столбец | Поле | В СУБД столбец обозначает набор значений данных. В MongoDB они известны как поля. |
Присоединяется | Встроенные документы | В СУБД данные иногда распределяются по различным таблицам, и для того, чтобы показать полное представление всех данных, иногда для получения данных между таблицами формируется соединение. В MongoDB данные обычно хранятся в одной коллекции, но разделяются с помощью встроенных документов. Таким образом, в MongoDB нет концепции объединений. |
Помимо различий в терминах, ниже показаны некоторые другие отличия.
- Реляционные базы данных известны тем, что обеспечивают целостность данных. Это не явное требование в MongoDB.
- РСУБД требует, чтобы данные сначала были нормализованы, чтобы предотвратить появление лишних записей и дубликатов. Затем для нормализации данных требуется больше таблиц, что приведет к большему количеству объединений таблиц, что потребует большего количества ключей и индексов.
По мере того, как базы данных начинают расти, производительность может стать проблемой. Опять же, это не явное требование в MongoDB. MongoDB гибок и не требует предварительной нормализации данных.