(57)【要約】【課題】DBサーバにおけるディスクI/Oを低減し、データ検索速度の向上を実現する。【解決手段】DBサーバ14とAPサーバ12を備えたデータ処理システム10。APサーバ12は、メモリ26と、DBサーバ14に対しデータの読み出しを指令するデータ処理部22と、DBサーバ14から送信されたデータを参照型及びビット配列を含む木構造のデータに変換し、メモリ26に格納するデータ圧縮部24を備える。【効果】APサーバのメモリ26上にDBサーバのテーブルが参照型及びビット配列を含む木構造のデータとして再現されるため、DBサーバにおけるディスクI/Oの発生を回避でき、データの検索速度が向上する。【選択図】図１３
2007310844.tif 000002
【特許請求の範囲】
【請求項１】
DBサーバとAPサーバを備えたデータ処理システムであって、
上記DBサーバが、データベース管理システムと、テーブルを格納したデータベースを備え、
上記APサーバが、メモリと、上記DBサーバにSQL文を発行し、上記テーブルに格納されたデータの読み出しを指令するデータ読み出し手段と、DBサーバから送信されたデータを少なくともビット配列を含む木構造のデータに変換し、上記メモリに格納するデータ圧縮手段と、上記ビット配列を含む木構造のデータに対し検索処理を実行するデータ検索手段とを備えたことを特徴とするデータ処理システム。
【請求項２】
上記のデータ圧縮手段が、上記DBサーバから送信された各レコードの中で、少なくとも最上位のデータ項目については、値が相互に重複する場合に一つのレコードのデータを残して他のレコードのデータを削除し、削除された上位データに従属していた下位データを残された上位データに関連付ける第１の処理と、
残された最上位のデータ項目同士を一つの根の元に結合させ、木構造のデータを生成する第２の処理と、
最下位のデータ項目に含まれる値の類型を抽出し、これらを所定の順序で整列させたディスティンクト・リストを生成し、メモリに格納する第３の処理と、
上記ディスティンクト・リストに含まれる各要素と最下位のデータ項目の値とを、親のデータ項目を共通にする兄弟単位で順にマッチングさせ、ディスティンクト・リストの要素が最下位のデータ項目に存在する場合には、メモリ上に設けたビット配列における対応位置に１をセットすると同時に実データを削除し、該当の値が最下位のデータ項目に存在しない場合には上記ビット配列の対応位置に０をセットする第４の処理を実行し、
上記データ検索手段が、各ビット配列及び上記ディスティンクト・リストを参照することにより、最下位のデータ項目の値を特定することを特徴とする請求項１に記載のデータ処理システム。
【請求項３】
上記のデータ圧縮手段が、上記DBサーバから送信された各レコードの中で、少なくとも最上位のデータ項目については、値が相互に重複する場合に一つのレコードのデータを残して他のレコードのデータを削除し、削除された上位データに従属していた下位データを残された上位データに関連付ける第１の処理と、
残された最上位のデータ項目同士を一つの根の元に結合させ、木構造のデータを生成する第２の処理と、
最下位のデータ項目に含まれる値の類型を抽出し、これらを所定の順序で整列させたディスティンクト・リストを生成し、メモリに格納する第３の処理と、
上記ディスティンクト・リストに含まれる各要素と最下位のデータ項目の値とを、親のデータ項目を共通にする兄弟単位で順にマッチングさせ、ディスティンクト・リストの要素が最下位のデータ項目に存在する場合には、メモリ上に設けたディスティンクト・リストと同サイズのブーリアン配列における対応位置にブーリアン型のtrueをセットすると同時に実データを削除し、該当の値が最下位のデータ項目に存在しない場合には上記ブーリアン配列の対応位置にブーリアン型のfalseをセットする第４の処理と、
上記のブーリアン配列をビット配列に変換する第５の処理を実行し、
上記データ検索手段が、各ビット配列をブーリアン配列に変換し、各ブーリアン配列及び上記ディスティンクト・リストを参照することにより、最下位のデータ項目の値を特定することを特徴とする請求項１に記載のデータ処理システム。
【請求項４】
上記のデータ読み出し手段が、上記SQL文において一または複数のデータ項目の値を指定することにより、上記DBサーバから上記テーブルをグループに分割して読み出す処理を実行し、
上記のデータ圧縮手段が、上記第１の処理をグループ単位で実行することを特徴とする請求項２または３に記載のデータ処理システム。
【請求項５】
上記のデータ圧縮手段が、上記DBサーバから送信された各レコードの中で、少なくとも最上位のデータ項目については、値が相互に重複する場合に一つのレコードのデータを残して他のレコードのデータを削除し、削除された上位データに従属していた下位データを残された上位データに関連付ける第１の処理と、
値が相互に重複する下位のデータ項目については、一の値のみを実データとしてメモリ上に残し、他の値については上記実データを参照する型に変換する第２の処理と、
残された最上位のデータ項目同士を一つの根の元に結合させ、木構造のデータを生成する第３の処理と、
最下位のデータ項目に含まれる値の類型を抽出し、これらを所定の順序で整列させたディスティンクト・リストを生成し、メモリに格納する第４の処理と、
上記ディスティンクト・リストに含まれる各要素と最下位のデータ項目の値とを、親のデータ項目を共通にする兄弟単位で順にマッチングさせ、ディスティンクト・リストの要素が最下位のデータ項目に存在する場合には、メモリ上に設けたビット配列における対応位置に１をセットすると同時に実データを削除し、該当の値が最下位のデータ項目に存在しない場合には上記ビット配列の対応位置に０をセットする第５の処理を実行し、
上記データ検索手段が、各ビット配列及び上記ディスティンクト・リストを参照することにより、最下位のデータ項目の値を特定することを特徴とする請求項１に記載のデータ処理システム。
【請求項６】
上記のデータ圧縮手段が、上記DBサーバから送信された各レコードの中で、少なくとも最上位のデータ項目については、値が相互に重複する場合に一つのレコードのデータを残して他のレコードのデータを削除し、削除された上位データに従属していた下位データを残された上位データに関連付ける第１の処理と、
値が相互に重複する下位のデータ項目については、一の値のみを実データとしてメモリ上に残し、他の値については上記実データを参照する型に変換する第２の処理と、
残された最上位のデータ項目同士を一つの根の元に結合させ、木構造のデータを生成する第３の処理と、
最下位のデータ項目に含まれる値の類型を抽出し、これらを所定の順序で整列させたディスティンクト・リストを生成し、メモリに格納する第４の処理と、
上記ディスティンクト・リストに含まれる各要素と最下位のデータ項目の値とを、親のデータ項目を共通にする兄弟単位で順にマッチングさせ、ディスティンクト・リストの要素が最下位のデータ項目に存在する場合には、メモリ上に設けたディスティンクト・リストと同サイズのブーリアン配列における対応位置にブーリアン型のtrueをセットすると同時に実データを削除し、該当の値が最下位のデータ項目に存在しない場合には上記ブーリアン配列の対応位置にブーリアン型のfalseをセットする第５の処理と、
上記のブーリアン配列をビット配列に変換する第６の処理を実行し、
上記データ検索手段が、各ビット配列をブーリアン配列に変換し、各ブーリアン配列及び上記ディスティンクト・リストを参照することにより、最下位のデータ項目の値を特定することを特徴とする請求項１に記載のデータ処理システム。
【請求項７】
上記のデータ読み出し手段が、上記SQL文において一または複数のデータ項目の値を指定することにより、上記DBサーバから上記テーブルをグループに分割して読み出す処理を実行し、
上記のデータ圧縮手段が、上記第１の処理及び第２の処理をグループ単位で実行することを特徴とする請求項５または６に記載のデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はデータ処理システムに係り、特に、APサーバからDBサーバへのアクセス数を減らすことによって検索処理等の高速化を実現する技術に関する。
【背景技術】
【０００２】
クライアントサーバ型システムの進展に伴い、より大規模な情報処理の要求に応えるために、データの表示をするクライアントの他にデータの加工を行うAPサーバ及びデータの格納をするDBサーバを備えた、いわゆる三層構造のクライアントサーバシステムが普及してきている。
また、処理速度の向上を図るため、複数のAPサーバを並列配置させることで負荷を分散させることも行われている。
【特許文献１】特開２００５−１６５６１０
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、APサーバは廉価なPCサーバで構成することができるため、設置台数を増加させることで処理速度を向上させることは比較的容易であるが、DBサーバについてはデータの同期を維持する必要性があるため、APサーバのように簡単に分散処理に移行することはできない。
もちろん、データベースシステムのベンダ各社は、様々な技術を駆使してソフトウェア及びハードウェアの両面からDBサーバ自体の高速化を図ってきており、その結果一定の成果は上がっているが、その分システムの価格が上昇することは否めない。
また、今後ともクライアントサーバ型システムに担わされるデータベースの規模が増大を続ける限り、いずれはディスクI/O（データの読み書き）速度が壁となり、DBサーバの性能アップでは対応できない時期が来るものと予想される。
【０００４】
この発明は、従来のデータ管理システムが抱えていた上記の問題を解決するために案出されたものであり、DBサーバ自体の性能アップに依存するのではなく、APサーバのメモリ上にDBサーバのテーブルを再現することにより、検索速度の向上を実現することを目的としている。
【課題を解決するための手段】
【０００５】
上記の目的を達成するため、請求項１に記載したデータ処理システムは、DBサーバとAPサーバを備えたデータ処理システムであって、上記DBサーバが、データベース管理システムと、テーブルを格納したデータベースを備え、上記APサーバが、メモリと、上記DBサーバにSQL文を発行し、上記テーブルに格納されたデータの読み出しを指令するデータ読み出し手段と、DBサーバから送信されたデータを少なくともビット配列を含む木構造のデータに変換し、上記メモリに格納するデータ圧縮手段と、上記ビット配列を含む木構造のデータに対し検索処理を実行するデータ検索手段とを備えたことを特徴としている。
【０００６】
請求項２に記載したデータ処理システムは、請求項１のシステムであって、さらに上記のデータ圧縮手段が、上記DBサーバから送信された各レコードの中で、少なくとも最上位のデータ項目については、値が相互に重複する場合に一つのレコードのデータを残して他のレコードのデータを削除し、削除された上位データに従属していた下位データを残された上位データに関連付ける第１の処理と、残された最上位のデータ項目同士を一つの根の元に結合させ、木構造のデータを生成する第２の処理と、最下位のデータ項目に含まれる値の類型を抽出し、これらを所定の順序で整列させたディスティンクト・リストを生成し、メモリに格納する第３の処理と、上記ディスティンクト・リストに含まれる各要素と最下位のデータ項目の値とを、親のデータ項目を共通にする兄弟単位で順にマッチングさせ、ディスティンクト・リストの要素が最下位のデータ項目に存在する場合には、メモリ上に設けたビット配列における対応位置に１をセットすると同時に実データを削除し、該当の値が最下位のデータ項目に存在しない場合には上記ビット配列の対応位置に０をセットする第４の処理を実行し、上記データ検索手段が、各ビット配列及び上記ディスティンクト・リストを参照することにより、最下位のデータ項目の値を特定することを特徴としている。
【０００７】
請求項３に記載したデータ処理システムは、請求項１のシステムであって、さらに上記のデータ圧縮手段が、上記DBサーバから送信された各レコードの中で、少なくとも最上位のデータ項目については、値が相互に重複する場合に一つのレコードのデータを残して他のレコードのデータを削除し、削除された上位データに従属していた下位データを残された上位データに関連付ける第１の処理と、残された最上位のデータ項目同士を一つの根の元に結合させ、木構造のデータを生成する第２の処理と、最下位のデータ項目に含まれる値の類型を抽出し、これらを所定の順序で整列させたディスティンクト・リストを生成し、メモリに格納する第３の処理と、上記ディスティンクト・リストに含まれる各要素と最下位のデータ項目の値とを、親のデータ項目を共通にする兄弟単位で順にマッチングさせ、ディスティンクト・リストの要素が最下位のデータ項目に存在する場合には、メモリ上に設けたディスティンクト・リストと同サイズのブーリアン配列における対応位置にブーリアン型のtrueをセットすると同時に実データを削除し、該当の値が最下位のデータ項目に存在しない場合には上記ブーリアン配列の対応位置にブーリアン型のfalseをセットする第４の処理と、上記のブーリアン配列をビット配列に変換する第５の処理を実行し、上記データ検索手段が、各ビット配列をブーリアン配列に変換し、各ブーリアン配列及び上記ディスティンクト・リストを参照することにより、最下位のデータ項目の値を特定することを特徴としている。
【０００８】
請求項４に記載したデータ処理システムは、請求項２または３のシステムであって、さらに上記のデータ読み出し手段が、上記SQL文において一または複数のデータ項目の値を指定することにより、上記DBサーバから上記テーブルをグループに分割して読み出す処理を実行し、上記のデータ圧縮手段が、上記第１の処理をグループ単位で実行することを特徴としている。
【０００９】
請求項５に記載したデータ処理システムは、請求項１のシステムであって、さらに上記のデータ圧縮手段が、上記のデータ圧縮手段が、上記DBサーバから送信された各レコードの中で、少なくとも最上位のデータ項目については、値が相互に重複する場合に一つのレコードのデータを残して他のレコードのデータを削除し、削除された上位データに従属していた下位データを残された上位データに関連付ける第１の処理と、値が相互に重複する下位のデータ項目については、一の値のみを実データとしてメモリ上に残し、他の値については上記実データを参照する型に変換する第２の処理と、残された最上位のデータ項目同士を一つの根の元に結合させ、木構造のデータを生成する第３の処理と、最下位のデータ項目に含まれる値の類型を抽出し、これらを所定の順序で整列させたディスティンクト・リストを生成し、メモリに格納する第４の処理と、上記ディスティンクト・リストに含まれる各要素と最下位のデータ項目の値とを、親のデータ項目を共通にする兄弟単位で順にマッチングさせ、ディスティンクト・リストの要素が最下位のデータ項目に存在する場合には、メモリ上に設けたビット配列における対応位置に１をセットすると同時に実データを削除し、該当の値が最下位のデータ項目に存在しない場合には上記ビット配列の対応位置に０をセットする第５の処理を実行し、上記データ検索手段が、各ビット配列及び上記ディスティンクト・リストを参照することにより、最下位のデータ項目の値を特定することを特徴としている。
【００１０】
請求項６に記載したデータ処理システムは、請求項１のシステムであって、さらに上記のデータ圧縮手段が、上記DBサーバから送信された各レコードの中で、少なくとも最上位のデータ項目については、値が相互に重複する場合に一つのレコードのデータを残して他のレコードのデータを削除し、削除された上位データに従属していた下位データを残された上位データに関連付ける第１の処理と、値が相互に重複する下位のデータ項目については、一の値のみを実データとしてメモリ上に残し、他の値については上記実データを参照する型に変換する第２の処理と、残された最上位のデータ項目同士を一つの根の元に結合させ、木構造のデータを生成する第３の処理と、最下位のデータ項目に含まれる値の類型を抽出し、これらを所定の順序で整列させたディスティンクト・リストを生成し、メモリに格納する第４の処理と、上記ディスティンクト・リストに含まれる各要素と最下位のデータ項目の値とを、親のデータ項目を共通にする兄弟単位で順にマッチングさせ、ディスティンクト・リストの要素が最下位のデータ項目に存在する場合には、メモリ上に設けたディスティンクト・リストと同サイズのブーリアン配列における対応位置にブーリアン型のtrueをセットすると同時に実データを削除し、該当の値が最下位のデータ項目に存在しない場合には上記ブーリアン配列の対応位置にブーリアン型のfalseをセットする第５の処理と、上記のブーリアン配列をビット配列に変換する第６の処理を実行し、上記データ検索手段が、各ビット配列をブーリアン配列に変換し、各ブーリアン配列及び上記ディスティンクト・リストを参照することにより、最下位のデータ項目の値を特定することを特徴としている。
【００１１】
請求項７に記載したデータ処理システムは、請求項５または６のシステムであって、さらに上記のデータ読み出し手段が、上記SQL文において一または複数のデータ項目の値を指定することにより、上記DBサーバから上記テーブルをグループに分割して読み出す処理を実行し、上記のデータ圧縮手段が、上記第１の処理及び第２の処理をグループ単位で実行することを特徴としている。
【発明の効果】
【００１２】
請求項１〜３、５、６に記載したデータ処理システムにあっては、DBサーバのデータベース内に格納されていたテーブルが、ディスクに比べて高速アクセスが可能なAPサーバのメモリ上に少なくともビット配列を含む木構造のデータとして再現されるため、APサーバはDBサーバにアクセスすることなく、したがってディスクI/Oを発生させることもなく、必要なデータの高速検索が可能となり、処理速度の飛躍的な向上を実現できる。
しかも、表形式のデータを木構造のデータに変換する過程で重複する最上位のデータ項目のデータが除去され、また最上位以外の下位データ項目のデータについてはビット型やブーリアン型、参照型でその存在が表現されるようになるため、全体のデータ量が大幅に圧縮される。このため、比較的容量の小さいAPサーバのメモリでも効率的に必要データを収容することが可能となる。
【００１３】
請求項４及び７に記載したデータ処理システムの場合、APサーバがレコードをDBサーバから取り出すに際し、テーブル全体を一度に受け取るのではなく、特定のデータ項目の値を指定することにより、グループ単位に分割して受け取り、当該グループについて所定の圧縮処理が完了した時点で次のグループに係るレコードを受け取る方式を採用しているため、比較的大きなテーブルであってもAPサーバのメモリ上に格納することが可能となる。
【発明を実施するための最良の形態】
【００１４】
図１は、この発明に係るデータ処理システム10の全体構成図であり、このシステム10は、複数のAPサーバ12と、DBサーバ14と、ロードバランサ（負荷分散装置）16とを備えている。
ロードバランサ16と各APサーバ12間、及び各APサーバ12とDBサーバ14間はネットワークによって接続されている。
また、各APサーバ12に対しては、イントラネット18やインターネット等のネットワーク及びロードバランサ16を介して多数のクライアント端末20が接続されている。
【００１５】
各APサーバ12は、データ処理部22と、データ圧縮部24と、メモリ26とを備えている。
各APサーバ12のハードディスク（図示省略）には、OS及びこのシステム専用のアプリケーションプログラムがセットアップされており、APサーバ12のCPUがこれらのプログラムに従って動作することにより、上記のデータ処理部22及びデータ圧縮部24が実現される。
【００１６】
DBサーバ14は、データベース管理システム（DBMS）28と、業務処理用の各種テーブルが格納されたデータベース30を備えている。
データベース管理システム28は、データベース30を管理し、データベース30に格納されたデータの入出力、更新、および所定の演算などを行う。
【００１７】
図２は、データベース30に格納されたテーブルの一例を示すものであり、このテーブルは、日付、店Cd（店コード）、商品Cd（商品コード）のデータ項目を備えている。
これらのデータ項目間には概念上の階層構造が存在し、日付は最上位項目、店Cdは中位項目、商品Cdは最下位項目に該当する。
【００１８】
ロードバランサ16は、クライアント端末20から送信されたリクエストを、各APサーバ12にかかっている負荷に応じて分散する役割を果たす。
【００１９】
クライアント端末20は、ＰＣ等のコンピュータよりなり、OSの他に、Webブラウザプログラムや専用のアプリケーションプログラムがセットアップされている。
【００２０】
以下、図３〜図５のフローチャートに従い、このシステム10における処理手順を説明する。
まず、APサーバ12のデータ処理部22が起動すると（図３のＳ10）、DBサーバ14に対してSQL文を発行し、データの抽出をリクエストする（Ｓ12）。
この際データ処理部22は、例えば図２のテーブルに格納された各レコードを、日付×店コードで特定されるグループ単位で、かつ日付、店コード、商品コードに基づいて昇順に整列させた状態で送信することを指令するSQL文を生成し、DBサーバ14に送信する。
【００２１】
DBサーバ14のデータベース管理システム28から対応のレコードが日付×店コードのグループ単位で送信されると、データ処理部22はこれをデータ圧縮部24に渡す（Ｓ14）。
データ圧縮部24は、各レコードの日付と店コードに重複する値が存在するか否かをチェックし、重複がある場合には一つの日付及び一つの店コードを残し、他のデータを削除した後、メモリ26に格納する（Ｓ16）。
【００２２】
図６は、メモリ26に格納されたデータグループのイメージを示すものであり、(a)は2006年３月15日の店コード：600店に係るグループのデータに対応している。
図示の通り、日付（20060315）及び店コード（600）のデータは先頭レコードについてのみ残されており、他のレコードからは削除されている。この時点で、日付及び店コードが削除されたレコードに係る商品コードは、先頭レコードの商品コードと共に配列として残された日付及び店コードに関連付けられている。
【００２３】
つぎにデータ圧縮部24は、各レコードの店コード及び商品コードを先行するレコードの店コード及び商品コードと順次比較していき（Ｓ18）、同一の店コードまたは商品コードが存在するか否かを確認する（Ｓ20）。
図６(a)の場合には、店コード及び商品コードの双方について重複する先行データが存在しないため、メモリ26上のデータはそのまま維持される（Ｓ22）。
【００２４】
一つのグループに関する上記の処理が完了すると、データ処理部22は次のグループ（日付×店コード）に属するレコードの抽出を指令するSQL文をDBサーバ14に発行し（Ｓ26、Ｓ12）、データ圧縮部24によるデータの圧縮及びメモリ26への格納が実行される（Ｓ14、Ｓ16）。
【００２５】
つぎにデータ圧縮部24は、各レコードの店コード及び商品コードを先行するレコードの店コード及び商品コードと順次比較していき（Ｓ18）、同一の店コードまたは商品コードが存在するか否かを確認する（Ｓ20）。
2006年３月15日の店コード：601店に係るグループのデータに対応した図６(b)の場合には、商品コードの「491234567891」及び「491234567893」の双方について重複するデータが先行のデータグループに存在するため、データ圧縮部24はこれらを削除すると共に、先行商品コードの実体データを参照する型に置き換える（Ｓ24）。
これに対し、店コード「601」については重複するデータが先行のデータグループに存在しないため、データ圧縮部24は当該店コードをそのまま維持する（Ｓ22）。
【００２６】
APサーバ12のデータ処理部22及びデータ圧縮部24は、対象となるテーブル上の全グループについて処理が完了するまで、Ｓ12〜Ｓ24のステップを繰り返す（Ｓ26）。
因みに、図６(c)は2006年３月16日の店コード：600店に係るグループのデータに対応しており、店コード及び商品コードの全データについて先行データが存在しているため、データ圧縮部24によって実データが削除されると共に、先行する実データの参照型に置き換えられている。
【００２７】
つぎにデータ圧縮部24は、各グループ間で日付を同じくするもの同士を一つの日付の下に集約し、それぞれを一つの根（root）の元に結合する（この時点で重複する日付は削除される）。
この結果、図７に示すように、DBサーバ14のデータベース30内に格納されていたレコードが、APサーバ12のメモリ26上に参照型を含む木構造のデータとして再現される（図４のＳ28）。
この木構造においては、最上位の日付から複数の店コードが枝分かれしており、各店コードには商品コードの配列がぶら下がっている。
【００２８】
図２のテーブルにおいては、各レコード毎に日付及び店コードのデータを備えていたが、図７に示したデータ構造の場合、上位データ項目である日付については一切の重複がない形で集約され、また下位データ項目である店コード及び商品コードについても参照型を使うことで各グループを通じて一切の重複が存在しない形で表現されているため、データ容量の大幅な圧縮が達成されている。
【００２９】
つぎにデータ圧縮部24は、商品コードのディスティンクト・リスト（DistinctList）32をメモリ26上に生成する。
このディスティンクト・リスト32は、上記参照型を含む木構造のデータ中に存在する商品コードの類型を、重複することなく昇順に整列させたリストである。
【００３０】
つぎにデータ圧縮部24は、ディスティンクト・リスト32の要素と各商品コードの値を、商品コードの上位データ項目である店コードを共通にする兄弟単位で順番にマッチングさせていき（Ｓ32）、ディスティンクト・リストの要素と一致する場合には、当該商品コードを削除すると共に、メモリ26上に設けられたディスティンクト・リスト32と同サイズのブーリアン配列における対応位置にブーリアン型の「true」をセットし、ディスティンクト・リストの値が存在しない場合にはブーリアン型の「false」を対応位置にセットする処理を実行する（Ｓ34）。
【００３１】
図８は、「20060315」−「600」に係る商品コードの配列34とディスティンクト・リスト32とのマッチングを示しており、この商品コードの配列34にはディスティンクト・リスト32と同じ位置に同じ商品コードが存在しているため、全商品コードがブーリアン型の「true」に置き換えられる。
【００３２】
また、図９は、「20060315」−「601」に係る商品コードの配列34とディスティンクト・リスト32とのマッチングを示している。この場合、商品コードの「491234567891（参照型）」及び「491234567893（参照型）」のみがディスティンクト・リスト32中の２番目及び４番目の要素と対応しており、ディスティンクト・リスト32中の１番目及び３番目の要素である「491234567890」及び「491234567892」が欠落している。このため、データ圧縮部24は商品コードの「491234567891（参照型）」及び「491234567893（参照型）」を削除した後、ブーリアン型の「false」、「true」、「false」、「true」を商品コードの存在を表すデータとしてブーリアン配列にセットする。
【００３３】
図１０は、実データ及び参照型を含む全ての商品コードが削除され、ディスティンクト・リスト32と同サイズのブーリアン配列に置き換えられた状態の木構造データを示している。
商品コードを参照型で表現した場合、32ビットシステムでは１参照当たり４バイトのメモリを消費することになるが（64ビットシステムでは８バイト）、ブーリアン型の場合には１バイトで特定の商品コードの存在を表現できるため、この時点でデータ容量の大幅な圧縮が実現されている。
【００３４】
つぎにデータ圧縮部24は、上記のブーリアン配列をビット配列に変換する処理を実行する（Ｓ35）。
このビット配列は、図１１に示すように、８桁の二値データ（１または０）を備えており、各桁には下から１、２、４、８、１６、３２、６４、−１２８の定数が割り当てられている。
ここでデータ圧縮部24は、ブーリアン配列のある桁に「true」が格納されている場合には、ビット配列の対応の桁に「１」をセットし、「false」が格納されている場合には「０」をセットする。
【００３５】
図１１(a)の場合には、商品コードの存在がブーリアン値のtrue, true, true, trueで表現されているため、データ圧縮部24がビット配列の上４桁に「１」をセットすると共に、下４桁に「該当する値なし」ということで「０」をセットする様子を示している。この「１１１１００００」のビット配列は、上記した各桁の定数を適用することにより、「−１６」という数値を表していることになる。
図１１(b)の場合には、商品コードの存在がブーリアン値のfalse, true, false, trueで表現されているため、データ圧縮部24がビット配列の上４桁に「０１０１」をセットすると共に、下４桁に「該当する値なし」ということで「０」をセットする様子を示している。この「０１０１００００」のビット配列は、上記した各桁の定数を適用することにより、「８０」という数値を表していることになる。
図１１(c)の場合には、商品コードの存在がブーリアン値のtrue, false, true, trueで表現されているため、データ圧縮部24がビット配列の上４桁に「１０１１」をセットすると共に、下４桁に「該当する値なし」ということで「０」をセットする様子を示している。この「１０１１００００」のビット配列は、上記した各桁の定数を適用することにより、「−８０」という数値を表していることになる。
【００３６】
また、図１２(a)の場合には、商品コードの存在がブーリアン値のfalse, true, true, true, true, true, true, trueで表現されているため、データ圧縮部24がビット配列の最初の桁に「０」をセットすると共に、残りの桁に「１」をセットする様子を示している。この「０１１１１１１１」のビット配列は、上記した各桁の定数を適用することにより、「１２７」という数値を表していることになる。
図１２(b)の場合には、商品コードの存在がブーリアン値のtrue, false, false, false, false, false, false, falseで表現されているため、データ圧縮部24がビット配列の最初の桁に「１」をセットすると共に、残りの桁に「０」をセットする様子を示している。この「１０００００００」のビット配列は、上記した各桁の定数を適用することにより、「−１２７」という数値を表していることになる。
【００３７】
上記のように、ブーリアン配列の代わりに８桁のビット配列を用いることにより、−１２７〜１２７までの２５６通りの数値を表現することが可能となり、これは即ち２５６パターンのブーリアン値の組合せを僅か８ビット（１バイト）で表現できることを意味している。
【００３８】
図１３は、図１０のブーリアン配列をビット配列に変換した木構造を示すイメージ図である。
例えば、2006年３月15日の600店における商品コードとして「１１１１００００」のビット配列が関連付けられていた場合、ここから「true, true,true, true, false, false, false, false」のブーリアン配列が導かれ、これをディスティンクト・リスト32と対比することにより、「491234567890」、「491234567891」、「491234567892」、「491234567893」の具体的な商品コードを特定することが可能となる（下４桁のfalseはディスティンクト・リスト32のサイズと合致しないため、無視される）。
【００３９】
ここで、クライアント端末20からの検索リクエストをロードバランサ16経由でAPサーバ12が受信すると（図５のＳ36）、データ処理部22はメモリ26上に形成された参照型及びビット配列を含む木構造のデータに対して検索条件に該当するデータの抽出処理を実行し（Ｓ38）、その結果をクライアント端末20に送信する（Ｓ40）。
この際、データ処理部22は各ビット配列をブーリアン配列に変換した後、ディスティンクト・リスト32を参照することにより、各商品コードを特定する。
【００４０】
このデータ処理システム10にあっては、DBサーバ14のデータベース30内に格納されていたテーブルが、ディスクに比べて高速アクセスが可能なAPサーバ12のメモリ26上に参照型データ及びビット配列を含む木構造のデータとして圧縮された形で再現されるため、APサーバ12はDBサーバ14にアクセスすることなく、したがってディスクI/Oを発生させることもなく、必要なデータの高速検索が可能となる。
【００４１】
また、表形式のデータを参照型データ及びビット配列を含む木構造のデータに変換する過程で重複するデータが除去され、全体のデータ量が圧縮される結果、比較的容量の小さいAPサーバ12のメモリ26（一般に２ＧＢ程度）でも効率的に必要データを収容することが可能となる。
ブーリアン配列の場合には、１つの状態（true or false）を表現するのにメモリを１バイト消費し、４つの状態を表現するのであれば４バイトのメモリを消費することになる。
これに対し、８桁のビット配列を用いた場合には、１バイトで８つの状態を表示可能となり、メモリの使用量を劇的に抑制可能となる。
【００４２】
また、レコードをDBサーバ14から取り出すに際し、テーブル全体を一度に受け取るのではなく、日付及び店コードのデータ項目の値を指定することにより、グループ単位に分割して受け取り、当該グループについてある程度の圧縮処理が完了した時点で次のグループに係るレコードを受け取る方式を採用しているため、比較的大きなテーブルであってもAPサーバ12のメモリ26上に格納できるようになる。
【００４３】
なお、ブーリアン配列のサイズが８桁を越えている場合には、別のビット配列がデータ圧縮部24によって設けられ、そこにブーリアン値に応じた二値データがセットされる。
図１４はその具体例を示すものであり、ブーリアン配列が12桁である場合には１〜８桁までを第１のビット配列によって表現し、９〜12桁までが第２のビット配列によって表現される。
この場合、データ処理部22は第１のビット配列を参照することによってブーリアン配列の上８桁を特定し、また第２のビット配列を参照することによってブーリアン配列の下４桁を特定する。
その後、データ処理部22はディスティンクト・リストを参照することによって具体的な商品コードを特定する。
【００４４】
上記にあっては、ブーリアン配列を経由してビット配列を生成する例を説明したが、図７に示した参照型データを含む木構造のデータから直接ビット配列を生成することもできる。
すなわち、データ圧縮部24は、ディスティンクト・リスト32の各要素と各商品コードの値を、商品コードの上位データ項目である店コードを共通にする兄弟単位で順番にマッチングさせていき、ディスティンクト・リスト32の要素と一致する場合には、当該商品コードを削除すると共に、メモリ26上に設けた所定桁数のビット配列における対応位置に１をセットし、ディスティンクト・リスト32の値が存在しない場合には０を対応位置にセットする。
この場合もデータ処理部22は、メモリ26上に形成されたビット配列の各桁の値（１または０）とディスティンクト・リスト32を参照することにより、商品コードの値を取得する。
【００４５】
また、データ圧縮部24によって日付×店コードで特定されるグループ毎に重複する日付及び店コードを削除した後、参照型データへの変換工程を省いて直ちに実データのみからなる木構造のデータをメモリ26上に生成し、商品コードの実データに基づいてディスティンクト・リスト32の生成及びビット配列への変換を行うことも可能である。
この後で、重複する店コードについては１の実データのみをメモリ26上に残し、他のデータは残された実データを参照する型に変換するようにしても勿論よい。
【００４６】
上記においては、最上位のデータ項目である日付と最下位のデータ項目である商品コードの間に、店コードのみが存在するテーブルを例に説明したが、最上位のデータ項目と最下位のデータ項目との間に複数階層のデータ項目（例えば「日付−地域コード−店コード−商品コード」）が存在している場合にも適用可能であることはいうまでもない。
【図面の簡単な説明】
【００４７】
【図１】この発明に係るデータ処理システムの全体構成図である。
【図２】DBサーバのデータベースに格納されたテーブルの一例を示す図である。
【図３】このシステムにおける処理手順を示すフローチャートである。
【図４】このシステムにおける処理手順を示すフローチャートである。
【図５】このシステムにおける処理手順を示すフローチャートである。
【図６】メモリに格納されたグループデータを示すイメージ図である。
【図７】メモリ上に形成された参照型を含む木構造のデータ構造を示すイメージ図である。
【図８】ディスティンクト・リストと商品コードとのマッチングの要領を示すイメージ図である。
【図９】ディスティンクト・リストと商品コードとのマッチングの要領を示すイメージ図である。
【図１０】メモリ上に形成された参照型及びブーリアン型を含む木構造のデータ構造を示すイメージ図である。
【図１１】ブーリアン配列をビット配列に変換する様子を示すイメージ図である。
【図１２】ブーリアン配列をビット配列に変換する様子を示すイメージ図である。
【図１３】メモリ上に形成された参照型及びビット配列を含む木構造のデータ構造を示すイメージ図である。
【図１４】８桁を越えるブーリアン配列を複数のビット配列に変換する様子を示すイメージ図である。
【符号の説明】
【００４８】
10 データ処理システム
12 APサーバ
14 DBサーバ
16 ロードバランサ
18 イントラネット
20 クライアント端末
22 データ処理部
24 データ圧縮部
26 メモリ
28 データベース管理システム
30 データベース
32 ディスティンクト・リスト
34 商品コードの配列
【図１】
2007310844.tif 000003
【図２】
2007310844.tif 000004
【図３】
2007310844.tif 000005
【図４】
2007310844.tif 000006
【図５】
2007310844.tif 000007
【図６】
2007310844.tif 000008
【図７】
2007310844.tif 000009
【図８】
2007310844.tif 000010
【図９】
2007310844.tif 000011
【図１０】
2007310844.tif 000012
【図１１】
2007310844.tif 000013
【図１２】
2007310844.tif 000014
【図１３】
2007310844.tif 000015
【図１４】
2007310844.tif 000016