2010-07-30 10 views
145

Jestem kompletnym noobem, jeśli chodzi o ruch NoSQL. Wiele słyszałem o MongoDB i CouchDB. Wiem, że są różnice między tymi dwoma. Którego zalecasz nauczyć się jako pierwszy krok do świata NoSQL?NoSQL - MongoDB kontra CouchDB

+0

Jako pierwszy krok mongoDB jest lepszy, ponieważ jest łatwiejszy do nauczenia, ale ma pewne problemy. Nie ma najlepszego sposobu na użycie konkretnej bazy danych noSQL, zależy to od tego, co musisz zrobić. Sprawdź zorientowane na dokumenty, wartości klucz-wartość, zorientowane na wykres, zorientowane na kolumny. – Chris

Odpowiedz

143

patrz poniższe linki

Aktualizacja: Znalazłem wielkie comparison of NoSQL baz danych.

MongoDB (3,2)

  • Napisany w: C++
  • Główne: sklep dokument JSON
  • Licencja: AGPL (Sterowniki: Apache)
  • Protokół: Custom binarny (BSON)
  • Replikacja master/slave (auto failover z zestawami replik)
  • Sharding built-in
  • Zapytania są wyrażeniami javascript
  • uruchomić dowolny funkcje javascript po stronie serwera
  • Has geoprzestrzennych indeksowanie i odpytuje
  • Wiele silników składowania z różnych charakterystyk
  • wydajność w stosunku do cech
  • walidacja dokumentu
  • kroniki
  • Potężna struktura agregacji
  • W systemach 32-bitowych, ograniczone do ~ 2,5 GB
  • wyszukiwania
  • Tekst zintegrowanych
  • GridFS do przechowywania dużej ilości danych + metadane (nie faktycznie FS)
  • centrum danych świadomy

Najlepiej używać: Jeśli potrzebujesz dynamicznych zapytań. Jeśli wolisz definiować indeksy, nie mapuj/zmniejszaj funkcji. Jeśli potrzebujesz dobrej wydajności na dużym DB. Jeśli chciałeś CouchDB, ale twoje dane zmieniają się zbyt mocno, wypełniając dyski.

Na przykład: W przypadku większości rzeczy, które możesz zrobić z MySQL lub PostgreSQL, ale o predefiniowanych kolumn naprawdę cię powstrzymuje.

CouchDB (1.2)

  • Napisany w: Erlang
  • Główne: DB konsystencja, łatwość obsługi
  • Licencja: Apache
  • Protokół: HTTP/Reszta
  • Dwukierunkowy() replikacji!
  • ciągły lub ad hoc
  • z wykrywania konfliktu,
  • zatem Master-master R aplikacja. (!)
  • MVCC - operacje zapisu nie blokują czyta
  • Poprzednie wersje dokumentów są dostępne
  • crash-only (wiarygodne) projekt
  • Potrzeby ubijania od czasu do czasu
  • odsłony: wbudowane mapy/zmniejszyć
  • Formatowanie widoki: listy & pokazuje
  • Server-side walidacji dokumentów możliwych
  • Authentication możliwe
  • aktualizacje w czasie rzeczywistym VIA _changes "
  • obsługi
  • zatem, przywiązanie CouchApps (standalone js aplikacjach)

najlepiej stosować (!) Do gromadzenia, czasami zmiany danych, o których wstępnie zdefiniowane zapytania będą uruchamiane. Miejsca, w których ważna jest wersja.

Na przykład: Systemy CRM, CMS. Replikacja Master-Master to szczególnie interesująca funkcja, która umożliwia łatwe wdrażanie w wielu lokalizacjach.

+1

Dla każdego zainteresowanego licencją MongoDB na serwer będącą AGPL, przyjrzenie się [polityce licencyjnej mongody] (http://www.mongodb.org/about/licensing/#licensing-policy) może przynieść ulgę. – Patrick

+0

@amra Więc masz na myśli to, że jeśli zapisuję dane i czytam je tylko, najlepszym rozwiązaniem jest użycie couchdb? – verystrongjoe

+0

@verystrongjoe To zależy od złożoności danych i zapytań. Nie można ogólnie powiedzieć, który z nich jest najlepszy. – amra

118

Jeżeli przyjeżdżasz ze świata MySQL, MongoDB się dzieje do "czuć" o wiele bardziej naturalnie z powodu obsługi języka podobnego do zapytania.

Myślę, że to właśnie czyni go tak przyjaznym dla wielu ludzi.

CouchDB jest fantastyczny, jeśli chcesz korzystać z naprawdę świetnej obsługi replikacji master-master z konfiguracją wielowęzłową, być może w różnych centrach danych lub czymś w tym rodzaju.

Replikacja MongoDB (zestawy replik) jest konfiguracją slave-slave-slave- *, można zapisywać tylko do wzorca w zestawie replik i czytać z dowolnego z nich.

Dla standardowej konfiguracji witryny, to jest w porządku. Bardzo dobrze odwzorowuje użycie MySQL.

Ale jeśli próbujesz stworzyć usługę globalną, taką jak CDN, która musi utrzymywać synchronizację wszystkich globalnych węzłów nawet podczas odczytu/zapisu dla wszystkich z nich, coś takiego jak replikacja w CouchDB będzie ogromnym zyskiem dla ciebie .

Podczas gdy MongoDB ma język podobny do zapytania, z którego można korzystać i jest bardzo intuicyjny, CouchDB stosuje podejście "map-reduce" i te koncepcje widoków. Z początku wydaje się to dziwne, ale kiedy już to zrozumiesz, to naprawdę zaczyna być intuicyjne.

Oto szybki przegląd więc to sprawia, że ​​jakiś sens:

  • sklepów couchdb wszystkie dane w B-drzewie
  • Nie można „query” to dynamicznie coś jak „SELECT * FROM użytkowników WHERE ... "
  • Zamiast tego definiujesz dyskretne" widoki "danych ..." tutaj jest widok wszystkich moich użytkowników "," tutaj jest widok wszystkich użytkowników starszych niż 10 "" tutaj jest widok wszyscy użytkownicy starsi niż 30 "i tak dalej.
  • Widoki te są definiowane za pomocą metody odwzorowania mapy i są definiowane jako funkcje JavaScript.
  • Po zdefiniowaniu widoku, baza danych zaczyna podawać wszystkie dokumenty bazy danych, do której przypisano widok, przez nią i zapisuje wyniki swoich funkcji jako "indeks" tych danych.
  • Istnieje kilka podstawowych zapytań dotyczących widoków, takich jak pytanie o konkretny klucz (identyfikator) lub zakres identyfikatorów, niezależnie od funkcji mapowania/zmniejszania.
  • Przeczytaj przez these slides, to najlepsze wyjaśnienie mapy/zmniejszenie w kanapy, które widziałem.

Więc obu tych źródeł używać dokumentów JSON, ale CouchDB Wynika to bardziej „każdy serwer jest mistrzem i może synchronizować ze świata” podejścia, które jest fantastyczne, jeśli jest to potrzebne, a MongoDB jest naprawdę MySQL z Świat NoSQL.

Jeśli to brzmi bardziej jak to, czego potrzebujesz/chcesz, idź do tego.

Niewielkie różnice, takie jak protokół binarny Mongo i interfejs RESTful CouchDB.

Jeśli chcesz surowego prędkości i do diabła z bezpieczeństwem danych, to może zrobić 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 kanapką, ale protokół komunikacyjny oparty na protokole HTTP będzie 2-4x wolniejszy niż nieprzetworzona komunikacja binarna z Mongo w tej "szybkości nad wszystkim!" scenariusz.

Należy pamiętać, że surowa, szalona prędkość jest bezużyteczna, jeśli awaria serwera lub awaria dysku powodują korupcję i przechodzenie DB do zapomnienia, więc punkt danych nie jest tak niesamowity, jak mogłoby się wydawać (chyba, że ​​robisz w czasie rzeczywistym systemy handlu na Wall Street, w takim przypadku spójrz na Redis).

Mam nadzieję, że wszystko pomoże!

+0

"MongoDB to tak naprawdę MySQL w świecie NoSQL" - nie wiem, czy rzeczy się zmieniły, ale ten artykuł z 2014 r. Nie zgadza się: http://www.sarahmei.com/blog/2013/11/11/ dlaczego-ty nigdy nie powinno się używać-mongodb/ –

+0

Podczas gdy luźno w duchu myślę, że komentarz nadal działa, masz rację, DUŻO zmieniło się w ciągu ostatniej dekady i mój komentarz powinien być łatwo odrzucony. –

2

Na rynku dostępnych jest teraz znacznie więcej baz danych NoSQL niż kiedykolwiek wcześniej.Proponuję nawet rzucić okiem na Kwadrant Magiczny Gartnera, jeśli szukasz bazy danych, która będzie również świetna dla aplikacji korporacyjnych w oparciu o wsparcie, możliwości rozbudowy, zarządzanie i koszt.

http://www.gartner.com/technology/reprints.do?id=1-23A415Q&ct=141020&st=sb

chciałbym sugerować Couchbase każdemu, kto nie próbował go jeszcze, ale nie na podstawie wersji, która jest pokazana w raporcie (2.5.1), ponieważ jest to prawie 2 rewizje za gdzie CB Server dzisiaj zbliża się do wydania 4.0 w 2H15.

http://www.couchbase.com/coming-in-couchbase-server-4-0

Druga część o Couchbase jako dostawcy/produktu jest to, że typ wielofunkcyjny DB. Może pełnić funkcję czystego sklepu K/V, opartej na dokumentach bazy danych z wielowymiarowym skalowaniem, memcached, buforowania pamięci podręcznej z zachowaniem i obsługuje zgodny z ANSI 92 SQL z automatycznymi połączeniami, replikacja do klastrów DR za naciśnięciem przycisku, oraz nawet ma komponent mobilny wbudowany w ekosystem.

Jeśli nic więcej, to warto sprawdzić najnowsze standardy:

http://info.couchbase.com/Benchmark_MongoDB_VS_CouchbaseServer_HPW_BM.html http://info.couchbase.com/NoSQL-Technical-Comparison-Report.html

1

filmy Edureka w youtube dotyczące NoSQL są jednymi z najlepszych tutoriali wideo. Zacząłem od MongoDb & Cassandra po obejrzeniu tych filmów.

https://www.youtube.com/watch?v=gJFG04Sy6NY 
https://www.youtube.com/watch?v=KSq6tMMXZ8s 
https://www.youtube.com/watch?v=3z1KFA2qcSo 

Dobre prezentacje dostępne są 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 

Edureka prezentacja w Slideshare jest rozszerzenie wideo w YouTube. Możesz potraktować tę prezentację jako podsumowanie filmu na youtube.