1

データを CouchDB ドキュメントに保存したいのですが、RDBMS での操作に慣れています。データベース内で一意の値のみを含むフィールドを作成したいと考えています。ドキュメントを保存し、一意のキーを持つドキュメントが既に存在する場合、CouchDB からのエラーが予想されます。

ドキュメント ID を使用して、自動生成されたドキュメント ID を自分の値に置き換えることができると思いますが、他のフィールドを一意のキー ホルダーとして設定する方法はありますか。一意のキーに関するベスト プラクティスはありますか?

4

2 に答える 2

2

あなたが言ったように、生成_idされたものは一意として強制されます。これが CouchDB における唯一の真のユニーク制約であり、独自のアプリケーションでそれをそのまま使用する人もいます。

ただし、これは単一の CouchDB インスタンスにのみ適用されます。_idレプリケーションやその他のインスタンスの導入を開始すると、競合が複数のノードで生成された場合に競合が発生する可能性があります。(_idの生成方法によっては、これが問題になる場合とそうでない場合があります)

于 2014-02-03T17:33:03.880 に答える
1

ドミニクが言った_idように、一意であることがほぼ確実な唯一のパラメータです。確かなことの 1 つは、「データベース」を別の方法で設計する必要があるということです。_idはデータベース全体になることに注意してください。これにより、ドキュメントは 1 つしか持てなくなります_id

_id文字列である必要があります。つまり、配列や数値などを使用することはできません。

アクセスを公開したい場合は、システムを台無しにしない方法で ID を生成する方法を考える必要があります。

私はそのようなIDを思いついた:

"email:email@example.com"

私の特定のケースでは、人々が同じメールで複数の認証を作成できないようにするためにうまく機能しました。しかし、Documinic が言ったように、複数のマスターを持っている場合、競合の可能性について考える必要があります。

于 2014-02-03T18:00:05.803 に答える