Node.js + CouchDB vs CouchDB

Я спрашиваю себя, почему следует использовать комбинацию Node.js + CouchDB и автономного подхода CouchDB. Каковы преимущества получения Node.js в игру? Любые комментарии/впечатления приветствуются.

Ответ 1

Что может сделать Node, а CouchDB не может

Node.js может осуществлять межпроцессорную связь с использованием unix-сокетов, загрузку файлов в реальном времени, он может запускать сервер websocket или даже SPDY-сервер.

Вы можете создать DNS-сервер или даже обработать материал геотаргетинга (MaxMind db).

Хороший материал CouchDB может делать

Однако с CouchDB существует много интересных вещей, даже если их будет немного сложнее достичь. Например, с помощью функции _changes вы можете осуществлять межпроцессное общение, систему чата в режиме реального времени (длительный опрос).

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

CouchDB поразительный, и это Node.js, поэтому важно, какое приложение вы планируете разрабатывать, какой ваш вариант использования.

Ответ 2

Существует третий вариант: CouchDB спереди, с Node.js обратно...

Традиционно база данных находится на внутренней стороне, а не на интерфейсе, поэтому эта конфигурация кажется вроде "назад", но выслушайте меня...

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

Собственно, в этой конфигурации у вас могут быть любые специализированные рабочие, которые запускают Python или Java или Ruby или что-то еще. Например, предположим, что на вашем сайте есть функция "Создать-PDF", и вы хотите использовать Python для создания PDF файлов. Вы просто пишете программу python, которая просматривает CouchDB для любых документов PDF_Request, обрабатывает их и вставляет файлы PDF обратно в CouchDB. Вы не пишете все свое приложение на Python, вы можете просто написать свою функцию PDF Create в Python и оставить остальную часть вашего приложения без изменений.

Теперь предположим, что вы реплицируете свой CouchApp на другой компьютер или мобильное устройство (которое запускает CouchDB, но не Node или Python) Нет проблем, вы все равно можете вставить "PDF_Request" в свой CouchDB. Когда вы в конечном итоге синхронизируются с сервером, ваш PDF-запрос будет отображаться и обрабатываться программой-создателем pdf файла, и вы получите свой PDF файл. Ваш кучапп по-прежнему работает на реплицированном CouchDB, хотя "вспомогательных программ" не существует, потому что они полностью отключены от основного приложения.

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

Ответ 3

Ответ Nick - особенно интригующий. Чтобы подчеркнуть подход, вот видео от Mikeal Rogers, когда он работал в CouchOne (?), Предлагая метод couchdb + node -behind: http://nosql.mypopescu.com/post/2896329122/node-js-couchdb-crazy-delicious.

С другой стороны, я думаю, что существует одна область, в которой падает даже тот инновационный подход и что (более сложная) безопасность. Базовые уровни безопасности работают нормально, но если вы хотите, чтобы контент контролировался более сложными уровнями безопасности, couchdb map-reduce не сокращается. Однако некоторые простые node.js могли бы.

Итак, по некоторым причинам безопасности (т.е. чтобы избежать необеспеченных результатов уменьшения карты), node.js может быть лучше в интерфейсе для реализации этих мер безопасности.

FYI.

Ответ 4

кушетка сама по себе (couchapp):

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

http://googlecode.blogspot.co.uk/2009/09/chris-anderson-couchdb-relaxing-offline.html

node.js предназначен для работы на стороне сервера, поэтому он не подходит для этого варианта использования, за исключением архитектуры, описанной в ответе nick perkins.

node + кушетка

Если вы делаете что-то большее, чем простое приложение js, node имеет яркое сообщество со всеми типами библиотек и пакетов, чтобы сделать что угодно.

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

Ответ 5

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

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

Вы можете захотеть эту функциональность, если вам нужно проверить наличие документа X перед вставкой Y.