W przypadku MongoDB każdy rekord to dokument rozumiany, jako struktura danych złożona z pól i par wartości, który przypomina dokumenty w formacie JSON. Pola w dokumencie można porównać do kolumn w relacyjnych bazach danych a dokumenty do rekordów przechowywanych w kolekcjach zamiast w tabelach. W odróżnieniu od rekordów w tabelach dokumenty w kolekcji mogą posiadać różny zestaw pól, który można dowolnie modyfikować dla każdego dokumentu podczas pracy z bazą. Kluczową decyzją przy projektowaniu modelu danych dla aplikacji opartych o MongoDB jest określenie struktury dokumentów, oraz zdecydowanie, w jaki sposób aplikacja reprezentuje relacje pomiędzy danymi. MongoDB daje możliwość wykorzystania referencji, które przechowują relację pomiędzy danymi poprzez składowanie linku z jednego dokumentu do drugiego – w tym przypadku można mówić o znormalizowanym modelu danych. Istnieje również możliwość pracy z zagnieżdżonymi dokumentami, które w odróżnieniu od poprzedniego modelu pozwalają na przedstawienie relacji pomiędzy danymi poprzez składowanie jednego dokumentu w polu, lub tablicy innego dokumentu. Taki zdenormalizowany model danych pozwala aplikacji na uzyskanie i manipulowanie powiązanymi danymi w jednej operacji bazodanowej.

 

Do głównych cech związanych z wydajnością i dostępnością MongoDB należą m.in.:

Wydajność

  • wsparcie modelu zagnieżdżonych danych ogranicza aktywność I/O systemu bazodanowego,
  • indeksy pozwalają na szybsze wykonywanie zapytań i umożliwiają dołączanie kluczy z zagnieżdżonych dokumentów.

Wysoka dostępność

  • zestaw replikacyjny to zbiór serwerów MongoDB, które utrzymują ten sam zbiór danych, zapewniając nadmiarowość i zwiększając dostępność,
  • automatyczny failover.

Automatyczne skalowanie

  • wykorzystanie automatycznego mechanizmu shardów rozkłada dane pomiędzy serwery w klastrze,
  • zestaw replikacyjny umożliwia wykonywanie szybkich operacji czytania dla instalacji mających sprostać potrzebom wysokiego obciążenia.

MongoDB pod względem sposobu pracy z danymi jest rozwiązaniem wyspecjalizowanym, ale może być wykorzystanie w wielu obszarach, t.j. systemach zarządzania treścią (Content Management System), aplikacjach mobilnych, grach, rozwiązaniach e-commerce, archiwizacji, czy logowania.

Dla pełnego wykorzystania możliwości pracy z danymi w bazie, MongoDB udostępnia sterowniki i dokumentację dla najpopularniejszych platform programistycznych, m.in. C#, Java, Node.js, PHP, Python, Ruby.