Co to jest MongoDB? Wstęp, Architecture, funkcje i przykład
Co to jest MongoDB?
MongoDB to zorientowana na dokumenty baza danych NoSQL używana do przechowywania dużych ilości danych. Zamiast używać tabel i wierszy jak w tradycyjnych relacyjnych bazach danych, MongoDB korzysta ze zbiorów i dokumentów. Dokumenty składają się z par klucz-wartość, które stanowią podstawową jednostkę danych MongoDB. Kolekcje zawierają zbiory dokumentów i funkcji, które są odpowiednikiem tabel relacyjnej bazy danych. MongoDB to baza danych, która wyszła na jaw około połowy 2000 roku.
MongoDB Zakładka Charakterystyka
- Każda baza danych zawiera zbiory, które z kolei zawierają dokumenty. Każdy dokument może się różnić i zawierać różną liczbę pól. Rozmiar i zawartość każdego dokumentu mogą się od siebie różnić.
- Struktura dokumentu jest bardziej zgodna ze sposobem, w jaki programiści konstruują swoje klasy i obiekty w odpowiednich językach programowania. Programiści często mówią, że ich klasy nie są wierszami i kolumnami, ale mają przejrzystą strukturę z parami klucz-wartość.
- Wiersze (lub dokumenty, jak nazywa się w MongoDB) nie musi mieć wcześniej zdefiniowanego schematu. Zamiast tego pola można tworzyć na bieżąco.
- Model danych dostępny w ramach MongoDB umożliwia łatwiejsze reprezentowanie relacji hierarchicznych, przechowywanie tablic i innych bardziej złożonych struktur.
- Skalowalność – The MongoDB środowiska są bardzo skalowalne. Firmy na całym świecie zdefiniowały klastry, z których niektóre obsługują ponad 100 węzłów z około milionami dokumentów w bazie danych
MongoDB Przykład
Poniższy przykład pokazuje, w jaki sposób można modelować dokument MongoDB.
- Pole _id jest dodawane przez MongoDB umożliwiający jednoznaczną identyfikację dokumentu w zbiorze.
- Można zauważyć, że dane zamówienia (ID zamówienia, produkt i ilość), które w RDBMS będą zwykle przechowywane w osobnej tabeli, podczas gdy w MongoDB w rzeczywistości jest przechowywany jako dokument osadzony w samej kolekcji. Jest to jedna z kluczowych różnic w sposobie modelowania danych MongoDB.
Kluczowe komponenty MongoDB Architektura
Poniżej znajduje się kilka powszechnie używanych terminów MongoDB
- _ID – Jest to pole wymagane w każdym MongoDB dokument. Pole _id reprezentuje unikalną wartość w pliku MongoDB dokument. Pole _id jest jak klucz podstawowy dokumentu. Jeśli utworzysz nowy dokument bez pola _id, MongoDB automatycznie utworzy pole. I tak na przykład, jeśli zobaczymy przykład powyższej tabeli klientów, Mongo DB doda 24-cyfrowy unikalny identyfikator do każdego dokumentu w kolekcji.
_ID | Identyfikator klienta | Nazwa klienta | IDZamówienia |
---|---|---|---|
563479cc8a8a4246bd27d784 | 11 | Guru99 | 111 |
563479cc7a8a4246bd47d784 | 22 | Trevora Smitha | 222 |
563479cc9a8a4246bd57d784 | 33 | Nicole | 333 |
- Collection – To jest grupa MongoDB dokumenty. Kolekcja jest odpowiednikiem tabeli tworzonej w dowolnym innym systemie RDMS, np Oracle lub MSSQL. Kolekcja istnieje w jednej bazie danych. Jak widać ze wstępu, kolekcje nie narzucają żadnej struktury.
- Kursor – Jest to wskaźnik do zestawu wyników zapytania. Klienci mogą iterować po kursorze, aby pobrać wyniki.
- Baza danych – Jest to kontener na kolekcje, tak jak w RDMS, gdzie jest to kontener na tabele. Każda baza danych otrzymuje swój własny zestaw plików w systemie plików. A MongoDB serwer może przechowywać wiele baz danych.
- dokument – Zapis w MongoDB zbiór nazywa się po prostu dokumentem. Dokument z kolei będzie się składał z nazwy pola i wartości.
- Pole – Para nazwa-wartość w dokumencie. Dokument ma zero lub więcej pól. Pola są analogiczne do kolumn w relacyjnych bazach danych. Poniższy diagram pokazuje przykład pól z parami klucz-wartość. Tak więc w poniższym przykładzie CustomerID i 11 to jedna z par klucz-wartość zdefiniowanych w dokumencie.
- JSON – Jest to tzw JAVASCRIPT Notacja obiektu. Jest to czytelny dla człowieka, zwykły format tekstowy do wyrażania ustrukturyzowanych danych. JSON jest obecnie obsługiwany w wielu językach programowania.
Krótka uwaga na temat kluczowej różnicy między polem _id a normalnym polem kolekcji. Pole _id służy do jednoznacznej identyfikacji dokumentów w kolekcji i jest automatycznie dodawane przez MongoDB kiedy kolekcja jest tworzona.
Dlaczego warto korzystać MongoDB?
Poniżej znajduje się kilka powodów, dla których warto zacząć używać MongoDB
- Zorientowany na dokumenty – Od MongoDB jest NoSQL typu baza danych, zamiast przechowywać dane w formacie typu relacyjnego, przechowuje dane w dokumentach. To sprawia MongoDB bardzo elastyczny i dający się dostosować do rzeczywistej sytuacji i wymagań świata biznesu.
- Zapytania ad hoc – MongoDB obsługuje wyszukiwanie według pola, zapytania zakresowe i wyszukiwania wyrażeń regularnych. Zapytania mogą być wykonywane w celu zwrócenia określonych pól w dokumentach.
- Indeksowanie — można tworzyć indeksy w celu poprawy wydajności wyszukiwań MongoDB. Dowolne pole w a MongoDB dokument może być indeksowany.
- Replikacja – MongoDB może zapewnić wysoką dostępność dzięki zestawom replik. Zestaw replik składa się z dwóch lub więcej instancji mongo DB. Każdy członek zestawu replik może w dowolnym momencie pełnić rolę repliki podstawowej lub pomocniczej. Replika podstawowa to serwer główny, który współpracuje z klientem i wykonuje wszystkie operacje odczytu/zapisu. Repliki pomocnicze przechowują kopię danych z serwera podstawowego za pomocą wbudowanej replikacji. Gdy replika podstawowa ulegnie awarii, zestaw replik automatycznie przełącza się na serwer pomocniczy, a następnie staje się serwerem podstawowym.
- Równoważenie obciążenia - MongoDB wykorzystuje koncepcję fragmentowania w celu skalowania w poziomie poprzez dzielenie danych na wiele części MongoDB instancje. MongoDB może działać na wielu serwerach, równoważąc obciążenie i/lub duplikując dane, aby utrzymać działanie systemu w przypadku awarii sprzętu.
Modelowanie danych w MongoDB
Jak widzieliśmy w sekcji Wprowadzenie, dane w MongoDB ma elastyczny schemat. Inaczej niż w SQL bazy danych, gdzie przed wstawieniem danych należy zadeklarować schemat tabeli, MongoDBkolekcje nie wymuszają struktury dokumentu. Ten rodzaj elastyczności jest tym, co sprawia MongoDB tak potężny.
Podczas modelowania danych w Mongo należy pamiętać o następujących kwestiach
- Jakie są potrzeby aplikacji – Przyjrzyj się potrzebom biznesowym aplikacji i zobacz, jakie dane i rodzaj danych są potrzebne aplikacji. Na tej podstawie należy zadbać o odpowiednią strukturę dokumentu.
- Jakie są wzorce wyszukiwania danych – jeśli przewidujesz duże wykorzystanie zapytań, rozważ użycie indeksów w swoim modelu danych w celu poprawy wydajności zapytań.
- Czy w bazie danych często pojawiają się wpisy, aktualizacje i usunięcia? Rozważ ponownie użycie indeksów lub uwzględnij fragmentację, jeśli jest to wymagane w projekcie modelowania danych, aby poprawić ogólną wydajność MongoDB środowisko.
Różnica pomiędzy MongoDB & RDBMS
Poniżej znajdują się niektóre z kluczowych różnic między terminami MongoDB i RDBMS
RDBMS | MongoDB | Różnica |
---|---|---|
Stół | Collection | In RDBMS, tabela zawiera kolumny i wiersze używane do przechowywania danych, natomiast w MongoDB, ta sama struktura nazywana jest kolekcją. Kolekcja zawiera dokumenty, które z kolei zawierają pola, które z kolei są parami klucz-wartość. |
Rząd | dokument | W RDBMS wiersz reprezentuje pojedynczy element danych o niejawnej strukturze w tabeli. W MongoDB, dane są przechowywane w dokumentach. |
Kolumna | Pole | W RDBMS kolumna oznacza zbiór wartości danych. Te w MongoDB znane są jako Pola. |
Łączy | Osadzone dokumenty | W systemie RDBMS dane są czasami rozproszone w różnych tabelach i w celu przedstawienia pełnego widoku wszystkich danych czasami tworzone jest połączenie między tabelami w celu uzyskania danych. W MongoDB, dane są zwykle przechowywane w jednej kolekcji, ale oddzielone za pomocą dokumentów osadzonych. Nie ma więc koncepcji przyłączania się MongoDB. |
Oprócz różnic w terminach, poniżej pokazano kilka innych różnic
- Relacyjne bazy danych znane są z egzekwowania integralności danych. Nie jest to wyraźny wymóg w MongoDB.
- RDBMS wymaga, aby dane były znormalizowany po pierwsze, aby zapobiec osieroconym rekordom i duplikatom. Normalizowanie danych wiąże się z koniecznością użycia większej liczby tabel, co spowoduje więcej połączeń tabel, co wymaga większej liczby kluczy i indeksów. W miarę rozrastania się baz danych, wydajność może stać się problemem. Ponownie nie jest to wyraźny wymóg w MongoDB. MongoDB jest elastyczny i nie wymaga wcześniejszej normalizacji danych.