2.2. データベースの作成および維持
ディレクトリーデータを整理するための接尾辞を作成したら、そのディレクトリーのデータを含むデータベースを作成します。
2.2.1. データベースの作成
ディレクトリーツリーは、複数の Directory Server データベースに配布できます。複数のデータベースにデータを分散する方法は 2 つあります。
- 各接尾辞に 1 つのデータベース各接尾辞のデータは個別のデータベースに含まれます。
- 個別の接尾辞に含まれるデータを格納するために、3 つのデータベースが追加されます。このツリーユニットの分割は、たとえば次の 3 つのデータベースに対応しています。この例では、DB1 には ou=people のデータおよび dc=example,dc=com のデータが含まれ、クライアントが dc=example,dc=com に基づいて検索を実行できるようにします。ただし、DB2 には ou=groups のデータのみが含まれ、DB3 には ou=contractors のデータのみが含まれます。
- 1 つの接尾辞に複数のデータベースがあります。
- ディレクトリーツリーの ou=people ブランチ内のエントリー数が非常に大きくなると、2 つのデータベースを格納しなければならないとします。この場合、ou=people に含まれているデータは 2 つのデータベースに分散できます。DB1 には
A-K
からの名前の人が含まれ、DB2 にはL-Z
からの名前が含まれます。DB3 には ou=groups のデータが含まれ、DB4 には ou=contractors のデータが含まれます。カスタムプラグインは、複数のデータベースにまたがってデータを単一の接尾辞から分散します。Directory Server のディストリビューションロジックの作成方法は、Red Hat コンサルティングにお問い合わせください。
2.2.1.1. コンソールを使用した既存の接尾辞の新規データベースの作成
- Directory Server コンソールで、Configuration タブを選択します。
- 左側のペインで Data を展開し、新しいデータベースを追加する接尾辞をクリックします。
- 接尾辞を右クリックし、ポップアップメニューから New Database を選択します。
example2
などのデータベースの一意の名前を入力します。データベース名は、英数字、ダッシュ(-
)、およびアンダースコア(_)の組み合わせになります。
Create database in フィールドには、デフォルトのデータベースディレクトリー(/var/lib/dirsrv/slapd-instance/db
)と新規データベースの名前が自動的に入力されます。また、別のディレクトリーの場所を入力またはブラウズすることもできます。
2.2.1.2. コマンドラインから単一の接尾辞用の新規データベースの作成
ldapmodify
コマンドラインユーティリティーを使用して、ディレクトリー設定ファイルに新しいデータベースを追加します。データベース設定情報は cn=ldbm database,cn=plugins,cn=config エントリーに保存されます。たとえば、新しいデータベースをサーバー example1
に追加します。
- ldapmodify を実行して、新規データベースのエントリーを作成します。
# ldapmodify
-a
-D "cn=Directory Manager" -W -p 389 -h server.example.com -x dn: cn=UserData,cn=ldbm database,cn=plugins,cn=config changetype: add objectclass: extensibleObject objectclass: nsBackendInstance nsslapd-suffix: ou=people,dc=example,dc=com追加されたエントリーは、root またはサブ接尾辞 ou=people,dc=example,dc=com のデータが含まれる UserData という名前のデータベースに対応します。 - 「コマンドラインでのルート接尾辞およびサブ接尾辞の作成」 の説明に従って、ルートまたは従属接尾辞を作成します。DN 属性で指定されるデータベース名は、接尾辞エントリーの
nsslapd-backend
属性の値に対応している必要があります。
2.2.1.3. 単一の接尾辞に複数のデータベースの追加
1 つの接尾辞は、複数のデータベースに分散できます。ただし、接尾辞を配布するには、ディレクトリーを拡張するためにカスタムディストリビューション機能を作成する必要があります。カスタムディストリビューション機能の作成に関する詳細は、Red Hat コンサルティングにお問い合わせください。
注記
エントリーが分散されたら、再分散できません。以下の制限が適用されます。
- ディストリビューション機能は、エントリーディストリビューションのデプロイ後は変更できません。
- エントリーを異なるデータベースに分散させる可能性がある場合は、LDAP modrdn 操作を使用してエントリーの名前を変更することができません。
- 分散ローカルデータベースは複製できません。
- エントリーを異なるデータベースに分散させる可能性がある場合は、ldapmodify 操作を使用してエントリーを変更することができません。
これらの制限に違反すると、Directory Server はエントリーを正しく特定して返さないようにします。
カスタムディストリビューションロジックプラグインを作成したら、そのプラグインをディレクトリーに追加します。
ディストリビューションロジックは、接尾辞で宣言された関数です。この関数は、この接尾辞に到達するすべての操作に対して呼び出されます。これには、接尾辞の前に開始するサブツリー検索操作が含まれます。ディストリビューション機能は、コンソールとコマンドラインインターフェースの両方を使用して接尾辞に挿入できます。
2.2.1.3.1. Directory Server コンソールを使用したカスタムディストリビューション機能の接尾辞への追加
- Directory Server コンソールで、Configuration タブを選択します。
- 左側のナビゲーションペインで Data を展開します。ディストリビューション機能を適用する接尾辞を選択します。
- 右側のウィンドウで Databases タブを選択します。
- 接尾辞に関連付けられているデータベースは、Databases タブにすでにリストされています。 をクリックして、追加のデータベースを接尾辞に関連付けます。
- ディストリビューションライブラリーへのパスを入力します。
- Function name フィールドにディストリビューション機能の名前を入力します。
2.2.1.3.2. コマンドラインを使用したカスタムディストリビューション機能の接尾辞への追加
- ldapmodify を実行します。
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
- 以下の属性を接尾辞エントリー自体に追加し、カスタムディストリビューションロジックに関する情報を提供します。
dn: suffix changetype: modify add: nsslapd-backend nsslapd-backend: Database1 - add: nsslapd-backend nsslapd-backend: Database2 - add: nsslapd-backend nsslapd-backend: Database3 - add: nsslapd-distribution-plugin nsslapd-distribution-plugin: /full/name/of/a/shared/library - add: nsslapd-distribution-funct nsslapd-distribution-funct: distribution-function-name
nsslapd-backend
属性は、この接尾辞に関連付けられたすべてのデータベースを指定します。nsslapd-distribution-plugin
属性は、プラグインが使用するライブラリーの名前を指定します。nsslapd-distribution-funct
属性は、ディストリビューション機能自体の名前を提供します。
ldapmodify コマンドラインユーティリティーの使用に関する詳細は、「コマンドラインでエントリーの管理」 を参照してください。