JP2016516246A - 個別のデータ値に対する効率よい演算を行うための方法、装置、並びにコンピュータ可読媒体 - Google Patents

個別のデータ値に対する効率よい演算を行うための方法、装置、並びにコンピュータ可読媒体 Download PDF

Info

Publication number
JP2016516246A
JP2016516246A JP2016502660A JP2016502660A JP2016516246A JP 2016516246 A JP2016516246 A JP 2016516246A JP 2016502660 A JP2016502660 A JP 2016502660A JP 2016502660 A JP2016502660 A JP 2016502660A JP 2016516246 A JP2016516246 A JP 2016516246A
Authority
JP
Japan
Prior art keywords
entity
global
partition
ids
domain
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.)
Granted
Application number
JP2016502660A
Other languages
English (en)
Other versions
JP2016516246A5 (ja
JP6192800B2 (ja
Inventor
リチャード グロンディン、
リチャード グロンディン、
ユージェニー ファデエイチェフ、
ユージェニー ファデエイチェフ、
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Informatica LLC
Original Assignee
Informatica LLC
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 Informatica LLC filed Critical Informatica LLC
Publication of JP2016516246A publication Critical patent/JP2016516246A/ja
Publication of JP2016516246A5 publication Critical patent/JP2016516246A5/ja
Application granted granted Critical
Publication of JP6192800B2 publication Critical patent/JP6192800B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/221Column-oriented storage; Management thereof
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • G06F16/24556Aggregation; Duplicate elimination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/84Mapping; Conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization

Landscapes

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

Abstract

個別のデータ値について効率よく演算を行うための装置、コンピュータ可読媒体、およびコンピュータ実行方法は、対応するドメイン中の各固有データ値を固有のエンティティIDにマッピングし、カラム中の前記データ値の各々を前記対応するエンティティIDと置き換えて、一または複数のエンティティIDを含むトークン化されたデータのカラムを生成することにより、トークン化されたデータカラムをテーブルに保存する工程と、データカラムを宛先とした照会を受領する工程であって、照会は、照会に応答して検索されたデータをグループ化するための一または複数のグループセットを定義する工程と、各グループセットについてエンティティマップベクトルを生成する工程であって、各エンティティマップベクトルの長さはドメインのエンティティIDの総数と等しく、各エンティティマップベクトル中の各ビットの値はグループセットにおける異なるエンティティIDの有無を示す工程を含む。【選択図】図7A

Description

関連出願データ
本願は、2013年3月15日出願の米国特許出願第13/835,590号に対して優先権を主張するものであり、この参照によりその全内容が本明細書に組み込まれるものである。
企業は頻繁にデータをデータウェアハウスに保存する。かかるデータウェアハウスは大量のデータを多数のデータベースおよびデータベーステーブルに分散させて有することが多い。したがって、このような多数のテーブルやデータベースからデータをまとめるためには、データ集計技術を利用しなければならない。
データウェアハウスの集計プロセスの性能を改善するために、下位のデータのサマリを保存する下位集計(Low Level Aggregate、LLA)テーブルがよく使用される。多数のパーティションに保存される分散データベースの場合、各パーティションにLLAテーブルが利用でき、集計プロセスは各LLAテーブルからのデータをくみあわせてデータベース全体についての集計されたテーブルを生成することができる。このような集計プロセスは、ロールアッププロセスとして知られ、ソースデータからではなく下位のサマリ(LLAテーブル)から上位のサマリが生成できるので有用である。
ロールアッププロセスは、超並列処理(MPP)データベースアーキテクチャにおいて多数のデータパーティションに対して集計クエリを実行するために、つまりパーティション化されたテーブルについて照会を行うために利用できる。
ロールアッププロセス中に多数のテーブルからデータを正確に集計するためには、集計が行われている根底にある関数が加法でなければならない。例えば、第一のテーブルおよび第二のテーブル両方ともに出費額に対応するカラムがあり、ユーザが両方のテーブルの出費の総額の合計を計算しようとすると、第一テーブルの出費額の合計と、第二テーブルの出費額の合計とを加算で集計し、正確な総額を出すことができる。しかしながら、ロールアッププロセスでユーザが集計しようとする関数すべてが、加法関数というわけではない。
図1A〜1Gは、客の来店記録が入っている見本データベーステーブルと、見本データベーステーブルから生成される下位集計テーブルの例を示す。 図2A〜2Bは、開示された実施形態にかかる、個別の(distinct)データ値について効率良く演算を行う方法のフローチャートである。 図3A〜3Cは、開示された実施形態にかかる、テーブル中のデータの一または複数のカラムをトークン化する工程を示すテーブルである。 図4A〜4Cは、トークン化されたテーブルから生成されたLLAテーブルと、LLAテーブルから生成された二つの見本上位集計テーブルとを示す。 図5Aは、開示された実施形態にかかる、エンティティマップベクトルデータ構造を利用するトークン化されたテーブルから生成されたLLAテーブルを示す。 図5Bは、開示された実施形態にかかる、エンティティマップベクトル中のビットの各々に値を割り当てる方法を示す。 図5Cは、開示された実施形態にかかる、ドメインの語彙順配列の固有データ値のテーブルを示す。 図5Dは、開示された実施形態にかかる、エンティティマップベクトル中のビットの各々に値を割り当てる方法を示す。 図6Aは、開示された実施形態にかかる、図5AのLLAテーブルに保存されたエンティティマップベクトル上でロールアッププロセスを行う時の工程を示す。 図6Bは、図6Aに示されるロールアッププロセスの結果である上位テーブルを示す。 図7A〜7Bは、開示された実施形態にかかる、多数のパーティションにまたがってドメインを結合することにより分散データベース中の個別のデータ値について演算を効率良く行うためのフローチャートを示す。 図8A〜8Dは、開示された実施形態にかかる、パーティションに特定されたエンティティIDの見本セットをグローバルエンティティIDへ変換するために必要な工程のそれぞれを示す。 図9は、開示された実施形態にかかる、多数のパーティションにまたがってグローバルエンティティマップベクトルを保存するためのデータキューブを示す。 図10は、開示された実施形態にかかる、経時的に割り当てられたエンティティIDを使用したデータベースウェアハウス更新演算を示す。 図11Aは、開示された実施形態にかかる、ドメイン同期データ構造と、プロセスフローとを示す。 図11Bは、マッピングテーブルを使用してローカルエンティティマップベクトルをグローバルエンティティマップベクトルにマッピングする時のマッピングを示す。 図12は、開示された実施形態にかかる、個別のデータ値について演算を効率良く行うための方法を実施するために使用できるコンピューティング環境の一例を示す。
方法、装置、およびコンピュータ可読媒体が実施例および実施形態として本明細書に記載されているが、個別のデータ値に対する効率よい演算を行うための方法、装置、およびコンピュータ可読媒体が、実施形態または図面に記載されたものに限定されないことを、当業者は認識する。図面および明細書が開示された特定の形態に限定されることを意図したものではないことを理解されたい。むしろ、添付の請求項の精神及び範囲から逸脱しないすべての変形、均等物、および代替物を包含することを意図している。本明細書中に使用された見出しはいずれも、整理するという目的のみのために使用されており、本明細書または請求項の範囲を制限することを企図していない。本明細書で使用されている通り、「〜することができる(can)」という表現は、必須の意味(すなわち、「〜でなければならない(must)」という意味)ではなく、許容の意味(すなわち、可能性があるという意味)で用いられている。同様に、「含む」(「include」「including」、および「includes」)という用語は、「含む」ことを意味しており、それに限定されるという意味ではない。
図1Aのテーブルを参照し、加法関数用のロールアッププロセスのいくつかの例を以下に説明する。図1Aは、客の来店記録が入っている見本データベーステーブルを示す。このテーブルは、客の名前と、店舗IDと、来店中の出費額とのカラムを有する。
本明細書全体で用いられる照会言語は、構造化照会言語(SQL)であるが、いかなるデータベース照会言語も、本発明の範囲から逸脱することなく使用でき、その例としては、コンテクスチュアル照会言語(CQL)、XQuery、YQL、Datalog、OQL、RDQL、多次元式(MDX)など多数の言語が挙げられることが理解される。
図1Bには、各店舗についての来店数のLLAテーブルが示されている。「来店数」カラムは、店舗のそれぞれについての記録数をカウントすることにより生成され、店舗1には来店数3、店舗2には来店数4という結果になっている。全店舗の総来店数を特定するためにこのテーブルを使用してロールアッププロセスを実行しようとすると、関数Sum(来店数)でデータがロールアップでき、総数7という結果になる。この場合、来店の総数を特定するために元のテーブルへ戻る必要が無い。
同様に、図1Cのテーブルは、店舗それぞれの総出費額のLLAテーブルである。この出費額は、各店舗用の元のテーブルの「出費額」カラムの値を合計することにより特定される。ユーザが全店舗の総出費額を特定するためにこのテーブルをロールアップしようとすれば、図1CのLLAテーブル上の関数Sum(出費額)を使用して、107という正確な総額に至ることができる。
ロールアッププロセス中のLLAテーブルの集計は、単純な合計以外の関数についても行うことができる。図1Dは、各店舗における来店ごとの平均出費額のLLAテーブルを示す。この額は、各店舗についての元のテーブルの「出費額」カラムの値を平均することによって特定される。さらに、LLAテーブルには、前述のように各店舗への来店数のカウントが入っている。ユーザが、全店舗での平均出費額を特定するためにこのテーブルをロールアップしたいと思えば、下記の関数を使用することができる。
Figure 2016516246
繰り返しになるが、ロールアッププロセスは、元のテーブルを必要とせず、かつ、LLAテーブルのみを使用することによって行える。
図1Eおよび1Fは、それぞれ、各店舗における最小出費額が入っているLLAテーブルと、各店舗における最大出費額とが入っているLLAテーブルとを示す。いずれかの店舗での最小の出費額を特定するために図1Eのテーブルをロールアップするためには、ユーザはLLAテーブルについて関数Min(最小出費額)を使用でき、正確な答えである5に至ることができる。同様に、いずれかの店舗での最大の出費額を特定するために図1Fのテーブルをロールアップするためには,ユーザはLLAテーブルについて関数Max(最大出費額) を使用でき、正確な答えである31に至ることができる。
図1Gを参照すると、各店舗を訪れたことのある個別の(distinct)客の数のカウントが入っているLLAテーブルが示されている。これは、店舗IDでグループ分けされたCount(distinct<客の名前>)関数を使用して行うことができる。したがって、この場合、3人の個別の客(Bill、George、および Larry) が店舗1に来店し、4人の個別の客(Bill、George、Max、および Larry)が店舗2に来店していた。
ユーザが図1GのLLAテーブルをロールアップしたいなら、根底にある主なテーブルである図1Aのテーブルにアクセスしないで店舗1または店舗2によく来店する個別の客の総数を正しく特定する方法は無い。LLAテーブルの個別の客のカラム上で機能するcount-distinct関数は、2つの個別の値の総数を返信するだけであり、合計として7を返すだろうが、両方の店舗を訪れた個別の客の正確な数は、4人である。同様に、もしLLAテーブルに各々の店舗で出費された個別の出費ドル額の合計が入っており、ユーザが、全ての店舗で出費された個別のドル額のすべての合計を計算したければ、元のテーブルにアクセスしなければならないだろう。さもなければ、店舗1で出費された11ドルと店舗2で出費された11ドルが二重に計上されてしまうだろうからである。さらに、もしLLAテーブルに各店舗で出費された個別の出費額すべてについての平均が入っていれば、両店舗での個別の出費額すべてについての平均をロールアップで特定しようとしてもうまくいかず、根底にある主なテーブルにアクセスしなければならないだろう。
count<distinct>のような非加法コマンドを含んでいる照会は、LLAテーブルのロールアップ演算を使用することが出来ず、その結果、計算コストが非常に高くなる。なぜなら、これらコマンドを、根底にあるデータについて実行する必要があるからである。パーティション化データベースか、または分散データベースにおいては、正確な値を検索するためには根底にあるデータが集計されているかまたはパーティション間で交換されなければならないので、このコストは膨れ上がる。例えば、もしカラムXYZが二つのパーティションに散らばっており、ユーザがカラムXYZの個別の値の数を特定したいなら、第一パーティション上のカラムXYZの値のすべてを、第二パーティションのカラムXYZの値のすべてと共に、何らかの方法で一緒に管理して、個別の値の数を特定しなければならない。
出願人は、エンティティマップベクトル(EMV)と称される方法と、関連したデータ構造とを発見した。これは、ユーザが非加法集計関数を加法として使用できるようにし、それによって、以前はLLAテーブルよりも下位であるテーブルにある、根底にあるデータへのアクセスや処理を必要とした関数について、LLAテーブル上でロールアッププロセスが実行可能になった。出願人の技術によってさらに、パーティション化されたデータベースのノード間で交換されるデータの量が大幅に削減できるようになった。これは、各ノードについてのLLAテーブルが、非加法集計関数についても、加法集計できるからである。
図2Aは、開示された実施形態にかかる、EMVを生成する方法のフローチャートを示す。ステップ201で、データベースのテーブル中のデータのトークン化されたカラムが、EMVを生成する前に保存される。このトークン化プロセスを、図3A−3Cを参照して説明する。さらに、図2Bに示され、以下に記載されるように、EMVは、データのトークン化されたカラムを使用することなく、あるドメインでの固有データ値の語彙順に基づいて生成することができる。
図3Aは、トークン化前の顧客取引テーブル300を示す。このテーブルは、タプルID(TupleID)301と、週(Week)302、店舗ID(SstoreID)303、客ID(CustID)304、製品ID(productID)305、量(Qty)306、および出費額(Spent)307のデータカラムとを備える。データカラムの各々は、関連付けられたドメインに対応させてもよい。例えば、客IDを備えたドメインは、図示されたテーブルの客IDカラムに入力するために使用できるが、同じドメインを、客のアドレスと共に客IDを一覧にした別のテーブルに入力するために使用できる。もちろん、ドメインは、同じテーブルの複数のカラムに入力するためにも使用できる。例えば、都市名のドメインは、起点都市と目的地都市とに対応するテーブルのカラムに入力するために使用できる。したがって、週302のカラムはドメインD_Weekに対応でき、店舗ID303はドメインD_StoreIdに対応でき、客ID304はドメインD_CustIdに対応でき、製品ID305はドメインD_ProductIdに対応でき、量306はドメインD_Qtyに対応でき、出費額307はドメインD_Spentに対応できる。
各データカラムのデータ値をトークン化するために、各ドメインに生じる固有データ値(異なるカラムに対応する)は、識別されて固有のトークン値にマッピングされなければならない。固有データ値をテーブル中の各ドメインの固有のトークン値にマッピングするが、図3Bのマッピングテーブル310はこのマッピングを示している。各ドメインの各固有データ値は、エンティティID、すなわちEIDと称される、そのドメイン用の固有のトークンにマッピングされる。したがって、例えば、D_Week312は3つの固有データ値を備え、したがってこれら3つの固有データ値が3つの対応する固有のEIDにマッピングされる。同様に、D_StoreID313もまた3つの固有データ値と3つのEIDとを備え、D_CustId314は4つの固有データ値と4つのEIDとを備え、D_ProductIdは4つの固有データ値と4つのEIDとを備え、D_Qtyは5つの固有データ値と5つのEIDとを備え、D_Spentは6個の固有データ値と6個のEIDとを備える。
ドメイン中の固有データ値を対応するEIDにマッピングするために用いられるマッピングテーブルは、ルックアップ辞書として保存できるので、関数および関連付けられた処理は、必要であればEIDを使用してデータ値を検索できる。さらに、EIDに対する固有データ値のマッピングは、固有データ値の語彙順で生じるものとして示されており、これは割り当てプロセスや、その後のデータの保存や検索を簡便にするからであるが、EIDの固有データ値への割り当ては固有データ値のいかなる順序で生じてもよい。例えば、第一データ値が第二のデータ値より以前に遭遇すれば下位のEIDを有するよう、経時的な順序でデータ値に割り当てられるようにEIDを割り当ててもよい。
図3Cは、トークン化後の顧客取引テーブル320を示す。マッピングテーブル310からのEIDは、データのカラムの各々においてデータ値に置き換えられている。しかしながら、この高度な暗号化構造においてすら、テーブル320を介して生成されたLLAテーブルには、非加法の(distinctタイプの)集計関数を含むロールアッププロセスを実行するのに適切なフォーマットでデータが保存されることはない。
例えば、LLAテーブルは、週と、店舗IDと、各週に各店舗に来店した個別の客とを一覧にした取引テーブル(「Trx」)320に基づいて、下記の定義を用いて、生成できる。
Create Table LLA_TRX as
Select week,
StoreId,
Count(distinct CustId) as CD_CustId,
From Trx
Group By week, StoreId;
この定義は、各週に各店舗に来店した個別の客に対応する値を、カラムCD_CustIdに割り当てる。さらに、「group-by」コマンドは、週-店舗IDのペアに対応するグループセットを作る。例えば、グループセット1(週1、店舗1)、グループセット2(週1、店舗2)などである。グループセットの構成や数はどんなものでもよい。例えば、グループセットは、一つのカラム、または二つ以上のカラムに基づいていてもよい。
図4Aには、結果として得られたLLA_TRXテーブル400が示されている。このテーブルは、グループセットごとの個別の客の数を正確に表している。例えば、テーブルは、週1に店舗1を訪れた個別の客の数を2であると、または、週2に店舗1を訪れた個別の客の数を3であると、正確に一覧にしている。
もしユーザが各週についてテーブルLLA_TRXをロールアップして各週に店舗のいずれかを訪れた個別の客の数を一覧にしようとしたなら、各グループセットについて個別の客の数の正確なカウントを作ることはできないであろう。この場合のグループセットとは、グループ1(週1)、グループ2(週2)、などである。例えば、上位LLAテーブルを作り出すために下記の定義が用いられたとする。
Create Table LLA_TRX_WEEK as
Select Week,
Count(distinct CD_CustId) as CD_CD_CustId,
From LLA_Trx
Group By Week;
図4Bのテーブル410に図示される、結果として得られたテーブルの一覧では、各週に店舗のいずれかに来店した個別の客の数が不正確となるだろう。同様に、テーブルLLA_TRXを集計するためにSUM関数が用いられるとする。
Create Table LLA_TRX_WEEK as
Select Week,
Sum(distinct CD_CustId) as Sum_CD_CustId,
From LLA_Trx
Group By Week;
すると、図4Cに図示される、結果として得られたテーブルの一覧でもまた、各週に店舗のいずれかに来店した個別の客の数が不正確になるだろう。例えば、週2の個別の客の数は、図3Cのテーブル320に基づくと4であり(客ID1,2,3および4)、図4Bのテーブル410の一覧では2であり、図4Cのテーブル420の一覧では5である。
前述したように、これは、個別の値の集計が非加法であるからである。週ごとの個別の客の数について正確な値を特定するためには、非加法集計の照会に対してはLLA_TRXテーブルを無効にし、元のデータテーブルへ戻る必要がある。
開示された実施形態にしたがって生成されたEMVデータ構造は、各グループセットの個別の値を、集計できるようなやり方で効率良く保存することによって、この問題を解決する。図2Aにもどり、ステップ202では、一または複数のグループセットを特定し、EMVデータ構造を生成するために使用される新たな関数やその他の同様のコマンドを備えた、特別な照会が受領できる。ステップ203では、演算システムが、一または複数のエンティティマップベクトルを生成できる。もちろん、ステップ201、202、および203は、異なる順序で実行できる。例えば、照会をまず受領し(ステップ202)、その後、トークン化されたデータカラムが保存され(ステップ201)、そして、一または複数のエンティティマップベクトルが生成できる(ステップ203)。
ステップ202〜203を容易にするために、値ではなくEMVを各グループセットについて作成するよう演算システムに指示する、新たなSQL関数count(Additive_distinct<カラムの名前>) を定義することができる。EMVは、異なるエンティティに対して各ビットがマッピングされたビットマップベクトルでありうる。EMVのグループセット中に個別の値に関連する情報を保存することにより、エンティティと称される各個別の値をビットマップベクトルの一つのビットにマッピングすることができる。したがって、図3Cのトークン化された取引テーブル(Trx)320の上記の例を使用して、LLAテーブルLLA_TRXを生成するために下記の定義を用いることができる。
Create Table LLA_TRX as
Select Week,
StoreId,
Count(Additive_distinct CustId) as CD_CustId,
From Trx
Group By Week, StoreId;
図5Aは、前記の結果得られるLLA_TRXテーブル500を示す。LLA_TRXテーブルのように、各グループセットに対応しているタプルID501、週502、および店舗ID503が保存される。ただし、個別の客のカウントを数字で保存するのではなく、各ビットが異なるEIDを参照し、ビットの値がグループセット中のEIDの有無を示すEMVに、各グループセットについての個別の客が保存される。
もちろん、Additive_distinctのようなSQL拡張子が、各グループセットについてEMVを作成するよう演算システムに指示する必要が無い。例えば、データベースエンジンが、Count (distinct<カラムの名前>)などの個別のデータ値の集計関数を含むカラムを備えたテーブルの作成を検出し、個別のデータ値のカウントを保存するためにEMVを自動的に造ることができる。これによって、既存のフロントエンドツールでEMV構造が利用できるようにする。
グループセット(週1、店舗ID2)に対応する第二のEMV513について、以下にEMVの構造を記載する。図5Bを参照すると、空のEMV505が示されている。先頭文字506の役割は、EMVにビットマップベクトルであると標識をつけることのみであり、それに適していればいかなる文字でもよく、また、省略することもできる。EMV505の長さ寸法は、ビットスロットの数であり、先頭文字を含まない。EMVの長さはEMVを生成するために用いられるカラムのドメイン中のEIDの総数に等しい。換言すれば、EMVの長さは、EMVを生成するために用いられているドメイン中の固有の値の数に等しい。したがって、例えば、図5Aのテーブル500用にEMVを生成するために用いられたドメインは、D_CustIdドメインであり、図3Bより、D_CustId ドメインは4つのEIDを有していることがわかる。したがってそのドメインについてのEMVの長さは、4という長さであり、この4はビットスロットに対応する。
再度図5Bを参照すると、ビットスロットの各々は、異なるEIDに、EIDが割り当てられる順序で対応している。したがって、第一スロットはEID=1に対応し、第二スロットはEID=2に対応するなどである。EMV中のビットスロットの各々のビットの値を特定するために、EMVに対応するグループセットを調べ、EID値を含むかどうかを確認する。したがって、EMV513の第一ビットについては、グループセット(週1、店舗2)がCustId=1を含むかどうか、ステップ507で判断される。図3Cのテーブル320から、週1の間に店舗2にCustId=1が現れていないことがわかる。したがって、第一ビットの値は0である。
同じやり方で、EMV513の第二ビットについては、グループセット(週1、店舗2)がCustId=2を含むかどうかステップ508で判断される。CustId=2 も週1の間に店舗2に現れていないので、第二ビットの値もゼロである。EMV513の第三ビットについては、グループセット(週1、店舗2)がCustId=3を含むかどうかステップ509で判断される。テーブル320から、週1の間に店舗2にCustId=3が2度現れていることがわかる。したがって、第三ビットの値は1に等しい。EMV513中の第四ビットについては、グループセット(週1、店舗2)がCustId=4を含むかどうかステップ510で判断される。CustId=4もまた週1の間に店舗2に現れているので、第四ビットも同様に1に設定される。その結果得られたEMV513は、店舗2に週1の間に来店した個別の客を、加法集計を可能にするフォーマットで、把握している。
もしユーザがグループセットごとの個別の客の数を特定したければ、そのグループセットについてEMV中の各ビットを合計しさえすればよい。例えば、グループセット(週1、店舗1)についてのEMVはOB1100であり、個別の客の総数は1+1+0+0=2である。グループセット(週2、店舗1)についてのEMVはOB1101であるので、そのグループセットの個別の客の総数は1+1+0+1=3である。
図2Bを参照し、以下にトークン化されていないデータカラムからEMVを生成する方法を記載する。ステップ210では、図2Aのステップ202と同様に、一または複数のグループセットを特定し、新たな拡張子またはその他の同様のコマンドを含み、データベースエンジンにEMVデータ構造を生成するよう指示する、照会が受領される。ステップ211で、データのカラムに対応するドメイン中の固有データ値の語彙順に基づいて、グループセットの各々についてエンティティマップベクトルが生成される。図5Cおよび5Dは、図3Aのトークン化されていないテーブル300中のグループセット(週201001、店舗1002)について生成されたEMVに関して、このプロセスをより詳細に示す。テーブル520は、客IDドメインの、語彙順に配置された固有データ値を示す。図5Dに示されたEMV生成プロセスは、EID生成のステップをバイパスするためにこの語彙順序を使用する。空のEMV525に示されるように、生成されたEMVの各々の長さは、ドメイン中の固有データ値の数に等しい。この場合、客IDドメインには4つの固有データ値があるので、あるグループセットについて生成されたEMVの長さは4となるであろう。各EMV中の各ビットの位置は、固有データ値が語彙順に配列された一覧520中の、対応する固有データ値の語彙順位置に対応し、EMV中の各ビットの値はグループセット中の対応する固有データ値の有無を示す。したがって、EMV533中の第一ビットについては、グループセット(週201001、店舗1002)が語彙順で最も若い位置の客IDを含むかどうかが判断される。この客IDは165であり、図3Aのテーブル300から、この客IDがグループセット(週201001、店舗1002)には出現しないことがわかるので、ビットはゼロとなる。同様に、EMV533の第二ビットは語彙順で二番目に若い位置の固有データ値、167を参照し、これもグループセットには出現しないので、このビットはゼロとなる。EMV533の第三ビットは語彙順で酸番目に若い位置の固有データ値、268を参照し、図3Aのテーブル300から、この値はグループセット(週201001、店舗1002)に出現しているとわかるので、第三ビットは1に設定される。同様に、第四ビットに対応する値、301、もグループセットに出現するので、第四ビットは1に設定される。この結果、図5Bに生成されたものと同じEMVとなるが、これはトークン化されていないデータカラムから生成できる。
エンティティマップベクトルを利用しないLLAテーブルの前記の例とは異なり、EMVを備えたLLAテーブルは、ロールアッププロセス中に正確に集計できる。例えば、いずれかの店舗に来店した個別の客の数についての上位テーブルを、下記の定義を用いて、LLAテーブルから週でグループ化して生成することができる。
Create Table LLA_TRX_WEEK as
Select Week,
Count(Distinct CD_CustId) as EMV_CD_CustId,
From LLA_Trx
Group By Week;
図6Aを参照すると、店舗にまたがるビットベクトルを集計し、週でグループ化するプロセスが示されている。ステップ601A、601B、および601Cにおいて、集計されなければならないグループセットの各々が、各週について判断される。例えば、週1について合成すべきグループセットは、週1、店舗1と、週1、店舗2のグループセットに対応する客IDである。週2について合成すべきグループセットは、週2、店舗1と、週2、店舗2と、週2、店舗3のグループセットに対応する客IDである。週3について合成すべきグループセットは、週3、店舗1と、週3、店舗3のグループセットに対応する客IDである。
ステップ602A、602B、および602Cを参照すると、各週について合成すべきグループセットの各々のEMVが、ブールOR演算(Boolean OR)を使用して集計される。したがって、例えば、もし二つのEMVをブールOR演算で合成し、第一EMVのみが第一位置に「1」を有していれば、その結果得られるEMVは「1」を第一位置に有する。
その結果得られた合成EMVがステップ603A、603B、および603Cに示されている。各EMVは、異なる週のグループセットに対応する。前述のように、各週の個別の客のカウントは、EMVの各々のビットをすべて合計することにより特定できる。
図6Bは、その結果得られたテーブル600を示し、テーブル600は図6Aの合成EMVに基づいて、各グループセットについてのタプルID601、週番号602、および個別の客のカウント603を備えている。図3Cの元のテーブル320を参照すると、テーブル600の個別の客のカウント603は、正確に示すthat4人の個別の客(1,2,3、および4)が週1にいずれかの店舗に来店し、4人の個別の客(1,2,3、および4)が週2にいずれかの店舗に来店し、2人の個別の客(1および2)が週3にいずれかの店舗に来店したことが、わかる。
もちろん、非加法集計関数の集計は、グループセット中の個別の要素の数をカウントすることに限定されない。ユーザが、あるグループセット中の個別の値のセットを合計したい、またはグループセット中の個別の値のセットの平均値を求めたいなら、ルックアップ辞書中のEMVの各ビットに対応する固有データ値を探索し、加算して合計したり、またはもしビットが「1」であれば平均値に加えたりすることによって、達成できる。さらに、カスタム化計算やメトリクスなど、他の目的のためにエンティティマップベクトル中のビットに対応する固有データ値の各々を検索するために、ルックアップ辞書を用いることができる。エンティティマップベクトルが、固有データ値の語彙順の配列に基づいて、トークン化されていないデータ値から生成される状況では、同じ語彙順配列関係を、各ビットに対応する固有データ値を検索するために用いることができる。例えば、EMVの第一ビットが「1」なら、最も若い語彙順位置の固有データ値を、セット中のデータ値を含む、合計、平均、または他の計算に組み入れることができる。同様に、EMVの第二ビットが「0」なら、二番目に若い語彙順位置に対応する固有データ値は、合計、平均、または他の計算から除外することができる。
パーティション化されたデータベース中の照会処理およびパーティション化されたデータベース中のデータの表現に基づいて、EMVのプロセスの大要を以下に記載する。取引テーブルを含む3つのパーティションデータベースを仮定すると、そのテーブルの論理ビューは、Viewとして下記のようにあらわされる。
Create View V1 as
Select * from Partition1.TRX
Union All
Select * from Partition2.TRX
Union All
Select * from Partition3.TRX
テーブルのパーティション化は、要求の効率的な分散並列処理を可能にするが、非加法集計関数は例外である。例えば、図3Aのテーブル300と同様のTRXという名の取引テーブルの元の照会が、「Select Week, Sum(Spent) from TRX group by Week(週を選択、週によるTRXグループからの(出費額)を合計)」であるが、テーブルが3つのパーティションに分散されていれば、照会は、分散された要求に変形することができる。
Select Week, Sum(P_Spent) from (
Select Week, Sum(Spent) as P_Spent from Partition1.TRX group by Week
Union All
Select Week, Sum(Spent) as P_Spent from Partition2.TRX group by Week
Union All
Select Week, Sum(Spent) as P_Spent from Partition3.TRX group by Week
) T
Group By Week
その分散された要求については、「Select Week, Sum(Spent) as P_Spent from Partition1.TRX group by Week(週を選択、週によるパーティション1.TRXグループからのP_Spentとして(出費額)を合計)」のような、各照会セグメントが独立して実行でき、その中間結果セットをまとめて付加して最後に再処理し、最終的な照会結果を作成できる。
「Select Week, Count(Distinct CustId) from TRX group by Week(週を選択、週によるTRXグループからの(個別の客ID)をカウント)」のような非加法集計関数要求の場合、この要求は分散された要求に変形できる。
Select Week, Count(Distinct CustId) from (
Select Week, CustId from Partition1.TRX group by Week, CustId
Union All
Select Week, CustId from Partition2.TRX group by Week, CustId
Union All
Select Week, CustId from Partition3.Trx group by Week, CustId
) T
Group By Week
分散された要求はこの場合、各パーティションから固有のCustIdの一覧を保存するが、膨大なデータをパーティションの各々の間で交換し、その後処理するよう命ずることがありうる。例えば、第一週についての第一パーティション中のCustId(客ID)の一覧を、第一週についての第二パーティション中のCustId(客ID)の一覧と比較し、重複が無いか判断しなければならないだろう。その結果、かかる分散された要求は、要求実行プロセスに支障をきたす。
パーティション間で交換されるデータ量を削減し性能を向上させるために、非加法集計関数を加法関数に変形する方法を一または複数のパーティション化されたデータベースに適用することができる。例えば、元の照会「Select Week, Count(Distinct CustId) from TRX group by Week(週を選択、週によるTRXグループからの(個別の客ID)をカウント)」が下記のように変形できる。
Select Week, Count(Distinct CustId) from
(
Select Week, Count(Additive_distinct CustId) CustId from Partition1.TRX group by Week
Union All
Select Week, Count(Additive_distinct CustId) CustId from Partition2.TRX group by Week
Union All
Select Week, Count(Additive_distinct CustId) CustId from Partition3.Trx group by Week
) T
Group By Week
図7Aは、開示された実施形態にかかる、この分散された要求を処理するステップを示す。3つの第一ステップ701は、パーティションの各々に対して平行して行うことができ、各パーティションに適用される図2Aに示されるEMV生成ステップと同様である。もちろん、これらステップは平行して行われなくてもよく、なんらかの適した順序で行える。前記3つの第一ステップ701がパーティションの各々について実行され、その結果、各パーティションに一つずつ、計3つのEMVセットが得られ、EMVの各桁はローカルパーティションEIDを参照している。例えば、図8Aは、3つのパーティションに対応して、3つの仮想EIDマッピングテーブル801A、801B、および801Cと共に、3つの仮想EMVセット802A、802B、および802Cを、パーティションの各々にある固有データ値の各々について示している。マッピングテーブル801A〜801C中のEIDはすべて異なる固有データ値に対応しているので、また、各パーティション中のEIDの数が様々であるので、EMVの長さも、EMVセット802A〜802C中の各EMVのビットの意味も、様々である。その結果、EMVセット802A〜802Cは、このままではunion演算子によって合成することができない。
図7Aを参照すると、ステップ702で、ドメインパーティションの各々からグローバルドメインを構築するためにドメイン結合プロセスをおこない、EMVセットを標準化できる。図7Bへ続き、ステップ703で、グローバルドメイン中の固有データ値の各々について、グローバルEIDが生成される。グローバルEIDがパーティションEIDとしての同じ固有データ値に対応するので、図7Bのステップ704でパーティションEIDの各々がグローバルEIDに変換できる。ステップ705では、パーティションに特定のEMVがグローバルEMVに変換され、そのすべてが各ビットにおいて、同じ長さを有し、同じ固有データ値を参照する。これはパーティション−グローバルEIDマッピングテーブルを使用して、パーティションに作り出されたEMVの各々を再構築し、グローバルEIDに対してマッピングする新たなEMVを作り上げることにより達成される。
当該プロセスを示すために、図8Bは、図8Aのドメインパーティションのドメイン結合の結果得られたグローバルドメイン803と、対応するグローバルEID804とを示す。図8Cは、パーティション1、811、パーティション2、812およびパーティション3、813用のパーティション−グローバルEIDマッピングテーブルを示す。前述のように、パーティション−グローバルEIDマッピングは、パーティションEIDとグローバルEIDとが固有データ値を相互参照することによって生成される。マッピングテーブルはその後、パーティション特定EMVをグローバルEMVに変換するために用いられる。変換の結果生成されたグローバルEMVは、パーティション1、821、パーティション2、822、およびパーティション3、823について図8Dに示されている。
パーティション特定EMVがグローバルEMVに変換されると、前述のようにブールOR演算で集計できる。その結果得られた合成グローバルEMVは、合成パーティションすべてにわたるあるグループセットにおいて、固有データ値が有るかどうかを示すことになろう。さらに、合成グローバルEMV中のビットの合計は、パーティションにわたってそのEMVに対応するグループセット中の個別のデータ値の総数と等しくなる。
このドメイン結合プロセスは、データベース更新演算に利用できる。データウェアハウス環境では、更新プロセスが新たなデータを付加する工程を含むことがよくある。関連付けられたパーティションLLAテーブルを生成するために新たなパーティションとして付加されたデータを処理し、上述した技術を使用してパーティションLLAテーブルを既存のLLAテーブルと合成することにより、前記新たなデータを既存のLLAテーブルと結合することができる。
例えば、パーティションの各々についてのグローバルEMVが、データキューブに保存される。図9は、開示された実施形態にかかる、グローバルEIDを保存するデータキューブ900の例を示す。図示されているように、次元には、EMV次元901、グループセット次元902、およびパーティション次元903がある。新たなデータ更新が受領されると、パーティションとして扱い、前述のドメイン結合マージプロセスを使用してデータキューブに加えることができる。
前述のように、EIDも、データ値の語彙順ではなく、データ値が出現した経時的な順序で割り当てられてもよい。このようにEIDを割り当てることにより、データウェアハウスの更新のためのドメイン結合ステップを省略できる。図10を参照すると、既存のデータウェアハウスが1001に示されている。この例では、データ値が処理された経時的な順序を用いてEIDを各データ値に割り当てている。テーブル1002は、以下の順序で処理された4つのデータ値用のEIDを示している:368、167、165、268。さらに、テーブル1003は、データ値を含む3つのグループセットについてのEMVを示している。したがって、例えば、第二のEMV「OB1110」は、データ値368、167、および165を含むグループセットに対応する。
図10はまた、データウェアハウスのデータ更新1004を示す。データ更新は、上述したパーティションと同様である。ローカルEIDマッピングテーブル1005は、同様に経時的順序で割り当てられた、更新におけるデータ値についてのEIDを示している。さらに、二つのグループセットについてのEMVが1006に示されている。この場合、更新におけるデータ値のうち二つは新規であり、データ値の一つはすでにデータウェアハウスに存在していたものである。
更新されたデータウェアハウスが1007に示されている。EIDが経時的順序で割り当てられているので、ドメイン結合プロセスを行う必要がない。データ更新における二つの新たなデータ値、392および163が、次に使用可能な二つのEID、この場合5および6、に割り当てられる。既存のEIDの再マッピングが無いので、各EMVの最後に新たなEIDの数と等しい数のゼロを加えることによって各EMVの長さを伸ばすだけで、EMVの既存のテーブル1003が更新される。この結果、更新されたEMVを備えたテーブル1009となる。もちろん、ある位置に文字が無ければゼロと解釈することができるので、ゼロが必ずしもEMVに付加されなくてもよい。
データ値の経時的な順序に基づいてEIDが割り当てられている場合にデータ更新に必要な再マッピングのみが、実際のデータ更新においてEMVに対して行われる。この場合、更新1006のEMVは、テーブル1010の更新されたEMVを生成するためにはローカルEIDテーブル1005ではなくグローバルEIDテーブル1008を使用するために、再マッピングされなければならない。したがって、例えば、更新1006の第一EMVが、値392および163(EMVの一番目および三番目の位置の「1」)を含むグループセットに対応し、これらデータ値に対応するグローバルEIDが5および6なので、データ更新内の第一EMVに対応する更新されたデータテーブル1010中の第一EMVは、五番目および六番目の位置に「1」を有することになろう。
パーティションに特定された一または複数のEMVが第一データパーティション中のトークン化されていないデータカラムから生成され、一または複数の他のパーティションと結合されるというシナリオでは、第一データパーティション中のトークン化されていないデータカラムに対応する第一ドメインパーティションを、グローバルドメインを生成するためのドメインパーティションの群の中の、一または複数の他のドメインパーティションと合成できる。EMV生成のプロセスと同様に、グローバルドメイン中のすべての固有データ値の語彙順配列に基づいて、パーティションに特定された一または複数のEMVに対応する一または複数のグローバルEMVを生成するために、このグローバルドメインを用いることができる。各グローバルEMVの長さはグローバルドメイン中の固有データ値の数と等しくてもよく、グローバルEMV中の各ビットの位置はグローバルドメイン中の固有データ値の語彙順の一覧における固有データ値に対応する語彙順の位置に対応してもよく、グローバルEMV中の各ビットの値は、グループセット中における、対応する固有データ値の有無を示すことができる。
前述のドメインマージプロセスをバイパスするために使用することができ、分散システムでのデータベースの演算をより効率的にできる、ドメイン同期プロセスを、下記に記載する。図11Aは、分散データベース中の二つのパーティション、1101および1102を示す。図8Aの分散データベースと同様に、パーティションの各々はローカルEIDテーブルを含み、パーティション1101にはテーブル1104、パーティション1102にはテーブル1106を備える。この例では、EIDはデータ値の語彙順に基づいて割り当てられているものとして示されているが、EIDは前述のように経時的に割り当てられられてもよい。さらに、分散データベースは、グローバルEIDテーブル1103を備える。グローバルEIDテーブル1103には、データ値すべてをグローバルEIDにマッピングしたものが入っている。繰り返しになるが、これらグローバルEIDはデータ値の語彙順に基づいて割り当てられているが、データ値の経時的な順序にもとづいて割り当てることもできる。グローバルEIDテーブル1103はパーティション1101およびパーティション1102の外に保存されているものとして示されているが、グローバルEIDテーブルは、パーティションの一つ、または両方に保存されることも可能である。
各パーティション1101および1102もまた、ローカルEID−グローバルEIDマッピングテーブル、パーティション1101についてのテーブル1105、およびパーティション1102についてのテーブル1107を含む。EMV1108および1109の例を使用して下記に記載するように、これらマッピングテーブルは、ローカルEMVをグローバルEMVに変えるために使用できる。
パーティション1101またはパーティション1102のどちらかで更新が受領されると、新たな固有データ値がグローバルEIDテーブル1103へ送られる。これら新たな固有データ値は、グローバルEIDテーブルを更新するために用いることができる。例えば、EIDが固有データ値の語彙順で割り当てられる時、グローバルEIDテーブル1103中のデータ値が再ソートされ、受領された新たな固有データ値を考慮してグローバルEIDが固有データ値の各々に再割り当てされる。経時的に割り当てられたEIDが用いられるなら、新たな固有データ値が次に使用可能なEIDに割り当てられて、既存の固有データ値のすべてに対してEIDを再割り当てる必要がないので、このプロセスは大幅に簡略化される。
グローバルEIDテーブル1103が更新された後、新たなグローバルEIDがパーティション1101および1102へ戻され得る。新たなグローバルEIDを用いて、ローカルEID−グローバルEIDマッピングテーブル1105および1107の各々を更新することができる。繰り返しになるが、このプロセスには経時的に割り当てられたEIDが効率的である。新たなグローバルEIDのみが新たな固有データ値について割り当てられるからである。語彙順で割り当てられたEIDでは、既存の固有データ値についてのすべてのEIDが再シャッフルされうる。
照会が複数のパーティションからEMVを求める場合、ローカルEID−グローバルEIDマッピングテーブル、1105および1107、は、なんらかのローカルEMVをグローバルEMVへ変換するために用いることができる。図11Bを参照すると、パーティション1101中の見本EMV1108についての変換プロセスが示されている。図11Bに示されるように、ローカルEMV中の各ビットは、そのローカル位置から、等価のグローバルEMV1110中のそのグローバル位置へ、マッピングされる。したがって、例えば、ローカルEID−グローバルEIDマッピングテーブル1105がローカルEID「3」をグローバルEID「5」へマッピングするので、ローカルEMV1108中の三番目の位置ビットの値は、グローバルEMV1110の五番目の位置へ割り当てられる。グローバルEMV1110中の四番目の位置など、グローバルEMV中の位置へのマッピングが無ければ、その値は、グループセット中のある固有データ値が無いことを反映してゼロに設定される。なぜなら、もしその値が存在すれば、ローカルEID−グローバルEIDマッピングテーブル1105中にそれがあったはずだからである。同様に、パーティション1102中のローカルEMV1109からグローバルEMV1111を生成するためには、ローカルEID−グローバルEIDマッピングテーブル1107を使用できる。
このドメイン同期プロセスを通じて、上述されたドメインマージ手順をバイパスすることができ、その結果処理時間が改善でき、一度にエクスポートする必要のある固有データ値の数を減らすことができる。もちろん、各パーティションにEMVが一つ示されているのは、明瞭化だけのためである。実際は、あるパーティションにローカルEIDおよび値が存在すれば、いくつかのグループセットおよびEMVにその値が入るはずである。さらに、二つのパーティションが示されているのも単に明瞭化のためだけであり、データベースが含むパーティションの数はどんな数であってもよい。
上記の技術の一または複数は、一または複数のコンピュータシステム中に実現することができ、または、それらで構成されることができる。図12は、コンピューティング環境1200の一般例を示す。コンピューティング環境1200は、記載された実施形態の用途または機能の範囲についていかなる限定も示唆するものではない。
図12を参照すると、コンピューティング環境1200は、少なくとも一つの処理ユニット1210およびメモリ1220を含む。処理ユニット1210はコンピュータ実行可能な 命令を実行し、現実のまたは仮想のプロセッサであってもよい。多重処理システムにおいては、多数の処理ユニットがコンピュータ実行可能な命令を実行して処理パワーを増加させている。メモリ1220は、一時的なメモリ(例えば、レジスタ、キャッシュ、RAMなど)、非一時的なメモリ(例えば、ROM、EEPROM、フラッシュメモリなど)、またはその二つの組合せであってもよい。メモリ1220は、上記技術を実現するソフトウェア1280を記憶していてもよい。
コンピューティング環境は、さらに追加の構成を有することができる。例えば、コンピューティング環境1200は、記憶装置1240、一または複数の入力装置1250、一または複数の出力装置1260、および一または複数の通信接続部1290を備える。バス、制御器、またはネットワークなどの相互接続機構1270は、コンピューティング環境1200の構成部分を相互接続する。通常、オペレーティングシステムソフトウエアまたはファームウェア(図示省略)は、コンピューティング環境1200で作動するその他のソフトウェア用の操作環境を提供し、コンピューティング環境1200の構成部分の動作を調整する。
記憶装置1240は着脱可能であっても、着脱不可であってもよく、磁気ディスク、磁気テープ、カセット、CD−ROM、CD−RW、DVDなど、情報を記憶するために用いることができ、コンピューティング環境1200中でアクセスすることができる媒体を含む。記憶装置1240は、ソフトウェア1280への命令を記憶できる。
入力装置(複数も可)1250は、キーボード、マウス、ペン、トラックボール、タッチ画面、またはゲーム制御器などのタッチ入力装置、音声入力装置、走査装置、デジタルカメラ、遠隔制御、コンピューティング環境1200に入力を行う他の装置でありうる。出力装置(複数も可)1260は、表示器、テレビ、モニタ、プリンタ、スピーカ、コンピューティング環境1200からの出力を行う他の装置でありうる。
通信接続部(複数も可)1290は、通信媒体を介して別のコンピューティングエンティティへの通信を可能にする。通信媒体は、コンピュータ実行可能な命令、音声または画像情報、変調データ信号のデータ、等の情報を伝達する。変調データ信号は、信号の特徴の一つまたは複数が信号中の情報を暗号化するように設定または変更された信号である。例であって限定ではないが、通信媒体としては、電気、光学、RF、赤外線、音響などのキャリアによって実現される有線または無線技術などがある。
インプリメンテーション(実現)は、コンピュータ可読媒体の一般的なコンテキストで説明できる。コンピュータ可読媒体は、コンピューティング環境内でアクセスできる媒体であれば、いずれの媒体であってもよい。例であって限定ではないが、コンピューティング環境1200内においては、コンピュータ可読媒体としては、メモリ1220、記憶装置1240、通信媒体、および上記のいずれかの組み合わせなどが挙げられる。
図12は、コンピューティング環境1200、表示装置1260、および入力装置1250を個別の装置として示しているが、これは識別のしやすさのためである。コンピューティング環境1200、表示装置1260、および入力装置1250は個別の装置(例えば、モニタやマウスに有線で接続されたパーソナルコンピュータなど)でもよく、単一の装置に統合されたもの(例えば、スマートフォンやタブレットなどタッチディスプレイを備えたモバイル装置など)でありえ、または装置の組み合わせ(例えば、タッチ−スクリーン表示装置と動作的に連結される演算装置、単一の表示装置および入力装置に取り付けられた複数の演算装置など)でありえる。コンピューティング環境1200はセットトップボックスや、パーソナルコンピュータ、または、一または複数のサーバであってよく、例えばネットワーク接続されたサーバの形式、クラスタ化サーバ環境、または演算装置のクラウドネットワークでありうる。
記載された実施形態を参照して本発明の原理を記載し説明したが、記載された実施形態は、構成や詳細においてかかる原理から逸脱することなく変更できることは、認識されるであろう。特段の記載の無い限り、本明細書に記載されたプログラム、プロセス、または方法は、特定の種別のコンピューティング環境に関連するわけではなく、限定もされないことを、理解されたい。各種の汎用のまたは特殊なコンピューティング環境は、本明細書に記載された教示に従って、使用されたり操作が実行されたりできる。ソフトウェアに示される本実施形態の要件は、ハードウェアで実現でき、その逆も可である。
本発明の原理が適用できる、考えられうる多くの実施形態を鑑み、以下の請求項および均等物の範囲および精神に該当するような実施形態はすべて、本発明であると主張する。

Claims (63)

  1. 一または複数の演算装置によって個別のデータ値に対して演算を効率良く行うための方法であって、前記方法は、
    前記一または複数の演算装置の少なくとも一つによって、テーブル中にトークン化されたデータカラムを保存する工程であって、データカラムに対応するドメイン中の各固有データ値をエンティティIDにマッピングし、前記カラム中の前記データ値の各々を対応するエンティティIDと置き換えて、一または複数のエンティティIDを含むトークン化されたデータのカラムを生成することにより、前記トークン化されたデータカラムが作り出される工程と、
    前記一または複数の演算装置の少なくとも一つによって、前記データカラムを宛先とした照会を受領する工程であって、前記照会は、前記照会に応答して検索されたデータをグループ化するための一または複数のグループセットを定義する工程と、
    前記一または複数の演算装置の少なくとも一つによって、前記一または複数のグループセット中の各グループセットについてエンティティマップベクトルを生成する工程であって、各エンティティマップベクトルの長さは前記ドメインのエンティティIDの総数と等しく、各エンティティマップベクトル中の各ビットの値は、対応するグループセットにおける異なるエンティティIDの有無を示す工程と、
    を含む、方法。
  2. 前記エンティティIDの各々と前記固有データ値との間でのマッピングがルックアップ辞書に保存される、請求項1に記載の方法。
  3. エンティティマップベクトル中のビットが「1」という値であれば前記グループセットにエンティティIDが有ることを示し、エンティティマップベクトル中のビットが「0」という値であれば前記グループセットにエンティティIDが無いことを示す、請求項1に記載の方法。
  4. グループセット中の個別のデータ値の数は、当該グループセットに対応するエンティティマップベクトルの前記ビットの各々の値の合計に等しい、請求項1に記載の方法。
  5. 前記一または複数のグループセットは少なくとも二つのグループセットを含み、前記方法は、
    前記グループセットの二つ以上からのデータを集計して、合成グループセットにするためのコマンドを、前記一または複数の演算装置の少なくとも一つによって受領する工程と、
    前記二つ以上のグループセットに対応するエンティティマップベクトルについて、前記一または複数の演算装置の少なくとも一つによって、ブールOR演算を行い、合成エンティティマップベクトルを生成する工程と、
    をさらに含む、請求項1に記載の方法。
  6. 前記合成グループセット中の個別のデータ値の数は、前記合成エンティティマップベクトルの前記ビットの各々の値の合計に等しい、請求項5に記載の方法。
  7. 前記テーブルはパーティション化され複数の演算ノードにわたって分散されており、前記データカラムはカラムパーティションのセットの中の第一カラムパーティションであり、前記ドメインはドメインパーティションのセットの中の第一ドメインパーティションであり、前記一または複数のエンティティIDは一または複数の第一パーティションエンティティIDであり、前記エンティティマップベクトルは一または複数の第一パーティションエンティティマップベクトルであり、
    前記方法は、
    前記一または複数の演算装置の少なくとも一つによって、前記第一ドメインパーティションを前記ドメインパーティションのセットの中の一または複数のその他のドメインパーティションと合成し、グローバルドメインを生成する工程と、
    前記一または複数の演算装置の少なくとも一つによって、前記一または複数の固有データ値の各々をグローバルエンティティIDにマッピングすることにより、前記グローバルドメイン中の一または複数の前記固有データ値をトークン化し、一または複数のグローバルエンティティIDを生成する工程と
    前記一または複数の演算装置の少なくとも一つによって、前記一または複数の第一パーティションエンティティIDの各々を、前記一または複数のグローバルエンティティID中の対応するグローバルエンティティIDに、共通の固有データ値を相互参照することによってマッピングする工程と、
    一または複数の第一パーティションエンティティIDを一または複数のグローバルエンティティIDにマッピングする前記マッピングに基づいて、前記一または複数の演算装置の少なくとも一つによって、前記一または複数の第一パーティションエンティティマップベクトルの各々を一または複数のグローバルエンティティマップベクトルへ変える工程と、
    をさらに含む、請求項1に記載の方法。
  8. 前記一または複数の演算装置の少なくとも一つによって、前記第一パーティションに対応する前記一または複数のグローバルエンティティマップベクトルと、第二パーティションに対応する一または複数の第二グローバルエンティティマップベクトルとに、ブールOR演算を行い、一または複数の合成グローバルエンティティマップベクトルを生成する工程をさらに含む、請求項7に記載の方法。
  9. 前記合成グローバルエンティティマップベクトルの各々の各ビットの値の合計は、前記第一パーティションと前記第二パーティションとにわたる当該グローバルエンティティマップベクトルに対応するあるグループセットの中の個別の要素の総数である、請求項8に記載の方法。
  10. 各パーティションについての前記グローバルエンティティマップベクトルは、グローバルデータキューブに保存され、前記グローバルデータキューブはエンティティマップベクトル次元、グループセット次元、およびパーティション次元を備える、請求項7に記載の方法。
  11. グループセットの数は、少なくとも部分的に、前記テーブル中の第二データカラム中の個別のデータ値の数によって決定される。請求項1に記載の方法。
  12. 前記テーブル中の一または複数の第二データカラムを参照して前記グループセットが定義される、請求項1に記載の方法。
  13. 一番目のエンティティIDが、それと遭遇した一番目の固有データ値にマッピングされるように、各エンティティIDは、前記固有データ値の出現の経時的順序で各固有データ値にマッピングされる、請求項1に記載の方法。
  14. 前記一または複数のエンティティIDは一または複数のグローバルエンティティIDであり、前記一または複数のエンティティマップベクトルは一または複数の既存のグローバルエンティティマップベクトルであり、前記方法は、
    前記一または複数の演算装置の少なくとも一つによって、一または複数の新たなエンティティIDに対応する一または複数の新たなエンティティマップベクトル含む更新を受領する工程であって、前記新たなエンティティIDの各々は固有データ値に対応する、工程と、
    前記一または複数の演算装置の少なくとも一つによって、前記ドメイン中にはまだ表れていない各固有データ値に、新たなグローバルエンティティIDを割り当てる工程と、
    前記一または複数の演算装置の少なくとも一つによって、前記一または複数の新たなエンティティマップベクトルに対応する一または複数のグローバルエンティティマップベクトルを生成する工程であって、各グローバルエンティティマップベクトルの長さはグローバルエンティティIDの総数に等しく、各グローバルエンティティマップベクトルの各ビットの値は、対応するグループセット中における異なるグローバルエンティティIDの有無を示す、工程と、
    をさらに含む、請求項13に記載の方法。
  15. 前記一または複数の演算装置の少なくとも一つによって、いくつかのゼロを前記既存のグローバルエンティティマップベクトルの各々の末尾に付加することにより、前記既存のグローバルエンティティマップベクトルを更新する工程であって、前記ゼロの数は、前記更新の中の、前記ドメイン中にはまだ表現されていなかった固有データ値の数と等しい、工程をさらに含む、請求項14に記載の方法。
  16. 一番目のエンティティIDが、前記固有データ値の前記語彙順の一番目である固有データ値にマッピングされるように、前記固有データ値の語彙順で各固有データ値に各エンティティIDがマッピングされる、請求項1に記載の方法。
  17. エンティティマップベクトル中の各ビットの数値位置はエンティティIDに対応し、前記グループセット中に前記エンティティIDが存在するかどうかをビットが表す、請求項1に記載の方法。
  18. トークン化されたデータカラムの保存は、照会を受領した後に行われる、請求項1に記載の方法。
  19. トークン化されたデータカラムの保存は、照会を受領する前に行われる、請求項1に記載の方法。
  20. 前記照会は、前記一または複数のグループセットの各々に関するsumコマンドを含み、前記方法は、
    前記一または複数のグループセットの各々について、当該グループセットに対応する前記エンティティマップベクトル中に存在していると示されているエンティティIDに対応する前記固有データ値を、前記一または複数の演算装置の少なくとも一つによって合計する工程をさらに含む、請求項1に記載の方法。
  21. 前記照会は、前記一または複数のグループセットの各々に関するaverageコマンドを含み、前記方法は、
    前記一または複数のグループセットの各々について、当該グループセットに対応する前記エンティティマップベクトル中に存在していると示されているエンティティIDに対応する前記固有データ値の平均値を、前記一または複数の演算装置の少なくとも一つによって求める工程をさらに含む、請求項1に記載の方法。
  22. 個別のデータ値に対して演算を効率良く行うための装置であって、前記装置は、
    一または複数のプロセッサと、
    前記一または複数のプロセッサの少なくとも一つと動作的に結合され、命令を保存する、一または複数のメモリとを備え、前記命令は、前記一または複数のプロセッサの少なくとも一つによって実行される時に、前記一または複数のプロセッサの少なくとも一つに、
    テーブル中にトークン化されたデータカラムを保存し、データカラムに対応するドメイン中の各固有データ値をエンティティIDにマッピングし、前記カラム中の前記データ値の各々を対応するエンティティIDと置き換えて、一または複数のエンティティIDを含むトークン化されたデータのカラムを生成することにより、前記トークン化されたデータカラムが作り出され、
    前記データカラムを宛先とした照会を受領し、前記照会は、前記照会に応答して検索されたデータをグループ化するための一または複数のグループセットを定義し、
    前記一または複数のグループセット中の各グループセットについてエンティティマップベクトルを生成し、各エンティティマップベクトルの長さは前記ドメインのエンティティIDの総数と等しく、各エンティティマップベクトル中の各ビットの値は対応するグループセットにおける異なるエンティティIDの有無を示す、
    ようにさせる装置。
  23. 前記エンティティIDの各々と前記固有データ値との間でのマッピングがルックアップ辞書に保存される、請求項22に記載の装置。
  24. エンティティマップベクトル中のビットが「1」という値であれば前記グループセットにエンティティIDが有ることを示し、エンティティマップベクトル中のビットが「0」という値であれば前記グループセットにエンティティIDが無いことを示す、請求項22に記載の装置。
  25. グループセット中の個別のデータ値の数は、当該グループセットに対応する前記エンティティマップベクトルの前記ビットの各々の値の合計に等しい、請求項22に記載の装置。
  26. 前記一または複数のグループセットは少なくとも二つのグループセットを含み、前記一または複数のメモリはさらに命令を保存し、前記命令は、前記一または複数のプロセッサの少なくとも一つによって実行される時に、前記一または複数のプロセッサの少なくとも一つに、
    前記グループセットの二つ以上からのデータを集計して、合成グループセットにするためのコマンドを受領し、
    前記二つ以上のグループセットに対応するエンティティマップベクトルについて、ブールOR演算を行い、合成エンティティマップベクトルを生成する、
    ようにさせる、請求項22に記載の装置。
  27. 前記合成グループセット中の個別のデータ値の数は、前記合成エンティティマップベクトルの前記ビットの各々の値の合計に等しい、請求項26に記載の装置。
  28. 前記テーブルはパーティション化され複数の演算ノードにわたって分散されており、前記データカラムはカラムパーティションのセットの中の第一カラムパーティションであり、前記ドメインはドメインパーティションのセットの中の第一ドメインパーティションであり、前記一または複数のエンティティIDは一または複数の第一パーティションエンティティIDであり、前記エンティティマップベクトルは一または複数の第一パーティションエンティティマップベクトルであって、前記一または複数のメモリはさらに命令を保存し、前記命令は、前記一または複数のプロセッサの少なくとも一つによって実行される時に、前記一または複数のプロセッサの少なくとも一つに、
    前記第一ドメインパーティションを前記ドメインパーティションのセットの中の一または複数のその他のドメインパーティションと合成し、グローバルドメインを生成し、
    前記一または複数の固有データ値の各々をグローバルエンティティIDにマッピングすることにより、前記グローバルドメイン中の一または複数の前記固有データ値をトークン化し、一または複数のグローバルエンティティIDを生成し、
    前記一または複数の第一パーティションエンティティIDの各々を、前記一または複数のグローバルエンティティID中の対応するグローバルエンティティIDに、共通の固有データ値を相互参照することによってマッピングし、
    一または複数の第一パーティションエンティティIDを一または複数のグローバルエンティティIDにマッピングする前記マッピングに基づいて、前記一または複数の第一パーティションエンティティマップベクトルの各々を一または複数のグローバルエンティティマップベクトルへ変える、
    ようにさせる、請求項22に記載の装置。
  29. 前記一または複数のメモリはさらに命令を保存し、前記命令は、前記一または複数のプロセッサの少なくとも一つによって実行される時に、前記一または複数のプロセッサの少なくとも一つに、
    前記第一パーティションに対応する前記一または複数のグローバルエンティティマップベクトルと、第二パーティションに対応する一または複数の第二グローバルエンティティマップベクトルとに、ブールOR演算を行い、一または複数の合成グローバルエンティティマップベクトルを生成するようにさせる、
    請求項28に記載の装置。
  30. 前記合成グローバルエンティティマップベクトルの各々の各ビットの値の合計は、前記第一パーティションと前記第二パーティションとにわたる当該グローバルエンティティマップベクトルに対応するあるグループセットの中の個別の要素の総数である、請求項29に記載の装置。
  31. 各パーティションについての前記グローバルエンティティマップベクトルは、グローバルデータキューブに保存され、前記グローバルデータキューブはエンティティマップベクトル次元、グループセット次元、およびパーティション次元を備える、請求項28に記載の装置。
  32. グループセットの数は、少なくとも部分的に、前記テーブル中の第二データカラム中の個別のデータ値の数によって決定される、請求項28に記載の装置。
  33. 前記テーブル中の一または複数の第二データカラムを参照して前記グループセットが定義される、請求項22に記載の装置。
  34. 一番目のエンティティIDが、それと遭遇した一番目の固有データ値にマッピングされるように、各エンティティIDは、前記固有データ値の出現の経時的順序で各固有データ値にマッピングされる、請求項22に記載の装置。
  35. 前記一または複数のエンティティIDは一または複数のグローバルエンティティIDであり、前記一または複数のエンティティマップベクトルは一または複数の既存のグローバルエンティティマップベクトルであって、前記一または複数のメモリはさらに命令を保存し、前記命令は、前記一または複数のプロセッサの少なくとも一つによって実行される時に、前記一または複数のプロセッサの少なくとも一つに、
    一または複数の新たなエンティティIDに対応する一または複数の新たなエンティティマップベクトル含む更新を受領し、前記新たなエンティティIDの各々は固有データ値に対応し、
    前記ドメイン中にはまだ表れていない各固有データ値に、新たなグローバルエンティティIDを割り当て、
    前記一または複数の新たなエンティティマップベクトルに対応する一または複数のグローバルエンティティマップベクトルを生成し、各グローバルエンティティマップベクトルの長さはグローバルエンティティIDの総数に等しく、各グローバルエンティティマップベクトルの各ビットの値は、対応するグループセット中における異なるグローバルエンティティIDの有無を示す、
    ようにさせる、請求項34に記載の装置。
  36. 前記一または複数のメモリはさらに命令を保存し、前記命令は、前記一または複数のプロセッサの少なくとも一つによって実行される時に、前記一または複数のプロセッサの少なくとも一つに、
    いくつかのゼロを前記既存のグローバルエンティティマップベクトルの各々の末尾に付加することにより、前記既存のグローバルエンティティマップベクトルを更新するようにさせ、前記ゼロの数は、前記更新の中の、前記ドメイン中にはまだ表現されていなかった固有データ値の数と等しい、
    請求項35に記載の装置。
  37. 一番目のエンティティIDが前記固有データ値の前記語彙順の一番目である固有データ値にマッピングされるよう、前記固有データ値の語彙順で各固有データ値に各エンティティIDがマッピングされる、請求項22に記載の装置。
  38. 前記エンティティマップベクトル中の各ビットの数値位置はエンティティIDに対応し、前記グループセット中に前記エンティティIDが存在するかどうかをビットが表す、請求項22に記載の装置。
  39. トークン化されたデータカラムが、照会を受領した後に保存される、請求項22に記載の装置。
  40. トークン化されたデータカラムが、照会を受領する前に保存される、請求項22に記載の装置。
  41. 前記照会は、前記一または複数のグループセットの各々に関するsumコマンドを含み、前記一または複数のメモリはさらに命令を保存し、前記命令は、前記一または複数のプロセッサの少なくとも一つによって実行される時に、前記一または複数のプロセッサの少なくとも一つに、
    前記一または複数のグループセットの各々について、当該グループセットに対応する前記エンティティマップベクトル中に存在していると示されているエンティティIDに対応する前記固有データ値を合計させる、
    請求項22に記載の装置。
  42. 前記照会は、前記一または複数のグループセットの各々に関するaverageコマンドを含み、前記一または複数のメモリはさらに命令を保存し、前記命令は、前記一または複数のプロセッサの少なくとも一つによって実行される時に、前記一または複数のプロセッサの少なくとも一つに、
    前記一または複数のグループセットの各々について、当該グループセットに対応する前記エンティティマップベクトル中に存在していると示されているエンティティIDに対応する前記固有データ値の平均値を求めさせる、
    請求項22に記載の装置。
  43. コンピュータ可読命令を保存する少なくとも一つの非一時的なコンピュータ可読媒体であって、前記命令は、一または複数の演算装置によって実行される時に前記一または複数の演算装置の少なくとも一つに、
    テーブル中にトークン化されたデータカラムを保存し、データカラムに対応するドメイン中の各固有データ値をエンティティIDにマッピングし、前記カラム中の前記データ値の各々を対応するエンティティIDと置き換えて、一または複数のエンティティIDを含むトークン化されたデータのカラムを生成することにより、前記トークン化されたデータカラムが作り出され、
    前記データカラムを宛先とした照会を受領し、前記照会は、前記照会に応答して検索されたデータをグループ化するための一または複数のグループセットを定義し、
    前記一または複数のグループセット中の各グループセットについてエンティティマップベクトルを生成し、各エンティティマップベクトルの長さは前記ドメインのエンティティIDの総数と等しく、各エンティティマップベクトル中の各ビットの値は対応するグループセットにおける異なるエンティティIDの有無を示す、
    ようにさせる、少なくとも一つの非一時的なコンピュータ可読媒体。
  44. 前記エンティティIDの各々と前記固有データ値との間でのマッピングがルックアップ辞書に保存される、請求項43に記載の少なくとも一つの非一時的なコンピュータ可読媒体。
  45. エンティティマップベクトル中のビットが「1」という値であれば前記グループセットにエンティティIDが有ることを示し、エンティティマップベクトル中のビットが「0」という値であれば前記グループセットにエンティティIDが無いことを示す、請求項43に記載の少なくとも一つの非一時的なコンピュータ可読媒体。
  46. グループセット中の個別のデータ値の数は、当該グループセットに対応するビットマップベクトルの前記ビットの各々の値の合計に等しい、請求項43に記載の少なくとも一つの非一時的なコンピュータ可読媒体。
  47. 前記一または複数のグループセットは少なくとも二つのグループセットを含み、前記少なくとも一つの非一時的なコンピュータ可読媒体はさらに追加の命令を含み、前記追加の命令は、前記一または複数の演算装置によって実行される時に、前記一または複数の演算装置の少なくとも一つに、
    前記グループセットの二つ以上からのデータを集計して、合成グループセットにするためのコマンドを受領し、
    前記二つ以上のグループセットに対応するエンティティマップベクトルについて、ブールOR演算を行い、合成エンティティマップベクトルを生成する、
    ようにさせる、請求項43に記載の少なくとも一つの非一時的なコンピュータ可読媒体。
  48. 前記合成グループセット中の個別のデータ値の数は、前記合成エンティティマップベクトルの前記ビットの各々の値の合計に等しい、請求項47に記載の少なくとも一つの非一時的なコンピュータ可読媒体。
  49. 前記テーブルはパーティション化され複数の演算ノードにわたって分散されており、前記データカラムはカラムパーティションのセットの中の第一カラムパーティションであり、前記ドメインはドメインパーティションのセットの中の第一ドメインパーティションであり、前記一または複数のエンティティIDは一または複数の第一パーティションエンティティIDであり、前記エンティティマップベクトルは一または複数の第一パーティションエンティティマップベクトルであって、前記少なくとも一つの非一時的なコンピュータ可読媒体はさらに追加の命令を含み、前記追加の命令は、一または複数の演算装置によって実行される時に前記一または複数の演算装置の少なくとも一つに、
    前記第一ドメインパーティションを前記ドメインパーティションのセットの中の一または複数のその他のドメインパーティションと合成し、グローバルドメインを生成し、
    前記一または複数の固有データ値の各々をグローバルエンティティIDにマッピングすることにより、前記グローバルドメイン中の一または複数の前記固有データ値をトークン化し、一または複数のグローバルエンティティIDを生成し、
    前記一または複数の第一パーティションエンティティIDの各々を、前記一または複数のグローバルエンティティID中の対応するグローバルエンティティIDに、共通の固有データ値を相互参照することによってマッピングし、
    一または複数の第一パーティションエンティティIDを一または複数のグローバルエンティティIDにマッピングする前記マッピングに基づいて、前記一または複数の第一パーティションエンティティマップベクトルの各々を一または複数のグローバルエンティティマップベクトルへ変える、
    ようにさせる、請求項43に記載の少なくとも一つの非一時的なコンピュータ可読媒体。
  50. 前記少なくとも一つの非一時的なコンピュータ可読媒体はさらに追加の命令を含み、前記追加の命令は、一または複数の演算装置によって実行される時に前記一または複数の演算装置の少なくとも一つに、
    前記第一パーティションに対応する前記一または複数のグローバルエンティティマップベクトルと、第二パーティションに対応する一または複数の第二グローバルエンティティマップベクトルとに、ブールOR演算を行い、一または複数の合成グローバルエンティティマップベクトルを生成させる、
    請求項49に記載の少なくとも一つの非一時的なコンピュータ可読媒体。
  51. 前記合成グローバルエンティティマップベクトルの各々の各ビットの値の合計は、前記第一パーティションと前記第二パーティションとにわたる当該グローバルエンティティマップベクトルに対応するあるグループセットの中の個別の要素の総数である、請求項50に記載の少なくとも一つの非一時的なコンピュータ可読媒体。
  52. 各パーティションについての前記グローバルエンティティマップベクトルは、グローバルデータキューブに保存され、前記グローバルデータキューブはエンティティマップベクトル次元、グループセット次元、およびパーティション次元を備える、請求項49に記載の少なくとも一つの非一時的なコンピュータ可読媒体。
  53. グループセットの数は、少なくとも部分的に、前記テーブル中の第二データカラム中の個別のデータ値の数によって決定される、請求項43に記載の少なくとも一つの非一時的なコンピュータ可読媒体。
  54. 前記テーブル中の一または複数の第二データカラムを参照して前記グループセットが定義される、請求項43に記載の少なくとも一つの非一時的なコンピュータ可読媒体。
  55. 一番目のエンティティIDが、それと遭遇した一番目の固有データ値にマッピングされるように、各エンティティIDは、前記固有データ値の出現の経時的順序で各固有データ値にマッピングされる、請求項43に記載の少なくとも一つの非一時的なコンピュータ可読媒体。
  56. 前記一または複数のエンティティIDは一または複数のグローバルエンティティIDであり、前記一または複数のエンティティマップベクトルは一または複数の既存のグローバルエンティティマップベクトルであって、前記少なくとも一つの非一時的なコンピュータ可読媒体はさらに追加の命令を含み、前記追加の命令は、一または複数の演算装置によって実行される時に前記一または複数の演算装置の少なくとも一つに、
    一または複数の新たなエンティティIDに対応する一または複数の新たなエンティティマップベクトル含む更新を受領し、前記新たなエンティティIDの各々は固有データ値に対応し、
    前記ドメイン中にはまだ表現されていない各固有データ値に、新たなグローバルエンティティIDを割り当て、
    前記一または複数の新たなエンティティマップベクトルに対応する一または複数のグローバルエンティティマップベクトルを生成し、各グローバルエンティティマップベクトルの長さはグローバルエンティティIDの総数に等しく、各グローバルエンティティマップベクトルの各ビットの値は、対応するグループセット中における異なるグローバルエンティティIDの有無を示す、
    ようにさせる、請求項55に記載の少なくとも一つの非一時的なコンピュータ可読媒体。
  57. 前記少なくとも一つの非一時的なコンピュータ可読媒体はさらに追加の命令を含み、前記追加の命令は、一または複数の演算装置によって実行される時に前記一または複数の演算装置の少なくとも一つに、
    いくつかのゼロを前記既存のグローバルエンティティマップベクトルの各々の末尾に付加することにより、前記既存のグローバルエンティティマップベクトルを更新するようにさせ、前記ゼロの数は、前記更新の中の、前記ドメイン中にはまだ表れていなかった固有データ値の数と等しい、
    請求項56に記載の少なくとも一つの非一時的なコンピュータ可読媒体。
  58. 一番目のエンティティIDが前記固有データ値の前記語彙順の一番目である前記固有データ値にマッピングされるように、前記固有データ値の語彙順で各固有データ値に各エンティティIDがマッピングされる、請求項43に記載の少なくとも一つの非一時的なコンピュータ可読媒体。
  59. 前記エンティティマップベクトル中の各ビットの数値位置はエンティティIDに対応し、前記グループセット中に前記エンティティIDが存在するかどうかをビットが表す、請求項43に記載の少なくとも一つの非一時的なコンピュータ可読媒体。
  60. トークン化されたデータカラムが、照会を受領した後に保存される、請求項43に記載の少なくとも一つの非一時的なコンピュータ可読媒体。
  61. トークン化されたデータカラムが、照会を受領する前に保存される、請求項43に記載の少なくとも一つの非一時的なコンピュータ可読媒体。
  62. 前記照会は前記一または複数のグループセットの各々に関するsumコマンドを含み、前記少なくとも一つの非一時的なコンピュータ可読媒体はさらに追加の命令を含み、前記追加の命令は、一または複数の演算装置によって実行される時に前記一または複数の演算装置の少なくとも一つに、
    前記一または複数のグループセットの各々について、当該グループセットに対応する前記エンティティマップベクトル中に存在していると示されているエンティティIDに対応する前記固有データ値を合計させる、
    請求項43に記載の少なくとも一つの非一時的なコンピュータ可読媒体。
  63. 前記照会は、前記一または複数のグループセットの各々に関するaverageコマンドを含み、前記少なくとも一つの非一時的なコンピュータ可読媒体はさらに追加の命令を含み、前記追加の命令は、一または複数の演算装置によって実行される時に前記一または複数の演算装置の少なくとも一つに、
    前記一または複数のグループセットの各々について、当該グループセットに対応する前記エンティティマップベクトル中に存在していると示されているエンティティIDに対応する前記固有データ値の平均値を求めさせる、
    請求項43に記載の少なくとも一つの非一時的なコンピュータ可読媒体。
JP2016502660A 2013-03-15 2014-03-14 個別のデータ値に対する効率よい演算を行うための方法、装置、並びにコンピュータ可読媒体 Active JP6192800B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/835,590 US9218379B2 (en) 2013-03-15 2013-03-15 Method, apparatus, and computer-readable medium for efficiently performing operations on distinct data values
US13/835,590 2013-03-15
PCT/US2014/027907 WO2014143791A1 (en) 2013-03-15 2014-03-14 Efficiently performing operations on distinct data values

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2017153599A Division JP6258549B2 (ja) 2013-03-15 2017-08-08 個別のデータ値に対する効率よい演算を行うための方法、装置、並びにコンピュータ可読媒体

Publications (3)

Publication Number Publication Date
JP2016516246A true JP2016516246A (ja) 2016-06-02
JP2016516246A5 JP2016516246A5 (ja) 2017-04-20
JP6192800B2 JP6192800B2 (ja) 2017-09-06

Family

ID=51532934

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2016502660A Active JP6192800B2 (ja) 2013-03-15 2014-03-14 個別のデータ値に対する効率よい演算を行うための方法、装置、並びにコンピュータ可読媒体
JP2017153599A Active JP6258549B2 (ja) 2013-03-15 2017-08-08 個別のデータ値に対する効率よい演算を行うための方法、装置、並びにコンピュータ可読媒体

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2017153599A Active JP6258549B2 (ja) 2013-03-15 2017-08-08 個別のデータ値に対する効率よい演算を行うための方法、装置、並びにコンピュータ可読媒体

Country Status (6)

Country Link
US (2) US9218379B2 (ja)
JP (2) JP6192800B2 (ja)
CA (1) CA2906669C (ja)
DE (1) DE112014001361T5 (ja)
GB (1) GB2528405B (ja)
WO (1) WO2014143791A1 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9218379B2 (en) * 2013-03-15 2015-12-22 Informatica Llc Method, apparatus, and computer-readable medium for efficiently performing operations on distinct data values
US9237006B2 (en) * 2013-09-30 2016-01-12 Protegrity Corporation Table-connected tokenization
US9229987B2 (en) 2013-09-30 2016-01-05 Protegrity Corporation Mapping between tokenization domains
US9705801B2 (en) * 2013-10-07 2017-07-11 Facebook, Inc. Systems and methods for mapping and routing based on clustering
US10353923B2 (en) * 2014-04-24 2019-07-16 Ebay Inc. Hadoop OLAP engine
US10078684B2 (en) 2014-09-26 2018-09-18 Oracle International Corporation System and method for query processing with table-level predicate pushdown in a massively parallel or distributed database environment
US10380114B2 (en) 2014-09-26 2019-08-13 Oracle International Corporation System and method for generating rowid range-based splits in a massively parallel or distributed database environment
US10089357B2 (en) * 2014-09-26 2018-10-02 Oracle International Corporation System and method for generating partition-based splits in a massively parallel or distributed database environment
US10387421B2 (en) 2014-09-26 2019-08-20 Oracle International Corporation System and method for generating size-based splits in a massively parallel or distributed database environment
US10528596B2 (en) 2014-09-26 2020-01-07 Oracle International Corporation System and method for consistent reads between tasks in a massively parallel or distributed database environment
US10089377B2 (en) 2014-09-26 2018-10-02 Oracle International Corporation System and method for data transfer from JDBC to a data warehouse layer in a massively parallel or distributed database environment
US10394818B2 (en) 2014-09-26 2019-08-27 Oracle International Corporation System and method for dynamic database split generation in a massively parallel or distributed database environment
US10180973B2 (en) 2014-09-26 2019-01-15 Oracle International Corporation System and method for efficient connection management in a massively parallel or distributed database environment
FR3031203B1 (fr) 2014-12-24 2017-03-24 Bull Sas Methode d'ordonnancement de taches au niveau des noeuds d'un cluster informatique, ordonnanceur de taches et cluster associes
US10810175B2 (en) 2016-03-31 2020-10-20 King.Com Ltd. Storing segmented data
WO2019010245A1 (en) * 2017-07-03 2019-01-10 Leadcrunch, Inc. METHOD AND SYSTEM FOR CREATING AND UPDATING ENTITY VECTORS
US11010363B2 (en) 2018-04-05 2021-05-18 Sap Se Complementing existing tables while grouping tables in a distributed database
US11003693B2 (en) * 2018-04-05 2021-05-11 Sap Se Grouping tables with existing tables in a distributed database
US11544294B2 (en) 2020-12-10 2023-01-03 Sap Se Distributing tables in a distributed database using consolidated grouping sources
US11914624B2 (en) * 2020-12-10 2024-02-27 Coupang Corp. Systems and methods for managing connections in scalable clusters
EP4016320A1 (en) * 2020-12-21 2022-06-22 Dassault Systèmes A hybrid shadow paging for storing a database
CN113742459B (zh) * 2021-11-05 2022-03-04 北京世纪好未来教育科技有限公司 词汇展示方法、装置、电子设备及存储介质
US11954134B2 (en) * 2021-12-08 2024-04-09 Sap Se Visualization of complex hierarchy data with interactive adjustments

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1097544A (ja) * 1996-09-20 1998-04-14 Hitachi Ltd データベース処理システム
US6647372B1 (en) * 1999-12-02 2003-11-11 Forecourt Communications Group Method and apparatus for using prior activities to improve the probability of completing transactions for a customer in a retail environment
US7653605B1 (en) * 2005-04-15 2010-01-26 Science Applications International Corporation Method of and apparatus for automated behavior prediction

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1338601C (en) 1987-10-09 1996-09-17 Douglas Wyche Caldwell Relational database representation with relational database operation capability
US5742806A (en) 1994-01-31 1998-04-21 Sun Microsystems, Inc. Apparatus and method for decomposing database queries for database management system including multiprocessor digital data processing system
GB9604522D0 (en) 1996-03-02 1996-05-01 Univ Strathclyde Databases
US6507846B1 (en) 1999-11-09 2003-01-14 Joint Technology Corporation Indexing databases for efficient relational querying
US7178100B2 (en) 2000-12-15 2007-02-13 Call Charles G Methods and apparatus for storing and manipulating variable length and fixed length data elements as a sequence of fixed length integers
US20030004971A1 (en) 2001-06-29 2003-01-02 Gong Wen G. Automatic generation of data models and accompanying user interfaces
US8694352B1 (en) * 2003-04-22 2014-04-08 Reflexis Systems, Inc. System and method for providing handheld field force data gathering automation in a big box retail environment
US7472107B2 (en) 2003-06-23 2008-12-30 Microsoft Corporation Integrating horizontal partitioning into physical database design
US7243110B2 (en) 2004-02-20 2007-07-10 Sand Technology Inc. Searchable archive
US7443295B2 (en) * 2005-06-28 2008-10-28 Media Cart Holdings, Inc. Media enabled advertising shopping cart system
US20070050379A1 (en) 2005-08-25 2007-03-01 International Business Machines Corporation Highlighting entities in a display representation of a database query, results of a database query, and debug message of a database query to indicate associations
CN101535990B (zh) 2006-08-23 2013-05-29 创新解决方案公司 高效的搜索结果更新机制
US20080062944A1 (en) 2006-09-08 2008-03-13 Motorola, Inc. Apparatus and Method For Automatic Repeat Request Signalling With Reduced Retransmission Indications in a Wireless VoIP Communication System
US8204985B2 (en) 2008-04-28 2012-06-19 Alcatel Lucent Probabilistic aggregation over distributed data streams
EP2340476A4 (en) 2008-09-05 2012-05-09 Arcsight Inc EFFECTIVE STORAGE OF LOG DATA WHILE SUPPORTING AN INTERROGATION
US9218379B2 (en) * 2013-03-15 2015-12-22 Informatica Llc Method, apparatus, and computer-readable medium for efficiently performing operations on distinct data values

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1097544A (ja) * 1996-09-20 1998-04-14 Hitachi Ltd データベース処理システム
US6647372B1 (en) * 1999-12-02 2003-11-11 Forecourt Communications Group Method and apparatus for using prior activities to improve the probability of completing transactions for a customer in a retail environment
US7653605B1 (en) * 2005-04-15 2010-01-26 Science Applications International Corporation Method of and apparatus for automated behavior prediction

Also Published As

Publication number Publication date
GB2528405A (en) 2016-01-20
DE112014001361T5 (de) 2015-11-26
GB201517897D0 (en) 2015-11-25
JP2017224331A (ja) 2017-12-21
CA2906669A1 (en) 2014-09-18
US20140279853A1 (en) 2014-09-18
US9672272B2 (en) 2017-06-06
US9218379B2 (en) 2015-12-22
US20160070779A1 (en) 2016-03-10
CA2906669C (en) 2019-11-26
WO2014143791A1 (en) 2014-09-18
GB2528405B (en) 2021-06-23
JP6192800B2 (ja) 2017-09-06
JP6258549B2 (ja) 2018-01-10

Similar Documents

Publication Publication Date Title
JP6258549B2 (ja) 個別のデータ値に対する効率よい演算を行うための方法、装置、並びにコンピュータ可読媒体
US11755575B2 (en) Processing database queries using format conversion
US10120930B2 (en) Identifying entity mappings across data assets
US9053160B2 (en) Distributed, real-time online analytical processing (OLAP)
US9323815B2 (en) Star and snowflake schemas in extract, transform, load processes
CN108228817A (zh) 数据处理方法、装置和系统
US11720543B2 (en) Enforcing path consistency in graph database path query evaluation
US20180357278A1 (en) Processing aggregate queries in a graph database
AU2018282315B2 (en) Relation aware aggregation (RAA) on normalized datasets
CN111414410B (zh) 数据处理方法、装置、设备和存储介质
US9606997B2 (en) Inferred operations for data analysis
JP2005018778A (ja) ディメンジョン属性およびディメンジョン当たり複数の階層を使用するオンライン分析処理のためのシステムおよび方法
US20190303478A1 (en) Path query evaluation in graph databases
CN104050264A (zh) 一种生成sql语句的方法和装置
US10558652B2 (en) Merging multiproviders in a database calculation scenario
US20230066110A1 (en) Creating virtualized data assets using existing definitions of etl/elt jobs

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170314

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170314

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20170314

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20170322

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170328

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170628

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170711

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170808

R150 Certificate of patent or registration of utility model

Ref document number: 6192800

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250