1

一意の制約のようなものを実装するための Couchrest のベスト プラクティスは何ですか。_id を使用してこれを行うこともできますが、必ずしも複合としてではなく、複数のフィールドに実装したい場合はどうすればよいでしょうか。たとえば、例を示すために、メール ID とユーザー名の両方を一意にする必要があるとします。

_id フィールドを使用せずにこれを行うベスト プラクティスはありますか。

4

1 に答える 1

2

CouchDB で一意性を強制する唯一の方法は、_idフィールドを使用することです。

一意性が必要な他のものに対するベストプラクティスは、クライアントがそれを保存できるようにし、外部プログラム (またはスレッド、または cron ジョブなど) として一意性をチェックし、それに反応することだと思います。たとえば、map/reduce ビューは同一のフィールド値の数を簡単に生成できるため、フィールドの検索count > 1は簡単です。次に、見つかった重複を修正します。

これを、要求/拒否または要求/承認のステップを含む単純なワークフローとして扱うこともできます。最初のドキュメントを保存しますがたとえば"confirmed":true. オフライン チェッカーが上記のチェックを実行した後にのみ確認を受け取ります。

現実世界のアプリケーションでは、CouchDB を使用して開発する人々は、時期尚早に最適化しないようにするのと同じ理由で、一意性制約を先延ばしにしていると思います。ユーザーの 99% は常に一意のメール アドレスを入力していることにおそらく気付くでしょう。常に一意性を強制しようとすると、必要のない問題が発生するだけです。

于 2011-10-02T14:06:00.627 に答える