MongoDB е най-често срещаната и широко използвана NoSQL база данни. Това е документно-ориентирана DB с отворен код. NoSQL се използва за обозначаване на „нерелационни“. Това означава, че базата данни MongoDB не се основава на таблични отношения като RDBMS, тъй като предоставя отделен механизъм за съхранение и извличане на данни.
Форматът за съхранение, използван от MongoDB, се нарича BSON. Базата данни се поддържа от MongoDB Inc. и е лицензирана под Server-Side Public License (SSPL).
По-долу е дадена проста структура на документа на MongoDB:
{ title: 'FossLinux', by: 'Abraham', url: 'https://www.fosslinux.com', type: 'NoSQL' }
Как работи?
MongoDB работи на два слоя, а именно:
- Слой данни
- Приложен слой
Приложният слой обикновено се нарича окончателен слой за абстракция. Съдържа две части:бекенда сървърната част и предния край, секцията за потребителски интерфейс. Предният раздел е видимото място, където разработчикът, с помощта на MongoDB, взаимодейства с мобилния или уеб. Бекенд секцията включва сървъра, използван основно за провеждане на логика от страна на сървъра. Освен това, секцията за сървъра съдържа драйвери и mongo shell, които подпомагат взаимодействието на сървъра MongoDB с помощта на заявки.
Заявките се изпращат до сървъра, който се намира в слоя данни. Сървърът на MongoDB получава, след което предава заявките към механизма за съхранение, където се извършват операции за четене и запис на съответните файлове с данни. Основната цел на механизма за съхранение е да управлява данни.
Забележка: Сървърът MongoDB не извършва операции за запис и четене.
Изображението по-долу илюстрира как работи MongoDB:
Основни характеристики на MongoDB
Основните му характеристики включват:
1. Индексиране
Индексите имат за цел да подобрят производителността и скоростта на търсене в базата данни. Полетата в документа на тази база данни могат да бъдат индексирани с първичен и вторичен индекс/индекси. Без индексиране всеки документ в база данни трябва да бъде сканиран, за да се изберат тези, които отговарят на заявката, което понякога е неефективно. Следователно индексирането трябва да присъства за ефективно търсене на документи и MongoDB го използва за обработка на големи масиви от данни сбито.
MongoDB позволява на своите потребители да индексират всяко поле, което е индексирано както с вторични, така и с първични индекси. Това прави търсенето на заявки много по-бързо, като по този начин подобрява цялостната производителност.
2. Балансиране на натоварване
MongoDB дублира данни, за да поддържа системата работеща дори в случаи на хардуерна повреда. В допълнение, този процес позволява на MongoDB да работи върху множество сървъри, като по този начин балансира натоварването.
3. Ad-hoc заявки
MongoDB поддържа редовно търсене на поле, диапазон и търсене на изрази. Тези заявки връщат конкретни полета от документи и включват също така дефинирани от потребителя функции на JavaScript. Заявките могат също да бъдат конфигурирани да връщат произволна извадка от резултати с даден размер.
4. Репликация
Наборите реплики, които MongoDB предоставя, се състоят от две или повече копия на данни. Тези комплекти могат да действат като първични или вторични реплики по всяко време. Първичните набори реплика извършват четене и запис, докато вторичните набори поддържат копие на данните на първичната реплика, използвайки вградена репликация. Ако основната реплика не успее, наборът от реплика автоматично изпълнява изборен процес, за да определи коя вторична трябва да стане основна. Вторичните реплики могат да обслужват операции за четене по избор, но данните в крайна сметка са последователни по подразбиране.
5. Съхранение на файлове
Тази база данни предоставя функции за манипулиране на файлове и съдържание на разработчиците. Mongo DB може да се използва като файлова система, известна като Grid файлова система (GridFS). Тази функция разделя файл на части и съхранява всяка част като отделен документ.
6. Агрегация
За ефективна използваемост MongoDB предоставя рамката за агрегиране. Тази функция позволява на разработчиците да групират данните за процеса и да получат един резултат дори след изпълнение на различни операции върху груповите данни. Има три начина, по които MongoDB предоставя рамката за агрегиране:
- Функция за намаляване на картата
- Тръбопровод за агрегиране
- Агрегация за една цел.
Проверете изображението по-долу, за да видите как работи агрегирането в MongoDB:
7. База данни без схеми
Функцията без схема осигурява на MongoDB много по-голяма гъвкавост. Една колекция може да съдържа различни документи в MongoDB. Фактът, че няма схема, му позволява да съхранява отделни документи с друго съдържание, полета и размери в същата колекция.
8. GridFS
Това е функция, използвана за съхраняване и извличане на файлове в MongoDB. Той разделя документ на няколко части, известни като парчета, след което ги съхранява в различни документи. Всички парчета, с изключение на последния, имат размер за съхранение по подразбиране от около 255KB. GridFS е много полезен за файлове над 16MB.
Забележка: Когато GridFS бъде запитан за файл, той събира всички отделни парчета, необходими за формиране на оригиналния файл. По-долу е дадена опростена методология за работа на GridFS:
Компоненти на MongoDB
Основните компоненти на MongoDB и тяхното използване включват:
- Колекции – Те са набор от документи на MongoDB. Техните RDBMS колеги са таблици. Важно е да се разбере, че колекциите не налагат никаква структура. Колекция винаги съществува в рамките на една DB.
- Документ – Това е колекция от данни, съхранявани във формат BSON. Неговият аналог на RDBMS е Row. Записите в MongoDB са известни като документи. Документите в MongoDB съдържат имена на полета и съответните им стойности.
- Поле – Това е единичен елемент в документ на MongoDB, който съдържа стойности като полета и двойки стойности. В релационните бази данни полетата са аналогични на колоните. Едно поле може да се нарича двойка име-стойност в документ с прости думи.
- _id – Всеки документ на MongoDB изисква това поле. Полето _id може да се приравни на първичния ключ в релационни бази данни. Той представлява уникален екземпляр или стойност в документ на MongoDB. Ако умишлено създадете документ в MongoDB без полето _id, той ще бъде генериран автоматично.
- Курсор – Това е указател, който указва зададения резултат от заявка. С помощта на курсора клиентите могат да извличат резултати.
- JSON – Това е нотация на JavaScript. Това е обикновен текст, четим от човека формат, използван за изразяване на структурирани данни. Хиляди езици за програмиране поддържат JSON.
- База данни – Подобно на RDBMS, където базата данни е контейнер за таблици, в MongoDB базата данни е контейнер за колекции. Всяка база данни съдържа свои собствени файлови набори във файловата система. Следователно сървърите на MongoDB могат да съхраняват повече от една база данни.
Издания на MongoDB
MongoDB е пуснат в различни издания, които са;
- Общностен сървър на MongoDB – Това е версия с отворен код на MongoDB, която е свободно достъпна за потребители на Linux, Windows и macOS.
- Сървър MongoDB Enterprise – Това е комерсиалната версия на MongoDB и може да бъде намерена като част от абонаментния пакет за MongoDB Enterprise Advanced.
- Atlas MongoDB – Обикновено се нарича MongoDB Cloud. MongoDB Atlas е пакет MongoDB при поискване, който работи изцяло и се управлява на платформите Microsoft Azure, Google Cloud и AWS. Това е версия на MongoDB Enterprise, хоствана в облака. Изданието Atlas съдържа всички функции на сървъра на MongoDB Enterprise и много други. Следователно това означава, че MongoDB Atlas е много по-напреднал от всички други издания на MongoDB.
Защо трябва да се използва MongoDB?
- Релационната база данни съдържа структурирани данни, но какво да кажем за неструктурираните данни? Потребителят все още може да добавя различни форми на произволни данни към MongoDB, без дори да декларира техните типове.
- Потребителят може да зареди масивни обемни данни с вграден метод за разделяне, който разделя данните и удобно ги разпределя между множество сървъри, благодарение на наличността и гъвкавостта на MongoDB в облачна среда.
- Динамичната схема на MongoDB позволява на потребителите да експериментират и да научават бързо нови неща. Всичко може да бъде включено в MongoDB бързо и евтино.
- Улеснява събирането на данни, базирани на местоположение, без да изисква сложни процедури.
- Милиони свързани устройства редовно генерират данни в интернет, което затруднява извличането и обработката им, но MongoDB може да го направи в рамките на една база данни.
- MongoDB може да съхранява широк спектър от данни от няколко източника за захранване на уебсайт, базиран на CMS. Тази информация включва туитове, коментари, мултимедийни съобщения и други видове информация.
- Това е отличен спътник за разработка на мобилни приложения.
- Може да предостави на потребителите анализ на клиенти в реално време, осигурявайки така необходимото персонализирано изживяване.
- Това е евтина база данни. Ако сте микро или малък бизнес, MongoDB е по-добра опция за съхранение, защото е лесна за администриране и настройка.
- Мощната търсачка в MongoDB ще уведоми потребителя откъде идват данните.
Плюсите и минусите на MongoDB
Предимства
- MongoDB е много по-добър от релационните бази данни, ако човек има значително количество данни и желае да ги разпредели между множество сървъри за балансиране на натоварването.
- Заявките за търсене в MongoDB са по-бързи, тъй като трябва да се интерпретират в един сървър за достъп.
- Той предлага гъвкавост, което предполага, че те трябва да използват MongoDB за съхраняване на неструктурирани данни, защото това е много по-лесен начин за това.
Недостатъци
- В MongoDB няма начин за комбиниране на таблици; по този начин човек ще трябва да го прави ръчно всеки път, когато трябва да използва тази функция, което води до грозно и отнемащо време кодиране.
- Използва много памет, тъй като трябва да съхранява ключа за всеки документ, тъй като е възможен конфликт на данни.
- Когато започнете да използвате една функция, тя заключва цялата база данни, което води до проблем с едновременността.
- Не прави това автоматично; следователно потребителят трябва ръчно да се увери, че операцията е транзакция.
Топ 10 на MongoDB ЧЗВ
Този раздел ще предостави отговори на някои от често задаваните въпроси за MongoDB. Можете да го проверите, тъй като повечето често срещани въпроси вече са получили отговор и може да имате късмет да намерите решение на проблема си тук.
1. Как мога да науча MongoDB?
Най-лесният и разпространен начин за изучаване на MongoDB е чрез онлайн курсовете за обучение, предоставени от MongoDB за разработчици. Курсовете са разработени и инструктирани от експертни инженери на MongoDB, които са добре запознати с MongoDB. Курсовете са безплатни и обхващат всеки аспект, който трябва да знаете, за да бъдете гуру на MongoDB. Повечето експерти са се научили да използват този метод.
Следователно няма да бъдете отлично изключение, ако следвате примера. Онлайн курсовете предоставят приложения от реалния свят, които помагат на потребителите да разберат повече по тази тема. Онлайн обучението е самостоятелно, което означава, че вие определяте колко време ще отнеме да ги научите. Освен това, курсовете са допълнителни упражнения, които помагат на начинаещите да научат и да упражняват повече в MongoDB. Посетете MongoDB University, за да получите много безплатни курсове и да научите MongoDB.
2. Свободен ли е за използване сървърът MongoDB?
да. MongoDB сървърът е безплатен за използване в зависимост от пакета, който решите да използвате. Например сървърът на общността е достъпен за всички потребители. Въпреки това, ако търсите повече функционалности, можете да използвате платена версия, като например изданието MongoDB Enterprise или Atlas.
3. Обяснете разликите между MongoDB и релационни бази данни?
Повечето релационни бази данни като MySQL, Oracle, SQL Server и Postgres са изградени върху архитектури, първоначално проектирани отдавна (повече от 40 години). Изискванията за кандидатстване през това време са различни в сравнение със съвременните изисквания за кандидатстване.
MongoDB е изграден върху архитектура на разпределени системи, за разлика от релационните бази данни, което позволява на потребителите бързо да мащабират своите бази данни в различни инстанции. за задълбочен анализ вижте разликите между MongoDB и MySQL (релационна база данни.) Основната цел на проектирането на MongoDB беше да се увеличи производителността. Гъвкавостта на схемата е това, което повечето потребители търсят и това е една от фантастичните функции, предлагани от MongoDB.
4. Как може да се получи търговски лиценз на MongoDB?
За да получите търговски лиценз на MongoDB, можете да го закупите от MongoDB Enterprise Advanced.
5. Обяснете как се съхраняват данните в MongoDB?
В MongoDB данните се съхраняват в BSON документи, които използват структурите от данни във формат JSON. Документите съдържат повече от едно поле и всяко поле има специфична стойност за тип данни, която включва двоични данни, масиви и поддокументи. Документите, които споделят подобни структури, се съхраняват и организират като колекции.
6. Къде може да се стартира MongoDB?
Можете да изтеглите, инсталирате и стартирате MongoDB отвсякъде. Докато завършите свободата на заключване на платформата, можете да стартирате MongoDB отвсякъде. Например, версията на MongoDB Atlas предоставя на потребителите напълно персонализирана и управлявана услуга на AWS, Google Cloud и Azure, която работи на принципа pay-as-you-go. MongoDB Ops Manager е един от най-добрите алтернативни начини за стартиране на MongoDB във вашата инфраструктура. Това прави екипите лесно и бързо да наблюдават, архивират, мащабират и разгръщат MongoDB.
7. Обяснете защо MongoDB е полезен?
MongoDB е изграден около три основни принципа на проектиране, които позволяват на потребителите колективно да изграждат по-бързи и висококачествени приложения. Трите основни принципа на проектиране са:
Проектиране на разпределени системи позволява на потребителите да разпределят данни там, където искат интелигентно.
Обединено изживяване – дава на потребителите свободата да тичат навсякъде. Този основен принцип на проектиране позволява елиминирането на блокирането на доставчици, като същевременно позволява на потребителите да проверят бъдещето на своите приложения.
Модел на данни за документи – Тази функция предоставя на потребителите най-добрия и лесен начин за работа с данни.
8. Кога трябва да се използва MongoDB?
MongoDB е гъвкава NoSQL база данни, която може да се използва в аналитични приложения и редица други OLTP приложения. Широка гама от приложения могат да бъдат адресирани с MongoDB Atlas и MongoDB Server.
9. Обяснете как MongoDB защитава данните на клиентите?
MongoDB съдържа обширни функции, които защитават, откриват, контролират и защитават клиентски данни. По-долу са дадени някои от тези ключови функции, които подпомагат защитата на данните на клиента:
Упълномощаване – RBAC (Role-based Access Control) позволява на потребителите да конфигурират подробните разрешения, които позволяват на потребителите или базирани на приложения привилегии, необходими за изпълнение на техните задачи.
Одит е от жизненоважно значение за спазването на нормативните изисквания, тъй като позволява на администраторите по сигурността да използват собствения регистър на одита на MongoDB, за да записват дадените промени и дейности в базата данни.
Удостоверяване – MongoDB предлага жизнеспособен, солиден механизъм за отговор на предизвикателство, който опростява контрола на достъпа до базата данни, базиран на SCRAM-256, заедно с въвеждането на интегрираната инфраструктура за корпоративна сигурност. Освен това някои от функциите, които получавате, са Windows Active Directory, x.509 сертификати, LDAP и Kerberos.
Шифроване навсякъде – Докато са в движение, данните на MongoDB могат да бъдат криптирани в мрежите, а докато са в покой, данните могат да бъдат криптирани на дискове или резервни копия. И накрая, данните на MongoDB могат да бъдат криптирани в базата данни, докато се използват.
Заключение
Тази статия обхваща изчерпателно всички аспекти, които човек трябва да знае относно MongoDB. С течение на времето потребителите търсят бърза производителност, която MongoDB предлага на своите потребители. За разлика от релационните бази данни, както вече беше споменато в статията, MongoDB дава на своите потребители място за бързо мащабиране на своите бази данни.