Що таке MongoDB? вступ, Archiтектура, функції та приклад

Що таке MongoDB?

MongoDB це документно-орієнтована база даних NoSQL, яка використовується для зберігання великих обсягів даних. Замість використання таблиць і рядків, як у традиційних реляційних базах даних, MongoDB використовує колекції та документи. Документи складаються з пар ключ-значення, які є основною одиницею даних у MongoDB. Колекції містять набори документів і функції, що є еквівалентом таблиць реляційної бази даних. MongoDB це база даних, яка з’явилася на світ приблизно в середині 2000-х років.

MongoDB Функції

  1. Кожна база даних містить колекції, які, у свою чергу, містять документи. Кожен документ може мати різну кількість полів. Розмір і зміст кожного документа можуть відрізнятися один від одного.
  2. Структура документа більше відповідає тому, як розробники будують свої класи та об’єкти на відповідних мовах програмування. Розробники часто кажуть, що їхні класи не є рядками та стовпцями, а мають чітку структуру з парами ключ-значення.
  3. Рядки (або документи, як викликано в MongoDB) не потребує попередньої визначеної схеми. Натомість поля можна створювати на льоту.
  4. Доступна модель даних MongoDB дозволяє легше представляти ієрархічні зв’язки, зберігати масиви та інші складніші структури.
  5. Масштабованість – The MongoDB середовища дуже масштабовані. Компанії в усьому світі визначили кластери, деякі з них працюють із 100+ вузлами з приблизно мільйонами документів у базі даних

MongoDB Приклад

Наведений нижче приклад показує, як можна моделювати документ MongoDB.

  1. Поле _id додається MongoDB для однозначної ідентифікації документа в колекції.
  2. Ви можете зауважити, що дані замовлення (OrderID, Product і Quantity), які в RDBMS зазвичай зберігаються в окремій таблиці, а в MongoDB він фактично зберігається як вбудований документ у самій колекції. Це одна з ключових відмінностей у моделюванні даних MongoDB.

MongoDB Приклад

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

Нижче наведено кілька поширених термінів, які використовуються в MongoDB

  1. _id – Це поле обов’язкове для кожного MongoDB документ. Поле _id представляє унікальне значення в MongoDB документ. Поле _id схоже на первинний ключ документа. Якщо ви створюєте новий документ без поля _id, MongoDB автоматично створить поле. Так, наприклад, якщо ми побачимо приклад таблиці клієнтів вище, Mongo DB додасть 24-значний унікальний ідентифікатор до кожного документа в колекції.
_Id Ідентифікатор клієнта Ім'я клієнта OrderID
563479cc8a8a4246bd27d784 11 Guru99 111
563479cc7a8a4246bd47d784 22 Тревор Сміт 222
563479cc9a8a4246bd57d784 33 Ніколь 333
  1. COLLECTION – Це угруповання MongoDB документів. Колекція є еквівалентом таблиці, яка створюється в будь-якому іншому RDMS, наприклад Oracle або MS SQL. Колекція існує в одній базі даних. Як видно зі вступу, колекції не забезпечують дотримання будь-якої структури.
  2. Курсор – Це вказівник на набір результатів запиту. Клієнти можуть ітерувати курсор, щоб отримати результати.
  3. Database – Це контейнер для колекцій, як у RDMS, де це контейнер для таблиць. Кожна база даних отримує власний набір файлів у файловій системі. А MongoDB сервер може зберігати кілька баз даних.
  4. Документ – Запис в а MongoDB колекцію в основному називають документом. Документ, у свою чергу, складатиметься з імені поля та значень.
  5. Поле – Пара ім’я-значення в документі. Документ має нуль або більше полів. Поля аналогічні стовпцям у реляційних базах даних. На наступній діаграмі показано приклад полів із парами «Ключ-значення». Отже, у наведеному нижче прикладі CustomerID і 11 є однією з пар ключів-значень, визначених у документі.

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

  1. JSON – Це відомо як JavaScript Нотація об’єктів. Це зрозумілий для людини формат звичайного тексту для вираження структурованих даних. Наразі JSON підтримується багатьма мовами програмування.

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

Навіщо використовувати MongoDB?

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

  1. Документоорієнтований – З MongoDB це NoSQL замість того, щоб мати дані у форматі реляційного типу, вона зберігає дані в документах. Це робить MongoDB дуже гнучкий і адаптований до ситуації та вимог реального ділового світу.
  2. Спеціальні запити – MongoDB підтримує пошук за полями, запитами діапазону та пошук за регулярними виразами. Можна створювати запити для повернення певних полів у документах.
  3. Індексування – індекси можна створювати для покращення ефективності пошуку всередині MongoDB. Будь-яке поле в a MongoDB документ можна проіндексувати.
  4. Реплікація – MongoDB може забезпечити високу доступність за допомогою наборів копій. Набір реплік складається з двох або більше екземплярів Mongo DB. Кожен член набору реплік може виступати в ролі основної або вторинної репліки в будь-який час. Основна репліка — це основний сервер, який взаємодіє з клієнтом і виконує всі операції читання/запису. Вторинні репліки зберігають копію даних основної за допомогою вбудованої реплікації. Коли первинна репліка виходить з ладу, набір реплік автоматично перемикається на вторинний, а потім він стає основним сервером.
  5. Балансування навантаження – MongoDB використовує концепцію шардингу для горизонтального масштабування шляхом поділу даних на кілька MongoDB екземпляри. MongoDB може працювати на кількох серверах, балансуючи навантаження та/або дублюючи дані, щоб підтримувати працездатність системи у випадку апаратного збою.

Моделювання даних в MongoDB

Як ми бачили з розділу Вступ, дані в MongoDB має гнучку схему. На відміну від в SQL бази даних, де ви повинні мати схему таблиці, оголошену перед вставкою даних, MongoDBКолекції не забезпечують дотримання структури документа. Саме така гнучкість робить MongoDB такий потужний.

Під час моделювання даних у Mongo пам’ятайте про наступне

  1. Які потреби програми – подивіться на бізнес-потреби програми та подивіться, які дані та тип даних потрібні для програми. Виходячи з цього, переконайтеся, що структура документа визначена відповідним чином.
  2. Що таке шаблони отримання даних? Якщо ви передбачаєте інтенсивне використання запитів, розгляньте можливість використання індексів у вашій моделі даних, щоб підвищити ефективність запитів.
  3. Чи часті вставки, оновлення та видалення відбуваються в базі даних? Перегляньте використання індексів або включіть сегментування, якщо це необхідно, у ваш дизайн моделювання даних, щоб підвищити ефективність вашого загального MongoDB довкілля.

Різниця між MongoDB & RDBMS

Нижче наведено деякі ключові відмінності між термінами MongoDB і РСУБД

СУБД MongoDB Різниця
таблиця COLLECTION In СУБД, таблиця містить стовпці та рядки, які використовуються для зберігання даних, тоді як у MongoDB, ця сама структура відома як колекція. Колекція містить документи, які, у свою чергу, містять поля, які, у свою чергу, є парами ключ-значення.
Рядок Документ У RDBMS рядок представляє один неявно структурований елемент даних у таблиці. в MongoDB, дані зберігаються в документах.
Колонка Поле У RDBMS стовпець позначає набір значень даних. Ці в MongoDB відомі як поля.
з'єднання Вбудовані документи У RDBMS дані іноді розподіляються між різними таблицями, і щоб показати повне уявлення про всі дані, іноді формується об’єднання між таблицями для отримання даних. в MongoDB, дані зазвичай зберігаються в одній колекції, але розділені за допомогою вбудованих документів. Отже, немає поняття приєднання MongoDB.

Окрім відмінностей у термінах, нижче показано кілька інших відмінностей

  1. Відомо, що реляційні бази даних забезпечують цілісність даних. Це не є чіткою вимогою в MongoDB.
  2. RDBMS вимагає, щоб дані були нормалізується спочатку для того, щоб він міг запобігти втраченим записам і дублікатам. Потім для нормалізації даних потрібна додаткова кількість таблиць, що призведе до збільшення кількості об’єднань таблиць, що вимагає більше ключів та індексів. Коли бази даних починають рости, продуктивність може стати проблемою. Знову ж таки, це не є чіткою вимогою MongoDB. MongoDB є гнучким і не вимагає попередньої нормалізації даних.