JP5342087B2 - 計算機システム及びデータ管理方法 - Google Patents

計算機システム及びデータ管理方法 Download PDF

Info

Publication number
JP5342087B2
JP5342087B2 JP2013506934A JP2013506934A JP5342087B2 JP 5342087 B2 JP5342087 B2 JP 5342087B2 JP 2013506934 A JP2013506934 A JP 2013506934A JP 2013506934 A JP2013506934 A JP 2013506934A JP 5342087 B2 JP5342087 B2 JP 5342087B2
Authority
JP
Japan
Prior art keywords
data
division
key
data set
divided
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.)
Expired - Fee Related
Application number
JP2013506934A
Other languages
English (en)
Other versions
JPWO2012131927A1 (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Application granted granted Critical
Publication of JP5342087B2 publication Critical patent/JP5342087B2/ja
Publication of JPWO2012131927A1 publication Critical patent/JPWO2012131927A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/113Details of archiving

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Environmental & Geological Engineering (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、大量データを処理する計算機システムにおいて、データを結合する技術に関わる。
データベースにおける表(テーブル、リレーション等)の結合処理に関する技術として、ソート・マージ結合技術を用いて表の結合を並列処理する手法が知られている(例えば、特許文献1参照)。
ソート・マージ結合技術とは、結合対象の表をキー値に基づいてソートした後、各表の行を先頭から読み出し、対応するキー値である行同士をマージする手法である。
特許文献1には、処理を並列化するために、各表を同一のキー値に対応する位置で区分することによって表毎に対応する分割領域を生成し、分割領域毎にソート・マージ結合技術を利用して表を結合することが記載されている。さらに、特許文献1には、システム内のプロセッサ負荷に偏りが発生しないように、プロセッサへの分割領域の割り当てることが記載されている。
データベースに関する基本的な技術として、キーの値と当該キーの値に対応するデータの格納位置を対応付けるテーブル(インデックス)を用意しておき、データの検索処理時に、キーの値を指定することによって高速にデータを取得する技術がある(例えば、特許文献2参照)。特許文献2では、2つ以上のキーの組み合わせに対して、データの格納位置を対応付けるマトリックス・インデックスについて記載されている。
また、キーの値の範囲毎にデータを保存する格納領域を変更することによって、複数の格納領域を利用可能とする技術が一般的に利用されている(例えば、特許文献3参照)。特許文献3では、格納領域を追加するとき、既存の格納領域から新たに追加した格納領域へのデータの移動量を抑えつつ、各格納領域の使用量を平準化する方法について説明されている。
特公平7−111718 特開平6−52231号公報 特開2001−142751号公報
データ分析システムでは、周期的に取得されたデータを蓄積し、必要に応じて蓄積されたデータを組み合わせて分析処理を実行する。
ここで、図を用いてデータ分析システムによって処理されるデータの一例を示す。
図20は、従来のデータ分析システムにおいて処理されるデータの一例を示す説明図である。図21は、従来のデータにおけるスキーマの一例を示す説明図である。図22Aから図22Cは、従来の分析処理において処理されるデータの一例を示す説明図である。
図20に示す例では、ユーザの移動履歴を表す。具体的には、ユーザを識別するユーザID、ユーザの位置を特定する座標情報である位置X及び位置Y、並びに、ユーザが当該位置に移動した時間であるタイムスタンプから構成されるデータである。
図20に示すようなデータに対する分析処理では、例えば、図21に示すようにスキーマに基づいてデータが変換される。さらに、変換されたデータは、図22Aに示すようにユーザID毎にグループ化され、集計等の分析処理が実行される。
しかし、分析処理時に図20に示すようなデータを図22Aに示すようなデータに変換する処理に時間がかかるため、本データ分析システムでは、分析処理を効率化するため、予め図22Aに示すようなデータに変換されたデータが蓄積され、蓄積されたデータを用いて分析処理が実行される。
なお、本明細書では、1以上レコードから構成されるデータをデータセットと記載する。また、図20に示すようなデータセットを素データと記載し、図21に示すような構造のデータを構造化データと記載する。
蓄積処理では、図20に示す形式のデータが周期的(例えば月単位)に収集され、図22Aの形式のデータに変換された後、データ分析システムに蓄積される。このため、複数のデータを集計して、1年間のデータに対する分析処理、及び各年度の特定の月に対する分析処理を実行する場合には、図22Aに示す形式のデータを複数結合する必要がある。
例えば、データ分析システムは、図22A及び図22Bに示すような2つデータを結合して、図22Cに示すようなデータになる。
ここで、同一のユーザIDの行データ(レコード)をマージしていることから、データベースにおける結合(ジョイン)と同等の処理を行う必要がある。さらに、前述した例では結合対象となるデータは2つだけではなく、多数の表を結合する場合がある。
また、周期的に蓄積されるデータは、データ毎にサイズ分布が異なる場合がある。例えば、月ごとのサービスの利用回数が異なるユーザのデータでは、各月のデータのサイズ分布の違いが発生する。
特許文献1には、表を区分するときに区分する位置(分割位置)を決定する方法は記載されていない。一般に表を均等に区分するには表に含まれるキーの分布情報が必要になる。キーの分布情報を取得する場合に、表全体をスキャンする方法では処理完了までに時間がかかる。
キーの分布情報を取得する他の方法としては、特許文献2に記載されたインデックスを用いる方法がある。インデックスは表には、すべてのキー値が含まれるため、インデックスをスキャンすることによってキーの分布情報を取得することができる。インデックスは表と比べてデータサイズが小さいため、処理時間を短くできる。
しかし、多数の表を結合する場合には、表の数だけインデックスをスキャンする必要があり、処理時間が長くなる。また、対象とするデータが大量である場合、表の作成時にインデックスを作成する処理、及び、表の更新時にインデックスを更新する処理に時間がかかるという課題がある。
これに対して、インデックスを利用せず、特許文献3に記載の方法を用いることが考えられる。すなわち、あらかじめ複数の分割領域に分割された表を管理しておき、各表の分割領域同士を対応させて、分割領域毎に並列にマージ結合処理を実行する方法を用いることが考えられる。
しかし、一般に表の分割位置は表毎に異なるため、分割領域を対応させることができない。たとえ、すべての表の分割位置が一致するようにしていてもデータ更新時に各分割領域にデータサイズの偏りが発生するという別の課題がある。
すなわち、周期的に蓄積されるデータ毎にデータサイズ分布が異なるため、予め固定された分割位置では、データの組み合わせによって各分割領域のデータサイズに偏りが発生する。したがって、並列して結合処理を実行する場合に処理量のばらつきが発生し、効率的に並列処理ができないという課題がある。
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、キー及びデータ値から構成されるデータを複数含むデータセットに対する分析処理を複数の計算機が並列実行する計算機システムであって、前記各計算機は、プロセッサと、前記プロセッサに接続されるメモリと、前記のプロセッサに接続される記憶装置と、前記プロセッサに接続されるネットワークインタフェースとを有し、前記各計算機は、所定のキー範囲毎に前記データセットを分割した分割領域の分割位置を示すキーである分割位置キーを管理する分割情報を、前記データセット毎に保持し、前記各データセットの前記分割情報に含まれるすべての前記分割位置キーは同一であり、前記複数の計算機が有する記憶領域上には、前記データセットを格納するファイルシステムが構成され、前記計算機システムは、前記分析処理を実行する場合に、前記分割領域毎に複数のタスクを生成し、前記生成されたタスクを前記各計算機に割り当てて、前記各データセットの分割領域に含まれる前記データを結合して前記分析処理を実行し、前記ファイルシステムに新規データセットが格納された場合に、前記新規データセットが格納された後の各分割領域のデータサイズに基づいて、所定の閾値より大きいデータサイズの前記分割領域である対象領域が存在するか否かを判定し、前記対象領域が存在すると判定された場合、前記対象領域を複数の新たな分割領域に分割することを特徴とする。
本発明の代表的な一形態によれば、インデックスを作成することなく、データセット間の結合処理を並列実行できる。また、新規データセットが追加された場合に、分割領域ごとのデータ量のばらつきを抑えることができるため結合処理を実行するタスク間の処理量の平準化できる。
本発明の第1の実施形態におけるデータ分析システムのシステム構成を説明するブロック図である。 本発明の第1の実施形態におけるノードのハードウェア構成を説明するブロック図である。 本発明の第1の実施形態におけるマスタノードのソフトウェア構成を説明するブロック図である。 本発明の第1の実施形態におけるスレーブノードのソフトウェア構成を説明するブロック図である。 本発明の第1の実施形態におけるデータ管理テーブルの一例を示す説明図である。 本発明の第1の実施形態における分割テーブルの一例を示す説明図である。 本発明の第1の実施形態における分割テーブルの一例を示す説明図である。 本発明の第1の実施形態におけるパーティションテーブルの一例を示す説明図である。 本発明の第1の実施形態におけるにキーサイズテーブルの一例を示す説明図である。 本発明の第1の実施形態におけるにキーサイズテーブルの一例を示す説明図である。 本発明の第1の実施形態におけるデータの結合処理及び分析処理を説明するフローチャートである。 本発明の第1の実施形態におけるデータ追加処理を説明するフローチャートである。 本発明の第1の実施形態におけるグルーピング処理の詳細を説明するフローチャートである。 本発明の第1の実施形態におけるデータ出力処理を説明するフローチャートである。 本発明の第1の実施形態のおけるデータサイズの確認処理を説明するフローチャートである。 本発明の第1の実施形態におけるにキーサイズテーブルの一例を示す説明図である。 本発明の第1の実施形態における分割後の分割テーブルの一例を示す説明図である。 本発明の第1の実施形態における分割後の分割テーブルの一例を示す説明図である。 本発明の第1の実施形態におけるに分割後のキーサイズテーブルの一例を示す説明図である。 本発明の第2の実施形態におけるレコードのスキーマを示す説明図である。 本発明の第2の実施形態におけるレコードの一例を示す説明図である。 本発明の第2の実施形態におけるファイルを示す説明図である。 本発明の第2の実施形態におけるファイルを示す説明図である。 本発明の第2の実施形態におけるファイルを示す説明図である。 本発明の第2の実施形態における分割テーブルの一例を示す説明図である。 従来のデータ分析システムにおいて処理されるデータの一例を示す説明図である。 従来のデータにおけるスキーマの一例を示す説明図である。 従来の分析処理おいて処理されるデータの一例を示す説明図である。 従来の分析処理おいて処理されるデータの一例を示す説明図である。 従来の分析処理おいて処理されるデータの一例を示す説明図である。
[第1の実施形態]
以下、本発明の第1の実施形態を説明する。
図1は、本発明の第1の実施形態におけるデータ分析システムのシステム構成を説明するブロック図である。
データ分析システムは、クライアントノード10、マスタノード20及びスレーブノード30から構成され、ネットワーク40を介して各ノードが相互に接続される。なお、ネットワーク40は、SAN、LAN及びWANなどが考えられるが、各ノードが通信できるものであればどのようなものであってもよい。また、各ノードが直接接続されてもよい。
ここでノードとは計算機を示す。以降、計算機をノードと記載する。
クライアントノード10は、データ分析システムの利用者が利用するノードである。利用者は、クライアントノード10を用いてマスタノード20及びスレーブノード30等に各種指示を送信する。
マスタノード20は、データ分析システム全体を管理するノードである。スレーブノード30は、マスタノード20から送信される指示にしたがって、各処理(タスク)を実行するノードである。なお、本データ分析システムは、並列分散処理システムの一種であり、スレーブノード30の数を増やすことによって、システムの処理性能を向上することができる。
なお、クライアントノード10、マスタノード20及びスレーブノード30のハードウェア構成は同一のものであり、詳細については図2を用いて後述する。
各ノードには、HDD等の記憶装置11、21、31が接続される。各記憶装置11、21、31には、OS等の各ノードが備える機能を実現するためのプログラムが格納される。各プログラムは、CPU(図2参照)によって記憶装置11、21、31から読み出され、CPU(図2参照)によって実行される。
図2は、本発明の第1の実施形態におけるノードのハードウェア構成を説明するブロック図である。
図2ではクライアントノード10を例に説明するが、マスタノード20及びスレーブノード30も同一のハードウェア構成である。
クライアントノード10は、CPU101、ネットワークI/F102、入出力I/F103、メモリ104、及びディスクI/F105を備え、内部バス等を介して各構成が互いに接続される。
CPU101は、メモリ104に格納されるプログラムを実行する。
メモリ104は、CPU101によって実行されるプログラム及び当該プログラムを実行するために必要な情報を格納する。なお、メモリ104に格納されるプログラムは、記憶装置11に格納されていてもよい。この場合、CPU101によって、記憶装置11からメモリ104上に読み出される。
ネットワークI/F102は、ネットワーク40を介して他のノードと接続するためのインタフェースである。ディスクI/F105は、記憶装置11と接続するためのインタフェースである。
入出力I/F103は、キーボード106、マウス107及びディスプレイ108などの入出力装置を接続するためのインタフェースである。利用者は、入出力装置を用いてデータ分析システムに指示を送信し、また、分析結果を確認する。
なお、マスタノード20及びスレーブノード30は、キーボード106、マウス107及びディスプレイ108を備えていなくてもよい。
次に、マスタノード20及びスレーブノード30のソフトウェア構成を説明する。
図3Aは、本発明の第1の実施形態におけるマスタノード20のソフトウェア構成を説明するブロック図である。
マスタノード20は、データ管理部21、処理管理部22及びファイルサーバ(マスタ)23を備える。
データ管理部21、処理管理部22及びファイルサーバ(マスタ)23は、メモリ104上に格納されるプログラムであり、CPU101によって実行される。以下、プログラムを主体として処理を説明する場合には、CPU101によって当該プログラムが実行されているものとする。
データ管理部21は、データ分析システムが処理するデータを管理する。データ管理部21は、データ管理テーブルT100、分割テーブルT200及びキーサイズテーブルT400を含む。
データ管理テーブルT100は、データ分析システムが処理するデータセットの管理情報を格納する。データ管理テーブルT100の詳細については、図4を用いて後述する。ここで、データセットとは、複数のレコードから構成されるデータを示す。
分割テーブルT200は、データセットを分割した分割領域の管理情報を格納する。ここで分割領域とは、所定のキー範囲ごとにデータセットが分割されたレコード群を表す。分割テーブルT200の詳細については、図5を用いて後述する。
キーサイズテーブルT400は、データセットにおける各分割領域のデータサイズの管理情報を格納する。一つのデータセットに対して一つのキーサイズテーブルT400が対応する。また、データ分析システム全体のデータセットのデータサイズを管理するキーサイズテーブルT400も含まれる。キーサイズテーブルT400の詳細については、図7を用いて後述する。
処理管理部22は、各スレーブノード30上で分散して実行される並列処理を管理する。処理管理部22は、並列実行される処理(タスク)を生成するプログラムを管理するプログラムリポジトリ24を含む。つまり、処理管理部22は、プログラムリポジトリ24から各スレーブノード30において実行すべきタスクを生成し、生成されたタスクの実行をスレーブノード30に指示する。
ファイルサーバ(マスタ)23は、実際のデータを格納するファイルを管理する。
なお、マスタノード20が備えるソフトウェア構成は、ハードウェアを用いて実現してもよい。
図3Bは、本発明の第1の実施形態におけるスレーブノード30のソフトウェア構成を説明するブロック図である。
スレーブノード30は、処理実行部31及びファイルサーバ(スレーブ)32を備える。
処理実行部31及びファイルサーバ(スレーブ)32は、メモリ104上に格納されるプログラムであり、CPU101によって実行される。以下、プログラムを主体として処理を説明する場合には、CPU101によって当該プログラムが実行されているものとする。
処理実行部31は、マスタノード20の処理管理部22から処理(タスク)の実行指示を受け付け、所定の処理(タスク)を実行する。つまり、処理実行部31は、受け付けた処理(タスク)の実行指示に基づいて、当該処理(タスク)を実行するためのプロセスを生成する。生成されたプロセスが実行されることによって、各スレーブノード30上で複数のタスクが実行され、並列分散処理が実現される。
本実施形態の処理実行部31は、前述したタスクを実行するデータ追加部(Map)33及びデータ追加部(Reduce)34を含む。
データ追加部(Map)33は、入力された素データ(図20参照)からレコード単位のデータを読み出し、key範囲毎にデータ追加部(Reduce)34に、読み出された素データを出力する。なお、データ追加部(Reduce)34は、処理を担当するkey範囲が予め設定されている。
データ追加部(Map)33は、パーティションテーブルT300を含む。データ追加部(Map)33は、パーティションテーブルT300に基づいて、読み出されたデータを出力するデータ追加部(Reduce)34を特定する。なお、パーティションテーブルT300については、図7A及び図7Bを用いて後述する。
データ追加部(Reduce)34は、入力された素データを所定の形式、すなわち、構造化データ(図21参照)に変換し、さらに、当該構造化データを分散ファイルシステムに出力する。
データ追加部(Reduce)34は、キーサイズテーブルT400を含む。キーサイズテーブルT400は、データ管理部21に含まれるキーサイズテーブルT400と同一のものである。ただし、キーサイズテーブルT400には、データ追加部(Reduce)34が担当するkey範囲の分割領域に関する管理情報のみが格納される。
ファイルサーバ(スレーブ)32は、分散配置されるファイルを管理する。ファイルサーバ(マスタ)23は、ファイルのメタデータ(ディレクトリ構造、サイズ、更新日時等)を管理し、ファイルサーバ(スレーブ)32と連携して一つのファイルシステムを提供する機能を備える。
データ追加部(Map)33及びデータ追加部(Reduce)34は、ファイルサーバ(マスタ)23にアクセスすることによって、ファイルシステム上のファイルを利用し、各種タスクを実行する。すなわち、データ追加部(Map)33及びデータ追加部(Reduce)34は、同一のファイルシステムにアクセスすることができる。
なお、スレーブノード30が備えるソフトウェア構成は、ハードウェアを用いて実現してもよい。
次にデータ管理部21に含まれる各テーブルの詳細について説明する。
図4は、本発明の第1の実施形態におけるデータ管理テーブルT100の一例を示す説明図である。
データ管理テーブルT100は、データID(T101)及び分割テーブル名T102を含む。データID(T101)は、データセットの識別子を格納する。分割テーブル名T102は、データセットに対応する分割テーブルT200の名称を格納する。
データ管理テーブルT100の各エントリは、本データ分析システムが管理する1つのデータセットに対応する。また、当該データセットは、通常のデータベースにおける1つのテーブル(リレーション)に対応する。
図5A及び図5Bは、本発明の第1の実施形態における分割テーブルT200の一例を示す説明図である。
図5Aは、分割テーブル名T102が「log01.part」であるデータセットの分割テーブルT200の一例を示す。図5Bは、分割テーブル名T102が「log02.part」である分割テーブルT200の一例を示す。
分割テーブルT200は、本データ分析システムが処理する各データセットの分割方法を示す管理情報を格納する。分割テーブルT200は、分割テーブル名T201、データファイル名T202、key(T203)及びオフセットT204を含む。
分割テーブル名T201は、分割テーブルT200の名称を格納する。分割テーブル名T201は、分割テーブル名T102と同一のものである。
データファイル名T202は、分割領域に対応するデータを格納するファイルの名称を格納する。
key(T203)は、分割領域のkey範囲を示すkeyの値、すなわち、データセットの分割位置を表すkeyの値を格納する。key(T203)には、分割領域における終了地点を表すkeyの値が格納される。
オフセットT204は、データセットにおける分割位置の値に対応するオフセットを格納する。オフセットT204には、key(T203)に対応するkeyのオフセットが格納される。なお、データファイル名T202が異なる場合には、データが格納されるファイルが異なるため、対応するエントリのオフセットは「0」から改めてカウントされる。
分割領域の開始位置は、1つ前のエントリのkey(T203)及びオフセットT204に対応する。そして、最初の分割領域の開始位置を表すkeyと、最後の分割領域の終了位置を表すkeyは定義されないため、これらは分割テーブルT200には記載されない。
各分割テーブルT200の各エントリは、本データ分析システムが管理する1つの分割領域に対応する。
例えば、図4に示すデータ管理テーブルT100の1つ目のエントリは、分割テーブル名T101が「log01.part」であり、図5Aに示す分割テーブルT200に対応する。
図5Aに示す分割テーブルT200の1つ目のエントリが最初の分割領域に対応する。1つ目のエントリは、データファイル名T202が「log01/001.dat」であるファイルに、当該分割領域のデータが格納されていることを示す。
また、1つ目のエントリのkey(T203)が「034a」であることから、最初の分割領域のkey範囲は「034a」未満であることを示す。また、1つ目のエントリのオフセットT204が「280」であることから、ファイル上のオフセットが「0〜279」の範囲に最初の分割領域のデータが格納されていることを示す。
また、図5Aに示す分割テーブルT200の2つ目のエントリは、対応する分割領域のkey範囲は「034a」以上かつ「172d」未満であり、データファイル名T202が「log01/002.dat」であることを示す。また、データファイル名T202が1つ目のエントリと異なるため、オフセットは「0」からカウントされる。したがって、オフセットが「0〜218」の範囲に対応する分割領域のデータが格納されることを示す。
また、図5Aに示す分割テーブルT200の3つ目のエントリは、対応する分割領域のkey範囲は「172d」以上かつ「328b」未満であり、データファイル名T202が「log01/002.dat」であることを示す。また、データファイル名T202が2つ目のエントリと一致するため、ファイル上のオフセットが「219〜455」の範囲に対応する分割領域のデータが格納されることを示す。
また、図4に示すデータ管理テーブルT100の2つ目のエントリは、分割テーブル名T101が「log02.part」であり、図5Bに示す分割テーブルT200に対応する。
図5Bに示す分割テーブルT200に格納される各エントリのデータファイル名T202及びオフセットT204は、図5Aに示す分割テーブルT200の各エントリと異なる。しかし、両分割テーブルT200の分割位置を表すkey(T203)は共に一致する。
本実施形態では、結合する可能性があるデータセットにおける分割領域の分割位置、すなわち、key(T203)は必ず一致するように管理される。これによって、2つ以上のデータセットの結合処理を並列化することができる。すなわち、結合対象となるデータセットの分割テーブルT200のkey(T203)が同一のエントリを対応付けることが可能となり、分割領域毎に結合処理を並列して実行することが可能となる。
ファイルには、図22Aに示したように1つのkeyと1つ以上の値とから構成されるレコードが複数含まれる。また、各ファイルは、keyに基づいてソートされた形式で、分散ファイルシステムに格納される。これによって、分割領域毎に結合処理を行う場合に、同一のkeyをつき合わせてマージ結合することが可能となる。
また、異なる分割領域のデータを格納するファイルは同一であってもよい。例えば、図5Aでは、2つ目のエントリと3つ目のエントリとは、同一のファイルである。ただし、それぞれのエントリのkey範囲が異なっている。
前述のように図5Aでは、ファイルの数は3つであるが、分割領域の数は4つであり、それぞれ異なる。後述するように、ファイルの数は、本データ分析システムにおけるデータ追加処理の並列度に一致する。一方、分割領域の数は、データの分析処理の並列度に依存する。したがって、ファイルの数と分割領域の数とは、それぞれ異なった処理に依存するため、両者には依存関係はなく、どのように決めてもよい。
図6は、本発明の第1の実施形態におけるパーティションテーブルT300の一例を示す説明図である。
パーティションテーブルT300は、新たに追加されるデータセット(素データ)を分割して、タスクを実行するデータ追加部(Reduce)34に、当該データを振り分ける際に用いられる情報を格納する。パーティションテーブルT300は、key(T301)及び宛先T302を含む。
key(T301)は、入力されたデータセットの分割位置を表すkeyの値を格納する。宛先T302は、分割されたデータセットの処理を担当するデータ追加部(Reduce)34の位置を示す宛先情報を格納する。図6に示す例では、IPアドレス及びポートを含む宛先情報によってノード及び当該データ追加部(Reduce)34が指定される。
図7A及び図7Bは、本発明の第1の実施形態におけるにキーサイズテーブルT400の一例を示す説明図である。
キーサイズテーブルT400は、分割領域のデータサイズを格納する。キーサイズテーブルT400は、key(T401)及びサイズT402を含む。
key(T401)は、key(T203)と同一のものである。サイズT402は、key(T401)を分割位置とする分割領域のデータサイズを格納する。
なお、サイズT402は、結合処理の対象となる分割領域のデータサイズの合計値が格納される。
キーサイズテーブルT400は、後述する結合処理及び分析処理、並びに、データ追加処理の実行時に動的に生成される。
次に、データの結合処理及び分析処理について説明する。
図8は、本発明の第1の実施形態におけるデータの結合処理及び分析処理を説明するフローチャートである。
結合処理は、必ず分析処理と共に実行される。すなわち、結合処理によって1レコード分のデータが結合された後、当該データに対して分析処理が実行される。
結合処理及び分析処理は、利用者からの指示を受信したデータ管理部21によって実行される。なお、利用者からの指示には、結合対象であるデータセットのデータIDが含まれる。
まず、マスタノード20は、処理対象となるデータセットに対応するキーサイズテーブルT400を作成する(ステップS101)。
具体的には、以下のような処理が実行される。
データ管理部21は、利用者から送信された指示に含まれるデータIDに基づいて、データ管理テーブルT100を検索し、対応するエントリから分割テーブル名T102を取得する。
次に、データ管理部21は、取得された分割テーブル名T102に対応する分割テーブルT200を取得する。
データ管理部21は、取得された分割テーブルT200に基づいて、分割領域毎の分割位置を示すkeyの値を特定し、また、結合対象であるデータセットのデータサイズを算出する。
さらに、データ管理部21は、前述の処理結果に基づいて、キーサイズテーブルT400を作成する。
例えば、データID(T101)が「log01」及び「log02」であるデータセットを結合する場合、対応する分割テーブルT200はそれぞれ図5A及び図5Bとなる。このとき、データ管理部21は、前述した処理を実行することによって、分割領域毎に2つのデータセットのデータサイズを足し合わせ、図7Aに示すようなキーサイズテーブルT400を作成する。
次に、マスタノード20は、結合処理及び分析処理の組からなるタスクを複数生成し、生成された各タスクを各スレーブノード30に割り当てることによって当該タスクを起動する(ステップS102)。
具体的には、処理管理部22が、プログラムリポジトリ24から処理に必要なプログラムを読み出し、利用者によって指定された並列数分のタスクを生成する。さらに、処理管理部22が、生成されたタスクを各スレーブノード30上で実行させる。
なお、当該並列数がステップS101において作成されたキーサイズテーブルT400のエントリ数よりも小さい場合、当該エントリ数を並列数とし、エントリ数分のタスクをスレーブノード30上で実行させる。
次に、マスタノード20は、各タスクに分割領域を割り当てる(ステップS103)。
具体的には、データ管理部21は、ステップS101において作成されたキーサイズテーブルT400の各エントリに対応する分割領域を、ステップS102において生成された各タスクに割り当てる。
なお、データ管理部21は、キーサイズテーブルT400のサイズT402に基づいて、データサイズが均等になるように、各タスクに分割領域を割り当てる。
前述した分割領域の割り当て方法としては、例えば、データ管理部21が、キーサイズテーブルT400のエントリをサイズT402に基づいてソートし、データサイズが大きなエントリから順に、割り当てられたデータサイズが小さいタスクへ割り当てる方法が考えられる。
データ管理部21は、分割領域の割り当てが終了した後、タスクが割り当てられたスレーブノード30に対して、結合すべきファイルのデータファイル名及びオフセット位置を送信する。
例えば、図7AのキーサイズテーブルT400の1つ目のエントリに対応する分割領域が割り当てられたタスクの場合、対応する分割テーブルT200のエントリは、図5A及び図5Bのそれぞれ1つ目のエントリである。したがって、データ管理部21は、(データファイル名、開始位置、終了位置)=(log01/001.dat,0,280)、(log02/001.dat,0,200)を、当該タスクが割り当てられたスレーブノード30に送信する。
次に、マスタノード20は、タスクが割り当てられた各スレーブノード30に対してタスクの実行指示を送信し、処理を終了する(ステップS104)。
具体的には、データ管理部21は、タスクを割り当てた各スレーブノード30にタスクの実行指示を送信する。
マスタノード20から指示を受信したスレーブノード30は、ファイルサーバ(マスタ)23にアクセスし、データ管理部21から受信したデータファイル名及びオフセット位置に基づいて、指定されたファイルを、指定されたオフセット位置から読み出す。
各スレーブノード30は、読み出された各ファイルのkeyをつき合わせ、結合処理を実行する。さらに、スレーブノード30は、同一のスレーブノード30において、実行中の分析処理のタスクに1レコードずつ結合処理の結果を出力する。
例えば、図5A及び図5Bに対応するデータセットに対する分析処理では、4つの分割領域毎にタスクが生成され、各タスクによって前述した結合処理が実行される。
このとき、データセット毎に分割位置が異なると、重複するキー範囲について処理が実行されてしまうため並列処理が実現できない。しかし、本実施形態では、各データセットの分割位置が同一であるため、各データセットの分割領域における結合処理を並列実行できる。
以上が、データの結合処理及び分析処理の説明である。
次にデータ追加処理について説明する。
データ追加処理は、データ管理テーブルT100及び分割テーブルT200が作成されているデータセット、すなわち、分散ファイルシステムに既存のデータセットが格納されている場合に、新規データセットを追加するための処理である。
通常、データセット毎に各分割領域のデータサイズが異なる。そのため、分割位置を修正せずに各データセットの分割領域を結合すると、分割領域間のデータサイズのばらつきが発生する。この結果、分析処理を実行するタスクの処理量にばらつきが発生し、並列処理の効率が低下する。
本発明では、前述した課題を解決するため、データ追加処理時に後述する処理を実行することによって、分割領域を再分割し、各分割領域のデータサイズを平準化する。
具体的には、新規データセットが追加された後、結合対象となり得る全データセットを結合させた場合の各分割領域のデータサイズが所定の基準値以下になるように分割位置が制御される。これによって、全データセット利用時に並列実行される分析処理のタスク間における処理量の差を平準化させることができる。
なお、一部のデータセットを結合する場合には、各分割領域のデータサイズは基準値以下になり、分析処理のタスク間の処理量の差は平準化される。
分割領域を再分割することによって、結合処理及び分析処理のタスク制御のオーバーヘッドが発生した場合に、割り当てられている分割領域が小さくなった場合には、当該分割領域が割り当てられるタスクに複数の分割領域が割り当てられ、1つのタスクが実行する処理量を増やすことができる。
なお、前述した所定の基準値は、タスクの処理量の差に影響することから、許容されるタスクの処理量の差に基づき決定することが望ましい。
当該基準値を小さくしすぎると分割領域の数が増えるため、データ追加処理のオーバーヘッドが増える。一方、当該基準値を大きくしすぎるとタスク間の処理量の差が大きくなり、並列処理の効率が下がる。
したがって、1つのタスクが所定のデータ量を処理するときの実行時間が、タスク間の処理時間の差として許容される時間以下になるようなデータ量を所定の基準値とすればよい。
データ追加処理で追加されるデータは、図20に示すような形式で入力される。データ追加処理では、図22A示すような形式のデータをユーザIDでグループ化された形式に変換され、分散ファイルシステムに格納される。以下、図20の形式のデータセットを素データと記載し、図21の形式のデータを構造化データと記載する。
以下、図9を用いて具体的に処理について説明する。
図9は、本発明の第1の実施形態におけるデータ追加処理を説明するフローチャートである。
利用者が、ファイルサーバ(マスタ)23及びファイルサーバ(スレーブ)32によって実現される分散ファイルシステムに対して、素データを入力することによってデータ追加処理が実行される。
まず、データ管理部21は、入力された素データをサンプリングし、keyの出現頻度を解析する(ステップS201)。
具体的には、データ管理部21は、素データに含まれるレコードをランダムにサンプリングする。データ管理部21は、読み出されたレコードの最初のフィールドをkeyとするkeyの一覧を作成する。
なお、素データは1レコードが1行の形式のデータから構成されるため、データ管理部21は、改行コードを検出することによって1レコード分のデータを読み出すことができる。
精度を向上するためにサンプリング数を増やす場合には、データ管理部21は、サンプリング処理を並列実行してもよい。この場合、データ管理部21は、素データをデータサイズが等しくなるように複数個に分割し、分割された素データ毎にサンプリング処理が実行される。
具体的には、データ管理部21は、サンプリング処理の実行タスクを各スレーブノード30に割り当て、さらに、当該実行タスクに分割された素データを割り当てる。データ管理部21は、各スレーブノード30の処理実行部31からサンプリング処理の結果を受信し、すべてのスレーブノード30から受信したサンプリング処理の結果を集計してkeyの一覧を作成する。
次に、データ管理部21は、作成されたkeyの一覧に基づいて、素データの分割位置となるkeyの値を決定する(ステップS202)。
当該分割処理は、後述するステップS204における入力された素データを出力するための分割処理であり、分割テーブルT200における分割処理とは異なる処理である。
ただし、ステップS204の処理では、既存の分割位置は変更されない。したがって、素データの分割位置は、既存のデータセットの分割テーブルT200の分割位置に一致させる必要がある。
具体的には、以下のような処理が実行される。
データ管理部21は、分割テーブルT200を参照し、既存の全データセットの分割位置を含むキーサイズテーブルT400を作成する。例えば、図7Aに示すようなキーサイズテーブルT400が作成される。ただし、この時点では、サイズT402には値は格納されていない。
データ管理部21は、サンプリングされたkey毎に対応する分割領域を特定し、キーサイズテーブルT400の対応するエントリのサイズT402に、keyに対応するデータのデータサイズをインクリメントする。
以上のような処理によって、データ管理部21は、サンプリングされたkeyの分布を求めることができる。
例えば、サンプリングされたkeyが「125d」である場合、当該keyは、「034a」以上かつ「172d」未満であるため、key(T401)が「172d」であるエントリのサイズT402にkeyが「125d」であるデータのデータサイズがインクリメントされる。
データ管理部21は、keyの分布を求めた後、利用者によって指定された並列数と分割領域の数とが一致するように、キーサイズテーブルT400の隣り合う分割領域をマージする。このとき、マージ後の各分割領域のデータサイズが均等になることが望ましい。
例えば、利用者によって指定された並列数が「2」の場合、keyの分布が図7Bに示すようなキーサイズテーブルT400は4つの分割領域があるため、マージして2つの分割領域にする必要がある。そこで、データ管理部21は、key(T401)が「034a」のエントリと「172d」のエントリとを1つの分割領域としてマージし、key(T401)が「328b」のエントリと空欄のエントリとを1つの分割領域としてマージする。
マージ処理が終了した後、データ管理部21は、マージ結果をパーティションテーブルT300のkey(T301)に格納する。
なお、前述したマージ処理において、キーサイズテーブルT400のエントリ数が、利用者によって指定された並列数以上の場合、マージ処理は実行されず、当該エントリ数が並列数となる。
以上がステップS202における処理である。
次に、データ管理部21は、分析処理において結合対象となる可能性がある全データセットのデータサイズを算出する(ステップS203)。さらに、データ管理部21は、算出結果に基づいて、キーサイズテーブルT400を作成する。
具体的には、以下のような処理が実行される。
データ管理部21は、データ管理テーブルT100を参照して、各データセットの分割テーブル名T102を取得する。さらに、データ管理部21は、取得された分割テーブル名T102に基づいて、対応する分割テーブルT200の一覧を取得する。
なお、結合対象となり得る各データセットの分割テーブルT200における分割位置は一致している。したがって、分析処理において分割領域の結合を並列実行できる。
データ管理部21は、取得された分割テーブルT200のkey(T203)を含むキーサイズテーブルT400を作成する。さらに、データ管理部21は、分割テーブルT200毎に各分割領域のデータサイズを算出し、作成されたキーサイズテーブルT400のサイズ(T402)に、算出されたデータサイズを加算する。
取得されたすべての分割テーブルT200に対して同様の処理を実行することによって、分散ファイルシステム上に存在するすべての既存のデータセットに関するキーサイズテーブルT400を作成できる。
例えば、図5A及び図5Bに示す分割テーブルT200に対して前述した処理を実行することによって、図7Aに示すようなキーサイズテーブルT400が作成される。
以上がステップS203における処理である。
次に、データ管理部21は、ステップS202におけるマージ結果を表すパーティションテーブルT300に基づいて、素データに対するグルーピング処理を実行する(ステップS204)。
ここで、グルーピング処理とは、素データに含まれるレコードをkey(図20に示す例ではユーザID)毎に集約する処理である。
グルーピング処理では、データ管理部21、データ追加部(Map)33及びデータ追加部(Reduce)34が連携して処理を実行する。
データ追加部(Map)33及びデータ追加部(Reduce)34は、データ管理部21からの指示にしたがって、それぞれ並列処理を実行する。
なお、パーティションテーブルT300のエントリ数が、タスクを割り当てるデータ追加部(Reduce)34の並列度となる。一方、タスクを割り当てるデータ追加部(Map)33の並列度は、パーティションテーブルT300のエントリ数とは無関係であり、利用者によって指定される。
以下、データ追加部(Map)33をMapタスクと記載し、データ追加部(Reduce)34に割り当てるタスクをReduceタスクとも記載する。
具体的には以下のような処理が実行される。
データ管理部21は、利用者によって指定された並列数にしたがって、データサイズが一定となるように素データを分割する。さらに、データ管理部21は、素データを分割して生成された分割領域の各分割位置であるオフセット位置、及び当該分割領域のデータサイズを算出する。なお、オフセット位置はレコード境界に一致するように素データの一部をスキャンして調整される。
データ管理部21は、処理管理部22と連携して、利用者によって指定された並列数分のMapタスクを生成し、生成されたMapタスクを各データ追加部(Map)33に割り当てる。このとき、各データ追加部(Map)33には、分割領域のオフセット位置、分割領域のデータサイズ、及び素データのファイル名が送信される。
さらに、データ管理部21は、処理管理部22連携して、パーティションテーブルT300のエントリ数分のReduceタスクを生成する。
また、データ管理部21は、パーティションテーブルT300の各エントリをデータ追加部(Reduce)34と対応づける。データ管理部21は、対応づけられた各データ追加部(Reduce)34に、key(T301)に対応するkey範囲の分割領域を処理するためのReduceタスクを割り当てる。
さらに、データ管理部21は、ステップS202において作成されたキーサイズテーブルT400のうち、送信されたkey範囲に対応するエントリをデータ追加部(Reduce)34送信する。
例えば、図6に示すパーティションテーブルT300の最初のエントリのkey範囲は、「172d」未満であるため、対応するキーサイズテーブルT400のエントリは、図7Aの一つ目のエントリ及び2つ目のエントリである。したがって、データ管理部21は、一つ目のエントリ及び2つ目のエントリを対応するデータ追加部(Reduce)34に送信する。
さらに、データ管理部21は、データ追加部(Reduce)34の宛先情報(アドレス:ポート番号)を取得し、パーティションテーブルT300の対応するエントリの宛先T302に取得された宛先情報を格納する。
パーティションテーブルT300が作成された後、処理管理部22は、すべてのデータ追加部(Map)33に完成したパーティションテーブルT300を送信する。
以上がステップS204における処理である。
なお、ステップS204におけるデータ追加部(Map)33及びデータ追加部(Reduce)34は、グルーピング処理が実行された後、データの出力処理を実行する。グルーピング処理の詳細については図10を用いて後述し、また、データの出力処理の詳細については図11を用いて後述する。
データ管理部21は、分割テーブルT200を更新し、処理を終了する(ステップS205)。
具体的には、データ管理部21は、各データ追加部(Reduce)34から受信した分割テーブルT200に基づいて、自身が管理する分割テーブルT200を更新する。なお、受信した分割テーブルT200は、データ追加部(Reduce)34が後述する処理(図10及び図11参照)が実行された後のテーブルである。
データ追加部(Reduce)34は、一部のkey範囲のデータセットのみを処理する。本実施形態では、一つのデータ追加部(Reduce)34によって更新された分割テーブルT200に基づいて、データ分析システムにおけるすべての分割テーブルT200が更新される点に特徴がある。
また、データ管理部21は、各データ追加部(Reduce)34から受信した、入力された素データの分割テーブルT200を1つにマージし、マージされたテーブルを入力された素データの分割テーブルT200として管理する。
これは、key範囲毎に、各データ追加部(Reduce)34において素データに対する処理が並列実行されていたため、各処理結果を集約する処理である。
さらに、データ管理部21は、素データの分割テーブルT200に対応するエントリをデータ管理テーブルT100に追加する。
次に、ステップS204におけるグルーピング処理の詳細について説明する。
図10は、本発明の第1の実施形態におけるグルーピング処理の詳細を説明するフローチャートである。
スレーブノード30は、入力された素データに対してソート処理を実行する(ステップS301)。
具体的には以下の処理が実行される。
データ追加部(Map)33は、素データから1つずつレコードを読み出す。データ追加部(Map)33は、読み出されたレコードのkeyに基づいて、パーティションテーブルT300からデータ追加部(Reduce)34の宛先情報を取得する。すなわち、読み出されたレコードを処理するデータ追加部(Reduce)34が特定される。
データ追加部(Map)33は、宛先毎に読み出された各レコードを分類する。以下、宛先ごとに分類されたレコード群をセグメントと記載する。
データ追加部(Map)33は、自身が担当する分割された素データに含まれるすべてのレコードを読み出した後、各セグメントに含まれるレコードをkeyに基づいてソートする。
以上がステップS301における処理である。
次に、スレーブノード30は、ソートされたセグメントをデータ追加部(Reduce)34に送信する(ステップS302)。
具体的には、データ追加部(Map)33が、ステップS301において取得された宛先情報に対応するデータ追加部(Reduce)34に、ソートされたセグメントを送信する。各データ追加部(Reduce)34は、各スレーブノード30のデータ追加部(Map)33から送信されるセグメントを受信する。
データ追加部(Map)33からセグメントを受信したスレーブノード30は、keyに基づいて受信したセグメントをマージし、処理を終了する(ステップS303)。
具体的には、データ追加部(Reduce)34が、受信したすべてのセグメントを順に読み出し、keyが同一のセグメント同士をマージして結合する。
さらに、データ追加部(Reduce)34は、マージされたセグメントに含まれるレコードを、図10に示すような構造化データに変換する。前述した処理によって、複数のレコードが、keyが同一の1つのレコードに集約される。
次に、ステップS204において、データ追加部(Reduce)34が実行するデータ出力処理について説明する。
図11は、本発明の第1の実施形態におけるデータ出力処理を説明するフローチャートである。
まず、データ出力処理の概要について説明する。
データ追加部(Reduce)34は、データ出力処理を実行することによって、図22Aに示すような形式の構造化データを分散ファイルシステムへ出力する。並列度の数だけ、データ追加部(Reduce)34においてタスクが実行される。このとき、データ追加部(Reduce)34が出力するファイル名はそれぞれ異なる。
さらに、本発明では、データ追加部(Reduce)34は、素データのデータサイズをキーサイズテーブルT400に加算して、素データが追加された後の各分割領域のデータサイズを算出する。
データ追加部(Reduce)34は、データサイズが所定の閾値以上である分割領域が存在する場合、分割領域の分割処理を実行する。
データ追加部(Reduce)34は、分割領域の分割処理が実行された場合、自身が管理する既存のデータセットの分割テーブルT200も更新する。さらに、データ追加部(Reduce)34は、更新された分割テーブルT200をデータ管理部21に送信する。更新された分割テーブルT200に基づいて、データ管理部21が、分割テーブルT200の更新処理(ステップS205)を実行する。
また、データ追加部(Reduce)34は、入力された素データの分割テーブルT200を作成し、処理終了後に作成された分割テーブルT200をデータ管理部21に送信する。
以下、各処理の詳細について説明する。
まず、データ追加部(Reduce)34は、データ出力処理を開始する前に、ステップS204においてデータ管理部21から受信したキーサイズテーブルT400に含まれるkeyのみが格納されたキーサイズテーブルT400を作成する。ここで、作成されたキーサイズテーブルT400は、素データの所定の分割領域のデータサイズが格納されるテーブルである。
以下、作成されたキーサイズテーブルT400を追加用キーサイズテーブルT400とも記載する。なお、追加用キーサイズテーブルT400が作成された時点では、サイズT402の初期値は「0」に設定される。
また、データ管理部21から受信したキーサイズテーブルT400は、データ追加部(Reduce)34が担当するkey範囲に含まれる分散ファイルシステム上の全データセットのデータサイズを管理するテーブルである。以下、当該キーサイズテーブルT400を全データ用キーサイズテーブルT400と記載する。
データ出力処理が開始されると、データ追加部(Reduce)34は、ステップS303において作成されたレコードを出力し、前回出力されたレコードとは異なる分割領域に含まれるレコードであるか否かを判定する(ステップS401)。
具体的には、データ追加部(Reduce)34は、追加用キーサイズテーブルT400のkey(T402)を参照し、出力されたレコードが前回出力されたレコードと異なる分割領域に含まれるか否かを判定する。
本実施形態では、keyに基づいてソートされたレコードが順に出力されるため、出力されたレコードが所定のkey範囲、すなわち、所定の分割領域に含まれるか否かを判定できる。
なお、最初に出力されるレコードの場合、同一の分割領域に含まれると判定される。
異なる分割領域に含まれるレコードであると判定された場合、データ追加部(Reduce)34は、前回レコードが追加された分割領域のデータサイズの確認処理を実行し(ステップS405)、ステップS402に進む。なお、データサイズの確認処理については、図12を用いて後述する。
同一の分割領域に含まれるレコードであると判定された場合、データ追加部(Reduce)34は、ステップS303において作成されたレコードを分散ファイルシステムに書き込む(ステップS402)。
このとき、データ追加部(Reduce)34は、書き込まれたレコードのkeyの値、レコードが書き込まれたファイル上のオフセット位置、及びレコードのデータサイズを含むレコード統計情報を作成し、作成されたレコード統計情報を保存する。これは、素データのレコード統計情報である。
次に、データ追加部(Reduce)34は、キーサイズテーブルT400を更新する(ステップS403)。
具体的には、データ追加部(Reduce)34は、ステップS402において書き込まれたレコードのkeyが含まれるkey範囲の分割領域を特定する。データ追加部(Reduce)34は、特定された分割領域に対応するエントリを、追加用キーサイズテーブルT400及び全データキーサイズテーブルT400から検索する。さらに、データ追加部(Reduce)34は、各キーサイズテーブルT400の対応するエントリのサイズT402に、書き込まれたレコードのデータサイズを加算する。
データ追加部(Reduce)34は、すべてのレコードを出力したか否かを判定する(ステップS404)。
すべてのレコードが出力されていないと判定された場合、データ追加部(Reduce)34は、ステップS401に戻り、同様の処理を実行する。
すべてのレコードが出力されたと判定された場合、データ追加部(Reduce)34は、最後の分割領域に対するデータサイズの確認処理を実行し、処理を終了する(ステップS406)。なお、ステップS406におけるデータサイズの確認処理は、ステップS405と同一の処理である。
図12は、本発明の第1の実施形態のおけるデータサイズの確認処理を説明するフローチャートである。
データ追加部(Reduce)34は、ステップS403において更新された全データキーサイズテーブルT400を参照し、対象となる分割領域のデータサイズが所定の基準値より大きいか否かを判定する(ステップS501)。すなわち、素データが追加された分割領域が、所定の基準値より大きいか否かが判定される。
ここで、対象となる分割領域とは、前回入力されたレコードが含まれる分割領域である。以下、対象となる分割領域を、対象領域とも記載する。
具体的には、データ追加部(Reduce)34は、全データキーサイズテーブルT400の対応するエントリのサイズT402を参照し、対象領域のデータサイズが所定の基準値より大きいか否かを判定する。
対象領域のデータサイズが所定の基準値以下であると判定された場合、データ追加部(Reduce)34は、ステップS506に進む。
対象領域のデータサイズが所定の基準値より大きいと判定された場合、データ追加部(Reduce)34は、マスタノード20から既存のデータセットの分割テーブルT200を取得する(ステップS502)。
ここで、ステップS203においてマスタノード20が取得したすべての分割テーブルT200が取得される。なお、データ追加部(Reduce)34は、マスタノード20から取得された分割テーブルT200をキャッシュとして保存してもよい。
次に、データ追加部(Reduce)34は、取得された各分割テーブルT200における対象領域の終了位置、すなわち、オフセットを特定する(ステップS503)。
具体的には以下のような処理が実行される。
データ追加部(Reduce)34は、対象領域のkeyに基づいて、取得された各分割テーブルT200を参照して、対象領域に対応するエントリを取得する。すなわち、対象領域に対応するデータのデータファイル名T202及びオフセットT204が取得される。なお、当該処理は、ステップS502において取得されたすべての分割テーブルT200に対して実行される。
例えば、ステップS501において図13に示すような全データキーサイズテーブルT400であり、最初のエントリに対応する分割領域のデータサイズが所定の基準値より大きい場合、データ追加部(Reduce)34は、図5A及び図5Bに示す分割テーブルT200の1つ目のエントリから情報を取得する。
この場合、図5Aでは(データファイル名、オフセット)=(/log01/001.dat,280)となり、図5Bでは(/log02/002.dat,200)となる。取得されたオフセットが、各分割テーブルT200における対象領域の終了位置となる。
なお、対象領域の開始位置は、1つ目のエントリであるため開始位置のオフセットは「0」である。
次に、データ追加部(Reduce)34は、各既存のデータセットの対象領域に含まれるレコードを解析する(ステップS504)。
具体的には、データ追加部(Reduce)34は、各既存のデータセットの対象領域に含まれるレコードを読み出す。例えば、データID(T101)が「log01」及び「log02」のデータセットがある場合に、「log01」のデータセットの対象領域からレコードが読み出され、また、「log02」のデータセットの対象領域からレコードが読み出される。
データ追加部(Reduce)34は、読み出されたレコードのkey、レコードのデータサイズ、及びレコードのファイル上のオフセット位置を含むレコード統計情報を取得する。
なお、既存のデータセットは複数存在するため、当該レコードの解析処理をデータセット毎に並列実行してもよい。
データ追加部(Reduce)34は、ステップS402において取得された素データのレコード統計情報と、既存データセットのレコード統計情報とを合わせて、分散ファイルシステム上における全データセットのレコード統計情報とする。
次に、データ追加部(Reduce)34は、作成された全データセットのレコード統計情報に基づいて、再分割する分割位置となるkeyの値を決定する(ステップS505)。
具体的には以下のような処理が実行される。
データ追加部(Reduce)34は、全データセットのレコード統計情報に基づいて、対象領域におけるデータサイズを算出する。
データ追加部(Reduce)34は、算出されたデータサイズ及び所定の基準値に基づいて、対象領域における分割数を算出する。
次に、データ追加部(Reduce)34は、対象領域のデータサイズを、算出された分割数で除算して、再分割後の分割領域のデータサイズを算出する。
データ追加部(Reduce)34は、全データセットのレコード統計情報のエントリをkeyでソートした後、レコードのデータサイズの累積値分布を算出する。すなわち、分散ファイルシステムにおける所定のkey範囲に含まれる各レコードのデータサイズの分布が算出される。
データ追加部(Reduce)34は、算出された累積値分布に基づいて、レコードのデータサイズが分割後の分割領域のデータサイズの整数倍になっている地点を再分割の分割位置として決定する。整数倍になっていない場合、当該テータサイズと最も近いレコードが分割位置として決定される。
再分割位置のkeyは、データとして存在するkeyを使ってもよいし、データとして存在しないkeyを使ってもよい。
データ追加部(Reduce)34は、全データセットのレコード統計情報を参照して、決定された各key範囲に対応するオフセットを特定する。
データ追加部(Reduce)34は、各分割テーブルT200に再分割後の分割領域に対応するエントリを追加する。また、データ追加部(Reduce)34は、各分割テーブルT200から再分割前の分割領域に対応するエントリを削除する。
例えば、key範囲が「034a」未満である分割領域が、key範囲が「015d」未満である分割領域と、key範囲が「015d」以上かつ「034a」未満である分割領域との2つの分割領域に分割された場合、図5A及び図5Bに示す分割テーブルT200は、図14A及び図14Bのように変更される。図中の太線で示した部分が変更箇所である。
データ追加部(Reduce)34は、レコード統計情報に基づいて、追加用キーサイズテーブルT400及び全データキーサイズテーブルT400も変更する。
例えば、再分割前の全データキーサイズテーブルT400が図13に示すテーブルである場合、図15に示すように変更される。図中の太線で示した部分が変更箇所である。
以上がステップS505の処理である。
次に、データ追加部(Reduce)34は、分割テーブルT200を更新する(ステップS506)。
具体的には、データ追加部(Reduce)34は、追加用キーサイズテーブル及び素データのレコード統計情報に基づいて、素データの分割テーブルT200に対応する分割領域のエントリを格納する。すなわち、素データの分割テーブルT200が生成される。
なお、再分割処理が実行された場合には、新たに分割された分割領域に対応するエントリが格納される。
データ追加部(Reduce)34は、前述した処理に用いたレコード統計情報を削除し、処理を終了する(ステップS507)。
[第2の実施形態]
第1の実施形態では、ファイルの内容は1つのファイルに保存されているため分析処理時に不要なデータも読み出される可能性がある。これに対して、第2の実施形態では、データ項目(列)毎に異なるファイルとして保存する方式を用いる。当該方式を用いることによって、分析処理時に必要な項目のみ読み出すことが可能となる。
本発明は、データ項目毎に異なるファイルに保存する格納方式(列分割格納方式)にも対応することが可能である。
以下、第1の実施形態との差異を中心に第2の実施形態について説明する。
第2の実施形態では、データ分析システムの構成は第1の実施形態と同一であるため説明を省略する。また、マスタノード20及びスレーブノード30のハードウェア構成及びソフトウェア構成も第1の実施形態と同一であるため説明を省略する。
図16は、本発明の第2の実施形態におけるレコードのスキーマを示す説明図である。図17は、本発明の第2の実施形態におけるレコードの一例を示す説明図である。
第1の実施形態のレコードに対して、第2の実施形態のレコードにはユーザの年齢が新たに含まれる。
レコードの項目は、ユーザID、移動履歴(位置X、位置Y、タイムスタンプの履歴)、及び年齢の3種類があり、本実施形態ではユーザIDがkeyとして使用される。
図18A、図18B及び図18Cは、本発明の第2の実施形態におけるファイルを示す説明図である。
図18A、図18B及び図18Cでは、列分割方式を用いて前述したデータがファイルに格納された例を表す。
図18A、図18B及び図18Cに示すように、ユーザIDはlog/001.key.dat(図18A)、移動履歴はlog/001.rec.dat(図18B)、年齢はlog/001.age.dat(図18C)というファイルにそれぞれ格納される。
データを読み出すときは、各ファイルの上から順にレコードが1つずつ読み出され、順に結合すれば図17に示したレコード全体を再構成することができる。
図18A、図18B及び図18Cに示す例では、ファイルは1セットのみであるが、データが定期的に蓄積されていくことによって、ユーザID、移動履歴、及び年齢に対応するファイルを含むデータセットが増加する。
実際の結合処理及び分析処理では並列して実行されるため、前述のファイルが分割された後、各スレーブノード30によって処理が実行される。
図19は、本発明の第2の実施形態における分割テーブルT200の一例を示す説明図である。
第2の実施形態における分割テーブルT200は、項目毎(ユーザID、移動履歴、及び年齢)にデータファイル名T202及びオフセットT204を格納する点が第1の実施形態と異なる。また、keyとして使用される項目には、key(T203)に分割位置を表すkeyの値が格納される。
次に、第2の実施形態における結合処理及び分析処理について第1の実施形態との相違点を中心に説明する。
ステップS101では、キーサイズテーブルT400が作成される場合に、データ管理部21が、分割テーブルT200の中で分析処理に用いる項目のオフセットを参照して、各分割領域のサイズを計算する。
例えばユーザIDと年齢のみを使用する分析を行う場合は、「uid」のオフセットと「age」のオフセットのみを使ってキーサイズテーブルのサイズを求める。このとき、「rec」についてのオフセットは使用されない。
これによって、一部の項目のみ利用する場合であっても、各分割領域のデータサイズを正確に算出できる。
また、S104では、タスクが割り当てられた各スレーブノード30が、分析処理に用いるファイル数と、分析処理に用いる項目数との積の数分だけ、ファイルが読み出される。
データ追加処理についても以下のような相違がある。
ステップS203では、データ管理部21が、結合する可能性があるすべてのデータセットの分割テーブルT200の項目毎のオフセットから、既存データセットのキーサイズテーブルT400を作成する。
ステップS402では、各レコードをファイル出力するとき、項目毎に別のファイルに出力される。したがって、ステップS402では項目毎に、書き込まれたレコードのkeyの値、書き込まれたファイル上のオフセット、及びデータサイズを含むレコード統計情報が保存される。
また、ステップS403では、全項目の分割領域のサイズの和をキーサイズテーブルT400の対応するエントリに加算される。
S506では、前述したレコード統計情報及びキーサイズテーブルT400を用いて、項目毎に分割位置のオフセット値を求めて分割テーブルT200を更新する。
S504では、データに含まれる全項目に対応するファイルが読み出され、項目毎に、ファイルに書き込まれたレコードのkeyの値、書き込んだファイル上のオフセット位置、及びデータサイズを含むレコード統計情報が保存される。
S505では、データ追加部(Reduce)34が、全項目の分割領域のデータサイズを足し合わせたものを当該データセットのデータサイズとして、分割位置のkeyを決定する。
S506では、データ追加部(Reduce)34が、決定されたkey及びレコード統計情報を用いて、項目毎に分割位置のオフセットを算出し、分割テーブルT200を更新する。
第2の実施形態では、3つの項目を処理する場合について説明したが、分割テーブルT200において管理される項目数を変更することによって任意の項目数にすることができる。
本発明の一形態によれば、データ分析システムは、各データセットの分割位置が同一であるため分析処理における結合処理を並列に実行することができる。また、新たにデータセットが追加された場合に、タスク間の処理量が均一になるように分割領域を再分割することができる。これによって、タスク間の処理の不均衡を解消し、かつ、結合処理時に分散領域毎にレコードを結合することができる。
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。

Claims (16)

  1. キー及びデータ値から構成されるデータを複数含むデータセットに対する分析処理を複数の計算機が並列実行する計算機システムであって、
    前記各計算機は、プロセッサと、前記プロセッサに接続されるメモリと、前記のプロセッサに接続される記憶装置と、前記プロセッサに接続されるネットワークインタフェースとを有し、
    前記各計算機は、所定のキー範囲毎に前記データセットを分割した分割領域の分割位置を示すキーである分割位置キーを管理する分割情報を、前記データセット毎に保持し、
    前記各データセットの前記分割情報に含まれるすべての前記分割位置キーは同一であり、
    前記複数の計算機が有する記憶領域上には、前記データセットを格納するファイルシステムが構成され、
    前記計算機システムは、
    前記分析処理を実行する場合に、前記分割領域毎に複数のタスクを生成し、
    前記生成されたタスクを前記各計算機に割り当てて、前記各データセットの分割領域に含まれる前記データを結合して前記分析処理を実行し、
    前記ファイルシステムに新規データセットが格納された場合に、前記新規データセットが格納された後の各分割領域のデータサイズに基づいて、所定の閾値より大きいデータサイズの前記分割領域である対象領域が存在するか否かを判定し、
    前記対象領域が存在すると判定された場合、前記対象領域を複数の新たな分割領域に分割することを特徴とする計算機システム。
  2. 前記ファイルシステムに新規データセットを格納する場合に、前記新規データセットのキー分布を解析し、
    前記解析結果に基づいて、既存の前記データセットの分割情報に含まれるすべての前記分割位置キーと同一となるように、前記新規データセットの前記分割情報を生成することを特徴とする請求項1に記載の計算機システム。
  3. 前記対象領域が分割された後に、前記既存のデータセットの分割情報における前記分割位置キーを更新することを特徴とする請求項2に記載の計算機システム。
  4. 前記対象領域が存在するか否かを判定する場合に、すべての前記データセットの前記分割領域のデータサイズを合計して、前記計算機システムにおける前記分割領域のデータサイズである第1のデータサイズを算出し、
    前記算出された第1のデータサイズが、前記所定の閾値より大きい前記分割領域が存在するか否か判定し、
    前記対象領域を分割する場合に、前記すべてのデータセットの前記対象領域のデータサイズを合計することによって、前記計算機システムにおける前記対象領域のデータサイズである第2のデータサイズを算出し、
    前記所定の閾値、及び前記算出された第2のデータサイズに基づいて、前記対象領域の分割数を算出し、
    前記算出された分割数に基づいて、前記対象領域における新たな分割位置キーを決定し、
    前記既存のデータセットの分割情報の前記分割位置キーを更新する場合に、前記既存のデータセットの分割情報から、前記対象領域に対応する情報を削除し、前記決定された分割位置キーと前記新たな分割領域とを対応づけた情報を追加し、
    前記新データセットの分割情報を生成する場合に、前記更新された既存のデータセットの分割情報における前記分割キーと同一となるように前記新規データセットの分割情報を生成することを特徴とする請求項3に記載の計算機システム。
  5. 前記対象領域を分割する場合に、前記対象領域のデータサイズを前記算出された分割数で除算して第3のデータサイズを算出し、
    前記算出された第3のデータサイズに対応する前記データにおける前記キーを、前記分割位置キーとして決定することを特徴とする請求項4に記載の計算機システム。
  6. 前記所定の閾値は、前記新たな分割領域が割り当てられるタスクの処理時間が予め設定された許容時間以下となるデータサイズであることを特徴とする請求項4に記載の計算機システム。
  7. 前記データは、複数の項目毎のデータ値を含み、
    前記第1のデータサイズを算出する場合に、前記分割領域における全ての項目のデータサイズを合計することによって、前記第1のデータサイズを算出することを特徴とする請求項4に記載の計算機システム。
  8. 前記新規データセットのキー分布を解析する場合に、前記既存のデータセットの分割情報に含まれる前記分割位置キーのいずれかに一致する分割位置キーで前記新規データセットを分割して複数の処理用分割領域を生成し、
    前記生成された処理用分割領域毎に、前記新規データセットのキー分布を解析するためのタスクを生成して、当該タスクを並列に実行することを特徴とする請求項2に記載の計算機システム。
  9. キー及びデータ値から構成されるデータを複数含むデータセットに対する分析処理を複数の計算機が並列実行する計算機システムにおけるデータ管理方法であって、
    前記各計算機は、プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサに接続される記憶装置と、前記プロセッサに接続されるネットワークインタフェースとを有し、
    前記各計算機は、所定のキー範囲毎に当該データセットを分割した分割領域の分割位置を示すキーである分割位置キーを管理する分割情報を、前記データセット毎に保持し、
    前記各データセットの前記分割情報に含まれる全てのすべての前記分割位置キーは同一であり、
    前記複数の計算機が有する記憶領域上には、前記データセットを格納するファイルシステムが構成され、
    前記方法は、
    少なくとも一つの前記計算機が、前記分析処理を実行する場合に、前記分割領域毎に複数のタスクを生成する第1のステップと、
    前記タスクを生成した前記計算機が、前記生成されたタスクを前記各計算機に割り当てて、前記各データセットの分割領域に含まれる前記データを結合して前記分析処理を実行させる第2のステップと、を含み、
    少なくとも一つの前記計算機が、前記ファイルシステムに新規データセットが格納された場合に、前記新規データセットが格納された後の各分割領域のデータサイズに基づいて、所定の閾値より大きいデータサイズの前記分割領域である対象領域が存在するか否かを判定する第3のステップと、
    前述した判定処理を実行した前記計算機が、前記対象領域が存在すると判定された場合、前記対象領域を複数の新たな分割領域に分割する第4のステップと、
    を含むことを特徴とするデータ管理方法。
  10. 前記第3のステップは、
    前記新規データセットのキー分布を解析する第5のステップと、
    前記解析結果に基づいて、既存の前記データセットの分割情報に含まれるすべての前記分割位置キーと同一となるように、前記新規データセットの前記分割情報を生成する第6のステップと、を含むことを特徴とする請求項9に記載のデータ管理方法。
  11. 前記第4のステップは、前記対象領域が分割された後に、前記既存のデータセットの分割情報における前記分割位置キーを更新する第7のステップを含むことを特徴とする請求項10に記載のデータ管理方法。
  12. 前記第3のステップは、
    すべての前記データセットの前記分割領域のデータサイズを合計して、前記計算機システムにおける前記分割領域のデータサイズである第1のデータサイズを算出する第8のステップと、
    前記算出された第1のデータサイズが、前記所定の閾値より大きい前記分割領域が存在するか否か判定する第9のステップと、を含み、
    前記第4のステップは、
    前記すべてのデータセットの前記対象領域のデータサイズを合計することによって、前記計算機システムにおける前記対象領域のデータサイズである第2のデータサイズを算出する第10のステップと、
    前記所定の閾値、及び前記算出された第2のデータサイズに基づいて、前記対象領域の分割数を算出する第11のステップと、
    前記算出された分割数に基づいて、前記対象領域における新たな分割位置キーを決定する第12のステップと、を含み、
    前記第7のステップは、前記既存のデータセットの分割情報から、前記対象領域に対応する情報を削除し、前記決定された分割位置キーと前記新たな分割領域とを対応づけた情報を追加する第13のステップを含み、
    前記第6のステップは、前記更新された既存のデータセットの分割情報における前記分割キーと同一となるように前記新規データセットの分割情報を生成する第14のステップを含むことを特徴とする請求項11に記載のデータ管理方法。
  13. 前記第12のステップは、
    前記対象領域のデータサイズを前記算出された分割数で除算して第3のデータサイズを算出するステップと、
    前記算出された第3のデータサイズに対応する前記データにおける前記キーを、前記分割位置キーとして決定するステップと、を含むことを特徴とする請求項12に記載のデータ管理方法。
  14. 前記所定の閾値は、前記新たな分割領域が割り当てられるタスクの処理時間が予め設定された許容時間以下となるデータサイズであることを特徴とする請求項12に記載のデータ管理方法。
  15. 前記データは、複数の項目毎のデータ値を含み、
    前記第8のステップでは、前記分割領域における全ての項目のデータサイズを合計することによって、前記第1のデータサイズを算出することを特徴とする請求項12に記載のデータ管理方法。
  16. 前記第5のステップは、
    前記既存のデータセットの分割情報に含まれる前記分割位置キーのいずれかに一致する分割位置キーで前記新規データセットを分割して複数の処理用分割領域を生成するステップと、
    前記生成された処理用分割領域毎に、前記新規データセットのキー分布を解析するためのタスクを生成して、当該タスクを前記各計算機上で並列に実行させるステップと、を含むことを特徴とする請求項10に記載のデータ管理方法。
JP2013506934A 2011-03-30 2011-03-30 計算機システム及びデータ管理方法 Expired - Fee Related JP5342087B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/057940 WO2012131927A1 (ja) 2011-03-30 2011-03-30 計算機システム及びデータ管理方法

Publications (2)

Publication Number Publication Date
JP5342087B2 true JP5342087B2 (ja) 2013-11-13
JPWO2012131927A1 JPWO2012131927A1 (ja) 2014-07-24

Family

ID=46929753

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013506934A Expired - Fee Related JP5342087B2 (ja) 2011-03-30 2011-03-30 計算機システム及びデータ管理方法

Country Status (3)

Country Link
US (1) US20130297788A1 (ja)
JP (1) JP5342087B2 (ja)
WO (1) WO2012131927A1 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5825122B2 (ja) * 2012-01-31 2015-12-02 富士通株式会社 生成プログラム、生成方法、および生成システム
ITMI20130940A1 (it) 2013-06-07 2014-12-08 Ibm Metodo e sistema per ordinamento efficace in una banca dati relazionale
US10218775B2 (en) * 2013-08-28 2019-02-26 Usablenet Inc. Methods for servicing web service requests using parallel agile web services and devices thereof
US20150286409A1 (en) * 2014-04-08 2015-10-08 Netapp, Inc. Storage system configuration analysis
US10223379B2 (en) 2014-09-04 2019-03-05 International Business Machines Corporation Parallel processing of a keyed index file system
US10157218B2 (en) 2015-06-30 2018-12-18 Researchgate Gmbh Author disambiguation and publication assignment
US10133807B2 (en) * 2015-06-30 2018-11-20 Researchgate Gmbh Author disambiguation and publication assignment
US9928291B2 (en) * 2015-06-30 2018-03-27 Researchgate Gmbh Author disambiguation and publication assignment
CN106201673B (zh) * 2016-06-24 2019-07-09 中国石油天然气集团公司 一种地震数据处理方法及装置
JP6679445B2 (ja) * 2016-08-31 2020-04-15 ヤフー株式会社 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法
JP6844414B2 (ja) * 2017-05-23 2021-03-17 富士通株式会社 分散データ管理プログラム、分散データ管理方法及び分散データ管理装置
US9934287B1 (en) 2017-07-25 2018-04-03 Capital One Services, Llc Systems and methods for expedited large file processing
US10873529B2 (en) * 2017-12-01 2020-12-22 Futurewei Technologies, Inc. Method and apparatus for low latency data center network
US10715499B2 (en) * 2017-12-27 2020-07-14 Toshiba Memory Corporation System and method for accessing and managing key-value data over networks
US10855767B1 (en) * 2018-03-05 2020-12-01 Amazon Technologies, Inc. Distribution of batch data to sharded readers
CN109033355B (zh) * 2018-07-25 2021-07-06 北京易观智库网络科技有限公司 进行漏斗分析的方法、装置以及存储介质
JP7174245B2 (ja) * 2018-12-27 2022-11-17 富士通株式会社 情報処理プログラム、情報処理装置及び情報処理方法
CN111045825A (zh) * 2019-12-12 2020-04-21 深圳前海环融联易信息科技服务有限公司 批处理性能优化方法、装置、计算机设备及存储介质
CN113934361B (zh) * 2020-06-29 2024-05-03 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机程序产品

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 データベース処理システム
JP2010092222A (ja) * 2008-10-07 2010-04-22 Internatl Business Mach Corp <Ibm> 更新頻度に基づくキャッシュ機構
JP2010128721A (ja) * 2008-11-26 2010-06-10 Nippon Telegr & Teleph Corp <Ntt> 分散インデックス結合方法及びシステム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5307485A (en) * 1991-05-31 1994-04-26 International Business Machines Corporation Method and apparatus for merging sorted lists in a multiprocessor shared memory system
US5671405A (en) * 1995-07-19 1997-09-23 International Business Machines Corporation Apparatus and method for adaptive logical partitioning of workfile disks for multiple concurrent mergesorts
US5842208A (en) * 1997-04-09 1998-11-24 International Business Machines Corporation High performance recover/build index system by unloading database files in parallel
US6728694B1 (en) * 2000-04-17 2004-04-27 Ncr Corporation Set containment join operation in an object/relational database management system
JP5238219B2 (ja) * 2007-10-29 2013-07-17 株式会社東芝 情報処理システム及びパイプライン処理制御方法
CN101916261B (zh) * 2010-07-28 2013-07-17 北京播思软件技术有限公司 一种分布式并行数据库系统的数据分区方法

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 データベース処理システム
JP2010092222A (ja) * 2008-10-07 2010-04-22 Internatl Business Mach Corp <Ibm> 更新頻度に基づくキャッシュ機構
JP2010128721A (ja) * 2008-11-26 2010-06-10 Nippon Telegr & Teleph Corp <Ntt> 分散インデックス結合方法及びシステム

Also Published As

Publication number Publication date
WO2012131927A1 (ja) 2012-10-04
JPWO2012131927A1 (ja) 2014-07-24
US20130297788A1 (en) 2013-11-07

Similar Documents

Publication Publication Date Title
JP5342087B2 (ja) 計算機システム及びデータ管理方法
Taylor An overview of the Hadoop/MapReduce/HBase framework and its current applications in bioinformatics
Ramakrishnan et al. Balancing reducer skew in MapReduce workloads using progressive sampling
JP7122713B2 (ja) 機械学習又は推論のための計算機システム及び方法
US11663213B2 (en) Distinct value estimation for query planning
US8417991B2 (en) Mitigating reduction in availability level during maintenance of nodes in a cluster
US10180992B2 (en) Atomic updating of graph database index structures
US20140214334A1 (en) Efficient genomic read alignment in an in-memory database
US20170255708A1 (en) Index structures for graph databases
JP2012174096A (ja) 計算機システム及びデータ管理方法
Bala et al. A Fine‐Grained Distribution Approach for ETL Processes in Big Data Environments
US11216462B1 (en) Transient materialized view rewrite
CN111752945A (zh) 一种基于容器和层次模型的时序数据库数据交互方法和系统
US11449521B2 (en) Database management system
Sejdiu et al. DistLODStats: Distributed computation of RDF dataset statistics
JP6204753B2 (ja) 分散クエリ処理装置、処理方法及び処理プログラム
JP4747213B2 (ja) 文書を収集するためのシステムおよびプログラム
Wang et al. Cleanix: A big data cleaning parfait
US20160179866A1 (en) Method and system to search logs that contain a massive number of entries
JP6401617B2 (ja) データ処理装置、データ処理方法及び大規模データ処理プログラム
CN108595552A (zh) 数据立方体发布方法、装置、电子设备和存储介质
US9158767B2 (en) Lock-free indexing of documents
US8990612B2 (en) Recovery of a document serving environment
El Abassi et al. Deduplication Over Big Data Integration
JP2023119322A (ja) データサービスシステム及び方法

Legal Events

Date Code Title Description
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: 20130730

R150 Certificate of patent or registration of utility model

Ref document number: 5342087

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees