いくつかのデータベースシステムは、データセットに対して頻繁パターン(frequent pattern、FP)分析を行って、データ内の共通で興味深い(interesting)パターンを決定することができる。これらの興味深いパターンは、マーケティング分析や販売追跡などの多くの顧客関係管理(CRM)オペレーションのユーザに有用な可能性がある。いくつかの場合、データベースシステムは、データベースシステムの構成に基づいて1つ以上のデータセットのFPを自動的に決定することができる。他の場合に、データベースシステムは、ユーザデバイスから(例えば、ユーザデバイスにおけるユーザ入力に基づいて)コマンドを受信して、データセットのFPを決定してもよい。データベースシステムは、1つ以上のFPマイニング手法を使用して、データセット内のFPを決定することができる。例えば、システムの効率を改善するため、及びパターンを決定する際のレイテンシをより短くするために、データベースシステムは、データセットを、FP木(FP-tree)及びリンクリスト(linked list)を含む凝縮データ構造(condensed data structure)に変換してもよく、FP成長モデルを使用してFPを導出してもよい。この凝縮データ構造は、元のデータセット(例えば、関係データベーステーブルとして記憶されたデータセット)がサポートできるより高速なFPマイニングと、決定されたパターンのより高速なクエリをサポートし得る。例えば、データベースシステム、又は、より具体的にはデータベースシステムのデータ処理マシン(例えば、ベアメタルマシン、仮想マシン、又はコンテナ)は、データセットの2回の通過だけで凝縮データ構造を生成することができる。凝縮データ構造からのFPの決定は、元のデータからFPを決定するよりも約1~2桁速いスケールであり得るため、データベースシステムは、FP及び対応する興味深いパターンを導出することに伴うレイテンシを有意に改善し得る。さらに、これらのFPがデータ処理マシンでローカルに記憶され、処理される場合、データ処理マシンがデータベースシステムのデータベースに当たる必要なくローカルにクエリを取り扱うことができるので、(例えば、処理又は表示のためにユーザデバイスにより)パターンについてクエリすることに伴うレイテンシを大きく低減し得る。
しかしながら、フルのFP木と、FP木からマイニングされたFPの完全なセットを生成し、ローカルに記憶することは、データ処理マシンにおいて大量のメモリ及び処理リソースを使用する可能性がある。いくつかの場合、データ処理マシンは、特にかなり大規模なデータセット(例えば、ユーザ又はユーザデバイスにより実行されたウェブブラウザアクティビティ又は他のアクティビティに関連する情報を含むデータセット)では、このFP分析手順を取り扱うのに十分な利用可能メモリ又は処理リソースを含まない場合がある。大規模データセットを取り扱うために、データベースシステムは、幾つかのデータ処理マシンにわたりFP分析手順を分散させることができる。各データ処理マシンは、データのサブセットを受信することができ、サブセットをFP分析のために効率的なデータ構造(例えば、ローカルFP木及びリンクリスト)に別個に変換することができる。次いで、マシンは、これらのローカルに記憶されたデータ構造に対してFPマイニングを別個に実行することができる。各データ処理マシンに送られるデータの量は、その特定のデータ処理マシンに対して識別された利用可能なリソースに基づいてもよい。
データ処理マシンにおいてリソースを効率的に利用するために、データベースシステムは、データセットを分散させて、データサブセットのデータオブジェクトとデータ属性との間の組み合わせを制限することができる。例えば、データオブジェクトの数と、これらデータオブジェクトのデータ属性の数との双方が大きい(例えば、何らかのしきい値より大きい)場合、FP分析は、組み合わせ爆発を経験し、データのFP分析を取り扱うために必要なメモリ及び処理リソースを大きく増加させる可能性がある。データベースシステムは、代わりに、データの分散に従ってデータをデータサブセットにグループ化し(group)てもよく、それにより、各データサブセットは、データオブジェクトの特定の動的な又は予め決定されたしきい数を超えるか、あるいはデータ属性の特定の動的な又は予め決定されたしきい数を超えるが、双方は超えないことが可能である。このようにして、データベースシステムは、各データサブセット内の組み合わせ論(combinatorics)を制限するような方法で、データセットをデータサブセットに分割することができる。この手法は、各データ処理マシンにおけるリソースの効率的な利用を可能にし、レイテンシを改善し、FPマイニング手順のオーバーヘッドを低減し得る。
本開示の態様は、最初、オンデマンドデータベースサービスをサポートする環境の文脈で説明される。本開示のさらなる態様が、データベースシステム及びプロセスフローを参照して説明される。本開示の態様はさらに、分散システムのFP分析に関連する装置図、システム図、及びフローチャートにより例示され、これらを参照して説明される。
図1は、本開示の様々な態様による分散システムのFP分析をサポートするクラウドコンピューティングのシステム100の一例を示す。システム100は、クラウドクライアント105、コンタクト110、クラウドプラットフォーム115、及びデータセンタ120を含む。クラウドプラットフォーム115は、パブリック又はプライベートクラウドネットワークの一例であり得る。クラウドクライアント105は、ネットワーク接続135を介してクラウドプラットフォーム115にアクセスすることができる。ネットワークは、インターネットなどのトランスファーコントロールプロトコル及びインターネットプロトコル(TCP/IP)を実装してもよく、あるいは他のネットワークプロトコルを実装してもよい。クラウドクライアント105は、サーバ(例えば、クラウドクライアント105‐a)、スマートフォン(例えば、クラウドクライアント105‐b)、又はラップトップ(例えば、クラウドクライアント105‐c)などのユーザデバイスの一例であり得る。他の例において、クラウドクライアント105は、デスクトップコンピュータ、タブレット、センサ、又は通信を生成、分析、送信、又は受信することができる他のコンピューティングデバイス若しくはシステムでもよい。いくつかの例において、クラウドクライアント105は、ビジネス、エンタープライズ、非営利、スタートアップ、又は任意の他の組織タイプの一部であるユーザにより操作され得る。
クラウドクライアント105は、複数のコンタクト110と対話することができる。対話130は、クラウドクライアント105とコンタクト110との間の通信、機会、購入、販売、又は任意の他の対話を含んでもよい。対話130にデータが関連づけられてもよい。クラウドクライアント105は、クラウドプラットフォーム115にアクセスして、対話130に関連づけられたデータを記憶し、管理し、処理することができる。いくつかの場合、クラウドクライアント105は、関連づけられたセキュリティ又は許可レベルを有してもよい。クラウドクライアント105は、関連づけられたセキュリティ又は許可レベルに基づいてクラウドプラットフォーム115内の特定のアプリケーション、データ、及びデータベース情報へのアクセスを有してもよく、他のものへのアクセスを有さなくてもよい。
コンタクト110は、本人自身で、又は電話、電子メール、ウェブ、テキストメッセージ、メール、若しくは任意の他の適切な形式の対話(例えば、対話130‐a、130‐b、130‐c、及び130‐d)を介して、クラウドクライアント105と対話することができる。対話130は、ビジネス対ビジネス(business-to-business、B2B)対話、又はビジネス対消費者(business-to-consumer、B2C)対話であり得る。コンタクト110は、顧客、潜在顧客、リード、クライアント、又は何らかの他の適切な用語で参照されてもよい。いくつかの場合、コンタクト110は、サーバ(例えば、コンタクト110‐a)、ラップトップ(例えば、コンタクト110‐b)、スマートフォン(例えば、コンタクト110‐c)、又はセンサ(例えば、コンタクト110‐d)などのユーザデバイスの一例であり得る。他の場合には、コンタクト110は、別のコンピューティングシステムでもよい。いくつかの場合、コンタクト110は、ユーザ又はユーザのグループにより操作され得る。ユーザ又はユーザのグループは、ビジネス、製造業者、又は任意の他の適切な組織に関連づけられてもよい。
クラウドプラットフォーム115は、オンデマンドデータベースサービスをクラウドクライアント105に提供することができる。いくつかの場合、クラウドプラットフォーム115は、マルチテナントデータベースシステムの一例であり得る。この場合、クラウドプラットフォーム115は、単一のソフトウェアインスタンスで複数のクラウドクライアント105にサービス提供することができる。しかしながら、他のタイプのシステムが実現されてもよく、これらに限られないがクライアント‐サーバシステム、モバイルデバイスシステム、及びモバイルネットワークシステムが含まれる。いくつかの場合、クラウドプラットフォーム115は、CRMソリューションをサポートすることができる。これには、販売、サービス、マーケティング、コミュニティ、分析、アプリケーション、及びモノのインターネットに対するサポートを含んでもよい。クラウドプラットフォーム115は、ネットワーク接続135を通じてクラウドクライアント105からコンタクト対話130に関連づけられたデータを受信することができ、該データを記憶し、分析することができる。いくつかの場合、クラウドプラットフォーム115は、コンタクト110とクラウドクライアント105との間の対話130から直接データを受信してもよい。いくつかの場合、クラウドクライアント105は、クラウドプラットフォーム115上で動作するアプリケーションを開発することができる。クラウドプラットフォーム115は、リモートサーバを使用して実現されてもよい。いくつかの場合、リモートサーバは、1つ以上のデータセンタ120に配置されてもよい。
データセンタ120は、複数のサーバを含み得る。複数のサーバは、データの記憶、管理、及び処理のために使用できる。データセンタ120は、接続140を介してクラウドプラットフォーム115から、又はクラウドクライアント105、若しくはコンタクト110とクラウドクライアント105との間の対話130から直接、データを受信することができる。データセンタ120は、セキュリティの目的で複数の冗長性を利用することができる。いくつかの場合、データセンタ120に記憶されたデータは、異なるデータセンタ(図示されていない)でのデータのコピーによりバックアップされてもよい。
サブシステム125は、クラウドクライアント105、クラウドプラットフォーム115、及びデータセンタ120を含み得る。いくつかの場合、サブシステム125のコンポーネントのうち任意のもので、又はこれらのコンポーネントの組み合わせで、データ処理が生じてもよい。いくつかの場合、サーバがデータ処理を行ってもよい。サーバは、クラウドクライアント105でもよく、あるいはデータセンタ120に配置されてもよい。
いくつかのデータセンタ120は、データセットに対してFP分析を行って、データ内の共通で興味深いパターンを決定することができる。いくつかの場合、データセンタ120は、データセンタ120の構成に基づいて1つ以上のデータセットについてFPを自動的に決定し得る。他の場合、データセンタ120は、クラウドクライアント105から(例えば、クラウドクライアント105へのユーザ入力に基づいて)コマンドを受信して、データセットのFPを決定してもよい。データセンタ120は、1つ以上のFPマイニング手法を使用して、データセット内のFPを決定することができる。例えば、システムの効率を改善し、パターンを決定する際のレイテンシをより短くするために、データセンタ120は、データセットを、FP木及びリンクリストを含む凝縮されたデータ構造に変換してもよく、FP成長モデルを使用してFPを導出してもよい。この凝縮データ構造は、元のデータセット(例えば、関係データベーステーブルとして記憶されたデータセット)がサポートするより高速なFPマイニングをサポートし得、また、決定されたパターンのより高速なクエリをサポートし得る。例えば、データセンタ120、又は、より具体的にはデータセンタ120のデータ処理マシン(例えば、ベアメタルマシン、仮想マシン、又はコンテナ)は、データセットの2回の通過だけで凝縮データ構造を生成することができる。凝縮データ構造からのFPの決定は、元のデータセットからFPを決定するよりも約1~2桁速いスケールであるため、データセンタ120は、FP及び興味深いパターンを導出することに伴うレイテンシを有意に改善し得る。さらに、これらのFPがデータ処理マシンでローカルに記憶され、処理される場合、データ処理マシンがデータベースに当たる必要なくローカルにクエリを取り扱うことができるので、(例えば、処理又は表示のためにクラウドクライアント105により)パターンを取り出すためのクエリレイテンシを大きく低減し得る。
しかしながら、フルのFP木と、FP木からマイニングされたFPの完全なセットを生成し、ローカルに記憶することは、データ処理マシンにおいて大量のメモリ及び処理リソースを使用する可能性がある。いくつかの場合、データ処理マシンは、特にかなり大規模なデータセットでは、このFP分析手順を取り扱うのに十分な利用可能メモリ又は処理リソースを含まない場合がある。例えば、あるシステム内の又はテナントに対するユーザ又はユーザデバイスにより実行されるアクティビティに関連する情報を含むデータセットは、数千又は数百万のデータオブジェクト(例えば、ユーザデバイス)と、それらデータオブジェクトの各々の数千又は数百万のデータ属性(例えば、ウェブアクティビティ)を含み、FPマイニングに対してかなり大規模なデータセットを結果としてもたらし得る。このような大規模データセットを取り扱うために、データセンタ120は、幾つかのデータ処理マシンにわたりFP分析手順を分散させることができる。各データ処理マシンは、データのサブセットを受信することができ、サブセットをFP分析のために効率的なデータ構造に別個に変換することができる。次いで、マシンは、これらのローカルに記憶されたデータ構造に対してFPマイニングを別個に実行することができる。各データ処理マシンに送られるデータの量は、その特定のデータ処理マシンによりサポートされる利用可能なリソースに基づいてもよい。
データ処理マシンにおいてリソースを効率的に利用するために、データセンタ120は、データセットを分散させて、データサブセットのデータオブジェクトとデータ属性との間の組み合わせを制限することができる。例えば、データオブジェクトの数と、これらデータオブジェクトのうち1つ以上のデータ属性の数との双方が大きい場合、FP分析は、組み合わせ爆発を経験し、このデータのFP分析を取り扱うことに関連づけられたメモリ及び処理オーバーヘッドを大きく増加させる可能性がある。データセンタ120は、代わりに、データの分散に従ってデータをデータサブセットにグループ化してもよく、それにより、各データサブセットは、データオブジェクトのしきい数又はデータ属性のしきい数のいずれかを超えるが、双方は超えないことが可能である。このようにして、データセンタ120は、データセットを、各データサブセット内の組み合わせ論を制限するデータサブセットに分割することができる。この手法は、各データ処理マシンにおけるリソースの効率的な利用を可能にし、レイテンシを改善し、FPマイニング手順のオーバーヘッドを低減し得る。データ処理マシンでFP分析手順を取り扱うために使用される処理及びメモリリソースを制限することにより、データセンタ120は、大規模データセットを分析するために必要とされるデータ処理マシンの数を最小化又は低減し得る。
いくつかの従来のシステムでは、FPマイニングは単一のデータ処理マシンで実行される場合があり、これは、データベースシステムがパターンについて分析することができるデータセットのサイズを制限する可能性がある。他の従来のシステムでは、FPマイニングのための変換されたデータ又はFPマイニング手順の結果は、より大きいメモリ容量をサポートするために、データ処理マシンの外部に記憶される場合がある。しかしながら、データ処理マシンの外部へのデータの記憶は、データ処理マシンが分析のためにFP情報をロードするたびデータ処理マシンが取り出し要求で外部のデータ記憶装置に当たるので、データをクエリするときにレイテンシヒット(latency hit)を招く。
対照的に、システム100は、FPマイニングを複数のデータ処理マシンにわたり分散させることができるデータベースシステム(例えば、データセンタ120)をサポートする。この分散手順は、データセットが(例えば、システム100内で進行中のユーザ又はユーザデバイスアクティビティに起因して)サイズが増大し続ける場合に、かなり大規模なデータセットの取り扱いと水平スケーリング手法をサポートすることができる。さらに、データ処理マシンにFP分析結果をローカルに記憶することは、(例えば、マシンの外部のデータソースからパターンを導出し又は取り出すことと対照的に)ローカルにパターンを導出して取り出すことに伴うレイテンシを有意に低減し、かなり大規模なデータセットに対するFP分析を実現可能にし得る。さらに、データベースシステムは、各データ処理マシンにおけるメモリ及び処理オーバーヘッドを制限するために、効率的な分散手法を利用する。例えば、共通性と属性リスト長との間のトレードオフを利用してデータサブセット内のデータを分散させることにより、データベースシステムは、各個々のデータ処理マシンにおける組み合わせ爆発を制限し得る。これは、データパターンを導出、記憶、及びサービス提供するために必要とされるデータ処理マシンの数を低減し、各データ処理マシンにおけるリソースの量を低減し得る。
当業者には、本開示の1つ以上の態様が、上述のものとは別の問題をさらに又は代わりに解決するためにシステム100において実施されてもよいことを理解されたい。さらに、本開示の態様は、本明細書に記載される「従来の」システム又はプロセスに技術的改善を提供することができる。しかしながら、明細書及び添付の図面は、開示の態様の実施から生じる例示的な技術的改善のみを含んでおり、したがって、特許請求の範囲内で提供される技術的改善の全てを表しているわけではない。
図2は、本開示の態様による分散システムのFP分析をサポートするFP分析手順を実現するデータベースシステム200の一例を示す。データベースシステム200は、図1を参照して説明したデータセンタ120の一例であり得、データベース210及びデータ処理マシン205を含み得る。いくつかの場合、データベース210は、トランザクションデータベース、時系列データベース、マルチテナントデータベース、又はこれら若しくは他のタイプのデータベースの何らかの組み合わせの一例であり得る。データ処理マシン205は、データベースサーバ、アプリケーションサーバ、サーバクラスタ、仮想マシン、コンテナ、又はこれら若しくはデータベースシステム200のためのデータ処理をサポートする他のハードウェア若しくはソフトウェアコンポーネントの何らかの組み合わせの一例であり得る。データ処理マシン205は、処理コンポーネント及びローカルデータストレージコンポーネントを含んでもよく、ローカルデータストレージコンポーネントは、データ処理マシン205のメモリリソースをサポートし、磁気テープ、磁気ディスク、光ディスク、フラッシュメモリ、メインメモリ(例えば、ランダムアクセスメモリ(RAM))、メモリキャッシュ、クラウドストレージシステム、又はこれらの組み合わせの一例であり得る。データ処理マシン205は、(例えば、ユーザ入力コマンドに基づいて、又はデータベースシステム200若しくはサポートされるFPベースのアプリケーションの構成に基づいて自動的に)データセット215に対してFP分析を実行することができる。
本明細書に記載されているように、データベースシステム200は、凝縮データ構造230を利用するパターンマイニングのためのFP成長モデルを実装することができる。凝縮データ構造230は、FP木235と、リンク250を介してFP木235のノード245にリンクされたリンクリスト240を含み得る。しかしながら、データベースシステム200は、記載のものとは別のFP分析手法及びデータ構造を代わりに使用してもよいことを理解されたい。例えば、データベースシステム200は、候補セット生成及びテスト手法、ツリー投影手法、又はこれら若しくは他のFP分析手法の任意の組み合わせを使用してもよい。他の場合に、データベースシステム200は、本明細書に記載されたものと同様であるが記載されたものに対してより少ない、さらなる、又は代わりのプロセスを含むFP分析手順を実行してもよい。記載される分散プロセスは、FP成長手法及び凝縮データ構造230を用いて、又は任意の他のFP分析手法若しくはデータ構造を用いて実施されてよい。
データ処理マシン205は、処理のためにデータセット215を受信することができる。例えば、データベース210が、データセット215をFP分析のためにデータ処理マシン205に送信してもよい。データセット215は、複数のデータオブジェクトを含むことができ、各データオブジェクトは、識別子(ID)220と、データ属性のセットを含む。データセット215は、データベース210内の全てのデータオブジェクトを含んでもよく、あるいは、特定のテナントに(例えば、データベース210がマルチテナントデータベースである場合)、特定の期間に(例えば、属性が、対応するタイムスタンプを有するイベント又はアクティビティに関連づけられている場合)、又はユーザ入力値に基づくデータオブジェクトの何らかの他のサブセットに関連づけられたデータオブジェクトを含んでもよい。例えば、いくつかの場合、ユーザデバイスを操作するユーザは、データセット215のための1つ以上のパラメータを選択することができ、ユーザデバイスは、パラメータを(例えば、データベース又はアプリケーションサーバを介して)データベース210に送信することができる。データベース210は、受信したユーザ入力に基づいてデータセット215をデータ処理マシン205に送信することができる。
データセット215内の各データオブジェクトは、ID220に基づいて識別することができ、1つ以上のデータ属性に関連づけることができる。これらのデータ属性は、そのデータオブジェクトに固有でもよく、あるいは複数のデータオブジェクトにわたり共通でもよい。いくつかの場合、ID220は、そのデータオブジェクトに固有のテキスト文字列の一例であり得る。例えば、データオブジェクトがデータベースシステム200内のユーザに対応する場合、ID220は、ユーザ識別番号、ユーザ名、社会保障番号、又は各値がユーザに固有である何らかの他の同様の形式のIDでもよい。データ属性は、データオブジェクト(例えば、ユーザ)により実行されるアクティビティ又はデータオブジェクトの特性の例であり得る。例えば、データ属性は、ユーザにより操作されるユーザデバイスに関連する情報(例えば、インターネットプロトコル(IP)アドレス、操作されるデバイスの総数など)、ユーザデバイスの1つを操作する間にユーザにより実行されるアクティビティに関連する情報(例えば、ウェブ検索履歴、ソフトウェアアプリケーション情報、電子メール通信など)、ユーザに具体的に関連する情報(例えば、ユーザプロファイルからの情報、ユーザに関連づけられた値又はスコアなど)、又はこれらの組み合わせを含んでもよい。図2に示すように、これらの異なるデータ属性は、異なる文字(例えば、属性{a}、{b}、{c}、{d}、及び{e})により表すことができる。
図示される例示的なケースでは、データセット215は、5つのデータオブジェクトを含み得る。ID220-aを有する第1のデータオブジェクトはデータ属性{b,c,a,e}を含むことができ、ID220-bを有する第2のデータオブジェクトはデータ属性{c,e}を含むことができ、ID220-cを有する第3のデータオブジェクトはデータ属性{d,a,b}を含むことができ、ID220-dを有する第4のデータオブジェクトはデータ属性{a,c,b}を含むことができ、ID220-eを有する第5のデータオブジェクトはデータ属性{a}を含むことができる。一例において、各データオブジェクトは、異なるユーザ又はユーザデバイスに対応し得、各データ属性は、ユーザ又はユーザデバイスにより実行されるアクティビティ又はアクティビティパラメータに対応し得る。例えば、属性{a}が、特定の購入をオンラインで行うユーザに対応してもよく、一方、属性{b}が、ユーザデバイスのウェブブラウザで特定のウェブサイトを訪れるユーザに対応してもよい。これらのデータ属性は、ユーザの特性に関連するバイナリ値(例えば、ブール値)でもよい。
データ処理マシン205は、データセット215を受信することができ、データセット215に基づいて凝縮データ構造230を構築することができる。構築プロセスは、データセット215の2回の通過(passes through)を含んでもよく、そこで、データ処理マシン205は、各通過中にデータセット215内の各データオブジェクトのデータ属性を処理する。データセット215の第1の通過において、データ処理マシン205は属性リスト225を生成することができる。属性リスト225は、データセット215に含まれるデータ属性を、それらの対応するサポート(すなわち、データセット215内の出現頻度)と共に含み得る。いくつかの場合、この第1の通過の間、データ処理マシン205は、属性のサポート及び最小サポートしきいξに基づいて1つ以上の属性を除外する(filter out)ことができる。これらの場合、結果として生じる、属性リスト225に含まれるデータ属性は、頻繁アイテム又は頻繁属性と呼ぶことができる。データ処理マシン205は、サポートの降順に属性リスト225内のデータ属性を順序付けることができる。例えば、図示のように、データ処理マシン205は、属性{a}がデータセット215内で4回出現し、属性{c}及び{b}が3回出現し、属性{e}が2回出現し、属性{d}が1回出現すると識別することができる。最小サポートしきいξが2に等しい場合、データ処理マシン205は、属性{d}のサポートが最小サポートしきいより小さいため、属性リスト225から{d}を除去してよい(あるいはその他の方法で、属性リスト225に{d}を含まなくてよい)。いくつかの場合、ユーザは、ユーザインターフェースの入力機能を使用して最小サポートしきいξを指定することができる。データ処理マシン205は、属性リスト225をメモリ(例えば、一時メモリ又は永続メモリ)に記憶し得る。
データセット215の第2の通過において、データ処理マシン205は、効率的なFPマイニングのために凝縮データ構造230を生成することができ、ここで、凝縮データ構造230は、FP木235とリンクリスト240を含む。データ処理マシン205は、FP木235のルートノード245-aを生成することができ、ルートノード245-aに「ヌル」値でラベル付けすることができる。次いで、データセット215内の各データオブジェクトについて、データ処理マシン205は、属性リスト225の順序に従って(例えば、サポートの降順で)属性フィールドを順序付けることができ、FP木235の分岐を追加又は更新することができる。例えば、データ処理マシン205は、ID220-aを有する第1のデータオブジェクトのデータ属性を、下降するサポート{a,c,b,e}の順序で順序付けてもよい。FP木235に子ノード245が存在しないため、データ処理マシン205は、この順序付けられたデータ属性のセットを表す新しい子ノード245を生成することができる。順序付けられたセット内の第1の属性のためのノードは、ルートノード245-aの子ノード245-bとして作成され、第2の属性のためのノードは、この子ノード245-bからのさらなる子ノード245-cとして作成され、以下同様である。例えば、データ処理マシンは、下降するサポートの順序に基づいて属性{a}のためのノード245-b、属性{c}のためのノード245-c、属性{b}のためのノード245-d、及び属性{e}のためのノード245-eを作成してもよい。FP木235内に新しいノード245を作成するとき、データ処理マシン205はさらに、ノード245のカウントを1に設定してもよい(例えば、ノード245により表されるデータ属性の1つのインスタンスを示す)。
次いで、データ処理マシン205は、ID220-bを有する第2のデータオブジェクトを処理することができる。データ処理マシン205は、(例えば、属性リスト225で決定されたサポートの降順に基づいて)データ属性を{c,e}として順序付けることができ、このパターンに対応するルートノード245-aから生じる任意のノード245についてFP木235をチェックすることができる。この順序付けられたセットの第1のデータ属性は{c}であり、ルートノード245-aは{c}のための子ノード245を有さないので、データ処理マシン205は、属性{c}のための、及び1のカウントを有する、ルートノード245-aからの新しい子ノード245-fを生成することができる。さらに、データ処理マシン205は、この{c}ノード245-fから子ノード245-gを生成することができ、ここで、ノード245-gは属性{e}を表し、1のカウントを設定される。
プロセスの次のステップとして、データ処理マシン205は、ID220-cを有するデータオブジェクトの属性を{a,b,d}として順序付けることができ、この順序付けられたセットをFP木235に追加することができる。いくつかの場合、データ属性{d}が、(例えば、最小サポートしきいξと比較して)有意に大きい十分なサポート値を有さない場合、データ処理マシン205は、データオブジェクトの属性のリスト内の{d}データ属性(及び、「頻繁」属性として分類されない任意の他のデータ属性)を無視してもよい。いずれの場合にも、データ処理マシン205は、この順序付けられたセットに対応するルートノード245-aから生じる任意のノード245についてFP木235をチェックすることができる。属性{a}のための子ノード245-bがルートノード245-aから生じ、ID220-cを有するデータオブジェクトの順序付けられたセットの第1の属性が{a}であるため、データ処理マシン205は、新しいノード245を作成するのでなく、ノード245-bのカウントをインクリメントするよう決定することができる。例えば、データ処理マシン205は、2のカウントを有する属性{a}を示すようにノード245-bを変更してもよい。ノード245-bからの唯一の子ノード245が属性{c}のための子ノード245-cであり、ID220-cを有するデータオブジェクトの順序付けられたセット内の次の属性が属性{b}であるので、データ処理マシン205は、属性{b}に対応するノード245-bからの新しい子ノード245-hを生成することができ、ノード245-hに1のカウントを割り当てることができる。属性{d}が属性リスト225に含まれる場合、データ処理マシン205は、{d}のための子ノード245-iをさらに作成してもよい。
このプロセスは、データセット215内の各データオブジェクトに対して継続することができる。例えば、例示されたケースでは、ID220-dを有するデータオブジェクトは、ノード245-b、245-c、及び245-dのカウントをインクリメントし得、ID220-eを有するデータオブジェクトは、ノード245-bのカウントをインクリメントし得る。データセット215内の各データオブジェクトからの属性、又は最小サポートしきいを実装するときには頻繁属性が、FP木235内に表現されると、FP木235は、データ処理マシン205のメモリ内に完成し得る(例えば、効率的な処理及びFPマイニングのためにローカルメモリに記憶され、あるいはメモリ容量の改善のために外部に記憶され得る)。データセット215の第1の通過において順序付けられた属性リスト225を生成することにより、データ処理マシン205は、データを表すために必要とされる分岐の数を最小化し得、なぜならば、最頻データ属性がルートノード245-aの最も近くに含まれるためである。これは、FP木235のメモリへの効率的な記憶をサポートし得る。さらに、属性リスト225を生成することにより、データ処理マシン205は、データセット215に基づいてFP木235を作成するときに頻繁でない属性を識別し、これらの頻繁でない属性を除去することができる。
FP木235に追加で、凝縮データ構造230は、リンクリスト240を含むことができる。リンクリスト240は、属性リスト225からの属性の全て(例えば、データセット215内の属性の全て、又はデータセット215内の頻繁属性の全て)を含んでもよく、各属性はリンク250に対応し得る。テーブル内では、これらのリンク250はノードリンクのヘッドの例であり得、ノードリンクは、順次又は並列でFP木235の1つ以上のノード245を指す。例えば、属性{a}のためのリンクリスト240のエントリは、リンク250-aを介して属性{a}のためのFP木235内の各ノード245にリンクされ得る(本ケースでは、属性{a}はノード245-bにリンクされる)。特定の属性についてFP木235内に複数のノード245が存在する場合、ノード245は順次リンクされてもよい。例えば、リンクリスト240の属性{c}は、リンク250-bを介してノード245-c及び245-fに順次リンクされ得る。同様に、リンク250-cは、リンクリスト240の属性{b}をノード245-d及び245-hにリンクし得、リンク250-dは、属性{e}をノード245-e及びノード245-gにリンクし得る。属性リスト225に含まれるほど十分に頻繁な場合、リンク250-eが属性{d}をノード245-iにリンクしてもよい。
いくつかの場合、データ処理マシン205は、FP木235の完成に続いてリンクリスト240を構築することができる。他の場合に、データ処理マシン205は、リンクリスト240とFP木235を同時に構築してもよく、あるいはデータセット215から各データオブジェクト表現をFP木235に追加した後にリンクリスト240を更新してもよい。データ処理マシン205はさらに、リンクリスト240をFP木235と共にメモリに記憶することができる。いくつかの場合、リンクリスト240はヘッダテーブルと呼ばれることがある(例えば、ノードリンクの「ヘッド」がこのテーブルにあるため)。これら2つの構造は一緒に、データ処理マシン205における効率的なFPマイニングのための凝縮データ構造230を形成する。凝縮データ構造230は、データセット215からのFPマイニングに関連する全ての情報(例えば、最小サポートしきいξのための)を含み得る。このようにして、データセット215をFP木235及び対応するリンクリスト240に変換することにより、完全かつコンパクトなFPマイニングをサポートすることができる。
データ処理マシン205は、パターン成長法、FP成長を実行して、凝縮データ構造230に圧縮された情報からFPを効率的にマイニングすることができる。いくつかの場合、データ処理マシン205は、データセット215のFPの完全なセットを決定し得る。他の場合に、データ処理マシン205は、(例えば、ユーザインターフェースにおけるユーザ入力に基づいて)興味深いデータ属性を受信してもよく、そのデータ属性の全てのパターンを決定してもよい。さらに他の場合に、データ処理マシン205は、データ属性又はデータセット215の単一の「最も興味深い」パターンを決定してもよい。「最も興味深い」パターンは、データ属性の最も高い出現率、最も長いリスト、又はデータ属性の高い出現率と長いリストの何らかの組み合わせを有するFPに対応し得る。例えば、「最も興味深い」パターンは、最も高い出現率と共に属性しきいより多数のデータ属性を有するFPに対応してもよく、あるいは、「最も興味深い」パターンは、出現率と属性リストの長さとの間のトレードオフを示す式又は表に基づいて決定されてもよい。
データ属性のパターンの全てを決定するために、データ処理マシン205は、リンク250のヘッドから開始し、その属性のノード245の各々へノードリンク250を辿ることができる。FPは、最小サポートしきいξに基づいて定義されてもよく、これは、凝縮データ構造230を構築するために使用されるのと同じ最小サポートしきいでもよい。例えば、ξ=2の場合、パターンは、それがデータセット215内で2回以上現れる場合のみ「頻繁」とみなされる。データセット215のためのFPの完全なセットを識別するために、データ処理マシン205は、リンクリスト240内の属性に対して昇順でマイニング手順を実行することができる。属性{d}がξ=2の最小サポートしきいを通過しないので、データ処理マシン205は、データ属性{e}を用いてFP成長法を開始することができる。
データ属性{e}のためのFPを決定するために、データ処理マシン205は、属性{e}のためのリンク250-dを辿ることができ、双方が属性{e}に対応するノード245-e及びノード245-gを識別することができる。データ処理マシン205は、(例えば、識別されたノード245-e及び245-gのカウント値を合計することに基づいて)データ属性{e}がFP木235内で2回出現し、したがって、(e:2)の最も簡素なFPを少なくとも有する(すなわち、属性{e}を含むパターンがデータセット215内で2回出現する)と識別し得る。データ処理マシン205は、識別されたノード245へのパス、{a、c、b、e}及び{c、e}を決定することができる。これらのパスの各々は、FP木235内で1回出現する。例えば、属性{a}のためのノード245-bが4のカウントを有するとしても、この属性{a}は、(例えば、ノード245-eに対する1のカウントにより示されるように)属性{e}と一緒には1回だけ現れる。これらの識別されたパターンは、属性{e}のパスプレフィックス(path prefixes)、すなわち{a:1,c:1,b:1}と{c:1}を示すことができる。まとめて、これらのパスプレフィックスは、データ属性{e}のサブパターンベース又は条件付きパターンベースと呼ばれることがある。決定された条件付きパターンベースを使用し、データ処理マシン205は、属性{e}のための条件付きFP木を構築することができる。すなわち、データ処理マシン205は、上述したものと同様の手法を使用してFP木を構築することができ、FP木は、属性{e}を含む属性組み合わせのみを含む。最小サポートしきいξと、識別されたパスプレフィックス{a:1,c:1,b:1}及び{c:1}に基づいて、データ属性{c}のみがサポートチェックを通過し得る。したがって、データ属性{e}に対する条件付きFP木は、単一の分岐を含むことができ、ルートノード245は、2のカウントを有する属性{c}のための単一の子ノード245を有する(例えば、パスプレフィックスの双方が属性{c}を含むため)。この条件付き木に基づいて、データ処理マシン205はFP(ce:2)を導出することができる。すなわち、属性{c}及び{e}は、データセット215内で一緒に2回出現し、一方で属性{e}は、データセット215内でいずれかの他のデータ属性と共に少なくとも2回出現しない。1つより大きい子ノード245を有する条件付きFP木では、データ処理マシン205は、再帰的マイニングプロセスを実施して、調査されている属性を含む全ての適格なFPを決定することができる。データ処理マシン205は、データ属性{e}のためのFP(e:2)及び(ce:2)を返すことができる。いくつかの場合、データ処理マシン205は、調査されているデータ属性を単に含むパターンをFPとしてカウントしなくてもよく、これらの場合、(ce:2)だけを返してもよい。
このFP成長手順は、属性{b}、次いで属性{c}で継続し、属性{a}で終わることができる。各データ属性について、データ処理マシン205は、条件付きFP木を構築し得る。さらに、FP成長手順がリンクリスト240を介して昇順で実行されるため、データ処理マシン205は、FPを決定するとき、リンクされたノード245の子ノード245を無視することができる。例えば、属性{b}について、リンク250-cは、ノード245-d及び245-hを示し得る。{b}のためのパスを識別するとき、データ処理マシン205は、リンクされたノード245-d又は245-hを過ぎてFP木235を横断しなくてもよく、なぜならば、木においてこれより下のノード245のいずれのパターンも前のステップで既に決定されているためである。例えば、データ処理マシン205は、ノード245-dのパターンを決定するときにノード245-eを無視してもよく、なぜならば、ノード245-eを含むパターンが前に導出されているためである。FP成長手順及びこれらの条件付きFP木に基づいて、データ処理マシン205は、リンクリスト240内のデータ属性の残りのためのさらなるFPを識別することができる。例えば、再帰的マイニングプロセスを使用し、ξ=2の最小サポートしきいに基づいて、データ処理マシン205は、FPの完全なセット、すなわち、(e:2)、(ce:2)、(b:3)、(cb:2)、(ab:3)、(acb:2)、(c:3)、(ac:2)、及び(a:4)を決定し得る。
いくつかの場合、データ処理マシン205は、結果として生じるパターンをローカルデータストレージコンポーネントにローカルに記憶することができる。さらに又は代わりに、データ処理マシン205は、FP分析から結果として生じるパターンを記憶のためにデータベース210に、又はユーザデバイスに(例えば、さらなる処理のために、又はユーザインターフェース内に表示するために)送信してもよい。いくつかの場合、データ処理マシン205は、「最も興味深い」FP(例えば、パターンに含まれるデータ属性の数に基づいて(acb:2))を決定することができ、「最も興味深い」FPの指標をユーザデバイスに送信することができる。他の場合に、ユーザデバイスが、調査のための属性(例えば、データ属性{c})の指標を送信してもよく、データ処理マシン205が、応答において、データ属性{c}を含むFPの1つ以上を返してもよい。
データセット215を凝縮データ構造230に変換することにより、データ処理マシン205は、処理及びメモリリソースの観点並びに時間の観点でかなりコストがかかる可能性のある、多数の候補パターンを生成及びテストする必要を回避することができる。かなり大規模なデータベースシステム200、データベース210、又はデータセット215では、FP木235はデータセット215のサイズよりはるかに小さい可能性があり、条件付きFP木はさらに小さい可能性がある。例えば、大規模データセット215をFP木235に変換することにより、データを約100倍縮小することができ、FP木235を条件付きFP木に変換することにより、再度、データを約100倍縮小することができ、FPマイニングのためのかなり凝縮されたデータ構造230が結果としてもたらされる。
いくつかの場合、FP分析手順は、FP分析又はデータ取り扱いの改善のためのさらなる手法をサポートすることができる。例えば、データベースシステム200は、分散システム、差分サポート、イプシロン(ε)閉包、又はこれらの組み合わせのための手法をサポートしてもよい。いくつかの場合、データセット215は、単一のデータ処理マシン205に対して大きすぎる可能性がある。例えば、データセット215から結果として生じる凝縮データ構造230が、データ処理マシン205のメモリに適合しない場合があり、あるいは、凝縮データ構造230に対するFP分析手順により返されるFPセットが、データ処理マシン205における処理に対して大きすぎる場合がある。したがって、データベースシステム200は、複数のデータ処理マシン205を起動し(spin up)、データセット215を異なるデータ処理マシン205にわたり分散させてもよい。分散の粒度は、各データ処理マシン205がそれに割り当てられたデータ量を取り扱うことを可能にし得る。いくつかの場合、分散は、各データオブジェクトのデータ属性の数、データ処理マシン205の利用可能なメモリリソース能力、又は双方に基づくことができる。各データ処理マシン205は、受信したデータのサブセットからローカルの凝縮データ構造230を作成してもよく、凝縮データ構造230が成功裏に記憶されると、メモリからデータのサブセットを除去してもよい。データサブセットを除去することにより、他の機能又はプロセスのためにデータ処理マシン205で利用可能なメモリを増加させることができる。
図3は、本開示の態様による分散型FP分析手順を実現するデータベースシステム300の一例を示す。データベースシステム300は、図1及び図2を参照して説明したデータベースシステム200又はデータセンタ120の一例であり得る。データベースシステム300は、複数のデータ処理マシン305(例えば、データ処理マシン305-a、データ処理マシン305-b、及びデータ処理マシン305-c)を含むことができ、これらは、図2を参照して説明したデータ処理マシン205の例であり得る。さらに、データベースシステム300はデータベース310を含むことができ、これは、データベース210の一例であり得、データ処理マシン305によりサービス提供され得る。データベースシステム300内の各データ処理マシン305は、独立して動作することができ、別個のデータストレージコンポーネントを含むことができる。データベースシステム300が、単一のデータ処理マシン305での処理又はメモリストレージに対して大きすぎるFP分析のためのデータセット315を受信し又は取り出した場合、データベース310は、データセット315をFP分析のために複数のデータ処理マシン305にわたり分散させることができる。各データ処理マシン305の処理及びメモリリソースを効率的に利用するために、データベースシステム300は、データセット315を分散させるための特定の手法を実施することができる。
例えば、データベースシステム300は、データベース310からデータセット315を受信することができる。データセット315は、幾つかのデータオブジェクト320を含むことができ、各データオブジェクトは、ID325及びデータ属性リスト330を含む。一例において、データオブジェクトは、対応するユーザIDを有するユーザ又はユーザデバイスの例であり得、データ属性は、ユーザにより実行される特定のプロパティ又はユーザに関連づけられた特性を有するアクティビティの例であり得る。いくつかの場合、データ属性は「アイテム」と呼ばれることがある。
データベースシステム300は、データセット315の概算サイズを決定することができる。例えば、データベースシステム300は、データセット315に関連づけられた凝縮データ構造を記憶し、かつこれらの凝縮データ構造をFPマイニングするのに必要とされるメモリ及び/又は処理リソースを推定するために、アルゴリズム又はルックアップテーブルを記憶してもよい。実際のサイズは、データセット315内の(例えば、データオブジェクト320とデータ属性リスト330からの属性との間の)組み合わせ論に基づいてもよい。これらの組み合わせ論のために必要とされるリソースは、データセット315の長さ(例えば、属性リスト330の長さ)及び幅(例えば、データオブジェクト320の数)に基づいて大きく増加する可能性がある。しかしながら、データ量に対して関与する組み合わせ論を制限するために、データベースシステム300は、データセット315のこれらのパラメータの1つを制限することができる。例えば、長さは比較的大きいが幅はそうでないデータセット、又は幅は比較的大きいが長さはそうでないデータセットは、メモリ及び処理リソースを効率的に利用し得る。
データベースシステム300は、データ処理マシン305における利用可能なリソースに基づいて、データセット315を幾つかのデータサブセット335に分散させることができる。例えば、データベースシステム300は、幾つかのデータ処理マシン305を起動して、それらの間でデータセット315の概算の又は正確なサイズを取り扱うことができる。例えば、データベースシステム300は、FP分析取り扱いのために3つのデータ処理マシン305(例えば、データ処理マシン305-a、305-b、及び305-c)を起動してもよく、したがって、データセット315のデータオブジェクト320を3つのデータサブセット335-a、335-b、及び335-cにグループ化してもよい。いくつかの場合、データベースシステム300は、データ処理マシン305の利用可能なメモリ及び/又は処理容量を決定することができる。データベースシステム300は、マシンの容量を推定してもよく、あるいはデータ処理マシン305から容量の指標を受信してもよい。いくつかの場合、異なるデータ処理マシン305は、(例えば、マシンのタイプ、マシン上で実行している他のプロセス、どんなデータがマシンに既に記憶されているか等に基づいて)異なる量の利用可能なリソースを有し得る。データベースシステム300は、各データ処理マシン305の特定のメモリ及び/又は処理しきいに従ってデータサブセット335を形成してもよい。
データベースシステム300は、データオブジェクト320の分散に基づいてデータオブジェクト320のグループ化を実行することができる。例えば、一般に、より共通したデータ属性は、通常、より短い属性リスト330の部分であり得、一方、よりまれなデータ属性は、通常、より長い属性リスト330の部分であり得る。データベースシステム300は、この原理に従ってデータオブジェクト320をグループ化することができる。例えば、データベースシステム300は、次第により共通したデータ属性を有するデータオブジェクトのグループを反復的に形成してもよい。このようにして、データベースシステム300は、よりまれなデータ属性を有するデータサブセット335-a、比較的より共通したデータ属性を有するデータサブセット335-b、及び最も共通したデータ属性を有するデータサブセット335-cを生成することができる。これらのデータサブセット335は、処理のために対応するデータ処理マシン305に送信することができる。さらに又は代わりに、データベースシステム300は、他の分散手法に基づいてデータオブジェクト320のグループ化を実行してもよい。例えば、データベースシステム300は、属性リスト330の長さに基づいて、データオブジェクト320を異なるデータサブセット335にソートすることができる。他の例では、データベースシステム300は、データオブジェクト320の特定のソートパラメータに基づいて、又はデータオブジェクトID325に基づいて、データオブジェクト320を異なるデータサブセット335にソートしてもよい。
各データ処理マシン305は、それ自体のデータ圧縮及びFP分析を行うことができる。例えば、データ処理マシン305-aは、データサブセット335-aに基づいて、他のデータ処理マシン305及びデータサブセット335から独立して、FP木340-a(及び、対応するリンクリスト)を生成し得る。同様に、データ処理マシン305-bは、データサブセット335-bに基づいてFP木340-bを生成し得、データ処理マシン305-cは、データサブセット335-cに基づいてFP木340-cを生成し得る。このようにして、データベースシステム300は、FP成長処理のためにフルのFP木を生成するのでなく、FP木340及びFP分析結果がメモリ及びサポート処理に適合し得るように幾つかのデータ処理マシン305にわたり作業を分散させることができる。データ処理マシン305は、属性リストの共通性又は長さによりデータオブジェクト320をグループ化し、各データサブセット335内のデータオブジェクトの数を変化させることにより、データ処理マシン305のメモリ又は処理能力を超えることなくデータサブセット335に対して組み合わせ論を効率的に実行することができる。さらに、データオブジェクト320が、各データオブジェクト320内の1つ以上のデータ属性の共通性に基づいてデータサブセット335に、及び対応してデータ処理マシン305にソートされる場合、類似のデータ属性を有するデータオブジェクト320が、同じデータサブセット335にグループ化される可能性があり得る。したがって、分散FPマイニングは、複数のデータ処理マシン305のリソースを効率的に使用しながら、初期データセット315内のFPの大きいパーセンテージ(例えば、特定の許容しきいを上回る)を識別することができる。
ユーザデバイスは、FP分析に関連する情報についてデータベースシステム300にクエリすることができる。例えば、ユーザデバイスは、「最も興味深い」FP、又は特定のデータ属性若しくはデータオブジェクトに関連するFPのセットを要求してもよい。いくつかの場合、データ処理マシン305は、FPマイニング結果をローカルに記憶することができる。これらの場合、データベースシステム300は、要求されたパターンについてFP分析に使用されたデータ処理マシン305の各々にクエリしてもよい。あるいは、データベースシステム300は、そのデータサブセット335において興味深いデータ属性を受信したデータベース処理マシン305を決定し、決定されたデータベース処理マシン305に、パターンについてクエリしてもよい。他の場合に、データ処理マシン305は、識別されたFPを記憶のためにデータベース310に送信することができる。このような場合、ユーザクエリは、データベース310で集中的に処理することができ、データベースは、ユーザデバイスから受信したクエリメッセージに応答して、要求されたFPを送信することができる。ユーザデバイスは、クエリ結果をユーザインターフェースに表示してもよく、ユーザインターフェース内の1つ以上の取り出されたFPに関連する特定の情報を表示してもよく、取り出されたFPに対してデータ処理又は分析を実行してもよく、あるいはこれらのアクションの何らかの組み合わせを実行してもよい。
図4は、本開示の態様による分散システムのFP分析をサポートするプロセスフロー400の一例を示す。プロセスフロー400は、データベースシステム405及び複数のデータ処理マシン410(例えば、データ処理マシン410-a及びデータ処理マシン410-b)を含むことができ、これらは、仮想マシン、コンテナ、又はベアメタルマシンの例であり得る。これらは、図1~図3を参照して説明した対応するデバイスの例であり得る。いくつかの場合、データ処理マシン410は、データベースシステム405のコンポーネントでもよい。FP分析の間、データベースシステム405は、データ処理マシン410-a及び410-bの間でデータを分散させて、利用可能なメモリ及び処理リソースを効率的に利用し得る。いくつかの場合、データベースシステム405は、処理するデータ量とデータ処理マシンにおける利用可能なメモリリソースに依存して、データをさらなるデータ処理マシン410に分散させてもよい。いくつかの実装において、本明細書に記載されるプロセスは、異なる順序で実行されてもよく、あるいはデバイスにより実行される1つ以上のさらなる又は代わりのプロセスを含んでもよい。
415において、データベースシステム405が、FP分析のためのデータセットを受信し得る。いくつかの場合、データベースシステム405は、(例えば、ユーザ入力、データ処理マシン410上で実行しているアプリケーション、又はデータベースシステム405の構成に基づいて)データベースからデータセットを取り出すことができる。このデータセットは複数のデータオブジェクトを含み得、各データオブジェクトは幾つかの(a number of)データ属性を含む。各データオブジェクトは、IDをさらに含むことができる。いくつかの場合、データオブジェクトは、ユーザ又はユーザデバイスに対応し得、データ属性は、ユーザ又はユーザデバイスにより実行されるアクティビティ、ユーザ又はユーザデバイスにより実行されるアクティビティのパラメータ、又はユーザ又はユーザデバイスの特性に対応し得る。一具体例において、データベースシステム405は、擬似リアルタイムFP分析手順を実行してもよい。この例では、データベースシステム405は、FP分析のための更新されたデータセットを周期的又は非周期的に受信することができる(例えば、1日に1回、1週間に1回など)。これらの更新されたデータセットには、新しいデータオブジェクト、新しいデータ属性、又は双方を含み得る。例えば、新しいデータ属性は、擬似リアルタイムFP分析手順で最後のデータセットを受信してからの時間間隔内にユーザにより実行されたアクティビティに対応してもよい。
420において、データベースシステム405が、データベースシステム405内又はそれに関連づけられたデータ処理マシン410のセット(例えば、データ処理マシン410-a及び410-b)の利用可能なメモリリソース能力を識別し得る。いくつかの場合、データベースシステム405は、データ処理マシン410のセットの処理能力をさらに識別してもよい。データベースシステム405は、リソース能力要求をデータ処理マシン410に送信することにより、又はデータ処理マシン410のリソース能力を推定することにより、データ処理マシン410のメモリ及び/又は処理能力を識別することができる。いくつかの例において、利用可能なメモリリソースを識別することは、データ処理マシン410の各々についてマシン特有のメモリリソースを識別することを含み得る。いくつかの場合、利用可能なメモリリソースの初期決定に基づいて、データベースシステム405は、1つ以上のさらなるデータ処理マシン410を起動して、FP分析のためのデータセットのサイズを取り扱うことができる。
425において、データベースシステム405が、データセットのデータオブジェクトを複数のデータサブセットにグループ化し得、グループ化は、データオブジェクトの各々のデータ属性の数と、識別された利用可能なメモリリソース能力に基づく。データベースシステム405は、データ処理マシン410の数に等しい数のデータサブセットを形成することができ、各データサブセットは、それがメモリに適合し、かつデータ処理マシン410のセットのうち特定のデータ処理マシン410により処理できるように、サイズ設定される。データベースシステム405は、データオブジェクトの属性の数又はサブセット内のデータオブジェクトの数のいずれかが潜在的に大きいが双方がそうではないデータサブセットを構築することができる。このようにして、データベースシステム405は、各データサブセット内の組み合わせ論を制限し、各データサブセットに対するFP分析の実行に関連づけられた処理及びメモリコストを低減し得る。一例において、データベースシステム405は、各データサブセットが、データオブジェクトしきいより少数のデータオブジェクト、又はサブセットの各データオブジェクトについて、データ属性しきいより少数のデータ属性を含むように、データオブジェクトをグループ化し得る。データサブセットを形成するために、必ずしも双方ではないがこれら2つのしきいのうち1つを使用することにより、データベースシステム405は、各サブセットに関連づけられたオブジェクトと属性との間の組み合わせ論を制限することができる。別の例において、データベースシステム405は、一連の属性共通性しきい、一連の属性リスト長しきい、一連のデータサブセットサイズしきい、又はこれらの何らかの組み合わせを実装して、複数のデータ処理マシン410のためのデータサブセットを決定してもよい。
430において、データベースシステム405が、データサブセットに従ってデータセットのデータオブジェクトを複数のデータ処理マシン410に分散させ得る。例えば、データベースシステム405は、第1のデータサブセットをデータ処理マシン410-aに、第2のデータサブセットをデータ処理マシン410-bに送信することができる。これらのデータサブセットは具体的に、マシンのメモリ又は処理制限を超えないように、データ処理マシン410に分散されてもよい。
435において、データ処理マシン410が、受信したデータサブセットに対してFP分析手順を別個に実行し得る。例えば、データ処理マシン410-aは、第1のデータサブセットに対してFP分析手順を実行することができ、データ処理マシン410-bは、第2のデータサブセットに対してFP分析手順を実行することができる。このFP分析手順は、各データ処理マシン410が、その特定のデータ処理マシン410に対応するデータサブセットのためのFP木及びリンクリストを含む凝縮データ構造を生成し、この凝縮データ構造をローカルにメモリに、又はデータ処理マシン410に関連づけられた外部メモリストレージに記憶することを含み得る。これらの凝縮データ構造は、データ処理マシン410によるFP分析に使用されてもよい。このように、データベースシステム405は、複数のデータ処理マシン410のメモリ及び処理リソースを効率的に利用しながら、FP分析作業を複数の異なるマシンにわたり分散させることができる。
図5は、本開示の態様による分散システムのFP分析をサポートする装置505のブロック図500を示す。装置505は、入力モジュール510、分散モジュール515、及び出力モジュール545を含み得る。装置505は、プロセッサをさらに含んでもよい。これらのコンポーネントの各々は、互いに(例えば、1つ以上のバスを介して)通信し得る。いくつかの場合、装置505は、ユーザ端末、データベースサーバ、又は複数のコンピューティングデバイスを含むシステム、例えば、分散データ処理マシンを備えたデータベースシステムなどの一例であり得る。
入力モジュール510は、装置505の入力信号を管理することができる。例えば、入力モジュール510は、モデム、キーボード、マウス、タッチスクリーン、又は類似のデバイスとの対話に基づいて入力信号を識別し得る。これらの入力信号は、他のコンポーネント又はデバイスにおけるユーザ入力又は処理に関連づけられてもよい。いくつかの場合、入力モジュール510は、iOS(登録商標)、ANDROID(登録商標)、MS-DOS(登録商標)、MS-WINDOWS(登録商標)、OS/2(登録商標)、UNIX(登録商標)、LINUX(登録商標)、又は他の既知のオペレーティングシステムなどのオペレーティングシステムを利用して、入力信号を取り扱うことができる。入力モジュール510は、これらの入力信号のアスペクトを処理のために装置505の他のコンポーネントに送ってもよい。例えば、入力モジュール510は、分散システムのFP分析をサポートするために、入力信号を分散モジュール515に送信することができる。いくつかの場合、入力モジュール510は、図7を参照して説明される入力/出力(I/O)コントローラ715のコンポーネントであり得る。
分散モジュール515は、受信コンポーネント520、メモリリソース識別器525、データグループ化コンポーネント530、分散コンポーネント535、及びFP分析コンポーネント540を含み得る。分散モジュール515は、図6及び図7を参照して説明される分散モジュール605又は710の態様の一例であり得る。
分散モジュール515及び/又はその様々なサブコンポーネントの少なくとも一部は、ハードウェア、プロセッサにより実行されるソフトウェア、ファームウェア、又はこれらの任意の組み合わせで実装することができる。プロセッサにより実行されるソフトウェアで実装される場合、分散モジュール515及び/又はその様々なサブコンポーネントの少なくとも一部の機能は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、又は他のプログラマブル論理デバイス、ディスクリートゲート又はトランジスタ論理、ディスクリートハードウェアコンポーネント、又は本開示に記載の機能を実行するように設計されたこれらの任意の組み合わせにより実行されてもよい。分散モジュール515及び/又はその様々なサブコンポーネントの少なくとも一部は様々な位置に物理的に配置されてもよく、機能の部分が1つ以上の物理デバイスにより異なる物理的位置に実装されるように分散されることが含まれる。いくつかの例において、分散モジュール515及び/又はその様々なサブコンポーネントの少なくとも一部は、本開示の様々な態様に従って、別個かつ区別可能なコンポーネントでもよい。他の例において、分散モジュール515及び/又はその様々なサブコンポーネントの少なくとも一部は1つ以上の他のハードウェアコンポーネントと組み合わせられてもよく、本開示の様々な態様に従って、これらに限られないがI/Oコンポーネント、トランシーバ、ネットワークサーバ、別のコンピューティングデバイス、本開示に記載の1つ以上の他のコンポーネント、又はこれらの組み合わせが含まれる。
受信コンポーネント520は、データベースシステム(例えば、装置505)においてFP分析のためのデータセットを受信することができ、データセットはデータオブジェクトのセットを含み、データオブジェクトのセットのうち各々は幾つかのデータ属性を含む。いくつかの場合、受信コンポーネント520は、入力モジュール510の態様又はコンポーネントでもよい。
メモリリソース識別器525は、データベースシステム内のデータ処理マシンのセットの利用可能なメモリリソース能力を識別することができる。いくつかの場合、メモリリソース識別器525は、データ処理マシンのセットの利用可能な処理リソース能力をさらに識別してもよい。
データグループ化コンポーネント530は、データオブジェクトのセットをデータサブセットのセットにグループ化することができ、グループ化は、データオブジェクトのセットのうち各々のデータ属性の数と、識別された利用可能なメモリリソース能力に基づく。
分散コンポーネント535は、データオブジェクトのセットをデータ処理マシンのセットに分散させることができ、データ処理マシンのセットの各データ処理マシンは、データサブセットのセットのうち1つのデータサブセットを受信する。FP分析コンポーネント540は、データ処理マシンのセットの各データ処理マシンで別個に、データサブセットのうち受信した1つのデータサブセットに対するFP分析手順を実行することができる。
出力モジュール545は、装置505の出力信号を管理することができる。例えば、出力モジュール545は、分散モジュール515などの装置505の他のコンポーネントから信号を受信し得、これらの信号を他のコンポーネント又はデバイスに送信し得る。いくつかの特定の例では、出力モジュール545は、ユーザインターフェースでの表示のため、データベース又はデータストアでの記憶のため、サーバ又はサーバクラスタでのさらなる処理のため、又は任意数のデバイス又はシステムでの任意の他のプロセスのために出力信号を送信することができる。いくつかの場合、出力モジュール545は、図7を参照して説明されるI/Oコントローラ715のコンポーネントでもよい。
図6は、本開示の態様による分散システムのFP分析をサポートする分散モジュール605のブロック図600を示す。分散モジュール605は、本明細書に記載される分散モジュール515又は分散モジュール710の態様の例であり得る。分散モジュール605は、受信コンポーネント610、メモリリソース識別器615、データグループ化コンポーネント620、分散コンポーネント625、FP分析コンポーネント630、データ構造生成器635、及びローカルストレージコンポーネント640を含み得る。これらのモジュールの各々は、互いに(例えば、1つ以上のバスを介して)直接又は間接的に通信することができる。
受信コンポーネント610は、データベースシステムにおいてFP分析のためのデータセットを受信することができ、データセットはデータオブジェクトのセットを含み、データオブジェクトのセットのうち各々は幾つかのデータ属性を含む。いくつかの場合、受信コンポーネント610は、擬似リアルタイムFP分析手順に基づいてFP分析のための更新されたデータセットをデータベースシステムでさらに受信してもよい。いくつかの例において、データオブジェクトのセットは、ユーザ、ユーザのセット、ユーザデバイス、ユーザデバイスのセット、又はこれらの組み合わせを含み得る。さらに又は代わりに、データ属性は、データオブジェクトにより実行されるアクティビティ、データオブジェクトにより実行されるアクティビティのパラメータ、データオブジェクトの特性、又はこれらの組み合わせに対応し得る。いくつかの例では、データ属性はバイナリ値を含む。
メモリリソース識別器615は、データベースシステム内のデータ処理マシンのセットの利用可能なメモリリソース能力を識別することができる。いくつかの場合、データ処理マシンのセットは、仮想マシン、コンテナ、データベースサーバ、サーバクラスタ、又はこれらの組み合わせを含んでもよい。メモリリソース識別器615は、識別された利用可能なメモリリソース能力に基づいてFP分析のためのデータ処理マシンのセットを起動することができる。いくつかの場合、分散モジュール605が擬似リアルタイムFP分析手順をサポートする場合、メモリリソース識別器615は、データベースシステム内のデータ処理マシンのセットの更新された利用可能なメモリリソース能力を識別してもよく、識別された更新された利用可能なメモリリソース能力と、擬似リアルタイムFP分析手順のための受信した更新されたデータセットのサイズに基づいて、データベースシステムの1つ以上のさらなるデータ処理マシンを起動するかどうかを決定してもよい。擬似リアルタイム手順は、「ライブ」手順(例えば、更新が特定の時間間隔しきい未満で発生し、それにより、手順が絶えず更新しているように見える)、又は周期的、半周期的、若しくは非周期的に更新する任意の手順に対応し得る。
いくつかの場合、データ処理マシンのセットの利用可能なメモリリソース能力を識別することは、メモリリソース識別器615がメモリリソース能力要求のセットをデータ処理マシンのセットに送信し、データ処理マシンのセットの各データ処理マシンから、各データ処理マシンの利用可能なメモリリソースのそれぞれの指標を受信することを含む。いくつかの例において、メモリリソース識別器615は、メモリリソース能力要求のスーパーセット(superset)をデータ処理マシンのスーパーセットに送信し、データ処理マシンのスーパーセットの各データ処理マシンから、データ処理マシンのスーパーセットの各データ処理マシンについての利用可能なメモリリソースのそれぞれの指標を受信し、データ処理マシンのセットの利用可能なメモリリソースの指標に基づいてFP分析のためのデータ処理マシンのセットを選択することができる。
他の場合に、メモリリソース識別器615は、データ処理マシンのセットの各データ処理マシンのタイプ、データ処理マシンのセットの各データ処理マシン上で実行している他のプロセス、データ処理マシンのセットの各データ処理マシンに記憶される他のデータ、又はこれらの組み合わせに基づいて、データ処理マシンのセットにおける利用可能なメモリリソースを推定することにより、データ処理マシンのセットの利用可能なメモリリソース能力を識別することができる。
データグループ化コンポーネント620は、データオブジェクトのセットをデータサブセットのセットにグループ化することができ、グループ化は、データオブジェクトのセットのうち各々のデータ属性の数と、識別された利用可能なメモリリソース能力に基づく。いくつかの場合、グループ化は、データグループ化コンポーネント620が各データ属性の出現頻度を決定することを含み、グループ化は、各データ属性について決定された出現頻度に基づく。さらに又は代わりに、データサブセットのセットの各データサブセットは、データオブジェクトしきいより少数のデータオブジェクトか、又はデータサブセットの各データオブジェクトについて、データ属性しきいより少数のデータ属性かのいずれかを含み得る。
分散コンポーネント625は、データオブジェクトのセットをデータ処理マシンのセットに分散させることができ、データ処理マシンのセットの各データ処理マシンは、データサブセットのセットのうち1つのデータサブセットを受信する。
FP分析コンポーネント630は、データ処理マシンのセットの各データ処理マシンで別個に、データサブセットのセットのうち受信した1つのデータサブセットに対するFP分析手順を別々に実行することができる。
データ構造生成器635は、データ処理マシンのセットの各データ処理マシンにおいて、データサブセットのセットのうち受信した1つのデータサブセットに対応するFP木及びリンクリストを含む凝縮データ構造を(例えば、FP分析手順の一部として)生成することができる。
ローカルストレージコンポーネント640は、データ処理マシンのセットの各データ処理マシンのローカルメモリに凝縮データ構造を記憶することができる。いくつかの場合、FP分析コンポーネント630は、データ処理マシンのセットの各データ処理マシンにおいてローカルに、ローカルストレージコンポーネント640により記憶された凝縮データ構造に対するFPマイニング手順を実行することができる。FP分析コンポーネント630は、データ処理マシンのセットの各データ処理マシンにおいて、FPマイニング手順の結果として、FPのセットを識別することができる。
いくつかの場合、受信コンポーネント610は、データベースシステムにおいて、ユーザデバイスから、分析のためのデータ属性を示すユーザ要求を受信することができ、FPマイニング手順は、ユーザ要求に基づいて実行される。FP分析コンポーネント630は、ユーザデバイスに対して、ユーザ要求に応答して、FPマイニング手順に基づいて分析のために示されたデータ属性に関連づけられたFPを送信し得る。さらに又は代わりに、FP分析コンポーネント630は、データ処理マシンのセットの各データ処理マシンから、データベースでの記憶のためのFPのセットを送信してもよい。
図7は、本開示の態様による分散システムのFP分析をサポートするデバイス705を含むシステム700の図を示す。デバイス705は、本明細書に記載されるデータベースシステム又は装置505のコンポーネントの一例であり得、あるいは該コンポーネントを含み得る。デバイス705は、分散モジュール710、I/Oコントローラ715、データベースコントローラ720、メモリ725、プロセッサ730、及びデータベース735を含む、通信を送受信するためのコンポーネントを含む双方向データ通信のためのコンポーネントを含むことができる。これらのコンポーネントは、1つ以上のバス(例えば、バス740)を介して電子通信し得る。
分散モジュール710は、本明細書に記載される分散モジュール515又は605の一例であり得る。例えば、分散モジュール710は、図5及び図6を参照して本明細書に記載される方法又はプロセスのいずれかを実行してもよい。いくつかの場合、分散モジュール710は、ハードウェア、プロセッサにより実行されるソフトウェア、ファームウェア、又はこれらの任意の組み合わせで実装されてもよい。
I/Oコントローラ715は、デバイス705の入力信号745及び出力信号750を管理することができる。I/Oコントローラ715は、デバイス705に統合されていない周辺機器をさらに管理してもよい。いくつかの場合、I/Oコントローラ715は、外部周辺機器に対する物理接続又はポートを表すことができる。いくつかの場合、I/Oコントローラ715は、iOS(登録商標)、ANDROID(登録商標)、MS-DOS(登録商標)、MS-WINDOWS(登録商標)、OS/2(登録商標)、UNIX(登録商標)、LINUX(登録商標)、又は他の既知のオペレーティングシステムなどのオペレーティングシステムを利用することができる。他の場合に、I/Oコントローラ715は、モデム、キーボード、マウス、タッチスクリーン、又は類似のデバイスを表し、あるいはこれらと対話することができる。いくつかの場合、I/Oコントローラ715は、プロセッサの一部として実装されてもよい。いくつかの場合、ユーザは、I/Oコントローラ715を介して、又はI/Oコントローラ715により制御されるハードウェアコンポーネントを介して、デバイス705と対話することができる。
データベースコントローラ720は、データベース735内のデータ記憶及び処理を管理することができる。いくつかの場合、ユーザは、データベースコントローラ720と対話することができる。他の場合に、データベースコントローラ720は、ユーザ対話なしに自動的に動作してもよい。データベース735は、単一データベース、分散データベース、複数分散データベース、データストア、データレーク、又は緊急バックアップデータベースの一例であり得る。
メモリ725は、RAM及び読取専用メモリ(ROM)を含み得る。メモリ725は、命令を含むコンピュータ読取可能な、コンピュータ実行可能なソフトウェアを記憶することができ、該命令は、実行されたときに、本明細書に記載される様々な機能をプロセッサに実行させる。いくつかの場合、メモリ725は、とりわけ、周辺コンポーネント又はデバイスとの対話などの基本的なハードウェア又はソフトウェア動作を制御することができる基本入力/出力システム(BIOS)を含み得る。
プロセッサ730は、インテリジェントハードウェアデバイス(例えば、汎用プロセッサ、DSP、中央処理装置(CPU)、マイクロコントローラ、ASIC、FPGA、プログラマブル論理デバイス、ディスクリートゲート又はトランジスタ論理コンポーネント、ディスクリートハードウェアコンポーネント、又はこれらの任意の組み合わせ)を含み得る。いくつかの場合、プロセッサ730は、メモリコントローラを使用してメモリアレイを動作させるように構成され得る。他の場合に、メモリコントローラが、プロセッサ730に統合されてもよい。プロセッサ730は、メモリ725に記憶されたコンピュータ読取可能命令を実行して、様々な機能(例えば、分散システムのFP分析をサポートする機能又はタスク)を実行するように構成され得る。
図8は、本開示の態様による分散システムのFP分析をサポートする方法800を示すフローチャートを示す。方法800の動作は、本明細書に記載されるデータベースシステム又はそのコンポーネントにより実施され得る。例えば、方法800の動作は、図5~図7を参照して説明される分散モジュールにより実行されてもよい。いくつかの例において、データベースシステムは、本明細書に記載の機能を実行するようにデータベースシステムの機能要素を制御するための命令セットを実行し得る。さらに又は代わりに、データベースシステムは、専用ハードウェアを使用して本明細書に記載の機能の態様を実行してもよい。
805において、データベースシステムが、FP分析のためのデータセットを受信し得、データセットはデータオブジェクトのセットを含み、データオブジェクトのセットのうち各々は幾つかのデータ属性を含む。805の動作は、本明細書に記載される方法に従って行うことができる。いくつかの例において、805の動作の態様は、図5~図7を参照して説明される受信コンポーネントにより実行されてもよい。
810において、データベースシステムが、データベースシステム内のデータ処理マシンのセットの利用可能なメモリリソース能力を識別し得る。810の動作は、本明細書に記載される方法に従って行うことができる。いくつかの例において、810の動作の態様は、図5~図7を参照して説明されるメモリリソース識別器により実行されてもよい。
815において、データベースシステムが、データオブジェクトのセットをデータサブセットのセットにグループ化し得、グループ化は、データオブジェクトのセットのうち各々のデータ属性の数と、識別された利用可能なメモリリソース能力に基づく。815の動作は、本明細書に記載される方法に従って行うことができる。いくつかの例において、815の動作の態様は、図5~図7を参照して説明されるデータグループ化コンポーネントにより実行されてもよい。
820において、データベースシステムが、データオブジェクトのセットをデータ処理マシンのセットに分散させ得、データ処理マシンのセットの各データ処理マシンは、データサブセットのセットのうち1つのデータサブセットを受信する。820の動作は、本明細書に記載される方法に従って行うことができる。いくつかの例において、820の動作の態様は、図5~図7を参照して説明される分散コンポーネントにより実行されてもよい。
825において、データベースシステムが、データ処理マシンのセットの各データ処理マシンで別個に、データサブセットのセットのうち受信した1つのデータサブセットに対してFP分析手順を実行し得る。825の動作は、本明細書に記載される方法に従って行うことができる。いくつかの例において、825の動作の態様は、図5~図7を参照して説明されるFP分析コンポーネントにより実行されてもよい。
データベースシステムにおけるFP分析の方法について記載する。当該方法は、データベースシステムで、FP分析のためのデータセットを受信するステップであり、データセットはデータオブジェクトのセットを含み、データオブジェクトのセットのうち各々は幾つかのデータ属性を含む、ステップと、データベースシステム内のデータ処理マシンのセットの利用可能なメモリリソース能力を識別するステップと、データオブジェクトのセットをデータサブセットのセットにグループ化するステップであり、グループ化は、データオブジェクトのセットのうち各々のデータ属性の数と、識別された利用可能なメモリリソース能力に基づく、ステップを含み得る。当該方法は、データオブジェクトのセットをデータ処理マシンのセットに分散させるステップであり、データ処理マシンのセットの各データ処理マシンはデータサブセットのセットのうち1つのデータサブセットを受信する、ステップと、データ処理マシンのセットの各データ処理マシンで別個に、データサブセットのセットのうち受信した1つのデータサブセットに対してFP分析手順を実行するステップをさらに含み得る。
データベースシステムにおけるFP分析のための装置について記載する。当該装置は、プロセッサと、プロセッサと電子通信するメモリと、メモリに記憶された命令を含み得る。命令は、当該装置に、データベースシステムで、FP分析のためのデータセットを受信することであり、データセットはデータオブジェクトのセットを含み、データオブジェクトのセットのうち各々は幾つかのデータ属性を含む、ことと、データベースシステム内のデータ処理マシンのセットの利用可能なメモリリソース能力を識別することと、データオブジェクトのセットをデータサブセットのセットにグループ化することであり、グループ化は、データオブジェクトのセットのうち各々のデータ属性の数と、識別された利用可能なメモリリソース能力に基づく、ことをさせるようにプロセッサにより実行可能であり得る。命令はさらに、当該装置に、データオブジェクトのセットをデータ処理マシンのセットに分散させることであり、データ処理マシンのセットの各データ処理マシンはデータサブセットのセットのうち1つのデータサブセットを受信する、ことと、データ処理マシンのセットの各データ処理マシンで別個に、データサブセットのセットのうち受信した1つのデータサブセットに対してFP分析手順を実行することをさせるようにプロセッサによりさらに実行可能であり得る。
データベースシステムにおけるFP分析のための別の装置について記載する。当該装置は、データベースシステムで、FP分析のためのデータセットを受信する手段であり、データセットはデータオブジェクトのセットを含み、データオブジェクトのセットのうち各々は幾つかのデータ属性を含む、手段と、データベースシステム内のデータ処理マシンのセットの利用可能なメモリリソース能力を識別する手段と、データオブジェクトのセットをデータサブセットのセットにグループ化する手段であり、グループ化は、データオブジェクトのセットのうち各々のデータ属性の数と、識別された利用可能なメモリリソース能力に基づく、手段を含み得る。当該装置は、データオブジェクトのセットをデータ処理マシンのセットに分散させる手段であり、データ処理マシンのセットの各データ処理マシンはデータサブセットのセットのうち1つのデータサブセットを受信する、手段と、データ処理マシンのセットの各データ処理マシンで別個に、データサブセットのセットのうち受信した1つのデータサブセットに対してFP分析手順を実行する手段をさらに含み得る。
データベースシステムにおけるFP分析のためのコードを記憶した非一時的コンピュータ読取可能媒体について記載する。コードは、データベースシステムで、FP分析のためのデータセットを受信することであって、データセットはデータオブジェクトのセットを含み、データオブジェクトのセットのうち各々は幾つかのデータ属性を含み、データベースシステム内のデータ処理マシンのセットの利用可能なメモリリソース能力を識別し、データオブジェクトのセットをデータサブセットのセットにグループ化することであって、グループ化は、データオブジェクトのセットのうち各々のデータ属性の数と、識別された利用可能なメモリリソース能力に基づくように、プロセッサにより実行可能な命令を含み得る。コードは、データオブジェクトのセットをデータ処理マシンのセットに分散させることであって、データ処理マシンのセットの各データ処理マシンはデータサブセットのセットのうち1つのデータサブセットを受信し、データ処理マシンのセットの各データ処理マシンで別個に、データサブセットのセットのうち受信した1つのデータサブセットに対してFP分析手順を実行するように、プロセッサにより実行可能な命令をさらに含み得る。
本明細書に記載される方法、装置、及び非一時的コンピュータ読取可能媒体のいくつかの例において、データ処理マシンのセットの各データ処理マシンで別個にFP分析手順を実行することは、データ処理マシンのセットの各データ処理マシンで、データサブセットのセットのうち受信した1つのデータサブセットに対応するFP木及びリンクリストを含む凝縮データ構造を生成し、データ処理マシンのセットの各データ処理マシンのローカルメモリに凝縮データ構造を記憶する動作、特徴、手段、又は命令を含んでもよい。
本明細書に記載される方法、装置、及び非一時的コンピュータ読取可能媒体のいくつかの例において、データ処理マシンのセットの各データ処理マシンで別個にFP分析手順を実行することは、データ処理マシンのセットの各データ処理マシンでローカルに、凝縮データ構造に対するFPマイニング手順を実行し、データ処理マシンのセットの各データ処理マシンで、FPマイニング手順の結果としてFPのセットを識別する動作、特徴、手段、又は命令を含んでもよい。
本明細書に記載される方法、装置、及び非一時的コンピュータ読取可能媒体のいくつかの例は、データベースシステムで、ユーザデバイスから、分析のためのデータ属性を示すユーザ要求を受信することであって、FPマイニング手順はユーザ要求に基づいて実行される動作、特徴、手段、又は命令をさらに含んでもよい。本明細書に記載される方法、装置、及び非一時的コンピュータ読取可能媒体のいくつかの例は、ユーザデバイスに対して、ユーザ要求に応答して、FPマイニング手順に基づいて分析のための示されたデータ属性に関連づけられたFPを送信する動作、特徴、手段、又は命令をさらに含んでもよい。
本明細書に記載される方法、装置、及び非一時的コンピュータ読取可能媒体のいくつかの例は、データ処理マシンのセットの各データ処理マシンから、データベースにおける記憶のためにFPのセットを送信する動作、特徴、手段、又は命令をさらに含んでもよい。
本明細書に記載される方法、装置、及び非一時的コンピュータ読取可能媒体のいくつかの例において、データオブジェクトのセットをデータサブセットのセットにグループ化することは、各データ属性の出現頻度を決定することであって、グループ化は、各データ属性について決定された出現頻度に基づく動作、特徴、手段、又は命令を含んでもよい。
本明細書に記載される方法、装置、及び非一時的コンピュータ読取可能媒体のいくつかの例において、データサブセットのセットの各データサブセットは、データオブジェクトしきい未満であり得る数のデータオブジェクトか、又はデータサブセットの各データオブジェクトについて、データ属性しきい未満であり得る数のデータ属性かのいずれかを含む。
本明細書に記載される方法、装置、及び非一時的コンピュータ読取可能媒体のいくつかの例において、データ処理マシンのセットの利用可能なメモリリソース能力を識別することは、メモリリソース能力要求のセットをデータ処理マシンのセットに送信し、データ処理マシンのセットの各データ処理マシンから、データ処理マシンのセットの各データ処理マシンの利用可能なメモリリソースのそれぞれの指標を受信する動作、特徴、手段、又は命令を含んでもよい。
本明細書に記載される方法、装置、及び非一時的コンピュータ読取可能媒体のいくつかの例において、メモリリソース能力要求のセットをデータ処理マシンのセットに送信することは、メモリリソース能力要求のスーパーセットをデータ処理マシンのスーパーセットに送信し、データ処理マシンのスーパーセットの各データ処理マシンから、データ処理マシンのスーパーセットの各データ処理マシンの利用可能なメモリリソースのそれぞれの指標を受信する動作、特徴、手段、又は命令を含んでもよい。本明細書に記載される方法、装置、及び非一時的コンピュータ読取可能媒体のいくつかの例は、データ処理マシンのセットの利用可能なメモリリソースの指標に基づいて、FP分析のためのデータ処理マシンのセットを選択する動作、特徴、手段、又は命令をさらに含んでもよい。
本明細書に記載される方法、装置、及び非一時的コンピュータ読取可能媒体のいくつかの例において、データ処理マシンのセットの利用可能なメモリリソース能力を識別することは、データ処理マシンのセットの各データ処理マシンのタイプ、データ処理マシンのセットの各データ処理マシンで実行している他のプロセス、データ処理マシンのセットの各データ処理マシンに記憶された他のデータ、又はこれらの組み合わせに基づいて、データ処理マシンのセットで利用可能なメモリリソースを推定する動作、特徴、手段、又は命令を含んでもよい。
本明細書に記載される方法、装置、及び非一時的コンピュータ読取可能媒体のいくつかの例は、識別された利用可能なメモリリソース能力に基づいて、FP分析のためのデータ処理マシンのセットを起動する動作、特徴、手段、又は命令をさらに含んでもよい。
本明細書に記載される方法、装置、及び非一時的コンピュータ読取可能媒体のいくつかの例は、データベースシステムで、擬似リアルタイムFP分析手順に基づいてFP分析のための更新されたデータセットを受信し、データベースシステム内のデータ処理マシンのセットの更新された利用可能なメモリリソース能力を識別する動作、特徴、手段、又は命令をさらに含んでもよい。本明細書に記載される方法、装置、及び非一時的コンピュータ読取可能媒体のいくつかの例は、識別された更新された利用可能なメモリリソース能力と、更新されたデータセットのサイズに基づいて、データベースシステムの1つ以上のさらなるデータ処理マシンを起動するかどうかを決定する動作、特徴、手段、又は命令をさらに含んでもよい。
本明細書に記載される方法、装置、及び非一時的コンピュータ読取可能媒体のいくつかの例において、データ処理マシンのセットは、仮想マシン、コンテナ、データベースサーバ、サーバクラスタ、又はこれらの組み合わせを含む。
本明細書に記載される方法、装置、及び非一時的コンピュータ読取可能媒体のいくつかの例において、データオブジェクトのセットは、ユーザ、ユーザのセット、ユーザデバイス、ユーザデバイスのセット、又はこれらの組み合わせを含む。本明細書に記載される方法、装置、及び非一時的コンピュータ読取可能媒体のいくつかの例において、データ属性は、データオブジェクトにより実行されるアクティビティ、データオブジェクトにより実行されるアクティビティのパラメータ、データオブジェクトの特性、又はこれらの組み合わせに対応する。本明細書に記載される方法、装置、及び非一時的コンピュータ読取可能媒体のいくつかの例において、データ属性はバイナリ値の例である。
本明細書に記載の方法は可能な実装を説明しており、動作及びステップは再配置又はその他の方法で変更されてもよく、他の実装が可能であることに留意されたい。さらに、2つ以上の方法からの態様が組み合わせられてもよい。
添付の図面に関連して本明細書に記載された説明は例示的な構成を記載しており、実施され得る又は特許請求の範囲の範囲内にある全ての例を表しているわけではない。本明細書で用いられる用語「例示的」は、「例、インスタンス、又は例示として機能する」ことを意味し、「好適」又は「他の例より有利」ではない。詳細な説明は、説明された手法の理解を提供する目的で特定の詳細を含む。しかしながら、これらの手法は、これらの特定の詳細なしに実施され得る。いくつかの例において、良く知られた構造及びデバイスは、説明された例の概念を分かりにくくすることを避けるためにブロック図形式で示されている。
添付の図面において、同様のコンポーネント又は特徴は、同じ参照ラベルを有し得る。さらに、同じタイプの様々なコンポーネントは、ダッシュ及び同様のコンポーネント間を区別する第2のラベルによって参照ラベルを辿ることにより区別され得る。第1の参照ラベルだけが本明細書で用いられている場合、説明は、第2の参照ラベルにかかわらず同じ第1の参照ラベルを有する同様のコンポーネントのうち任意の1つに適用可能である。
本明細書に記載される情報及び信号は、様々な異なる技術及び手法のいずれかを使用して表され得る。例えば、上記説明の全体にわたって参照され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、及びチップは、電圧、電流、電磁波、磁場若しくは磁性粒子、光学場若しくは光学粒子、又はこれらの任意の組み合わせにより表わされてもよい。
本明細書の開示に関連して説明される様々な例示的なブロック及びモジュールは、汎用プロセッサ、DSP、ASIC、FPGA若しくは他のプログラマブル論理デバイス、ディスクリートゲート若しくはトランジスタ論理、ディスクリートハードウェアコンポーネント、又は本明細書に記載の機能を実行するように設計されたこれらの任意の組み合わせを用いて実施又は実行されてもよい。汎用プロセッサはマイクロプロセッサでもよいが、代替的に、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、又はステートマシンでもよい。プロセッサは、コンピューティングデバイスの組み合わせ(例えば、DSPとマイクロプロセッサの組み合わせ、複数のマイクロプロセッサ、DSPコアと関連した1つ以上のマイクロプロセッサ、又は任意の他のそのような構成)として実装されてもよい。
本明細書に記載される機能は、ハードウェア、プロセッサにより実行されるソフトウェア、ファームウェア、又はこれらの任意の組み合わせで実装されてもよい。プロセッサにより実行されるソフトウェアで実装される場合、機能は、コンピュータ読取可能媒体上の1つ以上の命令又はコードとして記憶され、あるいは送信されてもよい。他の例及び実装が、本開示及び別記の特許請求の範囲の範囲内である。例えば、ソフトウェアの性質に起因して、本明細書に記載の機能は、プロセッサにより実行されるソフトウェア、ハードウェア、ファームウェア、ハードウェア配線、又はこれらのいずれかの組み合わせを使用して実装できる。機能を実装する特徴は様々な位置に物理的に配置されてもよく、機能の部分が異なる物理的位置に実装されるように分散されることが含まれる。また、特許請求の範囲を含め、本明細書で用いられるとき、アイテムのリスト(例えば、「のうち少なくとも1つ」又は「のうち1つ以上」などのフレーズにより始められたアイテムのリスト)で用いられる「又は」は、包括的なリストを示し、したがって、例えば、A、B、又はCのうち少なくとも1つのリストは、A、又はB、又はC、又はAB、又はAC、又はBC、又はABC(すなわち、A及びB及びC)を意味する。また、本明細書で用いられるとき、フレーズ「に基づく」は、閉じた条件のセットを指すものと解釈されてはならない。例えば、「条件Aに基づく」と記載されている例示的なステップは、本開示の範囲から逸脱することなく、条件A及び条件Bの双方に基づき得る。換言すれば、本明細書で用いられるとき、フレーズ「に基づく」は、フレーズ「少なくとも部分的に基づく」と同じように解釈されるものとする。
コンピュータ読取可能媒体は、ある場所から他の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む非一時的コンピュータ記憶媒体及び通信媒体の双方を含む。非一時的記憶媒体は、汎用又は専用コンピュータによりアクセス可能な任意の利用可能媒体でもよい。限定でなく例として、非一時的コンピュータ読取可能媒体は、RAM、ROM、電気的消去可能プログラマブル読取専用メモリ(EEPROM)、コンパクトディスク(CD) ROM若しくは他の光ディスク記憶装置、磁気ディスク記憶装置若しくは他の磁気記憶デバイス、又は所望のプログラムコード手段を命令又はデータ構造の形式で搬送又は記憶するために使用でき、かつ汎用若しくは専用コンピュータ又は汎用若しくは専用プロセッサによりアクセスできる任意の他の非一時的媒体を含むことができる。また、任意の接続が、適切にコンピュータ読取可能媒体と呼ばれる。例えば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線(DSL)、又は赤外線、無線、及びマイクロ波などの無線技術を用いてウェブサイト、サーバ、又は他のリモートソースから伝送される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、又は赤外線、無線、及びマイクロ波などの無線技術は、媒体の定義に含まれる。本明細書で用いられるディスク(Disk)及びディスク(disc)には、CD、レーザーディスク(登録商標)、光ディスク、デジタル多用途ディスク(DVD)、フロッピーディスク、及びブルーレイ(登録商標)ディスクが含まれ、ディスク(disks)は通常、磁気的にデータを再現し、ディスク(discs)は、レーザで光学的にデータを再現する。上記の組み合わせもまた、コンピュータ読取可能媒体の範囲内に含まれる。
本明細書の説明は、当業者が本開示を製造又は使用することを可能にするように提供されている。本開示に対する様々な修正が当業者に容易に明らかになり、本明細書で定義される一般原理は、本開示の範囲から逸脱することなく他の変形に適用され得る。したがって、本開示は、本明細書に記載された例及び設計に限定されず、本明細書に開示された原理及び新規の特徴と一致する最も広い範囲を与えられるべきである。