Što je MongoDB? Uvod, arhitektura, značajke & Primjer

Sadržaj:

Anonim

Što je MongoDB?

MongoDB je NoSQL baza podataka orijentirana na dokumente koja se koristi za veliku količinu podataka. Umjesto da koristi tablice i retke kao u tradicionalnim relacijskim bazama podataka, MongoDB koristi zbirke i dokumente. Dokumenti se sastoje od parova ključ / vrijednost koji su osnovna jedinica podataka u MongoDB-u. Zbirke sadrže skupove dokumenata i funkcije što je ekvivalent relacijskim tablicama baze podataka. MongoDB je baza podataka koja je izašla na vidjelo oko sredine 2000-ih.

U ovom vodiču naučit ćete-

  • Značajke MongoDB-a
  • Primjer MongoDB-a
  • Ključne komponente MongoDB arhitekture
  • Zašto koristiti MongoDB
  • Modeliranje podataka u MongoDB-u
  • Razlika između MongoDB i RDBMS

Značajke MongoDB-a

    1. Svaka baza podataka sadrži zbirke koje pak sadrže dokumente. Svaki dokument može biti različit s različitim brojem polja. Veličina i sadržaj svakog dokumenta mogu se međusobno razlikovati.
    2. Struktura dokumenta više je u skladu s načinom na koji programeri konstruiraju svoje klase i objekte u svojim programskim jezicima. Programeri će često reći da njihove klase nisu retci i stupci, već imaju jasnu strukturu s parovima ključ / vrijednost.
    3. Redci (ili dokumenti kako se nazivaju u MongoDB-u) ne trebaju prethodno imati definiranu shemu. Umjesto toga, polja se mogu stvoriti u hodu.
    4. Model podataka dostupan u MongoDB-u omogućuje vam jednostavnije predstavljanje hijerarhijskih odnosa, spremanje nizova i drugih složenijih struktura.
  1. Skalabilnost - MongoDB okruženja vrlo su skalabilna. Tvrtke diljem svijeta definirale su klastere, od kojih neki imaju više od 100 čvorova s ​​oko milijuna dokumenata u bazi podataka

Primjer MongoDB-a

Sljedeći primjer pokazuje kako se dokument može modelirati u MongoDB-u.

  1. MongoDB dodaje polje _id za jedinstvenu identifikaciju dokumenta u zbirci.
  2. Ono što možete primijetiti jest da će se podaci o narudžbi (ID narudžbe, proizvod i količina) koji se u RDBMS-u obično čuvaju u zasebnoj tablici, dok se u MongoDB-u zapravo pohranjuju kao ugrađeni dokument u samoj zbirci. To je jedna od ključnih razlika u načinu modeliranja podataka u MongoDB-u.

Ključne komponente MongoDB arhitekture

Ispod je nekoliko uobičajenih izraza koji se koriste u MongoDB-u

  1. _id - Ovo je polje obavezno u svakom MongoDB dokumentu. Polje _id predstavlja jedinstvenu vrijednost u MongoDB dokumentu. Polje _id je poput primarnog ključa dokumenta. Ako kreirate novi dokument bez _id polja, MongoDB će automatski stvoriti polje. Tako, na primjer, ako vidimo primjer gornje tablice kupaca, Mongo DB će dodati 24-znamenkasti jedinstveni identifikator svakom dokumentu u zbirci.
_Iskaznica CustomerID Ime kupca ID narudžbe
563479cc8a8a4246bd27d784 11 Guru99 111
563479cc7a8a4246bd47d784 22 Trevor Smith 222
563479cc9a8a4246bd57d784 33 Nicole 333
  1. Zbirka - ovo je grupiranje MongoDB dokumenata. Zbirka je ekvivalent tablice koja se kreira u bilo kojem drugom RDMS-u, kao što je Oracle ili MS SQL. Zbirka postoji unutar jedne baze podataka. Kao što se vidi iz uvoda, zbirke ne provode bilo kakvu strukturu.
  2. Pokazivač - Ovo je pokazivač na skup rezultata rezultata upita. Klijenti mogu prelaziti kroz kursor za dohvaćanje rezultata.
  3. Baza podataka - Ovo je spremnik za zbirke kao u RDMS-u u kojem je spremnik za tablice. Svaka baza podataka dobiva svoj vlastiti skup datoteka na datotečnom sustavu. MongoDB poslužitelj može pohraniti više baza podataka.
  4. Dokument - zapis u zbirci MongoDB u osnovi se naziva dokumentom. Dokument će se pak sastojati od imena polja i vrijednosti.
  5. Polje - par imena i vrijednosti 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 vrijednosti ključa. Dakle, u primjeru ispod CustomerID i 11 jedan je od parova vrijednosti ključeva definiranih u dokumentu.

  1. JSON - Ovo je poznato kao JavaScript objektna notacija. Ovo je čitljiv, običan tekst formata za izražavanje strukturiranih podataka. JSON je trenutno podržan na mnogim programskim jezicima.

Samo kratka napomena o ključnoj razlici između polja _id i uobičajenog polja sakupljanja. Polje _id koristi se za jedinstvenu identifikaciju dokumenata u zbirci i automatski ga dodaje MongoDB kada se zbirka kreira.

Zašto koristiti MongoDB?

Ispod je nekoliko razloga zašto bi netko trebao početi koristiti MongoDB

  1. Orijentirana na dokumente - Budući da je MongoDB baza podataka tipa NoSQL, umjesto da ima podatke u formatu relacijskog tipa, podatke pohranjuje u dokumente. To MongoDB čini vrlo fleksibilnim i prilagodljivim stvarnoj situaciji i zahtjevima poslovnog svijeta.
  2. Ad hoc upiti - MongoDB podržava pretraživanje po poljima, upite raspona i pretraživanja regularnih izraza. Mogu se postaviti upiti za vraćanje određenih polja u dokumentima.
  3. Indeksiranje - Indeksi se mogu stvoriti za poboljšanje izvedbe pretraživanja u MongoDB-u. Bilo koje polje u MongoDB dokumentu može se indeksirati.
  4. Replikacija - MongoDB može pružiti visoku dostupnost sa skupovima replika. Skup replika sastoji se od dvije ili više instanci mongo DB-a. Svaki član skupa replika može u bilo kojem trenutku glumiti ulogu primarne ili sekundarne replike. Primarna replika je glavni poslužitelj koji komunicira s klijentom i izvodi sve operacije čitanja / pisanja. Sekundarne replike zadržavaju kopiju podataka primarnog pomoću ugrađene replikacije. Kad primarna replika zakaže, skup replika automatski se prebacuje na sekundarni i tada postaje primarni poslužitelj.
  5. Balansiranje opterećenja - MongoDB koristi koncept oštrenja za horizontalno skaliranje dijeljenjem podataka na više instanci MongoDB-a. MongoDB može pokretati više poslužitelja, uravnotežujući opterećenje i / ili duplicirajući podatke kako bi sustav održavao i radio u slučaju kvara hardvera.

Modeliranje podataka u MongoDB-u

Kao što smo vidjeli iz odjeljka Uvod, podaci u MongoDB-u imaju fleksibilnu shemu. Za razliku od SQL baza podataka, gdje prije umetanja podataka morate imati deklariranu shemu tablice, zbirke MongoDB-a ne provode strukturu dokumenata. Ova vrsta fleksibilnosti čini MongoDB tako moćnim.

Kada modelirate podatke u Mongu, imajte na umu sljedeće stvari

  1. Koje su potrebe aplikacije - Pogledajte poslovne potrebe aplikacije i pogledajte koji su podaci i vrsta podataka potrebni za aplikaciju. Na temelju toga osigurajte da se o strukturi dokumenta odlučuje na odgovarajući način.
  2. Koji su obrasci dohvaćanja podataka - Ako predviđate intenzivnu upotrebu upita, razmislite o upotrebi indeksa u vašem podatkovnom modelu kako biste poboljšali učinkovitost upita.
  3. Događaju li se česta umetanja, ažuriranja i uklanjanja u bazi podataka? Preispitajte upotrebu indeksa ili uključite oštrinu ako je potrebno u vaš model dizajna podataka kako biste poboljšali učinkovitost vašeg cjelokupnog MongoDB okruženja.

Razlika između MongoDB i RDBMS

Ispod su neke od ključnih pojam razlika između MongoDB i RDBMS

RDBMS MongoDB Razlika
Stol Kolekcija U RDBMS-u tablica sadrži stupce i retke koji se koriste za pohranu podataka, dok je u MongoDB-u ista ta struktura poznata kao zbirka. Zbirka sadrži dokumente koji pak sadrže polja, koja su pak parovi ključ / vrijednost.
Red Dokument U RDBMS-u red predstavlja jednu, implicitno strukturiranu stavku podataka u tablici. U MongoDB-u podaci se pohranjuju u dokumente.
Stupac Polje U RDBMS-u stupac označava skup vrijednosti podataka. Oni su u MongoDB-u poznati kao Polja.
Pridružuje se Ugrađeni dokumenti U RDBMS-u se podaci ponekad šire po raznim tablicama, a da bi se prikazao cjelovit prikaz svih podataka, ponekad se formira spoj preko tablica kako bi se dobili podaci. U MongoDB-u se podaci obično pohranjuju u jednoj zbirci, ali odvajaju se pomoću ugrađenih dokumenata. Dakle, u MongoDB-u ne postoji koncept pridruživanja.

Osim razlika između pojmova, u nastavku je prikazano još nekoliko razlika

  1. Relacijske baze podataka poznate su po tome što provode cjelovitost podataka. To nije izričit zahtjev u MongoDB-u.
  2. RDBMS zahtijeva da se podaci prvo normaliziraju tako da mogu spriječiti ostatke zapisa i duplikata. Normaliziranje podataka tada ima zahtjev za više tablica, što će rezultirati s više pridruživanja tablici, što zahtijeva više ključeva i indeksa.

    Kako baze podataka počinju rasti, izvedba može početi postajati problem. Opet, to nije izričit zahtjev u MongoDB-u. MongoDB je fleksibilan i ne treba podatke najprije normalizirati.