Mongo DB

MongoDB

Spośród wielu rozwiązań bazodanowych NoSQL dostępnych na rynku niewątpliwie na uwagę zasługuje dokumentowa baza MongoDB. Do głównych cech, dzięki którym rozwiązanie zyskało dużą popularność należą:

  • Elastyczny model danych oparty o format BSON (binarny JSON)
  • Prosty język zapytań – MongoDB Query
  • Replikacja danych pozwalająca na łatwe skalowanie operacji odczytu
  • Łatwe skalowanie poziome poprzez dodawanie kolejnych instancji

Zastosowanie elastycznego modelu danych opartego o standard BSON sprawia, że MongoDB jest idealnym rozwiązaniem w przypadkach, w których poszczególne obiekty różnią się zakresem przechowywanych atrybutów. Do typowych zastosowań MongoDB należą katalogi produktów, platformy ankietowe, systemy zbierania i analizy logów czy zarządzania treścią (CMS).

Szeroka gama wspieranych bibliotek dostępowych pozwala na integrację MongoDB z większością popularnych technologii używanych na rynku, co wraz z szybko rosnącą społecznością umożliwia uruchomienie rozwiązania w każdej organizacji. Profesjonalna dokumentacja zawierająca opisy wielu, zarówno podstawowych jak i zaawansowanych zagadnień, pozwala na wdrożenie MongoDB przy zaangażowaniu minimalnych środków na poznanie nowej technologii.

Do budowy klastra MongoDB wykorzystywane są dwa mechanizmy:

Sharding

każdy element klastra przechowuje fragment danych wybranych na podstawie klucza zapewniając poziomą skalowalność

Replication

dane są multiplikowane pomiędzy instancjami zbioru replik (replica set) co zapewnia wysoką dostępność (HA)

W każdym zbiorze replik mogą występować instancje jednego z trzech typów:

Primary/master

instancja główna obsługująca wszystkie zapisy do klastra, które następnie są replikowane do wszystkich instancji typu secondary, w ramach zbioru replik może istnieć tylko jedna instancja primary

Secondary/slave

instancje przechowujące zreplikowane dane umożliwiające odczyt, w przypadku awarii instancji primary jedna z instancji secondary jest automatycznie awansowana do działania w trybie primary

Arbiter

dodatkowa instancja w zbiorze replik, która nie przechowuje kopii danych, ale bierze udział przy wyborze nowej instancji primary. Instancje tego typu stosowane są w przypadku, gdy zbiór replik składa się z parzystej liczby węzłów i jednocześnie nie ma potrzeby instalacji kolejnej kopii danych


Poziome skalowanie klastra MongoDB uzyskuje się poprzez podzielenie zbioru danych przy pomocy klucza partycjonującego (shard key). Wybór odpowiedniego klucza partycjonującego jest jednym z najważniejszych elementów podczas tworzenia klastra a błędna decyzja może spowodować nadmierne obciążenie pojedynczych elementów klastra. MongoDB oferuje obsługę partycjonowania na dwa sposoby:

Hashed sharding

partycjonowanie oparte o funkcje hashujące

Range sharding

partycjonowanie oparte o zakresy wartości klucza

Zastosowanie mechanizmów partycjonowania i replikacji umożliwia tworzenie w pełni skalowalnych oraz wysokodostępnych rozwiązań bez użycia kosztownego sprzętu. Jednocześnie dzięki możliwości instalacji redundantnych instancji dla każdego komponentu przy odpowiedniej konfiguracji możliwe jest uzyskanie rozwiązania bez wąskich gardeł i pojedynczych punków podatności na awarie (SPOF).

Procedury obsługi awarii poszczególnych elementów klastra (failover) wykonywane są w sposób całkowicie automatyczny. Powrót do normalnego działania (failback) oraz dodanie nowych elementów klastra wymaga niewielkiego nakładu pracy administratora i jest w pełni przezroczyste dla aplikacji klienckich. Powyższe cechy umożliwiają budowanie rozwiązań z wyśrubowanym czasem dostępności.

Wysoka wydajność i skalowalność MongoDB została uzyskana kosztem rezygnacji dla pełnego wsparcia transakcji. MongoDB oferuje atomowość na poziomie zapisu pojedynczego dokumentu. W przypadku modyfikacji wielu dokumentów w ramach jednej operacji istnieje możliwość modyfikacji przez inne wątki. Częściowe wsparcie dla transakcyjnego zapisu dal wielu dokumentów można uzyskać dzięki zastosowaniu operatora isolated jednak rozwiązanie to nie jest wspierane dla klastra używającego partycjonowania. Użycia rozszerzonych transakcji wymaga dość uciążliwej implementacji po stronie aplikacji ale dzięki dokładnym wskazówkom w dokumentacji nie powinno stanowić problemu dla średniozaawansowanego programisty.

Doświadczenie zespołu rozwijającego oraz klarownie zdefiniowane kierunki rozwoju powodują, że MongoDB można uznać za stabilne rozwiązanie, które z powodzeniem może zostać wdrożone w każdej organizacji.

Nasza firma posiada wiele udanych wdrożeń z tej dziedziny. Po więcej szczegółów na temat projektów jak i samej technologii oraz korzyści jakie może ona przynieść Państwa Firmie zapraszamy do bezpośredniego kontaktu z nami.

Zobacz inne technologie, z których korzystamy w tym obszarze

NoSQL / BigData
ZADZWOŃ:
+48 22 37 37 000
ZAPYTAJ:
Formularz