分叉或插件的想法
如果您是 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 在此类任务中越来越受欢迎,但您可以使用您喜欢的任何 Web 平台:PHP、ASP、JSP,无论您已经知道什么。
您只需响应 GET 请求并在服务器端执行您需要的任何操作,例如将相关信息插入您的分析数据库。
祝你好运!