インデックスマネージャは、サーバオブジェクトの属性の1つで、データベースインデックスの管理に使用します。eDirectoryでは、データベースインデックスを使用することによって、クエリの処理速度が大幅に向上します。
eDirectoryには、基本的なクエリの機能を提供するインデックスのセットが付属しています。これらデフォルトのインデックスの対象となる属性を次に示します。
cn |
別名オブジェクト名 |
dc |
破損通知 |
名 |
メンバー |
姓 |
リファレンス |
uniqueID |
同等権利保有者 |
GUID |
NLS:共通許可証 |
またカスタマイズされたインデックスを作成して、ユーザの環境におけるeDirectoryのパフォーマンスをさらに向上させることができます。たとえば、デフォルトでインデックス付けされていない属性を検索する新しいLDAPアプリケーションが組織に導入された場合、その属性に対するインデックスを作成すると便利です。
注: インデックスを使用することにより検索の処理速度は上がりますが、インデックスの数が増えるほど更新にかかる時間が長くなります。一般には、パフォーマンスの問題が、特定のディレクトリの検索に関係すると思われる場合に、新しいインデックスを作成します。
ConsoleOneを使用して、インデックスを作成または削除します。インデックス名、状態、タイプ、ルール、インデックス付き属性など、インデックスのプロパティを表示したり、管理することができます。
プレディケート統計データを使用すると、どのようなインデックスを追加したらユーザの環境で便利であるかを確認できます。「プレディケートデータ」を参照してください。
インデックスを作成するには、次を実行します。
ConsoleOneで、該当するサーバオブジェクトを右クリックして、[プロパティ]>[インデックスマネージャ]>[追加]の順にクリックします。
[インデックス名]に名前を入力します。
インデックス名を入力しなかった場合は、選択した属性が自動的にインデックス名として設定されます。
重要: 「$」文字は属性値の区切り記号として使用されます。インデックス名に「$」文字を使用する場合、前にバックスラッシュ(/)を付けます。LDAPでインデックスを作成するときに「$」文字がエスケープされます。
属性を選択します。
インデックスのルールを選択します。
値: 属性の値全体または値の最初の部分を照合します。たとえば、「LastName」が「Jensen」になっているエントリ、および「LastName」が「Jen」で始まるエントリを検索する場合に、値の照合というルールが使用されます。
存在: 特定の属性値ではなく、属性の存在のみを検索します。「Login Script」属性を持つエントリをすべて検索するクエリは、存在のルールに基づくインデックスを使用します。
下位文字列: 属性値文字列のサブセットを照合します。たとえば、「der」という値を含む「LastName」を検索するクエリを実行すると、「Derington」、「Anderson」、および「Lauder」が照合の結果として返されます。 下位文字列インデックスは、作成や維持を行うときに最も多くのリソースが消費されるインデックスです。
[OK]をクリックすると、インデックステーブルが更新されます。
[適用]をクリックすると、limberがバックグラウンドプロセスとして再起動され、変更内容が有効になります。
作成したインデックスが不要になる場合があります。必要のない、ユーザ定義または自動で作成したインデックスは、削除できます。[説明ステータス]を使用して、重要度の低いインデックスを調べることができます。
ConsoleOneで、該当するサーバオブジェクトを右クリックして[プロパティ]を選択し、[インデックスマネージャ]>[削除]の順にクリックします。
削除したいユーザインデックスまたは自動追加インデックスを選択します。
[削除]>[OK]の順にクリックするとインデックステーブルが更新されます。
[適用]をクリックすると、limberがバックグラウンドプロセスとして再起動され、変更内容が有効になります。
一時的にインデックスをオフラインにすることで、処理のピーク時にパフォーマンスを調整できます。たとえば、ユーザ定義のインデックスの使用をすべて中断すると、バルクロードを高速化できます。オブジェクトを追加または変更するときは定義されているインデックスを更新する必要があり、すべてのインデックスをアクティブにするとデータのバルクロードの速度が遅くなるためです。バルクロードが完了すると、再びインデックスをオンラインにできます。
ConsoleOneで、該当するサーバオブジェクトを右クリックして[プロパティ]を選択し、[インデックスマネージャ]>[プロパティ]の順にクリックします。
オフラインにするインデックスを選択して、[オフライン]をクリックします。
表示されているテーブルでは、インデックスの状態が[オンライン]から[オフライン]に変わります。インデックスは、次のいずれかの状態になります。
[OK]をクリックします。
あるサーバで便利に使用されているインデックスがあり、このインデックスを他のサーバでも使用する場合は、他のサーバにインデックス定義をコピーできます。またプレディケートデータを調べると、これとは逆のケースが発生する場合もあります。つまり、複数のサーバで使用されていたインデックスが、そのいずれかのサーバで不要になるといったケースです。このような場合、インデックスが不要になったサーバからインデックスを削除できます。
インデックスマネージャを使用すると、他のインスタンスに影響を与えずに、インデックスの1つのインスタンスを処理できます。
ConsoleOneで、該当するサーバオブジェクトを右クリックして[プロパティ]を選択し、[インデックスマネージャ]>[他のサーバ]の順にクリックします。
インデックスをコピーするには、インデックスのコピー先となるサーバを選択して、[インデックスを作成]をクリックします。
サーバがリストにない場合は、[サーバをロード]を使用してコピーするサーバを検索します。
同じ属性とタイプを持つインデックスがコピー先のサーバにある場合、そのインデックスの名前および状態は、コピーされるインデックスの名前および状態で上書きされます。
インデックスを削除する場合は、削除するインデックスがあるサーバを選択して、[インデックスを削除]を選択します。
[閉じる]をクリックします。
LinuxまたはSolarisシステム上のインデックスを作成、表示、または削除するには、ndsindexユーティリティを使用します。
eDirectory LDAPサーバで、Server Side Sorting(SSS)コントロールまたはVirtual List View(VLV)コントロールを使用してLDAP検索を実行する場合は、パフォーマンスに問題がない限りインデックスを作成する必要があります。eDirectoryサーバは、eDirectoryによって管理されるインデックスを保持します。ndsindexユーティリティを使用すると、このようなインデックスをLinuxまたはSolarisシステム上で管理できます。
ndsindex add [-h host_name] [-p port] -D user LDAP DN [-W | -w password] -n eDirectoryServerDN indexDefinition1 [, indexDefinition2, ....
ndsindex list [-h host_name] [-p port] -D user LDAP DN [-W | -w password] -n eDirectoryServerDN [indexname1, indexname2, ....
ndsindex delete [-h host_name] [-p port] -D user LDAP DN [-W | -w password] -n eDirectoryServerDN indexname1 [, indexname2, ...
表 43. ndsindexのオプション