Kiedy używać CouchDB nad MongoDB i vice versa

Utknąłem między tymi dwoma bazami NoSQL.

W moim projekcie będę tworzyć bazę danych w bazie danych. Na przykład potrzebuję rozwiązania do tworzenia tabel dynamicznych.

Dzięki czemu użytkownicy mogą tworzyć tabele z kolumnami i wierszami. Myślę, że zarówno MongoDB, jak i CouchDB będą do tego dobre, ale nie jestem pewien, który z nich. Będę również potrzebował wydajnego stronicowania.

Author: Community, 2012-09-15

7 answers

C , A & P (spójność, dostępność i tolerancja partycji) które 2 są dla ciebie ważniejsze? Quick reference, the wizualny przewodnik po systemach NoSQL

  • MongodB: spójność i tolerancja partycji
  • CouchDB: dostępność i tolerancja partycji

Wpis na blogu, Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase vs Membase vs Neo4j porównanie zawiera scenariusze "najlepiej używane " dla każdej bazy danych NoSQL w porównaniu. Cytując link,

  • MongoDB: 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.
  • CouchDB : do gromadzenia, sporadycznie zmieniających się danych, na których mają być uruchamiane predefiniowane zapytania. Miejsca, w których wersjonowanie jest ważne.

Ostatnio (luty 2012) i nie tylko kompleksowe porównanie Przez Riyad Kalla,

  • MongoDB: replikacja tylko Master-Slave
  • CouchDB: Master-Replikacja Master

A blog post (Oct 2011) by someone who tried both, MongoDB uczy się CouchDB skomentował, że stronicowanie CouchDB nie jest tak przydatne.

A dated (Jun 2009) benchmark By Kristina Chodorow (część zespołu za MongoDB),

Wybrałbym MongoDB.

Mam nadzieję, że to pomoże.

 492
Author: user799188,
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
2016-02-23 02:58:25

Odpowiedzi przede wszystkim komplikują historię.

  1. jeśli planujesz mieć komponent mobilny lub potrzebujesz użytkowników komputerów stacjonarnych do pracy w trybie offline, a następnie zsynchronizować ich pracę z serwerem, potrzebujesz CouchDB.
  2. Jeśli Twój kod będzie działał tylko na serwerze, przejdź do MongoDB

To jest to. O ile nie potrzebujesz niesamowitej zdolności CouchDB do replikowania na urządzeniach mobilnych i stacjonarnych, MongoDB ma obecnie przewagę nad wydajnością, społecznością i narzędziami.

 181
Author: Ewan Makepeace,
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-02-18 03:29:06

Bardzo stare pytanie, ale jest na topie Google i nie bardzo mi się podobają odpowiedzi, które widzę, więc oto moje własne.

Couchdb to o wiele więcej niż możliwość rozwoju CouchApps. Większość ludzi używa CouchDb w klasycznej 3-warstwowej architekturze internetowej.

W praktyce decydującym czynnikiem dla większości ludzi będzie fakt, że MongoDb pozwala na zapytania ad-hoc ze składnią podobną do SQL, podczas gdy CouchDB nie (musisz utworzyć mapę/zmniejszyć widoki, co wyłącza niektórych ludzi, nawet jeśli tworzenie tych widoków jest przyjazne dla szybkiego rozwoju aplikacji - nie mają one nic wspólnego z procedurami składowanymi).

Aby odnieść się do punktów podniesionych w zaakceptowanej odpowiedzi : CouchDb ma świetny system wersjonowania, ale nie oznacza to, że jest odpowiedni tylko (lub bardziej odpowiedni) dla miejsc, w których wersjonowanie jest ważne. Ponadto couchdb jest przyjazny dla ciężkiego zapisu dzięki swojej naturze tylko dopisywania(operacje zapisu zwracają się w mgnieniu oka, gwarantując jednocześnie, że żadne dane nigdy nie zostaną utracone).

Jeden bardzo ważną rzeczą, o której nikt nie wspomina, jest fakt, że CouchDB opiera się na indeksach b-tree. Oznacza to, że niezależnie od tego, czy masz 1 "wiersz", czy 20 miliardów, czas zapytań zawsze pozostanie poniżej 10ms. jest to zmieniacz gier, który sprawia, że CouchDB jest bazą danych o niskim opóźnieniu i przyjazną dla odczytu, i naprawdę nie należy tego przeoczyć.

Aby być uczciwym i wyczerpującym przewaga MongoDb nad CouchDb to narzędzia i marketing. Mają pierwszorzędne narzędzia obywatelskie dla wszystkich głównych języków i platformy ułatwiające wchodzenie na pokład, a to dodane do zapytań adhoc sprawia, że przejście z SQL jest jeszcze łatwiejsze.

CouchDb nie ma takiego poziomu narzędzi - mimo że obecnie dostępnych jest wiele bibliotek - ale CouchDb jest eksponowany jako HTTP API i dlatego dość łatwo jest utworzyć wrapper w swoim ulubionym języku, aby z nim rozmawiać. Osobiście podoba mi się to podejście, ponieważ pozwala uniknąć wzdęcia i pozwala wziąć tylko to, co chcesz (segregacja interfejsu zasada).

Więc powiedziałbym, że używanie jednego lub drugiego jest w dużej mierze kwestią komfortu i preferencji z ich paradygmatami. Podejście CouchDb "po prostu pasuje", dla niektórych osób, ale jeśli po zapoznaniu się z funkcjami bazy danych (w wyczerpującym oficjalny przewodnik) nie masz swojego momentu "hell yeah", prawdopodobnie powinieneś iść dalej.

Odradzam używanie CouchDb, jeśli chcesz po prostu użyć "odpowiedniego narzędzia do właściwej pracy". bo przekonasz się, że nie możesz tego po prostu użyć, że sposób i skończysz się wkurwiać i pisać posty na blogu, takie jak " Gdzie są połączenia w CouchDb ?"i" gdzie jest zarządzanie transakcjami ?". Rzeczywiście Couchdb jest-paradoksalnie-bardzo przejrzysty, ale jednocześnie wymaga zmiany paradygmatu i zmiany sposobu podejścia do problemów, aby naprawdę błyszczeć (i naprawdę działać).

Ale jak już to zrobisz to naprawdę się opłaca. Osobiście potrzebowałbym bardzo silnych powodów lub poważnego zerwania umowy na projekt, aby wybrać inną bazę danych, ale na razie nie spotkałem żadnego.

 40
Author: reddy,
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
2016-06-04 16:49:21

Zadać to pytanie samemu? I Ty zdecydujesz o wyborze DB.

  1. Czy potrzebujesz master-master ? Potem CouchDB. Głównie CouchDB obsługuje replikację master-master, która przewiduje odłączenie węzłów przez długi czas. MongoDB nie poradziłby sobie dobrze w tym środowisku.
  2. Czy potrzebujesz maksymalnej przepustowości R / w? Then MongoDB
  3. Czy potrzebujesz ultimate trwałości pojedynczego serwera , ponieważ będziesz miał tylko jeden serwer DB? Potem CouchDB.
  4. czy przechowujesz ogromny zestaw danych , który wymaga shardingu przy zachowaniu szalonej przepustowości? Potem MongoDB.
  5. Czy potrzebujesz silnejspójności danych? Potem MongoDB.
  6. Czy potrzebujesz wysokiejdostępności bazy danych? Potem CouchDB.
  7. masz nadzieję multi baz danych i multi tabel/ kolekcji? Then MongoDB
  8. Masz Użytkownicy aplikacji mobilnej offline i chcesz zsynchronizować ich dane o aktywności z serwerem? Wtedy potrzebujesz CouchDB.
  9. Czy potrzebujesz dużej różnorodnościzapytań silnika? Then MongoDB
  10. Czy potrzebujesz dużej społeczności aby używać DB? Then MongoDB
 27
Author: Somnath Muluk,
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
2016-08-11 19:35:59

Streszczam odpowiedzi Znalezione w tym artykule:

Http://www.quora.com/How-does-MongoDB-compare-to-CouchDB-What-are-the-advantages-and-disadvantages-of-each

MongoDB: lepsze zapytania, przechowywanie danych w BSON (szybszy dostęp), lepsza spójność danych, wiele kolekcji

CouchDB: lepsza replikacja, z replikacją master do master i rozwiązywaniem konfliktów, przechowywanie danych w JSON( czytelny dla człowieka, lepszy dostęp przez usługi REST), zapytania przez map-reduce.

Podsumowując, MongoDB jest szybszy, CouchDB bezpieczniejszy.

Także: http://nosql.mypopescu.com/post/298557551/couchdb-vs-mongodb

 23
Author: Alexis Dufrenoy,
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
2014-05-28 14:18:54

Bądź świadomy problemu z rzadkimi unikalnymi indeksami w MongoDB. Trafiłem w niego i jest to niezwykle uciążliwe do obejścia.

Problem polega na tym - masz pole, które jest unikalne, jeśli jest obecne i chcesz znaleźć wszystkie obiekty, w których pole jest nieobecne. Sposób, w jaki nieliczne unikalne indeksy są zaimplementowane w Mongo, polega na tym, że obiekty, w których brakuje tego pola, w ogóle nie są w indeksie - nie mogą być pobrane przez zapytanie dotyczące tego pola - {$exists: false} po prostu nie działa.

The only obejście, które wymyśliłem, to posiadanie specjalnej rodziny wartości null, gdzie pusta wartość jest tłumaczona na specjalny prefiks (np. null:) połączony z uuid. Jest to prawdziwy ból głowy, ponieważ trzeba zadbać o transformację do / z pustych wartości podczas pisania/quering / czytania. Bardzo uciążliwe.

Nigdy nie używałem server side javascript execution w MongoDB (i tak nie jest to zalecane) i ich map/reduce ma okropną wydajność, gdy jest tylko jeden węzeł Mongo. Z tych wszystkich powodów rozważam teraz sprawdzenie CouchDB, może bardziej pasuje do mojego konkretnego scenariusza.

BTW, jeśli ktoś zna link do odpowiedniego numeru Mongo opisującego problem unikalnego indeksu-proszę o podzielenie się.

 19
Author: mark,
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-02-03 22:05:35

Jestem pewien, że możesz z Mongo (bardziej zaznajomiony z nim), i prawie pewien, że możesz z kanapą też.

Oba są zorientowane (oparte na JSON), więc nie ma "kolumn", a raczej pól w dokumentach-ale mogą być w pełni dynamiczne.

Oba to robią możesz chcieć spojrzeć na inne czynniki, na których możesz użyć: inne funkcje, na których Ci zależy, popularność itp. Google insights, indeed.com posty pracy będą sposoby, aby spojrzeć na popularność.

You could just try it I think you mongo powinno działać za 5 minut.

 3
Author: dm.,
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
2012-09-15 15:49:32