【问题标题】:How to set a field containing unique key如何设置包含唯一键的字段
【发布时间】:2014-02-27 04:34:50
【问题描述】:

我想将数据保存在 CouchDB 文档中,因为我习惯于在 RDBMS 中这样做。我想创建一个只能包含数据库中唯一值的字段。如果我现在保存一个文档并且已经有一个具有唯一键的文档,我预计 CouchDB 会出错。

我想我可以使用文档 ID 并用我的值替换自动生成的文档 ID,但是有没有办法将其他字段设置为唯一的密钥持有者。关于唯一键的任何最佳做法?

【问题讨论】:

    标签: couchdb unique-key document-database


    【解决方案1】:

    如您所说,生成的_id 被强制执行为唯一的。这是 CouchDB 中唯一真正的唯一约束,有些人将其用于自己的应用程序。

    但是,这仅适用于单个 CouchDB 实例。一旦您开始引入复制和其他实例,如果在多个节点上生成相同的_id,您可能会遇到冲突。 (取决于您如何生成_ids,这可能是也可能不是问题)

    【讨论】:

      【解决方案2】:

      正如 Dominic 所说,_id 是唯一几乎可以保证是唯一的参数。可以肯定的一件事是您必须以不同的方式设计“数据库”。请记住,_id 将是数据库范围的。您将只能拥有一个带有此_id 的文档。

      _id 必须是字符串,这意味着您不能有数组或数字或其他任何内容。

      如果您想公开访问权限,您必须考虑如何生成您的 id 以不干扰您的系统。

      我想出了看起来像这样的 ID:

      "email:email@example.com"
      

      在我的特定情况下,它可以很好地防止人们在同一封电子邮件上创建多个身份验证。但正如 Documinic 所说,如果您有多个 master,则必须考虑可能的冲突。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-05
        • 1970-01-01
        • 2020-10-04
        • 1970-01-01
        • 1970-01-01
        • 2019-08-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多