5.7. データベースパフォーマンスを改善するためのインデックスの使用
データベースのサイズによっては、クライアントアプリケーションによる検索に多くの時間とリソースがかかる場合があります。したがって、検索パフォーマンスを向上させるには、インデックスを使用できます。
インデックスは、ディレクトリーデータベースに保存されるファイルです。ディレクトリー内のデータベースごとに個別のインデックスファイルが保持されます。各ファイルには、インデックスを付ける属性に従って名前が付けられます。特定の属性のインデックスファイルには、複数のタイプのインデックスを含めることができます。たとえば、cn.db というファイルには、共通名 (cn) の属性のすべてのインデックスが含まれます。
ディレクトリーを使用するアプリケーションのタイプに応じて、さまざまなタイプのインデックスを使用します。アプリケーションによっては、頻繁に特定の属性を検索するか、別の言語でディレクトリーを検索するか、あるいは特定の形式でデータが必要な場合があります。
5.7.1. ディレクトリーインデックスタイプの概要 リンクのコピーリンクがクリップボードにコピーされました!
Directory Server は以下のインデックスタイプをサポートしています。
- 存在インデックス
-
uidなどの特定の属性を持つエントリーをリスト表示します。 - 等価インデックス
-
cn=Babs Jensenなどの特定の属性値を含むエントリーをリスト表示します。 - 概算インデックス
-
近似 (または "類似") 検索を可能にします。たとえば、エントリーには
cn=Babs L. Jensenの属性値が含まれる場合があります。概算検索では、cn~=Babs Jensen、cn~=Babs、およびcn~=Jensenに対する検索でこの値が返されます。
近似インデックスでは、ASCII 文字を使用して名前を英語で表記する必要があります。
- 部分文字列インデックス
-
エントリー内の部分文字列を検索できます。たとえば、
cn=*dersonを検索すると、この文字列を含む Bill Anderson、Norma Henderson、Steve Sanderson などの一般的な名前が一致します。 - 国際インデックス
- 国際ディレクトリー内の情報の検索パフォーマンスが向上します。インデックスを作成する属性にロケール (国際化 OID) を関連付けることで、一致ルールを適用するようにインデックスを設定できます。
- ブラウジングインデックスまたは仮想リストビュー (VLV) インデックス
- Web コンソールのエントリーの表示パフォーマンスが向上します。任意のディレクトリーツリーブランチに ブラウジングインデックス を作成して、表示パフォーマンスを向上させることができます。
5.7.2. インデックス化のコストの評価 リンクのコピーリンクがクリップボードにコピーされました!
インデックスを使用して検索パフォーマンスを向上させる場合は、次の点を考慮してください。
インデックスを使用すると、エントリーの修正にかかる時間が長くなります。
維持するインデックスの数が増えるほど、ディレクトリーによるデータベースの更新時間が長くなります。
インデックスファイルはディスク領域を使用します。
インデックスする属性が増えるほど、作成されるファイルも多くなります。さらに、長い文字列を含む属性に対して近似インデックスと部分文字列インデックスを作成すると、インデックスファイルが急速に大きくなる可能性があります。
インデックスファイルはメモリーを使用します。
より効率的に実行するために、Directory Server は可能な限り多くのインデックスファイルをメモリーに格納します。インデックスファイルは、データベースキャッシュのサイズに応じて利用可能なプールのメモリーを使用します。インデックスファイルの数が多いと、データベースキャッシュも大きくなります。
インデックスファイルの作成には時間がかかります。
インデックスファイルは検索時の時間を短縮しますが、不要なインデックスを維持することは時間の浪費につながります。ディレクトリーを使用する際は、クライアントアプリケーションが必要とするファイルのみを維持します。