CouchDBでドキュメントのIDを生成する必要がありますか、それを生成するにはCouchDBに依存する必要がありますか?これらのアプローチのメリットとデメリットは何ですか?これらのオプションにパフォーマンス上の影響はありますか?couchdb文書では、自動生成されたIDまたは手動IDの割り当てはどれが良いですか?
答えて
CouchDBに関する限り、違いはありません。 Frederickは、順次IDがわずかに速いことは間違いありません。 /_uuids?count=10
を照会すると、UUIDが順次(デフォルト)であることがわかります。
しかし、ランダムIDを使用しても、圧縮を実行すると、すべてが.couch
ファイルの内部で「正しい」順序になり、その時点で違いはありません。だから、長期的には、私は通常それについて心配していません。
主な点は、主に順次IDを使用することです。 this articleとcouchdb bookのこのビットは説明しているように、ランダムIDを使用すると、内部的には効率が非常に低い構造になります。スピードもディスク上のスペースも同じです。
[http://wiki.apache.org/couchdb/HttpGetUuids]は、生成したCouchDB IDを使用する場合は「シーケンス」アルゴリズムの略です。私たちのプロジェクトでは、以下のように独立してIDを生成することにしました。** sha1(uuid())** CouchDBへのGET要求を減らすには –
Sir。 1つのIDを使用して他のIDを予測でき、認証が不可能なために長いIDを使用するため、アプリケーションURLにシーケンシャルIDを使用することはできません。 –
あなたのアプリを2つ以上の別々のインスタンスに分けた場合、自己生成IDはほとんど処理できません。異なるインスタンス間の同期は瞬間的ではないためです。このための解決策は、SQLデータベースを使用するなど、IDの生成(または利用可能性の確認)専用のサーバーを1つ作成し、文書作成のゲートとして機能させることです。
一方、サーバーが1つしかなく、これ以上必要ない場合は、自己生成uidに興味があるという利点が1つあります。一意でなければならないため、URLで使用できます。たとえば、ブログ投稿のタイトルのスラッグを_id
とします。
パフォーマンス面では、CouchDBの生成されたIDはかなり長いので、独自のIDが短ければ、かなりのディスクスペースを節約できます(ドキュメントが不足していると仮定します)。
BigCouch(複数インスタンス)を使用することを意味しますか? –
@DmitrySorin私は双方向レプリケーションを意味しました。私はBigCouchについてよく分かりませんが、私が読んだところでは、問題を解決するかもしれません... – Simon
上記の両方の回答は、順次IDのPROSについて説明しています。 ここでは、順次IDによって発生する大きな問題があります。
単一のIDを使用するドキュメント内の他のIDの予測可能性。
このため、我々は、他のIDが1つのIDを使用して、予測可能であること、およびURLの認証も可能ではないとして使用。(ファイル共有サービスによって行われたよう)に識別子としてアプリケーションURL内の連番IDを使用することはできません。
- 1. 自動インクリメントで割り当てられたID
- 2. 自動生成されたidプロパティを手動で設定する
- 3. スプリングデータcouchbaseではどのようにIDが自動生成されますか?
- 4. 自動生成されたID firebaseデータベースを取り除くにはどうすればいいですか?
- 5. djangoモデルで自動生成されたIDが見つかりません
- 6. ASP.NETでDBから自動生成されたID
- 7. nullまたはデフォルトの代わりに自動生成されるId 0
- 8. オートは、私はIDが自動的にdate.time.userのIDによって生成されたアクセスでDB用のフォームでIDを作成したいアクセス
- 9. プログラムで作成されたidにcssを割り当てる
- 10. 私はAutoCompleteExtendersに動的なIDを割り当てたいAJAToolKit
- 11. レールにidを手動で割り当てることはできません。
- 12. Symfonyで自動生成されたID値
- 13. XML文書で送信されたオブジェクトにIDを割り当てる
- 14. Asp.Net IDはいつ作成され、ユーザーに割り当てられますか?
- 15. プリペアドステートメントから自動生成された主キーID
- 16. 最初に挿入されたIDに割り当てられたIDが残っているのは、
- 17. カントが手動で生成したIDを返します
- 18. ASP.NET MVC/EF - 手動でIDを割り当てる(PK)
- 19. Cortana BOT Frameworkは自動生成されたIDを返します
- 20. 動的に割り当てられたID
- 21. JPA - persist()後に自動生成されたIDを返す
- 22. jqueryを使用して動的に作成されるボタンにクラスまたはIDを割り当てる
- 23. は手動で動的に生成されたGoogleのプラスワン」ボタン
- 24. 自動的に生成されたユーザーID
- 25. 自動生成されたIDを得る(オブジェクト化データストア)
- 26. * Design.csファイルは自動的にリセットされ、手動で書かれたコードは削除されますか?
- 27. SQL Serverでは、insert文の実行時またはトランザクションのコミット時にID値が生成または割り当てられますか?
- 28. 自動生成されたID番号をテキストボックスにコピーする方法は?
- 29. EFコードファースト - 値が手動で設定されていない場合は、自動的にインクリメントされた値を割り当てます。
- 30. LinqToSqlエンティティIDはいつ割り当てられますか?
順番に言うと、「順番を増やす」という意味ですか? 1またはその他の定数で増分されていませんか? –
IDは文字列なので、パフォーマンスを向上させるには、文字列の比較を使用して、それぞれの文字を「より大きい」ものにします。しかし、私が言ったように、コンパクションを実行すると、CouchDBはIDに関係なくバランスのとれたツリーを構築するため、パフォーマンスの向上は一時的なものに過ぎません。 – JasonSmith