#couchdb #couchapp #erlangweb
#couchdb #couchapp #erlangweb
Вопрос:
Couchb имеет интерфейс REST. Это означает, что обновления данных являются эксклюзивными для вызовов PUT.
Я изучаю способы реализации скромных счетчиков аналитики и наткнулся на возможности couchdb, sofa и couchapp — которые действительно классные, учитывая мою сильную ориентацию на JavaScript.
Однако большинство сервисов веб-аналитики заканчиваются выполнением вызовов обновления count с использованием запроса некоторого ресурса, обычно в теге IMG или SCRIPT.
- Есть ли способ, которым я могу использовать CouchApp для использования запроса GET для выполнения моих подсчетов?
- Будет ли это злоупотреблением архитектурой? Я имею в виду, что не все в couch является REST — i, g, — административные части таковыми не являются.
Я был бы очень рад услышать, что скажут эксперты 🙂
** Отредактировано *
Я только что отметил, что CouchDB и Sofa поставляются с веб-сервером Mochiweb! Может быть, есть способ, которым я мог бы это подключить?
Комментарии:
1. Ого, классное имя, Радагаст Коричневый.
Ответ №1:
Идея вилки или плагина
Если вы программист на Erlang (или вы ищете новый проект для изучения Erlang), то вы определенно можете написать все, что захотите, в качестве плагина / расширения для CouchDB. Самый маленький известный мне пример — это Die CouchDB, мое доказательство концепции, которое добавляет один запрос, который просто остановит сервер.
https://github.com/iriscouch/die_couchdb
В принципе, вы могли бы написать плагин или форк CouchDB для обработки запросов GET и делать с ними что угодно.
Примечание об архитектуре REST
Я не очень хорошо знаком с реализациями аналитики, но суть REST и HTTP в том, что GET
запросы не имеют побочных эффектов и / или являются идемпотентными (выполнение 50 запросов ничем не отличается от выполнения одного).
В результате прокси могут и будут кэшировать множество ответов GET как стандартными, так и нестандартными способами. Это кажется несовместимым с методами отслеживания пользователей и сбора данных; однако, возможно, аналитические инструменты все еще считают, что преимущества перевешивают затраты.
Для большинства людей, вероятно, проще использовать внешние инструменты.
Идея журнала
Один из приемов заключается в том, чтобы получить что-либо из Couch, а затем проверить запись в журнале из couch. Вы можете получить журнал couchb, выполнив запрос /_log
от имени администратора. В журнале будут отображаться IP-адреса пользователей, путь запроса и любые параметры запроса.
Например
$ curl -X GET http://localhost:5984/?userid=abcdeamp;windowsize=1024x768amp;color=blue
{"couchdb":"Welcome","version":"1.1.0"}
$ curl localhost:5984/_log | grep userid
[Mon, 23 May 2011 00:34:54 GMT] [info] [<0.1409.0>] 127.0.0.1 - - 'GET' /?userid=abcdeamp;windowsize=1024x768amp;color=blue 200
Затем вы можете обработать эту запись в журнале и повторно вставить в свою фактическую базу данных analytics самостоятельно.
Идея оболочки
Окончательное решение — запустить простой обратный прокси, который преобразует ваши запросы GET во все, что вам нужно. NodeJS становится популярным для подобных задач, но вы можете использовать любую веб-платформу, которую предпочитаете: PHP, ASP, JSP, все, что вы уже знаете.
Вы просто отвечаете на запрос GET и делаете все, что вам нужно на стороне сервера, например, вставляете соответствующую информацию в свою базу данных analytics.
Удачи!