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 z kolekcji i dokumentów. Dokumenty składają się z par klucz-wartość, które są podstawową jednostką danych w MongoDB. Kolekcje zawierają zestawy dokumentów i funkcji, które są odpowiednikiem tabel relacyjnych baz danych. MongoDB to baza danych, która wyszła na jaw w połowie 2000 roku.
W tym samouczku nauczysz się:
- Funkcje MongoDB
- Przykład MongoDB
- Kluczowe komponenty architektury MongoDB
- Dlaczego warto korzystać z MongoDB
- Modelowanie danych w MongoDB
- Różnica między MongoDB i RDBMS
Funkcje MongoDB
- Każda baza danych zawiera zbiory, które z kolei zawierają dokumenty. Każdy dokument może być inny 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 ani kolumnami, ale mają przejrzystą strukturę z parami klucz-wartość.
- Wiersze (lub dokumenty, jak nazywa się w MongoDB) nie muszą mieć wcześniej zdefiniowanego schematu. Zamiast tego pola można tworzyć w locie.
- Model danych dostępny w MongoDB umożliwia łatwiejsze reprezentowanie relacji hierarchicznych, przechowywanie tablic i innych bardziej złożonych struktur.
- Skalowalność - środowiska MongoDB są bardzo skalowalne. Firmy na całym świecie zdefiniowały klastry, a niektóre z nich obsługują ponad 100 węzłów z około milionami dokumentów w bazie danych
Przykład MongoDB
Poniższy przykład pokazuje, jak dokument można modelować w MongoDB.
- MongoDB dodaje pole _id, aby jednoznacznie identyfikować dokument w kolekcji.
- Można zauważyć, że dane zamówienia (identyfikator zamówienia, produkt i ilość), które w RDBMS są zwykle przechowywane w oddzielnej tabeli, podczas gdy w MongoDB są faktycznie przechowywane jako osadzony dokument w samej kolekcji. Jest to jedna z kluczowych różnic w sposobie modelowania danych w MongoDB.
Kluczowe komponenty architektury MongoDB
Poniżej znajduje się kilka typowych terminów używanych w MongoDB
- _id - to jest pole wymagane w każdym dokumencie MongoDB. Pole _id reprezentuje unikatową wartość w dokumencie MongoDB. Pole _id jest jak klucz podstawowy dokumentu. Jeśli utworzysz nowy dokument bez pola _id, MongoDB automatycznie utworzy pole. 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 | CustomerName | OrderID |
---|---|---|---|
563479cc8a8a4246bd27d784 | 11 | Guru99 | 111 |
563479cc7a8a4246bd47d784 | 22 | Trevor Smith | 222 |
563479cc9a8a4246bd57d784 | 33 | Nicole | 333 |
- Kolekcja - to jest grupa dokumentów MongoDB. Kolekcja jest odpowiednikiem tabeli utworzonej w dowolnym innym RDMS, takim jak Oracle lub MS SQL. Zbiór istnieje w jednej bazie danych. Jak widać na wstępie, zbiory nie narzucają żadnej struktury.
- Kursor - jest to wskaźnik do zestawu wyników zapytania. Klienci mogą iterować kursor, aby pobrać wyniki.
- Baza danych - jest to kontener dla kolekcji, taki jak w RDMS, w którym jest to kontener dla tabel. Każda baza danych otrzymuje własny zestaw plików w systemie plików. Serwer MongoDB może przechowywać wiele baz danych.
- Dokument - rekord w kolekcji MongoDB jest zasadniczo nazywany dokumentem. Dokument z kolei będzie zawierał nazwę pola i wartości.
- Pole - para nazwa-wartość w dokumencie. Dokument zawiera zero lub więcej pól. Pola są analogiczne do kolumn w relacyjnych bazach danych.
Poniższy diagram przedstawia przykład pól z parami klucz-wartość. W poniższym przykładzie IDKlienta i 11 to jedna z par klucz-wartość zdefiniowanych w dokumencie.
- JSON - jest to znane jako notacja obiektów JavaScript. Jest to czytelny dla człowieka, zwykły format tekstowy służący 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 zwykłym polem kolekcji. Pole _id służy do jednoznacznej identyfikacji dokumentów w kolekcji i jest automatycznie dodawane przez MongoDB podczas tworzenia kolekcji.
Dlaczego warto korzystać z MongoDB?
Poniżej przedstawiamy kilka powodów, dla których warto zacząć korzystać z MongoDB
- Zorientowany na dokumenty - ponieważ MongoDB jest bazą danych typu NoSQL, zamiast przechowywać dane w formacie typu relacyjnego, przechowuje dane w dokumentach. To sprawia, że MongoDB jest bardzo elastyczny i można go dostosować do rzeczywistej sytuacji i wymagań świata biznesu.
- Zapytania ad hoc - MongoDB obsługuje wyszukiwanie według pól, zapytań o zakres i wyszukiwania według wyrażeń regularnych. Można wysyłać zapytania w celu zwrócenia określonych pól w dokumentach.
- Indeksowanie - można tworzyć indeksy, aby poprawić wydajność wyszukiwania w MongoDB. Indeksowane może być dowolne pole w dokumencie MongoDB.
- Replikacja - MongoDB może zapewnić wysoką dostępność dzięki zestawom replik. Zestaw replik składa się z dwóch lub więcej instancji bazy danych mongo. Każdy członek zestawu replik może w dowolnym momencie pełnić rolę repliki podstawowej lub pomocniczej. Replika podstawowa to główny serwer, który współdziała z klientem i wykonuje wszystkie operacje odczytu / zapisu. Repliki pomocnicze zachowują kopię danych podstawowego za pomocą wbudowanej replikacji. W przypadku awarii repliki podstawowej zestaw replik automatycznie przełącza się na serwer pomocniczy, a następnie staje się serwerem podstawowym.
- Równoważenie obciążenia - MongoDB wykorzystuje koncepcję dzielenia na fragmenty do skalowania w poziomie, dzieląc dane na wiele wystąpień bazy danych MongoDB. MongoDB może działać na wielu serwerach, równoważąc obciążenie i / lub duplikując dane, aby system działał nieprzerwanie w przypadku awarii sprzętu.
Modelowanie danych w MongoDB
Jak widzieliśmy w sekcji Wprowadzenie, dane w MongoDB mają elastyczny schemat. W przeciwieństwie do baz danych SQL, w których przed wstawieniem danych należy zadeklarować schemat tabeli, kolekcje MongoDB nie wymuszają struktury dokumentu. Ten rodzaj elastyczności sprawia, że MongoDB jest tak potężny.
Podczas modelowania danych w Mongo pamiętaj o następujących kwestiach
- Jakie są potrzeby aplikacji - Przyjrzyj się potrzebom biznesowym aplikacji i zobacz, jakie dane i jakie są potrzebne dla aplikacji. Na tej podstawie upewnij się, że struktura dokumentu została odpowiednio określona.
- Co to są wzorce pobierania danych - jeśli przewidujesz intensywne użycie zapytań, rozważ użycie indeksów w modelu danych w celu zwiększenia wydajności zapytań.
- Czy w bazie danych często występują wstawienia, aktualizacje i usunięcia? Ponownie rozważ użycie indeksów lub uwzględnij fragmentowanie, jeśli jest to wymagane, w projekcie modelowania danych, aby poprawić wydajność całego środowiska MongoDB.
Różnica między MongoDB i RDBMS
Poniżej przedstawiono niektóre kluczowe różnice między MongoDB a RDBMS
RDBMS | MongoDB | Różnica |
---|---|---|
Stół | Kolekcja | W RDBMS tabela zawiera kolumny i wiersze, które są używane do przechowywania danych, podczas gdy w MongoDB ta sama struktura jest nazywana 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 zestaw wartości danych. Te w MongoDB są znane jako Fields. |
Łączy | Dokumenty osadzone | W RDBMS dane są czasami rozmieszczone w różnych tabelach i aby wyświetlić pełny widok wszystkich danych, czasami tworzy się łączenie między tabelami w celu uzyskania danych. W MongoDB dane są zwykle przechowywane w jednej kolekcji, ale oddzielone za pomocą dokumentów osadzonych. Dlatego w MongoDB nie ma koncepcji sprzężeń. |
Oprócz różnic terminów poniżej przedstawiono kilka innych różnic
- Relacyjne bazy danych są znane z wymuszania integralności danych. Nie jest to wyraźny wymóg w MongoDB.
- RDBMS wymaga, aby dane były najpierw znormalizowane, aby zapobiegać osieroconym rekordom i duplikatom. Normalizowanie danych wymaga następnie większej liczby tabel, co skutkuje większą liczbą łączeń tabel, co wymaga większej liczby kluczy i indeksów.
Wraz z rozwojem baz danych problemem może stać się wydajność. Ponownie nie jest to wyraźny wymóg w MongoDB. MongoDB jest elastyczny i nie wymaga uprzedniej normalizacji danych.