Может ли использование представлений и обработчиков обновлений привести к тому, что Couch слишком много знает о структуре документа?

Недавно я поделился некоторыми идеями с моей командой по следующим направлениям:

"Привет, ребята, многое из того, что мы делаем на нашем.NET-уровне, Couch уже поддерживает с помощью представлений и обработчиков обновлений".

например:

При возврате документов: мы хотим вернуть документы без поля _rev и "REST"- указать ссылки на другие документы или включить этот документ в ответ.

При вставке документов: мы бы хотели, чтобы у нас была возможность предоставить объект, который во многом похож на тот, который был возвращен пользователю при выполнении операции get.

При обновлении: мы хотели бы разрешить обновления на месте (или, по крайней мере, их иллюзию).

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

Существуют ли руководства по лучшей практике, которые говорят: "Да, это круто" или "Нет, ты никогда не хотел этого делать"?

1 ответ

Это так, _show, _update, а также _list функции не очень полезны для нечеловеческих вещей. По сути, вы вкладываете половину своей логики в CouchDB Javascript и половину в клиент. Вы всегда должны синхронизировать Javascript на стороне сервера с клиентами. Вы не сможете запускать разные версии клиентского программного обеспечения с одним и тем же кодом на стороне сервера.

Есть три исключения, когда _show, _update, а также _list полезны

  1. Если удаленный клиент требует определенных данных (XML, HTML и т. Д.), _show а также _list милые.
  2. Если вам действительно нужно использовать меньшую пропускную способность, функции могут создать протокол сжатия для конкретного приложения. То есть _update Функция обновления на месте - это просто сжатый способ сказать: "Извлеките этот документ, обновите один элемент и сохраните новый документ".
  3. Если у вас много разных типов клиентов, с разными языками, разными версиями, разными ошибками и т. Д., Вы можете сделать клиентов максимально простыми и сделать Couch максимально интеллектуальным.
Другие вопросы по тегам