JP5460486B2 - データをソートする装置及び方法 - Google Patents
データをソートする装置及び方法 Download PDFInfo
- 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
- keys
- data
- value
- block
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/06—Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
- G06F7/08—Sorting, i.e. grouping record carriers in numerical or other ordered sequence according to the classification of at least some of the information they carry
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
ここで、金融機関等のコンピュータシステムでは、数百万件にも及ぶ大量のレコードを決められた時間内に一括処理する必要があり、一括処理の処理性能が課題になっている。一括処理では、オンライン端末からデータを入力する場合と同様の処理が行われるため、入力されたデータに応じて様々なデータベースの表にランダムにアクセスする必要がある。このようにデータベース処理でランダムなディスク読み込みが発生した場合、1回の読み込み当たりの時間が長くなり、これが処理性能に大きな影響を及ぼすことになる。
特許文献1では、問い合わせ要求が発行された段階でその問い合わせを処理するトランザクションが該当ブロックに対してレコードの順序を意識した処理を行う場合、順序識別子を判定し、自トランザクションが再利用可能なソート状態であるか否かを判断し、自トランザクションが処理不可能または処理コストが大きいと判断した場合、そのブロックを占有し、ブロック内のレコードをソート、ソートした時の順序識別子を書き換え、ブロックのソート状態を変更後、ブロックを解放している。
特許文献3では、第1のバッファ領域と第2のバッファ領域とを含むメモリのそれぞれのアドレスに、並び替えるべきデータが書き込まれるデータ領域と次の書込み先アドレスを示すアドレス値があらかじめ書き込まれたアドレス領域とを形成し、データの書込みの際にそのアドレスのアドレス領域からのアドレス値に従って順次それぞれのアドレスをアクセスしてデータを所定の順序にて書き込み、第1のバッファ領域にデータが書き込まれている際には第2のバッファ領域を順次シーケンシャルにアクセスして、第2のバッファ領域にデータが書き込まれている際には第1のバッファ領域をシーケンシャルにアクセスして入力されたデータ配列とは異なる配列にてデータを読み出している。
しかしながら、上記特許文献の何れにも、入力データの並び順に着目したデータベース表へのアクセスの高速化手法は記載されていない。
区分値は、0から(s−1)までの整数であり、ソート部は、複数の区分値を並べることによりブロックの識別情報を生成し、以下の式を用いて、順序情報を生成するために並べられる複数の順序値を算出することにより、識別情報を順序情報に変換する、ものであってよい(但し、sは自然数であり、区分値iは識別情報のi番目の区分値であり、順序値iは順序情報のi番目の順序値であり、順序値はsを法とする剰余類で表す)。
この装置は、入力データが有するM個のキーから、データベース表のデータをシーケンシャルに読み込み可能と判断するための条件を満たすN個のキーを、複数のキーとして選択する選択部を更に含む、ものであってよい(M,NはM>Nを満たす整数)。
まず、本発明の実施の形態の概要を説明する。
本発明の実施の形態は、一括処理において複数のデータベース表(以下、「テーブル」という)にシーケンシャルにアクセスできるよう、一括処理の入力データに対して、複数のテーブルのキーを用いた特殊なロジックによる事前ソートを行うものである。以下、この特殊ロジックによる事前ソートを「特殊ソート」と呼ぶことにする。
まず、一括処理の入力データ内のデータベースアクセスのためのキー値に対し、キー値のレンジに応じて、区分値を割り当てる。
図1(a)に、この区分値の割り当てについて示す。
ここでは、あるテーブルのキー値が「0000」から「9999」までの値をとるものとしている。そして、図示するように、「0000」から「0999」までのキー値に対して区分値「0」を、「1000」から「1999」までのキー値に対して区分値「1」を、「9000」から「9999」までのキー値に対して区分値「9」を、それぞれ割り当てている。
図1(b)に、このときのブロック番号の並べ方について示す。尚、本明細書では、ブロック番号を構成する複数の区分値を、左から何番目であるかによって区別するものとする。
図示するように、「000」から「009」までは、3番目の区分値だけが変化するように並べている。「009」の次は、「010」とすると2つの区分値が異なることになるので、それを避けるため、2つ目の区分値だけが変化するように「019」としている。「010」から「018」までは、再び3番目の区分値だけが変化するように並べている。「018」の次は、2番目の区分値だけが変化するように「028」としている。「029」から「027」までは、再び3番目の区分値だけが変化するように並べている。
図示するように、一括処理システムは、前処理装置10と、一括処理装置20とを備える。また、入力装置30と、データベース(DB)40と、記憶装置50と、入力ファイル60と、ソートキー付き入力ファイル70と、ソート済み入力ファイル80とを含む。
一括処理装置20は、前処理装置10で出力されたソート済み入力ファイル80内のデータをソート後の順序で読み込み、一括処理を行う装置である。この一括処理装置20は、例えば大型汎用コンピュータにより実現される。本実施の形態では、処理部の一例として、一括処理装置20を設けている。
DB40は、一括処理装置20における一括処理の対象となるデータの集合であり、RDBの複数のテーブルを含む。また、テーブルの管理やテーブルへのアクセス要求の処理を行うソフトウェアであるDBMS(DataBase Management System)をDB40に含めてもよい。このDB40は、例えば磁気ディスク装置90g(図9参照)により、また、DBMSを含める場合は、これに加えて、例えば磁気ディスク装置90g(図9参照)に格納されたDBMSのプログラムをCPU90a(図9参照)がメインメモリ90c(図9参照)に読み込んで実行することにより、実現される。
記憶装置50は、前処理装置10で生成され、使用される情報を記憶する装置である。この記憶装置50は、例えば磁気ディスク装置90g(図9参照)により実現される。
ソートキー付き入力ファイル70は、入力ファイル60に格納された複数件のデータに対して、前処理装置10がソートキーを付加することにより生成されたファイルである。このソートキー付き入力ファイル70も、例えば磁気テープや磁気ディスク装置90g(図9参照)に記憶しておくとよい。
ソート済み入力ファイル80は、ソートキー付き入力ファイル70に格納された複数件のデータをソートキーでソートすることにより生成されたファイルである。このソート済み入力ファイル80も、例えば磁気テープや磁気ディスク装置90g(図9参照)に記憶しておくとよい。本実施の形態では、ソート済み入力データの一例として、ソート済み入力ファイル80を用いている。
図2に示すように、前処理装置10は、区分分割部11と、キー選択部12と、ソートキー付加部13と、ソート処理部14とを備える。
キー選択部12は、入力ファイル60内のレコード数と、記憶装置50に記憶された情報とに基づいて、特殊ソートに用いる複数のキーを選択する。本実施の形態では、N個のキーを選択する選択部の一例として、キー選択部12を設けている。
ソート処理部14は、ソートキー付加部13で生成されたソートキー付き入力ファイル70内のデータ全体をソートする。この結果、高速処理可能な順番にソートされたデータが得られる。尚、このソート処理部14では、ソートキーの昇順にソートすればよいので、既存のソートユーティリティを用いてソートすればよい。本実施の形態では、ソート部の一例として、ソート処理部14を設けている。
第一に、前処理装置10の区分分割部11の動作について説明する。この区分分割部11は、特殊ソートに用いる候補となるテーブルに関する情報を取得し、テーブルごとに特殊ソートを実施する場合の適切な区分数と区分分割方法とを決定する。
まず、入力ファイル60に含まれ、一括処理で使用される複数のテーブルのそれぞれについて、そのテーブルのテーブル名、そのテーブルのキー名、そのテーブルに対するDBMSにおけるバッファプールのサイズを、パラメータとして入力装置30から与える。すると、区分分割部11は、これらの情報を取得する(ステップ101)。複数のキーは、特殊ソートに使うキーの候補となるが、実際に使われるキーは、キー選択部12で選択される。
格納可能レコード数=バッファプールサイズ/レコード長
尚、上記式において、バッファプールサイズはステップ101で取得したものであり、レコード長はステップ102で取得したものである。
或いは、複数のテーブルが1つのバッファプールを共有する場合は、次の式で算出してもよい。
格納可能レコード数=バッファプールサイズ/レコード長/バッファプールを共有するテーブルの数/余裕率
区分数=レコード数/格納可能レコード数
但し、小数点以下は切り上げるものとする。
尚、上記式において、レコード数はステップ102で取得したものであり、格納可能レコード長はステップ103で算出したものである。
区分値=(キー値−最小キー値)×区分数/(最大キー値−最小キー値+1)
但し、小数点以下は切り捨てるものとする。尚、ここでは、キー値の刻み幅が「1」であるものとして分母に「1」を加えたが、一般的には、キー値の刻み幅を加えるとよい。
尚、上記式において、各キー値はステップ102で取得したものであり、区分数はステップ104で算出したものである。
或いは、キーの分布が一様でない場合は、各区分がほぼ同数のレコードを含むこととなるように、キーの情報を読み込んで、次の式でキーのレンジを決定してもよい。
区分値={k|レンジ区切り(k)≦キー値<レンジ区切り(k+1)}
例えば、あるテーブルのキー値が「0000」から「9999」までの値をとり、一様な分布をしており、区分数が「10」であれば、キー値のレンジに対して、図1(a)のように区分値を割り当てることになる。
尚、この区分分割部11の処理は、特殊ソートの特性を決めるためのものなので、テーブルのレコード数やキーの分布が大きく変わらない限り、一度行っておけば、再度行う必要はない。つまり、区分分割部11の処理は、前処理装置10における処理を再実行する際にスキップしてもよい。
まず、キー選択部12は、入力ファイル60から、その中に含まれるレコードの数を取得する(ステップ121)。
また、キー選択部12は、区分分割部11が記憶装置50に記憶したテーブルごとのキー名、区分数、レコード数を取得する(ステップ122)。
ここで、複数のキーでデータをブロック化し、シーケンシャルアクセス機能が働くようにするためには、次の条件が満たされる必要がある。
入力ファイルのレコード数/(区分数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で取得したものである。
その後、キー選択部12は、未処理のテーブルがあるかどうかを判定する(ステップ127)。未処理のテーブルがあれば、ステップ124へ戻り、次のテーブルについて、ステップ125での条件判定を行う。そして、これを、ステップ125で条件が満たされなくなるまで、又は、ステップ127で未処理のテーブルがなくなるまで、繰り返す。これにより、複数のキーから、条件を満たすできるだけ多くのキーの組が選択されることになる。
まず、ソートキー付加部13は、キー選択部12から複数のキーを取得する(ステップ141)。
また、ソートキー付加部13は、区分分割部11が記憶装置50に記憶した情報のうち、キーごとのキー値のレンジと区分値との対応を取得する(ステップ142)。
また、ソートキー付加部13は、そのレコードにおける複数のキーに対応する区分値をステップ142で取得した情報を参照して求め、これらの区分値を結合することにより、ブロック番号を生成する(ステップ144)。例えば、キーが3つあれば、ブロック番号は「000」、「001」、「002」、・・・のようになる。
ソートキー付加部13は、このような並びを実現するために、ブロック順序値をブロック番号に変換する写像の逆写像を用いて、ブロック番号からブロック順序値を算出する(ステップ145)。具体的には、次の式でブロック順序値を算出する。但し、次の式は、区分数を法とする剰余類として計算するものとする。また、ブロック順序値の左からi番目のキーに対応する値を「順序値i」と表記するものとする。
例えば、あるブロックのブロック番号が「009」で、続くブロックのブロック番号が「019」の場合、後者のブロックでは2つ目のキーの区分値に対応するデータがDB40のテーブルから読み込まれるので、この読み込みがシーケンシャルになるように2つ目のキーでソートしたい。このために、ブロック番号「019」のブロックでは、ブロック内キー値に、データ中の2つ目のキーのキー値を使用する。
ここで、ブロック内ソートに用いるキー(以下、「ブロック内キー」という)に対応する順序値のブロック順序値の中での位置であるブロック内キー位置は、ブロック番号を変換して得られたブロック順序値から次の式を用いて決定できる。尚、この式においても、上記同様、ブロック順序値の左からi番目のキーに対応する値を「順序値i」と表記するものとする。
そして、ソートキー付加部13は、ステップ145で生成したブロック順序値とステップ146で生成したブロック内キー値とを結合することによりソートキーを生成し、これをステップ143で読み込んだレコードに付加する(ステップ147)。
図示するように、ソートキー付き入力ファイル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」となっている。
このソートは、データの特定のキーを用いてそのデータを昇順にソートするという意味で、一般に行われているソートと同じである。従って、このソートは、既知のソートアルゴリズムを用いてプログラムを開発し、これを実行することにより行ってもよいし、既存のソートユーティリティーを用いて行ってもよい。
そして、ソートの結果、ソート処理部14は、一括処理を効率的に実行できる順番に並べられたデータを含むソート済み入力ファイル80を出力する。
尚、ソート済み入力ファイル80内のレコードにはソートキーが付加されているが、このソートキーは、ソートが終了すれば、一括処理のためには不要である。従って、ソートキーは、一括処理装置20がソート済み入力ファイル80内のデータを読み込む際に読み飛ばしてもよいし、ソート中又はソート終了後に削除してソート済み入力ファイル80に含まれないようにしてもよい。
前処理装置10における特殊ソートにより、ソート済み入力ファイル80において、データは次のように並んでいる。
・ブロック内では、キーの区分値が同一である。
・隣のブロックとは、1つのキーについてだけ、キーの区分値が異なる。
・ブロック内では、1つ前のブロックと区分値が異なるキーでソートされている。例えば、ブロック番号「099」、ブロック番号「090」、ブロック番号「190」の順でブロックが並んだ場合、ブロック番号「090」のブロックのデータは3つ目のキーで、ブロック番号「190」のブロックのデータは1つ目のキーでソートされている。
次に、一括処理装置20は、テーブル1にアクセスしている。この場合、1つ前のブロックから、テーブル1のキーの区分値は変化していない。従って、テーブル1のデータはバッファプールに格納されており、高速に処理可能である。
また、一括処理装置20は、テーブル2にアクセスしている。この場合、1つ前のブロックから、テーブル2のキーの区分値は変化していない。従って、テーブル2のデータはバッファプールに格納されており、高速に処理可能である。
更に、一括処理装置20は、テーブル3にアクセスしている。この場合、1つ前のブロックから、テーブル3のキーの区分値は変化しているので、ブロックのデータはこのキーでソートされている。従って、テーブル3のデータはDB40からシーケンシャルに読み込まれ、高速に処理可能である。
次に、一括処理装置20は、テーブル1にアクセスしている。この場合、1つ前のブロックから、テーブル1のキーの区分値は変化しているので、ブロックのデータはこのキーでソートされている。従って、テーブル1のデータはDB40からシーケンシャルに読み込まれ、高速に処理可能である。
また、一括処理装置20は、テーブル2にアクセスしている。この場合、1つ前のブロックから、テーブル2のキーの区分値は変化していない。従って、テーブル2のデータはバッファプールに格納されており、高速に処理可能である。
更に、一括処理装置20は、テーブル3にアクセスしている。この場合、1つ前のブロックから、テーブル3のキーの区分値は変化していない。従って、テーブル3のデータはバッファプールに格納されており、高速に処理可能である。
最初のブロックだけは、キー1とキー2がソート対象になっておらず、キー1を用いたテーブル1へのアクセスとキー2を用いたテーブル2へのアクセスとがランダムアクセスになるため処理時間がかかるが、2番目のブロック以降については全て、シーケンシャル読み込み又はバッファヒットとなるので、高速に処理できる。
このように、本実施の形態では、一括処理に対するデータの入力順を変えるようにした。これにより、一括処理における複数のテーブルへのアクセスが高速化し、処理性能が向上することとなった。
また、本実施の形態では、一括処理の入力データに対して特殊ソートを事前に行うようにした。これにより、一括処理のアプリケーションロジックを変更しなくても、一括処理の高速化が可能となった。
第一に、入力データを複数のキーの区分値の組によりブロック化し、ブロックごとにソートに用いるキーを変えるようにした。これにより、ソート対象となったキーを用いたテーブルからのデータ読み込みをシーケンシャルに行えるようになった。
第二に、キー値をテーブルのバッファーサイズに応じた区分に分割するようにした。これにより、隣接するブロック間でキーの区分値が同じ場合にバッファヒットするようになった。
第三に、ブロックを、複数の区分値のうち1つのキーに対応する区分値だけが変わるように並べることとした。これにより、テーブルからのデータ読み込みが、シーケンシャルアクセス及びバッファヒットの何れかで行えるようになった。
第四に、テーブルに関する情報と入力データ件数とから、ページシーケンシャル動作可能な最大数のキーの組を自動的に選択するようにした。これにより、入力データ件数に応じた性能向上が得られるようになった。
Claims (10)
- 複数のキーを有するデータであって、当該複数のキーを用いて複数のデータベース表にアクセスする処理に対して入力されるデータである入力データをソートする装置であって、
前記複数のキーのそれぞれについて、キーが取り得るキー値の各々が属する区分を、各区分に属するキー値に対応する前記データベース表のデータがバッファに読み込み可能なサイズとなるように決定する決定部と、
前記複数のキーがそれぞれ同一の区分に属するキー値を取る前記入力データのブロックを、隣接するブロック間で当該複数のキーの1つのキー以外のキーが同一の区分に属するキー値を取るようにソートし、当該ブロック内のデータを、当該1つのキーでソートするソート部と
を含む、装置。 - 前記決定部は、前記区分に区分値を割り当て、
前記ソート部は、前記複数のキーが取る複数のキー値が属する複数の区分にそれぞれ割り当てられた複数の区分値に基づいて、隣接するブロック間で前記1つのキー以外のキーが同一の区分に属するキー値を取ることとなるような前記ブロックの順序を示す順序情報を生成し、当該順序情報を用いて前記ブロックをソートする、請求項1の装置。 - 前記入力データは、複数のレコードを含み、
前記ソート部は、前記複数のレコードの各レコードに対し、当該各レコードにおいて前記複数のキーが取る複数のキー値に基づいて得られた前記順序情報と、当該各レコードにおいて前記1つのキーが取るキー値とを含むソートキーを付加し、当該複数のレコードを、当該各レコードに付加された当該ソートキーでソートする、請求項2乃至4の何れかの装置。 - 前記入力データが有するM個のキーから、前記データベース表のデータをシーケンシャルに読み込み可能と判断するための条件を満たすN個のキーを、前記複数のキーとして選択する選択部を更に含む、請求項1乃至5の何れかの装置(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つのキーでソートするソート部と
して機能させる、プログラム。
Priority Applications (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,127 US9727308B2 (en) | 2010-06-23 | 2015-09-11 | 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 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010142973A JP5460486B2 (ja) | 2010-06-23 | 2010-06-23 | データをソートする装置及び方法 |
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 Expired - Fee Related 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 (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5460486B2 (ja) | 2010-06-23 | 2014-04-02 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データをソートする装置及び方法 |
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 | 富士通株式会社 | データ管理装置、データ管理システム、データ管理方法、及びプログラム |
US10467207B2 (en) | 2013-05-24 | 2019-11-05 | Sap Se | Handling changes in automatic sort |
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 |
JP5620617B1 (ja) | 2014-05-28 | 2014-11-05 | 楽天株式会社 | 情報処理システム、端末、サーバ、情報処理方法、記録媒体、ならびに、プログラム |
KR101719075B1 (ko) * | 2015-12-10 | 2017-04-04 | 연세대학교 산학협력단 | 파일 시스템의 데이터 블록 재배치 방법 및 장치 |
US10592164B2 (en) | 2017-11-14 | 2020-03-17 | International Business Machines Corporation | Portions of configuration state registers in-memory |
US11048475B2 (en) | 2017-11-30 | 2021-06-29 | International Business Machines Corporation | Multi-cycle key compares for keys and records of variable length |
US10896022B2 (en) | 2017-11-30 | 2021-01-19 | International Business Machines Corporation | Sorting using pipelined compare units |
US10936283B2 (en) | 2017-11-30 | 2021-03-02 | International Business Machines Corporation | Buffer size optimization in a hierarchical structure |
US11354094B2 (en) | 2017-11-30 | 2022-06-07 | International Business Machines Corporation | Hierarchical sort/merge structure using a request pipe |
US11013340B2 (en) | 2018-05-23 | 2021-05-25 | L&P Property Management Company | Pocketed spring assembly having dimensionally stabilizing substrate |
CN111104472B (zh) * | 2019-11-27 | 2023-07-25 | 北京中交兴路信息科技有限公司 | 一种数据关联分析方法、装置、存储介质及终端 |
US11841856B2 (en) | 2022-03-24 | 2023-12-12 | Visa International Service Association | System, method, and computer program product for efficiently joining time-series data tables |
Family Cites Families (68)
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 |
US5884304A (en) * | 1996-09-20 | 1999-03-16 | Novell, Inc. | Alternate key index query apparatus and method |
US5870739A (en) * | 1996-09-20 | 1999-02-09 | Novell, Inc. | Hybrid query apparatus and method |
US6167393A (en) * | 1996-09-20 | 2000-12-26 | Novell, Inc. | Heterogeneous record search apparatus and method |
US5873079A (en) * | 1996-09-20 | 1999-02-16 | Novell, Inc. | Filtered index 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 | アネックスシステムズ株式会社 | データ格納及び検索方法 |
US6760746B1 (en) * | 1999-09-01 | 2004-07-06 | Eric Schneider | Method, product, and apparatus for processing a data request |
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 |
US6421662B1 (en) * | 1999-06-04 | 2002-07-16 | Oracle Corporation | Generating and implementing indexes based on criteria set forth in queries |
RU2257609C2 (ru) * | 1999-10-21 | 2005-07-27 | Мацусита Электрик Индастриал Ко., Лтд. | Устройство доступа к полупроводниковой карте памяти, компьютерно-считываемый носитель записи, способ инициализации и полупроводниковая карта памяти |
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 |
US7779039B2 (en) * | 2004-04-02 | 2010-08-17 | Salesforce.Com, Inc. | Custom entities and fields in a multi-tenant database system |
JP4129819B2 (ja) * | 2003-10-06 | 2008-08-06 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データベース検索システム及びその検索方法並びにプログラム |
JP2006031631A (ja) * | 2004-07-21 | 2006-02-02 | Nec Corp | データベース処理システム及び方法並びにデータベース処理用プログラム |
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 | 透 降矢 | マルチオペレーション・プロセッシングを用いたデータベースのクエリー処理システム |
US8775365B2 (en) * | 2010-03-07 | 2014-07-08 | Hamid Hatami-Hanza | Interactive and social knowledge discovery sessions |
US20090055418A1 (en) * | 2007-08-21 | 2009-02-26 | Mark Gregory Megerian | Automatic cascading copy operations in a database with referential integrity |
US8595248B2 (en) * | 2008-05-21 | 2013-11-26 | Oracle International Corporation | Querying a cascading index that avoids disk accesses |
JP5467625B2 (ja) * | 2008-07-30 | 2014-04-09 | インターナショナル・ビジネス・マシーンズ・コーポレーション | トランザクションを処理する本番システムと該本番システムのバックアップ・システムである代行システムとを含む本番−代行システム |
US8190601B2 (en) * | 2009-05-22 | 2012-05-29 | Microsoft Corporation | Identifying task groups for organizing search results |
US8554801B2 (en) * | 2009-07-10 | 2013-10-08 | Robert Mack | Method and apparatus for converting heterogeneous databases into standardized homogeneous databases |
JP5039891B2 (ja) * | 2009-10-19 | 2012-10-03 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データベースの複製を生成する装置及び方法 |
US8244686B2 (en) * | 2009-12-04 | 2012-08-14 | International Business Machines Corporation | High throughput, reliable replication of transformed data in information systems |
JP5460486B2 (ja) | 2010-06-23 | 2014-04-02 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データをソートする装置及び方法 |
-
2010
- 2010-06-23 JP JP2010142973A patent/JP5460486B2/ja not_active Expired - Fee Related
-
2011
- 2011-05-17 US US13/109,060 patent/US8725734B2/en active Active
-
2014
- 2014-02-25 US US14/188,746 patent/US9213782B2/en not_active Expired - Fee Related
-
2015
- 2015-09-11 US US14/851,538 patent/US9658826B2/en active Active
- 2015-09-11 US US14/851,127 patent/US9727308B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20160004503A1 (en) | 2016-01-07 |
JP2012008725A (ja) | 2012-01-12 |
US9658826B2 (en) | 2017-05-23 |
US9213782B2 (en) | 2015-12-15 |
US20150378675A1 (en) | 2015-12-31 |
US20140222839A1 (en) | 2014-08-07 |
US20110320451A1 (en) | 2011-12-29 |
US9727308B2 (en) | 2017-08-08 |
US8725734B2 (en) | 2014-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5460486B2 (ja) | データをソートする装置及び方法 | |
JP6639420B2 (ja) | フラッシュ最適化データ・レイアウトのための方法、フラッシュ最適化記憶のための装置、およびコンピュータ・プログラム | |
US8380737B2 (en) | Computing intersection of sets of numbers | |
JP2000187668A (ja) | グループ化方法と重複排除方法 | |
US20080140691A1 (en) | Method, Device and Computer Program Product for Optimizing File Placement in a Storage System | |
JP6751064B2 (ja) | データ検索システム、データ検索方法、及びプログラム | |
US20230161811A1 (en) | Image search system, method, and apparatus | |
CN116529775A (zh) | 用于光线追踪的合并函数调用的方法和装置 | |
CN114489475A (zh) | 分布式存储系统及其数据存储方法 | |
CN111126619B (zh) | 一种机器学习方法与装置 | |
US8332595B2 (en) | Techniques for improving parallel scan operations | |
JP2002082967A (ja) | データ抽出方法および情報処理装置および記録媒体 | |
US11775515B2 (en) | Dataset optimization framework | |
KR101075439B1 (ko) | 멀티 코어 프로세서를 기반으로 하는 문자열 매칭 장치 및 그것의 문자열 매칭 방법 | |
CN110781354B (zh) | 一种对象选择方法、装置、系统及计算设备 | |
WO2011099114A1 (ja) | ハイブリッド型データベースシステム及びその動作方法 | |
JP2023503034A (ja) | パターンベースのキャッシュブロック圧縮 | |
CN112328630A (zh) | 数据查询方法、装置、设备及存储介质 | |
CN107193487B (zh) | 一种随机访问识别方法及系统 | |
Ke et al. | Analyzing the Interplay Between Random Shuffling and Storage Devices for Efficient Machine Learning | |
JP7462191B2 (ja) | 検索方法及び検索装置 | |
KR100585176B1 (ko) | 입출력 서브시스템에서 입출력 명령의 부하 판단 방법 및장치 | |
JP2020123035A (ja) | ソート方法、ソートプログラム及びソート装置 | |
JPWO2014168199A1 (ja) | 論理演算方法および情報処理装置 | |
Agullo et al. | A preliminary out-of-core extension of a parallel multifrontal solver |
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 | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20131217 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 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 |
Ref document number: 5460486 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |