Идея форка или плагина
Если вы программист Erlang (или ищете новый проект для изучения Erlang), то вы определенно можете написать все, что хотите, в качестве плагина/расширения для CouchDB. Наименьший пример, который я знаю, — это Die CouchDB, моя проверка концепции, которая добавляет один запрос, который просто остановит сервер.
https://github.com/iriscouch/die_couchdb
В принципе, вы можете написать плагин или форк CouchDB для обработки запросов GET и делать с ними что угодно.
Примечание об архитектуре REST
Я не очень хорошо знаком с реализациями аналитики, но суть REST и HTTP в том, что запросы GET
не имеют побочных эффектов и/или являются идемпотентными (выполнение 50 запросов ничем не отличается от выполнения одного).
В результате прокси могут и будут кэшировать многие ответы GET как стандартными, так и нестандартными способами. Это кажется несовместимым с методами отслеживания пользователей и сбора данных; однако, возможно, инструменты аналитики все еще считают, что преимущества перевешивают затраты.
Для большинства людей, вероятно, проще использовать внешние инструменты.
Лог идея
Один трюк состоит в том, чтобы ПОЛУЧИТЬ что-нибудь с дивана, а затем проверить запись в журнале с дивана. Вы можете получить журнал дивана, запросив /_log
в качестве администратора. В журнале будут отображаться IP-адреса пользователей, путь запроса и любые параметры запроса.
Например
$ curl -X GET http://localhost:5984/?userid=abcde\&windowsize=1024x768\&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=abcde&windowsize=1024x768&color=blue 200
Затем вы можете обработать эту запись в журнале и повторно вставить ее в свою фактическую базу данных аналитики самостоятельно.
Идея обертки
Окончательное решение — запустить простой обратный прокси-сервер, который преобразует ваши GET-запросы во все, что вам нужно. NodeJS становится популярным для таких задач, но вы можете использовать любую веб-платформу, которую вы предпочитаете: PHP, ASP, JSP, все, что вы уже знаете.
Вы просто отвечаете на запрос GET и делаете все, что вам нужно на стороне сервера, например, вставляете соответствующую информацию в свою базу данных аналитики.
Удачи!
person
JasonSmith
schedule
23.05.2011