Какво е MongoDB? Въведение, Archiструктура, характеристики и пример
Какво е MongoDB?
MongoDB е ориентирана към документи NoSQL база данни, използвана за съхранение на големи обеми данни. Вместо да използвате таблици и редове, както в традиционните релационни бази данни, MongoDB използва колекции и документи. Документите се състоят от двойки ключ-стойност, които са основната единица данни в MongoDB. Колекциите съдържат набори от документи и функции, които са еквивалентни на таблици на релационни бази данни. MongoDB е база данни, която се появи на бял свят около средата на 2000-те години.
MongoDB Характеристики:
- Всяка база данни съдържа колекции, които от своя страна съдържат документи. Всеки документ може да бъде различен с различен брой полета. Размерът и съдържанието на всеки документ могат да се различават един от друг.
- Структурата на документа е в по-голямо съответствие с начина, по който разработчиците изграждат своите класове и обекти на съответните им езици за програмиране. Разработчиците често казват, че техните класове не са редове и колони, а имат ясна структура с двойки ключ-стойност.
- Редовете (или документите, както са извикани в MongoDB) не е необходимо да има предварително дефинирана схема. Вместо това полетата могат да се създават в движение.
- Моделът на данните, наличен в рамките MongoDB ви позволява по-лесно да представяте йерархични връзки, да съхранявате масиви и други по-сложни структури.
- Мащабируемост – The MongoDB средите са много мащабируеми. Компаниите по света са дефинирали клъстери, като някои от тях работят с 100+ възли с около милиони документи в базата данни
MongoDB Пример
Примерът по-долу показва как може да се моделира документ MongoDB.
- Полето _id се добавя от MongoDB за еднозначно идентифициране на документа в колекцията.
- Това, което можете да отбележите, е, че данните за поръчката (ID на поръчката, продукт и количество), които в RDBMS обикновено се съхраняват в отделна таблица, докато в MongoDB всъщност се съхранява като вграден документ в самата колекция. Това е една от ключовите разлики в начина, по който се моделират данните MongoDB.
Ключови компоненти на MongoDB Archiтекстура
По-долу са някои от често срещаните термини, използвани в MongoDB
- _документ за самоличност – Това е поле, задължително във всеки MongoDB документ. Полето _id представлява уникална стойност в MongoDB документ. Полето _id е като първичния ключ на документа. Ако създадете нов документ без поле _id, MongoDB автоматично ще създаде полето. Така например, ако видим примера на горната клиентска таблица, Mongo DB ще добави 24-цифрен уникален идентификатор към всеки документ в колекцията.
_Id | CustomerID | Потребителско име | OrderID |
---|---|---|---|
563479cc8a8a4246bd27d784 | 11 | Guru99 | 111 |
563479cc7a8a4246bd47d784 | 22 | Тревър Смит | 222 |
563479cc9a8a4246bd57d784 | 33 | Никол | 333 |
- колекция – Това е група от MongoDB документи. Колекцията е еквивалентът на таблица, която е създадена във всяка друга RDMS, като напр Oracle или MS SQL. Колекция съществува в рамките на една база данни. Както се вижда от въведението колекциите не налагат никаква структура.
- курсор – Това е указател към набора от резултати на заявка. Клиентите могат да преминават през курсора, за да извлекат резултати.
- База данни – Това е контейнер за колекции като в RDMS, където е контейнер за таблици. Всяка база данни получава свой собствен набор от файлове във файловата система. А MongoDB сървърът може да съхранява множество бази данни.
- Документ – Запис в a MongoDB колекцията се нарича основно документ. Документът от своя страна ще се състои от име на поле и стойности.
- Област – Двойка име-стойност в документ. Документът има нула или повече полета. Полетата са аналогични на колоните в релационните бази данни. Следващата диаграма показва пример за двойки полета с ключови стойности. Така че в примера по-долу CustomerID и 11 е една от двойките ключ стойност, дефинирани в документа.
- JSON – Това е известно като JavaСценарий Обектна нотация. Това е четим от хора формат на обикновен текст за изразяване на структурирани данни. Понастоящем JSON се поддържа в много езици за програмиране.
Само кратка бележка за ключовата разлика между полето _id и полето за нормално събиране. Полето _id се използва за уникално идентифициране на документите в колекция и се добавя автоматично от MongoDB когато колекцията е създадена.
Защо да използвате MongoDB?
По-долу са някои от причините, поради които човек трябва да започне да използва MongoDB
- Ориентиран към документи – Тъй като MongoDB е NoSQL тип база данни, вместо да има данни във формат от релационен тип, тя съхранява данните в документи. Това прави MongoDB много гъвкав и адаптивен към ситуацията и изискванията в реалния бизнес свят.
- Ad hoc заявки – MongoDB поддържа търсене по поле, заявки за диапазон и търсене с регулярен израз. Могат да се правят заявки за връщане на конкретни полета в документите.
- Индексиране – Могат да се създават индекси, за да се подобри ефективността на търсенията в рамките MongoDB. Всяко поле в a MongoDB документът може да бъде индексиран.
- репликация – MongoDB може да осигури висока наличност с комплекти реплики. Набор от реплики се състои от два или повече екземпляра на mongo DB. Всеки член на набор от реплики може да действа в ролята на първична или вторична реплика по всяко време. Основната реплика е основният сървър, който взаимодейства с клиента и изпълнява всички операции за четене/запис. Вторичните реплики поддържат копие на данните на първичната с помощта на вградена репликация. Когато основната реплика се повреди, наборът от реплики автоматично превключва към вторичния и след това той става основен сървър.
- Балансиране на натоварването – MongoDB използва концепцията за шардинг за хоризонтално мащабиране чрез разделяне на данни на множество MongoDB инстанции. MongoDB може да работи върху множество сървъри, като балансира натоварването и/или дублира данни, за да поддържа системата работеща в случай на хардуерен срив.
Моделиране на данни в MongoDB
Както видяхме от раздела Въведение, данните в MongoDB има гъвкава схема. За разлика от в SQL бази данни, където трябва да имате декларирана схема на таблица, преди да вмъкнете данни, MongoDBКолекциите на не налагат структура на документа. Този вид гъвкавост е това, което прави MongoDB толкова мощен.
Когато моделирате данни в Mongo, имайте предвид следните неща
- Какви са нуждите на приложението – Разгледайте бизнес нуждите на приложението и вижте какви данни и вида на данните са необходими за приложението. Въз основа на това се уверете, че структурата на документа е решена по съответния начин.
- Какво представляват моделите за извличане на данни – Ако предвиждате тежко използване на заявки, тогава помислете за използването на индекси във вашия модел на данни, за да подобрите ефективността на заявките.
- Случват ли се чести вмъквания, актуализации и премахвания в базата данни? Преразгледайте използването на индекси или включете шардинг, ако е необходимо във вашия дизайн за моделиране на данни, за да подобрите ефективността на цялостната си MongoDB среда.
Разлика между MongoDB & RDBMS
По-долу са някои от основните разлики между термините MongoDB и RDBMS
RDBMS | MongoDB | Разлика |
---|---|---|
Маса | колекция | In RDBMS, таблицата съдържа колоните и редовете, които се използват за съхраняване на данните, докато в MongoDB, същата тази структура е известна като колекция. Колекцията съдържа документи, които от своя страна съдържат полета, които от своя страна са двойки ключ-стойност. |
Ред | Документ | В RDBMS, редът представлява единичен, имплицитно структуриран елемент от данни в таблица. в MongoDB, данните се съхраняват в документи. |
Колона | Област | В RDBMS колоната обозначава набор от стойности на данни. Тези в MongoDB са известни като Fields. |
Се присъедини към | Вградени документи | В RDBMS данните понякога се разпространяват в различни таблици и за да се покаже пълен изглед на всички данни, понякога се формира съединение между таблици, за да се получат данните. в MongoDB, данните обикновено се съхраняват в една колекция, но разделени чрез използване на вградени документи. Така че няма концепция за присъединяване MongoDB. |
Освен разликите в термините, по-долу са показани няколко други разлики
- Релационните бази данни са известни с налагането на целостта на данните. Това не е изрично изискване в MongoDB.
- RDBMS изисква данните да бъдат нормализирано първо, за да може да предотврати осиротели записи и дубликати. След това нормализирането на данни има изискване за повече таблици, което след това ще доведе до повече обединения на таблици, като по този начин изисква повече ключове и индекси. Тъй като базите данни започват да растат, производителността може да започне да се превръща в проблем. Отново това не е изрично изискване в MongoDB. MongoDB е гъвкав и не се нуждае от първо нормализиране на данните.