(57)【特許請求の範囲】
【請求項１】
相互に依存関係のある複数のプロセスを有するログデータから、各プロセスで形成される、ツリーのエッジを抽出する抽出部と、
前記抽出部により抽出された各エッジに共通する第１の値と、前記エッジに含まれる、前記第１の値以外の第２の値とを用いて、分類の対象となるデータを生成する生成部と、
前記生成部により生成されたデータを、根に相当するデータと当該根を派生元とする枝に相当するデータとに分類することにより、前記ツリーを前記根、前記枝に分類する分類部と、
前記分類部により分類されたデータに基づき、前記ログデータから、前記根と当該根の派生先である枝とを有するツリーを抽出する抽出部と
を有することを特徴とするツリー抽出装置。
【請求項２】
前記データは、前記第１の値をキーとして有すると共に、当該キーと共に前記エッジを構成し、当該キーにより集約される第２の値をバリューとして有することを特徴とする請求項１に記載のツリー抽出装置。
【請求項３】
前記分類部は、前記バリューを用いて、前記キーにより特定されるデータを、前記ツリーを構成する根、枝、葉の内の何れかに分類することを特徴とする請求項２に記載のツリー抽出装置。
【請求項４】
前記分類部は、前記生成部により生成されたデータを、前記根に相当するデータと、当該根を派生元とする枝に相当するデータと、当該枝を派生元とする葉に相当するデータとに分類すると共に、前記生成部により生成されたデータから、前記葉に相当するデータを削除することを特徴とする請求項１に記載のツリー抽出装置。
【請求項５】
ログ生成装置と、該ログ生成装置に接続されたツリー抽出装置とを有するツリー抽出システムであって、
前記ログ生成装置は、
前記ツリー抽出装置からの要求に応じて、前記ツリー抽出装置に対して、ユーザによるサービス利用の履歴の記録されたログデータを送信する送信部を有し、
前記ツリー抽出装置は、
前記ログ生成装置から送信された、相互に依存関係のある複数のプロセスを有するログデータを受信する受信部と、
前記受信部により受信されたログデータから、各プロセスで形成される、ツリーのエッジを抽出する抽出部と、
前記抽出部により抽出された各エッジに共通する第１の値と、前記エッジに含まれる、前記第１の値以外の第２の値とを用いて、分類の対象となるデータを生成する生成部と、
前記生成部により生成されたデータを、根に相当するデータと当該根を派生元とする枝に相当するデータとに分類することにより、前記ツリーを前記根、前記枝に分類する分類部と、
前記分類部により分類されたデータに基づき、前記ログデータから、前記根と当該根の派生先である枝とを有するツリーを抽出する抽出部と
を有するツリー抽出システム。
【請求項６】
ツリー抽出装置が、
相互に依存関係のある複数のプロセスを有するログデータから、各プロセスで形成される、ツリーのエッジを抽出する抽出工程と、
前記抽出工程にて抽出された各エッジに共通する第１の値と、前記エッジに含まれる、前記第１の値以外の第２の値とを用いて、分類の対象となるデータを生成する生成工程と、
前記生成工程にて生成されたデータを、根に相当するデータと当該根を派生元とする枝に相当するデータとに分類することにより、前記ツリーを前記根、前記枝に分類する分類工程と、
前記分類工程にて分類されたデータに基づき、前記ログデータから、前記根と当該根の派生先である枝とを有するツリーを抽出する抽出工程と
を含むことを特徴とするツリー抽出方法。
【請求項７】
相互に依存関係のある複数のプロセスを有するログデータから、各プロセスで形成される、ツリーのエッジを抽出する抽出ステップと、
前記抽出ステップにて抽出された各エッジに共通する第１の値と、前記エッジに含まれる、前記第１の値以外の第２の値とを用いて、分類の対象となるデータを生成する生成ステップと、
前記生成ステップにて生成されたデータを、根に相当するデータと当該根を派生元とする枝に相当するデータとに分類することにより、前記ツリーを前記根、前記枝に分類する分類ステップと、
前記分類ステップにて分類されたデータに基づき、前記ログデータから、前記根と当該根の派生先である枝とを有するツリーを抽出する抽出ステップと
をコンピュータに実行させるためのツリー抽出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ツリー抽出装置、ツリー抽出システム、ツリー抽出方法、及びツリー抽出プログラムに関する。
【背景技術】
【０００２】
従来、ユーザによる操作と類似度の高い操作あるいはユーザの閲覧した商品と関連性の高い商品の情報を抽出して、ユーザに提供するサービスとして、レコメンデーションが知られている。レコメンデーションでは、ツリー抽出アルゴリズムは、操作や閲覧の履歴の記録されたツリーを用いて、ユーザによる過去の操作や閲覧の履歴から、同様の振舞いを示した他のユーザの情報を取得する。これにより、ツリー抽出アルゴリズムは、ユーザが次に行う可能性の高い操作や閲覧する可能性の高い商品をユーザに提案することができる。特に、依存関係を有するツリーの抽出では、ツリー抽出アルゴリズムは、ログデータに含まれるツリーの数に応じて、処理内容を変更する必要がある。例えば、大量のログデータの中に含まれるツリー（根）が１つである場合、分散ツリー検索（Distributed  Tree  Search）等の技術が有効である。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】“Distributed  Tree  Search”、M.  J.  Quin,  Parallel  Programming  in  C  with  MPI  and  OpenMP,  McGraw-Hill  Education,  2008.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した従来の技術は、ログデータに含まれるツリーの数に応じて、処理内容を変更するものであることから、ログデータ中に多数のツリー構造が含まれる場合、ツリー抽出アルゴリズムが、これらのツリーを高速に抽出することは困難である。すなわち、ログデータ中にツリーが複数存在する場合、ツリー内のデータ間に依存関係が発生するため、根から枝を辿るＤＴＳ（Distributed  Tree  Search）等の既存技術の適用は困難であり、大量のログデータにも対応可能な何らかの新しい手法が望まれている。特に、近年では、ログデータ量の急増に伴い、多数のツリー構造を有するログデータが一般的となりつつあり、上記手法の必要性は高まっている。
【０００５】
開示の実施例は、上記に鑑みてなされたものであって、大量のログデータからツリー構造を高速に抽出することができるツリー抽出装置、ツリー抽出システム、ツリー抽出方法、及びツリー抽出プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本願の開示するツリー抽出装置は、一つの態様において、相互に依存関係のある複数のプロセスを有するログデータから、各プロセスで形成される、ツリーのエッジを抽出する抽出部と、前記抽出部により抽出された各エッジに共通する第１の値と、前記エッジに含まれる、前記第１の値以外の第２の値とを用いて、分類の対象となるデータを生成する生成部と、前記生成部により生成されたデータを、根に相当するデータと当該根を派生元とする枝に相当するデータとに分類することにより、前記ツリーを前記根、前記枝に分類する分類部と、前記分類部により分類されたデータに基づき、前記ログデータから、前記根と当該根の派生先である枝とを有するツリーを抽出する抽出部とを有する。
【０００７】
また、本願の開示するツリー抽出システムは、一つの態様において、ログ生成装置と、該ログ生成装置に接続されたツリー抽出装置とを有するツリー抽出システムであって、前記ログ生成装置は、前記ツリー抽出装置からの要求に応じて、前記ツリー抽出装置に対して、ユーザによるサービス利用の履歴の記録されたログデータを送信する送信部を有し、前記ツリー抽出装置は、前記ログ生成装置から送信された、相互に依存関係のある複数のプロセスを有するログデータを受信する受信部と、前記受信部により受信されたログデータから、各プロセスで形成される、ツリーのエッジを抽出する抽出部と、前記抽出部により抽出された各エッジに共通する第１の値と、前記エッジに含まれる、前記第１の値以外の第２の値とを用いて、分類の対象となるデータを生成する生成部と、前記生成部により生成されたデータを、根に相当するデータと当該根を派生元とする枝に相当するデータとに分類することにより、前記ツリーを前記根、前記枝に分類する分類部と、前記分類部により分類されたデータに基づき、前記ログデータから、前記根と当該根の派生先である枝とを有するツリーを抽出する抽出部とを有する。
【０００８】
更に、本願の開示するツリー抽出方法は、一つの態様において、ツリー抽出装置が、相互に依存関係のある複数のプロセスを有するログデータから、各プロセスで形成される、ツリーのエッジを抽出する抽出工程と、前記抽出工程にて抽出された各エッジに共通する第１の値と、前記エッジに含まれる、前記第１の値以外の第２の値とを用いて、分類の対象となるデータを生成する生成工程と、前記生成工程にて生成されたデータを、根に相当するデータと当該根を派生元とする枝に相当するデータとに分類することにより、前記ツリーを前記根、前記枝に分類する分類工程と、前記分類工程にて分類されたデータに基づき、前記ログデータから、前記根と当該根の派生先である枝とを有するツリーを抽出する抽出工程とを含む。
【０００９】
また、本願の開示するツリー抽出プログラムは、一つの態様において、相互に依存関係のある複数のプロセスを有するログデータから、各プロセスで形成される、ツリーのエッジを抽出する抽出ステップと、前記抽出ステップにて抽出された各エッジに共通する第１の値と、前記エッジに含まれる、前記第１の値以外の第２の値とを用いて、分類の対象となるデータを生成する生成ステップと、前記生成ステップにて生成されたデータを、根に相当するデータと当該根を派生元とする枝に相当するデータとに分類することにより、前記ツリーを前記根、前記枝に分類する分類ステップと、前記分類ステップにて分類されたデータに基づき、前記ログデータから、前記根と当該根の派生先である枝とを有するツリーを抽出する抽出ステップとをコンピュータに実行させる。
【発明の効果】
【００１０】
本願の開示するツリー抽出装置、ツリー抽出システム、ツリー抽出方法、及びツリー抽出プログラムは、大量のログデータからツリー構造を高速に抽出することができるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】図１は、ツリー抽出システムの概略構成を示す図である。
【図２】図２は、ログ生成装置の機能構成を示すブロック図である。
【図３】図３は、サーバ装置の機能構成を示すブロック図である。
【図４】図４は、サーバ装置の実行するツリー抽出処理の概要を説明するための図である。
【図５】図５は、サーバ装置の実行するツリー抽出処理を説明するためのフローチャートである。
【図６】図６は、ツリーエッジ抽出処理を説明するための図である。
【図７】図７は、部分木構成処理を説明するための図である。
【図８】図８は、ツリー抽出準備処理を説明するための図である。
【図９】図９は、ツリー抽出処理を説明するための図である。
【図１０Ａ】図１０Ａは、実施例及び変形例に係る根情報データベース及び枝情報データベースにおけるデータ格納例を示す図である。
【図１０Ｂ】図１０Ｂは、実施例に係るツリー情報データベースにおけるデータ格納例を示す図である。
【図１０Ｃ】図１０Ｃは、実施例に係る２つの中間生成物の一例を示す図である。
【図１１】図１１は、第１MapReduce部の実行する分散処理の概要を説明するための図である。
【図１２】図１２は、ツリーエッジ抽出処理を更に詳細に説明するための図である。
【図１３】図１３は、部分木構成処理を更に詳細に説明するための図である。
【図１４】図１４は、ツリー抽出準備処理を更に詳細に説明するための図である。
【図１５】図１５は、変形例に係るツリー抽出準備処理を説明するための図である。
【図１６】図１６は、ツリー抽出処理を更に詳細に説明するための図である。
【図１７】図１７は、変形例に係るツリー抽出処理を説明するための図である。
【図１８】図１８は、更に別の変形例に係るツリー抽出準備処理を説明するための図である。
【図１９】図１９は、更に別の変形例に係るツリー抽出処理を説明するための図である。
【図２０】図２０は、ツリー抽出プログラムによる情報処理がコンピュータを用いて具体的に実現されることを示す図である。
【図２１】図２１は、コンピュータのＲＯＭに格納される各種プログラムを示す図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示するツリー抽出装置、ツリー抽出システム、ツリー抽出方法、及びツリー抽出プログラムの実施例を、図面を参照しながら詳細に説明する。なお、以下の実施例により本願の開示するツリー抽出装置、ツリー抽出システム、ツリー抽出方法、及びツリー抽出プログラムが限定されるものではない。
【００１３】
まず、本願の開示する一実施例に係るツリー抽出システム１の構成を説明する。図１は、ツリー抽出システム１の概略構成を示す図である。図１に示すように、ツリー抽出システム１は、ログ生成装置１０−１、１０−２、１０−３、・・・、１０−ｎ（ｎは自然数）と、後述するサーバ装置２０−１、２０−２、２０−３、・・・、２０−ｎ（ｎは自然数）とを有する。ログ生成装置１０−１、１０−２、１０−３、・・・、１０−ｎとサーバ装置２０−１、２０−２、２０−３、・・・、２０−ｎとは、ネットワークＮを介して、相互に各種信号やデータの送受信が可能である。
【００１４】
図２は、ログ生成装置１０−１の機能構成を示すブロック図である。図２に示すように、ログ生成装置１０−１は、ログデータ生成部１１とログデータ送信部１２とを有する。これら各構成部分は、一方向又は双方向に、信号やデータの入出力が可能なように接続されている。ログデータ生成部１１は、ユーザによるサービスの利用履歴（例えば、操作履歴、商品閲覧履歴）を基に、ログデータを生成する。当該ログデータには、所定期間における、これらの利用履歴を示す情報が時系列に記録されている。ログデータ送信部１２は、サーバ装置２０−１、２０−２、２０−３、・・・、２０−ｎからの要求に応じて、要求のあった１または複数のサーバ装置宛に、上記ログデータを配信する。
【００１５】
なお、他のログ生成装置１０−２、１０−３、・・・、１０−ｎの概略構成は、上述したログ生成装置１０−１の構成と同様である。したがって、共通する構成要素には、末尾が同一の参照符号を用いると共に、その図示及び詳細な説明は省略する。
【００１６】
サーバ装置２０−１は、ログデータ受信部２１と第１MapReduce部２０ａと第２MapReduce部２０ｂとを有する。更に、第１MapReduce部２０ａは、ツリーエッジ抽出部２２と部分木構成部２３とツリー抽出準備部２４とを有する。第２MapReduce部２０ｂは、ツリー抽出部２５を有する。これら各構成部分は、一方向又は双方向に、信号やデータの入出力が可能なように接続されている。ログデータ受信部２１は、ログ生成装置１０−１、１０−２、１０−３、・・・、１０−ｎからネットワークＮ経由で送信されるログデータを受信する。ツリーエッジ抽出部２２は、相互に依存関係のある複数のプロセスを有するログデータから、各プロセスで形成される、ツリーのエッジを抽出する。部分木構成部２３は、抽出された各エッジに共通する第１の値と、上記エッジに含まれる、上記第１の値以外の第２の値とを用いて、上記ツリーを根、枝、葉に分類する際に分類の対象となるデータを生成する。ツリー抽出準備部２４は、生成されたデータを、根に相当するデータと当該根を派生元とする枝に相当するデータとに分類する。ツリー抽出部２５は、分類されたデータに基づき、上記ログデータから、根と当該根の派生先である枝とを有するツリーを抽出する。
【００１７】
以上、サーバ装置２０−１の機能構成を代表的に説明したが、他のサーバ装置２０−２、２０−３、・・・、２０−ｎの機能構成は、上述したサーバ装置２０−１の構成と同様である。したがって、共通する構成要素には、末尾が同一の参照符号を用いると共に、その図示及び詳細な説明は省略する。
【００１８】
次に、ツリー抽出システム１の動作を説明する。
【００１９】
動作説明の前提として、まず、図４を参照して、ツリー抽出処理の概要を説明する。図４は、サーバ装置２０−１の実行するツリー抽出処理の概要を説明するための図である。図４に示す様に、ツリー抽出処理は、第１MapReduce処理と第２MapReduce処理とを並列化基盤上に有する。第１MapReduce処理は、ＳＲＣ（Source）ノードからＤＳＴ（Destination）ノードまでのログデータＬ１を入力データとし、ツリーの根情報と枝情報とを出力データとする。第１MapReduce処理は、ツリーエッジ抽出処理と部分木構成処理とツリー抽出準備処理とを有し、これら各処理は、ログ数オーダで並列化される。詳細な処理内容については後述するが、ツリーエッジ抽出処理では、ログデータＬ１から中間生成物Ｍ１が生成され、部分木構成処理では、中間生成物Ｍ１から中間生成物Ｍ２が生成される。ツリー抽出準備処理では、中間生成物Ｍ２を用いて、孫派生の有無がフィードバックされ、上記根情報と枝情報が生成される。生成された根情報及び枝情報は、一時データベースＤ１、Ｄ２にそれぞれ格納される。ツリー抽出処理では、一時データベースＤ１、Ｄ２内のデータが参照され、ログデータから、ツリーまたは部分ツリーが複数抽出される。抽出されたツリーは、ツリー情報データベースＤ３に登録される。
【００２０】
図４は、サーバ装置２０−１の実行するツリー抽出処理を説明するためのフローチャートである。ツリー抽出処理は、第１MapReduce処理と第２MapReduce処理とから構成される。第１MapReduce処理では、まず、サーバ装置２０−１のツリーエッジ抽出部２２は、所定のＭａｐ出力関数に基づき、ログデータ（１）〜（４）から、Ｋｅｙ（例えば、Fromファイル名）とＶａｌｕｅ（例えば、to＿＋Toファイル名）とから成るツリーエッジを抽出する（Ｓ１）。
【００２１】
Ｓ２〜Ｓ７のツリー抽出準備処理では、まず、ツリー抽出準備部２４は、部分木データの中に“from”が含まれるか否かを判定し、含まれる場合（Ｓ２；Ｙｅｓ）には、対応する“To”が空白であるか否かを判別する（Ｓ３）。当該判別の結果、“To”が空白でない場合（Ｓ３；Ｎｏ）、ツリー抽出準備部２４は、Toに後続するファイル名を一次データベースに登録する（Ｓ４）。その結果、一次データベースＡ１には、Ｋｅｙとして例えば“Ａ”が登録され、Ｖａｌｕｅとして例えば“to＿b，to＿c”が登録される。なお、上記判別の結果、“To”が空白である場合（Ｓ３；Ｙｅｓ）には、ツリー抽出準備部２４は、処理を実行することなくツリー抽出処理を終了する（Ｓ５）。
【００２２】
Ｓ２における判定の結果、部分木データの中に“from”が含まれない場合（Ｓ２；Ｎｏ）、ツリー抽出準備部２４は、Ｋｅｙに対応するファミリＩＤの検索を行う（Ｓ６）。例えば、Ｋｅｙが“ｚ”の場合、これに対応するファミリＩＤとして“９５”が得られる。なお、検索の結果、ファミリＩＤが存在しない場合には、ツリー抽出準備部２４は、新規のＩＤをＫｅｙに付与する。Ｓ７では、ツリー抽出準備部２４は、Ｓ６における検索結果を基に作成されたファイルを出力する。出力されたファイルＡ３は、Ｋｅｙとして例えば“ｚ”を有し、Ｖａｌｕｅとして例えば“to＿b，to＿y，ID-95”を有する。
【００２３】
第２MapReduce処理に移行し、Ｓ８では、ツリー抽出部２５は、Toファイル名として、上記ＶａｌｕｅのToファイル名を設定する。ツリー抽出部２５は、Ｓ８で設定されたToファイル名とファミリＩＤとを１組の集計値（例えば、95:（z））として、トレーステーブルＡ４に登録する（Ｓ９）。Ｓ１０では、ツリー抽出部２５は、Toファイル名を検索キーワードとして、データベースを検索する。検索の結果、Toファイル名が存在（ヒット）した場合（Ｓ１１；Ｙｅｓ）、ツリー抽出部２５は、当該Toファイル名として、ヒットしたカラムのToファイル名を設定する（Ｓ１２）。Ｓ１２の処理終了後は、Ｓ９に戻り、ツリー抽出部２５は、Ｓ９以降の処理を繰り返し実行する。これに対して、Toファイル名が存在（ヒット）しなかった場合（Ｓ１１；Ｎｏ）、ツリー抽出部２５は、Toファイル名の設定処理を実行することなく（Ｓ１３）、Ｓ９以降の処理を再び実行する。
【００２４】
図６は、ツリーエッジ抽出処理を説明するための図である。図６に示す様に、ツリーエッジ抽出部２２は、入力されたログデータＬ１から、ＳＲＣノード及びＤＳＴノードに関するツリーエッジを抽出する（Ｓ１０１）。ツリーエッジは、例えば、ＳＲＣノード１につき、［SRCノード1：“To＿”＋DSTノード1］なる文字列として生成され、ＤＳＴノード１につき、［DSTノード1：“From＿”＋SRCノード1］なる文字列として生成される（Ｓ１０２）。生成された文字列は、キーとバリューとから成る中間生成物Ｍ１として出力される（Ｓ１０３）。ツリーエッジ抽出部２２は、ツリーエッジ抽出処理の実行に際して、ログの内容のみを参照し、他のログに依存しないことから、ログデータの個数分の並列化が可能となる。
【００２５】
図７は、部分木構成処理を説明するための図である。図７に示す様に、部分木構成部２３は、中間生成物Ｍ１に含まれるキーの値をキーとする、データベースのカラムに、バリューを追加する（Ｓ２０１）。これにより、中間生成物Ｍ２として、例えばノードｘにつき、［To＿ノードx+1.  To＿ノードx+2,  From＿ノードx-1］なるバリューが生成され、ノードｙにつき、［To＿ノードx+2］なるバリューが生成される。部分木構成部２３は、部分木構成処理の実行に際して、入力データのみを参照し、出力データである中間生成物Ｍ２を出力するため、アルゴリズムの作成が容易である。また、入力されたログのノード数での並列化が可能である。
【００２６】
図８は、ツリー抽出準備処理を説明するための図である。図８に示す様に、ツリー抽出準備部２４は、まず、中間生成物Ｍ２のバリューをキー毎に取得し、取得されたバリューが“To＿”または“From＿”の文字列を含むか否かの判定を行う（Ｓ３０１）。判定の結果、“From＿”のみが含まれる場合、ツリー抽出準備部２４は、データ（キーとバリューの組合せ）を、ツリーの葉の部分と判断し、そのままプロセスを終了する（Ｓ３０２）。このとき、ツリー抽出準備部２４は、不要となった当該データをメモリから削除するものとしてもよい。上記判定の結果、バリューに“To＿”のみが含まれる場合、ツリー抽出準備部２４は、上記データを、ツリーの根の部分と判断し、ツリー情報データベースＤ３から、キーのノードｘに対応するツリーＩＤを検索する（Ｓ３０３）。そして、ツリー抽出準備部２４は、検索の結果取得されたツリーＩＤから、［ノードx：ノードx+1・・・：ツリーID］なるデータを生成し、根情報データベースＤ１に出力する（Ｓ３０４）。更に、上記判定の結果、バリューに“To＿”と“From＿”の双方が含まれる場合、ツリー抽出準備部２４は、上記データを、ツリーの枝の部分と判断し、［ノードx：ノードx+1・・・］のデータを枝情報データベースＤ２に登録する（Ｓ３０５）。上述した様に、ツリー抽出準備部２４は、入力されたログデータに記録されているノード毎にプロセスを実行することができる。その結果、各プロセスの並列化が可能となる。
【００２７】
図９は、ツリー抽出処理を説明するための図である。図９に示す様に、ツリー抽出部２５は、根情報データベースＤ１内のデータ（根に対応するノード及びツリーＩＤ）を参照して、処理対象となるノードをノードｘ’に設定する（Ｓ４０１）。次に、ツリー抽出部２５は、ツリー情報として［ファミリＩＤ：処理ノード］を、ツリー情報データベースＤ３に登録する（Ｓ４０２）。その結果、ツリー情報データベースＤ３には、ツリーとして“１００１”が、ノードとしてノードＩＤが登録される。Ｓ４０３では、ツリー抽出部２５は、枝情報データベースＤ２に登録されているノードから、根カラムをキーとして、Ｓ４０１で設定された処理対象ノードを検索する。当該検索の結果、該当するノードが存在する場合（Ｓ４０４；Ｙｅｓ）には、ツリー抽出部２５は、検索でヒットしたノードを処理対象ノードに設定（Ｓ４０５）した上で、再びＳ４０２以降の処理を実行する。これにより、枝情報データベースＤ２内のノードカラムが、要素数分ループされる。一方、該当するノードが存在しない場合（Ｓ４０４；Ｎｏ）には、ツリー抽出部２５は、上記Ｓ４０５の処理を行うことなく、Ｓ４０２以降の処理を実行する。これにより、ログデータＬ１の内包するツリーの数（根の数）分の並列化が可能となる。
【００２８】
ここで、本実施例に係る各データベースにおけるデータ格納例、及びツリー抽出に際して生成される各中間生成物について、更に詳細に説明する。図１０Ａは、実施例及び変形例（追加機能）に係る根情報データベースＤ１及び枝情報データベースＤ２におけるデータ格納例を示す図である。図１０Ａに示す様に、本実施例では、根情報データベースＤ１に登録されたノードｘとして、例えば“ノードｘ＋１，ノードｘ＋２，ノードｘ＋３”が格納され、ノードｙとして、例えば“ノードｙ＋１”が格納される。併せて、“１００１”、“１０２２”が、ツリーＩＤとして、それぞれノードｘ，ｙと対応付けて格納される。また、本実施例の変形態様では、ノードｘに対応する“ノードｘ＋２”、及びノードｙに対応する“ノードｙ＋１”の先頭部分に、それぞれ「I＿」の識別子が付与されている。サーバ装置２０−１は、この識別子の付されたノードに検索対象を絞り込み、他のノードを検索対象から除外することで、根情報データベースＤ１への不必要なアクセスを回避する。換言すれば、変形例では、サーバ装置２０−１は、孫派生のある派生先のみを検索することで、再帰検索での葉ノードに対する検索を省略する機能を有する。これにより、データベースに対するアクセス数が減少する。その結果、ツリーの抽出に掛かる時間は短縮される。
【００２９】
図１０Ａに示す様に、本実施例では、枝情報データベースＤ２に登録されたノードＸとして、例えば“ノードＸ＋１，ノードＸ＋２，ノードＸ＋３”が格納され、ノードＹとして、例えば“ノードＹ＋１”が格納される。変形例としての追加機能では、根情報データベースＤ１と同様、ノードＸに対応する“ノードＸ＋１”の先頭部分と、ノードＹに対応する“ノードＹ＋１”の先頭部分とに、識別子「I＿」がそれぞれ付与される。これにより、サーバ装置２０−１は、当該識別子をキーとした検索候補の絞込みが可能となり、ノードの検索に際して、所望のノードを容易かつ迅速に特定することができる。その結果、ツリー抽出の所要時間が減少する。
【００３０】
図１０Ｂは、実施例に係るツリー情報データベースＤ３におけるデータ格納例を示す図である。図１０Ｂに示す様に、ツリー情報データベースＤ３は、ツリーＩＤ、ノード、ＳＲＣ、世代番号を格納するための各領域を有する。ツリーＩＤ領域には、“１００１”、“１０２２”が格納されている。ノード領域には、“１００１”に対応するノードとして、“ノードａ”、“ノードａ＋１”、“ノードａ＋２”がそれぞれ格納されている。また、“１０２２”に対応するノードとして、“ノードｂ”が格納されている。更に、対応するノードのＳＲＣノードとして、“新ノード”、“ノードａ”、“ノードａ＋１”、及び“新ノード”がそれぞれ格納され、世代番号として、“０”、“１”、“２”、及び“０”がそれぞれ格納されている。なお、世代番号は、再帰検索の深さを表すために各ノードに付与される数値である。
【００３１】
図１０Ｃは、実施例に係る２つの中間生成物Ｍ１、Ｍ２の一例を示す図である。中間生成物Ｍ１は、ツリーエッジ抽出処理を実行した結果得られるデータであり、キーとバリューとから構成される。例えば、“ノードｘ”をキーとするバリューとして、“To＿ノードx+1”、“To＿ノードx+2”、“From＿ノードx-1”、及び“To＿ノードx+3”が生成されると共に、“ノードＹ”をキーとするバリューとして、“To＿ノードY+1”が生成される。これらのデータは、キーとバリューとを１組の集計値として生成される。このため、ツリーエッジ抽出処理の完了後には、計５組の集計値が生成されることとなる。
【００３２】
同様に、中間生成物Ｍ２は、部分木構成処理を実行した結果得られるデータであり、キーとバリューとから構成される。例えば、“ノードｘ”をキーとするバリューとして、“To＿ノードx+1．To＿ノードx+2，From＿ノードx-1”が生成される。同時に、“ノードｙ”をキーとするバリューとして、“To＿ノードx+2”が生成される。これらのデータは、キーとバリューとを１組の集計値として生成されるため、部分木構成処理の完了後には、計２組の集計値が生成されることとなる。
【００３３】
図１１は、第１MapReduce部２０ａの実行する分散処理の概要を説明するための図である。図１１に示す様に、入力されたログデータＬ１は、キーＡとバリューＢとに分割される。また、入力されたログデータＬ２は、キーＡとバリューＣとに分割される。そして、入力されたログデータＬ３は、キーＢとバリューＸとに分割される。分割された各値は、共通するキーで集約される。その結果、Ｒｅｄｕｃｅ１には、Ａ：｛Ｂ，Ｃ｝とＢ：｛Ｘ｝とが入力される。このように、本実施例に係るツリー抽出システム１は、分散処理基盤として、自動ソート処理での集約を特徴とするMapReduceを利用する。
【００３４】
図１２は、ツリーエッジ抽出処理を更に詳細に説明するための図である。上述のＭａｐ１では、ツリーエッジ抽出部２２は、図１２に示す様に、根を抽出する準備を行う。すなわち、ツリーエッジ抽出部２２は、fromとtoとを有するファイル操作ログから、これら双方のファイルをキーとする、キーとバリューとのペアを出力する。例えば、“ａ  to  ｃ”の入力があった場合、ログ数が並列化された後、キーとバリューのペア（a:to＿c，c:from＿a）の双方が出力される。これら２つのペアの値が、キーとバリューとの分割の基本として使用される。すなわち、サーバ装置２０−１は、“a:to＿c”からは、ａには如何なる派生先（子）があるかの判別をすることができ、“c:from＿a”からは、ｃには如何なる派生元（親）があるかの判別が可能である。
【００３５】
図１３は、部分木構成処理を更に詳細に説明するための図である。図１３に示す様に、部分木構成処理を実行した結果として得られる中間生成物Ｍ２は、z:｛to＿a,to＿y｝、a:｛from＿z,to＿b,to＿c｝、b:｛from＿a｝、y:｛from＿z｝、c:｛from＿a｝であり、これらのデータは、キーの昇順または降順にソートされる。したがって、本来は、昇順の場合、a:｛from＿z,to＿b,to＿c｝、b:｛from＿a｝、c:｛from＿a｝、y:｛from＿z｝、z:｛to＿a,to＿y｝の順に出力されることとなるが、図１３では、説明の便宜上、根、枝、葉、それ以外の順に図示するものとする。部分木構成部２３は、キーとバリューとを用いて、ツリーから、根、枝、葉に相当するデータを生成する。サーバ装置２０−１は、ツリーエッジ抽出処理において“from”と“to”との双方をキーとする。これにより、サーバ装置２０−１は、部分木構成処理（ソート）を実行した結果、ログデータＬ１に示される全てのファイルが、ツリーの根、枝、葉の何れに相当するものであるかの判別が可能となる。本実施例では、中間生成物Ｍ２の１つであるデータｄ１（z:｛to＿a,to＿y｝）が、ｚを派生元とする、ツリーの根データＲ１として出力される。また、データｄ２（a:｛from＿z,to＿b,to＿c｝）が、ａを派生元とする、上記ツリーの枝データＲ２として出力される。更に、データｄ３（b:｛from＿a｝）が、上記ツリーの葉データＲ３として出力される。
【００３６】
図１４は、ツリー抽出準備処理を更に詳細に説明するための図である。ツリー抽出準備部２４は、図１４に示す様に、ファイル数を並列化する。ツリー抽出準備部２４は、上述の部分木構成処理により得られた各データを基に、ログデータＬ１からツリーを抽出する準備を行う。具体的には、ツリー抽出準備部２４は、部分木構成処理による処理結果を判別し、根データＲ１を、次のプロセスの実行単位（分散単位）とする。また、ツリー抽出準備部２４は、枝データＲ２を、検索用データベースＤ４に登録する。なお、葉データは、処理負荷の軽減のため棄却し、出力を行わない。その結果、根データＲ１は、例えば、z:｛to＿a,to＿y｝として、ファミリＩＤと対応付けて出力される。併せて、枝データＲ２は、例えば、a:｛to＿b,to＿c｝として、検索用データベースＤ４に登録される。
【００３７】
図１５は、変形例に係るツリー抽出準備処理を説明するための図である。図１５に示す様に、ツリー抽出準備処理では、サーバ装置２０−１のツリー抽出準備部２４は、データｄ２から、２つの枝データＲ２−１，Ｒ２−２を出力するものとしてもよい。すなわち、ツリー抽出準備処理の実行により、a:｛from＿z,to＿b,to＿c｝のデータが出力された場合、ツリー抽出準備部２４は、a:｛to＿b,to＿c｝の枝データＲ２−１に加えて、「ｚ：ａ」の枝データＲ２−２を、検索用データベースＤ４に登録するものとしてもよい。なお、ツリー抽出準備処理では、分類されたデータが根に相当するデータであることを示すための情報として、“root”が根データＲ１に付加される。
【００３８】
図１６は、ツリー抽出処理を更に詳細に説明するための図である。図１６に示す様に、ツリー抽出処理は、根の個数分並列化されて実行される。ツリー抽出部２５は、ツリー抽出準備処理の結果として出力された根毎（ツリー毎）にプロセスを実行し、派生先のファイル名により、検索用データベースＤ４を再帰検索する。そして、ツリー抽出部２５は、ツリー内の全てのファイルＦ１〜Ｆ５に対し、各ファイル（例えば、ｚ、ａ、ｙ、ｂ、ｃ）が同一のファミリであることを示す識別子として、ファミリＩＤ（例えば、１００）を割り振る。図１７は、変形例に係るツリー抽出処理を説明するための図である。図１７に示す様に、サーバ装置２０−１は、ツリー抽出部２５での処理を行うことなく、部分木構成部２３により、枝、根のキーファイルからの派生先を参照することで、根データＲ１’、枝データＲ２−１の内、何れのデータが枝データとなるかを判定するものとしてもよい。
【００３９】
図１８は、更に別の変形例に係るツリー抽出準備処理を説明するための図である。図１８に示す様に、ツリー抽出準備部２４は、再帰検索が必要となる派生先に、識別情報（例えば、I＿）を付加する。例えば、根データＲ１’が“z:｛a,”root”｛to＿a,to＿y｝ファミリID:100｝”である場合、重複する派生先には、再帰検索の対象（再帰検索先）であることを示す識別子「I＿」が付される。したがって、ツリー抽出準備処理では、根データＲ４として、“z:｛I＿a,y｝ファミリID:100”が出力される。
【００４０】
ツリー抽出処理においても、識別子「I＿」の付されたファイルのみが再帰検索の対象となる。図１９は、更に別の変形例に係るツリー抽出処理を説明するための図である。図１９に示す様に、ツリー抽出処理は、根の個数分並列化されて実行される。ツリー抽出部２５は、ツリー抽出準備処理の結果として出力された根毎（ツリー毎）にプロセスを実行し、派生先のファイル名（例えば、z:｛I＿a,y｝）により、検索用データベースＤ５を再帰検索する。そして、ツリー抽出部２５は、ツリー内の全てのファイルＦ６〜Ｆ１０に対し、各ファイル（例えば、ｚ、ａ、ｙ、ｂ、ｃ）が同一のファミリであることを示す識別子として、ファミリＩＤ（例えば、１００）を割り振る。これにより、再帰検索対象の絞込みが可能となり、根、枝に相当するデータの検索効率が向上する。
【００４１】
以上説明したように、ツリー抽出システム１は、ログ生成装置１０−１と、ログ生成装置１０−１に接続されたサーバ装置２０−１とを有する。ログ生成装置１０−１は、ログデータ送信部１２を有する。ログデータ送信部１２は、サーバ装置２０−１からの要求に応じて、サーバ装置２０−１に対して、ユーザによるサービス利用の履歴の記録されたログデータを送信する。上記サーバ装置２０−１は、ログデータ受信部２１とツリーエッジ抽出部２２と部分木構成部２３とツリー抽出準備部２４とツリー抽出部２５とを有する。
【００４２】
ログデータ受信部２１は、ログ生成装置１０−１から送信された、相互に依存関係のある複数のプロセスを有するログデータを受信する。ツリーエッジ抽出部２２（Map１）は、相互に依存関係のある複数のプロセス（例えば、商品ａを見てから商品ｃを見た）を有するログデータから、各プロセスで形成される、ツリーのエッジ（例えば、a:to＿cとc:from＿aの双方）を抽出する。部分木構成部２３（ソート）は、抽出された各エッジに共通する第１の値（例えば、キー）と、上記エッジに含まれる、上記第１の値以外の第２の値（例えば、バリュー）とを用いて、上記ツリーを根、枝、葉に分類する際に分類の対象となるデータ（例えば、キーとバリューとから成る５組の集計値）を生成する。ツリー抽出準備部２４（Reduce１）は、生成されたデータを用いて、上記根に相当するデータ（例えば、z:｛to＿a,to＿y｝）と当該根を派生元（ログ）とする枝に相当するデータ（例えば、a:｛from＿z,to＿b,to＿c｝）とに分類することにより、上記ツリーを上記根、上記枝に分類する。ツリー抽出部２５（Map２）は、分類されたデータに基づき、上記ログデータから、上記根と当該根の派生先（ログ）である枝とを有するツリーを抽出する。
【００４３】
また、上述のツリー抽出システム１において、上記データは、上記第１の値をキーとして有するものとしてもよい。また、上記データは、当該キーと共に上記エッジを構成し、当該キーにより集約される（括られる）第２の値（例えば、パラメータ）をバリューとして有するものとしてもよい。これにより、ログデータのソート結果として、キーとバリューとによる複数の集計値（例えば、５組）が生成及び出力される。
【００４４】
更に、ツリー抽出準備部２４は、上記バリューを用いて、上記キーにより特定されるデータ（例えば、z:｛to＿a,to＿y｝、a:｛from＿z,to＿b,to＿c｝、b:from＿a、y:from＿z、c:from＿a）を、上記ツリーを構成する根、枝、葉の内の何れかに分類するものとしてもよい。ツリー抽出準備部２４は、部分木構成部２３から入力されるバリューに着目することで、“from＿”または“to＿”がバリューに含まれるか否かに基づいて、対応するキーの示すファイルがツリーの根、枝、葉の何れとなるかを容易に判別することができる。
【００４５】
また、ツリー抽出準備部２４は、部分木構成部２３により生成されたデータを、上記根に相当するデータと、当該根を派生元（ログ）とする枝に相当するデータと、当該枝を派生元（ログ）とする葉に相当するデータとに分類する。その上で、ツリー抽出準備部２４は、部分木構成部２３により生成されたデータから、上記葉に相当するデータを削除する。葉に相当するデータ（例えば、b:from＿a）を受信したプロセスでは、葉は、根または枝の何れかから、必ずto＿として参照されている。したがって、葉に相当するデータは、ツリー抽出部２５に出力する必要は無いものと判断し、ツリー抽出用のデータから削除される。これにより、ツリーの抽出に使用されるデータの重複が回避される。その結果、より効率的なツリー抽出処理が実現される。
【００４６】
すなわち、従来は、サーバ装置は、変更履歴をログから構築する場合、ログの順（時系列）に処理し、注目した情報の関連性を抽出していた。これに対して、サーバ装置２０−１は、ログの順序関係には依存せず、ユーザによる「ＡからＢへの操作」といったログ情報を並列処理し、情報の関連性の木構造を高速に構築することができる。これにより、サーバ管理者は、ファイル操作の履歴やＷｅｂページの閲覧履歴のログから、情報の関連性の木構造を、容易かつ迅速に参照することができる。したがって、情報漏洩経路の追跡や、Ｗｅｂ閲覧のレコメンデーションのための基礎情報の収集が可能となる。
【００４７】
例えば、ファイルを操作するログを考えた場合、ファイルの移動や複写等、ファイルの状態の変化をその操作ログにより再現することができるが、ツリー抽出システム１は、ファイルの操作ログを元に、ファイルの状態遷移をツリー上に表現する。当該ツリーは、ファイルの状態をノードとして形成され、ツリー抽出システム１は、ログを用いてノードの繋がり方を発見することで、ファイルの状態遷移をノードのツリーとして表現する。具体的には、サーバ装置２０−１は、並列処理手段を利用して、後述の第１から第３の各処理を実行することで、高速なツリー抽出を可能とする。第１に、サーバ装置２０−１は、ログを用いて、ファイルの状態に関し、根、枝、葉の発見を行う処理を並列化する。第２に、サーバ装置２０−１は、任意の根に関係するログから葉または枝を発見する処理を並列して実行する。第３に、サーバ装置２０−１は、発見されたノードに子ノードが存在する場合には、上記一連の処理を再帰的に繰り返す。また、追加機能として、ツリー抽出システム１は、再帰検索を行う際、孫派生のある派生先のみを検索するような改善を図り、データベースへのアクセスを削減することで高速化を実現する。これにより、再帰検索のコストが軽減される。更に、サーバ装置２０−１は、出力されるツリーに対して固有のＩＤを付与することで、差分のログに含まれる部分ツリー（部分木）の抽出を行い、本来のツリーへ部分ツリーを追加することができる。
【００４８】
上述した様に、ツリー抽出システム１は、大量のデータに含まれる、ツリー構造となる依存関係を抽出し、その依存関係を、トレースやレコメンデーションに利用可能とする。ツリー抽出システム１の適用例として、例えば、ユーザの操作ログに基づき、次の操作をユーザに提案するレコメンデーションがある。具体的には、ツリー抽出システム１は、多数のユーザから収集された操作履歴を基に構築された一般的な操作のツリーに、現在操作しているユーザの操作履歴を当てはめる。そして、ツリー抽出システム１は、一般的な操作ツリーにおけるユーザの状態に基づき、後続する可能性の高い操作を予測し、その操作をユーザに提案する。
【００４９】
［ツリー抽出プログラム］
図２０は、ツリー抽出プログラムによる情報処理がコンピュータ１００を用いて具体的に実現されることを示す図である。図２０に例示するように、コンピュータ１００は、例えば、メモリ１０１と、ＣＰＵ１０２と、ハードディスクドライブインタフェース１０３と、ディスクドライブインタフェース１０４と、シリアルポートインタフェース１０５と、ビデオアダプタ１０６と、ネットワークインタフェース１０７とを有し、これらの各部はバスＢによって接続される。
【００５０】
メモリ１０１は、図２０に例示するように、ＲＯＭ（Read  Only  Memory）１０１ａ及びＲＡＭ（Random  Access  Memory）１０１ｂを含む。ＲＯＭ１０１ａは、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３は、図２０に例示するように、ハードディスクドライブ１０８に接続される。ディスクドライブインタフェース１０４は、図２０に例示するように、ディスクドライブ１０９に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１０９に挿入される。シリアルポートインタフェース１０５は、図２０に例示するように、例えばマウス１１０、キーボード１１１に接続される。ビデオアダプタ１０６は、図２０に例示するように、例えばディスプレイ１１２に接続される。
【００５１】
ここで、図２０に例示するように、ハードディスクドライブ１０８は、例えば、ＯＳ（Operating  System）１０８ａ、アプリケーションプログラム１０８ｂ、プログラムモジュール１０８ｃ、プログラムデータ１０８ｄを記憶する。すなわち、開示の実施例に係るツリー抽出プログラムは、コンピュータ１００によって実行される指令が記述されたプログラムモジュール１０８ｃとして、例えばハードディスクドライブ１０８に記憶される。具体的には、上記実施例で説明したログデータ生成部１１、ログデータ送信部１２、ログデータ受信部２１、ツリーエッジ抽出部２２、部分木構成部２３、ツリー抽出準備部２４、及びツリー抽出部２５と同様の情報処理を実行する各種手順が記述されたプログラムモジュール１０８ｃが、ハードディスクドライブ１０８に記憶される。また、ツリー抽出プログラムによる情報処理に用いられるデータは、プログラムデータ１０８ｄとして、例えばハードディスクドライブ１０８に記憶される。そして、ＣＰＵ１０２が、ハードディスクドライブ１０８に記憶されたプログラムモジュール１０８ｃやプログラムデータ１０８ｄを、必要に応じてＲＡＭ１０１ｂに読み出し、上記各種手順を実行する。
【００５２】
なお、ツリー抽出プログラムに係るプログラムモジュール１０８ｃやプログラムデータ１０８ｄは、ハードディスクドライブ１０８に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ１０９等を介してＣＰＵ１０２によって読み出されてもよい。あるいは、ツリー抽出プログラムに係るプログラムモジュール１０８ｃやプログラムデータ１０８ｄは、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７を介してＣＰＵ１０２によって読み出されてもよい。
【００５３】
図２１は、コンピュータ１００のＲＯＭ１０１ａに格納される各種プログラムを示す図である。図２１に示す様に、ＲＯＭ１０１ａには、オペレーティングシステム１０１ｃ、及び上述したツリー抽出プログラム１０１ｅの他に、Ｈａｄｏｏｐプログラム１０１ｄ及びＨＢａｓｅプログラム１０１ｆが格納される。
【００５４】
Ｈａｄｏｏｐプログラム１０１ｄは、ログデータの保存やツリー抽出プログラムの入出力に利用される分散ファイルシステムの管理プログラム（NameNode）を有する。この管理プログラムは、ツリー抽出システム１を構成する複数のサーバ装置２０−１、２０−２、２０−３、・・・、２０−ｎの内、１台のサーバ装置２０−１のみが実行する。また、Ｈａｄｏｏｐプログラム１０１ｄは、上記分散ファイルシステムのデータ保存や応答を行うプログラム（DataNode）を有する。このプログラムは、ツリー抽出システム１を構成する全てのサーバ装置２０−１、２０−２、２０−３、・・・、２０−ｎにおいて実行される。上記DataNodeを実行する各サーバ装置は、上記NameNodeからの要求に応じて、データの読出しや書込みの処理を行う。更に、Ｈａｄｏｏｐプログラム１０１ｄは、ツリー抽出プログラム１０１ｅの実行に際して、各プロセスの並列分散実行を管理するプログラム（JobTracker）を有する。このプログラムは、ツリー抽出システム１を構成する複数のサーバ装置２０−１、２０−２、２０−３、・・・、２０−ｎの内、１台のサーバ装置２０−１のみが実行する。また、Ｈａｄｏｏｐプログラム１０１ｄは、ツリー抽出プログラム１０１ｅの実行に際して、各処理プロセスを実行するプログラム（TaskTracker）を有する。このプログラムは、ツリー抽出システム１を構成する全てのサーバ装置２０−１、２０−２、２０−３、・・・、２０−ｎにおいて実行される。上記TaskTrackerを実行する各サーバ装置は、上記JobTrackerから要求された処理を実行する。
【００５５】
ＨＢａｓｅプログラム１０１ｆは、ツリー抽出処理に際して、複数台のサーバ装置２０−１、２０−２、２０−３、・・・、２０−ｎにて実行可能なデータベース管理プログラム（HBase  Master  Server）を有する。また、ＨＢａｓｅプログラム１０１ｆは、複数台のサーバ装置にて実行可能なデータベース処理プログラム（HBase  Reasion  Server）を有する。上記HBase  Reasion  Serverを実行する各サーバ装置は、上記HBase  Master  Serverから、データ検索要求に対して応答すべきキー値の割り振りを受け取り、該当するキー値に対応するデータの検索や登録等の処理を実行する。更に、ＨＢａｓｅプログラム１０１ｆは、ツリー抽出処理に際して、複数台のサーバ装置にて実行可能なデータ保管プログラム（Zookeeper）を有する。Zookeeperを実行する各サーバ装置は、マスターの解決あるいは設定の統一のための参照データを保管する。
【００５６】
また、上述したログ生成装置及びサーバ装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的態様は、図示のものに限らず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することもできる。例えば、ツリー抽出準備部２４とツリー抽出部２５とを１つの構成要素として統合してもよい。反対に、ツリー抽出準備部２４に関し、各プロセスで形成される、ツリーを構成するデータを根、枝、葉に分類する部分と、キーとバリューとから成る集計値を用いて、根、枝、葉に相当するデータをデータベースに登録する部分とに分散してもよい。更に、ハードディスクドライブ１０８を、サーバ装置２０−１の外部装置としてネットワークやケーブル経由で接続するようにしてもよい。
【符号の説明】
【００５７】
１  ツリー抽出システム
１０−１、１０−２、１０−３、・・・、１０−ｎ  ログ生成装置
１１  ログデータ生成部
１２  ログデータ送信部
２０−１、２０−２、２０−３、・・・、２０−ｎ  サーバ装置
２０ａ  第１MapReduce部
２０ｂ  第２MapReduce部
２１  ログデータ受信部
２２  ツリーエッジ抽出部
２２ａ  Ｍａｐ１
２３  部分木構成部
２３ａ  ソート
２４  ツリー抽出準備部
２４ａ  Ｒｅｄｕｃｅ１
２５  ツリー抽出部
２５ａ  Ｍａｐ２
１００  コンピュータ
１０１  メモリ
１０１ａ  ＲＯＭ
１０１ｂ  ＲＡＭ
１０１ｃ  オペレーティングシステム
１０１ｄ  Ｈａｄｏｏｐプログラム
１０１ｅ  ツリー抽出プログラム
１０１ｆ  ＨＢａｓｅプログラム
１０２  ＣＰＵ
１０３  ハードディスクドライブインタフェース
１０４  ディスクドライブインタフェース
１０５  シリアルポートインタフェース
１０６  ビデオアダプタ
１０７  ネットワークインタフェース
１０８  ハードディスクドライブ
１０８ａ  ＯＳ
１０８ｂ  アプリケーションプログラム
１０８ｃ  プログラムモジュール
１０８ｄ  プログラムデータ
１０９  ディスクドライブ
１１０  マウス
１１１  キーボード
１１２  ディスプレイ
Ａ１  一次データベース
Ａ２  二次データベース
Ａ３  出力ファイル
Ａ４  トレーステーブル
Ｂ  バス
Ｄ１  根情報データベース
Ｄ２  枝情報データベース
Ｄ３  ツリー情報データベース
Ｄ４、Ｄ５  検索用データベース
ｄ１、ｄ２、ｄ３、ｄ４、ｄ５  データ
Ｆ１、Ｆ２、Ｆ３、Ｆ４、Ｆ５、Ｆ６、Ｆ７、Ｆ８、Ｆ９、Ｆ１０  ファイル
Ｌ１、Ｌ２、Ｌ３、Ｌ４  ログデータ
Ｍ１、Ｍ２  中間生成物
Ｎ  ネットワーク
Ｒ１、Ｒ１’、Ｒ４  根データ
Ｒ２、Ｒ２−１、Ｒ２−２、Ｒ５  枝データ
Ｒ３  葉データ
Ｔ１  ツリー
【図１】
0005411954.tif 000002
【図２】
0005411954.tif 000003
【図３】
0005411954.tif 000004
【図４】
0005411954.tif 000005
【図５】
0005411954.tif 000006
【図６】
0005411954.tif 000007
【図７】
0005411954.tif 000008
【図８】
0005411954.tif 000009
【図９】
0005411954.tif 000010
【図１０Ａ】
0005411954.tif 000011
【図１０Ｂ】
0005411954.tif 000012
【図１０Ｃ】
0005411954.tif 000013
【図１１】
0005411954.tif 000014
【図１２】
0005411954.tif 000015
【図１３】
0005411954.tif 000016
【図１４】
0005411954.tif 000017
【図１５】
0005411954.tif 000018
【図１６】
0005411954.tif 000019
【図１７】
0005411954.tif 000020
【図１８】
0005411954.tif 000021
【図１９】
0005411954.tif 000022
【図２０】
0005411954.tif 000023
【図２１】
0005411954.tif 000024