JPWO2016178313A1 - 情報処理装置、情報処理方法および情報処理プログラムを記憶する記録媒体 - Google Patents

情報処理装置、情報処理方法および情報処理プログラムを記憶する記録媒体 Download PDF

Info

Publication number
JPWO2016178313A1
JPWO2016178313A1 JP2017516551A JP2017516551A JPWO2016178313A1 JP WO2016178313 A1 JPWO2016178313 A1 JP WO2016178313A1 JP 2017516551 A JP2017516551 A JP 2017516551A JP 2017516551 A JP2017516551 A JP 2017516551A JP WO2016178313 A1 JPWO2016178313 A1 JP WO2016178313A1
Authority
JP
Japan
Prior art keywords
information processing
access frequency
data
subset
processing apparatus
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2017516551A
Other languages
English (en)
Other versions
JP6683200B2 (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Publication of JPWO2016178313A1 publication Critical patent/JPWO2016178313A1/ja
Application granted granted Critical
Publication of JP6683200B2 publication Critical patent/JP6683200B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

事前に算出した統計値を効率的に再利用し、統計処理を高速化する。情報処理装置であって、データの集合へのアクセス頻度を記憶して管理するアクセス頻度管理手段と、前記アクセス頻度管理手段が管理するアクセス頻度に基づいて、アクセス頻度が第1所定値以上の前記集合を少なくとも2つに分割した部分集合を生成する分割手段と、前記分割手段によって分割した前記部分集合ごとに統計値を算出する算出手段と、を備えた。

Description

本発明は、情報処理装置、情報処理方法および情報処理プログラムに関する。
上記技術分野において、非特許文献1には、データを管理するとき、統計処理の際に事前計算したブロックごとの統計値を再利用することで、レコードのスキャンを省いてI/O(Input/Output)量と計算量を削減し、統計処理を高速化する技術が開示されている。
小山田など、「データの部分集約による高速かつ正確なデータ集計処理の実現」、データベース・システム研究会報告2014-DBS-160(19)、 pp.1-7、2015年 (http://ci.nii.ac.jp/naid/110009842514)
しかしながら、上記文献に記載の技術では、事前に設定したブロック単位でなくてはブロック単位で事前に計算した統計値を効率的に再利用することができず、統計処理を高速化することができなかった。
本発明の目的は、上述の課題を解決する技術を提供することにある。
上記目的を達成するため、本発明に係る情報処理装置は、
データの集合へのアクセス頻度を記憶して管理するアクセス頻度管理手段と、
前記アクセス頻度が第1所定値以上の前記集合を少なくとも2つの部分集合に分割する分割手段と、
分割された前記部分集合ごとに統計値を算出する算出手段と、を備えた。
上記目的を達成するため、本発明に係る情報処理方法は、
データの集合へのアクセス頻度を記憶して管理するアクセス頻度管理ステップと、
前記アクセス頻度が第1所定値以上の前記集合を少なくとも2つの部分集合に分割する分割ステップと、
分割された前記部分集合ごとに統計値を算出する算出ステップと、を含む。
上記目的を達成するため、本発明に係る記録媒体は、
データの集合へのアクセス頻度を記憶して管理するアクセス頻度管理ステップと、
前記アクセス頻度が第1所定値以上の前記集合を少なくとも2つの部分集合に分割する分割ステップと、
分割された前記部分集合ごとに統計値を算出する算出ステップと、をコンピュータに実行させる情報処理プログラムを記憶する。
本発明によれば、事前に算出した統計値を効率的に再利用することができ、統計処理を高速化することができる。
本発明の第1実施形態に係る情報処理装置の構成を示すブロック図である。 本発明の第2実施形態に係る情報処理装置による部分集約木の構築を説明する図である。 本発明の第2実施形態に係る情報処理装置による部分集約木におけるリーフノードの分割手順を説明する図である。 本発明の第2実施形態に係る情報処理装置の機能構成を示すブロック図である。 本発明の第2実施形態に係る情報処理装置のファイル保持部の保持内容を説明する図である。 本発明の第2実施形態に係る情報処理装置の部分集約木保持部の保持内容を説明する図である。 本発明の第2実施形態に係る情報処理装置のハードウェア構成を示すブロック図である。 本発明の第2実施形態に係る情報処理装置においてデータを入力した際に実行される処理の流れを例示するフローチャートである。 本発明の第2実施形態に係る情報処理装置において問合せ実行時の処理の流れを例示するフローチャートである。 本発明の第2実施形態に係る情報処理装置によるリーフノードの分割処理手順を説明するフローチャートである。 本発明の第3実施形態に係る情報処理装置による部分集約木におけるリーフノードの併合手順を説明する図である。 本発明の第3実施形態に係る情報処理装置による部分集約木におけるリーフノードの併合手順を説明する図である。 本発明の第3実施形態に係る情報処理装置の機能構成を示すブロック図である。 本発明の第3実施形態に係る情報処理装置のハードウェア構成を示すブロック図である。 本発明の第3実施形態に係る情報処理装置において問合せの実行時の処理の流れを例示するフローチャートである。 本発明の第3実施形態に係る情報処理装置による部分集約木におけるリーフノードの併合処理手順を説明するフローチャートである。
以下に、図面を参照して、本発明の実施の形態について例示的に詳しく説明する。ただし、以下の実施の形態に記載されている構成要素はあくまで例示であり、本発明の技術範囲をそれらのみに限定する趣旨のものではない。
[第1実施形態]
本発明の第1実施形態としての情報処理装置100について、図1を用いて説明する。
情報処理装置100は、アクセス頻度管理部101と分割部102と統計値算出部103とを含む。
アクセス頻度管理部101は、データの集合へのアクセス頻度を記憶して管理する。
分割部102は、アクセス頻度管理部101が管理するアクセス頻度に基づいて、アクセス頻度が第1所定値以上の集合を少なくとも2つに分割した部分集合を生成する。
統計値算出部103は、分割した部分集合ごとに統計値を算出する。
本実施形態によれば、アクセス頻度に応じて分割された部分集合が自動的に生成され、生成された部分集合の統計値が自動的に算出される。これにより、事前に設定したブロック単位(部分集合単位)でなくても、事前に計算した統計値を効率的に再利用することができ、統計処理を高速化することができる。
[第2実施形態]
次に本発明の第2実施形態に係る情報処理装置について、図2A〜図8Bを参照して説明する。なお、全ての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
《前提技術》
関係データベースシステム(Relational DataBase Management System)は、関係モデルにもとづく表形式のデータ(以下テーブル)を保持し、ユーザにデータの効率的な検索と更新とを提供する。テーブル内の行はレコードと呼ばれ、ひとつのデータを表わす。データはいくつかの属性を持つことができ、テーブル内の列が各属性に対応する。そのテーブルに含まれる列の<列名、データ型>一覧を、そのテーブルのスキーマと呼ぶ。
関係データベースシステムのユーザは、テーブルに対する検索処理および更新処理をプログラミング言語によって関係データベースシステムに対して指示する。この指示は問合せ(Query)と呼ばれる。問合せを記述するためには、SQL(Structured Query Language)というプログラミング言語が標準的に用いられている。SQLを用いると、テーブルの中から条件にあてはまるレコードを簡便かつ効率的に取り出すことができる。また、列名を指定することで、レコードの中から必要な属性のみを取り出すこともできる。
関係データベースシステムにおいて頻繁におこなわれる処理のひとつに、属性の統計処理がある。属性の統計処理とは、テーブルの所定の属性の値群から何らかの統計値を計算するものであり、統計値の例としては最大値、最小値、平均値、標準偏差などがある。
属性の統計処理はテーブル内の全てないし大部分のレコードに関しておこなわれることが多い。そのため、テーブルが巨大であった場合には大量のレコードをスキャンすることとなり、多量のI/O処理と計算処理が発生して処理速度が長大となる。
《本実施形態の説明》
本実施形態では、データの集合を分割し、分割した部分集合ごとに統計値を算出しておき、問合せがあった際に統計値を用いて計算することにより計算速度を高速化している。
また、本実施形態では、分割する際に部分集約木構造を用いている。
図2Aは、例えば年齢(age)、体重(weight)、および身長(height)の3つの属性を持つデータの集合について、年齢(age)をキー属性として高さが1(分割を一段階おこなう意味)の部分集約木を示す図である。図中、楕円は部分集約木のノード201、202、203を表わし、矩形は分割された実際のデータ(部分集合)204、205を表わす。各ノード201、202、203はキー属性の値域を二分割し、最下部のノード202、203(リーフノード)は実際のデータ204、205へのポインタと、その区分に対して計算した統計値を保持する。これにより、部分集合となるデータ204、205とリーフノード202、203とが対応付けられる。また、キー属性となる年齢(age)の値域であるデータが0歳から49歳のデータ204と50歳から100歳のデータ205の二つへ区切られている。また、それぞれの区間において残りの属性(体重:weight、身長:height)の統計値(最大値:max、最小値:min、平均値:mean、合計値:sum、データ数:count)が計算されている。
さらに、アクセス頻度が所定の閾値を超えたリーフノードに対して、リーフノード202、203の分割処理を繰り返しおこなうほど木は成長し、より細かな単位で統計値が計算されてゆく。これによって統計値を再利用できる確率は高まる。つまり、リーフノードの分割処理は、あるリーフノードが担当するキー属性値の領域を二分割し、元のリーフノードの管轄下にあったデータ群を各領域に分配した上で、それらの統計値を再計算し、新たなリーフノードを生成する。例えば図2Aの部分集約木において、[0,49]の年齢を担当するリーフノード202を分割すると、図2Bのように[0,24]の年齢を担当するリーフノード206と、[25,49]の年齢を担当するリーフノード207の二つが生成される。各リーフノード206、207に対応してデータ(部分集合)208、209が生成される。
なお、図2A、2Bにおいては、アクセス頻度をaccess count [count: x]と表わしている。また、リーフノードを分割した際、新たに生成されたリーフノードのアクセス頻度(access count [count: x])は初期化されて0になる。
《本実施形態の機能構成》
図3は、本実施形態に係る情報処理装置の機能構成を説明するためのブロック図である。図3において、各ブロックは、ハードウェア単位の構成ではなく、機能単位の構成を表している。
情報処理装置300は、データ入力部301、ファイル操作部302、ファイル保持部303、部分集約木管理部304、部分集約木保持部305、問合せ受付部306、および問合せ実行部307を有する。以下、それぞれについて説明する。
《データ入力部》
データ入力部301は、情報処理装置300の処理対象となるデータを入力する。データ形式の例は、関係データベースシステムにおけるテーブルデータである。テーブルデータは表形式のデータであり、表の行はひとつのレコード(例:職員の情報)、表の各列はレコードの属性値(例:職員の年齢、身長、性別など)となる。
データ入力部301がデータを取得する方法は様々である。例えばデータ入力部301は、外部の装置から入力されるデータを取得する。その他にも例えば、データ入力部301は、手動でデータを入力する。さらにデータ入力部301は、外部の装置に対して通信などによってアクセスして、データを入力してもよい。
《ファイル操作部》
ファイル操作部302は、ファイルの生成処理とファイルの読み込み処理をおこなう。
ファイルの生成処理は、データ入力部301から入力されたデータを主記憶装置や二次記憶装置などの記憶装置に記憶するためにファイル化し、ファイル保持部303へ保持する処理である。ファイル操作部302は、ファイルの読み込み処理において、問合せ実行部307から、データが保持されているファイル名、読み込みを開始するオフセット値、そして読み込むデータのサイズを受け取る。さらに、ファイル操作部302は、ファイル読み込み処理において、対応するデータをファイル保持部303から取得して、問合せ実行部307へ返却する。
《ファイル保持部》
ファイル保持部303は、ファイル操作部302の生成したファイルを記憶装置に保持する。記憶装置は主記憶装置であってもよいし、二次記憶装置であってもよい。
《部分集約木保持部》
部分集約木保持部305は、ファイル保持部303が保持するデータに対して部分的に統計値を計算し、その結果を保持する。ここでは統計値の保持につかわれるデータ構造を部分集約木(Partial Aggregation Tree)と称する。部分集約木は二分木(Binary Tree)にもとづくデータ構造であり、非特許文献1に記載の「統計値処理において事前計算した統計値を再利用する処理」を高速化するために用いられる。
部分集約木は、少なくとも2つの属性を持つデータ(例:年齢、体重、身長)に対しデータを部分的に区切って統計値を計算した上で、保持するデータ構造である。部分集約木は任意の属性値をデータの分割に利用する。分割に利用される属性値をキー属性と称する。
部分集約木はキー属性の範囲を順に二分割していき、各範囲に対応するデータ群の部分的な統計値を計算して保持する。分割数を増やすこと、すなわち部分集約木の高さを大きくすることによって、より細かく統計値を計算することが可能となり、非特許文献1に記載の技術による統計値の再利用もおこないやすくなる。
《部分集約木管理部》
部分集約木管理部304は、部分集約木操作部341と分割指示部342とアクセス頻度管理部343とを含む。
部分集約木操作部341は、データ集合を2つ以上の部分集合に分割し、分割した部分集合ごとにデータの統計値を算出する。
分割指示部342は、アクセス頻度管理部343が管理するアクセス頻度に基づいて、アクセス頻度の高い部分集合に関して、さらに分割した部分集合を生成するように部分集約木操作部341に指示する。
アクセス頻度管理部343は、各部分集合へのアクセス頻度を記憶して管理する。なお、アクセス頻度管理部343が管理するアクセス頻度としては、例えば所定時間内におけるアクセス数がある。
部分集約木管理部304は、問合せ実行部307の問合せに基づいて、部分集約木保持部305に保持されている部分集約木の操作を部分集約木操作部341を用いて行なう。
さらに、部分集約木管理部304は、アクセス頻度管理部343を用いて、問合せ実行部307からの問合せ対象となるデータを含む部分集合へのアクセス数を計数してその計数値を管理する。
部分集約木操作部341が行なう操作には、リーフノードの分割、リーフノードの併合、そして統計処理の実行がある。
《問合せ受付部》
問合せ受付部306は、ファイル保持部303に保持されているデータに対する処理の指示を取得する。指示の記述に使われる方式の例としては、データに対する問合せを記述するプログラミング言語の一種であるSQL(Structured Query Language)がある。
問合せの例としては、データから最大値、最小値、平均値、および標準偏差などの統計値を集計する処理や、関係データベースで用いられる選択、結合、射影処理、およびこれらの処理の組み合わせによる複雑な情報処理などがある。
《問合せ実行部》
問合せ実行部307は、問合せ受付部306が取得した問合せを実行する。この際、問合せ実行部307は部分集約木管理部304を通じて、問合せの中で事前に計算した統計値が問合せ範囲によっては再利用できるか否かの情報、および再利用可能であった場合は範囲における統計値を取得する。統計値が再利用できない範囲については、ファイル操作部302を通じてファイル保持部303内のデータへアクセスし、統計値を計算する。そして、各範囲の統計値を併合することにより、問合せ実行部307は最終的な問合せ結果を構築する。
《ファイル保持部の保持内容》
次に、ファイル保持部303の保持内容について図4を参照して説明する。
図4に示すように、ファイル保持部303は例えばテーブル400を保持し、このテーブル400は、個々の要素の識別子(ID:Identifier)401、データ402、および属するブロックの識別子(ID)403を含む。データ402としては、上記の例のように年齢、身長、および体重などのデータを有する。
《部分集約木保持部の保持内容》
次に、部分集約木保持部305の保持内容について図5を参照して説明する。
図5に示すように、部分集約木保持部305はテーブル500を保持し、このテーブル500は、ブロックID501、アクティブフラグ502、要素数503、統計値504、高さ(分割レベル)505、親ブロックID506、およびアクセスカウント数507を有する。
《ハードウェア構成の一例》
次に、本実施形態に係る情報処理装置のハードウェア構成の一例を図6を参照して説明する。
図に示すように、情報処理装置300は、CPU(Central Processing Unit)601、ROM(Read Only Memory)602、通信制御部603、およびRAM(Random Access Memory)604を備えている。さらに、情報処理部300は、ストレージ605、出力インタフェース606、表示部607、プリンタ608、および入力部610を備えている。CPU601は中央処理部であって、様々なプログラムを実行することにより情報処理装置300全体を制御する。
ROM602は、リードオンリメモリであり、CPU601が最初に実行すべきブートプログラムの他、各種パラメータ等を記憶している。また、通信制御部603は、ネットワークを介した各種装置との通信を制御する。RAM604は、ランダムアクセスメモリであり、入力データ641、分割対象ブロックノード(集約木)642、分割済みブロック(リーフノード)643、統計値644、問合せ情報645、応答情報646、入出力データ647、および送受信データ648を含む。
また、ストレージ605は、部分集約木保持部305とファイル保持部303とを有している。さらに、ストレージ605は、データ入力モジュール651、問合せ受付モジュール652、アクセス頻度管理モジュール653、およびファイル操作モジュール654を有する。さらにまたストレージ605は、問合せ実行モジュール655、部分集約木操作モジュール656、分割指示モジュール657、およびデータ出力モジュール658等を有している。
また、入力部610は、リーダ611、キーパッド612、タッチパネル613およびこれらからの入力をCPU601に渡す入力インタフェース615を含む。ここではリーダ611は、一例としてバーコードリーダとするが、RFID(Radio Frequency Identifier)タグリーダなどでもよい。
一方、入力部610或いは通信制御部603を介して問合せ受付モジュール652が受け付けた問合せに対する回答は、通信制御部603を介して外部装置に送信される。或いは出力インタフェース606を介して表示部607やプリンタ608に出力される。
なお、データ入力部301は、CPU601、ROM602、通信制御部603、RAM604、入力部610、およびデータ入力モジュール651によって構成される。
ファイル操作部302は、CPU601、ROM602、RAM604、およびファイル操作モジュール654によって構成される。
部分集約木管理部304は、CPU601、ROM602、RAM604、アクセス頻度管理モジュール653、部分集約木操作モジュール656、および分割指示モジュール657によって構成される。
問合せ受付部306は、CPU601、ROM602、通信制御部603、RAM604、入力部610、および問合せ受付モジュール652によって構成される。
問合せ実行部307は、CPU601、ROM602、RAM604、および問合せ実行モジュール655によって構成される。
《処理の流れ》
図7は、本実施形態の情報処理装置300において、データを入力した際に実行される処理の流れを例示するフローチャートである。ステップS701において、データ入力部301はデータを取得する。ステップS703において、ファイル操作部302はデータをファイル化する。ステップS705においてファイル操作部302はファイル保持部303へファイルを保存する。
図8Aは、本実施形態の情報処理装置300において、問合せの実行時の処理の流れを例示するフローチャートである。ステップS801において、問合せ受付部306は問合せを取得する。ステップS803において、問合せ受付部306から指示を受けた問合せ実行部307は、部分集約木管理部304を通じて問合せのあった部分集約木を探索する。さらに、ステップS805において、問合せ実行部307は、探索によって得られた部分集約木の統計処理で事前計算した統計値が再利用可能か否かを判定する。
この判定の結果、もし再利用が可能であれば、ステップS807において、問合せ実行部307は部分集約木保持部305から事前計算した統計値を取得する。もし再利用が可能でなければ、ステップS809において、問合せ実行部307は、今後その問合せで再利用が可能になるように、部分集約木管理部304に指示し、リーフノードを分割して木の成長処理をおこなう。これにより、問合せ実行部307は、このリーフノードに対応するデータ集合を2つ以上の部分集合に分割して木を成長させる。
こうして問合せ実行部307は、問合せの実行に必要な統計値を取得し終えると、ステップS811において、それらの統計値を統合して問合せ結果を算出する。その後、ステップS813において、問合せ実行部307は部分集約木管理部304を通じて部分集約木のリーフノードに記録されているアクセス頻度を更新する。
次に、ステップS809の処理の詳細を図8Bを参照して説明する。
ステップ821において、問合せ実行部307が、リーフノードに対応するデータ集合を2つ以上の部分集合に分割する際、問合せ実行部307はリーフノードのアクセス頻度(アクセス数のカウント値)を取得する。次に、ステップS823において、問合せ実行部307はいずれかのリーフノードのカウント値が所定の閾値αを超えているか否かを判定する。この判定の結果、カウント値が閾値αを超えているときは、ステップS825において、問合せ実行部307はカウント値が閾値αを超えているリーフノードを分割する。次いで、ステップS827において、問合せ実行部307は、分割により新たに生成したリーフノードの統計値を算出し、ステップS811の処理に移行する。
また、ステップS823の判定の結果、カウント値が閾値αを超えていないときは、問合せ実行部307は、ステップS811の処理に移行する。
本実施形態の情報処理装置300によれば、アクセス頻度の高い統計値を有するデータの部分集合を自動的に検出すると共にアクセス頻度の高い部分集合を分割し、分割して得た部分集合ごとに新たに統計値を算出し保持している。このため、統計処理において事前に計算した統計値を再利用できる確率が高まり、統計処理の性能が向上する。さらに、事前に設定したブロック単位すなわち事前に設定したデータの部分集合単位でなくても、事前に自動計算した統計値を再利用することができ、レコードのスキャンを省いてI/O量と計算量を削減し、属性の統計処理を高速化することができる。
なお、本実施形態ではデータ集合とこのデータ集合を分割した部分集合とのそれぞれにノードを割り当てた木構造として情報処理を行なったが、これに限定されることはない。
例えば、木構造を用いないで情報処理するようにしても同様の効果を得られることは言うまでもない。
また、本実施形態では所定時間内のアクセス数をアクセス頻度とし、アクセス頻度の高い統計値を有する部分集合を分割したが、部分集合へのアクセス数があらかじめ設定した閾値を超えたときにアクセス頻度が高いと判定してこの部分集合を分割してもよい。
また、本実施形態ではアクセス頻度が高い部分集合を二分割するようにしたが、3つ以上に分割するようにしてもよい。
[第3実施形態]
次に本発明の第3実施形態に係る情報処理装置について、図9A〜図12Bを参照して説明する。本実施形態に係る情報処理装置は、上記第2実施形態と比べると、アクセス数のカウント値が最小のリーフノードを他のリーフノードと併合する処理を行なう点で異なる。その他の構成および動作は、第2実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
例えば第2実施形態と同様に年齢(age)、体重(weight)、および身長(height)の3つの属性を持つデータの集合について、年齢(age)をキー属性として図9Aに示す部分集約木が構築されていたとする。このときアクセス数が最小であるリーフノード904は、アクセス数が最小から2番目のリーフノード903と併合される。つまり、図9Aでは、[0,24]の年齢を担当するリーフノード904と、[25,49]の年齢を担当するリーフノード905と[50,100]の年齢を担当するリーフノード903とが存在する。リーフノード904のアクセス数は8、リーフノード903のアクセス数は10、リーフノード905のアクセス数は50である。したがって、リーフノード904のアクセス数が最小であり、リーフノード903のアクセス数が最小から2番目となる。したがってリーフノード903とリーフノード904とが併合され、図9Bの部分集約木が構築される。なお、リーフノードを併合した際、新たに生成されたリーフノードのアクセス数(access count [count: x])は初期化されて0になる。
このようにアクセス数(アクセス頻度)が小さいリーフノードを併合することで、統計値の数を減らすことができ、統計値を保持しておく記憶領域(統計値全体の保持サイズ)を減らすことができる。
《本実施形態の機能構成》
図10は、本実施形態に係る情報処理装置の構成を説明するための機能ブロック図である。本実施形態に係る情報処理装置1000は、上記第2実施形態と比べると、部分集約木操作部1041と併合指示部1044とを備えた部分集約木管理部1001を有する点で異なる。その他の構成および動作は、第2実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
部分集約木操作部1041は、分割指示部342の指示に基づいて、データ集合を2つ以上の部分集合に分割し、分割した部分集合ごとにデータの統計値を算出する。さらに、部分集約木操作部1041は、併合指示部1044の指示に基づいて、2つ以上の部分集合を1つに併合し、併合して得られた部分集合の統計値を算出する。ここでは、リーフノードおよびこのリーフノードのデータを部分集合と称している。
併合指示部1044は、アクセス頻度管理部343が管理するアクセス頻度に基づいて、アクセス頻度が最小の部分集合に関して、他のアクセス頻度の低い部分集合と併合した部分集合を生成するように部分集約木操作部1041に指示する。なお、隣接する部分集のどちらもアクセス頻度が低いときはこれらを併合する。また、アクセス頻度が最小の部分集合に隣接する部分集合のアクセス頻度が所定値Rよりも大きい場合、アクセス頻度が最小の部分集合と隣接しない部分集合と併合する。この際、アクセス頻度が最小の部分集合を、アクセス頻度が所定値Q(<R)以下の部分集合と併合する。また、併合する部分集合の数は3つ以上であってもよい。
《本実施形態のハードウェア構成》
図11は本実施形態に係る情報処理装置1000のハードウェア構成を説明するためのブロック図である。本実施形態に係る情報処理装置1000は、上記第2実施形態と比べると、RAM604に閾値1141を有するとともにストレージ605に併合指示モジュール1151有する点で異なる。その他の構成および動作は、第2実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
《処理の流れ》
本実施形態の情報処理装置1000における問合せ受け入れ時の処理は、リーフノードの併合処理が加わる点において第2実施形態と異なる。図12Aに本実施形態における問合せ受け入れ時の処理のフローチャートを示して説明する。なお、第2実施形態における処理と同一部分は同一符号をもって表わし、その説明を省略する。本実施形態の処理と第2実施形態の処理では、ステップS809とステップS811の間にステップS1201、およびS1202の処理が加わった点において異なる。すなわち、ステップS809の処理の後、ステップS1201において、問合せ実行部307は、部分集約木管理部1001を通じて、保持する統計値の数すなわちリーフノードの数が、事前に入力部610を介して設定された許容最大数を超過するか否かを判定する。
この判定の結果、もし統計値の数が許容最大数以下であれば、ステップS811に移行する。また、ステップS1201の判定の結果、もし統計値の数が許容最大数を超過するようであれば、ステップS1202において、部分集約木管理部1001は、リーフノードに記録されている部分集合へのアクセス頻度を確認し、アクセス頻度が所定値以下のリーフノードを併合する。このようにすることで、統計値の数を減らして許容最大数内に収まるように木を縮退する。ここで、木の縮退とはリーフノードの数を減らすことである。
こうして問合せの実行に必要な統計値を取得し終えると、ステップS811において、問合せ実行部307はそれらの統計値を統合して問合せ結果を算出する。
次に、ステップ1202の処理の詳細を図12Bを参照して説明する。
ステップ1221において、問合せ実行部307が、アクセス数が最小のリーフノードに対応する部分集合を他のリーフノードの部分集合と併合する際、問合せ実行部307はリーフノードのアクセス頻度(アクセス数のカウント値)を取得する。次に、ステップS1223において、問合せ実行部307は、最小のアクセスカウント値のノードを選択する。ステップS1225において、問合せ実行部307は、このカウント値が最小のノードの両隣のノードのカウント値を取得する。さらに、ステップS1227において、問合せ実行部307は、両隣のノードのうちアクセスカウント値が小さい方のノードと併合して新たなリーフノードおよびデータを生成する。次いで、ステップS1229において、問合せ実行部307は、併合によって得られたリーフノードのデータの統計値を算出する。この後、問合せ実行部307は、ステップS1015の処理に移行する。
上記第2実施形態においては、リーフノードの分割処理を繰り返し行なうほど木は成長し、より細かな単位で統計値が計算されていく。これによって統計値を再利用できる確率は高まる。しかし、データ集合を分割するたびに統計値の数が増えるため、部分集約木のデータサイズが肥大化しうる。そのため、本実施形態では、部分集約木が保持する統計値の最大許容数を設定し、リーフノードの分割後に統計値数がその最大許容数を超えた場合は、適切なリーフノードを併合することで、統計値数がその最大許容数を超えないよう保つようにしている。つまり、あまり参照されないデータ領域を含む部分集合については細かな単位で統計値を保つ必要がない。このため、部分集約木はリーフノードに対応するデータの部分集合に対する利用者のアクセス頻度を記憶し、「最も参照されないリーフノード」に対応するデータの部分集合を、隣接する少なくとも1つの部分集合との併合の対象に選ぶ。この際、併合対象となる2つもしくは3つのアクセス頻度の平均値を算出し、この平均値が所定値以下のときに併合を行なう。これにより、アクセス頻度の低い部分集合と、アクセス頻度の高い部分集合との併合を回避することができる。尚、隣接する部分集合のうちのアクセス頻度が小さい方の部分集合と併合しても良い。また、隣接する部分集合のアクセス頻度が所定の閾値以上であるときは、アクセス頻度が所定の閾値以下であれば、隣接しない部分集合同士を併合しても良い。また、併合する部分集合の数は3つ以上であっても良い。
なお、アクセス頻度の管理には単純なLRU(Least Recently Used)アルゴリズム(http://en.wikipedia.org/wiki/Page_replacement_algorithm#Least_recently_used)を用いてもよい。また、その軽量な代替アルゴリズムであるClock(http://en.wikipedia.org/wiki/Page_replacement_algorithm#Clock)を用いてもよい。
部分集約木管理部1001におけるリーフノードの併合処理は、同じ親ノードを持つ2つの隣接するリーフノードが担当する領域を併合して新たなリーフノードを生成し、親ノードを新たなリーフノードで置き換える。この際、新たなリーフノードの統計値を計算する必要があるが、これは元々の2つのリーフノードの持つ統計値を併合することで、実施可能である。すなわち、実際のデータをもう一度スキャンして統計値を再計算する必要はない。例えば左のリーフノードが最大値70を有し、右のリーフノードが最大値150を持っていた場合、併合されたリーフノードの最大値はMax(70,150)に基づいて150であることがわかる。
次に、具体的な一例を説明する。ここでは、部分集約木を利用して統計処理をおこなうアルゴリズムについて述べる。まず、次の関数compare(range, query)を考える。
function compare(range, query) {
if (query.min < range.min) {
if (query.max < range.min) return OUTSIDE_QUERY;
if (query.max < range.max) return PART_DATA_IN_QUERY;
return ALL_DATA_IN_QUERY;
}
if (query.min === range.min && range.max <= query.max) return ALL_DATA_IN_QUERY;
if (query.min <= range.max) return PART_DATA_IN_QUERY;
return OUTSIDE_QUERY;
}
関数compare(range, query) は、あるノードのキー属性の範囲 [range.min, range.max] と、問合せ内のキー属性に関する絞り込み条件 [query.min, query.max] を受け取ると、そのノードの管理下にあるデータについて、「全てのデータが問合せの範囲外 (OUTSIDE_QUERY)」、「いくつかのデータが問合せの範囲内 (PART_DATA_IN_QUERY)」、「全てのデータが問合せの範囲内 (ALL_DATA_IN_QUERY)」のどれかの値を返す。
そして、木の探索関数computeAggregation(node, query)は、次のようになる。
function computeAggregation(node, query) {
// この node 下のデータが query の範囲内または範囲外にあるのかを
// compare関数をつかって確認する
answer = compare(node.range, query);
if (answer == OUTSIDE_QUERY) {
// node 下のデータは query の範囲外なので、それ以上の探索はしない
return null;
}
if (answer == ALL_DATA_IN_QUERY) {
// node 下の全てのデータが query の範囲内なので、事前に計算した統計値を使いまわす
return node.getPrecomputedAggregations();
}
if (answer == PART_DATA_IN_QUERY) {
if (node instanceof LeafNode) {
// リーフノードまで探索したが、再利用はできなかった
// 今後、この区間で再利用ができるように、ノードを分割し
// データをデータ保持部から読み込んで統計値を計算
node.split(query);
}
// 自身の子の統計値を再利用するために探索
var leftAggregations = computeAggregation(node.leftChild, query);
var rightAggregations = computeAggregation(node.leftChild, query);
// 両方の子から得た統計値を併合して返却
return leftAggregations.merge(rightAggregations);
}
}
この関数は、部分集約木を再帰的に探索し、各ノードが「全てのデータが問合せの範囲外(OUTSIDE_QUERY)」、「いくつかのデータが問合せの範囲内(PART_DATA_IN_QUERY)」、「全てのデータが問合せの範囲内(ALL_DATA_IN_QUERY)」のどれになるかを判定する。
そして、
もし「全てのデータが問合せの範囲外 (OUTSIDE_QUERY)」であれば、そのノード以下のノードは問合せの対象外であり、探索しても無駄であるため、そのノードよりも下位のノードの探索を打ち切る。
もし「いくつかのデータが問合せの範囲内 (PART_DATA_IN_QUERY)」であれば、そのノードの粒度では統計値の再利用はできない。しかし、下位のノードはより細粒度に統計値を計算しており再利用できる場合があるため、下位ノードについて再帰的に探索を続ける。そのノードが子供を持たない場合は、将来同じ問合せが来た場合に統計値が再利用できるように、そのノードを分割する。
もし「全てのデータが問合せの範囲内 (ALL_DATA_IN_QUERY)」であれば、そのノードに関するデータは全て問合せの対象となっているため、事前に計算した統計値を使いまわす、ということをおこなう。あとは、各ノードから統計値が得られていた場合、統計値の統合処理をおこない、最終的な問合せ結果を算出する。
なお、本実施形態ではデータ集合とこのデータ集合を分割した部分集合とのそれぞれにノードを割り当てた木構造として情報処理を行なった。しかし、これに限定されることはなく、木構造を用いないで情報処理するようにしても同様の効果を得られることは言うまでもない。
また、本実施形態では所定時間内のアクセス数をアクセス頻度とし、アクセス頻度の高い統計値を有する部分集合を分割したが、部分集合へのアクセス数があらかじめ設定した閾値を超えたときにアクセス頻度が高いと判定してこの部分集合を分割してもよい。
また、本実施形態ではアクセス頻度が高い部分集合を二分割するようにしたが、3つ以上に分割するようにしてもよい。
本実施形態によれば、統計処理において事前に計算した統計値を再利用できる確率が高まり、統計処理の性能が向上する。さらに、事前に設定した部分集合単位でなくても、事前に自動計算した統計値を再利用することができ、レコードのスキャンを省いてI/O量と計算量を削減し、属性の統計処理を高速化することができる。さらにまた、アクセス頻度が低いデータ領域を含む部分集合は、自動的に隣接する少なくとも1つの部分集合と併合され、統計値の数が常に最大許容数以下に保たれるので、データサイズの肥大化を防止でき、データ検索効率の低下を防止することができる。
[他の実施形態]
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。また、それぞれの実施形態に含まれる別々の特徴を如何様に組み合わせたシステムまたは装置も、本発明の範疇に含まれる。
また、本発明は、複数の機器から構成されるシステムに適用されてもよいし、単体の装置に適用されてもよい。さらに、本発明は、実施形態の機能を実現する情報処理プログラムが、システムあるいは装置に直接あるいは遠隔から供給される場合にも適用可能である。したがって、本発明の機能をコンピュータで実現するために、コンピュータにインストールされるプログラム、あるいはそのプログラムを格納した媒体、そのプログラムをダウンロードさせるWWW(World Wide Web)サーバも、本発明の範疇に含まれる。特に、少なくとも、上述した実施形態に含まれる処理ステップをコンピュータに実行させるプログラムを格納した非一時的コンピュータ可読媒体(non-transitory computer readable medium)は本発明の範疇に含まれる。
[実施形態の他の表現]
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
データの集合へのアクセス頻度を記憶して管理するアクセス頻度管理手段と、
前記アクセス頻度が第1所定値以上の前記集合を少なくとも2つの部分集合に分割する分割手段と、
分割された前記部分集合ごとに統計値を算出する算出手段と、
を備えた情報処理装置。
(付記2)
前記分割手段は、分割された前記部分集合のアクセス頻度を初期化する、付記1に記載の情報処理装置。
(付記3)
前記分割手段は、前記統計値にアクセスがあったときに分割を実行する、付記1または2に記載の情報処理装置。
(付記4)
前記部分集合に含まれる前記統計値を木構造として管理する管理手段をさらに備えた、付記1乃至3のいずれか1項に記載の情報処理装置。
(付記5)
前記統計値の全体サイズが所定の最大値を超えた場合に、少なくとも2つの前記部分集合を併合する併合手段をさらに備えた、付記1乃至4のいずれか1項に記載の情報処理装置。
(付記6)
前記アクセス頻度が最小の部分集合を、該部分集合以外の少なくとも1つの部分集合と併合する併合手段をさらに備えた付記1乃至3のいずれか1項に記載の情報処理装置。
(付記7)
前記併合手段は、前記アクセス頻度が最小の部分集合を、該部分集合に隣接する部分集合と併合する、付記4に記載の情報処理装置。
(付記8)
前記併合手段は、前記隣接する部分集合が2つある場合、前記アクセス頻度が小さい方の前記隣接する部分集合と併合する、付記5に記載の情報処理装置。
(付記9)
前記併合手段は、前記アクセス頻度が最小の部分集合を、該部分集合に隣接する部分集合のアクセス頻度が第2所定値よりも大きい場合、該部分集合と隣接しない部分集合と併合する、付記6に記載の情報処理装置。
(付記10)
前記併合手段は、前記アクセス頻度が最小の部分集合を、前記アクセス頻度が第3所定値以下の部分集合と併合する、付記6に記載の情報処理装置。
(付記11)
前記併合手段は、前記アクセス頻度が最小の部分集合を、前記アクセス頻度が最小の次に小さい部分集合と併合する、付記10に記載の情報処理装置。
(付記12)
前記最大値を設定する設定手段をさらに備えた、付記5に記載の情報処理装置。
(付記13)
データの集合へのアクセス頻度を記憶して管理するアクセス頻度管理ステップと、
前記アクセス頻度が第1所定値以上の前記集合を少なくとも2つの部分集合に分割する分割ステップと、
分割された前記部分集合ごとに統計値を算出する算出ステップと、
を含む情報処理方法。
(付記14)
データの集合へのアクセス頻度を記憶して管理するアクセス頻度管理ステップと、
前記アクセス頻度が第1所定値以上の前記集合を少なくとも2つの部分集合に分割する分割ステップと、
分割された前記部分集合ごとに統計値を算出する算出ステップと、
をコンピュータに実行させる情報処理プログラム。
この出願は、2015年5月7日に出願された日本出願特願2015−094625を基礎とする優先権を主張し、その開示の全てをここに取り込む。

Claims (10)

  1. データの集合へのアクセス頻度を記憶して管理するアクセス頻度管理手段と、
    前記アクセス頻度が第1所定値以上の前記集合を少なくとも2つの部分集合に分割する分割手段と、
    分割された前記部分集合ごとに統計値を算出する算出手段と、
    を備えた情報処理装置。
  2. 前記分割手段は、分割された前記部分集合のアクセス頻度を初期化する、請求項1に記載の情報処理装置。
  3. 前記分割手段は、前記統計値にアクセスがあったときに分割を実行する、請求項1または2に記載の情報処理装置。
  4. 前記部分集合に含まれる前記統計値を木構造として管理する管理手段をさらに備えた、請求項1乃至3のいずれか1項に記載の情報処理装置。
  5. 前記統計値の全体サイズが所定の最大値を超えた場合に、少なくとも2つの前記部分集合を併合する併合手段をさらに備えた、請求項1乃至4のいずれか1項に記載の情報処理装置。
  6. 前記併合手段は、前記アクセス頻度が最小の部分集合を、該部分集合以外の少なくとも1つの部分集合と併合する、請求項5に記載の情報処理装置。
  7. 前記併合手段は、前記アクセス頻度が最小の部分集合を、該部分集合に隣接する部分集合と併合する、請求項6に記載の情報処理装置。
  8. 前記併合手段は、前記隣接する部分集合が2つある場合、前記アクセス頻度が小さい方の前記隣接する部分集合と併合する、請求項7に記載の情報処理装置。
  9. データの集合へのアクセス頻度を記憶して管理し、
    前記アクセス頻度が第1所定値以上の前記集合を少なくとも2つの部分集合に分割し、
    分割された前記部分集合ごとに統計値を算出する、
    情報処理方法。
  10. データの集合へのアクセス頻度を記憶して管理するアクセス頻度管理処理と、
    前記アクセス頻度が第1所定値以上の前記集合を少なくとも2つの部分集合に分割する分割処理と、
    分割された前記部分集合ごとに統計値を算出する算出処理と、
    をコンピュータに実行させる情報処理プログラムを記憶する記録媒体。
JP2017516551A 2015-05-07 2016-04-26 情報処理装置、情報処理方法および情報処理プログラムを記憶する記録媒体 Active JP6683200B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2015094625 2015-05-07
JP2015094625 2015-05-07
PCT/JP2016/002184 WO2016178313A1 (ja) 2015-05-07 2016-04-26 情報処理装置、情報処理方法および情報処理プログラムを記憶する記録媒体

Publications (2)

Publication Number Publication Date
JPWO2016178313A1 true JPWO2016178313A1 (ja) 2018-03-15
JP6683200B2 JP6683200B2 (ja) 2020-04-15

Family

ID=57218538

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017516551A Active JP6683200B2 (ja) 2015-05-07 2016-04-26 情報処理装置、情報処理方法および情報処理プログラムを記憶する記録媒体

Country Status (2)

Country Link
JP (1) JP6683200B2 (ja)
WO (1) WO2016178313A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7193721B2 (ja) * 2019-01-31 2022-12-21 富士通株式会社 情報処理装置およびデータベース検索プログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62296226A (ja) * 1986-06-16 1987-12-23 Fujitsu Ltd インデツクス順編成フアイルのインデツクス処理方式
US5257365A (en) * 1990-03-16 1993-10-26 Powers Frederick A Database system with multi-dimensional summary search tree nodes for reducing the necessity to access records
JP2006120056A (ja) * 2004-10-25 2006-05-11 Hewlett-Packard Development Co Lp データベースシステムおよびその方法
JP2012234415A (ja) * 2011-05-02 2012-11-29 Fujitsu Ltd インデックス管理方法、インデックス管理プログラムおよびインデックス管理装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62296226A (ja) * 1986-06-16 1987-12-23 Fujitsu Ltd インデツクス順編成フアイルのインデツクス処理方式
US5257365A (en) * 1990-03-16 1993-10-26 Powers Frederick A Database system with multi-dimensional summary search tree nodes for reducing the necessity to access records
JP2006120056A (ja) * 2004-10-25 2006-05-11 Hewlett-Packard Development Co Lp データベースシステムおよびその方法
JP2012234415A (ja) * 2011-05-02 2012-11-29 Fujitsu Ltd インデックス管理方法、インデックス管理プログラムおよびインデックス管理装置

Also Published As

Publication number Publication date
JP6683200B2 (ja) 2020-04-15
WO2016178313A1 (ja) 2016-11-10

Similar Documents

Publication Publication Date Title
US11281793B2 (en) User permission data query method and apparatus, electronic device and medium
US10102253B2 (en) Minimizing index maintenance costs for database storage regions using hybrid zone maps and indices
US7797265B2 (en) Document clustering that applies a locality sensitive hashing function to a feature vector to obtain a limited set of candidate clusters
US20220365957A1 (en) Log parsing method and device, server and storage medium
JP4722195B2 (ja) データベース・メッセージ分析支援プログラム、方法及び装置
CN110659282B (zh) 数据路由的构建方法、装置、计算机设备和存储介质
US20130185429A1 (en) Processing Store Visiting Data
US20120296913A1 (en) System and Method of Partitioned Lexicographic Search
CN102012936B (zh) 基于云计算平台的海量数据聚合方法和系统
US11675769B2 (en) On-demand, dynamic and optimized indexing in natural language processing
CN111506621A (zh) 一种数据统计方法及装置
JP6642435B2 (ja) データ処理装置、データ処理方法、及び、プログラム
CN111414361A (zh) 标签数据存储方法、装置、设备及可读存储介质
KR102345410B1 (ko) 빅데이터 지능형 수집 방법 및 장치
KR101955376B1 (ko) 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치
WO2016178313A1 (ja) 情報処理装置、情報処理方法および情報処理プログラムを記憶する記録媒体
WO2016178312A1 (ja) 情報処理装置、情報処理方法および記憶媒体
US20240045888A1 (en) Key name generation method and apparatus and non-transitory computer-readable storage medium
CN105740997A (zh) 一种控制任务流程的方法、装置及数据库管理系统
KR101592670B1 (ko) 인덱스를 이용하는 데이터 검색 장치 및 이를 이용하는 방법
KR102545575B1 (ko) 고객군별 특성에 따른 이중화 서비스 플로우를 적용한 플랫폼을 통한 ai모델 자동추천 구독 서비스 방법 및 서버
JP2016091529A (ja) ハイブリッド規則の推論装置及びその方法
Li et al. A novel approach for mining probabilistic frequent itemsets over uncertain data streams
US20230033592A1 (en) Information processing apparatus, method and program
Shah et al. Optimum frequent pattern approach for efficient incremental mining on large databases using Map Reduce

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171101

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190315

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190806

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191003

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200309

R150 Certificate of patent or registration of utility model

Ref document number: 6683200

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150