Когда использовать MongoDB и CouchDB при более наоборот


Я застрял между этими двумя базами данных NoSQL.

в моем проекте я буду создавать базу данных в базе данных. Например, мне нужно решение для создания динамических таблиц.

Так что пользователи могут создавать таблицы со столбцами и строками. Я думаю, что либо MongoDB, либо CouchDB будут хороши для этого, но я не уверен, какой из них. Мне также понадобится эффективный пейджинг.

7 590

7 ответов:

из C, A & P (согласованность, доступность и допуск разделов) какие 2 более важны для вас? Быстрая ссылка,Визуальное Руководство По Системам NoSQL

  • MongodB: согласованность и допуск раздела
  • CouchDB: доступность и допуск разделов

в блоге Кассандра против против против против против в MongoDB CouchDB, могут с Redis, Riak в HBase не против Membase против СУБД Neo4j сравнения есть - лучше использовать для каждой базы данных NoSQL сравнение. Цитируя ссылку,

  • MongoDB: Если вам нужны динамические запросы. Если вы предпочитаете определять индексы, а не сопоставлять/уменьшать функции. Если вам нужна хорошая производительность на больших базах. Если вы хотели CouchDB, но ваши данные слишком сильно меняются, заполняя диски.
  • CouchDB: для накопления, иногда изменяющихся данных, на которых должны выполняться предопределенные запросы. Места, где находится управление версиями важный.

недавний (февраль 2012) и более комплексное сравнение Рияд Калла,

  • MongoDB: только репликация Master-Slave
  • CouchDB : Master-Master Replication

сообщение в блоге (октябрь 2011) кем-то, кто пробовал оба,Парень MongoDB Узнает CouchDB прокомментировал подкачку CouchDB, которая не так полезна.

датированный (июнь 2009)benchmark на Кристина Ходоров (часть команды за MongoDB),

Я бы пошел на MongoDB.

надеюсь, что это помогает.

ответы выше всего усложняют историю.

  1. Если вы планируете иметь мобильный компонент или хотите, чтобы пользователи настольных компьютеров работали в автономном режиме, а затем синхронизировали свою работу с сервером, вам нужен CouchDB.
  2. Если ваш код будет работать только на сервере, то перейти с MongoDB

очень старый вопрос, но он находится на вершине Google, и мне не совсем нравятся ответы, которые я вижу, поэтому вот мой собственный.

там гораздо больше, чтобы Couchdb, чем способность разрабатывать CouchApps. Большинство людей используют CouchDb в классической 3-х уровневой веб-архитектуре.

на практике решающим фактором для большинства людей будет тот факт, что MongoDb позволяет выполнять специальные запросы с помощью синтаксиса SQL, в то время как CouchDb этого не делает (вам нужно создать карту / уменьшить представления, которые отключают некоторых людей даже хотя создание этих представлений является быстрой разработкой приложений-они не имеют ничего общего с хранимыми процедурами).

для решения вопросов, поднятых в принятом ответе: CouchDb имеет отличную систему versionning, но это не означает, что она подходит только (или более подходит) для мест, где важно versionning. Кроме того, couchdb является удобным для записи благодаря своей природе только для добавления (операции записи возвращаются в кратчайшие сроки, гарантируя, что никакие данные никогда не будут растеряться.)

одна очень важная вещь, о которой никто не упоминает,-это тот факт, что CouchDb полагается на индексы b-дерева. Это означает, что независимо от того, есть ли у вас 1 "строка" или 20 миллиардов, время запроса всегда будет оставаться ниже 10 мс. это игровой чейнджер, который делает CouchDb базой данных с низкой задержкой и удобной для чтения, и это действительно не следует упускать из виду.

быть справедливым и исчерпывающим преимущество MongoDb имеет над CouchDb tooling и маркетинг. У них есть первоклассный гражданин инструменты для всех основных языков и платформ, что делает на борту легко и это добавлено к их adhoc запросов делает переход от SQL еще проще.

CouchDb не имеет такого уровня инструментов - хотя сегодня доступно много библиотек-но CouchDb представлен как HTTP API, и поэтому довольно легко создать оболочку на вашем любимом языке, чтобы поговорить с ней. Мне лично нравится этот подход, так как он позволяет избежать раздувания и позволяет вам брать только то, что вы хочу (принцип сегрегации интерфейса).

поэтому я бы сказал, что использование одного или другого в значительной степени зависит от комфорта и предпочтения с их парадигмами. Подход CouchDb "просто подходит", для некоторых людей, но если после изучения особенностей базы данных (в исчерпывающем официальное руководство) у вас нет своего" адского да " момента, вы, вероятно, должны двигаться дальше.

Я бы не рекомендовал использовать CouchDb, если вы просто хотите использовать "правильный инструмент для правильной работы". потому что вы узнаете, что вы не можете просто использовать его таким образом, и вы будете в конечном итоге злиться и писать сообщения в блоге, такие как "где соединяются в CouchDb ?"и" где находится управление транзакциями ?". Действительно, Couchdb-парадоксально-очень прозрачен, но в то же время требует смены парадигмы и изменения того, как вы подходите к проблемам, чтобы действительно сиять (и действительно работать).

но как только вы это сделали, это действительно окупается. Мне лично нужны очень веские причины или крупный нарушитель сделки проект, чтобы выбрать другую базу данных, но до сих пор я не встретил ни одного.

задайте себе этот вопрос? И вы будете решать ваш выбор БД.

  1. вам нужно мастер-мастер? Затем CouchDB. В основном CouchDB поддерживает репликацию master-master, которая ожидает, что узлы будут отключены в течение длительных периодов времени. В MongoDB не будет делать хорошо в этой среде.
  2. вам нужно максимальная пропускная способность R/W? Тогда MongoDB
  3. вам нужен окончательный долговечность одного сервера потому что ты только один сервер БД? Затем CouchDB.
  4. вы заносите массивные данные установить, что нужно осколки при сохранении безумной пропускной способности? Потом Монгодб.
  5. вам нужен сильный последовательность данных? Потом Монгодб.
  6. вам нужен высокий в наличии базы данных? Затем CouchDB.
  7. вы надеетесь нескольких баз данных и несколько таблиц / коллекций? Тогда MongoDB
  8. вы есть пользователи мобильных приложений в автономном режиме и хотите синхронизировать свои данные на сервер? Тогда вам нужен CouchDB.
  9. вам нужно большое разнообразие запрос двигателя? Тогда MongoDB
  10. вам нужен большой сообщество использовать БД? Тогда MongoDB

я суммирую ответы, найденные в этой статье:

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

MongoDB: лучший запрос, хранение данных в BSON (более быстрый доступ), лучшая согласованность данных, несколько коллекций

CouchDB: Лучшая репликация, с мастером для управления репликацией и разрешения конфликтов, хранение данных в JSON (читаемый человеком, лучший доступ через REST сервисы), запрос через map-reduce.

Итак, в заключение, MongoDB быстрее, CouchDB безопаснее.

также:http://nosql.mypopescu.com/post/298557551/couchdb-vs-mongodb

обратите внимание на проблему с разреженными уникальными индексами в MongoDB. Я ударил его, и это очень громоздко обойти.

проблема в том , что у вас есть поле, которое уникально, если оно присутствует, и вы хотите найти все объекты, где поле отсутствует. Способ реализации разреженных уникальных индексов в Mongo заключается в том, что объекты, в которых отсутствует это поле, вообще не входят в индекс - они не могут быть получены запросом по этому полю - {$exists: false} просто не работает.

единственным обходным путем, который я придумал, является наличие специального нулевого семейства значений, где пустое значение переводится в специальный префикс (например, null:) - цифровой идентификатор UUID. Это настоящая головная боль, потому что нужно заботиться о преобразовании в/из пустых значений при записи/quering/чтении. Большая неприятность.

Я никогда не использовал выполнение javascript на стороне сервера в MongoDB (это не рекомендуется в любом случае), и их карта / сокращение ужасно производительность, когда есть только один узел Монго. Из-за всех этих причин я сейчас рассматриваю возможность проверить CouchDB, возможно, это больше подходит для моего конкретного сценария.

кстати, если кто - нибудь знает ссылку на соответствующую проблему Монго, описывающую проблему разреженного уникального индекса-пожалуйста, поделитесь.

Я уверен, что вы можете с Монго (более знакомы с ним), и уверен, что вы можете с дивана.

оба документа ориентированы (на основе JSON), поэтому в документах не будет "столбцов", а скорее полей, но они могут быть полностью динамическими.

Они оба делают это, вы можете посмотреть на другие факторы, на которых можно использовать: другие функции, о которых вы заботитесь, популярность и т. д. Google insights, indeed.com вакансии были бы способами взглянуть на популярность.

вы могли просто попробуйте я думаю, что вы должны быть в состоянии иметь монго работает в течение 5 минут.