JPWO2014168199A1 - 論理演算方法および情報処理装置 - Google Patents
論理演算方法および情報処理装置 Download PDFInfo
- Publication number
- JPWO2014168199A1 JPWO2014168199A1 JP2015511295A JP2015511295A JPWO2014168199A1 JP WO2014168199 A1 JPWO2014168199 A1 JP WO2014168199A1 JP 2015511295 A JP2015511295 A JP 2015511295A JP 2015511295 A JP2015511295 A JP 2015511295A JP WO2014168199 A1 JPWO2014168199 A1 JP WO2014168199A1
- Authority
- JP
- Japan
- Prior art keywords
- logical operation
- sets
- records
- record
- basket
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Algebra (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
大規模データにおいて、複数の集合間の論理演算を効率的に行う。論理演算対象の各集合を、メモリに配置可能なサイズの、予め定めた共通の区分に分類し、区分毎にメモリ上で論理演算を行う。共通の区分は、各集合の全レコードを重複無く分類できるよう設定する。そして、区分毎の論理演算結果の直和を計算することにより、論理演算結果を得る。なお、共通の区分のサイズは、分類されたレコードがメモリに展開可能なように決定する。
Description
本発明は、大規模データ(Big Data)の論理演算技術に関する。
ネットワーク、サーバ、ストレージなどのハードウェアの革新と、それらの運用技術の発展に伴い、近年、データ量が爆発的に増加している。このようなデータは、大規模データと呼ばれている。大規模データは、ディスク上には保持できるが、その大きさのため、メモリ上には全てを展開できない。このため、大規模データの論理演算、例えば、大規模データから生成した複数の集合間でAND、ORといった論理演算を行う場合、集合をメモリにロード可能なサイズに機械的に分割した部分集合を生成し、部分集合の全ての組み合わせで論理演算処理を繰り返す必要がある。これを高速化するものとして、並列処理のMapReduce技術がある(例えば、非特許文献1参照)。
しかしながら、たとえMapReduce技術を適用して並列化したとしても、各集合について分割した単位毎に総当りで論理演算を行うため、全演算回数が増大する。このため、処理自体が、非効率であるだけでなく、メモリへの展開のためにディスクへのアクセス回数が増加し、処理性能が劣化する。
本発明は、上記事情に鑑みてなされたもので、大規模データにおいて、複数の集合間の論理演算を効率的に行う技術を提供することを目的とする。
本発明は、論理演算対象の各集合を、メモリに配置可能なサイズの、共通の区分に分類し、区分毎にメモリ上で論理演算を行う。共通の区分は、各集合の全レコードを重複無く分類できるよう設定する。そして、区分毎の論理演算結果の直和を計算することにより、論理演算結果を得る。なお、共通の区分のサイズは、分類されたレコードがメモリに展開可能なように決定する。
具体的には、複数の集合間の論理演算方法であって、前記集合を構成する各レコードを、前記集合毎に、それぞれ予め定めた区分に分類し、同一の前記区分に属するレコード間で、前記集合間の論理演算を行い、演算結果を得、前記区分毎の前記演算結果の直和を計算し、前記区分は、前記複数の集合に属する全レコードを一意に類別可能なものであることを特徴とする集合間の論理演算方法を、提供する。
また、複数の集合間の論理演算を行う情報処理装置であって、前記集合を構成する各レコードを、前記集合毎に、それぞれ予め定めた区分に分類する分類部と、同一の前記区分に属するレコード間で、前記集合間の論理演算を行い、演算結果を得る論理演算部と、前記区分毎の前記演算結果の直和を計算する直和部と、を備え、前記区分は、前記複数の集合に属する全レコードを一意に類別可能なものであることを特徴とする集合間の情報処理装置を提供する。
また、コンピュータを、複数の集合に属する全レコードを一意に類別可能な区分に、当該レコードを前記集合毎に分類する分類手段、同一の前記区分に属するレコード間で、予め定めた前記集合間の論理演算を行い、演算結果を得る論理演算手段、前記区分毎の前記演算結果の直和を計算する直和手段、として機能させるためのプログラムを提供する。
本発明によれば、大規模データにおいて、複数の集合間の論理演算を効率的に行うことができる。
以下、本発明を適用する実施形態について説明する。以下、本発明の実施形態を説明するための全図において、同一機能を有するものは同一符号を付し、その繰り返しの説明は省略する。
図1は、本実施形態の情報処理装置100のブロック図である。本図に示すように、本実施形態の情報処理装置100は、CPU110と、メモリ120と、記憶装置130と、入力装置140と、出力装置150と、を備える。また、ネットワークインタフェース(NWIF)170および外部記憶装置160をさらに備えてもよい。
記憶装置130には、重複したレコードを排除した、複数の順序集合131が格納される。各順序集合131は、それぞれ、1つのデータベース300に保持されるレコードを、所定の項目で検索し、検索結果を抽出したものである。なお、データベース300は、外部記憶装置160、並びに、情報処理装置100にネットワーク171などを介して接続される他の情報処理装置180および他の外部記憶装置190などに保持される。
図2に、データベース300および各順序集合131の例を示す。ここでは、一例として、3つの項目を有するデータベース300から抽出した3つの順序集合131A、131B、131Cを示す。以後、順序集合は、各々区別する必要がない場合は、131と呼ぶ。
データベース300は、本図に示すように、年齢(Age)、地域(Area)、保有ポイント(Point)の3つの項目を備え、少なくとも1つの項目値を有する、1以上のレコードから構成される。なお、データベース300の項目は、これらに限られず、様々な項目型を取りえる。また、項目値も、数値、文字列、全文など検索の対象にできるものであればいずれでもかまわない。
データベース300を構成する各レコードの左横に付与した番号は、各レコードに一意に付与されるレコード番号(recNo.)である。レコード番号は、表形式データとして表されるデータベース300において、各レコードが収容されている位置を表す情報である。このレコード番号は、例えば、データベース300の作成時に付与される。各レコードには、レコード番号を指定することにより、アクセスできる。レコード番号は、記憶域を消費しない番地である。
なお、データベース300は、1の記憶領域に保持されていなくてもよい。複数の記憶装置に分散して格納されていてもよい。例えば、上記データベース300の例では、レコード番号が0から3までのレコードが、情報処理装置100の記憶装置130に、同4から6のレコードが、外部記憶装置160に、同7から10のレコードが情報処理装置180の記憶装置に格納されていてもよい。あるいは、年齢のデータベースが記憶装置130に、地域のデータベースが外部記憶装置160に、保有ポイントのデータベースが外部記憶装置190に格納されていてもよい。
順序集合131は、このデータベース300の、所定の項目をキーに、所定の条件を満たすレコードを検索し、その結果得られたレコードを特定する情報の集合である。本実施形態では、レコードを特定する情報の集合として、レコード番号を用いる。
一般に検索結果はインデックスの仕組み上、図2に示すように、項目値が昇順または降順となるよう得られることが多い。このため、順序集合131に格納されるレコード番号は、ランダムな並びとなる。
通常の集合は順序のないものであるため、要素の並び順、例えば、(1,2,3)も(3,2,1)も区別されない。本実施形態の集合も集合演算の結果としては順序を要求されないものの、それが生成される時点では順序を持つことが多い。本実施形態では、その場合でも演算が行えることを示すため、ここでは、要素の順序、(1,2,3)と(3,2,1)を区別して話を進める。このため、本実施形態では、データベース300から抽出した上記集合は、順序も含めた集合であるため、順序集合(Ordered Set)と呼ぶ。
例えば、図2に示すように、順序集合131Aは、データベース300から、項目「年齢(Age)」の値が10以上であるレコードを抽出し、そのレコード番号を格納したものである。本図に示すように、順序集合131Aは、それぞれ、3,2,5,8,4,10というレコード番号を、この順に保持する。
また、順序集合131Bは、データベース300から、項目「地域(Area)」の値がSouthまたはWestであるレコードを抽出し、そのレコード番号を格納したものである。順序集合131Bは、それぞれ、10,2,8,9というレコード番号を、この順に保持する。
また、順序集合131Cは、データベース300から、「保有ポイント(Point)」の値が10以上であるレコードを抽出し、そのレコード番号を格納したものである。順序集合131Cは、それぞれ、7,1,4,3,0,8というレコード番号を、この順に保持する。
なお、レコード番号以外に、データベース300の各レコードを一意に特定するIDなどを付与し、レコード番号の代わりに当該IDを、順序集合131に格納するよう構成してもよい。ただし、IDは、レコード番号と異なり、記憶域が必要となる。
本実施形態のCPU110は、予め記憶装置130に格納されたプログラムに従って、各順序集合131間の、論理演算を実行する演算部210(後述する図6参照)としての機能を実現する。演算部210は、順序集合131を、メモリ120にロードして上記論理演算を行う。なお、演算部210が論理演算を実行する際必要なデータ、論理演算実行中に生成されるデータ等は、メモリ120および/または記憶装置130に格納される。
本実施形態の、演算部210が実現する論理演算手法の説明に先立ち、従来の情報処理装置による論理演算手法(従来手法)を説明する。ここでは、図2に示す順序集合131A、131B、131Cを用いて、順序集合131Bおよび順序集合131Cの論理和(OR)と順序集合131Aとの論理積(AND)を演算する場合を例にあげて説明する。
以後、各順序集合131A、131B、131Cを、それぞれ、順序集合A、B、Cと末尾の英字のみで記載する。また、上記論理演算式内では、英字のみで記載する。例えば、上記論理演算は、A×(B+C)と記載する。他の集合についても、同様とする。
ここで、順序集合A、B、Cを構成する各レコードのサイズを1、本実施形態の情報処理装置100において、論理演算を行う際、順序集合A、B、Cのレコードを展開(ロード)可能なメモリ120のサイズを、6(各順序集合A、B、Cの各2レコード分)とする。
従来手法によれば、図3に示すように、レコード値がランダムに並ぶ各順序集合A、B、Cを、先頭から機械的に分割して2レコードずつの分割順序集合132を生成する。そして、各分割順序集合132間で、それぞれ、上記論理演算を実行し、その結果の和を生成し、重複値を排除する重複値排除演算を行い、演算結果として出力する。このとき、論理演算は、各分割順序集合132の全ての組み合わせについて行う必要がある。
例えば、図3に示すように、順序集合Aは、2レコードずつ、3つの分割順序集合132(Aa,Ab,Ac)に分割される。また、順序集合Bは、2つの分割順序集合132(Ba,Bb)に分割される。また、順序集合Cは、3つの分割順序集合132(Ca、Cb,Cc)に分割される。
従来手法では、図4に示すように、分割順序集合Aaについて、Aa×(Ba+Ca)と、Aa×(Ba+Cb)と、Aa×(Ba+Cc)と、Aa×(Bb+Ca)と、Aa×(Bb+Cb)と、Aa×(Bb+Cc)の6回演算を行う。分割順序集合Ab、Acについても、それぞれAaをAb、Acに変えて、同様に、それぞれ6回演算を行う。
従って、以下に示す18回の演算が必要となる。
1)Aa×(Ba+Ca)=(3,2)×(1,2,7,10)=(2)
2)Aa×(Ba+Cb)=(3,2)×(2,3,4,10)=(2,3)
3)Aa×(Ba+Cc)=(3,2)×(0,2,8,10)=(2)
4)Aa×(Bb+Ca)=(3,2)×(1,7,8,9)=()
5)Aa×(Bb+Cb)=(3,2)×(3,4,8,9)=(3)
6)Aa×(Bb+Cc)=(3,2)×(0,8,8,9)=()
7)Ab×(Ba+Ca)=(5,8)×(1,2,7,10)=()
8)Ab×(Ba+Cb)=(5,8)×(2,3,4,10)=(2)
9)Ab×(Ba+Cc)=(5,8)×(0,2,8,10)=(8)
10)Ab×(Bb+Ca)=(5,8)×(1,7,8,9)=(8)
11)Ab×(Bb+Cb)=(5,8)×(3,4,8,9)=(8)
12)Ab×(Bb+Cc)=(5,8)×(0,8,8,9)=(8)
13)Ac×(Ba+Ca)=(4,6)×(1,2,7,10)=()
14)Ac×(Ba+Cb)=(4,6)×(2,3,4,10)=(4)
15)Ac×(Ba+Cc)=(4,6)×(0,2,8,10)=()
16)Ac×(Bb+Ca)=(4,6)×(1,7,8,9)=()
17)Ac×(Bb+Cb)=(4,6)×(3,4,8,9)=(4)
18)Ac×(Bb+Cc)=(4,6)×(0,8,8,9)=()
1)Aa×(Ba+Ca)=(3,2)×(1,2,7,10)=(2)
2)Aa×(Ba+Cb)=(3,2)×(2,3,4,10)=(2,3)
3)Aa×(Ba+Cc)=(3,2)×(0,2,8,10)=(2)
4)Aa×(Bb+Ca)=(3,2)×(1,7,8,9)=()
5)Aa×(Bb+Cb)=(3,2)×(3,4,8,9)=(3)
6)Aa×(Bb+Cc)=(3,2)×(0,8,8,9)=()
7)Ab×(Ba+Ca)=(5,8)×(1,2,7,10)=()
8)Ab×(Ba+Cb)=(5,8)×(2,3,4,10)=(2)
9)Ab×(Ba+Cc)=(5,8)×(0,2,8,10)=(8)
10)Ab×(Bb+Ca)=(5,8)×(1,7,8,9)=(8)
11)Ab×(Bb+Cb)=(5,8)×(3,4,8,9)=(8)
12)Ab×(Bb+Cc)=(5,8)×(0,8,8,9)=(8)
13)Ac×(Ba+Ca)=(4,6)×(1,2,7,10)=()
14)Ac×(Ba+Cb)=(4,6)×(2,3,4,10)=(4)
15)Ac×(Ba+Cc)=(4,6)×(0,2,8,10)=()
16)Ac×(Bb+Ca)=(4,6)×(1,7,8,9)=()
17)Ac×(Bb+Cb)=(4,6)×(3,4,8,9)=(4)
18)Ac×(Bb+Cc)=(4,6)×(0,8,8,9)=()
また、従来演算では、同じ分割順序集合132が繰り返し演算に使用される。例えば、上記の例では、分割順序集合Aaは6回、分割順序集合Abは6回、分割順序集合Acは6回、分割順序集合Baは9回、分割順序集合Bbは9回、分割順序集合Caは6回、分割順序集合Cbは6回、分割順序集合Ccは6回、それぞれ、演算に使用される。
一般化すると、全順序集合数をK(Kは1以上の整数)、k番目の順序集合のレコード数をNk(Nkは1以上の整数)、1順序集合あたりの、k番目の順序集合のメモリ上に割り当て可能なレコード数をMk(Mkは1以上の整数)とすると、以下の式(1)で表されるP回、論理演算を行う必要がある。
このため、記憶装置130からメモリ120への読み出し、メモリ120から記憶装置130への書き込みといった、メモリへのアクセス回数が膨大なものとなる。
上記18回の演算において、読み出し回数は、それぞれの分割順序集合132のレコード数と演算回数の積である。従って、上記の例では、6×18で108回となる。また、書き込み回数は、演算結果のレコード数の和である。従って、上記の例では、順に、1,2,1,0,1,0,0,1,1,1,1,1,0,1,0,0,1,0回の合計で、12回である。このように、従来手法では、演算だけで、合計120回の読み出し、書き込み処理が行われる。
さらに、従来手法によれば、得られた結果の統合が、直和ではない。すなわち、18回の演算結果を合計し、集合(2,2,3,2,3,2,8,8,8,8,4,4)を得、この集合から重複する値を消去する重複除去処理を行い、演算結果として(2,3,4,8)を得る。
次に、本実施形態の演算部210による、処理を説明する。本実施形態の演算部210による処理の概要を図5に示す。本図に示すように、本実施形態では、まず、各順序集合131を構成する各レコードを、共通の区分に分類(類別)する。以後、各レコードを類別する区分を、バスケットと呼ぶ。そして、バスケット毎に、論理演算を実行し、最後に、全バスケットの論理演算結果の直和を計算する。
本実施形態では、従来同様、メモリ120に配置可能なサイズに各順序集合131のレコードを分割する。しかしながら、このとき、機械的にレコード数で分割するのではなく、レコード値に応じて、振り分けられるレコードが重複しないよう予め定められた1以上のバスケットに分類、類別する。
これを実現するため、本実施形態の演算部210は、図6に示すように、複数の順序集合131に属する全レコードを、各バスケット400に振り分け、分類する分類部211と、バスケット400毎に、論理演算を行う論理演算部212と、各バスケット400の論理演算結果の直和を計算する直和部213と、を備える。なお、バスケット400は、記憶装置130上に設けられる。
各バスケット400には、予め定めた条件(振分条件)を満たすレコードのみが振り分けられる。各バスケット400の振分条件は、上述のように、全順序集合131の全レコードを一意に振り分け(類別)可能なように設定される。すなわち、全順序集合131の全レコードを網羅するとともに、重複無く分類できるよう、設定される。
振分条件には、例えば、レコード値の範囲、レコード値を予め定めた2以上の整数で除算した際の余り(剰余)、等を用いることができる。
振分条件、バスケット400のサイズおよび数は、予め定められる。この中で、バスケット400のサイズおよび数は、全順序集合131のレコードの値、論理演算に用いるメモリ120のサイズに応じて設定される。例えば、バスケット400のサイズは、当該バスケット400に分類される全レコードの総サイズが、メモリ120のサイズを超えないよう決定される。
論理演算において、一般的に用いられるビットマップを使用すると和も積も追加の作業変数(作業領域)を必要としない。ビットマップは大きい集合でも小さい集合でも使用領域のサイズは同じであり、ただビット1が多いか少ないかだけである。従って、バスケット400のサイズは、使用可能なメモリ量をMとし、集合の数をNとすると、最大で、M/Nまでとることができる。
例えば、振分条件がレコード値の範囲の場合は、範囲の幅を、メモリ120のサイズに応じて決定する。振分条件が、剰余の場合は、メモリ120のサイズに応じて、除数を決定する。
なお、バスケット数は、多いと1回に行う演算の量が減少し、少ないと1回の演算の量が増加する。従って、結局、演算量はバスケット数とは関係ないが、バスケット400の数が少ないほうがI/O切り替え回数が減少するため、一般には有利である。なお、最少のバスケット400の数は、集合全体のサイズをTとすると、Tを、バスケット400のサイズM/Nで除して、N×T/M個となる。
本実施形態の分類部211による、分類処理を、図7(a)に示すように、図2に示す3つの順序集合A、B、Cを用い、具体例で説明する。ここで実行する論理演算は、従来手法説明時と同様に、A×(B+C)とする。
ここでは、図7(b)に示すように、各バスケット400の振分条件は、レコード値の範囲とする。すなわち、レコード値が、振分条件で指定されたレコード値の範囲に合致するレコードが、当該バスケット400に振分られる。
ここでは、一例として、3つのバスケット401、402、403を用意する。第一のバスケット401の振分条件は、レコードの値が範囲[0..2]にあるもの、すなわち、レコード値が(0,1,2)であるものとし、第二のバスケット402の振分条件は、同[3..6]、すなわち、同(3,4,5,6)とし、第三のバスケット403の振分条件は、同[7..10]、すなわち、同(7,8,9,10)とする。
図7(b)に示すように、本実施形態の分類部211は、順序集合A、B、C毎に、レコード番号順に、各レコードを、各バスケット401、402、403に分類する。順序集合Aについては、第一のバスケット401[0..2]には、レコード番号1の、レコード値が2のレコード(以後、単にレコード2と呼ぶ。)が、第二のバスケット402[3..6]には、レコード番号0のレコード3、レコード番号2のレコード5およびレコード番号5のレコード4が、第三のバスケット403[7..10]には、レコード番号3のレコード8およびレコード番号5のレコード10が、それぞれ分類される。
順序集合Bおよび順序集合Cも同様に、図7(b)に示すように、それぞれのバスケット401、402、403に、各レコードが分類される。
分類後の、各順序集合131の部分順序集合133を図7(c)に示す。本図に示すように、順序集合Aは、第一のバスケット401に分類される部分順序集合133(A401)と、第二のバスケット402に分類される部分順序集合133(A402)と、第三のバスケット403に分類される部分順序集合133(A403)とに分割(区分)される。同様に、順序集合Bは、部分順序集合133(B401)、部分順序集合133(B403)に、順序集合Cは、部分順序集合133(C401)、部分順序集合133(C402)、部分順序集合133(C403)に分割される。
本実施形態の論理演算部212は、バスケット毎に論理演算を行う。すなわち、図7(b)の例では、第一のバスケット401、第二のバスケット402、第三のバスケット404内のレコード間で論理演算を行う。ここでは、以下に示す、3回の演算を行う。
1)A401×(B401+C401)=(2)×(2,1,0)=(2)
2)A402×(B402+C402)=(3,5,4)×(3,4)=(3,4)
3)A403×(B403+C403)=(8,10)×(7,8,9,10)
=(8,10)
1)A401×(B401+C401)=(2)×(2,1,0)=(2)
2)A402×(B402+C402)=(3,5,4)×(3,4)=(3,4)
3)A403×(B403+C403)=(8,10)×(7,8,9,10)
=(8,10)
本実施形態では、上述のように、各バスケット400(401、402、403)のカテゴリは、重複していない。このため、1のバスケット400内の論理演算の結果は、他のバスケット400のそれと常に分離独立である。このため、本実施形態の直和部21は、各バスケット400(401、402、403)の論理演算結果の直和を計算し、演算結果を得る。上記の例では、((2)+(3,4)+(8,10))を計算し、演算結果(2,3,4,8,10)を得る。
なお、本実施形態では、バスケット400に振り分ける際、各レコードを記憶装置130からメモリ120へ読み出し、いずれのバスケット400に振り分けるか判別し、記憶装置130のバスケット領域に書き込む。このため、レコード数回、記憶領域130からメモリ120への読み出し、および、メモリ120から記憶装置130への書き込みが必要となる。上記の例では、それぞれ16回、計32回必要となる。
しかしながら、上記演算例で、各部分順序集合が、論理演算に使用される回数は、全順序集合のサイズに「比例的」なのは明らかで、式(1)に示される従来の技術の多項式オーダーとは根本的に異なり、それぞれ1回である。また、論理演算の総回数は、上述のように、3回である。この3回の演算において、読出し回数は、それぞれの部分順序集合のレコード数と論理演算回数の積であり、16回、書き込み回数は、演算結果のレコード数の和であり、順に、1、2、2回の合計で、5回である。従って、論理演算中の読み出し、書き込み回数は、21回である。
従って、本実施形態の手法によれば、図2に示す順序集合A、B,C間で、論理演算A×(B+C)を実行する場合、振分時の32回と論理演算時の21回の合計で、53回の読み出し、書き込み処理で済む。従来手法が、同条件で120回であったことと比較すると飛躍的にメモリへのアクセス回数が低減する。
さらに、本実施形態によれば、各部分順序集合133間で論理演算を実行後、結果集合の統合時に、大きなメモリを消費し時間もかかる重複値排除演算を行う必要が無く、直和を計算するだけで結果を作成できるため、効率的である。
図8に、本実施形態の演算部210による、順序集合131間の論理演算処理の流れを説明する。まず、分類部211が、各順序集合131内のレコードを、先頭から順に、それぞれスキャンして分類し、各バスケット400に振り分ける(ステップS1101)。次に、演算部212が、バスケット400単位で、レコードをメモリ120にロードし、論理演算を行う(ステップS1102)。論理演算結果は、記憶装置130などに格納する。最後に、直和部213が、論理演算結果をメモリ120にロードし、その直和を計算する(ステップS1103)。
以上説明したように、本実施形態の情報処理装置100は、複数の順序集合131間の論理演算を行う情報処理装置100であって、前記順序集合131を構成する各レコードを、前記順序集合131毎に、それぞれ予め定めた区分(バスケット)400に分類する分類部211と、各順序集合131の、同一の前記区分(バスケット)400に属するレコード間で、前記論理演算を行い、演算結果を得る論理演算部212と、各前記区分(バスケット)400の前記演算結果の直和を計算する直和部213と、を備え、前記区分(バスケット)400は、前記複数の順序集合131に属する全レコードを一意に類別可能なものであることを特徴とする。
このように、本実施形態によれば、予め、各順序集合131のレコードを、互いに重複しない区分に分類しておき、区分間で論理演算を行う。このとき、区分のサイズは、メモリ120に展開可能なサイズとする。
このため、本実施形態によれば、バスケット400への書き出し処理、論理演算時のバスケット400からの読み込み処理は追加となるが、各演算処理は、メモリ120上に1回ロードするだけで実行できる。演算回数も、バスケット400の数で済む。このため、従来のように、分割単位毎に、全ての組み合わせで演算を行う必要がない。このように、本実施形態によれば、演算回数を減らすことができる。さらに、演算回数が減ることにより、演算毎の、メモリ120へのアクセス回数も低減する。また、最終結果を得る際の重複除去演算も不要となる。
従って、本実施形態によれば、大規模データから作成された、メモリ120上に展開できないほど大きな順序集合131に対する論理演算を、高速に、効率的に実行できる。
なお、上記実施形態では、各順序集合131を、全てバスケット400に類別しているが、これに限られない。例えば、所定サイズ以下(所定のレコード数以下)の順序集合131は、類別せず、そのまま演算するよう構成してもよい。
上記の例では、例えば、順序集合AおよびCのみ、類別し、順序集合Bは類別せずに、論理演算を行う。この場合、第一のバスケット401において、A×(B+C)として、2×((10,2,8,9)+(1,0))を計算し、演算結果として(2)を得る。また、第二のバスケット402では、(3,5,4)×((10,2,8,9)+(4,3))を計算し、演算結果として、(3,4)を得る。第三のバスケット403では、(8,10)×((10,2,8,9)+(7,8))を計算し、演算結果として、(8,10)を得る。
なお、上記実施形態において、各論理演算は、図9に示すように、メモリ120上でビットマップに展開して演算するのが効果的である。すなわち、本図に示すように、論理演算対象の部分順序集合133を、それぞれ、ビットマップ134に展開し、本図に示すように、演算を行う。
また、上記実施形態では、論理積(AND)と論理和(OR)のみを用いる場合を例にあげて説明したが、論理演算は、これに限られない。例えば、否定(NOT)も用いてもよい。NOT演算は、ビットマップを反転することで容易に実現できる。例えば、順序集合A=(4,2,0,3)なら、バスケット400の範囲からこれらを取り除き、〜A=(1,5,6,7)を得る。なお、「〜」は、否定(NOT)を表す。これを用いて、各種の集合演算を処理できることは明らかである。
また、各バスケット400は、ネットワーク171などで接続される、異なる情報処理装置上に構築されてもよい。この場合、バスケット400が構築される各情報処理装置は、論理演算部212を備え、当該バスケット400内のデータの論理演算を行う。
また、上記実施形態では、実際にバスケット400と呼ばれる記憶領域を設け、各レコードを振り分けているが、これに限られない。分類部211が、論理演算時に、各順序集合131を走査し、論理演算対象のバスケット400に振り分けられるべきレコードを抽出するよう構成してもよい。この場合、分類部211は、バスケット400の数だけ、順序集合131を走査する。
100:情報処理装置、110:CPU、120:メモリ、130:記憶装置、131:順序集合、132:分割順序集合、133:部分順序集合、134:ビットマップ、140:入力装置、150:出力装置、160:外部記憶装置、170:ネットワークインタフェース、171:ネットワーク、180:情報処理装置、190:外部記憶装置、210:演算部、211:分類部、212:演算部、212:論理演算部、213:直和部、300:データベース、400:バスケット、401:第一のバスケット、402:第二のバスケット、403:第三のバスケット、A401:部分順序集合、A402:部分順序集合、A403:部分順序集合、B401:部分順序集合、B402:部分順序集合、B403:部分順序集合、C401:部分順序集合、C402:部分順序集合、C403:部分順序集合
Claims (7)
- 複数の集合間の論理演算方法であって、
前記集合を構成する各レコードを、前記集合毎に、それぞれ予め定めた区分に分類し、
同一の前記区分に属するレコード間で、前記集合間の論理演算を行い、演算結果を得、
前記区分毎の前記演算結果の直和を計算し、
前記区分は、前記複数の集合に属する全レコードを一意に類別可能なものであること
を特徴とする集合間の論理演算方法。 - 請求項1記載の論理演算方法であって、
前記区分のサイズは、前記論理演算を行う際、展開するメモリのサイズに応じて決定されること
を特徴とする論理演算方法。 - 請求項2記載の論理演算方法であって、
前記区分のサイズは、当該区分に分類される全レコードの総サイズが、前記メモリのサイズを超えないよう決定されること
を特徴とする論理演算方法。 - 請求項1から3いずれか1項記載の論理演算方法であって、
前記区分は、前記レコードの値の範囲で定められること
を特徴とする論理演算方法。 - 請求項1から3いずれか1項記載の論理演算方法であって、
前記区分は、予め定めた2以上の整数の剰余で定められること
を特徴とする論理演算方法。 - 複数の集合間の論理演算を行う情報処理装置であって、
前記集合を構成する各レコードを、前記集合毎に、それぞれ予め定めた区分に分類する分類部と、
同一の前記区分に属するレコード間で、前記集合間の論理演算を行い、演算結果を得る論理演算部と、
前記区分毎の前記演算結果の直和を計算する直和部と、を備え、
前記区分は、前記複数の集合に属する全レコードを一意に類別可能なものであること
を特徴とする集合間の情報処理装置。 - コンピュータを、
複数の集合に属する全レコードを一意に類別可能な区分に、当該レコードを前記集合毎に分類する分類手段、
同一の前記区分に属するレコード間で、予め定めた前記集合間の論理演算を行い、演算結果を得る論理演算手段、
前記区分毎の前記演算結果の直和を計算する直和手段、として機能させるためのプログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013083879 | 2013-04-12 | ||
JP2013083879 | 2013-04-12 | ||
PCT/JP2014/060386 WO2014168199A1 (ja) | 2013-04-12 | 2014-04-10 | 論理演算方法および情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2014168199A1 true JPWO2014168199A1 (ja) | 2017-02-16 |
Family
ID=51689603
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015511295A Pending JPWO2014168199A1 (ja) | 2013-04-12 | 2014-04-10 | 論理演算方法および情報処理装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20160070776A1 (ja) |
JP (1) | JPWO2014168199A1 (ja) |
WO (1) | WO2014168199A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108256054A (zh) * | 2018-01-15 | 2018-07-06 | 腾讯科技(深圳)有限公司 | 确定目标号码集合的方法和装置 |
US20220229853A1 (en) * | 2019-05-21 | 2022-07-21 | Nippon Telegraph And Telephone Corporation | Information processing apparatus, information processing method and program |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0462668A (ja) * | 1990-06-29 | 1992-02-27 | Casio Comput Co Ltd | レコード検索方法 |
JP2003036269A (ja) * | 2001-07-23 | 2003-02-07 | Sony Corp | 情報処理装置および情報処理方法並びにこの情報処理のプログラムが記録された記録媒体 |
JP2012108635A (ja) * | 2010-11-16 | 2012-06-07 | Nec Corp | 分散メモリデータベースシステム、フロントデータベースサーバ、データ処理方法およびプログラム |
WO2012164738A1 (ja) * | 2011-06-03 | 2012-12-06 | 株式会社日立製作所 | データベース管理システム、装置及び方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9087055B2 (en) * | 2013-01-28 | 2015-07-21 | International Business Machines Corporation | Segmenting documents within a full text index |
-
2014
- 2014-04-10 JP JP2015511295A patent/JPWO2014168199A1/ja active Pending
- 2014-04-10 US US14/784,202 patent/US20160070776A1/en not_active Abandoned
- 2014-04-10 WO PCT/JP2014/060386 patent/WO2014168199A1/ja active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0462668A (ja) * | 1990-06-29 | 1992-02-27 | Casio Comput Co Ltd | レコード検索方法 |
JP2003036269A (ja) * | 2001-07-23 | 2003-02-07 | Sony Corp | 情報処理装置および情報処理方法並びにこの情報処理のプログラムが記録された記録媒体 |
JP2012108635A (ja) * | 2010-11-16 | 2012-06-07 | Nec Corp | 分散メモリデータベースシステム、フロントデータベースサーバ、データ処理方法およびプログラム |
WO2012164738A1 (ja) * | 2011-06-03 | 2012-12-06 | 株式会社日立製作所 | データベース管理システム、装置及び方法 |
Also Published As
Publication number | Publication date |
---|---|
US20160070776A1 (en) | 2016-03-10 |
WO2014168199A1 (ja) | 2014-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200356901A1 (en) | Target variable distribution-based acceptance of machine learning test data sets | |
JP6605573B2 (ja) | 並列ディシジョン・ツリー・プロセッサー・アーキテクチャ | |
JP4848317B2 (ja) | データベースのインデックス作成システム、方法及びプログラム | |
Baldán et al. | Distributed fastshapelet transform: a big data time series classification algorithm | |
US10157202B2 (en) | Multi stage aggregation using digest order after a first stage of aggregation | |
JP6751064B2 (ja) | データ検索システム、データ検索方法、及びプログラム | |
US11288266B2 (en) | Candidate projection enumeration based query response generation | |
CN108334951A (zh) | 针对决策树的节点的数据的预统计 | |
US20240152498A1 (en) | Data storage using vectors of vectors | |
US20070239663A1 (en) | Parallel processing of count distinct values | |
CN105830160A (zh) | 用于将经屏蔽数据写入到缓冲器的设备及方法 | |
WO2014168199A1 (ja) | 論理演算方法および情報処理装置 | |
US9639073B2 (en) | Information processing apparatus for discriminating between combined results of plurality of elements, program product and method for same | |
US20130218916A1 (en) | File management apparatus, file management method, and file management system | |
Yin et al. | Content‐Based Image Retrial Based on Hadoop | |
US9507794B2 (en) | Method and apparatus for distributed processing of file | |
US9286349B2 (en) | Dynamic search system | |
JP6549786B2 (ja) | データクレンジングシステム、方法、及び、プログラム | |
WO2016170600A1 (ja) | データ分析支援システム及びデータ分析支援方法 | |
JP6577922B2 (ja) | 検索装置、方法、及びプログラム | |
US11734244B2 (en) | Search method and search device | |
US8819086B2 (en) | Naming methodologies for a hierarchical system | |
JP7207423B2 (ja) | 作業集合選択装置、作業集合選択方法および作業集合選択プログラム | |
US20200167312A1 (en) | Hash suppression | |
Hong et al. | Evaluation of pattern matching workloads in graph analysis systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170313 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180515 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20181106 |