叉子或插件的想法
如果你是一名 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 请求并在服务器端执行您需要的任何操作,例如将相关信息插入您的分析数据库。
祝你好运!