JP4782490B2 - データ集合分割プログラム、データ集合分割装置、およびデータ集合分割方法 - Google Patents

データ集合分割プログラム、データ集合分割装置、およびデータ集合分割方法 Download PDF

Info

Publication number
JP4782490B2
JP4782490B2 JP2005189592A JP2005189592A JP4782490B2 JP 4782490 B2 JP4782490 B2 JP 4782490B2 JP 2005189592 A JP2005189592 A JP 2005189592A JP 2005189592 A JP2005189592 A JP 2005189592A JP 4782490 B2 JP4782490 B2 JP 4782490B2
Authority
JP
Japan
Prior art keywords
node
item
item value
value
target
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
JP2005189592A
Other languages
English (en)
Other versions
JP2007011548A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2005189592A priority Critical patent/JP4782490B2/ja
Priority to US11/298,511 priority patent/US7962524B2/en
Publication of JP2007011548A publication Critical patent/JP2007011548A/ja
Application granted granted Critical
Publication of JP4782490B2 publication Critical patent/JP4782490B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/34Browsing; Visualisation therefor
    • G06F16/345Summarisation for human users
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Data Mining & Analysis (AREA)
  • Human Resources & Organizations (AREA)
  • Strategic Management (AREA)
  • Databases & Information Systems (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は大規模なデータベース内のデータ集合を複数の集合に分割するためのデータ集合分割プログラム、データ集合分割装置、およびデータ集合分割方法に関し、特に各データの集計に適した分割を行うデータ集合分割プログラム、データ集合分割装置、およびデータ集合分割方法に関する。
企業の業務において、データベースシステムが多く利用される。データベースシステムには様々なデータが管理されている。そして、ユーザは、必要に応じて、データベース内のデータの値を集計することがある。
集計とは、指定された項目に対して、項目値の出現回数(度数)を求めることや、項目値を集約した計算を行うことを指す。集計は、データ分析・活用のための最も基本的で重要な処理の一つである。
集計処理に対する最も強い要望の1つとして、大規模データに対する高速集計の実現が挙げられる。近年の計算機の普及やネットワークの整備に伴い、大量のデータが流通・蓄積されるようになってきており、集計処理が対象とするデータの規模も増加の一途を辿っている。このため、規模耐性を有する高速集計技術の重要性はますます大きくなってきている。
また、近年では、XML(eXtensible Markup Language)データが急速な勢いで普及してきている。このため、従来のRDB(Relational DataBase)などが対象としてきた構造化データだけでなく、データ自体の変更や、データ定義の変更、データ構造の変更を柔軟に行えるXMLデータを対象とした集計処理の実現が、非常に重要になってきている。
ここで、大規模データに対する集計処理を高速に行うためには、データ集合を複数のデータ群に分割し、分割したデータ群に対して集計処理を行う方法が有効である。
データ集合の分割を行う従来の技術として、格納順でデータの均等分割を行う、格納順分割方式がある。この方式では、例えば、データが1000万件あり、それを10個ずつのデータ集合に分割する場合、データの格納順で100万件ずつを同じ分割先に分割する。
格納順分割方式を用いて大規模データを分割した場合、それらのデータを集計するためにデータ集合の併合処理が必要となる。例えば、格納順分割方式によりデータ分割を行った後、各分割されたデータをソートし、各分割データを併合しながら集計処理を行う技術がある(特許文献1参照)。このような格納順分割方式は、均等なデータ数に分割でき、レコードが定義できるデータであれば、どのようなデータに対しても容易に適用することができるという利点を持つ。
また、データ量が肥大化したXMLデータを対象にしたデータ分割を行う技術がある。この技術では、データ中の項目(タグ)と項目値の出現回数とをカウントし、リストの形式でユーザに提供する。ユーザは、このリストの中から、分割に使用する項目を選択する。選択された項目値の組毎に分割先が対応付けられ、この対応付けに応じて、XMLデータ中の各レコードを振り分けることで、データ分割を行う(特許文献2参照)。
特許第2959497号公報 特開2002−108844号公報
しかし、格納順分割方式は、指定された項目次元上のデータ分布を考慮していないため、集計処理を行う際に、処理コストが高い併合処理を必要とするという課題を抱えている。例えば、特許文献1では、複数のデータ集合それぞれをデータの項目によってソートし、各データ集合を併合する際にも、データ集合から取り出したデータのソートが行われる(特許文献1の段落番号[0019]参照)。
また、特許文献2で開示されているXMLデータの分割方式では、項目(タグ)と項目値の出現回数のカウントが項目毎に独立に行われている。そのため、複数項目の値のデータ分布を考慮したデータ分割が困難となる。さらに、データの追加・更新・削除に伴うデータ分布の変化に即したデータの分割には高いコストを必要とするという課題も抱えている。
なお、XMLデータを扱った集計を行う技術として、特願2004−358947号に記載されたデータ集計装置がある。この技術では、XML形式などでデータが記述された1つ以上のファイルから、集計に必要な項目情報を取り出し、取り出した情報を元にトライを構築することでデータ集計を行っている。
さらに、この出願に係るデータ集計装置では、データを一度スキャンするだけでデータ集計を実現できるため、非常に高速な集計処理を実現できる。しかしながら、トライを構築する際に、指定項目の相異なる値の数に比例した主記憶容量を必要とする。そのため、大規模データに適用する場合、計算領域が不足して、性能が悪化するという課題を抱えている。
本発明はこのような点に鑑みてなされたものであり、指定された項目に沿ったデータ集合の分割を効率よく行うことができるデータ集合分割プログラム、データ集合分割装置、およびデータ集合分割方法を提供することを目的とする。
本発明では上記課題を解決するために、図1に示すようなデータ集合分割プログラムが提供される。本発明に係るデータ集合分割プログラムは、複数の項目の項目値を含むレコード1a,1b,1c,・・・が複数登録されたデータ集合1を複数のグループに分割するために、図1に示す機能をコンピュータに実行させることができる。
項目値獲得手段3は、分割基準となる複数の指定項目が設定された指定項目情報2に基づいて、データ集合1内のレコード1a,1b,1c,・・・から指定項目の項目値を獲得し、所定の配列で項目値を並べた項目値リスト3a,3b,3c,・・・をレコード1a,1b,1c,・・・毎に生成する。頻出木構築手段4は、複数の項目値リスト3aを互いに比較し、所定の配列の先頭から任意の項目値までの項目値の並びを示す接頭項目値のうち、成長頻度で示される回数以上出現する接頭項目値を検出し、検出された接頭項目値で示される項目値の並びをノード間の遷移で表す頻出木5を構築する。分割先決定手段6は、頻出木5の葉ノードを複数の分割先集合6a,6bの何れかに割り当てる。レコード振り分け手段7は、レコード1a,1b,1c,・・・の項目値リスト3a,3b,3c,・・・に基づいてレコード1a,1b,1c,・・・を頻出木5に沿って遷移させ、最終遷移先のノードに応じてレコード1a,1b,1c,・・・を分割先集合6a,6bに振り分ける。
このようなデータ集合分割プログラムによれば、項目値獲得手段3により、指定項目情報2に基づいて、データ集合1内のレコード1a,1b,1c,・・・から指定項目の項目値が獲得され、レコード1a,1b,1c,・・・毎の項目値リスト3a,3b,3c,・・・が生成される。次に、頻出木構築手段4により、複数の項目値リスト3a,3b,3c,・・・が互いに比較され、所定の配列の先頭から任意の項目値までの項目値の並びを示す接頭項目値のうち、成長頻度で示される回数以上出現する接頭項目値が検出され、検出された接頭項目値で示される項目値の並びをノード間の遷移で表す頻出木5が構築される。さらに、分割先決定手段6により、頻出木5の葉ノードが複数の分割先集合6a,6bの何れかに割り当てられる。そして、レコード振り分け手段7により、レコード1a,1b,1c,・・・の項目値リスト3a,3b,3c,・・・に基づいてレコード1a,1b,1c,・・・が頻出木5に沿って遷移させられ、最終遷移先のノードに応じてレコード1a,1b,1c,・・・が分割先集合6a,6bに振り分けられる。
本発明では、各レコード内の指定項目の項目値の並びを示す接頭項目値のうち、成長頻度で示される回数以上出現する接頭項目値に基づいて、簡略化された頻出木を生成し、その頻出木に沿って遷移させたときの遷移先に応じてレコードを分割先集合に振り分けるようにした。そのため、指定項目の項目値が同じレコード同士を同じ分割先集合とするデータ集合分割処理を効率よく行うことができる。
以下、本発明の実施の形態を図面を参照して説明する。
図1は、本実施の形態の概略を示す図である。図1には、複数の項目の項目値を含むレコード1a,1b,1c,・・・が複数登録されたデータ集合1を複数のグループに分割するための処理手段が示されている。各処理手段は、以下の機能を有する。
項目値獲得手段3は、分割基準となる複数の指定項目が設定された指定項目情報2に基づいて、データ集合1内のレコード1a,1b,1c,・・・から指定項目の項目値を獲得する。そして、項目値獲得手段3は、所定の配列で項目値を並べた項目値リスト3a,3b,3c,・・・をレコード1a,1b,1c,・・・毎に生成する。
頻出木構築手段4は、複数の項目値リスト3a,3b,3c,・・・を互いに比較し、所定の配列の先頭から任意の項目値までの項目値の並びを示す接頭項目値のうち、成長頻度で示される回数以上出現する接頭項目値を検出する。そして、頻出木構築手段4は、検出された接頭項目値で示される項目値の並びをノード間の遷移で表す頻出木5を構築する。
分割先決定手段6は、頻出木5の葉ノードを複数の分割先集合6a,6bの何れかに割り当てる。例えば、分割先決定手段6は、各ノードを最終遷移先とするレコードの数に基づいて、分割先集合それぞれに割り当てられたノードに遷移するレコードの総数が平均化されるように、各ノードの割り当てを行う。
レコード振り分け手段7は、レコード1a,1b,1c,・・・の項目値リスト3a,3b,3c,・・・に基づいてレコード1a,1b,1c,・・・を頻出木5に沿って遷移させる。そして、レコード振り分け手段7は、最終遷移先のノードに応じてレコード1a,1b,1c,・・・を分割先集合6a,6bに振り分ける。
例えば、レコード振り分け手段7は、頻出木5の葉ノードまで遷移したレコードは、遷移先の葉ノードが属する分割先集合に振り分ける。また、レコード振り分け手段7は、葉ノードまで遷移しないレコードは、最終遷移先ノードが属する分割先集合(具体的には、そのノードから遷移可能な葉ノードが属する分割先集合)に振り分ける。
このような処理手段によれば、項目値獲得手段3により、指定項目情報2に基づいて、データ集合1内のレコード1a,1b,1c,・・・から指定項目の項目値が獲得され、レコード1a,1b,1c,・・・毎の項目値リスト3a,3b,3c,・・・が生成される。次に、頻出木構築手段4により、複数の項目値リスト3a,3b,3c,・・・が互いに比較され、所定の配列の先頭から任意の項目値までの項目値の並びを示す接頭項目値のうち、成長頻度で示される回数以上出現する接頭項目値が検出され、検出された接頭項目値で示される項目値の並びをノード間の遷移で表す頻出木5が構築される。さらに、分割先決定手段6により、頻出木5の葉ノードが複数の分割先集合6a,6bの何れかに割り当てられる。そして、レコード振り分け手段7により、レコード1a,1b,1c,・・・の項目値リスト3a,3b,3c,・・・に基づいてレコード1a,1b,1c,・・・が頻出木5に沿って遷移させられ、最終遷移先のノードに応じてレコード1a,1b,1c,・・・が分割先集合6a,6bに振り分けられる。
これにより、指定項目の項目値が同じレコード同士を同じ分割先集合とするデータ集合分割処理を効率よく行うことが可能となる。
すなわち、成長頻度で示される回数以上出現する接頭項目値によって頻出木5を作成するため、簡略化された頻出木5が構築される。その結果、レコード1a,1b,1c,・・・の量が膨大であっても、少ないメモリ容量で頻出木5を作成可能である。
しかも、指定項目に該当する項目値を用いて頻出木5を作成しているため、指定項目の値が共通するレコードは、必ず同じ分割先集合に振り分けられる。従って、分割されたレコードに含まれる任意のデータを指定項目で分類指定して集計する際に、分割先集合毎に個別に集計すればよい。その際、集計結果の統合処理(例えば、同じグループに属する集計結果を検出して、その集計結果を合算する処理)を行う必要がないため、効率的な集計処理が可能となる。
そこで、図1に示したデータ集合分割機能を包含するデータ集計装置の例を用い、本実施の形態の詳細を説明する。また、以下の実施の形態では、XML形式のファイル内に膨大な量のデータが格納されているものとする。
図2は、本実施の形態に用いるコンピュータのハードウェア構成例を示す図である。データ集計装置100は、CPU(Central Processing Unit)101によって装置全体が制御されている。CPU101には、バス107を介してRAM(Random Access Memory)102、ハードディスクドライブ(HDD:Hard Disk Drive)103、グラフィック処理装置104、入力インタフェース105、および通信インタフェース106が接続されている。
RAM102には、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。HDD103には、OSやアプリケーションプログラムが格納される。
グラフィック処理装置104には、モニタ11が接続されている。グラフィック処理装置104は、CPU101からの命令に従って、画像をモニタ11の画面に表示させる。入力インタフェース105には、キーボード12とマウス13とが接続されている。入力インタフェース105は、キーボード12やマウス13から送られてくる信号を、バス107を介してCPU101に送信する。
通信インタフェース106は、ネットワーク10に接続されている。通信インタフェース106は、ネットワーク10を介して、他のコンピュータとの間でデータの送受信を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
図3は、データ集計装置の機能を示すブロック図である。データ集計装置100は、項目獲得部110、項目値変換部120、頻出木構築部130、分割先決定部140、データ振り分け部150、および集計部160を有する。
項目獲得部110は、XMLデータ20から指定項目情報30で示される値を獲得し、レコード毎に指定項目値のリストを作成する。指定項目情報30とは、集計対象となるデータ(指定項目)の項目名である。指定項目情報30は、ユーザによって任意に入力される。
項目値変換部120は、項目獲得部110で獲得された項目値を、所定のアルゴリズムに沿って変換する。例えば、ユーザの年代毎にデータ集計をおこなう場合、各ユーザの年齢を示すデータの下一桁の数字を「0」にする。この場合、年齢を表すデータが「31」であれば、「30」に変更される。これにより、10、20、30,・・・といった年代毎のデータ集計が容易とる。
頻出木構築部130は、このレコード毎の項目値リストから、一定回数以上出現する接頭項目の値を全て格納した頻出木を構築する。頻出木のエッジには項目値が格納されており、ノードにはカウント値が設定されており、そのカウント値に出現回数が記憶されている。なお、頻出木構築部130は、レコード毎の項目値リストを順次読み込みながら、頻出木を近似的に構築する。
分割先決定部140は、出現回数に基づいて、頻出木のノードと分割先とを対応付ける。
データ振り分け部150は、各レコードに対応する項目値リストに基づいて、頻出木を遷移させ、遷移が停止したノードに対応付けられた分割先にレコードを振り分ける。
集計部160は、分割されたデータの値を集計し、集計結果を出力する。集計処理は、1台の計算機で逐次的、並列的に処理してもよいし、分割したデータを複数の計算機に分散させ、分散処理してもよい。また、分割データ毎の集計結果をそのまま出力してもよいが、集計結果をまとめて1つの集計結果として出力してもよい。
ここでは、頻出木の近似的な構築に基づくデータ集計装置100の処理を、具体的なデータを用いて説明する。
図4は、XMLデータの例を示す図である。この例では、全国各地に販売店を有する家電量販店におけるパーソナルコンピュータ(パソコン)関連商品の売上げに関するデータが、XMLデータ20内に登録されている。XMLデータ20には、複数のレコード21,22,・・・が設定されている。各レコード21,22,・・・は、売上情報タグ(<売上情報>、</売上情報>)で囲まれている。
図5は、指定項目情報の例を示す図である。指定項目情報30には、指定項目として、以下の3つの絶対ロケーションパス(文書構造上の最上位の項目から指定項目に至る経路)が指定されている。
[指定項目#1]売上管理/売上情報/顧客/年齢
[指定項目#2]売上管理/売上情報/顧客/性別
[指定項目#3]売上管理/売上情報/顧客/住所/都道府県
各指定項目には、頻出木を構築する際の判断基準とする際の優先順位がある。この例では、指定項目情報30内の上位に設定された指定項目ほど優先順位が高い。すなわち、優先順位は、[指定項目#1]、[指定項目#2]、[指定項目#3]の順となる。
以上のようなXMLデータ20と指定項目情報30とが入力されると、データ集計処理が実行される。データ集計処理では、まず項目値リスト生成処理が行われる。
図6は、項目値リスト生成処理の手順を示すフローチャートである。以下、図6に示す処理をステップ番号に沿って説明する。
[ステップS11]項目獲得部110は、項目値リストを初期化する。なお、項目値リストには、XMLデータ20内のレコード21,22,・・・それぞれの指定項目の内容が設定される。初期化により、項目獲得部110内(具体的にはRAM102などの記憶領域の一部)に、項目値リストのための記憶領域が確保される。
[ステップS12]項目獲得部110は、XMLデータ20の上位から順に1行ずつデータを読み込む。
[ステップS13]項目獲得部110は、既にXMLデータ20の最後(EOF)に達しており、ステップS12による読み込みに失敗したか否かを判断する。EOFであれば、処理が終了する。ステップS12で新たなデータが読み込まれた場合、処理がステップS14に進められる。
[ステップS14]項目獲得部110は、ステップS12で読み込んだデータがレコードの終了を示すデータか否かを判断する。この実施の形態では、読み込んだデータが</売上情報>タグであれば、レコード終了である。レコード終了のデータが読み込まれた場合、処理がステップS18に進められる。レコード終了のデータではない場合、処理がステップS15に進められる。
[ステップS15]項目獲得部110は、読み込んだデータが指定項目か否かを判断する。この例では、読み込んだデータが、図5に示す指定項目情報30で示される何れかの指定項目を構成する項目か否かが判断される。
具体的には、読み込んだデータが、<売上管理>タグ、<売上情報>タグ、および<顧客>タグの下位構造の<年齢>タグの場合、そのデータは[指定項目#1]に該当する。読み込んだデータが、<売上管理>タグ、<売上情報>タグ、および<顧客>タグの下位構造の<性別>タグの場合、そのデータは[指定項目#2]に該当する。読み込んだデータが、<売上管理>タグ、<売上情報>タグ、および<顧客>タグの下位構造の<住所>タグの場合、そのデータは[指定項目#3]に該当する。
読み込んだデータが指定項目であれば、処理がステップS16に進められる。読み込んだデータが指定項目でなければ、処理がステップS12に進められる。
[ステップS16]項目値変換部120は、項目値の変換処理を行う。本実施の形態では、項目値変換部120は、年齢の値の1の桁を0に変更することで、年代毎のデータ集計を行う。
具体的には、項目値変換部120は、項目「年齢」が10以上19以下の場合は「10」に置き換え、20以上29以下の場合は「20」に置き換えるという具合に、項目「年齢」の値を年代別にレンジ化する。
[ステップS17]項目値変換部120は、項目値変換後の項目値を、項目値リストに格納する。その後、処理がステップS12に進められる。
[ステップS18]ステップS14でレコード終了と判断されると、項目獲得部110は、項目値リストに項目値を格納する。この際、各項目値は、対応する指定項目の優先順位(図5に示す指定項目情報30内の上位に設定されている順)に沿った並びで項目値リストに格納される。
なお、指定項目に対する値が存在しない場合は、項目獲得部110は、値として空文字(例えば、「?」)を入れておく。また、指定項目に対する値が複数ある場合は、項目獲得部110は、値の組合せによる複数の項目値リストを作成する。この場合、1つのレコードに対して複数の項目値リストが生成されることになる。
[ステップS19]項目獲得部110は、項目値リストを入力して、頻出木近似構築処理を起動する。これにより、頻出木構築部130による頻出木近似構築処理が実行される。
[ステップS20]項目獲得部110は、項目値リストを初期化し、処理をステップS12に進める。なお、初期化前の項目値リストの内容は、ステップS19で起動した頻出木構築部130で保持されている。
このようにして、レコード毎に項目値リストが作成され、その項目値リスト毎に頻出木近似構築処理が実行される。
ここで、図4に示すXMLデータ20と図5に示す指定項目情報30とに基づいて、項目値リスト作成状況を説明する。
項目獲得部110は、XMLデータ20の1行目から順にデータを読み込む。すると、5行目までは指定項目と合致しないため、読み飛ばされる。その後、6行目が項目獲得部110で読み込まれる。
6行目の記載は、「<都道府県>山口</都道府県>」である。この項目は、最上位から<売上管理>、<売上情報>、<顧客>、<住所>と項目を辿ったときの<住所>の下位に位置する。従って、この<都道府県>の項目は、<顧客>の下位構造でもある。すると、「指定項目#3」と合致する。そこで、項目獲得部110は、読み込んだデータの値である「山口」を、項目値リストに格納する。
その後、項目獲得部110が7行目以降を順に読み込む。8行目までは指定項目と合致しないため、読み飛ばされる。
次に、9行目が読み込まれる。すると、項目獲得部110は、「指定項目#1」に合致すると認識し、その値「38」を項目値リストに格納する。
さらに、10行目が読み込まれる。すると、項目獲得部110は、「指定項目#2」に合致すると認識し、その値「男」を項目値リストに格納する。
その後、項目獲得部110が11行目以降を順に読み込む。15行目までは指定項目と合致しないため、読み飛ばされる。
16行目を読み込むと、項目獲得部110は、レコードの終わりだと判定する。そこで、項目獲得部110は、格納した指定項目の値を指定された順番(この例では、「指定項目#1」、「指定項目#2」、「指定項目#3」の順)に並べる。その結果、以下のような項目値リストが作成される。
[38、男、山口]
ここで、項目値変換部120により、項目値の変換が行われる。この例では、年齢のレンジ化が行われ、年齢「38」が「30」に変更される。これにより、最初のレコード21から生成される項目値リストは、以下のようになる。
[30、男、山口]
レコード毎に生成された項目値リストは、順次、頻出木構築部130に渡される。
図7は、頻出木近似構築処理の手順を示すフローチャートである。以下、図7に示す処理をステップ番号に沿って説明する。なお、この処理は、頻出木近似構築処理が起動された際に、項目獲得部110から渡された項目値リストに基づいて頻出木構築部130によって実行される。
[ステップS31]頻出木構築部130は、入力された項目値リストが、項目獲得部110で生成された最初の項目値リストか否かを判断する。最初の項目値リストであれば処理がステップS32に進められる。最初の項目値リストでなければ、処理がステップS33に進められる。
[ステップS32]頻出木構築部130は、頻出木の根ノードを作成する。この際、根ノードのカウント値の初期値として、ノード生成の成長頻度(閾値)の値が設定される。これは、根ノードのカウント値が閾値を超えるまでのデータが無駄に破棄されるのを防ぐためである。
[ステップS33]頻出木構築部130は、制御対象のノードを示す現在位置を根ノードに設定する。
[ステップS34]頻出木構築部130は、根ノードのカウント値に1を加算する。
[ステップS35]頻出木構築部130は、項目値リストから、まだ読み込んでいない項目値を上位から順に読み込む。
[ステップS36]頻出木構築部130は、現在位置のカウント値が閾値よりも大きいか否かを判断する。カウント値が閾値よりも大きければ、処理がステップS37に進められる。カウント値が閾値未満であれば、処理が終了する。
[ステップS37]頻出木構築部130は、読み込んだ項目値のエッジ(ノード間を接続する線)が存在するか否かを判断する。エッジが存在すれば、処理がステップS39に進められる。エッジが存在しなければ、処理がステップS38に進められる。
[ステップS38]頻出木構築部130は、読み込んだ項目値を関連付けたエッジと、遷移先となるノードとを作成する。
[ステップS39]頻出木構築部130は、現在位置を、読み込んだ項目値が関連付けられたエッジによる遷移先のノードに移す。
[ステップS40]頻出木構築部130は、現在位置のカウント値に1を加算する。
[ステップS41]頻出木構築部130は、全ての項目値を読み込んだか否かを判断する。全ての項目値が読み込まれた場合処理が終了する。まだ読み込まれていない項目値が存在する場合、処理がステップS35に進められる。
このような処理が、項目獲得部110で生成された全ての項目値リストに対応して実行されることにより、頻出木が生成される。
ここで、図4に示すXMLデータ20と図5に示す指定項目情報30とに基づいて、頻出木の作成状況を説明する。なお、この例では、ノード生成のための閾値は50であるものとする。
図8は、生成途中の頻出木を示す図である。頻出木Tは、ノード41〜45と、ノード間を接続するエッジ42a,43a,44a,45aで構成されている。ノード41が根ノードであり、他のノード42〜45はノード41の下位構造となっている。この例では、頻出木Tを、エッジが2バイト文字であるトライ構造として表現している。
エッジ42a,43a,44a,45aには、項目値が関連付けられている。根ノードであるノード41に接続されるエッジ42a,43a,44a,45aには、最優先の指定項目である[指定項目#1]に対応する「年齢」の項目値が関連付けられている。
また、各ノード41〜45には、カウント値が設定されている。カウント値は、根ノードから各ノードに至るパスで形成される項目値の組の出現回数を近似的にカウントしたものとなっている。
各ノード41〜45は、生成されるときにカウント値の初期値が設定される。根ノードであるノード41は、カウント値の初期値として閾値(この例では「50」)が設定される。他のノード41〜45は、カウント値の初期値は「0」である。
図8には、100件のレコードが読み込まれ100件の項目値リストが生成された時点の頻出木Tが示されている。そのため、根ノードであるノード41のカウント値は「150」(初期値+項目値リスト数)となっている。また、読み込まれた項目値リストに応じて、現在位置がノード41から他の何れかのノードに常に遷移するため、他のノード41〜45のカウント値の合計は「100」となる。
ノード41〜45からさらに下位のノードの生成および現在位置の遷移は、カウント値が閾値「50」に達するまで行われない。図8に示す状態では根ノード以外のノード41〜45の中に、カウント値が閾値を超えている物がない。そのため、ノード41〜45の下位のノードは生成されていない。
ここで、101件目のレコードから、以下の項目値リストが生成されたと仮定する。
[30、男、東京]
図7に示したフローチャートに従うと、まず、現在位置である根ノード(ノード41)のカウント値に1が加算される。その結果、ノード41のカウント値は「151(項目値リスト数+初期値)」となる。
次に、生成された項目値リストから、最初の要素である「30」が読み込まれる。ここで、根ノード(ノード41)のカウント値は、閾値である50より大きく、「30」というエッジ42aが存在する。そこで、エッジ「30」を辿って現在位置がノード42に「移動する。現在位置のノード42のカウント値に1が加算され「51」となる。
次に、項目値リストの2番目の要素である「男」が読み込まれる。現在位置のカウント値は「51」であり、閾値より大きい。また、ノード42に対して「男」というエッジは存在しない。そこで、「男」というエッジと新しいノードが作成される。現在位置は、新しく作成したノードに移り、カウント値は「1」となる。
さらに、項目値リストから3番目の要素である「東京」が読み込まれる。しかし、現在位置のカウント値は「1」であり、閾値以上の条件を満たさない。そのため、ここで処理が終了となる。
図9は、101件目のレコードを読んだ段階の頻出木を示す図であり、近似的に構築された頻出木Tを示している。図8の状態と比べると、ノード42に対して「男」というエッジ46aが接続され、エッジ46aの遷移先にノード46が生成されている。また、ノード41,42のカウント値に1が加算されており、生成されたノード46のカウント値に1が加算されている。
以上の操作が、最後のレコードから生成された項目値リストに対する、頻出木を構築するまで繰り返し行われる。これにより、頻出木Tが完成する。
図10は、完成した頻出木を示す図である。完成した頻出木Tを構成する各ノード41〜70には、ノードIDが振られる。ただし、ノード52〜60については、カウント値が設定されておらず、且つノードIDが振られていない。これは、ノード52〜60に遷移するためのエッジが<都道府県>の項目値の一文字目を示すのみであり、項目値の最後の文字まで遷移した先のノードで、そのノードまで遷移する項目値リストの数をカウントすれば十分だからである。
次に、構築された頻出木Tを用いて、頻出木Tのノードと分割先との対応付けが行われる。対応付けは、分割データができるだけ均等に分かれるように行われる。
図11は、分割先決定処理の手順を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。
[ステップS51]分割先決定部140は、分割数分のバケットを定義し、各バケットのカウント値を0にセットする。なお、分割数は予め設定されている。
[ステップS52]分割先決定部140は、頻度リストを作成する。頻度リストは、頻出木Tの葉ノードのノードIDとカウント値とのペアを格納したものである。
[ステップS53]分割先決定部140は、頻度リストから頻度(カウント値)が最も大きい要素を選択する。
[ステップS54]分割先決定部140は、ステップS52の処理の際に、既に全ての要素が選択済か否か(選択すべき要素が存在するか否か)を判断する。全ての要素が選択済の場合、処理が終了する。要素が選択された場合、処理がステップS55に進められる。
[ステップS55]分割先決定部140は、カウント値が最小のバケットに選択した要素を格納する。
[ステップS56]分割先決定部140は、バケットのカウント値に選んだ要素の頻度(カウント値)を加算する。
[ステップS57]分割先決定部140は、頻度リストからステップS53で選択した要素を削除する。その後、処理がステップS53に進められる。
このようにして、頻度リスト内の全ての要素を、何れかのバケットに振り分けることができる。すなわち、頻度が大きい要素から順に、その時点でカウント値(格納された要素の頻度の合計)が最小のバケットに対して格納される。
ここで、分割数を3とした場合の分割先決定処理について説明する。まず、頻出木Tの頻度リストは、以下のようになる。
[(3,80),(4,60),(5,20),(6,40),(8,80),(9,60),(10,40),(13,20),(14,30),(17,30),(19,80),(20,20)]
頻度リストにおいて、括弧内の情報が選択対象の要素である。括弧内の左側の数字が、その要素に対応するノードのノードIDである。括弧内の右側の数字が、その要素に対応するノードのカウント値である。
このような頻度リストに対して、図11のフローチャートに従って処理を行うと、以下の結果が得られる。
・バケット#1(カウント値=190):[(3,80),(4.60),(14,30),(5,20)]
・バケット#2(カウント値=190):[(8,80),(9,60),(17,30),(13,20)]
・バケット#3(カウント値=180):[(19,80),(6,40),(10,40),(20,20)]
図12は、頻出木の葉ノードと分割先との関係を示す図である。内部模様が斜線のノード49,61,62,63は「バケット#1」、内部模様が網掛けのノード65,66,67,68は「バケット#2」、内部模様が格子のノード43,64,69,70は「バケット#3」に対応付けられている。
次に、データ振り分け部150が、レコード毎の項目値リストに応じて、レコードを、頻出木Tのエッジに沿って遷移させ、遷移先のノードに対応付けられた分割先となるバケットに、レコードを振り分ける。
図13は、レコード振り分けの第1の例を示す図である。これは、頻出木Tに、図4で示したXMLデータ20のレコード22を流し込む場合の例である。レコード22の項目値リストの内容は以下の通りである。
[30、男、東京]
この場合、頻出木T上を、レコード22がノード42、ノード46、ノード52と順に遷移し、最後に最左の葉のノード61まで遷移する。ノード61の分割先は「バケット#1」である。従って、レコード22は、「バケット#1」に割り振られる。
図14は、項目値リスト振り分けの第2の例を示す図である。ここで、あるレコード23から、以下の項目値リスト72が生成されたと仮定する。
[30、男、福岡]
この項目値リストが入力されると、項目値「30」と項目値「男」とにより、レコード23が頻出木T上をノード42、ノード46へと遷移する。しかし、その次の項目値「福岡」に対応する遷移先が存在しない。
この場合は、現在遷移しているノード46を頂点とした部分木の葉ノード(ノード61〜64)に対応付けられたバケットのうち、分割先の対応付けを行った際の、バケットのカウント値が最小の分割先にレコード23が振り分けられる。
この例では、ノード61〜63は、バケット#1に対応付けられている。また、ノード64は、バケット#3に対応付けられている。バケット#1のカウント値は「190」であり、バケット#3のカウント値は「180」である。すなわち、カウント値が最小のバケットは、バケット#3である。従って、項目値リスト72は、バケット#3に振り分けられる。
なお、この例では、葉ノード以外のノードを最終遷移先とするレコードの振り分け先を、レコード振り分け時に判断しているが、葉ノードの分割先となるバケットを決定する際に、分割先決定部140が、葉ノード以外の各ノードの分割先となるバケットを決定しておいてもよい。具体的には、分割先決定部140は、該当ノードを頂点とした部分木の葉ノードに対応付けられたバケットのうち、葉ノードによる分割先の対応付けを行った際のバケットのカウント値が最小のバケットを分割先とする。
以上の操作を、データ振り分け部150が最後のレコードの振り分けが終了するまで繰り返す。これにより、データ分割処理が完了する。
なお、データ分割する場合、入力として与えられたXMLデータの形式で分割して格納するのではなく、集計が容易に行える形式で格納することが望ましい。例えば、CSV(Comma Separated Values)形式で、分割データを表現できる。
図15は、CSV形式でレコードが格納されたバケットの例を示す図である。図15に示すように、バケット80には以下のようなレコードが格納されている。
“30”、“男”、“山口”、“200000”
“30”、“男”、“東京”、“380000”
最後に、集計部160によって集計処理が行われる。集計処理は、複数のバケットに振り分けられたレコードに対して行われる。例えば、図4に示されたXMLデータ20に対し、年代と性別および所在地別の売上金額の合計を集計することができる。
集計処理は、バケット毎に行われる。分割データ毎の集計結果は、そのまま出力してもよいし、集計表などの形式でまとめて出力してもよい。
なお、上記の例は、入力がXMLデータの場合であるが、別のデータ形式のデータベースを入力することもできる。例えば、RDBに格納されたデータでも、CSV形式のデータでも、指定された項目の値を抽出できるデータであれば、データ集計装置100はどのような表現形式にも対応することができる。
ところで、ノード生成の要否を判断するためのカウント値の閾値を動的に変更することもできる。具体的には、頻出木Tの構築処理の進行度合いに従って、閾値を動的に増加させることができる。これにより、頻出木Tの肥大化が防止できる。以下、閾値の算出例について説明する。
[第1の閾値算出例]
例えば、既に読み込んだデータ件数や生成されたノード数など、頻出木生成開始からの経過時間に対して単調に増加する属性を定義域として、閾値を定義することができる。この場合、閾値を定義する関数には、定義域と値域が自然数であるような関数が用いられる。
例えば、非負値の多項式関数、指数関数、三角関数、階段関数(の自然数への制限)などが使用できる。具体的には、以下のような例が考えられる。
・比例増加の例
データ件数またはノード数をn(nは自然数)とすると、成長頻度関数f(n)として
f(n)=an+b(a>0,b≧0) ・・・(1)
とする。a,bは、予め設定される定数である。これにより、成長頻度はデータ件数や生成ノード数に比例して増加する。
・指数増加の例
f(n)=c・an+b(a>0,b≧0,c>0) ・・・(2)
とする。a,b,cは、予め設定される定数である。これにより、成長頻度はデータ件数や生成ノード数に対して指数的に増加する。閾値を指数的に増加させる方式は、プログラムが長く動いたときに頻出木の成長を劇的に抑制したい場合に非常に有効である。
[第2の閾値算出例]
また、ノードの深さやノードを表す文字など、個別ノード毎に特有な属性の値を定義域として、閾値を定義することができる。
ノードの深さなどの自然数属性上の関数としては、式(1)または式(2)に示す関数が同様に使用できる。この場合、ノードの深さをnとする。
例えば、ノードの深さをnとして式(1)を用いた場合は、頻出木のノードの深さに比例して成長頻度が大きくなる。また、式(2)を用いた場合は、ノードが深くなるに従って、頻出木の成長は劇的に抑制される。
次に、ノードのアルファベット上の関数としては、各アルファベットと自然数を対応付ける関数表の使用が考えられる。例えば自然言語の統計を利用して関数表を作成しておけば、読んだ文字によって頻出木の成長を早めたり遅めたりといった制御が可能となる。
さらに、f(@)=0となる特別な記号@を用意することで、一括して処理したい文字列を頻出木の近似構築の枠組みで扱えるようになる。例えば、データ中で「東京都」を「(@_東)(@_京)都」のように書き換えておけば、データを読んだ瞬間に「東京都」を表すパスを作成できる。
以上説明したように、本実施の形態によれば、指定項目の項目値によって近似的な頻出木Tを構築することで、指定項目を判断基準としたデータ分布を適切に求めることができる。しかも、頻出木Tに基づいて、指定項目の項目値に応じたレコードの分割先となるバケットを自動的に決定できるため、指定された項目が複数ある場合でも、データ集合の分割を低いコストで実現することが可能になる。
また、分割先のバケットは、頻出木Tのノードに一意に対応付けられているため、指定項目の値の組が同じレコードは、同じ分割先に格納することが保証される。さらに、レコード毎に生成された項目値リストに基づいてデータ分割を行うため、レコードが定義でき、項目の値が取り出せるデータであれば、データ集合を表すデータ構造の種類によらずにデータの分割を行うことができる。
なお、生成した頻出木Tは再利用可能である。すなわち、過去に構築した頻出木Tを登録しておき、新しくデータが追加された場合は、頻出木構築部130と分割先決定部140との処理をスキップし、過去に構築した頻出木Tを用いて、新しく追加されたレコードだけを振り分けることができる。このように、頻出木Tの再利用により、さらに低い処理コストで、データ分割を行うことも可能である。
また、本実施の形態では、レコード毎に生成された項目値リストを、逐次的に読み込むことで頻出木Tを近似的に構築する。そのため、データ集合を1回スキャンするだけで、頻出木の近似的構築が可能となる。その結果、頻出木構築の高速化と省メモリ化を実現できる。
また、頻出木の近似的構築は、項目値リストを逐次的に読み込むことで実現できるため、新しくデータが追加された場合は、過去に構築した頻出木を初期の頻出木として使用し、新しく追加されたデータの項目値リストだけを用いて、頻出木を近似的に構築できる。このように頻出木の再利用により、さらに低いコストで頻出木を近似的に構築することが可能となる。
なお、上記の例では、項目値の変換例として値のレンジ化(例えば、項目「年齢」の値を、10代、20代などの年代に置き換えるなど)が示されているが、他にも次のような変換が可能である。例えば、項目値の圧縮(数字の下位の桁を削除するなど)、値の再カテゴリ化(例えば、項目「住所」の値を、関東、中部、近畿などの地域に置き換えるなど)などが考えられる。このように、項目値を変換することで、データ分割を容易に実現できる。
そして、本実施の形態によって分割されたデータ集合をバケット毎に集計することで、併合処理が不要となり、低い処理コストで集計処理を実現できる。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、データ集計装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
なお、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
以上説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
(付記1) 複数の項目の項目値を含むレコードが複数登録されたデータ集合を複数のグループに分割するデータ集合分割プログラムにおいて、
コンピュータを、
分割基準となる複数の指定項目が設定された指定項目情報に基づいて、前記データ集合内の前記レコードから前記指定項目の項目値を獲得し、所定の配列で前記項目値を並べた項目値リストを前記レコード毎に生成する項目値獲得手段、
複数の前記項目値リストを互いに比較し、前記所定の配列の先頭から任意の前記項目値までの前記項目値の並びを示す接頭項目値のうち、成長頻度で示される回数以上出現する前記接頭項目値を検出し、検出された前記接頭項目値で示される前記項目値の並びをノード間の遷移で表す頻出木を構築する頻出木構築手段、
前記頻出木のノードを複数の分割先集合の何れかに割り当てる分割先決定手段、
前記レコードの前記項目値リストに基づいて前記レコードを前記頻出木に沿って遷移させ、最終遷移先のノードに応じて前記レコードを前記分割先集合に振り分けるレコード振り分け手段、
として機能させることを特徴とするデータ集合分割プログラム。
(付記2) 前記頻出木構築手段は、構築過程の前記頻出木の各ノードに対して、該当ノードまで遷移する前記接頭項目値の発生回数を示すカウント値を設定し、前記項目値リストを取得する毎に、抽出可能な前記接頭項目値に応じたノードの前記カウント値をカウントアップし、前記カウント値が前記成長頻度を超えた場合、前記項目値リストの前記項目値の配列に沿った次の遷移先のノードを生成することを特徴とする付記1記載のデータ集合分割プログラム。
(付記3) 前記分割先決定手段は、各前記ノードを最終遷移先とする前記レコードの数に基づいて、前記分割先集合それぞれに割り当てられた前記ノードに遷移する前記レコードの総数の平均化を図ることを特徴とする付記1記載のデータ集合分割プログラム。
(付記4) 前記分割先決定手段は、前記最終遷移先となるレコード数が多い順に前記ノードを選択し、既に割り当てられた前記ノードを最終遷移先とするレコードの総数が最も少ない前記分割先集合に対して、選択した前記ノードを割り当てることを特徴とする付記3記載のデータ集合分割プログラム。
(付記5) 前記レコード振り分け手段は、前記頻出木の葉ノードまで遷移した前記レコードは、遷移先の前記葉ノードが属する前記分割先集合に振り分け、前記葉ノードまで遷移しない前記レコードは、最終遷移先ノードから遷移可能な前記葉ノードが属する前記分割先集合に振り分けることを特徴とする付記1記載のデータ集合分割プログラム。
(付記6) 前記コンピュータを、さらに、
前記項目値獲得手段が獲得した前記項目値のうち、所定の前記指定項目に応じた前記項目値を所定の規則に従って変換する項目値変換手段、
として機能させることを特徴とする付記1記載のデータ集合分割プログラム。
(付記7) 前記頻出木構築手段は、前記頻出木の構築処理の進行度合いに従って、前記成長頻度を動的に増加させることを特徴とする付記1記載のデータ集合分割プログラム。
(付記8) 前記コンピュータを、さらに、
前記分割先集合毎に、振り分けられた前記レコードに設定されているデータの集計を行う集計手段、
として機能させることを特徴とする付記1記載のデータ集合分割プログラム。
(付記9) 複数の項目の項目値を含むレコードが複数登録されたデータ集合を複数のグループに分割するデータ集合分割装置において、
分割基準となる複数の指定項目が設定された指定項目情報に基づいて、前記データ集合内の前記レコードから前記指定項目の項目値を獲得し、所定の配列で前記項目値を並べた項目値リストを前記レコード毎に生成する項目値獲得手段と、
複数の前記項目値リストを互いに比較し、前記所定の配列の先頭から任意の前記項目値までの前記項目値の並びを示す接頭項目値のうち、成長頻度で示される回数以上出現する前記接頭項目値を検出し、検出された前記接頭項目値で示される前記項目値の並びをノード間の遷移で表す頻出木を構築する頻出木構築手段と、
前記頻出木のノードを複数の分割先集合の何れかに割り当てる分割先決定手段と、
前記レコードの前記項目値リストに基づいて前記レコードを前記頻出木に沿って遷移させ、最終遷移先のノードに応じて前記レコードを前記分割先集合に振り分けるレコード振り分け手段と、
を有することを特徴とするデータ集合分割装置。
(付記10) 複数の項目の項目値を含むレコードが複数登録されたデータ集合を複数のグループに分割するデータ集合分割方法において、
項目値獲得手段が、分割基準となる複数の指定項目が設定された指定項目情報に基づいて、前記データ集合内の前記レコードから前記指定項目の項目値を獲得し、所定の配列で前記項目値を並べた項目値リストを前記レコード毎に生成し、
頻出木構築手段が、複数の前記項目値リストを互いに比較し、前記所定の配列の先頭から任意の前記項目値までの前記項目値の並びを示す接頭項目値のうち、成長頻度で示される回数以上出現する前記接頭項目値を検出し、検出された前記接頭項目値で示される前記項目値の並びをノード間の遷移で表す頻出木を構築し、
分割先決定手段が、前記頻出木のノードを複数の分割先集合の何れかに割り当てる、
レコード振り分け手段が、前記レコードの前記項目値リストに基づいて前記レコードを前記頻出木に沿って遷移させ、最終遷移先のノードに応じて前記レコードを前記分割先集合に振り分ける、
ことを特徴とするデータ集合分割方法。
本実施の形態の概略を示す図である。 本実施の形態に用いるコンピュータのハードウェア構成例を示す図である。 データ集計装置の機能を示すブロック図である。 XMLデータの例を示す図である。 指定項目情報の例を示す図である。 項目値リスト生成処理の手順を示すフローチャートである。 頻出木近似構築処理の手順を示すフローチャートである。 生成途中の頻出木を示す図である。 101件目のレコードを読んだ段階の頻出木を示す図である。 完成した頻出木を示す図である。 分割先決定処理の手順を示すフローチャートである。 頻出木の葉ノードと分割先との関係を示す図である。 レコード振り分けの第1の例を示す図である。 項目値リスト振り分けの第2の例を示す図である。 CSV形式でレコードが格納されたバケットの例を示す図である。
符号の説明
1 データ集合
1a,1b,1c レコード
2 指定項目情報
3 項目値獲得手段
3a,3b,3c 項目値リスト
4 頻出木構築手段
5 頻出木
6 分割先決定手段
6a,6b 分割先集合
7 レコード振り分け手段

Claims (4)

  1. 複数の項目の項目値を含むレコードが複数登録されたデータ集合を複数のグループに分割するデータ集合分割プログラムにおいて、
    コンピュータを、
    分割基準となる複数の指定項目が設定された指定項目情報に基づいて、複数の項目の項目値を含む複数のレコードを記憶する記憶手段内の前記複数のレコードそれぞれから前記指定項目の項目値を獲得し、所定の配列で前記項目値を並べた項目値リストをレコード毎に生成する項目値獲得手段、
    根ノードに指定項目の項目値に関連付けられた複数のノードが木構造で接続され、各ノードに対して、根ノードから該ノードまでの経路上のノードそれぞれに関連付けられた指定項目の項目値の配列と同じ項目値の配列を有する項目値リストの出現回数を示すカウント値が設定された頻出木を有し、項目値リストを1つずつ選択し、該選択された項目値リストに含まれる指定項目の項目値の配列に沿って、前記頻出木の根ノードから順に各項目値が関連付けられたノードへ対象を遷移させていき、対象となったノードのカウント値をカウントアップし、対象のノードのカウント値が成長頻度を超えており、対象のノードに、該項目値リストの項目値の配列に沿った次の項目値に関連付けられたノードが接続されている場合、該ノードに対象を遷移させ、対象のノードのカウント値が該成長頻度を超えているが、対象のノードに、該項目値リストの項目値の配列に沿った次の項目値に関連付けられたノードが接続されていない場合、対象のノードに該次の項目値に関連付けられたノードを接続して、該ノードに対象を遷移させ、対象のノードのカウント値が該成長頻度を超えていないか、該項目値リストの最後の項目値に対応するノードまで対象を遷移させた場合、該選択された項目値リストに応じた対象の遷移を終了する頻出木構築手段、
    前記頻出木のノードのうち、少なくとも、遷移先となるノードを有していない葉ノードを1つずつ選択し、選択した該葉ノードを、複数の分割先集合のうちの既に割り当てられた葉ノードのカウント値の合計が最も少ない分割先集合に割り当てる分割先決定手段、
    前記記憶手段内の前記複数のレコードそれぞれについて、レコードの項目値リストに含まれる指定項目の項目値の配列に基づいて前記頻出木の根ノードから順にノードを辿り、最後に辿り着いたノードが割り当てられた分割先集合に、該レコードを振り分けるレコード振り分け手段、
    として機能させることを特徴とするデータ集合分割プログラム。
  2. 前記頻出木構築手段は、前記頻出木の構築処理の進行度合いに従って、前記成長頻度を動的に増加させることを特徴とする請求項1記載のデータ集合分割プログラム。
  3. 複数の項目の項目値を含むレコードが複数登録されたデータ集合を複数のグループに分割するデータ集合分割装置において、
    分割基準となる複数の指定項目が設定された指定項目情報に基づいて、複数の項目の項目値を含む複数のレコードを記憶する記憶手段内の前記複数のレコードそれぞれから前記指定項目の項目値を獲得し、所定の配列で前記項目値を並べた項目値リストをレコード毎に生成する項目値獲得手段と、
    根ノードに指定項目の項目値に関連付けられた複数のノードが木構造で接続され、各ノードに対して、根ノードから該ノードまでの経路上のノードそれぞれに関連付けられた指定項目の項目値の配列と同じ項目値の配列を有する項目値リストの出現回数を示すカウント値が設定された頻出木を有し、項目値リストを1つずつ選択し、該選択された項目値リストに含まれる指定項目の項目値の配列に沿って、前記頻出木の根ノードから順に各項目値が関連付けられたノードへ対象を遷移させていき、対象となったノードのカウント値をカウントアップし、対象のノードのカウント値が成長頻度を超えており、対象のノードに、該項目値リストの項目値の配列に沿った次の項目値に関連付けられたノードが接続されている場合、該ノードに対象を遷移させ、対象のノードのカウント値が該成長頻度を超えているが、対象のノードに、該項目値リストの項目値の配列に沿った次の項目値に関連付けられたノードが接続されていない場合、対象のノードに該次の項目値に関連付けられたノードを接続して、該ノードに対象を遷移させ、対象のノードのカウント値が該成長頻度を超えていないか、該項目値リストの最後の項目値に対応するノードまで対象を遷移させた場合、該選択された項目値リストに応じた対象の遷移を終了する頻出木構築手段と、
    前記頻出木のノードのうち、少なくとも、遷移先となるノードを有していない葉ノードを1つずつ選択し、選択した該葉ノードを、複数の分割先集合のうちの既に割り当てられた葉ノードのカウント値の合計が最も少ない分割先集合に割り当てる分割先決定手段と、
    前記記憶手段内の前記複数のレコードそれぞれについて、レコードの項目値リストに含まれる指定項目の項目値の配列に基づいて前記頻出木の根ノードから順にノードを辿り、最後に辿り着いたノードが割り当てられた分割先集合に、該レコードを振り分けるレコード振り分け手段と、
    を有することを特徴とするデータ集合分割装置。
  4. 複数の項目の項目値を含むレコードが複数登録されたデータ集合を複数のグループに分割するデータ集合分割方法において、
    分割基準となる複数の指定項目が設定された指定項目情報に基づいて、複数の項目の項目値を含む複数のレコードを記憶する記憶手段内の前記複数のレコードそれぞれから前記指定項目の項目値を獲得し、所定の配列で前記項目値を並べた項目値リストをレコード毎に生成し、
    根ノードに指定項目の項目値に関連付けられた複数のノードが木構造で接続され、各ノードに対して、根ノードから該ノードまでの経路上のノードそれぞれに関連付けられた指定項目の項目値の配列と同じ項目値の配列を有する項目値リストの出現回数を示すカウント値が設定された頻出木を有し、項目値リストを1つずつ選択し、該選択された項目値リストに含まれる指定項目の項目値の配列に沿って、前記頻出木の根ノードから順に各項目値が関連付けられたノードへ対象を遷移させていき、対象となったノードのカウント値をカウントアップし、対象のノードのカウント値が成長頻度を超えており、対象のノードに、該項目値リストの項目値の配列に沿った次の項目値に関連付けられたノードが接続されている場合、該ノードに対象を遷移させ、対象のノードのカウント値が該成長頻度を超えているが、対象のノードに、該項目値リストの項目値の配列に沿った次の項目値に関連付けられたノードが接続されていない場合、対象のノードに該次の項目値に関連付けられたノードを接続して、該ノードに対象を遷移させ、対象のノードのカウント値が該成長頻度を超えていないか、該項目値リストの最後の項目値に対応するノードまで対象を遷移させた場合、該選択された項目値リストに応じた対象の遷移を終了し、
    前記頻出木のノードのうち、少なくとも、遷移先となるノードを有していない葉ノードを1つずつ選択し、選択した該葉ノードを、複数の分割先集合のうちの既に割り当てられた葉ノードのカウント値の合計が最も少ない分割先集合に割り当て、
    前記記憶手段内の前記複数のレコードそれぞれについて、レコードの項目値リストに含まれる指定項目の項目値の配列に基づいて前記頻出木の根ノードから順にノードを辿り、最後に辿り着いたノードが割り当てられた分割先集合に、該レコードを振り分ける、
    ことを特徴とするデータ集合分割方法。
JP2005189592A 2005-06-29 2005-06-29 データ集合分割プログラム、データ集合分割装置、およびデータ集合分割方法 Expired - Fee Related JP4782490B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005189592A JP4782490B2 (ja) 2005-06-29 2005-06-29 データ集合分割プログラム、データ集合分割装置、およびデータ集合分割方法
US11/298,511 US7962524B2 (en) 2005-06-29 2005-12-12 Computer program, device, and method for sorting dataset records into groups according to frequent tree

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005189592A JP4782490B2 (ja) 2005-06-29 2005-06-29 データ集合分割プログラム、データ集合分割装置、およびデータ集合分割方法

Publications (2)

Publication Number Publication Date
JP2007011548A JP2007011548A (ja) 2007-01-18
JP4782490B2 true JP4782490B2 (ja) 2011-09-28

Family

ID=37590960

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005189592A Expired - Fee Related JP4782490B2 (ja) 2005-06-29 2005-06-29 データ集合分割プログラム、データ集合分割装置、およびデータ集合分割方法

Country Status (2)

Country Link
US (1) US7962524B2 (ja)
JP (1) JP4782490B2 (ja)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7885932B2 (en) 2006-11-01 2011-02-08 Ab Initio Technology Llc Managing storage of individually accessible data units
AU2014202186B2 (en) * 2006-11-01 2016-03-03 Ab Initio Technology Llc Managing storage of individually accessible data units
US8229902B2 (en) * 2006-11-01 2012-07-24 Ab Initio Technology Llc Managing storage of individually accessible data units
WO2008128177A1 (en) * 2007-04-13 2008-10-23 The University Of Vermont And State Agricultural College Relational pattern discovery across multiple databases
US20090063578A1 (en) * 2007-08-27 2009-03-05 International Business Machines Corporation Management of data needed to resolve pointer errors in heirarchical database management systems
US8739022B2 (en) * 2007-09-27 2014-05-27 The Research Foundation For The State University Of New York Parallel approach to XML parsing
US20090276428A1 (en) * 2008-04-30 2009-11-05 Byung Bok Ahn Sorting method and algorithm called high speed sort
JP5212018B2 (ja) * 2008-10-28 2013-06-19 富士通株式会社 データ集計などのデータ操作に使用するプログラム、装置および方法
US8782514B1 (en) * 2008-12-12 2014-07-15 The Research Foundation For The State University Of New York Parallel XML parsing using meta-DFAs
US8140565B2 (en) * 2009-01-20 2012-03-20 International Business Machines Corporation Autonomic information management system (IMS) mainframe database pointer error diagnostic data extraction
JP5502346B2 (ja) * 2009-03-09 2014-05-28 富士フイルム株式会社 症例画像登録装置、方法およびプログラムならびに症例画像検索装置、方法、プログラムおよびシステム
JP5278535B2 (ja) * 2009-03-19 2013-09-04 富士通株式会社 データベース検索プログラムを記録するコンピュータ読取可能な記憶媒体、データベース検索装置、および、データベース検索方法
JP5410155B2 (ja) * 2009-05-19 2014-02-05 株式会社Nttドコモ データ分割システム及びデータ分割方法
JP5165662B2 (ja) * 2009-10-27 2013-03-21 株式会社高速屋 ビット列キー分類・分配装置、分類・分配方法及びプログラム
US20110154221A1 (en) * 2009-12-22 2011-06-23 International Business Machines Corporation Subject suggestion based on e-mail recipients
CA2791261C (en) * 2010-03-10 2017-12-05 Ab Initio Technology Llc Managing storage of individually accessible data units
US8321476B2 (en) * 2010-03-29 2012-11-27 Sybase, Inc. Method and system for determining boundary values dynamically defining key value bounds of two or more disjoint subsets of sort run-based parallel processing of data from databases
US8832188B1 (en) * 2010-12-23 2014-09-09 Google Inc. Determining language of text fragments
JP5563529B2 (ja) * 2011-06-27 2014-07-30 日本電信電話株式会社 情報記録装置、情報記録方法およびプログラム
JP5517263B2 (ja) * 2011-07-06 2014-06-11 日本電信電話株式会社 チャンク生成装置、チャンク読み取り装置、チャンク生成方法及びプログラム
US20130013605A1 (en) 2011-07-08 2013-01-10 Stanfill Craig W Managing Storage of Data for Range-Based Searching
US8880481B1 (en) * 2012-03-29 2014-11-04 Pivotal Software, Inc. Inverse distribution function operations in a parallel relational database
CN103390044B (zh) * 2013-07-19 2017-02-08 百度在线网络技术(北京)有限公司 一种连锁类兴趣点数据识别方法及装置
US9607036B2 (en) 2013-08-21 2017-03-28 International Business Machines Corporation Managing a data set
JP6642435B2 (ja) * 2014-08-19 2020-02-05 日本電気株式会社 データ処理装置、データ処理方法、及び、プログラム
US20170255661A1 (en) * 2014-10-31 2017-09-07 Richard Salisbury Generating and placing location n-tuples in a non-decreasing location n-tuple sequence
US9996602B2 (en) * 2015-01-12 2018-06-12 International Business Machines Corporation Generating a virtual dynamic representative of a taxonomic group with unique inheritance of attributes
US10515082B2 (en) * 2016-09-14 2019-12-24 Salesforce.Com, Inc. Identifying frequent item sets
US10956503B2 (en) 2016-09-20 2021-03-23 Salesforce.Com, Inc. Suggesting query items based on frequent item sets
CN108460055B (zh) * 2017-02-22 2021-01-26 北京京东尚科信息技术有限公司 导出excel数据表的方法、系统、设备和存储介质
US11030157B2 (en) * 2017-05-18 2021-06-08 Nec Corporation Template based data reduction for commercial data mining
US11755927B2 (en) * 2019-08-23 2023-09-12 Bank Of America Corporation Identifying entitlement rules based on a frequent pattern tree
CN112015775B (zh) * 2020-09-27 2023-11-21 北京百度网讯科技有限公司 标签数据处理方法、装置、设备和存储介质
US11468041B1 (en) 2020-12-15 2022-10-11 Cigna Intellectual Property, Inc. Anomaly detection in relational databases

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3584630B2 (ja) * 1996-09-20 2004-11-04 株式会社日立製作所 データベース処理システムにおける分類集計処理方法
JPH11312150A (ja) * 1998-04-30 1999-11-09 Nippon Telegr & Teleph Corp <Ntt> 並列処理方法および並列処理システム、ならびに並列処理プログラムを記録した記録媒体
JP2001134575A (ja) * 1999-10-29 2001-05-18 Internatl Business Mach Corp <Ibm> 頻出パターン検出方法およびシステム
US6665669B2 (en) * 2000-01-03 2003-12-16 Db Miner Technology Inc. Methods and system for mining frequent patterns
GB2377038A (en) * 2001-04-10 2002-12-31 I2 Ltd Method for identifying patterns in sequential event streams
US20030174179A1 (en) * 2002-03-12 2003-09-18 Suermondt Henri Jacques Tool for visualizing data patterns of a hierarchical classification structure
US20050192960A1 (en) * 2002-11-01 2005-09-01 Fujitsu Limited Feature-pattern output apparatus, feature-pattern output method, and computer product
TWI246000B (en) * 2003-10-30 2005-12-21 Benq Corp Apparatus and method for web log data mining and computer readable storage medium
US7249129B2 (en) * 2003-12-29 2007-07-24 The Generations Network, Inc. Correlating genealogy records systems and methods
JP2006171800A (ja) 2004-12-10 2006-06-29 Fujitsu Ltd データ集計装置、その方法、及びプログラム

Also Published As

Publication number Publication date
US20070005598A1 (en) 2007-01-04
US7962524B2 (en) 2011-06-14
JP2007011548A (ja) 2007-01-18

Similar Documents

Publication Publication Date Title
JP4782490B2 (ja) データ集合分割プログラム、データ集合分割装置、およびデータ集合分割方法
US10740308B2 (en) Key_Value data storage system
US9519687B2 (en) Minimizing index maintenance costs for database storage regions using hybrid zone maps and indices
JP5798503B2 (ja) ファイルリスト生成方法及びシステム、ファイルリスト生成装置並びにプログラム
JP4740060B2 (ja) 重複データ検出プログラム、重複データ検出方法および重複データ検出装置
JP5759881B2 (ja) 情報処理システム
JP5759915B2 (ja) ファイルリスト生成方法及びシステム並びにプログラム、ファイルリスト生成装置
JP5626733B2 (ja) 個人情報匿名化装置及び方法
US20160125004A1 (en) Method of index recommendation for nosql database
CN110275889B (zh) 一种适用于机器学习的特征处理方法及装置
JP6642435B2 (ja) データ処理装置、データ処理方法、及び、プログラム
WO2007004430A1 (ja) データソート処理プログラム、データソート処理方法およびデータソート処理装置
CN111723089B (zh) 一种基于列式存储格式处理数据的方法和装置
JP7041603B2 (ja) 計算機システム及び業務フローのパターンの生成方法
JP5712851B2 (ja) データ分割装置、データ分割方法およびデータ分割プログラム
JP5761029B2 (ja) 辞書作成装置、単語収集方法、及び、プログラム
CN112100989A (zh) 文档编辑方法、文档编辑系统以及计算机存储介质
JP5555238B2 (ja) ベイジアンネットワーク構造学習のための情報処理装置及びプログラム
CN115858463A (zh) 一种数据管理方法、装置、设备及存储介质
JP2008065716A (ja) データ管理装置、データ管理方法及びデータ管理プログラム
KR101638048B1 (ko) 맵리듀스를 이용한 sql 질의처리방법
JP3824956B2 (ja) 識別番号付与装置、識別番号管理方法、識別番号管理プログラム及び同プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2020038610A (ja) 検索処理プログラム、検索処理方法及び情報処理装置
CN111400320B (zh) 用于生成信息的方法和装置
US12056723B1 (en) System, method, and computer program for extracting large customer data volumes at high speed from an external multi-tenant SaaS environment

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080317

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110128

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: 20110705

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110707

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140715

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4782490

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