NoSQL - MongoDB проти CouchDB [закрито]


154

Я повний ноб, коли мова йде про рух NoSQL. Я чув багато про MongoDB та CouchDB. Я знаю, що між ними є відмінності. Якому ви рекомендуєте вчитися як перший крок у світ NoSQL?


Як перший крок, mongoDB краще, тому що це легше вчитися, але у нього є деякі проблеми. Не найкращий вибір для використання конкретної бази даних noSQL, це залежить від того, що вам потрібно зробити. Ознайомтеся з документами, ключовими значеннями, орієнтованими на графіки, стовпцями
Кріс

Відповіді:


148

Дивіться наступні посилання

Оновлення : Я знайшов чудове порівняння баз даних NoSQL .

MongoDB (3.2)

  • Написано: C ++
  • Основний пункт: Магазин документів JSON
  • Ліцензія: AGPL (драйвери: Apache)
  • Протокол: Спеціальний, двійковий (BSON)
  • Реплікація головного / підлеглого (автоматична відмова з набором реплік)
  • Вбудований заточування
  • Запити - це вирази javascript
  • Запустіть довільні функції JavaScript на стороні сервера
  • Має геопросторову індексацію та запити
  • Кілька двигунів зберігання з різними характеристиками
  • Продуктивність над функціями
  • Засвідчення документа
  • Журналістика
  • Потужна структура агрегації
  • У 32-бітових системах, обмежених ~ 2,5 Гб
  • Інтегрований пошук тексту
  • GridFS для зберігання великих даних + метаданих (насправді не FS)
  • Центр обробки даних обізнаний

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

Наприклад : для більшості речей, які ви б зробили з MySQL або PostgreSQL, але попередньо визначені стовпці насправді стримують вас.

CouchDB (1.2)

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

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

Наприклад : CRM, CMS системи. Реплікація Master-master - особливо цікава функція, що дозволяє легко розгортати багато сайтів.


1
Для всіх, хто має відношення до ліцензії на сервер MongoDB AGPL, ознайомлення з ліцензійною політикою mongodb може допомогти.
Патрік

@amra Отже, ви маєте на увазі, якщо я зберігаю дані та читаю лише, найкращим вибором є couchdb?
verystrongjoe

@verystrongjoe Це залежить від складності даних та запитів. Як правило, не можна сказати, який із них найкращий.
amra

@amra Ок. Але .. Якщо він буде накопичувати дані і вибирати дані, і мені доведеться вибирати між монго і диваном, який з них краще?
verystrongjoe

CouchApps "більше не рекомендується" з ~ 2012 року: docs.couchdb.com/en/latest/ddocs
Тім Сильвестр

123

Якщо ви приїжджаєте зі світу MySQL, MongoDB "почуватиметься" набагато природніше для вас через мовну підтримку, подібну до запитів.

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

CouchDB є фантастичним, якщо ви хочете використовувати дійсно чудову підтримку реплікації master-master за допомогою множинного вузла, можливо, в різних центрах обробки даних чи щось подібне.

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

Для стандартної конфігурації сайту це добре. Це дуже добре відображає використання MySQL.

Але якщо ви намагаєтесь створити глобальну службу на зразок CDN, яка повинна підтримувати всі глобальні вузли синхронізованими, навіть незважаючи на те, що їх читають / записують, щось на зразок реплікації в CouchDB стане для вас величезною користю.

Незважаючи на те, що у MongoDB є мова, що нагадує запит, яку ви можете використовувати, і ви відчуваєте себе дуже інтуїтивно, CouchDB використовує підхід "зменшити карту" та це поняття поглядів. Спочатку це здається дивним, але, коли ви причасуєтесь до цього, він справді починає відчувати інтуїтивність.

Ось короткий огляд, і це має певний сенс:

  • CouchDB зберігає всі ваші дані у b-дереві
  • Ви не можете "запитувати" його динамічно за допомогою кшталт "SELECT * OF user WHERE ..."
  • Натомість ви визначаєте дискретні "перегляди" своїх даних ... "тут представлення всіх моїх користувачів", "тут представлення всіх користувачів старше 10" "тут представлення всіх користувачів старше 30" та так далі.
  • Ці представлення визначаються за допомогою підходу зменшення карт і визначаються як функції JavaScript.
  • Коли Ви визначаєте подання, БД починає подавати всі документи БД, яким Ви призначили представлення, через нього та записуючи результати Ваших функцій як "індекс" на цих даних.
  • Існує кілька основних запитів, які ви можете виконати в представленнях даних, як-от запит на певний ключ (ідентифікатор) або діапазон ідентифікаторів, незалежно від того, що робить ваша карта / функція зменшення.
  • Прочитайте ці слайди , це найкраще уточнення карти / зменшення на Дивані, яке я бачив.

Отже, обидва ці джерела використовують документи JSON, але CouchDB дотримується цього більше "кожен сервер є майстром і може синхронізуватися зі світом", підхід, який є фантастичним, якщо вам це потрібно, в той час як MongoDB - це справді MySQL світу NoSQL.

Отже, якщо це звучить більше як те, що вам потрібно / хочете, продовжуйте це.

Невеликі розбіжності, як двійковий протокол Монго проти RESTful інтерфейс CouchDB, - це незначні деталі.

Якщо ви хочете отримати швидку швидкість і, до пекла, безпеку даних, ви можете змусити Mongo працювати швидше, ніж CouchDB, оскільки ви можете сказати, що він працює з пам'яті і не вводить речі на диск, за винятком обмежених інтервалів.

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

Майте на увазі, що неочищена божевільна швидкість є марною, якщо збій сервера або збій диска псується і відганяє ваш БД у забуття, так що точка даних не така дивна, як може здатися (якщо ви не займаєтеся реальними торговими системами на стіні Вулиця, в такому випадку подивіться на Redis).

Сподіваюся, що все допомагає!


"MongoDB - це справді MySQL світу NoSQL" - я не знаю, чи все змінилося, але ця стаття 2014 року не погоджується: sarahmei.com/blog/2013/11/11/why-you-should-never-use- mongodb
Onur Yıldırım

Хоча, по духу, я думаю, що коментар все ще працює, ви маєте рацію, МНОГО змінилося за останнє півріччя і мій коментар слід легко відхилити.
Ріяд Калла


1

Зараз на ринку існує набагато більше баз даних 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, Документоорієнтована база даних з багатовимірним масштабуванням, Memcached, кеш-пам'ять з наполегливістю і підтримує сумісний з ANSI 92 SQL з автоматичним приєднанням, реплікація в кластери DR натисканням кнопки та навіть має мобільний компонент, вбудований в екосистему.

Якщо нічого іншого, варто перевірити останні показники:

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.