NoSQL cieszy się ostatnio dużym zainteresowaniem w naszej branży. Naprawdę interesuje mnie, jakie są opinie ludzi na temat najlepszych przypadków jego użycia w porównaniu z przechowywaniem w relacyjnych bazach danych. Co powinno skłonić programistę do myślenia, że określone zbiory danych są bardziej odpowiednie dla rozwiązania NoSQL. Szczególnie interesują mnie MongoDB i CouchDB, ponieważ wydają się one zajmować najwięcej w zakresie rozwoju PHP i na tym się skupiam.
144
Odpowiedzi:
Po prostu obiecaj sobie, że nigdy nie będziesz próbował mapować relacyjnego modelu danych do bazy danych NoSQL, takiej jak MongoDB lub CouchDB ... Jest to najczęstszy błąd popełniany przez programistów podczas oceny powstających technologii.
Takie podejście jest analogiczne do wzięcia samochodu i próby wykorzystania go do ciągnięcia wózka po drodze jak konia.
Jest to naturalna reakcja, wynikająca oczywiście z doświadczenia każdego, ale prawdziwą wartością korzystania z bazy danych dokumentów jest możliwość uproszczenia modelu danych i zminimalizowania cierpienia programisty. Twoja baza kodu zmniejszy się, błędów będzie mniej i łatwiej będzie do znalezienia, wydajność będzie niesamowita, a skalowanie będzie znacznie prostsze.
Jako założyciel Joomla jestem stronniczy :-), ale pochodzę z przestrzeni CMS, coś takiego jak MongoDB jest srebrnym pociskiem, ponieważ zawartość jest bardzo naturalnie mapowana do systemów dokumentów.
Innym świetnym przypadkiem dla MongoDB jest analiza w czasie rzeczywistym, ponieważ MongoDB ma bardzo wysoką wydajność i skalowalność, szczególnie w zakresie współbieżności. Na stronie MongoDB.org znajdują się studia przypadków, które pokazują te atrybuty.
Zgadzam się z poglądem, że każda baza danych ma swoje własne cele i przypadki użycia; odpowiednio przyjąć cel każdej bazy danych do oceny.
źródło
W witrynie MongoDB wspomniano o kilku świetnych przypadkach użycia - w każdym razie dla MongoDB. Podane przykłady to analiza w czasie rzeczywistym, logowanie i wyszukiwanie pełnotekstowe. Wszystkie te artykuły są warte przeczytania http://www.mongodb.com/use-cases
Jest też świetny opis, w którym baza danych NoSQL najlepiej pasuje do jakiego typu projektu: http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
źródło
Proponuję ten artykuł Ricka Cattella o różnych magazynach danych (aka NoSQL), ich różnicach i niektórych przypadkach użycia: http://www.cattell.net/datastores/index.html
źródło
To, co lubię w NoSQL, nie ma nic wspólnego z wydajnością, a wszystko z użytecznością. Magazyny dokumentów są po prostu łatwiejsze w obsłudze, gdy niepodzielne jednostki danych są podobne do dokumentów, ponieważ serializacja do i z obiektów jest banalna. To po prostu fajniejsze, a to ważny czynnik w przypadku projektów osobistych lub pobocznych.
źródło
Od jakiegoś czasu używam baz danych NoSQL i to jest mój wkład w temat:
Wielki przypadek użycia dla bazy danych NoSQL jest aplikacją dla statystyk i / lub raporty generacji , szczegĂłlnie gdy dane są dostarczane ze źródła osób trzecich.
W takiej sytuacji baza danych NoSQL może być świetnym wyborem
Rozważmy na przykład MongoDB :
Gdy masz już swoje dane w formacie JSON (mogą pochodzić z zewnętrznego interfejsu API lub zostać wyeksportowane z aplikacji sql) w MongoDB jest dość trudne importowanie i aktualizowanie danych JSON w bazie danych; na przykład za pomocą
mongoimport
narzędzia wiersza poleceńW tym momencie bardzo łatwo jest budować dynamiczne zapytania z filtrowaniem i grupowaniem, które dobrze pasują do tego rodzaju aplikacji.
Na przykład korzystając ze struktury agregacji :
Chciałbym zwrócić uwagę na łatwość, z jaką możemy dynamicznie dodawać / usuwać filtry przy użyciu struktur danych php i unikać żmudnego łączenia ciągów znaków w celu tworzenia naszych zapytań. Dzięki temu podejściu dodawanie / usuwanie filtrów w sposób dynamiczny jest tak proste, jak dodawanie / usuwanie elementów z tablicy
Kolejna wielka korzyść wynika z faktu, że takie rozwiązanie prawdopodobnie będzie szybsze niż korzystanie z relacyjnej bazy danych , w której musimy łączyć różne tabele, aby uzyskać wszystkie potrzebne dane
Poza tym ten przypadek użycia jest optymalny, ponieważ pozwala uniknąć wszystkich głównych ograniczeń bazy danych NoSQL:
Brak transakcji: Aplikacja nie zapisuje, a jedynie odczytuje, więc w ogóle nie potrzebujemy transakcji
Brak złączeń między tabelami: nie potrzebujemy złączeń, ponieważ możemy użyć redundancji do przechowywania naszych zdenormalizowanych danych w kolekcjach. Ponieważ czytamy tylko dane, nie musimy się martwić synchronizacją zdenormalizowanych danych między aktualizacjami.
W ten sposób możemy skupić się na przechowywaniu danych z redundancją w sposób dobrze dopasowany do naszych zapytań , które będą koncentrować się na pojedynczych kolekcjach.
Piszę to tylko dlatego, że gdybym jakiś czas temu czytał coś takiego, zaoszczędziłoby mi trochę czasu na robienie badań
Mam nadzieję, że komuś się przyda
źródło
Gorąco polecam wykład Martina Fowlera:
https://www.youtube.com/watch?v=qI_g07C_Q5I
STRESZCZENIE: Martin przedstawia szybkie wprowadzenie do baz danych NoSQL: skąd się one wzięły, charakter modeli danych, których używają oraz inny sposób myślenia o spójności. Na tej podstawie wyjaśnia, jakie okoliczności należy rozważyć przy ich użyciu, dlaczego nie spowodują, że relacyjne bazy danych staną się przestarzałe, oraz ważne konsekwencje wytrwałości poliglotów.
Rysuje ładny obraz tego, czym jest NoSQL, różnymi kategoriami i rzeczami, które każdy musi zrozumieć, wychodząc ze świata relacyjnych baz danych. Pozdrowienia.
źródło
Filmy Edureka na youtube dotyczące NoSQL to jedne z najlepszych samouczków wideo.
https://www.youtube.com/watch?v=gJFG04Sy6NY
https://www.youtube.com/watch?v=KSq6tMMXZ8s
https://www.youtube.com/watch?v=3z1KFA2qcSo
Dobre prezentacje są dostępne w slideshare.net
http://www.slideshare.net/quipo/nosql-databases-why-what-and-when?qid=3bb9f7f6-a53d-41b1-8403-cd6f181d0ca7&v=qf1&b=&from_search=1
http://www.slideshare.net/EdurekaIN/no-sql-databases-35591065?qid=f1b9c095-6d70-4d0a-91da-1df664c4f389&v=qf1&b=&from_search=3 (Ta prezentacja obsługuje samouczek wideo w serwisie YouTube)
źródło
W niektórych przypadkach użycia, szczególnie w przypadku zapytań analitycznych, możesz uruchamiać zapytania SQL w MongoDB z tym opakowaniem z Postgres.
źródło
Ponieważ obecnie na rynku jest o wiele więcej baz danych NoSQL niż kiedykolwiek wcześniej, proponuję zajrzeć do Gartner Magic Quadrant, jeśli szukasz bazy danych, która będzie również świetna dla aplikacji korporacyjnych opartych na wsparciu, możliwościach rozbudowy, zarządzaniu i koszt.
http://www.gartner.com/technology/reprints.do?id=1-23A415Q&ct=141020&st=sb
Chciałbym zasugerować Couchbase każdemu, kto jeszcze go nie wypróbował, ale nie w oparciu o wersję, która jest pokazana w raporcie (2.5.1), ponieważ jest to prawie 2 wersje za tym, gdzie obecnie znajduje się CB Server, zbliżając się do wydania 4.0 w drugiej połowie 2015 r. .
http://www.couchbase.com/coming-in-couchbase-server-4-0
Inną częścią dotyczącą Couchbase jako dostawcy / produktu jest to, że jest to baza danych wielokrotnego użytku. Może działać jako czysty magazyn K / V, baza danych zorientowana na dokumenty ze skalowaniem wielowymiarowym, pamięć podręczna, pamięć podręczna z trwałością i obsługuje SQL zgodny z ANSI 92 z automatycznymi łączeniami, replikacją do klastrów DR za naciśnięciem przycisku i ma nawet element mobilny wbudowany w ekosystem.
Jeśli nic więcej, warto sprawdzić najnowsze testy porównawcze:
http://info.couchbase.com/Benchmark_MongoDB_VS_CouchbaseServer_HPW_BM.html http://info.couchbase.com/NoSQL-Technical-Comparison-Report.html
źródło