NoSQL - MongoDB vs CouchDB

Я полный ползунок, когда дело касается движения NoSQL. Я много слышал о MongoDB и CouchDB. Я знаю, что между ними есть различия. Что вы рекомендуете изучать как первый шаг в мире NoSQL?

Ответ 1

Смотрите следующие ссылки

Обновление: я нашел отличное сравнение баз данных NoSQL.

MongoDB (3.2)

  • Написано в: C++
  • Основной момент: хранилище документов JSON
  • Лицензия: AGPL (Драйверы: Apache)
  • Протокол: Пользовательский, двоичный (BSON)
  • Репликация master/slave (автоматическое переключение при сбое с наборами реплик)
  • Sharding встроенный
  • Запросы являются выражениями JavaScript
  • Запускать произвольные функции JavaScript на стороне сервера
  • Имеет геопространственную индексацию и запросы
  • Несколько систем хранения с различными эксплуатационными характеристиками
  • Производительность над функциями
  • Проверка документов
  • Журналирование
  • Мощная структура агрегации
  • В 32-битных системах, ограничено ~ 2,5 Гб
  • Интегрированный текстовый поиск
  • GridFS для хранения больших данных + метаданных (на самом деле не FS)
  • Центр обработки данных осведомлен

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

Например: для большинства вещей, которые вы делаете с MySQL или PostgreSQL, но наличие предопределенных столбцов действительно сдерживает вас.

CouchDB (1.2)

  • Написано в: Erlang
  • Основной момент: согласованность БД, простота использования
  • Лицензия: Apache
  • Протокол: HTTP/REST
  • Двунаправленная (!) Репликация,
  • непрерывный или специальный,
  • с обнаружением конфликта,
  • Таким образом, мастер-мастер репликации. (!)
  • MVCC - операции записи не блокируют чтения
  • Предыдущие версии документов доступны
  • Аварийный (надежный) дизайн
  • Время от времени требует уплотнения
  • Просмотры: встроенная карта/уменьшить
  • Форматирование просмотров: списки и шоу
  • Возможна проверка документов на стороне сервера
  • Аутентификация возможна
  • Обновления в режиме реального времени через _changes (!)
  • Обработка вложений

Лучше всего использовать: для накопления, иногда изменяющихся данных, для которых должны выполняться предварительно определенные запросы. Места, где важно управление версиями.

Например: CRM, CMS системы. Репликация мастер-мастер - это особенно интересная функция, позволяющая легко развертывать несколько сайтов.

Ответ 2

Если вы приехали из мира MySQL, MongoDB будет "чувствовать" гораздо более естественным для вас из-за поддержки запросов на языке.

Я думаю, что это делает его настолько дружелюбным для многих людей.

CouchDB фантастичен, если вы хотите использовать действительно отличную поддержку репликации master-master с помощью установки multi- node, возможно, в разных центрах обработки данных или что-то в этом роде.

Репликация MongoDB (набор реплик) является установкой master-slave-slave-slave- *, вы можете писать только мастеру в наборе реплик и читать из любого из них.

Для стандартной конфигурации сайта это нормально. Он очень хорошо отображает использование MySQL.

Но если вы пытаетесь создать глобальную службу, такую ​​как CDN, которая должна поддерживать синхронизацию всех глобальных узлов, даже если чтение/запись для всех из них, что-то вроде репликации в CouchDB станет для вас огромным благом.

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

Вот краткий обзор, поэтому он имеет смысл:

  • CouchDB сохраняет все ваши данные в дереве b-tree
  • Вы не можете "запросить" его динамически с помощью чего-то вроде "SELECT * FROM user WHERE..."
  • Вместо этого вы определяете дискретные "представления" ваших данных... "вот представление обо всех моих пользователей", "вот представление всех пользователей старше 10", "здесь приведен вид всех пользователей старше, чем 30" и т.д.
  • Эти представления определяются с использованием подхода map-reduce и определяются как функции JavaScript.
  • Когда вы определяете представление, БД начинает подавать все документы БД, которым вы назначили представление, через него и записывать результаты своих функций как "индекс" этих данных.
  • Есть несколько базовых запросов, которые вы можете делать на представлениях, таких как запрос определенного ключа (ID) или диапазона идентификаторов, независимо от того, что делает ваша функция map/reduce.
  • Прочитайте эти слайды, это лучшее разъяснение карты/уменьшения в Couch, которое я видел.

Таким образом, оба этих источника используют JSON-документы, но CouchDB следует этому более "универсальному и может синхронизироваться с миром", что является фантастическим, если вам это нужно, в то время как MongoDB на самом деле является MySQL мира NoSQL.

Итак, если это больше похоже на то, что вам нужно/нужно, пойдите для этого.

Небольшие различия, такие как бинговый протокол Mongo, и интерфейс RESTful CouchDB - все мелкие детали.

Если вам нужна необработанная скорость и, к черту, безопасность данных, вы можете заставить Mongo работать быстрее, чем CouchDB, поскольку вы можете сказать, что он работает из памяти, а не передает вещи на диск, за исключением редких интервалов.

Вы можете сделать то же самое с Couch, но протокол HTTP-протокола будет на 2-4 раза медленнее, чем сырая двоичная связь с Mongo в этой "скорости над всем!". сценарий.

Имейте в виду, что безумная безумная скорость бесполезна, если сбой сервера или сбой диска развращают и тосты вашей БД в забвение, так что точка данных не такая удивительная, как может показаться (если вы не делаете торговлю в реальном времени системы на Уолл-стрит, и в этом случае посмотрите на Redis).

Надеюсь, что все это поможет!

Ответ 4

На рынке появилось много новых баз данных NoSQL, чем когда-либо прежде. Я предлагаю даже взглянуть на магический квадрант Gartner, если вы ищете базу данных, которая также будет полезна для корпоративных приложений на основе поддержки, расширяемости, управления и стоимости.

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

Я хотел бы предложить Couchbase всем, кто еще не пробовал, но не основан на версии, показанной в отчете (2.5.1), потому что это почти 2 версии, за которыми стоит CB Server сегодня, приближаясь к выпуску 4,0 в 2H15.

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

Другая часть, касающаяся Couchbase как поставщика/продукта, заключается в том, что это многопользовательский тип БД. Он может выступать в качестве чистого хранилища K/V, Document Oriented Database с многомерным масштабированием, Memcached, кэшировать с сохранением и поддерживает ANSI 92-совместимый SQL с автоматическими объединениями, репликацией на кластеры DR одним нажатием кнопки и даже имеет мобильный компонент, встроенный в экосистему.

Если ничего другого, стоит проверить последние тесты:

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

Ответ 5

Видео Edureka в youtube относительно NoSQL - одни из лучших видеоуроков. Я начал с MongoDb и Cassandra после просмотра этих видеороликов.

https://www.youtube.com/watch?v=gJFG04Sy6NY
https://www.youtube.com/watch?v=KSq6tMMXZ8s
https://www.youtube.com/watch?v=3z1KFA2qcSo

Хорошие презентации доступны на 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 

Презентация Edureka в слайд-шоу - это расширение видео на YouTube. Вы можете рассматривать эту презентацию как сводку видео YouTube.