ドキュメントを作成し、Couch に ID を作成させる場合、ID が既に存在するかどうかを確認しますか?それとも競合が発生する可能性がありますか?
私は自分のアプリで UUID を生成する必要があり、Couch に任せるのと何か違うのではないかと考えました。
ドキュメントを作成し、Couch に ID を作成させる場合、ID が既に存在するかどうかを確認しますか?それとも競合が発生する可能性がありますか?
私は自分のアプリで UUID を生成する必要があり、Couch に任せるのと何か違うのではないかと考えました。
そのためにはPOST /dbリクエストを使用しますが、基礎となる HTTP POST メソッドは冪等ではないという事実に注意する必要があります。ネットワークの問題により、クライアントが自動的に再試行する可能性があり、データベースに複数のドキュメントが作成される可能性があります。
Kxepal が既に述べたように、独自の _id を提供せずにドキュメントを POST することは一般的に推奨されません。
ただし、 を使用GET /_uuids
してサーバーから UUID のリストを取得し、それをドキュメントの保存に使用できます。返される UUIDは使用されるアルゴリズムによって異なりますが、重複の可能性は (ほとんどの目的で) 取るに足らないほど小さいものです。
一括ドキュメント インターフェイスを使用している場合でも、ドキュメント ID を指定できますし、指定する必要があります。そのステップをスキップすると、再送信されたリクエストが重複したドキュメントを作成するという問題がさらに悪化します。一方、ID を割り当て、リクエストの一部が (プロキシの再接続の場合のように) カウチデータベースに 2 回到達した場合、応答にはいくつかの競合が含まれますが、無視しても問題ありません。あなた、同じリクエストで