JP5460486B2 - データをソートする装置及び方法 - Google Patents

データをソートする装置及び方法 Download PDF

Info

Publication number
JP5460486B2
JP5460486B2 JP2010142973A JP2010142973A JP5460486B2 JP 5460486 B2 JP5460486 B2 JP 5460486B2 JP 2010142973 A JP2010142973 A JP 2010142973A JP 2010142973 A JP2010142973 A JP 2010142973A JP 5460486 B2 JP5460486 B2 JP 5460486B2
Authority
JP
Japan
Prior art keywords
key
plurality
data
value
keys
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.)
Active
Application number
JP2010142973A
Other languages
English (en)
Other versions
JP2012008725A (ja
Inventor
紀昭 河野
律子 房
Original Assignee
インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation filed Critical インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation
Priority to JP2010142973A priority Critical patent/JP5460486B2/ja
Publication of JP2012008725A publication Critical patent/JP2012008725A/ja
Application granted granted Critical
Publication of JP5460486B2 publication Critical patent/JP5460486B2/ja
Application status is Active legal-status Critical
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/06Arrangements for sorting, selecting, merging or comparing data on individual record carriers
    • G06F7/08Sorting, i.e. grouping record carriers in numerical or other ordered sequence according to the classification of at least some of the information they carry
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures

Description

本発明は、データをソートする装置及び方法に関する。特に、本発明は、複数のキーを有するデータであって、その複数のキーを用いて複数のデータベース表にアクセスする処理に対して入力されるデータである入力データをソートする装置及び方法に関する。

金融機関等のコンピュータシステムでは、通常、オンライン端末からデータを入力することで、データに対する処理が行われる。ところが、例えば、大量の顧客の情報を登録する場合のように、オンライン端末からデータを入力するのが現実的でない場合もある。このような場合は、入力するデータを含むファイルを作成し、このファイルを入力することで、データに対する一括処理(「センタカット処理」ともいう)を行うことがある。
ここで、金融機関等のコンピュータシステムでは、数百万件にも及ぶ大量のレコードを決められた時間内に一括処理する必要があり、一括処理の処理性能が課題になっている。一括処理では、オンライン端末からデータを入力する場合と同様の処理が行われるため、入力されたデータに応じて様々なデータベースの表にランダムにアクセスする必要がある。このようにデータベース処理でランダムなディスク読み込みが発生した場合、1回の読み込み当たりの時間が長くなり、これが処理性能に大きな影響を及ぼすことになる。

そこで、従来から、データベースに対する処理の高速化を図る技術が提案されている(例えば、特許文献1、2参照)。
特許文献1では、問い合わせ要求が発行された段階でその問い合わせを処理するトランザクションが該当ブロックに対してレコードの順序を意識した処理を行う場合、順序識別子を判定し、自トランザクションが再利用可能なソート状態であるか否かを判断し、自トランザクションが処理不可能または処理コストが大きいと判断した場合、そのブロックを占有し、ブロック内のレコードをソート、ソートした時の順序識別子を書き換え、ブロックのソート状態を変更後、ブロックを解放している。

特許文献2では、問い合わせのあったクエリーの最適化を行って関係代数で構成された処理ツリーを作成し、この処理ツリーからトポロジカル・ソートの順番で直接的に処理できるタスクを見出し、これらのタスクをそれぞれのタスクがアクセスするデータベースのリレーションをもとにグループ分けを行い、共通のリレーションに対して処理を行うタスクを集めたグループをグループ列(キュー)に挿入し、利用できるオペレーティングシステムのプロセスの数に応じてグループ列からグループを取り出して、それぞれのプロセスにマルチオペレーション法を用いたグループの処理を行わせている。

また、メモリやデータベースにおける処理を効率よく実行するための技術も提案されている(例えば、特許文献3、4参照)。
特許文献3では、第1のバッファ領域と第2のバッファ領域とを含むメモリのそれぞれのアドレスに、並び替えるべきデータが書き込まれるデータ領域と次の書込み先アドレスを示すアドレス値があらかじめ書き込まれたアドレス領域とを形成し、データの書込みの際にそのアドレスのアドレス領域からのアドレス値に従って順次それぞれのアドレスをアクセスしてデータを所定の順序にて書き込み、第1のバッファ領域にデータが書き込まれている際には第2のバッファ領域を順次シーケンシャルにアクセスして、第2のバッファ領域にデータが書き込まれている際には第1のバッファ領域をシーケンシャルにアクセスして入力されたデータ配列とは異なる配列にてデータを読み出している。

特許文献4では、データ位置管理サーバが、記憶装置からボリューム物理記憶位置管理情報と物理記憶装置稼動情報を収集して記憶し、DBホストのDBMS内のスキーマ情報から必要な情報を収集して記憶し、DBホストにおけるマッピング情報と仮想ボリュームスイッチ中の仮想ボリューム情報を収集して記憶し、DBホストから実行履歴情報を取得して記憶し、それらの情報をもとにより良好な性能特性を持つデータ再配置案を決定し、それを実現するためのデータ移動指示を発行している。

特開平11−3260号公報 特開2008−165622号公報 特開平11−88199号公報 特開2003−150414号公報

ところで、データベースからのデータ読み込みに関し、既存のRDB(Relational DataBase)製品は、動的なシーケンシャルアクセス機能を有している。これは、ランダムアクセス中にレコードの読み込みパターンを認識し、読み込み対象のレコードが物理的に近い場所に格納されていると判断した場合は、ランダムアクセスを動的にシーケンシャルアクセスに変更する機能である。このシーケンシャルアクセス機能では、1回のI/Oで、連続した大量のデータをバッファプールに読み込むことができるので、データ読み込みに要する時間を短縮することができる。つまり、一括処理の入力データの並び順と各データベース表のデータの並び順とがほぼ同じであれば、ランダム読み込みをシーケンシャル読み込みに変えることができ、処理性能を大幅に向上させることができる。
しかしながら、上記特許文献の何れにも、入力データの並び順に着目したデータベース表へのアクセスの高速化手法は記載されていない。

本発明の目的は、入力データの並び順に着目してデータベース表へのアクセスを高速化することにある。

かかる目的のもと、本発明は、複数のキーを有するデータであって、複数のキーを用いて複数のデータベース表にアクセスする処理に対して入力されるデータである入力データをソートする装置であって、複数のキーのそれぞれについて、キーが取り得るキー値の各々が属する区分を、各区分に属するキー値に対応するデータベース表のデータがバッファに読み込み可能なサイズとなるように決定する決定部と、複数のキーがそれぞれ同一の区分に属するキー値を取る入力データのブロックを、隣接するブロック間で複数のキーの1つのキー以外のキーが同一の区分に属するキー値を取るようにソートし、ブロック内のデータを、1つのキーでソートするソート部とを含む、装置を提供する。

ここで、決定部は、区分に区分値を割り当て、ソート部は、複数のキーが取る複数のキー値が属する複数の区分にそれぞれ割り当てられた複数の区分値に基づいて、隣接するブロック間で1つのキー以外のキーが同一の区分に属するキー値を取ることとなるようなブロックの順序を示す順序情報を生成し、順序情報を用いてブロックをソートする、ものであってよい。
区分値は、0から(s−1)までの整数であり、ソート部は、複数の区分値を並べることによりブロックの識別情報を生成し、以下の式を用いて、順序情報を生成するために並べられる複数の順序値を算出することにより、識別情報を順序情報に変換する、ものであってよい(但し、sは自然数であり、区分値iは識別情報のi番目の区分値であり、順序値iは順序情報のi番目の順序値であり、順序値はsを法とする剰余類で表す)。
ソート部は、以下の式を用いて、順序情報における1つのキーに対応する順序値の位置pを決定する、ものであってよい(但し、順序値iは順序情報のi番目の順序値を表す)。
入力データは、複数のレコードを含み、ソート部は、複数のレコードの各レコードに対し、各レコードにおいて複数のキーが取る複数のキー値に基づいて得られた順序情報と、各レコードにおいて1つのキーが取るキー値とを含むソートキーを付加し、複数のレコードを、各レコードに付加されたソートキーでソートする、ものであってよい。
この装置は、入力データが有するM個のキーから、データベース表のデータをシーケンシャルに読み込み可能と判断するための条件を満たすN個のキーを、複数のキーとして選択する選択部を更に含む、ものであってよい(M,NはM>Nを満たす整数)。

また、本発明は、複数のレコードを含むデータであって、複数のレコードの各レコードについて、各レコードが有するM個のキーを用いて複数のデータベース表にアクセスする処理を、複数のレコードについて一括して行う一括処理の対象となるデータである入力データをソートする装置であって、M個のキーのそれぞれについて、キーが取り得るキー値の各々が属する区分を、各区分に属するキー値に対応するデータベース表のデータがバッファに読み込み可能なサイズとなるように決定する決定部と、M個のキーから、データベース表のデータをシーケンシャルに読み込み可能と判断するための条件を満たすN個のキーを選択する選択部と、複数のレコードの各レコードに対し、各レコードにおいてN個のキーが取るN個のキー値が属するN個の区分にそれぞれ割り当てられたN個の区分値に基づいて生成された情報であって、隣接するブロック間でN個のキーの1つのキー以外のキーが同一の区分に属するキー値を取ることとなるような入力データのブロックの順序を示す情報である順序情報と、各レコードにおいて1つのキーが取るキー値とを含むソートキーを付加する付加部と、複数のレコードを、複数のレコードの各々に付加されたソートキーでソートするソート部とを含む、装置も提供する(M,NはM>Nを満たす整数)。

また、本発明は、複数のキーを有する入力データの入力に応じて、複数のキーを用いて複数のデータベース表にアクセスする処理を行うシステムであって、複数のキーのそれぞれについて、キーが取り得るキー値の各々が属する区分を、各区分に属するキー値に対応するデータベース表のデータがバッファに読み込み可能なサイズとなるように決定する決定部と、複数のキーがそれぞれ同一の区分に属するキー値を取る入力データのブロックを、隣接するブロック間で複数のキーの1つのキー以外のキーが同一の区分に属するキー値を取るようにソートし、ブロック内のデータを、1つのキーでソートすることにより、ソート済み入力データを生成する生成部と、生成部により生成されたソート済み入力データの入力に応じて、処理を行う処理部とを含む、システムも提供する。

更に、本発明は、複数のキーを有するデータであって、複数のキーを用いて複数のデータベース表にアクセスする処理に対して入力されるデータである入力データをソートする方法であって、複数のキーのそれぞれについて、キーが取り得るキー値の各々が属する区分を、各区分に属するキー値に対応するデータベース表のデータがバッファに読み込み可能なサイズとなるように決定するステップと、複数のキーがそれぞれ同一の区分に属するキー値を取る入力データのブロックを、隣接するブロック間で複数のキーの1つのキー以外のキーが同一の区分に属するキー値を取るようにソートし、ブロック内のデータを、1つのキーでソートするステップとを含む、方法も提供する。

更にまた、本発明は、複数のキーを有するデータであって、複数のキーを用いて複数のデータベース表にアクセスする処理に対して入力されるデータである入力データをソートする装置として、コンピュータを機能させるプログラムであって、コンピュータを、複数のキーのそれぞれについて、キーが取り得るキー値の各々が属する区分を、各区分に属するキー値に対応するデータベース表のデータがバッファに読み込み可能なサイズとなるように決定する決定部と、複数のキーがそれぞれ同一の区分に属するキー値を取る入力データのブロックを、隣接するブロック間で複数のキーの1つのキー以外のキーが同一の区分に属するキー値を取るようにソートし、ブロック内のデータを、1つのキーでソートするソート部として機能させる、プログラムも提供する。

本発明によれば、入力データの並び順に着目してデータベース表へのアクセスを高速化することができる。

本発明の実施の形態の概要について説明するための図である。 本発明の実施の形態における一括処理システムの構成例を示したブロック図である。 本発明の実施の形態の一括処理システムにおける前処理装置の区分分割部の動作例を示したフローチャートである。 本発明の実施の形態の一括処理システムにおける前処理装置のキー選択部の動作例を示したフローチャートである。 本発明の実施の形態の一括処理システムにおける前処理装置のソートキー付加部の動作例を示したフローチャートである。 本発明の実施の形態の一括処理システムにおける前処理装置で出力されるソートキー付き入力ファイルの内容の一例を示した図である。 本発明の実施の形態の一括処理システムにおける一括処理装置の動作について説明するための図である。 本発明の実施の形態の一括処理システムにおける一括処理装置の動作について説明するための図である。 本発明の実施の形態を適用可能なコンピュータのハードウェア構成を示した図である。

以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
まず、本発明の実施の形態の概要を説明する。
本発明の実施の形態は、一括処理において複数のデータベース表(以下、「テーブル」という)にシーケンシャルにアクセスできるよう、一括処理の入力データに対して、複数のテーブルのキーを用いた特殊なロジックによる事前ソートを行うものである。以下、この特殊ロジックによる事前ソートを「特殊ソート」と呼ぶことにする。

特殊ソートの考え方は、次の通りである。
まず、一括処理の入力データ内のデータベースアクセスのためのキー値に対し、キー値のレンジに応じて、区分値を割り当てる。
図1(a)に、この区分値の割り当てについて示す。
ここでは、あるテーブルのキー値が「0000」から「9999」までの値をとるものとしている。そして、図示するように、「0000」から「0999」までのキー値に対して区分値「0」を、「1000」から「1999」までのキー値に対して区分値「1」を、「9000」から「9999」までのキー値に対して区分値「9」を、それぞれ割り当てている。

また、一括処理でアクセスする複数のテーブルのキーについて、同様に区分値を割り当てる。そして、区分値を結合したものをブロックの識別情報の一例であるブロック番号とし、一括処理の入力データをブロック番号ごとに分類する。例えば、3つのキーがあれば、区分値も3つになり、「000」、「001」、「002」、・・・、「999」のようなブロック番号で識別される複数のブロックができる。この場合、1つのブロックは、同じ区分値に対応する複数件のデータからなり、キー値が近いデータがまとめられたものとなる。

次に、複数のブロックを、隣り合う2つのブロックのブロック番号に含まれる1つの区分値だけが異なるように並べる。
図1(b)に、このときのブロック番号の並べ方について示す。尚、本明細書では、ブロック番号を構成する複数の区分値を、左から何番目であるかによって区別するものとする。
図示するように、「000」から「009」までは、3番目の区分値だけが変化するように並べている。「009」の次は、「010」とすると2つの区分値が異なることになるので、それを避けるため、2つ目の区分値だけが変化するように「019」としている。「010」から「018」までは、再び3番目の区分値だけが変化するように並べている。「018」の次は、2番目の区分値だけが変化するように「028」としている。「029」から「027」までは、再び3番目の区分値だけが変化するように並べている。

次いで、ブロック内のデータを、そのブロックのブロック番号と1つ前のブロックのブロック番号とで区分値が変わったキーを用いてソートする。例えば、ブロック番号が「008」から「009」に変わった場合は3番目のキーで、ブロック番号が「009」から「019」に変わった場合は2番目のキーで、ブロック内のデータをソートする。

このように、一括処理の入力データを複数キーに対応する区分値より区分してブロックにまとめ、隣接するブロック間で1つのキーに対応する区分値のみ異なるようにする。また、ブロック内では、1つ前のブロックから変化した区分値に対応するキーでソートする。こうすると、ブロック内では、ソートに用いたキーに対応するテーブルについて、シーケンシャルアクセスが可能となり、高速に読み込みが行えるようになる。一方、ブロック間で区分値が変わらなかったキーに対応するテーブルについてはランダムアクセスになるが、キーのレンジは1つ前のブロックの場合と同じであり、前ブロックの処理中にデータがバッファプールに読み込まれているので、バッファヒットし高速に読み込みが行える。

図2は、本実施の形態における一括処理システムの構成を示したブロック図である。
図示するように、一括処理システムは、前処理装置10と、一括処理装置20とを備える。また、入力装置30と、データベース(DB)40と、記憶装置50と、入力ファイル60と、ソートキー付き入力ファイル70と、ソート済み入力ファイル80とを含む。

前処理装置10は、一括処理装置20のアプリケーションロジックを変更することなく高速に一括処理を行うために、入力ファイル60内のデータを並べ替えて、ソート済み入力ファイル80を出力する装置である。この前処理装置10は、例えば大型汎用コンピュータやPC(Personal Computer)により実現される。
一括処理装置20は、前処理装置10で出力されたソート済み入力ファイル80内のデータをソート後の順序で読み込み、一括処理を行う装置である。この一括処理装置20は、例えば大型汎用コンピュータにより実現される。本実施の形態では、処理部の一例として、一括処理装置20を設けている。

入力装置30は、前処理装置10に対して、各種パラメータを入力する装置である。この入力装置30は、例えばキーボード/マウス90i(図9参照)により実現される。
DB40は、一括処理装置20における一括処理の対象となるデータの集合であり、RDBの複数のテーブルを含む。また、テーブルの管理やテーブルへのアクセス要求の処理を行うソフトウェアであるDBMS(DataBase Management System)をDB40に含めてもよい。このDB40は、例えば磁気ディスク装置90g(図9参照)により、また、DBMSを含める場合は、これに加えて、例えば磁気ディスク装置90g(図9参照)に格納されたDBMSのプログラムをCPU90a(図9参照)がメインメモリ90c(図9参照)に読み込んで実行することにより、実現される。
記憶装置50は、前処理装置10で生成され、使用される情報を記憶する装置である。この記憶装置50は、例えば磁気ディスク装置90g(図9参照)により実現される。

入力ファイル60は、一括処理装置20に入力すべき複数件のデータを格納したファイルである。この入力ファイル60は、例えば磁気テープや磁気ディスク装置90g(図9参照)に記憶しておくとよい。本実施の形態では、入力データの一例として、入力ファイル60を用いている。
ソートキー付き入力ファイル70は、入力ファイル60に格納された複数件のデータに対して、前処理装置10がソートキーを付加することにより生成されたファイルである。このソートキー付き入力ファイル70も、例えば磁気テープや磁気ディスク装置90g(図9参照)に記憶しておくとよい。
ソート済み入力ファイル80は、ソートキー付き入力ファイル70に格納された複数件のデータをソートキーでソートすることにより生成されたファイルである。このソート済み入力ファイル80も、例えば磁気テープや磁気ディスク装置90g(図9参照)に記憶しておくとよい。本実施の形態では、ソート済み入力データの一例として、ソート済み入力ファイル80を用いている。

次に、前処理装置10の機能構成について、更に詳しく説明する。
図2に示すように、前処理装置10は、区分分割部11と、キー選択部12と、ソートキー付加部13と、ソート処理部14とを備える。

区分分割部11は、一括処理で参照されるテーブルのキー名、バッファプールサイズ、レコード数、レコード長、キー値等の情報を取得し、テーブルごとに区分分割方法を決定する。また、区分分割方法を決定する際に得られた情報を記憶装置50に記憶する。本実施の形態では、区分を決定する決定部の一例として、区分分割部11を設けている。
キー選択部12は、入力ファイル60内のレコード数と、記憶装置50に記憶された情報とに基づいて、特殊ソートに用いる複数のキーを選択する。本実施の形態では、N個のキーを選択する選択部の一例として、キー選択部12を設けている。

ソートキー付加部13は、入力ファイル60内のデータを読み込み、キー選択部12が選択した複数のキーに基づいて、レコードごとに、高速に処理するための並び順を示すソートキーを生成する。そして、ソートキーをレコードに付加することにより、ソートキー付き入力ファイル70を生成する。本実施の形態では、ソート部のソートキーを付加する機能、ソートキーを付加する付加部、ソート済み入力データを生成する生成部の一例として、ソートキー付加部13を設けている。
ソート処理部14は、ソートキー付加部13で生成されたソートキー付き入力ファイル70内のデータ全体をソートする。この結果、高速処理可能な順番にソートされたデータが得られる。尚、このソート処理部14では、ソートキーの昇順にソートすればよいので、既存のソートユーティリティを用いてソートすればよい。本実施の形態では、ソート部の一例として、ソート処理部14を設けている。

次に、本実施の形態における一括処理システムの動作について説明する。
第一に、前処理装置10の区分分割部11の動作について説明する。この区分分割部11は、特殊ソートに用いる候補となるテーブルに関する情報を取得し、テーブルごとに特殊ソートを実施する場合の適切な区分数と区分分割方法とを決定する。

図3は、区分分割部11の動作例を示したフローチャートである。
まず、入力ファイル60に含まれ、一括処理で使用される複数のテーブルのそれぞれについて、そのテーブルのテーブル名、そのテーブルのキー名、そのテーブルに対するDBMSにおけるバッファプールのサイズを、パラメータとして入力装置30から与える。すると、区分分割部11は、これらの情報を取得する(ステップ101)。複数のキーは、特殊ソートに使うキーの候補となるが、実際に使われるキーは、キー選択部12で選択される。

また、区分分割部11は、一括処理で使用されるテーブルごとに、そのテーブルのレコード数、そのテーブルのレコード長、ステップ101でキー名を取得したキーが取るキー値を、DBMSから取得する(ステップ102)。

これにより、区分分割部11は、テーブルごとに、バッファプールに格納可能なレコード数(以下、「格納可能レコード数」という)を算出する(ステップ102)。この場合、テーブルごとに専用のバッファプールがあれば、格納可能レコード数は次の式で算出する。
格納可能レコード数=バッファプールサイズ/レコード長
尚、上記式において、バッファプールサイズはステップ101で取得したものであり、レコード長はステップ102で取得したものである。
或いは、複数のテーブルが1つのバッファプールを共有する場合は、次の式で算出してもよい。
格納可能レコード数=バッファプールサイズ/レコード長/バッファプールを共有するテーブルの数/余裕率

また、区分分割部11は、テーブルごとに、特殊ソートに適した区分数を次の式で算出する(ステップ104)。
区分数=レコード数/格納可能レコード数
但し、小数点以下は切り上げるものとする。
尚、上記式において、レコード数はステップ102で取得したものであり、格納可能レコード長はステップ103で算出したものである。

更に、区分分割部11は、各区分がほぼ同数のレコードを含むこととなるように、各区分に含めるキー値のレンジを決定し、レンジごとに「0」から始まる区分値を割り当てる(ステップ105)。この場合、キー値の分布が一様であれば、次の式のように、最大キー値と最小キー値の間を区分数で等しく分割することによって区分値を割り当てる。
区分値=(キー値−最小キー値)×区分数/(最大キー値−最小キー値+1)
但し、小数点以下は切り捨てるものとする。尚、ここでは、キー値の刻み幅が「1」であるものとして分母に「1」を加えたが、一般的には、キー値の刻み幅を加えるとよい。
尚、上記式において、各キー値はステップ102で取得したものであり、区分数はステップ104で算出したものである。
或いは、キーの分布が一様でない場合は、各区分がほぼ同数のレコードを含むこととなるように、キーの情報を読み込んで、次の式でキーのレンジを決定してもよい。
区分値={k|レンジ区切り(k)≦キー値<レンジ区切り(k+1)}
例えば、あるテーブルのキー値が「0000」から「9999」までの値をとり、一様な分布をしており、区分数が「10」であれば、キー値のレンジに対して、図1(a)のように区分値を割り当てることになる。

最後に、区分分割部11は、これらの処理の結果を、キー選択部12及びソートキー付加部13で用いることができるように、記憶装置50に保存する(ステップ106)。
尚、この区分分割部11の処理は、特殊ソートの特性を決めるためのものなので、テーブルのレコード数やキーの分布が大きく変わらない限り、一度行っておけば、再度行う必要はない。つまり、区分分割部11の処理は、前処理装置10における処理を再実行する際にスキップしてもよい。

第二に、前処理装置10のキー選択部12の動作について説明する。このキー選択部12は、入力ファイル60内のデータの件数と、記憶装置50に記憶された情報とから、特殊ソートに用いる複数のキーを選択する。ところで、複数のキーでデータをブロック化したとき、ブロック内のデータは、RDB製品のシーケンシャルアクセス機能が働き得る程度の密度を持っている必要がある。例えば、入力データが1000万件で各キーの区分数が「10」の場合、4つのキーでブロック化しても、1ブロック内のデータは1000件程度となり、シーケンシャルアクセス機能が働く可能性が高い。一方、入力データが10万件で各キーの区分数が「10」の場合、4つのキーでブロック化すると、1ブロック内のデータは10件になってしまい、シーケンシャルアクセス機能が働く可能性は低くなる。そこで、キー選択部12は、入力データの件数に応じた適切な特殊ソートが行われるように動作する。

図4は、キー選択部12の動作例を示したフローチャートである。
まず、キー選択部12は、入力ファイル60から、その中に含まれるレコードの数を取得する(ステップ121)。
また、キー選択部12は、区分分割部11が記憶装置50に記憶したテーブルごとのキー名、区分数、レコード数を取得する(ステップ122)。

次に、ステップ122で情報を取得したテーブルのうち、区分数が「1」以外のテーブルを、区分数が小さい順に並べる(ステップ123)。つまり、区分数が「1」のテーブルは、常にバッファヒットし高速にアクセスできるため、特殊ソートに用いるキーから除外する。また、区分数が少ないテーブルを選択することが、後述するステップ125での条件を満たす上で有利なので、区分数が少ない順にテーブルを並べる。

そして、キー選択部12は、1つのテーブルの情報を読み込む(ステップ124)。
ここで、複数のキーでデータをブロック化し、シーケンシャルアクセス機能が働くようにするためには、次の条件が満たされる必要がある。
入力ファイルのレコード数/(区分数1×区分数2×・・・×区分数n)>max(テーブルiのレコード数/区分数i)/係数
但し、「テーブルi」はi番目のテーブルを表し、「区分数i」はi番目のテーブルの区分数を表し、「max(X)」はiが1からnまでの値をとるときのXの最大値を表している。また、「係数」は、今回読んだページがページシーケンシャルとして扱われるときの直前に読んだページからのページ数である。ここで、ページとは、磁気ディスク上でのデータの格納単位であり、この単位で読み書きが行われる。ある製品の場合、係数は「16」である。つまり、今回読んだページは、直前に読んだページから16ページ以内にあれば、ページシーケンシャルとして扱われる。そして、連続して読み込んだ8ページ中、5ページ以上がページシーケンシャルであれば、シーケンシャルアクセスが動的に起動されるようになっている。尚、「係数」は製品によって異なるので、使用するDBMS製品に対する適切な値を使用する。
そこで、キー選択部12は、ステップ124で情報を読み込んだテーブルについて、上記条件が満たされているかを判定する(ステップ125)。尚、上記条件において、入力ファイルのレコード数はステップ121で取得したものであり、区分数i、テーブルiのレコード数はステップ122で取得したものである。

ステップ125での判定の結果、ステップ124で情報を読み込んだテーブルについて上記条件が満たされていれば、キー選択部12は、そのテーブルのキーを選択する(ステップ126)。
その後、キー選択部12は、未処理のテーブルがあるかどうかを判定する(ステップ127)。未処理のテーブルがあれば、ステップ124へ戻り、次のテーブルについて、ステップ125での条件判定を行う。そして、これを、ステップ125で条件が満たされなくなるまで、又は、ステップ127で未処理のテーブルがなくなるまで、繰り返す。これにより、複数のキーから、条件を満たすできるだけ多くのキーの組が選択されることになる。

第三に、前処理装置10のソートキー付加部13の動作について説明する。このソートキー付加部13は、望ましいレコード順を表すソートキーを生成し、ソートキーをレコードに付加する。即ち、入力ファイル60内のデータを、キー選択部12で選択された複数のキーによってブロック化した後、ブロックを効率よく処理できるように並べるとともに、ブロック内は特定のキーによってソートしたい。そこで、ソートキー付加部13は、ブロックの順序を示す値(以下、「ブロック順序値」という)とブロック内のソートに用いるキーのキー値(以下、「ブロック内キー値」という)とを連結することによりソートキーを作成し、ソートキーをレコードに付加する。ここで、ブロック順序値は、ブロックの順序を示す順序情報の一例である。

図5は、ソートキー付加部13の動作例を示したフローチャートである。
まず、ソートキー付加部13は、キー選択部12から複数のキーを取得する(ステップ141)。
また、ソートキー付加部13は、区分分割部11が記憶装置50に記憶した情報のうち、キーごとのキー値のレンジと区分値との対応を取得する(ステップ142)。

次に、ソートキー付加部13は、入力ファイル60から1つのレコードを読み込む(ステップ143)。
また、ソートキー付加部13は、そのレコードにおける複数のキーに対応する区分値をステップ142で取得した情報を参照して求め、これらの区分値を結合することにより、ブロック番号を生成する(ステップ144)。例えば、キーが3つあれば、ブロック番号は「000」、「001」、「002」、・・・のようになる。

ところで、ブロック番号の順に単純にブロックを並べると、例えば、ブロック番号「099」のブロックの次がブロック番号「100」のブロックとなってしまう。即ち、隣り合うブロック間で複数の区分値が変わってしまうことがあり、これでは、本実施の形態が目指す動作が行えない。従って、本実施の形態では、ブロックの並びを工夫し、この工夫した並びにおけるブロックの順序を示すブロック順序値をブロック番号から生成し、ソートキーとして用いる。

この場合、ブロックは、隣り合うブロック間でブロック番号の1つの区分値だけが異なるように並べる。例えば、3つのキーがあり、各キーの区分数が「10」である場合を考える。この場合は、図1(b)に示したように、3番目の区分値を1つずつ増やしていき、一巡したら、2番目の区分値を増やすようにブロックを並べればよい。尚、左側の区分値を増やすときに右側の区分値は変えないようにする。
ソートキー付加部13は、このような並びを実現するために、ブロック順序値をブロック番号に変換する写像の逆写像を用いて、ブロック番号からブロック順序値を算出する(ステップ145)。具体的には、次の式でブロック順序値を算出する。但し、次の式は、区分数を法とする剰余類として計算するものとする。また、ブロック順序値の左からi番目のキーに対応する値を「順序値i」と表記するものとする。

これにより、例えば、ブロック番号「019」はブロック順序値「010」に、ブロック番号「010」はブロック順序値「011」に変換される。この変換後の値を、ブロック順序を表すソートキーに用いて、ソート処理部14で入力ファイル60内のデータをソートすることにより、望ましいブロックの並びを実現できる。

また、前述の通り、ブロックは、隣り合うブロック間でブロック番号の1つの区分値だけが異なっている。一括処理において、区分値が変化しなかったキーに対応するテーブルのデータの読み込みはバッファヒットするが、区分値が変化したキーに対応するテーブルのデータの読み込みはディスクから行われる。そこで、変化した区分値に対応するキーを使って、ブロック内のデータをソートすることにより、一括処理におけるディスクからのデータ読み込みをシーケンシャルに行えるようにする。
例えば、あるブロックのブロック番号が「009」で、続くブロックのブロック番号が「019」の場合、後者のブロックでは2つ目のキーの区分値に対応するデータがDB40のテーブルから読み込まれるので、この読み込みがシーケンシャルになるように2つ目のキーでソートしたい。このために、ブロック番号「019」のブロックでは、ブロック内キー値に、データ中の2つ目のキーのキー値を使用する。
ここで、ブロック内ソートに用いるキー(以下、「ブロック内キー」という)に対応する順序値のブロック順序値の中での位置であるブロック内キー位置は、ブロック番号を変換して得られたブロック順序値から次の式を用いて決定できる。尚、この式においても、上記同様、ブロック順序値の左からi番目のキーに対応する値を「順序値i」と表記するものとする。

即ち、ソートキー付加部13は、ブロック内キーとして用いるキーを決定し、そのキーのキー値をコピーすることにより、ブロック内キー値を生成する(ステップ146)。
そして、ソートキー付加部13は、ステップ145で生成したブロック順序値とステップ146で生成したブロック内キー値とを結合することによりソートキーを生成し、これをステップ143で読み込んだレコードに付加する(ステップ147)。

その後、ソートキー付加部13は、未処理のレコードがあるかどうかを判定する(ステップ148)。未処理のレコードがあれば、ステップ143へ戻り、次のレコードについて、ソートキーの付加を行う。そして、これを、ステップ148で未処理のレコードがなくなるまで、繰り返す。これにより、全てのレコードに対して、ブロック順序値とブロック内キー値とからなるソートキーが付加され、ソートキー付き入力ファイル70として出力される。

図6に、ソートキー付き入力ファイル70内のデータの一例を示す。
図示するように、ソートキー付き入力ファイル70内のデータは、入力ファイル60に元々含まれていたレコードデータに対して、ソートキーが付加されたものである。そして、ソートキーは、ブロック順序値と、ブロック内キー値とを含み、レコードデータは、複数のキー値を含んでいる。
ここで、キー値のレンジと区分値との対応は、何れのキーについても、図1(a)に示したようなものであるとする。
すると、例えば1行目のブロックのブロック番号は「346」となる。これをステップ145で変換することで、ブロック順序値は「373」となっている。そして、ステップ146でブロック内キー位置は「3」になるので、ブロック内キー値は「6860」となっている。
また、例えば3行目のブロックのブロック番号は「316」となる。これをステップ145で変換することで、ブロック順序値は「340」となっている。そして、ステップ146でブロック内キー位置は「2」になるので、ブロック内キー値は「1211」となっている。
更に、例えば9行目のブロックのブロック番号は「460」となる。これをステップ145で変換することで、ブロック順序値は「400」となっている。そして、ステップ146でブロック内キー位置は「1」になるので、ブロック内キー値は「4858」となっている。

第四に、前処理装置10のソート処理部14の動作について説明する。このソート処理部14は、ソートキー付加部13によってレコードに付加されたソートキーを用いて、入力ファイル60内のデータ全体をソートする。即ち、ブロック順序値とブロック内キー値とからなるソートキーがレコードに付加されているので、ソート処理部14は、このソートキーを用いて昇順にデータをソートする。
このソートは、データの特定のキーを用いてそのデータを昇順にソートするという意味で、一般に行われているソートと同じである。従って、このソートは、既知のソートアルゴリズムを用いてプログラムを開発し、これを実行することにより行ってもよいし、既存のソートユーティリティーを用いて行ってもよい。
そして、ソートの結果、ソート処理部14は、一括処理を効率的に実行できる順番に並べられたデータを含むソート済み入力ファイル80を出力する。
尚、ソート済み入力ファイル80内のレコードにはソートキーが付加されているが、このソートキーは、ソートが終了すれば、一括処理のためには不要である。従って、ソートキーは、一括処理装置20がソート済み入力ファイル80内のデータを読み込む際に読み飛ばしてもよいし、ソート中又はソート終了後に削除してソート済み入力ファイル80に含まれないようにしてもよい。

第五に、一括処理装置20の動作について説明する。
前処理装置10における特殊ソートにより、ソート済み入力ファイル80において、データは次のように並んでいる。
・ブロック内では、キーの区分値が同一である。
・隣のブロックとは、1つのキーについてだけ、キーの区分値が異なる。
・ブロック内では、1つ前のブロックと区分値が異なるキーでソートされている。例えば、ブロック番号「099」、ブロック番号「090」、ブロック番号「190」の順でブロックが並んだ場合、ブロック番号「090」のブロックのデータは3つ目のキーで、ブロック番号「190」のブロックのデータは1つ目のキーでソートされている。

一括処理装置20は、ソート済み入力ファイル80内のデータを順次読み込み、一括処理を実行していく。すると、区分値が変化したキーに対応するテーブルのデータは、シーケンシャルに読み込まれ、区分値が変化しなかったキーに対応するテーブルのデータは、前のブロックの処理時にバッファプールに読み込まれているためバッファヒットとなり、いずれも高速に処理される。

図7に、このときの処理について示す。(a)は、ブロック番号「099」のブロックを処理した後にブロック番号「090」のブロックを処理するときの例であり、(b)は、その後にブロック番号「190」のブロックを処理するときの例である。尚、ブロック番号を構成する区分値のうち、左から1つ目の区分値がテーブル1のキーの区分値であり、左から2つ目の区分値がテーブル2のキーの区分値であり、左から3つ目の区分値がテーブル3のキーの区分値であるものとする。

(a)では、まず、一括処理装置20が、ソート済み入力ファイル80からブロック番号「090」のブロックのデータを読み込んでいる。
次に、一括処理装置20は、テーブル1にアクセスしている。この場合、1つ前のブロックから、テーブル1のキーの区分値は変化していない。従って、テーブル1のデータはバッファプールに格納されており、高速に処理可能である。
また、一括処理装置20は、テーブル2にアクセスしている。この場合、1つ前のブロックから、テーブル2のキーの区分値は変化していない。従って、テーブル2のデータはバッファプールに格納されており、高速に処理可能である。
更に、一括処理装置20は、テーブル3にアクセスしている。この場合、1つ前のブロックから、テーブル3のキーの区分値は変化しているので、ブロックのデータはこのキーでソートされている。従って、テーブル3のデータはDB40からシーケンシャルに読み込まれ、高速に処理可能である。

(b)では、まず、一括処理装置20が、ソート済み入力ファイル80からブロック番号「190」のブロックのデータを読み込んでいる。
次に、一括処理装置20は、テーブル1にアクセスしている。この場合、1つ前のブロックから、テーブル1のキーの区分値は変化しているので、ブロックのデータはこのキーでソートされている。従って、テーブル1のデータはDB40からシーケンシャルに読み込まれ、高速に処理可能である。
また、一括処理装置20は、テーブル2にアクセスしている。この場合、1つ前のブロックから、テーブル2のキーの区分値は変化していない。従って、テーブル2のデータはバッファプールに格納されており、高速に処理可能である。
更に、一括処理装置20は、テーブル3にアクセスしている。この場合、1つ前のブロックから、テーブル3のキーの区分値は変化していない。従って、テーブル3のデータはバッファプールに格納されており、高速に処理可能である。

ここで、図8に、本実施の形態で入力ファイル60内のデータをソートした場合の一括処理中のテーブルへのアクセス方法の遷移の例を示す。
最初のブロックだけは、キー1とキー2がソート対象になっておらず、キー1を用いたテーブル1へのアクセスとキー2を用いたテーブル2へのアクセスとがランダムアクセスになるため処理時間がかかるが、2番目のブロック以降については全て、シーケンシャル読み込み又はバッファヒットとなるので、高速に処理できる。

以上、本実施の形態について説明した。
このように、本実施の形態では、一括処理に対するデータの入力順を変えるようにした。これにより、一括処理における複数のテーブルへのアクセスが高速化し、処理性能が向上することとなった。
また、本実施の形態では、一括処理の入力データに対して特殊ソートを事前に行うようにした。これにより、一括処理のアプリケーションロジックを変更しなくても、一括処理の高速化が可能となった。

更に、特殊ソートに関しては、次のような効果が挙げられる。
第一に、入力データを複数のキーの区分値の組によりブロック化し、ブロックごとにソートに用いるキーを変えるようにした。これにより、ソート対象となったキーを用いたテーブルからのデータ読み込みをシーケンシャルに行えるようになった。
第二に、キー値をテーブルのバッファーサイズに応じた区分に分割するようにした。これにより、隣接するブロック間でキーの区分値が同じ場合にバッファヒットするようになった。
第三に、ブロックを、複数の区分値のうち1つのキーに対応する区分値だけが変わるように並べることとした。これにより、テーブルからのデータ読み込みが、シーケンシャルアクセス及びバッファヒットの何れかで行えるようになった。
第四に、テーブルに関する情報と入力データ件数とから、ページシーケンシャル動作可能な最大数のキーの組を自動的に選択するようにした。これにより、入力データ件数に応じた性能向上が得られるようになった。

尚、本実施の形態では、入力ファイル60内の各レコードにソートキーを付加するようにしたが、ソートキーを各レコードに付加しない構成を採用してもよい。例えば、ソートキーを、各レコードと関連付けた状態で、入力ファイル60とは別のメモリに保持しておき、このメモリに保持したソートキーに基づいて、入力ファイル60内のレコードをソートするようにしてもよい。

最後に、本実施の形態を適用するのに好適なコンピュータのハードウェア構成について説明する。図9は、このようなコンピュータのハードウェア構成の一例を示した図である。図示するように、コンピュータは、演算手段であるCPU(Central Processing Unit)90aと、M/B(マザーボード)チップセット90bを介してCPU90aに接続されたメインメモリ90cと、同じくM/Bチップセット90bを介してCPU90aに接続された表示機構90dとを備える。また、M/Bチップセット90bには、ブリッジ回路90eを介して、ネットワークインターフェイス90fと、磁気ディスク装置(HDD)90gと、音声機構90hと、キーボード/マウス90iと、フレキシブルディスクドライブ90jとが接続されている。

尚、図9において、各構成要素は、バスを介して接続される。例えば、CPU90aとM/Bチップセット90bの間や、M/Bチップセット90bとメインメモリ90cの間は、CPUバスを介して接続される。また、M/Bチップセット90bと表示機構90dとの間は、AGP(Accelerated Graphics Port)を介して接続されてもよいが、表示機構90dがPCI Express対応のビデオカードを含む場合、M/Bチップセット90bとこのビデオカードの間は、PCI Express(PCIe)バスを介して接続される。また、ブリッジ回路90eと接続する場合、ネットワークインターフェイス90fについては、例えば、PCI Expressを用いることができる。また、磁気ディスク装置90gについては、例えば、シリアルATA(AT Attachment)、パラレル転送のATA、PCI(Peripheral Components Interconnect)を用いることができる。更に、キーボード/マウス90i、及び、フレキシブルディスクドライブ90jについては、USB(Universal Serial Bus)を用いることができる。

ここで、本発明は、全てハードウェアで実現してもよいし、全てソフトウェアで実現してもよい。また、ハードウェア及びソフトウェアの両方により実現することも可能である。また、本発明は、コンピュータ、データ処理システム、コンピュータプログラムとして実現することができる。このコンピュータプログラムは、コンピュータにより読取り可能な媒体に記憶され、提供され得る。ここで、媒体としては、電子的、磁気的、光学的、電磁的、赤外線又は半導体システム(装置又は機器)、或いは、伝搬媒体が考えられる。また、コンピュータにより読取り可能な媒体としては、半導体、ソリッドステート記憶装置、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、リジッド磁気ディスク、及び光ディスクが例示される。現時点における光ディスクの例には、コンパクトディスク−リードオンリーメモリ(CD−ROM)、コンパクトディスク−リード/ライト(CD−R/W)及びDVDが含まれる。

以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。

10…前処理装置、11…区分分割部、12…キー選択部、13…ソートキー付加部、14…ソート処理部、20…一括処理装置、30…入力装置、40…DB、50…記憶装置、60…入力ファイル、70…ソートキー付き入力ファイル、80…ソート済み入力ファイル

Claims (10)

  1. 複数のキーを有するデータであって、当該複数のキーを用いて複数のデータベース表にアクセスする処理に対して入力されるデータである入力データをソートする装置であって、
    前記複数のキーのそれぞれについて、キーが取り得るキー値の各々が属する区分を、各区分に属するキー値に対応する前記データベース表のデータがバッファに読み込み可能なサイズとなるように決定する決定部と、
    前記複数のキーがそれぞれ同一の区分に属するキー値を取る前記入力データのブロックを、隣接するブロック間で当該複数のキーの1つのキー以外のキーが同一の区分に属するキー値を取るようにソートし、当該ブロック内のデータを、当該1つのキーでソートするソート部と
    を含む、装置。
  2. 前記決定部は、前記区分に区分値を割り当て、
    前記ソート部は、前記複数のキーが取る複数のキー値が属する複数の区分にそれぞれ割り当てられた複数の区分値に基づいて、隣接するブロック間で前記1つのキー以外のキーが同一の区分に属するキー値を取ることとなるような前記ブロックの順序を示す順序情報を生成し、当該順序情報を用いて前記ブロックをソートする、請求項1の装置。
  3. 前記区分値は、0から(s−1)までの整数であり、
    前記ソート部は、前記複数の区分値を並べることにより前記ブロックの識別情報を生成し、以下の式を用いて、前記順序情報を生成するために並べられる複数の順序値を算出することにより、当該識別情報を当該順序情報に変換する、請求項2の装置(但し、sは自然数であり、区分値iは識別情報のi番目の区分値であり、順序値iは順序情報のi番目の順序値であり、順序値はsを法とする剰余類で表す)。
  4. 前記ソート部は、以下の式を用いて、前記順序情報における前記1つのキーに対応する順序値の位置pを決定する、請求項3の装置(但し、順序値iは順序情報のi番目の順序値を表す)。
  5. 前記入力データは、複数のレコードを含み、
    前記ソート部は、前記複数のレコードの各レコードに対し、当該各レコードにおいて前記複数のキーが取る複数のキー値に基づいて得られた前記順序情報と、当該各レコードにおいて前記1つのキーが取るキー値とを含むソートキーを付加し、当該複数のレコードを、当該各レコードに付加された当該ソートキーでソートする、請求項2乃至4の何れかの装置。
  6. 前記入力データが有するM個のキーから、前記データベース表のデータをシーケンシャルに読み込み可能と判断するための条件を満たすN個のキーを、前記複数のキーとして選択する選択部を更に含む、請求項1乃至5の何れかの装置(M,NはM>Nを満たす整数)。
  7. 複数のレコードを含むデータであって、当該複数のレコードの各レコードについて、当該各レコードが有するM個のキーを用いて複数のデータベース表にアクセスする処理を、当該複数のレコードについて一括して行う一括処理の対象となるデータである入力データをソートする装置であって、
    前記M個のキーのそれぞれについて、キーが取り得るキー値の各々が属する区分を、各区分に属するキー値に対応する前記データベース表のデータがバッファに読み込み可能なサイズとなるように決定する決定部と、
    前記M個のキーから、前記データベース表のデータをシーケンシャルに読み込み可能と判断するための条件を満たすN個のキーを選択する選択部と、
    前記複数のレコードの各レコードに対し、当該各レコードにおいて前記N個のキーが取るN個のキー値が属するN個の区分にそれぞれ割り当てられたN個の区分値に基づいて生成された情報であって、隣接するブロック間で当該N個のキーの1つのキー以外のキーが同一の区分に属するキー値を取ることとなるような前記入力データのブロックの順序を示す情報である順序情報と、当該各レコードにおいて当該1つのキーが取るキー値とを含むソートキーを付加する付加部と、
    前記複数のレコードを、当該複数のレコードの各々に付加された前記ソートキーでソートするソート部と
    を含む、装置(M,NはM>Nを満たす整数)。
  8. 複数のキーを有する入力データの入力に応じて、当該複数のキーを用いて複数のデータベース表にアクセスする処理を行うシステムであって、
    前記複数のキーのそれぞれについて、キーが取り得るキー値の各々が属する区分を、各区分に属するキー値に対応する前記データベース表のデータがバッファに読み込み可能なサイズとなるように決定する決定部と、
    前記複数のキーがそれぞれ同一の区分に属するキー値を取る前記入力データのブロックを、隣接するブロック間で当該複数のキーの1つのキー以外のキーが同一の区分に属するキー値を取るようにソートし、当該ブロック内のデータを、当該1つのキーでソートすることにより、ソート済み入力データを生成する生成部と、
    前記生成部により生成された前記ソート済み入力データの入力に応じて、前記処理を行う処理部と
    を含む、システム。
  9. 複数のキーを有するデータであって、当該複数のキーを用いて複数のデータベース表にアクセスする処理に対して入力されるデータである入力データをソートする方法であって、
    前記複数のキーのそれぞれについて、キーが取り得るキー値の各々が属する区分を、各区分に属するキー値に対応する前記データベース表のデータがバッファに読み込み可能なサイズとなるように決定するステップと、
    前記複数のキーがそれぞれ同一の区分に属するキー値を取る前記入力データのブロックを、隣接するブロック間で当該複数のキーの1つのキー以外のキーが同一の区分に属するキー値を取るようにソートし、当該ブロック内のデータを、当該1つのキーでソートするステップと
    を含む、方法。
  10. 複数のキーを有するデータであって、当該複数のキーを用いて複数のデータベース表にアクセスする処理に対して入力されるデータである入力データをソートする装置として、コンピュータを機能させるプログラムであって、
    前記コンピュータを、
    前記複数のキーのそれぞれについて、キーが取り得るキー値の各々が属する区分を、各区分に属するキー値に対応する前記データベース表のデータがバッファに読み込み可能なサイズとなるように決定する決定部と、
    前記複数のキーがそれぞれ同一の区分に属するキー値を取る前記入力データのブロックを、隣接するブロック間で当該複数のキーの1つのキー以外のキーが同一の区分に属するキー値を取るようにソートし、当該ブロック内のデータを、当該1つのキーでソートするソート部と
    して機能させる、プログラム。
JP2010142973A 2010-06-23 2010-06-23 データをソートする装置及び方法 Active JP5460486B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010142973A JP5460486B2 (ja) 2010-06-23 2010-06-23 データをソートする装置及び方法

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JP2010142973A JP5460486B2 (ja) 2010-06-23 2010-06-23 データをソートする装置及び方法
US13/109,060 US8725734B2 (en) 2010-06-23 2011-05-17 Sorting multiple records of data using ranges of key values
US14/188,746 US9213782B2 (en) 2010-06-23 2014-02-25 Sorting multiple records of data using ranges of key values
US14/851,538 US9658826B2 (en) 2010-06-23 2015-09-11 Sorting multiple records of data using ranges of key values
US14/851,127 US9727308B2 (en) 2010-06-23 2015-09-11 Sorting multiple records of data using ranges of key values

Publications (2)

Publication Number Publication Date
JP2012008725A JP2012008725A (ja) 2012-01-12
JP5460486B2 true JP5460486B2 (ja) 2014-04-02

Family

ID=45353507

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010142973A Active JP5460486B2 (ja) 2010-06-23 2010-06-23 データをソートする装置及び方法

Country Status (2)

Country Link
US (4) US8725734B2 (ja)
JP (1) JP5460486B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5460486B2 (ja) 2010-06-23 2014-04-02 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データをソートする装置及び方法
US9239871B2 (en) * 2011-07-06 2016-01-19 Ca, Inc. System and method for analyzing sequential data access efficiency
JP5733124B2 (ja) * 2011-09-12 2015-06-10 富士通株式会社 データ管理装置、データ管理システム、データ管理方法、及びプログラム
US9454557B2 (en) * 2013-08-29 2016-09-27 Oracle International Corporation Unit of work based incremental data processing
US9311124B2 (en) 2013-11-07 2016-04-12 Sap Se Integrated deployment of centrally modified software systems
KR101719075B1 (ko) * 2015-12-10 2017-04-04 연세대학교 산학협력단 파일 시스템의 데이터 블록 재배치 방법 및 장치

Family Cites Families (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4611280A (en) * 1984-03-12 1986-09-09 At&T Bell Laboratories Sorting method
US5117495A (en) * 1990-03-07 1992-05-26 Syncsort Incorporated Method of sorting data records
US5257365A (en) * 1990-03-16 1993-10-26 Powers Frederick A Database system with multi-dimensional summary search tree nodes for reducing the necessity to access records
JPH0644285A (ja) 1991-07-15 1994-02-18 Nec Corp センターカットデータ抽出方式
US5390359A (en) * 1992-03-20 1995-02-14 International Business Machines Corporation Storing and retrieving records in a computer system
US5421007A (en) * 1992-05-12 1995-05-30 Syncsort Incorporated Key space analysis method for improved record sorting and file merging
JPH0628386A (ja) 1992-06-10 1994-02-04 Nec Corp センターカット起動コマンド発行方式
US5579514A (en) * 1993-10-22 1996-11-26 International Business Machines Corporation Methodology for increasing the average run length produced by replacement selection strategy in a system consisting of multiple, independent memory buffers
JPH07253991A (ja) * 1994-03-16 1995-10-03 Mitsubishi Electric Corp ジョイン処理方式
US5664172A (en) * 1994-07-19 1997-09-02 Oracle Corporation Range-based query optimizer
US5778354A (en) * 1995-06-07 1998-07-07 Tandem Computers Incorporated Database management system with improved indexed accessing
US5664179A (en) * 1995-06-27 1997-09-02 Mci Corporation Modified skip list database structure and method for access
US5918224A (en) * 1995-07-26 1999-06-29 Borland International, Inc. Client/server database system with methods for providing clients with server-based bi-directional scrolling at the server
US5710915A (en) * 1995-12-21 1998-01-20 Electronic Data Systems Corporation Method for accelerating access to a database clustered partitioning
US5870747A (en) * 1996-07-09 1999-02-09 Informix Software, Inc. Generalized key indexes
JP2988388B2 (ja) 1996-08-02 1999-12-13 日本電気株式会社 店別分散ホスト向けセンターカット処理装置
US5841874A (en) * 1996-08-13 1998-11-24 Motorola, Inc. Ternary CAM memory architecture and methodology
US5924091A (en) * 1996-08-28 1999-07-13 Sybase, Inc. Database system with improved methods for radix sorting
US5873079A (en) * 1996-09-20 1999-02-16 Novell, Inc. Filtered index apparatus and method
US5884304A (en) * 1996-09-20 1999-03-16 Novell, Inc. Alternate key index query apparatus and method
US6167393A (en) * 1996-09-20 2000-12-26 Novell, Inc. Heterogeneous record search apparatus and method
US5870739A (en) * 1996-09-20 1999-02-09 Novell, Inc. Hybrid query apparatus and method
US5926806A (en) * 1996-10-18 1999-07-20 Apple Computer, Inc. Method and system for displaying related information from a database
KR19980049600A (ko) 1996-12-20 1998-09-15 김영귀 타노우 커버
US6067540A (en) * 1997-02-28 2000-05-23 Oracle Corporation Bitmap segmentation
JPH113260A (ja) * 1997-06-13 1999-01-06 Hitachi Ltd データベース管理方法
KR19990003260A (ko) 1997-06-25 1999-01-15 윤종용 반도체 장치의 제조 방법
JP3345628B2 (ja) * 1997-07-11 2002-11-18 アネックスシステムズ株式会社 データ格納及び検索方法
US6292830B1 (en) * 1997-08-08 2001-09-18 Iterations Llc System for optimizing interaction among agents acting on multiple levels
JPH1188199A (ja) 1997-09-12 1999-03-30 Oki Electric Ind Co Ltd インタリーブ回路およびデインタリーブ回路
US5946681A (en) * 1997-11-28 1999-08-31 International Business Machines Corporation Method of determining the unique ID of an object through analysis of attributes related to the object
US6098075A (en) * 1997-12-16 2000-08-01 International Business Machines Corporation Deferred referential integrity checking based on determining whether row at-a-time referential integrity checking would yield the same results as deferred integrity checking
US6151608A (en) * 1998-04-07 2000-11-21 Crystallize, Inc. Method and system for migrating data
JP2974004B1 (ja) 1998-05-12 1999-11-08 日本電気株式会社 Cdma受信装置およびcdma通信システム
US6185557B1 (en) * 1998-07-31 2001-02-06 Unisys Corporation Merge join process
US6457021B1 (en) * 1998-08-18 2002-09-24 Microsoft Corporation In-memory database system
US6760746B1 (en) * 1999-09-01 2004-07-06 Eric Schneider Method, product, and apparatus for processing a data request
US6421662B1 (en) * 1999-06-04 2002-07-16 Oracle Corporation Generating and implementing indexes based on criteria set forth in queries
CN1203395C (zh) * 1999-10-21 2005-05-25 松下电器产业株式会社 半导体存储卡的访问装置、计算机可读记录介质、初始化方法和半导体存储卡
US6571244B1 (en) * 1999-10-28 2003-05-27 Microsoft Corporation Run formation in large scale sorting using batched replacement selection
US6249789B1 (en) * 1999-11-23 2001-06-19 International Business Machines Corporation Method of calculating time-sensitive work algorithms using inputs with different variable effective intervals
US6711562B1 (en) * 1999-12-01 2004-03-23 The Trustees Of Columbia University In The City Of New York Cache sensitive search (CSS) tree indexing system and method
US6567816B1 (en) * 2000-03-07 2003-05-20 Paramesh Sampatrai Desai Method, system, and program for extracting data from database records using dynamic code
US6697800B1 (en) * 2000-05-19 2004-02-24 Roxio, Inc. System and method for determining affinity using objective and subjective data
JP2001331353A (ja) 2000-05-22 2001-11-30 Teijin Ltd データベースへのデータ入力システム及びそのプログラムを記憶した記録媒体
US20020129342A1 (en) * 2001-03-07 2002-09-12 David Kil Data mining apparatus and method with user interface based ground-truth tool and user algorithms
JP4809989B2 (ja) 2001-03-29 2011-11-09 株式会社日本総合研究所 データ格納方法、データ格納システム及びデータ格納プログラム
US7693845B2 (en) * 2001-08-29 2010-04-06 NetTraffic, Inc. Database systems, methods and computer program products using type based selective foreign key association to represent multiple but exclusive relationships in relational databases
JP3782693B2 (ja) * 2001-09-14 2006-06-07 三菱重工業株式会社 同期電動機システム、ガスタービンシステム、及び同期電動機システムの調整方法
US7299243B2 (en) * 2001-09-19 2007-11-20 Bmc Software, Inc. System and method for controlling free space distribution by key range within a database
JP4087097B2 (ja) * 2001-11-12 2008-05-14 株式会社日立製作所 データベース管理システム情報を考慮したデータ再配置方法およびデータ再配置を行う計算機システム
US7107285B2 (en) * 2002-03-16 2006-09-12 Questerra Corporation Method, system, and program for an improved enterprise spatial system
US6961721B2 (en) * 2002-06-28 2005-11-01 Microsoft Corporation Detecting duplicate records in database
JP4129819B2 (ja) * 2003-10-06 2008-08-06 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Maschines Corporation データベース検索システム及びその検索方法並びにプログラム
US7779039B2 (en) * 2004-04-02 2010-08-17 Salesforce.Com, Inc. Custom entities and fields in a multi-tenant database system
JP2006031631A (ja) * 2004-07-21 2006-02-02 Nec Corp データベース処理システム及び方法並びにデータベース処理用プログラム
US8554801B2 (en) * 2009-07-10 2013-10-08 Robert Mack Method and apparatus for converting heterogeneous databases into standardized homogeneous databases
US8589357B2 (en) * 2006-10-20 2013-11-19 Oracle International Corporation Techniques for automatically tracking and archiving transactional data changes
US8108355B2 (en) * 2006-10-27 2012-01-31 Hewlett-Packard Development Company, L.P. Providing a partially sorted index
JP4109305B1 (ja) * 2006-12-28 2008-07-02 透 降矢 マルチオペレーション・プロセッシングを用いたデータベースのクエリー処理システム
US20090055418A1 (en) * 2007-08-21 2009-02-26 Mark Gregory Megerian Automatic cascading copy operations in a database with referential integrity
US8346778B2 (en) * 2008-05-21 2013-01-01 Oracle International Corporation Organizing portions of a cascading index on disk
JP5467625B2 (ja) * 2008-07-30 2014-04-09 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation トランザクションを処理する本番システムと該本番システムのバックアップ・システムである代行システムとを含む本番−代行システム
US8190601B2 (en) * 2009-05-22 2012-05-29 Microsoft Corporation Identifying task groups for organizing search results
JP5039891B2 (ja) * 2009-10-19 2012-10-03 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Maschines Corporation データベースの複製を生成する装置及び方法
US8244686B2 (en) * 2009-12-04 2012-08-14 International Business Machines Corporation High throughput, reliable replication of transformed data in information systems
CA2724144A1 (en) * 2010-03-07 2011-09-07 Hamid Hatami-Hanza Interactive and social knowledge discovery sessions
JP5460486B2 (ja) * 2010-06-23 2014-04-02 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データをソートする装置及び方法

Also Published As

Publication number Publication date
US20160004503A1 (en) 2016-01-07
US9658826B2 (en) 2017-05-23
US20140222839A1 (en) 2014-08-07
US20150378675A1 (en) 2015-12-31
US8725734B2 (en) 2014-05-13
JP2012008725A (ja) 2012-01-12
US9213782B2 (en) 2015-12-15
US20110320451A1 (en) 2011-12-29
US9727308B2 (en) 2017-08-08

Similar Documents

Publication Publication Date Title
US9063982B2 (en) Dynamically associating different query execution strategies with selective portions of a database table
JP4267046B2 (ja) データベース
JP5240475B2 (ja) 近似パターン合致の方法および装置
US6711563B1 (en) Methods of organizing data and processing queries in a database system, and database system and software product for implementing such methods
US7051013B2 (en) Database diagnostic system and method
USRE41901E1 (en) Method and apparatus for retrieving accumulating and sorting table formatted data
US20020095397A1 (en) Method of processing queries in a database system, and database system and software product for implementing such method
US7797319B2 (en) Systems and methods for data model mapping
US8032509B2 (en) Systems and methods for data storage and retrieval using algebraic relations composed from query language statements
EP2450809A2 (en) Method for extracting information from a database
JP5833629B2 (ja) データベースモデル非依存、スキーマ非依存および作業負荷非依存のデータ記憶ならびにアクセスモデルに基づくデータ記憶および/または検索
US5222235A (en) Databases system for permitting concurrent indexing and reloading of data by early simulating the reload process to determine final locations of the data
US20150379429A1 (en) Interactive interfaces for machine learning model evaluations
JP3072708B2 (ja) データベース検索方法及び装置
Crauser et al. A theoretical and experimental study on the construction of suffix arrays in external memory
JP4313323B2 (ja) サーチ可能なアーカイブ
US20020059281A1 (en) Method for creating an index and method for searching an index
EP1211610A1 (en) Methods of organising data and processing queries in a database system
US6725223B2 (en) Storage format for encoded vector indexes
KR101153033B1 (ko) 사본 탐지 및 삭제 방법
WO2008034219A1 (en) A method and system for storing, organizing and processing data in a relational database
WO1995012846A1 (en) Apparatus for accelerating processing of transactions on computer databases
US6366911B1 (en) Partitioning of sorted lists (containing duplicate entries) for multiprocessors sort and merge
US20080263072A1 (en) Methods of Encoding a Combining Integer Lists in a Computer System, and Computer Software Product for Implementing Such Methods
US20040133581A1 (en) Database management system, data structure generating method for database management system, and storage medium therefor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130301

TRDD Decision of grant or rejection written
RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20131217

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131217

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140114

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150