ディレクトリ設計


目次
 

はじめに

基本的な用語

設計手順概要

設計手順詳細

成果物イメージ

Return to Directory Page

 

はじめに

ディレクトリを設計する上で、ディレクトリを利用する側の設計とディレクトリを構築する側の設計が存在する。厳密にこの両者を分類することは難しいが、以降では、ディレクトリを利用する側の設計手法を記述する。

 

基本的な用語

    下記にディレクトリに関する基本的な用語を記述する。以降の内容を把握するには、最低限、下記の用語を理解していないと先に進めない。
       
     
  1. DITとは、エントリという情報の集まりを階層的に配置したものと考えられる。
 
     
    図1.DITの概要
     
     
  1. エントリは、自身を一意に識別するDN(識別名)を持つ。またエントリは、属性の集まりであり、そのエントリを生成する際に必ず生成する属性、任意で生成する属性を決定するのがオブジェクトクラスである。属性は、属性名と属性値から構成される。属性名はその属性に対する名称になり、属性値は、その属性名に対する実体のデータである。当該エントリが何のオブジェクトクラスに該当するかについても属性として記述する。

  2.  
図2.エントリの概要
 
  1. オブジェクトクラスは、親になるクラスをスーパクラスといい、親になるクラスの性質を引き継いで新たに属性を追加したものをサブクラスという。ディレクトリ上のオブジェクトクラスは、オブジェクトを生成する際に必ず必要な属性を必須属性、任意に必要な属性を任意属性の二種類の属性群を定義したものと考えられる。オブジェクトクラスは何らかの既存のオブジェクトクラスをもとにして生成される。すなわち、スーパクラスで定義した必須属性、任意属性は、そのサブクラスでも同様に必須属性、任意属性として扱われる。さらに、サブクラス独自に必要な必須/任意属性を追加することができる。
図3.オブジェクトクラスの概念図
 

設計手順概要

ディレクトリを設計する際の概略手順を下記に記す。尚、作業の進め方としては、下記手順をウォーターフォール的に進めるのではなく、スパイラル的に作業を進め、徐々にディレクトリモデルを精査していくのがよいと思われる。
 
 
表.ディレクトリ作業手順
項番 作業項目 作業概要 最終成果物 備考
1 データ項目整理 既存の項目に新規業務要件も含めて、不要項目、重複項目、追加項目等を洗い出す。 特になし  
 
最終成果物は必要ないが、一時的に次  
工程のために何らかのドキュメントを残  
したほうがよい
2 DIT設計 データ項目の整理結果をDITにマッピングしてみる。 DIT定義書  
 
2から5までの作業を繰り返す。  
 
3 エントリ設計 エントリの内容を設計する。 エントリ設計書  
 
一つのモデル(ポンチ絵等)を基に叩いて  
いく方法を用いると作業が進めやすい。ただし、業務要件がすべて網羅されているかについてのチェックを最後に必ず実施する必要がある。
3-1 属性抽出 各エントリに必要な属性項目の洗い出し、属性型の決定。 オブジェクトクラス定義書  
3-2 オブジェクトクラス定義 各エントリに必須/任意の属性を抽出し、オブジェクトクラスを  
定義する。
   
4 アクセスパターン調査 上記結果に基づいて、アクセスパターンを検証する。    
5 ディレクトリ精査作業 アクセスパターンや性能要件、メンテナンス性を考慮して  
ディレクトリの精査作業を行う。
   
6 INDEX設計 アクセスパターンによりINDEX定義が必要な項目の抽出を行う。 サーバ側で 
INDEX定義書
作業結果は、ディレクトリサーバ構築担当者に伝達する必要有り。
 

設計手順詳細

  1. データ項目整理
  1. DIT設計
  2. 1.の整理結果をツリー構造で表現してみる。また、ディレクトリ構成を作る上では、下記の考え方で作業を進めるとよいと思われる。
     

     
  3. エントリ設計

  4.  
  5. アクセスパターン調査
  6.  1.〜3.までの結果に基づいて、業務APからのアクセスパターンを作成する。
     

  7. ディレクトリ精査作業
  8.  1.〜3.の結果と4.の調査結果に性能要件、メンテナンス性等の物理的な要件を加味して、検討する。
     

     
  9. INDEX設計
  10. 5.で精査されたモデルに対して、性能要件上INDEX付与が必要な属性の洗い出しを行う。
    尚、この作業結果は、ディレクトリサーバ環境構築の担当者に提供されるべき情報である。
     
     
     

成果物イメージ

DIT定義書
エントリ設計書
 
××.○○○エントリ設計書 

DN:cn=職員番号,ou=経理課,o=○×会社 
 
OID
クラス名
スーパクラス
78943 経理職員 職員
 
 
項番
属性
属性名
長さ上限 
(バイト)
必須/任意
属性型
エントリと属性の関連
主キー
INDEX
検索条件
詳細
1 職員番号 cn 20 必須 cis 1:1   完全一致 職員を一意に識別する番号
2 職員名 sname 40 必須 ces 1:1        
3 役職 spost 20 必須 ces 1:n   1-2    
4 職員住所 saddress 128 任意 ces 1:1   2 大文字小文字を区別  
5 職員電話番号 stelno 20 任意 cis 1:1   3    
6 参加プロジェクト swork 40 任意 DN 1:0,1,n   1-1 ワイルドカードを使用した検索  
7 顔写真 sphoto 2G 任意 bin 1:1       当該職員の顔写真
 
 

表.エントリ設計書の意味定義
項目
意味
項番 項目の番号
XX. DIT定義書で記述されたエントリとの対応番号
○○○ エントリの名称
DN エントリに付与される識別名
OID オブジェクトクラスのオブジェクト識別子
クラス名 エントリのクラス名
スーパークラス クラス名で割り当てたクラスの親クラス名
属性 エントリに含まれる属性名
属性名 DN内に記述するキーワード
長さ上限(バイト) 属性に入力されるデータの最大サイズ
必須/任意 
 
エントリが生成された場合にその属性が必須属性か任意属性かの分類
属性型 属性に入力されるデータの型(ディレクトリサーバのマニュアル参照)。 
 
  • bin:イメージデータを格納する属性型
  • ces:検索、比較操作で、ASCII英大文字小文字を区別して照合する属性型
  • cis:検索、比較操作で、ASCII英大文字小文字を区別しないで照合する属性型
  • tel:検索、比較操作で、cisと同様であるが、加えて比較の際に、空白、ハイフンを無視する属性型
  • dn   検索、比較操作で、cisと同様であるが、DN正規化を行ってから比較する属性型
  • エントリと属性の関連  エントリと属性とがどのような関連を持っているかを記述。(ex. 1:1、1:N、1:0 or 1、1:1 or N、1:0 or 1 or N等)。
    主キー 同クラスのエントリを一意に識別するキー項目に○を記述する。
    INDEX  索引が必要な項目に数字を入力する。複合キーの場合、同一の番号を入力し、索引順が存在すれば、?-1、?-2のように記述する。
    検索条件  その属性をどのように検索するかを記述する(属性の型を決めるための要素)。
    詳細 エントリの詳細内容を記述する。
    ※スーパクラスで定義されている属性も記述すること。
     
     

    オブジェクトクラス定義書
     
     
    オブジェクトクラス定義書 

     
     
    項番
    OID
    objectClass
    objectClass名
    必須属性
    オプション属性
    スーパクラス
    1 10001 トップ top オブジェクトクラス    
    2 10678 別名 alias 別名先エントリ名   トップ 
     
    3 19674 country 国名 記述、検索ガイド 
     
    トップ 
     
    4 12271 地域 locality 地域名または都道府県名 記述、検索ガイド、他参照、地域属性集合 
     
    トップ 
     
    5 11078 組織  organization 組織名 組織属性集合 
     
    トップ 
     
    6 10997 組織単位(組織の一部門) oraganizationalUnit 組織単位名 組織属性集合 
     
    トップ 
     
    7 29789 person 一般名、姓 記述、他参照、電話番号、ユーザパスワード 
     
    トップ 
     
     
     

    表.オブジェクトクラス定義書の意味定義
    項目
    意味
    項番  項目の番号
    OID  オブジェクトクラスのオブジェクト識別子
    objectClass 一つのエントリに必要なデータ項目の集まりを一つの器として定義したものの名前
    objectClass名 属性にobjectClassの記載が必要な際の名称。日本語のobjectClass名が利用可能かどうかは実装依存のため、英語名称にする。基本的なobjectClassは標準として、定義されているため、基本的なものは既存に定義されているものをスーパークラスとして、そのサブクラスに新たなobjectClassを定義するのが望ましい。
    必須属性 objectClassの中に複数の属性が存在することになるが、そのobjectClassで定義されているエントリが生成される場合、必ず値を設定する必要がある属性名を記述する。
    オプション属性  objectClass中の属性で、このobjectClassで定義されているエントリが生成される場合に必ず値を生成する必要のない属性名を記述する。
    スーパークラス 当該objectClassがここで記述されたスーパークラスを元に定義されたことを示す。
     
     


    Return to Top