Что такое MongoDB? Введение, Archiтектура, особенности и пример

Что такое MongoDB?

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

MongoDB Особенности

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

MongoDB Пример

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

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

MongoDB Пример

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Помимо различий в терминах, ниже показаны еще несколько отличий.

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