Счетчик аналитики с использованием sofa и CouchApp

#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.

Удачи!