(57)【要約】  実施形態は、一般に、ディレクトリスキーマの変更を判定するシステムおよび方法に関する。実施形態において、ディレクトリスキーマの変更は、変更ログ内に記録される。変更ログは、１つまたは複数のエントリを有し得る。どの変更ログのエントリが検索されるべきかについて判定がなされる。一度検索されると、ディレクトリスキーマの変更が判定される。実施形態において、ディレクトリの変更は次に、ユーザへの提示のために解釈される。
2010532525.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムで実行可能な、ディレクトリスキーマに対する変更を判定する方法であって、
第１のバージョンのディレクトリスキーマの第１の選択を受け取るステップと、
前記第１のバージョンのディレクトリスキーマと、第２のバージョンのディレクトリスキーマとの間の１つまたは複数の変更を判定するステップと、
前記１つまたは複数の変更を提供するステップと
を含むことを特徴とする方法。
【請求項２】
前記第１のバージョンのディレクトリスキーマを前記第２のバージョンディレクトリスキーマと比較するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記第１のバージョンのディレクトリスキーマが、第１の時間において作成され、前記第２のバージョンのディレクトリスキーマが第２の時間において作成されることを特徴とする請求項１に記載の方法。
【請求項４】
前記第２のバージョンのディレクトリスキーマが、標準のスキーマであることを特徴とする請求項１に記載の方法。
【請求項５】
前記第１のバージョンのディレクトリスキーマが、前記第２のバージョンのディレクトリスキーマが作成された後になされる１つまたは複数の変更の変更ログを備えることを特徴とする請求項１に記載の方法。
【請求項６】
前記第２のバージョンのディレクトリスキーマの第２の選択を受け取るステップと、
前記第１の選択および前記第２の選択が有効であることを検証するステップと、
前記第１の選択および前記第２の選択が有効でない場合、エラーを提供するステップと、
前記第１の選択および前記第２の選択が有効である場合、前記第１のバージョンのディレクトリスキーマと前記第２のバージョンのディレクトリスキーマとの間の１つまたは複数の変更を判定するステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記第１の選択の他に受け取られたものがあるかどうかを判定するステップと、
前記第１の選択のみが受け取られた場合、標準のスキーマを検索するステップと、
前記第１の選択のみが受け取られた場合、標準のスキーマを前記第１のバージョンのディレクトリスキーマと比較するステップと、
前記第１の選択の他に受け取られたものがある場合、少なくとも第２のバージョンのディレクトリスキーマの第２の選択を受け取るステップと、
前記第１の選択の他に受け取られたものがある場合、前記第１のバージョンのディレクトリスキーマを少なくとも前記第２のバージョンのディレクトリスキーマと比較するステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項８】
相違についての報告を生成するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項９】
データ構造が記憶されるコンピュータ記憶媒体であって、前記データ構造がディレクトリスキーマに対する変更を判定するためのコンピュータシステムにおいて動作可能であり、前記データ構造が、
１つまたは複数の変更エントリを含む変更ログを含み、
変更エントリが、ディレクトリスキーマへの変更に応答して作成され、変更エントリが、
前記変更エントリが作成された時間を含むタイムスタンプのフィールドと、
前記ディレクトリスキーマになされた変更を記述する変更タイプのフィールドと
を含み、
前記コンピュータシステムが、前記変更ログエントリのタイムスタンプのフィールドを第２のバージョンのディレクトリスキーマのタイムスタンプと比較することにより、前記ディレクトリスキーマへの変更を判定するときに、どの変更ログエントリを提供すべきかを判定し、
前記コンピュータシステムが、前記変更タイプのフィールドにおける前記変更のタイプを解釈することにより、前記ディレクトリスキーマへの変更の、人が理解可能な記述を提供する
ことを特徴とするコンピュータ記憶媒体。
【請求項１０】
前記変更エントリが、
前記ディレクトリスキーマに対して変更を行ったユーザの識別を提供するユーザ識別フィールドをさらに含み、
前記コンピュータシステムが、前記変更を記述する前記ユーザの識別を提供することを特徴とする請求項９に記載のデータ構造。
【請求項１１】
前記変更エントリが、 
前記変更が前記ディレクトリスキーマ内のオブジェクトに対するものであるという表示を提供する、クラス変更表示子のフィールドと、
変更された前記オブジェクトの識別を提供する、オブジェクト識別のフィールドと
をさらに含み、
前記コンピュータシステムが、前記クラス変更表示子のフィールドおよび前記オブジェクト識別のフィールドを解釈して、前記ディレクトリスキーマに対して何の変更がなされたかを判定することにより、前記ディレクトリスキーマに対する変更の、人が理解可能な記述を提供する
ことを特徴とする請求項９に記載のデータ構造。
【請求項１２】
前記変更エントリが、 
前記変更が前記ディレクトリスキーマ内の属性に対するものであるという表示を提供する、属性変更表示子のフィールドと、
変更された前記属性の識別を提供する、属性識別のフィールドと
をさらに含み、
前記コンピュータシステムが、前記属性変更表示子のフィールドおよび前記属性識別のフィールドを解釈して、前記ディレクトリスキーマに対して何の変更がなされたかを判定することにより、前記ディレクトリスキーマに対する変更の、人が理解可能な記述を提供する
ことを特徴とする請求項９に記載のデータ構造。
【請求項１３】
前記変更エントリが、 
前記ディレクトリスキーマへの変更の前に、オブジェクトまたは属性の値を提供する、前回の値のフィールドと、
前記ディレクトリスキーマへの変更の後に、オブジェクトまたは属性の新しい値を提供する、新しい値のフィールドと
をさらに含み、
前記コンピュータシステムが、前記前回の値のフィールドおよび前記新しい値のフィールドを解釈して、前記ディレクトリスキーマに対して何の変更がなされたかを判定することにより、前記ディレクトリスキーマに対する変更の、人が理解可能な記述を提供する
ことを特徴とする請求項９に記載のデータ構造。
【請求項１４】
前記変更タイプのフィールドが、
前記変更が、前記ディレクトリスキーマに対するオブジェクトまたは属性の追加であるという表示を提供する、追加表示子のフィールドと、
前記変更が、前記ディレクトリスキーマ内のオブジェクトまたは属性の修正であるという表示を提供する、修正表示子のフィールドと、 
前記変更が、前記ディレクトリスキーマのオブジェクトまたは属性の削除であるという表示を提供する、機能停止表示子と
を備えることを特徴とする請求項９に記載のデータ構造。
【請求項１５】
コンピュータ実行可能コンポーネントが記憶されるコンピュータ記憶媒体であって、前記コンピュータ実行可能コンポーネントが、ディレクトリスキーマへの変更を判定するためにコンピュータシステム内で実行可能であり、前記コンポーネントが、
ユーザからディレクトリスキーマデータの選択を受け取り、スキーマの相違をユーザに表示する、ユーザインターフェースと、
前記ユーザインターフェースと通信するクエリプロセッサであって、前記ユーザインターフェースから要求を受け取って、ディレクトリスキーマに対する相違を判定し、受け取った要求に応答して、スキーマデータのデータストアからデルタファイルを取得し、前記デルタファイルとのディレクトリスキーマデータの相違を判定する、クエリプロセッサと
を備えることを特徴とするコンピュータ記憶媒体。
【請求項１６】
前記デルタファイルが、１つまたは複数の前記ディレクトリスキーマに対する変更を含む変更ログを含むことを特徴とする請求項１５に記載のコンポーネント。
【請求項１７】
前記ディレクトリスキーマに対する変更を解釈し、前記変更の、人が理解可能な記述を前記クエリプロセッサに提供する、前記クエリプロセッサと通信するコンパレータ／インタプリタをさらに備えることを特徴とする請求項１５に記載のコンポーネント。
【請求項１８】
前記デルタファイルが、第１のバージョンのディレクトリスキーマと、第２のバージョンのディレクトリスキーマと、を含むことを特徴とする請求項１７に記載のコンポーネント。
【請求項１９】
前記コンパレータ／インタプリタが、前記第１のバージョンのディレクトリスキーマを前記第２のバージョンのディレクトリスキーマと比較して、相違を判定することを特徴とする請求項１８に記載のコンポーネント。
【請求項２０】
前記クエリプロセッサが、前記ディレクトリスキーマの変更に応答して変更ログエントリを記憶することを特徴とする請求項１５に記載のコンポーネント。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、ディレクトリスキーマの変更を判定するシステムおよび方法に関する。
【背景技術】
【０００２】
ネットワークは、一般に、サーバ、クライアント、および／または他のシステムのグループとして構成される。データ、ソフトウェアプログラム、および／または他の情報は、物理的構成のネットワーク上に記憶される。しかし、ネットワーク上に記憶される情報は一般に、ディレクトリシステムと呼ばれる論理的構成を使用して記憶され、ディレクトリシステムは、ネットワークの物理的構成との任意の関係を有しても有さなくても良い。ディレクトリは一般に、オブジェクトの組、すなわち、ユーザ、コンピュータ、サーバ、ドメイン、サイト、フォルダ、および／またはファイル、の組として構成される。ディレクトリは、所定のまたは特定のスキーマを有することが可能である。スキーマは、オブジェクトおよびその関係がディレクトリ上でどのように表されるかを定義し、かつ、ディレクトリの部分がお互いにどのように相互作用するかを記述する。一般に、一組織がディレクトリを設定すると、ディレクトリシステムが標準のスキーマを作成または生成する。しかし、ユーザが、新しいソフトウェアを追加することによりまたは他のアクションにより、ディレクトリを変更し始めると、スキーマは変化する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
一般に、ディレクトリスキーマへの変更は、取り消しまたは「ロールバック」ができない。ユーザが変更を取り消したい場合、ユーザはしばしば、１つのディレクトリサーバ、また、場合によっては全てのディレクトリサーバの強制的な復旧を完了しなければならず、それには時間がかかり、ディレクトリのダウンタイムを要する。このように、ユーザは一般に、ディレクトリ上にインストールされたサードパーティのアプリケーションまたは他のアクションにより、どんな変更がなされたのかを理解して、そのリスクを可能性のある問題について見極めることを望む。残念ながら、一般に、ディレクトリスキーマに対してどんな変更がなされたのかについてユーザに明確に示すことが可能な方法またはシステムは無い。
【課題を解決するための手段】
【０００４】
本発明の実施形態は、一般に、ディレクトリスキーマに対する変更を判定するシステムおよび方法に関する。実施形態において、ディレクトリスキーマの変更は、後で検索することが可能な変更ログ内に記録される。一度検索されると、ディレクトリスキーマの変更は、実施形態において、基本スキーマと比較されて、現在存在し得るディレクトリスキーマへの全ての変更を判定する。スキーマの変更は、例えば、Ａｃｔｉｖｅ  Ｄｉｒｅｃｔｏｒｙ  Ｄｏｍａｉｎ  ＳｅｒｖｉｃｅまたはＡｃｔｉｖｅ  Ｄｉｒｅｃｔｏｒｙ  Ｌｉｇｈｔｗｅｉｇｈｔ  Ｄｉｒｅｃｔｏｒｙ  Ｓｅｒｖｉｃｅ（どちらもユーザへの提示のために適用可能である）に照らして解釈され得る。
【０００５】
この要約は、以下の「発明を実施するための形態」でさらに述べる概念を選択して簡略化した形式で紹介するために提供するものである。この要約は、請求の主題の重要な特徴または本質的な特徴を確認することを意図しておらず、請求の主題の範囲を限定するものとして使用されることも意図していない。
【図面の簡単な説明】
【０００６】
【図１】スキーマにより記述されるディレクトリシステムを有するサーバネットワークの実施形態のブロック図である。
【図２】スキーマへの変更を判定するためのシステムの実施形態のブロック図である。
【図３】スキーマデータを比較する方法の実施形態のブロック図である。
【図４】スキーマへの変更を記録するためのデータ構造の実施形態のデータ構造図である。
【図５】スキーマデータ内で発見される相違を判定するための処理の実施形態のフロー図である。
【図６】スキーマデータを比較するための処理の実施形態のフロー図である。
【図７】スキーマデータ内の相違を判定するために動作可能なコンピューティングシステムの実施形態のブロック図である。
【発明を実施するための形態】
【０００７】
本開示は、ここで、いくつかの実施形態を添付の図面を参照してさらに十分に記載するもので、いくつかの可能な実施形態のみが示される。他の態様は、多くの異なる形式において具現化され得、かつ、ここに記載される実施形態に限定されると解釈すべきではない。むしろ、これらの実施形態は、本開示が可能性のある実施形態の範囲を当業者に伝達するように、提供される。
【０００８】
本発明の実施形態は一般に、ディレクトリスキーマへの変更を判定する、新しいかつ改善されたシステムおよび方法に関する。スキーマは、ディレクトリシステムのデータ記述である。例えば、スキーマは、ディレクトリサービスがデータを記憶するために使用する全てのオブジェクタおよび属性を定義する。スキーマの物理的構造は、オブジェクト定義から成り得る。実施形態において、スキーマ自身はディレクトリ内に記憶される。実施形態において、ディレクトリスキーマの変更は記録され、後で検索可能である。一実施形態において、異なる時間にコンパイルされ、異なるタイムスタンプを有する２つのスキーマが、比較される。その相違が比較を介して判定される。別の実施形態において、変更ログは、ディレクトリスキーマに対して変更がなされると、記録される。変更ログにおける変更は、所定の時点の後の全ての変更に関してユーザに提供される。相違またはスキーマの変更は、ユーザへの提示のために解釈され得る。
【０００９】
サーバネットワーク１００の実施形態が図１に示される。サーバネットワーク１００は、サーバ１  １０２、サーバ２  １０４、サーバ３  １０６、およびサーバ４  １０８等の２つまたはそれ以上のサーバから成り得る。サーバネットワークが、より多くのまたはより少ないサーバまたは他のコンポーネント、例えば、プリンタ、他の周辺機器、ルータ等、を含有し得ることに留意すべきである。各サーバは、サーバと通信する１つまたは複数のクライアントコンピュータシステムを有し得る。例えば、サーバ４  １０８は、クライアント１  １１０、クライアント２  １１２、およびクライアント３  １１４と通信またはインターフェースする。任意の１サーバが、図１に示すものより多くのまたは少ないクライアントと通信し得ることに留意すべきである。
【００１０】
サーバネットワーク１００内のサーバは、実施形態において、種々の「接続」、例えば、接続１１６、１１８、１２０および１２２、を介してお互いに通信する。用語「接続される」または「接続」は、無線通信、有線通信、ネットワークを介した通信、イントラネット、インターネット等を含むがこれに限定されない、２つのコンピュータシステム間の任意の形式の通信を具現化することを意味する。通信は、任意のプロトコルにより、または任意の形式で、なされ得る。さらに、サーバネットワーク１００は、１つまたは複数のドメインまたはサブセクションから成り得る。
【００１１】
接続１１６、１１８、１２０、および１２２、ならびに、接続１１６、１１８、１２０、および１２２の構成が、ネットワークの「スキーマ」を定義する。実施形態において、スキーマは、ネットワーク内のコンピューティングシステムがどのように接続されるかについての定義または記述である。実施形態において、スキーマは、１つまたは複数のサーバにおける、記憶される情報の組である。例えば、スキーマは、サーバ４  １０８において記憶されるＬＤＡＰデータベース１２４であり得る。データベース１２４は、全てのサーバに対して複製され得、各サーバがサーバにローカルなスキーマのコピーを有するようにする。
【００１２】
サーバネットワーク１００は、ネットワーク１００を介してクライアントに、データ、プログラムの物理的記憶を提供するよう、または、他の機能を提供するよう、相互に関連付けまたは機能し得る。実施形態において、データをどのように論理的に記憶するかを、例えば、マイクロソフト（登録商標）社のＡｃｔｉｖｅ  Ｄｉｒｅｃｔｏｒｙ  Ｄｏｍａｉｎ  Ｓｅｒｖｉｃｅなどのディレクトリシステムにより管理する。ディレクトリシステムは、ディレクトリの論理部分を構成および体系化する任意のタイプのシステムであり得る。ディレクトリシステムは、１つまたは複数のオブジェクトを備えるオブジェクト指向のソフトウェアシステムであり得、各オブジェクトは１つまたは複数の属性を含み得る。
【００１３】
実施形態において、クライアントコンピュータ（例えば、クライアント１  １１０）を操作しているユーザ、または、ディレクトリシステムにインストールされたサードパーティのソフトウェアパッケージは、スキーマまたはディレクトリシステムを変更することが可能である。実施形態において、ユーザまたはサードパーティの拡張機能によりディレクトリシステムに対してなされた変更により、オブジェクト、オブジェクトクラス、または属性を、追加、修正、機能停止、または削除し得る。ユーザは多くの場合、スキーマまたはディレクトリシステムになされた変更を理解する必要がある。以下では、スキーマまたはディレクトリシステムに対する変更について、スキーマに対する変更と同様に簡単に言及する。
【００１４】
スキーマに対する変更を判定するツールまたはシステム２００の実施形態が、図２に示される。ツール２００は、ユーザインターフェース２０２、クエリプロセッサ２０４、およびコンパレータ／インタプリタ２１０を備え得るが、これに限定されない。実施形態において、ツール２００は、スキーマデータのデータストア２０６にアクセスする。ツール２００は、クライアント、例えばクライアント１  １１０（図１）において、または、サーバ、例えばサーバ４  １０８において、実行し得る。ツール２００のコンポーネントは、実施形態において、ソフトウェアコンポーネントまたはコンピュータシステムにおいて実行可能なモジュールである。代替の実施形態において、ツール２００のコンポーネントは、ハードウェアコンポーネント、または本明細書に記載される機能を実行するよう特別に設計された論理ゲートである。
【００１５】
ユーザインターフェース２０２は、実施形態において、ユーザ選択を受け入れ、ユーザに表示するための出力を提供する。ユーザ選択装置、入力装置、および出力装置については、図７と併せて記載する。ユーザインターフェース２０２は、スキーマに対してなされた変更に関するユーザからの要求またはクエリを受け取り得る。さらなる他の実施形態において、ユーザインターフェース２０２は、スキーマに対してなされた変更を表示する出力を提供する。ユーザインターフェース２０２は、クエリプロセッサ２０４と通信している。
【００１６】
クエリプロセッサ２０４は、ユーザインターフェース２０２の選択を受け取り、処理する。クエリプロセッサ２０４は、実施形態において、ユーザからのスキーマに対する変更を受け取る。変更が生成されると、クエリプロセッサ２０４は、実施形態において、変更ログ２１２に変更のログを記録する。代替の実施形態において、ディレクトリサービスは、クエリプロセッサ２０４において変更に対する要求を受け取った後に、変更のログを記録する。変更ログ２１２は、スキーマに対する変更についての情報を記録する任意のタイプのデータ要素であり得る。実施形態において、変更ログ２１２は、所定の期間中に起こるスキーマに対する１つまたは複数の個別の変更を備える。変更ログ２１２内の変更は、後の検索のためにタイムスタンプが付され得る。一実施形態において、変更ログ２１２は、スキーマデータのデータストア２０６に送られて、記憶される。
【００１７】
クエリプロセッサ２０４はまた、スキーマに対してなされた変更を判定する要求を受け取り得る。クエリプロセッサ２０４は、クエリをフォーマットし、クエリに応答するために要求されたデータを検索する。一実施形態において、クエリプロセッサ２０４は、スキーマデータのデータストア２０６にアクセスして、クエリに応答するために適切なデータを検索する。さらなる実施形態において、スキーマデータのデータストア２０６から検索された情報は、コンパレータ／インタプリタ２１０に送られ、コンパレータ／インタプリタは、デルタファイル２０８を生成する。デルタファイル２０８は、スキーマへの１つまたは複数の変更を含むことが可能であり、この変更は、スキーマに対する変更を判定するために現在のスキーマと標準のものを比較することにより生成され得るものである。デルタファイル２０８は、他の実施形態において、標準のスキーマおよび例えば２１２などの１つまたは複数の変更ログを備える。デルタファイルは、スキーマ、スキーマへのポインタまたは参照、および／またはスキーマに対する変更を含み得る。さらなる他の実施形態において、デルタファイル２０８は、ある時点から別の時点まで作成される、例えば２１２などの１つまたは複数の変更ログを備える。
【００１８】
クエリプロセッサ２０４は、実施形態において、スキーマデータのデータストア２０６からの情報を受け取り、フォーマットして、ユーザインターフェース２０２に提供する。他の実施形態において、クエリプロセッサ２０４は、コンパレータ／インタプリタ２１０と通信する。コンパレータ／インタプリタ２１０は、スキーマデータのデータストア２０６からの情報を比較して、スキーマに対してなされた変更を判定することが可能である。さらなる実施形態において、コンパレータ／インタプリタ２１０は、変更を解釈し、変更を人が理解可能な形式にフォーマットする。
【００１９】
一実施形態において、コンパレータ／インタプリタ２１０は、現在のスキーマおよび標準のスキーマを受け取る。コンパレータ／インタプリタ２１０は、現在のスキーマと標準のスキーマを比較して、２つのスキーマ間の全ての相違を指摘する。代替の実施形態において、コンパレータ／インタプリタ２１０は、１つまたは複数の変更ログにリストアップされた全ての変更を判定する。さらなる別の実施形態において、コンパレータ／インタプリタ２１０は、特定の所定の時点におけるスキーマを判定する。例えば、コンパレータ／インタプリタ２１０は、所定の時点までになされた全ての変更を使用して、標準のスキーマを確立する。このスキーマは、次に、現在のスキーマと比較されて、スキーマ間の相違を指摘する。さらなる別の実施形態において、コンパレータ／インタプリタ２１０は、所定の時間後に作成された１つまたは複数の変更ログ内の全ての変更を判定する。判定された変更は、次に解釈され得る。
【００２０】
スキーマに対する変更は、ユーザにとって非常に抽象的であり得る。例えば、オブジェクトクラスの追加は、ユーザにとって有形の意味では何の意味もない。コンパレータ／インタプリタ２１０は、ユーザのために変更を解釈する。例えば、新しいオブジェクトクラスの作成は、今度はある新しい機能が実行可能であるということを意味すると解釈され得る。コンパレータ／インタプリタ２１０は、他の変更を解釈してユーザに説得力のある情報を提供することも可能である。コンパレータ２１０は、例えば、Ａｃｔｉｖｅ  Ｄｉｒｅｃｔｏｒｙ  Ｄｏｍａｉｎ  Ｓｅｒｖｉｃｅ（ＡＤＤＳ）またはＡｃｔｉｖｅ  Ｄｉｒｅｃｔｏｒｙ  Ｌｉｇｈｔｗｅｉｇｈｔ  Ｄｉｒｅｃｔｏｒｙ  Ｓｅｒｖｉｃｅ（ＡＤＬＤＳ）に照らして、データを提示し得る。
【００２１】
実施形態において、スキーマデータのデータストア２０６は、スキーマデータを提供する。一実施形態において、スキーマデータのデータストア２０６は、サーバ、例えばサーバ４  １０８（図１）、に置かれる。クライアント、例えばクライアント１  １１０（図１）は、サーバからのスキーマデータにアクセス、またはサーバにスキーマデータを要求し得る。他の実施形態において、スキーマデータのデータストア２０６は、クライアントに局在する。スキーマデータのデータストア２０６は、スキーマデータを求める要求を受け取り、処理し得る。例えば、クエリプロセッサ２０４が、与えられた時間後に作成されたスキーマのスキーマデータを要求する場合、スキーマデータのデータストア２０６は、与えられた時間後に作成されたスキーマを判定し、提供することが可能である。代替の実施形態おいて、変更ログ（複数可）２１２が、スキーマデータのデータストア２０６にて記憶される。スキーマデータを求める要求は、スキーマデータのデータストア２０６が、デルタファイル２０８内で１つまたは複数の変更ログ２１２をクエリプロセッサ２０４に提供することを要求し得る。
【００２２】
スキーマの相違がどのように判定されるかついての処理３００を示すブロック図が、図３に示される。第１のディレクトリであるディレクトリ１Ａ  ３０２が、第１のスキーマであるスキーマ１  ３０６により典型として表される。ディレクトリ１Ａは、過去のある所定の時点において構成され、動作したような、ディレクトリであり得る。例えば、ディレクトリ１Ａは、標準のディレクトリ、すなわち、ディレクトリシステムの初期導入と共に構成されたディレクトリスキーマであり得る。標準のディレクトリスキーマは、ディレクトリシステムの提供者により判定され得る。他の実施形態において、ディレクトリ１Ａ  ３０２は、過去の別の時点までに起こったいくつかの追加の変更を有する標準のディレクトリスキーマである。
【００２３】
第２のディレクトリであるディレクトリ１Ｂ  ３０４が、第２のスキーマであるスキーマ２  ３０８により典型として表される。ディレクトリ１Ｂ  ３０４は、現在のディレクトリであり得る。言い換えると、スキーマ２  ３０８は、ディレクトリ１Ｂ  ３０４を現在存在している通りに表す。他の実施形態において、ディレクトリ１Ｂ  ３０４は、過去のある時点であるが、ディレクトリ１Ａが作成された後の、ある時点において存在した通りのディレクトリであり得る。従って、処理３００は、２つの別々の時点におけるスキーマに対する変更を判定可能である。さらなる別の実施形態において、スキーマ２  ３０８は、ディレクトリ１Ａ  ３０６とディレクトリ１Ｂ  ３０８との間の相違を記述する１つまたは複数の変更ログである。
【００２４】
比較エンジン３１０は、スキーマ１  ３０６およびスキーマ２  ３０８を受け取り、スキーマ間の相違を判定する。一実施形態において、比較エンジン３１０は、スキーマを解析し、スキーマの別個の部分を比較して、相違を特定する。例えば、比較エンジン３１０は、スキーマ１  ３０６には無い任意の属性について、スキーマ２  ３０８を精査する。他の実施形態において、比較エンジン３１０は、スキーマ１  ３０６のタイムスタンプおよびスキーマ２  ３０８のタイムスタンプを判定する。比較エンジン３１０は次に、スキーマ１  ３０６のタイムスタンプより後であるが、スキーマ２  ３０８のタイムスタンプより前またはスキーマ２  ３０８のタイムスタンプまでのタイムスタンプを有する任意の変更ログを特定する。スキーマの相違３１２は、比較エンジン３１０から出力される。
【００２５】
変更ログ情報を含有可能なデータ構造４００の実施形態が、図４に示される。実施形態において、変更ログ４００には、１つまたは複数の変更ログのデータエントリ４０１を含まれ得る。実施形態において、変更ログのデータエントリ４０１には、ユーザ識別（ＩＤ）４０２、タイムスタンプ４０４、クラス変更表示子４０６、属性変更表示子４０８、オブジェクトＩＤ４１０および属性ＩＤ４１２、変更のタイプを示すフィールド４１４、以前の値のフィールド４２２、ならびに、新しい値のフィールド４２４、が含まれるがこれに限定されない。コンピュータシステム、例えば、サーバ４  １０８またはクライアント１  １１０は、変更ログ４００内の情報を使用して、スキーマへの変更を判定し得る。例えば、変更ログ４００は、ＬＤＡＰデータベース、例えば、データストア１２４に記憶される。
【００２６】
実施形態において、ユーザがスキーマを変更するセッションを開始すると、ユーザは、ＩＤを使用してコンピュータシステムにログインする。このユーザＩＤは、フィールド４０２の変更ログのエントリ４０１に記憶される。ユーザＩＤ４０２により、ユーザがスキーマに対して変更をなした情報をシステム２００（図２）が提供することができる。タイムスタンプ４０４は、実施形態において、スキーマに対して変更がなされる現在の時間を記憶する。タイムスタンプ４０４を使用して、変更を比較し、過去のある所定の時間の後にどの変更がなされたかを判定することが可能である。
【００２７】
スキーマに対する変更は、オブジェクトクラスまたは属性に対するものであり得る。他の実施形態において、１つまたは複数の他のタイプの変更が、スキーマに対してなされる。どのタイプの変更がなされたかを識別するために、クラス変更表示子のフィールド４０６が、実施形態において、オブジェクトまたはオブジェクトクラスに対して変更がなされたことを示す。属性変更表示子のフィールド４０８は、変更が、１つまたは複数のオブジェクトの属性に対するものであったことを示すことが可能である。他のタイプの変更を示すことが可能な１つまたは複数の他のフィールドが含まれ得るが、これらの他のフィールドは示されず、実施形態の説明を簡略化する。コンパレータ／インタプリタ２１０（図２）は、クラス変更のフィールド４０６または属性変更のフィールド４０８のデータを解釈して、スキーマに対して何の変更がなされたかにつての説明をユーザに提供することが可能である。
【００２８】
変更された特定のオブジェクトまたは属性を識別するために、変更ログのエントリ４０１は、実施形態において、オブジェクトＩＤ４１０または属性ＩＤ４１２を含む。オブジェクトＩＤ４１０は、変更されたオブジェクトまたはオブジェクトクラスを識別する。オブジェクトＩＤ４１０は、グローバル一意識別子（ＧＵＩＤ）または他の適切なＩＤであり得る。属性ＩＤ４１２はまた、ＧＵＩＤまたは他の適切なＩＤであり得る。１つまたは複数の他の識別子は、クラス変更のフィールド４０６で説明したように、スキーマになされ得るであろう他のタイプの変更があるかどうかに依存して、変更ログのエントリ４０１に含まれ得る。コンパレータ／インタプリタ２１０（図２）は、オブジェクトＩＤのフィールド４１０または属性ＩＤのフィールド４１２内のデータを解釈して、何の変更がスキーマに対してなされたかの説明をユーザに提供することが可能である。例えば、オブジェクトＩＤ４１０により識別されたオブジェクトにより、サーバが１日に１回だけ複製（複製とは、サーバが、各サーバ間で共有されるデータをコピーする処理である）するのであれば、オブジェクトに対する変更により、サーバが１日に１回より多く複製可能であり得ることが示され得るであろう。どのタイプの変更がなされたかを判定するために、コンパレータ／インタプリタ２１０（図２）は、変更タイプのフィールド４１４を検査し得る。
【００２９】
実施形態において、変更タイプのフィールド４１４は、オブジェクトまたは属性に対してなされる変更のタイプについての、１つまたは複数の表示子を含有する。変更タイプのフィールド４１４には、実施形態において、追加のフィールド４１６、修正のフィールド４１８、および／または機能停止／削除のフィールド４２０が含まれ得るが、これに限定されない。追加のフィールド４１６は、オブジェクトまたは属性がスキーマに追加されたことを示し得る。修正のフィールド４１８は、オブジェクトまたは属性の値が変更されたことを示し得る。最後に、機能停止／削除のフィールド４２０は、オブジェクトまたは属性が無効にされた／削除されたことを示し得る。コンパレータ／インタプリタ２１０（図２）は、変更タイプのフィールド４１４のデータを解釈して、スキーマに対して何がなされたかをユーザに示すことが可能である。修正のフィールド４１８が設定される場合、コンパレータ／インタプリタ２１０は、前回の値のフィールド４２２および／または新しい値のフィールド４２４を解釈することにより、何の変更がなされたかを判定しようとし得る。
【００３０】
前回の値のフィールド４２２は、実施形態において、修正前のオブジェクトまたは属性の値を示す。新しい値のフィールド４２４は、修正後のオブジェクトまたは属性の新しい値を示し得る。別の実施形態において、新しい値のフィールド４２４は、追加のフィールド４１６が設定されることにより示される、追加された新しいオブジェクトまたは属性の値を示す。コンパレータ／インタプリタ２１０（図２）は、前回の値のフィールド４２２および新しい値のフィールド４２４を使用して、変更がスキーマに対してどのように影響したかを説明することが可能である。例えば、オブジェクトＩＤ４１０により識別されるオブジェクトは、前回の値のフィールド４２２内の値「１」で示される、１つの子オブジェクトを有する親オブジェクトであり得る。変更は、新しい値のフィールド４２４内の値「２」で示される、第２の子オブジェクトを追加し得る。コンパレータ／インタプリタ２１０は、変更ログ４００内のデータ、およびスキーマ内のオブジェクトに関連する任意のメタデータを使用して、ユーザに変更を説明することが可能である。
【００３１】
２つのスキーマ間の相違を提供する方法５００の実施形態が、図５に示される。実施形態において、方法５００は、コンピュータシステムにおいて実行されるコンピュータ命令の組である。方法５００は一般に、「開始」動作で開始し、「終了」動作で終了する。
【００３２】
提供動作５０２が、スキーマデータを提供する。一実施形態において、システム２００（図２）は、タイムスタンプ４０４（図４）で示される第１の時間において存在した、第１のディレクトリ３０２（図３）のスキーマデータ３０６（図３）を検索する。代替の実施形態において、第１のディレクトリ３０２（図３）は、標準のディレクトリであり得、タイムスタンプを有しない。システム２００（図２）はまた、タイムスタンプ４０４（図４）で示される第２の時間において存在した、第２のディレクトリ３０４（図３）のスキーマデータ３０８（図３）を検索し得る。代替の実施形態において、システム２００（図２）は、第１の時間において存在した第１のディレクトリの第１のタイムスタンプ４０４（図４）を判定し得る。そして、システム２００（図２）は、第１のタイムスタンプより後であるタイムスタンプ４０４（図４）を付して変更ログのエントリ４０１を設定する。
【００３３】
比較動作５０４は、スキーマデータを比較する。一実施形態において、コンパレータ／インタプリタ２１０（図２）は、第１のディレクトリスキーマ３０６（図３）を第２のスキーマディレクトリ３０８（図３）と比較する。コンパレータ／インタプリタ２１０（図２）は、第２のディレクトリスキーマ３０８（図３）を解析し、次に、オブジェクトＩＤ４１０（図４）を使用して、同じオブジェクトが第１のディレクトリスキーマ３０６（図３）内に存在するかどうかを判定することが可能である。同様に、コンパレータ／インタプリタ２１０（図２）は、属性のフィールド、または、他の実施形態においては属性ＩＤ４１２（図４）を使用して、属性の相違を発見することが可能である。代替の実施形態において、コンパレータ／インタプリタ２１０（図２）は、変更ログのエントリ４０１（図４）を、第１のディレクトリスキーマ３０６（図３）のタイムスタンプより遅いタイムスタンプ４０４（図４）を使用してコンパイルする。
【００３４】
提供動作５０６は、スキーマデータ間の相違を提供する。ある実施形態において、コンパレータ／インタプリタ２１０（図２）は、相違を解釈する。例えば、変更ログ４００（図４）が集約され、各変更ログのエントリ４０１（図４）が解釈され得る。コンパレータ／インタプリタ２１０（図２）は、例えば、オブジェクトＩＤ４１０（図４）、変更タイプのフィールド４１４（図４）、ならびに、おそらくは前回の値のフィールド４２２（図４）および新しい値のフィールド４２４（図４）の両方、を使用して、変更タイプを判定する。変更は、人が理解可能な言語で記述され、ユーザに表示するためにユーザインターフェース２０２（図２）に送られる。
【００３５】
ディレクトリスキーマの相違を判定する方法６００の別の実施形態が、図６に示される。実施形態において、方法６００は、コンピュータシステムにおいて実行されるコンピュータ命令の組である。方法６００は一般に、「開始」動作で開始し、「終了」で終了する。受け取り動作６０２は、ディレクトリデータベース、例えば、マイクロソフト（登録商標）社のＡｃｔｉｖｅ  Ｄｉｒｅｃｔｏｒｙ  Ｄｏｍａｉｎ  Ｓｅｒｖｉｃｅ、の情報を受け取る。ある実施形態において、ユーザは、２つのディレクトリデータベースに関連する情報を、ユーザインターフェース２０２（図２）に入力する。例えば、ユーザは、第１のディレクトリスキーマ３０６（図３）の第１の時間、および、第２のディレクトリスキーマ３０８（図３）の第２の時間を入力し得る。他の実施形態において、ユーザは、第２のディレクトリスキーマ３０８（図３）のみを入力するが、その状況では、システム２００（図２）は、標準のディレクトリスキーマを第１のディレクトリスキーマとして使用する。
【００３６】
検証動作６０６は、入力が有効かどうかを検証する。ある実施形態において、クエリプロセッサ２０４（図２）は、受け取った情報に関連するディレクトリスキーマが存在するかどうかを判定する。例えば、クエリプロセッサ２０４（図２）は、受け取ったタイムスタンプの後のタイムスタンプを有するディレクトリスキーマが存在するかどうかを判定する。入力が有効でない場合、処理は「いいえ」に流れ、ユーザに対するエラーを作成して終了する。入力が有効である場合、ディレクトリ情報６０４は、ディレクトリスキーマデータベース２０６（図２）からと同様に検索される。ディレクトリ情報６０４は、スキーマ３０８（図３）および／または変更ログ２１２（図２）を含み得る。そして、処理は「はい」に流れ、動作６０８を判定する。
【００３７】
判定動作６０８は、データベース入力の数を判定する。一実施形態において、クエリプロセッサ２０４（図２）は、ユーザが１つのスキーマまたは２つのスキーマを入力したかを判定する。１つのスキーマが入力された場合、処理は「１つ」に流れ、動作６１２を検索する。２つまたはそれ以上のスキーマが入力された場合、処理は「２つまたはそれ以上」に流れ、動作６１０を比較する。検索動作６１２は、基本のスキーマを検索する。実施形態において、クエリプロセッサ２０４（図２）は、基本または標準のスキーマをスキーマのデータストア２０６（図２）から検索する。
【００３８】
比較動作６１４は、入力されたスキーマを基本のスキーマと比較する。実施形態において、クエリプロセッサ２０４（図２）は、基本のスキーマおよび入力されたスキーマをコンパレータ／インタプリタ２１０（図２）に提供する。コンパレータ／インタプリタ２１０（図２）は、スキーマを比較する。一実施形態において、コンパレータ／インタプリタ２１０（図２）は、図５と併せて説明したように、スキーマを解析し、比較する。別の実施形態において、コンパレータ／インタプリタ２１０（図２）は、図５と併せて説明したように、変更ログ４００（図４）からの変更を判定する。
【００３９】
比較動作６１０は、ユーザにより入力された２つのスキーマを比較する。ある実施形態において、クエリプロセッサ２０４（図２）が、２つの入力されたスキーマを、コンパレータ／インタプリタ２１０（図２）に提供し、コンパレータ／インタプリタが、スキーマを比較する。コンパレータ／インタプリタ２１０（図２）は次に、図５と併せて記載したように、スキーマを比較する。
【００４０】
生成動作６１６は、相違についての報告を生成する。コンパレータ／インタプリタ２１０（図２）は、ある実施形態において、解釈されたスキーマの相違をクエリプロセッサ２０４（図２）に提供する。クエリプロセッサ２０４（図２）は、ユーザのクエリに答える報告を作成し、その報告をユーザインターフェース２０２（図２）上に表示する。ある実施形態において、ユーザは、テキストベースのフォーマットの報告を見る。
【００４１】
図７を参照すると、本明細書に記載される実施形態を実装するためのコンピューティング環境の実施形態が示される。一実施形態において、システム２００（図２）は、クライアントマシンで実行されるソフトウェアアプリケーションである。代替の実施形態において、システム２００（図２）は、サーバ、デスクトップ、ラップトップ、携帯用装置、または、クライアントのソフトウェアを実行する他のコンピューティングシステムである。システム２００（図２）のコンピュータ環境の実施形態は、コンピュータシステム７００等のコンピュータシステムを含む。
【００４２】
その最も基本的な構成において、コンピュータシステム７００は典型的には、少なくとも１つのプロセシングユニット７０２およびシステムメモリ７０４を含む。実施形態において、ツール２００（図２）が、コンピュータのシステムメモリ７０４からプロセシングユニット７０２により、ロードされ稼動される。コンピュータシステム７００の的確な構成及びタイプに依存して、メモリ７０４は、揮発性（ＲＡＭなど）、不揮発性（ＲＯＭ、フラッシュメモリ等）、またはその２つの何らかの組合せであり得る。コンピュータシステム７００のこの最も基本的は構成が、図７において点線７０６で例示される。
【００４３】
加えて、装置７００はまた、追加の特徴／機能を有し得る。例えば、装置７００には、磁気ディスク、光ディスク、またはテープを含むがこれに限定されない追加の記憶装置（着脱可能および／または着脱不可能）が含まれる。そのような追加の記憶装置は、図７において、着脱可能記憶装置７０８および着脱不可能記憶装置７１０により例示される。実施形態において、ツール２００（図２）、または本明細書に記載される他のコンポーネントは、着脱不可能記憶装置７１０に記憶されるが、インストールされるソフトウェアコンポーネントまたはデータは、着脱可能記憶装置７０８に保存され、コンピュータ上のプロセシングユニット７０２による使用または実行のためにシステムメモリ７０４にロードされ得る。いくつかの実施形態において、ツール２００（図２）、変更ログ４００（図４）、または本明細書に記載される他のソフトウェアコンポーネントは、ソフトウェアシステム２００（図２）のいくつかのコンポーネントうちの１つである。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータ等の情報の記憶のための、任意の方法または技術で実装される、揮発性および不揮発性、着脱可能および着脱不可能、の媒体が含まれる。
【００４４】
メモリ７０４，着脱可能記憶装置７０８、および着脱不可能記憶装置７１０は、全てコンピュータ記憶媒体の例である。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋ）もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、他の磁気記憶装置、または、所望の情報、例えば変更ログ４００（図４）を記憶するために使用される任意の他の媒体、および、クライアントコンピュータまたはサーバコンピュータ上の装置７００もしくはプロセッサ７０２によりアクセスされる任意の他の媒体、が含まれるがこれに限定されない。任意のそのようなコンピュータ記憶媒体は、装置７００の一部であり得る。実施形態において、変更ログ４００（図４）は、クライアントコンピュータにローカルに記憶され得る。他の実施形態において、変更ログ４００（図４）は、サーバにて記憶され得る。例えば、Ａｃｔｉｖｅ  Ｄｉｒｅｃｔｏｒｙのデータベースにおいて、１つのサーバが、スキーママスタとしての役割において機能する。このサーバは、変更ログ４００（図４）を記憶し、他のサーバがスキーママスタの役割を担う場合は変更ログ４００（図４）を別のサーバに転送し得る。
【００４５】
装置７００はまた、装置が他の装置と通信することを可能にする通信接続（複数可）７１２を含有し得る。実施形態において、通信接続７１２を使用して、データ、例えば変更ログ４００（図４）、を、インターネット等のネットワークを介して送信および／または受信する。通信接続（複数可）７１２は、通信媒体の例である。
【００４６】
実施形態において、装置７００には、入力装置７１４および出力装置７１６を含むグラフィカルユーザインターフェースが含まれる。ユーザインターフェース２０２（図２）を介するスキーマのデータ選択は、実施形態において、ユーザ入力装置（複数可）７１４を使用して選択され、データは出力装置（複数可）７１６を使用して表示される。入力装置（複数可）７１４はまた、ユーザインターフェース選択装置とも称され、キーボード、マウス、ペン、音声入力装置、タッチ入力装置等を含むが、これに限定されない。出力装置（複数可）７１６はまた、ディスプレイとも称され、ブラウン管ディスプレイ、プラズマスクリーンディスプレイ、液晶ディスプレイ、スピーカ、プリンタ等を含むが、これに限定されない。これらの装置は、個別にまたは組合せて、本明細書に記載するようなスキーマデータを表示ために使用されるグラフィカルユーザインターフェース２０２（図２）を形成する。全てのこれらの装置は、従来技術において周知であり、ここで詳細に検討する必要は無い。
【００４７】
コンピュータシステム７００は典型的には、コンピュータ可読媒体の少なくともいくつかの形式を含む。コンピュータ可読媒体は、プロセシングユニット７０２によりアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく例として、コンピュータ可読媒体は、コンピュータ記憶媒体を備える。ソフトウェアシステム２００（図２）およびコンポーネント、方法、および／または本明細書に記載されるアルゴリズムは、コンピュータ記憶媒体上に記憶され得るような、モジュールまたはコンピュータシステム７００により実行可能な命令を備える。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータ等の情報の記憶のための、任意の方法または技術で実装される、揮発性および不揮発性、着脱可能および着脱不可能、の媒体が含まれる。上記の任意ものの組合せもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【００４８】
実施形態が、構造的特徴、方法論的な動作、およびそのような動作を含有するコンピュータ可読媒体に特有の言語で記載されたが、可能性のある実施形態は、添付の請求項に定義されるように、記載される特定の構造、動作、または媒体に必ずしも限定されないことは理解されるべきである。当業者は、本発明の精神の範囲内である他の実施形態または実装を認識するであろう。従って、特定の構造、動作、または媒体は、単なる例示の実施形態として開示される。本発明は、添付の請求項により定義される。
【図１】
2010532525.tif 000003
【図２】
2010532525.tif 000004
【図３】
2010532525.tif 000005
【図４】
2010532525.tif 000006
【図５】
2010532525.tif 000007
【図６】
2010532525.tif 000008
【図７】
2010532525.tif 000009
【国際調査報告】
2010532525.tif 000010
2010532525.tif 000011