在沙发模型中的独特约束

时间:2011-10-02 06:45:22

标签: couchdb couchrest

Couchrest实现类似唯一约束的最佳做法是什么。我可以用_id做到这一点,但是如果我想在多个字段上实现它,而不是作为一个复合体,甚至是单独的。比如说我希望电子邮件ID和用户名都是唯一的,只是为了指出一个例子。

如果不使用_id字段,是否有最好的做法。

1 个答案:

答案 0 :(得分:2)

在CouchDB中强制唯一性的唯一方法是使用_id字段。

我认为对于需要唯一性的其他事情的最佳实践是允许客户端存储它,然后检查作为外部程序(或线程或cron作业等)的唯一性,然后对此作出反应。例如,map / reduce视图可以轻松生成相同字段值的计数,因此搜索具有count > 1的字段很容易。接下来,更正您找到的任何重复项。

您甚至可以将此视为具有请求/拒绝或请求/批准步骤的简单工作流程。存储初始文档,但不是官方,例如它有"confirmed":true。它只会在离线检查程序执行上述检查后收到确认。

我认为在现实世界的应用程序中,使用CouchDB开发的人推迟了唯一性约束,出于同样的原因,人们不会过早地进行优化。您可能会注意到99%的用户总是输入一个唯一的电子邮件地址,因此尝试始终强制执行唯一性只是为您自己创建一个您不需要的问题。