2012-01-07 6 views

答えて

6

CouchDBに関する限り、違いはありません。 Frederickは、順次IDがわずかに速いことは間違いありません。 /_uuids?count=10を照会すると、UUIDが順次(デフォルト)であることがわかります。

しかし、ランダムIDを使用しても、圧縮を実行すると、すべてが.couchファイルの内部で「正しい」順序になり、その時点で違いはありません。だから、長期的には、私は通常それについて心配していません。

+1

順番に言うと、「順番を増やす」という意味ですか? 1またはその他の定数で増分されていませんか? –

+1

IDは文字列なので、パフォーマンスを向上させるには、文字列の比較を使用して、それぞれの文字を「より大きい」ものにします。しかし、私が言ったように、コンパクションを実行すると、CouchDBはIDに関係なくバランスのとれたツリーを構築するため、パフォーマンスの向上は一時的なものに過ぎません。 – JasonSmith

1

主な点は、主に順次IDを使用することです。 this articlecouchdb bookのこのビットは説明しているように、ランダムIDを使用すると、内部的には効率が非常に低い構造になります。スピードもディスク上のスペースも同じです。

+0

[http://wiki.apache.org/couchdb/HttpGetUuids]は、生成したCouchDB IDを使用する場合は「シーケンス」アルゴリズムの略です。私たちのプロジェクトでは、以下のように独立してIDを生成することにしました。** sha1(uuid())** CouchDBへのGET要求を減らすには –

+0

Sir。 1つのIDを使用して他のIDを予測でき、認証が不可能なために長いIDを使用するため、アプリケーションURLにシーケンシャルIDを使用することはできません。 –

1

あなたのアプリを2つ以上の別々のインスタンスに分けた場合、自己生成IDはほとんど処理できません。異なるインスタンス間の同期は瞬間的ではないためです。このための解決策は、SQLデータベースを使用するなど、IDの生成(または利用可能性の確認)専用のサーバーを1つ作成し、文書作成のゲートとして機能させることです。

一方、サーバーが1つしかなく、これ以上必要ない場合は、自己生成uidに興味があるという利点が1つあります。一意でなければならないため、URLで使用できます。たとえば、ブログ投稿のタイトルのスラッグを_idとします。

パフォーマンス面では、CouchDBの生成されたIDはかなり長いので、独自のIDが短ければ、かなりのディスクスペースを節約できます(ドキュメントが不足していると仮定します)。

+0

BigCouch(複数インスタンス)を使用することを意味しますか? –

+0

@DmitrySorin私は双方向レプリケーションを意味しました。私はBigCouchについてよく分かりませんが、私が読んだところでは、問題を解決するかもしれません... – Simon

0

上記の両方の回答は、順次IDのPROSについて説明しています。 ここでは、順次IDによって発生する大きな問題があります。

単一のIDを使用するドキュメント内の他のIDの予測可能性。

このため、我々は、他のIDが1つのIDを使用して、予測可能であること、およびURLの認証も可能ではないとして使用。(ファイル共有サービスによって行われたよう)に識別子としてアプリケーションURL内の連番IDを使用することはできません。

関連する問題