(57)【要約】【課題】複数のデータベースオブジェクトの投影インデックスの最新性を保持する際に使用するためのコンピュータ実施方法を提供すること。【解決手段】このコンピュータ実施方法は、第１のデータベースオブジェクトと、少なくとも第２のデータベースオブジェクトとの間における接続を表す投影インデックスを作成するステップと（３０２）、第１のデータベースオブジェクトと、少なくとも第２のデータベースオブジェクトとの間におけるエンティティー依存関係を特定するステップと（３０８）、第１のデータベースオブジェクトと、少なくとも第２のデータベースオブジェクトとの間におけるパス依存関係を特定するステップと（３１６）、エンティティー依存関係およびパス依存関係のうちの一方または両方の修正に応答して投影インデックスを更新するステップと（３２０）を含む。【選択図】図３
2013164846.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータベースオブジェクトの投影インデックスの最新性を保持する際に使用するためのコンピュータ実施方法であって、
前記複数のデータベースオブジェクトのうちの第１のデータベースオブジェクトと、前記複数のデータベースオブジェクトのうちの少なくとも第２のデータベースオブジェクトとの間における接続を表す前記投影インデックスを作成するステップと、
前記第１のデータベースオブジェクトと、少なくとも前記第２のデータベースオブジェクトとの間におけるエンティティー依存関係を特定するステップと、
前記第１のデータベースオブジェクトと、少なくとも前記第２のデータベースオブジェクトとの間におけるパス依存関係を特定するステップと、
前記エンティティー依存関係および前記パス依存関係のうちの少なくとも一方の修正に応答して前記投影インデックスを更新するステップと
を含むことを特徴とするコンピュータ実施方法。
【請求項２】
前記投影インデックスを作成するステップは、前記第１のデータベースオブジェクトと、少なくとも前記第２のデータベースオブジェクトとの間における前記エンティティー依存関係および前記パス依存関係のうちの少なくとも一方が、前記第１のデータベースオブジェクトに関連付けられて格納されるように、前記複数のデータベースオブジェクトをメモリエリア内に格納するステップを含むことを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項３】
エンティティー依存関係を特定するステップは、前記第２のデータベースオブジェクトが修正されていることを検知するステップを含むことを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項４】
エンティティー依存関係を特定するステップは、前記第１のデータベースオブジェクトと、前記第２のデータベースオブジェクトとの間における前記エンティティー依存関係が、前記第２のデータベースオブジェクトの前記修正によって影響を受けているかどうかを、前記投影インデックスに基づいて特定するステップをさらに含むことを特徴とする請求項３に記載のコンピュータ実施方法。
【請求項５】
前記第１のデータベースオブジェクトと、前記第２のデータベースオブジェクトとの間における前記エンティティー依存関係が、前記第２のデータベースオブジェクトの前記修正によって影響を受けていると特定したことに応答して、前記第１のデータベースオブジェクトが最新ではないことをメモリエリア内に示すステップをさらに含むことを特徴とする請求項４に記載のコンピュータ実施方法。
【請求項６】
パス依存関係を特定するステップは、前記第１のデータベースオブジェクトと、前記第２のデータベースオブジェクトとの間における関係が修正されていることを検知するステップを含むことを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項７】
パス依存関係を特定するステップは、前記第１のデータベースオブジェクトと、前記第２のデータベースオブジェクトとの間における前記パス依存関係が、前記第１のデータベースオブジェクトと、前記第２のデータベースオブジェクトとの間における前記関係の前記修正によって影響を受けているかどうかを、前記投影インデックスに基づいて特定するステップをさらに含むことを特徴とする請求項６に記載のコンピュータ実施方法。
【請求項８】
前記第１のデータベースオブジェクトと、前記第２のデータベースオブジェクトとの間における前記パス依存関係が、前記第１のデータベースオブジェクトと、前記第２のデータベースオブジェクトとの間における前記関係の前記修正によって影響を受けていると特定したことに応答して、前記第１のデータベースオブジェクトが最新ではないことをメモリエリア内に示すステップをさらに含むことを特徴とする請求項７に記載のコンピュータ実施方法。
【請求項９】
前記投影インデックスを更新するステップは、前記エンティティー依存関係および前記パス依存関係のうちの少なくとも一方の前記修正を反映するように前記第１のデータベースオブジェクトを更新するステップを含むことを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項１０】
メモリエリアであって、
エンティティー依存関係およびパス依存関係によって接続されている少なくとも第１のデータベースオブジェクトおよび第２のデータベースオブジェクトを含む複数のデータベースオブジェクトを格納し、
前記第１のデータベースオブジェクトと、少なくとも前記第２のデータベースオブジェクトとの間における関係が、前記第１のデータベースオブジェクトに関連付けられて格納されるように前記複数のデータベースオブジェクトの投影インデックスを格納するように構成されているメモリエリアと、
前記メモリエリアに動作可能に結合されているプロセッサであって、
前記第１のデータベースオブジェクトと、少なくとも前記第２のデータベースオブジェクトとの間におけるエンティティー依存関係を特定し、
前記第１のデータベースオブジェクトと、少なくとも前記第２のデータベースオブジェクトとの間におけるパス依存関係を特定し、
前記エンティティー依存関係および前記パス依存関係のうちの少なくとも一方の修正に応答して前記投影インデックスを更新するように構成されているプロセッサと
を含むことを特徴とするコンピュータシステム。
【請求項１１】
前記プロセッサは、前記第２のデータベースオブジェクトが修正されていることを検知するようにさらに構成されていることを特徴とする請求項１０に記載のコンピュータシステム。
【請求項１２】
前記プロセッサは、前記第１のデータベースオブジェクトと、前記第２のデータベースオブジェクトとの間における前記エンティティー依存関係が、前記第２のデータベースオブジェクトの前記修正によって影響を受けているかどうかを、前記投影インデックスに基づいて特定するようにさらに構成されていることを特徴とする請求項１１に記載のコンピュータシステム。
【請求項１３】
前記プロセッサは、前記第１のデータベースオブジェクトと、前記第２のデータベースオブジェクトとの間における前記エンティティー依存関係が、前記第２のデータベースオブジェクトの前記修正によって影響を受けていると特定したことに応答して、前記第１のデータベースオブジェクトが最新ではないことを前記メモリエリア内に示すようにさらに構成されていることを特徴とする請求項１２に記載のコンピュータシステム。
【請求項１４】
前記プロセッサは、前記第１のデータベースオブジェクトと、前記第２のデータベースオブジェクトとの間における関係が修正されていることを検知するようにさらに構成されていることを特徴とする請求項１０に記載のコンピュータシステム。
【請求項１５】
前記プロセッサは、前記第１のデータベースオブジェクトと、前記第２のデータベースオブジェクトとの間における前記パス依存関係が、前記第１のデータベースオブジェクトと、前記第２のデータベースオブジェクトとの間における前記関係の前記修正によって影響を受けているかどうかを、前記投影インデックスに基づいて特定するようにさらに構成されていることを特徴とする請求項１４に記載のコンピュータシステム。
【請求項１６】
前記プロセッサは、前記第１のデータベースオブジェクトと、前記第２のデータベースオブジェクトとの間における前記パス依存関係が、前記第１のデータベースオブジェクトと、前記第２のデータベースオブジェクトとの間における前記関係の前記修正によって影響を受けていると特定したことに応答して、前記第１のデータベースオブジェクトが最新ではないことを前記メモリエリア内に示すようにさらに構成されていることを特徴とする請求項１５に記載のコンピュータシステム。
【請求項１７】
前記プロセッサは、前記エンティティー依存関係および前記パス依存関係のうちの少なくとも一方の前記修正を反映するように前記第１のデータベースオブジェクトを更新するようにさらに構成されていることを特徴とする請求項１０に記載のコンピュータシステム。
【請求項１８】
複数のデータベースオブジェクトの投影インデックスの最新性を保持する際に使用するためのコンピュータ読み取り可能記録媒体であって、前記コンピュータ読み取り可能記録媒体はコンピュータによって実行可能なコンポーネントを有し、前記コンポーネントは、
少なくとも１つのプロセッサによって実行されたときに、
エンティティー依存関係およびパス依存関係によって接続されている少なくとも第１のデータベースオブジェクトおよび第２のデータベースオブジェクトを含む複数のデータベースオブジェクトをメモリエリア内に格納すること、および
前記第１のデータベースオブジェクトと、少なくとも前記第２のデータベースオブジェクトとの間における関係が、前記第１のデータベースオブジェクトに関連付けられて格納されるように前記複数のデータベースオブジェクトの投影インデックスを前記メモリエリア内に格納することを前記少なくとも１つのプロセッサに行わせるインデックス作成コンポーネントと、
少なくとも１つのプロセッサによって実行されたときに、前記第１のデータベースオブジェクトと、少なくとも前記第２のデータベースオブジェクトとの間におけるエンティティー依存関係を特定することを前記少なくとも１つのプロセッサに行わせるエンティティー依存関係コンポーネントと、
少なくとも１つのプロセッサによって実行されたときに、前記第１のデータベースオブジェクトと、少なくとも前記第２のデータベースオブジェクトとの間におけるパス依存関係を特定することを前記少なくとも１つのプロセッサに行わせるパス依存関係コンポーネントと
を含み、前記インデックス作成コンポーネントは、前記エンティティー依存関係および前記パス依存関係のうちの少なくとも一方の修正に応答して前記投影インデックスおよび前記第１のデータベースオブジェクトを更新することを前記少なくとも１つのプロセッサにさらに行わせることを特徴とするコンピュータ読み取り可能記録媒体。
【請求項１９】
前記エンティティー依存関係コンポーネントは、前記第２のデータベースオブジェクトが修正されていることを検知することを前記少なくとも１つのプロセッサにさらに行わせることを特徴とする請求項１８に記載のコンピュータ読み取り可能記録媒体。
【請求項２０】
前記エンティティー依存関係コンポーネントは、前記第１のデータベースオブジェクトと、前記第２のデータベースオブジェクトとの間における前記エンティティー依存関係が、前記第２のデータベースオブジェクトの前記修正によって影響を受けているかどうかを、前記投影インデックスに基づいて特定することを前記少なくとも１つのプロセッサにさらに行わせることを特徴とする請求項１９に記載のコンピュータ読み取り可能記録媒体。
【請求項２１】
前記エンティティー依存関係コンポーネントは、前記第１のデータベースオブジェクトと、前記第２のデータベースオブジェクトとの間における前記エンティティー依存関係が、前記第２のデータベースオブジェクトの前記修正によって影響を受けていると特定したことに応答して、前記第１のデータベースオブジェクトが最新ではないことをメモリエリア内に示すことを前記少なくとも１つのプロセッサにさらに行わせることを特徴とする請求項２０に記載のコンピュータ読み取り可能記録媒体。
【請求項２２】
前記パス依存関係コンポーネントは、前記第１のデータベースオブジェクトと、前記第２のデータベースオブジェクトとの間における関係が修正されていることを検知することを前記少なくとも１つのプロセッサにさらに行わせることを特徴とする請求項１８に記載のコンピュータ読み取り可能記録媒体。
【請求項２３】
前記パス依存関係コンポーネントは、前記第１のデータベースオブジェクトと、前記第２のデータベースオブジェクトとの間における前記パス依存関係が、前記第１のデータベースオブジェクトと、前記第２のデータベースオブジェクトとの間における前記関係の前記修正によって影響を受けているかどうかを、前記投影インデックスに基づいて特定することを前記少なくとも１つのプロセッサにさらに行わせることを特徴とする請求項２２に記載のコンピュータ読み取り可能記録媒体。
【請求項２４】
前記パス依存関係コンポーネントは、前記第１のデータベースオブジェクトと、前記第２のデータベースオブジェクトとの間における前記パス依存関係が、前記第１のデータベースオブジェクトと、前記第２のデータベースオブジェクトとの間における前記関係の前記修正によって影響を受けていると特定したことに応答して、前記第１のデータベースオブジェクトが最新ではないことをメモリエリア内に示すことを前記少なくとも１つのプロセッサにさらに行わせることを特徴とする請求項２３に記載のコンピュータ読み取り可能記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に記載されている実施形態は、一般には、データベースの技術に関し、より詳細には、インデックス作成の技術および方法に関する。
【背景技術】
【０００２】
リレーショナルデータベースに基づく少なくともいくつかの知られているアプリケーションは、データベースオブジェクトが１つまたは複数の関係を通じてその他のデータベースオブジェクトに接続されることを可能にするモデリング機能（ｍｏｄｅｌｉｎｇ  ｃａｐａｂｉｌｉｔｙ）を提供する。より具体的には、そのようなアプリケーションは、タイプによって、また、どんなタイプの関係がデータベースオブジェクトどうしを接続するかに従って、データベースオブジェクトを記述することを可能にする。その上、そのようないくつかのアプリケーションは、正規化されたデータに対する検索を可能にする。しかし、正規化されたデータの検索は一般に、過度なプロセッサおよび／またはメモリの利用を必要とする。その他のアプリケーションは、検索がインデックスに基づいて実行されることを可能にする。しかし、これらのインデックスは、データベース内でのノードおよび／またはノードの関係（ｎｏｄａｌ  ｒｅｌａｔｉｏｎｓｈｉｐ）の追加、修正、および／または削除に起因して、古くなる場合が多い。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明の一態様においては、複数のデータベースオブジェクトの投影インデックスの最新性（ｃｕｒｒｅｎｃｙ）を保持する際に使用するためのコンピュータ実施方法を提供することを目的とする。
【課題を解決するための手段】
【０００４】
このコンピュータ実施方法は、第１のデータベースオブジェクトと、少なくとも第２のデータベースオブジェクトとの間における接続を表す投影インデックスを作成するステップと、第１のデータベースオブジェクトと、少なくとも第２のデータベースオブジェクトとの間におけるエンティティー依存関係を特定するステップと、第１のデータベースオブジェクトと、少なくとも第２のデータベースオブジェクトとの間におけるパス依存関係を特定するステップと、エンティティー依存関係およびパス依存関係のうちの一方または両方の修正に応答して投影インデックスを更新するステップとを含む。
【０００５】
別の態様においては、あるコンピュータシステムが、エンティティー依存関係およびパス依存関係によって接続されている少なくとも第１のデータベースオブジェクトおよび第２のデータベースオブジェクトを含む複数のデータベースオブジェクトを格納するように構成されているメモリエリアを含む。このメモリエリアはまた、第１のデータベースオブジェクトと、少なくとも第２のデータベースオブジェクトとの間における関係が、第１のデータベースオブジェクトに関連付けられて格納されるようにデータベースオブジェクトの投影インデックスを格納する。このコンピュータシステムはまた、メモリエリアに動作可能に結合されているプロセッサを含む。このプロセッサは、第１のデータベースオブジェクトと、少なくとも第２のデータベースオブジェクトとの間におけるエンティティー依存関係を特定し、第１のデータベースオブジェクトと、少なくとも第２のデータベースオブジェクトとの間におけるパス依存関係を特定し、エンティティー依存関係およびパス依存関係のうちの一方または両方の修正に応答して投影インデックスを更新するように構成されている。
【０００６】
別の態様においては、複数のデータベースオブジェクトの投影インデックスの最新性を保持する際に使用するためのコンピュータプログラム製品が提供され、このコンピュータプログラム製品は、コンピュータによって実行可能なコンポーネントを有する１つまたは複数のコンピュータ可読記録媒体を含む。それらのコンポーネントは、プロセッサによって実行されたときに、エンティティー依存関係およびパス依存関係によって接続されている少なくとも第１のデータベースオブジェクトおよび第２のデータベースオブジェクトを含むデータベースオブジェクトをメモリエリア内に格納すること、および第１のデータベースオブジェクトと、少なくとも第２のデータベースオブジェクトとの間における関係が、第１のデータベースオブジェクトに関連付けられて格納されるようにデータベースオブジェクトの投影インデックスをメモリエリア内に格納することをプロセッサに行わせるインデックス作成コンポーネントを含む。それらのコンポーネントはまた、プロセッサによって実行されたときに、第１のデータベースオブジェクトと、少なくとも第２のデータベースオブジェクトとの間におけるエンティティー依存関係を特定することをプロセッサに行わせるエンティティー依存関係コンポーネントと、プロセッサによって実行されたときに、第１のデータベースオブジェクトと、少なくとも第２のデータベースオブジェクトとの間におけるパス依存関係を特定することをプロセッサに行わせるパス依存関係コンポーネントとを含む。インデックス作成コンポーネントはまた、エンティティー依存関係およびパス依存関係のうちの一方または両方の修正に応答して投影インデックスおよび第１のデータベースオブジェクトを更新することをプロセッサに行わせる。
【図面の簡単な説明】
【０００７】
本発明の１つまたは複数の実施形態の詳細は、添付の図面および以降の説明に記載されている。本発明のその他の特徴、目的、および利点は、説明および図面から、ならびに特許請求の範囲から明らかになるであろう。
【図１】２つのデータベースオブジェクトの間におけるエンティティー依存関係およびパス依存関係を示すシンプルなブロック図である。
【図２】投影を使用してリレーショナルデータベースをどのようにフラット化することができるかを示す図である。
【図３】投影インデックスの最新性を保持する際に使用するための例示的なコンピュータ実施方法を示すフローチャートである。
【図４】例示的なコンピュータシステムを示すブロック概略図である。
【図５】図４に示されているコンピュータシステムと共に使用するための例示的なコンピュータアーキテクチャーを示すブロック概略図である。
【図６】本明細書に記載されている実施形態のユースケースを示すブロック図である。
【図７】本明細書に記載されている実施形態のユースケースを示すブロック図である。
【図８】本明細書に記載されている実施形態のユースケースを示すブロック図である。
【図９】本明細書に記載されている実施形態のユースケースを示すブロック図である。
【図１０】本明細書に記載されている実施形態のユースケースを示すブロック図である。
【図１１】本明細書に記載されている実施形態のユースケースを示すブロック図である。
【図１２】本明細書に記載されている実施形態のユースケースを示すブロック図である。
【図１３】本明細書に記載されている実施形態のユースケースを示すブロック図である。
【発明を実施するための形態】
【０００８】
本明細書に記載されている実施形態においては、「データベースオブジェクト」という用語は一般に、データを格納すること、データのクエリーを行うこと、またはデータを参照することのために使用される、データベース内の任意の定義されたオブジェクトを指す。例示的なタイプのデータベースオブジェクトは、テーブル、ビュー、クラスタ、シーケンス、インデックス、ストアドプロシージャー、およびシノニムを含む。上記の例は、例示的なものにすぎず、したがって、けっして「データベースオブジェクト」という用語の定義および／または意味を限定することを意図していない。
【０００９】
最新のデータベースオブジェクト値および／またはパスを保持する際に使用するためのシステム、方法、装置、およびコンピュータプログラム製品の例示的な実施形態が、本明細書に記載されている。本明細書に記載されている実施形態は、投影されるデータに関連付けられている２つのタイプの依存関係を識別することによって、データベース内の古いデータを減らすことを容易にする。第１のタイプの依存関係は、エンティティー依存状態（ｄｅｐｅｎｄｅｎｃｅ）であり、この場合、データは、何らかのデータベースオブジェクトの一部として格納され、それによって、そのデータベースオブジェクトに変更があれば、別のデータベースオブジェクト上に投影される値が影響を受ける可能性が生じる。エンティティー依存関係は、単一のデータベースオブジェクトを識別し、たとえばオブジェクト識別子を使用して記述される。第２のタイプの依存関係は、パス依存状態である。２つのデータベースオブジェクトの間における１つまたは複数の関係が修正されると、投影によって別の一式のエンティティーへ導かれる可能性がある。パス依存関係は、たとえば、エンティティー識別子、関係タイプ、および関係方向（ｒｅｌａｔｉｏｎｓｈｉｐ  ｄｉｒｅｃｔｉｏｎ）を使用して記述することができる。
【００１０】
図１は、２つのデータベースオブジェクトの間におけるエンティティー依存関係およびパス依存関係を示すシンプルなブロック図である。具体的には、図１は、第１のデータベースオブジェクト（Ｏｂｊ１）１０２と、第２のデータベースオブジェクト（Ｏｂｊ２）１０４と、「ｆｏｏ」という値を有する第３のデータベースオブジェクト（Ｏｂｊ３）１０６とを含む複数のデータベースオブジェクト１００を示している。図１はまた、データベースオブジェクト１００どうしの間における複数の関係１０８を示している。具体的には、第１の関係（Ｒｅｌ１）１１０が、第１のデータベースオブジェクト１０２と、第２のデータベースオブジェクト１０４との間に存在し、第２の関係（Ｒｅｌ２）１１２が、第２のデータベースオブジェクト１０４と、第３のデータベースオブジェクト１０６との間に存在する。それぞれの関係１０８は、１つの関係タイプに関連付けられている。たとえば、第１の関係１１０は、関係タイプＲＥＬ１に関連付けられており、第２の関係１１２は、関係タイプＲＥＬ２に関連付けられている。その上、それぞれの関係１０８は、「ｔｏ」または「ｆｒｏｍ」など、１つの関係方向に関連付けられており、この関係方向は、２つの関連したデータベースオブジェクトの間における依存関係の方向を示す。
【００１１】
図１の例においては、第１のデータベースオブジェクト１０２は、依存エンティティーである。なぜなら、第３のデータベースオブジェクト１０６に対する変更があれば、その変更によって、第１のデータベースオブジェクト１０２および／または第２のデータベースオブジェクト１０４上に投影される値が潜在的に変更される可能性があるためである。したがって、第３のデータベースオブジェクト１０６と、少なくとも第１のデータベースオブジェクト１０２との間に、エンティティー依存状態１１４が存在する。その上、第１のデータベースオブジェクト１０２と、第２のデータベースオブジェクト１０４との間に、第１のパス依存関係１１６が存在する。上述のように、第１のパス依存関係１１６は、第１のデータベースオブジェクト１０２の識別子などのエンティティー識別子、関係タイプ、および、第１のデータベースオブジェクト１０２から第２のデータベースオブジェクト１０４へなどの関係方向を使用して識別することができる。したがって、図１に示されているように、第１のパス依存関係１１６は、Ｏｂｊ１／ＲＥＬ１／ｆｒｏｍとして識別することができる。同様に、第２のデータベースオブジェクト１０４と、第３のデータベースオブジェクト１０６との間に、第２のパス依存関係１１８が存在する。上述のように、第２のパス依存関係１１８は、第２のデータベースオブジェクト１０４の識別子などのエンティティー識別子、関係タイプ、および、第３のデータベースオブジェクト１０６から第２のデータベースオブジェクト１０４へなどの関係方向を使用して識別することができる。したがって、図１に示されているように、第２のパス依存関係１１８は、Ｏｂｊ２／ＲＥＬ２／ｔｏとして識別することができる。
【００１２】
データベースオブジェクト１００および関係１０８のそれぞれは、メタデータ１２０を含むことができる。そのようなメタデータ１２０を検索する際には、特定のデータベースオブジェクト１００、たとえば第３のデータベースオブジェクト１０６を、接続されているデータベースオブジェクト１００、たとえば第１のデータベースオブジェクト１０２に関連して検索することが望ましい場合が多い。たとえば、別のデータベースオブジェクト１００が所与のメタデータ値を有する場合には、その別のデータベースオブジェクト１００に接続されているすべてのデータベースオブジェクト１００を特定するように検索を構築することができる。そのような検索は、既存のデータベースオブジェクト構造が維持され、それによってクエリーが、接続されている複数のデータベースオブジェクト１００を横断して、それぞれが所与の基準にマッチするかどうかが確認される場合には、正規化されたデータに対して実行することができる。少なくともいくつかの知られているリレーショナルデータベースシステム、たとえば、大きなデータセットを伴うリレーショナルデータベースシステムにおいては、このことによって、高価なメモリリソースおよび／または処理リソースが必要となる。したがって、本発明の実施形態は、データベースオブジェクト構造を「フラット化」する。そのようなアプローチにおいては、それぞれのデータベースオブジェクト１００は、別々のフォームに格納され、その他の接続されているデータベースオブジェクト１００のメタデータ１２０は、それらの接続されているデータベースオブジェクト１００が、あたかも元のデータベースオブジェクト１００上に直接存在するかのように、元のデータベースオブジェクト１００上に投影される。そのような「投影」は、データの「フラット化」と呼ばれる場合が多い。その上、そのような投影は、より迅速でリソース集約度のより低い検索を容易にするために、更新可能なインデックスとして格納することができる。
【００１３】
図２は、投影を使用してリレーショナルデータベースをどのようにフラット化することができるかを示している。具体的には、図２は、上述したような、データベースオブジェクト１００と、データベースオブジェクト１００どうしの間における関係１０８とを含む、リレーショナルデータベースなどのデータベース２００のブロック図である。図２の右手側には、投影インデックス２０２のブロック図表示がある。具体的には、図２は、あるデータベースオブジェクト、たとえば第３のデータベースオブジェクト１０６のメタデータ値１２０が、別のデータベースオブジェクト、たとえば第１のデータベースオブジェクト１０２上にどのように投影されるかを示している。
【００１４】
図３は、データベースオブジェクト１００（図１に示されている）の投影インデックス２０２（図２に示されている）の最新性を保持する際に使用するための例示的なコンピュータ実施方法を示すフローチャート３００である。例示的な一実施形態においては、第１のデータベースオブジェクト１０２と、少なくとも第２のデータベースオブジェクト１０４（両方とも、図１に示されている）との間における接続を表すために、投影インデックス２０２が３０２において作成される。図２に示されているように、第１のデータベースオブジェクト１０２と第３のデータベースオブジェクト１０６（図１に示されている）との間における接続を表すために、投影インデックス２０２を作成することができる。投影インデックス２０２は、メモリエリア内に格納される。その上、以降でさらに詳細に説明するように、投影インデックス２０２は、１つまたは複数のデータベースオブジェクト１００の値に対する修正、および／またはデータベースオブジェクト１００どうしの間における関係１０８に対する修正を反映するように更新することができる。
【００１５】
いくつかの実施形態においては、投影インデックス２０２は、データベースオブジェクト１００をメモリエリア内に格納することによって作成され、それによって、第１のデータベースオブジェクト１０２と、少なくとも第２のデータベースオブジェクト１０４との間におけるエンティティー依存関係および／またはパス依存関係が、第１のデータベースオブジェクト１０２に関連付けられてメモリエリア内に格納される。
【００１６】
例示的な一実施形態においては、コンピュータが、データベースオブジェクト１００どうしの間における、たとえば、第１のデータベースオブジェクト１０２と、別のデータベースオブジェクト１００との間における１つまたは複数のエンティティー依存関係を３０４において処理する。たとえば、第１のデータベースオブジェクト１０２と、第３のデータベースオブジェクト１０６との間において、エンティティー依存関係１１４が検知される。コンピュータは、修正または削除されたデータベースオブジェクト１００のリストを３０６において特定する。投影インデックス２０２に基づいて、コンピュータは、メモリエリアを検索して、第２のデータベースオブジェクト１０４および／または第３のデータベースオブジェクト１０６が修正または削除されたときに影響を受けたエンティティー依存関係を３０８において特定する。たとえば、投影インデックス２０２に基づいて、コンピュータは、第１のデータベースオブジェクト１０２と、第２のデータベースオブジェクト１０４および／または第３のデータベースオブジェクト１０６との間におけるエンティティー依存関係１１４が、第２のデータベースオブジェクト１０４および／または第３のデータベースオブジェクト１０６の修正によって影響を受けているかどうかを特定する。第１のデータベースオブジェクト１０２と、第２のデータベースオブジェクト１０４および／または第３のデータベースオブジェクト１０６との間における影響を受けたエンティティー依存関係を特定したことに応答して、コンピュータは、３１０において、第１のデータベースオブジェクト１０２が最新ではない（ｎｏｎｃｕｒｒｅｎｔ）ことをメモリエリア内に示す。
【００１７】
その上、コンピュータはまた、データベースオブジェクト１００どうしの間における、たとえば、第１のデータベースオブジェクト１０２と、別のデータベースオブジェクト１００との間における１つまたは複数のパス依存関係を３１２において処理する。たとえば、第１のデータベースオブジェクト１０２と、第２のデータベースオブジェクト１０４との間において、第１のパス依存関係１１６（図１に示されている）が検知され、第２のデータベースオブジェクト１０４と、第３のデータベースオブジェクト１０６との間において、第２のパス依存関係１１８（図１に示されている）が検知される。コンピュータは、データベースオブジェクト１００どうしの間における修正または削除された関係１０８のリストを３１４において特定する。投影インデックス２０２に基づいて、コンピュータは、メモリエリアを検索して、第１のデータベースオブジェクト１０２と、第２のデータベースオブジェクト１０４との間における第１のパス依存関係１１６などの関係が修正されたときに影響を受けたパス依存関係を３１６において特定する。同様に、コンピュータは、第２のデータベースオブジェクト１０４と、第３のデータベースオブジェクト１０６との間における第２のパス依存関係１１８が修正されたことを検知する。影響を受けたパス依存関係を特定したことに応答して、コンピュータは、３１８において、第１のデータベースオブジェクト１０２が最新ではないことをメモリエリア内に示す。
【００１８】
例示的な一実施形態においては、コンピュータは、エンティティー依存関係およびパス依存関係のうちの少なくとも一方の修正を検知したことに応答して、および第１のデータベースオブジェクト１０２が最新ではないとしてマークまたは表示されたときに、３２０において投影インデックス２０２を作成または更新する。たとえば、コンピュータは、第１のデータベースオブジェクト１０２を更新して、影響を受けたエンティティー依存関係および／または影響を受けたパス依存関係の修正を反映することによって、３２０において投影インデックス２０２を更新する。
【００１９】
図４は、最新のデータベースオブジェクト値および／またはパスを保持する際に使用するための、ならびに上述のプロセス、および／または上述のプロセスに関連付けることができるさらなるプロセスを実行する際に使用するための例示的なコンピュータシステム４００を示すブロック概略図である。例示的な一実施形態においては、メモリエリア４０２が、メタデータ、データベースオブジェクト、データベースオブジェクトどうしの間における関係、データベースオブジェクトどうしの間におけるエンティティー依存関係、データベースオブジェクトどうしの間におけるパス依存関係、または任意の適切な情報もしくはデータなどのデータを格納する際に使用するための１つまたは複数のストレージデバイス４０４を含む。いくつかの実施形態においては、メモリエリア４０２は、サーバシステム４０６に結合されており、そしてサーバシステム４０６は、ネットワーク４１０を介して管理者システムおよび／またはユーザシステムなどのクライアントシステム４０８に結合されている。ストレージデバイス４０４は、１つもしくは複数のデータベースとして具体化することができ、単一のもしくは複数の地理的サイトに配置することができ、またはサーバシステム４０６と統合することができる。
【００２０】
理解できるように、ネットワーク４１０は、インターネットなどの公的なネットワーク、またはＬＡＮもしくはＷＡＮネットワークなどの私的なネットワーク、またはそれらの任意の組合せとすることができ、ＰＳＴＮまたはＩＳＤＮサブネットワークを含むこともできる。ネットワーク４１０はまた、イーサネット（登録商標）ネットワークなどの有線ネットワークとすることもでき、またはＥＤＧＥ、３Ｇ、および４Ｇワイヤレスセルラーシステムを含むセルラーネットワークなどのワイヤレスネットワークとすることもできる。ワイヤレスネットワークは、ＷｉＦｉ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、または知られているその他の任意のワイヤレス形態の通信とすることもできる。したがってネットワーク４１０は、例示的なものにすぎず、けっして本発明の進歩の範囲を限定するものではない。
【００２１】
当業者なら認識するように、クライアントシステム４０８は、図５を参照して後述するコンピュータシステム、または知られているその他の任意のコンピューティングシステムなど、任意の適切なコンピュータシステムとすることができる。その上、サーバシステム４０６は、上述のプロセス、および／または上述のプロセスに関連付けることができる任意のさらなるプロセスを実行するように構成されているということを理解されたい。
【００２２】
サーバシステム４０６は、上述のプロセスを実行するための非一時的なコンピュータ可読命令を格納し、それらの命令を、ネットワーク４１０を介してクライアントシステム４０８に提供する。その上、サーバシステム４０６は、クライアントシステム４０８にとって必要とされた際には、メモリエリア４０２からデータを提供することもできる。したがって図４は、クラウドコンピューティング、分散コンピューティングなどを介したコンピュータシステム４００の実装形態を含む。
【００２３】
図５は、サーバシステム４０６および／またはクライアントシステム４０８（それぞれ図４に示されている）と共に使用するための例示的なコンピュータアーキテクチャー５００を示すブロック概略図である。
【００２４】
例示的な一実施形態においては、コンピュータアーキテクチャー５００は、上述のプロセス、および／または上述のプロセスに関連付けることができる任意のさらなるプロセスを実行する１つまたは複数のプロセッサ５０２（ＣＰＵ）を含む。「プロセッサ」という用語は一般に、システムおよびマイクロコントローラ、ＲＩＳＣ（ｒｅｄｕｃｅｄ  ｉｎｓｔｒｕｃｔｉｏｎ  ｓｅｔ  ｃｉｒｃｕｉｔ）、ＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）、プログラマブルロジック回路、および／または本明細書に記載されている機能を実行することができるその他の任意の回路もしくはプロセッサを含む任意のプログラム可能なシステムを指すということを理解されたい。上記の例は、例示的なものにすぎず、したがって、けっして「プロセッサ」という用語の定義および／または意味を限定することを意図していない。
【００２５】
上述のプロセス、および／または上述のプロセスに関連付けることができる任意のさらなるプロセスのステップは、コンピュータ実行可能命令として、たとえば、システムバス５０６によってプロセッサ５０２に動作可能におよび／または通信可能に結合されているメモリエリア５０４内に格納することができる。「メモリエリア」とは、本明細書において使用される際には、一般に、最新のデータベースオブジェクト値および／またはパスを保持する際に役立つように１つまたは複数のプロセッサによって実行可能なプログラムコードおよび命令を格納する任意の手段を指す。メモリエリア５０４は、１つまたは複数の形態のメモリを含むことができる。たとえばメモリエリア５０４は、ＲＡＭ（ｒａｎｄｏｍ−ａｃｃｅｓｓ  ｍｅｍｏｒｙ）５０８を含むことができ、ＲＡＭ５０８は、不揮発性ＲＡＭ、磁気ＲＡＭ、強誘電体ＲＡＭ、および／またはその他の形態のＲＡＭを含むことができる。メモリエリア５０４は、ＲＯＭ（ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）５１０、および／またはフラッシュメモリ、および／またはＥＥＰＲＯＭ（ｅｌｅｃｔｒｉｃａｌｌｙ−ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）を含むこともできる。その他の任意の適切な磁気、光学、および／または半導体メモリ、たとえばＨＤＤ（ｈａｒｄ−ｄｉｓｋ  ｄｒｉｖｅ）５１２を単体で、またはその他の形態のメモリと組み合わせて、メモリエリア５０４内に含むことができる。ＨＤＤ５１２は、プロセッサ５０２にメッセージを伝送する際に、およびプロセッサ５０２からメッセージを受け取る際に使用するためのディスクコントローラ５１４に結合することもできる。その上、メモリエリア５０４は、適切なカートリッジディスク、ＣＤ−ＲＯＭ、ＤＶＤ、またはＵＳＢメモリなど、着脱可能なまたは取り外し可能なメモリ５１６とすることもでき、またはそうしたメモリ５１６を含むこともできる。上記の例は、例示的なものにすぎず、したがって、けっして「メモリエリア」という用語の定義および／または意味を限定することを意図していない。
【００２６】
さらに、いくつかの実施形態においては、メモリエリア５０４は、データベースを含む。本明細書において使用される際には、「データベース」という用語は一般に、階層型データベース、リレーショナルデータベース、フラットファイルデータベース、オブジェクトリレーショナルデータベース、オブジェクト指向データベース、およびコンピュータシステム内に格納されるレコードまたはデータのその他の任意の構造化された集合を含むデータの任意の集合を指す。上記の例は、例示的なものにすぎず、したがって、けっしてデータベースという用語の定義および／または意味を限定することを意図していない。データベースの例は、Ｏｒａｃｌｅ（登録商標）  Ｄａｔａｂａｓｅ、ＭｙＳＱＬ、ＩＢＭ（登録商標）ＤＢ２、Ｍｉｃｒｏｓｏｆｔ（登録商標）ＳＱＬ  Ｓｅｒｖｅｒ、Ｓｙｂａｓｅ（登録商標）、およびＰｏｓｔｇｒｅＳＱＬを含むが、それらを含むことだけに限定されない。しかし、本明細書に記載されているシステムおよび方法を可能にする任意のデータベースを使用することができる。（Ｏｒａｃｌｅは、カリフォルニア州レッドウッドショアーズのＯｒａｃｌｅ  Ｃｏｒｐｏｒａｔｉｏｎの登録商標であり、ＩＢＭは、ニューヨーク州アーモンクのＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎの登録商標であり、Ｍｉｃｒｏｓｏｆｔは、ワシントン州レドモンドのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎの登録商標であり、Ｓｙｂａｓｅは、カリフォルニア州ダブリンのＳｙｂａｓｅの登録商標である。）
【００２７】
コンピュータアーキテクチャー５００はまた、ディスプレイデバイス５１８を含み、ディスプレイデバイス５１８は、ディスプレイコントローラ５２０に結合されており、たとえば動作可能に結合されている。ディスプレイコントローラ５２０は、ディスプレイデバイス５１８によって表示するためのデータを、システムバス５０６を介して受け取る。ディスプレイデバイス５１８は、モニタ、テレビジョンディスプレイ、プラズマディスプレイ、ＬＣＤ（ｌｉｑｕｉｄ  ｃｒｙｓｔａｌ  ｄｉｓｐｌａｙ）、ＬＥＤ（ｌｉｇｈｔ−ｅｍｉｔｔｉｎｇ  ｄｉｏｄｅ）に基づくディスプレイ、ＯＬＥＤ（ｏｒｇａｎｉｃ  ＬＥＤ）に基づくディスプレイ、ポリマーＬＥＤに基づくディスプレイ、表面伝導型電子放出素子に基づくディスプレイ、投影および／もしくは反映されたイメージを含むディスプレイ、またはその他の任意の適切な電子デバイスもしくはディスプレイメカニズムとすることができるが、それらには限定されない。その上、ディスプレイデバイス５１８は、関連付けられたタッチスクリーンコントローラを伴うタッチスクリーンを含むことができる。上記の例は、例示的なものにすぎず、したがって、けっして「ディスプレイデバイス」という用語の定義および／または意味を限定することを意図していない。
【００２８】
加えて、コンピュータアーキテクチャー５００は、ネットワーク（図５には示されていない）と通信する際に使用するためのネットワークインターフェース５２２を含む。その上、コンピュータアーキテクチャー５００は、１つまたは複数の入力デバイス、たとえばキーボード５２４、および／またはポインティングデバイス５２６、たとえばローラーボール、マウス、タッチパッドなどを含む。それらの入力デバイスは、Ｉ／Ｏ（ｉｎｐｕｔ／ｏｕｔｐｕｔ）インターフェース５２８に結合され、Ｉ／Ｏインターフェース５２８によってコントロールされ、Ｉ／Ｏインターフェース５２８は、システムバス５０６にさらに結合されている。
【００２９】
ディスプレイデバイス５１８、キーボード５２４、ポインティングデバイス５２６、ならびにディスプレイコントローラ５２０、ディスクコントローラ５１４、ネットワークインターフェース５２２、およびＩ／Ｏインターフェース５２８の一般的な特徴および機能は知られているため、本明細書においては、説明を簡潔にするために、それらの特徴に関する説明を省略する。
【００３０】
図６〜図１１は、本明細書に記載されている実施形態のさまざまなユースケースを示すブロック図である。より具体的には、図６〜図１１は、従来技術によって未解決である複数の問題を解決するために、本明細書に記載されている実施形態をどのように使用することができるかを示している。図６〜図１１のそれぞれにおいては、投影インデックス２０２が既に作成されていると想定する。その上、後述の例のそれぞれは、サーバシステム４０６またはクライアントシステム４０８（両方とも図４に示されている）によって実行することができる。さらに、図６〜図１１に示されているそれぞれのデータベースオブジェクトの間における元の関係については、図１に関連して上述した。これは、本明細書に記載されている実施形態を使用することができる状況を網羅した組合せではないということを理解されたい。これらは単に、知られているシステムおよび方法から記載の実施形態を区別するための例示的なものである。
【００３１】
図６は、上述の実施形態が、第３のデータベースオブジェクト１０６のメタデータ値が修正されたときに第１のデータベースオブジェクト１０２の更新をどのように可能にするかを示している。はじめに、修正または削除されたデータベースオブジェクト１００のリストが生成される。図６に示されているように、第３のデータベースオブジェクト１０６の値１２０が、「ｆｏｏ」から「ｂａｒ」へ変更されている。次いで、第３のデータベースオブジェクト１０６に対するエンティティー依存状態を有するデータベースオブジェクト１００を含むデータベースオブジェクト１００のリストが生成される。前に説明したように、第１のデータベースオブジェクト１０２は、第３のデータベースオブジェクト１０６のエンティティー依存関係１１４を有する。なぜなら、第３のデータベースオブジェクト１０６に対する変更があれば、その変更によって、第１のデータベースオブジェクト１０２上に投影される値が潜在的に変更される可能性があるためである。したがって、第１のデータベースオブジェクト１０２は、影響を受けたオブジェクトとしてマークされる（すなわち、「古い」または最新ではないとしてマークされる）。
【００３２】
次に、修正または削除された関係１０８のリストが生成される。このシナリオにおいては、修正または削除された関係１０８がないため、影響を受けた関係／パス依存関係の理由から「古い」または最新ではないとしてマークされるデータベースオブジェクト１００はない。
【００３３】
次いで、マークされたオブジェクトは、修正を反映するようにインデックスが付けられる。たとえば、第３のデータベースオブジェクト１０６の値の投影が、第１のデータベースオブジェクト１０２上に投影されるように、投影インデックス２０２が再作成される。
【００３４】
図７は、上述の実施形態が、中間のデータベースオブジェクト１００が削除されたときに第１のデータベースオブジェクト１０２の更新をどのように可能にするかを示している。はじめに、修正または削除されたデータベースオブジェクト１００のリストが生成される。図７に示されているように、第２のデータベースオブジェクト１０４が削除されている。次いで、第２のデータベースオブジェクト１０４がエンティティー依存状態を有するデータベースオブジェクト１００を含むデータベースオブジェクト１００のリストが生成される。このシナリオにおいては、そのようなデータベースオブジェクト１００がないため、「古い」または最新ではないとしてマークされるデータベースオブジェクト１００はない。
【００３５】
次に、修正または削除された関係１０８のリストが生成される。図７に示されているように、第１のデータベースオブジェクト１０２と、第２のデータベースオブジェクト１０４との間に、第１の関係１１０が存在し、第２のデータベースオブジェクト１０４と、第３のデータベースオブジェクト１０６との間に、第２の関係１１２が存在する。第２のデータベースオブジェクト１０４を削除した結果、第１の関係１１０および第２の関係１１２も削除されている。次いで、影響を受けたパス依存関係が、修正または削除された関係１０８のリストから特定される。この場合、第１の関係１１０を削除したことによって、第１のデータベースオブジェクト１０２と、第２のデータベースオブジェクト１０４との間におけるパス依存関係が影響を受けている。同様に、第２の関係１１２を削除したことによって、第２のデータベースオブジェクト１０４と、第３のデータベースオブジェクト１０６との間におけるパス依存関係が影響を受けている。したがって、第１のデータベースオブジェクト１０２が、影響を受けたオブジェクトとしてマークされる（すなわち、「古い」または最新ではないとしてマークされる）。次いで、マークされたオブジェクトは、修正を反映するようにインデックスが付けられる。たとえば、第３のデータベースオブジェクト１０６の値の投影が、パス依存関係を伴わずに第１のデータベースオブジェクト１０２上に投影されるように、投影インデックス２０２が再作成される。
【００３６】
図８は、上述の実施形態が、リーフデータベースオブジェクト（ｌｅａｆ  ｄａｔａｂａｓｅ  ｏｂｊｅｃｔ）１００が削除されたときに第１のデータベースオブジェクト１０２の更新をどのように可能にするかを示している。はじめに、修正または削除されたデータベースオブジェクト１００のリストが生成される。図８に示されているように、第３のデータベースオブジェクト１０６が削除されている。次いで、第３のデータベースオブジェクト１０６に対するエンティティー依存状態を有するデータベースオブジェクト１００を含むデータベースオブジェクト１００のリストが生成される。前に説明したように、第１のデータベースオブジェクト１０２は、第３のデータベースオブジェクト１０６のエンティティー依存関係１１４を有する。なぜなら、第３のデータベースオブジェクト１０６を削除すると、第１のデータベースオブジェクト１０２上に投影される値が変更されるためである。したがって、第１のデータベースオブジェクト１０２は、影響を受けたオブジェクトとしてマークされる（すなわち、「古い」または最新ではないとしてマークされる）。
【００３７】
次に、修正または削除された関係１０８のリストが生成される。このシナリオにおいては、修正または削除された関係１０８がないため、「古い」または最新ではないとしてマークされるデータベースオブジェクト１００はない。
【００３８】
次いで、マークされたオブジェクトは、削除を反映するようにインデックスが付けられる。たとえば、第３のデータベースオブジェクト１０６の値が、もはや第１のデータベースオブジェクト１０２上に投影されないように、投影インデックス２０２が再作成される。
【００３９】
図９は、上述の実施形態が、中間の関係１０８が削除されたときに、または中間のデータベースオブジェクト１００が接続を解除されたときに第１のデータベースオブジェクト１０２の更新をどのように可能にするかを示している。はじめに、修正または削除されたデータベースオブジェクト１００のリストが生成される。図９に示されているように、第１のデータベースオブジェクト１０２と、第２のデータベースオブジェクト１０４との間における第１の関係１１０が削除されている。次いで、第２のデータベースオブジェクト１０４がエンティティー依存状態を有するデータベースオブジェクト１００を含むデータベースオブジェクト１００のリストが生成される。このシナリオにおいては、そのようなデータベースオブジェクト１００がないため、「古い」または最新ではないとしてマークされるデータベースオブジェクト１００はない。
【００４０】
次に、修正または削除された関係１０８のリストが生成される。図９に示されているように、第１のデータベースオブジェクト１０２と、第２のデータベースオブジェクト１０４との間における第１の関係１１０が削除されている。次いで、影響を受けたパス依存関係が、修正または削除された関係１０８のリストから特定される。この場合、第１の関係１１０を削除したことによって、第１のデータベースオブジェクト１０２と、第２のデータベースオブジェクト１０４との間におけるパス依存関係が影響を受けている。したがって、第１のデータベースオブジェクト１０２が、影響を受けたオブジェクトとしてマークされる（すなわち、「古い」または最新ではないとしてマークされる）。次いで、マークされたオブジェクトは、修正を反映するようにインデックスが付けられる。たとえば、第３のデータベースオブジェクト１０６の値が、もはや第１のデータベースオブジェクト１０２上に投影されないように、投影インデックス２０２が再作成される。
【００４１】
図１０は、上述の実施形態が、新たなリーフデータベースオブジェクト１００の追加をどのように可能にするかを示している。はじめに、修正された（たとえば、追加された）データベースオブジェクト１００のリストが生成される。図１０に示されているように、「ｆｏｏ２」というメタデータ値１２４を有する第４のデータベースオブジェクト（Ｏｂｊ３ａ）１２２が追加されている。図１０はまた、第４のデータベースオブジェクト１２２と、第２のデータベースオブジェクト１０４との間における第３の関係（ｒｅｌ２ａ）１２６を示している。上述のように、それぞれの関係１０８は、１つの関係タイプに関連付けられている。ここでは、第３の関係１２６は、関係タイプＲＥＬ２に関連付けられている。第４のデータベースオブジェクト１２２の追加に伴って、第２のデータベースオブジェクト１０４と、第４のデータベースオブジェクト１２２との間に、第３のパス依存関係が存在する。上述のように、第３のパス依存関係は、第２のデータベースオブジェクト１０４の識別子などのエンティティー識別子、関係タイプ、および、第４のデータベースオブジェクト１２２から第２のデータベースオブジェクト１０４へなどの関係方向を使用して識別することができる。したがって、第３のパス依存関係は、Ｏｂｊ２／ＲＥＬ２／ｔｏとして識別することができる。
【００４２】
次に、第４のデータベースオブジェクト１２２がエンティティー依存状態を有するデータベースオブジェクト１００を含むデータベースオブジェクト１００のリストが生成される。このシナリオにおいては、そのようなデータベースオブジェクト１００がないため、「古い」または最新ではないとしてマークされるデータベースオブジェクト１００はない。
【００４３】
次いで、修正または削除された関係１０８のリストが生成される。図１０に示されているように、第２のデータベースオブジェクト１０４と、第４のデータベースオブジェクト１２２との間における第３の関係１２６が追加されている。次いで、影響を受けたパス依存関係が、修正または削除された関係１０８のリストから特定される。この場合、第３の関係１２６を追加したことによって、第１のデータベースオブジェクト１０２と、第２のデータベースオブジェクト１０４との間におけるパス依存関係が影響を受けている。したがって、第１のデータベースオブジェクト１０２が、影響を受けたオブジェクトとしてマークされる（すなわち、「古い」または最新ではないとしてマークされる）。次いで、マークされたオブジェクトは、修正を反映するようにインデックスが付けられる。たとえば、第４のデータベースオブジェクト１２２の値が、第１のデータベースオブジェクト１０２上に投影されるようになるように、投影インデックス２０２が再作成される。
【００４４】
図１１は、上述の実施形態が、新たなリーフデータベースオブジェクト１００および新たな中間のデータベースオブジェクト１００の追加をどのように可能にするかを示している。はじめに、修正された（たとえば、追加された）データベースオブジェクト１００のリストが生成される。図１１に示されているように、「ｆｏｏ２」というメタデータ値１２４を有する第４のデータベースオブジェクト（Ｏｂｊ３ａ）１２２が追加されている。図１１はまた、第４のデータベースオブジェクト１２２と、第２のデータベースオブジェクト１０４との間における第３の関係（ｒｅｌ２ａ）１２６を示している。上述のように、それぞれの関係１０８は、１つの関係タイプに関連付けられている。ここでは、第３の関係１２６は、関係タイプＲＥＬ２に関連付けられている。第４のデータベースオブジェクト１２２の追加に伴って、第２のデータベースオブジェクト１０４と、第４のデータベースオブジェクト１２２との間に、第３のパス依存関係が存在する。上述のように、第３のパス依存関係は、第２のデータベースオブジェクト１０４の識別子などのエンティティー識別子、関係タイプ、および、第４のデータベースオブジェクト１２２から第２のデータベースオブジェクト１０４へなどの関係方向を使用して識別することができる。したがって、第３のパス依存関係は、Ｏｂｊ２／ＲＥＬ２／ｔｏとして識別することができる。
【００４５】
図１１はまた、追加されている第５のデータベースオブジェクト（Ｏｂｊ２ａ）１２８を示している。第１のデータベースオブジェクト１０２と、第５のデータベースオブジェクト１２８との間に、第４の関係（ｒｅｌ１ａ）１３０が存在する。上述のように、それぞれの関係１０８は、１つの関係タイプに関連付けられている。ここでは、第４の関係１３０は、関係タイプＲＥＬ１に関連付けられている。第５のデータベースオブジェクト１２８の追加に伴って、第１のデータベースオブジェクト１０２と、第５のデータベースオブジェクト１２８との間に、第４のパス依存関係が存在する。第４のパス依存関係は、第１のデータベースオブジェクト１０２の識別子などのエンティティー識別子、関係タイプ、および、第１のデータベースオブジェクト１０２から第５のデータベースオブジェクト１２８へなどの関係方向を使用して識別することができる。したがって、第４のパス依存関係は、Ｏｂｊ１／ＲＥＬ１／ｆｒｏｍとして識別することができる。
【００４６】
次に、第５のデータベースオブジェクト１２８がエンティティー依存状態を有するデータベースオブジェクト１００を含むデータベースオブジェクト１００のリストが生成される。このシナリオにおいては、そのようなデータベースオブジェクト１００がないため、「古い」または最新ではないとしてマークされるデータベースオブジェクト１００はない。
【００４７】
次いで、修正または削除された関係１０８のリストが生成される。図１１に示されているように、第１のデータベースオブジェクト１０２と、第５のデータベースオブジェクト１２８との間における第４の関係１３０が追加されている。次いで、影響を受けたパス依存関係が、修正または削除された関係１０８のリストから特定される。この場合、第４の関係１３０を追加したことによって、第１のデータベースオブジェクト１０２と、第５のデータベースオブジェクト１２８との間における第４のパス依存関係が生じている。その上、第２のデータベースオブジェクト１０４と、第４のデータベースオブジェクト１２２との間における第３の関係１２６が追加されている。第３の関係１２６を追加したことによって、第１のデータベースオブジェクト１０２と、第２のデータベースオブジェクト１０４との間におけるパス依存関係が影響を受けている。したがって、第１のデータベースオブジェクト１０２が、影響を受けたオブジェクトとしてマークされる（すなわち、「古い」または最新ではないとしてマークされる）。次いで、マークされたオブジェクトは、修正を反映するようにインデックスが付けられる。たとえば、第４のデータベースオブジェクト１２２および第５のデータベースオブジェクト１２８が、第１のデータベースオブジェクト１０２上に投影されるようになるように、投影インデックス２０２が再作成される。
【００４８】
図１２は、上述の実施形態が、第１の新たなリーフデータベースオブジェクト１００の追加をどのように可能にするかを示している。より具体的には、図１２は、上述の実施形態が、第２のデータベースオブジェクト１０４が最初に、第２のデータベースオブジェクト１０４を別のデータベースオブジェクト１００に接続する関係を有していない場合に、第１の新たなリーフデータベースオブジェクトの追加をどのように可能にするかを示している。言い換えれば、図１２は、新たに追加されたリーフデータベースオブジェクトから第２のデータベースオブジェクト１０４への最初の関係が、どのように作成されるかを示している。はじめに、修正された（たとえば、追加された）データベースオブジェクト１００のリストが生成される。図１２に示されているように、「ｆｏｏ２」というメタデータ値１３４を有する第６のデータベースオブジェクト（Ｏｂｊ３ａ）１３２が追加されている。図１２はまた、第６のデータベースオブジェクト１３２と、第２のデータベースオブジェクト１０４との間における第５の関係（ｒｅｌ２ａ）１３６を示している。上述のように、それぞれの関係１０８は、１つの関係タイプに関連付けられている。ここでは、第５の関係１３６は、関係タイプＲＥＬ２に関連付けられている。第６のデータベースオブジェクト１３２の追加に伴って、第２のデータベースオブジェクト１０４と、第６のデータベースオブジェクト１３２との間に、第５のパス依存関係が存在する。上述のように、第５のパス依存関係は、第２のデータベースオブジェクト１０４の識別子などのエンティティー識別子、関係タイプ、および、第６のデータベースオブジェクト１３２から第２のデータベースオブジェクト１０４へなどの関係方向を使用して識別することができる。したがって、第５のパス依存関係は、Ｏｂｊ２／ＲＥＬ２／ｔｏとして識別することができる。
【００４９】
次に、第６のデータベースオブジェクト１３２がエンティティー依存状態を有するデータベースオブジェクト１００を含むデータベースオブジェクト１００のリストが生成される。このシナリオにおいては、そのようなデータベースオブジェクト１００がないため、「古い」または最新ではないとしてマークされるデータベースオブジェクト１００はない。
【００５０】
次いで、修正または削除された関係１０８のリストが生成される。図１２に示されているように、第２のデータベースオブジェクト１０４と、第６のデータベースオブジェクト１３２との間における第５の関係１３６が追加されている。次いで、影響を受けたパス依存関係が、修正または削除された関係１０８のリストから特定される。この場合、第５の関係１３６を追加したことによって、第１のデータベースオブジェクト１０２と、第２のデータベースオブジェクト１０４との間におけるパス依存関係が影響を受けている。したがって、第１のデータベースオブジェクト１０２が、影響を受けたオブジェクトとしてマークされる（すなわち、「古い」または最新ではないとしてマークされる）。次いで、マークされたオブジェクトは、修正を反映するようにインデックスが付けられる。たとえば、第６のデータベースオブジェクト１３２の値が、第１のデータベースオブジェクト１０２上に投影されるようになるように、投影インデックス２０２が再作成される。
【００５１】
図１３は、上述の実施形態が、第１の新たなリーフデータベースオブジェクト１００および第１の新たな中間のデータベースオブジェクト１００の追加をどのように可能にするかを示している。より具体的には、図１３は、上述の実施形態が、第１のデータベースオブジェクト１０２が最初に、第１のデータベースオブジェクト１０２を別のデータベースオブジェクト１００に接続する関係を有していない場合に、第１の新たなリーフデータベースオブジェクトおよび第１の新たな中間のデータベースオブジェクトの追加をどのように可能にするかを示している。言い換えれば、図１３は、新たに追加されたリーフデータベースオブジェクトおよび中間のデータベースオブジェクトから第１のデータベースオブジェクト１０２への最初の関係が、どのように作成されるかを示している。はじめに、修正された（たとえば、追加された）データベースオブジェクト１００のリストが生成される。図１３に示されているように、第７のデータベースオブジェクト（Ｏｂｊ２ａ）１３８が、中間のデータベースオブジェクト１００として追加されている。第１のデータベースオブジェクト１０２と、第７のデータベースオブジェクト１３８との間に、第６の関係（ｒｅｌ１ａ）１４０が存在する。上述のように、それぞれの関係１０８は、１つの関係タイプに関連付けられている。ここでは、第６の関係１４０は、関係タイプＲＥＬ１に関連付けられている。第７のデータベースオブジェクト１３８の追加に伴って、第１のデータベースオブジェクト１０２と、第７のデータベースオブジェクト１３８との間に、第６のパス依存関係が存在する。第６のパス依存関係は、第１のデータベースオブジェクト１０２の識別子などのエンティティー識別子、関係タイプ、および、第１のデータベースオブジェクト１０２から第７のデータベースオブジェクト１３８へなどの関係方向を使用して識別することができる。したがって、第６のパス依存関係は、Ｏｂｊ１／ＲＥＬ１／ｆｒｏｍとして識別することができる。
【００５２】
図１３はまた、「ｆｏｏ２」というメタデータ値１４４を有する、追加されている第８のデータベースオブジェクト（Ｏｂｊ３ａ）１４２を示している。図１３はまた、第７のデータベースオブジェクト１３８と、第８のデータベースオブジェクト１４２との間における第７の関係（ｒｅｌ２ａ）１４６を示している。上述のように、それぞれの関係１０８は、１つの関係タイプに関連付けられている。ここでは、第７の関係１４６は、関係タイプＲＥＬ２に関連付けられている。
【００５３】
次に、第７のデータベースオブジェクト１３８および第８のデータベースオブジェクト１４２がエンティティー依存状態を有するデータベースオブジェクト１００を含むデータベースオブジェクト１００のリストが生成される。このシナリオにおいては、そのようなデータベースオブジェクト１００がないため、「古い」または最新ではないとしてマークされるデータベースオブジェクト１００はない。
【００５４】
次いで、修正、削除、または追加された関係１０８のリストが生成される。図１３に示されているように、第１のデータベースオブジェクト１０２と、第７のデータベースオブジェクト１３８との間における第６の関係１４０、および、第７のデータベースオブジェクト１３８と、第８のデータベースオブジェクト１４２との間における第７の関係１４６が追加されている。次いで、影響を受けたパス依存関係が、修正または削除された関係１０８のリストから特定される。この場合、第６の関係１４０および第７の関係１４６を追加したことによって、第１のデータベースオブジェクト１０２と、第７のデータベースオブジェクト１３８との間における第６のパス依存関係が生じている。したがって、第１のデータベースオブジェクト１０２が、影響を受けたオブジェクトとしてマークされる（すなわち、「古い」または最新ではないとしてマークされる）。次いで、マークされたオブジェクトは、修正を反映するようにインデックスが付けられる。たとえば、第７のデータベースオブジェクト１３８および第８のデータベースオブジェクト１４２が、第１のデータベースオブジェクト１０２上に投影されるようになるように、投影インデックス２０２が再作成される。
【００５５】
最新のデータベースオブジェクト値および／またはパスを保持する際に使用するためのシステム、方法、装置、およびコンピュータプログラム製品の例示的な実施形態が、詳細に上述されている。本システム、方法、装置、およびコンピュータプログラム製品は、本明細書に記載されている特定の実施形態に限定されるものではなく、むしろ、本方法のオペレーション、ならびに／または本システムおよび／もしくは装置のコンポーネントは、本明細書に記載されているその他のオペレーションおよび／またはコンポーネントから独立して別個に利用することができる。さらに、記載のオペレーションおよび／またはコンポーネントは、その他のシステム、方法、および／もしくは装置において定義することもでき、またはその他のシステム、方法、および／もしくは装置と組み合わせて使用することもでき、本明細書に記載されているシステム、方法、および記録媒体のみと共に実施することに限定されるものではない。
【００５６】
コンピュータ、たとえば本明細書に記載されているコンピュータは、少なくとも１つのプロセッサまたは処理装置と、システムメモリとを含む。コンピュータは、典型的には、少なくとも何らかの形態のコンピュータ可読メディアを有する。限定ではなく、例として、コンピュータ可読メディアは、コンピュータ可読記録媒体および通信メディアを含む。コンピュータ可読記録媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を格納するための任意の方法またはテクノロジーにおいて実装される非一時的な、揮発性の、および不揮発性の、取り外し可能な、および取り外し不能なメディアを含む。通信メディアは、典型的には、搬送波もしくはその他の伝送メカニズムなどの変調されたデータ信号内のコンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを具体化し、任意の情報伝達メディアを含む。当業者なら、変調されたデータ信号をよく知っており、変調されたデータ信号は、情報をその信号内でエンコードするような方法で設定または変更されたその特性のうちの１つまたは複数を有する。また上記のいずれの組合せも、コンピュータ可読メディアの範囲内に含まれるものである。
【００５７】
本発明については、例示的なコンピュータシステム環境との関連から説明しているが、本発明の実施形態は、その他の多くの汎用または専用のコンピュータシステム環境または構成と共に使用することができる。このコンピュータシステム環境は、本発明のいかなる態様の使用または機能の範囲に関しても何らかの限定を提示することを意図するものではない。その上、このコンピュータシステム環境は、この例示的な動作環境内に示されているコンポーネントのうちの任意の１つまたは組合せに関して何らかの依存性または必要性を有すると解釈すべきではない。本発明の態様と共に使用するのに適する可能性のあるよく知られているコンピュータシステム、環境、および／または構成の例は、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家庭用電化製品、携帯電話、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのうちのいずれかを含む分散コンピューティング環境などを含むが、それらには限定されない。
【００５８】
本発明の実施形態については、１つまたは複数のコンピュータまたはその他のデバイスによって実行される、プログラムコンポーネントまたはプログラムモジュールなどのコンピュータ実行可能命令という一般的なコンテキストにおいて説明することができる。本発明の態様は、任意の数および編成のコンポーネントまたはモジュールと共に実施することができる。たとえば、本発明の態様は、図に示され本明細書に記載されている特定のコンピュータ実行可能命令または特定のコンポーネントもしくはモジュールに限定されるものではない。本発明の代替実施形態は、図示され本明細書に記載されているよりも多くの機能または少ない機能を有するさまざまなコンピュータ実行可能命令またはコンポーネントを含むことができる。
【００５９】
本明細書に記載されているシステム、方法、装置、およびコンピュータプログラム製品の例示的な技術的効果は、（ａ）第１のデータベースオブジェクトと、少なくとも第２のデータベースオブジェクトとの間における接続を表す投影インデックスを作成すること、（ｂ）第１のデータベースオブジェクトと、少なくとも第２のデータベースオブジェクトとの間におけるエンティティー依存関係を特定すること、（ｃ）第１のデータベースオブジェクトと、少なくとも第２のデータベースオブジェクトとの間におけるパス依存関係を特定すること、および（ｄ）エンティティー依存関係およびパス依存関係のうちの一方または両方の修正に応答して投影インデックスを更新することのうちの少なくとも１つを含む。
【００６０】
図示され本明細書に記載されている本発明の実施形態におけるオペレーションの実行または実施の順序は、特段の指定がない限り、必須ではない。すなわち、それらのオペレーションは、特段の指定がない限り、任意の順序で実施することができ、本発明の実施形態は、本明細書で開示されているよりも多いオペレーションまたは少ないオペレーションを含むことができる。たとえば、特定のオペレーションを別のオペレーションの前に、別のオペレーションと同時に、または別のオペレーションの後に実施または実行することは、本発明の態様の範囲内であると考えられる。
【００６１】
本発明の態様またはその実施形態の要素を紹介する際に、「ａ」、「ａｎ」、「ｔｈｅ」、および「ｓａｉｄ」という冠詞は、それらの要素が１つまたは複数存在するということを意味することを意図している。「ｃｏｍｐｒｉｓｉｎｇ」、「ｉｎｃｌｕｄｉｎｇ」、および「ｈａｖｉｎｇ」という用語は、包括的であることを意図しており、記載されている要素のほかにさらなる要素が存在しうるということを意味している。
【００６２】
本明細書は、最良の形態を含めて本発明を開示するために、そしてまた、任意の当業者が、任意のデバイスまたはシステムを作成して使用すること、および任意の組み込まれた方法を実行することを含めて、本発明を実施することを可能にするために、例を使用している。本発明の特許性のある範囲は、特許請求の範囲によって定義され、また、当業者が想起するその他の例を含むことができる。そのようなその他の例は、特許請求の範囲の文言と異ならない構造的要素を有する場合には、または特許請求の範囲の文言との非実質的な相違を有する均等な構造的要素を含む場合には、特許請求の範囲の範疇内にあることを意図されている。
【図１】
2013164846.tif 000003
【図２】
2013164846.tif 000004
【図３】
2013164846.tif 000005
【図４】
2013164846.tif 000006
【図５】
2013164846.tif 000007
【図６】
2013164846.tif 000008
【図７】
2013164846.tif 000009
【図８】
2013164846.tif 000010
【図９】
2013164846.tif 000011
【図１０】
2013164846.tif 000012
【図１１】
2013164846.tif 000013
【図１２】
2013164846.tif 000014
【図１３】
2013164846.tif 000015
【外国語明細書】
2013164846000001.pdf