Bardzo stare pytanie, ale jest na górze Google i nie bardzo lubię odpowiedzi, które widzę, więc oto moje własne.
Couchdb ma znacznie więcej niż zdolność do rozwijania CouchApps. Większość osób korzysta z CouchDb w klasycznej trójwarstwowej architekturze internetowej.
W praktyce decydującym czynnikiem dla większości ludzi będzie fakt, że MongoDb zezwala na zapytania ad-hoc ze składnią podobną do SQL, podczas gdy CouchDb tego nie robi (musisz stworzyć mapę / zmniejszyć widoki, które wyłączają niektóre osoby, nawet jeśli tworzysz te widoki jest przyjazny dla szybkiego tworzenia aplikacji - nie mają one nic wspólnego z procedurami przechowywanymi).
Aby zająć się kwestiami podniesionymi w zaakceptowanej odpowiedzi: CouchDb ma świetny system wersjonowania, ale to nie znaczy, że nadaje się tylko (lub lepiej) do miejsc, w których wersjonowanie jest ważne. Ponadto couchdb jest przyjazny dla ciężkich zapisów, ponieważ ma charakter tylko do dołączania (operacje zapisu wracają w krótkim czasie, gwarantując, że żadne dane nigdy nie zostaną utracone).
Jedną bardzo ważną rzeczą, o której nikt nie wspomina, jest fakt, że CouchDb opiera się na indeksach b-drzewa. Oznacza to, że niezależnie od tego, czy masz 1 „wiersz”, czy 20 miliardów, czas zapytania zawsze pozostanie poniżej 10 ms. Jest to zmieniacz gier, który sprawia, że CouchDb jest bazą danych o małych opóźnieniach i przyjazną do odczytu, i to naprawdę nie powinno być pomijane.
Aby być uczciwym i wyczerpującym, przewagą MongoDb nad CouchDb jest oprzyrządowanie i marketing. Posiadają najwyższej klasy narzędzia obywatelskie dla wszystkich głównych języków i platform, dzięki czemu ich wdrożenie jest łatwe, a to dodane do ich 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 dostępny jako interfejs API HTTP, dlatego łatwo jest stworzyć opakowanie w swoim ulubionym języku, aby z nim porozmawiać. Osobiście podoba mi się to podejście, ponieważ pozwala uniknąć wzdęć i pozwala ci brać tylko to, co chcesz (zasada segregacji interfejsu).
Więc powiedziałbym, że używanie jednego lub drugiego jest w dużej mierze kwestią wygody i preferencji w ich paradygmatach. Podejście CouchDb „po prostu pasuje”, dla niektórych osób, ale jeśli po zapoznaniu się z funkcjami bazy danych (w wyczerpującym oficjalnym przewodniku ) nie masz momentu „piekło tak”, prawdopodobnie powinieneś przejść dalej.
Odradzam korzystanie z CouchDb, jeśli chcesz po prostu użyć „odpowiedniego narzędzia do właściwej pracy”. bo przekonasz się, że nie możesz tego tak po prostu wykorzystać i skończysz na tym, że będziesz wkurzony i napisze posty na blogu, takie jak „Gdzie są dołączenia do CouchDb?” i „Gdzie jest zarządzanie transakcjami?”. Rzeczywiście Couchdb jest - paradoksalnie - bardzo przejrzysty, ale jednocześnie wymaga zmiany paradygmatu i zmiany w podejściu do problemów, aby naprawdę błyszczeć (i naprawdę pracować).
Ale kiedy to zrobisz, to naprawdę się opłaca. Osobiście potrzebuję bardzo silnych powodów lub poważnego przełomu w projekcie, aby wybrać inną bazę danych, ale jak dotąd nie spotkałem żadnej.