Очень старый вопрос, но он находится на вершине Google, и мне не очень нравятся ответы, которые я вижу, поэтому вот мои.
Couchdb - это гораздо больше, чем возможность разрабатывать CouchApps. Большинство людей используют CouchDb в классической трехуровневой веб-архитектуре.
На практике решающим фактором для большинства людей будет тот факт, что MongoDb позволяет выполнять произвольные запросы с синтаксисом, подобным SQL, в то время как CouchDb этого не делает (вам нужно создавать представления типа «карта» / «уменьшить», которые отключают некоторых людей даже при их создании). Быстрая разработка приложений дружественна - они не имеют ничего общего с хранимыми процедурами).
Чтобы ответить на вопросы, поднятые в принятом ответе: CouchDb имеет отличную систему управления версиями, но это не значит, что она подходит (или более подходит) для мест, где важно создание версий. Кроме того, couchdb удобен для записи благодаря своей природе только для добавления (операции записи возвращаются в кратчайшие сроки, гарантируя, что никакие данные никогда не будут потеряны).
Одна очень важная вещь, о которой никто не упоминает, это тот факт, что CouchDb опирается на индексы b-дерева. Это означает, что независимо от того, есть ли у вас 1 «строка» или 20 миллиардов, время запроса всегда будет оставаться ниже 10 мс. Это изменит правила игры, что делает CouchDb базой данных с низкой задержкой и удобной для чтения информацией, и это действительно не следует упускать из виду.
Чтобы быть справедливым и исчерпывающим, преимущество MongoDb перед CouchDb заключается в инструментах и маркетинге. У них есть первоклассные инструменты для граждан для всех основных языков и платформ, которые упрощают адаптацию, и это добавляет к их специальным запросам еще более легкий переход от SQL.
CouchDb не имеет такого уровня инструментов - даже несмотря на то, что сегодня доступно много библиотек - но CouchDb представлен как HTTP API, и поэтому довольно легко создать оболочку на вашем любимом языке для общения с ним. Мне лично нравится этот подход, поскольку он избегает вздутия и позволяет вам брать только то, что вы хотите (принцип сегрегации интерфейса).
Так что я бы сказал, что использование одного или другого - в значительной степени вопрос комфорта и предпочтения их парадигм. Подход CouchDb "просто подходит" для некоторых людей, но если после изучения функций базы данных (в исчерпывающем официальном руководстве ) у вас нет момента "ага, да", вам, вероятно, следует двигаться дальше.
Я бы не рекомендовал использовать CouchDb, если вы просто хотите использовать «правильный инструмент для правильной работы». потому что вы обнаружите, что вы не можете просто использовать его таким образом, и вы в конечном итоге разозлитесь и напишете сообщения в блоге, такие как "Где объединения в CouchDb?" и «Где управление транзакциями?». Действительно, как это ни парадоксально, Couchdb очень прозрачен, но в то же время требует смены парадигмы и изменения в подходах к проблемам, чтобы они действительно сияли (и действительно работали).
Но как только вы это сделаете, это действительно окупится. Лично мне нужны очень веские причины или серьезный провал в проекте, чтобы выбрать другую базу данных, но пока я не встречал ни одной.