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