Što je MongoDB? Architekstura, značajke i primjer
⚡ Pametni sažetak
MongoDB je NoSQL baza podataka orijentirana na dokumente koja se koristi za pohranu velikih količina podataka, koristeći kolekcije i dokumente umjesto tablica i redaka. Ovaj resurs objašnjava MongoDB značajke, primjer dokumenta, ključne komponente arhitekture, razlozi za korištenje, modeliranje podataka i kako se razlikuje od relacijske baze podataka.

Što je MongoDB?
MongoDB je dokumentno orijentirana NoSQL baza podataka koja se koristi za pohranu velikih količina podataka. Umjesto korištenja tablica i redaka kao u tradicionalnim relacijskim bazama podataka, MongoDB koristi zbirke i dokumente. Dokumenti se sastoje od parova ključ-vrijednost koji su osnovna jedinica podataka u MongoDBKolekcije sadrže skupove dokumenata i funkcija, što je ekvivalent tablicama relacijskih baza podataka. MongoDB je baza podataka koja se pojavila sredinom 2000-ih.
MongoDB Značajke
- Svaka baza podataka sadrži kolekcije koje pak sadrže dokumente. Svaki dokument može biti drugačiji, s različitim brojem polja. Veličina i sadržaj svakog dokumenta mogu se međusobno razlikovati.
- Struktura dokumenta više je u skladu s načinom na koji programeri konstruiraju svoje klase i objekte u svojim odgovarajućim programskim jezicima. Programeri će često reći da njihove klase nisu redovi i stupci, već imaju jasnu strukturu s parovima ključ-vrijednost.
- Redovi (ili dokumenti kako se pozivaju u MongoDB) ne moraju imati unaprijed definiranu shemu. Umjesto toga, polja se mogu kreirati u hodu.
- Model podataka dostupan unutar MongoDB omogućuje vam predstavljanje hijerarhijskih odnosa, pohranjivanje nizova i lakše pohranjivanje drugih složenijih struktura.
- skalabilnost - MongoDB okruženja su vrlo skalabilna. Tvrtke diljem svijeta imaju definirane klastere, a neke od njih imaju više od 100 čvorova s oko milijunima dokumenata unutar baze podataka.
MongoDB Primjer
Primjer u nastavku pokazuje kako se dokument može modelirati MongoDB.
- Polje _id dodaje MongoDB za jedinstvenu identifikaciju dokumenta u zbirci.
- Ono što možete primijetiti jest da su podaci o narudžbi (ID narudžbe, proizvod i količina), koji se u RDBMS-u obično pohranjuju u zasebnoj tablici, zapravo pohranjeni kao ugrađeni dokument u samoj kolekciji u MongoDBOvo je jedna od ključnih razlika u načinu na koji se podaci modeliraju u MongoDB.
Ključne komponente MongoDB Architektura
Ispod je nekoliko uobičajenih izraza koji se koriste u MongoDB:
- _iskaznica – Ovo je polje obavezno u svakom MongoDB dokument. Polje _id predstavlja jedinstvenu vrijednost u MongoDB dokument. Polje _id je kao primarni ključ dokumenta. Ako izradite novi dokument bez polja _id, MongoDB automatski će kreirati polje. Na primjer, ako vidimo primjer gornje tablice kupaca, MongoDB svakom dokumentu u kolekciji dodat će se 24-znamenkasti jedinstveni identifikator.
| _Iskaznica | ID kupca | Ime kupca | ID narudžbe |
|---|---|---|---|
| 563479cc8a8a4246bd27d784 | 11 | Guru99 | 111 |
| 563479cc7a8a4246bd47d784 | 22 | Trevor Smith | 222 |
| 563479cc9a8a4246bd57d784 | 33 | Nicole | 333 |
- Kolekcija – Ovo je grupaping of MongoDB dokumenti. Kolekcija je ekvivalent tablice koja se stvara u bilo kojem drugom RDBMS-u kao što je Oracle ili MS SQL. Kolekcija postoji unutar jedne baze podataka. Kao što se vidi iz uvoda, kolekcije ne nameću nikakvu strukturu.
- Pokazivač – Ovo je pokazivač na skup rezultata upita. Klijenti mogu iterirati kroz pokazivač kako bi dohvatili rezultate.
- Baza podataka – Ovo je spremnik za kolekcije, kao u RDBMS-u gdje je spremnik za tablice. Svaka baza podataka dobiva vlastiti skup datoteka na datotečnom sustavu. A MongoDB poslužitelj može pohraniti više baza podataka.
- dokument – Zapis u a MongoDB Kolekcija se u osnovi naziva dokumentom. Dokument će se pak sastojati od naziva polja i vrijednosti.
- Polje – Par naziv-vrijednost u dokumentu. Dokument ima nula ili više polja. Polja su analogna stupcima u relacijskim bazama podataka. Sljedeći dijagram prikazuje primjer Polja s parovima ključ-vrijednost. Dakle, u primjeru ispod, CustomerID i 11 su jedan od parova ključ-vrijednost definiranih u dokumentu.
- JSON – Ovo je poznato kao JavaScript Notacija objekta. Ovo je čitljiv format običnog teksta za izražavanje strukturiranih podataka. JSON je trenutno podržan u mnogim programskim jezicima.
Samo kratka napomena o ključnoj razlici između polja _id i normalnog polja za prikupljanje. Polje _id koristi se za jedinstvenu identifikaciju dokumenata u zbirci i automatski ga dodaje MongoDB kada je zbirka stvorena.
Zašto koristiti MongoDB?
U nastavku donosimo nekoliko razloga zašto biste trebali početi koristiti MongoDB:
- Orijentiran na dokumente - Od tada MongoDB je NoSQL tipa baze podataka, umjesto podataka u formatu relacijskog tipa, pohranjuje podatke u dokumentima. Ovo cini MongoDB vrlo fleksibilan i prilagodljiv stvarnim poslovnim situacijama i zahtjevima.
- Ad hoc upiti - MongoDB podržava pretraživanje po polju, upitima raspona i pretragama regularnih izraza. Mogu se postavljati upiti za vraćanje određenih polja unutar dokumenata.
- Indeksiranje – Indeksi se mogu kreirati kako bi se poboljšala učinkovitost pretraživanja unutar MongoDB. Bilo koje polje u a MongoDB dokument se može indeksirati.
- odgovor - MongoDB može osigurati visoku dostupnost s replikacijskim skupovima. Replikacijski skup sastoji se od dva ili više MongoDB instance. Svaki član skupa replika može u bilo kojem trenutku djelovati u ulozi primarne ili sekundarne replike. Primarna replika je glavni poslužitelj koji komunicira s klijentom i obavlja sve operacije čitanja/pisanja. Sekundarne replike održavaju kopiju podataka primarnog poslužitelja pomoću ugrađene replikacije. Kada primarna replika zakaže, skup replika se automatski prebacuje na sekundarni, a zatim postaje primarni poslužitelj.
- Balansiranje opterećenja - MongoDB koristi koncept dijeljenja za vodoravno skaliranje dijeljenjem podataka na više MongoDB instanci. MongoDB može raditi preko više poslužitelja, uravnotežujući opterećenje i/ili duplicirajući podatke kako bi sustav održao u radu u slučaju kvara hardvera.
Modeliranje podataka u MongoDB
Kao što smo vidjeli iz uvodnog dijela, podaci u MongoDB ima fleksibilnu shemu. Za razliku od u SQL baze podataka, gdje morate imati deklariranu shemu tablice prije umetanja podataka, MongoDBZbirke korisnika ne provode strukturu dokumenta. Ova vrsta fleksibilnosti je ono što čini MongoDB tako moćan.
Prilikom modeliranja podataka u MongoDB, imajte na umu sljedeće:
- Koje su potrebe aplikacije – Pregledajte poslovne potrebe aplikacije i utvrdite koji su podaci i vrsta podataka potrebni za aplikaciju. Na temelju toga, osigurajte da je struktura dokumenta određena u skladu s tim.
- Koji su obrasci pretraživanja podataka – Ako predviđate veliku upotrebu upita, razmislite o korištenju indeksa u svom modelu podataka kako biste poboljšali učinkovitost upita.
- Događaju li se česti unos, ažuriranja i uklanjanja u bazi podataka? Ponovno razmotrite korištenje indeksa ili uključite sharding ako je potrebno u dizajn modeliranja podataka kako biste poboljšali učinkovitost vaše ukupne MongoDB okoliš.
Razlika između MongoDB & RDBMS
U nastavku su neke od ključnih razlika između pojmova MongoDB i RDBMS:
| RDBMS | MongoDB | Razlika |
|---|---|---|
| Stol | Kolekcija | In RDBMS, tablica sadrži stupce i retke koji se koriste za pohranu podataka, dok u MongoDB Ista ta struktura poznata je kao kolekcija. Kolekcija sadrži dokumente koji pak sadrže polja, koja su pak parovi ključ-vrijednost. |
| Red | dokument | U RDBMS-u, redak predstavlja jednu, implicitno strukturiranu podatkovnu stavku u tablici. U MongoDB, podaci su pohranjeni u dokumentima. |
| Kolona | Polje | U RDBMS-u, stupac označava skup vrijednosti podataka. Ovi u MongoDB poznata su kao polja. |
| Pridružuje | Ugrađeni dokumenti | U RDBMS-u, podaci su ponekad raspoređeni po raznim tablicama, a kako bi se prikazao potpuni prikaz svih podataka, ponekad se formira spajanje između tablica kako bi se dobili podaci. MongoDB, podaci se obično pohranjuju u jednoj kolekciji, ali su odvojeni pomoću ugrađenih dokumenata. Dakle, ne postoji koncept spajanja u MongoDB. |
Osim razlika u pojmovima, u nastavku je prikazano još nekoliko razlika:
- Relacijske baze podataka poznate su po provođenju integriteta podataka. Ovo nije izričit zahtjev u MongoDB.
- RDBMS zahtijeva da podaci budu normalizirani prvo kako bi se spriječili zapisi osiroćeni i duplikati. Normaliziranje podataka tada zahtijeva više tablica, što će rezultirati većim brojem spajanja tablica, te stoga zahtijevati više ključeva i indeksa. Kako baze podataka počnu rasti, performanse mogu postati problem. Opet, ovo nije eksplicitni zahtjev u MongoDB. MongoDB je fleksibilan i ne zahtijeva da se podaci prvo normaliziraju.


