NoSQL-MongoDB vs CouchDB [zamknięty]

Jestem kompletnym noobem jeśli chodzi o ruch NoSQL. Słyszałem wiele o MongoDB i CouchDB. Wiem, że są między nimi różnice. Którą naukę polecacie jako pierwszy krok w świecie NoSQL?

Author: Community, 2010-07-31

5 answers

Zobacz następujące linki

Update : znalazłem świetne porównanie baz danych NoSQL .

MongoDB (3.2)

  • napisane w: C++
  • główny punkt: JSON document store
  • Licencja: AGPL (sterowniki: Apache)
  • Protokół: Niestandardowy, binarny (BSON)
  • Replikacja Master / slave (auto failover z zestawami replik)
  • Sharding Wbudowany
  • zapytania są wyrażeniami javascript
  • Uruchom dowolne funkcje javascript po stronie serwera
  • ma indeksowanie geoprzestrzenne i zapytania
  • silniki wielokrotnego składowania o różnych parametrach użytkowych
  • Wydajność nad funkcjami
  • Walidacja dokumentu
  • Journaling
  • potężny Framework agregacji
  • w systemach 32bit, ograniczonych do ~2,5 GB
  • text search integrated
  • GridFS do przechowywania big data + metadane (nie w rzeczywistości FS)
  • Data center aware

Najlepiej używane: Jeśli potrzebujesz dynamicznych zapytań. Jeśli wolisz definiować indeksy, a nie mapować/zmniejszać funkcje. Jeśli potrzebujesz dobrej wydajności na dużym DB. Jeśli chcesz CouchDB, ale Twoje dane zmieniają się zbyt dużo, napełnianie dysków.

Na przykład: dla większości rzeczy, które można zrobić z MySQL lub PostgreSQL, ale mając predefiniowane kolumny naprawdę cię powstrzymują.

CouchDB (1.2)

  • Written in: Erlang
  • główny punkt: spójność DB, łatwość użycia
  • Licencja: Apache
  • protokół: HTTP / REST
  • dwukierunkowe (!) replikacja,
  • ciągły lub doraźny,
  • z wykrywaniem konfliktów,
  • Tak więc replikacja master-master. (!)
  • MVCC - operacje zapisu nie blokują odczytów
  • dostępne są poprzednie wersje dokumentów
  • Crash-only (niezawodny) projekt
  • wymaga od czasu do czasu zagęszczania
  • odsłon: wbudowana Mapa / reduce
  • formatowanie widoków: listy i pokazy
  • możliwa Walidacja dokumentów po stronie serwera
  • uwierzytelnianie możliwe
  • aktualizacje w czasie rzeczywistym poprzez '_changes' (!)
  • obsługa załączników
  • Couchapps (standalone js apps)

Najlepiej używać: do gromadzenia, sporadycznie zmieniających się danych, na których mają być uruchamiane predefiniowane zapytania. Miejsca, w których wersjonowanie jest ważne.

Na przykład : systemy CRM, CMS. Master-replikacja master jest szczególnie interesującą funkcją, umożliwiającą łatwe wdrożenia w wielu lokalizacjach.

 144
Author: amra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-23 18:22:39

Jeśli pochodzisz ze świata MySQL, MongoDB będzie" czuł " się bardziej naturalny ze względu na obsługę języka zapytań.

Myślę, że to właśnie sprawia, że jest tak przyjazny dla wielu ludzi.

CouchDB jest fantastyczne, jeśli chcesz wykorzystać naprawdę świetną obsługę replikacji master-master z konfiguracją wielu węzłów, prawdopodobnie w różnych centrach danych lub czymś takim.

Replikacja MongoDB (zestawy replik) to konfiguracja master-slave-slave-slave -*, ty może tylko pisać do mistrza w zestawie replik i czytać z dowolnego z nich.

Dla standardowej konfiguracji strony, to jest 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, mimo że 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żesz używać i jest bardzo intuicyjny, CouchDB przyjmuje podejście "map-reduce" i koncepcje widoków. Na początku wydaje się to dziwne, ale gdy już się przyzwyczaisz, naprawdę zaczyna czuć się intuicyjnie.

Oto krótki przegląd, więc ma to jakiś sens:

    CouchDB przechowuje wszystkie Twoje dane w drzewie b]}
  • nie można "odpytywać" go dynamicznie za pomocą czegoś w rodzaju " SELECT * FROM user WHERE..."
  • zamiast tego definiujesz dyskretne "widoki" danych... "oto widok wszystkich moich użytkowników", " oto widok wszystkich użytkownicy starsi niż 10 ""Oto widok wszystkich użytkowników starszych niż 30" i tak dalej.
  • te widoki są definiowane przy użyciu podejścia map-reduce i są definiowane jako funkcje JavaScript.
  • kiedy zdefiniujesz widok, DB zaczyna przesyłać wszystkie dokumenty z DB, do którego przypisałeś widok, i rejestruje wyniki twoich funkcji jako "indeks" na tych danych.
  • Istnieje kilka podstawowych zapytań dotyczących widoków, takich jak Pytanie o konkretny klucz (ID) lub zakres ID niezależnie od tego, co robi twoja funkcja map/reduce.
  • przeczytaj te slajdy , to najlepsze wyjaśnienie map/reduce w kanapie, jakie widziałem.

Więc oba te źródła używają dokumentów JSON, ale CouchDB podąża za tym bardziej" każdy serwer jest mistrzem i może synchronizować się ze światem", co jest fantastyczne, jeśli tego potrzebujesz, podczas gdy MongoDB jest naprawdę MySQL Świata NoSQL.

Więc jeśli to brzmi bardziej jak to, czego potrzebujesz/chcesz, idź na to.

Mały różnice, takie jak protokół binarny Mongo vs interfejs RESTful CouchDB, są drobnymi szczegółami.

Jeśli chcesz surowej prędkości i do diabła z bezpieczeństwem danych, możesz } sprawić, by Mongo działał szybciej niż CouchDB, ponieważ możesz powiedzieć mu, aby działał bez pamięci i nie zatwierdzał rzeczy na dysku, z wyjątkiem rzadkich interwałów.

Możesz zrobić to samo z Couch, ale to protokół komunikacyjny oparty na HTTP będzie 2-4x wolniejszy niż surowa komunikacja binarna z Mongo w tym " speed over wszystko!"scenariusz.

Należy pamiętać, że raw crazy insane speed jest bezużyteczny, jeśli awaria serwera lub awaria dysku psuje i wznosisz DB w zapomnienie, więc punkt danych nie jest tak niesamowity, jak mogłoby się wydawać (chyba że robisz systemy handlowe w czasie rzeczywistym na Wall Street, w którym to przypadku spójrz na Redis).

Mam nadzieję, że wszystko pomoże!

 120
Author: Riyad Kalla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-17 03:28:51
 5
Author: Andrei Andrushkevich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-11 14:39:57

Obecnie na rynku jest o wiele więcej baz danych NoSQL niż kiedykolwiek wcześniej. Proponuję nawet rzucić okiem na Gartner Magic Quadrant, jeśli szukasz bazy danych, która będzie również świetna dla aplikacji korporacyjnych opartych na wsparciu, możliwości rozbudowy, zarządzaniu i kosztach.

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

Chciałbym zaproponować Couchbase każdemu, kto jeszcze nie próbował, ale nie na podstawie wersji, która jest pokazana w raporcie (2.5.1), ponieważ jest to prawie 2 zmiany w tyle, gdzie CB Server jest dzisiaj, zbliża się wydanie 4.0 w 2H15.

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

Druga część o Couchbase jako dostawcy / produkcie jest taka, że jest to wielozadaniowy Typ DB. Może działać jako czysty magazyn K / V, zorientowana na dokumenty baza danych ze skalowaniem wielowymiarowym, Memcached, pamięć podręczna-oprócz persistence i obsługuje SQL zgodny z ANSI 92 z automatycznymi połączeniami, replikacją do klastrów DR za naciśnięciem przycisku, a nawet wbudowany w ekosystem mobilny komponent.

Jeśli nic innego, warto sprawdzić najnowsze benchmarki:

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

 2
Author: Austin Gonyou,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-30 16:24:05

Filmy Edureka na youtube dotyczące NoSQL to jedne z najlepszych samouczków wideo. Zacząłem na 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 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 

Prezentacja Edureka w slideshare jest rozszerzeniem filmu w serwisie youtube. Możesz traktować tę prezentację jako podsumowanie filmu na youtube.

 1
Author: Ravindra babu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-23 16:57:49