如何存储CouchDB文件的投票?

时间:2010-11-29 22:54:07

标签: couchdb vote document-database

我正在寻找一个如何在文档中存储投票的好例子。 例如,如果我们有一个帖子的文件,用户可以投票。 如果我将投票存储在文档的字段中,例如:

票数:12345

如果作者正在编辑帖子并在此期间有人投票,会发生什么?作者无法保存,因为有人投票,文件将进行新修订。

另一种选择是单独存储投票,每次投票是文件,还是创建一个每个帖子都有投票权的文件?

如果我决定将每个投票存储在不同的文档中,那么聚合这些数据会有多困难?或者我每次显示文档时都要计算它?

你有什么解决方案?

问候

2 个答案:

答案 0 :(得分: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

如果有效,我宁愿将投票存储在文件中。但我还没有尝试过这些方法。如果你分享你的解决方案,我会很高兴。

答案 1 :(得分:0)

我发现这篇文章对于许多用户更新文档时如何避免冲突的主题非常有帮助,例如投票或在博客帖子中添加评论。

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

第三个和最好的(?)解决方案是将每个评论存储为一个单独的文档,其中包含指向博客文章的链接。使用复杂的键可以很容易地查询属于帖子的所有评论以及查询用户发表的所有评论,甚至按时间顺序排序。