JP2024504556A - データ処理システムによって管理されるデータエンティティにアクセスするためのシステム及び方法 - Google Patents

データ処理システムによって管理されるデータエンティティにアクセスするためのシステム及び方法 Download PDF

Info

Publication number
JP2024504556A
JP2024504556A JP2023534631A JP2023534631A JP2024504556A JP 2024504556 A JP2024504556 A JP 2024504556A JP 2023534631 A JP2023534631 A JP 2023534631A JP 2023534631 A JP2023534631 A JP 2023534631A JP 2024504556 A JP2024504556 A JP 2024504556A
Authority
JP
Japan
Prior art keywords
data
query
executable
attributes
queries
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.)
Pending
Application number
JP2023534631A
Other languages
English (en)
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 JP2024504556A publication Critical patent/JP2024504556A/ja
Pending legal-status Critical Current

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/242Query formulation
    • G06F16/2425Iterative querying; Query formulation based on the results of a preceding query
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • 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/248Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Communication Control (AREA)

Abstract

少なくとも1つのデータストアを使用して、データ処理システムによって管理されるデータエンティティインスタンスについての情報を取得する技法。この技法は、少なくとも1つのデータストアに記憶された第1のデータエンティティのインスタンスを識別するための情報を含む第1の部分と、第1のデータエンティティの少なくとも1つの属性を示す第2の部分とを含むクエリを取得することと、クエリから、第1の組の1つ又は複数の実行可能クエリ及び第2の組の1つ又は複数の実行可能クエリを含む複数の実行可能クエリを生成することであって、第1の部分を使用して、第1のデータエンティティのインスタンスを識別するための第1の組の実行可能クエリを生成すること及び第2の部分を使用して、第1のデータエンティティのインスタンスの属性値を取得するための第2の組の実行可能クエリを生成することを含む、生成することと、複数の実行可能クエリを実行して、クエリの結果を取得することとを含む。

Description

関連出願の相互参照
本願は、米国特許法第119条(e)の下、2021年1月31日付けで出願された「SYSTEMS AND METHODS FOR ACCESSING DATA ENTITIES MANAGED BY A DATA PROCESSING SYSTEM」という名称の米国仮特許出願第63/143,895号の優先権の利益を主張するものである。
分野
本開示の態様は、データエンティティ及びデータエンティティインスタンスを使用して、データ処理システムによって管理されるデータへのアクセス(例えば問い合わせ、作成、更新又は削除)を管理する技法に関する。
背景
近代のデータ処理システムは、膨大な量のデータ(例えば、数百万、数十億又は数兆ものデータレコード)を管理し、これらのデータにどのようにアクセスし得るかを管理する。データ処理システムは、管理するデータにアクセスするために複数のインタフェースを提供し得る。例えば、データ処理システムは、ユーザが、データ処理システムによって管理されるデータに対して動作(例えば、問い合わせ、更新、削除、作成)を実行できるようにするグラフィカルユーザインタフェース(GUI)を提供し得る。別の例として、データ処理システムは、ソフトウェアプログラムが、データ処理システムによって管理されるデータに対して動作を実行できるようにするアプリケーションプログラミングインタフェース(API)を提供し得る。
概要
幾つかの実施形態は、データ処理システムによって実行される、クエリに応答してデータエンティティの第1のインスタンスの第1の属性値を計算効率的に取得する方法を提供し、本方法は、データ処理システムのアプリケーションプログラミングインタフェース(API)を通して、データにアクセスするためのクエリを取得することであって、クエリは、少なくとも1つのデータストアに記憶されたデータエンティティの少なくとも第1のインスタンスを識別するための情報を含む第1の部分及び値を取得するデータエンティティの少なくとも1つの属性を示す第2の部分を含む、取得することと、第1の組の1つ又は複数の実行可能クエリ及び第2の組の1つ又は複数の実行可能クエリを含む複数の実行可能クエリを生成することであって、クエリの第1の部分を使用して、少なくとも1つのデータストアに記憶されたデータエンティティの少なくとも第1のインスタンスを識別するための第1の組の実行可能クエリを生成すること、クエリの第2の部分を使用して、第1の組の実行可能クエリを使用して識別されたデータエンティティの少なくとも第1のインスタンスの属性値を取得するための第2の組の実行可能クエリを生成することであって、属性値は、第1の属性値を含む、生成することを含む、生成することと、複数の実行可能クエリを実行することにより、APIを介して提供されたクエリの結果を取得することであって、結果は、データエンティティの第1のインスタンスの少なくとも第1の属性値を含む、取得することと、データエンティティの第1のインスタンスの少なくとも第1の属性値を含む結果の少なくとも幾つかを出力することとを含む
幾つかの実施形態は、データ処理システムを提供し、本データ処理システムは、少なくとも1つのコンピュータハードウェアプロセッサと、プロセッサ実行可能命令を記憶する少なくとも1つの非一時的コンピュータ可読記憶媒体とを含み、プロセッサ実行可能命令は、少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、少なくとも1つのコンピュータハードウェアプロセッサに、クエリに応答してデータエンティティの第1のインスタンスの第1の属性値を取得する方法を実行させ、方法は、データ処理システムのアプリケーションプログラミングインタフェース(API)を通して、データにアクセスするためのクエリを取得することであって、クエリは、少なくとも1つのデータストアに記憶されたデータエンティティの少なくとも第1のインスタンスを識別するための情報を含む第1の部分及び値を取得するデータエンティティの少なくとも1つの属性を示す第2の部分を含む、取得することと、第1の組の1つ又は複数の実行可能クエリ及び第2の組の1つ又は複数の実行可能クエリを含む複数の実行可能クエリを生成することであって、クエリの第1の部分を使用して、少なくとも1つのデータストアに記憶されたデータエンティティの少なくとも第1のインスタンスを識別するための第1の組の実行可能クエリを生成すること、クエリの第2の部分を使用して、第1の組の実行可能クエリを使用して識別されたデータエンティティの少なくとも第1のインスタンスの属性値を取得するための第2の組の実行可能クエリを生成することであって、属性値は、第1の属性値を含む、生成することを含む、生成することと、複数の実行可能クエリを実行することにより、APIを介して提供されたクエリの結果を取得することであって、結果は、データエンティティの第1のインスタンスの少なくとも第1の属性値を含む、取得することと、データエンティティの第1のインスタンスの少なくとも第1の属性値を含む結果の少なくとも幾つかを出力することとを含む。
幾つかの実施形態は、プロセッサ実行可能命令を記憶する少なくとも1つの非一時的コンピュータ可読記憶媒体を提供し、プロセッサ実行可能命令は、少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、少なくとも1つのコンピュータハードウェアプロセッサに、クエリに応答してデータエンティティの第1のインスタンスの第1の属性値を取得する方法を実行させ、方法は、データ処理システムのアプリケーションプログラミングインタフェース(API)を通して、データにアクセスするためのクエリを取得することであって、クエリは、少なくとも1つのデータストアに記憶されたデータエンティティの少なくとも第1のインスタンスを識別するための情報を含む第1の部分及び値を取得するデータエンティティの少なくとも1つの属性を示す第2の部分を含む、取得することと、第1の組の1つ又は複数の実行可能クエリ及び第2の組の1つ又は複数の実行可能クエリを含む複数の実行可能クエリを生成することであって、クエリの第1の部分を使用して、少なくとも1つのデータストアに記憶されたデータエンティティの少なくとも第1のインスタンスを識別するための第1の組の実行可能クエリを生成すること、クエリの第2の部分を使用して、第1の組の実行可能クエリを使用して識別されたデータエンティティの少なくとも第1のインスタンスの属性値を取得するための第2の組の実行可能クエリを生成することであって、属性値は、第1の属性値を含む、生成することを含む、生成することと、複数の実行可能クエリを実行することにより、APIを介して提供されたクエリの結果を取得することであって、結果は、データエンティティの第1のインスタンスの少なくとも第1の属性値を含む、取得することと、データエンティティの第1のインスタンスの少なくとも第1の属性値を含む結果の少なくとも幾つかを出力することとを含む。
幾つかの実施形態では、第1及び第2の組の実行可能クエリは、実行可能構造化クエリ言語(SQL)クエリを含む。
幾つかの実施形態では、第1の部分は、複数のデータエンティティの各々の1つ又は複数のインスタンスを識別するための情報を含み、複数のデータエンティティは、データエンティティを含み、第1の組の実行可能クエリを生成することは、複数のデータエンティティのそれぞれの特定のデータエンティティについて、少なくとも1つのデータストアに記憶されたデータエンティティのインスタンスを識別するための各実行可能クエリを生成することを含む。
幾つかの実施形態では、少なくとも1つの属性は、データエンティティの複数の属性を含み、第2の組の実行可能クエリを生成することは、複数の属性の少なくとも幾つかのそれぞれの特定の属性について、第1の組の実行可能クエリを使用して識別されたデータエンティティのインスタンスの特定の属性の値を取得するための各実行可能クエリを生成することを含む。
幾つかの実施形態では、複数の属性は、複数の動的属性を含み、第2の組の実行可能クエリを生成することは、複数の動的属性を動的属性のグループにグループ化することであって、グループの各々は、複数の動的属性の少なくとも1つを有する、グループ化することと、複数の動的属性のグループの各々について、データエンティティのインスタンスのグループ内の属性の値を取得するための各実行可能クエリを生成することとを含む。
幾つかの実施形態では、複数の動的属性をグループ化することは、動的属性のタイプに基づいて実行される。幾つかの実施形態では、複数の動的属性をグループ化することは、動的属性が少なくとも1つのデータストア内の同じテーブルに記憶されているか否かに基づいて実行される。幾つかの実施形態では、複数の動的属性をグループ化することは、動的属性がその値を共通継承パスに沿って継承するか否かに基づいて実行される。
幾つかの実施形態では、複数の実行可能クエリを実行することは、第1の組の実行可能クエリを実行して、データエンティティの少なくとも第1のインスタンスを識別する情報を取得することと、第1の組の実行可能クエリを実行した後、データエンティティの少なくとも第1のインスタンスを識別する情報を使用して、第2の組の実行可能クエリを実行することとを含む。
幾つかの実施形態では、第2の組の実行可能クエリを生成することは、第1の組の実行可能クエリを実行した後に実行される。幾つかの実施形態では、第2の組の実行可能クエリを生成することは、第1の組の実行可能クエリを実行する前に実行される。
幾つかの実施形態では、少なくとも1つの属性は、データエンティティの複数の動的属性のグループを含み、第2の組の実行可能クエリは、複数の動的属性のグループにそれぞれ対応する複数の実行可能クエリを含み、第2の組の実行可能クエリを実行することは、複数の実行可能クエリの各々を実行して、それぞれの複数の動的属性値結果を取得することを含む。
幾つかの実施形態では、本方法は、第2の組の実行可能クエリを実行した後、複数の動的値属性結果を結合して、クエリの結果を取得することを更に含む。
幾つかの実施形態では、クエリの第2の部分は、インラインビューを含み、第2の組の実行可能クエリを生成することは、インラインビューで指定された情報を使用して実行可能クエリを生成することを含む。幾つかの実施形態では、インラインビューは、テーブルクエリを含む。幾つかの実施形態では、テーブルクエリは、集計機能を実行するためのものである。幾つかの実施形態では、インラインビューは、内部及び外部結合キーを指定する。
幾つかの実施形態では、データエンティティの少なくとも1つの属性は、少なくとも1つの静的属性及び少なくとも1つの動的属性を含む。
幾つかの実施形態では、データエンティティの少なくとも1つの属性は、第1の動的属性であって、その値を第2のデータエンティティの属性から継承するように構成された第1の動的属性を含む。
幾つかの実施形態では、クエリの第2の部分は、少なくとも1つの属性を含む属性の階層を示す。幾つかの実施形態では、クエリの第2の部分は、入れ子を使用して属性の階層の少なくとも一部分を示す。
幾つかの実施形態では、クエリの第2の部分は、再帰を使用して属性の階層の少なくとも一部分を示す。
幾つかの実施形態では、結果の少なくとも幾つかを出力することは、属性の階層に対応する階層形式で結果の少なくとも幾つかをフォーマットすることと、結果の少なくとも幾つかを階層形式で出力することとを含む。
幾つかの実施形態では、結果の少なくとも幾つかを出力することは、階層形式で結果の少なくとも幾つかを出力することを含む。幾つかの実施形態では、結果の少なくとも幾つかを出力することは、非表形式で結果を出力することを含む。
幾つかの実施形態では、クエリの第1の部分は、第1の部分における情報を、データ処理システムによって管理される情報で増補する一連の変換を通して変換されて、少なくとも1つのデータストアに対して実行されるように構成される第1の組の実行可能クエリを生成し、クエリの第2の部分は、第2の部分における情報を、データ処理システムによって管理される情報で増補する一連の変換を通して変換されて、少なくとも1つのデータストアに対して実行されるように構成される第2の組の実行可能クエリを生成する。
幾つかの実施形態では、第1の組の実行可能クエリを生成することは、第1の実行可能クエリを、少なくとも部分的に、クエリの第1の部分を使用して中間クエリ表現を生成することと、一意の識別子情報、動的属性参照情報、ビュータイプ情報及び/又は許可情報を使用して中間クエリ表現を増補して、増補された中間クエリ表現を取得することと、増補された中間クエリ表現を使用して第1の実行可能クエリを生成することとによって生成することを含む。幾つかの実施形態では、第1の実行可能クエリを生成することは、実行可能SQLクエリを生成することを含む。幾つかの実施形態では、中間クエリ表現を生成することは、抽象シンタックスツリーを生成することを含む。
幾つかの実施形態では、第2の組の実行可能クエリを生成することは、第2の実行可能クエリを、少なくとも部分的に、クエリの第2の部分を使用して中間クエリ表現を生成することと、一意の識別子情報、動的属性参照情報、ビュータイプ情報及び/又は許可情報を使用して中間クエリ表現を増補して、増補された中間クエリ表現を取得することと、増補された中間クエリ表現を使用して第2の実行可能クエリを生成することとによって生成することを含む。
幾つかの実施形態では、複数の実行可能クエリを実行することは、第1の組の実行可能クエリを実行して、複数のデータエンティティインスタンスを識別する情報を取得することを含み、第2の組の1つ又は複数の実行可能クエリを生成することは、クエリの第2の部分及び複数のデータエンティティインスタンスを識別する情報を使用して実行される。
幾つかの実施形態では、少なくとも1つの属性は、複数の属性を含み、複数の属性の各属性は、同じ他のデータエンティティインスタンスの1つ又は複数の属性からその値を継承するように構成され、方法は、データ処理システムにより、複数の属性を単一のグループにグループ化することと、単一のグループのための単一の実行可能クエリを生成することと、データ処理システムにより、単一の実行可能クエリを実行して、データ処理システムに複数の属性の属性値を取得させることとを更に含む。
幾つかの実施形態では、少なくとも1つの属性は、複数の属性を含み、複数の属性の各属性は、別のデータエンティティインスタンスの1つ又は複数の属性からその値を継承するように構成され、方法は、データ処理システムにより、グループ化基準を使用して複数の属性を1つ又は複数のグループにグループ化することと、グループの各々のための別個の実行可能クエリを生成することであって、別個の実行可能クエリは、データ処理システムによって実行されると、データ処理システムにそれぞれのグループの属性の属性値を取得させる、生成することとを更に含む。
幾つかの実施形態では、グループ化基準は、前記別個の実行可能クエリの単一のものが、これらのグループ化された属性の継承された値にアクセスするために使用されるように、属性のうち、共通継承パスを共有する属性を単一のグループにグループ化することである。
幾つかの実施形態では、少なくとも1つのデータストアは、複数のデータエンティティインスタンス及び関連する属性値並びに異なるデータエンティティインスタンス間の関係を定義する情報を記憶するように構成され、少なくとも1つのデータストアは、複数のデータエンティティインスタンスを使用して、データ処理システムに通信可能に接続される計算システムの分散ネットワークの分散データベースに記憶されたデータを記述する情報を記憶するように構成される。
幾つかの実施形態では、少なくとも1つのデータストアは、分散計算システムの分散データベースによって記憶される複数のデータセットの各々について、分散計算システムの何らかのシステム部分によって実行されるように構成された複数のソフトウェアアプリケーションの各々又は分散計算システムのそれぞれ若しくは複数のシステム部分のために、複数のデータエンティティインスタンスのうちのデータエンティティインスタンスを記憶するように構成される。
幾つかの実施形態では、クエリは、宣言型クエリである。
幾つかの実施形態は、少なくとも1つのデータストアを使用して、データ処理システムによって管理されるデータエンティティインスタンスについての情報を、クエリを使用して取得する方法を提供し、本方法は、少なくとも1つのコンピュータハードウェアプロセッサを使用して、クエリを取得することであって、クエリは、少なくとも1つのデータストアに記憶された少なくとも1つのデータエンティティのインスタンスを識別するための情報を含む第1の部分と、少なくとも1つのデータエンティティの少なくとも1つの属性を示す第2の部分とを含む、取得することと、クエリから、第1の組の1つ又は複数の実行可能クエリ及び第2の組の1つ又は複数の実行可能クエリを含む複数の実行可能クエリを生成することであって、クエリの第1の部分を使用して、少なくとも1つのデータストアに記憶された少なくとも1つのデータエンティティのインスタンスを識別するための第1の組の1つ又は複数の実行可能クエリを生成すること、クエリの第2の部分を使用して、第1の組の実行可能クエリを使用して識別された少なくとも1つのデータエンティティのインスタンスの属性値を取得するための第2の組の1つ又は複数の実行可能クエリを生成することを含む、生成することと、複数の実行可能クエリを実行して、クエリの結果を取得することと、結果を出力することとを含む。
幾つかの実施形態は、少なくとも1つのデータストアを使用して複数のデータエンティティインスタンスを管理するように構成されたデータ処理システムを提供し、データ処理システムは、少なくとも1つのコンピュータハードウェアプロセッサと、プロセッサ実行可能命令を記憶する少なくとも1つの非一時的コンピュータ可読記憶媒体とを含み、プロセッサ実行可能命令は、少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、少なくとも1つのコンピュータハードウェアプロセッサに方法を実行させ、方法は、クエリを取得することであって、クエリは、少なくとも1つのデータストアに記憶された少なくとも1つのデータエンティティのインスタンスを識別するための情報を含む第1の部分と、少なくとも1つのデータエンティティの少なくとも1つの属性を示す第2の部分とを含む、取得することと、クエリから、第1の組の1つ又は複数の実行可能クエリ及び第2の組の1つ又は複数の実行可能クエリを含む複数の実行可能クエリを生成することであって、クエリの第1の部分を使用して、少なくとも1つのデータストアに記憶された少なくとも1つのデータエンティティのインスタンスを識別するための第1の組の1つ又は複数の実行可能クエリを生成すること、クエリの第2の部分を使用して、第1の組の実行可能クエリを使用して識別された少なくとも1つのデータエンティティのインスタンスの属性値を取得するための第2の組の1つ又は複数の実行可能クエリを生成することを含む、生成することと、複数の実行可能クエリを実行して、クエリの結果を取得することと、結果を出力することとを含む。
幾つかの実施形態は、プロセッサ実行可能命令を記憶する少なくとも1つの非一時的コンピュータ可読記憶媒体を提供し、プロセッサ実行可能命令は、少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、少なくとも1つのコンピュータハードウェアプロセッサに方法を実行させ、方法は、クエリを取得することであって、クエリは、少なくとも1つのデータストアに記憶された少なくとも1つのデータエンティティのインスタンスを識別するための情報を含む第1の部分と、少なくとも1つのデータエンティティの少なくとも1つの属性を示す第2の部分とを含む、取得することと、クエリから、第1の組の1つ又は複数の実行可能クエリ及び第2の組の1つ又は複数の実行可能クエリを含む複数の実行可能クエリを生成することであって、クエリの第1の部分を使用して、少なくとも1つのデータストアに記憶された少なくとも1つのデータエンティティのインスタンスを識別するための第1の組の1つ又は複数の実行可能クエリを生成すること、クエリの第2の部分を使用して、第1の組の実行可能クエリを使用して識別された少なくとも1つのデータエンティティのインスタンスの属性値を取得するための第2の組の1つ又は複数の実行可能クエリを生成することを含む、生成することと、複数の実行可能クエリを実行して、クエリの結果を取得することと、結果を出力することとを含む。
幾つかの実施形態は、少なくとも1つのデータストアを使用して、データ処理システムによって管理されるデータエンティティインスタンスについての情報を、クエリを使用して取得する方法を提供し、本方法は、少なくとも1つのコンピュータハードウェアプロセッサを使用して、クエリを取得することであって、クエリは、少なくとも1つのデータストアに記憶された少なくとも1つのデータエンティティのインスタンスを識別するための情報を含む第1の部分と、少なくとも1つのデータエンティティの少なくとも1つの属性を示す第2の部分とを含む、取得することと、クエリの第1の部分を使用して、少なくとも1つのデータストアに記憶された少なくとも1つのデータエンティティのインスタンスを識別するための第1の組の1つ又は複数の実行可能クエリを生成することと、第1の組の1つ又は複数の実行可能クエリを実行して、第1の複数のデータエンティティインスタンスを識別する情報を取得することと、クエリの第2の部分及び第1の複数のデータエンティティインスタンスを識別する情報を使用して、第1の複数のデータエンティティインスタンスの属性値を取得するための第2の組の1つ又は複数の実行可能クエリを生成することと、第2の組の1つ又は複数の実行可能クエリを実行して、第1の複数のデータエンティティインスタンスの属性値を取得することとを含む。
幾つかの実施形態は、少なくとも1つのコンピュータハードウェアプロセッサを使用して、クエリを取得することであって、クエリは、少なくとも1つのデータストアに記憶された少なくとも1つのデータエンティティのインスタンスを識別するための情報を含む第1の部分と、少なくとも1つのデータエンティティの少なくとも1つの属性を含む属性の階層を示す第2の部分とを含む、取得することと、クエリから、少なくとも1つのデータエンティティのインスタンス及び少なくとも1つのデータエンティティのインスタンスの属性値を少なくとも1つのデータストアから取得するための複数の実行可能クエリを生成することと、複数の実行可能クエリを実行して、クエリの結果を取得することと、属性の階層に対応する階層形式で結果を出力することとを含む方法を提供する。
幾つかの実施形態は、少なくとも1つのコンピュータハードウェアプロセッサと、プロセッサ実行可能命令を記憶する少なくとも1つの非一時的コンピュータ可読記憶媒体とを含むデータ処理システムを提供し、プロセッサ実行可能命令は、少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、少なくとも1つのコンピュータハードウェアプロセッサに方法を実行させ、方法は、クエリを取得することであって、クエリは、少なくとも1つのデータストアに記憶された少なくとも1つのデータエンティティのインスタンスを識別するための情報を含む第1の部分と、少なくとも1つのデータエンティティの少なくとも1つの属性を含む属性の階層を示す第2の部分とを含む、取得することと、クエリから、少なくとも1つのデータエンティティのインスタンス及び少なくとも1つのデータエンティティのインスタンスの属性値を少なくとも1つのデータストアから取得するための複数の実行可能クエリを生成することと、複数の実行可能クエリを実行して、クエリの結果を取得することと、属性の階層に対応する階層形式で結果を出力することとを含む。
幾つかの実施形態は、プロセッサ実行可能命令を記憶する少なくとも1つの非一時的コンピュータ可読記憶媒体を提供し、プロセッサ実行可能命令は、少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、少なくとも1つのコンピュータハードウェアプロセッサに方法を実行させ、方法は、クエリを取得することであって、クエリは、少なくとも1つのデータストアに記憶された少なくとも1つのデータエンティティのインスタンスを識別するための情報を含む第1の部分と、少なくとも1つのデータエンティティの少なくとも1つの属性を含む属性の階層を示す第2の部分とを含む、取得することと、クエリから、少なくとも1つのデータエンティティのインスタンス及び少なくとも1つのデータエンティティのインスタンスの属性値を少なくとも1つのデータストアから取得するための複数の実行可能クエリを生成することと、複数の実行可能クエリを実行して、クエリの結果を取得することと、属性の階層に対応する階層形式で結果を出力することとを含む。
幾つかの実施形態は、少なくとも1つのコンピュータハードウェアプロセッサを使用して、クエリを取得することであって、クエリは、少なくとも1つのデータストアに記憶された少なくとも1つのデータエンティティのインスタンスを識別するための情報を含む第1の部分と、少なくとも1つのデータエンティティの少なくとも1つの属性を含む属性の階層を示す第2の部分とを含む、取得することと、クエリから、少なくとも1つのデータエンティティのインスタンス及び少なくとも1つのデータエンティティのインスタンスの属性値を少なくとも1つのデータストアから取得するための複数の実行可能クエリを生成することと、複数の実行可能クエリを実行して、クエリの結果を取得することと、結果を出力することとを含む方法を提供する。
幾つかの実施形態は、少なくとも1つのコンピュータハードウェアプロセッサと、プロセッサ実行可能命令を記憶する少なくとも1つの非一時的コンピュータ可読記憶媒体とを含むデータ処理システムを提供し、プロセッサ実行可能命令は、少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、少なくとも1つのコンピュータハードウェアプロセッサに方法を実行させ、方法は、クエリを取得することであって、クエリは、少なくとも1つのデータストアに記憶された少なくとも1つのデータエンティティのインスタンスを識別するための情報を含む第1の部分と、少なくとも1つのデータエンティティの少なくとも1つの属性を含む属性の階層を示す第2の部分とを含む、取得することと、クエリから、少なくとも1つのデータエンティティのインスタンス及び少なくとも1つのデータエンティティのインスタンスの属性値を少なくとも1つのデータストアから取得するための複数の実行可能クエリを生成することと、複数の実行可能クエリを実行して、クエリの結果を取得することと、結果を出力することとを含む。
幾つかの実施形態は、プロセッサ実行可能命令を記憶する少なくとも1つの非一時的コンピュータ可読記憶媒体を提供し、プロセッサ実行可能命令は、少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、少なくとも1つのコンピュータハードウェアプロセッサに方法を実行させ、方法は、クエリを取得することであって、クエリは、少なくとも1つのデータストアに記憶された少なくとも1つのデータエンティティのインスタンスを識別するための情報を含む第1の部分と、少なくとも1つのデータエンティティの少なくとも1つの属性を含む属性の階層を示す第2の部分とを含む、取得することと、クエリから、少なくとも1つのデータエンティティのインスタンス及び少なくとも1つのデータエンティティのインスタンスの属性値を少なくとも1つのデータストアから取得するための複数の実行可能クエリを生成することと、複数の実行可能クエリを実行して、クエリの結果を取得することと、結果を出力することとを含む。
幾つかの実施形態は、少なくとも1つのデータストアを使用して、データ処理システムによって管理されるデータエンティティインスタンスについての情報を、クエリを使用して取得する方法を提供し、本方法は、少なくとも1つのコンピュータハードウェアプロセッサを使用して、テーブルクエリを取得することと、テーブルクエリから、1つ又は複数のデータエンティティインスタンスを使用して少なくとも1つのデータストアに記憶されたデータにアクセスするための1組の1つ又は複数の実行可能クエリを生成することであって、テーブルクエリの中間クエリ表現を生成することを含む、生成することと、一意の識別子情報、動的属性参照情報、ビュータイプ情報及び/又は許可情報を使用して中間クエリ表現を増補して、増補された中間クエリ表現を取得することと、増補された中間クエリ表現を使用して1組の1つ又は複数の実行可能クエリを生成することと、1組の実行可能クエリを実行して、テーブルクエリの結果を取得することと、結果の少なくとも幾つかを出力することとを含む。
上記は、本発明の非限定的な概要であり、本発明は、添付の特許請求の範囲によって規定される。
図面の簡単な説明
種々の態様及び実施形態について以下の図を参照して説明する。図が必ずしも一定の縮尺で描かれているわけではないことを理解されたい。複数の図に現れる特徴は、現れる全ての図で同じ又は同様の参照番号により示される。
本明細書に記載の技術の幾つかの実施形態による、データ処理システムが動作し得る環境例を示す。 本明細書に記載の技術の幾つかの実施形態による、データ処理システムが動作し得る図1Aの環境例を更に示す図である。 本明細書に記載の技術の幾つかの実施形態により、幾つかの用途において、データ処理システムが数百万又は数十億のデータエンティティインスタンスを管理するように構成し得ることを示す図である。 本明細書に記載の技術の幾つかの実施形態による、データ処理システム105に統合されたデータ処理システム105及びエンティティアプリケーションプログラミングインタフェース(API)120の一例の態様を示すブロック図である。 本明細書に記載の技術の幾つかの実施形態による、1つ又は複数のデータエンティティのインスタンスについての情報を取得するための宣言型クエリに応答して、クエリ結果を生成する例示的なプロセス101の図である。 本明細書に記載の技術の幾つかの実施形態による、図1Eに示される例示的なプロセス101により処理されている宣言型クエリの説明のための例を示す。 本明細書に記載の技術の幾つかの実施形態による、1つ又は複数の静的属性及び/又は1つ又は複数の動的属性を有するデータエンティティの説明のための図を示す。 本明細書に記載の技術の幾つかの実施形態による「BizTerm」データエンティティの説明のための図を示す。 本明細書に記載の技術の幾つかの実施形態による「BizTerm」データエンティティの説明のための図を示す。 本明細書に記載の技術の幾つかの実施形態による、静的であるか動的であるかを問わず、属性を含む図2Cに示されるデータエンティティの属性の少なくとも幾つかの属性のプロパティを示す表である。 本明細書に記載の技術の幾つかの実施形態による、データ処理システムにより静的属性値及び動的属性値がどのように記憶されるかの態様を示す図である。 本明細書に記載の技術の幾つかの実施形態による、データエンティティインスタンス及びその属性値の視覚化を示す例示的なグラフィカルユーザインタフェースの画面例である。 本明細書に記載の技術の幾つかの実施形態による、エンティティモデル例によるデータエンティティ間の関係を示す図である。 本明細書に記載の技術の幾つかの実施形態による、1つ又は複数のデータエンティティのインスタンスについての情報を取得するための宣言型クエリに応答して、クエリ結果を生成する例示的なプロセス300のフローチャートである。 本明細書に記載の技術の幾つかの実施形態による、識別部分及びエンリッチメント部分を含む一例の宣言型クエリ402を示す図である。 本明細書に記載の技術の幾つかの実施形態による、図4Aに示される宣言型クエリを処理することにより生成される結果例を示す図である。 本明細書に記載の技術の幾つかの実施形態による別の例示的な宣言型クエリ410の図である。 本明細書に記載の技術の幾つかの実施形態による、宣言型クエリの処理に応答して値が返されるべき属性の階層を指定する宣言型クエリ420の図である。 本明細書に記載の技術の幾つかの実施形態による、図4Dに示される宣言型クエリ420の処理に応答して返される結果例を示す。 本明細書に記載の技術の幾つかの実施形態による、クエリが処理される場合に返される関連データエンティティインスタンス結果数を削減するように設計された図4Dに示される宣言型クエリ420の一変形の図である。 本明細書に記載の技術の幾つかの実施形態による、識別部分及びエンリッチメント部分を含む一例の宣言型クエリ502を示す図である。 本明細書に記載の技術の幾つかの実施形態による、図5Aに示される宣言型クエリ502を処理することによりデータ処理システムにより生成し得る実行可能SQLクエリを示す図である。 本明細書に記載の技術の幾つかの実施形態による、図5Aに示される宣言型クエリ502の識別部分と、宣言型クエリ502の識別部分を使用して生成し得る実行可能SQLクエリの一例と、実行可能SQLクエリを実行することにより取得し得る結果の少なくとも一部分の図とを示す図である。 本明細書に記載の技術の幾つかの実施形態による、図5Aに示される宣言型クエリ502のエンリッチメント部分と、宣言型クエリ502のエンリッチメント部分を使用して生成し得る実行可能SQLクエリの一例と、実行可能SQLクエリを実行することにより取得し得る結果の少なくとも一部分の図とを示す図である。 本明細書に記載の技術の幾つかの実施形態による、図5Aに示される宣言型クエリ502のエンリッチメント部分と、宣言型クエリ502のエンリッチメント部分を使用して生成し得る別の実行可能SQLクエリの一例と、実行可能SQLクエリを実行することにより取得し得る結果の少なくとも一部分の図とを示す図である。 本明細書に記載の技術の幾つかの実施形態による、図5Aに示される宣言型クエリ502のエンリッチメント部分と、宣言型クエリ502のエンリッチメント部分を使用して生成し得る別の実行可能SQLクエリの一例と、実行可能SQLクエリを実行することにより取得し得る結果の少なくとも一部分の図とを示す図である。 本明細書に記載の技術の幾つかの実施形態による、SQL外部でのSQLクエリ結果のピボットを示す図である。 本明細書に記載の技術の幾つかの実施形態による、宣言型クエリのエンリッチメント部分と、エンリッチメント部分で識別された各属性に生成された各実行可能SQLとを示す図である。 本明細書に記載の技術の幾つかの実施形態による、同じタイプを有する動的属性に生成し得る1組の実行可能SQLクエリを示す図である。 本明細書に記載の技術の幾つかの実施形態による、幾つかは共通タイプである複数の動的属性を指定するエンリッチメント部分を有する宣言型クエリ610を示す図である。 本明細書に記載の技術の幾つかの実施形態による、幾つかは共通タイプである複数の動的属性を指定するエンリッチメント部分を有する宣言型クエリ610を示す図である。 本明細書に記載の技術の幾つかの実施形態による、幾つかは共通タイプである複数の動的属性を指定するエンリッチメント部分を有する宣言型クエリ610を示す図である。 本明細書に記載の技術の幾つかの実施形態による、同じタイプの動的属性xRegion及びxLineOfBusinessの値を取得するためのSQLクエリの一例を示す図である。 本明細書に記載の技術の幾つかの実施形態による、データエンティティの異なる動的属性が、異なるデータエンティティの各属性からの値を継承し得ることを示す図である。 本明細書に記載の技術の幾つかの実施形態による、共通の継承パスを共有する継承動的属性の値にアクセスするためのSQLクエリ例を示す図である。 本明細書に記載の技術の幾つかの実施形態による、宣言型クエリの少なくとも一部分から1つ又は複数のデータベース固有実行可能SQLクエリを生成する例示的なプロセス700のフローチャートである。 本明細書に記載の技術の幾つかの実施形態による、1つ又は複数のデータベース固有実行可能SQLクエリを生成するために宣言型クエリの少なくとも一部分に対して実行される一連の変換を示す。 本明細書に記載の技術の幾つかの実施形態による、1つ又は複数のデータベース固有実行可能SQLクエリを生成するために宣言型クエリの少なくとも一部分に対して実行される一連の変換を示す。 本明細書に記載の技術の幾つかの実施形態による、1つ又は複数のデータベース固有実行可能SQLクエリを生成するために宣言型クエリの少なくとも一部分に対して実行される一連の変換を示す。 本明細書に記載の技術の幾つかの実施形態による、1つ又は複数のデータベース固有実行可能SQLクエリを生成するために宣言型クエリの少なくとも一部分に対して実行される一連の変換を示す。 本明細書に記載の技術の幾つかの実施形態による、1つ又は複数のデータベース固有実行可能SQLクエリを生成するために宣言型クエリの少なくとも一部分に対して実行される一連の変換を示す。 本明細書に記載の技術の幾つかの実施形態による、階層構造を有するデータエンティティの例示的なインスタンスを示す。 本明細書に記載の技術の幾つかの実施形態による、再帰を使用して階層データを検索するための一例の宣言型クエリ805を示す。 図8Bに示される一例の宣言型クエリ805を処理することによりデータ処理システムにより取得される例示的な結果を示す。 図8Bに示される一例の宣言型クエリ805を処理することによりデータ処理システムにより取得される例示的な結果を示す。 図8Bに示される一例の宣言型クエリ805を処理することによりデータ処理システムにより取得される例示的な結果を示す。 本明細書に記載の技術の幾つかの実施形態による、再帰を使用して階層データを検索するための別の例の宣言型クエリ810を示す。 図8Dに示される一例の宣言型クエリ810を処理することによりデータ処理システムにより取得される例示的な結果を示す。 本明細書に記載の技術の幾つかの実施形態による、エンティティ関係図の一部分を示す。 本明細書に記載の技術の幾つかの実施形態による、階層データを検索するための宣言型クエリの擬似コード仕様を示す。 本明細書に記載の技術の幾つかの実施形態による、図9Bに示される擬似コード宣言型クエリ仕様のJavaScriptオブジェクト表記(JSON)実装を示す。 本明細書に記載の技術の幾つかの実施形態による、図9CのJSON宣言型クエリを処理することにより取得し得る結果の例示的な図を示す。 本明細書に記載の技術の幾つかの実施形態による、階層データを検索するための別の宣言型クエリの擬似コード仕様を示す。 本明細書に記載の技術の幾つかの実施形態による、図9Eに示される擬似コード宣言型クエリ仕様のJSON実装を示す。 本明細書に記載の技術の幾つかの実施形態による、図9Eに示される擬似コード宣言型クエリ仕様のJSON実装を示す。 本明細書に記載の技術の幾つかの実施形態による、図9F-1及び図9F-2のJSON宣言型クエリを処理することにより取得し得る結果の例示的な図を示す。 本明細書に記載の技術の幾つかの実施形態による例示的な宣言型テーブルクエリを示す。 本明細書に記載の技術の幾つかの実施形態による、図10Aに示される宣言型テーブルクエリの例示的な結果を示す。 本明細書に記載の技術の幾つかの実施形態による別の例示的な宣言型テーブルクエリを示す。 本明細書に記載の技術の幾つかの実施形態による、図10Cに示される宣言型テーブルクエリの例示的な結果を示す。 本明細書に記載の技術の幾つかの実施形態による例示的な宣言型クエリをインラインビューで示す。 本明細書に記載の技術の幾つかの実施形態による例示的な宣言型クエリをインラインビューで示す。 本明細書に記載の技術の幾つかの実施形態による、図10Eの宣言型クエリの実行の例示的な結果を示す。 本明細書に記載の技術の幾つかの実施形態による、図10Eの宣言型クエリの実行の例示的な結果を示す。 本明細書に記載の技術の幾つかの実施形態による、図10Fの宣言型クエリの実行の例示的な結果を示す。 本明細書に記載の技術の幾つかの実施形態による、図10Fの宣言型クエリの実行の例示的な結果を示す。 本明細書に記載の技術の幾つかの実施形態による、図10Fの宣言型クエリの実行の例示的な結果を示す。 本明細書に記載される技術の幾つかの実施形態を実施するうえで使用し得る例示的な計算システム環境のブロック図である。
詳細な説明
本発明者らは、データエンティティ及びそのインスタンスを使用してデータ処理システムによって管理されるデータに効率的にアクセス(例えば問い合わせ、作成、更新及び削除)できるようにする新しい技法を開発した。本明細書に記載のように、幾つかの実施形態では、データ処理システムは、オブジェクト指向パラダイムを使用してデータを組織化するために使用し得るデータエンティティを使用してデータを管理し得る。オブジェクト指向プログラミングがクラス及びそのインスタンスとどのように関わるかと同様に、データ処理システムにデータエンティティの定義を構成し得、データ処理システムは、データエンティティのインスタンス及びデータエンティティ定義を使用してデータを管理し得る。データエンティティのインスタンスは、本明細書では「データエンティティインスタンス」と呼ばれることがある。データエンティティは複数の属性を含み得、属性は、インスタンス化されるとき、数、文字列又は他のデータエンティティへの参照等の異なる値をとり得る。本発明者らにより開発された技法は、データ処理システムによって管理されるデータエンティティインスタンスへの効率的なアクセスを可能にする。
特に、本発明者らは、データ処理システムによって管理されるデータエンティティインスタンスへの効率的なアクセスを提供するインタフェースを開発し、インタフェースはアプリケーションプログラミングインタフェース(API)に組み込むことができる。インタフェース/APIはデータエンティティインスタンスへのアクセスを提供するためのものであるため、本明細書では「エンティティ」APIと呼ばれることがある。エンティティAPIは、ユーザ及びコンピュータプログラムに実行が望まれる動作、例えば1つ又は複数の基準を満たすデータエンティティインスタンスについてのデータ処理システムへの問い合わせ、新しいデータエンティティインスタンスの作成、データエンティティインスタンスの値の更新及び既存のデータエンティティインスタンスの削除等を指定する宣言型言語を提供する。エンティティAPIは、所望の動作を示し、宣言型言語(例えばJavaScriptオブジェクト表記(JSON)又は任意の他の適した形式)で指定された入力を受け取り、入力から実行可能文(例えば、所望の動作が、データエンティティインスタンスについてデータ処理システムに問い合わせることである場合、実行可能SQLクエリであり、データエンティティインスタンスはSQLをサポートする関係データベースに記憶される)を生成し、実行可能文を実行して所望の動作を実行する。
本発明者らは、データ処理システムが、数百万又は数十億のエンティティインスタンスを管理するように構成し得ることを認識していた。例えば、図1Aを参照してより詳細に後述するように、本明細書に記載の技法は、幾つかの実施形態では、企業設定でのメタデータ管理に使用することができ、それにより、データエンティティインスタンスは、多くのデータベース、データウェアハウス、データレイク等を含む大域的に分散した情報技術(IT)基盤にわたって記憶された個々のデータセット(例えばテーブル、トランザクション、ドキュメント、データレコード等)についての情報を記憶する。これに関して、データエンティティインスタンスは、例えば、データセットがいつ作成されたか、それがどこに記憶されているか、そのサイズ、データセットの編集が許可されているユーザの識別情報、どのアプリケーションプログラムがデータセットを使用するかを識別する情報、データの機密レベルを識別情報等の対応するデータセットについての情報を記憶し得る。大きい組織(例えば、銀行又はクレジットカード会社等の金融機関、電話会社又は電気会社等の公益事業体等)は典型的には、数百万又は数十億ものそのようなデータセットを管理するため、データ処理システムによって管理されるそのようなデータセットについての情報を記憶する数百万又は数十億ものデータエンティティインスタンスが存在し得る。この適用例では、データ処理システムは他のデータについての情報(「メタデータ」と呼ばれることがある)を記憶するため、この適用例は「メタデータ管理」と呼ぶことができる。しかしながら、本明細書に記載の技法が、メタデータ管理に使用されるデータ処理システムに限定されず、管理されるデータがメタデータであるか、又は任意の他のタイプのデータであるかを問わず、データを管理するためにデータエンティティ及びデータエンティティインスタンスを使用する任意のデータ処理システムに適用することができることを理解されたい。
データエンティティインスタンスを使用してデータ処理システムによって管理されるデータのタイプを問わず、上記例は、多くの実際用途で、データ処理システムが数百万又は数十億ものデータエンティティインスタンスを管理することが予期され得ることを明確にする。したがって、本発明者らは、好ましくは、データ処理システムへの計算負荷を最小化しながら、データエンティティインスタンスへのアクセスが遅延なしで迅速に提供されるように、データ処理システムによって管理されるデータエンティティインスタンスへの効率的なアクセスを提供するようエンティティAPIを設計し開発した。
このために、エンティティAPIの有益な特徴は、エンティティAPIに提供される入力(例えば宣言文、例えば宣言エンティティ)が2つの部この段階-関心のあるデータエンティティ(又はそのインスタンス)を識別する段階及び識別されたデータエンティティの属性値にアクセスする段階-で処理されることである。本明細書では、これらの段階は「識別」段階及び「エンリッチメント」段階と呼ばれることがある。例えば、「宣言型クエリ」と呼ぶことができる、データエンティティインスタンスについての情報を検索するための宣言文は、2つの部分を含み得る-関心のあるデータエンティティインスタンス(例えば、図4Aの例ではデータエンティティ「BizTerm」の全てのインスタンス)を識別する識別部分(例えば、図4Aの宣言型クエリ402の識別部分404)及び識別されたデータエンティティインスタンスで値を検索すべき属性(例えば、図4Aの例では属性「名前」及び「説明」)を示すエンリッチメント部分(例えば、図4Aの例では宣言型クエリ402のエンリッチメント部分406)。また、宣言型クエリを処理する第1の段階中、その識別部分が処理されて1つ又は複数の実行可能(例えば、SQL)クエリを生成し、実行可能クエリは、データエンティティインスタンスを記憶したデータ処理システム内のデータストアに対して実行されると、関心のあるデータエンティティインスタンスを識別する情報(例えば、一意の識別子)を返す。第1の段階と同時に又は続けて、宣言型クエリを処理する第2の段階中、そのエンリッチメント部分が処理されて、エンリッチメント部分において関心があると示されている属性の値を取得する1つ又は複数の他の実行可能(例えば、SQL)クエリを生成する。この段階で、異なる属性又は属性のグループに異なる実行可能クエリを生成し得る。続けて、全ての実行可能クエリの結果が結合され出力される(例えば、ユーザ又は宣言型クエリを入力したコンピュータプログラムに)。
幾つかの実施形態では、エンティティAPIへの入力が宣言文であり得、これは、文がエンティティAPIから情報を検索するためのものである場合、「宣言型クエリ」と呼ぶことができることを理解されたい。しかしながら、エンティティAPIは、入力として宣言型クエリのみを受け取ることに限定されず、任意の適したタイプのクエリ(本明細書に記載される意味で宣言的であるか否かを問わず)又は文(本明細書に記載される意味で宣言的であるか否かを問わず)を入力として受け取るように構成し得る。
入力クエリ(例えば宣言型クエリ)及び/又は文(例えば宣言文)を指定し実行する上記段階式アーキテクチャにより提供される多くの技術的利点がある。第1に、「識別」を「エンリッチメント」から分離することで、「ストリーミング」アーキテクチャを使用して処理を実行することができ、それにより、「識別」段階中に識別されたデータエンティティの幾つかのみが、それらの属性値で富化され、追加のデータエンティティインスタンスは、要求された後でのみ富化される。これについて「バッチ及びストリーミングクエリ実行、返される結果の範囲制限」と呼ばれるセクションで更に詳細に後述する。このストリーミングアーキテクチャは、全てのデータエンティティインスタンスの富化を待つ遅延なしでデータエンティティインスタンスへの高速アクセスを提供し、場合により必ずしもデータエンティティインスタンスの全ての富化が必要とされるわけではないため、データ処理システムへの計算富化を低減する。
第2に、単一のデータエンティティインスタンスの属性値は、必ずしも1つのテーブルの単一行に記憶されるわけではなく、その代わり、データ処理システム内の複数の異なるテーブルにわたって記憶され得ることを理解されたい。例えば、本明細書に記載のように、データエンティティは静的属性及び動的属性を有し得、動的属性は名前-値ペアを使用して異なる複数のテーブルに記憶され得る。複数の実行可能クエリを生成することは、段階式アーキテクチャにより可能になり、これらの属性値へのより効率的なアクセスを可能にする。例えば、「属性のグループの属性値へのアクセス」と呼ばれるセクションで更に詳細に後述するように、宣言型クエリのエンリッチメント部分は、まず、同じタイプを有し及び/又は同じテーブルに記憶された属性をグループ化し、各属性のグループに1つの実行可能クエリを生成することにより処理し得、それにより、(1)各テーブルは複数回ではなく1回問い合わせられ、(2)土台をなすデータベースに属性値を記録する全てのテーブルを結合する(実際用途では、土台をなすデータベースにおいて数十のテーブルを結合する必要がある)従来のSQLクエリと異なり、属性値は別個の実行可能クエリを使用して検索され、土台をなすデータベース外で結合することができる(例えば、「ピボット」と呼ばれるセクションにおいて更に詳細に後述するようにピボットを通して)ため、属性値を検索するときに実行される計算量を実質的に低減する。段階式アーキテクチャは、「エンリッチメントクエリの実行最適化」と呼ばれるセクションにおいて後述されるものを含め、本明細書に記載される多くの他の効率及び利点を提供する。
エンティティAPIの別の有利な特徴は、ユーザ又はコンピュータプログラムが、データ処理システムによりデータエンティティインスタンスがどのように記憶されるかに依存せずにデータエンティティにアクセス(例えば問い合わせ、作成、更新、削除)できるようにすることである。従来のデータ処理システムでは、問い合わせられているデータがどのように記憶されているかを知るために、ユーザがシステムに問い合わせる必要がある。例えば、クエリを書くために、従来のデータ処理システムに問い合わせるユーザは、データを記憶するためにデータ処理システムが使用するデータベースシステムのタイプ(例えば、関係データベース、オブジェクト指向データベース、NoSQLデータベース及びでベスの製造業者又はベンダー)及びそのデータベースシステムが問い合わせ中のデータをどのように記憶するか(例えば、関心のある値を記憶している1つ又は複数のテーブルの名前)を知る必要がある。この情報なしでは、ユーザはクエリを全く書くことができないであろう。更に、ユーザは、関心のあるデータへのアクセスを最適化できるように、データベースシステムの厳密なバージョン及びベンダーを知りたいとことがある。
逆に、エンティティAPIにより可能になるクエリは、問い合わせられているデータエンティティインスタンスがデータ処理システムによりどのように記憶されるかに依存せずに指定し得る。このようにして、データエンティティインスタンスが関係データベース、オブジェクト指向データベース、NoSQLデータベース、キャッシュ、サーチインデックス(例えば、「1つ又は複数のサーチインデックスを使用したデータの検索」と呼ばれるセクションにおいて更に詳細に後述するように)を使用して、又は任意の他の方法でデータ処理システム内にどのように記憶されるかを問わず、厳密に同じクエリを使用して、データエンティティインスタンスを問い合わせることができる。
本明細書に記載のように、幾つかの実施形態では、データエンティティ属性は静的又は動的であり得、それらの値が異なるメカニズムを使用して記憶される(例えば、図2Eを参照して記載されるものを含め、本明細書に記載のように)ことを意味する。しかしながら、エンティティAPI(及び特に値を返すべき属性を識別し得るクエリのエンリッチメント部分)により可能になるクエリ(例えば宣言型クエリ)は、関心のある属性が静的変数として又は動的変数として実装されるかに依存せずに指定し得る。
幾つかの実施形態では、土台をなすデータエンティティインスタンスがデータ処理システムにどのように記憶されるかについての情報を含まない文(例えばクエリ、例えば宣言型クエリ等)を処理するために、エンティティAPIは、一連の変換を通して入力文を変換して、データエンティティインスタンス及びそれらの属性の値を記憶するデータベースシステムに対して実行し得る実行可能文(例えば実行可能SQLクエリ)に到達するように構成される。エンティティAPIに入力として提供される文は、宣言文とすることができないではない場合、データエンティティインスタンスを記憶しているデータベースシステムに対して実行することはできず、実行が望まれる動作を「宣言」する(例えば、どのデータエンティティインスタンス及びそれらの属性のどれを返す、更新、作成等すべきかを「宣言」することにより)が、データエンティティインスタンスがどのように記憶されるかに依存しないため、それ自体では精密には「実行可能」ではないという意味で「宣言的」である。したがって、幾つかの実施形態では、宣言文(例えば宣言型クエリ)は、所望のデータエンティティインスタンス及び属性値が記憶され、データエンティティインスタンスを記憶しているデータベースシステムに対して文を実行するとき、適用することができる任意の低レベル最適化を含まないことがある。
この意味で、SQL文と異なり、エンティティAPIの宣言文(例えば宣言型クエリ)は、RDBMS(例えばORACLE、DB2、POSTGRES、SQL SERVER等)又は他のデータ記憶システムにより直接実行可能ではなく、むしろ、1つ又は複数の実行可能文に変換され、それからRDBMS又は他の記憶システムによって実行される。エンティティAPI宣言文の一部分は、本明細書に記載のように、SQLを使用して指定し得るが、SQLにより指定されず、エンティティAPI宣言文を1つ又は複数の実行可能(例えばSQL又は他のタイプの)文(例えば、実行可能SQLクエリ又は他のタイプの実行可能クエリ)に変換するために、エンティティAPIによりまず、宣言文全体の一部として処理されるエンティティAPI宣言文の他の部分がある。更に、SQLと異なり、エンティティAPI宣言文は、データエンティティインスタンスに関して実行すべき動作を指定するためのものである-文は実行可能SQL(又は他のタイプのクエリ)に変換することができるが、文はそれ自体ではSQLクエリではない上位レベルの言語である。
したがって、幾つかの実施形態では、宣言文は、データ処理システム及びエンティティAPIにより内部で管理される情報で宣言文内の情報を増補する一連の変換を通して変換されて、データエンティティインスタンス及びそれらの属性の値を記憶するためにデータ処理システムにより使用されるデータベース又は他のシステムに対して実行することができる複数の実行可能文(例えば複数の実行可能SQL文、例えばSQLクエリ)を生成し得る。これらの変換の態様について、「実行可能クエリの生成」と呼ばれる、図7A~図7Fを参照するセクションにおいて後述するものを含め、本明細書に記載される。
上述したように、幾つかのデータエンティティ属性は他のデータエンティティを参照し得、その結果、データエンティティインスタンスは互いに関連し得る。エンティティAPIの別の有利な特徴は、1つの宣言型クエリを使用して、複数の関連するデータエンティティについての情報を検索し得ることである。幾つかの実施形態では、宣言型クエリは、値が検索されるべき関連属性の階層を明示的に指定し得るか(本明細書では「入れ子」と呼ばれることがある)、又は再帰を使用してそれを行い得る。
したがって、幾つかの実施形態では、1つの宣言型クエリが属性(属性の幾つかは、異なる関連データエンティティの属性である)の階層を指定し得、階層内の属性の値は、1つの宣言型クエリを処理することにより検索し得る。幾つかの実施形態では、検索された属性値は、宣言型クエリで指定された属性の階層の階層構造に対応する階層形式で出力し得る。例えば、階層形式は、宣言型クエリで指定される属性の階層での属性の入れ子構造と同じである入れ子構造を有し得る。階層的問い合わせ及び結果の階層的出力の態様について、「階層データの検索」と呼ばれるセクションで後述するものを含め、本明細書に記載する。本明細書に記載のように、エンティティAPIにより可能になる階層クエリは、1つの宣言型クエリを使用して複数の異なるデータエンティティ階層で結果を取得し、それらに対して集計動作を実行できるようにする。
したがって、幾つかの実施形態は、少なくとも1つのデータストアを使用して、データ処理システムによって管理されるデータエンティティインスタンスについての情報を、宣言型クエリを使用して取得する方法を提供し、方法は、少なくとも1つのコンピュータハードウェアプロセッサを使用して、少なくとも1つのデータストアに記憶された少なくとも1つのデータエンティティのインスタンスを識別するための情報を含む第1の部分(本明細書では「識別部分」と呼ばれることがある)と、少なくとも1つのデータエンティティの少なくとも1つの属性を示す第2の部分(本明細書では「エンリッチメント部分」と呼ばれることがある)とを含むクエリ(例えば宣言型クエリ)を取得することと、クエリから、第1の組の1つ又は複数の実行可能クエリ及び第2の組の実行可能クエリを含む複数の実行可能クエリ(例えば実行可能SQLクエリ)を生成することであって、(1)クエリの第1の部分を使用して、少なくとも1つのデータストアに記憶された少なくとも1つのデータエンティティのインスタンスを識別するための第1の組の1つ又は複数の実行可能クエリを生成すること、(2)クエリの第2の部分を使用して、第1の組の実行可能クエリを使用して識別された少なくとも1つのデータエンティティのインスタンスの属性値を取得するための第2の組の1つ又は複数の実行可能クエリを生成することを含む、生成することと、複数の実行可能クエリを実行して、クエリの結果を取得することと、結果の少なくとも幾つか(例えば全て)を出力することとを含む。
幾つかの実施形態では、少なくとも1つのデータエンティティは複数のデータエンティティを含み、第1の組の実行可能クエリを生成することは、複数のデータエンティティの各データエンティティについて、少なくとも1つのデータストアに記憶されたデータエンティティのインスタンスを識別するための各実行可能(例えばSQL)クエリを生成することを含む。
幾つかの実施形態では、少なくとも1つのデータエンティティは第1のデータエンティティを含み、少なくとも1つの属性は第1のデータの第1の複数の属性を含み、第2の組の実行可能クエリを生成することは、第1の複数の属性の少なくとも幾つかの各属性について、第1の組の実行可能クエリを使用して識別された少なくとも1つのデータエンティティのインスタンスの属性の値を取得する各実行可能(例えばSQL)クエリを生成することを含む。
本明細書に記載のように、幾つかの実施形態では、データエンティティは、グループ化し得る複数の属性を有し得、各属性のグループに1つの各実行可能クエリを生成し得、それにより、全体性能を大きく改善する。したがって、幾つかの実施形態では、第1の複数の属性は、複数の動的属性を含み、第2の組の実行可能クエリを生成することは、(1)複数の動的属性を動的属性のグループにグループ化することであって、グループの各々は、複数の動的属性の少なくとも1つを有する、グループ化することと、(2)複数の動的属性のグループの各々について、各実行可能クエリを生成し、第1のデータエンティティのインスタンスについてのグループ内の属性値を取得することとを含む。
幾つかの実施形態では、複数の動的属性をグループ化することは、動的属性のタイプ、動的属性が少なくとも1つのデータストア内の同じテーブルに記憶されているか否か、及び/又は動的属性がその値を共通の継承パスに沿って継承するか否かに基づいて実行される。
幾つかの実施形態では、複数の実行可能クエリを実行することは、(1)第1の組の実行可能クエリを実行して、データエンティティインスタンス結果(例えば、入力クエリの識別部分において指定された基準を満たす)を取得することと、(2)第1の組の実行可能クエリを実行した後、第2の組の実行可能クエリを実行して、第1の組の実行可能クエリを実行することにより識別されたデータエンティティインスタンスの属性値結果を取得することとを含む。幾つかの実施形態では、第2の組の実行可能クエリは、第1の組の実行可能クエリが実行される前、生成される。幾つかの実施形態では、第2の組の実行可能クエリは、第1の組の実行可能クエリが実行された後、生成される。
幾つかの実施形態では、少なくとも1つの属性は、少なくとも1つのデータエンティティの第1のデータエンティティの複数の動的属性のグループを含み、第2の組の実行可能クエリは、複数の動的属性のグループにそれぞれ対応する複数の実行可能クエリを含み、第2の組の実行可能クエリを実行することは、複数の実行可能クエリの各々を実行して、複数の動的属性値結果を取得することを含む。幾つかの実施形態では、第2の組の実行可能クエリを実行した後、複数の動的値属性結果を結合して、属性値結果を取得する。
エンティティAPIは、「インラインビュー」と呼ばれるセクションで後述されるものを含め、本明細書に記載のように、インラインビューをサポートする。幾つかの実施形態では、クエリの第2の部分は、インラインビューを含み、第2の組の1つ又は複数の実行可能クエリを生成することは、インラインビューで指定された情報を使用して実行可能クエリを生成することを含む。幾つかの実施形態では、インラインビューは、テーブルクエリ(例えば宣言型テーブルクエリ)を含み得る。テーブルクエリは、集計機能を実行するためのものであり得る。幾つかの実施形態では、インラインビューは内部及び外部結合キーを指定し得る。
幾つかの実施形態では、第1のデータエンティティの少なくとも1つの属性は、第1のデータエンティティの第1の複数の属性を含み、第1の複数の属性は、少なくとも1つの静的属性及び少なくとも1つの動的属性を含む。幾つかの実施形態では、第1のデータエンティティの少なくとも1つの属性は、第2のデータエンティティ除く制から値を継承するように構成された第1の動的属性を含む。
幾つかの実施形態では、クエリの第2の部分は、少なくとも1つの属性を含む属性の階層を示し得る。この指示は、入れ子、再帰又は両方を使用して行うことができる。幾つかの実施形態では、結果を出力することは、属性の階層に対応する階層形式で結果をフォーマットすることと、階層形式で結果を出力することとを含む。そのような形式は非表形式であり得る。
幾つかの実施形態では、第1の組の実行可能クエリ(例えば、関心のあるデータを識別するための)を生成することは、少なくとも部分的に、(1)クエリの第1の部分を使用して中間クエリ表現(例えば抽象シンタックスツリー)を生成し、(2)一意の識別子情報、動的属性参照情報、ビュータイプ情報及び/又は許可情報を使用して中間クエリ表現を増補して、増補中間クエリ表現を取得し、(3)増補中間クエリ表現を使用して第1の実行可能クエリを生成することにより、第1の実行可能クエリを生成することを含む。
幾つかの実施形態では、第2の組の実行可能クエリ(例えば、第1の組の実行可能クエリを使用して識別されたデータエンティティインスタンスの値にアクセスするための)を生成することは、第2の実行可能クエリを、少なくとも部分的に、(1)クエリの第2の部分を使用して中間クエリ表現を生成し、(2)一意の識別子情報、動的属性参照情報、ビュータイプ情報及び/又は許可情報を使用して中間クエリ表現を増補して、増補中間クエリ表現を取得し、(3)増補中間クエリ表現を使用して第2の実行可能クエリを生成することによって生成することを含む。
幾つかの実施形態は、少なくとも1つのコンピュータハードウェアプロセッサを使用して、クエリ(例えば宣言型クエリ)を取得することであって、クエリは、少なくとも1つのデータストアに記憶された少なくとも1つのデータエンティティのインスタンスを識別するための情報を含む第1の部分と、少なくとも1つのデータエンティティの少なくとも1つの属性を含む属性の階層を示す第2の部分とを含む、取得することと、クエリから、少なくとも1つのデータストアから少なくとも1つのデータエンティティのインスタンス及び少なくとも1つのデータエンティティのインスタンスの属性値を取得するための複数の実行可能クエリを生成することと、複数の実行可能クエリを実行して、クエリの結果を取得することと、属性の階層に対応する階層形式で結果の少なくとも幾つか(例えば全て)を出力することとを実行することを含む方法を提供する。
幾つかの実施形態は、少なくとも1つのコンピュータハードウェアプロセッサを使用して、クエリ(例えば宣言型クエリ)を取得することであって、クエリは、少なくとも1つのデータストアに記憶された少なくとも1つのデータエンティティのインスタンスを識別するための情報を含む第1の部分と、少なくとも1つのデータエンティティの少なくとも1つの属性を示す第2の部分とを含む、取得することと、クエリから、少なくとも1つのデータストアから少なくとも1つのデータエンティティのインスタンス及び少なくとも1つのデータエンティティのインスタンスの属性値を取得するための複数の実行可能クエリを生成することと、複数の実行可能クエリを実行して、クエリの結果を取得することと、結果の少なくとも幾つか(例えば全て)を出力することとを実行することを含む方法を提供する。
本明細書に記載される技法が多くの方法の何れかで実施され得、本技法がいかなる特定の実施様式にも限定されないことを理解されたい。実施の詳細の例は、例示的なのみを目的として本明細書に提供される。更に、本明細書に開示される技法は、個々に又は任意の適した組合せで使用され得、本明細書に記載される技術の態様は、いかなる特定の技法又は技法の組合せの仕様にも限定されない。
例示的なデータ処理システム及びアプリケーション
上述したように、本発明者らは、データ処理システムが、数百万又は数十億ものデータエンティティインスタンスを管理するように構成可能なことを認識した。例えば、本明細書に記載の技法は、企業設定でのメタデータ管理に使用することができ、それにより、データエンティティインスタンスは、多くのデータベース、データウェアハウス、データレイク等を含む大域的に分散した情報技術(IT)基盤にわたって記憶された個々のデータセット(例えばテーブル、トランザクション、ドキュメント、データレコード等)についての情報を記憶する。上述したように、これに関して、データエンティティインスタンスは、例えば、データセットがいつ作成されたか、それがどこに記憶されているか、そのサイズ、データセットの編集が許可されているユーザの識別情報、どのアプリケーションプログラムがデータセットを使用するかを識別する情報、データの機密レベルを識別情報等の対応するデータセットについての情報を記憶し得る。大きい組織(例えば、銀行又はクレジットカード会社等の金融機関、電話会社又は電気会社等の公益事業体等)は典型的には、数百万又は数十億ものそのようなデータセットを管理するため、データ処理システムによって管理されるそのようなデータセットについての情報を記憶する数百万又は数十億ものデータエンティティインスタンスが存在し得る。
図1Aは、本明細書に記載の技術の幾つかの実施形態によるデータ処理システムをメタデータ管理に使用し得る環境例を示す。本明細書に記載の技法は、メタデータ管理に使用されるデータ処理システムに限定されず、管理されるデータがメタデータであるか、又は任意の他のタイプのデータであるかを問わず、データを管理するためにデータエンティティ及びデータエンティティインスタンスを使用する任意のデータ処理システムに適用可能なことを理解されたい。
図1Aは、各々が膨大な量のデータを(例えば1つ又は複数のデータベースシステム、データウェアハウス、データレイク等に)記憶する複数の異なる地理的場所(例えば異なる都市、国、大陸等)にわたり分散したシステム140、142、144を含む企業システムを示す。例えば、システム140、142、144はグローバル銀行の企業システムの構成要素であり得、システム140は米国にあり、システム142はブラジルにあり、システム144は欧州にある。
図1Aの実施形態例に示されるように、システム140、142、144の各々は各組の計算デバイスを含む。システム140はサーバ140A及びデータベースシステム140Bを含む。システム142はサーバ142A及びデータベースシステム142Bを含む。システム144はサーバ144A及びデータベースシステム144Bを含む。企業システムの動作中、システム140、142、144の各々は、大量のデータ(例えば数テラバイトのデータ)を生成及び/又は記憶し得る。例えば、企業システムはクレジットカード会社のシステムであり得、システム140、142、144の各々はトランザクションデータ、クレジットスコア及び/又は任意の他の適したデータを生成及び/又は記憶する。別の例では、企業システムは銀行のシステムであり得、システム140、142、144の各々は銀行記録、ローン、口座保有者及び/又は任意の他の適したデータを生成及び/又は記憶する。別の例では、企業システムは電話会社のシステムであり得、システム140、142、144の各々は電話呼、テキストメッセージ、データ使用及び/又は任意の他の適したデータを生成及び/又は記憶する。
幾つかの実施形態では、データベースシステム140B、142B、144Bはデータ(例えば企業システムの)を記憶するように構成し得る。データベースシステム140B、142B、144Bの各々は、データベース、データウェアハウス、データレイク及び/又は任意の他のデータベースシステムを含み得る。データベースシステム140B、142B、144Bは、同じタイプ又は異なるタイプのいずれかの任意の適したタイプであり得る。例えば、これらのシステムの各々は1つ又は複数の関係データベースシステム(例えばORACLE、SQL SERVER等)を含み得る。別の例として、幾つかの実施形態では、これらのシステムの各々は1つ又は複数の他のタイプのデータベースシステム(例えば、非関係(例えば、NoSQL)データベースシステム、マルチファイルシステム又は任意の他の適したタイプのデータベースシステム)を含み得る。
図1Aの実施形態例では、データ処理システム105は、企業システム140、142、144に記憶されたデータを記述する情報107を記憶するように構成し得る。この意味で、情報107はメタデータと見なすことができる。メタデータは、企業システム140、142、144に記憶されたデータについての多くのタイプの情報のいずれかを含み得る。例えば、メタデータは、データを処理するシステム(例えばサーバ140A、142A、144A)、データ処理に使用される、企業システムで実行されているソフトウェアアプリケーション及び/又はデータの記憶におけるアプリケーションのルールについての情報を含み得る。別の例では、メタデータは、データがどのように生成されたか、データのサイズ、データの記述、どのユーザが読み取り、更新、作成、削除又はデータに対する任意の他の動作を実行する許可を有するか、及び/又はデータについての任意の他の適した情報等の企業ソフトウェアシステム全体を通してのデータについての情報を含み得る。
幾つかの実施形態では、データ処理システムは、データエンティティインスタンス及びデータエンティティ定義を使用してメタデータを管理し得る。例えば、データ処理システム105は、企業システムにより記憶された複数のデータセット(例えばテーブル)の各々のデータエンティティインスタンスを記憶し得る。そのような各データエンティティインスタンスは、データセットについての情報(例えば、データセットがいつ作成又は更新されたか、データセットが記憶された場所、データセットのサイズ、データセットに対して読み取り、編集、削除又は任意の他の適した動作の実行が許可されているユーザの識別情報、どのソフトウェアアプリケーションがデータセットを使用するかを識別する情報、データセット中のデータの機密レベルを識別する情報及び/又は任意の他の適したメタデータ)を記憶し得る。別の例として、データ処理システム105は、企業システム内のテーブルの各列のデータエンティティインスタンスを記憶し得る。そのような各データエンティティは、列についての情報(例えば、列の値の意味、列中の値の読み出し、書き込み、更新及び/又は削除を行う権限を誰が有するか、列中のエントリの許容されている値の範囲及び/又は任意の他の適したメタデータ)を記憶し得る。更に別の例として、データ処理システム105は、企業システムの何らかのシステム部分又はデバイス部分により実行されるように構成される複数のソフトウェアアプリケーションの各々のデータエンティティインスタンスを記憶し得る。そのようなデータエンティティインスタンスはソフトウェアアプリケーションについての情報(例えば、ソフトウェアアプリケーションがどのデータセットを処理するか、アプリケーションがその出力をどこに置くか、アプリケーション機能の説明、アプリケーションのバージョン、データ及び/又は他のアプリケーションへのそのアプリケーションの従属性、アプリケーションの実行可能ファイルがどこで見つけられるか、及び/又は任意の他の適したメタデータ)を記憶し得る。更に別の例として、データ処理システム105は、企業システムの複数のシステム部分の各々のデータエンティティインスタンスを記憶し得る。
上記から容易に理解することができるように、そのようなメタデータ管理シナリオでは、データ処理システム105は数百万又は数十億ものそのようなデータエンティティインスタンスを管理し得、これは、データエンティティインスタンスに対する問い合わせ、作成、更新、削除又は任意の他の適した動作の実行が可能な限り効率的に実行されることが重要なことの理由である。
図1Bは、本明細書に記載の技術の幾つかの実施形態による、データ処理システムが動作し得る図1Aの環境例を更に示す図である。
図1Bに示されるように、データ処理システム105は、少なくとも部分的に、データエンティティ定義及びデータエンティティ関係を含むエンティティモデル160を使用することにより、データエンティティを使用してデータを管理するように構成し得る。幾つかの実施形態では、エンティティモデル160により定義されるデータエンティティのインスタンスは、データ持続層150に記憶し得る。したがって、データエンティティインスタンスと関連するデータの少なくとも幾つか又は全ては、データ持続層150に記憶し得る。エンティティモデル160及び持続層150の態様について図1Dを参照した説明を含め、本明細書でより詳細に説明する。
また、図1Bに示されるように、幾つかの実施形態では、エンティティAPI120は、データ処理システム105により管理され、データ持続層150において持続するデータエンティティインスタンスへのアクセスを提供する。例えば、エンティティAPI120は、データエンティティインスタンスの作成、更新、削除及び問い合わせを行えるようにする機能を露出する。幾つかの実施形態では、データ処理システムは、図1Bにおいてデータ持続層150も包含するエンティティAPI120を定義する境界線により示されるように、エンティティAPI120を通してのみ、データ処理システム105により管理されるデータエンティティインスタンスにアクセス(例えば作成、更新、削除及び/又は問い合わせ)することができるように構成し得る。エンティティAPIにより露出される機能は、多くのタイプのエンティティAPIインタフェース110のいずれを通してもアクセスすることができる。
幾つかの実施形態では、データ持続層150により管理される1つ又は複数のデータエンティティインスタンスに対して動作を実行するための宣言文(例えば宣言型クエリ)は、エンティティAPI120に入力として提供され得る。宣言文は、入力変換モジュール130を使用して1つ又は複数の実行可能クエリに変換され得る。次いで、クエリは実行され、結果が出力変換モジュール165に提供され、出力変換モジュール165は結果を更に処理(例えば結合、フォーマット、編成等)し得、それから、宣言文を提供したユーザ又はコンピュータプログラムに結果を提供する。エンティティAPIインタフェース110、エンティティAPI120、入力変換モジュール130及び出力変換モジュール164の態様について図1Dを参照した説明を含め、本明細書でより詳細に説明する。
メタデータ管理に関して、幾つかの実施形態では、インタフェース110は、ユーザがシステム140、142、144に記憶されたデータについての情報107からのデータにアクセスできるようにするグラフィカルユーザインタフェース(GUI)を生成するように構成し得る。GUIは、ユーザが、(1)データ処理システムにより記憶されているデータエンティティインスタンスについての情報の要求及び(2)データ処理システムにより記憶されているデータエンティティインスタンスについての情報の表示を行えるようにする。幾つかの実施形態では、GUIは、ユーザが、システム140、142、144により記憶されているデータについての記憶された情報107(例えばメタデータ)にアクセスできるようにし得る。例えば、GUIは、ユーザ102が、企業ソフトウェアシステムで生成中のデータを追跡できるようにし得る(例えば品質尺度及びデータの他の特性)。別の例では、GUIは、ユーザ102が系統情報を可視化できるようにし得る。系統情報は、異なるデータエンティティインスタンス間の関係についての情報を含み得る。系統情報の態様は、「SYSTEM AND METHODS FOR DETERMINING RELATIONSHIPS AMONG DATA ELEMENTS」という名称の米国特許第10,489,384号に記載されており、これは全体的に、参照により本明細書に援用される。
データ処理システムに関するメタデータ管理の概念を更に示すために、図1Bは、各データについての情報をデータベースシステム144Bに記憶する2つのデータエンティティインスタンス例を示す。データベースシステム144Bは、顧客(例えば銀行の)についての情報を含むテーブル146を記憶する。テーブル146の列は、「識別子」、「氏名」、「クレジットスコア」及び「スコア日」を含む。データ処理システム105は、テーブル146についてのメタデータを記憶し、この例では、データ持続層150において、テーブル146についての情報を記憶する「データセット」データエンティティのインスタンス147を記憶することによりこれを実現する。
この例では、データエンティティインスタンス147は、属性「タイプ」(テーブル内の情報のタイプを示す)、「ビジネスマネージャ」(テーブル内のデータの責任を負う人物を示す)、「エントリ数」(テーブル内のエントリ数を示す)、「プライベート」(プライバシー設定を示す)、「ストレージサイズ」(テーブルが占めるメモリ量を示す)及び「データID」を含む属性の値を記憶する。幾つかの実施形態では、「データセット」データエンティティインスタンス147は、図1Bに示されるものに加えて又は代えて、他の属性の値を記憶し得る。
データエンティティインスタンスがデータについてのメタデータ(例えばテーブルについての情報)を含む用途では、幾つかの実施形態では、データエンティティインスタンスは、データの識別及び/又はアクセスに使用することができる情報を含み得る。図1Bの例に示されるように、「データID」属性は、「データセット」データエンティティインスタンス147内の情報が記述するデータ(例えばテーブル)を識別する。例えば、「データID」の値は、テーブル146の識別子であり得る。幾つかの実施形態では、「データID」の値は、ユーザをテーブル146にナビゲートできるようにし得る。例えば、「データID」の値は、データベース144B内のテーブル146にナビゲートするハイパーリンクであり得る。幾つかの実施形態では、データエンティティインスタンスは、テーブルへのアクセスの仕方をそれ自体には記憶しないが、データ処理システムは、データエンティティインスタンスを、データ自体の識別及び/又はアクセスに使用することができる情報と関連付ける情報を記憶し得る。例えば、データ処理システムは、そのような情報を1つ若しくは複数のテーブル(例えばデータ持続層150内)に又は任意の適した方法で記憶し得る。
図1Bの例に示されるように、データ持続層150は「クレジットスコア」データエンティティインスタンス149を更に記憶する。「クレジットスコア」データエンティティインスタンス149は、図2C及び図2Eに示される「BizTerm」データエンティティ220のインスタンスであり得る。「クレジットスコア」データエンティティインスタンス149は、属性「タイプ」、「説明」、「ビジネスオーナー」、「有効下限」、「有効上限」、「プライベート」及び「データID」の値を含む。「データID」属性とテーブル146の「クレジットスコア」列との間の矢印で示されるように、「クレジットスコア」データエンティティインスタンス158は、テーブル146の「クレジットスコア」列中のデータを説明する。図1Bの例に示されるように、「データID」属性は、「データセット」データエンティティインスタンス149中の情報が説明するデータを示す。例えば、「データID」の値は、テーブル146内の「クレジットスコア」列の識別子であり得る。幾つかの実施形態では、「データID」の値は、ユーザがテーブル146の「クレジットスコア」列に記憶されたデータにアクセスできるようにし得る。例えば、「データID」の値は、「クレジットスコア」列内のデータにアクセスするために使用し得る、ユーザへのハイパーリンクであり得る。
図1Cは、本明細書に記載の技術の幾つかの実施形態による、幾つかの用途でデータ処理システムが数百万又は数十億ものデータエンティティインスタンスを管理するように構成し得ることを示す図である。図1Cの実施形態例に示されるように、幾つかの実施形態では、データ持続層150は、図1Aの企業システムの各構成要素についての情報(例えば、データセット、ソフトウェアアプリケーション、企業システムのシステム構成要素又は任意の他の構成要素)を記憶する多数(例えば数千、数百万、数十億)のデータエンティティインスタンスを記憶する。図1Cの各データエンティティインスタンスからの矢印は、データエンティティインスタンス内の情報が説明する構成要素を示す。構成要素は、データセット、アプリケーション(例えば1つ又は複数のコンピュータプログラム)、システム(例えばデータベースシステム)及び/又は企業システムの他の構成要素であり得る。例えば、データエンティティインスタンスは、企業システムのデータ(例えばテーブル)についての情報を記憶し得る。別の例では、データエンティティインスタンスは、企業システムのアプリケーションについての情報を記憶し得る。更に別の例では、データエンティティインスタンスは企業システムのユーザについての情報を記憶し得る。
図1Cの実施形態例に示されるように、データ持続層150のデータエンティティインスタンスに記憶されたメタデータは、可視化109をユーザ102に提供するために使用し得る。可視化109は、データエンティティインスタンスと関連する系統情報の可視化を含み得る。系統情報は、異なるデータエンティティインスタンス間の関係についての情報を含み得る。系統情報の態様は「SYSTEMS AND METHODS FOR DETERMINING RELATIONSHIPS AMONG DATA ELEMENTS」という名称の米国特許第10,489,384号に記載されており、これは全体的に、参照により本明細書に援用される。
図1Dは、本明細書に記載の技術の幾つかの実施形態による、一例のデータ処理システム105及びデータ処理システム105と統合されたエンティティアプリケーションプログラミングインタフェース(API)120の態様を示すブロック図100である。
幾つかの実施形態では、データ処理システム105は、データエンティティ及びそのインスタンスを使用してデータを管理するように構成し得る。データ処理システム105は、少なくとも部分的にエンティティモデル160を使用することによりデータエンティティを使用してデータを管理するように構成し得、エンティティモデル160はデータエンティティ定義162及びデータエンティティ関係164を含む。
データ処理システムは、任意の適した数のデータエンティティを使用してデータを管理するように構成し得る。例えば、エンティティモデル160は、企業計算環境であり得るように、数十、数百、数千又は数万のデータエンティティを定義し得る。
幾つかの実施形態では、データエンティティ定義162は、データ処理システムによりサポートされる各データエンティティの定義又は仕様を含む。データエンティティ定義は、データエンティティの構造を定義し得る。このために、データエンティティ定義はデータエンティティの属性を定義し得る。エンティティ属性はスカラー値であり得、文字列及び数字等の値をとり得る。代替的には、エンティティ属性は別の1つ又は複数のデータエンティティを参照し得る。データエンティティ定義は、「データエンティティクラス」又は「データエンティティ仕様」と呼ばれることがあり、本明細書では単に「データエンティティ」と呼ぶことができる。データエンティティ定義は、図2A~図2Gを参照して後述するものを含め、本明細書により詳細に説明される。
幾つかの実施形態では、データエンティティ関係164はデータエンティティ間の関係を定義する。例えば、データエンティティ関係164は、特定のデータエンティティが別のデータエンティティを参照する属性を有し得るか否かを定義し得る(そのような属性は、値が別のデータエンティティインスタンスを参照するという意味で本明細書では「参照」属性と呼ばれることがある)。
幾つかの実施形態では、1つのデータエンティティの属性は、別のデータエンティティの属性からその値を継承又はとるように構成し得る。同じデータエンティティの異なる属性は、異なるデータエンティティから値を継承するように構成し得る。幾つかの実施形態では、継承構成は参照属性を使用して達成し得る。例えば、1つの属性(参照属性)は、第2の属性が値を継承すべきデータエンティティインスタンスを示し得る。例えば、データエンティティ「D1」は2つの属性「A1」及び「A2」を有し得、A2は参照属性であり、属性「A2」の値は、属性「A1」の値を継承すべき別のデータエンティティD2を識別し得る。属性「A2」の値を異なるデータエンティティ「D3」に変更することは、属性「A1」が値を継承するデータエンティティを変更する。
したがって、本明細書に記載の属性継承の概念は、その用語がオブジェクト指向プログラミングに関して使用される「継承」と異なる。オブジェクト指向プログラミングでは、継承とは、子クラスがプロパティ(例えば変数、関数の定義、関数の実装)をベースクラスから継承することを指す。これにより、公開クラス及びインタフェースを介してコードの再使用及びソフトウェアの拡張が可能になる。逆に、本明細書に記載の「継承」とは、データエンティティの属性が、値を別のデータエンティティの属性からとる又は「継承」するように構成することができる状況を指す。構成は、属性がデータを継承するデータエンティティを示す--オブジェクト指向設定でのベースクラスのように固定されない。継承の構成は属性のレベルにないため、土台をなす同じデータエンティティの異なる属性は、値を複数の他のデータエンティティの異なる属性からとる又は「継承」するように構成することができる。これは、属性値をどのように設定することができるかについて大きい柔軟性を提供し、オブジェクト指向プログラミングでは利用可能ではない間接レベルを提供する。実際に、単一のデータエンティティは、複数の他のデータエンティティから属性値を継承するように構成し得るのみならず、上述したように、その構成は単一のデータエンティティのインスタンスのレベルで変更することができる。
上記から理解することができるように、データエンティティの継承は属性レベルで構成することができる。このために、幾つかの実施形態では、データ処理システムは、データエンティティの少なくとも幾つか(例えば全て)の属性の各々の「継承構成」を記憶し得る。「継承構成」は、属性が値を別のデータエンティティ属性から継承するか否か及び継承する場合、どれから継承するかを示し得る。
逆に、従来のオブジェクト指向システムは、本明細書に記載の属性レベルの継承構成を有さない。上述したように、従来のオブジェクト指向システムは、データエンティティインスタンスの属性レベルでの値の継承をサポートしない。むしろ、オブジェクト指向継承は、データエンティティインスタンス属性が単一の親データエンティティから全ての値を継承するようにクラスレベルである。更に、継承の態様について図6E及び図6Fを参照した説明を含め、本明細書で説明する。
幾つかの実施形態では、エンティティモデル160(例えば、データエンティティ定義162及びデータエンティティ関係164)は、データ持続層150に部分的又は完全に記憶し得る。他の実施形態では、本明細書に記載の技術の態様は、この点において限定されないため、エンティティモデル160は任意の他の適したストレージに記憶し得る。
幾つかの実施形態では、エンティティモデル160により定義されるデータエンティティのインスタンスは、データ持続層150に記憶し得る。したがって、データエンティティインスタンスと関連するデータの少なくとも幾つか又は全ては、データ持続層150に記憶し得る。データエンティティインスタンスと関連するデータの非限定的な例には、データエンティティインスタンスの任意の属性の値、データエンティティインスタンスの識別情報(例えば、データ処理システム105がデータエンティティインスタンスを一意に識別できるようにするデータエンティティインスタンスの一意の識別子)、データエンティティの定義、データエンティティインスタンスが値を継承するように構成された属性を有する1つ又は複数の他のデータエンティティを示す情報、データエンティティインスタンスの作成、読み出し、書き込み、及び/又は更新を行う権限を有するユーザを示す許可情報、及び/又は任意の他の適したデータがある。これらのタイプのデータの幾つか又は全ては、データエンティティインスタンスの1つ又は複数の各々についてデータ持続層150に記憶し得る。図1Dの例示的な実施形態では、データ持続層150は、データエンティティインスタンス(データエンティティインスタンスと関連するデータ)を記憶するための1つ又は複数のデータストア152を含む。幾つかの実施形態では、データストア152は、データエンティティインスタンスと関連するデータが関係データベースシステムのテーブルに記憶されるように、関係データベースシステムを含み得る。本明細書に記載される本開示の態様は、この点において限定されないため、例えば、データストア152は、ORACLEデータベースシステム、MICROSOFT SQL SERVERデータベースシステム、POSTGRESQLデータベースシステム、IBM DB2データベースシステム及び/又は任意の他の適した関係データベースシステムを含み得る。しかしながら、データストア152は、関係データベースシステムのみを含むことに限定されず、データを任意の適した方法で記憶するように構成し得る。例えば、データストア152は、オブジェクト指向データベース、分散データベース、NoSQLデータベース(例えばMONGODBデータベース)、1つ又は複数のテキストファイル又は任意の他の適したデータベース及び/又はデータを管理するためのシステムを含み得る。別の例として、幾つかの実施形態では、データストア152は、1つ又は複数のサーチインデックス(例えば、データ検索を最適化するため)、キャッシュ(例えば、繰り返しアクセスされている小さいデータセット、例えば他のデータの分類、カテゴリ分け又は解釈に使用される参照データを予めフェッチするため)又はそれらの任意の適した組合せを含み得る。サーチインデックスの態様は、「1つ又は複数のサーチインデックスを使用したデータの検索」と呼ばれるセクションで後述される説明を含め、本明細書に記載される。
本明細書に記載のように、エンティティAPIアーキテクチャの利点は、エンティティAPIへの呼び出しがストレージに依存しなくてよいことである。このようにして、データ処理システム(例えばデータ処理システム105)は、任意の適したストレージ解決策(RDBMS、ファイル、オブジェクト指向データベース、サーチインデックス、キャッシュ、それらの任意の適した組合せ等)を使用して実施し得、エンティティAPIへの呼び出しは、特定のデプロイ又は実装で採用されるストレージ解決策に適合される必要はない。
より一般的には、各データストア152は、任意の適したタイプの1つ又は複数のフォーマットでデータを記憶する1つ又は複数の記憶装置を含み得る。例えば、データストアの記憶装置部分は、1つ又は複数のデータベーステーブル、スプレッドシートファイル、平文ファイル及び/又は任意の他の適したフォーマット(例えば、メインフレームのネイティブフォーマット)のファイルを使用してデータを記憶し得る。記憶装置は、任意の適したタイプであり得、1つ又は複数のサーバ、1つ又は複数のデータベースシステム、1つ又は複数のポータブル記憶装置、1つ又は複数の不揮発性記憶装置、1つ又は複数の揮発性記憶装置及び/又はデータを電子的に記憶するように構成された任意の他のデバイスを含み得る。データストアが複数の記憶装置を含む実施形態では、記憶装置は、1つの物理的場所(例えば、1つの建物内)に配置され得るか、又は複数の物理的場所(例えば、複数の建物、異なる都市、州又は国)にわたって分散され得る。記憶装置は、任意の適したタイプの1つ又は複数のネットワークを使用して互いと通信するように構成され得、本明細書に記載される技術の態様は、これに関して限定されない。
データ持続層150は、任意の適した数のデータエンティティインスタンスを記憶するように構成し得る。上述したように、データ処理システムは、数十、数百、数千又は数万のデータエンティティをサポートするように構成し得る。また、企業計算環境では、データ持続層150は、数千、数百万又は数十億ものデータエンティティインスタンスを記憶するように構成し得る。例えば、データ持続層150は、少なくとも10,000個のデータエンティティインスタンス、少なくとも50,000個のデータエンティティインスタンス、少なくとも100,000個のデータエンティティインスタンス、少なくとも500,000個のデータエンティティインスタンス、少なくとも1,000,000個のデータエンティティインスタンス、少なくとも5百万個のデータエンティティインスタンス、少なくとも1000万個のデータエンティティインスタンス、少なくとも5000万個のデータエンティティインスタンス、少なくとも1億個のデータエンティティインスタンス、少なくとも5億個のデータエンティティインスタンス、少なくとも10億個のデータエンティティインスタンス、少なくとも50億個のデータエンティティインスタンス、10万個~5百万個のデータエンティティインスタンス、100万個~5億個のデータ、100万個~50億個のデータエンティティインスタンス又はこれらの範囲内の任意の他の範囲のデータエンティティインスタンスを記憶し得る。
幾つかの実施形態では、エンティティAPI120は、データ処理システム105により管理され、データ持続層150において持続するデータエンティティインスタンスへのアクセスを提供する。例えば、エンティティAPI120は、データエンティティインスタンスの作成、更新、削除及び問い合わせを可能にする機能を露出する。幾つかの実施形態では、データ処理システムは、図1DのエンティティAPI120を定義する太線の境界線で示されるように、エンティティAPI120を通してのみ、データ処理システム105により管理されるデータエンティティインスタンスにアクセス(例えば作成、更新、削除及び/又は問い合わせ)し得るように構成し得る。そのような実施形態では、エンティティAPI120はデータエンティティインスタンスの周囲に「フェンス」を提供し得る。
エンティティAPIにより露出される機能には、多くのタイプのエンティティAPIインタフェース110のいずれかを通してアクセスし得る。例えば、データエンティティインスタンスと関連する情報のクエリは、1つ又は複数のグラフィカルユーザインタフェース112を通して提供し得(例えば1人又は複数のユーザにより)、クエリ結果は、グラフィカルユーザインタフェース112を通してユーザに提示し得る。別の例として、データエンティティインスタンスと関連する情報のクエリは、スクリプトインタフェース114(例えばスクリプト言語を使用して書かれたウェブベースのプログラム)、グラフベースのコンピュータプログラム116及び/又は任意の他の第三者ソフトウェア等のソフトウェアインタフェースを通してプログラム的に提供し得る。情報の検索に加えて、これらのタイプのインタフェースのいずれかを使用して、データエンティティインスタンスを作成若しくは削除又は他の方法で更新することもできる(例えば、エンティティインスタンス属性の値を更新すること、属性が値を継承する場所を変更すること、新しい属性をデータエンティティインスタンスに追加すること、データエンティティインスタンスから属性を除去すること等により)。エンティティAPIインタフェースの上記例は例示であり、エンティティAPI120により露出される機能にアクセスするために、他のタイプのインタフェースを使用し得ることを理解されたい。
グラフベースのコンピュータプログラム116に関して、幾つかの実施形態では、グラフベースのコンピュータプログラムは、データフローグラフとして開発し得る。データフローグラフは、入力データに対して実行されるべきデータ処理動作を表す「ノード」又は「頂点」と呼ばれる構成要素及びデータフローを表す、構成要素間のリンクを含み得る。データフローグラフにより符号化された計算を実行するための技法は、「Executing Computations Expressed as Graphs」という名称の米国特許第5,966,072号に記載されており、これは全体的に、参照により本明細書に援用される。データフローグラフとしてコンピュータプログラムを開発するための環境は、「Managing Parameters for Graph-Based Applications」という名称の米国特許出願公開第2007/0011668号に記載されており、これは全体的に、参照により本明細書に援用される。
幾つかの実施形態では、エンティティAPI120は、宣言型クエリの使用を通してデータエンティティインスタンスについての情報を取得できるようにする。宣言型クエリは、(1)関心のあるデータエンティティインスタンス及び(2)関心のあるデータエンティティに値を継承すべき属性を指定し得る。宣言型クエリは、データ持続層150の1つ又は複数のデータベース部分により実行し得る実行可能クエリではない。むしろ、エンティティAPI120は、宣言型クエリにより使用される情報を使用して、データ持続層150内の1つ又は複数のデータストア152に対してデータ処理システムによって実行されると、宣言型クエリにより指定されたように関心のある情報を検索するために使用し得る1組の1つ又は複数の実行可能クエリ(宣言型クエリと異なる)を生成するために宣言型クエリを処理するように構成し得る。宣言型クエリにより指定された情報を使用して生成された1つ又は複数の実行可能クエリは、実行可能SQLクエリ又は任意の他の適したタイプの実行可能クエリであり得る。
幾つかの実施形態では、宣言型クエリはJavaScriptオブジェクト表記(JSON)を使用して指定し得る。しかしながら、他の実施形態では、本明細書に記載の技術の態様は、この点において限定されないため、任意の他の適した形式で(例えば任意の適したマークアップ言語を使用して)指定し得る。
幾つかの実施形態では、宣言型クエリは2つの部分を含み得る:いわゆる識別部分及びいわゆるエンリッチメント部分。識別部分は、少なくとも1つのデータエンティティのインスタンスを識別するための情報を含み得る。エンリッチメント部分は、関心のある少なくとも1つのデータエンティティの属性を識別する情報を含み得る。
幾つかの実施形態では、データ処理システム105は、(1)宣言型クエリの識別部分を使用して少なくとも1つのデータエンティティのインスタンスを識別し、(2)宣言型クエリのエンリッチメント部分を使用して、識別されたデータエンティティインスタンスの属性値を取得することにより、そのような宣言型クエリを処理するように構成し得る。例えば、幾つかの実施形態では、データ処理システム105は、(1)宣言型クエリの識別部分を使用して第1の組の1つ又は複数の実行可能(例えばSQL)クエリを生成し、(2)宣言型クエリのエンリッチメント部分を使用して第2の組の1つ又は複数の実行可能(例えばSQL)クエリを生成し、(3)第1の組の実行可能クエリを実行して、識別された人亜負のデータエンティティインスタンスを示す結果を取得し、(4)第2の組の実行可能クエリを実行して、識別されたデータエンティティインスタンスの属性値を示す結果を取得し、(5)第1及び第2の組のクエリの実行から取得された結果を結合し、(6)結果を出力し、任意選択的にフォーマットを結果に適用する(例えば階層フォーマット)ことにより、宣言型クエリを処理するように構成し得る。
例えば、図1Dに示されるように、宣言型クエリ115は、エンティティAPIインタフェース110の1つからエンティティAPI120に入力として提供し得る。エンティティAPI120内で、入力変換モジュール130は、宣言型クエリ115から複数の実行可能クエリ135を生成し得る。宣言型クエリ115は識別部分及びエンリッチメント部分を含み得、複数の実行可能クエリ135は、宣言型クエリ115の識別部分から生成された1つ又は複数の実行可能クエリと、宣言型クエリ115のエンリッチメント部分から生成された1つ又は複数の実行可能クエリとを含み得る。
図1Dに示されるように、入力変換モジュールは、エンティティインスタンス識別モジュール132、エンティティインスタンスエンリッチメントモジュール134及びクエリ変換モジュール136を含む。これらのモジュールは、宣言型クエリ115から実行可能クエリ135を生成するように構成し得る。
例えば、幾つかの実施形態では、エンティティインスタンス識別モジュール132は、宣言型クエリ115の識別部分をパーズし、データエンティティインスタンスを識別するためのクエリの中間表現を生成し得る(例えば抽象シンタックスツリーとして)。また、クエリ変換モジュール136が、(1)追加情報で表現を増補するように、一連の1つ又は複数の変換でクエリの中間表現を変換し、(2)変換された中間表現から実行可能クエリを生成し得る。この処理について図3を参照した説明及び図7A~図7Fにおいて好ましい例示的な様式で本明細書により詳細に説明する。
別の例として、幾つかの実施形態では、エンティティインスタンスエンリッチメントモジュール134は、宣言型クエリ115のエンリッチメント部分をパーズして、識別されたデータエンティティインスタンスの属性値を取得するための1つ又は複数のクエリ(多くの場合には複数のクエリ)の各々の中間表現を生成し得る。また、クエリ変換モジュール136は、(1)追加情報で表現を増補するように、一連の1つ又は複数の変換で各中間クエリ表現を変換し、(2)変換された各中間表現から各実行可能クエリを生成し得る。この処理について図3及び図7A~図7Fを参照した説明を含め、本明細書でより詳細に説明する。
実行可能クエリ135が生成された後、データ処理システム105は、例えばデータアクセスモジュール140を使用することにより1つ又は複数のデータストア152内でクエリ135を呼び出して、データ持続層150からデータ137を取得することにより、実行可能クエリ135を実行し得る。データ137は2つのタイプの結果を含み得る:(1)データエンティティインスタンスを識別するための1つ又は複数の実行可能クエリの実行からの結果;これらの結果は、1つ又は複数の識別されたデータエンティティインスタンスを示す情報(例えば識別されたエンティティインスタンスの識別子)を含む;及び(2)属性値を取得するための1つ又は複数の実行可能クエリの実行からの結果;これらの結果は、識別されたデータエンティティインスタンスの属性値を含む。データ137は出力変換モジュール165に提供し得、出力変換モジュール165はデータ137を処理し得、それから、エンティティAPIインタフェース110の1つ又は複数にクエリ結果155として出力し得る。
図1Dに示されるように、出力変換モジュール165は、データ合成モジュール163及び階層出力モジュール167を含む。幾つかの実施形態では、データ合成モジュール163は、クエリ結果155を生成するために、データ137内の結果を結合するように構成し得る。上述したように、データ137は、(1)1つ又は複数の識別されたデータエンティティインスタンスを示す情報を含む結果及び(2)識別されたデータエンティティインスタンスの属性値を含む結果を含み得る。データ合成モジュール163は、クエリ結果155が識別された各データエンティティインスタンスをその属性の値と関連付けるように、これらの結果を結合し得る(例えばピボットを使用して又は任意の他の方法で)。識別クエリ及びエンリッチメントクエリを実行した結果を結合する態様について図3を参照した説明及び「宣言型クエリ:識別及びエンリッチメント」及び「エンリッチメントクエリの実行最適化」と呼ばれるセクションを含め、本明細書で説明する。
図1Dに示されるように、出力変換モジュール165は階層出力モジュール167も含む。幾つかの実施形態では、階層出力モジュールは、階層提示に向けてデータ137をフォーマットする(例えば、テキストのタブ移動及び/又は入れ子を使用して、グラフィカルユーザインタフェースにおいて入れ子コンテナを使用して、マークアップ言語での入れ子式タグを使用して等)ように構成し得る。幾つかの実施形態では、結果の階層構造は、宣言型クエリの階層構造(例えば、宣言型クエリのエンリッチメント部分で識別される属性の階層構造)に一致し得る。結果の階層問い合わせ及び提示の態様について図4D~図4F、図8A~図8E及び図9A~図9Gを参照した説明を含め、本明細書で説明する。
図1Dの例は、データ処理システム105が宣言型クエリをどのように実行するかに部分的にフォーカスしているが、データ処理システム105が宣言型クエリのみの実行に限定されないことを理解されたい。実際に、エンティティAPI120は、層150に持続されるデータエンティティインスタンスの作成、削除又は他の方法での更新を行うための宣言文を処理する(例えばモジュール138を使用して)ようにも構成される。データエンティティインスタンスを作成、削除及び更新する態様について「追加のエンティティAPI動作」と呼ばれるセクションを含め、本明細書で説明する。
データ処理システム105が宣言型クエリを処理するようにどのように構成し得るかの別の図は図1Eに示され、図1Eは、本明細書に記載の技術の幾つかの実施形態による、1つ又は複数のデータエンティティのインスタンスについての情報を取得するための宣言型クエリ115に応答してクエリ結果を生成する例示的なプロセス101の図である。
図1Eに示されるように、エンティティインスタンス識別部分115a及びエンティティインスタンスエンリッチメント部分115bを有する宣言型クエリ115は、データ処理システム105の入力変換モジュール130により処理し得る。その結果、1つ又は複数のエンティティインスタンス識別実行可能クエリ135aは、宣言型クエリ115のエンティティインスタンス識別部分115aを使用して生成し得る。エンティティインスタンス識別実行可能クエリ135aはデータ処理システムによって実行されて、データ持続層150内の1つ又は複数のデータストアからエンティティインスタンス識別結果137aを取得し得る。
エンティティインスタンスエンリッチメント部分115bを使用して、結果137aにより識別されたエンティティインスタンスの属性値にアクセスするための1つ又は複数のエンティティインスタンスエンリッチメント実行可能クエリ135bを生成し得る。矢印131で示されるように、この説明のための例では、エンリッチメント実行可能クエリ135bが実行されるとき、クエリは、結果137aにより識別されたデータエンティティインスタンス(これらは宣言型クエリ115の識別部分を使用して識別されたインスタンスである)のみの属性値が取得されるように、識別クエリを実行した結果137aを参照し得る。例えば、エンリッチメント実行可能クエリ135bは、クエリ135aを使用することにより識別されたデータエンティティインスタンスを識別する情報を記憶するための1つ又は複数のテーブル及び/又は変数(例えば、図5C~図5Fの例ではテーブル「BizTermID0」参照)への参照を含み得る。エンティティインスタンス識別実行可能クエリ135aが実行された後、結果は、参照されたテーブル及び/又は変数に記憶することができ、これらのクエリが実行されているとき、エンリッチメント実行可能クエリ135bによりアクセスし得る。
幾つかの実施形態では、エンティティインスタンス識別実行可能クエリ135aは、エンティティインスタンスエンリッチメントクエリ135bが生成される前に実行され得る。幾つかのそのような実施形態では、データエンティティインスタンス識別子が利用可能であるため、これらの識別子をエンリッチメントクエリ135bに直接挿入し得る(しかし、そうする必要はない)。この実装形態では、実行可能エンリッチメントクエリは、エンティティインスタンスエンリッチメント部分の内容及び識別実行可能クエリ135aの実行結果の両方に基づいて生成される。しかしながら、図1E及び図5C~図5Fの実施形態を含め、幾つかの実施形態では、識別クエリ135aは、エンリッチメントクエリ135bが生成される前に実行される必要はなく、その理由は、エンリッチメントクエリ135bが、データエンティティインスタンス識別子が記憶されることになる(識別クエリ135aが実行された後)1つ又は複数のテーブル及び/又は変数(又は他のストレージ)を参照することができ、参照(例えばテーブル及び/又は変数の名前)は、エンティティインスタンス識別クエリ135aが実行される前、エンリッチメントクエリ135bに含めることができるためである。したがって、本明細書に記載の技術の態様は、この点において限定されないため、幾つかの実装形態では、エンリッチメントクエリは、識別クエリが実行される前又は後、生成することができる。
クエリ135aが実行された後、エンティティインスタンスエンリッチメント実行可能クエリ135bを実行して、データ持続層150内のデータストア152からエンティティインスタンスエンリッチメント結果137bを取得し得る。本明細書に記載のように、データストア152は、関係データベース又は任意の他の適したタイプのデータストレージ解決策を含み得、本明細書に記載の技術の態様は、この点において限定されないため、その例は本明細書に提供される(例えばデータストア152を参照して)。
次に、出力変換モジュール165を使用して出力に向けて結果137a及び/又は137bは処理することができ、クエリ結果155が取得され、これらは次いで出力することができる。プロセス101の段階の種々の態様について図3を参照した後述の説明を含め、本明細書で更に詳細に説明する。
エンティティインスタンス識別実行可能クエリ135a及びエンティティインスタンスエンリッチメントクエリ135bがデータ持続層150から異なる情報を取得していることを理解されたい。特に、クエリ135aを使用して、エンティティインスタンス識別部分115aに記載の基準を満たすデータエンティティインスタンスを識別し、そのようなデータエンティティインスタンスを識別する情報を返し得る。しかしながら、クエリ135aへの結果は一般に、データエンティティインスタンス属性の値を含まない。むしろ、データエンティティインスタンス属性の値は、エンティティインスタンスエンリッチメント実行可能クエリ135bを処理することにより取得される。クエリ135a及び135bにより取得されたデータが異なるテーブル又はデータストア152の他のデータ構造に記憶され得ることも理解されたい。例えば、データエンティティインスタンスの識別子は、名前-値ペアとして記憶し得るインスタンスの動的属性の値とは別個に記憶し得る。
図1Fは、本明細書に記載の技術の幾つかの実施形態による、図1Eに示される例示的なプロセス101により処理されている宣言型クエリ170の説明のための例を示す。宣言型クエリ170は、エンティティインスタンス識別部分170a及びエンティティインスタンスエンリッチメント部分170bを含む。
識別部分170aは、名前が「A」で始まる「BizTerm」データエンティティのインスタンスが識別されるべきであることを示す。エンリッチメント部分170bは、識別部分170aを使用して識別された各データエンティティインスタンスについて、「名前」及び「説明責任を負う当事者」を含む幾つかの属性の値が検索されるべきであることを示す-楕円形は、より多くの属性がエンリッチメント部分170bにおいて指定され得るが、この例では、提示を明確にするために、2つのみが示されていることを示す。
次に、入力変換モジュール130はエンティティインスタンス識別部分170aを処理して、エンティティインスタンス識別実行可能SQLクエリ172aを生成し、これは、データ処理システムによって実行されると、データ持続層150からエンティティインスタンスID結果174aを検索する。エンティティインスタンスID結果174aは、エンティティインスタンス識別部分170aに記載の条件を満たすデータエンティティインスタンスの識別子(テーブル175に示される)を含む。テーブル175は7行のみを有するが、これは提示を明確にすることのみを目的とし、エンティティインスタンス識別クエリ(例えば、この例ではクエリ172a又は本明細書に記載の任意の他のエンティティインスタンス識別クエリ)の実行に応答して、任意の適した数のデータエンティティインスタンス(例えば、数十、数百、数千、数百万等)を識別し得る。
入力変換モジュール130は、エンティティインスタンスエンリッチメント部分170bも処理して、エンティティインスタンスエンリッチメント実行可能SQLクエリ172bを生成し、これは、データ処理システムによって実行されると、データ持続層150からエンティティインスタンスエンリッチメント結果174bを検索する。矢印171で示されるように、この説明のための例では、エンリッチメント実行可能クエリ172bが実行されると、クエリは、結果174aにより識別されたデータエンティティインスタンスのみの属性値が取得されるように、識別クエリ172aを実行した結果174aを参照し得る。例えば、エンリッチメント実行可能クエリ172bは、クエリ172aを使用することにより識別されたデータエンティティインスタンスを識別する情報を記憶するための人亜負のテーブル及び/又は他の変数への参照を含み得る。エンティティインスタンス識別実行可能クエリ172aが実行された後、結果はテーブル及び/又は他の変数に記憶することができ、これらのクエリが実行されているとき、エンリッチメント実行可能クエリ172bによりアクセスすることができる。
幾つかの実施形態では、エンティティインスタンス識別実行可能クエリ172aは、エンティティインスタンスエンリッチメントクエリ172bが生成される前に実行され得る。幾つかのそのような実施形態では、データエンティティインスタンス識別子が利用可能であるため、必要な場合、これらの識別子をエンリッチメントクエリ172bに直接挿入することができる。この実装形態では、実行可能エンリッチメントクエリ172bは、エンティティインスタンスエンリッチメント部分の内容及び識別実行可能クエリ172aを実行した結果の両方に基づいて生成される。しかしながら、本明細書に記載のように、識別クエリ172aは、エンリッチメントクエリ172bが生成される前に実行される必要はなく、その理由は、エンリッチメントクエリ172bが、データエンティティインスタンス識別子が記憶されることになる(識別クエリ172aが実行された後)1つ又は複数のテーブル及び/又は変数を参照することができ、参照(例えばテーブル及び/又は変数の名前)は、エンティティインスタンス識別クエリ172aが実行される前、エンリッチメントクエリ172bに含めることができるためである。
図1Fに示されるように、エンティティインスタンスエンリッチメント結果174bは、データ持続層150からエンティティエンリッチメント部分170bにおいて指定された属性の値を含む。例えば、テーブル176aは、エンティティインスタンスID結果174aにおいて識別されたデータエンティティのインスタンスの「名前」属性の値を含む。別の例として、テーブル176bは、エンティティインスタンスID結果174aにおおいて識別されたデータエンティティのインスタンスの「説明責任を負う当事者」属性の値を含む。仮にエンティティインスタンスエンリッチメント部分170bが追加の属性を指定する(170bにおける楕円形で示されるように)場合、エンティティインスタンスエンリッチメント結果174bは、それらの追加の属性の値を含むことができたであろう(174bにおける楕円形で示されるように)。
本明細書に記載のように、幾つかの実施形態では、異なる実行可能SQLクエリを使用して、1つ又は複数の属性の異なるグループの値を検索し得る。図1Fの例では、実行可能SQLクエリ172bは少なくとも2つの実行可能SQLクエリを含む-「名前」属性の値を得るための第1の実行可能SQLクエリ及び「説明責任を負う当事者」属性の値を得るための第2の実行可能SQLクエリ(第1の実行可能SQLクエリと異なり、別個に実行される)。これは、この例では、これらの2つのクエリを実行することによって得られる結果が別個のテーブル176a及び176bに示されている理由である。
エンティティエンリッチメント結果176bが取得された後、結果は出力変換モジュール165により処理されて、テーブル178を含むクエリ結果155を生成し、これは、この例では、そのエンティティインスタンスのテーブルの行内の特定のデータに検索された全ての属性値をグループ化する。本明細書に記載のように、エンティティAPIクエリの処理に応答して出力されたクエリ結果は、テーブルである必要はなく、幾つかの実施形態では、任意の他の適した形式(例えば、階層形式)を有し得、その例が本明細書に提供される。クエリ結果は、図1Fにおけるこの例の提示を明確にするために、テーブル178の行として示されている。
図1Fの例では、出力変換モジュール165は、エンティティインスタンスID結果174a及びエンティティインスタンスエンリッチメント結果174bの両方を受け取り、これらの入力の両方からクエリ結果を生成しているものとして示されている。同様のアーキテクチャが図1Eに示されている。エンティティインスタンスID結果174aは、単なるその識別子を越えて各エンティティインスタンスIDについての追加情報を含み得る(例えば、エンティティインスタンスの名前、エンティティのクラス、エンティティを参照するGUIを生成する際に表示する名前、1つ又は複数の他の識別子及び/又は任意の他の適した情報)。エンティティインスタンスエンリッチメント結果は、識別されたインスタンスの1つ又は複数の属性の値を含み得る。クエリ結果は、これらのタイプの情報の幾つか又は全てを含み得る。
幾つかの実施形態では、クエリ結果は、例えばエンティティインスタンスID結果174aを使用せずに、エンティティインスタンスエンリッチメント結果から直接生成し得る。例えば、エンティティインスタンス識別子のみが、各エンティティインスタンスについての他の情報(例えば、エンティティインスタンスID結果174aの一部であり得る他の情報)なしで返されるべきであり、エンリッチメント結果174bがエンティティインスタンスIDを使用して属性値を編成する(例えば、図1Fのテーブル176a及び176bの最初の列に示されているように)場合、エンリッチメント結果を使用して、例えばエンティティインスタンスID結果174aを使用せずに、クエリ結果(例えばテーブル178)を直接生成し得る。
データエンティティ、静的属性及び動的属性、エンティティ間の関係
幾つかの実施形態では、データ処理システムによって管理されるデータは、データエンティティを使用して編成し得る。データエンティティを使用して、オブジェクト指向パラダイムを使用してデータを編成し得る。オブジェクト指向プログラミングがそのクラス及びインスタンスをどのように含むかと同様に、データ処理システムにデータエンティティの定義を構成し得、データ処理システムは、データエンティティのインスタンス及びデータエンティティ定義を使用してデータを管理し得る。
幾つかの実施形態では、データエンティティ定義はデータエンティティの構造を定義する。データエンティティ定義は、データエンティティの属性(又は変数)を定義し得る。エンティティ属性は、文字列及び数字のようなスカラー値をとり得る。例えば、図2Cに示される「BizTerm」データエンティティ220は、「定義」という名前の文字列値属性を有する。エンティティ属性は他のデータエンティティを参照し得る。そのようなエンティティ属性は「参照属性」と呼ぶことができる。例えば、図2Gに示されるように、データエンティティ220のBizTermグループ属性は、BizTermグループデータエンティティを参照する。エンティティ属性タイプの他の例も本明細書に提供される。
幾つかの実施形態では、データエンティティ定義は、データエンティティの属性の1つ又は複数の追加情報を指定し得る。例えば、データエンティティ定義は属性タイプを指定し得る。別の例として、データエンティティ定義は、属性の値がデータ処理システムにより記憶される様式(例えば、属性値が行に記憶されるか又は列に記憶されるか)を指定し得る。更に別の例として、データエンティティ定義は、データエンティティの属性が値を継承する(例えば、別のデータエンティティの属性から)か否かを指定し得る。幾つかの実装形態では、データエンティティ定義は特定の属性に特定の値(例えばデフォルト値)を指定し得、その場合、データエンティティの全てのインスタンスは、特定の値に設定された特定の属性を有する。その他の場合、データエンティティインスタンス属性の値はデータエンティティのインスタンスごとに様々であり得る。
幾つかの実施形態では、データエンティティは、1つ又は複数の静的属性及び/又は1つ又は複数の動的属性を含み得る。例えば、図2Aは、静的属性203a及び203bを含む複数の静的属性202と、動的属性205a及び205bを含む複数の動的属性204とを有するデータエンティティ200の説明のための図を示す。別の例として、図2Bは、静的属性212a及び212bを含む複数の静的属性212と、動的属性214a及び214bを含む動的属性214とを有する、「BizTerm」という名前のデータエンティティ210の説明のための図を示す。データエンティティは、任意の適した数の静的属性(0を含む)及び任意の適した数の動的属性(0を含む)を有し得、本明細書に記載の技術の態様は、この点において限定されない。
図2Cは、静的属性222(「名前」及び「説明」)及び動的属性224(「レガシーURL」及び「レガシー変更日」)を有する「BizTerm」データエンティティ220の別の説明のための図を示す。属性225は、他のデータエンティティを参照するという点で参照属性である。例えば、データエンティティ220のBizTermグループ属性は、BizTermグループデータエンティティを参照し、PII分類属性はPII分類データエンティティを指し、データ要素属性は、DataElemデータエンティティの集まりを指す。
図2Dは、本明細書に記載の技術の幾つかの実施形態による、属性が静的であるか又は動的であるかを含め、図2Cに示されるデータエンティティの属性の幾つかの属性のプロパティを示すテーブル230である。特に、テーブル230は、「名前」、「説明」及び「レガシーURL」属性が文字列値を有し、一方、「レガシー変更日」がタイプ日付の値をとることを示す。テーブル230は、「名前」及び「説明」が静的変数であり、一方、「レガシーURL」及び「レガシー変更日」が動的変数であることを示す。
幾つかの実施形態では静的属性及び動的属性は、データ処理システムにより別様に記憶し得る。例えば、静的属性の値は、1つ又は複数のデータベーステーブルの列に記憶し得る。逆に、動的属性の値は名前-値ペアとして記憶し得、したがって、1つ又は複数のデータベーステーブルの別個の行に記憶される。
図2Eは、本明細書に記載の技術の幾つかの実施形態による、静的属性値及び動的属性値がデータ管理システムによりどのように記憶し得るかの態様を示す図である。幾つかの実施形態では、静的属性値を記憶するために、各エンティティインスタンスは1つのデータベーステーブル(又は複数のデータベーステーブル)中の行として表すことができ、インスタンスの各静的属性はテーブル中の列として表すことができる。例えば、図2Eに示されるように、データエンティティ220のインスタンスの静的属性値は、静的属性ストレージ235(1つ又は複数のテーブルを含み得る)、特にテーブル240に記憶される。テーブル240は各静的属性に列を含み、その列の行は「BizTerm」データエンティティ220の異なるインスタンスに対応する。したがって、テーブルは、データエンティティ220の異なるインスタンス(例えば、この例ではインスタンス1001及び1002)の「名前」属性の値を記憶するための「名前」と呼ばれる列と、データエンティティ220の異なるインスタンスの「説明」属性の値を記憶するための「説明」と呼ばれる列とを有する。幾つかの実施形態では、テーブル240は、データ定義言語を使用してデータベース管理者により定義し得る。
一方、幾つかの実施形態では、動的属性値は名前-値ペアを使用して記憶し得る。特に、各データベースレコードは、特定のエンティティインスタンスの属性値を記憶し得る。例えば、図2Eに示されるように、データエンティティ220のインスタンスの動的属性値は、テーブル250及び260を使用して動的ストレージ245(1つ又は複数のテーブルを含み得る)に記憶される。この例では、テーブル250は各動的属性にそれぞれ一意の識別子を割り当て、テーブル260は各動的属性値の行を記憶する-動的属性値は、属性の一意の識別子(例えば、この例では1、2、・・・)及びデータエンティティインスタンスの識別子(例えば、この例では1001、1002、・・・)と一緒に記憶される。
データエンティティインスタンス265の別の例が図2Fに示され、図2Fは、データエンティティインスタンス及びその属性の少なくとも幾つかの値の可視化を示す例示的なグラフィカルユーザインタフェースの画面例である。データエンティティインスタンス265は、「BizTerm」データエンティティのインスタンスである。この例では、データエンティティインスタンス265は「クレジットスコア」という名前である。データエンティティインスタンス265は多くの静的属性(例えば、「名前」、「定義」及び「タイプ」)及び動的属性を有する。この例では、動的属性は、バンキングアプリケーションにおけるデータガバナンスに関連する種々のタイプの情報を記憶するための属性のグループに分けられる。例えば、データエンティティインスタンス265は、「ビジネスオーナー」、「ガバナンスグループ」、「リスクデータドメイン」、「ビジネスライン」、「管理人」、「対象分野の専門家」等を含むガバナンスに関連する動的属性を有する。別の例として、「クレジットスコア」データエンティティインスタンスは、「機密性」、「PII分類」及び「セキュリティ範囲」を含むプライバシー及びセキュリティに関連する属性を有する。図2Fの画面例は、データエンティティインスタンス265のこれらの属性の幾つかの値例を示す。
上記例から理解し得るように、属性は、とる値のタイプに応じて異なるタイプのものとして見なすことができる。属性の異なるタイプの例について限定ではなく例として以下説明する。例えば、属性は数字、文字列、日付、時刻又は日時等のスカラー値をとり得る。このタイプの属性は、本明細書に記載の例の幾つかでは「拡張属性」と呼ぶことができる。幾つかの実施形態では、属性は、複数の値を有し得、各々が数字、文字列、日付、時刻又は日時であり得る1組の値をとり得る。
別の例として、属性は離散し得、それにより、離散した組の値から選択される値をとる。そのような組は「列挙」と呼ぶことができる。例えば、属性はタイプ「分類」であり得、それにより、値は、1組のラベルから選択されるラベルである。これは、所望のラベルでデータをタグ付けできるようにする。1つの具体例として、特定のデータは、例えば「はい」又は「いいえ」等の値を用いて、個人的に識別可能な情報(PII)として又はそれを含むものとして分類することができる。図2Fの例では、PII分類動的属性は、属性「ガバナンスグループ」でのように、タイプ「分類」である。別の例として、属性は、各ユーザ又はユーザ群を表す値をとり得る。図2Fの例では、「ビジネスオーナー」属性はタイプ「説明責任を負う当事者」であり得、その値はユーザ又はユーザ群を表し得る。図2Fの例では、「ビジネスオーナー」は値「Wade L.Register」をとる。幾つかの実施形態では、所望の組の値内の値の1つ又は複数(例えば全て)は別のデータエンティティインスタンスへの参照であり得る。これらの全ての属性例は離散である。
離散属性の別の例として、属性は、順序付き組の値内の値をとり得る。例えば、順序付き組内の値は階層に従って順序付けられ得る。1つの具体例として、属性は地理的領域に関連する値を記憶し得、値は、値の階層リスト(例えば、「米国」、「デラウェア」又は「ウィルミントン」)から選択し得る。順序付き組の値内の値をとる属性はタイプ「階層」であり得る。図2Fの例では、「リスクデータドメイン」、「ビジネスライン」及び「領域」属性は、タイプ「階層」の動的属性である。タイプ「階層」の属性の値にアクセスする場合、幾つかの実施形態では、変数がとっている特定の値を他の関連する値と共に返し得る。例えば、図2Fに示されるように、「リスクデータドメイン」の値は「クレジットリスク」であり、それは図2Fにおいて、「リスクデータドメイン」の値の階層内で「クレジットリスク」に関連する値である関連値「コーポレートリスク」と一緒に表示されており、その理由は、「クレジットリスク」はタイプ「コーポレートリスク」であるためである。幾つかの実施形態では、順序付き組の値内の値の1つ又は複数(例えば全て)は、別のデータエンティティインスタンスへの参照であり得る。
別の例として、属性は参照属性であり得、その値は別のデータエンティティへの参照(例えば、別のデータエンティティのインスタンスへの参照)であり得る。幾つかの実施形態では、属性は、複数の値を有し得、各々がデータエンティティへの参照であり得る1組の値をとり得る。
別の例として、幾つかの実施形態では、属性はタイプ「ファイル添付」であり得、その値は関心のあるファイル(例えば、ドキュメント、リポート、構成ファイル、スプレッドシート等)を識別し得る。図2Fの例では、「設計ドキュメント」属性は「添付」タイプである。
幾つかの実施形態では、同じタイプの動的属性の値は、土台をなす同じ関係データベーステーブルに記憶し得、それにより、これらの造成の値を検索する場合、最適化が可能になる。例えば、後述するように、「エンリッチメントクエリの実行最適化」と呼ばれるセクションにおいて、単一の実行可能SQLクエリを使用して、同じタイプの複数の動的変数の値を検索することができる。
上記から理解し得るように、データエンティティインスタンスを記憶することは、多くの異なるタイプのデータを記憶することを含み、その理由は、エンティティインスタンスが異なるタイプの属性を有し得るためである。更に、データエンティティインスタンスは静的変数及び動的変数を有し得、変数はデータ処理システムにより異なる方法で記憶し得る。したがって、単一のデータエンティティインスタンスは、データベースシステム(例えば、関係データベースシステム、オブジェクト指向データベースシステム等)内の1つ又は複数のテーブルの行及び/又は列を使用して記憶し得る。テーブルは、1つ又は複数のコンピュータ可読記憶媒体に記憶し得る。
データ処理システム105のエンティティモデル160を参照して上述したように、データ処理システムに、参照属性の使用を通して互いに関連するデータエンティティを構成し得、それにより、あるデータエンティティの属性は別のデータエンティティを参照し得る。データ処理システムの構成はエンティティモデル160を含み得、エンティティモデル160は、データエンティティ定義162と、データエンティティ間の関係164を指定する情報とを含む。そのようなエンティティモデルの態様は、図2Gに示される図示のエンティティ関係図(ERD)等のERDにおいて可視化し得、図2Gは、本明細書に記載の技術の幾つかの実施形態による、データ処理システムに構成し得るエンティティモデル例によるデータエンティティ間の関係を示す図270である。
図2Gの例では、「BizTerm」データエンティティ272は属性「名前」、「説明」、「PII分類」、「レガシーURL」、「レガシー変更日」及び「設計ドキュメント」を有し、種々の値をとる。これらの属性の1つ又は複数は静的であり得る(例えば「名前」及び「説明」)。これらの属性の1つ又は複数は動的であり得る(例えば「PII分類ID」、「レガシーURL」、「レガシー変更日」等)。「BizTerm」データエンティティは、参照属性「BizTermグループ」、「PII分類」及び「データ要素」も有し、これらは他のデータエンティティ-それぞれBizTermグループデータエンティティ274、PII分類データエンティティ278及びデータ要素エンティティ276-を参照する。BizTermグループ属性は、1つ又は複数のBizTermグループデータエンティティインスタンスを参照し得る。PII分類属性は、0又は1つのPII分類データエンティティインスタンスを参照し得る。データ要素属性は、0、1又は2以上のデータ要素エンティティを指し得る。
データ要素エンティティ276は、属性「名前」並びに2つの参照属性「BizTerm」(親BizTermを参照する)及びデータセットエンティティ280の1つ又は複数のインスタンスを参照する「データセット」を含む。また、データセットエンティティ280は、アプリケーションデータエンティティ282の1つ又は複数のインスタンスを指す参照属性「アプリケーション」を含む。
図2Gに示されるエンティティモデルが例示であり、非限定的であることを理解されたい。データ処理システムに、任意の適したデータエンティティと、データエンティティ間の関係とを有する任意の適したデータエンティティモデルを構成することができ、本明細書に記載の技術の態様はいかなる特定のエンティティモデルにも限定されない。
宣言型クエリを使用したデータエンティティインスタンスについての情報の検索
図3は、本明細書に記載の技術の幾つかの実施形態による、1つ又は複数のデータエンティティのインスタンスについての情報を取得するためのクエリ(例えば宣言型クエリ)に対応してクエリ結果を生成する例示的なプロセス300のフローチャートである。
プロセス300は、任意の適した計算デバイスにより実行し得る。プロセス300は、データ処理システム(例えばデータ処理システム105)で実行中の任意の適したソフトウェアにより実行し得る。例えば、図1Dに示されるデータ処理システム105を参照すると、プロセス300は、少なくとも部分的に入力変換モジュール130を使用して動作304(動作304a及び304bを含む)を実行し、出力変換モジュール160を使用して動作308を実行することにより実行し得る。別の例として、データアクセスモジュール140が、幾つかの実施形態では、動作306を実行するように構成し得る。
図3の例示的な環境では、プロセス300は動作302において開始され、クエリ(例えば宣言型クエリ)が取得される。クエリは、データエンティティのインスタンスを識別する第1の部分(クエリの「識別部分」)と、値を検索するデータエンティティの少なくとも1つの属性を示す第2の部分(クエリの「エンリッチメント部分」)とを含み得る。幾つかの実施形態では、クエリはJSONを使用して指定し得る。しかしながら、他の実施形態では、クエリは任意の他の適した形式で指定し得、本明細書に記載の技術の態様は、この点において限定されない。クエリの例(例えば宣言型クエリ)が本明細書に提供される。
クエリは、任意の適したソースから取得し得る。例えば、幾つかの実施形態では、クエリは、図1Dを参照して説明したエンティティAPIインタフェース110の1つを通して取得し得る。一例として、クエリはグラフィカルユーザインタフェースにおいてユーザにより書くことができる。別の例として、クエリは、スクリプト言語、グラフベースのコンピュータプログラム、第三者アプリケーション又は任意の他の適したソフトウェアを使用してプログラム的に生成し得る。
動作302においてクエリが取得された後、プロセス300は動作304に進み、1つ又は複数の実行可能クエリが、動作302において取得されたクエリから生成される。幾つかの実施形態では、実行可能クエリは実行可能SQLクエリであり得る。
幾つかの実施形態では、動作304は2段階で実行し得る。第1に、動作304aにおいて、1つ又は複数の実行可能クエリ(例えば実行可能SQLクエリ)が、クエリの識別部分から生成される(「識別クエリ」)。次に、動作304bにおいて、1つ又は複数の実行可能クエリ(例えば実行可能SQLクエリ)が、クエリのエンリッチメント部分から生成される(「エンリッチメントクエリ」)。動作304a及び304bにおいてそれぞれ生成された実行可能な識別クエリ及びエンリッチメントクエリは、「実行可能クエリの生成」という名の以下のセクションで説明される任意の方法を含め、任意の適した方法で生成し得る。第1に、クエリの識別部分は、第1の部分における情報を、データ処理システムによって管理される情報で増補する一連の変換を通して変換されて、データエンティティインスタンスを記憶するためにデータ処理システムにより使用される少なくとも1つのデータストアのうちのデータストアに対して実行されるように構成される第1の組の1つ又は複数の実行可能クエリを生成し得、クエリの第2のエンリッチメント部分は、第2の部分における情報を、データ処理システムによって管理される情報で増補する一連の変換を通して変換されて、属性値を記憶するためにデータ処理システムにより使用される少なくとも1つのデータストアのうちのデータストアに対して実行されるように構成される第2の組の1つ又は複数の実行可能クエリを生成し得る。
幾つかの実施形態では、動作304aにおいて、図7A~図7Fを参照して本明細書に記載されるプロセス700に従ってクエリの識別部分を使用して、単一の実行可能(SQL)クエリを生成し得る。
幾つかの実施形態では、動作304bにおいて、図7A~図7Fを参照して本明細書に記載されるプロセス700に従ってクエリのエンリッチメント部分を使用して、1つ又は複数の実行可能SQLクエリを生成し得る。エンリッチメント部分を使用して複数の実行可能SQLクエリが生成されるか否かは、エンリッチメント部分で識別される属性数に依存する。1つのみの属性が識別される場合、1つの実行可能SQLクエリで十分であり得る。しかしながら、幾つかの実施形態では、複数の属性がエンリッチメント部分で識別される場合、エンリッチメント部分を使用して複数の実行可能SQLクエリを生成し得る。
特に、幾つかの実施形態では、複数の属性がクエリのエンリッチメント部分で識別される場合、属性はグループにグループ化し得、各属性のグループに生成される1つの実行可能SQLを生成し得る。幾つかの実施形態では、属性は以下のようにグループに分割し得る:(1)データエンティティの静的属性は単一のグループにグループ化し得、(2)動的属性は、エンティティモデルにおけるタイプ及び/又は記憶される様式に基づいて、1つ又は複数のグループにグループ化し得(例えば、図2Gに示されるエンティティモデル例では拡張属性、分類、階層、説明責任を負う当事者及び添付)、(3)エンリッチメント部分内の各参照動的属性(即ち別のデータエンティティインスタンスを参照している動的属性)又はインラインビューに1つのグループ。動的属性をグループにグループ化する態様について「属性のグループの属性値へのアクセス」と呼ばれるセクションで後述する説明を含め、本明細書で説明する。
幾つかの実施形態では、静的又は動的属性の各グループについて、図7Aを参照して説明されるプロセス700を使用して、各実行可能クエリ(例えば実行可能SQLクエリ)を生成し得る。第2のデータエンティティのインスタンスを参照する任意の参照属性では、同じ全体手法を再帰的に適用し得る:(1)他のデータエンティティインスタンスの要求された静的属性及び動的属性がグループ化され、(2)生成された各グループに実行可能SQLクエリが生成され(例えばプロセス700を使用して)、(3)第2のデータエンティティインスタンスが、第3のデータエンティティのインスタンスを参照する参照属性を含む場合、(3a)その要求される静的変数及び動的変数がグループ化され、(3b)生成された各グループに実行可能SQLクエリが生成される(例えばプロセス700を使用して)。第3のデータエンティティインスタンスが、第4のデータエンティティのインスタンスを参照する参照属性を有する場合、静的属性及び動的属性をグループにグループ化し、各グループに実行可能クエリを生成することを再帰的に継続し得る。
幾つかの実施形態では、クエリのエンリッチメント部分は、別のクエリを含むインラインビューを含み得る。その他のクエリは、結果が1つ若しくは複数のデータエンティティのインスタンスの族壊死値又は宣言型テーブルクエリを含む宣言型エンティティクエリであり得る(宣言型テーブルクエリの態様について「エンティティAPIの追加の態様」と呼ばれる以下のセクションを含め、本明細書で説明される)。例えば、宣言型クエリ920のエンリッチメント部分は2つのインラインビューを含む:宣言型エンティティクエリを含むインラインビュー922及び宣言型テーブルクエリを含むインラインビュー924。このようにして、宣言型クエリは入れ子にし得る。エンリッチメント部分がインラインビューを含む場合、インラインビューにおける宣言型クエリは、上述した様式と同様にして処理し得、即ち、静的属性及び動的属性をグループ化し得、各グループに各実行可能(例えばSQL)クエリを生成し得、任意の参照されるデータエンティティクエリ又は更なる入れ子されたインラインビューに更なる再帰処理が適用される。
実行可能インスタンス及びエンリッチメントクエリが動作304において生成された後、プロセス300は動作306に進み、これらの実行可能クエリは実行されてクエリ結果を取得し、動作308において、クエリ結果を結合して出力し得る。
幾つかの実施形態では、動作306を実行することは、まず、動作304aにおいて生成された識別クエリを実行して、1つ又は複数のデータエンティティインスタンスを識別する情報を取得することを含む。この情報は、1つ又は複数のテーブル及び/又は変数に記憶する。識別クエリが実行された後、動作306は、動作304bにおいて生成されたエンリッチメントクエリを実行して、識別されたデータエンティティインスタンスの属性値を取得することを含み得る。したがって、動作304bにおいて生成されたエンリッチメントクエリは、動作304aにおいて生成された識別クエリを実行することにより取得されるデータエンティティインスタンスを識別する情報を参照し得る。参照は、情報、データエンティティインスタンスを記憶するテーブル及び/又は変数へのものであり得る。
また、本明細書に記載のように、幾つかの実施形態では、図示のプロセス300の一変形において、エンリッチメントクエリは、識別クエリが実行された後、生成し得る。そのような実施形態では、プロセスは、(1)宣言型クエリの識別部分から1つ又は複数の実行可能識別クエリを生成し、(2)1つ又は複数の識別クエリを実行して、1つ又は複数のデータエンティティインスタンスを識別する情報を取得し、(3)第2のステップにおいて取得された)1つ又は複数の実行可能エンリッチメントクエリを生成し(任意選択的に、データエンティティインスタンスを識別する情報を使用して)、(4)1つ又は複数のエンリッチメントクエリを実行して、識別されたデータエンティティインスタンスの属性値を取得することにより進み得る。したがって、エンリッチメントクエリは、識別クエリが実行される前又は後に生成され得、本明細書に記載の技術の態様がこの点において限定されないことを理解されたい。
幾つかの実施形態では、動作306において取得されたクエリ結果は、(1)クエリの識別部分を使用して取得された実行可能クエリを実行することにより識別された各データエンティティインスタンスの識別子と、(2)クエリのエンリッチメント部分を使用して取得された1つ又は複数の実行可能クエリを実行することにより取得された属性の値とを含み得る。そのようなクエリ結果は、データエンティティインスタンス識別子をテーブルに配置し、属性値も各エンティティインスタンスの識別子と関連付けられるため、動的属性値を同じテーブルに配置する(これは実際に、後述するように、ピボット動作を実行する)ことにより結合し得る。生成された実行可能クエリのクエリ結果を結合する態様について「宣言型クエリ:識別及びエンリッチメント」及び「エンリッチメントクエリの実行最適化」と呼ばれるセクションを含め、本明細書で更に説明する。
結合クエリ結果は、多くの方法のいずれでも出力され得る。例えば、幾つかの実施形態では、結果は、メモリ又は1つ若しくは複数の任意の他の適したコンピュータ可読記憶媒体に保存することができ、それにより、結果に続けてアクセスすることができる。幾つかの実施形態では、クエリがソフトウェアプログラム(例えば、スクリプト、グラフベースのコンピュータプログラム、第三者ソフトウェア等)から受信された場合、結果はソフトウェアプログラムに提供し得る。幾つかの実施形態では、クエリがグラフィカルユーザインタフェースを介してユーザにより入力された場合、結果はグラフィカルユーザインタフェースを通してユーザに表示し得る。
結合クエリ結果は任意の適した形式で出力し得る。例えば、クエリ結果はテキスト形式、JSON又は任意の他の適した形態で出力し得る、幾つかの実施形態では、クエリ結果は、階層提示に向けてフォーマットし得る(例えば、テキストのタブ移動及び/又は入れ子を使用して、グラフィカルユーザインタフェースにおいて入れ子コンテナを使用して、マークアップ言語での入れ子式タグを使用して等)。幾つかの実施形態では、結果の階層構造は、クエリの階層構造(例えば、宣言型クエリのエンリッチメント部分で識別される属性の階層構造)に一致し得る。結果の階層問い合わせ及び提示の態様について図4D~図4F、図8A~図8E及び図9A~図9Gを参照した説明を含め、本明細書で説明する。
宣言型クエリ:識別及びエンリッチメント
図4Aは、本明細書に記載の技術の幾つかの実施形態による、識別部分404及びエンリッチメント部分406を含む一例の宣言型クエリ402を示す図である。宣言型クエリ402は、この例ではJSON形式で指定される。しかしながら、宣言型クエリは、任意の他の適した形式で使用され得、本明細書に記載の技術の態様は、宣言型クエリの指定にJSON形式のみを使用することに限定されないことを理解されたい。
本明細書に記載のように、宣言型クエリの識別部分は、1つ又は複数のデータエンティティのインスタンスを識別するための情報を含み、インスタンスはデータ処理システムにより記憶し得る(例えば、図1Dを参照して説明されるデータ持続層150を使用して)。宣言型クエリのエンリッチメント部分は、宣言型クエリの処理に応答して(識別されたデータエンティティインスタンスのために)値が取得されるべき1つ又は複数のデータエンティティの1つ又は複数の属性を識別する情報を含む。このようにして、宣言型クエリの処理は、(1)識別部分を処理して、データエンティティインスタンスを選択することと、(2)エンリッチメント部分を処理して、選択されたデータエンティティインスタンスの属性値を取得することとを含む。属性の値が1つ又は複数の他のデータエンティティインスタンスへの参照である場合、エンリッチメント部分の処理は、本明細書に記載のように、その参照値を使用して、他のデータエンティティインスタンスの属性の値を取得するか、又は他のデータエンティティインスタンスに関連する更に他のデータエンティティインスタンスの属性の値を取得することを更に含み得る。
図4Aの例では、宣言型クエリ402は、「エンティティクラス」が「BizTerm」である任意のデータエンティティのインスタンスについての情報を検索するためのものである。これは、図4Aに示されるように、識別部分404の2行目に示されている。また、エンリッチメント部分406は、識別部分404を使用して識別された各データエンティティインスタンスについて、「名前」及び「説明」属性の値を取得すべきであることを指定している。
図4Aの宣言型クエリ402を処理することにより生成された例示的なクエリ結果422を図4Bに示す。この例では、宣言型クエリ402の処理に応答して生成されたクエリ結果422は、単一のデータエンティティインスタンスについての情報を含む。(これは、明確にするために要約された例である。実際には、多くのデータエンティティインスタンスについての情報が返され得る)。その単一のデータエンティティインスタンスについての情報は、(1)データエンティティインスタンスについての識別情報と、(2)宣言型クエリ402のエンリッチメント部分406において識別されたデータエンティティ(の単一のインスタンス)の値(即ち、属性「名前」及び「説明」の値であり、この例では、それらの値はそれぞれ「主口座番号」及びヌル値である)を含む。仮に追加の属性がエンリッチメント部分406において識別される場合、それらの属性の値もクエリ結果422に含められることになる。
また、図4Bに示されるように、データエンティティインスタンスの識別情報(クエリ結果422の部分)は、例えば対応する値「BizTerm」を有する(宣言型クエリ402の識別部分404と一貫する)、データエンティティインスタンスのエンティティクラスを示すためのフィールド(「エンティティクラス」)、対応する値「主口座番号」を有するデータエンティティの内部名を示すためのフィールド(「識別名」)、対応する値「主口座番号」を有する、表示に使用するデータエンティティインスタンスの名前を示すためのフィールド(「表示名」)、対応する値「ビジネスチーム」を有するエンティティタイプを示すためのフィールド(「エンティティタイプ」)及び対応する値「55.1171」を有するデータエンティティインスタンスの英数字(又は数字又は英字)識別子を示すためのフィールド(「複合ID」)を含め、対応する値を有する複数のフィールドを含む。
図4A及び図4Bから理解し得るように、宣言型クエリ402は、データ処理システムによって管理されるデータエンティティインスタンスについての情報を検索するための宣言文であるため、クエリである。データエンティティについての情報を取得するための宣言型クエリは「エンティティクエリ」と呼ぶことができる(例えば識別部分404の1行目参照)。本明細書に記載のように、本明細書に記載の技術の実施形態は、単にデータエンティティについての情報(例えばデータエンティティインスタンス、データエンティティの定義、関連する構成情報等)の検索に限定されず、データ処理システムにおけるそのような情報の更新、削除又は作成に使用することもできる。そのような場合、宣言文を使用してそのような動作を行うことができる。そのような宣言文の例(宣言型クエリは、宣言文の一例である)及びそのような文がデータ処理システムによりどのように処理されるかの説明について「追加のエンティティ動作」という名称の後述のセクションを含め、本明細書で説明する。
図4Aの簡単な例では、識別部分404は、特定のクラスを有するデータエンティティのインスタンスが識別されるべきであることを指定する。しかしながら、識別部分は、どのデータエンティティインスタンスが選択されるべきかを、より複雑であり得る他の方法で指定し得る。例えば、識別部分は、特定の属性値を有するデータエンティティインスタンスが選択されるべきであることを指定し得る。1つの具体例として、図4Cに示される宣言型クエリ410の識別部分411は、ライン412において、クラス「BizTerm」を有し、「名前」属性が値「口座」を含む文字列であるデータエンティティインスタンスについての情報が検索されるべきであることを示す。別の例として、識別部分は、特定の属性値を有する他のデータエンティティに関連するデータエンティティインスタンスが選択されるべきであることを指定し得る。
より一般には、幾つかの実施形態において、データエンティティインスタンスを選択するための条件は、データエンティティインスタンス自体に関連する任意のデータ、グローバルパラメータ及び/又は変数、データ処理システムの構成、計算環境変数値及び/又はデータ処理システムにより記憶され、及び/又はアクセス可能な任意の他の適したデータを含め、データ処理システムにより記憶及び/又はアクセス可能な任意のデータに依存し得る。幾つかの実施形態では、1つ又は複数のそのような条件は、宣言型クエリの識別部分において明示的に述べることができ(例えばJSONを使用して)、その例を本明細書に提供する。幾つかの実施形態では、1つ又は複数のそのような条件は、宣言型クエリを処理するとき、データ処理システムにより課すことができる。例えば、データ処理システムは、ユーザがアクセスする権限を有するデータエンティティインスタンスのみについてのユーザ情報を提供し得る。そのような条件は、幾つかの実施形態では、宣言型クエリの一部として明示的に書かれる必要なく、自動的に課すことができる。
したがって、幾つかの実施形態では、データエンティティインスタンスを選択するための条件は、データエンティティインスタンスと関連するデータ(例えば、データエンティティインスタンスの属性値、関連するデータエンティティインスタンスの属性値、データエンティティの定義、データエンティティへのアクセスと関連する許可、データに記憶されたデータのバージョン等)に依存する。追加又は代替として、データエンティティインスタンスを選択するための条件は他の情報に依存し得る。例えば、条件は、返すべき結果の数への数値制限を指定する(例えば、返される結果数を5,000に制限する図4Cに示される宣言型クエリ410のライン414参照)。返される結果数への制限は、宣言型クエリのエンリッチメント部分において設定することもできる(例えば、「選択」文に応答して返される結果数を500に制限する図4Cに示されるエンリッチメント部分415参照)。別の例として、条件は、データ処理システムのユーザ(例えばログインしたユーザ)がアクセスする軽減を有するデータエンティティインスタンスのみを選択することを指定し得る。
更に別の例として、条件は、履歴(例えば、いつ作成されたか、最後の更新はいつか、指定された時間期間内に更新されたか否か、特定のユーザ又はユーザ群により作成及び/又は編集されたか否か等)に基づいてデータエンティティインスタンスを選択することを指定し得る。
更に別の例として、条件は、ワークフローステータスに基づいてデータエンティティインスタンスを選択することを指定し得る。幾つかの実施形態では、データ処理システムは、データエンティティインスタンスと関連する任意のデータ(例えば属性値)に対してユーザが行った少なくとも幾つかの変更が1人又は複数の他のユーザにより承認される必要があるように、ワークフロー管理システムを使用してデータエンティティインスタンスへの変更を管理するように構成し得る。ワークフロー管理システムは、どの変更が承認される必要があるか及びどの変更が承認されたかを追跡し得る。したがって、データエンティティインスタンスは、前に提出された全ての変更が承認済みである(「公開」若しくは「承認済み」ワークフロー状態と呼ばれることがある)、前に提出された変更の1つ若しくは複数がまだ承認されていないワークフロー状態(「保留中」若しくは「承認保留中」ワークフロー状態と呼ばれることがある)又は場合により任意の他のワークフロー状態と関連付けられ得る。より複雑なワークフロー管理システムは、変更管理が実施される様式に応じて他の状態を有し得る。ワークフロー管理システムがどのように実施され得るかの態様については、2020年1月22日付けで出願された「Finite State Machines for Implementing Workflows for Data Objects Managed by a Data Processing System」という名称の米国特許出願公開第2020/0234242号に記載さており、これは全体的に、参照により本明細書に援用される。
しかしながら、ワークフロー管理システムがどのように実施されるかの詳細を問わず、幾つかの実施形態では、データエンティティに、対応するワークフローステータス(例えばワークフロー状態)を関連付けることができ、データエンティティインスタンスを識別するための条件(例えば、宣言型クエリの識別部分において明示的に述べられ及び/又は宣言型クエリを処理するときにデータ処理システムにより暗黙的に適用される)は、そのワークフロー状態に基づいてデータエンティティインスタンスを選択することを指定し得る。例えば、条件は、特定のワークフロー状態(例えば「公開」、「承認保留中」等)を有するデータエンティティインスタンスを選択すること、閾値時間期間内又は指定された範囲内で更新された(例えば「承認保留中」状態から「承認済み」状態に移った)データエンティティインスタンスを選択すること又は任意の他の適した方法でワークフローステータスに基づいてデータエンティティインスタンスを選択することを指定し得、本明細書に記載の技術の態様は、この点において限定されない。例えば図4Cに示されるように、宣言型クエリ410は、「クエリビュータイプ」パラメータ418を使用して、識別部分411が処理されるとき、「公開」データエンティティインスタンスのみが選択されるべきである(ひいては承認がまだ保留中の変更と関連する任意のデータエンティティインスタンスは選択されない)ことを示す。
幾つかの実施形態では、データエンティティインスタンスは、変更がデータエンティティインスタンスに対して行われるとき、変更されたデータエンティティインスタンスはそのデータエンティティインスタンスの新しいバージョンとして記憶され、そのデータエンティティインスタンスの前のバージョンは持続するという点で「バージョン管理」され得る。幾つかのそのような実施形態では、宣言型クエリの識別部分を使用して、データエンティティの最新バージョン、データ処理システムにより持続しているデータエンティティの1つ又は複数の前のバージョン、データエンティティの現在のバージョンと1つ又は複数の前のバージョンとの間の変更を示す値及び/又は現在及び/又は持続のデータエンティティインスタンスについての任意の他の適した情報を選択し得る。
上記から理解し得るように、どのデータエンティティインスタンスが選択されるべきかを示すために、宣言型クエリの識別部分の一部として包含し得る豊富な組の条件がある。本発明者らにより開発された技術は、そのような条件の様々な表現方法を提供する。例えば、幾つかの実施形態では、宣言型クエリの識別部分は、構造化クエリ言語(SQL)クエリを使用して選択されるべきデータエンティティインスタンスを指定し得る。別の例として、幾つかの実施形態では、宣言型クエリの識別部分は、いわゆる「フィルタ表現」シンタックスを使用して選択されるべきデータエンティティインスタンスを指定し得る。更に別の例として、幾つかの実施形態では、宣言型クエリの識別部分は、データエンティティインスタンスと関連する英数字(又は数字又は英字)識別子を使用して選択されるべきデータエンティティインスタンスを指定し得る。この3番目の選択肢は、それらの英数字識別子に既にアクセス可能である(例えば、データエンティティインスタンスを作成又は更新した後)場合、適用可能であり得る。更に別の例として、「1つ又は複数のサーチインデックスを使用したデータの検索」と呼ばれるセクションで後述されるように、データ処理システムが1つ又は複数のサーチインデックスを使用してデータエンティティインスタンスにアクセスする幾つかの実施形態では、宣言型クエリの識別部分は、サーチ文字列を使用して選択されるべきデータインスタンスを指定し得る。
幾つかの実施形態では、宣言型クエリの識別部分は、SQLクエリを使用してデータエンティティインスタンスを指定し得る。例えば、SQLクエリは、ANSI SQL規格(例えば任意の過去、現在又は生来のバージョンの)に準拠する任意の適したシンタックス及び/又はコマンドを使用し得る。幾つかの実施形態では、SQLクエリは、ANSI SQL規格と一貫する任意のベンダー固有のSQL実装(例えば、MySQL、Oracle、PostgreSQL、Teradata等の実装)に準拠し得る。幾つかの実施形態では、SQLクエリはANSI SQL規格の厳密なサブセット(即ち全てではなく幾つかのシンタックス及び/又はコマンド)部分を使用し得る。表1中のSQLクエリは、宣言型クエリの識別部分に包含することができるSQLクエリの一例である。
宣言型クエリの識別部分で使用されるSQLクエリの追加の例が、図4D、図9C並びに図9F-1及び図9F-2に含まれて本明細書に提供される。
幾つかの実施形態では、宣言型クエリの識別部分は、いわゆる「フィルタ表現」シンタックスを使用して選択すべきデータエンティティインスタンスを指定し得る。幾つかの実施形態では、フィルタ表現はSQL「WHERE」節を含み得る。更に、ANSI SQL規格に準拠するSQLクエリと異なり、フィルタ表現はいわゆる「エンティティモデル」パスを含み得、エンティティモデルパスは、オブジェクト指向プログラミング言語で使用されることがあるドット表記を使用してエンティティモデルに準拠する文字列を使用して値にアクセスできるようにする。例えば、ドット表記は、データエンティティモデル内のデータエンティティ関係を巡回する(例えば、図2Gに示されるERD内の関係に従って)のに使用し得る。フィルタ表現シンタックスを使用してデータエンティティインスタンスを選択する一例を以下の表2に示す。このフィルタ表現は、名前が文字「A」で始まり、「企業ビジネス用語集」と呼ばれるビジネス用語グループに属する「BizTerm」データエンティティのインスタンスを選択するために使用される。この例では、「BizTermGroup.Name」がエンティティモデルパスである。
宣言型クエリの識別部分で使用されるフィルタ表現の追加の例が、図4A、図4C、図5A及び図8Bを含め、本明細書で提供される。
本明細書に記載のように、データエンティティは互いに関連し得る。例えば、データエンティティインスタンスの属性はそれら自体、他のデータエンティティインスタンスを参照し得る(例えば、データ属性の値は、別のデータエンティティインスタンスへの参照であり得る)。また、それらの他のデータエンティティインスタンスの1つ又は複数が、他のデータエンティティインスタンスを参照する属性を有することもできる等々である。その結果、データエンティティインスタンスに、属性の階層を関連付けることができ、幾つかの実施形態では、単一の宣言型クエリを使用して、そのような階層内の属性の幾つか又は全ての値を取得し得る。この意味で、その宣言型クエリは階層的であると見なすことができる。
したがって、幾つかの実施形態では、宣言型クエリは関連するエンティティ及びそれらの属性を巡回して、多数の関連データを単一の要求で検索できるようにすることができる。このために、幾つかの実施形態では、宣言型クエリのエンリッチメント部分は、宣言型クエリを処理することにより、値を取得し得る(例えば、同じ宣言型クエリの識別部分を使用して識別されたデータエンティティインスタンスの)ように、関心のある関連データエンティティの1つ又は複数の属性を識別する情報を含む。
エンリッチメント部分は、関心のある属性を多くの方法のいずれでも示し得る。例えば、幾つかの実施形態では、その指示は、宣言型クエリのエンリッチメント部分で明示され得、例えば図4D~図4F及び図9A~図9Gを参照した説明を含め、本明細書に記載のように入れ子を使用して指定し得る。別の例として、幾つかの実施形態では、その指示は、宣言型クエリにおいて属性の階層を明示的に述べることなく、代わりに、図8A~図8Cを参照した説明を含め、本明細書に記載のように再帰に依存することにより行うことができる。
階層宣言型クエリの一例を図4Dに示し、図4Dは、本明細書に記載の技術の幾つかの実施形態による、宣言型クエリの処理に応答して値が返されるべき属性の階層を指定する宣言型クエリ420の図である。宣言型クエリ420は、「名前」属性が値「cust_dwh」をとるデータエンティティ「技術グループ」のインスタンスを選択するためのSQLクエリを含む識別部分421を含む。
宣言型クエリ420は、入れ子を使用して、値を検索すべき属性の階層を指定するエンリッチメント部分422も含む。この例では、「技術グループ」データエンティティのインスタンスは、1つ又は複数の「データセット」データエンティティインスタンスのリストを参照し得、エンリッチメント部分422は、識別された各「技術グループ」データエンティティインスタンス(特定の「技術グループ」データエンティティインスタンスにより参照される)について、特定の各データセットデータエンティティインスタンスの識別情報及び名前が検索されるべきであることを示す。
図4Eは、図4Dに示される宣言型クエリ420の処理に応答して返された一例としての結果430を示す。特に、結果430は、入れ子されたエンティティインスタンスについての情報を含む。特に、結果430は、(1)識別情報431、(2)その名前属性432の値、及び(3)「技術グループ」データエンティティの単一のインスタンスにより参照される2つの「データセット」データエンティティインスタンスについての情報を含む「技術グループ」データエンティティの単一のインスタンスについての情報を含む。2つの「データセット」インスタンスについての情報は、入れ子された結果434及び436に示されている。各「データセット」インスタンスについて、返される情報は、インスタンスについての識別情報(例えば、エンティティクラス、識別名、表示名、エンティティタイプ及び複合ID値)と、「名前」属性音値とを含む。この例では、結果434及び436における「名前」属性の値はそれぞれ「CUSTOMER_INFO」及び「DEPOSIT_ACCOUNT」である。
幾つかの実施形態では、宣言型クエリを処理することにより生成された結果は、宣言型クエリで指定された属性の階層に対応する階層形式でフォーマットし得る。例えば、図4D及び図4Eの例から分かるように、図4Eに示される結果430の階層構造は、図4Dの宣言型クエリ420のエンリッチメント部分422に示される入れ子の階層構造と一致する(ひいては対応する)。このようにして、宣言型クエリは、1つ又は複数のデータストアから(例えばデータ持続層150から)データを取得するためのみならず、データを出力に適切な形式にするためにも使用される。例えば、宣言型クエリを処理することにより検索されたデータは、関係データベース内の1つ又は複数のテーブルに記憶し得る。しかしながら、検索された後、宣言型クエリの階層構造を使用して(例えば、図1Dを参照して説明した階層出力モジュール167により)、宣言型クエリのエンリッチメント部分の階層形式と一致する階層形式でデータを再編成し、その形式で出力し得る。
幾つかの実施形態では、関連する全てのデータエンティティインスタンスと関連する値を返さないことが望ましいことがある。例えば、単純に関連するデータエンティティインスタンスが多過ぎ得る。この場合、結果は、返される結果数に数値制限を課すことにより制限し得る(例えば図4Cに示されるように)。別の例として、結果は、宣言型クエリのエンリッチメント部分の入れ子構造内のフィルタ表現又はSQL文を使用することによりフィルタリングし得る。例えば、図4Fに示されるように、「Application.Name=’Feed’であるインスタンスのみを返すことにより「データセット」エンティティインスタンスの数を削減するように、図4Dの宣言型クエリ420はフィルタ表現442で増補されて、宣言型クエリ440を取得し得る。
本明細書に記載のように、宣言型クエリは、識別部分及びエンリッチメント部分を含み、宣言型クエリを処理するために、(1)識別部分は1つ又は複数の実行可能SQLクエリ(本明細書では「識別クエリ」又は「複数の識別クエリ」と呼ばれることがある)に変換され、(2)エンリッチメント部分は1つ又は複数の実行可能SQLクエリに変換され、(3)全ての実行可能SQLクエリが実行されて、各結果を取得し(本明細書では「エンリッチメントクエリ」又は「複数のエンリッチメントクエリ」と呼ばれることがある)、結果は(4)結合され、任意選択的にフォーマット(例えば階層的に)されて、宣言型クエリへの応答を生成する。図5A~図5Fはこのプロセスの幾つかの態様を示す。
図5Aは、本明細書に記載の技術の幾つかの実施形態による、識別部分及びエンリッチメント部分を含む一例の宣言型クエリ502を示す図である。宣言型クエリ502は識別部分504及びエンリッチメント部分506を含む。識別部分504は、識別部分504が処理される場合、「A」で始まる名前の「BizTerm」データエンティティのインスタンスが識別されるべきであることを示す。エンリッチメント部分506は、識別部分504を使用して識別された各データエンティティインスタンスについて、「名前」、「説明」、「ビジネス用語タイプ」及び「データ要素」属性についての情報が検索されるべきであることを示す。この例では、「名前」及び「説明」は静的属性であり、「ビジネス用語タイプ」及び「データ要素」は参照属性である。
図5Bは、本明細書に記載の技術の幾つかの実施形態による、図5Aに示される宣言型クエリ502を処理することによりデータ処理システムにより生成し得る実行可能SQLクエリを示す図である。特に、図5Bに示されるように、識別部分504は処理されて、「A」で始まる名前を有する「BizTerm」データエンティティインスタンスを識別するための実行可能SQLクエリ510を生成し得る。別個に、エンリッチメント部分506は処理されて、(1)名前属性の値を取得するための実行可能SQLクエリ512、(2)説明属性の値を取得するための実行可能SQLクエリ514、(3)「ビジネス用語タイプ」属性の値を取得するための実行可能SQLクエリ516、及び(4)「データ要素」属性の値を取得するための実行可能SQLクエリ518を生成し得る。SQLクエリ510を実行することにより取得された結果は、識別されたデータエンティティインスタンスの(例えば数値)識別子を含み得、これらの識別子を使用して、全ての実行可能SQLクエリ510、512、514、516及び518を実行した結果を結合し得る。本明細書に記載のように、幾つかの実施形態では、エンリッチメント部分を使用して生成される実行可能SQLクエリは、関心のあるデータエンティティインスタンス(この例では、「A」で始まる名前を有するデータエンティティインスタンス)を識別するための実行可能SQLクエリ(例えばこの例ではクエリ510)を実行した結果を使用して実行(及び任意選択的に生成)し得る。
この例では、各属性の値は単一の実行可能SQLクエリを使用して取得されるが、幾つかの実施形態では、2つ以上のSQLクエリ又は実行可能SQL文の任意の他の適した組合せを使用して、属性の1つ又は複数の値を取得し得、本明細書に記載の技術の態様は、この点において限定されないことを理解されたい。
幾つかの実施形態では、単一の実行可能SQLクエリを使用して、複数の異なる属性の値を検索し得ることも理解されたい。これは、宣言型クエリを処理するに当たり(例えば、異なる属性値が同じテーブルに記憶され、同じタイプであり、同じ記憶媒体に記憶される場合等)効率を提供し得、それにより、クエリの処理に使用される計算リソース量(例えば、プロセッササイクル、メモリ、ネットワーク帯域幅)を低減し得る。単一の実行可能SQLクエリを使用して複数の異なる属性の値を検索する例について図5D及び図6A~図6Fを参照した説明を含め、本明細書で提供する。
図5A及び図5Bの例に戻り、この例についての更なる詳細を提供するために、宣言型クエリ502の識別部分504を使用して生成された実行可能SQLクエリ510の説明のための例を示す図5Cを考慮する。実行可能SQLクエリ510は、例えば、図7A~図7Cを参照した説明を含め、本明細書で記載のような方法を含め、任意の適した方法で生成し得る。実行可能SQLクエリ510は、特定のタイプの関係データベースからデータを取得するための実行可能なデータベース固有SQLクエリであり得る。この例のクエリを実行した結果はテーブル520に示され、テーブル520は、実行可能SQLクエリ510を処理することにより識別された「BizTerm」データエンティティインスタンスの識別子(即ち、1024、1043、1053、1087、1103、1008、1197)を示す。
図5Dは、実行されると、実行可能クエリ510を使用して識別され、図5Cに示される識別子を有する「BizTerm」データエンティティインスタンスの各々の「名前」及び「説明」属性の値を取得する、宣言型クエリ502のエンリッチメント部分506を使用して生成された実行可能SQLクエリ530の説明のための例を示す。生成された値はテーブル532に示され、テーブル532は、各データエンティティインスタンス識別子用の行と、これらの2つの属性の各々用の列とを有する。実行可能SQLクエリ530では、「Tqt.BizTermID0」は、図5Cに示されるSQLクエリ510を実行した結果として取得される「BizTerm」データエンティティインスタンスを指す。
「名前」及び「説明」属性の値を取得するために別個の実行可能SQLクエリ512及び514を使用することが可能であるが、図5Dの例では、単一のSQLクエリ530が使用され、その理由は、例では、これらの属性の両方の値が同じテーブルに記憶されているためである。図6A~図6Fを参照して後述する説明を含め、本明細書に記載のように、属性値が同じテーブルに記憶される(又はデータにアクセスするために、複数のクエリではなく単一のクエリを使用することから得られる他の効率がある)幾つかの実施形態では、複数のSQLクエリの代わりに単一の実行可能SQLクエリを使用して、属性値にアクセスし得る。しかしながら、別個のクエリも同様に使用することができ、そのようなクエリの例を以下の表3及び表4に示す。
図5Eは、実行されると、実行可能クエリ510を使用して識別され、図5Cに示される識別子を有する「BizTerm」データエンティティインスタンスの各々のビジネス用語タイプ属性の値を取得する、宣言型クエリ502のエンリッチメント部分506を使用して生成された実行可能SQLクエリ516の説明のための例を示す。実行可能SQLクエリ516を実行した結果はテーブル536に示される。テーブル536は、図5Cに示される各エンティティインスタンス識別子の行を含む。ビジネス用語タイプ属性は別のデータエンティティインスタンスを参照し、その属性の少なくとも幾つかの値がテーブル536の列に示される。
図5Fは、実行されると、実行可能クエリ510を使用して識別され、図5Cに示される識別子を有する「BizTerm」データエンティティインスタンスの各々のデータ要素属性の値を取得する、宣言型クエリ502のエンリッチメント部分506を使用して生成された実行可能SQLクエリ518の説明のための例を示す。実行可能クエリ518を実行した結果はテーブル538に示される。テーブル538は、図5Cに示される各エンティティインスタンス識別子の行を含む。データ要素属性は別のデータエンティティインスタンスを参照し、その属性の少なくとも幾つかの値がテーブル538の列に示される。
図5C~図5Fの例から理解し得るように、幾つかの実施形態では、エンリッチメント部分506で要求された各データには、関連付けられたデータエンティティインスタンスを示す各識別子が関連付けられるため、種々の実行可能SQLクエリを処理した結果として得られたデータは、データエンティティインスタンス識別子520を使用して結合し得る。データは、任意の適した方法で結合することができる。例えば、データは単一のテーブルに結合することができる。別の例として、データは階層提示に向けてフォーマットすることができる。更に別の例として、データは、ファイル又は他のデータベースシステムに任意の適したフォーマットで書き込むことができ、本明細書に記載の技術の態様は、この点において限定されない。
エンリッチメントクエリの実行最適化
Tempテーブル及び共通テーブル表現
幾つかの実施形態では、識別及びエンリッチメントSQLクエリを実行することにより生成された結果は、テーブルを使用して結合し得る。例えば、幾つかの実施形態では、識別SQLクエリの実行により得られたデータエンティティインスタンス識別子(例えば、上述したデータインスタンス識別子520)は、一時テーブルに挿入し得、次いで一時テーブルは、エンリッチメントSQLクエリを使用して得られたデータの少なくとも幾つか(例えば全て)と結合し得る。また、生成されたテーブル(結合後)内のデータは、任意の適した方法でフォーマットされ、本明細書に記載の方法のいずれでも出力され得る。
幾つかの実施形態では、単一のデータエンティティ及びその直接プロパティのみについての情報にアクセスしている(例えば、単一のデータエンティティにより参照されている以外のデータエンティティについての情報は要求されていない)場合、別個の識別クエリ及びエンリッチメントクエリを使用する代わりに共通テーブル表現を使用して、要求されたデータを取得し得、一時テーブルを使用して結果を結合し得る。そのような共通テーブル表現の一例を以下の表5に示す。
ピボット
上述したように、宣言型クエリのエンリッチメント部分から生成された異なる実行可能SQLクエリが処理されて、各結果を取得した後、これらの結果は結合することができる。異なる実行可能エンリッチメントクエリを使用して、異なるデータベーステーブルに記憶された値にアクセスすることができることを想起する。異なるテーブルに記憶された値にアクセスし、次いでそれらの値を結合する従来の手法は、(1)データベース内の複数のテーブルを結合し(例えば、SQL「結合」コマンドを使用してテーブルを結合することにより)、結合テーブルを取得し、(2)結合テーブルの所望の部分を読み取ることである。しかしながら、本発明者らは、そのような手法が、データエンティティインスタンスが多くの動的属性を有し、それらの多くが異なるテーブルに記憶されるため、本状況で極めて非効率的である(処理要件及びメモリ要件に関して)ことを認識した。その結果、多くの宣言型クエリを処理するには、クエリを実行する都度、数十(例えば、少なくとも10、少なくとも20、少なくとも30、10~50)ものテーブルを結合する必要があり、これは極めて非効率的である。一例として、データエンティティが少なくとも20個の動的属性を有することは珍しくなく、それには、動的属性の値が、動的属性値のテーブルを記憶したデータベースと結合される場合と少なくとも同数の結合を実行する必要がある。
SQLを使用してピボットを実行することの複雑さの一例を以下の表5に示す。表5は、複数の属性(この例では「拡張属性」タイプ)の変数にアクセスするためのSQL文を含む。各属性は左外部結合を必要とし、したがって、2つのみのそのような属性のSQLを以下の表6に示す。そのようなコードの生成及び実行は、属性値を記憶しているデータベース内で多数の中間テーブルを構築する必要があるため、極めて非効率的である。これには長い時間がかかり(ひいてはクエリの実行により長い時間がかかり)、相当量のメモリを消費する。
他方、異なる属性で幾つかの異なる実行可能SQLクエリを生成し実行することにより宣言型クエリのエンリッチメント部分を処理することで、それらを記憶しているデータベースからアクセスされた後、属性値を結合することが可能になる。これは、例えば、テーブルが記憶されているデータベース内で多数のテーブルを結合することにより、SQLにおいてピボットを実行する必要性を回避する。
したがって、幾つかの実施形態では、異なる実行可能SQLエンリッチメントクエリを処理することにより取得された属性値は、それらが持続しているデータベースからアクセスされた後、これらのデータを処理することにより結合し得る。幾つかの実施形態では、結合は、Java又は任意の他のプログラミング言語で書かれたソフトウェアを使用してデータをピボットすることにより、データがアクセスされたデータベースシステムによる処理のためにいかなるSQL文(例えば、テーブルを結合するためのSQLコマンド)も呼び出すことなく実行することができる。簡単に言えば、結果は、従来の方法を使用してデータベースシステム内で実行されたであろういかなるSQL処理からも外部で結合することができる。複数の動的変数の値にアクセスする場合、各クエリの結果は名前-値ペアの行を含み、これは、データエンティティインスタンスの属性値を記憶するテーブルの列になることができる。
図5Gは、本明細書に記載の技術の幾つかの実施形態による、SQLを使用しないSQLクエリ結果のピボットを示す図である。図5Gに示されるように、異なるエンリッチメントクエリを実行したことから取得された結果542及び544は、Javaソフトウェア又は任意の他のソフトウェアプログラムを使用して(しかしSQLコマンドではなく、属性を記憶しているテーブルを結合せずに)ピボットし(546)、結果548を取得することにより結合し得る。この例では、各クエリから取得された結果は多くの行を含み、行は、Javaソフトウェアにより、結果548に示されるようにエンティティインスタンスの列になる。
属性のグループの属性値にアクセスする
本明細書に記載のように、本発明者らは、より少数の実行可能クエリ(例えば、実行可能SQLクエリ又は任意の他の適したタイプの実行可能クエリ)が属性値の取得に使用される場合、宣言型クエリをより効率的に処理し得ることを認識した。例えば、特定の属性値が共通テーブルに記憶される場合、テーブルを記憶しているデータベースに対して複数のクエリを実行するよりも、同じテーブルに対して単一のクエリを実行して属性値を検索するほうがより効率的である。この一例について図5Cを参照して上述した。更なる例について図6A~図6Fを参照した説明を含めて後述する。
図6A及び図6Bは両方とも、宣言型クエリのエンリッチメント部分600を示す。この例では、エンリッチメント部分は、4つの属性(属性#1~4)についての情報が検索されることを示す。図6Aは、4つの属性の各々に各実行可能SQLクエリが生成されることを示す。特に、属性1、2、3及び4の値を取得するために、実行可能SQLクエリ602、604、606及び608がそれぞれ生成される。しかしながら、この例では、属性2及び3が同じタイプ(タイプB)であり、複数のクエリではなく単一のクエリを使用してこれらの属性にアクセスするほうがより効率的であり得ることを意味し、その理由は例えば、これらの属性の値が土台をなす同じテーブルに記憶されているためである。例えば、属性2及び3はタイプ「拡張属性」又はタイプ「分類」の両方であり得る。これらの2つの属性タイプ及び他の属性タイプが、図2A及び図2Bを参照した説明を含め、本明細書に記載される。図6Bに示されるように、属性2及び3の値を取得するために、別個の実行可能SQLクエリ604及び606ではなく単一の実行可能SQLクエリ605を生成し使用し得る。
したがって、幾つかの実施形態では、宣言型クエリのエンリッチメント部分を処理して、エンリッチメント部分で識別された属性についての情報を取得するための実行可能SQLクエリを生成することは、(1)エンリッチメント部分における属性をグループにグループ化し、(2)複数のグループの各々に各実行可能クエリを生成することを含む。
幾つかの実施形態では、同じタイプを有する属性は共通グループにグループ化し得る。例えば、幾つかの実施形態では、タイプ「拡張属性」の動的属性(エンリッチメント部分で識別される)はグループ化し得、このグループ内の属性についての情報を取得するために単一の実行可能SQLクエリを生成し得る。別の例として、幾つかの実施形態では、タイプ「分類」の動的属性(エンリッチメント部分で識別される)はグループ化し得、このグループ内の属性についての情報を取得するために単一の実行可能SQLクエリを生成し得る。別の例として、幾つかの実施形態では、タイプ「階層」の動的属性(エンリッチメント部分で識別される)はグループ化し得、このグループ内の属性についての情報を取得するために単一の実行可能SQLクエリを生成し得る。更に別の例として、幾つかの実施形態では、タイプ「説明責任を負う当事者」の動的属性(エンリッチメント部分で識別される)はグループ化し得、このグループ内の属性についての情報を取得するために単一の実行可能SQLクエリを生成し得る。
例えば、図6C-1に示されるように、宣言型クエリ610は識別部分612及びエンリッチメント部分614を含み、「名前」静的属性620及び動的属性:「x機密性」、「xグループ」、「x領域」、「xビジネスライン」、「x追加定義」、「xレガシーシステムURL」、「xSME」及び「x管理人」についての情報を含む種々のタイプの属性についての情報にアクセスすべきであることを示す。これらの動的属性の幾つかは同じタイプであるが、図6C-1は、各動的属性に単一の実行可能SQLクエリが生成されることを示す。
しかしながら、幾つかの実施形態では、データ処理システムは、これらの動的属性の幾つかが同じタイプであると判断し得る。例えば、図6C-2に示されるように、データ処理システムは、属性「x機密性」及び「xグループ」がタイプ「分類」を有し、グループ622にグループ化し得、属性「x領域」及び「xビジネスライン」がタイプ「階層」であり、グループ624にグループ化し得、属性「x追加定義」及び「xレガシーシステムURL」はタイプ「拡張属性」であり、グループ626にグループ化し得、属性「xSME」及び「x管理人」はタイプ「説明責任を負う当事者」であり、グループ628にグループ化し得ると判断し得る。また、同じタイプを有する動的属性の各グループのための単一の実行可能SQLクエリを生成し得る。全ての静的属性に単一の実行可能SQLクエリを生成し得る(ここでは、グループ620に1つのみの静的属性「名前」がある)。
したがって、図6C-3に示されるように、(1)「x機密性」及び「xグループ」動的属性を含む、タイプ「分類」の属性のグループ622に単一の実行可能SQLクエリ623を生成し得、(2)「x領域」及び「xビジネスライン」動的属性を含む、タイプ「階層」の属性のグループ624に単一の実行可能SQLクエリ625を生成し得、(3)「x追加定義」及び「xレガシーシステムURL」動的属性を含む、タイプ「拡張属性」の属性のグループ626に単一の実行可能SQLクエリ627を生成し得、(4)「xSME」及び「x管理人」動的属性を含む、タイプ「説明責任を負う当事者」の属性のグループ628に単一の実行可能SQLクエリ629を生成し得る。加えて、静的属性のグループ621に単一の実行可能SQLクエリ621が生成される。
例として、図6Dは、「x領域」及び「xビジネスライン」階層-図6Dに示されるように、両階層とも各識別子632及び634(階層ID)により表される-についての情報を取得するための例示的な単一の実行可能SQLクエリ630を示し、これらの動的属性の両方についての情報が、同じ実行可能SQLクエリを使用して検索されることを実証する。
別の例として、幾つかの実施形態では、値が同じテーブルに記憶されている属性は共通グループにグループ化し得、このグループ内の属性を取得するために単一の実行可能SQLクエリを生成し得る。別の例として、幾つかの実施形態では、値が同じデバイス及び/又は同じコンピュータ可読記憶媒体に記憶されている属性は共通グループにグループ化し得、このグループ内の属性を取得するために単一の実行可能SQLクエリを生成し得る。
更に別の例として、幾つかの実施形態では、共通階層パスを共有する動的変数は一緒にグループ化し得る。これについて次に図6E及び図6Fを参照してより詳細に説明する。
幾つかの実施形態では、データエンティティの動的属性は、別のデータエンティティの対応する属性からその値を継承し得る。例えば、図6Eに示されるように、データエンティティ650は静的属性652及び動的属性654を含み得る。動的属性654の中で、属性「A、B、C」656は、共通継承パス657により示されるように、データエンティティ660の対応する動的属性664から値を継承するように構成される。即ち、データエンティティ又はデータエンティティインスタンスの属性は、属性が同じ他のデータエンティティ又はデータエンティティインスタンスの属性からその値を継承するように構成される場合、共通継承パスを共有する。属性「X」、「Y」、「Z」658は、データエンティティ670の対応する動的属性674について値を継承するように構成される。したがって、データエンティティ650の動的属性654の値についてのクエリに応答して、属性664及び属性674の値を取得する必要がある。変数A、B及びCは共通継承パス657に沿って継承される(例えば同じデータエンティティ660から)ため、単一の実行可能SQLクエリを使用して、これらの変数の継承された値にアクセスし得る。図6Fにおけるクエリ682は、そのようなクエリの一例である。同様に、変数X、Y及びZは共通継承パスに沿って(例えば同じデータエンティティ670から)継承されるため、単一の実行可能SQLクエリを使用して、これらの変数の継承された値にアクセスし得る。図6Fのクエリ684は、そのようなクエリの一例である。
バッチ及びストリーミングクエリ実行、返される結果の範囲制限
本明細書に記載のように、宣言型クエリの処理に応答して返されるデータエンティティインスタンスの数は大きいことがある。例えば、宣言型クエリの処理に応答して返されることがあるデータエンティティインスタンスの数は、少なくとも100個のエンティティインスタンス、少なくとも500個のエンティティインスタンス、少なくとも1000個のエンティティインスタンス、少なくとも5,000個のエンティティインスタンス、少なくとも10,000個のエンティティインスタンス、少なくとも25,000個のエンティティインスタンス、少なくとも50,000個のエンティティインスタンス、少なくとも100,000個のエンティティインスタンス、少なくとも250,000個のエンティティインスタンス、1,000~10,000個のエンティティインスタンス、5,000~百万個のエンティティインスタンス又はこれらの範囲内の任意の他の適した範囲であり得る。そのような多数のデータエンティティインスタンスをそれらの属性の値と一緒に生成し出力することは、相当な計算負荷をデータ処理システムに課す-相当量のデータを1つ又は複数のデータストアから検索し、処理してから出力する必要がある。
本発明者らは、宣言型クエリの実行時、データ処理システムによって実行される処理を制限することが有用であり得ることを認識し、その理由は、状況によっては、そのようないかなる制限もなければ、データ処理システムにより返されるデータエンティティインスタンスの数が大きくなり、それにより、データ処理システムのプロセッサ、メモリ及び/又はネットワークリソースに相当な重荷である計算負荷がデータ処理システムに生じることになるためである。そのような機能は、コンピュータプログラム又はユーザが、それほど多数のデータが返されることになることを認識せずに及び/又は実際には結果の全体を使用する必要がない状態で、処理するための宣言型クエリを入力する場合、特に重要であり得る。
したがって、エンティティAPIは、宣言型クエリの処理時、データ処理システムによって実行される処理量を制限するための複数のメカニズムを提供する。1つのそのようなメカニズムは、宣言型クエリが、返されるべき全体結果数への数値制限を明示的に指定し得るというものである。この制限は、グローバルに設定され得るか、又は宣言型クエリの特定の部分に関してローカルに設定され得る。返されるデータエンティティインスタンスの総数にグローバル限度を設定する一例を図4Cに示し、線414内で、返されるべきデータインスタンスの総数は5,000に制限される。
別の例として、幾つかの実施形態では、結果は多数のレベルを有する階層であり得、宣言型クエリは、階層の各レベルで返されるデータエンティティインスタンスの数が結果の閾値数に制限されるべきであることを指定し得る。例えば、以下の表7に示される宣言型クエリは、クエリの各レベルで2つ以下のデータエンティティインスタンスが返されるべきであることを示す。
表8は、表7の宣言型クエリを処理した結果を示す。なお、結果は2つのみのデータエンティティインスタンスを含み、より多くの結果が利用可能である(「exceededMaxRows」インジケータが「true」に設定されているため)ことも示す。
幾つかの実施形態では、宣言型クエリが階層である場合、例えば以下の表9に示されるように、宣言型クエリにおける階層の異なるレベルで異なる数値限度を指定し得る。そのような宣言型クエリを処理した結果は、データエンティティインスタンス限度が階層の核レベル(例えば属性レベル)で限度に達したか否かを示し得る。
本発明者らは、集まり属性(例えばデータ要素エンティティの集まり)を選択し、その(子)レベルで「maxRows」オプションの値を指定することにより、各親インスタンス(最初から始まる)は子インスタンスで完全に埋められ、それから次の親インスタンスが処理されるため、先の表9に示される等の宣言型クエリの処理がバランスのとれていない結果を生成し得ることを認識した。子レベルの「maxRows」オプションの値が満たされると、それ以上の子インスタンスは応答に含まれない。例えば、表9の宣言型クエリを処理することにより識別し得る3つのデータセットインスタンスがあり、最初のデータセットインスタンスが3つのデータ要素を含み、2番目のデータセットインスタンスが1つのデータ要素を含み、3番目のデータセットインスタンスも1つのデータ要素を含むと考える。この場合、結果は、最初のデータセットインスタンスに3つのデータ要素インスタンスを含み、データ要素レベルで許容される行数を使い果たす(「maxRows=3」オプションにより設定される)。その結果、2番目及び3番目のデータセットインスタンスではデータ要素インスタンスは返されない。
子インスタンスを親インスタンスにわたりより均等に分布させるために、エンティティAPIは、親のインスタンス1つ当たりの子行数を指定できるようにする。表10の例に示されるように、「collectionMaxRows」オプションを使用して、全体行限度がなお適用されながら、親インスタンス1つ当たりの子行数を制限し得る。表10に示される宣言型クエリの処理により生成される結果は、各データセットインスタンスエンティティに1つのデータ要素エンティティインスタンスを含む。
宣言型クエリ処理時、データ処理システムによって実行される処理量を制限する別のメカニズムは、幾つかの実施形態では、宣言型クエリを「バッチ」手法ではなく「ストリーミング」又は「段階的」手法で処理し得るというものである。バッチ手法では、宣言型クエリの識別部分を処理することにより識別される全てのデータエンティティインスタンスは、属性値で富化され返され得、これは上述したように、識別されたデータエンティティインスタンスの数が大きい場合、データ処理システムに相当な計算負荷を課す恐れがある。逆に、幾つかの実施形態では、宣言型クエリはストリーミング手法を使用して処理し得、それにより、宣言型クエリの識別部分を使用して関心のあるデータエンティティインスタンス(例えば5,000個のデータエンティティインスタンス)を識別し得るが、これらのインスタンスは段階的に(例えば500のグループで)富化、出力されて、(1)各段階でのデータ処理システム処理要件を低減し、(2)1つ又は複数の段階の完了後、それらの段階からの結果が要求されないか、又は必要とされない場合、1つ又は複数の後続段階の実行をキャンセルする機会を提供し得る。幾つかの実施形態では、ストリーミング手法で1組の結果を返した後、要求側(例えば、ユーザ又は宣言型クエリを提出し、結果を受け取るコンピュータソフトウェア)が、追加の結果が必要とされることを示す入力を提供するまで、次の組の結果は決定されず及び/又は返さない。
1つの非限定的な例として、宣言型クエリの処理により、多数のデータエンティティインスタンスが識別されることになると考える。そのような宣言型クエリの処理は以下のように実行し得る:(1)宣言型クエリの識別部分を使用して実行可能(例えばSQL)クエリを生成し、それを実行して関心のあるデータエンティティインスタンス(例えば5,000個のデータエンティティインスタンス)を識別し、(2)識別されたデータエンティティインスタンスの第1のサブセット(例えば最初の500個のデータエンティティインスタンス)について、サブセット内のインスタンスの属性値を取得するための1つ又は複数の実行可能クエリを生成し、生成されたクエリを実行して属性値を取得し、(3)クエリの結果を結合し、任意選択的に追加の結果が利用可能なことの指示と共に出力(例えば、データエンティティインスタンスの最初の500個の結果を出力)し、(4)追加の結果を要求する指示を受信し(例えばユーザから又は宣言型クエリを提出したコンピュータソフトウェアから)、(5)識別されたデータエンティティインスタンスの第2のサブセット(例えばデータエンティティインスタンス501~1000)について、第2のサブセット内のインスタンスの属性値を取得するための1つ又は複数の実行可能クエリを生成し、生成されたクエリを実行して属性値を取得し、(3)クエリの結果を結合し、任意選択的に追加の結果が利用可能なことの指示と共に出力(例えば、データエンティティインスタンス501~1000の結果を出力)する。追加の結果が要求されなくなるか、又は追加の結果が利用可能ではなくなるまで続けられる。
幾つかの実施形態では、各段階で返される結果数は、エンティティAPIに全体としてグローバルに又は特定の宣言型クエリに(例えば特定の宣言型クエリ内で)ローカルに構成可能なパラメータにより設定し得る。
段階で結果を取得し返すそのようなストリーミングアーキテクチャは、部分的に、エンティティAPIが処理する宣言型クエリの構造により可能になる。特に、宣言型クエリの識別部分を宣言型クエリのエンリッチメント部分と別個に処理させることで、まず1組の1つ又は複数の「識別」クエリを生成して実行し、追加の結果が要求及び/又は必要とされるか否かに基づいて、段階的にそれらの値を検索させることにより(1つ又は複数の「エンリッチメントクエリ」を生成し実行することにより)、データエンティティインスタンスを識別できるようになる。
1つ又は複数のサーチインデックスを使用したデータの検索
幾つかの実施形態では、本明細書に記載の宣言型クエリの処理は、1つ又は複数のサーチインデックスの使用を通して促進し得る。特に、幾つかの実施形態では、構成されたデータ処理システムは、データ処理システムのユーザ及び/又はデータ処理システムとインタフェースするコンピュータプログラムが、関心のあるデータ(例えば、データエンティティインスタンス、データエンティティ定義等)を見つけるためのテキストサーチ文字列を入力し得るように1つ又は複数のサーチインデックスを維持するように構成し得る。
幾つかの実施形態では、そのような1つ又は複数のサーチインデックスは、データエンティティインスタンスを記憶している、データベースシステム(例えば、ORACLE、SQL SERVER、DB2、MONGODB、POSTGRESのようなRDBMS等)外部のデータ処理システム(例えばデータ処理システム105)により維持し得る。このようにして、1つ又は複数のサーチインデックスが、データベースシステムに問い合わせることにより構築されると、データ処理システムは、同じクエリを再度処理することなく、1つ又は複数のサーチインデックスを使用して、所望のデータエンティティインスタンス(及びそれらの属性値)を検索し得、相当な計算の節減及びより高速の結果検索に繋がる。したがって、本明細書に記載の1つ又は複数のサーチインデックスは、データエンティティインスタンスを記憶しているデータベースシステム内部の任意のサーチインデックスと異なる。更に、内部サーチインデックスと異なり、本明細書に記載の1つ又は複数のサーチインデックスは、ユーザが、関心のあるデータを見つけるためにテキストサーチ文字列を入力するのを助けるテキストサーチインデックスである。
一例として、ユーザはサーチ文字列「誕生日」を入力として提供し得、データ処理システムは、サーチインデックスを使用して、(1)文字列「誕生日」が属性値(例えば「名前」又は「説明」属性)の1つの少なくとも一部であるデータエンティティ「BizTerm」のインスタンス、(2)文字列「誕生日」がその属性値の1つの少なくとも一部であるデータエンティティ「データ要素」のインスタンス、及び(3)誕生日を参照する(例えば、属性の1つの値において)データエンティティ「データセット」のインスタンス等のデータを返すように構成し得る。
幾つかの実施形態では、そのようなサーチインデックスを使用して、宣言型クエリの処理を助け、促進し得る。例えば、幾つかの実施形態では、宣言型クエリの識別部分は、「誕生日」を参照する任意のデータエンティティインスタンスを識別するためのサーチ文字列(例えば「誕生日」)を指定し得、実行可能(例えばSQL)クエリを生成し、それを1つ又は複数のデータベースに対して実行する代わりにサーチインデックスを使用して、そのようなあらゆるデータエンティティインスタンスを識別し得る。次いで、サーチインデックスを使用して検索されたデータエンティティインスタンスは、本明細書に記載の技法を使用して富化することができる(例えば、富化するための1つ又は複数の実行可能クエリを生成することにより)。このようにして、データベースクエリを実行する代わりにサーチインデックスを使用することにより、宣言型クエリの識別部分の処理を大幅に加速させ、全体処理時間を短縮し、利用される計算リソース(例えばプロセッサ、メモリ、ネットワークリソース)量を低減することができる。
サーチインデックスを使用することにより処理することができる識別部分を有する宣言型クエリの一例を表11に示す。この例の宣言型クエリは、「entitySearch」オプションを使用してサーチ文字列「誕生日」を指定し、クエリは全体的に、サーチ文字列「誕生日」を含むあらゆるデータエンティティインスタンスを識別し、「名前」及び「説明」属性の値で結果を富化することである。なお、このクエリは、1つのタイプのみのデータエンティティのインスタンスを通してサーチするのではなく、様々なタイプのデータエンティティ(例えば「BizTerm」、「データセット」、「データ要素」等)のインスタンスをサーチするという点でグローバルである。しかし、関心があるのが1つのタイプのみのデータエンティティ(例えば「BizTerm」)である場合、クエリは、本明細書に記載の他の例と同様に、オプション「entityClass」:「BizTerm」により、これに関してより具体的に作ることができる。
表11に示される宣言型クエリ例は、(1)1つ又は複数のサーチインデックスを使用して関心のある1つ又は複数のデータエンティティインスタンスを識別し、(2)結果を一時テーブルに記憶し、(3)1つ又は複数の実行可能クエリを生成して属性「名前」及び「説明」の値を取得することにより結果を富化することにより処理し得る。幾つかの実施形態では、最初のステップは、データを返す前に、要求されるビュータイプ及び/又はユーザ許可を考慮に入れることを含み得る。3番目のステップは、動的属性の値の取得について本明細書に記載されるいずれの方法でも実行され得る。
当然ながら、データエンティティインスタンスの識別に使用されるサーチインデックスは、そのような宣言型クエリの処理に使用される前に作成される必要がある。サーチインデックスは任意の適した方法で作成し得る。例えば、幾つかの実施形態では、データ処理システムは、任意の適したサーチエンジンソフトウェアライブラリ、例えばAPACHE LUCENE等を使用するように構成し得る。データ処理システムは、このライブラリを使用してサーチインデックスを生成するように構成し得る。幾つかの実施形態では、データ処理システムは、サーチインデックスを更新する(例えば定期的に、予め定義されたスケジュールに従って等)ように構成し得る。幾つかの実施形態では、データ処理システムは、1つ又は複数のサーチエンジンインデックスを生成するように構成し得、1つ又は複数のインデックスを使用して宣言型クエリを処理し得、本明細書に記載の技術の態様は、利用されるサーチインデックスの数によって限定されない。
幾つかの実施形態では、サーチソフトウェア(例えば、APACHE LUCENE)を使用して1つ又は複数のサーチインデックスを作成するためには、サーチソフトウェアに、どのデータエンティティ及び属性がサーチに向けてインデックス付けられるべきかを示す情報が構成される必要がある。これにより、属性の値を検索するために、データベースクエリ(例えばSQLクエリ)を実行する代わりにサーチインデックスを使用してインデックス付けられたこれらの値を検索することにより、宣言型クエリの処理を更に最適化することができる。例えば、データエンティティが3つの属性(例えば、「名前」、「説明」、「ビジネスライン」)を有し、そのうちの2つ(例えば、「名前」及び「説明」)がサーチに向けてインデックス付けられる場合、例えばこのデータエンティティの宣言型クエリを処理するとき、SQL又は他のタイプの実行可能クエリを生成してデータベースに対して実行する代わりにサーチインデックスを使用して、これらの2つの属性の値を検索し得、それにより相当な加速に繋がる。第3の属性の値はなお、例えば、SQLクエリを使用して関係データベースに問い合わせることにより検索することができる。
表11の宣言型クエリ例に関して記したように、宣言型クエリは、データ処理システム内の全ての様々なタイプのデータエンティティをサーチする。したがって、結果は、「BizTerm」データエンティティのインスタンス及び「データ要素」データエンティティのインスタンス等の様々なタイプのデータエンティティのインスタンス(例えば、様々なエンティティクラスのインスタンス)を含み得る。様々なデータエンティティは、共通する幾つかの属性(例えば「名前」)を有し得るが、一般に、異なるデータエンティティは異なる属性を有する。この状況で富化を可能にするために、宣言型クエリは、応答においてデータエンティティのエンティティクラスを明示的にアサートでき(以下の表12に示される「entityClassSelect」表記を使用して)、次いでそれをそのエンティティクラスに固有の属性で富化できるようにし得る。この一例を以下の表12の宣言型クエリに示し、表中、識別部分は、「誕生日」を参照するあらゆるデータエンティティインスタンスが検索されるべきであるが、これらのデータエンティティインスタンスが識別された後、(1)データエンティティ「BizTerm」の識別されたあらゆるインスタンスの属性「名前」、「説明」及び「ビジネス用語グループ」の値、(2)データエンティティ「データ要素」の識別されたあらゆるインスタンスの属性「名前」、「説明」及び「データセット」の値、並びに(3)属性「名前」、「説明」及び「技術グループ」の値を取得すべきであることを示す。
実行可能クエリの生成
宣言型クエリから実行可能クエリを生成する好ましい態様についてこのセクションで更に説明し、宣言型クエリから実行可能クエリを生成する好ましい態様は、互いと及び上述したものと組み合わせることが可能である。本明細書に記載のように、宣言型クエリの識別部分を使用して、関心のあるデータエンティティインスタンスを識別するための実行可能クエリ(例えば実行可能SQLクエリ)を生成し得る。同様に、宣言型クエリのエンリッチメント部分を使用して、関心のある属性の値を取得するための1つ又は複数の実行可能クエリ(例えば1つ又は複数の実行可能SQLクエリ)を生成し得る。
実行可能な識別クエリ及びエンリッチメントクエリは、図7Aに示されるプロセス700に従って生成し得る。プロセス700は、宣言型クエリの識別部分で指定される情報を使用して、関心のあるデータエンティティインスタンスを識別するための実行可能クエリを生成するために使用し得る。例えば、プロセス700は、宣言型クエリ502の識別部分504で指定された情報を使用して実行可能SQLクエリ510を生成するために使用し得る。
プロセス700は、宣言型クエリのエンリッチメント部分で指定された情報を使用して、関心のある属性の値を取得するための実行可能クエリを生成するために使用し得る。エンリッチメント部分は複数の実行可能クエリ(例えば、異なる属性又は異なる属性のグループの複数の実行可能クエリ、グループは、本明細書に記載のグループ化技法のいずれを使用しても取得され得る)の生成に使用し得るため、プロセス700は、エンリッチメント部分の異なる部分を使用して複数回適用されて、複数の実行可能(例えばSQL)クエリを生成し得る。例えば、プロセス700を使用し、宣言型クエリ502のエンリッチメント部分506で指定された情報を使用して、実行可能クエリ512、514、516、518及び/又は530を生成し得る。
プロセス700は、任意の適した計算デバイスにより実行し得る。プロセス700は、データ処理システム(例えばデータ処理システム105)で実行中の任意の適したソフトウェアにより実行し得る。例えば、図1Dに示されるデータ処理システム105を参照すると、プロセス700は、入力変換モジュール130を使用する(例えば、後述する動作702、704、706及び708を実行するために)ことにより実行し得る。
幾つかの実施形態では、プロセス700は、宣言型クエリから複数の実行可能クエリを生成するためのプロセスにより複数回呼び出すことができる。例えば、図3を参照して上述したように、幾つかの実施形態では、プロセス300はプロセス700を1回又は複数回呼び出し得る。例えば、プロセス300はプロセス700を呼び出して、宣言型クエリの識別部分から1つの実行可能クエリを生成し、宣言型クエリのエンリッチメント部分から複数の実行可能クエリを生成し得る。
プロセス700は動作702において開始され、宣言型クエリの一部分を取得し得る。これは、宣言型クエリの任意の適した部分であり得る。例えば、プロセス700が実行可能識別クエリ(例えばクエリ510)の生成に使用されている場合、上記部分は、宣言型クエリの識別部分(例えば識別部分504)の少なくとも幾つか又は全てを含み得る。別の例として、プロセス700が実行可能エンリッチメントクエリ(例えば、クエリ512、514、516、518又は530)の生成に使用されている場合、上記部分は、宣言型クエリのエンリッチメント部分(例えばエンリッチメント部分506)の少なくとも幾つか又は全てを含み得る。
更に別の例として、宣言型クエリは、インラインビュー(例えば宣言型クエリのエンリッチメント部分内)を含み得、動作702において取得される部分は、インラインビュー内で指定された情報の幾つか又は全てを含み得る。例えば、インラインビューが宣言型テーブルクエリを指定する場合、動作702において、テーブルクエリを指定するインラインビューの部分の少なくとも幾つか(例えば全て)を取得し得る。
次に、プロセス700は動作704に進み、動作702において取得された宣言型クエリ部分の中間クエリ表現が生成される。中間クエリ表現を生成することは、動作702において取得された宣言型クエリの部分をパーズし、パーズされた情報を使用して中間表現を生成することにより実行し得る。幾つかの実施形態では、パーズは、SQLパーサ、例えばANSI SQLパーサを使用することにより実行し得る。幾つかの実施形態では、中間クエリ表現は抽象シンタックスツリー(AST)を含み得る。しかし、任意の他の適したタイプの中間表現が幾つかの実施形態で使用され得、本明細書に記載の技術の態様は、この点において限定されない。
次に、プロセス700は動作706に進み、中間クエリ表現は、一連の1つ又は複数の変換を通して段階的に変換され、各変換は、動作708においてデータベース固有の実行可能クエリ(例えばデータベース固有実行可能クエリ)の生成に使用されることになる補助情報で中間クエリ表現(例えばAST)を増補する。図7Aの実施形態例では、動作706a、706b、706c、706d及び図7B~図7Fの例を参照して後述する4つの変換がある。しかしながら、幾つかの実施形態では、図7Aに記載の変換の1つ又は複数が省かれ得る(例えば、宣言型クエリのエンリッチメント部分で参照される動的属性がない場合、動的参照属性増補動作706bを省くことができる)ことを理解されたい。更に、幾つかの実施形態では、本明細書に記載の変換に代えて又は加えて、1つ又は複数の他の変換を使用し得、本明細書に記載の技術の態様は、この点において限定されない。
図7Aの例示的な実施形態では、動作704において取得される中間クエリ表現の最初の変換は、動作706aにおいて実行され、中間クエリ表現は、検索中の任意のデータエンティティインスタンスと関連する一意の識別子情報で増補される。このようにして、動作708において生成される実行可能クエリは、一意の識別子を取得し、クエリの結果と共に一意の識別子を返す。各データエンティティインスタンスの一意の識別子にアクセス可能なことは、例えば、データエンティティインスタンスの1つ又は複数を編集又は削除するために、データエンティティインスタンスに更にアクセスするのを促進し得る。
例えば、図7Bに示される宣言型クエリの識別部分710を考える。識別部分710の中間クエリ表現は、動作708において生成される実行可能クエリが、クエリの「WHERE」節を満たす各「BizTerm」データエンティティインスタンスの一意の識別子を取得させる情報で増補し得る。図7Cは、動作706aの増補後の中間クエリ表現の増補バージョンのSQLビュー720を示す。なお、「SELECT」文は「名前」に加えて「ビジネス用語ID」も示す。
図7C及び図7D~図7Fが、明確にするために、増補された中間クエリ表現(中間表現自体、例えば増補された抽象シンタックスツリーの代わりに)のSQLクエリビューを示していることを理解されたい。したがって、幾つかの実施形態では、プロセス700の実行中、図7C~図7Fに示される中間SQLクエリビューは生成されない。むしろ、中間クエリ表現は一連の1つ又は複数の変換を受けることができ、全ての変換が実行された後、動作708において、中間クエリ表現から実行可能(例えばSQL)クエリが生成される。
中間クエリ表現の2番目の変換は動作706bにおいて実行され、中間クエリ表現は動的属性参照情報で更に増補される。動的属性参照情報は、参照されている動的属性が、土台をなす物理的実装にどのように記憶されているかを指定する情報を含む。例えば、この情報は、参照される動的属性の値がデータベースに記憶されている1つ又は複数のテーブルを識別する情報を含み得る。動的属性の値が別のデータエンティティインスタンスの属性から継承されているとき、継承された値がどこから来たのかを示す情報を使用して、継承されている値のアクセス元の土台をなすテーブルを識別し得る。次いで、動的属性参照情報を実行可能クエリで使用して、適切な物理テーブル又は他の構造にアクセスし、参照される動的属性の値を取得し得る。
例えば、識別部分710における「x計算ルール」属性は動的属性である。しかしながら、「x計算ルール」は、この属性の値を記憶する物理テーブルの名前ではない。この例では、実際の属性値は、ID「1004」を有する「拡張属性値」テーブルに記憶されている。図7DのSQLビュー730(動作706bの実行後に取得される、増補された中間クエリ表現を表す)に示されるように、SQLクエリはここで、ID1004を有する拡張属性テーブルから動的属性値を選択するように構成される。
中間クエリ表現の3番目の変換は動作706cにおいて実行され、中間クエリ表現はビュータイプ情報で増補される。幾つかの実施形態では、ビュータイプ情報は、宣言型クエリ自体の内容及び/又はプロセス700を実行するデータ処理システムと関連する他の構成情報から導出し得る。
本明細書に記載のように、幾つかの実施形態では、データ処理システムによって管理されるデータエンティティインスタンスには各ワークフロー状態が関連付けられ得る。追加又は代替として、データ処理システムによって管理されるデータエンティティインスタンスはバージョン管理し得る。幾つかの実施形態では、宣言型クエリは、特定の「ビュータイプ」が要求されることを明示的に示し得る。ビュータイプは、特定のバージョンを有するデータ及び/又はワークフロー状態が関連付けられたデータが返されるべきであることを示し得る。例えば、ビュータイプは、公開状態が関連付けられたデータエンティティインスタンスのみが返されるべきであることを示し得る。別の例として、ビュータイプは、特定の時間範囲内で更新されたデータエンティティインスタンスが返されるべきであることを示し得る。他の例も本明細書に記載する。
幾つかの実施形態では、宣言型クエリが所望のビュータイプを指定しない場合、ビュータイプは、デフォルトビュータイプに設定され得るか、又はプロセス700を実行するデータ処理システムにより構成されたビュータイプに設定され得る。幾つかの実施形態では、宣言型クエリが所望のビュータイプを指定する場合でも、データ処理システムは、要求されたビュータイプをオーバーライド値でオーバーライドし得る。
要求されるビュータイプがどのように特定されるかを問わず、要求されるビュータイプに応じて、異なるデータが返される。異なるデータは異なるテーブルに記憶されていることがあるため、動作706cにおいて、中間クエリ表現は、要求されたデータが物理的ストレージのどこに記憶されるか(例えばどのテーブルに記憶されるか)を示すビュータイプ情報で増補される。例えば、「公開」ワークフロー状態と関連付けられた「BizTerm」インスタンスの値及び「承認保留中」ワークフロー状態と関連付けられた「BizTerm」インスタンスの値は、異なるテーブルに記憶されていることがある。
図7Bに示されるように、識別部分710は所望のビュータイプを指定せず、この例では、データ処理システムは、ビュータイプをデフォルト設定するように構成され、それにより、データエンティティインスタンスの特定のバージョン(例えば現行バージョン、前のバージョン、更に前のバージョン等)と関連付けられたデータのみが返される。この例では、エンティティインスタンスの特定のバージョンのデータは、接頭辞「Vb」で始まる名前の物理テーブルに記憶されている。図7EのSQLビュー740(動作706cの実行後に取得され、増補された中間クエリ表現を表す)に示されるように、SQLクエリはここで、接頭辞「Vb」を有するテーブルから動的属性値を選択するように構成される。
中間クエリ表現の4番目の変換は動作706dにおいて実行され、中間クエリ表現は許可情報で増補される。幾つかの実施形態では、データ処理システムは、データへのアクセスが許可されたユーザ又はユーザ群のみがこれらのデータにアクセスできるようにするよう構成される。したがって、動作706dにおいて、中間クエリ表現は、宣言型クエリを提出したユーザ(例えばログインしたユーザ)が属する1つ又は複数のユーザ群を示す許可情報で増補し得る。また、この情報を使用して、要求されたデータへのユーザのアクセスが許可されているか否かを判断し得、動作708において生成される実行可能クエリが実行されるとき、ユーザがアクセス許可されたデータのみが返される。
最初に動作704において生成された中間クエリ表現が、動作706において、一連の1つ又は複数の変換を使用して増補された後、増補された中間クエリ表現は、動作708において、実行可能クエリに変換される。
幾つかの実施形態では、実行可能クエリは、特定のタイプのデータベースシステムからのデータにアクセスするためのものであり、増補された中間クエリ表現は、そのタイプのデータベースシステムにカスタマイズされた実行可能クエリに変換することができる。例えば、データベースシステムは、SQLクエリを処理するように構成されたデータベースシステム(例えば関係データベースシステム)であり得、動作708において生成される実行可能クエリは実行可能SQLクエリであり得る。別の例として、データベースシステムは、NoSQLシステムであり得、動作708において生成される実行可能クエリは、NoSQLシステムが処理するように構成された実行可能クエリであり得る。
幾つかの実施形態では、動作708において生成された実行可能クエリは、ベンダー固有の様式でカスタマイズし得る。例えば、異なるベンダー(例えば、MICROSOFT、ORACLE、IBM、POSTGRESQL等)は、SQLの異なるダイアレクトを実装し得、及び/又は拡張をSQL規格に提供し得る。そのような状況では、ターゲットデータベースシステムによって実装されるシンタックス及び/又はコマンドを使用して(例えば、ORACLEにより実装される任意の特別なシンタックス及び/又はコマンドを使用して)、ターゲットデータベースシステム(例えばORACLE)の実行可能クエリを生成し得る。追加又は代替として、動作708において生成された実行可能クエリは、ターゲットデータベースシステムを使用してサポートし得るクエリへの最適化を含み得る。
したがって、幾つかの実施形態では、動作708において生成される1つのタイプのデータベースの実行可能クエリ(例えば、MICROSOFT SQL SERVERデータベースの実行可能SQLクエリ)は、別のタイプのデータベースに対して動作708において生成される実行可能クエリ(例えば、IBM DB2の実行可能SQLクエリ)と、両クエリがプロセス700の動作706を実行して得られた土台をなす同じ中間表現から生成される場合でも異なり得る。
動作708において実行可能クエリが生成された後、プロセス700は完了する。
階層データの検索
再帰を用いる宣言型クエリ
本明細書に記載のように、データエンティティは互いに関連し得、幾つかの実施形態では、単一の宣言型クエリを使用して、複数の関連するデータエンティティについての情報を検索することができる。例えば、図4D~図4Fを参照して記載したように、単一の宣言型クエリは属性の階層(属性の幾つかは、異なるデータエンティティの属性である)を指定し得、階層内の属性の値は、単一の宣言型クエリを処理することにより検索し得る。更に、検索された属性値は、宣言型クエリで指定される属性の階層の階層構造に対応する階層形式で出力し得る。実際に、その例では、階層形式は、宣言型クエリにおいて指定された属性の階層内の属性の入れ子構造と同じ入れ子構造を有する。
図4D~図4Fを参照して説明した例では、値が検索されるべき属性の階層は、宣言型クエリの一部として明示的に指定された。具体的には、その例での宣言型クエリのエンリッチメント部分は、図4Dに示されるように入れ子様式で編成された属性を有した。入れ子を使用して階層クエリを指定する他の例を図9C、図9F-1及び図9F-2に示す。
しかしながら、幾つかの実施形態では、再帰は、属性の階層の値が望まれることを示す属性の明示的入れ子構造をエンリッチメント部分で使用することの代替を提供する。特に、データ処理システムによりサポートされるデータエンティティの幾つかは再帰であり得る。データエンティティは、同じエンティティクラスの親(例えば同じクラス親)を有する場合、再帰であり得る。例えば、データエンティティが、親データエンティティを参照している属性を有し、親データエンティティが同じエンティティクラスを有する場合、データエンティティは再帰であると言える。例えば、エンティティクラス「BizTerm」は、プロパティ「親BizTerm」を通して同じクラス親を有する。別の例として、エンティティクラス「データ要素」はエンティティクラス親「データ要素」を有する。そのような再帰構造は、データエンティティの階層の値を検索するために入れ子を使用することへの代替を提供し、幾つかの実施形態では、再帰を使用して、複数の関連データエンティティについての情報を検索することができる。
複数の関連データエンティティについての情報を検索するために単一の宣言型クエリにおいて再帰を使用する一例を図8A~図8Cに示す。図8Aは、同じクラス親を有する「データ要素」データエンティティの例示的なデータエンティティインスタンス800を示す。データエンティティインスタンス800は「連絡先情報」という名前であり、図8Aに示される階層構造を有し、ユーザの連絡先情報についての情報を記憶するために使用し得る。データエンティティインスタンス「連絡先情報」は3つの属性「住所」、「電子メール」及び「電話番号」を有し、これらはそれぞれ、住所、電子メール及び電話番号情報をそれぞれ記憶した各「データ要素」インスタンスを参照する。更に、「住所」エンティティインスタンス自体は、「住所ライン」、「市」、「州」及び「郵便番号」と呼ばれる4つの属性を有し、これらはそれぞれ、通り、市、州及び郵便番号情報を記憶した各「データ要素」インスタンスを参照する。
図8Bは、本明細書に記載の技術の幾つかの実施形態による、再帰を使用して階層データを検索する単一の例示的な宣言型クエリ805を示す。図8Bに示されるように、データ要素「連絡先情報」の子であるデータ要素の階層は、値「子」を有する再帰オンフィールド806を使用して検索し得、これは、再帰が下方であるべきことを示す。エンリッチメント部分は、808において、再帰的に検索された各属性について、属性の名前を取得すべきであることを示す。
図8C-1、図8C-2及び図8C-3は、図8Bに示される一例の宣言型クエリ805を処理することによりデータ処理システムにより取得される例示的な結果を示す。図8C-1、図8C-2及び図8C-3から明らかなように、結果の構造は階層であり、図8Aに示されるデータ要素の入れ子構造に一致する階層の構造を有する。同時に、その入れ子構造は、宣言型クエリ805で明示的に述べられる必要がなく、それにより、再帰を使用し得るインスタンスで階層データを検索するためのクエリを書くことを簡易化する。
図8Bの一例の宣言型クエリは、再帰が下方であるべきことを示すが、宣言型クエリは、値を検索するために上方向再帰を使用し得る。一例を図8Dに示し、図8Dは、「電話番号」データエンティティインスタンスのあらゆる親エンティティの属性を再帰するための単一の宣言型クエリ810を示す。この例では、再帰オンフィールドは値「親データ要素」に設定されて、再帰が上方であるべきことを示す。一例の宣言型クエリ810を処理することによりデータ処理システムにより取得された例示的な結果820を図8Eに示す。
幾つかの実施形態では、宣言型クエリは、宣言型クエリを処理する際、データ処理システムによって実行すべき再帰のレベル数への数値限度を指定し得る。これは、結果のサイズを管理可能に保つに当たり有用であり得る。
階層データを検索するための宣言型クエリの追加の例
階層データを検索するための宣言型クエリの追加の例について図9A~図9Gを参照して次に説明する。
図9Aは、図9B~図9Gの例を示すのに役立つように、図2Gに示されるエンティティ関係図の一部分を示す。図9Aの例では、「BizTerm」データエンティティ902は、属性「名前」、「説明」、「PII分類ID」、「レガシーURL」、「レガシー変更日」、「設計ドキュメント」を有し、これらは種々の値をとる。これらの属性の1つ又は複数は静的であり得る。これらの属性の1つ又は複数は、動的であり得る。「BizTerm」データエンティティは参照属性905「BizTermグループ」、「PII分類」及び「データ要素」も有し、これらはそれぞれ他のデータエンティティ-BizTermグループデータエンティティ904、PII分類データエンティティ906及び1つ又は複数のデータ要素データエンティティのリストを参照する。また、BizTermグループデータエンティティ904は属性「名前」、「説明」、「辞書タイプ」及び参照属性「ビジネス用語」を有する。PII分類データエンティティ906は名前属性を有する。
図9Bは、本明細書に記載の技術の幾つかの実施形態による、階層データを検索するための宣言型クエリの擬似コード仕様を示す。特に、仕様は、結果が、PII分類属性がPII分類データエンティティの何らかの特定のインスタンスを参照するように設定された「BizTerm」データエンティティの全てのインスタンスについての情報を包含すべきであることを示す。そのような識別された各「BizTerm」インスタンスについて、結果は、「名前」及び「レガシーURL」属性の値を包含すべきである。加えて、識別された特定の各「BizTerm」インスタンスについて、結果は、BizTermグループ属性(特定の「BizTerm」インスタンスの)が参照する「BizTermグループ」データエンティティインスタンスの「名前」及び「辞書タイプ」属性の値を包含すべきである。
図9Cは、本明細書に記載の技術の幾つかの実施形態による、図9Bに示される擬似コード宣言型クエリ仕様のJSON実装である宣言型クエリ910を示す。クエリ910は、結果が、PII分類属性が、ヌルではなくPII分類データエンティティの何らかのインスタンスを参照するように設定された「BizTerm」データエンティティの公開インスタンスを含むべきであることを示す識別部分912を含む。クエリ912は、結果が、「名前」、「レガシーURL」の属性値を包含し、参照されるBizTermグループデータエンティティインスタンスではその「名前」及び「辞書タイプ」属性の値を包含すべきであることを示すエンリッチメント部分914を含む。
図9Dは、本明細書に記載の技術の幾つかの実施形態による、図9CのJSON宣言型クエリを処理することにより取得し得る結果の例示的な図を示す。この例では、結果は入れ子テーブルを使用して示されているが、これは本明細書に木足の技術の実施形態の限定ではない。他の実施形態では、結果は、入れ子により又は任意の他の適した様式で指定された階層形式を有し得る。
なお、図9Cにおけるエンリッチメント部分914は入れ子を使用して、属性の所望の階層を指定し、結果は、構造がエンリッチメント部分914の入れ子構造に一致する階層形式で提示される。また、本明細書に記載の宣言型クエリ例の多くのように、属性が静的である宣言型クエリと属性が動的である宣言型クエリに区別がないことに留意されたい。その結果、クエリの作者、属性がメモリにどのように記憶されているかを知る必要はない。宣言型クエリ910は、属性が静的であるか又は動的であるかに依存しないのみならず、値を実際に記憶しているデータベースのタイプにも依存しない-データベース固有の詳細は隠される。
図9Eは、本明細書に記載の技術の幾つかの実施形態による、階層データを検索するための別のより複雑な宣言型クエリの擬似コード仕様を示す。図9Eに示されるように、仕様は、結果が、「辞書タイプ」属性が「企業」に設定された「BizTermグループ」エンティティインスタンスを参照する「BizTerm」データエンティティの全てのインスタンスについての情報を包含すべきであることを示す。そのような各エンティティインスタンスについて、結果は、エンティティインスタンスの名前、参照されたBizTermグループの名前、参照されるデータ要素インスタンスの名前、参照されたデータ要素インスタンスにより参照されるデータセットの名前、全ての関連データ要素のカウント、アプリケーションの一部ではない関連データ要素のカウント及びアプリケーションによりグループ化された関連データ要素のカウントを包含すべきである。
図9F-1及び図9F-2は、本明細書に記載の技術の幾つかの実施形態による、図9Bに示される擬似コード宣言型クエリ仕様のJSON実装である宣言型クエリ920を示す。宣言型クエリは、結果が、「辞書タイプ」属性が「企業」に設定されたBizTermグループインスタンスを参照するBizTermデータエンティティの公開インスタンスを包含すべきであることを示す識別部分を含む。宣言型クエリは、2つの異なる階層-BizTermグループ階層及びデータ要素階層-から属性値をプルするために入れ子を用いるエンリッチメント部分も含む。
加えて、宣言型クエリは入れ子SQLクエリを含み、入れ子された結果で応答を富化する。インラインビュー922内の入れ子SQLクエリは、宣言型テーブルクエリである。インラインビュー924内の入れ子SQLクエリは、入れ子テーブル結果で応答を富化するための宣言型テーブルクエリである。
図9Gは、本明細書に記載の技術の幾つかの実施形態による、図9F-1及び図9F-2のJSON宣言型クエリを処理することにより取得し得る結果の例示的な図を示す。この例では、結果は入れ子テーブルを使用して示されているが、これは本明細書に記載の技術の実施形態の限定ではない。他の実施形態では、結果は、入れ子により又は任意の他の適した方法で指定された階層形式を有し得る。
図9A~図9Dの例と同様に、図9F-1及び図9F-2の宣言型クエリ920は入れ子を使用して、属性の所望の階層を指定し、結果は、図9Gに示され、構造が宣言型クエリの入れ子構造と一致する階層形式で提示される。宣言型クエリ920は、属性が静的であるか又は動的であるかに依存せず、どのデータベースがこれらの属性値を記憶しているか及びこれがどのように行われるかに関する詳細に依存しない。
エンティティAPIの追加の態様
本明細書に記載のように、データ処理システム(例えばデータ処理システム105)は、エンティティAPIを通して、データ処理システムが管理するデータエンティティへの異なるタイプのアクセスを可能にするように構成し得る。例えば、データエンティティインスタンスへの問い合わせを可能にすることに加えて、データ処理システムは、データエンティティインスタンスの作成、更新及び削除を可能にするように構成し得る。別の例として、本明細書に記載のように、データ処理システムは、ワークフロー管理システムを使用してワークフロー動作を管理するように構成し得、エンティティAPIは、ワークフロー動作の実行を可能にするためのインタフェースとして使用し得る(例えば、承認のために変更を1つ又は複数のデータエンティティインスタンスに提出する、データエンティティインスタンスに提出された変更を承認又は拒絶する等)。
したがって、幾つかの実施形態では、宣言文(例えばJSON又は任意の他の適した形式を使用して指定される)を使用して、所望の作成、更新、削除又はワークフロー動作を指定し得る(宣言型クエリをどのように使用して所望のクエリを指定し得るかと同様に)。また、宣言文は1つ又は複数の実行可能文(例えばSQL文)に変換し得、実行可能文はデータ処理システムによって実行されて、所望の動作を実施し得る。
作成、更新又は削除動作を実施するための宣言文の例について表13~表16を参照して後述する。これらの例では、そのような宣言文は、JSON表記で「“operation”:=“ENTITY_SAVE”」を使用して示すことができる(一方、宣言型クエリは、後述のように、「ENTITY_QUERY」又は「TABULAR_QUERY」を使用して示すことができる)。幾つかの実施形態では、「ENTITY_SAVE」宣言文は、行われている編集のタイプを示すパラメータを更に含む(例えば、「editType」コマンドを使用して)。例えば、パラメータの値は、データエンティティインスタンスが作成中、更新中、削除中、参照集まりに追加中又は参照集まりから削除中であることを示し得る。
データエンティティインスタンスを作成するための宣言文の説明のための例を以下の表13に示し、宣言文は、「名前」及び「説明」属性がそれぞれ「新ビジネス用語グループ」及び「私の最初の辞書」に設定された「BizTermグループ」データエンティティのインスタンスを作成するためのものである。
表14は、データエンティティ「BizTermグループ」の新しいインスタンスを作成するための表13の宣言文の実行に応答して返された例示的な結果を示す。この例では、結果は、新たに作成されたデータエンティティインスタンスの識別子(この例では「複合ID」)を含む。この識別子は、後続動作(例えば更新又は削除)のためにデータエンティティインスタンスを識別するために使用し得る。結果は、新たに作成されたデータエンティティインスタンスがユーザにより更新及び/又は削除し得るか否かも示す。
データエンティティインスタンスを更新するための宣言文の説明のための例を以下の表15aに示し、宣言文は、「説明」属性の値を「私の本当に最初の辞書」に変更するように「BizTermグループ」データエンティティのインスタンスを更新するためのものである。この例では、editTypeパラメータは「更新」に設定される。表15bは、データエンティティ「BizTermグループ」のインスタンスを更新するための表15aの宣言文の実行に応答して返された例示的な結果を示す。
表15aの宣言文の例は、更新すべきデータエンティティインスタンスの一意の識別子を含む。この例では、一意の識別子は、図14に示される結果から取得され得るか、又は識別子を取得するための宣言型クエリを実行することにより取得され得る。幾つかの実施形態では、宣言型クエリは、更新又は削除する宣言型エンティティインスタンスの識別子を取得するために、更新又は削除動作を実行する前に実行され得る。そのような宣言型クエリの一例を以下の表16aに示し、結果を表16bに示す。
表16aの宣言型クエリの例はオプション「retrieveForEdit」を指定し、データエンティティインスタンスの編集に関連する追加情報を返させる。表16bに示されるように、その追加情報は、特定の属性を更新し得るか否かを示し得る(例えば、追加情報は文字列「canUpdate」:trueを含むため、「説明」属性の値は更新し得る)。また、その追加情報はeditContextを含み得、これは、編集すべき項目のバージョンを示す情報である。幾つかの実施形態では、このeditContextは宣言文において提供されて、属性の最新バージョンが編集中であることを保証するように編集を行い得る。これは、現在の属性値のクエリが作成された後であるが、新しい値が提出される前に他の誰かが変更を行う場合の競合を回避する。表15aに示されるように、宣言文は表16bに示される結果で返されるコンテキスト編集を含む。
本明細書に記載のように、エンティティAPIを使用して、データ処理システムによって管理される1つ又は複数のデータエンティティインスタンスに対してワークフロー動作を実行し得る。このために、幾つかの実施形態では、データエンティティインスタンスは、データエンティティインスタンスに対して実行し得るワークフロータスク(例えば、承認、拒絶等)を示す値を有する属性(例えば「ワークフロータスク」と呼ばれる)を有し得る。この属性値を使用して、ワークフロータスクを実行し得るデータエンティティインスタンスを識別し得、宣言文(例えば、「WORKFLOW_ACTION」動作を有する)を使用して、データ処理システムにワークフロー動作を実行させ得る。
幾つかの実施形態では、1つ又は複数のデータエンティティインスタンスに対して作成、更新、削除又はワークフロー動作の実行を行うための宣言文は、階層構造を有し得る。例えば、宣言文は、属性の階層の値を取得するために宣言型クエリをどのように使用し得るかと同様に、属性の階層(例えば、入れ子を使用して又は再帰的に指定される)を含み得る。
本明細書に記載のように、データエンティティインスタンス属性の値は、データ処理システムにより異なるテーブルに記憶されていることがある。例えば、静的属性及び動的属性の値は異なるテーブルに記憶されていることがある。別の例として、異なる動的属性(例えば異なるタイプの動的属性)の値は異なるテーブルに記憶されていることがある。単一の宣言型クエリを使用して、データエンティティインスタンスの複数の異なる属性の値にアクセスすることができるため、単一の宣言型クエリを使用して、データ処理システムに記憶された複数の異なるテーブルにわたり記憶された値にアクセスすることができる。同様に、単一の宣言文を使用してデータエンティティインスタンスの複数の異なるズーク性の値を作成、更新又は削除し得るため、その文を使用して、値を作成、複数のテーブルに記憶された値を更新又は削除し得る。
幾つかの実施形態では、1つ又は複数のデータエンティティインスタンスを作成、更新又は削除するための宣言文は、図7を参照して説明したプロセス700に従って処理し得る。例えば、幾つかの実施形態では、宣言文はまず、例えばSQLパーサを使用することにより中間表現(例えば抽象シンタックスツリー)に変換し得る。
次に、中間表現は一連の1つ又は複数の変換(例えば、図7に関連して説明した動的属性参照増補706b、ビュータイプ増補706c及び許可増補706d及び/又は任意の他の適した変換)を使用して変換されて、変換済み中間表現を取得する。データエンティティインスタンスを更新又は削除するための宣言文は既に、1つ又は複数のデータエンティティインスタンス識別子を含んでいるため、幾つかの実施形態では、宣言文を実行可能文に変換しているとき、一意の識別子増補ステップは必要ないことがある。他方、動的属性参照増補及びビュータイプ増補は、更新又は削除されるべき属性値が記憶されているテーブルを識別するために実行し得、許可増補は、ログインしたユーザが、要求される変更を行うことが許されていることを保証するために実行し得る。
中間表現(例えば抽象シンタックスツリー)が一連の1つ又は複数の変換を通して変換された後、実行可能文(例えば実行可能SQL文)が、変換された中間表現から生成される。実行可能文は、幾つかの実施形態では、特定のデータベースシステムにカスタマイズし得る。次いで、実行可能文は実行されて、宣言文を処理し得る。
宣言型テーブルクエリ
本明細書に記載のように、宣言型クエリは、識別部分及びエンリッチメント部分を有する宣言型エンティティクエリであり得、宣言型エンティティクエリを処理した結果は、属性値によって富化されたデータエンティティインスタンスを含む。結果の各データエンティティインスタンス部分には、データエンティティインスタンスを一意に識別する各エンティティインスタンスIDを関連付けることができる。本明細書に記載の例では、そのようなクエリは、JSON表記で「“operation”:=“ENTITY_QUERY”」を使用して示すことができる。
しかしながら、本発明者らは、SQLクエリを直接使用して(宣言型エンティティクエリの代わりに)、結果セット中の単一行が単一のデータエンティティインスタンスに属し、列の1つ又は複数(例えば全て)に異なるエンティティインスタンスを関連付け得るようにデータエンティティインスタンスを結合可能なことを認識した。
したがって、幾つかの実施形態では、エンティティAPIを実施しているデータ処理システムは、結果が、異なるデータエンティティインスタンスからのデータを、列の1つ又は複数を任意選択的に各データエンティティインスタンスIDに結びつけることができる行列に編成された結果と混合し得る宣言型テーブルクエリも処理するように構成し得る。本明細書に記載の例では、宣言型テーブルクエリは、JSON表記で「“operation”:=“TABULAR_QUERY”」を使用して示すことができる。
図10Aは、複数のデータエンティティインスタンスから取得された情報を結合するテーブルクエリの説明のための例を示す。この例では、テーブルクエリは、親「BizTerm」を有する全ての「BizTerm」データエンティティインスタンスの名前を検索するためのものである。図10Bに示されるように、このテーブルクエリを処理した結果は2つの列:BizTermの名前及び親「BizTerm」の名前を含む。なお、別名が列の名前変更に使用される。
幾つかの実施形態では、テーブルクエリを使用して集計機能を実行し得る。集計機能の非限定的な例には、1組の数字(例えば列)の最小又は最大の識別、1組の値(例えば列)の平均、標準偏差又は他の統計の識別、1組の値(例えば列)内の値の数のカウント、1つ又は複数の条件を満たす1組の値(例えば列)内の値の数のカウント等がある。
図10Cは、集計機能(この例ではカウント動作)を実行するためのテーブルクエリの説明のための例を示す。図10Cの宣言型テーブルクエリを処理した結果を図10Dに示す。なお、この例では、宣言型テーブルクエリは、結果が、「retrieveDefinition」グローバル部分を追加することにより結果の構造的定義を含むことを要求する。構造的定義は、図10Dに示される結果あの最初の部分で返される。集計機能を実行するための宣言型テーブルクエリの別の例は図9F-2のインラインビュー924に示され、例示的な結果は図9Gに示される。
上記例から分かるように、宣言型テーブルは、所望の行及び列を選択するためのSQL文を含み得る。任意選択的に、宣言型テーブルクエリは、エンティティインスタンスIDが利用可能な場合、個々の列を富化するためのエンリッチメント部分を有し得る。例えば、参照属性の場合、列中のエンティティインスタンス値は、入れ子された属性を含め、最上位レベルエンティティの更なる属性をサブ選択することにより富化し得る。これにより、エンティティクエリ中の参照値のように、最上位レベルでは参照であるが、属性セクションではサブ選択からの追加の属性値を有する、富化された列値が生成される。
例えば、親「BizTerm」を有する全ての「BizTerm」データエンティティインスタンスの名前を検索するための図10Aに示されるテーブルクエリを考える。これより、子ビジネス用語(別名「b」)のBizTermグループへの参照と、各BizTermグループインスタンスの「名前」及び「説明」属性の値とで各行を富化したいと考える。これは、以下の表17に示されるクエリを用いて達成することができる。「fromAlias」キーワードを使用して、ビジネス用語のいずれが富化に使用されるべきかを識別する。結果は、表17に示され、「BizTermグループ」参照を含む。
幾つかの実施形態では、宣言型テーブルクエリは図7のプロセス700を使用して処理し得る。幾つかのそのような実施形態では、宣言型テーブルクエリはまず、例えばSQLパーサを使用することにより中間クエリ表現(例えば抽象シンタックスツリー)に変換される。次に、中間クエリ表現は、一連の1つ又は複数の変換(例えば、図7に関連して本明細書に説明した変換及び/又は任意の他の適した変換)を使用して変換されて、変換された中間クエリ表現を取得する。また、中間クエリ表現は実行可能クエリ(例えば実行可能SQLクエリ)に変換される。実行可能クエリは、幾つかの実施形態では、特定のデータベースシステムにカスタマイズし得る。
インラインビュー
本明細書に記載のように、幾つかの実施形態では、宣言型クエリのエンリッチメント部分は、別の宣言型クエリを含むインラインビューを含み得る。インラインビューは、宣言型クエリの入れ子を可能にする。このようにして、宣言型テーブル又はエンティティクエリは、別の宣言型クエリ内に入れ子することができる。例えば、既に図9F-1及び図9F-2に関連して見たように、宣言型クエリ920のエンリッチメント部分は2つのインラインビューを含む:エンティティクエリを含むインラインビュー922及びテーブルクエリを含むインラインビュー924。
幾つかの実施形態では、インラインビューは4つの構成要素を含み得る:(1)実行すべき宣言型クエリのタイプを指定する情報(例えば、クエリが宣言型エンティティクエリであるか、又は宣言型テーブルクエリであるかを指定する情報)、(2)内部結合キーを選択する、インラインビューを作成するためのSQLクエリ、(3)外部から結合するために外部結合キーとして使用される列名のリスト(図9F-1、図9F-2、図10E及び図10Fの例では「outerJoinKeys」で記されている)、及び(4)内部に結合するために内部結合キーとして使用される列名のリスト(図9F-1、図9F-2、図10E及び図10Fの例では「innerJoinKeys」で記されている)。
図10E及び図10Fは、本明細書に記載の技術の幾つかの実施形態による、インラインビューを含む宣言型クエリの追加の例を示す。
特に、図10Eは、内部に別の宣言型エンティティクエリを有するインラインビューを含む宣言型エンティティクエリを示す。この例では、全体宣言型クエリは、少なくとも1つのデータ要素を有する「BizTerm」データエンティティの全てのインスタンスを選択するためのものである。更に、そのような各データエンティティインスタンスについて、目標は、図2Gに示されるエンティティ関係図に従ってエンティティモデルパス「データ要素.データセット.アプリケーション」を巡回することにより、インスタンスと関連する「アプリケーション」の集まりを取得することである。インラインビューなしでは、結果は全ての中間要素(即ち、アプリケーションに接続されたデータセットに接続されたデータ要素)を含む必要がある。しかしながら、インラインビューを使用することにより、図10Eに示されるように、これらの中間結果を返す必要はない。
この例では、インラインクエリは「アプリケーション」で開始し、結合属性を有するエンティティ-この場合、データ要素-まで下がって結合し、その理由は、内部結合属性及び外部結合属性が「ビジネス用語ID」に設定されるためである。図10G-1及び図10G-2は、図10Eに示される宣言型エンティティクエリを実行した例示的な結果を示す。
図10Fは、インラインビューを使用して、宣言型テーブルクエリをエンリッチメントテーブルクエリ内に入れ子し得ることを示す。この例では、インラインビューは、「テックシステム」データエンティティの各インスタンスについて、技術グループ当たりのデータセットのカウントを検索するのを助ける。内部結合属性及び外部結合属性は「テックシステムID」に設定される。図10H-1、図10H-2及び図10H-3は、図10Fに示される宣言型エンティティクエリを実行した例示的な結果を示す。
追加の実施詳細
図11は、本明細書に記載される技術を実施し得る適した計算システム環境1100の一例を示す。計算システム環境1100は、適した計算環境の単なる一例であり、本明細書に記載される技術の使用又は機能の範囲へのいかなる限定も示唆することを意図しない。計算環境1100は、例示的な動作環境1100に示される構成要素の何れか1つ又は組合せに関連するいかなる依存性又は要件も有するものとして解釈されるべきではない。
本明細書に記載される技術は、多くの他の汎用又は専用計算システム環境又は構成を用いて動作可能である。本明細書に記載される技術との併用に適し得る周知の計算システム、環境及び/又は構成の例には、限定ではなく、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド又はラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル消費者電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記システム又はデバイスの何れかを含む分散計算環境等がある。
計算環境は、プログラムモジュール等のコンピュータ実行可能命令を実行し得る。一般に、プログラムモジュールは、特定のタスクを実行するか、又は特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。本明細書に記載される技術は、タスクが、通信ネットワークを通してリンクされたリモート処理デバイスによって実行される分散計算環境で実施することもできる。分散計算環境では、プログラムモジュールは、メモリ記憶装置を含むローカルコンピュータ記憶媒体及びリモートコンピュータ記憶媒体の両方に配置され得る。
図11を参照すると、本明細書に記載される技術を実施する例示的なシステムは、コンピュータ1100の形態の汎用計算デバイスを含む。コンピュータ1110の構成要素は、限定ではなく、処理ユニット1120と、システムメモリ1130と、システムメモリを含む種々のシステム構成要素を処理ユニット1120に結合するシステムバス1021とを含み得る。システムバス1121は、多様なバスアーキテクチャの何れかを使用したメモリバス又はメモリコントローラ、周辺機器バス及びローカルバスを含め、幾つかのタイプのバスの何れかであり得る。限定ではなく、例として、そのようなアーキテクチャは、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオエレクトロニクス規格協会(VESA)ローカルバス及びメザニンバスとしても知られる周辺機器相互接続(PCI)バスを含む。
コンピュータ1110は、通常、多様なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ1110によりアクセスすることができる任意の利用可能な媒体であり得、揮発性媒体及び不揮発性媒体の両方、リムーバブル媒体及び非リムーバブル媒体の両方を含む。限定ではなく、例として、コンピュータ可読媒体は、コンピュータ記憶媒体及び通信媒体を含み得る。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール又は他のデータ等の情報を記憶する任意の方法又は技術で実施される揮発性及び不揮発性のリムーバブル及び非リムーバブル媒体を含む。コンピュータ記憶媒体は、限定ではなく、RAM、ROM、EEPROM、フラッシュメモリ若しくは他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD)若しくは他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置若しくは他の磁気記憶装置又は所望の情報を記憶するために使用することができ、コンピュータ1100によりアクセスすることができる任意の他の媒体を含む。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール又は搬送波若しくは他の輸送メカニズム等の変調データ信号における他のデータを具現し、任意の情報輸送媒体を含む。「変調データ信号」という用語は、1つ若しくは複数の特徴セットを有するか、又は信号に情報を符号化するように変更された信号を意味する。限定ではなく、例として、通信媒体は、有線ネットワーク又は直接配線接続等の有線媒体並びに音響、RF、赤外線及び他の無線媒体等の無線媒体を含む。上記の何れかの組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
システムメモリ1130は、読み取り専用メモリ(ROM)1131及びランダムアクセスメモリ(RAM)1132等の揮発性及び/又は不揮発性メモリの形態のコンピュータ記憶媒体を含む。スタートアップ中等に情報をコンピュータ1110内の要素間で転送するのに役立つ基本ルーチンを含む基本入出力システム1133(BIOS)は、通常、ROM1131に記憶される。RAM1132は、通常、処理ユニット1120が即座にアクセス可能であり、及び/又は処理ユニット1120により現在操作されているデータ及び/又はプログラムモジュールを含む。限定ではなく、例として、図11は、オペレーティングシステム1134、アプリケーションプログラム1135、他のプログラムモジュール1136及びプログラムデータ1137を示す。
コンピュータ1110は、他のリムーバブル/非リムーバブルの揮発性/不揮発性コンピュータ記憶媒体を含むこともできる。単なる例として、図11は、非リムーバブル不揮発性磁気媒体に対して読み取り又は書き込みを行うハードディスクドライブ1141、フラッシュメモリ等のリムーバブル不揮発性メモリ1152に対して読み取り又は書き込みを行うフラッシュドライブ1151及びCD ROM又は他の光学媒体等のリムーバブル不揮発性光ディスク1156に対して読み取り又は書き込みを行う光ディスクドライブ1155を示す。例示的な動作環境で使用することができる他のリムーバブル/非リムーバブルの揮発性/不揮発性コンピュータ記憶媒体には、限定ではなく、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、固体状態RAM、固体状態ROM等がある。ハードディスクドライブ1141は、通常、インタフェース1140等の非リムーバブルメモリインターフェースを通してシステムバス1121に接続され、磁気ディスクドライブ1151及び光ディスクドライブ1155は、通常、インタフェース1150等のリムーバブルメモリインターフェースによりシステムバス1121に接続される。
上述され、図11に示されているドライブ及び関連付けられたコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール及びコンピュータ1110の他のデータの記憶を提供する。図11では、例えば、ハードディスクドライブ1141は、オペレーティングシステム1144、アプリケーションプログラム1145、他のプログラムモジュール1146及びプログラムデータ1147を記憶するものとして示されている。なお、これらの構成要素は、オペレーティングシステム1134、アプリケーションプログラム1135、他のプログラムモジュール1136及びプログラムデータ1137と同じであるか又は異なり得る。オペレーティングシステム1144、アプリケーションプログラム1145、他のプログラムモジュール1146及びプログラムデータ1147には、ここでは、少なくともこれらが異なるコピーであることを示すために異なる番号が与えられている。アクターは、マウス、トラックボール又はタッチパッドと一般に呼ばれるキーボード1162及びポインティングデバイス1161等の入力デバイスを通してコンピュータ1110にコマンド及び情報を入力し得る。他の入力デバイス(図示せず)は、マイクロホン、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナ等を含み得る。これら及び他の入力デバイスは、多くの場合、システムバスに結合されるユーザ入力インタフェース1160を通して処理ユニット1120に接続されるが、パラレルポート、ゲームポート又はユニバーサルシリアルバス(USB)等の他のインタフェース及びバス構造により接続されることもある。モニタ1191又は他のタイプのディスプレイデバイスもビデオインターフェース1190等のインタフェースを介してシステムバス1121に接続される。モニタに加えて、コンピュータは、スピーカ1197及びプリンタ1196等の他の周辺出力デバイスを含むこともでき、周辺出力デバイスは、出力周辺機器インタフェース1195を通して接続され得る。
コンピュータ1110は、リモートコンピュータ1180等の1つ又は複数のリモートコンピュータへの論理接続を使用して、ネットワーク接続された環境で動作し得る。リモートコンピュータ1180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス又は他の一般的なネットワークノードであり得、通常、コンピュータ1110に関して上述した要素の多く又は全てを含むが、メモリ記憶装置1181のみが図11に示された。図11に示される論理接続は、ローカルエリアネットワーク(LAN)1171及び広域ネットワーク(WAN)1173を含むが、他のネットワークを含むこともできる。そのようなネットワーキング環境は、オフィス、企業規模コンピュータネットワーク、イントラネット及びインターネットで一般的である。
LANネットワーキング環境で使用される場合、コンピュータ1110は、ネットワークインターフェース又はアダプタ1170を通してLAN1171に接続される。WANネットワーキング環境で使用される場合、コンピュータ1110は、通常、モデム1172又はインターネット等のWAN1173を介して通信を確立する他の手段を含む。モデム1172は、内部又は外部であり得、アクター入力インタフェース1160又は他の適切な機構を介してシステムバス1121に接続され得る。ネットワーク接続環境では、コンピュータ1110に関して示されたプログラムモジュール又はその部分は、リモートメモリ記憶装置に記憶され得る。限定ではなく、例として、図11は、メモリデバイス1181に常駐するものとしてリモートアプリケーションプログラム1185を示す。示されるネットワーク接続が例示であり、コンピュータ間に通信リンクを確立する他の手段を使用し得ることが理解されるであろう。
本明細書に記載される技術の少なくとも1つの実施形態の幾つかの態様を説明したが、当業者は、種々の改変形態、変更形態及び改良形態を容易に想到するであろうことを理解されたい。
そのような改変形態、変更形態及び改良形態は、本開示の一部であることが意図され、本開示の趣旨及び範囲内にあることが意図される。更に、本明細書に記載される技術の利点が示されたが、本明細書に記載された技術のあらゆる実施形態が、記載されたあらゆる利点を含むわけではないことを理解されたい。幾つかの実施形態は、本明細書で利点として記載された任意の特徴を実施しないこともあり、幾つかの場合、記載された特徴の1つ又は複数は、更なる実施形態を達成するために実施され得る。したがって、上記説明及び図面は、単なる例を目的としている。
本明細書に記載される技術の上記実施形態は、多くの方法の何れかで実施することができる。例えば、実施形態は、ハードウェア、ソフトウェア又はそれらの組合せを使用して実施され得る。ソフトウェアで実施される場合、ソフトウェアコードは、1つのコンピュータに提供されるか又は複数のコンピュータに分散するかに関係なく、任意の適したプロセッサ又はプロセッサの集合で実行することができる。そのようなプロセッサは、集積回路として実施され得、1つ又は複数のプロセッサは、CPUチップ、GPUチップ、マイクロプロセッサ、マイクロコントローラ又はコプロセッサ等の名称で等技術分野において既知の市販の集積回路構成要素を含め、集積回路構成要素内にある。代替的に、プロセッサは、ASIC等のカスタム回路又はプログラマブル論理デバイスを構成することから生じるセミカスタム回路で実施され得る。更なる代替として、プロセッサは、市販であれ、セミカスタムであれ又はカスタムであれ関係なく、より大きい回路又は半導体デバイスの一部であり得る。特定の例として、幾つかの市販のマイクロプロセッサは、コアの1つ又はサブセットがプロセッサを構成され得るように、複数のコアを有する。しかしながら、プロセッサは、任意の適したフォーマットで回路を使用して実施され得る。
更に、コンピュータは、ラックマウントコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ又はタブレットコンピュータ等の多くの形態の何れかで実施され得ることを理解されたい。更に、コンピュータは、個人情報端末(PDA)、スマートフォン又は任意の他の適したポータブル若しくは固定電子デバイスを含め、コンピュータとして一般に見なされないが、適した処理能力を有するデバイスで実施され得る。
また、コンピュータは、1つ又は複数の入力デバイス及び出力デバイスを有し得る。これらのデバイスは、特に、ユーザインターフェースの提示に使用することができる。ユーザインターフェースを提供するために使用することができる出力デバイスの例には、出力を視覚的に提示するためのプリンタ又はディスプレイ画面及び出力を可聴提示するためのスピーカ又は他の音生成デバイスがある。ユーザインターフェースに使用することができる入力デバイスの例には、キーボード及びマウス、タッチパッド及びデジタイズタブレット等のポインティングデバイスがある。別の例として、コンピュータは、発話認識を通して又は他の可聴フォーマットで入力された情報を受信し得る。
そのようなコンピュータは、ローカルエリアネットワークとして又は企業ネットワーク若しくはインターネット等の広域ネットワークとしてのものを含め、任意の適した形態で1つ又は複数のネットワークにより相互接続され得る。そのようなネットワークは、任意の適した技術に基づき得、任意の適したプロトコルに従って動作し得、無線ネットワーク、有線ネットワーク又は光ファイバネットワークを含み得る。
また、本明細書で概説した種々の方法又はプロセスは、多様なオペレーティングシステム又はプラットフォームの何れか1つを利用する1つ又は複数のプロセッサで実行可能なソフトウェアとしてコード化され得る。更に、そのようなソフトウェアは、幾つかの適したプログラミング言語及び/又はプログラミング若しくはスクリプトツールの何れかを使用して記述することができ、フレームワーク又は仮想マシンで実行される実行可能機械言語コード又は中間コードとしてコンパイルすることもできる。
これに関して、本明細書に記載される技術の態様は、1つ又は複数のコンピュータ又は他のプロセッサで実行されると、上述した種々の実施形態を実施する方法を実行する1つ又は複数のプログラムが符号化されたコンピュータ可読記憶媒体(又は複数のコンピュータ可読媒体)(例えば、コンピュータメモリ、1つ又は複数のフロッピーディスク、コンパクトディスク(CD)、光ディスク、デジタルビデオディスク(DVD)、磁気テープ、フラッシュメモリ、フィールドプログラマブルゲートアレイ若しくは他の半導体デバイスでの回路構成又は他の有形コンピュータ記憶媒体)として実施され得る。上記例から明らかであるように、コンピュータ可読記憶媒体は、コンピュータ実行可能命令を非一時的な形態で提供するのに十分な時間にわたり情報を保持し得る。そのような1つ又は複数のコンピュータ可読記憶媒体は、記憶された1つ又は複数のプログラムを1つ又は複数の異なるコンピュータ又は他のプロセッサにロードして、上述したような技術の種々の態様を実施することができるように輸送可能であり得る。本明細書で使用される場合、「コンピュータ可読記憶媒体」という用語は、製造(すなわち製品)又は機械であると見なすことができる非一時的コンピュータ可読媒体のみを包含する。代替又は追加として、本明細書に記載される技術は、伝播信号等、コンピュータ可読記憶媒体以外のコンピュータ可読媒体として実施され得る。
「プログラム」又は「ソフトウェア」という用語は、本明細書では、一般的な意味において、上述した技術の種々の態様を実施するようにコンピュータ又は他のプロセッサをプログラムするのに利用することができる任意のタイプのコンピュータコード又はコンピュータ実行可能命令の組を指すために使用される。更に、この実施形態の一態様によれば、実行されると、本明細書に記載される技術の方法を実行する1つ又は複数のコンピュータプログラムは、1つのコンピュータ又はプロセッサに常駐する必要はなく、幾つかの異なるコンピュータ又はプロセッサにモジュール式で分散して、本明細書に記載される技術の種々の態様を実施し得ることを理解されたい。
コンピュータ実行可能命令は、1つ又は複数のコンピュータ又は他のデバイスによって実行されるプログラムモジュール等の多くの形態であり得る。一般に、プログラムモジュールは、特定のタスクを実行するか、又は特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。通常、プログラムモジュールの機能は、種々の実施形態では、所望のように結合又は分散され得る。
また、データ構造は、任意の適した形態でコンピュータ可読媒体に記憶され得る。例示を簡潔にするために、データ構造は、データ構造におけるロケーションを通して関連するフィールドを有して示され得る。そのような関係は、同様に、フィールド間の関係を伝達するコンピュータ可読媒体におけるロケーションにフィールドの記憶を割り当てることにより達成され得る。しかしながら、ポインタ、タグ又はデータ要素間に関係を確立する他のメカニズムの使用を含め、データ構造のフィールドにおける情報間の関係を確立するために、任意の適したメカニズムが使用可能である。
本明細書に記載される技術の種々の態様は、単独で、組み合わせて又は上述された実施形態で特に考察されていない多様な構成で使用され得、したがって、その適用は、上記説明で記載されるか又は図面に示される構成要素の詳細及び配置に限定されない。例えば、一実施形態において記載された態様は、他の実施形態において記載された態様と任意の様式で結合され得る。
また、本明細書に記載される技術は、方法として実施され得、方法の例は、図3及び7の参照を含めて本明細書に提供されている。方法のいずれかの一部として実行される動作は、任意の適したような順序であり得る。したがって、例示的な実施形態では順次動作として示されているにもかかわらず、幾つかの動作を同時に実行することを含み得る、動作が示されるのと異なる順序で実行される実施形態を構築し得る。
更に、幾つかの行動は、「アクター」又は「ユーザ」により行われるものとして説明されている。「アクター」又は「ユーザ」が1人の個人である必要はなく、幾つかの実施形態では、「アクター」又は「ユーザ」に起因する行動は、個人のチーム及び/又はコンピュータ支援ツール又は他のメカニズムを組み合わせて個人によって実行され得ることを理解されたい。
特許請求の範囲におけるクレーム要素を修飾する「第1」、「第2」、「第3」等の序数詞の使用は、それ自体、あるクレーム要素に対する別のクレーム要素のいかなる優先、先行若しくは順序又は方法の動作が実行される時間的順序も含意せず、単に特定の名称を有するあるクレーム要素を、同じ名称を有する(序数詞の使用以外には)別の要素から区別して、クレーム要素を区別するためのラベルとして使用される。
また、本明細書で使用される表現及び用語は、説明を目的としており、限定として見なされるべきではない。「包含する」、「含む」又は「有する」、「含有する」、「伴う」及びそれらの変形の本明細書での使用は、その後に列記される項目及びそれらの均等物並びに追加の項目の包含を意味する。

Claims (107)

  1. データ処理システムによって実行される、クエリに応答してデータエンティティの第1のインスタンスの第1の属性値を計算効率的に取得する方法であって、
    (A)前記データ処理システムのアプリケーションプログラミングインタフェース(API)を通して、データにアクセスするためのクエリを取得することであって、前記クエリは、
    少なくとも1つのデータストアに記憶された前記データエンティティの少なくとも前記第1のインスタンスを識別するための情報を含む第1の部分、及び
    値を取得する前記データエンティティの少なくとも1つの属性を示す第2の部分
    を含む、取得することと、
    (B)第1の組の1つ又は複数の実行可能クエリ及び第2の組の1つ又は複数の実行可能クエリを含む複数の実行可能クエリを生成することであって、
    前記クエリの前記第1の部分を使用して、前記少なくとも1つのデータストアに記憶された前記データエンティティの少なくとも前記第1のインスタンスを識別するための前記第1の組の実行可能クエリを生成すること、
    前記クエリの前記第2の部分を使用して、前記第1の組の実行可能クエリを使用して識別された前記データエンティティの少なくとも前記第1のインスタンスの属性値を取得するための前記第2の組の実行可能クエリを生成することであって、前記属性値は、前記第1の属性値を含む、生成すること
    を含む、生成することと、
    (C)前記複数の実行可能クエリを実行することにより、前記APIを介して提供された前記クエリの結果を取得することであって、前記結果は、前記データエンティティの前記第1のインスタンスの少なくとも前記第1の属性値を含む、取得することと、
    (D)前記データエンティティの前記第1のインスタンスの少なくとも前記第1の属性値を含む前記結果の少なくとも幾つかを出力することと
    を含む方法。
  2. 前記第1及び第2の組の実行可能クエリは、実行可能構造化クエリ言語(SQL)クエリを含む、請求項1に記載の方法。
  3. 前記第1の部分は、複数のデータエンティティの各々の1つ又は複数のインスタンスを識別するための情報を含み、前記複数のデータエンティティは、前記データエンティティを含み、
    前記第1の組の実行可能クエリを生成することは、前記複数のデータエンティティのそれぞれの特定のデータエンティティについて、前記少なくとも1つのデータストアに記憶された前記データエンティティのインスタンスを識別するための各実行可能クエリを生成することを含む、請求項1又は2に記載の方法。
  4. 前記少なくとも1つの属性は、前記データエンティティの複数の属性を含み、
    前記第2の組の実行可能クエリを生成することは、前記複数の属性の少なくとも幾つかのそれぞれの特定の属性について、前記第1の組の実行可能クエリを使用して識別された前記データエンティティのインスタンスの前記特定の属性の値を取得するための各実行可能クエリを生成することを含む、請求項1~3のいずれか一項に記載の方法。
  5. 前記複数の属性は、複数の動的属性を含み、
    前記第2の組の実行可能クエリを生成することは、
    前記複数の動的属性を動的属性のグループにグループ化することであって、前記グループの各々は、前記複数の動的属性の少なくとも1つを有する、グループ化することと、
    前記複数の動的属性のグループの各々について、前記データエンティティの前記インスタンスの前記グループ内の属性の値を取得するための各実行可能クエリを生成することと
    を含む、請求項4に記載の方法。
  6. 前記複数の動的属性をグループ化することは、前記動的属性のタイプに基づいて実行される、請求項5に記載の方法。
  7. 前記複数の動的属性をグループ化することは、動的属性が前記少なくとも1つのデータストア内の同じテーブルに記憶されているか否かに基づいて実行される、請求項5又は6に記載の方法。
  8. 前記複数の動的属性をグループ化することは、動的属性がその値を共通継承パスに沿って継承するか否かに基づいて実行される、請求項5~7のいずれか一項に記載の方法。
  9. 前記複数の実行可能クエリを実行することは、
    前記第1の組の実行可能クエリを実行して、前記データエンティティの少なくとも前記第1のインスタンスを識別する情報を取得することと、
    前記第1の組の実行可能クエリを実行した後、
    前記データエンティティの少なくとも前記第1のインスタンスを識別する前記情報を使用して、前記第2の組の実行可能クエリを実行することと
    を含む、請求項1~8のいずれか一項に記載の方法。
  10. 前記第2の組の実行可能クエリを生成することは、前記第1の組の実行可能クエリを実行した後に実行される、請求項9に記載の方法。
  11. 前記第2の組の実行可能クエリを生成することは、前記第1の組の実行可能クエリを実行する前に実行される、請求項9に記載の方法。
  12. 前記少なくとも1つの属性は、前記データエンティティの複数の動的属性のグループを含み、
    前記第2の組の実行可能クエリは、前記複数の動的属性のグループにそれぞれ対応する複数の実行可能クエリを含み、
    前記第2の組の実行可能クエリを実行することは、前記複数の実行可能クエリの各々を実行して、それぞれの複数の動的属性値結果を取得することを含む、請求項9~11のいずれか一項に記載の方法。
  13. 前記第2の組の実行可能クエリを実行した後、前記複数の動的値属性結果を結合して、前記クエリの前記結果を取得することを更に含む、請求項12に記載の方法。
  14. 前記クエリの前記第2の部分は、インラインビューを含み、
    前記第2の組の実行可能クエリを生成することは、前記インラインビューで指定された情報を使用して実行可能クエリを生成することを含む、請求項1~13のいずれか一項に記載の方法。
  15. 前記インラインビューは、テーブルクエリを含む、請求項14に記載の方法。
  16. 前記テーブルクエリは、集計機能を実行するためのものである、請求項15に記載の方法。
  17. 前記インラインビューは、内部及び外部結合キーを指定する、請求項14に記載の方法。
  18. 前記データエンティティの前記少なくとも1つの属性は、少なくとも1つの静的属性及び少なくとも1つの動的属性を含む、請求項1~17のいずれか一項に記載の方法。
  19. 前記データエンティティの前記少なくとも1つの属性は、第1の動的属性であって、その値を第2のデータエンティティの属性から継承するように構成された第1の動的属性を含む、請求項1~18のいずれか一項に記載の方法。
  20. 前記クエリの前記第2の部分は、前記少なくとも1つの属性を含む属性の階層を示す、請求項1~19のいずれか一項に記載の方法。
  21. 前記クエリの前記第2の部分は、入れ子を使用して前記属性の階層の少なくとも一部分を示す、請求項20に記載の方法。
  22. 前記クエリの前記第2の部分は、再帰を使用して前記属性の階層の少なくとも一部分を示す、請求項20に記載の方法。
  23. 前記結果の少なくとも幾つかを出力することは、
    前記属性の階層に対応する階層形式で前記結果の前記少なくとも幾つかをフォーマットすることと、
    前記結果の前記少なくとも幾つかを前記階層形式で出力することと
    を含む、請求項20に記載の方法。
  24. 前記結果の前記少なくとも幾つかを出力することは、階層形式で前記結果の前記少なくとも幾つかを出力することを含む、請求項1~23のいずれか一項に記載の方法。
  25. 前記結果の前記少なくとも幾つかを出力することは、非表形式で前記結果を出力することを含む、請求項1~24のいずれか一項に記載の方法。
  26. 前記クエリの前記第1の部分は、前記第1の部分における前記情報を、前記データ処理システムによって管理される情報で増補する一連の変換を通して変換されて、前記少なくとも1つのデータストアに対して実行されるように構成される前記第1の組の実行可能クエリを生成し、
    前記クエリの前記第2の部分は、前記第2の部分における前記情報を、前記データ処理システムによって管理される情報で増補する一連の変換を通して変換されて、前記少なくとも1つのデータストアに対して実行されるように構成される前記第2の組の実行可能クエリを生成する、請求項1~25のいずれか一項に記載の方法。
  27. 前記第1の組の実行可能クエリを生成することは、第1の実行可能クエリを、少なくとも部分的に、
    前記クエリの前記第1の部分を使用して中間クエリ表現を生成することと、
    一意の識別子情報、動的属性参照情報、ビュータイプ情報及び/又は許可情報を使用して前記中間クエリ表現を増補して、増補された中間クエリ表現を取得することと、
    前記増補された中間クエリ表現を使用して前記第1の実行可能クエリを生成することと
    によって生成することを含む、請求項1~26のいずれか一項に記載の方法。
  28. 前記第1の実行可能クエリを生成することは、実行可能SQLクエリを生成することを含む、請求項27に記載の方法。
  29. 前記中間クエリ表現を生成することは、抽象シンタックスツリーを生成することを含む、請求項27に記載の方法。
  30. 前記第2の組の実行可能クエリを生成することは、第2の実行可能クエリを、少なくとも部分的に、
    前記クエリの前記第2の部分を使用して中間クエリ表現を生成することと、
    一意の識別子情報、動的属性参照情報、ビュータイプ情報及び/又は許可情報を使用して前記中間クエリ表現を増補して、増補された中間クエリ表現を取得することと、
    前記増補された中間クエリ表現を使用して前記第2の実行可能クエリを生成することと
    によって生成することを含む、請求項1~29のいずれか一項に記載の方法。
  31. 前記複数の実行可能クエリを実行することは、前記第1の組の実行可能クエリを実行して、複数のデータエンティティインスタンスを識別する情報を取得することを含み、
    前記第2の組の1つ又は複数の実行可能クエリを生成することは、前記クエリの前記第2の部分及び前記複数のデータエンティティインスタンスを識別する前記情報を使用して実行される、請求項1~30のいずれか一項に記載の方法。
  32. 前記少なくとも1つの属性は、複数の属性を含み、前記複数の属性の各属性は、同じ他のデータエンティティインスタンスの1つ又は複数の属性からその値を継承するように構成され、前記方法は、
    前記データ処理システムにより、前記複数の属性を単一のグループにグループ化することと、
    前記単一のグループのための単一の実行可能クエリを生成することと、
    前記データ処理システムにより、前記単一の実行可能クエリを実行して、前記データ処理システムに前記複数の属性の属性値を取得させることと
    を更に含む、請求項1~31のいずれか一項に記載の方法。
  33. 前記少なくとも1つの属性は、複数の属性を含み、前記複数の属性の各属性は、別のデータエンティティインスタンスの1つ又は複数の属性からその値を継承するように構成され、前記方法は、
    前記データ処理システムにより、グループ化基準を使用して前記複数の属性を1つ又は複数のグループにグループ化することと、
    前記グループの各々のための別個の実行可能クエリを生成することであって、前記別個の実行可能クエリは、前記データ処理システムによって実行されると、前記データ処理システムに前記それぞれのグループの前記属性の属性値を取得させる、生成することと
    を更に含む、請求項1~32のいずれか一項に記載の方法。
  34. 前記グループ化基準は、前記別個の実行可能クエリの単一のものが、前記グループ化された属性の前記継承された値にアクセスするために使用されるように、前記属性のうち、共通継承パスを共有する属性を単一のグループにグループ化することである、請求項1~33のいずれか一項に記載の方法。
  35. 前記少なくとも1つのデータストアは、複数のデータエンティティインスタンス及び関連する属性値並びに異なるデータエンティティインスタンス間の関係を定義する情報を記憶するように構成され、前記少なくとも1つのデータストアは、前記複数のデータエンティティインスタンスを使用して、前記データ処理システムに通信可能に接続される計算システムの分散ネットワークの分散データベースに記憶されたデータを記述する情報を記憶するように構成される、請求項1~34のいずれか一項に記載の方法。
  36. 前記少なくとも1つのデータストアは、前記分散された計算システムの前記分散データベースによって記憶される複数のデータセットの各々について、前記分散計算システムの何らかのシステム部分によって実行されるように構成された複数のソフトウェアアプリケーションの各々又は前記分散計算システムのそれぞれ若しくは複数のシステム部分のために、前記複数のデータエンティティインスタンスのうちのデータエンティティインスタンスを記憶するように構成される、請求項35に記載の方法。
  37. 前記クエリは、宣言型クエリである、請求項1~36のいずれか一項に記載の方法。
  38. データ処理システムであって、
    少なくとも1つのコンピュータハードウェアプロセッサと、
    プロセッサ実行可能命令を記憶する少なくとも1つの非一時的コンピュータ可読記憶媒体と
    を含み、前記プロセッサ実行可能命令は、前記少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、前記少なくとも1つのコンピュータハードウェアプロセッサに、クエリに応答してデータエンティティの第1のインスタンスの第1の属性値を取得する方法を実行させ、前記方法は、
    (A)前記データ処理システムのアプリケーションプログラミングインタフェース(API)を通して、データにアクセスするためのクエリを取得することであって、前記クエリは、
    少なくとも1つのデータストアに記憶された前記データエンティティの少なくとも前記第1のインスタンスを識別するための情報を含む第1の部分、及び
    値を取得する前記データエンティティの少なくとも1つの属性を示す第2の部分
    を含む、取得することと、
    (B)第1の組の1つ又は複数の実行可能クエリ及び第2の組の1つ又は複数の実行可能クエリを含む複数の実行可能クエリを生成することであって、
    前記クエリの前記第1の部分を使用して、前記少なくとも1つのデータストアに記憶された前記データエンティティの少なくとも前記第1のインスタンスを識別するための前記第1の組の実行可能クエリを生成すること、
    前記クエリの前記第2の部分を使用して、前記第1の組の実行可能クエリを使用して識別された前記データエンティティの少なくとも前記第1のインスタンスの属性値を取得するための前記第2の組の実行可能クエリを生成することであって、前記属性値は、前記第1の属性値を含む、生成すること
    を含む、生成することと、
    (C)前記複数の実行可能クエリを実行することにより、前記APIを介して提供された前記クエリの結果を取得することであって、前記結果は、前記データエンティティの前記第1のインスタンスの少なくとも前記第1の属性値を含む、取得することと、
    (D)前記データエンティティの前記第1のインスタンスの少なくとも前記第1の属性値を含む前記結果の少なくとも幾つかを出力することと
    を含む、データ処理システム。
  39. 前記第1及び第2の組の実行可能クエリは、実行可能構造化クエリ言語(SQL)クエリを含む、請求項38に記載のデータ処理システム。
  40. 前記第1の部分は、複数のデータエンティティの各々の1つ又は複数のインスタンスを識別するための情報を含み、前記複数のデータエンティティは、前記データエンティティを含み、
    前記第1の組の実行可能クエリを生成することは、前記複数のデータエンティティのそれぞれの特定のデータエンティティについて、前記少なくとも1つのデータストアに記憶された前記データエンティティのインスタンスを識別するための各実行可能クエリを生成することを含む、請求項38又は39に記載のデータ処理システム。
  41. 前記少なくとも1つの属性は、前記データエンティティの複数の属性を含み、
    前記第2の組の実行可能クエリを生成することは、前記複数の属性の少なくとも幾つかのそれぞれの特定の属性について、前記第1の組の実行可能クエリを使用して識別された前記データエンティティのインスタンスの前記特定の属性の値を取得するための各実行可能クエリを生成することを含む、請求項38~40のいずれか一項に記載のデータ処理システム。
  42. 前記複数の属性は、複数の動的属性を含み、
    前記第2の組の実行可能クエリを生成することは、
    前記複数の動的属性を動的属性のグループにグループ化することであって、前記グループの各々は、前記複数の動的属性の少なくとも1つを有する、グループ化することと、
    前記複数の動的属性のグループの各々について、前記データエンティティの前記インスタンスの前記グループ内の属性の値を取得するための各実行可能クエリを生成することと
    を含む、請求項41に記載のデータ処理システム。
  43. 前記複数の動的属性をグループ化することは、前記動的属性のタイプに基づいて実行される、請求項42に記載のデータ処理システム。
  44. 前記複数の動的属性をグループ化することは、動的属性が前記少なくとも1つのデータストア内の同じテーブルに記憶されているか否かに基づいて実行される、請求項42又は43に記載のデータ処理システム。
  45. 前記複数の動的属性をグループ化することは、動的属性がその値を共通継承パスに沿って継承するか否かに基づいて実行される、請求項42~44のいずれか一項に記載のデータ処理システム。
  46. 前記複数の実行可能クエリを実行することは、
    前記第1の組の実行可能クエリを実行して、前記データエンティティの少なくとも前記第1のインスタンスを識別する情報を取得することと、
    前記第1の組の実行可能クエリを実行した後、
    前記データエンティティの少なくとも前記第1のインスタンスを識別する前記情報を使用して、前記第2の組の実行可能クエリを実行することと
    を含む、請求項38~45のいずれか一項に記載のデータ処理システム。
  47. 前記第2の組の実行可能クエリを生成することは、前記第1の組の実行可能クエリを実行した後に実行される、請求項46に記載のデータ処理システム。
  48. 前記第2の組の実行可能クエリを生成することは、前記第1の組の実行可能クエリを実行する前に実行される、請求項46に記載のデータ処理システム。
  49. 前記少なくとも1つの属性は、前記データエンティティの複数の動的属性のグループを含み、
    前記第2の組の実行可能クエリは、前記複数の動的属性のグループにそれぞれ対応する複数の実行可能クエリを含み、
    前記第2の組の実行可能クエリを実行することは、前記複数の実行可能クエリの各々を実行して、それぞれの複数の動的属性値結果を取得することを含む、請求項46~48のいずれか一項に記載のデータ処理システム。
  50. 前記第2の組の実行可能クエリを実行した後、前記複数の動的値属性結果を結合して、前記クエリの前記結果を取得することを更に含む、請求項49に記載のデータ処理システム。
  51. 前記クエリの前記第2の部分は、インラインビューを含み、
    前記第2の組の実行可能クエリを生成することは、前記インラインビューで指定された情報を使用して実行可能クエリを生成することを含む、請求項38~50のいずれか一項に記載のデータ処理システム。
  52. 前記インラインビューは、テーブルクエリを含む、請求項51に記載のデータ処理システム。
  53. 前記テーブルクエリは、集計機能を実行するためのものである、請求項52に記載のデータ処理システム。
  54. 前記インラインビューは、内部及び外部結合キーを指定する、請求項51に記載のデータ処理システム。
  55. 前記データエンティティの前記少なくとも1つの属性は、少なくとも1つの静的属性及び少なくとも1つの動的属性を含む、請求項38~54のいずれか一項に記載のデータ処理システム。
  56. 前記データエンティティの前記少なくとも1つの属性は、第1の動的属性であって、その値を第2のデータエンティティの属性から継承するように構成された第1の動的属性を含む、請求項38~55のいずれか一項に記載のデータ処理システム。
  57. 前記クエリの前記第2の部分は、前記少なくとも1つの属性を含む属性の階層を示す、請求項38~56のいずれか一項に記載のデータ処理システム。
  58. 前記クエリの前記第2の部分は、入れ子を使用して前記属性の階層の少なくとも一部分を示す、請求項57に記載のデータ処理システム。
  59. 前記クエリの前記第2の部分は、再帰を使用して前記属性の階層の少なくとも一部分を示す、請求項57に記載のデータ処理システム。
  60. 前記結果の少なくとも幾つかを出力することは、
    前記属性の階層に対応する階層形式で前記結果の前記少なくとも幾つかをフォーマットすることと、
    前記結果の前記少なくとも幾つかを前記階層形式で出力することと
    を含む、請求項57に記載のデータ処理システム。
  61. 前記結果の前記少なくとも幾つかを出力することは、階層形式で前記結果の前記少なくとも幾つかを出力することを含む、請求項38~60のいずれか一項に記載のデータ処理システム。
  62. 前記結果の前記少なくとも幾つかを出力することは、非表形式で前記結果を出力することを含む、請求項38~61のいずれか一項に記載のデータ処理システム。
  63. 前記クエリの前記第1の部分は、前記第1の部分における前記情報を、前記データ処理システムによって管理される情報で増補する一連の変換を通して変換されて、前記少なくとも1つのデータストアに対して実行されるように構成される前記第1の組の実行可能クエリを生成し、
    前記クエリの前記第2の部分は、前記第2の部分における前記情報を、前記データ処理システムによって管理される情報で増補する一連の変換を通して変換されて、前記少なくとも1つのデータストアに対して実行されるように構成される前記第2の組の実行可能クエリを生成する、請求項38~62のいずれか一項に記載のデータ処理システム。
  64. 前記第1の組の実行可能クエリを生成することは、第1の実行可能クエリを、少なくとも部分的に、
    前記クエリの前記第1の部分を使用して中間クエリ表現を生成することと、
    一意の識別子情報、動的属性参照情報、ビュータイプ情報及び/又は許可情報を使用して前記中間クエリ表現を増補して、増補された中間クエリ表現を取得することと、
    前記増補された中間クエリ表現を使用して前記第1の実行可能クエリを生成することと
    によって生成することを含む、請求項38~63のいずれか一項に記載のデータ処理システム。
  65. 前記中間クエリ表現を生成することは、抽象シンタックスツリーを生成することを含む、請求項64に記載のデータ処理システム。
  66. 前記第2の組の実行可能クエリを生成することは、第2の実行可能クエリを、少なくとも部分的に、
    前記クエリの前記第2の部分を使用して中間クエリ表現を生成することと、
    一意の識別子情報、動的属性参照情報、ビュータイプ情報及び/又は許可情報を使用して前記中間クエリ表現を増補して、増補された中間クエリ表現を取得することと、
    前記増補された中間クエリ表現を使用して前記第2の実行可能クエリを生成することと
    によって生成することを含む、請求項38~65のいずれか一項に記載のデータ処理システム。
  67. 前記複数の実行可能クエリを実行することは、前記第1の組の実行可能クエリを実行して、複数のデータエンティティインスタンスを識別する情報を取得することを含み、
    前記第2の組の1つ又は複数の実行可能クエリを生成することは、前記クエリの前記第2の部分及び前記複数のデータエンティティインスタンスを識別する前記情報を使用して実行される、請求項38~66のいずれか一項に記載のデータ処理システム。
  68. 前記少なくとも1つの属性は、複数の属性を含み、前記複数の属性の各属性は、同じ他のデータエンティティインスタンスの1つ又は複数の属性からその値を継承するように構成され、前記方法は、
    前記データ処理システムにより、前記複数の属性を単一のグループにグループ化することと、
    前記単一のグループのための単一の実行可能クエリを生成することと、
    前記データ処理システムにより、前記単一の実行可能クエリを実行して、前記データ処理システムに前記複数の属性の属性値を取得させることと
    を更に含む、請求項38~67のいずれか一項に記載のデータ処理システム。
  69. 前記少なくとも1つの属性は、複数の属性を含み、前記複数の属性の各属性は、別のデータエンティティインスタンスの1つ又は複数の属性からその値を継承するように構成され、前記方法は、
    前記データ処理システムにより、グループ化基準を使用して前記複数の属性を1つ又は複数のグループにグループ化することと、
    前記グループの各々のための別個の実行可能クエリを生成することであって、前記別個の実行可能クエリは、前記データ処理システムによって実行されると、前記データ処理システムに前記それぞれのグループの前記属性の属性値を取得させる、生成することと
    を更に含む、請求項38~68のいずれか一項に記載のデータ処理システム。
  70. 前記グループ化基準は、前記別個の実行可能クエリの単一のものが、前記グループ化された属性の前記継承された値にアクセスするために使用されるように、前記属性のうち、共通継承パスを共有する属性を単一のグループにグループ化することである、請求項38~69のいずれか一項に記載のデータ処理システム。
  71. 前記少なくとも1つのデータストアは、複数のデータエンティティインスタンス及び関連する属性値並びに異なるデータエンティティインスタンス間の関係を定義する情報を記憶するように構成され、前記少なくとも1つのデータストアは、前記複数のデータエンティティインスタンスを使用して、前記データ処理システムに通信可能に接続される計算システムの分散ネットワークの分散データベースに記憶されたデータを記述する情報を記憶するように構成される、請求項38~70のいずれか一項に記載のデータ処理システム。
  72. 前記少なくとも1つのデータストアは、分散計算システムの分散データベースによって記憶される複数のデータセットの各々について、前記分散計算システムの何らかのシステム部分によって実行されるように構成された複数のソフトウェアアプリケーションの各々又は前記分散計算システムのそれぞれ若しくは複数のシステム部分のために、複数のデータエンティティインスタンスのうちのデータエンティティインスタンスを記憶するように構成される、請求項38に記載のデータ処理システム。
  73. プロセッサ実行可能命令を記憶する少なくとも1つの非一時的コンピュータ可読記憶媒体であって、前記プロセッサ実行可能命令は、少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、前記少なくとも1つのコンピュータハードウェアプロセッサに、クエリに応答してデータエンティティの第1のインスタンスの第1の属性値を取得する方法を実行させ、前記方法は、
    (A)データ処理システムのアプリケーションプログラミングインタフェース(API)を通して、データにアクセスするためのクエリを取得することであって、前記クエリは、
    少なくとも1つのデータストアに記憶された前記データエンティティの少なくとも前記第1のインスタンスを識別するための情報を含む第1の部分、及び
    値を取得する前記データエンティティの少なくとも1つの属性を示す第2の部分
    を含む、取得することと、
    (B)第1の組の1つ又は複数の実行可能クエリ及び第2の組の1つ又は複数の実行可能クエリを含む複数の実行可能クエリを生成することであって、
    前記クエリの前記第1の部分を使用して、前記少なくとも1つのデータストアに記憶された前記データエンティティの少なくとも前記第1のインスタンスを識別するための前記第1の組の実行可能クエリを生成すること、
    前記クエリの前記第2の部分を使用して、前記第1の組の実行可能クエリを使用して識別された前記データエンティティの少なくとも前記第1のインスタンスの属性値を取得するための前記第2の組の実行可能クエリを生成することであって、前記属性値は、前記第1の属性値を含む、生成すること
    を含む、生成することと、
    (C)前記複数の実行可能クエリを実行することにより、前記APIを介して提供された前記クエリの結果を取得することであって、前記結果は、前記データエンティティの前記第1のインスタンスの少なくとも前記第1の属性値を含む、取得することと、
    (D)前記データエンティティの前記第1のインスタンスの少なくとも前記第1の属性値を含む前記結果の少なくとも幾つかを出力することと
    を含む、少なくとも1つの非一時的コンピュータ可読記憶媒体。
  74. 前記第1及び第2の組の実行可能クエリは、実行可能構造化クエリ言語(SQL)クエリを含む、請求項73に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  75. 前記第1の部分は、複数のデータエンティティの各々の1つ又は複数のインスタンスを識別するための情報を含み、前記複数のデータエンティティは、前記データエンティティを含み、
    前記第1の組の実行可能クエリを生成することは、前記複数のデータエンティティのそれぞれの特定のデータエンティティについて、前記少なくとも1つのデータストアに記憶された前記データエンティティのインスタンスを識別するための各実行可能クエリを生成することを含む、請求項73又は74に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  76. 前記少なくとも1つの属性は、前記データエンティティの複数の属性を含み、
    前記第2の組の実行可能クエリを生成することは、前記複数の属性の少なくとも幾つかのそれぞれの特定の属性について、前記第1の組の実行可能クエリを使用して識別された前記データエンティティのインスタンスの前記特定の属性の値を取得するための各実行可能クエリを生成することを含む、請求項73~75のいずれか一項に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  77. 前記複数の属性は、複数の動的属性を含み、
    前記第2の組の実行可能クエリを生成することは、
    前記複数の動的属性を動的属性のグループにグループ化することであって、前記グループの各々は、前記複数の動的属性の少なくとも1つを有する、グループ化することと、
    前記複数の動的属性のグループの各々について、前記データエンティティの前記インスタンスの前記グループ内の属性の値を取得するための各実行可能クエリを生成することと
    を含む、請求項76に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  78. 前記複数の動的属性をグループ化することは、前記動的属性のタイプに基づいて実行される、請求項77に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  79. 前記複数の動的属性をグループ化することは、動的属性が前記少なくとも1つのデータストア内の同じテーブルに記憶されているか否かに基づいて実行される、請求項77又は78に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  80. 前記複数の動的属性をグループ化することは、動的属性がその値を共通継承パスに沿って継承するか否かに基づいて実行される、請求項77~79のいずれか一項に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  81. 前記複数の実行可能クエリを実行することは、
    前記第1の組の実行可能クエリを実行して、前記データエンティティの少なくとも前記第1のインスタンスを識別する情報を取得することと、
    前記第1の組の実行可能クエリを実行した後、
    前記データエンティティの少なくとも前記第1のインスタンスを識別する前記情報を使用して、前記第2の組の実行可能クエリを実行することと
    を含む、請求項73~80のいずれか一項に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  82. 前記第2の組の実行可能クエリを生成することは、前記第1の組の実行可能クエリを実行した後に実行される、請求項81に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  83. 前記第2の組の実行可能クエリを生成することは、前記第1の組の実行可能クエリを実行する前に実行される、請求項81に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  84. 前記少なくとも1つの属性は、前記データエンティティの複数の動的属性のグループを含み、
    前記第2の組の実行可能クエリは、前記複数の動的属性のグループにそれぞれ対応する複数の実行可能クエリを含み、
    前記第2の組の実行可能クエリを実行することは、前記複数の実行可能クエリの各々を実行して、それぞれの複数の動的属性値結果を取得することを含む、請求項81~83のいずれか一項に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  85. 前記第2の組の実行可能クエリを実行した後、前記複数の動的値属性結果を結合して、前記クエリの前記結果を取得することを更に含む、請求項84に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  86. 前記クエリの前記第2の部分は、インラインビューを含み、
    前記第2の組の実行可能クエリを生成することは、前記インラインビューで指定された情報を使用して実行可能クエリを生成することを含む、請求項73~85のいずれか一項に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  87. 前記インラインビューは、テーブルクエリを含む、請求項86に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  88. 前記テーブルクエリは、集計機能を実行するためのものである、請求項87に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  89. 前記インラインビューは、内部及び外部結合キーを指定する、請求項86に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  90. 前記データエンティティの前記少なくとも1つの属性は、少なくとも1つの静的属性及び少なくとも1つの動的属性を含む、請求項73~89のいずれか一項に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  91. 前記データエンティティの前記少なくとも1つの属性は、第1の動的属性であって、その値を第2のデータエンティティの属性から継承するように構成された第1の動的属性を含む、請求項73~90のいずれか一項に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  92. 前記クエリの前記第2の部分は、前記少なくとも1つの属性を含む属性の階層を示す、請求項73~91のいずれか一項に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  93. 前記クエリの前記第2の部分は、入れ子を使用して前記属性の階層の少なくとも一部分を示す、請求項92に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  94. 前記クエリの前記第2の部分は、再帰を使用して前記属性の階層の少なくとも一部分を示す、請求項92に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  95. 前記結果の少なくとも幾つかを出力することは、
    前記属性の階層に対応する階層形式で前記結果の前記少なくとも幾つかをフォーマットすることと、
    前記結果の前記少なくとも幾つかを前記階層形式で出力することと
    を含む、請求項92に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  96. 前記結果の前記少なくとも幾つかを出力することは、階層形式で前記結果の前記少なくとも幾つかを出力することを含む、請求項73~95のいずれか一項に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  97. 前記結果の前記少なくとも幾つかを出力することは、非表形式で前記結果を出力することを含む、請求項73~96のいずれか一項に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  98. 前記クエリの前記第1の部分は、前記第1の部分における前記情報を、前記データ処理システムによって管理される情報で増補する一連の変換を通して変換されて、前記少なくとも1つのデータストアに対して実行されるように構成される前記第1の組の実行可能クエリを生成し、
    前記クエリの前記第2の部分は、前記第2の部分における前記情報を、前記データ処理システムによって管理される情報で増補する一連の変換を通して変換されて、前記少なくとも1つのデータストアに対して実行されるように構成される前記第2の組の実行可能クエリを生成する、請求項73~97のいずれか一項に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  99. 前記第1の組の実行可能クエリを生成することは、第1の実行可能クエリを、少なくとも部分的に、
    前記クエリの前記第1の部分を使用して中間クエリ表現を生成することと、
    一意の識別子情報、動的属性参照情報、ビュータイプ情報及び/又は許可情報を使用して前記中間クエリ表現を増補して、増補された中間クエリ表現を取得することと、
    前記増補された中間クエリ表現を使用して前記第1の実行可能クエリを生成することと
    によって生成することを含む、請求項73~98のいずれか一項に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  100. 前記中間クエリ表現を生成することは、抽象シンタックスツリーを生成することを含む、請求項99に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  101. 前記第2の組の実行可能クエリを生成することは、第2の実行可能クエリを、少なくとも部分的に、
    前記クエリの前記第2の部分を使用して中間クエリ表現を生成することと、
    一意の識別子情報、動的属性参照情報、ビュータイプ情報及び/又は許可情報を使用して前記中間クエリ表現を増補して、増補された中間クエリ表現を取得することと、
    前記増補された中間クエリ表現を使用して前記第2の実行可能クエリを生成することと
    によって生成することを含む、請求項73~100のいずれか一項に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  102. 前記複数の実行可能クエリを実行することは、前記第1の組の実行可能クエリを実行して、複数のデータエンティティインスタンスを識別する情報を取得することを含み、
    前記第2の組の1つ又は複数の実行可能クエリを生成することは、前記クエリの前記第2の部分及び前記複数のデータエンティティインスタンスを識別する前記情報を使用して実行される、請求項73~101のいずれか一項に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  103. 前記少なくとも1つの属性は、複数の属性を含み、前記複数の属性の各属性は、同じ他のデータエンティティインスタンスの1つ又は複数の属性からその値を継承するように構成され、前記方法は、
    前記データ処理システムにより、前記複数の属性を単一のグループにグループ化することと、
    前記単一のグループのための単一の実行可能クエリを生成することと、
    前記データ処理システムにより、前記単一の実行可能クエリを実行して、前記データ処理システムに前記複数の属性の属性値を取得させることと
    を更に含む、請求項73~102のいずれか一項に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  104. 前記少なくとも1つの属性は、複数の属性を含み、前記複数の属性の各属性は、別のデータエンティティインスタンスの1つ又は複数の属性からその値を継承するように構成され、前記方法は、
    前記データ処理システムにより、グループ化基準を使用して前記複数の属性を1つ又は複数のグループにグループ化することと、
    前記グループの各々のための別個の実行可能クエリを生成することであって、前記別個の実行可能クエリは、前記データ処理システムによって実行されると、前記データ処理システムに前記それぞれのグループの前記属性の属性値を取得させる、生成することと
    を更に含む、請求項73~103のいずれか一項に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  105. 前記グループ化基準は、前記別個の実行可能クエリの単一のものが、前記グループ化された属性の前記継承された値にアクセスするために使用されるように、前記属性のうち、共通継承パスを共有する属性を単一のグループにグループ化することである、請求項73~104のいずれか一項に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  106. 前記少なくとも1つのデータストアは、複数のデータエンティティインスタンス及び関連する属性値並びに異なるデータエンティティインスタンス間の関係を定義する情報を記憶するように構成され、前記少なくとも1つのデータストアは、前記複数のデータエンティティインスタンスを使用して、前記データ処理システムに通信可能に接続される計算システムの分散ネットワークの分散データベースに記憶されたデータを記述する情報を記憶するように構成される、請求項73~105のいずれか一項に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
  107. 前記少なくとも1つのデータストアは、分散計算システムの分散データベースによって記憶される複数のデータセットの各々について、前記分散計算システムの何らかのシステム部分によって実行されるように構成された複数のソフトウェアアプリケーションの各々又は前記分散計算システムのそれぞれ若しくは複数のシステム部分のために、複数のデータエンティティインスタンスのうちのデータエンティティインスタンスを記憶するように構成される、請求項73~106のいずれか一項に記載の少なくとも1つの非一時的コンピュータ可読記憶媒体。
JP2023534631A 2021-01-31 2022-01-28 データ処理システムによって管理されるデータエンティティにアクセスするためのシステム及び方法 Pending JP2024504556A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202163143895P 2021-01-31 2021-01-31
US63/143,895 2021-01-31
PCT/US2022/014270 WO2022165146A1 (en) 2021-01-31 2022-01-28 Systems and methods for accessing data entities managed by a data processing system

Publications (1)

Publication Number Publication Date
JP2024504556A true JP2024504556A (ja) 2024-02-01

Family

ID=80787415

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023534631A Pending JP2024504556A (ja) 2021-01-31 2022-01-28 データ処理システムによって管理されるデータエンティティにアクセスするためのシステム及び方法

Country Status (9)

Country Link
US (1) US11921710B2 (ja)
EP (1) EP4285236A1 (ja)
JP (1) JP2024504556A (ja)
CN (1) CN116917882A (ja)
AU (1) AU2022214314A1 (ja)
CA (1) CA3206880A1 (ja)
DE (1) DE112022000920T5 (ja)
MX (1) MX2023008984A (ja)
WO (1) WO2022165146A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116541377B (zh) * 2023-04-27 2024-05-14 阿里巴巴(中国)有限公司 任务的物化视图的处理方法、***和电子设备

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US6704743B1 (en) 1999-09-13 2004-03-09 Copernus, Inc. Selective inheritance of object parameters in object-oriented computer environment
US7149733B2 (en) * 2002-07-20 2006-12-12 Microsoft Corporation Translation of object queries involving inheritence
US7716630B2 (en) 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
US7934194B2 (en) 2006-10-17 2011-04-26 The Mathworks, Inc. User-defined hierarchies of user-defined classes of graphical objects in a graphical modeling environment
US20080222129A1 (en) 2007-03-05 2008-09-11 Komatsu Jeffrey G Inheritance of attribute values in relational database queries
US8682936B2 (en) 2010-12-15 2014-03-25 Microsoft Corporation Inherited entity storage model
US10956415B2 (en) * 2016-09-26 2021-03-23 Splunk Inc. Generating a subquery for an external data system using a configuration file
US11599541B2 (en) * 2016-09-26 2023-03-07 Splunk Inc. Determining records generated by a processing task of a query
WO2018089633A1 (en) 2016-11-09 2018-05-17 Ab Initio Technology Llc Systems and methods for determining relationships among data elements
US10496737B1 (en) 2017-01-05 2019-12-03 Massachusetts Mutual Life Insurance Company Systems, devices, and methods for software coding
US20180232403A1 (en) 2017-02-15 2018-08-16 Ca, Inc. Exposing databases via application program interfaces
US11163759B2 (en) * 2017-12-21 2021-11-02 Salesforce.Com, Inc. Predicting entities for database query results
EP3623960A1 (en) * 2018-09-14 2020-03-18 Adarga Limited Method and system for retrieving and displaying data from an entity network database
JP7427677B2 (ja) 2019-01-22 2024-02-05 アビニシオ テクノロジー エルエルシー データ処理システムによって管理されるデータオブジェクトのワークフローを実施するための有限状態機械
US11281662B2 (en) * 2019-04-03 2022-03-22 Unitedhealth Group Incorporated Managing data objects for graph-based data structures
US11256604B2 (en) 2020-01-24 2022-02-22 Splunk Inc. Multiple modes of data collection and analysis in a microservices-based architecture
US11580113B2 (en) * 2020-04-20 2023-02-14 Optum, Inc. Generating proactive audiovisual queries using virtual assistant software applications
US11507444B1 (en) * 2021-06-23 2022-11-22 Dell Products, L.P. Platform framework error handling

Also Published As

Publication number Publication date
EP4285236A1 (en) 2023-12-06
AU2022214314A1 (en) 2023-06-29
WO2022165146A1 (en) 2022-08-04
CN116917882A (zh) 2023-10-20
US20220245140A1 (en) 2022-08-04
CA3206880A1 (en) 2022-08-04
DE112022000920T5 (de) 2024-02-01
US11921710B2 (en) 2024-03-05
MX2023008984A (es) 2023-10-25

Similar Documents

Publication Publication Date Title
US8180758B1 (en) Data management system utilizing predicate logic
Hausenblas et al. Apache drill: interactive ad-hoc analysis at scale
US9684699B2 (en) System to convert semantic layer metadata to support database conversion
US9396284B2 (en) Method and system for implementing efficient updatable relational views over XML data
US20110087708A1 (en) Business object based operational reporting and analysis
US11100173B2 (en) Autolayout of visualizations based on graph data
US11030242B1 (en) Indexing and querying semi-structured documents using a key-value store
US20160070768A1 (en) Extensible surface for consuming information extraction serivices
US11341142B2 (en) Framework and metadata artefacts for updating data artefacts
US20140122523A1 (en) Point-in-time query system
JP5927886B2 (ja) クエリシステム及びコンピュータプログラム
EP4155964A1 (en) Centralized metadata repository with relevancy identifiers
CN115934673A (zh) 用于促进元数据标识和导入的***和方法
JP2024504556A (ja) データ処理システムによって管理されるデータエンティティにアクセスするためのシステム及び方法
US20240232227A9 (en) Data object management using data object clusters
US11971909B2 (en) Data processing system with manipulation of logical dataset groups
Jun et al. Semantics-preserving optimisation of mapping multi-column key constraints for RDB to RDF transformation
Angelis et al. Generating and exploiting semantically enriched, integrated, linked and open museum data
EP4170516A1 (en) Metadata elements with persistent identifiers
US20240256576A1 (en) Data processing system with manipulation of logical dataset groups
CN116868182A (zh) 可操纵逻辑数据集组的数据处理***
JP2024504564A (ja) データエンティティ及び継承を使用してデータ処理システムでデータを管理するための技法
CN116955310A (zh) 数据工件的扩展的传播
CN115905164A (zh) 对数据库工件的扩展的元数据的标识和导入

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230808