5.1 8.8 SP1以降のバージョンのリファレンスに関する変更点

リファレンス属性は隠し属性で、リファレンス先オブジェクトごとに保持されます。これは、DSによって作成および保持されます。DSの新しいリファレンスコードは、Flexible Adaptable Information Manager (FLAIM)インデックスをベースにしています。これはDSが作成するLocalEntryIDIndexと呼ばれています。FLAIMはインデックスを維持しますが、使用方法はDSが決定します。DN値が追加または削除されると、FLAIMはインデックスを自動的に更新します。インデックス内の各キーは合成キー(リファレンス先のオブジェクトのDN+リファレンス元オブジェクトのエントリID)です。たとえば、エントリID343のオブジェクトがあり、オブジェクト#899をポイントする「メンバー」値が存在する場合、FLAIMは899+343というインデックスでキーを自動生成します。これでDSはインデックス内のルックアップを実行し、オブジェクト#899をポイントしているすべてのオブジェクトを検索できるようになります。参照元のすべてのオブジェクトを記憶するために、オブジェクト#899自体がリファレンス属性を保持する必要はありません。実際、FLAIMはインデックスがどのように使われるかを認識せずにインデックスを保持しますが、DSにはインデックスの使用方法を認識しているコードが存在します。

ただし、リファレンスを維持する新しい方法では、既存のeDirectoryインスタンスを8.8以降のバージョンにアップグレードするときにデータベースをアップグレードする必要があります。アップグレードでは、新しいインデックスの作成が必要で、そこでデータベースの各エントリを詳細に検証することが必要になります。また、データベース内の各エントリから「リファレンス」属性をすべて削除することも必要です。さらに、DNを埋め込んでいたDSが使用する内部オクテット文字列属性が、オクテット文字列値と一緒に保存する新しいDN値を生成する必要も出てきます。これらの処理はすべて、大規模なデータベースでは非常に時間のかかるプロセスです。DSは新しいFLAIM機能を使ってリファレンスの整合性を保持するように変更されており、それが新しいインデックスに依存しているため、この変換が完了するまで、DSを実際に稼働できません。したがって、初めて既存データベースを開いたときに、すべてのリファレンス属性を新しいインデックスに変更する必要があります。大型データベースの場合、実際に開いてアプリケーションが使用できる状態になるまで数時間かかることがあります。