Що таке MongoDB?
MongoDB - це орієнтована на документи база даних NoSQL, яка використовується для великого обсягу зберігання даних. Замість використання таблиць і рядків, як у традиційних реляційних базах даних, MongoDB використовує колекції та документи. Документи складаються з пар ключ-значення, які є основною одиницею даних у MongoDB. Колекції містять набори документів та функції, що є еквівалентом реляційних таблиць баз даних. MongoDB - це база даних, яка з’явилася приблизно в середині 2000-х.
У цьому підручнику ви дізнаєтесь-
- Особливості MongoDB
- Приклад MongoDB
- Ключові компоненти архітектури MongoDB
- Навіщо використовувати MongoDB
- Моделювання даних у MongoDB
- Різниця між MongoDB та RDBMS
Особливості MongoDB
- Кожна база даних містить колекції, які, в свою чергу, містять документи. Кожен документ може бути різним із різною кількістю полів. Розмір і зміст кожного документа можуть відрізнятися один від одного.
- Структура документа більше відповідає тому, як розробники будують свої класи та об'єкти у відповідних мовах програмування. Розробники часто говорять, що їх класи не є рядками та стовпцями, а мають чітку структуру з парами ключ-значення.
- Рядки (або документи, як їх називають у MongoDB), не повинні мати попередньо визначену схему. Натомість поля можна створювати на льоту.
- Модель даних, доступна в MongoDB, дозволяє вам легше представляти ієрархічні відносини, зберігати масиви та інші більш складні структури.
- Масштабованість - середовища MongoDB дуже масштабовані. Компанії по всьому світу визначили кластери, деякі з яких мають понад 100 вузлів із близько мільйонами документів у базі даних
Приклад MongoDB
У наведеному нижче прикладі показано, як документ можна змоделювати в MongoDB.
- MongoDB додає поле _id для однозначної ідентифікації документа в колекції.
- Що ви можете зазначити, це те, що дані замовлення (ідентифікатор замовлення, товар та кількість), які в СУБД зазвичай зберігаються в окремій таблиці, тоді як у MongoDB вони фактично зберігаються як вбудований документ у самій колекції. Це одна з ключових відмінностей у моделюванні даних у MongoDB.
Ключові компоненти архітектури MongoDB
Нижче наведено кілька загальних термінів, що використовуються в MongoDB
- _id - це поле обов’язкове для кожного документа MongoDB. Поле _id представляє унікальне значення в документі MongoDB. Поле _id схоже на первинний ключ документа. Якщо ви створюєте новий документ без поля _id, MongoDB автоматично створить поле. Так, наприклад, якщо ми бачимо приклад вищезазначеної таблиці клієнтів, Mongo DB додасть 24-значний унікальний ідентифікатор до кожного документа у колекції.
_Ід | CustomerID | Ім'я клієнта | Ідентифікатор замовлення |
---|---|---|---|
563479cc8a8a4246bd27d784 | 11 | Гуру99 | 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 може забезпечити високу доступність із наборами реплік. Набір реплік складається з двох або більше екземплярів DB mongo. Кожен член набору реплік може виступати в ролі первинної або вторинної репліки в будь-який час. Первинна репліка - це основний сервер, який взаємодіє з клієнтом і виконує всі операції читання / запису. Вторинні репліки зберігають копію даних первинної, використовуючи вбудовану реплікацію. Коли первинна репліка виходить з ладу, набір реплік автоматично перемикається на вторинний, а потім стає основним сервером.
- Балансування навантаження - MongoDB використовує концепцію шардінгу для горизонтального масштабування, розділяючи дані на кілька екземплярів MongoDB. MongoDB може працювати на декількох серверах, балансуючи навантаження та / або продублюючи дані, щоб підтримувати роботу системи в разі несправності обладнання.
Моделювання даних у MongoDB
Як ми бачили з розділу Вступ, дані в MongoDB мають гнучку схему. На відміну від баз даних SQL, де перед вставкою даних вам потрібно оголосити схему таблиці, колекції MongoDB не застосовують структуру документа. Така гнучкість робить MongoDB настільки потужним.
Під час моделювання даних у Монго пам’ятайте про наступне
- Які потреби програми - Подивіться на ділові потреби програми та подивіться, які дані та тип даних потрібні для програми. Виходячи з цього, переконайтеся, що структура документа визначена відповідним чином.
- Що таке шаблони пошуку даних - якщо ви передбачаєте інтенсивне використання запитів, то розгляньте можливість використання індексів у вашій моделі даних для підвищення ефективності запитів.
- Чи часті вставки, оновлення та видалення трапляються у базі даних? Перегляньте використання індексів або включіть шордінг, якщо це потрібно, у дизайн моделювання даних, щоб підвищити ефективність вашого загального середовища MongoDB.
Різниця між MongoDB та RDBMS
Нижче наведено деякі ключові термінові відмінності між MongoDB та RDBMS
RDBMS | MongoDB | Різниця |
---|---|---|
Таблиця | Колекція | У RDBMS таблиця містить стовпці та рядки, які використовуються для зберігання даних, тоді як у MongoDB ця сама структура відома як колекція. Колекція містить документи, які в свою чергу містять поля, які в свою чергу є парами ключ-значення. |
Рядок | Документ | У СУБД рядок представляє один, неявно структурований елемент даних у таблиці. У MongoDB дані зберігаються в документах. |
Стовпець | Польовий | У СУБД стовпець позначає набір значень даних. Вони в MongoDB відомі як Поля. |
Приєднується | Вбудовані документи | У СУБД дані іноді розподіляються по різних таблицях, і для того, щоб показати повний вигляд усіх даних, іноді формується об'єднання між таблицями для отримання даних. У MongoDB дані зазвичай зберігаються в одній колекції, але розділяються за допомогою вбудованих документів. Отже, в MongoDB немає концепції приєднання. |
Окрім відмінностей між термінами, нижче наведено кілька інших відмінностей
- Реляційні бази даних відомі тим, що забезпечують цілісність даних. У MongoDB це не є чіткою вимогою.
- RDBMS вимагає спочатку нормалізації даних, щоб запобігти осиротілим записам і дублікатам. Нормалізація даних тоді вимагає більшої кількості таблиць, що в результаті призведе до більшої кількості об'єднань таблиць, що вимагає більшої кількості ключів та індексів.
По мірі того, як бази даних починають рости, продуктивність може стати проблемою. Знову ж таки, це не явна вимога в MongoDB. MongoDB є гнучким і не потребує спочатку нормалізації даних.