Ogólne zastosowania
Jeśli masz struktury danych, które nie są jasno zdefiniowane w momencie tworzenia systemu. Na przykład przechowuję ustawienia użytkownika w nosql. Innym przykładem był system, w którym użytkownicy musieli mieć możliwość dodawania pól w czasie wykonywania - bardzo bolesne w RDBMS i proste w NoSQL.
Jeśli struktura modelu jest w dużej mierze wyśrodkowana wokół jednego lub kilku obiektów modelu, a większość relacji to tak naprawdę obiekty potomne głównych obiektów modelu. W takim przypadku przekonasz się, że nie będziesz potrzebować rzeczywistych połączeń. Odkryłem, że system zarządzania kontaktami może być całkiem ładnie zaimplementowany na przykład w nosql. Osoba może mieć wiele adresów, telefonów i e-maili. Zamiast umieszczać je w osobnych tabelach, wszystkie stają się częścią tego samego modelu i masz obiekt jednej osoby.
Jeśli chcesz skorzystać z klastrowania danych na wielu serwerach zamiast posiadania jednego serwera monolitycznego, co jest zwykle wymagane przez RDBMS.
Buforowanie Nawet jeśli chcesz pozostać przy RDBMS jako głównej bazie danych, przydatne może być użycie bazy danych NoSQL do buforowania wyników zapytań lub przechowywania danych, takich jak liczniki.
Przechowywanie dokumentów. Jeśli chcesz przechowywać spójne dokumenty, w bazie danych niektóre bazy danych NoSQL (takie jak MongoDB) specjalizują się w ich przechowywaniu.
Co z dołączeniami?
Szczerze mówiąc, brak możliwości łączenia również na początku wydawał mi się przerażający. Ale sztuką jest przestać myśleć w SQL. Musisz właściwie myśleć o obiekcie, który masz w pamięci podczas uruchamiania aplikacji. Powinny one mniej więcej zostać zapisane w bazie danych NoSQL, ponieważ są obszarem.
Ponieważ możesz przechowywać pełny wykres obiektów z obiektami potomnymi, większość potrzeby łączenia jest wyeliminowana. A jeśli okaże się, że potrzebujesz, będziesz musiał ugryźć pocisk, pobrać oba obiekty i dołączyć kod aplikacji.
Na szczęście większość kierowców może wykonać połączenie za Ciebie, jeśli odpowiednio skonfigurujesz schemat.
Do dalszej lektury polecam Martina Fowlera .
W niektórych przypadkach nie potrzebujesz kluczy obcych. Na przykład:
może być tak proste, jak załadowanie
comments
części dokumentu odpowiadającej użytkownikowi. Nazywa się to denormalizacją : zamiast dwóch zestawów ze złączeniem masz jeden dokument i wszystko, czego potrzebujesz, znajduje się w nim. Jedno zapytanie, brak złączeń, lepsza wydajność .Ale w niektórych okolicznościach może to prowadzić do duplikacji danych , więc odpowiednie może być łączenie jednego dokumentu w drugi. W takim przypadku może Cię zainteresować normalizacja MongoDB, klucz obcy i dołączanie , strona Odwołania do bazy danych, a zwłaszcza funkcja DBRefs.
źródło