特許第6432893号(P6432893)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社シマントの特許一覧

特許6432893データベース処理装置、グループマップファイル生産方法及びプログラム
<>
  • 特許6432893-データベース処理装置、グループマップファイル生産方法及びプログラム 図000002
  • 特許6432893-データベース処理装置、グループマップファイル生産方法及びプログラム 図000003
  • 特許6432893-データベース処理装置、グループマップファイル生産方法及びプログラム 図000004
  • 特許6432893-データベース処理装置、グループマップファイル生産方法及びプログラム 図000005
  • 特許6432893-データベース処理装置、グループマップファイル生産方法及びプログラム 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】6432893
(24)【登録日】2018年11月16日
(45)【発行日】2018年12月5日
(54)【発明の名称】データベース処理装置、グループマップファイル生産方法及びプログラム
(51)【国際特許分類】
   G06F 17/30 20060101AFI20181126BHJP
【FI】
   G06F17/30 220Z
   G06F17/30 414Z
【請求項の数】6
【全頁数】13
(21)【出願番号】特願2017-194559(P2017-194559)
(22)【出願日】2017年10月4日
【審査請求日】2018年5月21日
【早期審査対象出願】
(73)【特許権者】
【識別番号】516132563
【氏名又は名称】株式会社シマント
(74)【代理人】
【識別番号】100136180
【弁理士】
【氏名又は名称】羽立 章二
(72)【発明者】
【氏名】渡邉 繁樹
【審査官】 早川 学
(56)【参考文献】
【文献】 特開2010−122880(JP,A)
【文献】 特開2008−262324(JP,A)
【文献】 特開2012−108635(JP,A)
【文献】 鵜木昌行,Sybase IQ「独自データ構造による、データウエアハウスへのアプローチ」,電子情報通信学会技術研究報告,社団法人電子情報通信学会 The Institute of Electronics,Information and Communication Engineers,1997年12月 2日,Vol.97,No.415,pp.51〜56
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/30
(57)【特許請求の範囲】
【請求項1】
データベースに対して処理を行うデータベース処理装置であって、
前記データベースに対して集計処理を行うときに、前記データベースにおける名寄せ対象となった複数の値のそれぞれの位置に対応させて、前記名寄せ対象となった値を数値化した数値を格納したグループマップファイルを作成するグループマップ作成手段を備えるデータベース処理装置。
【請求項2】
前記データベースの各データは、CSVファイルに格納されており、
前記集計処理を行うときに又は前記集計処理を行う前に、前記CSVファイルの各データにアクセスするためのアドレスマップファイルを作成するアドレスマップ作成手段を備える請求項1記載のデータベース処理装置。
【請求項3】
前記集計処理による集計結果の内訳を抽出する集計結果内訳抽出手段と、第1記憶部と、第2記憶部を備え、
前記第1記憶部は、前記第2記憶部よりも高速にアクセスすることが可能であり、
前記第2記憶部は、前記CSVファイルを記憶し、
前記アドレスマップファイルは、前記第2記憶部に記憶された前記CSVファイルの各データにアクセスするためのものであり、
前記集計結果内訳抽出手段は、前記第2記憶部とは異なる前記第1記憶部に読み出された前記グループマップファイル及び前記アドレスマップファイルを用いて、
前記グループマップファイルにおける一つ又は複数の数値をサーチして、当該一つ又は複数の数値に対応する前記データベースの位置を特定し、
前記アドレスマップファイルを使用して、当該位置に対応する前記CSVファイルの各データを抽出する、請求項2記載のデータベース処理装置。
【請求項4】
前記データベースを管理するためのデータ構造を記憶する記憶手段を備え、
前記データ構造は、フィールド定義情報を格納するフィールド定義格納部と、データを格納するデータ格納部を含み、
前記データ格納部は、前記データベースを特定するデータを格納するデータベース格納部と、前記グループマップファイルを記憶するマップ格納部を備え、
前記フィールド定義情報により前記データベースにおいて仮想フィールド定義を実現する、請求項1から3のいずれかに記載のデータベース処理装置。
【請求項5】
データベースを用いてグループマップファイルを生産するグループマップファイル生産方法であって、
データベース処理装置が備えるグループマップ作成手段が、前記データベースに対して集計処理を行うときに、前記データベースにおける名寄せ対象となった複数の値のそれぞれの位置に対応させて、前記名寄せ対象となった値を数値化した数値を格納したグループマップファイルを生産するグループマップ作成ステップを含むグループマップファイル生産方法。
【請求項6】
コンピュータを、データベースに対して集計処理を行うときに、前記データベースにおける名寄せ対象となった複数の値のそれぞれの位置に対応させて、前記名寄せ対象となった値を数値化した数値を格納したグループマップファイルを作成するグループマップ作成手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本願発明は、データベース処理装置、グループマップファイル生産方法及びプログラムに関し、特に、データベースに対して処理を行うデータベース処理装置等に関する。
【背景技術】
【0002】
ビル・インモン(William H. Inmon)により、データウェアハウス(Data WareHouse)等の概念が提唱されている(非特許文献1参照)。従来、データローディングは、具体的には、例えば以下のように行われていた。
【0003】
まず、ETLツールにより、CSVファイルからCSV源データをシーケンシャルに読み出し、フィールド選択、行選択、データ浄化、正規化、ローダー用書式化などを行い、抽出されたCSV源部分データをファイルにシーケンシャルに書き込む。ここで、CSV源データを保存するファイルと、CSV源部分データを管理するファイルとは、等しくない。
【0004】
そして、RDBMSローダーにより、CSV源データから特定RDBMSローダー用CSVデータを作成し、特定RDBMSローダー用CSVデータをシーケンシャルに読み出して、フィールド選択、データ浄化、正規化、データ型変換、キーの整合性チェックなどを行い、RDBMSテーブルレコードデータをファイルにシーケンシャルに書き込む。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】W.H.インモン,コーポレート・インフォメーション・ファクトリー−企業情報生態系の構築と管理,海文堂出版,1999年
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、従来のデータローディングは、CSV源データから、設計時に必要とされた部分のみを抽出して行われる。抽出されていないものは、検索等の処理ができない。そのため、抽出されていないCSV源データに対して検索等の処理を行うためには、全体を見直し、一部又は全部を作り直し、ローディングをやり直してテーブル構成の再設計等を行う必要があった。そのため、容易に変更することはできず、最初から完璧な設計をする必要があった。また、検索結果をデータウェアハウス化して蓄積することは、検索結果が正規形である保障がないために、基本的には指定することが許されていなかった。
【0007】
さらに、これらの処理はバッチ処理により実現されるが、CSV源データが例えば何十GBもある場合には、RDBMSテーブルレコードデータにアクセスできるまでに長時間を要していた。また、RDBMSテーブルレコードデータは、一般にデータ量が極めて大きく、例えば汎用のノートパソコンのような性能の低いコンピュータでは、数GB程度のメモリに記憶させて処理を行うことができず、ハードディスクなどに格納されて必要に応じて部分的にメモリに読み出して処理を行っていた。そのため、検索等の処理に、長い時間が必要となった。
【0008】
そこで、本願発明は、CSV源データなどの生データのデータベースに対して、事前に抽出等の処理を行わずに集計検索処理等を行うことに適したデータベース処理装置等を提案することを目的とする。
【課題を解決するための手段】
【0009】
本願発明の第1の観点は、データベースに対して処理を行うデータベース処理装置であって、前記データベースに対して集計処理を行うときに、名寄せ対象となった値を数値化したグループマップファイルを作成するグループマップ作成手段を備える。
【0010】
本願発明の第2の観点は、第1の観点のデータベース処理装置であって、前記データベースの各データは、CSVファイルに格納されており、前記集計処理を行うときに又は前記集計処理を行う前に、前記CSVファイルの各データにアクセスするためのアドレスマップファイルを作成するアドレスマップ作成手段を備える。
【0011】
本願発明の第3の観点は、第2の観点のデータベース処理装置であって、前記集計処理による集計結果の内訳を抽出する集計結果内訳抽出手段と、第1記憶部と、第2記憶部を備え、前記第1記憶部は、前記第2記憶部よりも高速にアクセスすることが可能であり、前記第2記憶部は、前記CSVファイルを記憶し、前記アドレスマップファイルは、前記第2記憶部に記憶された前記CSVファイルの各データにアクセスするためのものであり、前記集計結果内訳抽出手段は、前記第2記憶部とは異なる前記第1記憶部が記憶する前記グループマップファイル及び前記アドレスマップファイルを用いて、前記グループマップファイルにおける一つ又は複数の数値をサーチして、当該一つ又は複数の数値に対応する前記データベースの位置を特定し、前記アドレスマップファイルを使用して、当該位置に対応する前記CSVファイルの各データを抽出する。
【0012】
本願発明の第4の観点は、第1から第3のいずれかの観点のデータベース処理装置であって、前記データベースを管理するためのデータ構造を記憶する記憶手段を備え、前記データ構造は、フィールド定義情報を格納するフィールド定義格納部と、データを格納するデータ格納部を含み、前記データ格納部は、前記データベースを特定するデータを格納するデータベース格納部と、前記グループマップファイルを記憶するマップ格納部を備え、前記フィールド定義情報により前記データベースにおいて仮想フィールド定義を実現する。
【0013】
本願発明の第5の観点は、データベースを用いてグループマップファイルを生産するグループマップファイル生産方法であって、データベース処理装置が備えるグループマップ作成手段が、前記データベースに対して集計処理を行うときに、名寄せ対象となった値を数値化したグループマップファイルを生産するグループマップ作成ステップを含む。
【0014】
本願発明の第6の観点は、コンピュータを、データベースに対して集計処理を行うときに、名寄せ対象となった値を数値化したグループマップファイルを作成するグループマップ作成手段として機能させるためのプログラムである。
【0015】
なお、本願発明を、第6の観点のプログラムを記録するコンピュータ読み取り可能な記録媒体として捉えてもよい。
【0016】
また、本願発明において、集計処理において、ハッシュ関数を用いて、ソートを行わないで動的にマージするものとして捉えてもよい。集計処理においては一般にデータ読込みの後に名寄せのためにソート・マージ処理を行う必要がある。本願発明によれば、ハッシュ関数を利用することにより、ソートを行わないで動的にマージすることを採用して、さらなる性能の向上を成し遂げることができる。
【0017】
また、本願発明を、第4の観点に記載のデータ構造、及び、このデータ構造を記録するコンピュータ読み取り可能な記録媒体としてとらえてもよい。さらに、第4の観点に記載のデータ構造において、前記データ格納部は、前記データベースの行に対応したレコードを保持するテーブルを記録するテーブル格納部を備え、前記レコードに対して実フィールドを追加及び更新することにより、前記データベースの実フィールドの値の追加及び更新を行うものとして捉えてもよい。例えば、CSVファイルの5行目に対応するDBレコードのID(RDBMSにおけるプライマリーキー)=5とするテーブルにより実現することができる。これにより、データベースの各データを特定するCSVファイル等を変更せずに、実フィールドの追加及び更新をすることができる。
【発明の効果】
【0018】
本願発明の各観点によれば、オリジナルのデータベースに対して集計処理等を行い、このとき、グループマップファイルを作成することにより、集計結果を容易に特定することができる。
【0019】
さらに、本願発明の第2の観点によれば、アドレスマップファイルを利用して、データベースを特定するCSVファイルの各データにアクセスすることが可能になる。
【0020】
さらに、グループマップファイル及びアドレスマップファイルは、固定長バイナリファイルで実現することができる。そのため、本願発明の第3の観点にあるように、CSVファイルよりもきわめて小さなサイズとなり、オンメモリで高速処理することができる。さらに、グループマップファイルにより集計結果を得、アドレスマップファイルによりデータベースの各データにアクセスすることにより、集計結果の内訳(データベースにおけるデータ)を高速に得ることができる。
【0021】
さらに、本願発明の第4の観点にあるように、マルチバリューシステムなどにおいて実現可能なデータ構造を利用することができる。
【図面の簡単な説明】
【0022】
図1】(a)本願発明の実施の形態に係るデータベース処理装置1の構成の一例を示すブロック図と、(b)第2記憶部15が記憶するCFILE23のデータ構造の一例を示すブロック図である。
図2図1のデータベース処理装置1の動作の一例を示すフロー図である。
図3】CSVファイル43と、これにより生成されるグループマップファイル49の一例を示す。
図4】CSVファイルとマスターファイルを利用してグループマップファイルを生成する処理の一例を示す。
図5図1のデータベース処理装置1におけるデータアクセスの一例を示す図である。
【発明を実施するための形態】
【0023】
以下では、図面を参照して、本願発明の実施例について説明する。なお、本願発明は、この実施例に限定されるものではない。
【実施例】
【0024】
図1は、(a)本願発明の実施の形態に係るデータベース処理装置1の構成の一例を示すブロック図と、(b)第2記憶部15が記憶するCFILE23のデータ構造の一例を示すブロック図である。図2は、図1のデータベース処理装置1の動作の一例を示すフロー図である。
【0025】
図1(a)を参照して、データベース処理装置1は、グループマップ作成部3(本願請求項の「グループマップ作成手段」の一例)と、アドレスマップ作成部5(本願請求項の「アドレスマップ作成手段」の一例)と、集計結果内訳抽出部7(本願請求項の「集計結果内訳抽出手段」の一例)と、制御部9と、テーブル管理部11と、第1記憶部13(本願請求項の「第1記憶部」の一例)と、第2記憶部15(本願請求項の「第2記憶部」の一例)と、入力部19と、表示部21を備える。
【0026】
第3記憶部24は、CSV源データファイル25を記憶する。第3記憶部24が記憶するCSV源データファイル25は、生データを管理するCSVファイルである。簡単のために、CSV源データファイル25が一つの場合について説明する。CSV源データファイル25が複数あっても、同様に実現することができる。
【0027】
従来、CSV源データファイルから必要な部分のみを抽出して、RDBMSテーブルレコードデータを作成していた。従来のRDBMSテーブルレコードデータは、CSV源データファイルに比較して大幅にデータ量が増加し、かつ、新たに必要な部分が発生した場合には再設計が必要となっていた。
【0028】
第1記憶部13は、第2記憶部15と比較して高速にアクセスすることができる。例えば、第1記憶部13はメモリであり、第2記憶部15はハードディスク等であり、一般的なノートパソコンであれば、第2記憶部15には数百GBの情報を、第1記憶部13に数GBの情報を記憶させることができる。第1記憶部13に記憶された情報には、第2記憶部15に記憶された情報と比較して、高速にアクセスすることができる。
【0029】
マルチバリューシステムにおける1テーブルは、OS上において2種のディレクトリ(フィールド定義を格納するDICT部とデータを格納するDATA部)によって構成され、一般にDICT部ひとつに対しDATA部ひとつが対応する構成であるが、必要であれば一つのDICT部に複数のDATA部ディレクトリを対応させることができる。
【0030】
第2記憶部15は、CFILE23を記憶する。図1(b)を参照して、CFILE23は、フィールド定義情報を格納するフィールド定義格納部33(マルチバリューシステムにおけるDICT部を参照)と、データを格納するデータ格納部35(マルチバリューシステムにおけるDATA部を参照)を備える。データ格納部35は、テーブル格納部37と、データベース格納部39と、マップ格納部41を備える。フィールド定義格納部33、データ格納部35、テーブル格納部37、データベース格納部39及びマップ格納部41は、ディレクトリ(フォルダ)である。この構造は、管理テーブルVOCに記録される。ここで、管理テーブルVOCは、マルチバリューシステムにおいて全テーブルの構成情報を管理しているシステムテーブルであり(MDと称するものもある。)、CFILE同様にフィールド定義格納部とデータ格納部からなり、データ格納部において全テーブルの構成情報が保持される。なお、必要であれば、CFILEにおいてデータ格納部を追加し、一つのCFILE内に複数のデータ格納部があってもよい。
【0031】
データベース格納部39は、CSVファイル43と、部分CSVファイル45を格納する。
【0032】
利用者が入力部19を操作してCFILE23を生成するときに、CSV源データファイル25をコピー又は移動させてCSVファイル43とする。なお、必要であれば、行スキップ、FTF8へコード変換、半角全角変換などを行ったり、複合キー用CSVを生成したりしてもよい。CSVファイル43は、CSV源データファイル25と完全に(又は実質的に)等しい。そのため、従来は必要とされていなかったが事後的に必要とされたデータも、CFILE23内に存在しており、再設計をする必要はない。
【0033】
部分CSVファイル45は、例えばCSVファイル43の1行が多くのフィールドを有する場合などに、特定フィールドにおいて高速検索を可能にするため、CSVファイル43から、特定フィールド(特定フィールドの複数結合指定をすることもできる。つまり、部分CSVファイル43の行を任意指定の複数種のフィールドにて構成させることもできる。)のみを抜き取ったものである。これにより、RDBMSにおけるカラム型DBMSのような効果を発揮する。利用者が入力部19を操作してマップ生成命令を実行することにより、事後的に一つ又は複数を生成することができる。例えば、CSVファイル43のファイル名を「C」とすると、CSVファイル43の17番フィールドと5番フィールドで構成される部分CSVファイル45のファイル名は「C17_5」とする。
【0034】
マップ格納部41は、アドレスマップファイル47と、グループマップファイル49と、部分アドレスマップファイル51を格納する。
【0035】
アドレスマップファイル47は、第2記憶部15に記憶されたCSVファイル43にアクセスするためのアドレスを管理する。アドレスマップファイル47は、CSVファイル43に対応する固定長バイナリファイルであり。アドレスマップファイル47は、例えば、全件数、2行目始りアドレス、3行目始りアドレス、…、最終行始りアドレス、及び、最終行終りアドレス+1、を記憶する。なお、アドレスマップファイル47は、CFILE23の生成時に生成してもよく、また、CFILE23の生成時には生成せずに集計検索処理を行うときに生成してもよい。事後的に生成しても、アドレスマップファイル47を生成するために余計にかかる時間は、それをやらなかった場合の検索時間と比較して測定可能な程度の差が生じない。
【0036】
グループマップファイル49は、利用者が入力部19を操作してCSVファイル43に対する集計検索命令を実行するときに、必要に応じて登録される。構造は、全行において集計処理における名寄せで決定された「名」を1から始まる検索時発見順の整数値に置き換えたバイナリ固定長ファイルである。
【0037】
データ量を比較すると、グループマップファイル49のそれぞれのサイズは、アドレスマップファイル47のサイズよりも小さい。例えば、CSVファイル43が2000万件(約33GB)の場合、アドレスマップファイル47のサイズは96.5MB、グループマップファイル49のサイズが58MB弱であった。そのため、常時オンメモリにおける高速アクセスが可能となる(すなわち、第1記憶部13に格納した状態で高速にアクセスして処理をすることができる。)。そのため、非力なPCであっても、超高速な処理が可能になる。
【0038】
部分アドレスマップファイル51は、部分CSVファイル45のそれぞれに対応して、第2記憶部15に記憶された部分CSVファイル45にアクセスするためのアドレスを管理する。部分CSVファイル45と部分アドレスマップファイル51の関係は、CSVファイル43とアドレスマップファイル47の関係と同様である。部分CSVファイル45に対応した部分アドレスマップファイル51は、検索結果(表示用)として部分CSVファイル45内フィールドが相当した場合に、そのデータを高速に抽出できるようにするためのものである。(部分アドレスマップファイル51がなくとも、大元のアドレスマップファイル47を用いて大本のCSVファイル43から抽出は可能である。)なお、部分CSVファイル45に対応するグループマップファイルは、仮に作成しても、CSVファイル43のグループマップファイル49と同等同サイズのものとなるために、大元のCSVファイル43のグループマップファイル49で対応可能である。
【0039】
テーブル格納部37は、CSVファイル43の行に対応したレコード(RDBMSにおいてプライマリーキーに相当する@IDのみを持つ空レコード)を、CSVファイル43の行数分保持する。テーブル管理部11は、テーブル格納部37に対する処理を行う。例えば、CSVファイル43が7行で構成されていた場合、@ID=1から7までの7レコードが生成格納される。この空レコードへは、任意に実フィールドをいくらでも追加及び更新することができる。そのため、CSVファイル43を変化させることなく、見かけ上(しかし実用的に)CSVファイル43の更新が可能となる。具体的には、データベース格納部39とマップ格納部41は、共に、CSVファイル43のデータ及び行番号に関連して生成されている。テーブル格納部37は、CSVファイル43の行番号をIDとしてもったレコードを保持し、CSVファイル43の行番号にのみ関連する。レコードの追加及び更新は、CSVファイル43の行に対応したテーブル格納部37内レコードに、新規フィールドを追加したり更新したりする(「行」の追加は基本的にしない)。そのため、テーブル格納部37の中でのみ起こり、データベース格納部39及びマップ格納部41には影響しない。グループマップファイル49は、そのときの検索結果として保持されており更新されるべきものではない。新規検索には、新規のグループマップファイルが対応するため、新規グループマップファイルが「追加」されることはあっても、以前のグループマップファイルは変更されない。
【0040】
フィールド定義格納部33は、フィールド定義情報を格納する。フィールド定義情報により、データベースにおける仮想フィールド定義をすることができる。例えば、CSVファイル43及びテーブル格納部37のテーブルは実フィールドの値を定義するが、仮想フィールド定義に従って例えば集計値などの値を計算することにより、仮想フィールドの各値を得ることができる。
【0041】
図2を参照して、図1のデータベース処理装置1において、CSVファイル43に対する集計検索処理により、アドレスマップファイル47及びグループマップファイル49を生成する処理の一例を説明する。なお、アドレスマップファイル47がCFILE生成時や以前の集計検索処理により生成されているのであれば、アドレスマップファイル47を生成せずに、グループマップファイル49を生成する処理を行えばよい。
【0042】
制御部9は、前処理として、変数kを0とし、メモリ上に空の参照リストを設定する(ステップST1)。
【0043】
制御部9は、CSVファイル43からフィールドを読み出し(ステップST2)、CSVファイル43に一意に対応するアドレスマップファイル47が未だ生成されていない場合に限り、空のアドレスマップファイル47を生成し、次に示すようなアドレス書込み処理を行う。アドレスマップ作成部5は、n行(nは2以上の整数)の始まりのフィールドであるならば、アドレスマップファイル47に対してn行始りアドレスを追加する。また、最終行の終わりであるならば、最終行終りアドレス+1を格納する(ステップST3)。なお、最初から完成されたアドレスマップファイル47が存在している場合は、フィールドの読み出し(ステップST2)を行うのみであり、ステップST3は実行されない。
【0044】
グループマップ作成部3は、読み出されたフィールドが名寄せ対象フィールドか否かを判断する(ステップST4)。名寄せ対象フィールドであれば、ステップST5に進む。名寄せ対象フィールドでないならば、ステップST9に進む。
【0045】
ステップST5及びST6において、フィールドが新たな値であるか否かを判断する。新たな値であるならば、kを1増加したうえで新たな値に対応するIDをkとし(ステップST7)、グループマップファイル49(存在しない場合には生成する。)にIDを追加し(ステップST8)、ステップST9に進む。フィールドが新たな値でないならば、グループマップファイル49に対応するIDを追加する。
【0046】
ステップST9において、制御部9は、全てのフィールドに対して処理が行われたか否かを判断する。行われていないフィールドがあるのであれば、ハッシュ化された参照リストへIDを書込み(ステップST10)、ステップST2に戻って処理が行われていないフィールドに対して処理を行う。全てのフィールドに対して処理が行われたのであれば、制御部9は、テーブル格納部37が空である場合に限り、行番号をIDとした空のレコード(ダミーレコード)を行数分追加して終了する。
【0047】
図3は、CSVファイル43と、これにより生成されるグループマップファイル49の一例を示す図である。CSVファイル43の2列目が名寄せ対象フィールドである場合、CSVファイル43の2列目は、b、a、a、c、b、e、dである。これに対応するグループマップファイル49は、出現順に番号化してIDを生成したものであり、1、2、2、3、1、4、5である。また、4列目が名寄せ対象フィールドである場合には、CSVファイル43の4列目は、Z、B、Y、A、A、Z、Yであり、これに対応するグループマップファイル49は、1、2、3、4、4、1、3である。異なる集計処理では、異なるグループマップファイル49が生成される。
【0048】
グループマップファイル49は、単純に単フィールドの値だけでなく、複数フィールドの合成値や、それらをキーとしてマスターテーブルとのJOIN等によって得られる値とすることも可能である。図4を参照して、マスターテーブルを使用したグループマップファイルの生成処理の一例を説明する。検索対象となるCSVファイルは、流通業におけるトランザクションデータであり、どの商品がどれだけ売れたかが記録されている。検索は、部門別に集計処理を行い、そのグループマップファイルを生成することである。ただし、CSVファイル43内にデータとして部門コードが入っておらず、商品コードしかない。マスターテーブルは、マルチバリューシステムにおけるテーブルであり、基本機能は、RDBMSにおける正規化されたレコード構造を持つテーブルと同等である。システム上に、商品マスターテーブルがあり、商品コードと部門コードが対応付けられている。図4の例では、CSVファイルの第2列が商品コードであり、b、a、a、c、b、e、dである。商品マスターテーブルでは、商品コードa、b、c、d、eは、それぞれ、Z、Y、Y、X、Zと対応付けられている。検索処理では、商品コードをキーとして商品マスターテーブルとJOINし、部門コードを検索時に動的に生成して、あたかもCSVファイルに部門コードが存在しているかのごとくに名寄せ集計を行う。これにより、CSVファイルにはない、部門コードによりグループマップファイルを生成することができる。ここで実現されるJOINは、SQL等のJOIN(SQL上にてキーとフィールド間の関係手続きとしてその都度記述され実行される。)とは異なる仕組みであり、例えば「部門コード」という「仮想フィールド」をフィールド定義格納部33に定義しておけば、それを実体(エンティティー)として扱うことができるため、簡素かつ汎用的なものである。
【0049】
集計結果内訳抽出部7は、第2記憶部15からCFILE23のグループマップファイル49及びアドレスマップファイル47を読み出して第1記憶部13に記憶させ、第1記憶部13が記憶するグループマップファイル49及びアドレスマップファイル47を利用して、集計結果の内訳(CSVファイル43のデータ=RAWデータ)を高速に読み込み、表示部21に表示する。例えば、図3の例で、利用者が入力部19を操作して2列目の「a」と「e」に相当する集計結果の内訳を表示するように指示した場合、グループマップファイル49における2及び4をシーケンシャルサーチすることによりCSVファイル43における相当行番号(図3の場合2、3、6)を獲得し、これを、アドレスマップファイル47を使用してCSVファイル43からRAWデータをダイレクトレコードアクセスして、表示部21に表示する。
【0050】
例えば、CSVファイル43が約33GB、2000万件であった場合に、3種のフィールドへ検索条件及び3種のフィールドにソート指定をした場合、本願発明によれば、非力なノートパソコンを使用しても、CSV源ファイルを用意してから検索完了するまで平均3分であった。背景技術は、DBMSテーブルとしてのレコードデータ生成にかかるコスト等がかかり、さらに、本願発明と比較して検索性能が劣る。そのため、「日」レベル、さらには「週」レベルの時間が必要である。検索性能の違いは、RDBMSテーブルを検索する場合には実体としてのレコード又はインデックス(この場合、物理構造としてはB-TREE)を読むが、内部処理として、ポインターを辿りレコード単位で読み込む必要がある。これらは、例えインデックス化されていたとしても媒体(ハードディスク)上では特にデータ量が多い場合には物理的に大きく分散されて書込まれている。よって、大量データ時には読込み時のディスク側キャッシュが利き辛くなり、一般にキャッシュが利いているときと比較し全体として100倍以上遅くなる。本願発明では、集計結果を求める等の検索において物理的に大きく分散配置されていない単一ファイルであるCSVファイル43そのものを頭から順に連続読込みを行うことにより、キャッシュ効率を最大にまで上げている(これによりノートパソコンに標準搭載されている2.5インチハードディスク(=一般サーバー上の3.5インチハードディスクに比較しアクセス性能は落ちる)のような遅い媒体においても高速性能を発揮できる)。加えて、一般にデータ読込みの後に名寄せのためにソート・マージ処理を行う必要があるが、本実験では、集計処理において、ハッシュ関数を用いてソートを行わないで動的にマージしている(図2のステップST5参照)。
【0051】
図5は、図1のデータベース処理装置1におけるデータアクセスの一例を示す図である。
【0052】
図5(a)を参照して、利用者Aは、CFILEに対してdirect read/writeにより、検索で可能なことを行うことができる。例えば、一般の3GLであるJAVA(登録商標)やC++や.NETに対応したプログラム言語用に用意された関数群、4GLに相当する検索言語IQL、OLAPであるIQLLなどにより処理を行うことができる。また、CFILEを用いることにより、RAWデータに、テーブル格納部37のダミーレコードを利用して任意の行に実フィールドを関連付けて追加等したり、フィールド定義格納部33により仮想フィールド定義をしたりすることができる。
【0053】
CFILEに対して、JOIN、DRILL THROUGH等を行うことにより、DBMSテーブルレコードデータを得ることができる。また、CFILEに対して、名寄せ、統計・集計処理、フィールド選択、データ浄化、正規化/マルチバリュー化、データ型定義、キーの動的整合性チェックを行い、direct writeにより、DBMSテーブルレコードデータを得ることができる。このDBMSテーブルレコードデータは、集計データのように扱うことができる。利用者Bは、DBMSテーブルレコードデータを利用して処理を行うことができる。
【0054】
図5(b)を参照して、自由度の高いデータローディングが実現できることについて説明する。CSV源データに対して、名寄せ等を行うことにより、direct writeによりDBMSテーブルレコードデータを得ることができる。例えば、約2000万行のデータ(約33GB)から、最短7分〜20分で同時3種の集計処理(結果行だけで数千行〜数百万行)をノートPC上にて完了することができた。また、結果をCSVデータとして書き出すこともできる。
【符号の説明】
【0055】
1 データベース処理装置、3 グループマップ作成部、5 アドレスマップ作成部、7 集計結果内訳抽出部、9 制御部、11 テーブル管理部、13 第1記憶部、15 第2記憶部、19 入力部、21 表示部、23 CFILE、24 第3記憶部、25 CSV源データファイル、33 フィールド定義格納部、35 データ格納部、37 テーブル格納部、39 データベース格納部、41 マップ格納部、43 CSVファイル、45 部分CSVファイル、47 アドレスマップファイル、49 グループマップファイル、51 部分アドレスマップファイル
【要約】
【課題】 CSV源データなどの生データのデータベースに対して、事前に抽出等の処理を行わずに、集計検索処理等を行うことに適したデータベース処理装置等を提案する。
【解決手段】 データベース処理装置1において、データベースに対して集計処理を行うときに名寄せ対象となった値を数値化したグループマップファイル47と、第2記憶部15のCSVファイル43の各データにアクセスするためのアドレスマップファイル47を管理する。集計結果内訳抽出部7は、グループマップファイル49を利用して集計結果に対応するCSVファイル43のデータを特定し、アドレスマップファイル47を利用してCSVファイル43のデータにアクセスして、表示部21に集計結果の内訳を表示する。
【選択図】図1
図1
図2
図3
図4
図5