W twoim przypadku MongoDB wydaje się dobrym wyborem, ale istnieje wiele scenariuszy (prawdopodobnie większość z nich), w których nie byłby to najlepszy wybór.
MongoDB jest bardziej odpowiedni w scenariuszach, które wymagają odczytu / zapisu dużej ilości danych, bez większego nacisku na bezpieczeństwo transakcji (jeśli niektóre dane czasami gubią się w wyniku awarii serwera, nie jest to wielka sprawa), spodziewaj się dużej skali i nie naprawdę mają stabilny schemat.
MongoDB nie nadaje się do scenariuszy, które wymagają:
- Silne gwarancje ACID: MongoDB pozwala na przechowywanie duplikatów danych, niespójne odczyty, a nawet utratę danych. Te rzeczy są dobre w niektórych aplikacjach, ale nie w większości.
- Transakcje z wieloma obiektami: MongoDB obsługuje transakcje ACID, ale tylko dla jednego obiektu / dokumentu. To po prostu nie ograniczy go do bardziej złożonych operacji, takich jak przelewy bankowe, dokonywanie rezerwacji itp.
- Tradycyjne BI: istnieje wiele narzędzi BI, które działają dobrze tylko z tradycyjnym SQL.
- SQL: MongoDB ma bardzo specyficzny język zapytań, podczas gdy SQL jest bardzo dobrze znany przez wiele osób (może być ważnym aspektem do rozważenia), może robić wiele skomplikowanych rzeczy (podczas gdy z MongoDB miałbyś problemy z wykonaniem prostego dołącz) i można go przenosić w wielu implementacjach.
MongoDB jest szybszy i pozwoli ci wyciszyć większą wydajność z systemu, eliminując wiele rzeczy, które domyślnie wymuszają RDBMS, takich jak kontrole integralności (pamiętaj, że i tak możesz dostosowywać RDBMS do takich celów), ale prawda jest taka, że w większości scenariuszy jest to po prostu niepotrzebne. Ponadto kompromisem jest niezawodność i elastyczność (będziesz mieć problemy, jeśli później zdecydujesz, że musisz wykonywać bardziej złożone operacje z istniejącymi danymi).
Wszystko zależy od potrzeb tworzonej aplikacji. Czy to szybkość i dostępność, czy bezpieczeństwo, niezawodność i elastyczność. Musisz wiedzieć, gdzie w Twoich danych (i połączeniach danych) leży większa wartość. Jeśli jeszcze tego nie wiesz, prawdopodobnie najlepiej jest wybrać coś, co nie spowoduje, że wpadniesz w zakręt w przyszłości i pozwoli Ci dodać funkcje i wykonać operacje, których potrzebuje Twoja aplikacja.