2010-11-29 13 views
2

私は、文書に票を格納する方法の良い例を探しています。 たとえば、投稿記事があり、ユーザーが投票できる場合 私は、たとえば、文書内のフィールドに投票を保存する場合:CouchDB文書の投票方法は?

票:12345

を著者がポストを編集し、誰かが投票この時間の間にされた場合どうなりますか?誰かが投票して文書化すると新しいリビジョンになるため、著者は保存することはできません。

別のオプションは、別々に票を保管したり、各票を文書にしたり、各郵便ごとに票を持つ文書を作成することです。

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

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

について

答えて

1

これは矛盾します。衝突の処理については、CouchDB Guideに章があります。 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

もしうまくいけば、私はドキュメントに投票を保存することをお勧めします。しかし、私はこれらのアプローチを自分ではまだ試していませんでした。あなたのソリューションを分かち合うなら、私は幸せになれます。

0

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

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

第三と最高(?)ソリューションは、ブログ記事へのリンクを別の文書として、各コメントを保存しました。複雑なキーを使用すると、投稿に属するすべてのコメントをクエリするだけでなく、ユーザーが作成したすべてのコメントを時間順に並べ替えてクエリすることが非常に簡単になりました。

関連する問題