Что такое MongoDB? Введение, архитектура, функции и возможности Пример

Содержание:

Anonim

Что такое MongoDB?

MongoDB - это документно-ориентированная база данных NoSQL, используемая для хранения больших объемов данных. Вместо использования таблиц и строк, как в традиционных реляционных базах данных, MongoDB использует коллекции и документы. Документы состоят из пар ключ-значение, которые являются основной единицей данных в MongoDB. Коллекции содержат наборы документов и функций, которые эквивалентны таблицам реляционной базы данных. MongoDB - это база данных, которая появилась на свет примерно в середине 2000-х годов.

В этом руководстве вы узнаете:

  • Возможности MongoDB
  • Пример MongoDB
  • Ключевые компоненты архитектуры MongoDB
  • Зачем использовать MongoDB
  • Моделирование данных в MongoDB
  • Разница между MongoDB и СУБД

Возможности MongoDB

    1. Каждая база данных содержит коллекции, которые, в свою очередь, содержат документы. Каждый документ может отличаться разным количеством полей. Размер и содержание каждого документа могут отличаться друг от друга.
    2. Структура документа больше соответствует тому, как разработчики создают свои классы и объекты на своих соответствующих языках программирования. Разработчики часто говорят, что их классы не являются строками и столбцами, а имеют четкую структуру с парами ключ-значение.
    3. Строки (или документы, как они называются в MongoDB) не обязательно должны иметь заранее определенную схему. Вместо этого поля можно создавать «на лету».
    4. Модель данных, доступная в MongoDB, позволяет вам более легко представлять иерархические отношения, хранить массивы и другие более сложные структуры.
  1. Масштабируемость - среды MongoDB очень масштабируемы. Компании по всему миру определили кластеры, некоторые из которых имеют более 100 узлов с миллионами документов в базе данных.

Пример MongoDB

В приведенном ниже примере показано, как смоделировать документ в MongoDB.

  1. Поле _id добавляется MongoDB для уникальной идентификации документа в коллекции.
  2. Что вы можете отметить, так это то, что данные заказа (идентификатор заказа, продукт и количество), которые в СУБД обычно хранятся в отдельной таблице, тогда как в MongoDB они фактически хранятся как встроенный документ в самой коллекции. Это одно из ключевых отличий в моделировании данных в MongoDB.

Ключевые компоненты архитектуры MongoDB

Ниже приведены несколько общих терминов, используемых в MongoDB.

  1. _id - это поле, обязательное в каждом документе MongoDB. Поле _id представляет уникальное значение в документе MongoDB. Поле _id похоже на первичный ключ документа. Если вы создаете новый документ без поля _id, MongoDB автоматически создаст это поле. Так, например, если мы увидим пример приведенной выше таблицы клиентов, Mongo DB добавит 24-значный уникальный идентификатор к каждому документу в коллекции.
_Идентификатор Пользовательский ИД Имя Клиента Номер заказа
563479cc8a8a4246bd27d784 11 Guru99 111
563479cc7a8a4246bd47d784 22 Тревор Смит 222
563479cc9a8a4246bd57d784 33 Николь 333
  1. Коллекция - это группа документов MongoDB. Коллекция - это эквивалент таблицы, которая создается в любой другой СУБД, такой как Oracle или MS SQL. Коллекция существует в одной базе данных. Как видно из введения, коллекции не требуют какой-либо структуры.
  2. Курсор - это указатель на набор результатов запроса. Клиенты могут перемещаться по курсору для получения результатов.
  3. База данных - это контейнер для коллекций, как в RDMS, где он является контейнером для таблиц. Каждая база данных получает свой собственный набор файлов в файловой системе. Сервер MongoDB может хранить несколько баз данных.
  4. Документ - запись в коллекции MongoDB обычно называется документом. Документ, в свою очередь, будет состоять из имени поля и значений.
  5. Поле - пара имя-значение в документе. В документе нет полей или больше. Поля аналогичны столбцам в реляционных базах данных.

    На следующей диаграмме показан пример полей с парами «ключ-значение». Итак, в приведенном ниже примере CustomerID и 11 - одна из пар ключ-значение, определенных в документе.

  1. JSON - это известно как нотация объектов JavaScript. Это удобный для чтения текстовый формат для представления структурированных данных. В настоящее время JSON поддерживается на многих языках программирования.

Просто небольшое примечание о ключевом различии между полем _id и обычным полем коллекции. Поле _id используется для уникальной идентификации документов в коллекции и автоматически добавляется MongoDB при создании коллекции.

Зачем использовать MongoDB?

Ниже приведены несколько причин, по которым следует начать использовать MongoDB.

  1. Ориентированная на документы - поскольку MongoDB является базой данных типа NoSQL, вместо того, чтобы иметь данные в формате реляционного типа, она хранит данные в документах. Это делает MongoDB очень гибким и адаптируемым к реальной ситуации и требованиям делового мира.
  2. Специальные запросы - MongoDB поддерживает поиск по полям, диапазонам и поиск по регулярным выражениям. Могут быть сделаны запросы для возврата определенных полей в документах.
  3. Индексирование - можно создавать индексы для повышения производительности поиска в MongoDB. Любое поле в документе MongoDB можно проиндексировать.
  4. Репликация - MongoDB может обеспечить высокую доступность с помощью наборов реплик. Набор реплик состоит из двух или более экземпляров mongo DB. Каждый член набора реплик может выступать в роли первичной или вторичной реплики в любое время. Первичная реплика - это главный сервер, который взаимодействует с клиентом и выполняет все операции чтения / записи. Вторичные реплики поддерживают копию данных первичной реплики с помощью встроенной репликации. При выходе из строя первичной реплики набор реплик автоматически переключается на вторичный, а затем становится первичным сервером.
  5. Балансировка нагрузки - MongoDB использует концепцию сегментирования для горизонтального масштабирования путем разделения данных между несколькими экземплярами MongoDB. MongoDB может работать на нескольких серверах, балансируя нагрузку и / или дублируя данные, чтобы система оставалась работоспособной в случае отказа оборудования.

Моделирование данных в MongoDB

Как мы видели из раздела «Введение», данные в MongoDB имеют гибкую схему. В отличие от баз данных SQL, где вы должны объявить схему таблицы перед вставкой данных, коллекции MongoDB не обеспечивают соблюдение структуры документа. Такая гибкость делает MongoDB настолько мощным.

При моделировании данных в Mongo имейте в виду следующее.

  1. Каковы потребности приложения - изучите бизнес-потребности приложения и выясните, какие данные и тип данных необходимы для приложения. Исходя из этого, убедитесь, что структура документа определена соответствующим образом.
  2. Что такое шаблоны извлечения данных - если вы предвидите интенсивное использование запросов, рассмотрите возможность использования индексов в вашей модели данных для повышения эффективности запросов.
  3. Часто ли происходят вставки, обновления и удаления в базе данных? Пересмотрите использование индексов или включите сегментирование, если требуется, в проект моделирования данных, чтобы повысить эффективность всей среды MongoDB.

Разница между MongoDB и СУБД

Ниже приведены некоторые ключевые различия терминов между MongoDB и СУБД.

СУБД MongoDB Разница
Стол Коллекция В СУБД таблица содержит столбцы и строки, которые используются для хранения данных, тогда как в MongoDB эта же структура известна как коллекция. Коллекция содержит документы, которые, в свою очередь, содержат поля, которые, в свою очередь, представляют собой пары "ключ-значение".
Ряд Документ В СУБД строка представляет собой один элемент неявно структурированных данных в таблице. В MongoDB данные хранятся в документах.
Столбец Поле В СУБД столбец обозначает набор значений данных. В MongoDB они известны как поля.
Присоединяется Встроенные документы В СУБД данные иногда распределяются по различным таблицам, и для того, чтобы показать полное представление всех данных, иногда для получения данных между таблицами формируется соединение. В MongoDB данные обычно хранятся в одной коллекции, но разделяются с помощью встроенных документов. Таким образом, в MongoDB нет концепции объединений.

Помимо различий в терминах, ниже показаны некоторые другие отличия.

  1. Реляционные базы данных известны тем, что обеспечивают целостность данных. Это не явное требование в MongoDB.
  2. РСУБД требует, чтобы данные сначала были нормализованы, чтобы предотвратить появление лишних записей и дубликатов. Затем для нормализации данных требуется больше таблиц, что приведет к большему количеству объединений таблиц, что потребует большего количества ключей и индексов.

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