説明

データベース管理方法、データベース管理装置およびデータベース管理プログラム

【課題】複数のデータベースを統合し新たなデータベースを構築する際の構造化データのインデクス設計を容易にするデータベース管理方法、データベース管理装置およびデータベース管理プログラムを提供することを目的とする。
【解決手段】入力部400と、データベース管理部100と、構造化データを記憶する第1の記憶部200とを備えるデータベース管理装置10が、構造化データを検索するためのインデクスを作成することにより、構造化データを管理するデータベース管理方法であって、構造化データの検索に必要なインデクス定義要求からパスに含まれるタグ名を抽出し、抽出したタグ名に対応する構造化データのタグにより囲まれるデータを取得し、取得したデータからデータ型候補を判定する。そして、判定したデータ型候補ごとに適合する数を集計し、インデクス定義の際のデータ型を決定することを特徴とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データベース管理技術に関する。
【背景技術】
【0002】
現在、様々なサービスにおいて、顧客情報、企業情報といったデータが蓄積され、個々の企業等がマーケティング活動等に利用している。その際、自社のデータだけでなく、他社あるいは自社内の他事業部等と協力して、データを共有し活用することで、大きな利益を得ようとする動きがある。また、新たな業務システムを構築するために既存システム内に保持しているデータを統合し活用したいというニーズがある。そこで、様々な情報を共有する手段の一つとして、利便性、拡張性に特徴があるXML(eXtensible Markup Language)データをデータベースに格納する機会が増えてきている。
【0003】
このXMLデータを用いたデータベースシステムにおいては、大量のXMLデータを効率よく検索するために、特定のタグおよびデータ型を指定してインデクスを定義している(例えば、非特許文献1参照)。図15に一般的なインデクス定義の例を示す。図15の下線に示すように、インデクス定義時に、このインデクスにより定義されるXMLデータのタグについてのデータ型をユーザが指定する必要がある。すなわち、インデクスを定義するためには、このインデクスに含まれるタグのデータ型を予め決定しておかなければならない。
【非特許文献1】Matthias Nicola and Bert van der Linden, “Native XML Support in DB2 Universal Database”, Proceedings of the 31st international conference on Very large data bases, Pages: 1164 -1174, Year of Publication: 2005
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、企業間あるいは、企業内での情報の統合を考えた場合に、必ずしもすべてのXMLデータのタグのデータ型が一意に決められているとは限らない。また、既存システムは、それぞれ独自のスキーマを保持していて、たとえ同じタグであってもそれぞれのスキーマで定義しているデータ型が異なる可能性がある。非特許文献1に記載された技術においては、XMLスキーマを参照してインデクス定義の際のデータ型を決定している。そのため、統合するデータベースが多くなればなるほど、参照するデータ量が増大する。その結果、インデクスを定義する際に、タグのデータ型がわからず、多くのデータ型を調べるなど、データ型を決定するためのインデクス設計が非常に困難であり手間がかかってしまう。
【0005】
このような背景に鑑みて本発明がなされたのであり、本発明は、新たなデータベースを構築する際のXMLデータに対するインデクス設計を容易にするデータベース管理方法、データベース管理装置およびデータベース管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
前記課題を解決するため、本発明のデータベース管理方法、データベース管理装置およびデータベース管理プログラムは、XMLデータを検索するために必要なインデクスを定義しておくためのインデクス定義要求からパスを抽出し、抽出したパスからタグ名を抽出し、抽出したタグ名に対応するXMLデータのタグにより囲まれるデータを取得し、取得したデータからデータ型候補を判定し、判定したデータ型候補ごとに、当該データ型候補に適合する数を集計することで、インデクス定義の際のデータ型を決定することを特徴とする。
【発明の効果】
【0007】
本発明によれば、新たなデータベースを構築する際のXMLデータに対するインデクス設計を容易にするデータベース管理方法、データベース管理装置およびデータベース管理プログラムを提供することができる。
【発明を実施するための最良の形態】
【0008】
次に、本発明を実施するための最良の形態(「実施形態」という)について、適宜図面を参照しながら詳細に説明する。
【0009】
なお、本発明において、構造化データは、XMLデータ、SGML(Standard Generalized Markup Language)データ等を含むが、本実施形態においては、XMLデータとして説明する。
【0010】
図1は、本発明の実施形態に係るデータベース管理システムの構成例を示す機能ブロック図である。データベース管理システム1は、データベース管理装置10と、ネットワーク30を介して接続される各情報処理装置20(20a,20b,20c)とを含んで構成される。
【0011】
なお、この各情報処理装置20(20a,20b,20c)は、A社,B社,C社のように他社の複数の情報処理装置であっても、自社内の他の事業部等の複数の情報処理装置であってもよい。また、情報処理装置20a,20b,20cは3つに限定されることなく、複数の情報処理装置で構成されていればよい。
【0012】
情報処理装置20は、通信部21と、制御部22と、一時記憶部23と、XMLデータベース24とを備えている。
【0013】
通信部21は、ネットワーク30と接続してデータベース管理装置10との間で、通信を可能にするものである。また、制御部22は、一時記憶部23に記憶したアプリケーションプログラムにより、XMLデータベース24の管理と、ネットワーク30を介したデータベース管理装置10とのデータ通信を制御する。
【0014】
XMLデータベース24は、各情報処理装置20が持つXMLデータを蓄積するものである。このXMLデータベース24は、それぞれ独自のXMLスキーマを保持しており、たとえ同じタグであってもそれぞれのXMLデータベースによって、スキーマで定義しているデータ型が異なることがある。ただし、図1の構成は実施例であり、本発明においてXMLデータベース24は構成要素として必ずしも必要なものではない。
【0015】
一方、データベース管理装置10は、入力部400と、データベース管理部100と、第1の記憶部200と、第2の記憶部300と、出力部500と、一時記憶部600と、通信部700とを含んで構成される。
【0016】
入力部400は、外部からの処理要求を受け付ける機能を有する。例えば、XMLデータを検索するためにインデクスを定義しておくためのインデクス定義要求や、XMLデータを検索する処理における探索条件等を入力する機能を有し、キーボード等により実現される。もしくは、後述のインデクス定義要求文(図4参照)を電文として受け付けるプログラムとして実現される。
【0017】
第1の記憶部200は、XMLデータ210とXMLデータを検索するためのインデクス220とを記憶する機能を有し、フラッシュメモリ、磁気ディスク等の記憶装置で構成される。
【0018】
具体的には、第1の記憶部200は、各情報処理装置20のXMLデータベース24からネットワーク30を介して取得したXMLデータ210を記憶する。また、データベース管理部100において作成されたインデクス220を記憶する。
【0019】
図2にXMLデータ210の一例を示す。XMLデータは、タグと呼ばれる識別子を用いて、タグにより囲まれるデータの内容を記述する。XMLデータで用いられるタグ名は、ユーザが任意に設定可能であり、タグにより囲まれるデータのデータ型についても、ユーザが任意に設定できるものである。
【0020】
なお、ここでいうデータ型は、タグにより囲まれるデータに使用するデータの種類をいい、例えば、string型(文字列)、integer型(整数)等である。
【0021】
第2の記憶部300は、XMLデータのタグ名とデータ型とを対応付けたデータ型情報310を記憶し、第1の記憶部200と同様に、フラッシュメモリ、磁気ディスク等の記憶装置で構成される。なお、第1の記憶部200と第2の記憶部300は、必ずしも分かれている必要はなく、一つの記憶部で構成することも可能である。
【0022】
図3(a)は、第2の記憶部300におけるデータ型情報310の一例を示す図である。図3(a)のデータ型情報310は、XMLデータのタグ名311によって、そのタグ名311のタグにより囲まれるデータのデータ型312を一意に決定するために、予めユーザが設定しておく情報である。図3(a)は、データベース管理部100が、このデータ型情報310により、例えばタグ名が「productID」であれば、そのデータのデータ型を「string型」に決定することを意味する。
【0023】
また、このデータ型情報310は、図3(b)に示すように、インデクス種別313をさらに対応付けた情報とすることも可能である。このようにインデクス種別313を設定しておくことで、ユーザがタグの属性に対応したインデクスの種別を予め設定しておくことができる。例えば、タグ名「productID」の場合は、B-treeインデクスで作成し、タグ名「性別」の場合は、ビットマップインデクスで作成することができる。また、ユーザがインデクス種別の変更をする場合においても、データ型情報310の設定を見直すことによって、インデクス種別313を変更したインデクスを作成することが可能となる。
【0024】
次に、データベース管理部100は、XMLデータのデータベースを管理する機能を有し、制御部110と、インデクス管理部120とを備える。なお、データベース管理部100は、データベース管理装置10にインストールされたデータベース管理のためのプログラムであるデータベース管理システム(DataBase Management System:DBMS)を当該データベース管理装置10内のCPU(Central Processing Unit)が読み取って実行することにより実現される。
【0025】
制御部110は、データベース管理装置10全体の制御を行い、入力部400で受け付けたインデクス定義要求についてのインデクス管理部120での制御や、作成したインデクス220を用いての検索処理の制御等を行う。
【0026】
インデクス管理部120は、タグ名抽出部121、データ取得部122、データ型候補判定部123、データ型候補集計部124、データ型決定部125、インデクス作成部126、およびインデクス決定部127を備えている。
【0027】
タグ名抽出部121は、入力部400を介して受け付けたインデクス定義要求からインデクスのパスの部分を抽出し、さらに抽出したパスからタグ名を抽出する機能を有する。
【0028】
図4に、本実施形態に係るインデクス定義要求の一例を示す。タグ名抽出部121は、このインデクス定義要求からパスの部分である「/product/productID」を抽出する。そしてこの抽出したパスからタグ名「productID」を抽出する機能を有する。
【0029】
なお、従来のインデクス定義の例である図15と対比して、本実施形態に係る図4のインデクス定義要求は、データ型を指定する必要のないことを特徴とする。
【0030】
データ取得部122は、第1の記憶部200に記憶されたXMLデータ210それぞれを読み出し、この読み出したXMLデータの中からタグ名抽出部121で抽出したタグ名のタグに囲まれるデータを取得する機能を有する。例えば、図2に示すXMLデータ210において、タグ名抽出部121で抽出されたタグ名が「productID」である場合、開始タグ「<productID>」と終了タグ「</productID>」とに囲まれたデータ「123」を、データ取得部122は取得する。
【0031】
データ型候補判定部123は、データ取得部122で取得したデータそれぞれに対し、データに含まれる文字、記号、数字等を参照して、そのデータのデータ型候補を判定する機能を有する。本実施形態の場合、そのデータ型候補を、string型(文字列)、float型(32ビット単精度浮動小数点数)、decimal型(10進数)、integer型(整数)から決定するものである。
【0032】
データ型候補集計部124は、データ取得部122で取得したデータそれぞれについて、データ型候補判定部123で判定したデータ型候補ごとに、データ型候補に適合する数を集計する機能を有する。
【0033】
図5に、本実施形態におけるデータ型候補に適合する数を集計した検証データ情報550の一例を示す。検証データ情報550は、タグ名551と、そのタグ名551についてデータ型候補判定部123において判定されたデータ型候補552と、そのデータ型候補に適合したデータの件数553とを対応付けた情報を有する。
【0034】
図5の例においては、タグ名抽出部121で抽出されたタグ名551が「productID」であり、データ型候補判定部123において、データ型候補552が、「string型」、「float型」、「decimal型」、「integer型」の4つの候補に決定された場合である。そして、データ型候補集計部124により、データ取得部122が取得したデータすべてについて、そのデータ型候補に適合する数を集計した結果が適合件数553となる。ここでは、タグ名「productID」について、「string型」の適合件数は10件、「float型」の適合件数は890件、「decimal型」の適合件数は100件、「integer型」の適合件数は100,000件であることを示している。
【0035】
データ型決定部125は、データ型候補判定部123においてデータ型候補として決定したものの中から、インデクス定義要求の対象であるインデクスにおいて定義するデータ型を決定する機能を有する。
【0036】
具体的には、データ型決定部125は、データ型候補集計部124が集計した検証データ情報550において、いずれかのデータ型候補552の適合件数553が所定数を超えたとき、その適合件数553が最も多いデータ型候補552を、タグ名抽出部121が抽出したタグ名のタグにより囲まれるデータのデータ型として決定する。
【0037】
図5の例においては、データ型候補552のうち、「integer型」の適合件数553が100,000件と最も多いため、データ型決定部125は、「integer型」をデータ型として決定する。
【0038】
なお、所定数は、ユーザが予め設定しておくものであり、ユーザがXMLデータの総データ数等を考慮して決定するものである。
【0039】
また、データ型決定部125は、データ型候補集計部124が集計した検証データ情報550において、いずれのデータ型候補552においてもその適合件数553が所定数に達しない場合に、第2の記憶部300に記憶したデータ型情報310(図3参照)に基づいてデータ型を決定する。つまり、データ型決定部125は、データ型情報310において、タグ名抽出部121で抽出したタグ名と同じタグ名311に対応するデータ型312を、このタグ名のタグにより囲まれるデータのデータ型に決定する。
【0040】
例えば、タグ名抽出部121で抽出されたタグ名が「productID」であった場合に、検証データ情報550の適合件数553が所定数に達していないときには、図3(a)のタグ名311のうち、タグ名抽出部121で抽出されたタグ名と同じタグ名311の「productID」に対応するデータ型312の「string型」を、データ型決定部125はデータ型として決定する。
【0041】
さらに、データ型決定部125は、タグ名抽出部121で抽出したタグ名が、第2の記憶部300に記憶したデータ型情報310のタグ名311に設定されていない場合には、string型、float型、decimal型、integer型のすべてを、このタグ名のタグにより囲まれるデータのデータ型として決定することもできる。
【0042】
また、データ型決定部125は、データ型候補集計部124が集計した検証データ情報550において、いずれのデータ型候補においてもその適合件数553が所定数に達しない場合に、string型、float型、decimal型、integer型のすべてを、タグ名抽出部121が抽出したタグ名のタグにより囲まれるデータのデータ型として決定することもできる。
【0043】
次に、インデクス作成部126は、入力部400に受け付けられたインデクス定義要求と、データ型決定部125で決定したデータ型とに基づいて、インデクスを作成する機能を有する。よって、データ型決定部125において、一つのデータ型に決定された場合は、タグ名抽出部121で抽出されたタグ名につき、一つのインデクスが作成される。一方、string型、float型、decimal型、integer型のすべてをデータ型に決定した場合は、タグ名抽出部121で抽出された一つのタグ名について、4つのデータ型すべてでインデクスを作成する。また、インデクス作成部126は、作成したインデクスを第1の記憶部200に記憶させる機能を有する。
【0044】
インデクス決定部127は、一つのタグ名について、string型、float型、decimal型、integer型のすべてでインデクスが作成された場合に、データ型決定部125で決定したデータ型と一致しないデータ型で作成されたインデクスを削除する機能を有する。
【0045】
次に、一時記憶部600は、データベースを管理するためのプログラムであるデータベース管理システム(DBMS)を記憶し、また、データベース管理部100の処理結果を一時的に記憶する。具体的には、データ型候補集計部124が集計した検証データ情報550等を一時的に記憶する機能を有する。
【0046】
通信部700は、ネットワーク30を介して各情報処理装置20(20a,20b,20c)との通信を可能にする機能を有する。本実施形態では、A社,B社,C社等の各情報処理装置20が備えるXMLデータベース24のXMLデータを、通信部700は、ネットワーク30を介して取得する。
【0047】
出力部500は、データベース管理部100で処理された情報を表示するものであり、例えば液晶ディスプレイ等で構成される。
【0048】
(第1の実施形態)
次に、図1を参照しつつ、図6に沿って、本発明の第1の実施形態に係るデータベース管理方法の処理を説明する。図6は、データベース管理装置10がXMLデータのインデクス定義をする際の処理を示すフローチャートである。
【0049】
まず、入力部400に入力されたインデクス定義要求から、タグ名抽出部121がパスを抽出する(ステップS601)。ここでは、例として図4に示されるインデクス定義要求が入力され、パスの部分である「/product/productID」が抽出されるものとする。
【0050】
次に、タグ名抽出部121は、抽出したパスからさらにタグ名を抽出する(ステップS602)。ここでは、タグ名抽出部121により、タグ名「productID」が抽出される。
【0051】
次に、データ取得部122が、第1の記憶部200からXMLデータ210を読み出し、読み出したXMLデータ210の中から、タグ名抽出部121で抽出したタグ名のタグにより囲まれるデータを取得する(ステップS603)。
【0052】
そして、データ型候補判定部123は、ステップS603でデータ取得部122が取得したデータを1件取り込み、そのデータ型候補を判定する(ステップS604)。なお、データ型候補判定部123が、データ型候補を判定する具体的な処理の流れ(図9参照)は後述する。
【0053】
ステップS604において、データ型候補判定部123が、データ型候補を判定すると、データ型候補集計部124は、その判定したデータ型候補について、図5で示した検証データ情報550のデータ型候補552に対応する適合件数553をカウントアップし更新する(ステップS605)。
【0054】
そして、データ取得部122が取得したすべてのデータについてデータ型候補判定部123がデータ型候補を判定したか否かを判断する(ステップS606)。データ型候補の判定が終わっていないデータがある場合には(ステップS606→No)、ステップS604に戻って処理を続ける。
【0055】
一方、データ取得部122が取得したすべてのデータについてのデータ型候補の判定が終わっている場合には(ステップS606→Yes)、データ型決定部125は、データ型候補集計部124が集計した検証データ情報550において、いずれかのデータ型候補の適合件数553が、ユーザが設定した所定数を超えているか否かを判断する(ステップS607)。
【0056】
そして、適合件数553が所定数を超えているデータ型候補がある場合には(ステップS607→Yes)、データ型決定部125は、その適合件数553が最も多いデータ型候補を、タグ名抽出部121が抽出したタグ名のタグにより囲まれるデータのデータ型に決定する(ステップS608)。そして、インデクス作成部126が、決定したデータ型でインデクスを作成する(ステップS609)。
【0057】
図7に本実施形態のデータ型決定時に出力部500に出力される表示画面の一例を示す。タグ名抽出部121で抽出されたタグ名「productID」について、データ型候補判定部123において、「string型」、「float型」、「decimal型」、「integer型」の4つのデータ型候補が判定され、そのうち、適合件数が最も多い「integer型」(図7の符号701)にデータ型が決定されたことを表示する。
【0058】
図6に戻り説明する。次に、データ型決定部125は、第2の記憶部300に記憶したデータ型情報310(図3参照)から、タグ名抽出部121で抽出したタグ名に対応したデータ型312を取得し、ステップS608で決定したデータ型と一致するか否かを判断する(ステップS610)。一致している場合には(ステップS610→Yes)、インデクス定義処理を終了する。一方、一致していない場合には(ステップS610→No)、データ型情報310で設定されているデータ型312を、ステップS608で決定したデータ型に更新する(ステップS611)。
【0059】
一方、ステップS607において、いずれのデータ型候補においても、その適合件数553が所定数を超えていない場合には(ステップS607→No)、データ型決定部125は、第2の記憶部300に記憶したデータ型情報310(図3参照)に基づいて、データ型を決定する(ステップS612)。つまり、タグ名抽出部121で抽出したタグ名と同じタグ名311に対応するデータ型312を、このタグ名のタグにより囲まれるデータのデータ型に決定する。そして、インデクス作成部126が、決定したデータ型でインデクスを作成する(ステップS613)。
【0060】
図8に、本実施形態のデータ型決定時において、決定したデータ型と適合しないデータ型のデータを出力部500においてwarningとして表示する例を示す。データ型を決定した際に、決定したデータ型と適合しないデータが存在する場合は、ユーザが適合しないデータを特定できるように、この決定したデータ型と適合しないデータをwarningリストとして表示する。また、決定したデータ型に適合しないデータの件数、および判定した総データ数に対する決定したデータ型のデータ数の割合を適合率として出力できるようにする。
【0061】
(データ型候補の判定処理)
次に、ステップS604において、データ型候補判定部123が行うデータ型候補の判定処理を具体的に説明する。図9は、データ型候補判定部123が、データ取得部122が取得したデータを1件取り込み、そのデータ型候補を判定する処理を示すフローチャートである。
【0062】
データ型候補判定部123は、データを取得すると、そのデータの中に、0〜9,+,−,E,e,.(小数点)のいずれかの記号が含まれるか否かを判断する(ステップS901)。含まれていないと判断した場合には(ステップS901→No)、データ型候補をstring型に判定する(ステップS902)。
【0063】
ステップS901において、0〜9,+,−,E,e,.(小数点)のいずれかの記号が含まれていると判断した場合には(ステップS901→Yes)、さらにそのデータの中にE,eの記号が含まれているか否かを判断する(ステップS903)。E,eの記号が含まれていると判断した場合には(ステップS903→Yes)、データ型候補をstring型、float型に判定する(ステップS904)。
【0064】
ステップS903において、E,eの記号が含まれていないと判断した場合には(ステップS903→No)、さらにそのデータの中に、.(小数点)の記号が含まれているか否かを判断する(ステップS905)。.(小数点)の記号が含まれていると判断した場合(ステップS905→Yes)には、データ型候補をstring型、float型、decimal型に判定する(ステップS906)。
【0065】
ステップS905において、.(小数点)の記号が含まれていないと判断した場合には(ステップS905→No)、データ型候補をstring型、float型、decimal型、integer型に判定する(ステップS907)。
【0066】
このようにすることで、データ型候補判定部123は、タグ抽出部121で抽出したタグ名のタグにより囲まれるデータのデータ型候補を判定することができる。
【0067】
このように第1の実施形態においては、XMLデータ210に対するインデクス定義時に、データ型を指定する必要がないため、従来技術のように大量のデータを参照した上で、データ型を決定するという手間を省くことができる。
【0068】
また、データ型候補552の適合件数553が所定数を超えている場合は、その適合件数553が最も多いデータ型候補552を、当該タグ名により囲まれるデータのデータ型に決定することで、効率的にインデクスの作成を行うことが可能となる。また、データ型候補552の適合件数553が所定数を超えていない場合であっても、予めユーザが設定したデータ型情報310により、ユーザが最も適していると判断するデータ型に決定し、インデクスを作成することができる。
【0069】
さらに、適合件数553が最も多いデータ型と、データ型情報310でユーザが予め設定したデータ型とを比較し、両者が異なる場合には、データ型情報310におけるデータ型をその適合件数553が最も多いデータ型に書き換えることにより、データ型情報310を設定し直すことが可能となる。これにより、データ型情報310を設定し直した後のインデクス設計について、より効率的に行うことができる。
【0070】
なお、出力部500において、インデクス設計に用いるデータ型を、どのデータ型に決定したか表示することで、ユーザは、データ型として決定されなかったデータ型のデータについて、その取り扱いの判断をする機会を得ることできる。また、適合しないデータの件数、適合率、および適合しないデータを出力部500に表示させることによって、決定したデータ型とは適合しないデータ型のデータについて、その取り扱いの判断材料をユーザに示すことができる。
【0071】
(第2の実施形態)
第2の実施形態は、データ型情報310(図3参照)にタグ名抽出部121が抽出したタグ名が設定されていない場合、またはデータ型情報310そのものが設定されていない場合に、データ型決定部125が、予め設定したデータ型候補すべてをインデクス作成に用いるデータ型として決定することを特徴とする。
【0072】
図10は、第2の実施形態に係るデータベース管理装置10が、XMLデータのインデクス定義をする際の処理を示すフローチャートである。第2の実施形態においては、データベース管理装置10は、図6のステップS601からステップS608と同様の処理を行う。
【0073】
そして、図10のステップS607において、検証データ情報550(図5参照)のいずれのデータ型候補552についても、適合件数553が、所定数を超えていない場合で(ステップS607→No)、第2の記憶部300に予め設定したデータ型情報310(図3参照)に、タグ抽出部121が抽出したタグ名と同じタグ名311が設定されていないとき、またはデータ型情報310そのものが設定されていないときに、データ型決定部125は、予め設定したデータ型候補であるstring型、float型、decimal型、integer型のすべてをインデクス作成に用いるデータ型に決定する(ステップS1001)。そして、インデクス作成部126において、決定した4つのデータ型でインデクスを作成する(ステップS1002)。
【0074】
このようにすることで、検証データ情報550の適合件数553が、所定数を超えない場合であり、データ型情報310にも、タグ名抽出部121が抽出したタグ名が設定されていないとき、または、もともとデータ型情報310が設定されていないときであっても、タグ名抽出部121が抽出したタグ名のタグに囲まれるデータのデータ型を決定し、インデクスを作成することができる。
【0075】
(第3の実施形態)
第3の実施形態は、データベース管理装置10が、予め設定したすべてのデータ型についてインデクスを作成した後に、データ型決定部125が決定したデータ型と一致しないデータ型で作成したインデクスを削除することを特徴とする。
【0076】
図11は、本発明の第3の実施形態に係るデータベース管理装置10が、XMLデータのインデクス定義をする際の処理を示すフローチャートである。なお、図6に示すインデクス定義処理と同じ処理を行うステップについては、同じのステップ番号を付して説明する。
【0077】
まず、図6と同様に、タグ名抽出部121は、入力されたインデクス定義要求からパスを抽出する(ステップS601)。この時入力部400(図1参照)に入力されるインデクス定義要求は、図4に示す例のようにデータ型を指定する必要はない。
【0078】
次に、インデクス作成部126は、抽出したパスに対し、予め設定しておいたstring型、float型、decimal型、integer型のデータ型で、インデクスを作成する(ステップS1101)。
【0079】
そして、データベース管理装置10は、図6のステップS602からステップS613までの処理と同様の処理を行う。ただし、図6のステップS609とステップS613のインデクス作成処理は、すでにすべてのデータ型についてのインデクスをステップS1101で作成しているため行わない。
【0080】
続いて、インデクス決定部127は、ステップS608またはステップS612で決定したデータ型と一致しないデータ型で作成されたインデクスを削除する(ステップS1102)。
【0081】
例えば、インデクス決定部127は、ステップS608においてデータ型決定部125が決定したデータ型が、integer型であったとした場合、ステップS1101で作成した4つのデータ型のインデクスのうち、string型、float型、decimal型の3つのデータ型について作成したインデクスを削除する。
【0082】
また、インデクス決定部127は、ステップS602で抽出されたタグ名が「productID」である場合、データ型情報310(図3参照)のタグ名311「productID」に対応するデータ型312である「string型」と一致しないfloat型、decimal型、integer型で作成されたインデクスについて削除する。
【0083】
このようにすることでも、ユーザは、インデクス定義要求を入力部400に入力する際、データ型を予め決定しておく必要がなくなり、インデクス設計時の手間を省くことができる。
【0084】
(第4の実施形態)
第4の実施形態は、データベース管理装置10の第1の記憶部200に、XMLデータ210が入力されていない状態においても、インデクス定義処理を行うことができることを特徴とする。
【0085】
図12において、まず、入力部400(図1参照)に入力されたインデクス定義要求から、タグ名抽出部121がパスを抽出し、抽出したパスからタグ名を抽出する(ステップS1201)。なお、このとき入力部400に入力されるインデクス定義要求は、図4に示す例のようにデータ型を指定する必要がないものである。
【0086】
次に、データ型決定部125は、ステップS1201で抽出したタグ名と同じタグ名が、第2の記憶部300におけるデータ型情報310(図3参照)のタグ名311として設定されているか否かを判断する(ステップS1202)。このタグ名が、データ型情報310に設定されている場合は(ステップS1202→Yes)、データ型情報310に基づいてデータ型を決定する(ステップS1203)。そして、インデクス作成部126が、決定したデータ型でインデクスを作成する(ステップS1205)。
【0087】
一方、抽出したタグ名と同じタグ名が、データ型情報310のタグ名311として設定されていない場合には(ステップS1202→No)、string型、float型、decimal型、integer型のすべてをデータ型に決定する(ステップS1204)。そして、インデクス作成部126が、決定した4つのデータ型でインデクスを作成する(ステップS1205)。
【0088】
このようにすることで、データベース管理装置10が、各情報処理装置20からXMLデータ210を取得する前など、第1の記憶部200に、XMLデータ210が存在しないときでも、インデクス設計を行うことができる。
【0089】
(第5の実施形態)
本発明の第5の実施形態に係るデータベース管理方法は、string型、float型、decimal型、integer型の複数のデータ型で作成されたインデクスを、インデクス決定部127が一意に決定し、決定したデータ型以外のデータ型で作成されたインデクスを削除することを特徴とする。
【0090】
図13において、まず、入力部400(図1参照)に、XMLデータを検索するための探索条件が入力されると、その入力された探索条件から、タグ名抽出部121が探索条件に指定されるパスに含まれるタグ名を抽出する(ステップS1301)。例えば、図14に示す探索条件を含む検索要求が入力部400に入力されたとすると、タグ名抽出部121は、タグ名として「productID」を抽出する。
【0091】
次に、インデクス決定部127は、第1の記憶部200に記憶されたインデクス220を検索し、抽出したタグ名について複数のデータ型でインデクスが作成されているか否かを判断する(ステップS1302)。そして、複数のデータ型でインデクスが作成されていない場合には(ステップS1302→No)、インデクス決定処理を終了する。
【0092】
一方、複数のデータ型でインデクスが作成されている場合には(ステップS1302→Yes)、入力部400に入力された探索条件のタグの比較対象によって、インデクス決定部127は、データ型を決定する(ステップS1303)。例えば、タグ名「productId」について、string型、float型、decimal型、integer型の4つのデータ型でインデクスが定義されている場合に、図14の下線に示す、タグの比較対象である「"2"」のデータ型を判別する。そして、比較対象「"2"」がstring型であるので、インデクス決定部127は、検索するインデクスのデータ型をstring型に決定する。
【0093】
次に、インデクス決定部127は、決定したデータ型以外のデータ型で作成されたインデクスを削除する(ステップS1304)。図14の例においては、決定したデータ型がstring型であるので、抽出した「productID」のインデクスのうち、string型以外のfloat型、decimal型、integer型で作成されたインデクスを削除する。
【0094】
このようにすることで、ユーザが入力部400に入力した探索条件に沿った、データ型のXMLデータを検索することが可能となる。また、不要なデータ型で作成されたインデクスを削除することができる。
【図面の簡単な説明】
【0095】
【図1】本発明の実施形態に係るデータベース管理システムの構成を示す機能ブロック図である。
【図2】本発明の実施形態に係るXMLデータの一例を示す図である。
【図3】本発明の実施形態に係るデータ型情報の例を示す図である。
【図4】本発明の実施形態に係るインデクス定義要求の一例を示す図である。
【図5】本発明の実施形態に係る検証データ情報の一例を示す図である。
【図6】本発明の第1の実施形態に係るインデクス定義処理を示すフローチャートである。
【図7】本発明の実施形態に係るデータ型決定時の表示画面の一例を示す図である。
【図8】本発明の実施形態に係る決定したデータ型とは適合しないデータについての警告表示の一例を示す図である。
【図9】本発明の実施形態に係るデータ型候補の判定処理を示すフローチャートである。
【図10】本発明の第2の実施形態に係るインデクス定義処理を示すフローチャートである。
【図11】本発明の第3の実施形態に係るインデクス定義処理を示すフローチャートである。
【図12】本発明の第4の実施形態に係るXMLデータを取得していない場合のインデクス定義処理を示すフローチャートである。
【図13】本発明の第5の実施形態に係るインデクスを一意に決定する処理を示すフローチャートである。
【図14】本発明の実施形態に係る探索条件を含む検索要求の一例を示す図である。
【図15】従来技術におけるインデクス定義の一例を示す図である。
【符号の説明】
【0096】
1 データベース管理システム
10 データベース管理装置
20 情報処理装置
30 ネットワーク
100 データベース管理部
110 制御部
120 インデクス管理部
121 タグ名抽出部
122 データ取得部
123 データ型候補判定部
124 データ型候補集計部
125 データ型決定部
126 インデクス作成部
127 インデクス決定部
200 第1の記憶部
210 XMLデータ
220 インデクス
300 第2の記憶部
310 データ型情報
400 入力部
500 出力部
600 一時記憶部
700 通信部

【特許請求の範囲】
【請求項1】
構造化データを格納するデータベース管理装置が、前記構造化データを検索するためのインデクスを作成することにより前記構造化データを管理するデータベース管理方法であって、
前記データベース管理装置は、
外部からの処理要求を受け付ける入力部と、前記構造化データのデータベースを管理するデータベース管理部と、前記構造化データのデータベースと前記作成したインデクスとを記憶する第1の記憶部とを含んで構成され、
前記入力部は、
前記構造化データを検索するために必要な前記インデクスを定義するためのインデクス定義要求を受け付け、
前記データベース管理部は、
前記受け付けたインデクス定義要求から前記インデクスに示すパスに含まれるタグ名を抽出し、
前記第1の記憶部に記憶されたデータベースから前記構造化データを読み出して、前記読み出した構造化データから、前記抽出したタグ名のタグにより囲まれるデータを取得し、
前記取得したデータそれぞれを参照して、前記データの適合するデータ型候補を判定し、
前記抽出したタグ名のタグにより囲まれるデータそれぞれについて、前記判定したデータ型候補ごとに、当該データ型候補に適合する数を集計し、
前記適合する数を集計したデータ型候補のうち、いずれかのデータ型候補においてその数が所定数を超えたとき、前記所定数を超えたデータ型候補を、前記インデクス定義要求の対象であるインデクスにおいて定義するデータ型として決定し、
前記決定したデータ型でインデクスを作成し、前記作成したインデクスを前記第1の記憶部に記憶する
ことを特徴とするデータベース管理方法。
【請求項2】
前記データベース管理部は、
前記データ型候補を判定するときに、前記取得したデータに含まれる文字、記号、および数字を参照して、前記データの適合するデータ型候補を判定する
ことを特徴とする請求項1に記載のデータベース管理方法。
【請求項3】
前記データベース管理部は、
前記適合する数を集計したデータ型候補のうち、いずれかのデータ型候補においてその数が所定数を超えたとき、前記適合する数が最も多いデータ型候補を、前記インデクス定義要求の対象であるインデクスにおいて定義するデータ型として決定する
ことを特徴とする請求項1または請求項2に記載のデータベース管理方法。
【請求項4】
前記データベース管理装置は、
前記構造化データに含まれるタグのタグ名と前記タグ名のタグにより囲まれるデータのデータ型とを対応付けたデータ型情報を記憶する第2の記憶部をさらに備え、
前記データベース管理部は、
前記適合する数を集計したデータ型候補のうち、いずれのデータ型候補においてもその数が所定数に達しない場合に、前記第2の記憶部に記憶したデータ型情報において、前記抽出したタグ名に対応するデータ型を、前記インデクス定義要求の対象であるインデクスにおいて定義するデータ型として決定する
ことを特徴とする請求項1乃至請求項3のいずれか1項に記載のデータベース管理方法。
【請求項5】
前記データベース管理部は、
前記抽出したタグ名が前記データ型情報に設定されていない場合に、前記データ型候補すべてを、前記インデクス定義要求の対象であるインデクスにおいて定義するデータ型として決定する
ことを特徴とする請求項4に記載のデータベース管理方法。
【請求項6】
前記データベース管理部は、
前記適合する数を集計したデータ型候補のうち、いずれのデータ型候補においてもその数が所定数に達しない場合に、前記データ型候補すべてを、前記インデクス定義要求の対象であるインデクスにおいて定義するデータ型として決定する
ことを特徴とする請求項1乃至請求項3のいずれか1項に記載のデータベース管理方法。
【請求項7】
前記データベース管理部は、
前記受け付けたインデクス定義要求から前記インデクスに示されるパスを抽出し、
前記抽出したパスに対し、前記データ型候補すべてについてインデクスを作成し、前記作成したインデクスを前記第1の記憶部に記憶し、
前記第1の記憶部に記憶され前記抽出したパスに対し作成したデータ型候補すべてについてのインデクスのうち、前記インデクス定義要求の対象であるインデクスにおいて定義するデータ型として決定したデータ型と異なるデータ型で作成されたインデクスを削除する
ことを特徴とする請求項1乃至請求項4のいずれか1項に記載のデータベース管理方法。
【請求項8】
前記データ−ベース管理部は、
前記第1の記憶部に前記構造化データが記憶されていない場合に、
前記第2の記憶部に記憶したデータ型情報において、前記抽出したタグ名に対応するデータ型を、前記インデクス定義要求の対象であるインデクスにおいて定義するデータ型として決定する
ことを特徴とする請求項4に記載のデータベース管理方法。
【請求項9】
前記データベース管理部は、
前記抽出したタグ名が前記データ型情報に設定されていない場合に、前記データ型候補すべてを、前記インデクス定義要求の対象であるインデクスにおいて定義するデータ型として決定する
ことを特徴とする請求項8に記載のデータベース管理方法。
【請求項10】
前記データベース管理装置は、
前記入力部に、前記構造化データを検索するための探索条件が入力された場合において、
前記データベース管理部は、
前記入力された探索条件に指定されるタグ名を抽出し、
前記第1の記憶部に記憶されたインデクスから、前記抽出された探索条件に指定されるタグ名と同じタグ名のインデクスを検索し、
前記検索された同じタグ名のインデクスが、複数のデータ型で作成されていると判定したときに、
前記複数のデータ型で作成されたインデクスそれぞれのデータ型と、前記探索条件で指定された前記構造化データを検索する条件となる比較対象のデータ型とを比較して、前記複数のデータ型で作成されたインデクスのうち、前記比較対象のデータ型と異なるデータ型で作成されたインデクスを削除する
ことを特徴とする請求項1乃至請求項9のいずれか1項に記載のデータベース管理方法。
【請求項11】
外部からの処理要求を受け付ける入力部と、構造化データのデータベースを管理するデータベース管理部と、前記構造化データのデータベースと前記構造化データを検索するためのインデクスとを記憶する第1の記憶部とを含んで構成されるデータベース管理装置であって、
前記入力部は、
前記構造化データを検索するために必要な前記インデクスを定義するためのインデクス定義要求を受け付け、
前記データベース管理部は、
前記受け付けたインデクス定義要求から前記インデクスに示すパスに含まれるタグ名を抽出し、
前記第1の記憶部に記憶されたデータベースから前記構造化データを読み出して、前記読み出した構造化データから、前記抽出したタグ名のタグにより囲まれるデータを取得し、
前記取得したデータそれぞれを参照して、前記データの適合するデータ型候補を判定し、
前記抽出したタグ名のタグにより囲まれるデータそれぞれについて、前記判定したデータ型候補ごとに、当該データ型候補に適合する数を集計し、
前記適合する数を集計したデータ型候補のうち、いずれかのデータ型候補においてその数が所定数を超えたとき、前記所定数を超えたデータ型候補を、前記インデクス定義要求の対象であるインデクスにおいて定義するデータ型として決定し、
前記決定したデータ型でインデクスを作成し、前記作成したインデクスを前記第1の記憶部に記憶する
ことを特徴とするデータベース管理装置。
【請求項12】
請求項1乃至請求項10のいずれか1項に記載のデータベース管理方法をコンピュータに実行させるためのデータベース管理プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate