(57)【要約】開示するシステム及び方法は、リレーショナル持続性レイヤと関連付けられているオブジェクトリレーショナルマッピング挙動についての動的ランタイム変更に関する。様々な実施形態では、リレーショナルデータベース管理システム等のリレーショナル持続性レイヤへのアクセスは、オブジェクトリレーショナルマッパー（ＯＲＭ）を介して提供され得る。ＯＲＭは、データをリレーショナル持続性レイヤからオブジェクト指向ドメインモデルへとマッピングすることができる。ＯＲＭは、リレーショナル持続性レイヤからオブジェクト指向ドメインモデルへとエンティティフィールドをマッピングするためのオリジナルマッピング戦略を有するように構成された複数のフィールドマッパーを含むことができる。１以上のフィールドマッパーは、一時的又は条件的なマッピング挙動を選択されたフィールドマッパーにインジェクトすることを可能とする動的調整戦略を有するように構成されることができる。動的調整戦略はスタートアップ時においてフィールドマッパーをもって初期化されることができ、そして一時的又は条件的なマッピングのインジェクションはランタイム中に行われることができる。【選択図】図１
2017532620.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサによって実行されると、持続性レイヤと関連付けられているマッピング挙動についての動的ランタイム変更を行わせるオペレーションを前記プロセッサに行わせる命令を有する非一時的コンピュータ可読媒体であって、該オペレーションは、
持続性レイヤ内に格納されたデータにアクセスするステップと、
スキーママッパーを用いてデータを前記持続性レイヤからドメインモデルへとマッピングするステップであって、前記スキーママッパーは複数のフィールドマッパーを備えており、各フィールドマッパーは前記持続性レイヤから前記ドメインモデルへとエンティティフィールドをマッピングするためのオリジナルマッピング戦略を有するように構成されている、ステップと、
前記スキーママッパーの選択されたフィールドマッパーを、動的調整戦略をもって構成するステップであって、前記動的調整戦略は一時的又は条件的なマッピング挙動を前記選択されたフィールドマッパーにランタイムにおいてインジェクトすることを可能とするように構成されている、ステップと、
前記選択されたフィールドマッパーの前記オリジナルマッピング戦略とは異なる一時的又は条件的なマッピング挙動を前記選択されたフィールドマッパーにランタイムにおいてインジェクトするステップと、
前記動的調整戦略によって定義された前記一時的又は条件的なマッピング挙動に従う前記選択されたフィールドマッパーを介してデータをマッピングするステップ
とを含む、非一時的コンピュータ可読媒体。
【請求項２】
前記スキーママッパーはオブジェクトリレーショナルマッパーを備え、前記ドメインモデルはオブジェクト指向ドメインモデルを備え、前記持続性レイヤはリレーショナル持続性レイヤを備える、請求項１に記載の非一時的コンピュータ可読媒体。
【請求項３】
前記動的調整戦略は、条件的なマッピング挙動を前記選択されたフィールドマッパーにランタイムにおいてインジェクトすることを可能とするように構成されており、
前記オペレーションは、前記選択されたフィールドマッパーの前記オリジナルマッピング戦略とは異なる条件的なマッピング挙動を前記選択されたフィールドマッパーにランタイムにおいてインジェクトするステップを含み、
イベントに応答して、前記選択されたフィールドマッパーの前記オリジナルマッピング戦略の代わりに前記条件的なマッピング挙動が実施される、
請求項１に記載の非一時的コンピュータ可読媒体。
【請求項４】
前記イベントは、前記ドメインモデルと前記持続性レイヤとの間の相互作用に関連付けられたアプリケーションエラーを含む、請求項３に記載の非一時的コンピュータ可読媒体。
【請求項５】
前記イベントは、前記持続性レイヤへの接続の利用不能状態、前記持続性レイヤのマイグレーション、及び前記ドメインモデルと前記持続性レイヤとの間のデータタイプ不整合、のいずれか１つを含む、請求項３に記載の非一時的コンピュータ可読媒体。
【請求項６】
前記イベントは、前記ドメインモデルを介して要求されたマッピングが前記持続性レイヤにおいては有効ではないとの判定を含み、
前記インジェクトされた一時的又は条件的なマッピング挙動は、前記選択されたフィールドマッパーに、実在しないエンティティフィールドを前記持続性レイヤから前記ドメインモデルへと代理値を用いてマッピングさせる、
請求項３に記載の非一時的コンピュータ可読媒体。
【請求項７】
前記持続性レイヤは構造化クエリ言語（ＳＱＬ）ＤＢＭＳを含む、請求項１に記載の非一時的コンピュータ可読媒体。
【請求項８】
前記ドメインモデルは、C++、Java、Javascript、C#、Perl、Python、Ruby、及びPHPからなる群より選択されたプログラミング言語によって使用されるドメインモデルに関連する、請求項１に記載の非一時的コンピュータ可読媒体。
【請求項９】
前記インジェクトされた一時的又は条件的なマッピング挙動はAdjustToAlwaysLoadSpecificValue（常に特定の値をロードするように調整）型マッピング挙動を含み、該挙動は、前記選択されたフィールドマッパーに、前記エンティティフィールド内に実際に保持されているデータとは無関係にエンティティフィールドを前記持続性レイヤから前記ドメインモデルへと特定の代理値を用いてマッピングさせる、請求項１に記載の非一時的コンピュータ可読媒体。
【請求項１０】
前記インジェクトされた一時的又は条件的なマッピング挙動はOnlyAdjustIfColumnDoesNotExist（カラム不存在の場合のみに調整）型マッピング挙動を含み、該挙動は、前記選択されたフィールドマッパーに、実在していなかったエンティティフィールドが利用可能となったらばデータを前記持続性レイヤの今は実在していないエンティティフィールド内に保持させる、請求項１に記載の非一時的コンピュータ可読媒体。
【請求項１１】
前記インジェクトされた一時的又は条件的なマッピング挙動はAdjustFieldBasedOnContext（コンテキストに基づいてフィールドを調整）型マッピング挙動を含み、該挙動は、前記選択されたフィールドマッパーに、前記エンティティフィールド内に実際に保持されているデータとは無関係にエンティティフィールドを前記持続性レイヤから前記ドメインモデルへとコンテキスト値を用いてマッピングさせる、請求項１に記載の非一時的コンピュータ可読媒体。
【請求項１２】
前記コンテキスト値は、前記実際に保持されているデータがマイグレーションされている間に前記実際に保持されているデータの代替として提供される算出された値を含む、請求項１１に記載の非一時的コンピュータ可読媒体。
【請求項１３】
前記コンテキスト値は、前記実際に保持されているデータの代替として提供されるユーザの識別に基づいた既定値を含む、請求項１１に記載の非一時的コンピュータ可読媒体。
【請求項１４】
前記インジェクトされた一時的又は条件的なマッピング挙動はCheckForCorruptData（破損データ確認）型マッピング挙動を含み、該挙動は、前記選択されたフィールドマッパーに、保持されているデータが破損しているとの判定に基づいてアクションを行わせる、請求項１に記載の非一時的コンピュータ可読媒体。
【請求項１５】
リレーショナル持続性レイヤと関連付けられているオブジェクトリレーショナルマッピング挙動についての動的ランタイム変更のための方法であって、
リレーショナル持続性レイヤ内に格納されたデータにアクセスするステップと、
オブジェクトリレーショナルマッパー（ＯＲＭ）を用いてデータを前記リレーショナル持続性レイヤからオブジェクト指向ドメインモデルへとマッピングするステップであって、前記ＯＲＭは複数のフィールドマッパーを備えており、各フィールドマッパーは前記リレーショナル持続性レイヤから前記オブジェクト指向ドメインモデルへとエンティティフィールドをマッピングするためのオリジナルマッピング戦略を有するように構成されている、ステップと、
前記ＯＲＭの選択されたフィールドマッパーを動的調整戦略をもって構成するステップであって、前記動的調整戦略は一時的又は条件的なマッピング挙動を前記選択されたフィールドマッパーにランタイムにおいてインジェクトすることを可能とするように構成されている、ステップと、
前記選択されたフィールドマッパーの前記オリジナルマッピング戦略とは異なる一時的又は条件的なマッピング挙動を前記選択されたフィールドマッパーにランタイムにおいてインジェクトするステップと、
前記動的調整戦略によって定義された前記一時的又は条件的なマッピング挙動に従う前記選択されたフィールドマッパーを介してデータをマッピングするステップ
とを含む、方法。
【請求項１６】
前記動的調整戦略は、条件的なマッピング挙動を前記選択されたフィールドマッパーにランタイムにおいてインジェクトすることを可能とするように構成されており、
前記オペレーションは、前記選択されたフィールドマッパーの前記オリジナルマッピング戦略とは異なる条件的なマッピング挙動を前記選択されたフィールドマッパーにランタイムにおいてインジェクトするステップを含み、
イベントに応答して、前記選択されたフィールドマッパーの前記オリジナルマッピング戦略の代わりに前記条件的なマッピング挙動が実施される、
請求項１５に記載の方法。
【請求項１７】
前記イベントは、前記オブジェクト指向ドメインモデルと前記リレーショナル持続性レイヤとの間の相互作用に関連付けられたアプリケーションエラーを含む、請求項１６に記載の方法。
【請求項１８】
前記イベントは、前記リレーショナル持続性レイヤへの接続の利用不能状態、前記リレーショナル持続性レイヤのマイグレーション、及び前記オブジェクト指向ドメインモデルを用いるアプリケーションと前記リレーショナル持続性レイヤとの間のデータタイプ不整合、のいずれか１つを含む、請求項１６に記載の方法。
【請求項１９】
前記イベントは、前記オブジェクト指向ドメインモデルを介して要求されたマッピングが前記リレーショナル持続性レイヤにおいては有効ではないとの判定を含み、
前記インジェクトされた一時的又は条件的なマッピング挙動は、前記選択されたフィールドマッパーに、実在しないエンティティフィールドを前記リレーショナル持続性レイヤから前記オブジェクト指向ドメインモデルへと代理値を用いてマッピングさせる、
請求項１６に記載の方法。
【請求項２０】
前記リレーショナル持続性レイヤは構造化クエリ言語（ＳＱＬ）ＤＢＭＳを含む、請求項１５に記載の方法。
【請求項２１】
前記インジェクトされた一時的又は条件的なマッピング挙動はAdjustToAlwaysLoadSpecificValue（常に特定の値をロードするように調整）型マッピング挙動を含み、該挙動は、前記選択されたフィールドマッパーに、前記エンティティフィールド内に実際に保持されているデータとは無関係にエンティティフィールドを前記リレーショナル持続性レイヤから前記オブジェクト指向ドメインモデルへと特定の代理値を用いてマッピングさせる、請求項１５に記載の方法。
【請求項２２】
前記インジェクトされた一時的又は条件的なマッピング挙動はOnlyAdjustIfColumnDoesNotExist（カラム不存在の場合のみに調整）型マッピング挙動を含み、該挙動は、前記選択されたフィールドマッパーに、実在していなかったエンティティフィールドが利用可能となったらばデータを前記リレーショナル持続性レイヤの今は実在していないエンティティフィールド内に保持させる、請求項１５に記載の方法。
【請求項２３】
前記インジェクトされた一時的又は条件的なマッピング挙動はAdjustFieldBasedOnContext（コンテキストに基づいてフィールドを調整）型マッピング挙動を含み、該挙動は、前記選択されたフィールドマッパーに、前記エンティティフィールド内に実際に保持されているデータとは無関係にエンティティフィールドを前記リレーショナル持続性レイヤから前記オブジェクト指向ドメインモデルへとコンテキスト値を用いてマッピングさせる、請求項１５に記載の方法。
【請求項２４】
前記コンテキスト値は、前記実際に保持されているデータがマイグレーションされている間に前記実際に保持されているデータの代替として提供される算出された値を含む、請求項２３に記載の方法。
【請求項２５】
前記コンテキスト値は、前記実際に保持されているデータの代替として提供されるユーザの識別に基づいた既定値を含む、請求項２３に記載の方法。
【請求項２６】
プロセッサによって実行されると、持続性レイヤと関連付けられているデータベースマッピング挙動についての動的ランタイム変更を行わせるオペレーションを前記プロセッサに行わせる命令を有する非一時的コンピュータ可読媒体であって、該オペレーションは、
第１のタイプのデータ組織スキーマを用いる持続性レイヤ内に格納されたデータにアクセスするステップと、
組織スキーママッパー（ＯＳＭ）を介してデータを前記持続性レイヤから第２のタイプのデータ組織スキーマを用いるドメインモデルへとマッピングするステップであって、前記ＯＳＭは複数のマッパーを備えており、各マッパーは前記持続性レイヤから前記ドメインモデルへとフィールドをマッピングするためのオリジナルマッピング戦略を有するように構成されている、ステップと、
前記ＯＳＭの選択されたマッパーを動的調整戦略をもって構成するステップであって、前記動的調整戦略は一時的又は条件的なマッピング挙動を前記選択されたマッパーにランタイムにおいてインジェクトすることを可能とするように構成されている、ステップと、
前記選択されたマッパーの前記オリジナルマッピング戦略とは異なる一時的又は条件的なマッピング挙動を前記選択されたマッパーにランタイムにおいてインジェクトするステップと、
前記動的調整戦略によって定義された前記一時的又は条件的なマッピング挙動に従う前記選択されたマッパーを介してデータをマッピングするステップ
とを含む、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ランタイムに際してオブジェクトリレーショナルマッピング（object-relational mapping）又は他のデータベーススキーマを動的に調整するシステム及び方法に関するのであり、該調整は、一時的な又は条件的なマッピング挙動を、オブジェクトリレーショナルマッパーの１以上のフィールドマッパー又は他のデータベース管理マッパー内へと、インジェクトすることによってなされる。
【０００２】
関連出願の相互参照
本願は、２０１４年９月１９日に出願された「ランタイム設定を介して持続性挙動を動的にインターセプト及び調整するシステム及び方法」と題された米国特許出願第１４／４９１，５４９号の優先権を主張し、該出願の全体が参照によって取り込まれる。
【発明の概要】
【０００３】
オブジェクトリレーショナルマッパー（ＯＲＭ、Object-relational mapper）は、オブジェクト指向プログラミング言語（ＯＯＰＬ、object oriented programming language）に基づいたアプリケーションが構造化クエリ言語（ＳＱＬ、Structured Query Language）データベース等のリレーショナルデータベースを使用することを支援する。リレーショナルデータベースはリレーショナル持続性レイヤ（relational persistence layer）の一部であることができ、このようなレイヤはデータに関しての持続的な記憶及びアクセスをオブジェクト指向アプリケーション（即ち、少なくとも部分的にＯＯＰＬを用いて記述されたアプリケーション）に提供する。
【０００４】
リレーショナルデータベースは、論理構造又はスキーマに従って行及びカラム（フィールド）を有するテーブル内にデータを格納することができる。ＯＲＭは、関連付けられた１以上のオブジェクト指向アプリケーションによる使用に供するために初期化時にリレーショナルデータベースの仮想的なオブジェクト指向データベースを生成することができる。したがって、ＯＯＰＬを用いてプログラミングするプログラマーは、あたかもデータベースがオブジェクト指向データベースであるかのうようにデータベースと対話することができるのであり、また、ＯＯＰＬを用いてリレーショナルデータベースと対話することの複雑さを無視することができる。オブジェクト指向アプリケーションがリレーショナルデータベースを下層にある持続性レイヤの一部として透過的に使用して持続性データを格納することを、ＯＲＭは可能とする。
【０００５】
ＯＲＭによると、例えば、Ｊａｖａに習熟したプログラマーは、Ｊａｖａでプログラミングを行って、下層にある持続性レイヤがリレーショナルデータベース管理システム（ＲＤＢＭＳ、relational database management system）を含んでいることを意識せずに慣れ親しんだオブジェクト指向クラスと相互作用するコードを書くことができる。
【０００６】
説明される特徴、利益、利点、事例、及び、実施形態はＯＯＰＬとの使用のためにマッピングされるリレーショナルデータベースとの関連で説明されているが、類似のアプローチ、ステップ、及び、方法を種々のデータベースマッピングにも適用することができる。例えば、キーバリューデータストアが持続性レイヤとして用いられる状況下でも、類似の原理及び利点を得ることが可能である。他の例としては、下層にあるデータベースと同一のスキーマを用いないプログラミング言語又は異なるデータベースインタフェースを使用することが希望される持続性レイヤの場合を挙げることができ、それらプログラミング言語がオブジェクト指向的であるか否かは問われず、それら持続性レイヤには次のものを含む任意の組み合わせが含まれ得る：リレーショナルデータベース、キーバリューデータストア、ドキュメントストア、グラフデータストア、タビュラーデータベース、多価データベース、セルデータベース、及び、リソース記述フレームワーク（ＲＤＦ、resource description framework）。
【０００７】
もっとも、簡潔性のため、本願明細書の残部は、ＯＯＰＬと組み合わせて使用されるリレーショナルデータベースに関しての事例及び詳細事項を提供する。同様の原理を、他のタイプの持続性データストアに対して適用することができ、また、そのような持続性データストアにアクセスする他のタイプのツールや言語等と組み合わせて使用することができる。
【０００８】
様々なＯＲＭが「オフザシェルフ」（既製）の製品として入手可能であり、これらはエンティティフィールドに関してリレーショナル持続性レイヤから選択されたオブジェクト指向ドメインモデルへの汎用的なマッピング又はセミカスタムなマッピングを提供する。追加的には、プログラマーはカスタマイズされたＯＲＭを自ら著すること選んで、それによってエンティティフィールド間でのリレーショナル持続性レイヤから選択されたオブジェクト指向ドメインモデルへのカスタマイズされたマッピングを実現することができる。いずれのそのような実施形態においても、ＯＲＭは、リレーショナル持続性レイヤのエンティティフィールドがどのようにしてオブジェクト指向ドメインモデルへとマッピングされるべきかを定義する様々なフィールドマッパー（field mapper）を有する。フィールドマッパーは、一旦初期化されてマッピングされると変わらないという点で、静的なものであるとみなされる。ただ、一旦初期化されると、オブジェクト指向アプリケーションが実在しないエンティティフィールド内のデータにアクセス（ロード又は保持）しようと試みたり又は正しくないデータタイプを用いてデータにアクセスしようと試みたりすると、ＯＲＭはエラーを発生させることができる。
【０００９】
様々な実施形態では、ＯＲＭは、初期化前において１以上のフィールドマッパーの動的な調整を許容することができる。即ち、システムを停止して、また、１以上のフィールドマッパーのマッピング挙動をシステム初期化に先立って変更乃至調整することができる。システムが初期化されたらば、フィールドマッパーは変更乃至調整されたマッピング挙動を実施することができる。もっとも、このような動的な初期化前の調整は、リアルタイムで又はランタイム中に行われることはできない。
【００１０】
したがって、ソフトウェアシステムが持続性メカニズム（persistence mechanism）を用いている場合、ランタイムにおいてＯＲＭを変更することは困難な場合がある。そして、たとえマッピングがランタイムにおいて動的に識別されるのであるとしても、通常はこれを行うのは初期化時に限られる。なぜならば、継続的に再ディスカバリ（再マッピング）を行うとすれば、実行性能に対して重大な影響が生じるからである。また、伝統的なカスタマイズマッピング調整は、再度システムの再起動及び／又はソフトウェアシステムの変更を伴わずして、後日に排除又は削除することが難しくなり得る。したがって、このようなマッピング調整は、特定のシナリオ又は時期にしか関連性を有さないにもかかわらず、長期にわたって性能への重大な影響を及ぼし得る。
【００１１】
本発明に係るシステム及び方法は、リレーショナル持続性レイヤと関連付けられたオブジェクト指向マッピング挙動のリアルタイムでの動的調整のための様々な実施形態を提供するのであり（例えば、再度初期化又はシャットダウンを必要としないランタイム変更／調整）、これには何ら性能に対しての重大な影響は伴わない。
【００１２】
例えば、マッパーに対して何らの変更も適用されない場合、性能及びエラー処理は、動的調整がなされる前のシステムのそれと実質的に同等となる。動的調整が適用される場合、性能は、調整後のマッピング挙動が元から唯一のマッピング挙動として定義されていた場合とあたかも同等のものとなる。最後に、既定のイベント（例えば、テンポラル又は条件的な状態（temporal or conditional state）が充足された場合）にのみ応答するように実施される動的調整がインジェクトされる場合、性能に対する影響は、実際の動的調整の性能コストの限度のみにおいて重大性を伴う（例えば、動的調整が特別なスクリプティング実装によって実装される場合、その影響は他のより基礎的な調整よりも大きくなり得る）。
【００１３】
持続性挙動を動的に調整する機能により、仮に下層の持続性メカニズム（即ち、持続性レイヤ）が、恣意的に変化しつつあっても、「アウトオブシンク（out of sync）」状態にあっても、及び／又は、マイグレーション中であっても、アプリケーションシステムが安定的なままでいることが可能となる。
【００１４】
様々な実施形態では、オブジェクト指向アプリケーションは、例えばＲＤＢＭＳ等のリレーショナル持続性レイヤ内に格納されたデータにアクセス（例えば、記憶、読み出し、書き込み、変更、持続等）する必要があるかもしれない。オブジェクト指向アプリケーションは、ＯＲＭを介してリレーショナル持続性レイヤと相互作用することができる。ＯＲＭは様々なフィールドマッパーを含み得るのであり、各々は、リレーショナル持続性レイヤからｊａｖａやＣ＋＋等によって使用されるオブジェクト指向モデル等のオブジェクト指向ドメインモデルへとエンティティフィールドをマッピングするためのオリジナルマッピング戦略を有するように構成されている。
【００１５】
フィールドマッパーの動的ランタイム変更をもたらすために、１以上のフィールドマッパーを、動的調整戦略をもって構成することができ、該戦略は、オリジナルマッピング戦略とは異なるインジェクトされた一時的又は条件的なマッピング挙動で、エンティティフィールドをマッピングするためのオリジナルマッピング戦略をラップ（wrap）する。
【００１６】
インジェクトされた一時的又は条件的なマッピング挙動は、再初期化を必要とせずにランタイムにおいて変更及び／又は調整されることができる。したがって、一時的又は条件的なマッピング挙動はＯＲＭにリアルタイムでインジェクトされることができ、及び／又は、マッピング挙動をリアルタイムで変更することができる（例えば、新たなインジェクション）。
【００１７】
動的に変更可能でありつつも比較的静的なＯＲＭは、確立されたマッピングに関しては高い性能を維持することができ、また、ＯＲＭと持続性実装機構（即ち、持続性レイヤ）との間の何らかの不整合に関して和解をもたらす動的な調整を可能とする。また、提案される実施形態においては、特定のマッピングが調整を必要とされ得る状態にあるということを識別することに関しては、最低限の準備的作業で済むか又は準備的作業なしに済むことになる。むしろ、調整／変更は、一時的又は条件的な状態が充足された際に、ランタイムにおいて即時に適用されることができる。
【００１８】
一時的又は条件的なマッピング挙動をＯＲＭの１以上のフィールドマッパーにインジェクトすることによってオブジェクト-リレーショナルマッピングをランタイムにおいて動的に調整することは、次のようなシステムにおいて特に有用たり得る：即ち、中断されないシステム可用性を維持しつつ、アプリケーションソフトウェアと持続性レイヤとが重複するアプリケーションをサポートしたりマイグレーションをサポートしたりする必要があるようなシステム。大規模な分散システム又は迅速に繰り返して更新されるソフトウェアデプロイメントが関係する場合に、このような要請が比較的によく見られる。
【００１９】
一部の実施形態では、インジェクトされた一時的又は条件的なマッピング挙動は、条件的なマッピング挙動であることができる。このような実施形態では、特定の条件が成立しない限り、フィールドマッパーのオリジナルマッピング戦略を実施することができる。例えば、一部の実施形態では、既定のイベントが発生した又は発生中の場合に、条件的なマッピング挙動がオリジナルマッピング戦略をオーバーライドすることができる。
【００２０】
インジェクトされた条件的なマッピング挙動をトリガし得るイベントには、例えば、リレーショナル持続性レイヤのマイグレーションやオブジェクト指向アプリケーションとリレーショナル持続性レイヤとの間のデータタイプ不整合等が含まれ得る。様々な実施形態では、イベントは、アプリケーションがリレーショナル持続性レイヤへの有効ではないアクセスを要求したとの判定を含むことができる（例えば、指定されたカラムがリレーショナルデータベースには存在していない場合）。そのような実施形態においては、インジェクトされた一時的又は条件的なマッピング挙動は、何らのデータが実際に保持されていないにもかかわらず、選択されたフィールドマッパーが代理値（proxy value）を返すようにしむけることができる。したがって、実効的には、フィールドマッパーが、実在しないエンティティフィールドをリレーショナル持続性レイヤからオブジェクト指向ドメインモデルへと代理値を用いてマッピングすることができる。
【００２１】
様々な実施形態では、インジェクトされたマッピング挙動は、一時的なマッピング挙動を含むことができ、該挙動は、選択されたフィールドマッパーに、エンティティフィールド内に実際に保持されているデータとは無関係にエンティティフィールドをリレーショナル持続性レイヤからオブジェクト指向ドメインモデルへと特定の代理値を用いてマッピングさせることができる。この挙動は、AdjustToAlwaysLoadSpecificValue（常に特定の値をロードするように調整）型と呼ぶことができる。このマッピング挙動によれば、実際に保持されている値とは無関係に、フィールドが単一の構成済みの値を保持していたようにみせることができる。アプリケーションによって更新された任意の値は、データ保持時には無視され得る。様々な実施形態では、このような一時的なマッピング挙動を用いて、持続性メカニズムにおいて未だ実装されていない新たなフィールドのための後方互換な値を提供することができ、又は、別のプロセスによって操作されておりまだ可視化されるべきでないデータを即時に隠蔽／非アクティブ化することができる。
【００２２】
様々な実施形態では、インジェクトされたマッピング挙動は、一時的又は条件的なマッピング挙動を含むことができ、該挙動は、選択されたフィールドマッパーに、実在していなかったエンティティフィールドが利用可能となったらばデータをリレーショナル持続性レイヤの今は実在していないエンティティフィールド内に保持させることができる。この挙動は、OnlyAdjustIfColumnDoesNotExist（カラム不存在の場合のみに調整）型と呼ぶことができる。このようなマッピング挙動では、データベースをチェックして下層にある持続性レイヤが調整されていないマッピング（即ち、オリジナルマッピング戦略）をサポートしているのかをみることができる。即ち、ＳＱＬカラムが存在しない場合又はそれが適切なデータタイプを有していない場合を除いて、インジェクトされたマッピング挙動は通常の挙動に対して割り込まない。しかし、標準的なオリジナルマッピング戦略が現在サポートされていない場合、動的調整戦略は、戦略によって提供された構成情報に基づいてフィールド値をフィールドマッパーに調整させることができる。このような調整によれば、アプリケーションは、新しいフィールドが利用可能となり次第それらに関して保持を行いつつ、マイグレーション中のエラーを回避することできる。
【００２３】
様々な実施形態では、インジェクトされたマッピング挙動は、一時的又は条件的なマッピング挙動を含むことができ、該挙動は、選択されたフィールドマッパーに、エンティティフィールド内に実際に保持されているデータとは無関係にエンティティフィールドをリレーショナル持続性レイヤからオブジェクト指向ドメインモデルへとコンテキスト値を用いてマッピングさせることができる。この挙動は、AdjustFieldBasedOnContext（コンテキストに基づいてフィールドを調整）型と呼ぶことができる。このマッピング挙動は、構成された規則に基づいて認識されるフィールド値を調整することができる。
【００２４】
このような挙動の変更は、実際の保持される値がマイグレーションされている間に、フィールドの値が計算される値であることを一時的又は条件的に示唆するために用いることができる。様々な実施形態では、AdjustFieldBasedOnContext型マッピング挙動は、値を動的に調整するために使用することができ、これによって、新たな機能性が評価されている間は、「ベータ」段階のアプリケーション機能を「オプトイン」しているユーザのみのためにアクティブ化したり、そのような機能の使用が十分に適切とされるシナリオのみのためにアクティブ化したりすることができる。
【００２５】
様々な実施形態では、インジェクトされたマッピング挙動は、一時的又は条件的なマッピング挙動を含むことができ、該挙動は、選択されたフィールドマッパーに、保持されているデータが破損しているとの判定に基づいてアクションを行わせることができる。この挙動はCheckForCorruptData（破損データ確認）型と呼ぶことができる。このマッピング挙動は、フィールド（又はレコードの全部又は一部が）有効な状態にあるか否かを一時的又は条件的にチェックするために使用することができる。戦略の設定によって、データが「破損している」と識別された場合に行うべき１以上のアクションを定義することができる。行い得るアクションには次のものが含まれるがこれらには限定されない：破損データを自動クリーンアップすること、破損データをマスキングすること、後の分析のために破損ステータスをロギングすること、又は、データのロードを中止して明示的な「根源的」ｆａｉｌｕｒｅを発生させ及び下流側のエラーを防止すること。
【００２６】
他の実施形態では、インジェクトされたマッピング挙動は、一時的又は条件的なマッピング挙動を含むことができ、該挙動は、選択されたフィールドマッパーに、現在のユーザがロード中のデータを閲覧するための適切なパーミッションを有しているか否かをチェックさせることができる。この挙動はCheckUserPermissions（ユーザパーミッション確認）型と呼ぶことができる。不十分なパーミッションが識別されている場合、マッピングはフィールド又はオブジェクト／レコードの全体のロード処理を中止することができる。動的調整戦略は、この事象が（脅威モニタリングのためにロギングされるべき）セキュリティエラーであるとみなすべきか、又は、この事象を沈黙のうちにデータを隠蔽することで足りるかを定義することができる。
【００２７】
CheckUserPermissions型マッピング挙動の例としては次のものが挙げられる：
【数１】
2017532620.tif 000003
【００２８】
したがって、設定では、戦略名と戦略の挙動を記述するペイロードとを指定することによって戦略を定義する。上記の例では、戦略は「CheckUserPermissions」と称され、「visibleToUsers」フィールドがトリガ値（topSecret又はsuperSecret）のどれかであるかをチェックするように構成されている。そうである場合、そのフィールドへのアクセスの殆どは却下さられる。しかし、「authorized users」セクションによって、指定されたユーザが該制約をバイパスすることができる。
【００２９】
さらなる別の実施形態では、インジェクトされたマッピング挙動は、一時的又は条件的なマッピング挙動を含むことができ、該挙動は、データに対してのアクセス又は変更が動的調整戦略によって定義されるルールセットに該当する場合、そのアクセス又は変更を記録させることができる。この挙動はTrackUserAccessOrModification（ユーザによるアクセス又は変更を追跡）型と呼ぶことができる。
【００３０】
上述の実施形態は、具体的な戦略の実装例を示すのであり、これらは、本願明細書にて説明するＯＲＭの１以上のフィールドマッパーに一時的又は条件的なマッピング挙動をインジェクトするためのシステム及び方法によって可能とされる。もっとも、様々な一時的又は条件的なマッピング挙動のうちの任意のものをインジェクトして種々の代替的なマッピング機能を行うことができる。したがって、上述の列挙は網羅的ではなく、可能なマッピング戦略の実装例について若干の例を提示するにすぎない。
【００３１】
ＯＲＭの１以上のフィールドマッパーに一時的又は条件的なマッピング挙動をインジェクトすることによってオブジェクトリレーショナルマッピングをランタイムにおいて動的に調整することによって、特定のＯＲＭサポートがソース実装に含まれていることを要求せずに、また、調整されないマッピングに影響を与えずに、迅速に特定のマッピングをリアルタイムで調整できるようになる。
【００３２】
下層の持続性レイヤに変更が加えられている間にシステムは、持続性レイヤ変更の進行中も「ライブ」な状態を維持することができ、また、アプリケーションに対して一貫性を伴った挙動を透過的に提供することができる。追加的には、これらの挙動調整を用いて、破損データを監視する又はそのリカバリを行うこと、データアクセス制限に関して監視を行うかそのエンフォースメントを行うこと、及び／又は、高レベルアプリケーションのフィーチャを選択的に制御し及び幾つかの一般的なアプリケーションエラーに関しての回避策を講ずること、を行うことができる。
【００３３】
本願においては、ＯＲＭは、は１以上のフィールドマッパーを含むことができ、それらは各々特定のエンティティフィールドを持続性レイヤからオブジェクトへとマッピングするように構成されている。StringFieldMapperに関してのインスタンスをインスタンス化して、データベースカラムたる「first_name」をＳＱＬ結果セットから人物オブジェクトフィールドたる「firstName」へとマッピングすることを該インスタンスに任せることができる。
【００３４】
動的調整戦略は、システム管理者等のユーザによって定義されるか、又は、エラーに応答して自動的にシステムによって定義されることができる。動的調整戦略は、調整すべき１以上のフィールドマッピング、インジェクトされるべきマッピング挙動（mapping behavior）、及び、インジェクトされる挙動マッピング（behavior mapping）をテンポラル（temporal）ベースド（例えば、一時的（temporary））又は条件ベースドとすべきか、を定義することができる。動的調整戦略は、オリジナルマッピング戦略を、ランタイムにおいてカスタマイズできる動的にインジェクト可能なマッピング挙動と共に、ラップすることができる。様々な実施形態では、動的調整戦略は、特定の調整戦略の実装例に関しての追加的設定事項を定義する設定ペイロードを含むことができる。
【００３５】
条件的なインジェクトされたマッピング挙動では、インジェクトされた挙動マッピングがいつオリジナルマッピング挙動／戦略をオーバーライドすべきかを指定する「フック（hook）」を定義しておくことができる。フィールドマッパーが持続性レイヤと相互作用していくなかでいつインジェクトされた挙動調整（behavior adjustment）が適用されるべきかを、フックは定義することができる。これは、create、read、update、delete等の標準的なオペレーションをもって実装することができる。
【００３６】
本願によれば、動的調整戦略をラップしたオリジナルフィールドマッパーを用いてシステムを初期化することによって、動的調整戦略を実装することができる。動的調整戦略は、オリジナルマッピング戦略を用いて、設定を黙示的に宣言して明示的な設定の必要性を減じたり、また、インジェクトされた挙動マッピングとオリジナルマッピング挙動との間の意図的ではない不整合設定のリスクを減じたりすることができる。
【００３７】
所定のフィールドマッパーに関してフィールド調整が適用（又は更新又は除去）された場合、標準のＯＲＭフィールド「マッパー」インスタンスは「インジェクトされた戦略マッパー」と共にラップされることができる。インジェクトされた戦略マッパーは、設定された調整によってランタイムにおいて定義された具体的な戦略実装を、含むことができる。その戦略が追加的であって戦略固有の設定ペイロードを受け取る。マッパーと調整戦略実装との間の区別によって、調整戦略はよりアトミックなものとなり、また、一般的なマッピングタスクが提供されることになる。また、これによって、異なるマッピングラッパーを必要とするが、同様の調整戦略実装の大部分を共有することができる複数のＯＲＭマッピング枠組みを、サポートすることができる。
【００３８】
先述したように、動的調整戦略は、次の事象に基づいて実行をオリジナルマッピング戦略に委譲することができる：観測された状態、イベントの発生又はその不発生、テンポラルな設定、ユーザ認証／識別、及び／又は、別の条件。
【００３９】
様々な実施形態では、動的調整戦略は、様々なイベントに関して通知を貰えるようにするためサブスクライブ行為を行っておくことができる。例えば、動的調整戦略は、データベース接続が利用可能であるか利用不能であるかを伝える通知を受信又は取得することができる。別の例としては、動的調整戦略は、マイグレーションのジョブが開始されたか完了されたかを伝える通知を受信又は取得することができる。動的調整戦略は、（例えば、その状態を定期的に再バリデーションするために）スケジューリングされたイベントに関しての通知を受けることができる。例えば、動的調整戦略は、持続性レイヤが所定のフィールド又は挙動をサポートするか否かについて定期的に又はオンデマンドで確認することができる。動的調整戦略はランタイム中の任意の時点で動的に変更され得るため、自己の設定に対しての変更に基づいて動的調整戦略の一部が即時に調整され得る。幾つかの実施形態では、動的調整戦略は、動作中の特定の時点においてのみ変更可能とされ得る。
【００４０】
新たなマッピング調整がインジェクトされると、適用対象とされる全てのデプロイメント（例えば、サーバのクラスタ）に対して通知が迅速に伝播されて一貫性を維持する。大規模インジェクションは、メッセージコール又は共有オブジェクト構造を用いて実装することができる。動的調整戦略の実装例は、自己の現在状態、アプリケーションの現在状態、及び／又は、下層のリレーショナル持続性レイヤの現在状態に関して状況認識を有していることができる。
【００４１】
実施形態は種々のステップを含むことができ、これらのステップは、コンピュータシステムによって実行される機械実行可能な命令の形で具体化することができる。コンピュータシステムは、１以上の汎用又は専用コンピュータ（或いは、他の電子装置）を含む。コンピュータシステムは、これらのステップを実行するための特定の論理回路を含むハードウェア構成要素を含むことができ、或いは、ハードウェア、ソフトウェア、及び／又はファームウェアの組合せを含むことができる。
【００４２】
コンピュータ可読媒体を含むコンピュータプログラム製品として実施形態を提供することもできるのであり、例えば、本願にて説明する処理を実行するようにコンピュータシステム又は他の電子装置をプログラムすることができる命令を格納している非一時的コンピュータ可読媒体とすることができる。コンピュータ可読媒体は、ハードドライブ、フロッピー（登録商標）ディスケット、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気若しくは光学カード、ソリッドステートメモリ装置、又は電子的命令を格納するのに適している他のタイプの媒体／コンピュータ可読媒体等を含むことができるがこれらには限定されない。
【００４３】
コンピュータシステム、及びコンピュータシステム内のコンピュータ同士は、ネットワークを介して接続することができる。本願明細書で説明する構成及び／又は使用法に適したネットワークは、１以上のローカルエリアネットワーク、ワイドエリアネットワーク、メトロポリタンエリアネットワーク、及び／又は、ワールドワイドウェブ、プライベート（私設）インターネット、セキュアインターネット、付加価値通信網、仮想プライベートネットワーク、エクストラネット、イントラネットのような「インターネット」又はＩＰネットワーク、さらには、媒体の物理的な搬送によって他のマシンと通信するスタンドアロンマシン（所謂、「スニーカーネット」）を含む。特に、適切なネットワークは、異種のハードウェア及びネットワーク通信技術を用いるネットワークを含めた２つ以上の他のネットワークの部分又は全体で形成することができる。
【００４４】
ある適切なネットワークは、サーバ及び複数のクライアントを含み；他の適切なネットワークは、サーバ、クライアント、及び／又はピアツーピアノードの他の組合せを含むことができ、所定のコンピュータシステムは、クライアント及びサーバの両方として機能することができる。各ネットワークは、サーバ及び／又はクライアントのような少なくとも２つのコンピュータ又はコンピュータシステムを含む。コンピュータシステムは、ワークステーション、ラップトップコンピュータ、着脱可能なモバイル（携帯）コンピュータ、サーバ、メインフレーム、クラスタ、いわゆる「ネットワークコンピュータ」又は「シンクライアント」、タブレット、スマートホン、パーソナルデジタルアシスタント（個人用携帯情報端末）又は他のハンドヘルド（手持ち型）コンピュータ装置、「スマート」な民生用電子装置又は電化製品、医療機器、或いはそれらの組合せを含むことができる。
【００４５】
ネットワークは、Novell（登録商標）社、Microsoft（登録商標）社、Artisoft社、及び他のベンダーから入手可能なソフトウェアのような通信又はネットワークソフトウェアを含むことができ、そして、ＴＣＰ／ＩＰ、ＳＰＸ、ＩＰＸ、及び他のプロトコルを用いて、ツイストペア、同軸、又は光ファイバケーブル、電話回線、電波、衛星中継、マイクロ波中継、変調ＡＣ電力線、物理的な媒体搬送、及び／又は当業者に既知の他のデータ伝送「線」上で動作することができる。ネットワークは、より小規模なネットワークを包含することができ、及び／又は、ゲートウェイ又は同様のメカニズムを通して他のネットワークと接続可能である。
【００４６】
各コンピュータシステムは、少なくとも１つのプロセッサ及びメモリを含み；コンピュータシステムは、種々の入力装置及び／又は出力装置を含むこともできる。プロセッサは、インテル（登録商標）、ＡＭＤ（登録商標）、又は他の「オフザシェルフ」（既製の）マイクロプロセッサ等の汎用装置を含むことができる。プロセッサは、ＡＳＩＣ、ＳｏＣ、ＳｉＰ、ＦＰＧＡ、ＰＡＬ、ＰＬＡ、ＦＰＬＡ、ＰＬＤのような専用処理装置、或いは他のカスタマイズされたデバイス又はプログラム可能なデバイスを含むことができる。メモリは、スタティックＲＡＭ、ダイナミックＲＡＭ、フラッシュメモリ、１以上のフリップフロップ、ＲＯＭ、ＣＤ−ＲＯＭ、ディスク、テープ、磁気記憶媒体、光記憶媒体、又は他のコンピュータ記憶媒体を含むことができる。入力装置は、キーボード、マウス、タッチスクリーン、ライトペン、タブレット、マイクロホン、センサ、或いはファームウェア及び／又はソフトウェアを伴う他のハードウェアを含むことができる。出力装置は、モニタ又は他のディスプレイ、プリンタ、音声又は文字合成器、スイッチ、信号線、或いはファームウェア及び／又はソフトウェアを伴う他のハードウェアを含むことができる。
【００４７】
コンピュータシステムは、フロッピードライブ、テープドライブ、光学ドライブ、光磁気ドライブ、又は、記憶媒体を読み込むための他の手段を用いることができるように構成されることができる。適切な記憶媒体には、磁気的な装置や光学的な装置、又は特定の物理的構成を有している他のコンピュータ可読記憶装置が含まれる。適切な記憶装置には、フロッピーディスク、ハードディスク、テープ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＤＶＤ、ＰＲＯＭ、ランダムアクセスメモリ、フラッシュメモリ、及び他のコンピュータシステム用記憶装置が含まれる。物理的構成はデータ及び命令を表し、それらがコンピュータシステムの動作に作用するのであり、本願明細書にて説明した態様での具体的かつ定義済みの動作を行わせる。
【００４８】
本発明の実装を支援するための適切なソフトウェアは、本願の教示事項並びにJava、Pascal、C++ データベース言語、ＡＰＩ、ＳＤＫ、アセンブリ語、ファームウェア、マイクロコード及び／又は他の言語やツール等のプログラミング言語やツールを、当業者が使用することによって十分に提供することができる。適切な信号フォーマットは、アナログ又はデジタル形式で、誤り検出及び／又は訂正ビット、パケットヘッダー、特定フォーマットのネットワークアドレス、及び／又は、当業者が容易に用意することのできる他の支援データ付きで、或いはこうした支援データなしで具体化することができる。
【００４９】
リレーショナル持続性レイヤは、任意の個数のＲＤＢＭＳを備えるか任意の個数のＲＤＢＭＳからなることができ、これらにはOracle（登録商標）、MySQL（登録商標）、Microsoft（登録商標） SQL server、PostgreSQL、DB2、Microsoft Access（登録商標）、SQLite、Sybase（登録商標） ASE、Teradata（登録商標）、FileMaker（登録商標）、Informix（登録商標）、Hive、SAP HANA（登録商標）、Firebird、Netezza（登録商標）、MariaDB（登録商標）、及び他のもの等のＲＤＢＭＳが含まれるがこれらには限定されない。同様に、オブジェクト指向ドメインモデルは、様々な種類のＯＯＰＬの任意のものによって使用されるドメインモデルを指称することができ、これらにはC++、C#、Delphi、Java、JavaScript、PHP、Python、Visual Basic（登録商標）、Perl、Ruby、Smalltalk、MatLab、TCL、D、.Net及び他のもの等が含まれるがこれらには限定されない。
【００５０】
説明する実施形態の幾つかの態様は、ソフトウェアモジュール又はソフトウェアコンポーネントとして例示することができる。本願明細書で用いるソフトウェアモジュール又はソフトウェアコンポーネントは、メモリ装置内に配置された任意の種類のコンピュータ命令又はコンピュータ実行可能コードを含むことができる。ソフトウェアモジュールは、例えば、コンピュータ命令の１以上の物理ブロック又は論理ブロックを具えることができ、これらのコンピュータ命令は、１以上のタスクを実行するか特定の抽象的データタイプを実装するためのルーチン、プログラム、オブジェクト、コンポーネント、データ構造、等として編成することができる。
【００５１】
特定実施形態では、特定のソフトウェアモジュールが、メモリ装置の異なる場所、異なるメモリ装置、又は異なるコンピュータに記憶された異種の命令を含むことができ、これらの命令がまとまって、説明するモジュールの機能を実現する。実際に、モジュールは、単一の命令又は多数の命令を含むことができ、そして、異なるコードセグメントにわたって、異なるプログラム間に、及び幾つかのメモリ装置にわたって分散することができる。一部の実施形態は、分散型コンピュータ環境内で実施することができ、こうした環境では、通信ネットワークを通してリンクされたリモート処理装置によってタスクが実行される。分散型コンピュータ環境では、ソフトウェアモジュールを、ローカル及び／又はリモートメモリ記憶装置に配置することができる。これに加えて、データベースレコード内で結合されるか一緒にされたデータを、同じメモリ装置内に、又は幾つかのメモリ装置にわたって常駐させることができ、そして、ネットワーク越しにまとめてリンクして、データベース内のレコードのフィールドの形にすることができる。
【００５２】
本発明に従って使用されることができるインフラストラクチャの多くは既に利用可能であり、これらには、汎用コンピュータ、コンピュータプログラミングツール及び手法、コンピュータネットワーク及びネットワーキング技術、デジタル記憶媒体、並びに、公開鍵、暗号化、ファイアウォール及び／又は他の手段によって提供される認証やアクセス制御や他の種類のセキュリティ用のツール及び手法等が含まれる。
【００５３】
本願にて提供する様々な例は、リレーショナル持続性レイヤとオブジェクト指向アプリケーションとの間での通信を支援するためのＯＲＭに関連しているが、同様の原理は次のような任意のシステムに適用することができる：即ち、データベース内にて第１の態様で格納されたデータへのアクセスを、第２の態様で格納されたデータにアクセスすることを想定しているアプリケーションに対して、提供することが必要とされている、システム。例えば、あるデータベースがデータを格納し、及び、データへのアクセスを提供する態様は、ファイルシステムベースド、ヒエラルキカル、ネットワークベースド、リレーショナル、又はオブジェクト指向的であることができる。アプリケーションが想定しているデータアクセス態様は、データベースのデータ格納態様及びデータアクセス態様と異なっている場合がある。したがって、何らかの種類の（例えば、ＯＲＭ又はファイルシステムベースドからリレーショナルへの）データベースマッパーが有用たり得る。本願にて開示した原理、実施形態、方法、システム等は、本願にて例として言及したＯＲＭ以外のデータベースマッパーでの使用のために適合化することができる。
【００５４】
本願開示の実施形態は添付の図面を参照して理解することができ、本願明細書中においては同様の構成要素は同様の参照符号をもって特定される。本願明細書にて説明する実施形態に関して十分な理解をもたらすために、数多くの具体的詳細事項を以下の詳細な説明で提供する。もっとも、当業者であれば、１以上の具体的詳細事項を省略したり、他の方法やコンポーネントや材料を用いたりすることができる、ということを見出すことができるであろう。一部の事例に関しては、本願開示のより重要な側面を曖昧にしないために、幾つかのオペレーションを示していなかったり詳細に説明していなかったりする。
【００５５】
さらに、説明される特徴、オペレーション又は特性は、１以上の実施形態では、任意の態様で組み合わされることができる。開示される実施形態との関係で説明された方法のステップ又はアクションの順序は、当業者にとって明らかとなるように変更されることができる。したがって、図中又は詳細な説明中に表れるどのような順序であれ、例示的な目的のみのものに過ぎず、ある順序を必要とするように特定されていない限り、必要的な順序を示唆していない。
【図面の簡単な説明】
【００５６】
【図１】オブジェクトリレーショナルマッパー（ＯＲＭ）を含む機能的ブロック図であって、該ＯＲＭはフィールドエンティティをリレーショナル持続性レイヤからオブジェクト指向ドメインモデル内のオブジェクトへとマッピングする複数の静的フィールドマッパーを有する、ブロック図である。
【図２】ＯＲＭを含む機能的ブロック図であって、該ＯＲＭは１以上のフィールドマッパーと関連付けられて一時的又は条件的なマッピング挙動をインジェクトする動的調整戦略ラッパー（dynamic adjustment strategy wrapper）を有する、ブロック図である。
【図３】ＯＲＭの機能的ブロック図であって、該ＯＲＭは種々の動的調整戦略ラッパー及びそれらに対応する一時的又は条件的なマッピング挙動を有する、ブロック図である。
【図４】リレーショナル持続性レイヤと関連付けられているオブジェクトリレーショナルマッピング挙動についての動的ランタイム変更を行うための方法に関する１つの実施形態に関してのフローチャートである。
【図５】リレーショナル持続性レイヤと関連付けられているオブジェクトリレーショナルマッピング挙動についての動的ランタイム変更を行うための方法に関する具体的な実施形態に関してのフローチャートである。
【図６】リレーショナル持続性レイヤと関連付けられているオブジェクトリレーショナルマッピング挙動についての動的ランタイム変更を行うための方法に関する別の具体的な実施形態に関してのフローチャートである。
【図７】図７Ａは、インジェクトされた条件的マッピング挙動のための条件が不成立の場合に適用される標準的なフィールドマッパーの例を示す図である。図７Ｂは、特定の条件が成立した場合に適用されるインジェクトされた条件的マッピング挙動の例を示す図である。
【発明を実施するための形態】
【００５７】
図１は、リレーショナル持続性レイヤの一部としてＲＤＢＭＳ１１０を含む機能的ブロック図である。複数の静的なフィールドマッパー１２１，１２２，１２３，１２４，１２９が描かれており、これらがＲＤＢＭＳ１１０とオブジェクト指向モデル１５０との間の媒介として機能するのであり、該オブジェクト指向モデルはオブジェクト指向アプリケーション及び／又は関連付けられたプログラミング言語によって使用される（同じ参照符号をもって示す）。図示の実施形態では、ＯＲＭ１２０は、ＲＤＢＭＳ１１０の様々なエンティティフィールドを複数のフィールドマッパー１２１−１２９の各々を介してマッピングすることができる。フィールドマッパーは任意の個数存在できるが、簡潔性のため５つだけ図示してある。各フィールドマッパーは、エンティティフィールドを特定の態様でオブジェクト指向ドメインモデルへとマッピングするようにプログラムされていることができる。様々な実施形態ではフィールドマッピングは自在に変更されることができるが、ランタイムにおいては変更できなくして再初期化をもって変更するものとすることもできる。
【００５８】
上述のように、ＲＤＢＭＳ１１０は、論理構造又はスキーマに従って行及びカラム（フィールド）を有するテーブル内にデータを格納することができる。ＯＲＭ１２０は、オブジェクト指向アプリケーション１５０によって透過的にアクセス可能な、リレーショナル持続性レイヤについての仮想オブジェクト指向データベースを生成することができる。したがって、ＯＯＰＬを用いてプログラミングするプログラマーは、あたかもデータベースがオブジェクト指向データベースであるかのうようにデータベースと対話することができるのであり、また、ＯＯＰＬを用いてリレーショナルデータベースと対話することの複雑さを無視することができる。オブジェクト指向アプリケーションがリレーショナルデータベースを下層にある持続性レイヤの一部として透過的に使用して持続性データを格納することを、ＯＲＭは可能とする。
【００５９】
機能的ブロック図は、データフローに関する描写を含む。矢印１１２は、データを検索し、及び、エンティティフィールドをオブジェクト指向ドメインモデル１５０へとマッピングするＯＲＭ１２０を示す。矢印１１５は、反転させたマッピングを行ってデータをＲＤＢＭＳ１１０内に持続させる処理を行うＯＲＭ１２０を示す。矢印１３２，１３５は、ＯＲＭ１２０と対話するオブジェクト指向ドメインモデル１５０を示す。
【００６０】
図２は、オリジナルマッピング挙動２２１と関連付けられており一時的又は条件的なマッピング挙動２２５をインジェクトする動的調整戦略ラッパー２７０を有するＯＲＭ２２０を含む機能的ブロック図である。図１で説明した実施形態と似ており、ＯＲＭ２２０は、様々なエンティティフィールドに関して、リレーショナル持続性レイヤ（ＲＤＢＭＳ２１０）から選択されたオブジェクト指向ドメインモデル２５０への汎用的なマッピング又はセミカスタムなマッピングを提供することができる。 
【００６１】
通常は、フィールドマッパー２２２，２２３，２２９は、一旦初期化されてマッピングされると変わらないという点で、静的なものであるとみなされる。ただ、一旦初期化されると、オブジェクト指向アプリケーション２５０が実在しないエンティティフィールド内のデータにアクセス（ロード又は保持）しようと試みたり又は正しくないデータタイプを用いてデータにアクセスしようと試みたりすると、ＯＲＭ２２０はエラーを発生させることができる。
【００６２】
様々な実施形態では、ＯＲＭ２２０は、初期化前において１以上のフィールドマッパー２２２，２２３，２２９についての調整を許容することができる。即ち、システムを停止して、また、１以上のフィールドマッパーのマッピング挙動をシステム初期化に先立って変更乃至調整することができる。システムが初期化されたらば、フィールドマッパー２２２，２２３，２２９は変更乃至調整されたマッピング挙動を実施することができる。もっとも、このような初期化前の調整は、リアルタイムで又はランタイム中に行われることはできない。 
【００６３】
様々な実施形態では、システムは、リレーショナル持続性レイヤ２１０と関連付けられたＯＲＭ２２０の挙動についてのリアルタイムでの動的調整を可能とするのであり（例えば、再度初期化又はシャットダウンを必要としないランタイム変更／調整）、これには何ら性能に対しての重大な影響は伴わない。持続性挙動を動的に調整する機能により、仮に下層の持続性メカニズム（即ち、持続性レイヤ２１０）が、恣意的に変化しつつあっても、「アウトオブシンク」状態にあっても、及び／又は、マイグレーション中であっても、アプリケーションシステムが安定的なままでいることが可能となる。
【００６４】
様々な実施形態では、オブジェクト指向アプリケーション２５０は、例えばＲＤＢＭＳ２１０等のリレーショナル持続性レイヤ内に格納されたデータにアクセス（例えば、記憶、読み出し、書き込み、変更、保持等）する必要があるかもしれない。オブジェクト指向アプリケーション２５０は、ＯＲＭ２２０を介してリレーショナル持続性レイヤと相互作用することができる（矢印２１２，２１５，２３５を一般的に参照されたい）。ＯＲＭ２２０は様々なフィールドマッパー２２２，２２３，２２９を含み得るのであり、各々は、リレーショナル持続性レイヤ（ＲＤＢＭＳ２１０）からｊａｖａやＣ＋＋等によって使用されるオブジェクト指向モデル等のオブジェクト指向ドメインモデル２５０へとエンティティフィールドをマッピングするためのオリジナルマッピング戦略を含むことができる。
【００６５】
フィールドマッパーの動的ランタイム変更をもたらすために、１以上のフィールドマッパー（例えば、オリジナルマッピング戦略２２１と関連付けられたフィールドマッパー）を動的調整戦略ラッパー２７０内にラップすることができ、該ラッパーは、オリジナルマッピング戦略（original mapping strategy）２２１とは異なるインジェクトされた一時的又は条件的なマッピング挙動２２５で、エンティティフィールドをマッピングするためのオリジナルマッピング挙動（original mapping behavior）２２１をラップする。代替的に及び／又は追加的には、完全に新たなフィールドマッピングが作成されるという意味でフィールドマッパーを「インジェクト」することができる。即ち、同様の原理を用いて完全に新たなフィールドマッピングをインジェクトすることができる。似たようにして、インジェクトされた条件的（又は恒久的な）フィールドマッピングを受信することを予期して、機能していないフィールドマッピングを意図的に初期化することができる。
【００６６】
インジェクトされた一時的又は条件的なマッピング挙動２２５は、再初期化を必要とせずにランタイムにおいて変更及び／又は調整されることができる。したがって、一時的又は条件的なマッピング挙動２２５はＯＲＭ２２０にリアルタイムでインジェクトされることができ、及び／又は、マッピング挙動２２５をリアルタイムで変更することができる（例えば、新たなインジェクション）。
【００６７】
動的に変更可能でありつつも比較的静的なＯＲＭ２２０は、確立されたマッピング２２２，２２３，２２９に関しては高い性能を維持することができ、また、ＯＲＭ２２０と持続性実装機構（即ち、持続性レイヤ及びＲＤＢＭＳ２１０）との間の何らかの不整合に関して和解をもたらす動的な調整を可能とする。
【００６８】
オリジナルマッピング挙動２２１と関連付けられているフィールドマッパーを戦略ラッパー２７０内にラップして動的マッピング挙動２２５をランタイム中にインジェクト可能とすることによって、一時的又は条件的なマッピング挙動２２５を１以上のフィールドマッパー内へとランタイムにおいてインジェクトすることによってオブジェクトリレーショナルマッピングを動的に調整することができる。図中においては、戦略ラッパー２７０と示された箱の中にオリジナルマッピング挙動２２１が示されているが、実際の実装においてはそのような階層的序列は課されることも課されないこともできる。例えば、変更されたマッピング挙動のランタイムインジェクションを許容する動的マッピング戦略をもって選択されたフィールドマッパーを初期化することができる。図中における階層的序列は、機能的ブロック図中の制約によるものに過ぎない。
【００６９】
動的にインジェクトすることができるマッピング挙動２２５は、次のようなシステムにおいて特に有用たり得る：即ち、中断されないシステム可用性を維持しつつ、アプリケーションソフトウェア２５０と持続性レイヤ２１０とが重複するアプリケーションをサポートしたりデータマイグレーションをサポートしたりする必要があるようなシステム。大規模な分散システム又は迅速に繰り返して更新されるソフトウェアデプロイメントが関係する場合に、このような要請が比較的によく見られる。
【００７０】
一部の実施形態では、インジェクトされたマッピング挙動２２５は条件的なマッピング挙動であることができる。このような実施形態では、特定の条件が成立しない限り、フィールドマッパー２２１のオリジナルマッピング戦略を実施することができる。例えば、一部の実施形態では、既定のイベントが発生した又は発生中の場合に、条件的なマッピング挙動（例えば、インジェクトされたフィールドマッパー２２５）がオリジナルマッピング戦略２２１をオーバーライドすることができる。
【００７１】
インジェクトされた条件的なマッピング挙動をトリガし得るイベントには、例えば、リレーショナル持続性レイヤ２１０のマイグレーションやオブジェクト指向アプリケーション２５０とリレーショナル持続性レイヤ２１０との間のデータタイプ不整合等が含まれ得る。様々な実施形態では、イベントは、アプリケーション２５０がリレーショナル持続性レイヤへの有効ではないアクセスを要求したとの判定を含むことができる（例えば、指定されたカラムがリレーショナルデータベース２１０には存在していない場合）。そのような実施形態においては、インジェクトされた一時的又は条件的なマッピング挙動２２５は、何らのデータが実際にＲＤＢＭＳ２１０内に保持されていないにもかかわらず、選択されたフィールドマッパーが代理値を返すようにしむけることができる（戦略ラッパー２７０がオリジナルフィールドマッパーの機能性２２１とインジェクトされたマッピング挙動２２５とを含む）。したがって、実効的には、ラップされたフィールドマッパー２７０が、実在しないエンティティフィールドをリレーショナル持続性レイヤ２１０からオブジェクト指向ドメインモデル２５０へと代理値を用いてマッピングすることができる。他の実施形態では、一時的又は条件的なマッピング挙動をラップ及びインジェクトするという概念は、完全に新たなフィールドマッピングを作成することとして理解することができる。即ち、一時的又は条件的なマッピング挙動を「インジェクト」することは、休眠／機能不全となったオリジナルフィールドマッパー機能性を含むか含まない新たなフィールドマッパーを作成することを含むことができる。
【００７２】
矢印２３０は、条件的又は一時的なマッピング挙動２２５を伴うフィールドマッパー２２１の条件的な挙動を示す。特定の条件の成立及び／又は一時的要件の成立に応じて、インジェクトされたマッピング挙動２３３が用いられるか（２３３）、又は、オリジナルマッピング挙動２２１が用いられる（２３４）。一部の実施形態では、インジェクトされたマッピング挙動が、オリジナルマッピング挙動に取って代わることができる（例えば、置き換える及び／又は削除する）。一部の実施形態では、既存の又は十全から存在するフィールドマッパーとは独立して戦略ラッパーを初期化して、動的なかつランタイムに関わる条件的な又は一時的なマッピング挙動を、オンデマンドでインジェクトすることを許容することができる。
【００７３】
図３は、動的調整戦略（「戦略ラッパー」３３０，３４０，３５０，３６０，３７０，３８０，３９０として図示）をもって設定された様々なフィールドマッパーを伴うＯＲＭ３２０の機能的ブロック図である。動的調整戦略を有する各フィールドマッパーは、オリジナルフィールドマッパー３３２，３４２，３５２，３６２，３７２，３８２，３９２（即ち、無調整なそれ）の機能性（即ち、マッピング挙動）、並びに、対応するフィールドマッパーのオリジナルフィールドマッピング挙動とは異なるインジェクト可能な又は既にインジェクトされた調整済みマッピング挙動３３１，３４１，３５１，３６１，３７１，３８１，３９１、を含むことができる。追加の無調整フィールドマッパー３９５，３９６，３９７，３９９等々は、中断又は変更を伴わずにしてエンティティフィールドをオブジェクト指向ドメインモデルへとマッピングし続けるように構成されていることができる。ＯＲＭ３２０内には、任意の個数の無調整フィールドマッパーが存在することができる。上述のように、動的調整戦略を実施する１以上のフィールドマッパーは、上述したAdjustToAlwaysLoadSpecificValue、OnlyAdjustIfColumnDoesNotExist、AdjustFieldBasedOnContext、CheckForCorruptData、及び／又はCheckUserPermissions等の１以上の既調整マッピング挙動一時的又は条件的に実施するように構成されていることができる。
【００７４】
図４は、リレーショナル持続性レイヤと関連付けられているオブジェクトリレーショナルマッピング挙動についての動的ランタイム変更を行うための方法４００に関する１つの実施形態に関してのフローチャートを提供する。図示されているように、データは、ＲＤＢＭＳ等のリレーショナル持続性レイヤからアクセスされることができる（４０５）。ＯＲＭは、データをリレーショナル持続性レイヤからオブジェクト指向ドメインモデルへとマッピングすることができ（４１０）、該ドメインモデルは、Ｊａｖａ、Ｃ＋＋又は別のＯＯＰＬを少なくとも部分的に用いて記述されたアプリケーションによって使用されるドメインモデルである。
【００７５】
選択されたフィールドマッパー（又は複数のフィールドマッパー）を、動的調整戦略をもって構成して（４２０）、一時的又は条件的なマッピング挙動を選択されたフィールドマッパーにランタイムにおいてインジェクトすることを可能とすることができる。例えば、変更されていないフィールドマッパーの機能性は、ランタイム（４３０）においてインジェクト／変更されることができる動的にインジェクト可能なマッピング挙動と共に、「ラップ」されることができる。一部の実施形態では、フィールドマッパーのオリジナルマッピング挙動が実施されている間は、インジェクトされたマッピング挙動は休眠していることができる。検出されたイベント、充足された条件、テンポラルなイベント及び／又は他のトリガ乃至「フック」に基づいて、動的調整戦略とインジェクトされたマッピング挙動において定義されたようにデータをマッピングするために動的にインジェクトされたマッピング挙動を使用することができる。
【００７６】
図５は、リレーショナル持続性レイヤと関連付けられているオブジェクトリレーショナルマッピング挙動についての動的ランタイム変更を行うための方法５００に関する具体的な実施形態に関してのフローチャートを提供する。他の実施形態でもそうであるように、リレーショナルデータベースに格納されたデータへのアクセスをリレーショナル持続性レイヤが提供する（５０５）。ＯＲＭは、データをリレーショナル持続性レイヤからオブジェクト指向ドメインモデルへとマッピングすることができる（５１０）。例えば、一部の実施形態では、ランタイムにおいて使用するために仮想的なオブジェクト指向データベースを生成することができ、データを逆マッピングして保持のためリレーショナルデータベースに返すことができる。１以上のフィールドマッパーを、動的調整戦略をもって構成して条件的なマッピング挙動のインジェクションを可能とすることができる（５１５）。
【００７７】
様々な変更済みマッピング挙動スキーマに関してのランタイムインジェクションを可能とする動的調整戦略を用いて、フィールドマッパーは初期化されることができる。初期化後であってランタイム中であってリレーショナルデータベースへのアクセスを中断せずに、動的調整戦略を有する選択されたフィールドマッパーに条件的なマッピング挙動をインジェクトすることができる（５２０）。５３０にて条件的なイベントが成立していない場合、選択されたフィールドマッパーのオリジナルかつ無変更であるマッピング戦略／スキーマを用いて選択されたフィールドマッパーによってデータをマッピングすることができる（５４０）。しかし、５３０にて条件的なマッピング挙動の条件的なイベントが成立した場合、動的調整戦略によって許容される条件的なマッピング挙動に従って選択されたフィールドマッパーによってデータをマッピングすることができる（５５０）。
【００７８】
図６は、リレーショナル持続性レイヤと関連付けられているオブジェクトリレーショナルマッピング挙動についての動的ランタイム変更を行うための方法６００に関する別の具体的な実施形態に関してのフローチャートを提供する。他の実施形態でもそうであるように、リレーショナルデータベースに格納されたデータへのアクセスをリレーショナル持続性レイヤが提供することができる（６０５）。ＯＲＭは、データをリレーショナル持続性レイヤからオブジェクト指向ドメインモデルへとマッピングすることができる（６１０）。例えば、一部の実施形態では、ランタイムにおいて使用するために仮想的なオブジェクト指向データベースを生成することができ、データを逆マッピングして保持のためリレーショナルデータベースに返すことができる。１以上のフィールドマッパーを、動的調整戦略をもって構成して一時的又は条件的なマッピング挙動のインジェクションを可能とすることができる（６１５）。
【００７９】
ここでも、様々な変更済みマッピング挙動スキーマに関してのランタイムインジェクションを可能とする動的調整戦略を用いて、フィールドマッパーは初期化されることができる。初期化後であってランタイム中であってリレーショナルデータベースへのアクセスを中断せずに、動的調整戦略を有する選択されたフィールドマッパーにテンポラルベースドなマッピング挙動をインジェクトすることができる（６２０）。例えば、テンポラルベースドなマッピング挙動は、選択されたフィールドマッパーのマッピング挙動を、インジェクションの時刻から後の時刻へと、又は時刻Ｔ１から時刻Ｔ２へと、変更することができる。時刻Ｔ１及びＴ２は、絶対的に規定されるか（例えば、午後１：００から午後３：３０）、又はイベントに基づいて規定されることができる。例えば、時刻Ｔ１は持続性レイヤのマイグレーションが開始されたことを告げる通知に基づくことができ、時刻Ｔ２は持続性レイヤのマイグレーションが完了されたことを告げる通知に基づくことができる。
【００８０】
６３０にてテンポラルな条件が成立している場合、選択されたフィールドマッパーのオリジナルかつ無変更であるマッピング戦略／スキーマを用いて選択されたフィールドマッパーによってデータをマッピングすることができる（６４０）。しかし、６３０にてテンポラルなマッピング挙動のテンポラルなイベントが成立している場合、動的調整戦略によって許容されるテンポラルベースドな（即ち、一時的な）マッピング挙動に従って選択されたフィールドマッパーによってデータをマッピングすることができる（６３５）。
【００８１】
図７Ａは、インジェクトされた条件的マッピング挙動のための条件が不成立の場合に適用される標準的なフィールドマッパーの例を示す。図示の実施形態では、SponserProductのフィールドたる「metalName」は、戦略たるOnlyAdjustIfColumnDoesNotExistを用いて調整される。動的調整戦略は、フィールドたるSponser_product_CFG.METAL_NMが正しく機能しているか及び／又は利用可能であるかについて、定期的に又はプロンプトに応じて又は連続的に、確認することができる。それが利用可能である場合、OnlyAdjustIfColumnDoesNotExist型戦略は、オリジナルの無調整マッピング挙動を邪魔せずに続行させる。しかし、フィールドが無い又は利用不能であると識別された場合、動的にインジェクトされた戦略が関連付けられたフィールドマッパーのマッピング挙動を修正乃至他の態様で変更する。
【００８２】
図７Ｂは、特定の条件が成立した場合に実施されるインジェクトされた条件的マッピング挙動の例を示す。図示の実施形態では、AdjustToAlwaysLoadSpecificValue型の戦略をインジェクトしてオリジナルマッピング関数をオーバーライドして、実際にリレーショナルデータベースに保持されているデータの代わりに特定の値をフィールドマッパーに返させる。次の事項は、システムスタートアップ時に初期化される及び／又はランタイム中に動的にインジェクトされる動的調整戦略によって指定されることができる：具体的な値、オーバーライドマッピング挙動の時的な持続期間（temporal duration）、及び／又は、マッピング挙動の他の仕様（例えば、データタイプ等）。図示の実施形態では、load to filed値は「http://some.domain.com」に設定され、また、エンティティセーブ記録は［フィールドを無視］に設定される。
【００８３】
上述のように、本願の様々な実施形態は、リレーショナル持続性レイヤと、ＯＯＰＬに使わせるためにそのようなデータベースについてマッピングを行うためのＯＲＭと、の関連で提示されているが、同様の原理は次の場面にも適用することができる：第１の組織スキーマを用いる任意の持続性レイヤ（例えば、リレーショナルデータベース又はＲＤＦデータベース）と、組織スキーママッパー（例えば、ＯＲＭ、ＲＤＦ−ｔｏ−ｒｅｌａｔｉｏｎａｌマッパー、ＲＤＦ−ｔｏ−ｏｂｊｅｃｔ−ｏｒｉｅｎｔｅｄマッパー等）と、下層の持続性レイヤとは異なる組織スキーマを用いるドメインモデルと、を伴う場面。
【００８４】
これを実装する方法及びシステムは、第１のタイプのデータ組織スキーマを用いる持続性レイヤ内に格納されたデータにアクセスするように構成されていることができる。データは、持続性レイヤからドメインモデルへとマッピングされることができ、該ドメインモデルは第２のタイプのデータ組織スキーマを用いる。このようなマッピングは、組織スキーママッパー（ＯＳＭ、organizational schema mapper）を介してなされることができる。ＯＳＭは、フィールドを持続性レイヤからドメインモデルへとマッピングするオリジナルマッピング挙動をもって構成されている１以上のマッパーを、含むことができる。
【００８５】
ＯＳＭの選択されたマッパーは、動的調整戦略をもって構成されていることができ、該動的調整戦略は、一時的又は条件的なマッピング挙動を選択されたマッパーにランタイムにおいてインジェクトすることを可能とするように構成されている。インジェクトされた一時的又は条件的なマッピング挙動は、選択されたマッパーのオリジナルマッピング戦略とは異なるものであることができる。動的調整戦略によって定義された一時的又は条件的なマッピング挙動に従う選択されたマッパーを介して、データがマッピングされることができる。
【００８６】
本願においては様々な側面及び実施形態を開示したが、当業者であれば他の側面及び実施形態も想起できるであろう。本願にて開示した様々な側面及び実施形態は例示的な目的で提示されており、限定的となることは意図されていない。
【図１】
2017532620.tif 000004
【図２】
2017532620.tif 000005
【図３】
2017532620.tif 000006
【図４】
2017532620.tif 000007
【図５】
2017532620.tif 000008
【図６】
2017532620.tif 000009
【図７】
2017532620.tif 000010
【国際調査報告】
2017532620.tif 000011
2017532620.tif 000012