(58)【調査した分野】(Int.Cl.,DB名)
1または複数のフィールドよりなる、各々レコード番号が付与されたレコードを配列したテーブルを表すインデックスデータを、統合データに統合するデータ統合方法であって、
前記インデックスデータは、前記各フィールドの各々に対応して設けられたインデックスを含み、
前記各インデックスは、
当該インデックスが含まれるインデックスデータが表す前記テーブルのレコードの当該インデックスに対応するフィールドの値として用いられている値を各エントリに登録した値リストと、
各エントリに、当該インデックスが含まれるインデックスデータが表す前記テーブルの、当該エントリの順位と同じ値のレコード番号のレコードの、当該インデックスに対応するフィールドの値が登録されている、当該インデックスの前記値リストのエントリの順位を登録した対応値リストとを含み、
前記統合データは、前記各フィールドの各々に対応して設けられた統合値リストと、前記各フィールドの各々に対応して設けられた対応統合値リストとを含み、
当該データ統合方法は、
各フィールドについて、統合データに統合するインデックスデータの当該フィールドに対応するインデックスの値リストに含まれる値のうちの、当該フィールドに対応する前記統合値リストに登録されていない値を当該統合値リストに追加登録するステップと、
各フィールドについて、統合データに統合するインデックスデータの当該フィールドに対応するインデックスの対応値リストの各エントリについて求めた対応統合値を、当該エントリの当該対応値リスト中の順位に従った順番で並べた配列を、前記統合データの当該フィールドに対応する対応統合値リストに追加登録、もしくは、当該配列を当該フィールドに対応する新たな対応統合値リストとして前記統合データに追加するステップとを有し、
前記対応値リストのエントリについて求めた前記対応統合値は、当該対応値リストのエントリに登録されている順位と同じ順位の、当該対応値リストが属するインデックスの前記値リストに登録されている値と同じ値が登録される、当該対応値リストが属する前記インデックスに対応するフィールドに対応する前記統合値リストのエントリの順位に等しいことを特徴とするデータ統合方法。
1または複数のフィールドよりなる、各々レコード番号が付与されたレコードを配列したテーブルを表すインデックスデータを、統合データに統合するデータ統合装置であって、
前記インデックスデータは、前記各フィールドの各々に対応して設けられたインデックスを含み、
前記各インデックスは、
当該インデックスが含まれるインデックスデータが表す前記テーブルのレコードの当該インデックスに対応するフィールドの値として用いられている値を各エントリに登録した値リストと、
各エントリに、当該インデックスが含まれるインデックスデータが表す前記テーブルの、当該エントリの順位と同じ値のレコード番号のレコードの、当該インデックスに対応するフィールドの値が登録されている、当該インデックスの前記値リストのエントリの順位を登録した対応値リストとを含み、
前記統合データは、前記各フィールドの各々に対応して設けられた統合値リストと、前記各フィールドの各々に対応して設けられた対応統合値リストとを含み、
当該データ統合装置は、
各フィールドについて、統合データに統合するインデックスデータの当該フィールドに対応するインデックスの値リストに含まれる値のうちの、当該フィールドに対応する前記統合値リストに登録されていない値を当該統合値リストに追加登録する値統合手段と、
各フィールドについて、統合データに統合するインデックスデータの当該フィールドに対応するインデックスの対応値リストの各エントリについて求めた対応統合値を、当該エントリの当該対応値リスト中の順位に従った順番で並べた配列を、前記統合データの当該フィールドに対応する対応統合値リストに追加登録、もしくは、当該配列を当該フィールドに対応する新たな対応統合値リストとして前記統合データに追加する対応値登録手段とを有し、
前記対応値リストのエントリについて求めた前記対応統合値は、当該対応値リストのエントリに登録されている順位と同じ順位の、当該対応値リストが属するインデックスの前記値リストに登録されている値と同じ値が登録される、当該対応値リストが属する前記インデックスに対応するフィールドに対応する前記統合値リストのエントリの順位に等しいことを特徴とするデータ統合装置。
【背景技術】
【0002】
データベースのデータ構造としては、
図8a1に示すようなRDB(Relational Database)のテーブルを表す、
図8a2に示すようなインデックスセットのデータ構造が知られている(たとえば、特許文献1)。
ここで、
図8a1のテーブル(テーブルA)は、複数のフィールド(図では、「性別」と「タイプ」)を持つレコードを行とする表であり、各レコードにはテーブル中の当該レコードの順番を示すレコード番号が付与されている。なお、レコード番号は0から始まる。
また、
図8a2に示すインデックスセット(テーブルAインデックスセット)は、
図8a1のテーブルのレコードのフィールド毎に設けられたインデックスより構成される。
図8a1のテーブルでは、テーブルのレコードのフィールドは、「性別」と「タイプ」であるので、「性別」のインデックスと、「タイプ」のインデックスが
図8a2のインデックスセットに含まれる。
【0003】
そして、
図8a2に示すように各インデックスは、VNo、VLとを含む。
VLは、対応するテーブルの対応するフィールドの値として用いられている値を所定の基準(たとえば、値の昇順)でソートして各エントリに登録したリストである。
すなわち、たとえば、
図8a1に示すテーブルのテーブルデータセットのインデックスセットの「性別」のインデックスであれば、テーブルの「性別」のフィールドに登録されているのはFとMのみであるので、VLは、Fを登録したエントリとMを登録したエントリよりなるリストとなる。
【0004】
次に、VNoは、対応するテーブルのレコード数と同数のエントリよりなるリストであり、VNoの順位nのエントリには、対応するテーブルのレコード番号nのレコードの対応するフィールドの値が登録されているVLのエントリのVL中の順位を示す値が登録される。なお、VNo、VLの順位は0から始まる。
【0005】
すなわち、たとえば、
図8a1に示すテーブルのテーブルデータセットのインデックスセットの「性別」のインデックスであれば、テーブルのレコード番号2のレコードの「性別」のフィールドの値はFであり、Fが登録されているVLのエントリの順位は0であるので、VNoの順位2のエントリには1が登録される。
【0006】
ここで、このようなインデックスによれば、VNoのエントリ数より、対応するテーブルのレコード数を速やかに求めることができ、VNoとVLより、各レコード番号のレコードの対応するフィールドの値を速やかに求めることができる。
すなわち、たとえば、「性別」のインデックスの、レコード番号2に対応するVNoの順位0のエントリからVLの順位0が求まり、このVLの順位0のエントリにはFが登録されているので、レコード番号2の「性別」のフィールドの値はFとして求まる。
よって、このようなレコードのフィールド毎に設けられたインデックスより構成されるインデックスセットによってテーブルを完全に表現することができると共に、当該インデックスセットを用いてテーブルを速やかに利用できるようになる。
【発明の概要】
【発明が解決しようとする課題】
【0008】
さて、テーブルを各々が表す複数のインデックスセットを保存する場合がある。たとえば、期間毎にテーブルを作成し、作成した各期間のテーブルをログとして保存センターに蓄積していく場合や、地域毎にテーブルを作成し、作成された各地域のテーブルを収集して保存する場合などがある。
【0009】
しかし、このときにテーブルのインデックスセットを、そのまま保存すると以下のような問題が生じる。
すなわち、保存するインデックスセットの増加に伴い、保存するインデックスセットのデータ量の和に比例して保存に必要となるストレージのデータ容量も増加してしまう。
また、保存するインデックスセットの増加に伴い、保存した複数のインデックスセットが表す複数のテーブルを統合的に利用することが容易でなくなる。
すなわち、
図8a1に示すテーブルAのインデックスセットである
図8a2に示すテーブルAインデックスセットと、
図8b1に示すテーブルBのインデックスセットである
図8b2に示すテーブルBインデックスセットと、
図8c1に示すテーブルCのインデックスセットである
図8c2に示すテーブルCインデックスセットととの3つのインデックスセットをそのまま保存した場合、テーブルA、B、Cを統合的に利用することが容易でなくなる。
【0010】
たとえば、テーブルA、B、Cのフィールドタイプ「性別」がFであるレコード数の総数を求めるためには、テーブルAインデックスセットを用いてテーブルA中のフィールドタイプ「性別」がFであるレコード数を求め、テーブルBインデックスセットを用いてテーブルB中のフィールドタイプ「性別」がFであるレコード数を求め、テーブルCインデックスセットを用いてテーブルC中のフィールドタイプ「性別」がFであるレコード数を求め、各テーブルA、B、Cについて求めたレコード数の総和を算出するという比較的に煩雑で負荷の大きい処理を行う必要が生じる。なお、このような処理の負荷は、保存されているインデックスセットの数の増加に伴い、逐次的に増大していくこととなる。
【0011】
一方で、複数のインデックスセットを保存する代わりに、各インデックスセットが表すテーブルをまとめた一つのテーブルを表す一つのインデックスセットである統合インデックスセットを保存するようにすれば上述のような問題は生じないが、このようにする場合には、統合インデックスセットにまとめるべきインデックスセットが新たに発生する度に、統合インデックスセットの全体を新たに発生したインデックスセットに応じて編集し書き換える処理を行う必要が生じる。そして、この処理の負荷が、保存している統合インデックスセットの規模が大きくなると過剰な負荷となってしまうという問題が生じることとなる。
【0012】
そこで、本発明は、比較的簡易な処理によって、複数のテーブルのデータを、データ量を削減しつつ、各テーブルの統合的な利用が容易な形態で保存することを課題とする。
【課題を解決するための手段】
【0013】
前記課題達成のために、本発明は、1または複数のフィールドよりなる、各々レコード番号が付与されたレコードを配列したテーブルを表すインデックスデータを、統合データに統合するデータ統合方法を提供する。ここで、前記インデックスデータは、前記各フィールドの各々に対応して設けられたインデックスを含んでいる。また、前記各インデックスは、当該インデックスが含まれるインデックスデータが表す前記テーブルのレコードの当該インデックスに対応するフィールドの値として用いられている値を各エントリに登録した値リストと、各エントリに、当該インデックスが含まれるインデックスデータが表す前記テーブルの、当該エントリの順位と同じ値のレコード番号のレコードの、当該インデックスに対応するフィールドの値が登録されている、当該インデックスの前記値リストのエントリの順位を登録した対応値リストとを含んでいる。また、前記統合データは、前記各フィールドの各々に対応して設けられた統合値リストと、前記各フィールドの各々に対応して設けられた対応統合値リストとを含んでいる。
【0014】
そして、当該データ統合方法は、各フィールドについて、統合データに統合するインデックスデータの当該フィールドに対応するインデックスの値リストに含まれる値のうちの、当該フィールドに対応する前記統合値リストに登録されていない値を当該統合値リストに追加登録するステップと、各フィールドについて、統合データに統合するインデックスデータの当該フィールドに対応するインデックスの対応値リストの各エントリについて求めた対応統合値を、当該エントリの当該対応値リスト中の順位に従った順番で並べた配列を、前記統合データの当該フィールドに対応する対応統合値リストに追加登録、もしくは、当該配列を当該フィールドに対応する新たな対応統合値リストとして前記統合データに追加するステップとを有する。ただし、前記対応値リストのエントリについて求めた前記対応統合値は、当該対応値リストのエントリに登録されている順位と同じ順位の、当該対応値リストが属するインデックスの前記値リストに登録されている値と同じ値が登録される、当該対応値リストが属する前記インデックスに対応するフィールドに対応する前記統合値リストのエントリの順位に等しいものである。
【0015】
また、本発明は、前記課題達成のために、このようなデータ統合方法を実行するデータ統合装置も提供する。
このようなデータ統合方法やデータ統合装置によれば、統合データに統合する各インデックスデータ間で、同じフィールドのインデックスの値リストのエントリに登録される値に重複が存在する場合でも、統合データの各統合インデックスの統合値リストの各エントリに登録される各値は、当該統合値リスト内においてユニークな値となる。したがって、各インデックスデータをそのまま保存する場合に比べ、保存に必要となるストレージのデータ容量を削減することができる。
【0016】
また、このような各データ統合方法やデータ統合装置によれば、統合データの既存の部分には一切変更を加えない比較的簡易な処理によって、新たなインデックスデータを統合データに統合することができるようになる。
また、統合データは、統合データに統合された各インデックスセットに対応するテーブルをつなげたテーブルを表すこととなるので、統合データを用いることにより、容易に当該各インデックスデータに対応するテーブルの統合的な操作や利用が行えるようになる。
また、本発明は、前記課題達成のために、1または複数のフィールドよりなる、各々レコード番号が付与されたレコードを配列したテーブルを、統合データに統合するデータ統合方法を提供する。ここで、前記統合データは、前記各フィールドの各々に対応して設けられた対応統合値リストと、前記各フィールドの各々に対応して設けられた統合値リストとを備えている。そして、当該データ統合方法は、統合データに統合するテーブルの各フィールドについて、当該テーブルの各レコードの当該フィールドの値として用いられている値のうちの、当該フィールドに対応する前記統合値リストに登録されていない値を当該統合値リストに追加登録するステップと、統合データに統合するテーブルの各フィールドについて、当該テーブルの各レコードの当該フィールドの値と同じ値が登録される、当該フィールドに対応する前記統合値リストのエントリの順位を、前記テーブルにおけるレコードの順番に従った順番で並べた配列を、前記統合データの当該フィールドに対応する対応統合値リストに追加登録、もしくは、当該配列を当該フィールドに対応する新たな対応統合値リストとして前記統合データに追加するステップとを有している。
【0017】
また、本発明は、前記課題達成のために、このようなデータ統合方法を実行するデータ統合装置も提供する。
このようなデータ統合方法やデータ統合装置によれば、統合データに統合する各テーブル間やレコード間で、同じフィールドに登録される値に重複が存在する場合でも、統合データの各統合インデックスの統合値リストの各エントリに登録される各値は、当該統合値リスト内においてユニークな値となる。したがって、各テーブルをそのまま保存する場合に比べ、保存に必要となるストレージのデータ容量を削減することができる。
【0018】
また、このようなデータ統合方法やデータ統合装置によれば、統合データの既存の部分には一切変更を加えない比較的簡易な処理によって、新たなテーブルを統合データに統合することができるようになる。
また、統合データは、統合データに統合された各テーブルをつなげたテーブルを表すこととなるので、統合データを用いることにより、容易に当該各テーブルの統合的な操作や利用が行えるようになる。
さて、本発明は、併せて、以上のデータ統合装置と、前記統合データを保存したストレージとを備えたデータ処理システムであって、前記統合データが、各レコード番号の各フィールドに、当該フィールドに対応する前記対応統合値リストの当該レコード番号と同じ値の順位のエントリに登録されている順位と同じ順位の、当該フィールドに対応する前記統合値リストのエントリに登録されている値を有するレコードを含むテーブルを表しているものとして、前記ストレージに保存された前記統合データが表すテーブルを操作するテーブル操作手段を備えたデータ処理システムも提供する。
【0019】
また、本発明は、コンピュータを以上のデータ統合装置やデータ処理システムとして機能させるコンピュータプログラムも提供する。
【発明の効果】
【0020】
以上のように、本発明によれば、比較的簡易な処理によって、複数のテーブルのデータを、データ量を削減しつつ、各テーブルの統合的な利用が容易な形態で保存することができる。
【発明を実施するための形態】
【0022】
以下、本発明の実施形態について説明する。
図1に、本実施形態に係るデータ処理装置の構成を示す。
図示するように、データ処理装置は、ストレージ1とプロセッサ2と入力装置3と表示装置4等を備えている。また、プロセッサ2はデータ統合部11と、RDBMS12(リレーショナルデータベースマネジメントシステム12)とを備えている。なお、データ統合部11、RDBMS12は、プロセッサ2が所定のコンピュータプログラムを実行することにより実現される機能部である。
【0023】
このような構成において、新たに保存すべきインデックスセットがストレージ1に格納されると、プロセッサ2のデータ統合部11は、格納されたインデックスセットを、ストレージ1に格納している統合インデックスセットに統合する。
なお、ストレージ1に格納される新たに保存すべきインデックスセットは、先に
図8を用いて説明した先にVNo、VLとを含んだインデックスよりなるインデックスセットであり、当該インデックスセットは、
図8a2のインデックスセットが
図8a1のテーブルを表しているのと同様に、一つのテーブルを表している。
【0024】
一方、RDBMS12は、統合インデックスセットを用いて、それまで保存されたインデックスセットが表す各テーブルに対する統合的な操作を行う。
次に、データ統合部11が行う、インデックスセットの統合インデックスセットへの統合動作の概要について説明する。
いま、保存すべき最初のインデックスセットとして、
図2a1に示すテーブルAを表すインデックスセットである
図2a2のテーブルAインデックスセットが格納された場合、データ統合部11は、
図2a2のテーブルAインデックスセットを、
図2a3に示すように、そのまま統合インデックスセットとする。
【0025】
したがって、統合インデックスセットは、インデックスセットと同様に、フィールド毎のインデックスを備え、各インデックスはVNo、VLを含むものとなり、統合インデックスセットは、テーブルを表すものとなる。
さて、ここで、以下では、インデックスセットのインデックスを単に「インデックス」と表記し、統合インデックスのインデックスを「統合インデックス」と表記することにより両者を区別する。また、以下では、インデックスセットによって表されるテーブルを単に「テーブル」と表記し、統合インデックスセットによって表されるテーブルを「統合テーブル」と表記することにより、両者を区別する。
【0026】
さて、以上のようにして最初に生成された、
図2a3の統合インデックスセットは、
図2a4のような、テーブルAと同じ内容を持つ統合テーブルを表すものとなる。
次に、
図2a3の統合インデックスセットが保存されている状態で、次に保存すべきインデックスセットとして、
図2b1に示すテーブルBを表すインデックスセットである
図2b2のテーブルBインデックスセットが格納された場合、データ統合部11は、テーブルBインデックスセットの各インデックスについて以下の処理を行う。
【0027】
すなわち、テーブルBインデックスセットの各フィールドに対応するインデックスについて、インデックスのVLに含まれる値のうちの、当該フィールドに対応する統合インデックスのVLに含まれない値を、
図2b3に示すように、当該フィールドに対応する統合インデックスのVLに追加登録する。
【0028】
そして、インデックスのVNoのエントリ数が等しいリストであるT_VNoを作成し、T_VNoの各エントリに、当該T_VNoのエントリT_VNoE(i)と順位が等しい、当該インデックスのVNoのエントリVNoE(i)に格納されている値kを順位とする当該インデックスのVLのエントリVLE(k)に登録されている値jが登録されている、当該フィールドの統合インデックスのVLのエントリの順位を示す値を登録する。そしてT_VNoの各エントリを、
図2b3に示すように、当該フィールドの統合インデックスのVNoに追加登録する。
【0029】
ただし、T_VNoE(i)はT_VNoのi番目のエントリを、VNoE(i) はVNoのi番目のエントリを、VLE(k)は、VLのk番目のエントリを表している。
具体的には、たとえば、フィールド「タイプ」のインデックスであれば、インデックスのVNoのエントリ数は4であるので、4つのエントリを備えた T_VNoを作成する。
そして、たとえば、T_VNoの順位0のエントリについては、当該インデックスのVNoの順位0のエントリに登録されている値は1であり、当該インデックスのVLの順位1のエントリに登録されている値はBであり、Bはフィールド「タイプ」の統合インデックスのVLの順位3のエントリに登録されているので、T_VNoの順位0のエントリには3を登録する。
【0030】
同様に、たとえば、T_VNoの順位2のエントリについては、当該インデックスのVNoの順位2のエントリに登録されている値は0であり、当該インデックスのVLの順位0のエントリに登録されている値はAであり、Aはフィールド「タイプ」の統合インデックスのVLの順位0のエントリに登録されているので、T_VNoの順位2のエントリには0を登録する。
【0031】
そして、同様にしてT_VNoの各エントリに値を登録したならば、T_VNoの各エントリを、フィールド「タイプ」の統合インデックスのVNoに追加する。
さて、このようにして作成された
図2b3に示す統合インデックスセットが表す統合テーブルは、
図2b4に示すように、テーブルAとテーブルBを当該順序で連結したものとなる。
次に、以上のようにして、テーブルBインデックスセットを統合インデックスセットに統合し、
図3a2に示す統合テーブルを表す、
図3a1の統合インデックスセットが保存されている状態で、次に保存すべきインデックスセットとして、
図3b1に示すテーブルCを表すインデックスセットである
図3b2のテーブルCインデックスセットが格納された場合、データ統合部11は、以上の同様に、テーブルCインデックスセットの各インデックスについて以下の処理を行う。
【0032】
すなわち、テーブルCインデックスセットの各フィールドに対応するインデックスについて、インデックスのVLに含まれる値のうちの、当該フィールドの統合インデックスのVLに含まれない値を、
図3b3に示すように、当該フィールドの統合インデックスのVLに追加登録する。
【0033】
そして、インデックスのVNoのエントリ数が等しいリストであるT_VNoを作成し、T_VNoの各エントリに、当該T_VNoのエントリT_VNoE(i)と順位が等しい、当該インデックスのVNoのエントリVNoE(i)に格納されている値kを順位とする当該インデックスのVLのエントリVLE(k)に登録されている値jが登録されている、当該フィールドの統合インデックスのVLのエントリの順位を示す値を登録する。そしてT_VNoの各エントリを、
図3b3に示すように、当該フィールドの統合インデックスのVNoに追加登録する。
【0034】
結果、このようにして作成された
図3b3に示す統合インデックスセットが表す統合テーブルは、
図3b4に示すように、テーブルAとテーブルBとテーブルCを当該順序で連結したものとなる。
以下、次に保存すべきインデックスセットが発生するたびに、同様の処理を行って、当該インデックスセットを統合インデックスセットに統合していく。
【0035】
なお、統合インデックスセットには、統合インデックスのVNoのエントリのどの範囲が、どのインデックス、または、どのテーブルを表すインデックスから作成されたものであるのか示すデータを対応データとして含めておくようにしてもよくこのようにすることにより、テーブルやインデックス単位での統合インデックスセットの多様な利用が容易に行えるようになる。
【0036】
ここで、以上のように、本実施形態では、新たなインデックスセットを統合インデックスセットに統合する際に、統合インデックスセットの既に登録されている部分には一切の変更が加えられず、新たなインデックスセットの内容に応じた内容が統合インデックスセットに追加的に登録されていくことにより、インデックスセットの統合インデックスセットへの統合が実現されている。
【0037】
また、統合インデックスセットに統合する各インデックスセット間で、同じフィールドのインデックスのVLのエントリに登録される値に重複が存在する場合でも、統合インデックスセットの各統合インデックスのVLの各エントリに登録される各値は、統合インデックスのVL内においてユニークな値となる。したがって、各インデックスセットをそのまま保存する場合に比べ、保存に必要となるストレージ1のデータ容量を削減することができる。
【0038】
さて、次に、以上のようにインデックスセットを統合インデックスセットに統合していく際の詳細な手順について説明する。
上述のようにインデックスセットの統合インデックスセットへの統合は、各フィールドのインデックスについて、当該インデックスの内容に応じて統合インデックスを編集することにより実現される。
そして、このインデックスの内容に応じて統合インデックスの編集は、たとえば、以下に示す手順によって実現することができる。
ここでは、
図4aに示すインデックスの内容に応じて、同図に示す統合インデックスを編集する場合を例にとり説明する。
この場合、まず、登録値調査処理を行う。
この登録値調査処理では、まず、ポインタPを0に、カレントナンバCNを統合インデックスのVLの末尾のエントリの次の順位である3に設定する。そして、インデックスのVLとエントリ数が等しいT_VLと、追加値リストadVLを作成する。
そして、インデックスのVLのポインタPが示す順位0のエントリに登録されている値Aを取得し、取得した値Aが統合インデックスのVLに格納されているかどうかを調べる。ここでは、統合インデックスのVLに格納されているので、値Aが格納されている統合インデックスのVLのエントリの順位0を取得し、取得した順位をT_VLの、ポインタPが示す順位0のエントリに登録する。
【0039】
そして、ポインタPの値が、インデックスのVLの末尾のエントリの順位と一致しているかどうかを調べ、ここでは一致していないのでポインタPの値を一つ進め1とする。
次に、ポインタPの値を一つ進めたならば、
図4bに示すように、インデックスのVLのポインタPが示す順位1のエントリに登録されている値Bを取得し、取得した値Bが統合インデックスのVLに格納されているかどうかを調べる。ここでは、値Bは、統合インデックスのVLに格納されていないので、取得した値Bを追加値リストadVLに追加登録する。また、カレントナンバCNの値3を、T_VLの、ポインタPが示す順位1のエントリに登録すると共に、カレントナンバCNの値を一つ進め4とする。なお、カレントナンバCNの値は、カレントナンバCNの値をT_VLのエントリに登録したときに、一つ進める。
【0040】
そして、そして、ポインタPの値が、インデックスのVLの末尾のエントリの順位と一致しているかどうかを調べ、ここでは一致していないのでポインタPを一つ進め2とする。
次に、ポインタPの値を一つ進めたならば、
図4cに示すように、インデックスのVLのポインタPが示す順位2のエントリに登録されている値Fを取得し、取得した値Fが統合インデックスのVLに格納されているかどうかを調べる。ここでは、値Fは、統合インデックスのVLに格納されていないので、取得した値Fを追加値リストadVLに追加登録する。また、カレントナンバCNの値4を、T_VLの、ポインタPが示す順位2のエントリに登録する。
【0041】
そして、ポインタPの値が、インデックスのVLの末尾のエントリと一致しているかどうかを調べ、ここでは一致しているので、登録値調査処理を終了する。
そして、登録値調査処理を終了したならば、次に、T_VNo作成処理を行う。
T_VNo作成処理では、
図5aに示すように、インデックスのVNoとエントリ数が同じT_VNoを作成する。
そして、インデックスのVNoの各エントリについて、当該順位 iのエントリに格納されている値Xを取得する。そして、取得した値Xと同じ順位Xの T_VLのエントリに登録されている値Yを、順位 iのT_VNoのエントリに登録する。すなわち、たとえば、インデックスのVNoの順位1のエントリについては、インデックスのVNoの順位1のエントリに登録されている値は1であるので、順位1のT_VLのエントリに登録されている値3を取得する。そして、取得した値3をT_VNoの順位1のエントリに登録する。
【0042】
そして、このようにして、T_VNoの各エントリに値を登録したならば、T_VNo作成処理を終了する。
そして、次に、
図5bに示すように、登録値調査処理で作成した追加値リストadVLの各エントリを、統合インデックスの VLに追加し、T_VNo作成処理で作成したT_VNoの各エントリを統合インデックスのVNoに追加する。
以上、データ統合部11が行う、インデックスセットの統合インデックスセットへの統合動作について説明した。
ところで、以上
のように作成した統合インデックスセットは、
図6に示すように、異なるインデックスセットから作成した統合インデックスセットの各統合インデックスのVNoの部分毎に、別個のデータ構造体として作成、保存するようにしてもよい。すなわち、たとえば、テーブルAインデックスセットから最初に作成した統合インデックスセットの各統合インデックスのVNoの部分601と、テーブルBインデックスセットを統合インデックスセットに統合する際に作成し、統合インデックスセットに追加した各統合インデックスのVNoの部分602と、テーブルCインデックスセットを統合インデックスセットに統合する際に作成し、統合インデックスセットに追加した各統合インデックスのVNoの部分603とを、それぞれ別個のファイル、または、別個のファイル群などの、別個のデータ構造体としてストレージ1に保存するようにしてもよい。また、この場合には、各データ構造体の作成元となったインデックス、または、各データ構造体の作成元となったインデックスが表すテーブルと、データ構造体の対応を示すデータを対応データとして統合インデックスセットに含めておくようにしてもよく、このようにすることにより、テーブルやインデックス単位での統合インデックスセットの多様な利用が容易に行えるようになる。
【0043】
このようにしても、各VNo部分601、602、603の各フィールドに対応する部分を連結したものが、当該フィールドに対応する統合インデックスのVNoを形成することとなるので、論理的に統合インデックステーブルを表していることに変わりはない。
以下、プロセッサ2のRDBMS12が行う、統合インデックスセットを用いた、それまで保存されたインデックスセットが表す各テーブルに対する統合的な操作について説明する。
いま、
図3b3に示す統合インデックスセットがストレージ1に格納されているものとして、RDBMS12は、特定のフィールドに特定の値を持つレコードを求める操作を行う場合には次の処理を行う。
すなわち、まず、統合インデックスセットの当該特定のフィールドの統合インデックスのVLの、当該特定の値が登録されているエントリの順位を求める。そして、求めた順位が登録されている当該統合インデックスのVNoの各エントリの順位を求める。そして、もとめた各順位をレコード番号とするレコードを求めるレコードのレコード番号として抽出する。
【0044】
そして、次に、抽出した各レコード番号について、以下の処理を行って当該レコード番号のレコードの各フィールドの値を求める。
すなわち、統合インデックスの各フィールドの統合インデックスについて、当該統合インデックスのVNoの、当該レコード番号と等しい順位のエントリに登録されている値を求め、求めた値と等しい順位の当該統合インデックスのVLに登録されている値を、当該レコード番号のレコードの当該統合インデックスに対応するフィールドの値として算定する。
【0045】
また、RDBMS12は、特定のフィールドに特定の範囲内の値を持つレコードを求める操作を行う場合には、当該特定の範囲内の各値について、当該値の各々を特定の値として、以上の特定のフィールドに特定の値を持つレコードを求める操作を行う処理を行う。
また、RDBMS12は、特定のフィールドに特定の値を持つレコードの数を求める操作を行う場合には次の処理を行う。
すなわち、この場合には、統合インデックスセットの当該特定のフィールドの統合インデックスのVLの、当該特定の値が登録されているエントリの順位を求める。そして、求めた順位が登録されている当該統合インデックスのVNoのエントリの数を、当該特定のフィールドに特定の値を持つレコードの数として算定する。
【0046】
また、RDBMS12は、統合インデックスセットが表す統合テーブルのレコードを、特定のフィールドの値でソートする操作を行う場合には、以下の処理を行う。
すなわち、統合インデックスセットの当該特定のフィールドの統合インデックスのVLのエントリの順位を、当該エントリに登録されている値の順序(たとえば、値が小さい順)に従って配列する。そして、配列した各値の配列順に、当該値が登録されているVNoのエントリの順位を求め、求めたVNoのエントリの順位を当該順位を求めた順番に従って配列していく。そして、この結果得られた順位の配列を、ソートしたレコード番号の配列として算定する。そして、そして各レコード番号の各レコードの各フィールドの値を上述のように求めて、ソートしたレコード番号の順に配列してソート後のテーブルを作成する。
【0047】
なお、以上のような操作は、上述した対応データを統合インデックスセットに含めた場合には、特定のテーブル/インデックスに対応するVNoの範囲のみを対象として行うこともできる。
以上のように、本実施形態に係る統合インデックスセットによれば、RDBMS12によって、統合インデックスセットに統合した各インデックスセットが表す各テーブルに対する統合的な操作を、統合インデックスセットに対する直接の操作によって速やかに行うことができる。
【0048】
以上、本発明の実施形態について説明した。
なお、以上の実施形態において、フィールド構成が異なるインデックスセットがストレージ1に格納される場合には、値がブランクのインデックスを追加したり、インデックスの順序を入れ替えることにより、格納されたインデックスセットを、共通のフィールド構成のインデックスセットに変換した上で統合インデックスセットに統合するようにすればよい。
【0049】
なお、以上の実施形態では、プロセッサ2のデータ統合部11は、新たに保存すべきインデックスセットがストレージ1に格納されたときに、格納されたインデックスセットを、ストレージ1に格納している統合インデックスセットに統合するものとして説明したが、本実施形態は、プロセッサ2のデータ統合部11において、新たに保存すべきテーブルがストレージ1に格納されたときに、格納されたテーブルから先に
図8を用いて説明したようにインデックスセットを作成し、作成したインデックスセットを、ストレージ1に格納している統合インデックスセットに統合するものとしてもよい。
【0050】
なお、この場合において、フィールド構成が異なるテーブルがストレージ1に格納される場合には、テーブルに値がブランクのフィールドを追加したり、テーブルのフィールドの順序を入れ替えることにより、格納されたテーブルを、共通のフィールド構成のテーブルに変換した上でインデックスセットを作成するようにすればよい。
【0051】
また、このように、テーブルから統合インデックスセットを作成する場合には、プロセッサ2のデータ統合部11において、以下のように統合テーブルを作成するようにしてもよい。
すなわち、
図7a1に示す様に、統合インデックスセットに統合する最初のテーブルAがストレージ1に格納されたならば、各フィールド(フィールド「性別」とフィールド「タイプ」)についてのVNOとVLを先に
図8を用いて説明したように作成し、
図7a2に示すように各フィールドについて作成したVNoを当該フィールドの部分インデックスとし、各フィールドについて作成した部分インデックスを含めたテーブルA部分インデックスセットを統合インデックスセットに格納する。また、各フィールドについて作成したVLを含めた統合VLを統合インデックスセットに格納する。
【0052】
そして、次に、
図7a2に示す統合インデックスセットがストレージ1に格納されている状態で
図7b1に示すテーブルBがストレージ1に格納されたならば、テーブルBのフィールドについて、各レコードの当該フィールドに用いられている値(ユニーク値)のうちの、統合インデックスセットの統合VLの当該フィールドのVLに登録されていない値を、
図7b2に示すように統合VLの当該フィールドのVLに追加登録する。
【0053】
すなわち、たとえば、フィールド「タイプ」については、テーブルBの各レコードのフィールド「タイプ」の値のうち、BとFが
図7a2に示す統合インデックスセットの統合VLのフィールド「タイプ」のVLに登録されていないので、、
図7b2に示すようにBとFを統合VLのフィールド「タイプ」のVLに追加する。
【0054】
次に、テーブルBの各フィールドについて、VNoを以下のように作成する。
すなわち、テーブルBの各フィールドについて、テーブルBのレコード数と同数のエントリよりなるVNoを作成し、VNoの順位nのエントリに、対応するテーブルのレコード番号nのレコードの当該フィールドの値が登録されている、統合インデックスセットの統合VLの当該フィールドのVLのエントリのVL中の順位を示す値を登録する。
【0055】
すなわち、たとえば、フィールド「タイプ」については、テーブルBのレコード数が4であるので、4つのエントリを持つフィールド「タイプ」のVNoを作成し、作成したフィールド「タイプ」のVNoの順位iのエントリに、テーブルBのレコード番号iのレコードのフィールド「タイプ」の値が登録されている、統合VLのフィールド「タイプ」のVL(VL(タイプ))のエントリのVL中の順位を示す値を登録する。たとえば、フィールド「タイプ」のVNoの順位2のエントリには、テーブルBのレコード番号2のレコードのフィールド「タイプ」の値がAであり、統合VLのフィールド「タイプ」のVL(VL(タイプ))の順位0のエントリにAが登録されているので0が登録される。また
フィールド「タイプ」のVNoの順位3のエントリには、テーブルBのレコード番号3のレコードのフィールド「タイプ」の値がFであり、統合VLのフィールド「タイプ」のVL(VL(タイプ))の順位4のエントリにFが登録されているので4が登録される。
【0056】
そして、以上のようにして、各フィールドについて作成したVNoを当該フィールドの部分インデックスとし、各フィールドについて作成した部分インデックスを含めたテーブルB部分インデックスセットを統合インデックスセットに格納する。
以降、
新たなテーブルがストレージ1に格納される度に、テーブルBの場合と同様の処理を行い、格納されたテーブルを統合インデックスセットに統合していく。
なお、この場合には統合インデックスセットには、各部分インデックスセットが、どのテーブルから作成されたものであるのか示すデータを、上述した対応データとして含めておくようにしてもよく、このようにすることにより、テーブル単位での統合インデックスセットの多様な利用が容易に行えるようになる。
【0057】
さて、
図7b1の統合インデックスセットの各テーブルの各インデックスセットの各フィールドの部分インデックスのVNoは、これを連結して統合部分インデックスとして統合セットに保存するようにしてもよい。なお、この場合には統合インデックスセットには、統合部分インデックスのVNoのエントリのどの範囲が、どのテーブルから作成されたものであるのか示すデータを上述した対応データとして含めておくようにしてもよく、このようにすることにより、テーブル単位での統合インデックスセットの多様な利用が容易に行えるようになる。
【0058】
ここで、このように部分インデックスのVNoを連結して統合部分インデックスとして保存した場合の各フィールドのVNoは、
図7a1のテーブルAと
図7b1のテーブルBと同じ2つのテーブル(
図2a1のテーブルAと
図2b2のテーブルB)のインデックスセットを
図2に示したように統合した
図2b3に示す統合インデックスセットの各フィールドのインデックスのVNoと等しくなる。また、統合VLの各フィールドのVLも、
図2b3に示す統合インデックスセットの各フィールドのVLと等しくなる。
【0059】
すなわち、部分インデックスのVNoを連結して統合部分インデックスとして保存した場合の統合インデックスセットのデータ構造体としての構成は、
図2b3に示す統合インデックスセットのデータ構造体としての構成と等しくなる。
また、逆に、上述のように異なるインデックスセットから作成した統合インデックスセットの各統合インデックスのVNoの部分毎に、別個のデータ構造体として
図6に示すように作成、保存した場合の
図2b3に示す統合インデックスセットのデータ構造体としての構成は、
図7b2の統合インデックスセットのデータ構造体としての構成と等しくなる。
【0060】
よって、
図7に示したテーブルを統合インデックスセットに統合する処理によれば、インデックスセットを介さずに、テーブルを統合インデックスセットに統合することができる。また、上述のようにインデックスセットを統合して作成した統合インデックスセットと、同様に利用することができる。
【0061】
また、
図7に示したテーブルを統合インデックスセットに統合する処理においても、新たなテーブルを統合インデックスセットに統合する際に、統合インデックスセットの既に登録されている部分には一切の変更が加えられず、新たなテーブルの内容に応じた内容が統合インデックスセットに追加的に登録されていくことにより、テーブルの統合インデックスセットへの統合が実現される。
【0062】
なお、
図7に示した場合においても、フィールド構成が異なるテーブルがストレージ1に格納される場合には、テーブルに値がブランクのフィールドを追加したり、テーブルのフィールドの順序を入れ替えることにより、格納されたテーブルを、共通のフィールド構成のテーブルに変換した上で処理するようにする。