JP3810577B2 - ディレクトリ同期方法 - Google Patents

ディレクトリ同期方法 Download PDF

Info

Publication number
JP3810577B2
JP3810577B2 JP08366099A JP8366099A JP3810577B2 JP 3810577 B2 JP3810577 B2 JP 3810577B2 JP 08366099 A JP08366099 A JP 08366099A JP 8366099 A JP8366099 A JP 8366099A JP 3810577 B2 JP3810577 B2 JP 3810577B2
Authority
JP
Japan
Prior art keywords
update
directory
entry
application
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP08366099A
Other languages
English (en)
Other versions
JP2000276391A (ja
Inventor
賢太 志賀
菊地  聡
陽子 平島
敏治 中村
茂樹 武井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP08366099A priority Critical patent/JP3810577B2/ja
Publication of JP2000276391A publication Critical patent/JP2000276391A/ja
Application granted granted Critical
Publication of JP3810577B2 publication Critical patent/JP3810577B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、ディレクトリサービスに対する更新を、アプリケーションのデータベースに反映させるディレクトリ同期方法に関する。
【0002】
【従来の技術】
ディレクトリサービスとは、電子メールの送信相手の姓名等から電子メールの宛先を検索できるサービスであり、電子メールシステムにおける電子的な電話帳機能として利用されている。
【0003】
ディレクトリサービスに関する標準としては、CCITTの勧告であるX.500(ISO9594)が挙げられる。X.500は、ディレクトリサービスをクライアント−サーバ型の分散システム・アーキテクチャとして規定しており、クライアント−サーバ間の通信プロトコルとしてOSI(Open Systems Interconnection)の7レイヤ構造に従ったDAP(Directory Access Protocol)を定めている。
【0004】
X.500準拠のディレクトリサービスは、木構造(ディレクトリツリー)として階層管理されたデータモデルを有する。木の枝葉に相当する個所には、ディレクトリエントリが配置される。各々のエントリは、同一の親エントリを持つエントリ間で一意である相対名称(RDN:Relative Distinguished Name)と、木構造の根(ルート)からの経路を示すRDNの列である名称(DN:Distinguished Name)で一意に識別される。各々のエントリはユーザのメールアドレスに加え、姓名、電話番号、FAX番号、写真等、様々な情報を属性として記憶可能である。エントリは、必ず1つ以上のオブジェクトクラスに属する。ここで、オブジェクトクラスとは、或るエントリに存在しなければならない必須の属性、及び存在しても良い属性の集合を定義する。このオブジェクトクラス定義と木構造の定義をあわせ、ディレクトリスキーマと称している。
【0005】
一方、インターネットにおける標準化機関であるIETF(Internet Engineering Task Force)は、TCP/IPスタック上で動作するディレクトリ・クライアント−サーバ間プロトコルとして「LDAP:Light Weight Directory Access Protocol(RFC2251)」を標準化している。LDAPは、OSIスタック上で動作するDAPに比べて軽量である。
【0006】
ところで、最近の企業内、或いは企業間に跨る大規模情報システムにおいては、電子メールシステムやグループウェアなどの複数のアプリケーションを導入している事が多く、システム管理者は新入社員の入社や人事異動が発生する度に、複数のアプリケーションへユーザ登録を行なう必要がある。ところが、このような大規模情報システムにおいて実際に稼動しているアプリケーションの多くは、ユーザ情報を独自のデータベースを用いて、独自の形式で登録,管理しているため、一元管理は困難であるのが現状である。
【0007】
この問題を解決する技術として期待されているのが、ディレクトリ同期技術である。ディレクトリ同期技術とは、従来各アプリケーションが独自に登録,管理していた情報を全てディレクトリサービスにも登録して、ユーザ情報の更新は全てディレクトリサービスに対して行うよう一元化するとともに、ディレクトリサービスに対して行われた更新を自動的にアプリケーションのデータベースへ反映させる事により、ディレクトリサービスに登録された情報とアプリケーションのデータベースに登録された情報を同期させる技術である。
【0008】
ディレクトリ同期技術において、ディレクトリサービスに対する更新をアプリケーションのデータベースへ反映させる方法には、同期的反映方法と、非同期的反映方法がある。同期的反映方法は、ディレクトリサービスに対して更新が実行された時点で、アプリケーションのデータベースを更新する方法であり、ディレクトリサービスの情報とアプリケーションの情報の間の整合性がリアルタイムで保たれるものである。一方、非同期的反映方法は、指定された時刻、或いは一定間隔でディレクトリサービスの情報とアプリケーションの情報を同期させる方法であり、ディレクトリサービスに対する更新性能が劣化しないものである。
【0009】
非同期的反映方法を用いて同期を行うディレクトリ同期技術の具体例として、例えば、Zoomit社が開発したディレクトリ同期製品Zoomit VIAが知られている。Zoomit VIAでは、同期処理を行う際、ディレクトリサービス上に存在する全ディレクトリエントリの情報(スナップショット)と、前回同期処理を行った時点でのスナップショットとの差分をとることで、アプリケーションに対して追加,変更,削除すべきユーザ情報を取得する。つまり、最初に、前回の同期処理時に取得したスナップショットから、共通エントリと、それとリンクしている固有エントリの組を洗い出す。次に、今回の同期処理時に取得したスナップショットに関しても、同様の処理を行う。そして、前回取得したスナップショットには存在せず、今回取得したスナップショットには存在するエントリの組に関しては、それらに登録されたユーザ情報をアプリケーションデータに対して追加する。逆に、前回取得したスナップショットには存在したが、今回取得したスナップショットには存在しないエントリの組に関しては、アプリケーションデータからユーザ情報を削除する。どちらのスナップショットにも存在するエントリの組に関しては、属性値を比較し、変更があれば、その変更をアプリケーションに対して反映する。変更が無い場合は、アプリケーションに対する更新は行わないものである。
【0010】
【発明が解決しようとする課題】
しかしながら、従来の非同期的反映方法を用いて同期を行うディレクトリ同期方法では、ディレクトリサービスに登録するディレクトリエントリの数が増加する毎に、ディレクトリサービスのスナップショットの容量も増大するため、スナップショットを取得する処理に要する時間が比例的に増加し、結果として、ディレクトリサービスとアプリケーションの同期に要する時間が比例的に増加するという問題があった。
【0011】
本発明の目的は、ディレクトリサービスに登録されるディレクトリエントリの数が増加した場合も、ディレクトリサービスとアプリケーションの同期に要する時間を一定に保つことができるディレクトリ同期方法を提供することにある。
【0012】
【課題を解決するための手段】
(1)上記目的を達成するため、本発明は、ディレクトリサーバに記憶されたディレクトリデータと、このディレクトリサーバにネットワークを介して接続された少なくとも1つ以上のアプリケーションサーバに記憶されたアプリケーションデータとの同期を行なうディレクトリ同期方法において、A)上記ディレクトリデータに対して行った更新履歴を定期的に取得し、B)この取得した更新履歴を順に参照し、ディレクトリデータのスナップショットを逐次更新し、C)更新履歴の内容と、スナップショットの情報に従い、上記アプリケーションサーバへの更新種別を決定し、D)更新履歴の内容をアプリケーションサーバへの更新へ変換し、E)このアプリケーションサーバへの更新内容を基にアプリケーションサーバの更新を実行するようにしたものである。
かかる方法により、ディレクトリサービスに登録されるディレクトリエントリの数が増加した場合も、ディレクトリサービスとアプリケーションの同期に要する時間を一定に保ち得るものとなる。
【0013】
【発明の実施の形態】
以下、図1〜図23を用いて、本発明の一実施形態によるディレクトリ同期方法について説明する。
最初に、図1を用いて、本実施形態によるディレクトリ同期方法を実行するディレクトリ同期システムの構成について説明する。
【0014】
ディレクトリサーバ1は、ディレクトリデータ11をデータベース(DB)14に記憶し、ディレクトリデータ11に対する更新の履歴を、更新履歴記憶領域16に記憶する。更新履歴記憶領域16に記憶される更新履歴の構成については、図6を用いて後述する。
【0015】
アプリケーションサーバ12は、アプリケーションデータ13を、データベース(DB)15に記憶している。ディレクトリサーバ1とアプリケーションサーバ12は、LAN等のネットワーク30によって、ディレクトリ同期サーバ2と接続されている。
【0016】
ディレクトリ同期サーバ2は、更新履歴取得部3と、スキーマ変換部4と、アプリケーションデータ更新部5と、フィルタリング規則テーブル6と、スキーマ変換規則テーブル7と、更新履歴情報8と、ディレクトリデータ11のスナップショット9と、同期内容テーブル10と、スナップショット逐次更新部17と、更新種別決定部18とを有している。
【0017】
更新履歴取得部3は、ディレクトリサーバ1が出力した更新履歴を取得し、更新履歴情報8を更新するものであり、その処理内容については、図12を用いて後述する。更新履歴情報8は、ディレクトリサーバ1の更新履歴を記憶するものであり、そのデータ構成については、図7を用いて後述する。
【0018】
スキーマ変換部4は、スキーマ変換規則テーブル7を参照し、更新履歴情報8に記憶されたディレクトリデータ11に対する更新内容をアプリケーションデータ13に対する更新内容に変換するものであり、その処理内容については、図13を用いて後述する。スキーマ変換規則テーブル7は、ディレクトリデータ11をアプリケーションデータ13へ変換する際の変換規則を記憶するものであり、そのデータ構成ついては、図5及び図6を用いて後述する。
【0019】
更新種別決定部18は、更新履歴情報8に記憶された更新に対する同期処理を行う際に、フィルタリング規則テーブル6とスナップショット9を参照し、アプリケーションデータ13に対する更新種別を決定するものであり、その処理内容については、図14〜図18を用いて後述する。フィルタリング規則テーブル6は、全ディレクトリエントリの内、アプリケーションデータ13との同期が必要なディレクトリエントリの選別規則を記憶するものであり、そのデータ構成については、図4を用いて後述する。また、スナップショット9のデータ構成については、図9を用いて後述し、スナップショット9内に形成されるリンクインデックス70のデータ構成については、図10を用いて後述する。
【0020】
スナップショット逐次更新部17は、更新履歴情報8に記憶された更新を、スナップショット9に反映するものであり、その処理内容については、図19〜図22を用いて後述する。
【0021】
アプリケーションデータ更新部5は、同期内容テーブル10に記憶された更新内容に従ってアプリケーションサーバ12に対して更新要求を発行するものであり、その処理内容については、図23を用いて後述する。同期内容テーブル10は、アプリケーションデータ13に対する更新内容を記憶しており、そのデータ構成については、図11を用いて後述する。
【0022】
次に、図2を用いて、本実施形態によるディレクトリシステムを構成するディレクトリサーバ1,アプリケーションサーバ12及びディレクトリ同期サーバ2のシステム構成について説明する。なお、図1と同一符号は、同一部分を示している。
【0023】
ディレクトリサーバ1は、中央演算装置CPU25dと、ハードディスク装置等の磁気ディスク24dと、磁気ディスク24dを制御するディスクコントローラ23dと、OS22dとディレクトリサーバプログラム20dを記憶する主メモリ21dと、LAN30を介した他マシンとの通信を制御するLANコントローラ26dとを備えている。ディレクトリサーバプログラム20dは、当初磁気ディスク24dに格納され、必要に応じて主メモリ21dに転送された後、CPU25dで実行される。図1に示したDB14は、ディレクトリデータ11を磁気ディスク24d上にファイルとして格納する。また、ディレクトリサーバプログラム20dは、更新履歴記憶領域16を磁気ディスク24d上にファイルとして格納する。
【0024】
また、アプリケーションサーバ12は、CPU25aと、磁気ディスク24aと、ディスクコントローラ23aと、OS22aとアプリケーションサーバプログラム20aを記憶する主メモリ21aと、LANコントローラ26aとを備えている。アプリケーションサーバプログラム20aは、当初磁気ディスク24aに格納され、必要に応じて主メモリ21aに転送された後、CPU25aで実行される。図1に示したDB15は、アプリケーションデータ13を磁気ディスク24a上にファイルとして格納する。
【0025】
ディレクトリ同期サーバ2は、CPU25sと、磁気ディスク24sと、ディスクコントローラ23sと、OS22sとディレクトリ同期プログラム20sを記憶する主メモリ21sと、LANコントローラ26sとを備えている。ディレクトリ同期プログラム20sは、図1に示した更新履歴取得部3の処理内容である更新履歴取得プログラム3’と、更新種別決定部18の処理内容である更新種別決定プログラム18’と、スキーマ変換部4の処理内容であるスキーマ変換プログラム4’と、スナップショット逐次更新部17の処理内容であるスナップショット逐次更新プログラム17’と、アプリケーションデータ更新部5の処理内容であるアプリケーションデータ更新プログラム5’とから構成される。これらのプログラムは、当初磁気ディスク24sに格納され、必要に応じて主メモリ21sに転送された後、CPU25sで実行される。また、磁気ディスク24sには、スナップショット9と、同期内容テーブル10と、変更履歴情報8と、フィルタリング規則テーブル6と、スキーマ変換規則テーブル7がファイルとして格納される。
【0026】
ここで、図3を用いて、ディレクトリデータの論理構造について説明する。
ディレクトリ同期技術において、アプリケーションデータをディレクトリサービスに登録する際のディレクトリスキーマとして、アプリケーションが管理するユーザ情報を、アプリケーションに依存しない情報(氏名,電話番号など)と、アプリケーション固有の情報(アプリケーションサーバのホスト名など)に分類し、それぞれの情報を異なるディレクトリツリーのディレクトリエントリに登録するディレクトリスキーマを用いている。
【0027】
図3は、ディレクトリスキーマに従って登録されたディレクトリデータの論理構造を示している。
アプリケーションデータ13は、アプリケーションが利用するユーザなどの情報であり、或る一つのユーザ情報は、アプリケーションに依存しない情報である共通情報46と、アプリケーション固有の情報47に分類される。
【0028】
一方、ディレクトリデータ11は、ディレクトリサービスが登録,管理する情報である。アプリケーションのユーザ情報は、ディレクトリデータ11においては、別のディレクトリツリーに属する2つのディレクトリエントリに分割して格納される。すなわち、共通情報46は、共通ツリー40に属するエントリに、アプリケーション固有情報47は、アプリケーション固有ツリー41に属するエントリにそれぞれ格納される。共通ツリー40は、CCITT勧告であるX.521や「A Summary of the X.500(96) User Schema for use with LDAPv3(RFC2256)」で定義されている標準的なディレクトリスキーマに従って登録される共通エントリ42から成る。アプリケーション固有ツリー41は、アプリケーション固有のディレクトリスキーマに従って登録される固有エントリ43から成る。
【0029】
また、アプリケーション非依存の情報を格納する共通エントリ42と、アプリケーション固有の情報を格納する固有エントリ43の間には、同一のユーザの情報を格納することを表すリンク45が設定される。リンク45は、固有エントリ43に共通エントリ42の名称を格納する属性を持たせることを示している。
【0030】
ここで、共通エントリ42と固有エントリ43は、個別にディレクトリサービスに登録,更新,削除され得る。また、リンク45も、固有エントリ43を登録した後に、遅れて設定され得る。
【0031】
次に、図4〜図11を用いて、本実施形態において用いる各テーブルのデータ構造について説明する。
最初に、図4を用いて、本実施形態によるディレクトリ同期方法に用いるフィルタリング規則テーブル6のデータ構造について説明する。
【0032】
フィルタリング規則テーブル6は、同期の対象となるディレクトリエントリの選別規則に関する情報及び選別されたディレクトリエントリが共通エントリか固有エントリかを表す情報を記憶している。フィルタリング規則テーブル6は、配列構造をなし、フィルタリング規則を複数格納可能である。
【0033】
フィルタリング規則テーブル6は、テーブル中のレコードを一意に識別する為の識別名の記憶領域90と、同期対象となるディレクトリツリーを指定するベースエントリの名称の記憶領域91と、スコープの記憶領域92と、ベースエントリとスコープで指定された範囲に属するディレクトリエントリの内、同期対象となるディレクトリエントリを更に選別する為のフィルタ条件の記憶領域93と、当該フィルタリング規則に適合するディレクトリエントリが、図3に示した共通エントリ42か、固有エントリ43かを表すエントリ種別の記憶領域94とから構成されている。
【0034】
フィルタリング規則テーブル6の情報例95に示すように、例えば、識別名90である「filUsr」は、このフィルタリング規則テーブルが、「ユーザ(User)」のフィルタリングのテーブルであることを示している。また、例えば、ベースエントリ名称91である「OU=PEOPLE,O=XYZ,C=JP」は、ベースエントリ名称が、国コード(C=Country Code)が日本(JP)で、会社名(組織名)(O=Orgnization)がXYZ会社で、組織単位(OU=Organization Unit)が人事(PEOPLE)であることを示している。また、スコープ92である「subtree」は、スコープがベースエントリ以下の全エントリ(Subtree)であることを示している。なお、スコープ92としては、他に、「base」(ベースエントリのみ)、「onelevel」(ベースエントリの子エントリ)等がある。さらに、フィルタ条件93である「(objectclass=inetOrgPerson)」は、OjbectClassの属性として、IFTFで、人を表すものとして標準化されたものであることを示している。また、エントリ種別94である「0」は、フィルタリング規則に適合するディレクトリエントリが、共通エントリ42であることを示している。なお、エントリ種別94である「1」の場合には、フィルタリング規則に適合するディレクトリエントリが固有エントリ43であることを示している。
【0035】
フィルタリング規則テーブル6には、同期処理を開始する前に、少なくとも、共通エントリを選別するフィルタリング規則と、固有エントリを選別するフィルタリング規則の2規則を登録しておく必要がある。
【0036】
次に、図5を用いて、本実施形態によるディレクトリ同期方法に用いるスキーマ変換規則テーブル7のデータ構造について説明する。
スキーマ変換規則テーブル7は、ディレクトリデータ11をアプリケーションデータ13へ変換する際の変換規則を記憶するものである。スキーマ変換規則テーブル7は、配列構造をなし、スキーマ変換規則を複数格納可能である。
【0037】
スキーマ変換規則テーブル7は、テーブル中のレコードを一意に識別する為の識別名の記憶領域100と、スキーマ変換規則を適用する共通エントリ42について、それが属するオブジェクトクラスの記憶領域101と、共通エントリの属性に関する属性変換規則の記憶領域102と、スキーマ変換規則を適用する固有エントリ43について、それが属するオブジェクトクラスの記憶領域103と、固有エントリの属性に関する属性変換規則の記憶領域104と、アプリケーションデータ13を一意に識別する値を格納する属性の名称の記憶領域105とから構成されている。
【0038】
スキーマ変換規則テーブル7の情報例106に示すように、例えば、識別名100である「mapUsr」は、このスキーマ変換規則テーブルが、「ユーザ(User)」用の変換規則テーブルであることを示している。また、対象クラス(共通)である「inetOrgPerson」は、スキーマ変換規則を適用する共通エントリ42が属するオブジェクトクラスがIFTFで、人を表すものとして標準化されたものであることを示している。
【0039】
ここで、図6を用いて、属性変換規則(共通)102及び属性変換規則(固有)104の構成について説明する。
属性変換規則102,104は、ディレクトリデータ11の属性であるマッピング元属性の名称107と、前記属性に対応するアプリケーションデータ13の属性であるマッピング先属性の名称108の組から成る。
例えば、図5に示した属性変換規則(共通)102である「cn,Name」は、ディレクトリデータ11の属性であるマッピング元属性の名称「cn」が、この属性に対応するアプリケーションデータ13の属性であるマッピング先属性の名称が「Name」であることを示しており、「sn,FamiliyName」ィレクトリデータ11の属性であるマッピング元属性の名称「sn」が、この属性に対応するアプリケーションデータ13の属性であるマッピング先属性の名称が「FamilyName」であることを示している。属性変換規則(固有)104も同様である。
【0040】
また、対象クラス(固有)103である「app1Person」は、スキーマ変換規則を適用する固有エントリ41が属するオブジェクトクラスが、図3に示したアプリケーション1(App1)であることを示している。さらに、識別子格納属性105である「uid」は、アプリケーションデータ13を一意に識別する値を格納する属性の名称が「uid」であることを示している。
【0041】
スキーマ変換規則は、アプリケーションが管理する情報の種類(ユーザ,組織,情報処理装置等)毎に必要であり、同期処理を開始する前に登録しておく必要がある。
【0042】
次に、図7を用いて、本実施形態によるディレクトリ同期方法に用いる更新履歴記憶領域16のデータ構造について説明する。
図1に示した更新履歴記憶領域16は、ディレクトリサーバ1内のディレクトリデータ11の更新履歴を記憶している。更新履歴記憶領域16は、更新履歴テーブル110を記憶する。更新履歴テーブル110は、配列構造をなし、更新履歴の内容を複数格納可能である。
【0043】
更新履歴テーブル110は、更新履歴番号の記憶領域111と、更新の対象となるエントリの名称の記憶領域112と、更新種別の記憶領域113と、更新内容の記憶領域114とから構成されている。
【0044】
ここで、更新履歴番号111とは、各更新情報を一意に識別するための整数値であり、更新が処理された順番に1ずつ増加してゆくものである。例えば、更新履歴テーブル110の情報例115の中の更新履歴番号111である「1245」は、1245番目に更新された番号であることを示している。また、例えば、対象エントリ名称112である「UID=98001,OU=USR,OU=APP1,O=XYZ,C=JP」は、図3に示したように、国コード(C)が日本であり、組織名(O)がXYZ会社であり、単位がアプリケーション1(APP1)で、ユーザ(USR)であり、ユーザID(UID)が980001のエントリを有することを示している。さらに、更新種別113である「add」は、更新の種別が追加(add)であることを示している。更新種別としては、他に、削除や変更がある。また、更新内容114である「objectclass:appPerson uid:98001 appServerName:Server1」は、オブジェクトクラス属性(objectclass)がappPersonで、ユーザーID(uid)が98001のアプリケーションデータは、サーバー名称(appServerName)がServer1というサーバが有していることを示している。
更新履歴テーブル110内のレコードは、更新履歴番号111の小さい順に並んでいる。
【0045】
次に、図8を用いて、本実施形態によるディレクトリ同期方法に用いる更新履歴情報8のデータ構造について説明する。
更新履歴情報8は、ディレクトリ同期サーバ2が取得した更新履歴に関する情報を記憶するものである。
【0046】
更新履歴情報8は、取得済みの更新履歴の内、最後に取得した更新履歴の更新履歴番号51を記憶する更新履歴番号記憶領域50と、各更新履歴の内容を記憶する取得済更新履歴テーブル52とから構成されている。取得済更新履歴テーブル52は配列構造をなし、更新情報を複数格納可能である。
【0047】
取得済更新履歴テーブル52は、更新履歴テーブル110と同様のデータ構造を持ち、更新履歴番号の記憶領域53と、更新対象エントリの名称の記憶領域54と、更新種別の記憶領域55と、更新内容の記憶領域56とから構成されている。取得済更新履歴テーブル52の情報例57は、図7に示した更新履歴テーブル110の情報例115と同様となる。取得済更新履歴テーブル52内のレコードは、更新履歴番号53の小さい順に並んでいる。
【0048】
次に、図9を用いて、本実施形態によるディレクトリ同期方法に用いるスナップショット9のデータ構造について説明する。
スナップショット9は、配列構造をなし、エントリ情報を複数格納可能である。スナップショット9は、スナップショット逐次更新部17が、同期処理中に更新履歴の情報を基に作成する。
【0049】
スナップショット9は、レコード番号の記憶領域60と、エントリ名称の記憶領域61と、エントリ内容の記憶領域62とから構成されている。
スナップショット9の情報例63に示すように、レコード番号5である「5」は5番目のレコードであることを示している。また、エントリ名称61である「UID=98001,OU=USR,OU=APP1,O=XYZ,C=JP」は、図6に示したエントリ名称112と同様である。エントリ内容62である「pbjectclass:app1Person uid:98001 appl1ServerName:Server1 mail:suzuki@xyz.co.jp …… seeAlso:cn=一郎, sn=鈴木, ou=総務部, o=XYZ, c=jp」の中で、ユーザIDが98001である人のアプリケーション1のサーバー名やメールアドレスがエントリ内容であり、また、「seeAlso」は、リンクが張られていることを示している。リンク先には、鈴木一郎氏(cn=一郎,sn=鈴木)の所属(日本のXYZ会社の総務部)があることを示している。
【0050】
次に、図10を用いて、本実施形態によるディレクトリ同期方法に用いるリンクインデックス70のデータ構造について説明する。
リンクインデックス70は、或る共通エントリへのリンクを持つ固有エントリの検索を高速化する為のものである。リンクインデックス70は、配列構造をなし、インデックス情報を複数格納可能である。リンクインデックス70は、スナップショット逐次更新部17が、同期処理中に更新履歴の情報を基に作成する。
【0051】
リンクインデックス70は、エントリ名称の記憶領域71と、そのエントリへリンクしているエントリのレコード番号の記憶領域72とから構成されている。
リンクインデックス70の情報例73に示すように、エントリ名称である「CN=ichiro, SN=suzuki, OU=PEOPLE, O=XYZ, C=jp」は、固有エントリのエントリ名称を示している。
【0052】
次に、図11を用いて、本実施形態によるディレクトリ同期方法に用いる同期内容テーブル10のデータ構造について説明する。
同期内容テーブル10は、アプリケーションデータ13に対する更新内容を記憶するものである。同期内容テーブル10は、配列構造をなし、アプリケーションデータ13に対する更新内容を複数格納可能である。
【0053】
同期内容テーブル10は、同期内容番号の記憶領域80と、更新種別の記憶領域81と、更新内容の記憶領域82とから構成されている。
同期内容テーブル10の情報例83に示すように、例えば、更新種別81である「add」は、更新内容が追加(add)であることを示している。更新種別としては、他に、変更や削除がある。更新内容82である「table:USER userId:98001 name:ichirosuzuki serverName:Server1」は、サーバ名がServer1のユーザテーブル(USER)のユーザIDが98001に、ichirosuzukiの名前を追加することを示している。
【0054】
次に、図12〜図23を用いて、本実施形態によるディレクトリ同期方法の動作について説明する。
最初に、図12を用いて、本実施形態によるディレクトリ同期方法における更新履歴取得部3の処理内容について説明する。
【0055】
更新履歴取得部3は、更新履歴の取得に関わる動作を定期的に実行する。
最初に、ステップS901において、更新履歴取得部3は、図8に示した更新履歴情報8の中の更新履歴番号記憶領域50の取得済更新履歴番号51を参照する。
【0056】
次に、ステップS902において、更新履歴取得部3は、ディレクトリサーバ1が出力した更新履歴の内、ステップS901で取得した取得済更新履歴番号51より大きい更新履歴番号を持つ更新履歴を全て取得する。例えば、取得済更新履歴番号51が「1244」であったとすると、更新履歴番号が「1244」までの更新履歴が更新済みであるので、取得済更新履歴番号が「1245」以降の更新履歴(例えば、図7に示した更新履歴テーブル110の情報例115以降の更新履歴)を、更新履歴テーブル110から取得する。
【0057】
そして、ステップS903において、更新履歴取得部3は、それら更新履歴の情報を、図8に示した取得済更新履歴テーブル52に、情報例57のように登録する。
最後に、ステップS904において、更新履歴取得部3は、ステップS902で取得した更新履歴の内、最後に取得した更新履歴の更新履歴番号を、更新履歴番号記憶領域50の取得済更新履歴番号51に登録する。
【0058】
以上で、更新履歴取得部3の処理を終了して、ステップS905では、その後、スキーマ変換部4のスキーマ変換処理に移行する。スキーマ変換処理の詳細については、図13を用いて説明する。
【0059】
次に、図13を用いて、本実施形態によるディレクトリ同期方法におけるスキーマ変換部4の処理内容について説明する。
最初に、ステップS1001において、スキーマ変換部4は、図8に示した更新履歴情報8の中の取得済更新履歴テーブル52の先頭レコードに登録されたディレクトリデータ11に対する更新に関して、更新種別決定部18の更新種別決定処理を実行する。更新種別決定処理の詳細については、図14及び図15を用いて後述する。
【0060】
次に、ステップS1002において、スキーマ変換部4は、アプリケーションデータ13への更新内容を決定するため、属性マッピング処理を実行する。属性マッピング処理の詳細については、図16〜図18を用いて後述する。
【0061】
次に、ステップS1003において、スナップショット逐次更新部17は、スナップショットの逐次更新処理を実行する。スナップショットの更新処理の詳細については、図19〜図22を用いて後述する。
【0062】
次に、ステップS1004において、スキーマ変換部4は、アプリケーションデータ13に対する更新が不要と判断されたか否かを確認し、更新が不要ならば、ステップS1006以降の処理へ移行し、更新が必要ならば、ステップS1005を実行する。
【0063】
更新が必要な場合には、ステップS1005において、スキーマ変換部4は、図11に示した同期内容テーブル10に新規レコードを登録する。新規レコードの同期内容番号70,更新種別71及び更新内容72には、それぞれ、現在処理中である取得済更新履歴テーブル52のレコードの更新履歴番号53,ステップS1001で決定した更新種別及びステップS1002で決定した更新内容を登録する。
【0064】
次に、ステップS1006において、スキーマ変換部4は、取得済更新履歴テーブル52の全レコードに対して上述した処理を実行したか否かを判断する。実行していない場合には、ステップS1007において、スキーマ変換部4は、取得済更新履歴テーブル52から次履歴を取得し、ステップS1001〜S1005を繰り返し実行する。
【0065】
また、全履歴の処理が終了すると、ステップS1008において、スキーマ変換部4は、図8に示した取得済更新履歴テーブル52を削除する。そして、スキーマ変換処理が終了すると、ステップS1009において、アプリケーションデータ更新部5のアプリケーションデータ更新処理へ移行する。アプリケーションデータ更新処理の詳細については、図23を用いて後述する。
【0066】
ここで、図14及び図15を用いて、本実施形態によるディレクトリ同期方法における更新種別決定部18の処理内容について説明する。
更新種別決定処理では、更新の対象となったディレクトリエントリが、更新が実行される前と更新が実行された後に関して、アプリケーションデータ13への同期条件を満足するか否かを、スナップショット9を用いて調べ、その結果からアプリケーションデータ13への更新種別を決定する。
ここで、「同期条件」とは、更新対象のエントリがフィルタリング規則テーブル6に登録されたフィルタリング規則のいずれかに適合し、かつ、そのエントリが共通エントリの場合は固有エントリとリンクしており、そのエントリが固有エントリの場合は共通エントリとリンクしているという条件のことである。
【0067】
最初に、ステップS1101〜S1105において、更新種別決定部18は、更新対象のディレクトリエントリが更新前に同期条件を満足していたか否かの判定を行なう。
即ち、ステップS1101において、更新種別決定部18は、図8に示した取得済更新履歴テーブル52の更新種別55のデータにより、ディレクトリデータ11に対する更新種別が追加か否かを確認する。追加の場合、追加される以前に更新対象のエントリは存在しておらず、同期条件を満足していなかったのは自明であるため、ステップS1106以降の処理に移行する。
【0068】
追加以外の変更や削除の場合は、ステップS1102において、更新種別決定部18は、図8に示した取得済更新履歴テーブル52の対象エントリ名称54と、図9に示したスナップショット9のエントリ名称61が一致するという条件でスナップショット9を検索し、合致するレコードのスナップショット9のエントリ内容62を取得する。これは、更新対象のエントリの更新前のエントリ内容である。
【0069】
次に、ステップS1103において、更新種別決定部18は、図4に示したフィルタリング規則テーブル6に登録されたレコードを順に参照し、ベースエントリ名称91とスコープ92で特定されたディレクトリツリー内に更新対象のエントリが存在し、かつ、ステップS1102で取得したエントリ内容がフィルタ条件93を満たすか否か調べることで、適合するフィルタリング規則を検索する。例えば、図4に示したベースエントリ名称91の情報例95は、「OU=PEOPLE,O=XYZ,C=JP」であり、スコープ92の情報例95は、「subtree」であるので、図8に示した取得済更新履歴テーブル52の対象エントリ名称54の情報例57では、更新対象のエントリが存在しないことになる。また、ベースエントリ名称91が、「OU=APP1,O=XYZ,C=JP」であり、スコープ92の情報例95が、「subtree」であるならば、図8に示した取得済更新履歴テーブル52の対象エントリ名称54の情報例57は、「UID=98001, OU=USR, OU=APP1, O=XYZ, C=JP」であるため、ベースエントリ以下のsubtreeにおいて更新対象のエントリが存在することになる。そして、ステップS1102で取得したエントリ内容62がフィルタ条件を満たすかどうか調べる。
【0070】
適合するフィルタリング規則が存在しない場合、更新種別決定部18は、更新前は同期条件を満足しなかったと判断し、ステップS1106以降の処理に移行する。
また、適合するフィルタリング規則が存在した場合、更新種別決定部18は、そのフィルタリング規則のエントリ種別94を参照し、値が「0」である場合は前記ディレクトリエントリは共通エントリであると判断し、値が「1」である場合は固有エントリであると判断する。
【0071】
次に、ステップS1105において、更新種別決定部18は、更新対象のエントリとリンクするエントリが、更新前に存在したか否かの確認処理を行なう。存在した場合、更新前は同期条件を満足したと判断し、存在しなかった場合、更新前は同期条件を満足しなかったと判断する。
【0072】
ここで、図15を用いて、リンク先エントリの存在確認処理の内容について説明する。
リンク先エントリの存在確認処理は、更新対象のディレクトリエントリとリンクするエントリの存在確認をする処理であり、或る更新が実行される前の確認処理(図14のステップS1105)と、実行された後の確認処理(図14のステップS1113)がある。
【0073】
最初に、ステップS1201において、更新種別決定部18は、図14のステップS1104或いはステップS1112の処理で取得したエントリ種別が共通エントリか固有エントリで処理を分岐する。固有エントリの場合は、ステップS1202に進み、共通エントリの場合には、ステップS1208に進む。
【0074】
固有エントリの場合、ステップS1202において、更新種別決定部18は、図14のステップS1102の処理で取得した更新前のエントリ内容、或いはステップS1107〜S1110の処理で取得した更新後のエントリ内容が、リンクを格納する属性を含むか否かを調べる。リンクを格納する属性を含む場合とは、図9に示したスナップショット9のエントリ内容62の中に、情報例63に示すように、「seeAlso」の文を含む場合である。含む場合には、ステップS1203に進み、含まない場合には、ステップS1207に進む。
【0075】
含む場合、ステップS1203において、更新種別決定部18は、リンク先の共通エントリの存在確認のため、スナップショット9を、リンクを格納する属性の値とエントリ名称61が一致するという条件で検索する。ここで、リンクを格納する属性の値とは、例えば、「sn=鈴木」である。
そして、ステップS1204において、更新種別決定部18は、合致するレコードが存在するか否か調べる。存在する場合には、ステップS1205に進み、存在しない場合には、ステップS1207に進む。
【0076】
存在した場合、ステップS1205において、更新種別決定部18は、リンク先エントリが存在したと判断する。
次に、ステップS1206において、更新種別決定部18は、合致したレコードを、スナップショット9から取得する。
【0077】
ステップS1202の判断で、リンクが存在しない場合、また、ステップS1204の判断で、レコードが存在しない場合、ステップS1207において、更新種別決定部18は、リンク先エントリはしないと判断する。
【0078】
更新対象のエントリが共通エントリの場合、ステップS1208において、更新種別決定部18は、リンクインデックス70を、そのエントリの名称とエントリ名称71が一致するという条件で検索する。
そして、ステップS1209において、更新種別決定部18は、合致するレコードが存在するか否か調べる。存在する場合には、ステップS1210に進み、存在しない場合には、ステップS1213に進む。
【0079】
存在した場合、ステップS1210において、更新種別決定部18は、リンク先エントリが存在したと判断する。
そして、ステップS1211において、更新種別決定部18は、スナップショット9を、合致したレコードのレコード番号72とレコード番号60が一致するという条件で検索する。
次に、ステップS1212において、更新種別決定部18は、合致したレコードをスナップショット9から取得する。
【0080】
一方、ステップS1209の判断において、合致するレコードが存在しなかった場合、ステップS1213において、更新種別決定部18は、リンク先エントリは存在しなかったと判断する。
【0081】
ここで、図14に戻り、ステップS1106〜S1113において、更新種別決定部18は、更新対象のディレクトリエントリが更新後に同期条件を満足するか否かの判定を行なう。
最初に、ステップS1106及びS1107において、更新種別決定部18は、ディレクトリデータ11への更新種別により処理を分岐する。即ち、更新種別が削除の場合には、削除された後ディレクトリエントリは存在せず、同期条件を満足しないのは自明であるため、ステップS1114に進み、更新種別が変更の場合には、ステップS1108に進み、更新種別が追加の場合には、ステップS1110に進む。
【0082】
また、更新種別が変更ならば、ステップS1108において、更新種別決定部18は、更新対象のエントリの名称とエントリ名称61が一致するという条件でスナップショット9を検索し、合致するレコードのエントリ内容62を取得する。
次に、SステップS1109において、更新種別決定部18は、ステップS1108で取得したエントリ内容に、現在処理中の更新履歴レコードの更新内容56を反映させ、更新後のエントリ内容を得る。即ち、図9に示したスナップショット9のエントリ内容62に、図8に示した取得済更新履歴テーブル52の更新内容56を入れる。
【0083】
さらに、更新種別が追加ならば、ステップS1110において、更新種別決定部18は、更新後のエントリ内容は、現在処理中の更新履歴レコードの更新内容56と同一であるとする。
【0084】
次に、ステップS1111において、更新種別決定部18は、フィルタリング規則テーブル6に登録されたレコードを順に参照し、ベースエントリ名称91とスコープ92で特定されたディレクトリツリー内に前記ディレクトリエントリが存在し、かつ、ステップS1109或いはステップS1110で取得した更新後のエントリ内容がフィルタ条件93を満たすか否か調べる。適合するフィルタリング規則が存在する場合には、ステップS1112に進み、適合するフィルタリング規則が存在しない場合には、更新後は同期条件を満足しないと判断し、ステップS1114に進む。
【0085】
適合するフィルタリング規則が存在する場合、ステップS1112において、更新種別決定部18は、フィルタリング規則のエントリ種別94を参照し、値が0である場合は前記ディレクトリエントリは共通エントリであると判断し、値が1である場合は固有エントリであると判断する。
その後、ステップS1113において、更新種別決定部18は、更新後に前記ディレクトリエントリとリンクするエントリが存在するか否かの確認処理を行なう。リンク先のエントリの存在確認処理は、図15に示したとおりである。存在する場合、更新後は同期条件を満足すると判断し、存在しない場合、更新後は同期条件を満足しないと判断する。
【0086】
最後に、ステップS1114において、更新種別決定部18は、以上の処理の結果からアプリケーションデータ13への更新種別を決定する。すなわち、更新前に同期条件を満足せず、更新後に同期条件を満足する状態へ移行した場合は更新種別は「追加」である。更新前に同期条件を満足し、更新後に同期条件を満足しない状態へ移行した場合は更新種別は「削除」である。更新前後共に同期条件を満足する場合は更新種別は「変更」である。更新前後共に同期条件を満足しない場合はアプリケーションデータ13へは更新を行なわない。このようにして、共有エントリと固有エントリの同期をとり、同期条件を満たさない場合には、更新を行わないようにすることにより、不整合が発生することを防止できる。
【0087】
次に、図16〜図18を用いて、本実施形態によるディレクトリ同期方法における属性マッピング処理の内容について説明する。
属性マッピング処理は、図13に示したスキーマ処理の中のステップS1002における処理である。
【0088】
最初に、図16を用いて、属性マッピング処理の全体的な処理内容について説明する。
最初に、ステップS1301及びS1302において、スキーマ変換部4は、図14のS1114で決定したアプリケーションデータ13に対する更新種別により処理を分岐する。
【0089】
まず、アプリケーションデータ13に対する更新を行なわない場合は、何も行なう必要はないため、属性マッピング処理を終了する。
更新種別が削除の場合には、ステップS1303において、スキーマ変換部4は、削除に関する属性マッピング処理を実行する。削除に関する属性マッピング処理の詳細については、図17を用いて後述する。
更新種別が追加及び変更の場合には、ステップS1304において、スキーマ変換部4は、追加,変更に関する属性マッピング処理を実行する。追加,変更に関する属性マッピング処理の詳細については、図18を用いて後述する。
【0090】
次に、図17を用いて、削除に関する属性マッピング処理の処理内容について説明する。
最初に、ステップS1401において、スキーマ変換部4は、更新対象のディレクトリエントリに適用するスキーマ変換規則を決定する。そのために、図14のステップS1104で取得したエントリ種別により処理を分岐する。更新対象のエントリが共通エントリである場合には、ステップS1402に進み、更新対象のエントリが固有エントリである場合、ステップS1404に進む。
【0091】
更新対象のエントリが共通エントリである場合、ステップS1402において、スキーマ変換部4は、図14のステップS1102で取得したエントリ内容から、オブジェクトクラスを格納するobjectclass属性を取り出す。例えば、図9に示した例では、スナップショット9のエントリ内容62から、情報例63に示すobjectclass属性である「app1Person」を取り出す。
次に、ステップS1403において、スキーマ変換部4は、図15のS1212で取得したリンク先の固有エントリのエントリ内容からも、objectclass属性を取り出す。
【0092】
また、更新対象のディレクトリエントリが固有エントリである場合、ステップS1404において、スキーマ変換部4は、図14のS1102で取得したエントリ内容から、オブジェクトクラスを格納するobjectclass属性を取り出す。
次に、ステップS1405において、スキーマ変換部4は、図15のS1206で取得したリンク先の共通エントリのエントリ内容からも、objectclass属性を取り出す。
【0093】
次に、適用するスキーマ変換規則を決定する。まず、ステップS1406において、スキーマ変換部4は、スキーマ変換規則テーブル7の先頭レコードを参照し、共通エントリの対象クラス101が、ステップS1402、或いはS1405の処理で取得した共通エントリのobjectclass属性に含まれ、かつ、固有エントリの対象クラス103が、ステップS1403、或いはS1404の処理で取得した固有エントリのobjectclass属性に含まれるか否か調べる。含まれる場合には、ステップS1408に進み、含まれない場合には、ステップS1407に進み、ステップS1407において、スキーマ変換部4は、次の規則を参照し、同様の処理を繰り返す。
【0094】
含まれる場合、ステップS1408において、スキーマ変換部4は、そのスキーマ変換規則の識別子格納属性名称105を取得する。
次に、ステップS1409において、スキーマ変換部4は、図14のステップS1104で取得したエントリ種別により、処理を分岐する。即ち、エントリ種別が共通エントリの場合には、ステップS1410に進み、固有エントリの場合には、ステップS1411に進む。そして、ステップS1410若しくは、ステップS1411において、固有エントリに格納されているアプリケーションデータ13内の削除すべきエントリを一意に特定する識別子を取得する。
【0095】
更新対象のディレクトリエントリが共通エントリである場合、ステップS1410において、スキーマ変換部4は、図15のステップS1212で取得したリンク先固有エントリのエントリ内容から、ステップS1408で取得した名称を持つ属性(アプリケーションデータ13の識別子を格納する属性)を取り出す。例えば、図5に示したように、スキーマ変換規則テーブル7の識別子格納属性名称105が、情報例106に示すように、「uid」である場合、図9に示したスナップショット9のエントリ内容62から、情報例63に示す例の場合には、ユーザID(uid)として、「98001」を取り出す。
【0096】
また、ディレクトリエントリが固有エントリである場合、ステップS1411において、スキーマ変換部4は、図14のステップS1102で取得した更新対象エントリのエントリ内容から、ステップS1408で取得した名称を持つ属性を取り出す。
そして、ステップS1412において、スキーマ変換部4は、ステップS1410、或いはS1411で取得した識別子を格納する属性が、アプリケーションデータ13に対する更新内容とする。
【0097】
次に、図18を用いて、追加,変更に関する属性マッピング処理の処理内容について説明する。
最初に、ステップS1501において、スキーマ変換部4は、更新対象のディレクトリエントリに適用するスキーマ変換規則を決定する。そのために、図14のステップS1112で取得したエントリ種別により処理を分岐する。更新対象のエントリが共通エントリである場合には、ステップS1502に進み、更新対象のエントリが固有エントリである場合、ステップS1504に進む。
【0098】
更新対象のエントリが共通エントリである場合、ステップS1502において、スキーマ変換部4は、図14のステップS1107で取得したエントリ内容から、オブジェクトクラスを格納するobjectclass属性を取り出す。
次に、ステップS1503において、スキーマ変換部4は、図15のS1212で取得したリンク先の固有エントリのエントリ内容からも、objectclass属性を取り出す。
【0099】
また、更新対象のディレクトリエントリが固有エントリである場合、ステップS1504において、スキーマ変換部4は、図14のS1110で取得したエントリ内容から、オブジェクトクラスを格納するobjectclass属性を取り出す。
次に、ステップS1505において、スキーマ変換部4は、図15のS1206で取得したリンク先の共通エントリのエントリ内容からも、objectclass属性を取り出す。
【0100】
次に、適用するスキーマ変換規則を決定する。まず、ステップS1506において、スキーマ変換部4は、スキーマ変換規則テーブル7の先頭レコードを参照し、共通エントリの対象クラス101が、ステップS1502、或いはS1505の処理で取得した共通エントリのobjectclass属性に含まれ、かつ、固有エントリの対象クラス103が、ステップS1503、或いはS1504の処理で取得した固有エントリのobjectclass属性に含まれるか否か調べる。含まれる場合には、ステップS1508に進み、含まれない場合には、ステップS1507に進み、ステップS1507において、スキーマ変換部4は、次の規則を参照し、同様の処理を繰り返す。
【0101】
次に、ステップS1508において、スキーマ変換部4は、S1506で決定したスキーマ変換規則の共通エントリに対する属性変換規則102を参照し、共通エントリのエントリ内容に含まれる属性名をアプリケーションデータ13の属性名に置換する。
例えば、図5に示したように、属性変換規則(共通)102として、情報例106に示すように、「cn,Name」とある場合には、共通エントリの属性名「cn:一郎」を、アプリケーションデータの属性名「Name:ichiro」に置換する。
次に、ステップS1509において、スキーマ変換部4は、属性名の置換がすべての属性について行われたか否かを判断し、行われていない場合には、ステップS1510において、スキーマ変換部4は、次の属性について、属性名の置換を行う。
【0102】
属性名の置換が、共通エントリのエントリ内容に含まれる全属性に対して行なわれると、ステップS1511において、スキーマ変換部4は、ステップS1506で決定したスキーマ変換規則の固有エントリに対する属性変換規則104を参照し、固有エントリのエントリ内容に含まれる属性名をアプリケーションデータ13の属性名に置換する。
次に、ステップS1512において、スキーマ変換部4は、属性名の置換がすべての属性について行われたか否かを判断し、行われていない場合には、ステップS1513において、スキーマ変換部4は、次の属性について、属性名の置換を行う。
【0103】
属性名の置換が、固有エントリのエントリ内容に含まれる全属性に対して行なわれると、ステップS1514において、スキーマ変換部4は、ステップS1508〜S1510までの処理により決定したアプリケーションデータ13の属性、及びステップS1511〜S1513までの処理により決定したアプリケーションデータ13の属性を結合することにより、アプリケーションデータ13に対する更新内容を得る。
【0104】
次に、図19〜図22を用いて、本実施形態によるディレクトリ同期方法におけるスナップショットの更新処理の内容について説明する。
スナップショットの更新処理は、図13に示したスキーマ処理の中のステップS1003における処理であり、スナップショット逐次更新部17が行うものである。
【0105】
図19に示すように、ステップS1601及びS1602において、スナップショット逐次更新部17は、現在処理中の更新履歴の更新種別により処理を分岐する。即ち、追加の場合は、ステップS1603において追加処理を実行し、変更の場合は、ステップS1604において変更処理を実行し、削除の場合は、ステップS1605において削除処理を実行する。それぞれの処理の詳細については、図20〜図22を用いて説明する。
【0106】
最初に、図20を用いて、スナップショット9のレコード追加処理の内容について説明する。
ステップS1701において、スナップショット逐次更新部17は、スナップショット9に新規レコードを登録する。この時、レコード番号60には、他のレコードと重複しない値を登録する。例えば、レコードを登録する毎に1ずつ加算した値を割り当てるようにする。エントリ名称61には、更新対象のディレクトリエントリの名称を登録する。例えば、エントリ名称61には、図8に示した取得済更新履歴テーブル52の対象エントリ名称54の情報例57の「UID=98001, OU=USR, OU=APP1, O=XYZ, C=JP」を登録する。また、エントリ内容62には、図14のステップS1109、或いはS1110の処理により取得した更新後のエントリ内容を登録する。例えば、図8に示した取得済更新履歴テーブル52の更新内容56の情報例57である「objectclass:appPerson uid:98001 appServerName:Server1」を登録する。
【0107】
次に、ステップS1702において、スナップショット逐次更新部17は、ステップS1112の処理により取得したエントリ種別により処理を分岐する。即ち、更新対象のディレクトリエントリが共通エントリの場合、リンクを格納する属性は持たないため、レコード追加処理を終了する。固有エントリの場合、ステップS1703に進む。
【0108】
そして、ステップS1703において、スナップショット逐次更新部17は、更新後のエントリ内容を参照して、リンクを格納する属性が含まれるか否か調べる。含まれる場合には、ステップS1704に進み、含まれない場合には、レコード追加処理を終了する。
【0109】
次に、含まれる場合、ステップS1704において、スナップショット逐次更新部17は、リンクインデックス70に、新規レコードを登録する。この時、リンク先エントリ名称71には、前記属性の値を登録する。レコード番号72は、S1701で登録したスナップショットの新規レコードのレコード番号60と同一の値を登録する。
【0110】
次に、図21を用いて、スナップショット9のレコード変更処理の内容について説明する。
最初に、ステップS1801において、スナップショット逐次更新部17は、図14のステップS1108の処理で実行したスナップショット9の検索において、検索条件に合致したレコードのエントリ内容62を変更する。この時、検索条件に合致したレコードのエントリ内容62を、図14のS1109の処理により取得した更新後のエントリ内容で上書きする。
【0111】
次に、ステップS1802において、スナップショット逐次更新部17は、図14のS1112の処理により取得したエントリ種別により処理を分岐する。即ち、更新対象のディレクトリエントリが共通エントリの場合、リンクを格納する属性は持たないため、レコード変更処理を終了する。固有エントリの場合には、ステップS1803に進む。
【0112】
固有エントリの場合、ステップS1803〜S1805において、スナップショット逐次更新部17は、変更履歴テーブル52の現在処理中であるレコードの更新内容56を参照して、共通エントリに対するリンクを格納する属性が更新されたか否か調べる。そして、更新種別によって処理が分岐し、リンクを格納する属性の追加の場合には、ステップS1806に進み、リンクを格納する属性の削除の場合には、ステップS1807に進み、リンクを格納する属性の変更の場合には、ステップS1808に進む。
【0113】
リンクを格納する属性が追加された場合には、ステップS1806において、スナップショット逐次更新部17は、リンクインデックス70に、新規レコードを登録する。この時、リンク先エントリ名称71には、前記属性の値を登録する。レコード番号72は、ステップS1801の処理で変更したスナップショット9のレコードのレコード番号60と同一の値を登録する。
【0114】
リンクを格納する属性が削除された場合には、ステップS1807において、スナップショット逐次更新部17は、リンクインデックス70からレコードを削除する。すなわち、まず、図14のS1102の処理により取得したエントリ内容62からリンクを格納する属性を取り出す。次に、リンクインデックス70を、前記属性の値とエントリ名称71が一致するという条件で検索し、合致するレコードを削除する。
【0115】
リンクを格納する属性が変更された場合には、ステップS1808において、スナップショット逐次更新部17は、リンクインデックス70からレコードを削除し、新規レコードを追加する。すなわち、まず、図14のステップS1102で取得したエントリ内容62からリンクを格納する属性の値を取り出す。次に、リンクインデックス70を、前記属性の値とエントリ名称71が一致するという条件で検索し、合致するレコードを削除する。その後、新規レコードを登録する。この時、エントリ名称71には、図14のステップS1109の処理により取得した更新後のエントリ内容からリンクを格納する属性を取り出し、その属性の値を登録する。レコード番号72は、S1801で変更したスナップショット9のレコードのレコード番号60と同一の値を登録する。
【0116】
次に、図22を用いて、スナップショット9のレコード削除処理の内容について説明する。
最初に、ステップS1901において、スナップショット逐次更新部17は、図14のステップS1104の処理により取得したエントリ種別により処理を分岐する。更新対象のディレクトリエントリが共通エントリの場合には、リンクを格納する属性は持たないため、ステップS1904に進む。また、固有エントリの場合には、ステップS1902に進む。
【0117】
固有エントリの場合には、ステップS1902において、スナップショット逐次更新部17は、図14のS1102の処理により取得したスナップショット9のエントリ内容62に、図3のリンク45を格納する属性が含まれるか否か調べる。含まれる場合には、ステップS1903に進み、含まれない場合には、ステップS1904に進む。
【0118】
リンクを格納する属性が含まれる場合には、ステップS1903において、スナップショット逐次更新部17は、リンクインデックス70を、前記属性の値とエントリ名称71が一致するという条件で検索し、合致するレコードを削除する。
最後に、ステップS1904において、スナップショット逐次更新部17は、図14のステップS1102の処理により取得した、スナップショット9のレコードを削除する。
【0119】
次に、図23を用いて、本実施形態によるディレクトリ同期方法におけるアプリケーションデータの更新処理の内容について説明する。
アプリケーションデータの更新処理は、アプリケーションデータ更新部5によって実行される。
【0120】
最初に、ステップS2001において、アプリケーションデータ更新部5は、同期内容テーブル10の先頭レコードを取得する。
【0121】
次に、ステップS2002において、アプリケーションデータ更新部5は、前記レコードの更新内容82に従って、アプリケーションデータ13を更新する。
【0122】
次に、ステップS2003において、アプリケーションデータ更新部5は、すべての更新内容に処理が実行されたか否かを判断し、実行されていない場合には、ステップS2004に進んで、次の同期内容レコードを取り出し、ステップS2001及びS2002を実行して、同期内容テーブル10の全レコードに対して実行する。
全ての同期内容レコードについて処理が実行されると、ステップS2005において、アプリケーションデータ更新部5は、同期内容レコード10の全レコードを削除する。
【0123】
なお、以上の説明では、ディレクトリ同期サーバ2を用いて、本実施形態によるディレクトリ同期方法を実現しているが、ディレクトリサーバ1を用いて、本実施形態によるディレクトリ同期方法を実現するようにしてもよいものである。そのためには、図1に示した更新履歴取得部3,スキーマ変換部4,更新種別決定部18,スナップショット逐次更新部17,アプリケーションデータ更新部5や、各テーブル6,7,8、9,10を、ディレクトリサーバ1内に備えるようにすればよいものである。
【0124】
以上説明したように、本実施形態によれば、ディレクトリサーバが出力する更新履歴を定期的に取得し、その更新履歴に基づき作成されるディレクトリデータのスナップショットと更新履歴からアプリケーションデータに対して行うべき更新内容を取得し、アプリケーションデータを更新することで、従来はディレクトリサーバの検索を要するためディレクトリエントリ数増大に従って所要時間が増大したディレクトリ同期処理を、ディレクトリエントリ数に関わらず一定の時間で実行することが可能となる。
即ち、従来は、更新時に全スナップショットを作成していたので、ディレクトリエントリ数増大に従ってスナップショット作成時間が増大するのに対して、本実施形態においては、更新履歴を取得する毎に、スナップショットを作成しているので、更新時のスナップショット作成が不要となるため、ディレクトリエントリ数が増大しても、更新所要時間が増大することはないものである。
【0125】
また、本実施形態によれば、ディレクトリサービスに対する更新を禁止する期間を無くしディレクトリサービスの可用性を向上することが可能である。
即ち、従来は、スナップショットを取得している間はディレクトリサービスに対する更新を禁止しなければならないため、更新を禁止する期間を設ける必要があったのに対して、本実施形態においては、更新履歴情報に基づいて更新を行っており、更新の途中に新たな更新情報が追加されたとしても、新たな更新情報について更新は次回に行うため、更新を禁止する期間を設ける必要はないものである。
【0126】
さらに、従来は同期処理を行う間隔を短くしたとしても、スナップショットを取得している間は必ずディレクトリデータとアプリケーションデータが不整合状態となったが、本実施形態によれば、更新履歴を取得する間隔を短くすることにより、ディレクトリデータとアプリケーションデータの間に不整合が発生する期間をより短くすることができる。
即ち、図14のステップS1114の判断で同期条件を満たさないこととなるため、同期条件を満たさない場合には、更新を行わないようにすることにより、不整合が発生することを防止できる。
【0127】
【発明の効果】
本発明によれば、ディレクトリサービスに登録されるディレクトリエントリの数が増加した場合も、ディレクトリサービスとアプリケーションの同期に要する時間を一定に保つことができる。
【図面の簡単な説明】
【図1】本発明の一実施形態によるディレクトリ同期方法を実行するディレクトリ同期システムのシステム構成図である。
【図2】本発明の一実施形態によるディレクトリ同期方法を実行するディレクトリシステムを構成するディレクトリサーバ,アプリケーションサーバ及びディレクトリ同期サーバのシステム構成について説明する。
【図3】本発明の一実施形態によるディレクトリ同期方法に用いるディレクトリデータの論理構造の説明図である。
【図4】本発明の一実施形態によるディレクトリ同期方法に用いるフィルタリング規則テーブルのデータ構造の説明図である。
【図5】本発明の一実施形態によるディレクトリ同期方法に用いるスキーマ変換規則テーブルのデータ構造の説明図である。
【図6】本発明の一実施形態によるディレクトリ同期方法に用いるスキーマ変換テーブルの属性変換規則のデータ構造の説明図である。
【図7】本発明の一実施形態によるディレクトリ同期方法に用いる更新履歴記憶領域のデータ構造の説明図である。
【図8】本発明の一実施形態によるディレクトリ同期方法に用いる更新履歴情報のデータ構造の説明図である。
【図9】本発明の一実施形態によるディレクトリ同期方法に用いるスナップショットのデータ構造の説明図である。
【図10】本発明の一実施形態によるディレクトリ同期方法に用いるリンクインデックスのデータ構造の説明図である。
【図11】本発明の一実施形態によるディレクトリ同期方法に用いる同期内容テーブルのデータ構造の説明図である。
【図12】本発明の一実施形態によるディレクトリ同期方法における更新履歴取得部の処理内容を示すフローチャートである。
【図13】本発明の一実施形態によるディレクトリ同期方法におけるスキーマ変換部の処理内容を示すフローチャートである。
【図14】本発明の一実施形態によるディレクトリ同期方法における更新種別決定部の処理内容を示すフローチャートである。
【図15】本発明の一実施形態によるディレクトリ同期方法における更新種別決定部の処理内容を示すフローチャートである。
【図16】本発明の一実施形態によるディレクトリ同期方法における属性マッピング処理の全体的な処理内容を示すフローチャートである。
【図17】本発明の一実施形態によるディレクトリ同期方法における属性マッピング処理の中の削除時のマッピング処理容を示すフローチャートである。
【図18】本発明の一実施形態によるディレクトリ同期方法における属性マッピング処理の中の追加,変更時のマッピング処理内容を示すフローチャートである。
【図19】本発明の一実施形態によるディレクトリ同期方法におけるスナップショットの更新処理の全体的な処理内容を示すフローチャートである。
【図20】本発明の一実施形態によるディレクトリ同期方法におけるスナップショットの更新処理の中の削除処理の内容を示すフローチャートである。
【図21】本発明の一実施形態によるディレクトリ同期方法におけるスナップショットの更新処理の中の変更処理の内容を示すフローチャートである。
【図22】本発明の一実施形態によるディレクトリ同期方法におけるスナップショットの更新処理の中の追加処理の内容を示すフローチャートである。
【図23】本発明の一実施形態によるディレクトリ同期方法におけるアプリケーションデータの更新処理の全体的な処理内容を示すフローチャートである。
【符号の説明】
1…ディレクトリサーバ
2…ディレクトリ同期サーバ
3…更新履歴取得部
4…スキーマ変換部
5…アプリケーションデータ更新部
6…フィルタリング規則テーブル
7…スキーマ変換規則テーブル
8…更新履歴情報
9…スナップショット
10…同期内容テーブル
11…ディレクトリデータ
12…アプリケーションサーバ
13…アプリケーションデータ
14,15…DB
16…更新履歴記憶領域
17…スナップショット逐次更新部
18…更新種別決定部

Claims (5)

  1. ディレクトリサーバに記憶されたディレクトリデータと、このディレクトリサーバにネットワークを介して接続された少なくとも1つ以上のアプリケーションサーバに記憶されたアプリケーションデータとの同期を行なうディレクトリ同期方法において、
    A)上記ディレクトリデータに対して行った更新履歴を定期的に取得し、
    B)この取得した更新履歴を順に参照し、ディレクトリデータのスナップショットを逐次更新し、
    C)更新履歴の内容と、スナップショットの情報に従い、上記アプリケーションサーバへの更新種別を決定し、
    D)更新履歴の内容をアプリケーションサーバへの更新へ変換し、
    E)このアプリケーションサーバへの更新内容を基にアプリケーションサーバの更新を実行することを特徴とするディレクトリ同期方法。
  2. 請求項1記載のディレクトリ同期方法において、
    上記アプリケーションサーバが管理する情報を、アプリケーションに依存しない共通情報と、アプリケーション固有の固有情報に分類し、それら2種類の情報を上記ディレクトリサーバ内の異なるエントリに格納し、かつ、それらのエントリ間にリンクを設定することを特徴とするディレクトリ同期方法。
  3. 請求項2記載のディレクトリ同期方法において、
    上記定期的に取得された更新履歴中の更新に関して、その更新をスナップショットに反映する前後で、その更新の対象となるユーザ情報を分割して格納している2エントリが存在し、かつ、それらエントリ間にリンクが存在するか否かを調べ、
    反映前は存在せず、反映後に存在する場合は、アプリケーションデータに対する更新種別を追加と決定し、
    逆に反映前は存在し、反映後に存在しない場合は、アプリケーションデータに対する更新種別を追加と決定し、
    反映の前後共に存在する場合は、アプリケーションデータに対する更新種別を変更と決定し、
    反映の前後共に存在しない場合は、更新を行わないことを特徴とするディレクトリ同期方法。
  4. 請求項1記載のディレクトリ同期方法において、
    アプリケーションデータとの同期を要するディレクトリデータを選別するフィルタリング規則に適合しないディレクトリデータに関してはディレクトリサーバ上に存在しないものと見なし、
    このフィルタリング規則に適合するディレクトリデータに関してのみ更新種別を決定することを特徴とするディレクトリ同期方法。
  5. 請求項1記載のディレクトリ同期方法において、
    アプリケーションデータに対する更新種別の削除に対しては、スナップショットからアプリケーションデータの識別子を取得し、アプリケーションデータから削除すべきユーザ情報を特定することを特徴とするディレクトリ同期方法。
JP08366099A 1999-03-26 1999-03-26 ディレクトリ同期方法 Expired - Fee Related JP3810577B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP08366099A JP3810577B2 (ja) 1999-03-26 1999-03-26 ディレクトリ同期方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP08366099A JP3810577B2 (ja) 1999-03-26 1999-03-26 ディレクトリ同期方法

Publications (2)

Publication Number Publication Date
JP2000276391A JP2000276391A (ja) 2000-10-06
JP3810577B2 true JP3810577B2 (ja) 2006-08-16

Family

ID=13808620

Family Applications (1)

Application Number Title Priority Date Filing Date
JP08366099A Expired - Fee Related JP3810577B2 (ja) 1999-03-26 1999-03-26 ディレクトリ同期方法

Country Status (1)

Country Link
JP (1) JP3810577B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107171825A (zh) * 2017-04-11 2017-09-15 捷开通讯(深圳)有限公司 一种终端的重复日志过滤方法

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4325524B2 (ja) 2004-09-29 2009-09-02 日本電気株式会社 スイッチ装置とシステム並びにバックアップ及びリストア方法とプログラム
JP4699516B2 (ja) * 2006-03-28 2011-06-15 富士通株式会社 名前空間複製プログラム、名前空間複製装置、名前空間複製方法
JP2008040699A (ja) * 2006-08-04 2008-02-21 Fujitsu Ltd Hsm制御プログラム、hsm制御装置、hsm制御方法
US8918380B2 (en) 2009-07-09 2014-12-23 Norsync Technology As Methods, systems and devices for performing incremental updates of partial databases
JP5422364B2 (ja) * 2009-12-17 2014-02-19 株式会社日立システムズ ファイル管理システム
JP2012146083A (ja) * 2011-01-11 2012-08-02 Fujitsu Ltd セッション管理システム、セッション管理装置、サーバ装置およびセッション管理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107171825A (zh) * 2017-04-11 2017-09-15 捷开通讯(深圳)有限公司 一种终端的重复日志过滤方法
CN107171825B (zh) * 2017-04-11 2020-09-25 Tcl移动通信科技(宁波)有限公司 一种终端的重复日志过滤方法

Also Published As

Publication number Publication date
JP2000276391A (ja) 2000-10-06

Similar Documents

Publication Publication Date Title
US6374262B1 (en) Relational database synchronization method and a recording medium storing a program therefore
JP3396223B2 (ja) ネットワーク・ディレクトリにおいてサブツリーを移動する方法ならびにその装置
US7516157B2 (en) Relational directory
US5884310A (en) Distributed data integration method and system
JP3792419B2 (ja) ディレクトリデータ変換方法、ディレクトリデータ変換プログラムが記憶された記憶媒体、およびディレクトリ変換サーバ
JP3984659B2 (ja) 概要カタログ
CN102239476B (zh) 用于存储集群的共享名称空间
US6839704B2 (en) Information storage, retrieval and delivery system and method operable with a computer network
US5793970A (en) Method and computer program product for converting message identification codes using a conversion map accesible via a data link
US6363375B1 (en) Classification tree based information retrieval scheme
US6973463B2 (en) Replication architecture for a directory server
US20090327248A1 (en) Method and apparatus for improving the integration between a search engine and one or more file servers
US20100312750A1 (en) System Of And Method For Transparent Management Of Data Objects In Containers Across Distributed Heterogenous Resources
JP2001313639A (ja) ネットワーク構成データ管理システム及び方法並びに記録媒体
JP2901081B2 (ja) Osiディレクトリの非葉エントリの名称変更方法
JP3810577B2 (ja) ディレクトリ同期方法
US8516149B1 (en) System for operating NFSv2 and NFSv3 clients with federated namespace
JPH09134364A (ja) 情報検索システム
JP2002157158A (ja) データベースシステムにおけるデータ管理方法
JP3300399B2 (ja) 計算機システムおよびファイル管理方法
JP2002049637A (ja) データベース管理方法及び装置並びに記録媒体
US6519610B1 (en) Distributed reference links for a distributed directory server system
US20030088615A1 (en) Update resolution procedure for a directory server
JP2858417B2 (ja) 分散データベース管理方式
JP2001014328A (ja) データベースシステムとそこで用いるディレクトリデータ構造

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060427

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060523

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060524

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees