JP2006092409A - 複合データベース検索システムおよび複合データベース検索方法ならびにそのためのプログラム - Google Patents
複合データベース検索システムおよび複合データベース検索方法ならびにそのためのプログラム Download PDFInfo
- Publication number
- JP2006092409A JP2006092409A JP2004279120A JP2004279120A JP2006092409A JP 2006092409 A JP2006092409 A JP 2006092409A JP 2004279120 A JP2004279120 A JP 2004279120A JP 2004279120 A JP2004279120 A JP 2004279120A JP 2006092409 A JP2006092409 A JP 2006092409A
- Authority
- JP
- Japan
- Prior art keywords
- cache file
- bit
- search
- data
- customer
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】 検索結果格納領域が少なく効率的に検索可能な複合データベース検索技術の提供。
【解決手段】 複数のデータベースの列情報を格納したキャッシュファイル4bを作成し(キャッシュファイル作成部3a)、キャッシュファイルのデータを顧客識別子を用いてマージ・ソートした仮想識別子キャッシュファイル4dを作成し(仮想識別子キャッシュファイル作成部3b)、検索条件でキャッシュファイルを検索し、検索条件に一致したレコード位置のビットを“1”で表し、一致しないレコード位置のビットを“0”で表したビット配列テーブル5dを作成し(顧客情報抽出部3c)、ビット配列テーブルからビットが“1”の位置を取得し、仮想識別子キャッシュファイルから前記ビットが“1”の位置に対応するデータを取得する(顧客識別子取得部3d)。
【選択図】 図1
【解決手段】 複数のデータベースの列情報を格納したキャッシュファイル4bを作成し(キャッシュファイル作成部3a)、キャッシュファイルのデータを顧客識別子を用いてマージ・ソートした仮想識別子キャッシュファイル4dを作成し(仮想識別子キャッシュファイル作成部3b)、検索条件でキャッシュファイルを検索し、検索条件に一致したレコード位置のビットを“1”で表し、一致しないレコード位置のビットを“0”で表したビット配列テーブル5dを作成し(顧客情報抽出部3c)、ビット配列テーブルからビットが“1”の位置を取得し、仮想識別子キャッシュファイルから前記ビットが“1”の位置に対応するデータを取得する(顧客識別子取得部3d)。
【選択図】 図1
Description
本発明は、ネットワーク上に分散している複数のデータベースに対して、指定された条件式に合致するデータ(例えば、顧客情報など)を検索抽出する複合データベース検索技術に係り、特に対象レコード数が大量で、抽出されるデータが大量であってもメモリの消費を節約しつつ検索時間を短くすることが可能な複合データベース検索システムおよび方法ならびにそのためのプログラムに関する。
従来、複数の既存のデータベースに格納されている顧客情報を利用して、顧客管理を行うことはよく行われている。既存の複数のデータベースは、通常、それぞれシステムの目的が異なっているためその目的に合わせて個別に開発されて、ネットワーク上に分散されて設けられる。データベースを用いた顧客管理の機能のうち、最も重要なものは、与えられた条件式を満たす顧客情報を検索する機能(顧客情報抽出機能)である。
それぞれに顧客情報が記録されている複数の分散したデータベースに対して、あたかも1つのデータベースに対するように1つの条件式で検索する、所謂、複合データファイルの検索方式に関する従来技術としては、例えば、特開平11−212994号公報「複合データファイルの検索方式とその方法および検索プログラムを記録した記録媒体」(特許文献1)に記載された検索方式がある。
特許文献1に係る検索方式は、入力された検索条件を複合ファイルの構成に合わせて分割する検索分割手段と、分割された検索条件の各部分をもとに複合ファイルを各々検索し、各々の複合ファイルにおける検索されたデータを結合して統合ファイルを生成し、該統合ファイルを用いて検索結果を出力する検索手段を備えたものである。このように、特許文献1では、分割した検索条件で各々のデータを抽出した上でデータ結合を行うことで一時ファイルの容量を少なくし、かつ高速で効率的な検索を行うようにしている。
また、検索で抽出されるデータが大量であっても、検索結果を格納する検索結果格納領域が膨大にならずに記憶領域を効率よく利用できる検索処理方式として、特開平05−324731号公報「データの検索処理方式」(特許文献2)に記載された技術がある。
特許文献2に記載された方式は、検索処理を行った結果、検索条件に一致したレコード全てを検索対象データとは別の記憶領域に書き出すのではなく、検索結果の1レコードを不一致か一致かの識別記号(つまり0又は1の1ビット情報)で格納領域に格納するようにしている。
また、特開2000−222272号公報「データベース検索システム」(特許文献3)には、ネットワーク環境において、高速キャッシュを実現するデータベース検索システムについて記載されている。
特許文献3に記載されたデータベース検索システムでは、検索対象のデータベースから検索されたデータを格納するデータキャッシュと、データベースに保有されているデータとデータキャッシュに格納されたデータとの相関をとるオブジェクトリファレンスを設けている。オブジェクトリファレンスは、データベースに格納されているデータのインデックスと、データを格納しているデータキャッシュのアドレスと、WEBサーバのネットワーク上のIPアドレスとにより、データの相関をとることが説明されている。
従来、データベースに格納されているレコード数が大量であって、かつ条件検索による抽出レコード件数も大量になると、その検索結果データを一括して取り出すと記憶領域(メモリ)不足に陥るという問題があった。
この問題を解決する従来技術として、例えば、特許文献2に示す検索結果情報をビット化する方法、または、特許文献3に示す検索データをキャッシュとして格納する方法などが知られていた。
しかし、これら特許文献2および特許文献3に記載された技術は、何れも検索対象のデータベースが1つのデータベースを対象とするものであり、検索対象のデータベースが複数となる場合には、特許文献2および3に記載の技術をそのまま適用することはできない。
例えば、顧客の属性情報を記録した顧客属性データベースと、顧客の注文情報を記録した注文情報データベースとが、ネットワーク上にそれぞれ別々のデータベースとして存在し、検索サーバから、これら2つのデータベースを検索対象データベースとして、「年齢が30歳以上の男性で、かつ2000円以上の商品を購入(注文)した顧客」という検索条件で、その条件に一致する顧客識別子を抽出するという場合、特許文献1に記載された複合データファイル検索方式を適用することは可能である。
ところが、特許文献1記載の方式では、分割検索された検索結果、および各々の検索結果からデータ結合を行って最終検索結果を求めるまで、検索結果データそのものを一時ファイルに記憶する方式となっているため、検索結果記憶領域の使用量が大きくなる。しかし、検索結果データをデータそのもので記憶せずに、特許文献2に示されたビット情報で保持すれば、より一層、検索結果記憶領域の使用量を少なくすることができると考えられる。
ところが、特許文献2に記載の検索処理方式は、検索結果を条件が一致したレコード位置とビット位置とを対応させているため、データベース1(顧客属性データベース)の検索結果ビット情報とデータベース2(注文情報データベース)の検索結果ビット情報とを、そのままデータ結合することはできないという問題がある。
また、同様に、特許文献3に示される検索結果データをキャッシュとして格納する方式を、複合検索処理としてのキャッシュ方法を新たに構築すれば、より効率的な複合検索が可能となる。
そこで、本発明は、上記課題を解決し、検索結果格納領域がより少ない領域で可能とし、かつ効率的に検索可能な複合データベース検索システムを提供することを目的としている。
本発明は、上記目的を達成するために、ネットワーク上に分散している複数のデータベースを連携して検索条件に合致するデータを検索する場合、複数のデータベースの列情報を格納したキャッシュファイル(4b)を作成し(キャッシュファイル作成部3a)、キャッシュファイルのデータをマージ・ソートした仮想識別子キャッシュファイル(4d)を作成し(仮想識別子キャッシュファイル作成部3b)、指定された検索条件にしたがってキャッシュファイルを検索するとともに、レコード位置を1ビットに対応させ、検索した結果、検索条件に一致したレコード位置のビットを“1”で表し、一致しないレコード位置のビットを“0”で表したビット配列テーブルを作成し(顧客情報抽出部3c)、ビット配列テーブル(5d)からビットが“1”の位置を取得し、仮想識別子キャッシュファイル(4d)から前記ビットが“1”の位置に対応するデータを取得する(顧客識別子取得部3d)ようにしたことを特徴としている。
本発明では、後述する実施例に記載のように、検索途中結果および検索結果をビット配列でメモリ内に管理する。キャッシュファイルに格納されているデータを配列形式と見て、検索に合致したレコードは、インデックス位置(レコードの位置)に対応するビットをONにする。
また検索対象の顧客識別子は各々のデータベースに存在しているが、配列としての格納位置が異なっている。このため複数のデータベースに関し検索結果を求めた後、集合演算を行う場合にビット配列を使うのは都合が悪い。したがって各々のデータベースにある顧客識別子をすべて保持する顧客識別子データベース表が存在するものと仮定して(1つのデータベース表としては、実在しない)、そのキャッシュファイル(仮想顧客識別子キャッシュファイル)のみを検索サーバの外部記憶装置に設ける(実在させる)ようにする。
そして顧客情報抽出時、各々のデータベースから検索結果を求めるときに、上記仮想顧客識別子キャッシュファイルのインデックス位置のビット配列を求めて、それらの集合演算を行うようにする。
検索結果は、上記の仮想顧客識別子キャッシュファイルに関するビット配列で保持する。
検索結果からデータを取り出す場合は、ビット配列のビットがONになっている位置に相当する顧客識別子を、仮想顧客識別子キャッシュファイルを見て取り出すようにする。
上位モジュールは顧客データを取り出す場合、一括して取り出すことは避け、必要な件数だけを分割して取り出すことにより、メモリ不足になることを回避することが可能となる。
本発明によれば、分割検索処理途中の分割検索結果情報、および最終検索結果情報をビット配列で管理するため、消費メモリを節約し、効率的な検索が可能となる。
以下、本発明の一実施形態に係る顧客情報抽出システムを、図面を参照して詳細に説明する。
図1は本実施形態による顧客情報抽出システムの全体構成を示す図、図2は本実施形態におけるキャッシュファイル作成部の動作フローチャート図、図3は仮想顧客識別子キャッシュファイル作成部の動作フローチャート図、図4は本実施形態における顧客情報抽出部の動作フローチャート図、図5は本実施形態における顧客識別子取得部の動作フローチャート図である。
本実施形態による大量データ顧客情報抽出システムは、図1に示す如く、CRT(Cathode Ray Tube)等からなるディスプレイ(表示装置)1と、ポインティングデバイス(入力装置)としてのキーボードマウス2と、CPU(Central Processing Unit)を具備して蓄積プログラム方式による処理を行う制御部3と、HDD(Hard Disk Driver)等からなる外部記憶装置4と、メインメモリからなるメモリ5とを有する。
本実施形態による大量データ顧客情報抽出システムは、さらに、コンピュータ・ネットワークを介して、顧客の属性情報が格納された顧客属性DB6bと、顧客の注文履歴情報が格納された注文情報DB6cと、それらのDBの格納位置やアクセス方法を記載したリポジトリDB6aを有する。
図13はリポジトリDB6aの一例を示す図であり、この例では、情報ソース名,データベース名,ユーザID,パスワード,DSN,DBMS,OS,ドライブタイプなどのデータを有している。
図14は顧客属性DB6bの一例を示す図であり、この例では、顧客識別子(CustID),氏名,住所,年齢,性別などのデータを有している。
図15は注文情報DB6cの一例を示す図であり、この例では、注文識別子(OrderID),顧客識別子(CustID),注文日,商品ID,商品名,価格,個数のデータを有している。
制御部3は、キャッシュファイル作成部3aと、仮想顧客識別子キャッシュファイル作成部3bと、顧客情報抽出部3cと、顧客識別子取得部3dを有する。これら各部は、対応するプログラムを、CPUで実行することにより所望の機能を実現する。これらのプログラムは、CD−ROM,DVD,FDなどの記録媒体あるいはインターネットなどのネットワークを介して外部記憶装置4に一旦保存され、制御部3に取り込まれて実行される。
外部記憶装置4は、パラメータファイル4a(詳細は図6を用いて後述する)と、キャッシュファイル4b(詳細は図7を用いて後述する)と、リンクインデックスファイル4cと、仮想顧客識別子キャッシュファイル4d(詳細は図8を用いて後述する)とを保持する。
パラメータファイル4aは、リポジトリDB6a(図13参照)にアクセスするために必要なパラメータと、キャッシュするデータベース列の情報を持つ。パラメータファイル4aは事前に作成しておき、キャッシュファイル作成時と顧客情報抽出時には、参照のみ行う。
キャッシュファイル4bは、顧客属性DB6b、注文情報DB6cに格納されているデータを保持する。キャッシュファイル4bは、キャッシュファイル作成時に作成され、顧客情報抽出時に参照される。
リンクインデックスファイル4cは、リレーショナルデータベースの外部参照に基づき、ある表のある位置のデータが別の表のどの位置に対応するかという対応付けの情報をキャッシュファイルにしたファイルである。このファイルは、あるキャッシュでの検索結果を、別の表の検索結果に変換するときに使用する。
リンクインデックスファイル4cは、キャッシュファイル作成時に作成され、顧客情報抽出時に参照される。仮想顧客識別子キャッシュファイル4dは、顧客属性DB6b、および注文情報DB6cに記録されている全ての顧客識別子(CustID)の値に対応するキャッシュファイルである。顧客属性DB6b、注文情報DB6cにおける顧客識別子(CustID)の値は、必ずこの仮想顧客識別子キャッシュファイル内にある。
仮想顧客識別子キャッシュファイル4dも、顧客属性DB6b(図14参照)、注文情報DB6c(図15参照)における顧客識別子(CustID)からみれば、リレーショナルデータベースの関連付けができるので、顧客属性DB6b、注文情報DB6cにおける顧客識別子(CustID)についてリンクインデックスファイルを作成することができる。仮想顧客識別子キャッシュファイル4dは、キャッシュファイル作成時に作成し、顧客情報抽出時に参照する。
メモリ5は、キャッシュ情報管理テーブル5aと、条件式内部形式5bと実行スタック5cと、ビット配列テーブル5dと、その他のシステムが実行する各種処理に必要なデータを格納するためのデータ格納領域(図示せず)を有する。
キャッシュ情報管理テーブル5aは、現在キャッシュされているデータベースのアクセス情報とキャッシュする列とキャッシュファイル名の情報が格納されている。詳細は図9を用いて後述する。本テーブルは、キャッシュファイル作成時と顧客情報抽出時ともに初期処理で作成され、以降、このテーブルを参照して処理を進めていく。
条件式内部形式5bは、顧客情報抽出時にユーザが指定した検索条件式の文字列を解釈した結果を格納しておくテーブルである。詳細は図11を用いて後述する。
実行スタック5cは、条件式内部形式5bを1行ずつ実行した検索結果のビット配列をスタック形式で一時的に格納しておくテーブルである。詳細は図12を用いて後述する。
ビット配列テーブル5dは、検索結果の情報を保持しておくテーブルである。ビット配列の他にどの表に関する検索結果かを表す対象表の情報を保持する。詳細は図12を用いて後述する。
本システムでは、ユーザは、まずキャッシュしたいデータベース列、つまり検索条件の対象となるデータ項目の列をパラメータファイルに記述し、キーボードマウス2からキャッシュファイル作成の要求を出す。
キャッシュファイルが作成された後で、検索条件式文字列を指定して顧客情報抽出要求を行う。顧客情報抽出が終了したら、検索された顧客識別子をメモリ不足にならない程度に何回かに分けて取得する。
図6は、図1のパラメータファイル4aの内容の一例を示す図である。
図6において、1行目はキャッシュファイルを作成する先のディレクトリパスを示す。本例では、本システムを実行するパソコンの「dドライブのCacheDirディレクトリ」の下にキャッシュファイルを作成することを示している。
図6において、1行目はキャッシュファイルを作成する先のディレクトリパスを示す。本例では、本システムを実行するパソコンの「dドライブのCacheDirディレクトリ」の下にキャッシュファイルを作成することを示している。
2行目以降は、各々、キャッシュするデータベース表と、データベースの情報ソース名、キャッシュする列名、キャッシュするレコードを制限するための条件式を指定する。ここで、情報ソース名は、データベースの格納先のサーバやDBへのアクセス方法を定義した名前を表す。
図6の3行目を例にとって具体的に説明すると、「注文テーブル」がデータベース表名、「注文マスタ」が情報ソース名、「注文ID(OrderID)/顧客ID(CustID)/注文日」が列名、「注文日 <= '2003/01/01' and 注文日 >= '2003/12/31'」がキャッシュの際に必要なレコードをキャッシュする条件式を表す。
図7は、キャッシュファイルのデータ構造の一例を示す図である。
キャッシュファイルは、パラメータファイルで指定された1つのデータベース表の1つの列に関するデータが格納されたファイルであり、その列が固定長ならインデックスファイルとデータファイルの2ファイル、可変長ならインデックスファイルとデータファイルとオフセットファイルの3ファイルが作成される。
キャッシュファイルは、パラメータファイルで指定された1つのデータベース表の1つの列に関するデータが格納されたファイルであり、その列が固定長ならインデックスファイルとデータファイルの2ファイル、可変長ならインデックスファイルとデータファイルとオフセットファイルの3ファイルが作成される。
ここで、固定長とは、データの長さがデータの内容に関係なく一定のデータを表す。例えば整数型のデータは4バイトで固定なので固定長である。可変長とはデータの長さがデータ毎に異なるデータを表す。例えば文字列型のデータは可変長にあたる。
データファイルとインデックスファイルとオフセットファイルの各々について説明する。
データファイルには、データが昇順に並べかえられて格納されている。並べかえはデータ抽出の際バイナリサーチが行えるようにするためである。
インデックスファイルは、キャッシュ上のデータが元々DB表の何番目のレコードにあるかを格納したファイルである。インデックスファイルの内容は、何番目にあるかの位置の情報が格納され、データベース表のレコード件数分存在し、1件あたり4バイト使用する。また先頭は0番目で始まるものとして説明する。
オフセットファイルは、データファイルの指定位置が先頭から何バイト目にあるかを表すファイルである。これは可変長データがデータファイルに格納されている場合、格納位置を突き止めるのに使用する。オフセットファイルの内容は、指定データの先頭オフセットが格納され、データベース表のレコード件数分+1件存在し、1件あたり4バイト使用する。またデータの長さは直後のオフセットから自分のオフセットを差し引いた値で求める。
図7を例にして具体的に説明すると、キャッシュ上で3番目のレコードが検索された場合、その値とDB表でのレコード位置を求めるのは次のようにする。オフセットファイルの3番目と4番目を見ると、「12」と「18」が格納されているので、オフセットは12バイト、長さは18−12=6バイトになる。
そこで、データファイルの12バイト目から6バイトを参照すると「北海道」を取り出すことができる。またインデックスファイルの3番目を参照すると「0」が格納されているのでDB表の先頭レコードであることが分かる。
なお、固定長データの場合は、データ長がわかっているので、そこからデータファイルの格納位置を突き止めることができるため、オフセットファイルは不要である。
図8は、仮想顧客識別子キャッシュファイルを説明するための図である。
複数のデータベースに対して連携して検索処理をする場合、各々のデータベース毎に顧客識別子が記録管理されている。したがって、各々のデータベースからそれぞれの顧客識別子をキャッシュするだけでは顧客識別子の一元管理ができないので、各々のデータベースにある顧客識別子をすべて保持する顧客識別子データベース表が存在するものと仮定して、その仮想顧客識別子データベース表のキャッシュファイルを作成する。
複数のデータベースに対して連携して検索処理をする場合、各々のデータベース毎に顧客識別子が記録管理されている。したがって、各々のデータベースからそれぞれの顧客識別子をキャッシュするだけでは顧客識別子の一元管理ができないので、各々のデータベースにある顧客識別子をすべて保持する顧客識別子データベース表が存在するものと仮定して、その仮想顧客識別子データベース表のキャッシュファイルを作成する。
この仮想顧客識別子データベース表は、顧客識別子列からのみ構成され、このキャッシュファイルを仮想識別子キャッシュファイルと呼ぶことにする。
各々のデータベースシステムにおける顧客識別子を含む表は、前記の仮想顧客識別子データベース表と仮想的な参照関係があると考え、リンクインデックスファイルを作成する。仮想顧客識別子キャッシュファイルは、データファイルとオフセットファイルを作成する。仮想顧客識別子キャッシュファイルのデータファイルの並びはソート済みであるとするので、インデックスファイルは不要である。
図8において、データベースシステム2の3番目の顧客識別子「ID7」が検索でヒットした場合、それが仮想顧客識別子データベース表の何番目に当たるかを説明する。データベースシステム2のリンク先インデックスファイルの6番目と7番目に「4」と「4」が格納されている。したがって、仮想顧客識別子データベース表のデータファイルの4番目から4番目を参照すると、「ID7」が格納されていることが分かる。したがって仮想顧客識別子データベース表の4番目に当たることが分かる。
図9は、キャッシュ情報管理テーブルの階層構造を示す図である。
図9において、全体管理には、キャッシュ全体に関する情報を持っている。パラメータファイルパス、キャッシュファイルパス、情報ソースの一覧、仮想情報ソース、仮想データベース表、仮想顧客識別子の情報を格納する。
図9において、全体管理には、キャッシュ全体に関する情報を持っている。パラメータファイルパス、キャッシュファイルパス、情報ソースの一覧、仮想情報ソース、仮想データベース表、仮想顧客識別子の情報を格納する。
情報ソースには、情報ソースに関する情報を持っている。情報ソース名、データベース表の一覧の情報を格納する。
データベース表には、キャッシュするデータベースの情報を持っている。データベース名、列の一覧、リンク先のデータベース表、キャッシュするときの条件式、キャッシュされたレコード数の情報を格納する。
列には、データベース列の情報を持っている。列名、データ型、リンク先列、顧客識別子かどうかの情報、キャッシュされたnullレコードの件数、各種キャッシュファイル名の情報を格納する。
図10は、顧客情報抽出時にユーザが指定する条件式の一例を示す図である。
同図において、情報ソースとは、キャッシュにする前のデータベースの情報を表す。図10の例では、顧客マスタ,注文マスタが該当する。
同図において、情報ソースとは、キャッシュにする前のデータベースの情報を表す。図10の例では、顧客マスタ,注文マスタが該当する。
条件式は、指定情報ソースに格納されているデータベース列の条件式を表す。条件式は左辺/比較演算子/右辺からなり、左辺にデータベース列、右辺に定数を指定する。条件は複数指定可能であり、複数の条件を条件結合でつなぐ。
図10では、条件式の内容は「30才以上の男で2000円以上の商品を買った人を検索する」になる。
図11は、条件式内部形式のデータ構造の一例を示す図である。
同図において、条件式内部形式とは、ユーザから指定された顧客情報抽出条件式を構文解釈したデータである。条件式内部形式は、種別、条件式、情報ソース、グルーピングから構成される。
同図において、条件式内部形式とは、ユーザから指定された顧客情報抽出条件式を構文解釈したデータである。条件式内部形式は、種別、条件式、情報ソース、グルーピングから構成される。
種別にはその行が式なのか条件結合なのかを表す値が格納されている。
条件式には、種別が式なら条件式、種別が条件結合なら条件結合の内容が格納される。情報ソースには種別が条件式の場合にその情報ソースが格納される。
条件式には、種別が式なら条件式、種別が条件結合なら条件結合の内容が格納される。情報ソースには種別が条件式の場合にその情報ソースが格納される。
グルーピングには、キャッシュの検索を実施する順序が格納される。グルーピングが同じ番号が連続する単位で検索が実施される。グルーピングが-1なら、実行スタックに積まれた検索結果を結合する処理を行う。条件式内部形式は後置記法で表現される。
図11の例は、顧客マスタから持ってきたキャッシュファイルを使って30才以上の男を検索し、注文マスタからもってきたキャッシュファイルを使って2000円以上の商品を買ったことのある人を検索し、両者の共通顧客を求める、という意味になる。
図12は、実行スタックおよびビット配列テーブルのデータ構造を示す図である。
同図において、実行スタックは、検索処理を別々に行った結果を一時的に格納する領域である。条件式内部形式を実行の際、グルーピングの値が同じものが連続する単位でキャッシュ検索し、その結果を実行スタックに積む。もしグルーピングの値が-1なら実行スタックから上位2つの検索結果を取り出し、条件式欄に格納されている条件結合で検索結果の結合処理を行い、その結果を新たな検索結果として実行スタックに戻す。
同図において、実行スタックは、検索処理を別々に行った結果を一時的に格納する領域である。条件式内部形式を実行の際、グルーピングの値が同じものが連続する単位でキャッシュ検索し、その結果を実行スタックに積む。もしグルーピングの値が-1なら実行スタックから上位2つの検索結果を取り出し、条件式欄に格納されている条件結合で検索結果の結合処理を行い、その結果を新たな検索結果として実行スタックに戻す。
同図において、ビット配列テーブルは、検索結果を1レコード1ビットで表現したテーブルである。検索でヒットしたレコードの対応するビットを“1”、そうでないなら“0”にする。
以下、制御部3の各処理部の処理、すなわち、キャッシュファイル作成部3aの処理、仮想顧客識別子キャッシュファイル作成部3bの処理、顧客情報抽出部3cの処理、顧客識別子取得部3dの処理を、それぞれ図2〜図5のフローチャートを用いて詳細に説明する。
図2は、キャッシュファイル作成部3aの処理フローチャートである。キャッシュファイルの作成は顧客情報抽出の前に予め行っておく。本処理は、ユーザがキーボードマウス2でキャッシュファイル作成を要求したときに呼び出される。
図2では、まず、パラメータファイル4a(図6参照)の内容を参照し、リポジトリDB6a(図13参照)にアクセスするのに必要な情報を入手し、リポジトリDB6aにアクセスする。そして顧客属性DB6b(図14参照)と注文情報DB6c(図15参照)にアクセスするための情報を入手する(ステップS201)。
次に、キャッシュ情報管理テーブル5a(図9参照)を作成する。キャッシュ情報管理テーブル5aには、ステップS201で取得したデータベースのアクセス情報を格納し、またパラメータファイル4a(図6参照)にはキャッシュするデータベース列も指定されているのでその情報も格納する。また、データベース名と列名の情報からキャッシュファイルの一意な名前を作成し、これもキャッシュ情報管理テーブルに格納する(ステップS202)。
次に、キャッシュ情報管理テーブル5a(図9参照)を見て、顧客属性DB6b(図14参照)と注文情報DB6c(図15参照)にアクセスし、キャッシュするデータを取得し、キャッシュファイル4b(図7参照)に出力する(ステップS203)。キャッシュファイル4bは、キャッシュするデータベース列単位に別々に作成する。
次に、作成したキャッシュファイルについて、バイナリサーチが行えるように昇順ソートを行う(ステップS204)。
図3は、仮想顧客識別子キャッシュファイル作成部3bの処理フローチャートである。本処理はキャッシュファイル作成部3aの上記処理が終了すると呼び出される。
図3では、まず、キャッシュ情報管理テーブル5aを見て、顧客識別子をデータとして持っているキャッシュファイル名を取得する(ステップS301)。顧客識別子をデータとして持っているキャッシュファイルは、1データベースで1個なので、本実施例の場合なら、顧客属性DB6bのキャッシュで1個、注文情報DB6cのキャッシュで1個、都合2個見つかる。
続いて、見つけたキャッシュファイルに格納されているデータをマージし、その結果を仮想顧客識別子キャッシュファイル4d(図8参照)に出力する(ステップS302)。マージする際に重複する顧客識別子は排除する。
最後に、顧客識別子の各キャッシュについてリンクインデックスファイルを作成する(ステップS303)。このファイルは、顧客情報抽出時に顧客識別子の各キャッシュの検索結果を、仮想顧客識別子キャッシュファイルの検索結果に変換する場合に参照される。
図4は、顧客情報抽出部3cの処理フローチャートである。本処理は、ユーザがキーボードマウス2で抽出条件式文字列を渡して顧客情報抽出要求を行ったときに呼び出される。
図4では、まず、パラメータファイル(図6参照)を参照しリポジトリDB(図13参照)から読み込む(ステップS401)。次に、キャッシュ情報管理テーブルを作成する(ステップS402)。ステップS401とステップS402は、キャッシュファイル作成処理3aのステップS201とステップS202と同じである。
次に、指定された抽出条件文字列を解釈し、内部形式に変換し、変換結果を条件式内部形式5b(図11参照)に格納する(ステップS403)。内部形式は後置記法で表現することで括弧を排除し、条件式と条件結合(AND、ORなど)を積み上げた配列形式で管理する。
次に、内部形式を1件ずつ取り出して評価する(ステップS404)。もし取り出したものが条件式なら、その条件式で対応するキャッシュファイルを検索する(ステップS406)。検索結果は、キャッシュファイルのデータのソート前でのレコード位置をビット配列5dの対応するビット位置を“1”(ON)にすることで情報を保持する。
次に、ビット配列テーブル5d(図12参照)を実行スタック5cに積む(ステップS407)。その場合、そのビット配列がどのデータベース表に属していたかの情報もスタックに格納しておく。
内部形式を取り出したとき、それが条件結合の場合、実行スタック5cに格納されているビット配列2個を取り出す(ステップS408)。次に、それらのビット配列の対象のデータベース表が同じかどうかをチェックして、もし異なるなら同じ表になるまでビット配列の変換処理を行う(ステップS409)。ビット配列の変換処理ではリンクインデックスファイル4cを参照する。
対象のデータベース表が同じになったら、双方のビット配列に対して条件結合を適用する。そして結合結果のビット配列を新たな検索結果として実行スタック5cに積む。このような処理を内部形式の末尾まで繰り返す(ステップS411)。
内部形式の末尾まで達すると、実行スタックには1個だけビット配列が格納されているのでこれを取り出す(ステップS412)。取り出したビット配列の対象のデータベース列が仮想顧客識別子かどうかをチェックし、もし仮想顧客識別子でないならリンクインデックスファイル4cを使って、検索結果のビット配列の変換処理を仮想顧客識別子になるまで繰り返す(ステップS413)。
このようにしてできたビット配列が検索結果になる。
このようにしてできたビット配列が検索結果になる。
ここで、上記のステップS409、ステップS413のビット配列の変換処理について詳しく説明する。
説明のための前提として、データベースシステム1が顧客テーブル(図14参照)、データベースシステム2が注文テーブル(図15参照)に対応しているとする。以下、図8を参照しながら説明する。
顧客テーブル(データベースシステム1)に3レコード格納されていて、その中の顧客ID列値がID1,ID2,ID3とし、注文テーブル(データベースシステム2)に4レコード格納されていて、その中の顧客ID列値がID2,ID3,ID5,ID7とする。仮想データデース表の顧客識別子キャッシュは、上記がマージされソートされるので、ID1,ID2,ID3,ID5,ID7となる。
リンク先インデックスファイルは、以下の2ファイルが作られる。これらのファイルは、仮想顧客識別子データデース表に対する仮想顧客識別子キャッシュ作成時に作成される。
(イ)顧客テーブルの顧客IDから仮想データデース表の顧客識別子
(ロ)注文テーブルの顧客IDから仮想データデース表の顧客識別子
(イ)顧客テーブルの顧客IDから仮想データデース表の顧客識別子
(ロ)注文テーブルの顧客IDから仮想データデース表の顧客識別子
顧客テーブルを例に取ると、ID1は顧客識別子キャッシュの0番目にあり、ID2、ID3は各々1番目、2番目にあるので、[0,0,1,1,2,2]が格納される。格納情報は、(開始位置、終了位置)を1組として格納するので、3レコードの倍の6個格納することになる。
検索時に「30才以上の男」を検索したとして、顧客テーブルの1番目と2番目がヒットしたとすると、ビット配列は[011]となる。
「2000円以上の商品を買った人」を検索したとして、注文テーブルの1番目と2番目がヒットしたとするとビット配列は、[0110]となる。この値を使ってステップS409を説明する。
ステップS409のビット配列の変換処理は、以下のとおり。
(a)[011]の変換後のビット配列のメモリ領域を用意し、0クリアする。仮想顧客識別子データベース表は、5レコードあるので[00000]となる。
(a)[011]の変換後のビット配列のメモリ領域を用意し、0クリアする。仮想顧客識別子データベース表は、5レコードあるので[00000]となる。
(b)[011]を左から順に見てビットがONの位置を探す。1番目のビットがONなので、リンク先インデックスファイルの1×2=2番目、1×2+1=3番目のフィールドを見ると、1と1が格納されているので、変換後のビット配列の1番目をONにする。変換後のビット配列は、[01000]となる。
(c)[011]の次のビットON位置を探して、上記(b)の処理を繰り返す。
最終的に変換後のビット配列は[01100]となる。
最終的に変換後のビット配列は[01100]となる。
(d)注文テーブル(データベースシステム2)についても、変換後のビット配列のメモリ領域を別途用意し、上記(a)(b)(c)の処理を行う。変換後のビット配列は、[00110]となる。
上記(a)〜(d)がビット変換処理(ステップS409)の説明である。
上記(a)〜(d)がビット変換処理(ステップS409)の説明である。
ステップS413は、例えば条件式が1個しかなかった場合には、検索結果のビット配列が、仮想顧客識別子データベース表に対応するビット配列なっていないので、仮想顧客識別子データベース表に対応させるための処理があり、変換処理の方法は、上記(a)(b)(c)の処理と同じである。
図5は、顧客識別子取得部3dの処理フローチャートである。本処理は、顧客情報抽出部3cの上記処理が終了したあと、顧客識別子をユーザが取得したいときに呼び出される。呼び出しでは、全件取得によるメモリ不足を避けるため、ユーザから必要な件数が指定される。
図5では、まず、ビット配列のうちビットONになっている位置を探し見つかったらその位置を取得する(ステップS501)。次に、仮想顧客識別子キャッシュファイルの指定位置にあるデータを取り出して(ステップS502)、上位モジュールに返却する。
このようにして、メモリ上には検索結果のビット配列と必要件数だけの顧客識別子のエリアが存在することになり、極力消費メモリを節約できる。
本実施形態では、分散しているデータベースは顧客属性DB6b、注文情報DB6cと2個の場合で説明したが、それ以上の個数の場合であっても同様に実施できる。
なお、上記実施形態における制御部3の各処理部の処理、すなわち、キャッシュファイル作成部3a(キャッシュファイル作成手段)の処理(図2参照)、仮想顧客識別子キャッシュファイル作成部3b(仮想顧客識別子キャッシュファイル作成手段)の処理(図3参照)、顧客情報抽出部3c(情報抽出手段)の処理(図4参照)、顧客識別子取得部3d(データ取得手段)の処理(図5参照)は、対応するプログラムをCPUで実行することにより行われる。このプログラムは、それぞれ図2、図3、図4、図5のフローチャートに示す処理をプログラムコード化したものであり、CD−ROM、DVD、FDなどの記録媒体に格納して配布したり、インターネットなどのネットワークを介してユーザに配布することにより普及することができる。
本発明は、複数のデータベースが分散している環境で、顧客情報を抽出するシステムに適用できる。
1:表示部、2:入力部、3:制御部、3a:キャッシュファイル作成部、3b:仮想顧客識別子キャッシュファイル作成部、3c:顧客情報抽出部、3d:顧客識別子取得部、4:外部記憶装置、4a:パラメータファイル、4b:キャッシュファイル、4c:リンクインデックスファイル、4d:仮想顧客識別子キャッシュファイル、5:メモリ、5a:キャッシュ情報管理テーブル、5b:条件式内部形式、5c:実行スタック、5d:ビット配列テーブル、6a:リポジトリDB、6b:顧客属性DB、6c:注文情報DB
Claims (5)
- ネットワーク上に分散している複数のデータベースを連携して検索条件に合致するデータを検索する複合データベース検索システムであって、
前記複数のデータベースの列情報を格納したキャッシュファイルを作成するキャッシュファイル作成手段と、
前記キャッシュファイルのデータをマージ・ソートした仮想識別子キャッシュファイルを作成する仮想識別子キャッシュファイル作成手段と、
指定された検索条件にしたがって前記キャッシュファイルを検索するとともに、レコード位置を1ビットに対応させ、前記検索ステップで検索した結果、前記検索条件に一致したレコード位置のビットを“1”で表し、一致しないレコード位置のビットを“0”で表したビット配列テーブルを作成する情報抽出手段と、
前記ビット配列テーブルからビットが“1”の位置を取得し、前記仮想識別子キャッシュファイルから前記ビットが“1”の位置に対応するデータを取得するデータ取得手段と
を有することを特徴とする複合データベース検索システム。 - 前記複数のデータベースは、顧客識別子と氏名と住所と年齢と性別を含む顧客属性データベース、および、顧客識別子と注文日と商品識別子と価格を含む注文情報データベースであり、前記マージ・ソートは、顧客識別子を用いて重複を排除して実行されることを特徴とする請求項1記載の複合データベース検索システム。
- ネットワーク上に分散している複数のデータベースを連携して検索条件に合致するデータを検索する複合データベース検索方法であって、
前記複数のデータベースの列情報を格納したキャッシュファイルを作成するキャッシュファイル作成ステップと、
前記キャッシュファイルのデータをマージ・ソートした仮想識別子キャッシュファイルを作成する仮想識別子キャッシュファイル作成ステップと、
指定された検索条件にしたがって前記キャッシュファイルを検索するとともに、レコード位置を1ビットに対応させ、前記検索ステップで検索した結果、前記検索条件に一致したレコード位置のビットを“1”で表し、一致しないレコード位置のビットを“0”で表したビット配列テーブルを作成する情報抽出ステップと、
前記ビット配列テーブルからビットが“1”の位置を取得し、前記仮想識別子キャッシュファイルから前記ビットが“1”の位置に対応するデータを取得する情報取得ステップと
を有することを特徴とする複合データベース検索方法。 - 前記複数のデータベースは、顧客識別子と氏名と住所と年齢と性別を含む顧客属性データベース、および、顧客識別子と注文日と商品識別子と価格を含む注文情報データベースであり、前記マージ・ソートは、顧客識別子を用いて重複を排除して実行されることを特徴とする請求項3記載の複合データベース検索方法。
- ネットワーク上に分散している複数のデータベースを連携して検索条件に合致するデータを検索する複合データベース検索用プログラムであって、
コンピュータを、前記複数のデータベースの列情報を格納したキャッシュファイルを作成するキャッシュファイル作成手段と、前記キャッシュファイルのデータをマージ・ソートした仮想識別子キャッシュファイルを作成する仮想識別子キャッシュファイル作成手段と、指定された検索条件にしたがって前記キャッシュファイルを検索するとともに、レコード位置を1ビットに対応させ、前記検索ステップで検索した結果、前記検索条件に一致したレコード位置のビットを“1”で表し、一致しないレコード位置のビットを“0”で表したビット配列テーブルを作成する情報抽出手段と、前記ビット配列テーブルからビットが“1”の位置を取得し、前記仮想識別子キャッシュファイルから前記ビットが“1”の位置に対応するデータを取得するデータ取得手段として機能させるための複合データベース検索用プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004279120A JP2006092409A (ja) | 2004-09-27 | 2004-09-27 | 複合データベース検索システムおよび複合データベース検索方法ならびにそのためのプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004279120A JP2006092409A (ja) | 2004-09-27 | 2004-09-27 | 複合データベース検索システムおよび複合データベース検索方法ならびにそのためのプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006092409A true JP2006092409A (ja) | 2006-04-06 |
Family
ID=36233297
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004279120A Pending JP2006092409A (ja) | 2004-09-27 | 2004-09-27 | 複合データベース検索システムおよび複合データベース検索方法ならびにそのためのプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006092409A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009216669A (ja) * | 2008-03-12 | 2009-09-24 | Aisin Aw Co Ltd | 目的地設定支援装置、及び目的地設定支援プログラム |
JP2012160013A (ja) * | 2011-01-31 | 2012-08-23 | Nippon Telegr & Teleph Corp <Ntt> | データ分析及び機械学習処理装置及び方法及びプログラム |
WO2015105043A1 (ja) * | 2014-01-08 | 2015-07-16 | 日本電気株式会社 | 演算システム、データベース管理装置および演算方法 |
WO2021235437A1 (ja) * | 2020-05-20 | 2021-11-25 | 日本瓦斯株式会社 | 通信システム、中継処理装置、情報処理方法、及びプログラム |
JP6974665B1 (ja) * | 2021-06-30 | 2021-12-01 | 株式会社インフォメックス | 検索装置、検索方法、およびプログラム |
WO2023276168A1 (ja) * | 2021-06-30 | 2023-01-05 | 株式会社インフォメックス | 検索装置、検索方法、および記録媒体 |
-
2004
- 2004-09-27 JP JP2004279120A patent/JP2006092409A/ja active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009216669A (ja) * | 2008-03-12 | 2009-09-24 | Aisin Aw Co Ltd | 目的地設定支援装置、及び目的地設定支援プログラム |
JP4636391B2 (ja) * | 2008-03-12 | 2011-02-23 | アイシン・エィ・ダブリュ株式会社 | 目的地設定支援装置、及び目的地設定支援プログラム |
JP2012160013A (ja) * | 2011-01-31 | 2012-08-23 | Nippon Telegr & Teleph Corp <Ntt> | データ分析及び機械学習処理装置及び方法及びプログラム |
WO2015105043A1 (ja) * | 2014-01-08 | 2015-07-16 | 日本電気株式会社 | 演算システム、データベース管理装置および演算方法 |
JPWO2015105043A1 (ja) * | 2014-01-08 | 2017-03-23 | 日本電気株式会社 | 演算システム、データベース管理装置および演算方法 |
WO2021235437A1 (ja) * | 2020-05-20 | 2021-11-25 | 日本瓦斯株式会社 | 通信システム、中継処理装置、情報処理方法、及びプログラム |
JP6974665B1 (ja) * | 2021-06-30 | 2021-12-01 | 株式会社インフォメックス | 検索装置、検索方法、およびプログラム |
WO2023276168A1 (ja) * | 2021-06-30 | 2023-01-05 | 株式会社インフォメックス | 検索装置、検索方法、および記録媒体 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103390020B (zh) | 在数据库中存储数据的方法和系统 | |
US11899641B2 (en) | Trie-based indices for databases | |
CN104850572B (zh) | HBase非主键索引构建与查询方法及其系统 | |
JP6006267B2 (ja) | 索引キーを使用して検索を絞込むシステムおよび方法 | |
US9805079B2 (en) | Executing constant time relational queries against structured and semi-structured data | |
US6279007B1 (en) | Architecture for managing query friendly hierarchical values | |
EP3519986B1 (en) | Direct table association in in-memory databases | |
US20040205044A1 (en) | Method for storing inverted index, method for on-line updating the same and inverted index mechanism | |
US8738572B2 (en) | System and method for storing data streams in a distributed environment | |
US11386081B2 (en) | System and method for facilitating efficient indexing in a database system | |
JP6598996B2 (ja) | データ準備のためのシグニチャベースのキャッシュ最適化 | |
JP5199317B2 (ja) | データベース処理方法、データベース処理システム及びデータベースサーバ | |
CN100458784C (zh) | 在数字图书馆中所采用的检索系统和检索方法 | |
CN103353901B (zh) | 基于Hadoop分布式文件系统的表数据的有序管理方法以及系统 | |
Lin et al. | Frame-sliced signature files | |
CN103914483B (zh) | 文件存储方法、装置及文件读取方法、装置 | |
JP7105982B2 (ja) | 構造化レコード取得 | |
WO2010084754A1 (ja) | データベースシステム、データベース管理方法、データベース構造および記憶媒体 | |
JP6598997B2 (ja) | データ準備のためのキャッシュ最適化 | |
CN105912696A (zh) | 一种基于对数归并的dns索引创建方法及查询方法 | |
CN110020272A (zh) | 缓存方法、装置以及计算机存储介质 | |
JP2006092409A (ja) | 複合データベース検索システムおよび複合データベース検索方法ならびにそのためのプログラム | |
JP2007048318A (ja) | リレーショナルデータベースの処理方法およびリレーショナルデータベース処理装置 | |
JPH09305622A (ja) | 文書検索機能を有するデータベース管理方法およびシステム | |
KR101299555B1 (ko) | 해시 함수 기반의 인덱스를 이용한 텍스트 검색 장치 및 방법 |