Подтвердить что ты не робот

Недостатки CouchDB

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

Что приходит на ум? Приложен список точек, которые я собрал. Есть что добавить?

  • Сообщения в блогах с заявления 2010 года "недостаточно зрелые" (независимо от того, что стоит).
  • Медленнее, чем в СУБД в памяти.
  • Обновления на месте требуют серверной логики (обработчики обновлений).
  • Торговля дисками против скорости: Базы данных могут стать огромными по сравнению с другими СУБД (однако существуют функции уплотнения).
  • "Только" возможная последовательность.
  • Временные представления больших наборов данных очень медленные.
  • Репликация больших баз данных может завершиться неудачно.
  • Парадокс Map/reduce требует переосмысления (только для полноты).

Единственное, что меня беспокоит, - это № 3 (обновления на месте), потому что это довольно неудобно.

4b9b3361

Ответ 1

  • Данные находятся в JSON

Это означает, что документы довольно большие (BigData, пропускная способность сети, скорость) и наличие описательных имен клавиш на самом деле болит, так как они составляют размер документа.

  • Нет встроенного полнотекстового поиска

    Хотя есть способы: couchdb-lucene, elasticsearch

plus еще несколько:

  • Он не поддерживает транзакции

Это означает, что соблюдение уникальности одного поля во всех документах небезопасно, например, принудительное использование имени пользователя уникальным. Еще одним следствием неспособности CouchDB поддерживать типичное понятие транзакции является то, что такие вещи, как inc/декрементирование значения и сохранение его обратно, также опасны. Есть не так много примеров, которые мы хотели бы просто вставить/уменьшить значение, где мы не могли просто сохранить отдельные документы отдельно и объединить их с представлением.

  • Реляционные данные

Если данные имеют большой смысл быть в 3-й нормальной форме, и мы пытаемся следовать этой форме в CouchDB, мы столкнемся с множеством проблем. Возможный способ решить эту проблему - это сопоставление просмотров, но мы можем постоянно бороться с системой. Если данные могут быть переформатированы для большей денормализации, то CouchDB будет работать нормально.

  • Хранилище данных

Проблема заключается в том, что временные представления в CouchDB на больших наборах данных очень медленные. Использование CouchDB и постоянных представлений может работать очень хорошо. Однако в большинстве случаев некоторая сортированная по столбцам база данных является гораздо лучшим инструментом для работы с хранилищем данных.

Но CouchDB Rocks!

Но не позволяйте ему распознавать вас: базы данных NoSQL, написанные в Erlang (CouchDB, Riak), являются лучшими, поскольку Erlang предназначен для распределенных систем. Получайте удовольствие от Couch!

Ответ 2

Еще 2 вещи, которые заставляют меня плакать при использовании CouchDB (хотя это потрясающе):

  • Он не предназначен для часто обновляемых данных.
  • Он не имеет встроенного полнотекстового поиска

Ответ 3

  • Недостаток ACL читателей (однако существует для писателей)

Как старый Lotus Domino pro, я искал CouchDB в качестве альтернативы новому проекту, который я начинаю и обнаружил, что ограничения на читателей очень слабы в Couch vs. Domino. В моей безопасности приложений важное соображение, и Couch потребует слоя промежуточного программного обеспечения для обеспечения безопасности чтения.

Если у вас есть база данных, в которой все в порядке, все определенные пользователи могут видеть все документы, тогда Couch выглядит как интересная платформа.

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

Примечание для разработчиков CouchDB: улучшите параметры безопасности платформы. Я понимаю, что они уменьшат производительность при использовании, но заметьте это и сделайте эту опцию доступной.

Теперь вернемся к определению используемой базы данных...

Ответ 4

  • в настоящее время нет поддержки специальных запросов (может измениться с появлением UnQL)
  • Отсутствие поддержки бинарного протокола для более быстрой связи

Ответ 5

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

Ответ 6

Отсутствие поддержки архивирования данных - Официальная поддержка архивации данных не предоставляется при распространении с открытым исходным кодом couch db.