フォークまたはプラグインのアイデア
あなたがErlangプログラマーである場合(またはErlangを学ぶための新しいプロジェクトを探している場合)、CouchDBへのプラグイン/拡張機能として必要なものを確実に作成できます。私が知っている最小の例は、Die CouchDBです。これは、サーバーを停止するだけのクエリを1つ追加する概念実証です。
https://github.com/iriscouch/die_couchdb
原則として、CouchDBのプラグインまたはフォークを作成して、GETリクエストを処理し、それらを使用して何でも行うことができます。
RESTアーキテクチャに関する注意
私は分析の実装にあまり精通していませんが、RESTとHTTPのポイントは、GET
クエリに副作用がないか、べき等であるということです(50個のクエリを実行することは1つを実行することと同じです)。
結果として、プロキシは、標準的な方法と非標準的な方法の両方で、多くのGET応答をキャッシュできます。これは、ユーザーの追跡やデータ収集の手法とは互換性がないようです。ただし、分析ツールは、メリットがコストを上回っていると考えているかもしれません。
ほとんどの人にとって、外部ツールを使用する方がおそらく簡単です。
ログのアイデア
1つのトリックは、Couchから何かを取得してから、couchからログエントリを確認することです。管理者としてクエリを実行すると、カウチログを取得できます/_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など、既に知っている任意のWebプラットフォームを使用できます。
GETリクエストに応答するだけで、関連情報を分析データベースに挿入するなど、サーバー側で必要なことをすべて実行できます。
幸運を!