3

CouchにはRESTインターフェースがあります。これは、データ更新がPUT呼び出し専用であることを意味します。

私は謙虚な分析カウンターを実装する方法を検討しており、JavaScriptの強い方向性を念頭に置いて、couchdb、sofa、couchappの機能に出くわしました。

ただし、ほとんどのWeb分析サービスは、通常はIMGまたはSCRIPTタグで、リソースの要求を使用してカウント更新呼び出しを行うことで終了します。

  • couchAppを使用してGETリクエストを使用してカウントを実行する方法はありますか?
  • それはアーキテクチャの乱用でしょうか?つまり、ソファのすべてがRESTであるとは限りません。たとえば、管理部分はそうではありません。

専門家の話を聞いてとてもうれしいです:)

**編集済み*

CouchDBとSofaにはMochiwebWebサーバーが付属していることに気づきました。多分私がそれに引っ掛かることができる方法がありますか?

4

1 に答える 1

3

フォークまたはプラグインのアイデア

あなたが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リクエストに応答するだけで、関連情報を分析データベースに挿入するなど、サーバー側で必要なことをすべて実行できます。

幸運を!

于 2011-05-23T00:38:13.903 に答える