すべてのインデックスファイルは、@indexes
と呼ばれるデータディレクトリのサブディレクトリ内にあります。このサブディレクトリ内には、各バケットの(バケット名とまったく同じ名前の)サブディレクトリがあります。
インデックスファイルは、<type>_<hexadecimal_signature>.view.N
の形式を持ち、各部の意味は次のとおりです:
type
- インデックスの種類でmain(アクティブvbucketsデータ)かreplica(レプリカvbucketsデータ)となります。
hexadecimal_signature
- これは、デザインドキュメントのmap/reduce関数で、これらの関数が変更されるか、新しいインデックスが作成された場合に計算されるMD5ハッシュの16進形式です。同じデザインドキュメントの複数バージョンが存在する(異なるシグネチャをもつ)ことを可能とします。これは短い期間のために起り、例えば、クライアントがインデックスのビルド/更新のトリガとなるようなインデックス(1インデックス== 1デザインドキュメント)へのstale=false
リクエストをそしてこの更新/ビルドが終了する前に行うと、デザインドキュメントが(別のmap/reduce関数を持って)更新されます。その上で現在ブロックされているすべてのクライアントにサービスが提供されるまで、インデックスの初期バージョンは、生きているままになります。そうしている間に新しいクエリがリクエストされると、常にインデックスの最新(第二の)バージョンにリダイレクトされます。これにより、任意の時点で同じデザインドキュメントインデックスファイルで複数のバージョンを持つこと(ただし短時間)を可能にします。
N
- インデックスファイルが作成されたときは、Nは常に1です。インデックスファイルが圧縮されるたびに、Nは1ずつ増加します。これは、vbucketデータベースファイルに何が起こるかということに似ています(「クエリ応答にデータがない、もしくは間違い(潜在的なサーバの問題による)」 を参照してください)。
各デザインドキュメントには、tmp_<hexadecimal_signature>_<type>
のような名前のサブディレクトリもあります。これは、初期インデックス作成のため(そしてすぐに増分最適化のため)に使用される一時ファイルを含むディレクトリです。このディレクトリ内のファイルは、デザインドキュメントの署名と生成されたUUIDによって形成された名前を持っています。これらのファイルは定期的に削除され、もはや有用ではなくなります。
デザインドキュメント内で定義されたすべてのビューはbtreeのデータ構造に裏打ちされており、すべて同じインデックスファイル内に存在します。したがって、各デザインドキュメントと、定義されているそれぞれのビューごとに、メインデータ用とレプリカデータ用の2つのファイルがあります。
例
shell> tree couch/0/\@indexes/ couch/0/@indexes/ ??? default ??? main_018b83ca22e53e14d723ea858ba97168.view.1 ??? main_15e1f576bc85e3e321e28dc883c90077.view.1 ??? main_440b0b3ded9d68abb559d58b9fda3e0a.view.1 ??? main_4995c136d926bdaf94fbe183dbf5d5aa.view.1 ??? main_fd2bdf6191e61af6e801e3137e2f1102.view.1 ??? replica_018b83ca22e53e14d723ea858ba97168.view.1 ??? replica_15e1f576bc85e3e321e28dc883c90077.view.1 ??? replica_440b0b3ded9d68abb559d58b9fda3e0a.view.1 ??? replica_4995c136d926bdaf94fbe183dbf5d5aa.view.1 ??? replica_fd2bdf6191e61af6e801e3137e2f1102.view.1 ??? tmp_018b83ca22e53e14d723ea858ba97168_main ??? tmp_15e1f576bc85e3e321e28dc883c90077_main ??? tmp_440b0b3ded9d68abb559d58b9fda3e0a_main ??? tmp_4995c136d926bdaf94fbe183dbf5d5aa_main ??? tmp_fd2bdf6191e61af6e801e3137e2f1102_main 6 directories, 10 files