2

ドキュメントに投票を保存する方法の良い例を探しています。たとえば、投稿されたドキュメントがあり、ユーザーがそれに投票できるとします。たとえば、投票をドキュメントのフィールドに保存すると、次のようになります。

投票数 : 12345

投稿者が投稿を編集しているときに誰かが投票するとどうなりますか? 誰かが投票し、ドキュメントが新しいリビジョンになるため、作成者は保存できません。

もう 1 つのオプションは、投票を個別に保存するか、各投票をドキュメントにするか、すべての投稿に対して投票を含むドキュメントを作成するかです。

すべての投票を別のドキュメントに保存することにした場合、このデータを集計するのはどれくらい難しくなるでしょうか? または、ドキュメントを表示するたびに計算する必要がありますか?

あなたのソリューションは何ですか?

よろしく

4

2 に答える 2

1

これにより、競合が発生します。CouchDB ガイドには、競合の処理に関する章があります。 http://guide.couchdb.org/draft/conflicts.html

ミドルウェア (PHP など) を使用すると、競合を認識して処理できます。(コード例については wiki を参照してください: http://wiki.apache.org/couchdb/Replication_and_conflicts )

純粋な CouchApp を提供したい場合は、更新ハンドラーを使用して、いくつかの一般的な競合ケースを自動的に管理できるようにする必要があります。http://wiki.apache.org/couchdb/Document_Update_Handlers

それが機能する場合、投票をドキュメントに保存することをお勧めします。しかし、私はまだこれらのアプローチを自分で試していません。解決策を共有していただければ幸いです。

于 2010-11-30T22:56:11.060 に答える
0

この記事は、投票やブログ投稿へのコメントの追加など、多くのユーザーがドキュメントを更新するときに競合を回避する方法について非常に役立つことがわかりました。

http://www.cmlenz.net/archives/2007/10/couchdb-joins

3 番目の最良の (?) ソリューションは、各コメントをブログ投稿へのリンクを含む個別のドキュメントとして保存することでした。複雑なキーを使用することで、投稿に属するすべてのコメントを簡単にクエリしたり、ユーザーが作成したすべてのコメントを時系列で並べ替えてクエリしたりすることが非常に簡単になりました。

于 2011-09-08T20:44:28.513 に答える