Jestem kompletnym noobem, jeśli chodzi o ruch NoSQL. Wiele słyszałem o MongoDB i CouchDB. Wiem, że są między nimi różnice. Którą naukę polecasz jako pierwszy krok do świata NoSQL?
Jako pierwszy krok mongoDB jest lepszy, ponieważ jest łatwiejszy do nauczenia, ale ma pewne problemy. Nie ma najlepszego wyboru, aby użyć konkretnej bazy danych noSQL, zależy to od tego, co musisz zrobić. Zobacz zorientowane na dokument, klucz-wartość, zorientowane na wykresy, zorientowane na kolumny.
Aktualizacja : Znalazłem świetne porównanie baz danych NoSQL .
MongoDB (3,2)
Napisane w: C ++
Główny punkt: magazyn dokumentów JSON
Licencja: AGPL (sterowniki: Apache)
Protokół: niestandardowy, binarny (BSON)
Replikacja master / slave (automatyczne przełączanie awaryjne z zestawami replik)
Wbudowane fragmentowanie
Zapytania to wyrażenia javascript
Uruchom dowolne funkcje javascript po stronie serwera
Posiada indeksowanie i zapytania geoprzestrzenne
Wiele silników pamięci masowej o różnych charakterystykach wydajności
Wydajność nad funkcjami
Walidacja dokumentów
Dziennik
Potężne ramy agregacji
W systemach 32-bitowych, ograniczenie do ~ 2,5 Gb
Zintegrowane wyszukiwanie tekstu
GridFS do przechowywania dużych zbiorów danych + metadane (nie w rzeczywistości FS)
Świadomość centrum danych
Najlepiej używane : jeśli potrzebujesz dynamicznych zapytań. Jeśli wolisz definiować indeksy, nie mapuj / zmniejszaj funkcje. Jeśli potrzebujesz dobrej wydajności na dużej bazie danych. Gdybyś chciał CouchDB, ale twoje dane zbytnio się zmieniają, zapełniając dyski.
Na przykład : w przypadku większości rzeczy, które zrobiłbyś z MySQL lub PostgreSQL, ale posiadanie wstępnie zdefiniowanych kolumn naprawdę cię powstrzymuje.
CouchDB (1.2)
Napisane w: Erlang
Główny punkt: spójność DB, łatwość użycia
Licencja: Apache
Protokół: HTTP / REST
Replikacja dwukierunkowa (!),
ciągłe lub ad-hoc,
z wykrywaniem konfliktów,
w ten sposób replikacja typu master-master. (!)
MVCC - operacje zapisu nie blokują odczytów
Dostępne są poprzednie wersje dokumentów
Konstrukcja odporna na awarie (niezawodna)
Od czasu do czasu wymaga zagęszczania
Widoki: osadzona mapa / redukcja
Formatowanie widoków: listy i pokazy
Możliwa walidacja dokumentów po stronie serwera
Możliwość uwierzytelnienia
Aktualizacje w czasie rzeczywistym przez „_changes” (!)
Obsługa załączników
Najlepiej używane : do gromadzenia, okazjonalnie zmieniających się danych, na których mają być uruchamiane predefiniowane zapytania. Miejsca, w których przechowywanie wersji jest ważne.
Na przykład : CRM, systemy CMS. Szczególnie interesującą funkcją jest replikacja typu master-master, która umożliwia łatwe wdrażanie w wielu lokalizacjach.
Jeśli pochodzisz ze świata MySQL, MongoDB będzie dla Ciebie o wiele bardziej naturalne dzięki obsłudze języka podobnego do zapytań.
Myślę, że to właśnie sprawia, że jest tak przyjazny dla wielu ludzi.
CouchDB jest fantastyczny, jeśli chcesz wykorzystać naprawdę świetne wsparcie replikacji typu master-master z konfiguracją wielowęzłową, prawdopodobnie w różnych centrach danych lub coś w tym rodzaju.
Replikacja MongoDB (zestawy replik) to konfiguracja master-slave-slave-slave- *, możesz tylko zapisywać do mastera w zestawie replik i czytać z dowolnego z nich.
W przypadku standardowej konfiguracji witryny jest to w porządku. Bardzo dobrze odwzorowuje użycie MySQL.
Ale jeśli próbujesz stworzyć globalną usługę, taką jak CDN, która musi synchronizować wszystkie globalne węzły, nawet jeśli odczyt / zapis do nich wszystkich, coś takiego jak replikacja w CouchDB będzie dla ciebie ogromnym dobrodziejstwem.
Podczas gdy MongoDB ma język podobny do zapytań, którego można używać i który jest bardzo intuicyjny, CouchDB przyjmuje podejście „zmniejszania mapy” i takie koncepcje widoków. Na początku wydaje się to dziwne, ale kiedy już to zrozumiesz, naprawdę zaczyna wydawać się intuicyjne.
Oto krótki przegląd, więc ma to jakiś sens:
CouchDB przechowuje wszystkie twoje dane w b-drzewie
Nie możesz dynamicznie wyszukiwać go w zapytaniach, np. „SELECT * FROM user WHERE ...”
Zamiast tego definiujesz odrębne „widoki” swoich danych ... „tutaj jest widok wszystkich moich użytkowników”, „tutaj jest widok wszystkich użytkowników w wieku powyżej 10 lat” „tutaj jest widok wszystkich użytkowników starszych niż 30” i wkrótce.
Widoki te są definiowane przy użyciu podejścia zmniejszania mapy i są zdefiniowane jako funkcje JavaScript.
Kiedy definiujesz widok, DB zaczyna przekazywać wszystkie dokumenty bazy danych, do której przypisałeś widok, poprzez niego i zapisywać wyniki funkcji jako „indeks” tych danych.
Istnieje kilka podstawowych zapytań, które możesz wykonać w widokach, takich jak pytanie o określony klucz (ID) lub zakres identyfikatorów, niezależnie od tego, co robi twoja funkcja map / redukuj.
Przeczytaj te slajdy , to najlepsze wyjaśnienie mapy / redukcji w Couch, jakie widziałem.
Tak więc oba te źródła używają dokumentów JSON, ale CouchDB podąża za podejściem „każdy serwer jest mistrzem i może synchronizować się ze światem”, co jest fantastyczne, jeśli jest to potrzebne, podczas gdy MongoDB jest naprawdę MySQL świata NoSQL.
Więc jeśli to brzmi bardziej jak to, czego potrzebujesz / chcesz, idź do tego.
Drobne różnice, takie jak protokół binarny Mongo i interfejs RESTful CouchDB, to drobne szczegóły.
Jeśli chcesz surowego szybkość i do diabła z bezpieczeństwem danych, to można dokonać Mongo szybciej niż CouchDB jak można powiedzieć to działać z pamięci i nie popełnić rzeczy na dysku z wyjątkiem rzadkich odstępach czasu.
Możesz zrobić to samo z Couch, ale jego protokół komunikacyjny oparty na HTTP będzie 2-4x wolniejszy niż nieprzetworzona komunikacja binarna z Mongo w tej "prędkości ponad wszystko!" scenariusz.
Pamiętaj, że surowa szalona szalona prędkość jest bezużyteczna, jeśli awaria serwera lub awaria dysku zepsuje i wznieci twoją bazę danych w zapomnienie, więc punkt danych nie jest tak niesamowity, jak mogłoby się wydawać (chyba że robisz systemy handlu w czasie rzeczywistym na Wall Ulica, w takim przypadku spójrz na Redis).
Chociaż, luźno w duchu, myślę, że komentarz nadal działa, masz rację, DUŻO zmieniło się w ciągu ostatniej połowy dekady i mój komentarz powinien zostać łatwo odrzucony.
Obecnie na rynku jest o wiele więcej baz danych NoSQL niż kiedykolwiek wcześniej. Sugeruję nawet przyjrzenie się Gartnerowi Magic Quadrant, jeśli szukasz bazy danych, która będzie również świetna do aplikacji korporacyjnych w oparciu o wsparcie, możliwości rozbudowy, zarządzanie i koszty.
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 prawie 2 wersje za tym, co obecnie znajduje się CB Server, zbliżając się do wydania 4.0 w drugiej połowie 2015 r. .
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:
Odpowiedzi:
Zobacz poniższe linki
Aktualizacja : Znalazłem świetne porównanie baz danych NoSQL .
MongoDB (3,2)
Najlepiej używane : jeśli potrzebujesz dynamicznych zapytań. Jeśli wolisz definiować indeksy, nie mapuj / zmniejszaj funkcje. Jeśli potrzebujesz dobrej wydajności na dużej bazie danych. Gdybyś chciał CouchDB, ale twoje dane zbytnio się zmieniają, zapełniając dyski.
Na przykład : w przypadku większości rzeczy, które zrobiłbyś z MySQL lub PostgreSQL, ale posiadanie wstępnie zdefiniowanych kolumn naprawdę cię powstrzymuje.
CouchDB (1.2)
Najlepiej używane : do gromadzenia, okazjonalnie zmieniających się danych, na których mają być uruchamiane predefiniowane zapytania. Miejsca, w których przechowywanie wersji jest ważne.
Na przykład : CRM, systemy CMS. Szczególnie interesującą funkcją jest replikacja typu master-master, która umożliwia łatwe wdrażanie w wielu lokalizacjach.
źródło
Jeśli pochodzisz ze świata MySQL, MongoDB będzie dla Ciebie o wiele bardziej naturalne dzięki obsłudze języka podobnego do zapytań.
Myślę, że to właśnie sprawia, że jest tak przyjazny dla wielu ludzi.
CouchDB jest fantastyczny, jeśli chcesz wykorzystać naprawdę świetne wsparcie replikacji typu master-master z konfiguracją wielowęzłową, prawdopodobnie w różnych centrach danych lub coś w tym rodzaju.
Replikacja MongoDB (zestawy replik) to konfiguracja master-slave-slave-slave- *, możesz tylko zapisywać do mastera w zestawie replik i czytać z dowolnego z nich.
W przypadku standardowej konfiguracji witryny jest to w porządku. Bardzo dobrze odwzorowuje użycie MySQL.
Ale jeśli próbujesz stworzyć globalną usługę, taką jak CDN, która musi synchronizować wszystkie globalne węzły, nawet jeśli odczyt / zapis do nich wszystkich, coś takiego jak replikacja w CouchDB będzie dla ciebie ogromnym dobrodziejstwem.
Podczas gdy MongoDB ma język podobny do zapytań, którego można używać i który jest bardzo intuicyjny, CouchDB przyjmuje podejście „zmniejszania mapy” i takie koncepcje widoków. Na początku wydaje się to dziwne, ale kiedy już to zrozumiesz, naprawdę zaczyna wydawać się intuicyjne.
Oto krótki przegląd, więc ma to jakiś sens:
Tak więc oba te źródła używają dokumentów JSON, ale CouchDB podąża za podejściem „każdy serwer jest mistrzem i może synchronizować się ze światem”, co jest fantastyczne, jeśli jest to potrzebne, podczas gdy MongoDB jest naprawdę MySQL świata NoSQL.
Więc jeśli to brzmi bardziej jak to, czego potrzebujesz / chcesz, idź do tego.
Drobne różnice, takie jak protokół binarny Mongo i interfejs RESTful CouchDB, to drobne szczegóły.
Jeśli chcesz surowego szybkość i do diabła z bezpieczeństwem danych, to można dokonać Mongo szybciej niż CouchDB jak można powiedzieć to działać z pamięci i nie popełnić rzeczy na dysku z wyjątkiem rzadkich odstępach czasu.
Możesz zrobić to samo z Couch, ale jego protokół komunikacyjny oparty na HTTP będzie 2-4x wolniejszy niż nieprzetworzona komunikacja binarna z Mongo w tej "prędkości ponad wszystko!" scenariusz.
Pamiętaj, że surowa szalona szalona prędkość jest bezużyteczna, jeśli awaria serwera lub awaria dysku zepsuje i wznieci twoją bazę danych w zapomnienie, więc punkt danych nie jest tak niesamowity, jak mogłoby się wydawać (chyba że robisz systemy handlu w czasie rzeczywistym na Wall Ulica, w takim przypadku spójrz na Redis).
Mam nadzieję, że to wszystko pomoże!
źródło
Spójrz na te linki:
MongoDB vs CouchDB (od strony MongoDB)
CouchDB vs MongoDB: próba bardziej świadomego porównania
Benchmark CouchDB vs MongoDB (porównanie wydajności)
źródło
Obecnie na rynku jest o wiele więcej baz danych NoSQL niż kiedykolwiek wcześniej. Sugeruję nawet przyjrzenie się Gartnerowi Magic Quadrant, jeśli szukasz bazy danych, która będzie również świetna do aplikacji korporacyjnych w oparciu o wsparcie, możliwości rozbudowy, zarządzanie i koszty.
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 prawie 2 wersje za tym, co 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