JP7472155B2 - 再帰的データトラバースモデル - Google Patents

再帰的データトラバースモデル Download PDF

Info

Publication number
JP7472155B2
JP7472155B2 JP2021547487A JP2021547487A JP7472155B2 JP 7472155 B2 JP7472155 B2 JP 7472155B2 JP 2021547487 A JP2021547487 A JP 2021547487A JP 2021547487 A JP2021547487 A JP 2021547487A JP 7472155 B2 JP7472155 B2 JP 7472155B2
Authority
JP
Japan
Prior art keywords
object type
records
data
client application
subset
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.)
Active
Application number
JP2021547487A
Other languages
English (en)
Other versions
JPWO2020171914A5 (ja
JP2022521070A (ja
Inventor
バラスブラマニアン,カーティク
ヒュームズ,ドナルド・クレイグ
タデパリ,シュリダール
シャー,ラジェシュ・アシュウィンバイ
Original Assignee
オラクル・インターナショナル・コーポレイション
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 オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2022521070A publication Critical patent/JP2022521070A/ja
Publication of JPWO2020171914A5 publication Critical patent/JPWO2020171914A5/ja
Application granted granted Critical
Publication of JP7472155B2 publication Critical patent/JP7472155B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • G06F16/24566Recursive queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2372Updates performed during offline database operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

技術分野
本開示は、再帰的データトラバースモデル(recursive data traversal model)に関する。特に、本開示は、データ取得関係を実現する再帰的データトラバースモデルに関する。
背景
クライアントデバイスは、バックエンドサーバから更新を受信し得るかまたはバックエンドサーバに更新を提出し得る。クライアントデバイスが受信または提出した更新はデータの更新を含む。
クライアントデバイスは、オンラインモードおよびオフラインモードで動作させてもよい。オンラインモードは、クライアントデバイスがネットワークを介してバックエンドサーバと通信し得るモードである。オフラインモードは、クライアントデバイスがネットワークを介してバックエンドサーバと通信することができないモードである。オンラインモードでの動作時、クライアントデバイスは、バックエンドサーバから更新を受信し得るとともに、バックエンドサーバに更新を提出し得る。オフラインモードでの動作時、クライアントデバイスは、バックエンドサーバから更新を受信すること、またはバックエンドサーバに更新を提出することができない。
本項に記載されるアプローチは、追求され得たアプローチであるが、必ずしもこれまでに想到または追求されたアプローチであるとは限らない。したがって、別段の指示がない限り、本項に記載されるアプローチのいずれも、単に本項に含まれるというだけで、先行技術として適格であると想定されるべきではない。
実施形態は、例として示されているものであって、添付の図面の図において限定することを目的としたものではない。本開示において「ある」または「1つの」実施形態と言及する場合は、それは必ずしも同じ実施形態を言及するものではなく、少なくとも1つを意味するものであることに留意されたい。
1つ以上の実施形態に従った、ネットワーク上で動作するクライアント・サーバコンピューティングシステムを示すブロック図である。 1つ以上の実施形態に従ったデータ制御モデルのコンポーネントを示すブロック図である。 1つ以上の実施形態に従った、オブジェクトタイプ定義を更新するための動作のセット例を示すブロック図である。 1つ以上の実施形態に従った、オブジェクトタイプ定義を更新するための動作のセット例を示すブロック図である。 1つ以上の実施形態に従った、エンティティと、関係するエンティティとの間の関係を示す構成グラフを示すブロック図である。 1つ以上の実施形態に従った、構成グラフにおけるエンティティのコンポーネントを示すブロック図である。 1つ以上の実施形態に従った、構成グラフにおける関係するエンティティのコンポーネントを示すブロック図である。 1つ以上の実施形態に従った、データキャッシュを更新するための動作のセット例を示すブロック図である。 1つ以上の実施形態に従ったコンピュータシステムを示すブロック図である。
詳細な説明
以下の記載では、説明を目的として、完全な理解をもたらすために多数の具体的な詳細が記載される。これらの具体的な詳細なしでも1つ以上の実施形態が実施され得る。一実施形態において説明される特徴は、別の実施形態において説明される特徴と組合わされてもよい。いくつかの例では、本発明を不必要に曖昧にすることを避けるために、周知の構造および装置をブロック図の形態を参照しつつ説明する。
1.全体概要
1つ以上の実施形態は、構成グラフを翻訳して、要求を効率的かつ最適に構築し、データストアからデータをフェッチする。要求されたデータタイプのオブジェクトの値は、データストアからデータをプリフェッチするための追加の問合せを生成するために用いられる。具体的には、これらの値は、別の関係するデータタイプのオブジェクトの対応するサブセットに関して問合わせして当該サブセットを取得するために用いられる。既に取得されたオブジェクトに基づいて関係するデータタイプのオブジェクトに関して再帰的に問合わせして当該オブジェクトを取得することにより、関連するオブジェクトのデータキャッシュを構築する。キャッシュされた関連するオブジェクトは、最初の問合せの後になされる可能性のある後続の問合せにおいて有用であり得る。
この全体概要の項において記載される実施形態以外のいくつかの実施形態が本明細書に含まれ得るとともに、添付の特許請求の範囲において記載され得る。
2.アーキテクチャの概要
図1は、1つ以上の実施形態に従った、ネットワーク120上で動作するクライアント・サーバコンピューティングシステム100を例示するブロック図を示す。クライアント・サーバコンピューティングシステム100は、ネットワーク120を介して通信可能に結合されたサーバ110およびクライアントデバイス130を含み得る。サーバ110およびクライアントデバイス130の各々は、コンピューティングプロセッサならびに関連付けられたメモリおよび通信回路類を含み得る。
ネットワーク120は、ローカルエリアネットワーク(local area network:LAN)、ワイドエリアネットワーク(wide area network:WAN)、イーサネット(登録商標)ネットワーク、トークンリングネットワーク、非同期転送モード(asynchronous transfer mode:ATM)ネットワーク、Wi-Fiネットワーク、インターネット、携帯電話ネットワーク、GSM(登録商標)エボリューションのための拡張データレート(Enhanced Data rates for GSM Evolution:EDGE)ネットワーク、ロングタームエボリューション(long-term evolution:LTE)ネットワーク、WiMAX(Worldwide Interoperability for Microwave Access)ネットワーク、または他のコンピューティング通信ネットワークを含み得る。サーバ110は、ネットワーク120を介してクライアントデバイス130によってアクセス可能なデータを格納するデータストア115を含み得る。クライアントデバイス130は、データストア115からデータを受信するかまたはデータストア115に格納されたデータにアクセスするクライアントアプリケーション135(たとえば、ソフトウェアアプリケーション)を含み得る。
ある実施形態では、クライアントデバイス130は、1つ以上のデジタルデバイス上に実装される。「デジタルデバイス」という語は、一般に、プロセッサを含む任意のハードウェアデバイスを指す。デジタルデバイスは、アプリケーションを実行する物理デバイスまたは仮想マシンを指すこともある。デジタルデバイスの例として、コンピュータ、タブレット、ラップトップ、デスクトップ、ネットブック、サーバ、ウェブサーバ、ネットワークポリシーサーバ、プロキシサーバ、汎用マシン、特定機能のハードウェアデバイス、ハードウェアルータ、ハードウェアスイッチ、ハードウェアファイアウォール、ハードウェアネットワークアドレストランスレータ(network address translator:NAT)、ハードウェアロードバランサ、メインフレーム、テレビ、コンテンツ受信機、セットトップボックス、プリンタ、モバイルハンドセット、スマートフォン、携帯情報端末(personal digital assistant:PDA)、無線受信機および/または送信機、基地局、通信管理装置、ルータ、スイッチ、コントローラ、アクセスポイント、およびクライアントデバイスを含む。
1つ以上の実施形態では、データストア115は、データを格納するための任意のタイプの格納ユニットおよび/またはデバイス(たとえば、ファイルシステム、データベース、テーブルの集合、または他の任意の格納メカニズム)である。さらに、データストア115は、複数のさまざまな格納ユニットおよび/またはデバイスを含み得る。複数のさまざまな格納ユニットおよび/またはデバイスは、同じタイプであってもなくてもよく、または、同じ物理サイトに配置されてもされなくてもよい。代替的には、または付加的には、データストア115は、サーバ110とは別個のコンピューティングシステム上で実装または実行され得る。データストア115は、直接接続によって、またはネットワーク120を介して、サーバ110またはクライアントデバイス130に通信可能に結合され得る。
クライアントアプリケーション135は、ハイパーテキスト転送プロトコル(hypertext transfer protocol:HTTP)ユニフォームリソース識別子(uniform resource identifier:URI)のセット、たとえば、HTTP要求とともに用いられるユニフォームリソースロケータ(uniform resource locator:URL)を用いて、データストア115に格納されたデータオブジェクトにアクセスし得る。HTTPは、クライアントアプリケーション135とデータストア115との間のデータの転送および管理を容易にするために、クライアントデバイス130とサーバ110との間の要求・応答プロトコルとして用いられてもよい。
サーバ110は、クライアントアプリケーション135から受信したREST要求を提供するためのレプリゼンテーショナルステートトランスファ(representational state transfer:REST)サービスを提供し得る。REST要求は、ステートレスなHTTP要求の一種であり、クライアントデバイス130によってサーバ110に送信されてもよい。REST要求はHTTP要求のサブセットである。REST要求は、予め定義された一様なステートレス動作のセットを用いてもよい。REST要求が用いられるとき、状態は要求ごとに維持されなくてもよい。サーバ110は、サーバ110の記述をRESTサーバとして、明確に定義されたURLを通じてクライアントアプリケーション135に提供し得る。サーバ110は、この明確に定義されたURLを通じて、クライアントアプリケーション135が効率的にデータストア115からデータを取得するとともにデータストア115にデータをアップロードするためのメカニズムを提供し得る。
1つ以上の実施形態では、ユーザインターフェイスは、ユーザとクライアントデバイス130との間の通信を容易にするように構成されたハードウェアおよび/またはソフトウェアを指す。ユーザインターフェイスは、ユーザインターフェイス要素をレンダリングし、ユーザインターフェイス要素を介して入力を受信する。インターフェイスの例は、グラフィカルユーザインターフェイス(graphical user interface:GUI)、コマンドラインインターフェイス(command line interface:CLI)、触覚型インターフェイス、および音声コマンドインターフェイスを含む。ユーザインターフェイス要素の例として、チェックボックス、ラジオボタン、ドロップダウンリスト、リストボックス、ボタン、トグル、テキストフィールド、日付および時間セレクタ、コマンドライン、スライダ、ページ、およびフォームを含む。
ある実施形態では、ユーザインターフェイスのさまざまなコンポーネントはさまざまな言語で指定される。ユーザインターフェイス要素の挙動は、JavaScript(登録商標)などの動的なプログラミング言語で指定される。ユーザインターフェイス要素の内容は、ハイパーテキストマークアップ言語(hypertext markup language:HTML)またはXMLユーザインターフェイス言語(XML User Interface Language:XUL)などのマークアップ言語で指定される。ユーザインターフェイス要素のレイアウトは、カスケード・スタイルシート(Cascading Style Sheets:CSS)などのスタイルシート言語で指定されている。代替的には、ユーザインターフェイスは、Java(登録商標)、CまたはC++などの1つ以上の他の言語で指定される。
1つ以上の実施形態では、クライアント・サーバコンピューティングシステム100は、図1に示されるコンポーネントよりも多くのコンポーネントまたは少ないコンポーネントを含んでいてもよい。図1に示すコンポーネントは、互いに対してローカルまたはリモートであってもよい。図1に示されるコンポーネントは、ソフトウェアおよび/またはハードウェアに実装され得る。各コンポーネントは、複数のアプリケーションおよび/またはマシンにわたって分散され得る。複数のコンポーネントを1つのアプリケーションおよび/またはマシンに組合わせてもよい。1つのコンポーネントに関して説明される動作が、代わりに別のコンポーネントによって実行されてもよい。
コンピュータネットワークに関係するさらなる実施形態および/または例を、以下の「コンピュータネットワークおよびクラウドネットワーク」と題される項目5に記載する。
3.適応型多形データモデル
図2は、1つ以上の実施形態に従ったデータ制御モデル200のコンポーネントを例示するブロック図を示す。データ制御モデル200は、適応型多形データモデルの一実施形態であり得る。データ制御モデル200は、クライアントアプリケーション135が用いるデータベーススキーマを記述し得る。サーバ110は、データ制御モデル200の要素をデータストア115からクライアントアプリケーション135に提供し得る。クライアントアプリケーション135の機能性および/または特徴は、データ制御モデル200の機能として制御され得る。このため、クライアントアプリケーション135は、データ制御モデル200のさまざまな要素を備える場合、さまざまな機能性を提供し得る。データ制御モデル200の更新を用いることで、クライアントアプリケーション135の実行可能コードを更新することなく、クライアントアプリケーション135の機能性を更新し得る。したがって、データ制御モデル200の新しい要素をサーバ110から既存のクライアントアプリケーション135に送信することにより、既存のクライアントアプリケーション135に新しい機能性が追加され得る。
一例では、単一のクライアントアプリケーション135を、ネットワーク上の中央アプリケーションダウンロードポータルを介してソフトウェアプロバイダの任意の顧客のために利用可能にしてもよい。ソフトウェアプロバイダの各顧客は、顧客のそれぞれのクライアントアプリケーション135について、他の顧客とは異なる機能性を所望する可能性もある。ソフトウェアプロバイダは、異なる実行可能クライアントアプリケーション135をそれぞれ異なる顧客に提供するのではなく、すべての顧客に同じ実行可能クライアントアプリケーション135を提供し得る。ソフトウェアプロバイダはまた、各顧客のそれぞれのサーバ110から各顧客のそれぞれのクライアントアプリケーション135にダウンロードされるように、顧客ごとに異なるデータ制御モデル200を提供してもよい。
たとえば、A社は、A社によってA社の従業員に発行されるクライアントデバイス130のセットを介してA社の従業員のみがアクセスできるサーバ110の専用インスタンスを有していてもよい。A社の従業員が用いるすべてのクライアントデバイス130は、公に利用可能なアプリケーションポータルからクライアントアプリケーション135をダウンロードし得る。加えて、B社は、B社の従業員のみがアクセスできるサーバ110の専用インスタンスを有していてもよい。B社の従業員は、B社によってB社の従業員に発行されるクライアントデバイス130のセットを介してサーバ110にアクセスし得る。B社の従業員が用いるすべてのクライアントデバイス130は、A社の従業員と同じ公に利用可能なアプリケーションポータルからクライアントアプリケーション135をダウンロードし得る。サーバ110のA社のインスタンスは、A社のためにカスタマイズされたデータ制御モデル200をA社のクライアントデバイス130上のクライアントアプリケーション135にダウンロードし得る。サーバ110のB社のインスタンスは、B社のためにカスタマイズされたデータ制御モデル200を、B社のクライアントデバイス130上のクライアントアプリケーション135にダウンロードし得る。結果として、公に利用可能なアプリケーションポータルからダウンロードされた実行可能なクライアントアプリケーション135が、A社のすべてのクライアントデバイス130およびB社のすべてのクライアントデバイス130に対して同じであったとしても、A社の社員用のクライアントアプリケーション135は、B社の社員用のクライアントアプリケーション135とは異なる機能性を提供し得る。
データ制御モデル200は、1つ以上のオブジェクトタイプ定義230を含み得る。各オブジェクトタイプ定義230はオブジェクトタイプを定義し得る。オブジェクトタイプ定義230は、オブジェクトタイプの属性を指定し得る。属性の例は、販売注文、配達日、数量、収益等を含み得る。オブジェクトタイプ定義230はまた、属性のデータフォーマット、たとえば、テキストストリング、テキストストリングの長さ、文字、整数、符号付き整数、符号なし整数、浮動小数点、倍精度浮動小数点、文字または整数配列、配列次元なども指定し得る。オブジェクトタイプ定義230はまた、オブジェクトタイプの属性ごとにデフォルト値を指定し得る。オブジェクトタイプ定義230はまた、定義されたオブジェクトタイプの各ビューに含めるのにどのフィールドが必須であるかと、定義されたオブジェクトタイプの全標準ビューに含めるのにどのフィールドが必須であるかとを指定し得る。たとえば、配達日は、販売注文データオブジェクトタイプの必須フィールドであり得る。オブジェクトタイプ定義230はまた、どのフィールドがクライアントアプリケーション135によって変更され得るかと、どのフィールドが変更されなくてもよいかとを指定し得る。たとえば、収益は、クライアントアプリケーション135が変更できない販売注文データオブジェクトタイプについてのフィールドであってもよい。オブジェクトタイプ定義230はまた、オブジェクトタイプに関して、クライアントアプリケーション135がサーバ110と通信するために使用するべき機能を指定し得る。このような機能の例は、フェッチ、更新、削除などを含み得る。オブジェクトタイプ定義230において指定される機能は、それぞれのオブジェクトタイプ定義230によって定義されたオブジェクトに関してサーバ110と通信するためのURLを構築するためにクライアントアプリケーション135によって用いられるべき情報を含む。このような通信は、オブジェクトのデータフィールドの値をデータストア115に送信すること、および、データストア115においてオブジェクトのデータフィールドの値を更新することを含み得る。データストア115におけるオブジェクトのデータフィールドの値を更新するためのURLが指定され得る。
データ制御モデル200はまた、1つ以上のメタデータモジュール235を含み得る。メタデータモジュール235は、データファイルまたはデータオブジェクトとして具現化され得る。各メタデータモジュール235は、それぞれのオブジェクトタイプ定義230によって定義されるオブジェクトタイプのフィールドを識別し得る。たとえば、多数の異なるメタデータモジュール235は、それぞれのオブジェクトタイプ定義230によって定義される同じオブジェクトタイプのうち別のフィールドセットを識別し得る。同じオブジェクトに対応する別のメタデータモジュール235の各々は、異なるビューまたは形状のオブジェクトタイプを定義し得る。サーバ110は、オブジェクトタイプの完全な標準表現または全標準表現をデータストア115に格納し得る。クライアントアプリケーション135は、メタデータモジュール235に従って連係して機能するために、データストア115に格納されたオブジェクトタイプのフィールドの全セットのさまざまなサブセットをダウンロードし得る。データストア115から部分オブジェクトをダウンロードすることにより、ネットワーク120上での通信帯域幅の節約と、クライアントデバイス130におけるメモリ使用の節約とをもたらし得る。オブジェクトタイプのうちどの部分を動作させるべきであるかに関わらず、オブジェクトタイプを動作させるたびにオブジェクトタイプの全標準表現をダウンロードするという代替例は非効率であるかもしれない。
一例として、クライアントアプリケーション135は、データストア115からデータオブジェクトのリストをダウンロードするために、データオブジェクトタイプのフィールドの小さなサブセットを表わすメタデータモジュール235を用いてもよい。クライアントアプリケーション135は、クライアントデバイス130からサーバ110に送られたHTTP要求を用いて、クライアントアプリケーション135によって指定されたサーチパラメータに一致する所与のフィールドについてのフィールド値を有するデータストア115内のデータオブジェクトのリストにアクセスし得る。クライアントアプリケーション135は、データオブジェクトの完全な標準表現または全標準表現ではなく、データオブジェクトのうちフィールドの所望のサブセットがダウンロードされるように、メタデータモジュール235で定義されたオブジェクトサブタイプを指定し得る。したがって、メタデータモジュール235において定義されるサブタイプは、クライアントアプリケーション135が、データストア115から全標準オブジェクトではなく部分オブジェクトをダウンロードすることを容易にする。
たとえば、データオブジェクトタイプは販売注文であってもよい。クライアントアプリケーション135は、指定された顧客、または指定された販売者、または指定された期間などの販売注文のリストをダウンロードし得る。クライアントアプリケーション135は、販売注文のリストをユーザインターフェイスに提示し得る。ユーザは、販売注文に関するより多くのデータを確認するために、または販売注文に対する操作を実行するために、販売注文の提示リストのうち1つ以上を選択し得る。クライアントアプリケーション135は、ユーザ選択に応答して、販売注文データオブジェクトタイプのフィールドのうちより大きいサブセットを表わす別のメタデータモジュール235を用いて、販売注文の提示リストのうち選択された1つ以上のリストに関する追加の詳細をダウンロードし得る。それぞれのオブジェクトタイプ定義230において定義される販売注文データオブジェクトタイプは、いくつかの異なる関連付けられたメタデータモジュール235を有し得る。メタデータモジュール235の各々は、販売注文データオブジェクトタイプについての異なるレベルの詳細を表わし得る。詳細のレベルの範囲は、最小リストビューから、販売注文データオブジェクトタイプのデータフィールドすべてを含む全標準ビューにまでわたり得る。
オブジェクトタイプ定義230において定義されるオブジェクトのさまざまなビューを指定することに加えて、メタデータモジュール235は、オブジェクトがどのように挙動するか、互いに対話するか、クライアントアプリケーション135のユーザインターフェイスと対話するか、および、サーバ110と対話するかを指定することもできる。メタデータモジュール235は、あるオブジェクトのレイアウトとあるオブジェクトの各フィールドに関連付けられた複数のオフセットとを指定し得る。
データ制御モデル200は、1つ以上の多形エンティティ205を含み得る。多形エンティティ205は各々、データ制御モデル200に関する別の全体的な機能性を定義してもよい。クライアントアプリケーション135は、1つの多形エンティティ205に従って動作するとき、当該クライアントアプリケーション135が別の多形エンティティ205に従って動作するときとは異なる特徴または機能性を提供し得る。
各々の多形エンティティ205は、1つ以上の持続エンティティ210を含み得る。多形エンティティ205のうち1つのインスタンスの持続エンティティ210は、多形エンティティ205のうち別のインスタンスの持続エンティティ210とは異なり得る。持続エンティティ210の各インスタンスは、対応するオブジェクトタイプ定義230において定義されるようなデータオブジェクトのインスタンスを表わし得る。
持続エンティティ210は、データオブジェクトの抽象表現であり得る。持続エンティティ210は、特定の多形エンティティ205内で持続エンティティ210の各インスタンスを一意に識別する一意識別子215を含み得る。持続エンティティ210はまた、持続エンティティ210によって表わされるオブジェクトタイプを定義するオブジェクトタイプ定義220を含み得る。オブジェクトタイプ定義220は、対応するオブジェクトタイプ定義230の一実施形態であり得る。持続エンティティ210はまた、複数のデータ値225を含み得る。複数のデータ値225の各々は、オブジェクトタイプ定義220において定義されるデータフィールド名に関連付けられてもよい。
持続エンティティ210は、オブジェクトタイプ定義220によって定義される機能を含み得る。当該機能は、データ値225に対して動作するとともに、オブジェクトタイプ定義220によって定義されるようなデータオブジェクトタイプを参照してデータストア115と対話するものである。持続エンティティ210を実装するクライアントアプリケーション135に含まれる実行可能コードは、オブジェクトタイプ定義220によって表わされるデータオブジェクトに関する情報を内蔵していない可能性もある。クライアントアプリケーション135に含まれる実行可能コードは、オブジェクトタイプ定義220に含まれるデータに従った機能性を提供し得る。ある実施形態では、持続エンティティ210は、クライアントアプリケーション135内のJava(登録商標)コードによって実装されてもよく、オブジェクトタイプ定義220は、データストア115によって提供されるJavaScript(登録商標)Object Notation(JSON)表現に従って指定されてもよい。さまざまな実施形態では、他のプログラミング言語およびデータベースフォーマットを用いて、クライアントアプリケーション135において持続エンティティ210を実装し得る。持続エンティティ210のためのJava(登録商標)コードは、設計時にクライアントアプリケーション135が設けられてもよく、オブジェクトタイプ定義220のJSON表現は、実行時にデータストア115を介して提供されてもよい。
たとえば、持続エンティティ210のインスタンスは、販売注文データタイプに対する動作のための方法を含むクラスに従って定義される販売注文データタイプのインスタンスであるオブジェクトであってもよい。当該クラスは、オブジェクトタイプ定義230によって定義され得る。クラス定義に従うと、持続エンティティ210は、販売注文データオブジェクトをフェッチすること、販売注文データオブジェクトを更新すること等を含め、データストア115に格納された販売注文データオブジェクトとともに作用するように、適宜、HTTP要求を構築することができてもよい。データストア115に格納されたデータオブジェクトに対して作用する持続エンティティ210によって提供される機能は、一般に、データストア115に格納された任意のタイプのデータオブジェクトに対して作用するように定義され得る。持続エンティティ210によって提供される機能は、持続エンティティ210がオブジェクトタイプ定義220に従って定義されるクラスにおいて提供される方法によって呼出されてもよい。クライアントアプリケーション135の実行可能コードは、たとえば、「収益(Revenue)」オブジェクトに対してのみ作用するように定義されるGetRevenue(<object identifier>)という名前のハードコード化関数ではなく、Get()という名前のハードコード化関数を含み得る。このGet()という名前のハードコード化関数は、Get(Revenue,<object identifier>)として「収益」という名前のフィールド上の販売注文データタイプ持続エンティティ210に対応するクラスの方法によって呼び出され得る。この場合、<object identifier>は、対応する持続エンティティ210の一意識別子215である。
一例では、クライアントアプリケーション135がデータストア115から販売注文データオブジェクトのリストをフェッチする場合、戻される販売注文オブジェクトは各々、持続エンティティ210のうち別々に定義されたインスタンスによって表わされてもよい。リストに戻された販売注文データオブジェクトは、販売注文データオブジェクトタイプのリストに対応するメタデータモジュール235に従って、データストア115に格納された全標準販売注文データタイプのサブタイプとして表わされてもよい。ユーザは、リスト内の販売注文データオブジェクトのうちの1つを選択して、関連付けられた「収益」フィールド値を要求し得る。「収益」フィールドは、リストに対応するメタデータモジュール235に応じて販売注文データタイプのサブタイプに含まれなくてもよい。Get(Revenue,<identifier>)関数は、選択された販売注文データオブジェクトに対応する持続エンティティ210によって実行されてもよい。Get関数は、持続エンティティのオブジェクトタイプ定義220内の「収益」フィールドをルックアップして、「収益」フィールドがどのような種類のデータを含むかを判定し、データ値225内のフィールドに関する値をルックアップし得る。当該値がデータ値225に含まれていない場合、Get関数は、販売注文データオブジェクトタイプについてのフィールド「収益」を含むメタデータモジュール235に従ってデータストア115にHTTP要求を発行し得る。「収益」データフィールドと、Get関数によって用いられるメタデータモジュール235によって定義される任意の他のデータフィールドとを受信した後、Get関数は、オブジェクトタイプ定義220によって指定されるとおり、Get関数に対応する方法のクラス定義に従って「収益」データ値に対する処理を実行してもよい。次いで、持続エンティティ210は、Get関数によって戻された「収益」データ値を、クライアントアプリケーション135のユーザインターフェイスを介してユーザに提示し得る。
ソフトウェアプロバイダの各顧客は、顧客のそれぞれのクライアントアプリケーション135のために他の顧客とは異なる機能性を所望する可能性がある。ソフトウェアプロバイダは、さまざまな実行可能クライアントアプリケーション135をそれぞれ異なる顧客に提供するのではなく、すべての顧客に同じ実行可能クライアントアプリケーション135を提供し得る。ソフトウェアプロバイダはまた、各顧客のそれぞれのサーバ110から各顧客のそれぞれのクライアントアプリケーション135にダウンロードされるように異なるデータ制御モデル200を各顧客に提供してもよい。
ある実施形態では、クライアントアプリケーション135を特定の顧客に提供するソフトウェアプロバイダの特定の顧客は、特定の顧客によって用いられるかまたは特定の顧客の制御下で用いられるクライアントアプリケーション135の機能性を更新することを所望することもある。更新された機能性は、(たとえば、新しい域内の倉庫データオブジェクトについての)新しいデータオブジェクトタイプ定義230、新しいメタデータモジュール235、既存のデータオブジェクトタイプ定義230およびメタデータモジュール235のいずれかまたは両方の更新などを含み得る。特定の顧客は、ソフトウェアツールを用いて、特定の顧客のサーバ110においてデータ制御モデル200を更新し得る。特定の顧客は、更新されたデータ制御モデル200を、特定の顧客の制御下にあるさまざまなクライアントデバイス130上の特定の顧客のクライアントアプリケーション135の特定の顧客の1つ以上のインスタンスに送信してもよい。特定の顧客の制御下にあるさまざまなクライアントデバイス130上の特定の顧客のクライアントアプリケーション135の特定の顧客の更新は、ソフトウェアプロバイダによってソフトウェアプロバイダの他の顧客に提供されるクライアントアプリケーション135のインスタンスに影響を与える可能性はないだろう。ソフトウェアプロバイダの顧客はすべて、同じ実行可能クライアントアプリケーション135をインストールして用いてもよい。特定の顧客は、クライアントアプリケーション135の他のいずれのインスタンスにも影響を及ぼすことなく、クライアントアプリケーション135の特定の顧客のインスタンスによって用いられるデータ制御モデル200を更新し得る。
ある実施形態では、販売者は、販売機会のリストを表示するためにクライアントアプリケーション135を用いてもよい。販売機会の各々は、クライアントアプリケーション135のデータ制御モデル200内のオブジェクトタイプ「機会(Opportunities)」によって表わされてもよい。クライアントアプリケーション135は、販売者からの要求に応答して、販売者の基準を満たす「機会」オブジェクトからのデータフィールドの値のリストを表示してもよい。クライアントアプリケーション135は、クライアントアプリケーション135の構成に基づいて、顧客名および顧客電話番号のみが機会のリストビューに表示されていると判定し得る。クライアントアプリケーション135は、オブジェクトタイプ「機会」に対応するメタデータモジュール235を分析し得る。クライアントアプリケーション135は、オブジェクトタイプ「機会」に対応するメタデータモジュール235が、表示されるべきフィールド、顧客名および顧客電話番号を含むと判定し得る。クライアントアプリケーション135は、対応するメタデータモジュール235において識別されたフィールドに関する値をデータストア115から取得し得る。表示されるべきフィールドが対応するメタデータモジュール235に含まれているので、クライアントアプリケーション135は、データストア115に格納されたタイプ「機会」のオブジェクトから顧客名および顧客電話番号に関する値を取得し得る。クライアントアプリケーション135は、さまざまな機会ごとに取得された情報をリストビューにて表示し得る。
顧客名および顧客番号についての値を格納することに加えて、データストア115は、オブジェクトタイプ「機会」におけるフィールド顧客予算についての値を格納してもよい。しかしながら、顧客予算はクライアントアプリケーション135によって用いられる対応するメタデータモジュール235において識別されないので、クライアントアプリケーション135は顧客予算に対応する値のコピーを獲得しなくてもよい。
ある実施形態では、クライアントアプリケーション135は、対応するメタデータモジュール235に含まれていないオブジェクトのフィールドの値についてのユーザ要求を受信し得る。クライアントアプリケーション135は、指定されたオブジェクトタイプに関する要求されたフィールドを含む別の対応するメタデータモジュール235を求めてメタデータモジュール235をサーチし得る。次いで、クライアントアプリケーション135は、要求されたフィールドを含む他の対応するメタデータモジュール235に従ってデータストア115からオブジェクトをダウンロードし得る。クライアントアプリケーション135は、指定されたオブジェクトタイプに関する要求されたフィールドを含む他の対応するメタデータモジュール235に対応する、データストア115から獲得されたフィールドおよび値を含むように、それまでにサーバから取得されたオブジェクトについてのローカルに格納された部分コピーを修正し得る。
上述の例を続けて参照すると、クライアントアプリケーション135は、クライアントアプリケーション135がリストビューに機会を表示しているときに、販売者から特定の機会の選択を受信し得る。クライアントアプリケーション135は、ある機会の選択を受信したことに応答して当該機会の詳細なビューを示すように構成されてもよい。クライアントアプリケーション135は、機会の詳細なビューが顧客名、顧客電話番号および顧客予算を含んでいると判定し得る。クライアントアプリケーション135は、対応するメタデータモジュール235の分析に基づいて、対応するメタデータモジュール235が顧客名および顧客電話番号のフィールドを識別すると判定し得る。クライアントアプリケーション135はさらに、対応するメタデータモジュール235がフィールド顧客予算を識別しないと判定し得る。対応するメタデータモジュール23がフィールド顧客予算を識別しないので、対応するメタデータモジュール235に従ってクライアントアプリケーションによって格納される、特定の機会に対応する任意のバージョンのオブジェクトは、フィールド顧客予算についての値を含まないものと判定され得る。クライアントアプリケーション135は、所望のフィールド顧客予算を含むオブジェクトタイプ「機会」に対応する、データ制御モデル200内の別のメタデータモジュール235を識別し得る。次いで、クライアントアプリケーション135は、サーバ110上のデータストア115から、フィールド顧客予算を含む別のメタデータモジュール235内で識別されたフィールドに対応する値を要求し得る。具体的には、クライアントアプリケーション135は、販売者によって選択された特定の機会に対応するタイプ「機会」のオブジェクトを要求し得る。クライアントアプリケーション135は、要求の送信に応答して、販売者によって選択された特定の機会に対応するタイプ「機会」のオブジェクトを受信し得る。当該オブジェクトは、ここでは、顧客名、顧客番号および顧客予算についての値を含んでもよく、これらの値はすべて、特定のオブジェクトのビューを定義するために現在選択されているクライアントアプリケーション135によって維持される上記別のメタデータモジュール235において識別される。代替的には、データストア115から受信されたオブジェクトは、顧客名および顧客番号についての値がクライアントアプリケーション135によって最後に受信されてから変更されていなければ、当該値を含まなくてもよい。クライアントアプリケーション135は、特定の機会に対応する、格納済みのいずれかの以前のバージョンのオブジェクトを置換え得るかまたは上書きし得る。クライアントアプリケーション135は、顧客名、顧客電話番号および顧客予算を含むとともに特定の機会に対応する新しいバージョンのオブジェクトを格納し得る。クライアントアプリケーション135は、販売者によって選択された特定の機会の詳細なビューを表示してもよい。クライアントアプリケーション135によって表示される詳細なビューは、顧客名、顧客番号および顧客予算を含み得る。
ある実施形態では、サーバ110上のアプリケーションは、データストア115に格納されたタイプ「機会」のオブジェクトに関するタイプ「コミッション(Commission)」の新しい整数フィールドを作成するようにとの要求を受信し得る。フィールドタイプ「コミッション」は、このとき、クライアントアプリケーション135によって維持されるかまたはサーバ110によって維持される任意のオブジェクトタイプ定義230またはメタデータモジュール235においてフィールドとして識別されない可能性がある。サーバ110は、オブジェクトタイプ「機会」に対応するオブジェクトタイプ定義230と、クライアントアプリケーション135によって維持される1つ以上の対応するメタデータモジュール235とを更新し得る。具体的には、オブジェクトタイプ「機会」および1つ以上の対応するメタデータモジュール235の更新は、タイプ「コミッション」の新しい整数フィールドを含む。データストア115およびクライアントアプリケーション135は、タイプ「コミッション」の新しいフィールドの追加を反映するために、タイプ「コミッション」のフィールドについての値を格納し得る。クライアントアプリケーション135はまた、ユーザインターフェイス上でフィールド「コミッション」に対応する値を取得して表示してもよい。
ある実施形態では、サーバ110は、データストア115および/またはクライアントアプリケーション135に格納された任意のオブジェクトのタイプとは異なる新しいタイプのオブジェクトを生成するようにとの要求を受信し得る。サーバ110は、新しいタイプのオブジェクトを生成するようにとの要求に応答して、(a)新しいオブジェクトタイプ定義230を生成し得るとともに、(b)新しいオブジェクトタイプに対応する1つ以上の新しいメタデータモジュール235を生成し得る。オブジェクトタイプ定義230は、新しいタイプのオブジェクトに含まれるべき1つ以上のデータフィールドを含み得るとともに、1つ以上のメタデータモジュール235は、新しいタイプのオブジェクトに含まれるべき1つ以上のデータフィールドのさまざまなサブセットを指定し得る。サーバ110は、クライアントアプリケーション135のデータ制御モデルを更新することによって、新しいオブジェクトタイプ定義230および新しい1つ以上のメタデータモジュール235をクライアントアプリケーション135と同期させ得る。したがって、サーバ110およびクライアントアプリケーション135は、オブジェクトタイプ定義230およびメタデータモジュール235を用いて、新しいオブジェクトタイプを定義し得る。サーバ110は、サーバ110によって定義されるとともにクライアントアプリケーション135によって用いられるオブジェクトタイプの集合に新しいオブジェクトタイプを追加し得る。
上述の例を続けて参照すると、サーバ110は、タイプNetworkingEventの新しいオブジェクトを作成するようにとの要求を受信し得る。当該要求はさらに、タイプNetworkingEventのオブジェクトのフィールドとして、3つのフィールド「日付(Date)」、「時間(Time)」および「場所(Location)」を指定し得る。クライアントアプリケーション135もサーバ110も、タイプNetworkingEventの任意のオブジェクトを定義するオブジェクトタイプ定義230またはメタデータモジュール235を含まなくてもよい。サーバ110は、要求を受信したことに応じて、オブジェクトタイプNetworkingEventに対応するオブジェクトタイプ定義230および1つ以上のメタデータモジュール235を生成し得る。オブジェクトタイプNetworkingEventに対応するオブジェクトタイプ定義230および1つ以上のメタデータモジュール235は、少なくとも3つのフィールド「日付」、「時間」および「場所」を識別し得る。サーバ110は、オブジェクトタイプNetworkingEventの定義を提供するために、オブジェクトタイプ定義230および1つ以上のメタデータモジュール235をクライアントアプリケーション135に送信し得る。クライアントアプリケーション135はまた、タイプNetworkingEventのオブジェクトを生成し、当該オブジェクトを同期のためにサーバ110に送信してもよい。
4.例示的な実施形態
明確にするために詳細な例を以下に記載する。以下に記載するコンポーネントおよび/または動作は、特定の実施形態に適用可能とはなり得ない具体例として理解されるべきである。したがって、以下に記載するコンポーネントおよび/または動作は、添付の特許請求のいずれかの範囲を限定するものと解釈されるべきではない。
4.1 多形データモデルの修正
図3は、1つ以上の実施形態に従った、オブジェクトタイプ定義を更新するための動作300のセット例を例示するブロック図を示す。図3に示される1つ以上の動作は、すべてまとめて修正、再配置または省略されてもよい。したがって、図3に示される動作の特定のシーケンスは1つ以上の実施形態の範囲を限定するものとして解釈されるべきではない。
動作305において、クライアントアプリケーション135は、データストア115から第1のオブジェクトタイプ定義230を受信し得る。第1のオブジェクトタイプ定義230は、データストア115をホストするサーバ110から、クライアントアプリケーション135がネットワーク120を介して実行するクライアントデバイス130によって受信され得る。第1のオブジェクトタイプ定義230は、クライアントアプリケーション135の機能性を制御するデータ制御モデル200において用いられるべき第1のオブジェクトタイプを定義し得る。第1のオブジェクトタイプ定義230は、第1のオブジェクトタイプの1つ以上のデータフィールドを定義し得る。定義されたデータフィールドは各々、データフィールド名およびデータフィールド値を含み得る。一例として、オブジェクトタイプは、「機会」、たとえば販売機会、であってもよい。オブジェクトタイプ「機会」は、多数のデータフィールド、たとえば、「顧客名(Customer Name)」フィールドおよび「顧客電話番号(Customer Phone Number)」フィールドを含むように、第1のオブジェクトタイプ定義230によって定義されてもよい。
動作310において、第1のオブジェクトタイプの第1のオブジェクトは、受信された第1のオブジェクトタイプ定義230に従って処理され得る。たとえば、クライアントアプリケーション135は、第1のオブジェクトタイプ定義230に従って第1のオブジェクトのインスタンスを表わすために持続エンティティ210を生成し得る。生成された持続エンティティ210は、クライアントアプリケーション135によって用いられるスキーマを表わす多形エンティティ205内の第1のオブジェクトを一意に識別する一意識別子215を含み得る。生成された持続エンティティ210はまた、生成された持続エンティティ210が基づいている第1のオブジェクトタイプ定義230のコピーに基づくオブジェクトタイプ定義220を含み得る。持続エンティティ210はまた、オブジェクトタイプ定義220に従って、関連付けられたデータ値225を有する1つ以上のデータフィールドを含み得る。別の例として、クライアントアプリケーション135のユーザインターフェイスは、第1のオブジェクトの1つ以上のデータフィールド値を表示し得る。持続エンティティ210はまた、持続エンティティ210によって表わされる第1のオブジェクトに対して作用するように、オブジェクトタイプ定義220によって定義されるクラスに関連付けられた1つ以上の方法を実行してもよい。
動作315において、クライアントアプリケーション135は、データストア115から第1のオブジェクトタイプ定義230の更新を受信し得る。当該更新は、第2のオブジェクトタイプ定義230を含み得る。第2のオブジェクトタイプ定義230は、クライアントアプリケーション135の機能性を制御するデータ制御モデル200において用いられるべき第2のオブジェクトタイプを定義し得る。第2のオブジェクトタイプ定義230は、第2のオブジェクトタイプの1つ以上のデータフィールドを定義し得る。定義されたデータフィールドは各々、データフィールド名およびデータフィールド値を含み得る。一例として、オブジェクトタイプは「倉庫(Warehouse)」であってもよい。オブジェクトタイプ「倉庫」は、多数のデータフィールド、たとえば、「倉庫住所(Warehouse Address)」フィールドおよび「倉庫電話番号(Warehouse Phone Number)」フィールドを含むように、第2のオブジェクトタイプ定義230によって定義され得る。別の例として、第2のオブジェクトタイプ定義230は、第1のオブジェクトタイプ定義230の更新済みバージョンであってもよく、クライアントアプリケーション135のデータ制御モデル200内の第1のオブジェクトタイプ定義230を置換えてもよい。第2のオブジェクトタイプ定義230は、「機会」、たとえば販売機会であってもよい。更新された第2のオブジェクトタイプ「機会」は、多数のデータフィールド、たとえば、「顧客名」フィールド、「顧客電話番号」フィールド、および「顧客予算(Customer Budget)」フィールドを含むように、第2のオブジェクトタイプ定義230によって定義され得る。この例では、第2のオブジェクトタイプ定義230は、第1のオブジェクトタイプ定義230に含まれない追加のデータフィールドおよび値を含む。
動作320において、第2のオブジェクトタイプの第2のオブジェクトは、受信された第2のオブジェクトタイプ定義230に従って処理され得る。たとえば、クライアントアプリケーション135は、第2のオブジェクトタイプ定義230に従って第2のオブジェクトのインスタンスを表わすために持続エンティティ210を生成し得る。生成された持続エンティティ210は、クライアントアプリケーション135によって用いられるスキーマを表わす多形エンティティ205内の第2のオブジェクトを一意に識別する一意識別子215を含み得る。生成された持続エンティティ210はまた、生成された持続エンティティ210が基づいている第2のオブジェクトタイプ定義230のコピーに基づくオブジェクトタイプ定義220を含み得る。持続エンティティ210はまた、オブジェクトタイプ定義220に従って、関連付けられたデータ値225を有する1つ以上のデータフィールドを含み得る。別の例として、クライアントアプリケーション135のユーザインターフェイスは、第2のオブジェクトの1つ以上のデータフィールド値を表示し得る。持続エンティティ210はまた、持続エンティティ210によって表わされる第2のオブジェクトに対して作用するように、オブジェクトタイプ定義220によって定義されるクラスに関連付けられた1つ以上の方法を実行し得る。別の例として、第2のオブジェクトタイプ定義230が第1のオブジェクトタイプ定義230の更新済みバージョンであって、クライアントアプリケーション135のデータ制御モデル200内で第1のオブジェクトタイプ定義230を置換える場合、第1のオブジェクトタイプの第1のオブジェクトを表わす持続エンティティ210は、第2のオブジェクトタイプ定義230のコピーに基づくオブジェクトタイプ定義220を含むとともにそれに応じて第2のオブジェクトタイプの第2のオブジェクトのインスタンスを表わすように更新されてもよい。持続エンティティ210はまた、更新されたオブジェクトタイプ定義220に従って、関連付けられたデータ値225を有する1つ以上の追加のデータフィールドを含むように更新され得る。
動作325において、クライアントアプリケーション135は、第2のオブジェクトのデータフィールド値をデータストア115に送信し得る。たとえば、クライアントアプリケーション135は、第2のオブジェクトタイプが「倉庫」である場合に「倉庫電話番号」の値を送信し得るとともに、これにより、データストア115内の「倉庫」オブジェクトについて格納された「倉庫電話番号」を更新し得る。別の例として、クライアントアプリケーション135は、データストア115内の「機会」オブジェクトに格納された「顧客予算」の値を更新し得る。クライアントアプリケーション135は、第2のオブジェクトタイプが第1のオブジェクトタイプと比べて、データフィールドの更新済みリストを有する「機会」である場合、「顧客予算」の値を送信し得る。
動作330において、クライアントアプリケーション135は、データストア115から1つ以上のメタデータモジュール235を受信し得る。メタデータモジュール235は、第2のオブジェクトタイプ定義230によって定義される第2のオブジェクトタイプのサブタイプを定義し得る。たとえば、第1のメタデータモジュール235は、「顧客名」フィールド、「顧客電話番号」フィールド、および「顧客予算」フィールドを含む「機会」オブジェクトタイプの全標準サブタイプを定義し得る。第2のメタデータモジュール235は、「顧客名」フィールドおよび「顧客電話番号」フィールドを含む「機会」オブジェクトタイプのサブセットサブタイプを定義し得る。第3のメタデータモジュール235は、「顧客名」フィールドのみを含む「機会」オブジェクトタイプのリストサブタイプを定義し得る。「機会」オブジェクトタイプのための方法は、リストサブタイプメタデータモジュール235に従って「機会」オブジェクトのリストをダウンロードして、クライアントデバイス130におけるデータ送信オーバーヘッドおよびデータ記憶オーバーヘッドを最小限にし得る。「顧客名」フィールドのみをクライアントアプリケーション135のユーザインターフェイスに提示する必要がある場合、「機会」オブジェクトの全標準表現は不要となる可能性があり、リストサブタイプがより効率的となり得る。「機会」オブジェクトタイプのための別の方法は、全標準サブタイプメタデータモジュール235に従って、選択された「機会」オブジェクトの全標準表現をダウンロードし得る。「機会」オブジェクトのリスト内の1つの「機会」オブジェクトが、選択された「機会」オブジェクトのデータフィールドをすべて閲覧および/または編集するために選択される場合、「機会」オブジェクトの全標準表現が必要となる可能性があり、リストサブタイプが不十分となる可能性がある。
動作340において、クライアントアプリケーション135は、第2のオブジェクトタイプ定義230に従って作成される新しいオブジェクトが、たとえば、「機会」オブジェクトタイプのリストサブタイプに従って作成された第1のサブタイプであるか、または、たとえば、「機会」オブジェクトタイプの全標準サブタイプに従って作成された第2のサブタイプであるかに関する判定を行ない得る。
動作345において、新しいオブジェクトが動作340において第2のオブジェクトタイプ定義230の第1のサブタイプに対応すると判定された場合、クライアントアプリケーション135は、第1のサブタイプに対応するデータフィールドの値をデータストア115からフェッチし得る。たとえば、「機会」オブジェクトタイプの第1のサブタイプがリストサブタイプである場合、クライアントアプリケーション135は、データストア115から「顧客名」データフィールドの値をフェッチし得る。
動作350において、新しいオブジェクトが動作340において第2のオブジェクトタイプ定義230の第2のサブタイプに対応すると判定された場合、クライアントアプリケーション135は、第2のサブタイプに対応するデータフィールドの値をデータストア115からフェッチし得る。たとえば、「機会」オブジェクトタイプの第2のサブタイプが全標準サブタイプである場合、クライアントアプリケーション135は、データストア115から「顧客予算」データフィールドの値をフェッチし得る。
動作355において、クライアントアプリケーション135は、動作345または動作350のいずれかでフェッチされたデータフィールドの値を処理し得る。たとえば、クライアントアプリケーション135は、フェッチされたデータフィールドの値を、クライアントアプリケーション135のユーザインターフェイスに表示し得る。クライアントアプリケーション135は、フェッチされたデータフィールドの値に対して数学的計算を実行し得るとともに、当該数学的計算の結果をクライアントアプリケーション135のユーザインターフェイスに表示し得る。
動作360において、クライアントアプリケーション135は、動作355で処理されたデータフィールドの値をデータストア115において更新させ得る。クライアントアプリケーション135は、持続エンティティ210のオブジェクトタイプ定義220において表わされた第2のオブジェクトタイプ定義230によって定義される方法を実行し得る。当該実行される方法は、動作355におけるフェッチされたデータフィールドの値の処理結果に従って、動作345および350のうちの1つにおいてフェッチされたデータフィールドの値を更新するようにとのHTTP要求をデータストア115に送信するステップを含み得る。
図4は、1つ以上の実施形態に従った、オブジェクトタイプ定義を更新するための動作400のセット例を例示するブロック図を示す。図4に示される1つ以上の動作は、すべてまとめて修正、再配置、または省略されてもよい。したがって、図4に示される動作の特定のシーケンスは、1つ以上の実施形態の範囲を限定するものとして解釈されるべきではない。
動作405において、クライアントアプリケーション135は、第1のデータベーススキーマ、たとえば、クライアントアプリケーション135の機能性を制御するデータ制御モデル200を、データストア115から受信し得る。第1のデータベーススキーマは、クライアントアプリケーション135がネットワーク120を介して実行するクライアントデバイス130によって、データストア115をホストするサーバ110から受信され得る。第1のデータベーススキーマは、第1のオブジェクトタイプを定義する第1のオブジェクトタイプ定義230を含み得る。第1のオブジェクトタイプ定義230は、第1のオブジェクトタイプの1つ以上のデータフィールドを定義し得る。定義されたデータフィールドは各々、データフィールド名およびデータフィールド値を含み得る。一例として、オブジェクトタイプは、「機会」、たとえば販売機会であってもよい。オブジェクトタイプ「機会」は、多数のデータフィールド、たとえば、「顧客名」フィールドおよび「顧客電話番号」フィールドを含むように、第1のオブジェクトタイプ定義230によって定義され得る。第1のデータベーススキーマはまた、第1のオブジェクトタイプ定義230によって定義される第1のオブジェクトタイプのビューを各々が定義する1つ以上のメタデータモジュール235を含み得る。1つ以上のメタデータモジュール235の各々は、それぞれのビューに含まれるべき第1のオブジェクトタイプの全標準表現に含まれるデータフィールドの別のサブセットを指定し得る。一例として、メタデータモジュール235のうちの1つによって定義される1つのビューは、全標準「機会」オブジェクトタイプによって指定されるさまざまなフィールドから含めるべき「顧客名」フィールドのみを指定し得る。上記メタデータモジュール235のうちの別のメタデータモジュール235によって定義される別のビューは、全標準「機会」オブジェクトタイプによって指定されるさまざまなフィールドから「顧客名」フィールドおよび「顧客電話番号」フィールドの両方が含められるべきであることを指定し得る。
動作410において、第1のオブジェクトタイプの第1のオブジェクトは、受信された第1のデータベーススキーマに従って処理され得る。たとえば、クライアントアプリケーション135は、第1のオブジェクトタイプ定義230に従って第1のオブジェクトのインスタンスを表現するために持続エンティティ210を生成し得る。生成された持続エンティティ210は、クライアントアプリケーション135によって用いられる第1のデータベーススキーマを表わす多形エンティティ205内の第1のオブジェクトを一意に識別する一意識別子215を含み得る。生成された持続エンティティ210はまた、生成された持続エンティティ210が基づいている第1のオブジェクトタイプ定義230のコピーに基づくオブジェクトタイプ定義220を含み得る。持続エンティティ210はまた、オブジェクトタイプ定義220に従って、関連付けられたデータ値225を有する1つ以上のデータフィールドを含み得る。別の例として、クライアントアプリケーション135のユーザインターフェイスは、第1のオブジェクトの1つ以上のデータフィールド値を表示し得る。持続エンティティ210はまた、持続エンティティ210によって表わされる第1のオブジェクトに対して作用するように、オブジェクトタイプ定義220によって定義されるクラスに関連付けられた1つ以上の方法を実行してもよい。
動作415において、クライアントアプリケーション135は、データストア115から第1のデータベーススキーマの更新を受信し得る。第1のデータベーススキーマの更新は、第1のデータベーススキーマとは異なる第2のデータベーススキーマを含み得る。当該更新は、第2のオブジェクトタイプ定義230を含み得る。第2のオブジェクトタイプ定義230は、クライアントアプリケーション135の機能性を制御するデータ制御モデル200で用いられるべき第2のオブジェクトタイプを定義し得る。第2のオブジェクトタイプ定義230は、第2のオブジェクトタイプの1つ以上のデータフィールドを定義し得る。定義されたデータフィールドは各々、データフィールド名およびデータフィールド値を含み得る。一例として、オブジェクトタイプは「倉庫」であってもよい。オブジェクトタイプ「倉庫」は、多数のデータフィールド、たとえば、「倉庫住所」フィールドおよび「倉庫電話番号」フィールドを含むように、第2のオブジェクトタイプ定義230によって定義されてもよい。別の例として、第2のオブジェクトタイプ定義230は、第1のオブジェクトタイプ定義230の更新済みバージョンであり得るとともに、クライアントアプリケーション135のデータ制御モデル200内の第1のオブジェクトタイプ定義230を置換え得る。第2のオブジェクトタイプ定義230は、「機会」、たとえば販売機会であってもよい。更新された第2のオブジェクトタイプ「機会」は、多数のデータフィールド、たとえば、「顧客名」フィールド、「顧客電話番号」フィールド、および「顧客予算」フィールドを含むように、第2のオブジェクトタイプ定義230によって定義され得る。この例では、第2のオブジェクトタイプ定義230は、第1のオブジェクトタイプ定義230に含まれない追加のデータフィールドおよび値を含む。
動作420において、第2のオブジェクトタイプの第2のオブジェクトは、受信された第2のデータベーススキーマに従って処理され得る。たとえば、クライアントアプリケーション135は、第2のオブジェクトタイプ定義230に従って第2のオブジェクトのインスタンスを表わすために持続エンティティ210を生成し得る。生成された持続エンティティ210は、クライアントアプリケーション135によって用いられるスキーマを表わす多形エンティティ205内の第2のオブジェクトを一意に識別する一意識別子215を含み得る。生成された持続エンティティ210はまた、生成された持続エンティティ210が基づいている第2のオブジェクトタイプ定義230のコピーに基づくオブジェクトタイプ定義220を含み得る。持続エンティティ210はまた、オブジェクトタイプ定義220に従って、関連付けられたデータ値225を有する1つ以上のデータフィールドを含み得る。別の例として、クライアントアプリケーション135のユーザインターフェイスは、第2のオブジェクトのうち1つ以上のデータフィールド値を表示し得る。持続エンティティ210はまた、持続エンティティ210によって表わされる第2のオブジェクトに対して作用するように、オブジェクトタイプ定義220によって定義されるクラスに関連付けられた1つ以上の方法を実行し得る。別の例として、第2のオブジェクトタイプ定義230が第1のオブジェクトタイプ定義230の更新済みバージョンであるとともに、クライアントアプリケーション135のデータ制御モデル200内の第1のオブジェクトタイプ定義230を置換える場合、第1のオブジェクトタイプの第1のオブジェクトを表わす持続エンティティ210は、第2のオブジェクトタイプ定義230のコピーに基づくオブジェクトタイプ定義220を含むとともにそれに応じて第2のオブジェクトタイプの第2のオブジェクトのインスタンスを表わすように更新されてもよい。持続エンティティ210はまた、更新されたオブジェクトタイプ定義220に従って、関連付けられたデータ値225を有する1つ以上の追加のデータフィールドを含むように更新されてもよい。
動作425において、クライアントアプリケーション135は、第2のオブジェクトのデータフィールド値をデータストア115に送信し得る。たとえば、クライアントアプリケーション135は、第2のオブジェクトタイプが「倉庫」である場合、「倉庫電話番号」の値を送信し得るとともに、これにより、データストア115内の「倉庫」オブジェクトについて格納された「倉庫電話番号」を更新し得る。別の例として、クライアントアプリケーション135は、第2のオブジェクトタイプが第1のオブジェクトタイプと比べて、データフィールドの更新されたリストを有する「機会」である場合、「顧客予算」の値を送信し得るとともに、これにより、データストア115内の「機会」オブジェクトに格納された「顧客予算」の値を更新し得る。
動作430において、クライアントアプリケーション135は、データストア115から1つ以上のメタデータモジュール235を受信し得る。メタデータモジュール235は、第2のオブジェクトタイプ定義230によって定義される第2のオブジェクトタイプのサブタイプを定義し得る。たとえば、第1のメタデータモジュール235は、「顧客名」フィールド、「顧客電話番号」フィールド、および「顧客予算」フィールドを含む「機会」オブジェクトタイプの全標準サブタイプを定義し得る。第2のメタデータモジュール235は、「顧客名」フィールドおよび「顧客電話番号」フィールドを含む「機会」オブジェクトタイプのサブセットサブタイプを定義し得る。第3のメタデータモジュール235は、「顧客名」フィールドのみを含む「機会」オブジェクトタイプのリストサブタイプを定義し得る。「機会」オブジェクトタイプのための方法は、クライアントアプリケーション135のユーザインターフェイスにおいて「顧客名」フィールドのみを提示する必要がある場合、リストサブタイプメタデータモジュール235に従って「機会」オブジェクトのリストをダウンロードして、クライアントデバイス130におけるデータ送信オーバーヘッドおよびデータ記憶オーバーヘッドを最小限にし得る。「機会」オブジェクトタイプのための別の方法は、「機会」オブジェクトのリスト内の1つの「機会」オブジェクトが、選択された「機会」オブジェクトのデータフィールドをすべて閲覧および/または編集するために選択された場合、全標準サブタイプメタデータモジュール235に従って、選択されたある「機会」オブジェクトの全標準表現をダウンロードし得る。
動作440において、クライアントアプリケーション135は、第2のオブジェクトタイプ定義230に従って作成された新しいオブジェクトが、たとえば、「機会」オブジェクトタイプのリストサブタイプに従って作成された第1のサブタイプであるか、または、たとえば、「機会」オブジェクトタイプの全標準サブタイプに従って作成された第2のサブタイプであるかに関する判定を行ない得る。
動作445において、新しいオブジェクトが動作440において第2のオブジェクトタイプ定義230の第1のサブタイプに対応すると判定された場合、クライアントアプリケーション135は、第1のサブタイプに対応するデータフィールドの値をデータストア115からフェッチし得る。たとえば、「機会」オブジェクトタイプの第1のサブタイプがリストサブタイプである場合、クライアントアプリケーション135は、データストア115から「顧客名」データフィールドの値をフェッチし得る。
動作450において、新しいオブジェクトが動作440において第2のオブジェクトタイプ定義230の第2のサブタイプに対応すると判定された場合、クライアントアプリケーション135は、第2のサブタイプに対応するデータフィールドの値をデータストア115からフェッチし得る。たとえば、「機会」オブジェクトタイプの第2のサブタイプが全標準サブタイプである場合、クライアントアプリケーション135は、「顧客予算」データフィールドの値をデータストア115からフェッチし得る。
動作455において、クライアントアプリケーション135は、動作445または動作450のいずれかにおいてフェッチされたデータフィールドの値を処理し得る。たとえば、クライアントアプリケーション135は、フェッチされたデータフィールドの値をクライアントアプリケーション135のユーザインターフェイスに表示してもよく、または、クライアントアプリケーション135は、フェッチされたデータフィールドの値に対して数学的計算を実行し、当該数学的計算の結果をクライアントアプリケーション135のユーザインターフェイスに表示してもよい。
動作460において、クライアントアプリケーション135は、動作455において処理されたデータフィールドの値をデータストア115において更新させ得る。クライアントアプリケーション135は、持続エンティティ210のオブジェクトタイプ定義220において表わされた第2のオブジェクトタイプ定義230によって定義される方法を実行し得る。当該実行される方法は、動作455におけるフェッチされたデータフィールドの値の処理結果に従って、動作445および動作450のうちの1つにおいてフェッチされたデータフィールドの値を更新するようにとのHTTP要求をデータストア115に送信するステップを含み得る。
4.2 再帰的データトラバースモデル
多くの場合、クライアントアプリケーション135についてのアプリケーションデータおよび特徴は、さまざまなビジネス目的およびユーザ経験の向上のために、オンザフライで構成可能であることが望ましい。実行時拡張機能は、アプリケーションデータおよび特徴が、クライアントデバイス130またはサーバ110を介してシームレスに構成可能となることを容易にし得る。加えて、クライアントデバイス130がネットワーク120を介してサーバ110に接続することができないときに、オフラインアクセスにより、アプリケーションデータおよび特徴がクライアントアプリケーション135において利用可能になることを容易にし得る。ユーザが実行時にクライアントアプリケーション135内のアプリケーションデータまたは機能性にアクセスするためのフローを定義しようと試みても、対応する設計時間エンティティがクライアントデバイス130上で利用できない場合、クライアントアプリケーション135のユーザの使用が制限される可能性がある。
一例として、さまざまな産業にわたるクライアントアプリケーション135の顧客が、同期プロセスによって、それらのさまざまなビジネスワークフローに特有の構成に関する詳細な情報を要求する場合が該当し得る。一実施形態は、クライアントアプリケーション135についての定義ファイルの一部としてオブジェクトアグノスティックデータトラバースモデルを用いてこの問題に対処する。オブジェクトアグノスティックデータトラバースモデルは、オンザフライでのクライアントアプリケーション135の定義の変更に応じて作用する、実行時における変更を容易にする多形挙動を特徴とし得る。このオブジェクトアグノスティックデータトラバースモデルの一実施形態は、サーバ110上でホストされるデータストア115に対するシームレスな接続または切断の間、トラバース手段によってサーバ110上でホストされるデータストア115にデータを要求して、設計時または実行時のいずれかにおいて定義されたアプリケーションデータおよび特徴へのアクセスを提供するために、実行時に変化する可能性のあるグラフ構成をクライアントアプリケーション135がリアルタイムで翻訳することを容易にする。
クライアントアプリケーション135は、設計時または実行時のいずれかに定義されたアプリケーションデータおよび特徴にアクセスするために、グラフ構成モデルを含み得るとともに、翻訳し得るとともに、用い得る。グラフ構成モデルは、オブジェクトに依存する可能性はなく、定義されたエンティティ上で指定された一意識別子を含み得る。これらの一意識別子は、後続の要求を発行するためにエンティティ上で定義されたメタデータプロパティと併せて用いられてもよい。各特徴は、識別子の下の抽象オブジェクト定義として持続されてもよく、一致する一意識別子を指定するアクションが呼び出された時、引き続き取得されてもよい。グラフ構成モデルにおけるさまざまなエンティティ間のデータ取得関係は、対応するエンティティの一意識別子に従ってメタデータプロパティにおいて指定されてもよい。データ取得関係は、対応するエンティティによって表わされるさまざまなオブジェクトタイプを静的にリンクするマッピングであってもよい。データ取得関係は、実質的には、第1のオブジェクトタイプに基づいてどの記録が取得されるべきかを判定するためにクライアントアプリケーション135によって用いられる任意のマッピングであり得る。データ取得関係は、第1のオブジェクトタイプの関数として第2のオブジェクトタイプを識別し得る。次いで、クライアントアプリケーション135は、この第2のオブジェクトタイプの記録をサーバ110上のデータストア115から取得し得る。キャッシュされたデータ取得の複数のモードは、URIまたは実行時インデックスのいずれかを用いてサポートされ得る。
クライアントアプリケーション135は、実行時に変化し得る構成グラフをリアルタイムで翻訳して、データストア115にデータを要求し得る。構成グラフは、クライアントアプリケーション135が、データストア115からデータをフェッチするようにとの要求を効率的かつ最適に構築することを容易にし得る。構成グラフは、標準スキーマに準拠するメタデータにセグメント化されてもよく、抽象エンティティについて定義された一意修飾子によって識別される抽象エンティティの集合としてメモリに格納されてもよい。当該修飾子を、エンティティについて定義されたプロパティと併用して、情報を要求してもよい。データの要求は、再帰的データトラバースによるものであってもよく、データストア115に接続されているかまたはデータストア115から切断されている間、クライアントアプリケーション135の設計時またはクライアントアプリケーション135の実行時のいずれかにおいて定義されたデータおよび特徴へのアクセスを提供し得る。データは、ユーザアクセスの前にクライアントデバイス130上でキャッシュされてもよく、これより、ユーザ経験をリアルタイムで最適化し得る。要求に対する応答は、クライアントデバイス130上のデータストレージに受信されて持続され得る。
クライアントアプリケーション135は、グラフ構成モデルを翻訳して用いることで、クライアントアプリケーション135の設計時または実行時のいずれかにおいて定義された特徴についてのデータにアクセスし得る。オブジェクトアグノスティックモデルによって定義されるエンティティに関して指定された一意識別子は、後続の要求を発行するためにエンティティ上で定義されたメタデータプロパティとともに使用されてもよい。各特徴は、識別子の下の抽象的なオブジェクト定義として持続され得るとともに、その後、一致した一意識別子を指定するアクションが呼び出されたときに取得され得る。
図5は、1つ以上の実施形態に従った、エンティティ510と、関係するエンティティ520との間の関係を示す構成グラフ500を例示するブロック図を示す。各エンティティ510は、1つ以上の関係するエンティティ520とのデータ取得関係515を有し得る。同様に、各々の関係するエンティティ520は、1つ以上の他の関係するエンティティ520とのデータ取得関係525を有し得る。構成グラフ500は、構成データファイルに格納され得るかまたはメモリに格納されたデータ構造に格納され得る。
図6は、1つ以上の実施形態に従った、構成グラフにおけるエンティティ600のコンポーネントを例示するブロック図を示す。エンティティ600は、図5に示されるエンティティ510の一実施形態であり得る。エンティティ600は、一意識別子610、データ620、タイプ定義630、1つ以上の関係するエンティティ640へのポインタ、および、さまざまな問合せプロパティ650を含み得る。一意識別子610は、エンティティ600がクライアントアプリケーション135および/またはクライアントデバイス130において持続されている場合、エンティティ600に対応する持続エンティティ210の一意識別子215に対応し得る。データ620は、対応する持続エンティティ210のデータ値225に対応し得るとともに、タイプ定義630は、対応する持続エンティティ210のタイプ定義220に対応し得る。
関係するエンティティ640は、1つ以上の関係するエンティティ700に関連付けられた一意識別子710のリスト(図7を参照)を含み得る。関係するエンティティ640は、問合せプロパティ650において指定され得る多数のさまざまな基準のいずれかに従ってエンティティ600に関係付けられてもよい。問合せプロパティ650はまた、関係するエンティティ640がサーバ110のデータストア115において問合せされるときに、結果のリストにおいて関係するエンティティ640をどのように順序付けるべきかを指定することもできる。
図7は、1つ以上の実施形態に従った構成グラフにおける関係するエンティティ700のコンポーネントを例示するブロック図を示す。関係するエンティティ700は、図5に示される関係するエンティティ520の一実施形態であり得る。関係するエンティティ700は、一意識別子710、データ720、タイプ定義730、1つ以上の他の関係するエンティティ740へのポインタ、および、さまざまな問合せプロパティ750を含み得る。一意識別子710は、関係するエンティティ700がクライアントアプリケーション135および/またはクライアントデバイス130において持続されている場合、関係するエンティティ700に対応する持続エンティティ210の一意識別子215に対応し得る。データ720は、対応する持続エンティティ210のデータ値225に対応し得るとともに、タイプ定義730は、対応する持続エンティティ210のタイプ定義220に対応し得る。
関係するエンティティ740は、1つ以上の他の関係するエンティティ700に関連付けられた一意識別子710のリストを含み得る。関係するエンティティ740は、問合せプロパティ750において指定され得るいくつかの異なる基準のいずれかに従って、関係するエンティティ700に関係付けられてもよい。問合せプロパティ750は、実行された問合せに関連付けられた問合せプロパティ650に従って1つ以上の関係するエンティティ640を戻すためにエンティティ600に対して実行された問合せの結果に対応し得る。問合せプロパティ750はまた、関係するエンティティ740がサーバ110のデータストア115において問合せされるときに、結果のリストにおいて当該関係するエンティティ740をどのように順序付けるべきかを指定することもできる。問合せプロパティ750はまた、関係するエンティティ700に親として関連付けられるエンティティ600のParentIDまたは一意識別子710と、所与の問合せ基準を関係するエンティティ700と一致させる基数またはいくつかの関係するエンティティ700とを含む。
図8は、1つ以上の実施形態に従った、データキャッシュを更新するための動作800のセット例を例示するブロック図を示す。動作800のセットは、図1に示されるように、クライアントデバイス130上のクライアントアプリケーション135によって実行され得る。図8に示される1つ以上の動作は、すべてまとめて修正、再配置、または省略されてもよい。したがって、図8に示される動作の特定のシーケンスは、1つ以上の実施形態の範囲を限定するものとして解釈されるべきではない。明確にするために詳細な例を以下に記載する。以下に記載するコンポーネントおよび/または動作は、特定の実施形態に適用可能でない可能性もある一具体例として理解されるべきである。したがって、以下に記載するコンポーネントおよび/または動作は、添付の特許請求のいずれかの範囲を限定するものと解釈されるべきではない。さまざまな実施形態において、動作800は、図1~図9を参照して上述したシステムおよびコンポーネントを用いて実行されてもよい。
構成グラフ、たとえば構成グラフ500は、データファイルまたはメモリ内のデータ構造に格納され得る。構成グラフは、データストア115から取得されるとともにクライアントアプリケーション135によってクライアントデバイス130に格納されるべきデータのサブセットを定義し得る。クライアントデバイス130が含み得るメモリ容量はデータストア115のメモリ容量よりもはるかに少なくてもよく、データストア115からクライアントデバイス130にデータを送信するためにネットワーク120において利用可能なデータ帯域幅は限られている可能性がある。構成グラフ(たとえば、構成グラフ500)において定義されるデータは、本明細書で図2を参照して説明した持続エンティティ210に対応するエンティティ(たとえば、エンティティ510)および関係するエンティティ(たとえば、関係するエンティティ520)を含み得る。構成グラフはまた、クライアントアプリケーション135の特徴、たとえば、定義されたさまざまな基準に合致するデータを取得するためにデータストア115に格納されたデータに対して実行されるべき問合せ、を定義してもよい。構成グラフのデータおよびアプリケーションは、メタデータに格納された情報を含み得る。メタデータに基づいて、クライアントアプリケーション135は、関係するエンティティ520を識別し、エンティティ510の値を用いてメタデータ内で識別された関係するエンティティ520に関する問合せを生成し、次いで、データストア115からエンティティ510および関係するエンティティ520を取得し得る。
一例として、構成グラフ500におけるエンティティ510は、オブジェクトタイプ「製品(Product)」についてのタイプ定義630を有する第1のオブジェクトタイプに関連付けられ得る。「製品」オブジェクトタイプは、クライアントデバイス130上のクライアントアプリケーション135を用いる販売者が販売するために訪問することとなる会社によって提供される1つ以上の製品に関するものであってもよい。構成グラフ500は、販売者の会社によって提供される指定された製品に関する指定済み問合せプロパティ650に一致する、データストア115内のオブジェクトタイプ「機会」に関するタイプ定義630を有するすべての第2のオブジェクトタイプをサーチして取得するために、問合せプロパティ650とともにメタデータに問合せを含み得る。「機会」オブジェクトタイプは、会社によって提供される指定済み製品についての1つ以上の販売機会に関するものであってもよい。販売機会は、連絡先担当者の名前、電話番号、住所、電話番号、購入を所望されている製品、予想される必要ユニット数、配送に必要な予想される時間帯などの情報を含み得る。クライアントアプリケーション135は、指定された製品と関連付けられた販売機会との間の関係を、第1のオブジェクトタイプに関連付けられてメタデータに格納されたデータ取得関係として分析し得る(動作810)。この例では、第1のオブジェクトタイプは「製品」オブジェクトタイプであってもよい。
クライアントアプリケーション135がデータ取得関係を分析した後、クライアントアプリケーション135は、第1のオブジェクトタイプの記録に基づいて、データストア115から取得すべき記録があるかどうかを判定し得る(動作820)。この例における動作810の分析に従うと、クライアントアプリケーション135は、会社によって提供される指定済み製品に基づいて、データストア115から取得すべき販売機会があると判定し得る。
記載されている例においては、クライアントアプリケーション135は、販売者が売込みのために訪問する際に必要となるであろう会社の製品に関連付けられたすべての販売機会記録を取得するために、データストア115に対する問合せを実行する準備を開始し得る。これらの準備のうちの1ステップとして、クライアントアプリケーション135は、データストア115から販売機会が取得されるであろう対象となる1つ以上の製品の各々の製品名を識別し得る。言い換えれば、クライアントアプリケーション135は、第1のオブジェクトタイプの製品名フィールドに対応する、第1のオブジェクトタイプ、たとえば「製品」オブジェクトタイプ、についての1つ以上の記録から1つ以上の値を識別し得る(動作830)。
次いで、クライアントアプリケーション135は、データストア115から販売機会が取得されるであろう対象となる1つ以上の製品の各々についての1つ以上の製品名を用いて、1つ以上の問合せのセットを生成し得る。これらの問合せは、製品に対応するエンティティ600内の問合せプロパティ650に基づいて生成されてもよい。問合せのセットは、特定のエンティティ600に関係付けられた関係するエンティティ640を取得するために生成され得る。たとえば、1つの製品名に対して1つの問合せ、別の製品名に対して別の1つの問合せなどのように2つ以上の問合せセットが生成されてもよい。言い換えれば、クライアントアプリケーション135は、第2のオブジェクトタイプの記録の第2のセットのうち第1のサブセットおよび第2のサブセットを取得するために、1つ以上の問合せのセットを生成し得る(動作840)。1つ以上の問合せを生成する動作は、問合せを表わす1つ以上のURIを生成する動作を含み得る。第2のオブジェクトタイプの記録の第2のセットのうち第1のサブセットおよび第2のサブセットは、それぞれ、第2のオブジェクトタイプの第2のフィールドに関係する第1の値および第2の値を含み得る。たとえば、販売機会記録の第1のサブセットおよび第2のサブセットは、それぞれ、販売機会の対応するサブセットの製品名フィールドに関係する第1の製品名および第2の製品名を含み得る。問合せのセットは、データストア115から第1の製品名に関する販売機会の第1のサブセットおよび第2の製品名に関する販売機会の第2のサブセットを取得するために生成され得る。次いで、クライアントアプリケーション135は、1つ以上の問合せのセットを実行して、第2のオブジェクトタイプの記録の第2のセットのうち第1のサブセットおよび第2のサブセットを取得し得る(動作850)。
問合せを実行した後、クライアントアプリケーション135は、第2のオブジェクトタイプの記録の第2のセットのうち第1のサブセットおよび第2のサブセットでクライアントアプリケーション135内のキャッシュを更新することによって、データストア115から取得されたデータをクライアントデバイス130に格納し得る(動作860)。たとえば、クライアントアプリケーション135は、データストア115上で実行された問合せにおいて名前が識別された製品に関係付けられた販売機会を、クライアントデバイス130のデータキャッシュにローカルに格納し得る。
以下の表1に、動作850における指定済み製品の製品名に関する問合せの実行に従ってデータストア115から取得されるべき製品および関係する販売機会についての記録によって表わされる例示的な構成グラフ500を示す。製品記録は、問合せによってアクセスされるべき、データストア115に格納されたデータを示す。
表1に示されるように、製品記録は、対応する販売機会記録内の対応する製品名フィールドと一致する製品名フィールド値を有する。特定の製品に関係付けられた販売機会記録についての問合せは、販売機会記録が関係付けられている特定の製品の製品名値に一致する特定の製品名値を有する製品名フィールドをサーチし得る。製品と販売機会との間の関係は、たとえば、潜在的な顧客が製品に関心を表わしており、その関心が顧客に関連付けられた関連する販売機会記録へのエントリとしてデータストア115内に取込まれるたびに確立され得る。当該関心は、販売者、ウェブサイトフォーム、手書きの情報カードからのデータ入力などによって取込まれてもよい。
表1.静的にリンクされた関係する販売機会記録を含む製品記録を表わす例示的な構成グラフ500
Figure 0007472155000001

Figure 0007472155000002
以下の表2に、関係するエンティティ間の動的にリンクされた関係を用いて製品記録が格納されていることを除いて、動作850における指定済み製品の製品名に関する問合せの実行に従ってデータストア115から取得されるべき製品および関係する販売機会についての記録を含む構成グラフ500についての同様の例を示す。エンティティと当該関係するエンティティとの間で共有されるフィールドの名前によって関係が識別されている表1に示される静的にリンクされた関係とは対照的に、表2の動的にリンクされた関係は、エンティティと当該関係するエンティティとの間の動的リンクデータ構造によって確立される。関係が変化すると、クライアントアプリケーション135は、クライアントデバイス130に搭載されたデータキャッシュのデータ構造内のリンクを修正し得る。クライアントアプリケーション135は、構成グラフ500を実行して、データストア115に格納されたデータからクライアントデバイス130に搭載されたデータキャッシュも更新し得る。
表2.動的にリンクされた関係する販売機会記録を有する製品記録を含む例示的な構成グラフ500
Figure 0007472155000003

Figure 0007472155000004
一実施形態では、構成グラフ500は、販売者が販売している製品に関係付けられた販売出張旅行で販売者が訪問しようとしている地理的範囲に関するすべての販売機会を含み得る。構成グラフ500は、販売者が手動で行なわなくても自動的に、販売者にとって次回の販売出張旅行に必要となる情報でクライアントデバイス130を更新し得る。販売者は、販売者の販売出張旅行前にクライアントデバイス130のデータキャッシュを自動的に更新するために、構成グラフ500を含むデータファイルを販売出張旅行前にクライアントアプリケーション135にロードしてもよい。
さまざまな実施形態において、構成グラフ500は、クライアントデバイス130上にローカルに格納されたデータが、必要に応じて予測される前に自動的に更新されることを容易にし得る。そうすることにより、データが必要なときにクライアントアプリケーション135によるデータストア115へのアクセスが遅くなるかまたはアクセスができなくなるという問題を回避し得る。
さまざまな実施形態において、構成グラフ500はクライアントアプリケーション135内のメモリに格納されており、これにより、販売者がクライアントアプリケーション135に署名するたびに、構成グラフ500がトsラバースされ、クライアントデバイス130のデータキャッシュがデータストア115に格納された現在のデータに従って更新されてから、販売者がクライアントアプリケーション135を使用し始めることとなる。
さまざまな実施形態において、構成グラフ500内のあるエンティティ510に対応する持続エンティティ210がクライアントアプリケーション135において更新されるたびに構成グラフ500がトラバースされ得ることで、データストア115からダウンロードされたデータによる持続エンティティ210の更新によって影響を受ける任意のエンティティ600および/または関係するエンティティ640をリフレッシュまたは更新し得る。
構成グラフ500は、データストア115からダウンロードされたデータから、クライアントデバイス130上に残っているデータの効率的な更新を容易にする。これは、クライアントデバイス130が含むデータ用メモリおよび記憶空間の量がデータストア115の場合よりもかなり少ないことと、クライアントデバイス130とデータストア115をホストするサーバ110との間のネットワーク120が有する帯域幅が限られており、このネットワーク120がしばしば利用できなくなることとを考慮すると、重要であるとともに有用である。
5.コンピュータネットワークおよびクラウドネットワーク
1つ以上の実施形態では、コンピュータネットワークは、1組のノード間の接続性を提供する。これらのノードは、互いにローカルおよび/またはリモートであってもよい。これらのノードは、1組のリンクによって接続される。リンクの例は、同軸ケーブル、無被覆ツイストケーブル、銅ケーブル、光ファイバ、および仮想リンクを含む。
ノードのサブセットはコンピュータネットワークを実装する。そのようなノードの例は、スイッチ、ルータ、ファイアウォール、およびネットワークアドレストランスレータ(network address translator:NAT)を含む。ノードの他のサブセットはコンピュータネットワークを用いる。そのようなノード(「ホスト」とも呼ばれる)は、クライアントプロセスおよび/またはサーバプロセスを実行し得る。クライアントプロセスは、コンピューティングサービス(たとえば、特定のアプリケーションの実行、および/または特定の量のデータの格納など)についての要求を行なう。サーバプロセスは、要求されたサービスを実行することによって、および/または対応するデータを返すことによって応答する。
コンピュータネットワークは、物理的リンクによって接続された物理的ノードを含む物理的ネットワークであってもよい。物理的ノードとは任意のデジタルデバイスである。物理的ノードは、ハードウェアスイッチ、ハードウェアルータ、ハードウェアファイアウォール、およびハードウェアNATなどの特定機能のハードウェアデバイスであってもよい。これに加えて、またはこれに代えて、物理的ノードは、それぞれの機能を実行するさまざまな仮想マシンおよび/またはアプリケーションを実行するように構成された汎用マシンであってもよい。物理的リンクとは、2つ以上の物理的ノードを接続する物理的媒体である。リンクの例は、同軸ケーブル、無被覆ツイストケーブル、銅ケーブル、および光ファイバを含む。
コンピュータネットワークは、オーバーレイネットワークであってもよい。オーバーレイネットワークとは、別のネットワーク(物理的ネットワークなど)の上に実装された論理的ネットワークである。オーバーレイネットワークにおける各ノードは、下位ネットワークにおけるそれぞれのノードに対応する。よって、オーバーレイネットワークにおける各ノードは、(オーバーレイノードをアドレス指定するための)オーバーレイアドレスと、(オーバーレイノードを実現するアンダーレイノードをアドレス指定するための)アンダーレイアドレスとの双方に関連付けられる。オーバーレイノードは、デジタルデバイスおよび/またはソフトウェアプロセス(仮想マシン、アプリケーションインスタンス、またはスレッドなど)であってもよい。オーバーレイノード同士を接続するリンクは、下位ネットワークを通るトンネルとして実現される。トンネルの両端のオーバーレイノードは、当該オーバーレイノード同士の間の下位マルチホップ経路を、単一の論理的リンクとして扱う。カプセル化および非カプセル化によってトンネリングが実行される。
ある実施形態では、クライアントは、コンピュータネットワークに対してローカルおよび/またはリモートであってもよい。クライアントは、コンピュータネットワークに、プライベートネットワークまたはインターネットなどの他のコンピュータネットワークを介してアクセスしてもよい。クライアントは、HTTPなどの通信プロトコルを用いて、コンピュータネットワークに要求を通信してもよい。要求は、クライアントインターフェイス(ウェブブラウザなど)、プログラムインターフェイス、またはアプリケーションプログラミングインターフェイス(application programming interface:API)といったインターフェイスを通して通信される。
ある実施形態では、コンピュータネットワークは、クライアントとネットワークリソースとの間に接続性を提供する。ネットワークリソースは、サーバプロセスを実行するように構成されたハードウェアおよび/またはソフトウェアを含む。ネットワークリソースの例は、プロセッサ、データ記憶装置、仮想マシン、コンテナ、および/またはソフトウェアアプリケーションを含む。ネットワークリソースは、複数のクライアント間で共有される。クライアントは互いから独立して、コンピュータネットワークにコンピューティングサービスを要求する。ネットワークリソースは、オンデマンドベースで要求および/またはクライアントに動的に割り当てられる。各要求および/またはクライアントに割り当てられたネットワークリソースは、たとえば、(a)特定のクライアントによって要求されたコンピューティングサービス、(b)特定のテナントによって要求された、集約されたコンピューティングサービス、および/または、(c)コンピュータネットワークに要求された、集約されたコンピューティングサービス、に基づいて拡大または縮小されてもよい。そのようなコンピュータネットワークは「クラウドネットワーク」とも称され得る。
ある実施形態では、サービスプロバイダは、クラウドネットワークを1人以上のエンドユーザに提供する。ソフトウェア・アズ・ア・サービス(Software-as-a-Service:SaaS)、プラットフォーム・アズ・ア・サービス(Platform-as-a-Service:PaaS)、およびインフラストラクチャ・アズ・ア・サービス(Infrastructure-as-a-Service :IaaS)を含むもののそれらに限定されない、さまざまなサービスモデルが、クラウドネットワークによって実現され得る。SaaSでは、サービスプロバイダは、ネットワークリソース上で実行されるサービスプロバイダのアプリケーションを使用する能力を、エンドユーザに提供する。PaaSでは、サービスプロバイダは、ネットワークリソース上にカスタムアプリケーションを配備する能力を、エンドユーザに提供する。カスタムアプリケーションは、サービスプロバイダによってサポートされるプログラミング言語、ライブラリ、サービス、およびツールを用いて作成され得る。IaaSでは、サービスプロバイダは、ネットワークリソースによって提供される処理、記憶、ネットワーク、および他の基本的コンピューティングリソースをプロビジョニングする能力を、エンドユーザに提供する。オペレーティングシステムを含む任意のアプリケーションが、ネットワークリソース上に配備され得る。
ある実施形態では、プライベートクラウド、パブリッククラウド、およびハイブリッドクラウドを含むもののそれらに限定されない、さまざまな配備モデルがコンピュータネットワークによって実現され得る。プライベートクラウドでは、ネットワークリソースは、1つ以上のエンティティからなる特定のグループによる独占的使用のためにプロビジョニングされる(ここで用いられる「エンティティ」という語は、企業、組織、人または他のエンティティを指す)。ネットワークリソースは、エンティティからなる特定のグループの構内に対してローカルおよび/またはリモートであってもよい。パブリッククラウドでは、クラウドリソースは、互いに独立した複数のエンティティ(「テナント」または「顧客」とも称される)のためにプロビジョニングされる。コンピュータネットワークおよびそのネットワークリソースは、異なるテナントに対応するクライアントによってアクセスされる。そのようなコンピュータネットワークは、「マルチテナントコンピュータネットワーク」と称されることもある。いくつかのテナントは、異なる時間に、および/または同じ時間に、同じ特定のネットワークリソースを用いてもよい。ネットワークリソースは、テナントの構内に対してローカルおよび/またはリモートであってもよい。ハイブリッドクラウドでは、コンピュータネットワークは、プライベートクラウドとパブリッククラウドとを含む。プライベートクラウドとパブリッククラウドとの間のインターフェイスが、データおよびアプリケーション可搬性を可能にする。プライベートクラウドに格納されたデータと、パブリッククラウドに格納されたデータとは、インターフェイスを通して交換されてもよい。プライベートクラウドで実現されるアプリケーションと、パブリッククラウドで実現されるアプリケーションとは、互いに対する従属性を有していてもよい。プライベートクラウドにおけるアプリケーションからパブリッククラウドにおけるアプリケーションへの(逆もまた同様)呼出しが、インターフェイスを通して実行されてもよい。
ある実施形態では、マルチテナントコンピュータネットワークのテナントは互いに独立している。たとえば、1つのテナントのビジネスまたは事業は、別のテナントのビジネスまたは事業とは別のものであり得る。さまざまなテナントが、コンピュータネットワークに対してさまざまなネットワーク要件を要求し得る。ネットワーク要件の例は、処理速度、データ記憶量、セキュリティ要件、性能要件、スループット要件、待ち時間要件、回復力要件、サービス品質(Quality of Service:QoS)要件、テナント分離、および/または一貫性を含む。同じコンピュータネットワークが、さまざまなテナントによって要求されるさまざまなネットワーク要件を実現する必要があり得る。
1つ以上の実施形態では、マルチテナントコンピュータネットワークにおいて、さまざまなテナントのアプリケーションおよび/またはデータが互いに共有されないことを確実にするために、テナント分離が実現される。さまざまなテナント分離アプローチが用いられてもよい。
ある実施形態では、各テナントは、テナントIDに関連付けられる。マルチテナントコンピュータネットワークの各ネットワークリソースが、テナントIDでタグ付けされる。テナントと特定のネットワークリソースとが同じテナントIDに関連付けられている場合のみ、テナントは、特定のネットワークリソースへのアクセスを許可される。
ある実施形態では、各テナントはテナントIDに関連付けられている。コンピュータネットワークによって実現された各アプリケーションが、テナントIDでタグ付けされている。これに加えて、またはこれに代えて、コンピュータネットワークによって格納された各データ構造および/またはデータセットが、テナントIDでタグ付けされている。テナントと特定のアプリケーション、データ構造、および/またはデータセットとが同じテナントIDに関連付けられている場合のみ、テナントは、特定のアプリケーション、データ構造、および/またはデータセットへのアクセスを許可される。
一例として、マルチテナントコンピュータネットワークによって実現される各データベースはテナントIDでタグ付けされてもよい。対応するテナントIDに関連付けられたテナントのみが、特定のデータベースのデータにアクセスしてもよい。別の例として、マルチテナントコンピュータネットワークによって実現されたデータベースにおける各エントリが、テナントIDでタグ付けされてもよい。対応するテナントIDに関連付けられたテナントのみが、特定のエントリのデータにアクセスしてもよい。しかしながら、データベースは複数のテナントによって共有されてもよい。
ある実施形態では、サブスクリプションリストは、どのテナントがどのアプリケーションにアクセスするための認証を有するかを示す。アプリケーションごとに、アプリケーションへのアクセスを認証されたテナントのテナントIDのリストが格納されている。テナントのテナントIDが、特定のアプリケーションに対応する申し込みリストに含まれる場合のみ、テナントは、特定のアプリケーションへのアクセスを許可される。
ある実施形態では、異なるテナントに対応するネットワークリソース(デジタルデバイス、仮想マシン、アプリケーションインスタンス、およびスレッドなど)同士は、マルチテナントコンピュータネットワークによって維持されるテナント特有オーバーレイネットワークに分離される。一例として、テナントオーバーレイネットワークにおける任意の発信元デバイスからのパケットは、同じテナントオーバーレイネットワーク内の他のデバイスにのみ送信され得る。テナントオーバーレイネットワーク上の発信元デバイスから他のテナントオーバーレイネットワークにおけるデバイスへの送信をいずれも禁止するために、カプセル化トンネルが使用される。具体的には、発信元デバイスから受信されたパケットは、外部パケット内でカプセル化される。外部パケットは、(テナントオーバーレイネットワークにおける発信元デバイスと通信する)第1のカプセル化トンネルエンドポイントから、(テナントオーバーレイネットワークにおける宛先デバイスと通信する)第2のカプセル化トンネルエンドポイントへ送信される。第2のカプセル化トンネルエンドポイントは、発信元デバイスによって送信された元のパケットを取得するために、外部パケットを非カプセル化する。元のパケットは、第2のカプセル化トンネルエンドポイントから、同じ特定のオーバーレイネットワークにおける宛先デバイスへ送信される。
6.その他;拡張
実施形態は、ハードウェアプロセッサを含むとともに本明細書に記載された動作および/または添付の特許請求の範囲のいずれかに列挙される動作のいずれかを実行するように構成された、1つ以上のデバイスを含むシステムを対象とする。
ある実施形態では、非一時的コンピュータ可読記憶媒体は、1つ以上のハードウェアプロセッサによって実行されると、本明細書に記載される動作および/または特許請求の範囲のいずれかに列挙される動作のいずれかを実行させる命令を備える。
ここに説明された特徴と機能性との任意の組合せが、1つ以上の実施形態に従って用いられてもよい。前述の明細書では、実施形態は、実現例ごとに異なり得る多くの具体的詳細を参照して説明されてきた。したがって、明細書および添付の図面は、限定的な意味ではなく例示的な意味で考慮されるべきである。本発明の範囲の唯一かつ排他的な指標、および、出願人によって本発明の範囲であることが意図されるものは、任意の後の補正を含めて、そのような特許請求の範囲が生じる特定の形態での、本願から生じる特許請求の範囲のセットの文字通りかつ同等の範囲である。
7.ハードウェア概要
一実施形態に従うと、ここに説明される手法は、1つ以上の専用コンピューティングデバイスによって実現される。これらの専用コンピューティングデバイスは、これらの手法を実行するためにハードワイヤードされてもよく、もしくは、これらの手法を実行するように永続的にプログラムされた1つ以上の特定用途向け集積回路(application-specific integrated circuit:ASIC)、フィールドプログラマブルゲートアレイ(field programmable gate array:FPGA)、もしくはネットワーク処理ユニット(network processing unit:NPU)といったデジタル電子デバイスを含んでいてもよく、または、ファームウェア、メモリ、他の記憶装置、もしくはそれらの組合せにおいてプログラム命令に従ってこれらの手法を実行するようにプログラムされた1つ以上の汎用ハードウェアプロセッサを含んでいてもよい。そのような専用コンピューティングデバイスはまた、これらの手法を遂行するために、カスタムハードワイヤードロジック、ASIC、FPGA、またはNPUをカスタムプログラミングと組合わせてもよい。当該専用コンピューティングデバイスは、デスクトップコンピュータシステム、ポータブルコンピュータシステム、手持ち型デバイス、ネットワーキングデバイス、または、これらの手法を実現するためにハードワイヤードロジックおよび/もしくはプログラムロジックを組込んだ任意の他のデバイスであってもよい。
たとえば、図9は、本発明の一実施形態が実現され得るコンピュータシステム900を示すブロック図である。コンピュータシステム900は、情報を通信するためのバス902または他の通信機構と、情報を処理するためにバス902と結合されるハードウェアプロセッサ904とを含む。ハードウェアプロセッサ904は、たとえば、汎用マイクロプロセッサであってもよい。
コンピュータシステム900はまた、プロセッサ904によって実行されるべき命令および情報を格納するためにバス902に結合された、ランダムアクセスメモリ(random access memory:RAM)または他の動的記憶装置などのメインメモリ906を含む。メインメモリ906はまた、プロセッサ904によって実行されるべき命令の実行中に一時的な変数または他の中間情報を格納するために使用されてもよい。そのような命令は、プロセッサ904にアクセス可能な非一時的記憶媒体に格納されると、コンピュータシステム900を、命令で特定された動作を実行するようにカスタマイズされた専用マシンにする。
コンピュータシステム900はさらに、プロセッサ904のための静的情報および命令を格納するためにバス902に結合された読出専用メモリ(read only memory:ROM)908または他の静的記憶装置を含む。磁気ディスクまたは光ディスクなどの記憶装置910が設けられ、情報および命令を格納するためにバス902に結合される。
コンピュータシステム900は、情報をコンピュータユーザへ表示するための陰極線管(cathode ray tube:CRT)などのディスプレイ912に、バス902を介して結合され得る。英数字キーおよび他のキーを含む入力装置914が、情報およびコマンド選択をプロセッサ904へ通信するためにバス902に結合される。別のタイプのユーザ入力装置は、方向情報およびコマンド選択をプロセッサ904へ通信するための、ならびに、ディスプレイ912上のカーソル移動を制御するための、マウス、トラックボール、またはカーソル方向キーなどのカーソル制御装置916である。この入力装置は典型的には、第1の軸(たとえばx)および第2の軸(たとえばy)という2つの軸において2つの自由度を有しており、これにより、当該装置が平面における位置を特定することを可能にする。
コンピュータシステム900は、コンピュータシステムと組合されることでコンピュータシステム900を専用マシンにするかまたは専用マシンになるようプログラムする、カスタマイズされたハードワイヤードロジック、1つ以上のASICもしくはFPGA、ファームウェアおよび/またはプログラムロジックを用いて、ここに説明された手法を実現してもよい。一実施形態に従うと、本明細書中の手法は、メインメモリ906に含まれる1つ以上の命令の1つ以上のシーケンスをプロセッサ904が実行することに応答して、コンピュータシステム900によって実行される。このような命令は記憶装置910などの別の記憶媒体からメインメモリ906に読込まれてもよい。メインメモリ906に含まれる命令のシーケンスを実行することにより、ここに説明されたプロセスステップをプロセッサ904に実行させる。代替的な実施形態では、ハードワイヤード回路が、ソフトウェア命令の代わりに、またはソフトウェア命令と組合わせて使用されてもよい。
本明細書中において用いられる「記憶媒体」という語は、マシンを特定の態様で動作させるデータおよび/または命令を格納する任意の非一時的媒体を指す。そのような記憶媒体は、不揮発性媒体および/または揮発性媒体を含み得る。不揮発性媒体は、たとえば、記憶装置910などの光ディスクまたは磁気ディスクを含む。揮発性媒体は、メインメモリ906などのダイナミックメモリを含む。記憶媒体の一般的な形態は、たとえば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープ、または任意の他の磁気データ記憶媒体、CD-ROM、任意の他の光学データ記憶媒体、穴のパターンを有する任意の物理的媒体、RAM、PROM、EPROM、FLASH-EPROM、NVRAM、任意の他のメモリチップまたはカートリッジ、連想メモリ(content-addressable memory:CAM)、および3値連想メモリ(ternary content-addressable memory:TCAM)を含む。
記憶媒体は伝送媒体とは異なるが、伝送媒体とともに用いられてもよい。伝送媒体は、記憶媒体間の情報の転送に関与する。たとえば、伝送媒体は、バス902を構成するワイヤを含む、同軸ケーブル、銅線、および光ファイバを含む。伝送媒体はまた、電波通信および赤外線データ通信時に生成されるような音波または光波の形態を取ることもできる。
さまざまな形態の媒体が、1つ以上の命令の1つ以上のシーケンスを実行のためにプロセッサ904へ搬送することに関与し得る。たとえば、命令は最初、リモートコンピュータの磁気ディスクまたはソリッドステートドライブ上で搬送され得る。リモートコンピュータは、そのダイナミックメモリに命令をロードし、モデムを用いて電話回線を介して命令を送信し得る。コンピュータシステム900に対してローカルなモデムが、電話回線を介してデータを受信し、赤外線送信機を用いてデータを赤外線信号に変換し得る。赤外線検出器が、赤外線信号で搬送されたデータを受信し得るとともに、適切な回路がデータをバス902上に配置し得る。バス902はデータをメインメモリ906へ搬送し、そこから、プロセッサ904が命令を取出して実行する。メインメモリ906が受信した命令は、任意には、プロセッサ904による実行の前または後に、記憶装置910上に格納されてもよい。
コンピュータシステム900はまた、バス902に結合された通信インターフェイス918を含む。通信インターフェイス918は、ローカルネットワーク722に接続されたネットワークリンク920への双方向データ通信結合を提供する。たとえば、通信インターフェイス918は、総合サービスデジタル網(integrated services digital network:ISDN)カード、ケーブルモデム、衛星モデム、または、対応するタイプの電話回線へのデータ通信接続を提供するためのモデムであってもよい。別の例として、通信インターフェイス918は、互換性のあるLANへのデータ通信接続を提供するためのローカルエリアネットワーク(local area network:LAN)カードであってもよい。無線リンクが実現されてもよい。任意のそのような実現例では、通信インターフェイス918は、さまざまなタイプの情報を表わすデジタルデータストリームを搬送する電気信号、電磁信号、または光信号を送受信する。
ネットワークリンク920は典型的には、1つ以上のネットワークを通して、他のデータデバイスにデータ通信を提供する。たとえば、ネットワークリンク920は、ローカルネットワーク922を介して、ホストコンピュータ924に、またはインターネットサービスプロバイダ(Internet Service Provider:ISP)926によって操作されるデータ機器に接続し得る。ISP926は次に、現在一般的に「インターネット」928と称されている全世界的パケットデータ通信ネットワークを通して、データ通信サービスを提供する。ローカルネットワーク922およびインターネット928はともに、デジタルデータストリームを搬送する電気信号、電磁信号または光信号を用いる。さまざまなネットワークを通る信号、および、通信インターフェイス918を通るネットワークリンク920上の信号はコンピュータシステム900との間でデジタルデータを搬送するものであって、伝送媒体の例示的な形態である。
コンピュータシステム900は、ネットワーク、ネットワークリンク920、および通信インターフェイス918を通して、メッセージを送信し、プログラムコードを含むデータを受信し得る。インターネットの例では、サーバ930が、インターネット928、ISP926、ローカルネットワーク922、および通信インターフェイス918を通して、アプリケーションプログラムのための要求されたコードを送信し得る。
受信されたコードは、受信時にプロセッサ904によって実行されてもよく、および/または、後で実行するために記憶装置910または他の不揮発性記憶装置に格納されてもよい。
上述の明細書では、本発明の実施形態は、実現例によって異なり得る多くの具体的詳細を参照して説明されてきた。したがって、明細書および添付の図面は、限定的な意味ではなく例示的な意味で考慮されるべきである。本発明の範囲の唯一かつ排他的な指標、および、出願人によって本発明の範囲であることが意図されるものは、任意の後の補正を含めて、そのような特許請求の範囲が生じる特定の形態での、本願から生じる特許請求の範囲のセットの文字通りかつ同等の範囲である。

Claims (20)

  1. 1つ以上のプロセッサによって実行されると以下の動作を実行させる命令を含むコンピュータプログラムであって、前記以下の動作は、
    第1のオブジェクトタイプに基づいてデータキャッシュを更新する動作を含み、前記更新する動作は、少なくとも、
    メタデータに格納されるとともに前記第1のオブジェクトタイプに関連付けられた第1のデータ取得関係を識別することと、
    前記第1のデータ取得関係を分析して、前記第1のオブジェクトタイプの記録に基づいて前記データキャッシュを更新するために第2のオブジェクトタイプの記録を取得するべきであると判定することと、
    前記第1のオブジェクトタイプの第1の複数の記録から、前記第1のオブジェクトタイプの第1のフィールドに対応する第1の複数の値を識別すること、とによって行なわれ、
    前記第1の複数の値は第1の値および第2の値を含み、前記以下の動作はさらに、
    1つ以上の問合せの第1のセットを生成して、
    (a)前記第2のオブジェクトタイプの第2の複数の記録のうち、前記第2のオブジェクトタイプの第2のフィールドに関係する前記第1の値を含む第1のサブセットと、
    (b)前記第2のオブジェクトタイプの前記第2の複数の記録のうち、前記第2のオブジェクトタイプの前記第2のフィールドに関係する前記第2の値を含む第2のサブセットとを取得する動作と、
    前記1つ以上の問合せの第1のセットを実行して、前記第2の複数の記録の前記第1のサブセットおよび前記第2のサブセットを取得する動作と、
    前記第2の複数の記録の前記第1のサブセットおよび前記第2のサブセットで前記データキャッシュを更新する動作とを含む、コンピュータプログラム
  2. 前記以下の動作はさらに、
    前記第1の複数の値を識別する前に、
    前記第1のオブジェクトタイプのすべての記録に関して問合せを実行して、前記第1のオブジェクトタイプの前記第1の複数の記録を取得する動作を含む、請求項1に記載のコンピュータプログラム
  3. 前記第1の複数の記録を取得する動作は、前記第1のオブジェクトタイプに依存しない(agnostic)、請求項2に記載のコンピュータプログラム
  4. 前記1つ以上の問合せは、前記第2のオブジェクトタイプに依存しない、請求項1~3のいずれかに記載のコンピュータプログラム
  5. 前記第2のオブジェクトタイプの前記第2の複数の記録の前記第1のサブセットおよび前記第2のサブセットで前記データキャッシュを更新する動作に応じて、前記第2のオブジェクトタイプに基づいて前記データキャッシュを再帰的に更新する動作を含み、前記更新する動作は、少なくとも、
    前記メタデータに格納されるとともに前記第2のオブジェクトタイプに関連付けられた第2のデータ取得関係を識別することと、
    前記第2のデータ取得関係を分析して、前記第2のオブジェクトタイプの記録に基づいて前記データキャッシュを更新するために第3のオブジェクトタイプの記録を取得するべきであると判定すること、とによって行なわれ、さらに、
    前記第2のオブジェクトタイプの前記第2の複数の記録の前記第1のサブセットおよび前記第2のサブセットから第2の複数の値を識別する動作を含み、
    前記第2の複数の値は第3の値および第4の値を含み、さらに、
    1つ以上の問合せの第2のセットを生成して、
    (a)前記第3のオブジェクトタイプの第3の複数の記録のうち、前記第3のオブジェクトタイプの第3のフィールドに関係する前記第3の値を含む第1のサブセットと、
    (b)前記第3のオブジェクトタイプの前記第3の複数の記録のうち、前記第3のオブジェクトタイプの前記第3のフィールドに関係する前記第4の値を含む第2のサブセットと、を取得する動作と、
    前記1つ以上の問合せの第2のセットを実行して、前記第3の複数の記録の前記第1のサブセットおよび前記第2のサブセットを取得する動作と、
    前記第3の複数の記録の前記第1のサブセットおよび前記第2のサブセットで前記データキャッシュを更新する動作とを含む、請求項1~4のいずれかに記載のコンピュータプログラム
  6. 前記1つ以上の問合せは、前記第2のオブジェクトタイプを前記第1のオブジェクトタプに関係付けるメタデータに基づいている、請求項1~5のいずれかに記載のコンピュータプログラム
  7. 前記第2の複数の記録の前記第1のサブセットおよび前記第2のサブセットを取得する動作は、ユーザによる前記第2の複数の記録のうち1つの記録についての要求の前に実行される、請求項1~6のいずれかに記載のコンピュータプログラム
  8. 前記第2の複数の記録の前記第1のサブセットおよび前記第2のサブセットを取得する動作は、データストアから前記第1の複数の記録のうちの少なくとも1つにアクセスするためにユニフォームリソースロケータ(uniform resource locator:URL)を指定する動作を含む、請求項1~7のいずれかに記載のコンピュータプログラム
  9. 1つ以上のプロセッサによって実行されると、前記第2の複数の記録の各々を表わすように第2の持続エンティティを作成させる命令をさらに格納する、請求項1~8のいずれかに記載のコンピュータプログラム
  10. 前記第1の複数の記録の各々は第1の持続エンティティによって表わされ、
    前記第2の持続エンティティに従って前記第2の複数の記録を処理するのと同じ実行可能命令のセットが、前記第1の持続エンティティに従って前記第1の複数の記録を処理する、請求項9に記載のコンピュータプログラム
  11. 前記第2のオブジェクトタイプの前記第2の複数の記録のうち前記第1のサブセットは、前記第1のオブジェクトタイプの前記第1の複数の記録に静的にリンクされている、請求項1~10のいずれかに記載のコンピュータプログラム
  12. 前記第2のオブジェクトタイプの前記第2の複数の記録のうち前記第1のサブセットは、前記第1のオブジェクトタイプの前記第1の複数の記録に動的にリンクされている、請求項1~10のいずれかに記載のコンピュータプログラム
  13. 再帰的データトラバースの方法であって、
    第1のオブジェクトタイプに基づいてデータキャッシュを更新するステップを含み、前記データキャッシュを更新するステップは、少なくとも、
    メタデータに格納されるとともに前記第1のオブジェクトタイプに関連付けられた第1のデータ取得関係を識別することと、
    前記第1のデータ取得関係を分析して、前記第1のオブジェクトタイプの記録に基づいて前記データキャッシュを更新するために第2のオブジェクトタイプの記録を取得するべきであると判定することと、
    前記第1のオブジェクトタイプの第1の複数の記録から、前記第1のオブジェクトタイプの第1のフィールドに対応する第1の複数の値を識別すること、とによって行なわれ、
    前記第1の複数の値は第1の値および第2の値を含み、前記方法はさらに、
    1つ以上の問合せの第1のセットを生成して、
    (a)前記第2のオブジェクトタイプの第2の複数の記録のうち、前記第2のオブジェクトタイプの第2のフィールドに関係する前記第1の値を含む第1のサブセットと、
    (b)前記第2のオブジェクトタイプの前記第2の複数の記録のうち、前記第2のオブジェクトタイプの前記第2のフィールドに関係する前記第2の値を含む第2のサブセットと、を取得するステップと、
    前記1つ以上の問合せの第1のセットを実行して、前記第2の複数の記録の前記第1のサブセットおよび前記第2のサブセットを取得するステップと、
    前記第2の複数の記録の前記第1のサブセットおよび前記第2のサブセットで前記データキャッシュを更新するステップと含む、方法。
  14. 前記第1の複数の値を識別する前に、
    前記第1のオブジェクトタイプのすべての記録に関して問合せを実行して、前記第1のオブジェクトタイプの前記第1の複数の記録を取得するステップをさらに含む、請求項13に記載の方法。
  15. 前記第1の複数の記録を取得するステップは前記第1のオブジェクトタイプに依存しない、請求項14に記載の方法。
  16. 前記1つ以上の問合せは前記第2のオブジェクトタイプに依存しない、請求項13~15のいずれかに記載の方法。
  17. 前記第2のオブジェクトタイプの前記第2の複数の記録の前記第1のサブセットおよび前記第2のサブセットで前記データキャッシュを更新するステップに応じて、前記第2のオブジェクトタイプに基づいて前記データキャッシュを再帰的に更新するステップを含み、前記データキャッシュを再帰的に更新するステップは、少なくとも、
    メタデータに格納されるとともに前記第2のオブジェクトタイプに関連付けられた第2のデータ取得関係を識別することと、
    前記第2のデータ取得関係を分析して、前記第2のオブジェクトタイプの記録に基づいて前記データキャッシュを更新するために第3のオブジェクトタイプの記録を取得するべきであると判定することと、
    前記第2のオブジェクトタイプの前記第2の複数の記録の前記第1のサブセットおよび前記第2のサブセットから第2の複数の値を識別すること、とによって行なわれ、
    前記第2の複数の値は第3の値および第4の値を含み、さらに、
    1つ以上の問合せの第2のセットを生成して、
    (a)前記第3のオブジェクトタイプの第3の複数の記録のうち、前記第3のオブジェクトタイプの第3のフィールドに関係する前記第3の値を含む第1のサブセットと、
    (b)前記第3のオブジェクトタイプの前記第3の複数の記録のうち、前記第3のオブジェクトタイプの前記第3のフィールドに関係する前記第4の値を含む第2のサブセットと、を取得するステップと、
    前記1つ以上の問合せの第2のセットを実行して、前記第3の複数の記録の前記第1のサブセットおよび前記第2のサブセットを取得するステップと、
    前記第3の複数の記録の前記第1のサブセットおよび前記第2のサブセットで前記データキャッシュを更新するステップとを含む、請求項13~16のいずれかに記載の方法。
  18. 前記1つ以上の問合せは、前記第2のオブジェクトタイプを前記第1のオブジェクトタイプに関係付けるメタデータに基づいている、請求項13~17のいずれかに記載の方法。
  19. 前記第2の複数の記録の前記第1のサブセットおよび前記第2のサブセットを取得するステップは、ユーザによる前記第2の複数の記録のうち1つの記録についての要求の前に実行される、請求項13~18のいずれかに記載の方法。
  20. 前記第2の複数の記録の各々を表わすように第2の持続エンティティを作成するステップをさらに含み、
    前記第1の複数の記録の各々は、第1の持続エンティティによって表わされ、
    前記第2の持続エンティティに従って前記第2の複数の記録を処理するのと同じ実行可能命令のセットが、前記第1の持続エンティティに従って前記第1の複数の記録を処理する、請求項13~19のいずれかに記載の方法。
JP2021547487A 2019-02-21 2020-01-24 再帰的データトラバースモデル Active JP7472155B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/282,178 US11132368B2 (en) 2019-02-21 2019-02-21 Recursive data traversal model
US16/282,178 2019-02-21
PCT/US2020/014977 WO2020171914A1 (en) 2019-02-21 2020-01-24 Recursive data traversal model

Publications (3)

Publication Number Publication Date
JP2022521070A JP2022521070A (ja) 2022-04-05
JPWO2020171914A5 JPWO2020171914A5 (ja) 2023-02-03
JP7472155B2 true JP7472155B2 (ja) 2024-04-22

Family

ID=69726777

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021547487A Active JP7472155B2 (ja) 2019-02-21 2020-01-24 再帰的データトラバースモデル

Country Status (5)

Country Link
US (2) US11132368B2 (ja)
EP (1) EP3928219A1 (ja)
JP (1) JP7472155B2 (ja)
CN (1) CN113424174A (ja)
WO (1) WO2020171914A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11593356B2 (en) * 2020-09-11 2023-02-28 ForgeRock, Inc. Never stale caching of effective properties

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005190221A (ja) 2003-12-25 2005-07-14 Sap Ag キャッシュ制御装置およびその方法ならびにコンピュータプログラム
JP2009187394A (ja) 2008-02-07 2009-08-20 Nec Corp 関連する情報を事前にキャッシュする予測型キャッシュ方法、そのシステム及びそのプログラム
EP2251802A1 (en) 2009-05-15 2010-11-17 MindBox B.V. Method and program for generating a subset of data from a database
US20150215386A1 (en) 2004-09-02 2015-07-30 Broadway Technology Llc Management of data object sharing among applications

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5758337A (en) * 1996-08-08 1998-05-26 Microsoft Corporation Database partial replica generation system
US6728726B1 (en) * 1999-03-05 2004-04-27 Microsoft Corporation Prefetching and caching persistent objects
US7062756B2 (en) * 2001-11-30 2006-06-13 Sun Microsystems, Inc. Dynamic object usage pattern learning and efficient caching
US7165075B2 (en) * 2002-07-20 2007-01-16 Microsoft Corporation Object graph faulting and trimming in an object-relational database system
JP4148525B2 (ja) * 2005-12-27 2008-09-10 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムの実行に必要なデータをデータベースから先読みするシステム
US9430552B2 (en) * 2007-03-16 2016-08-30 Microsoft Technology Licensing, Llc View maintenance rules for an update pipeline of an object-relational mapping (ORM) platform
WO2012037557A1 (en) * 2010-09-17 2012-03-22 Oracle International Corporation Pattern-based construction and extension of enterprise applications in a cloud computing environment
US20120036146A1 (en) * 2010-10-26 2012-02-09 ParElastic Corporation Apparatus for elastic database processing with heterogeneous data
US8612405B1 (en) * 2011-09-30 2013-12-17 Emc Corporation System and method of dynamic data object upgrades
US10191963B2 (en) * 2015-05-29 2019-01-29 Oracle International Corporation Prefetching analytic results across multiple levels of data
US10339454B2 (en) * 2016-01-07 2019-07-02 Red Hat, Inc. Building a hybrid reactive rule engine for relational and graph reasoning
US10846283B2 (en) * 2017-06-13 2020-11-24 Oracle International Corporation Method and system for defining an adaptive polymorphic data model

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005190221A (ja) 2003-12-25 2005-07-14 Sap Ag キャッシュ制御装置およびその方法ならびにコンピュータプログラム
US20150215386A1 (en) 2004-09-02 2015-07-30 Broadway Technology Llc Management of data object sharing among applications
JP2009187394A (ja) 2008-02-07 2009-08-20 Nec Corp 関連する情報を事前にキャッシュする予測型キャッシュ方法、そのシステム及びそのプログラム
EP2251802A1 (en) 2009-05-15 2010-11-17 MindBox B.V. Method and program for generating a subset of data from a database

Also Published As

Publication number Publication date
EP3928219A1 (en) 2021-12-29
US11132368B2 (en) 2021-09-28
CN113424174A (zh) 2021-09-21
WO2020171914A1 (en) 2020-08-27
US20200272629A1 (en) 2020-08-27
JP2022521070A (ja) 2022-04-05
US20210382901A1 (en) 2021-12-09

Similar Documents

Publication Publication Date Title
US11755580B2 (en) Method and system for defining an object-agnostic offlinable synchronization model
US11803540B2 (en) Method and system for defining an adaptive polymorphic data model
US11151098B2 (en) Enabling multi-tenant access to respective isolated data sets organized using different application schemas
US11327964B2 (en) Integration query builder framework
US9418168B2 (en) Providing cloud-based, generic OData mashup services using an on-demand service
CN111417942A (zh) 使用多变量http请求来识别http资源
JP2024028956A (ja) ステートレスアプリケーションにおいてほぼ一定時間に大きな階層のブラウズおよびランダムアクセスを行うこと
US20220335071A1 (en) Storing and versioning hierarchical data in a binary format
US10289617B2 (en) Accessing on-premise and off-premise datastores that are organized using different application schemas
JP7472155B2 (ja) 再帰的データトラバースモデル
US11693906B2 (en) Method and system for using access patterns to suggest or sort objects
US11789787B2 (en) Communicating between applications using api mapping
US11494373B2 (en) Nested query modification tool
US11429376B2 (en) Run-time modification of an application definition schema that controls the behavior of a software application
US20220197906A1 (en) Generating filtered data sets for efficient query execution
US11528206B2 (en) Identifying and mapping applications to devices in a network

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230119

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230119

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240229

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: 20240312

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240410

R150 Certificate of patent or registration of utility model

Ref document number: 7472155

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150