Kilka ogólnych punktów dotyczących MongoDB
Plusy:
- bez schematu. Jeśli masz elastyczny schemat, jest to idealne rozwiązanie dla magazynu dokumentów, takiego jak MongoDB. Jest to trudne do zaimplementowania w wydajny sposób w RDBMS
- łatwość skalowania. Skalowanie odczytuje przy użyciu zestawów replik. Skaluj zapisy za pomocą shardingu (automatycznego równoważenia). Po prostu odpal kolejną maszynę i odejdź. Dodanie większej liczby maszyn =dodanie większej ilości pamięci RAM, przez którą można dystrybuować swój zestaw roboczy.
- koszt. Zależy oczywiście od tego, który RDBMS, ale MongoDB jest darmowy i może działać na Linuksie, idealny do uruchamiania na tańszym zestawie.
- możesz wybrać żądany poziom spójności w zależności od wartości danych (np. szybsza wydajność =uruchom i zapomnij o wstawianiu do MongoDB, wolniejsza wydajność =poczekaj, aż insert zostanie zreplikowany do wielu węzłów przed zwróceniem)
Minusy:
- Rozmiar danych w MongoDB jest zazwyczaj wyższy ze względu m.in. każdy dokument ma zapisane nazwy pól
- mniejsza elastyczność przy zapytaniach (np. brak JOIN)
- brak obsługi transakcji - obsługiwane są pewne operacje atomowe, na poziomie pojedynczego dokumentu
- w tej chwili funkcja Map/Reduce (np. w celu wykonania agregacji/analizy danych) jest w porządku, ale nie jest zbyt szybka. Więc jeśli jest to wymagane, może być konieczne dodanie czegoś takiego jak Hadoop do miksu
- mniej aktualnych informacji/szybko rozwijający się produkt
Niedawno blogowałem moje myśli na MongoDB jako osoba wywodząca się z SQL Server, więc może Cię to zainteresować (powyżej to tylko niektóre z głównych punktów).
Jeśli szukasz odpowiedzi "Czy MongoDB jest lepsze niż RDBMS" - to IMHO nie ma odpowiedzi. Technologie NoSQL, takie jak MongoDB, stanowią alternatywę, która uzupełnia technologie RDBMS. Jeden może być lepiej dopasowany do określonego celu niż drugi, więc wszystko sprowadza się do wybrania tego, co jest dla Ciebie najlepsze dla danych wymagań.