Spośród wielu dostępnych na rynku rozwiązań bazodanowych NoSQL, na uwagę zasługuje z pewnością baza dokumentów Mongo DB. Jego główne cechy, dzięki którym rozwiązanie zyskało popularność, to m.in:
- Elastyczny model danych oparty o format BSON (binarny JSON)
- Prosty język zapytań – Mongo DB Query
- Replikacja danych pozwala na łatwe skalowanie operacji odczytu
- Łatwe skalowanie w poziomie poprzez dodawanie instancji
Zastosowanie elastycznego modelu danych opartego na standardzie BSON sprawia, że Mongo DB jest idealnym rozwiązaniem w przypadkach, gdy poszczególne elementy różnią się zakresem przechowywania atrybutów. Do typowych zastosowań Mongo DB należą katalogi produktów, platformy ankietowe, systemy zbierania i analizy logów czy systemy zarządzania treścią (CMS).
Szeroka gama wspieranych bibliotek dostępowych pozwala na integrację Mongo DB z większością popularnych technologii stosowanych na rynku, co wraz z szybko rozwijającą się społecznością pozwala na uruchomienie rozwiązania w każdej organizacji.
Profesjonalna dokumentacja zawierająca opisy wielu zarówno podstawowych jak i zaawansowanych zagadnień umożliwia wdrożenie Mongo DB przy minimalnym wysiłku włożonym w poznanie nowej technologii.
Klaster Mongo DB wykorzystuje dwa mechanizmy:
Fragmentacja
każdy element klastra przechowuje fragment danych wybrany na podstawie klucza, co zapewnia skalowanie poziome
Replikacja
dane są powielane pomiędzy instancjami zestawu replik, co zapewnia wysoką dostępność
Każdy zestaw replik może zawierać instancje jednego z trzech typów:
Pierwotny/nadrzędny
instancja główna obsługująca wszystkie wpisy do klastra, które są następnie replikowane do wszystkich instancji wtórnych; w ramach jednego zestawu replik może istnieć tylko jedna instancja główna
Wtórny/podległy
instancje przechowujące replikowane dane, umożliwiające odczyt; w przypadku awarii instancji pierwotnej jedna z instancji wtórnych jest automatycznie przełączana do pracy w trybie pierwotnym
Arbiter
dodatkowa instancja w ramach repliki, która nie przechowuje kopii danych, ale bierze udział w wyborze nowej instancji pierwotnej
Instancje tego typu są wykorzystywane, gdy zestaw replik zawiera parzystą liczbę węzłów, a jednocześnie nie ma potrzeby instalowania kolejnej kopii danych.
Skalowanie poziome klastra Mongo DB uzyskuje się poprzez dzielenie zbioru danych za pomocą klucza shard. Wybór odpowiedniego klucza sharda jest jednym z najważniejszych elementów tworzenia klastra – błędna decyzja może skutkować nadmiernym obciążeniem poszczególnych elementów klastra. Mongo DB oferuje dwa rodzaje shardingu:
Hashed sharding
sharding oparty na funkcji haszowania
Range sharding
sharding oparty na zakresach wartości kluczy
Wykorzystanie mechanizmów shardingu i replikacji pozwala na tworzenie w pełni skalowalnych i wysoko dostępnych rozwiązań bez użycia kosztownego sprzętu. Jednocześnie, dzięki możliwości instalacji redundantnych instancji dla każdego komponentu, odpowiednia konfiguracja pozwala na uzyskanie rozwiązania pozbawionego wąskich gardeł i pojedynczych punktów awarii (SPOF).
Procedury obsługi awarii dla poszczególnych elementów klastra (failover) są w pełni automatyczne. Powrót do normalnej pracy (failback) i dodawanie nowych elementów klastra wymaga niewielkiego wysiłku ze strony administratora i jest w pełni transparentne dla aplikacji klienckich. Powyższe cechy pozwalają na budowanie rozwiązań o wydłużonym czasie dostępności.
Wysoka wydajność i skalowalność Mongo DB została osiągnięta kosztem pełnej obsługi transakcji. Mongo DB oferuje atomowość na poziomie zapisu pojedynczego dokumentu. W przypadku modyfikacji wielu dokumentów w ramach jednej operacji, istnieje możliwość modyfikacji poprzez inne wątki. Częściowe wsparcie dla przechowywania transakcyjnego dla wielu dokumentów można osiągnąć poprzez użycie operatora $isolated, jednak rozwiązanie to nie jest wspierane dla klastra wykorzystującego sharding. Korzystanie z transakcji rozszerzonych wymaga dość kłopotliwej implementacji po stronie aplikacji, ale dzięki szczegółowym wskazówkom w dokumentacji nie powinno stanowić problemu dla średnio zaawansowanego programisty.
Doświadczenie zespołu programistów oraz jasno zdefiniowane ścieżki rozwoju sprawiają, że Mongo DB jest uznawany za stabilne rozwiązanie, które można łatwo wdrożyć w każdej organizacji.
BlueSoft z powodzeniem zrealizował wiele projektów w tym zakresie. Chętnie zaprezentujemy bezpośrednio nasze portfolio, jak również odpowiemy na więcej pytań dotyczących samej technologii i korzyści, jakie może przynieść jej wdrożenie.