Может ли использование представлений и обработчиков обновлений привести к тому, что Couch слишком много знает о структуре документа?
Недавно я поделился некоторыми идеями с моей командой по следующим направлениям:
"Привет, ребята, многое из того, что мы делаем на нашем.NET-уровне, Couch уже поддерживает с помощью представлений и обработчиков обновлений".
например:
При возврате документов: мы хотим вернуть документы без поля _rev и "REST"- указать ссылки на другие документы или включить этот документ в ответ.
При вставке документов: мы бы хотели, чтобы у нас была возможность предоставить объект, который во многом похож на тот, который был возвращен пользователю при выполнении операции get.
При обновлении: мы хотели бы разрешить обновления на месте (или, по крайней мере, их иллюзию).
Все это кажется довольно тривиальным для представлений Couch и обработчиков обновлений; но самый большой аргумент, который я получил против этого, заключался в том, что у Couch было бы слишком много знаний о структуре документа, что, очевидно, вызовет проблемы с обслуживанием и затруднит обмен нашего уровня доступа к данным.
Существуют ли руководства по лучшей практике, которые говорят: "Да, это круто" или "Нет, ты никогда не хотел этого делать"?
1 ответ
Это так, _show
, _update
, а также _list
функции не очень полезны для нечеловеческих вещей. По сути, вы вкладываете половину своей логики в CouchDB Javascript и половину в клиент. Вы всегда должны синхронизировать Javascript на стороне сервера с клиентами. Вы не сможете запускать разные версии клиентского программного обеспечения с одним и тем же кодом на стороне сервера.
Есть три исключения, когда _show
, _update
, а также _list
полезны
- Если удаленный клиент требует определенных данных (XML, HTML и т. Д.),
_show
а также_list
милые. - Если вам действительно нужно использовать меньшую пропускную способность, функции могут создать протокол сжатия для конкретного приложения. То есть
_update
Функция обновления на месте - это просто сжатый способ сказать: "Извлеките этот документ, обновите один элемент и сохраните новый документ". - Если у вас много разных типов клиентов, с разными языками, разными версиями, разными ошибками и т. Д., Вы можете сделать клиентов максимально простыми и сделать Couch максимально интеллектуальным.