JP2024058778A - データ処理システム、データ処理プログラム、およびデータ処理方法 - Google Patents

データ処理システム、データ処理プログラム、およびデータ処理方法 Download PDF

Info

Publication number
JP2024058778A
JP2024058778A JP2022166085A JP2022166085A JP2024058778A JP 2024058778 A JP2024058778 A JP 2024058778A JP 2022166085 A JP2022166085 A JP 2022166085A JP 2022166085 A JP2022166085 A JP 2022166085A JP 2024058778 A JP2024058778 A JP 2024058778A
Authority
JP
Japan
Prior art keywords
record
data processing
file
sort key
records
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.)
Pending
Application number
JP2022166085A
Other languages
English (en)
Inventor
耕太郎 新庄
信夫 田口
隆之 鈴木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kousokuya Inc
Original Assignee
Kousokuya Inc
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 Kousokuya Inc filed Critical Kousokuya Inc
Priority to JP2022166085A priority Critical patent/JP2024058778A/ja
Publication of JP2024058778A publication Critical patent/JP2024058778A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】データを高速にソートすること。【解決手段】データ処理システムは少なくとも一つのプロセッサを備える。少なくとも一つのプロセッサは、複数のカラムおよび複数のレコードを含む元ファイルを取得し、元ファイルを複数のレコードグループに分割し、複数のレコードグループのそれぞれについて、複数のカラムのうちの少なくとも一つによって設定されたソートキーに基づいて、該レコードグループをソートし、ソートされた複数のレコードグループのそれぞれについて、一つ前のレコードと同じソートキーを含むレコードに所定の印を設定し、ソートされた複数のレコードグループと、印とに基づいて、ソートキーに基づいてソートされた複数のレコードを含む結果ファイルを生成する。【選択図】図2

Description

本開示の一側面はデータ処理システム、データ処理プログラム、およびデータ処理方法に関する。
データのソートに関する様々な技術が知られている。例えば、特許文献1には、ソートされた複数のリストをマージして1個のソートされたリストとするマージソート処理を、複数のプロセッサを用いて処理する並列ソート処理方法が記載されている。
特開平9-190337号公報
データを高速にソートするための仕組みが望まれる。
本開示の一側面に係るデータ処理システムは、少なくとも一つのプロセッサを備える。少なくとも一つのプロセッサは、複数のカラムおよび複数のレコードを含む元ファイルを取得し、元ファイルを複数のレコードグループに分割し、複数のレコードグループのそれぞれについて、複数のカラムのうちの少なくとも一つによって設定されたソートキーに基づいて、該レコードグループをソートし、ソートされた複数のレコードグループのそれぞれについて、一つ前のレコードと同じソートキーを含むレコードに所定の印を設定し、ソートされた複数のレコードグループと、印とに基づいて、ソートキーに基づいてソートされた複数のレコードを含む結果ファイルを生成する。
このような側面においては、ソートされた複数のレコードグループのそれぞれについて、一つ前のレコードと同じソートキーを含むレコードに所定の印が設定される。そして、ソートされた複数のレコードグループと印とに基づいて、全レコードがソートされた結果ファイルが生成される。その印を参照することで、結果ファイルを生成するときに一つ前のレコードと同じソートキーを含むレコードをソートする負荷を軽減することができる。したがって、データを高速にソートすることができる。
本開示の一側面によれば、データを高速にソートすることができる。
図1は元ファイルから結果ファイルを生成する例を示す図である。 図2はデータ処理システムの機能構成の一例を示す図である。 図3はデータ処理システムに用いられるコンピュータのハードウェア構成の一例を示す図である。 図4はデータ処理システムによる一連のデータ処理を示すフローチャートである。 図5は元ファイルを複数のレコードグループに分割する処理を示すフローチャートである。 図6はレコードグループのソートおよび一時ファイルの生成を示すフローチャートである。 図7は一時ファイルの生成の詳細を示すフローチャートである。 図8は結果ファイルを生成する処理を示すフローチャートである。 図9は一つのレコードグループから一つの一時ファイルを生成する例を示す図である。 図10は複数の一時ファイルの例を示す図である。 図11は図10に示す複数の一時ファイルから生成される結果ファイルの例を示す図である。
以下、添付図面を参照しながら本開示での実施形態を詳細に説明する。なお、図面の説明において同一または同等の要素には同一の符号を付し、重複する説明を省略する。
[システムの概要]
本開示に係るデータ処理システムは、データテーブルを処理するためのコンピュータシステムである。データ処理システムは、元ファイルによって示されるデータテーブルを所与のソートキーに基づいてソートし、そのソート結果を示す結果ファイルを生成する。
元ファイルはデータ処理システムによって処理されるデータファイルである。元ファイルは、ファイルシステム上で管理されるデータファイルであってもよいし、データベース管理システム上で管理されるテーブルによって表現されてもよい。元ファイルは、例えば、CSVファイルである。元ファイルは複数のカラムおよび複数のレコードによって表されるデータテーブルを含む。
図1は、元ファイル20から結果ファイル23を生成する例を示す図である。一例では、データ処理システムは元ファイル20を複数のレコードグループ21に分割する。それぞれのレコードグループ21は2以上のレコードによって構成される。それぞれのレコードグループ21は元ファイル20と同じカラム群を含んでもよいし、該カラム群のうちの一部のカラムのみを含んでもよい。一例では、データ処理システムは複数のレコードグループ21のそれぞれについて、該レコードグループ21をソートキーに基づいてソートし、そのソート結果を示す一時ファイル22を生成する。ソートキーはデータを並べ替える際の順序の基準となる要素である。ソートキーは複数のカラムのうちの少なくとも一つによって設定される。データ処理システムはレコードグループ21のカラム群(すなわち、元ファイル20のカラム群)のうちの1以上のカラムを一時ファイル22に含める。一時ファイル22は、レコードグループ21のカラム群の一部のカラムによって構成されてもよいし、レコードグループ21と同じカラム群によって構成されてもよい。データ処理システムは、複数の一時ファイル22の全体をソートキーに基づいてソートしつつ該複数の一時ファイル22を統合して、結果ファイル23を生成する。この結果、元ファイルの全レコードがソートされた結果ファイル23が得られる。
[システムの構成]
図2は一例に係るデータ処理システム1の機能構成を示す図である。この例では、データ処理システム1は機能要素として取得部11、分割部12、ソート部13、マーキング部14、マージ部15、および出力部16を備える。取得部11は、元ファイル20を取得する機能要素である。分割部12は、元ファイル20を分割して複数のレコードグループ21を生成する機能要素である。ソート部13は、複数のレコードグループ21のそれぞれについて、該レコードグループ21をソートキーに基づいてソートする機能要素である。マーキング部14は、ソートされたそれぞれのレコードグループ21について、所定の条件を見たすレコードに対して印を付与しつつ一時ファイル22を生成する機能要素である。マージ部15は、複数の一時ファイル22を統合して結果ファイル23を生成する機能要素である。出力部16は、結果ファイル23を出力する機能要素である。一例では、ソート部13およびマーキング部14はそれぞれのスレッド101a上で実現される。
図3はデータ処理システム1に用いられるコンピュータ100のハードウェア構成の一例を示す図である。コンピュータ100は、一つまたは複数のプロセッサ101、メモリ102、ストレージ103、通信制御装置104、入力装置105、および出力装置106を有する。
プロセッサ101はオペレーティングシステムおよびアプリケーションプログラムを実行する。プロセッサ101は複数のスレッド101aを有する。スレッド101aはプロセッサ101における最小の処理単位である。ストレージ103は、ハードディスク、不揮発性の半導体メモリ、取り出し可能な媒体(例えば、磁気ディスク、光ディスク)などの記憶媒体で構成され、オペレーティングシステムおよびアプリケーションプログラムを記憶する。メモリ102は、ストレージ103からロードされたプログラム、またはプロセッサ101による演算結果を一時的に記憶する。通信制御装置104は、プロセッサ101からの指令に従って、他の装置との間でデータ通信を行う。入力装置105は、ユーザ入力を受け付ける装置であり、例えばキーボードおよびマウスなどで構成される。出力装置106はデータを出力する装置であり、例えば、モニタなどで構成される。
コンピュータをデータ処理システム1として機能させるためのプログラムは、該コンピュータを取得部11、分割部12、ソート部13、マーキング部14、マージ部15、および出力部16として機能させるためのプログラムコードを含む。プログラムの少なくとも一部は、CD-ROM、DVD-ROM、半導体メモリなどの非一時的な記録媒体に記録された上で提供されてもよい。あるいは、プログラムの少なくとも一部は、搬送波に重畳されたデータ信号として通信ネットワークを介して提供されてもよい。提供されたプログラムはストレージ103に記憶される。プロセッサ101がメモリ102と協働してそのプログラムを実行することで、該プログラムに対応する機能要素が実現する。
データ処理システム1は、一つまたは複数のコンピュータにより構成され得る。複数のコンピュータが用いられる場合には、通信ネットワークを介してこれらのコンピュータが互いに接続されることでデータ処理システム1が構成される。
[システムの動作]
図4~図8を参照しながら、データ処理システム1の動作、すなわち、本実施形態に係るデータ処理方法について説明する。図4は、データ処理システム1による一連のデータ処理を処理フローS1として示すフローチャートである。図5は、元ファイル20を複数のレコードグループ21に分割する処理を示すフローチャートである。図6は、レコードグループ21のソートおよび一時ファイル22の生成を示すフローチャートである。図7は、一時ファイル22の生成の詳細を示すフローチャートである。図8は、結果ファイル23を生成する処理を示すフローチャートである。
ステップS11では、取得部11が元ファイル20および処理条件を取得する。取得部11はユーザ操作によって選択された元ファイル20または処理条件を取得してもよいし、所定のプログラムまたはバッチ処理によって指定された元ファイル20または処理条件を取得してもよい。一例では、処理条件はキー項目および指定カラムを示す。キー項目は、元ファイル20で示される複数のカラムのうち、ソートキーを設定するために用いられる1以上のカラムと、該1以上のカラムのそれぞれについての並び順の指定とを示す情報をいう。並び順の指定は昇順および降順のいずれか一方である。キー項目が2以上のカラムを示す場合には、キー項目はソートにおけるそれぞれのカラムの優先順位を更に示してもよい。指定カラムは、元ファイル20で示される複数のカラムのうち、結果ファイル23に書き出される1以上のカラムをいう。指定カラムは、元ファイル20上の全カラムかもしれないし、元ファイル20上のカラム群のうちの一部かもしれない。
ステップS12では、分割部12が元ファイル20を複数のレコードグループ21に分割する。図5を参照しながらステップS12の詳細を説明する。
ステップS121では、分割部12はメモリ102中に複数の被分割領域を設定する。被分割領域はレコードグループ21を格納するための領域である。被分割領域とレコードグループ21との対応関係は1対1である。分割部12はそれぞれの被分割領域の状態を「未使用」に初期化する。
ステップS122では、分割部12は一つの未使用の被分割領域を選択し、元ファイル20中の一部のレコード群をレコードグループ21として該被分割領域に格納する。そのレコード群は、元ファイル20中で連続して並ぶ2以上のレコードの集合である。最初の被分割領域を選択した場合には、分割部12は元ファイル20の先頭から2以上のレコードを読み出してこれらのレコードをレコードグループ21として該最初の被分割領域に格納する。分割部12は、レコードグループ21が格納された被分割領域の状態を「使用中」に更新する。
ステップS123では、分割部12は選択された被分割領域を未使用のスレッド101aに割り当てる。被分割領域とスレッド101aとの対応関係は1対1であり、したがって、レコードグループ21とスレッド101aとの対応関係も1対1である。割り当てられたスレッド101aはその被分割領域上のレコードグループ21を処理することになる。
ステップS124では、分割部12は元ファイル20の全てのレコードを読み出したか否かを判定する。読み出されていないレコードが存在する場合には(ステップS124においてNO)、処理はステップS122に戻る。繰り返されるステップS122では、分割部12は別の未使用の被分割領域を選択し、元ファイル20の中で未だ読み出されていないレコード群の先頭から2以上のレコードを読み出して、これらのレコードをレコードグループ21として該被分割領域に格納する。繰り返されるステップS123では、分割部12はその被分割領域を別の未使用のスレッド101aに割り当てる。全てのレコードが処理された場合には(ステップS124においてYES)、ステップS12が終了する。
図4に戻って、ステップS13では、それぞれのスレッド101aにおいて、ソート部13がレコードグループ21をソートし、マーキング部14が一時ファイル22を生成する。すなわち、ステップS13はそれぞれのスレッド101aにおいて実行される。図6を参照しながらステップS13の詳細を説明する。図6は一つのスレッド101aにおける処理を示す。
ステップS131では、ソート部13はレコードグループ21から1レコードを選択し、取得されたキー項目に基づいて該レコードのソートキーを生成する。一例では、ソート部13は、キー項目によるソートを、ソートキーによって昇順にソートすることで実現できるように、ソートキーを生成する。具体的には、ソート部13は、キー項目で示される1以上のカラムのそれぞれに対応する値を必要に応じて変換し、1以上のカラムに対応する1以上の値を結合してソートキーを生成する。キー項目の或る一つのカラムについて昇順が指定されたとする。そのカラムのデータ型が整数型または実数(float)型である場合には、ソート部13は符号ビットを反転させ、値をビックエンディアンに変換する。そのカラムのデータ型が日付型または時刻型である場合には、ソート部13は値をビックエンディアンに変換する。そのカラムのデータ型が文字列である場合には、ソート部13は値をそのまま用いる。一方、キー項目の或る一つのカラムについて降順が指定されたとする。そのカラムのデータ型が整数型または実数型である場合には、ソート部13は値の補数をビックエンディアンに変換する。そのカラムのデータ型が日付型または時刻型である場合には、ソート部13は値の補数をビックエンディアンに変換する。そのカラムのデータ型が文字列である場合には、ソート部13は1バイト毎に補数を設定し、その補数を出現順に配置する。ソート部13はこのように必要に応じて変換された1以上の値を結合してソートキーを生成する。
ステップS132では、ソート部13は選択されたレコードにソートキーを関連付ける。一例では、ソート部13は指定カラムで指定されるデータ項目の集合をレコードデータ部としてそのレコードから抽出し、そのレコードデータ部にソートキーを関連付ける。
ステップS133では、ソート部13はレコードグループ21の全てのレコードを処理したか否かを判定する。処理されていないレコードが存在する場合には(ステップS133においてNO)、処理はステップS131に戻る。ソート部13は未処理の1レコードを選択し、該レコードについてステップS131,S132の処理を実行する。全てのレコードが処理された場合には(ステップS133においてYES)、処理はステップS134に進む。
ステップS134では、ソート部13はソートキーに基づいてレコードグループ21をソートする。一例では、ソートされるレコードグループ21は、レコードデータ部の集合である。上述したように、ソートキーによって昇順にソートすることでキー項目によるソートを実現する場合には、ソート部13はその昇順のソートをレコードグループ21に対して実行する。
ステップS135では、マーキング部14がソートされたレコードグループ21に基づいて一時ファイル22を生成する。この処理において、マーキング部14はそのレコードグループ21について、一つ前のレコードと同じソートキーを含むレコードに所定の印を設定する。図7を参照しながらステップS135の詳細を説明する。
ステップS1351では、マーキング部14はソートキーに現れない特殊な数値をキーチェック変数に設定する。キーチェック変数は、連続する2レコードの間でソートキーが等しいか否かを比較するための変数であり、ソートキーと同じバイト数によって表される。例えば、マーキング部14は各バイトの値が16進数で「FF」である値をキーチェック変数に設定する。
ステップS1352では、マーキング部14はソート順に従ってレコードグループ21から1レコードを選択し、そのレコードのソートキーを取得する。
ステップS1353では、マーキング部14はそのソートキーがキーチェック変数と等しいか否かを判定する。
ソートキーがキーチェック変数と等しくない場合には(ステップS1353においてNO)、処理はステップS1354に進む。最初に選択されたレコードのソートキーはキーチェック変数と異なるので、処理はステップS1354に進む。ステップS1354では、マーキング部14は選択されたレコードにキーチェックフラグを関連付け、このキーチェックフラグに0を設定する。キーチェックフラグは、一つ前のレコードとの間でソートキーが等しいか否かを示すカラムである。キーチェックフラグは、一つ前のレコードとの間でソートキーが異なることを示す第1のフラグ値(例えば0)と、一つ前のレコードとの間でソートキーが等しいことを示す第2のフラグ値(例えば1)という二値で表される。キーチェックフラグは、一つ前のレコードと同じソートキーを含むレコードに設定される印の一例である。
ステップS1355では、マーキング部14はキーチェックフラグ、ソートキー、およびレコードデータ部を含む一時レコードを生成する。
ステップS1356では、マーキング部14はキーチェック変数にソートキーを代入してキーチェック変数を更新する。
ソートキーがキーチェック変数と等しい場合には(ステップS1353においてYES)、処理はステップS1357に進む。ステップS1357では、マーキング部14は選択されたレコードにキーチェックフラグを関連付け、このキーチェックフラグに1を設定する。
ステップS1358では、マーキング部14は、キーチェックフラグおよびレコードデータ部を含み、ソートキーを含まない一時レコードを生成する。すなわち、マーキング部14はその一時レコードを生成する際にソートキーを削除する。ソートキーの削除、すなわち、一時レコードにおけるソートキーの欠落は、印の一例である。
ステップS1359では、マーキング部14は一時レコードを一時ファイル22に書き出す。マーキング部14は一時ファイル22の末尾にその一時レコードを追加する。
ステップS1360では、マーキング部14はレコードグループ21の全てのレコードを処理したか否かを判定する。未処理のレコードが存在する場合には(ステップS1360においてNO)、処理はステップS1352に戻る。この場合、マーキング部14はステップS1352においてソート順に従って次の1レコードを選択し、該レコードについてステップS1352~S1359の処理を実行する。全てのレコードが処理された場合には(ステップS1360においてYES)、処理はステップS1361に進む。ステップS1361では、マーキング部14はレコードグループ21を記憶しているメモリ102の被分割領域の状態を「未使用」に更新して該被分割領域を解放する。
図4に戻って、ステップS14では、マージ部15が複数の一時ファイル22に基づいて結果ファイル23を生成する。マージ部15は、ソートされた複数のレコードグループ21と印とに基づいて、ソートキーに基づいてソートされた複数のレコードを含む結果ファイル23を生成する。図8を参照しながらステップS14の詳細を説明する。
ステップS141では、マージ部15はソート順に従って複数の一時ファイル22のそれぞれから1レコード(一つの一時レコード)を候補レコードとして選択する。
ステップS142では、マージ部15は複数の候補レコードのうち、最小のソートキーに対応するレコードを対象レコードとして結果ファイル23に書き出す。マージ部15は対象レコードのレコードデータ部を結果ファイル23に書き出す。
ステップS143では、マージ部15は対象レコードが書き出された一時ファイル22から次のレコードを選択する。すなわち、マージ部15は対象レコードに対応するレコードグループ21から、対象レコードの次のレコードを選択する。
ステップS144では、マージ部15は選択されたレコードのキーチェックフラグが1であるか否かを判定する。キーチェックフラグが1である場合には(ステップS144においてYES)、処理はステップS145に進む。
ステップS145では、マージ部15は選択されたレコードを、他の一時ファイル22から選択されている1以上の候補レコートとの間でソートキーを比較することなく、結果ファイル23に書き出す。マージ部15は選択されたレコードのレコードデータ部を結果ファイル23に書き出す。マージ部15はステップS142における対象レコードの書き出しに続けて、選択されたレコードを結果ファイル23に書き出す。すなわち、マージ部15は印が設定されたレコードを一つ前のレコードと共に結果ファイル23に書き出す。2以上のレコードが共に結果ファイル23に書き出されることは、該2以上のレコードがひとまとまりで結果ファイル23に記録されることを意味する。印が設定されたレコードのソートキーは、最後に結果ファイル23に書き出された対象レコードのソートキーと同じである。したがって、マージ部15は、他の一時ファイルから選択されている1以上の候補レコードのレコードキーと比較する必要がない。ステップS145の後に処理はステップS143に進む。ステップS143ではマージ部15は対象レコードが書き出された一時ファイル22から次のレコードを選択し、そのレコードについてステップS144の処理を実行する。
キーチェックフラグが0である場合には(ステップS144においてNO)、処理はステップS146に進む。ステップS146では、マージ部15は全てのレコードを結果ファイル23に書き出したか否かを判定する。未処理のレコードが存在する場合には(ステップS146においてNO)、処理はステップS142に戻り、マージ部15はステップS142以降の処理を実行する。全てのレコードが結果ファイル23に書き出された場合には(ステップS146においてYES)、マージ部15はステップS14を終了する。
ステップS14では、全ての一時レコードの書き出しが終わるタイミングは複数の一時ファイル22の間で互いに異なる。或る一時ファイル22について全ての一時レコードが結果ファイル23に書き出された以降には、その一時ファイル22についてのステップS143~S145の処理は実行されない。
図4に戻って、ステップS15では、出力部16が結果ファイル23を出力する。出力部16は結果ファイル23を、モニタ上に表示してもよいし、所与のデータベースに格納してもよいし、他のコンピュータに送信してもよいし、印刷してもよい。
図9~11を参照しながら、データ処理システム1によるソートの一例を説明する。図9は、一つのレコードグループ21から一つの一時ファイル22を生成する例を示す図である。図10は複数の一時ファイル22の例を示し、図11はそれらの一時ファイル22から生成される結果ファイル23の例を示す。図9に示す一時ファイル22は、図10に示す3個の一時ファイル22のうちの一つと同じである。図9~図11の例では、レコードグループ21の複数のカラムは、販売月、店舗コード、都道府県コード、地域名、店舗タイプ、店舗住所、店舗連絡先、商品コード、商品名、小カテゴリ、中カテゴリ、大カテゴリ、販売数量、および販売金額である。指定カラムは販売月、店舗コード、都道府県コード、中カテゴリ、および販売数量である。ソートキーは中カテゴリおよび店舗コードによって生成され、第1優先順位が中カテゴリの降順であり、第2優先順位が店舗コードの昇順である。中カテゴリおよび店舗コードはいずれも整数型である。
一例では、データ処理システム1は中カテゴリについて、符号ビットを反転させ、値の補数をビックエンディアンに変換する。また、データ処理システム1は店舗コードについて、符号ビットを判定し、値をビックエンディアンに変換する。そして、データ処理システム1は変換された中カテゴリおよび店舗コードを結合してソートキーを生成する。データ処理システム1はレコードグループ21をそのソートキーに基づいて昇順にソートする。そして、データ処理システム1はソートされたレコードグループ21に対してキーチェックフラグとソートキーの削除とによる印を設定しつつ、一時ファイル22を生成する。図9の例では、レコードグループ21は、中カテゴリ「516」および店舗コード「2」の組合せを有する4レコードを含む。一時ファイル22では、その4レコードのうち1レコードにソートキーが設定され、残りの3レコードでは、キーチェックフラグ「1」が設定され、ソートキーが削除される。
図10の例では、3個の一時ファイル22のいずれも、印が設定されたレコードを含む。元ファイル20の内容によっては、少なくとも一つの一時ファイル22において、全ての一時レコードに印が設定されない場合があり得ることに留意されたい。
データ処理システム1はその3個の一時ファイル22を統合して結果ファイル23を生成する。ソートキーが「FDFB0002h」である4レコードは共に結果ファイル23に書き出される。ソートキーが「FEED002Ch」である3レコード、およびソートキーが「FDCD003Dh」である4レコードについても、同様にひとまとまりで結果ファイル23に書き出される。結果ファイル23の各レコードは、中カテゴリの降順にかつ店舗コードの昇順にソートされている。図11の例では、結果ファイル23は中カテゴリ「274」および店舗コード「44」の組合せを有する3レコードを含み、中カテゴリ「274」および店舗コード「48」の組合せを有する1レコードを含む。図11の例では、第1優先順位が中カテゴリの降順であり、第2優先順位が店舗コードの昇順であるので、中カテゴリ「274」および店舗コード「44」の組合せを有する3レコードが、中カテゴリ「274」および店舗コード「48」の組合せを有する1レコードの上に位置している。
[変形例]
以上、本開示での様々な例に基づいて詳細に説明した。しかし、本開示は上記の例に限定されるものではない。本開示の技術については、その要旨を逸脱しない範囲で様々な変形が可能である。
上記の例では、マーキング部14が、キーチェックフラグの設定とソートキーの削除とを印の設定として実行するが、キーチェックフラグの設定とソートキーの削除との一方が省略されてもよい。あるいは、データ処理システムは他の手法を印の設定として実行してもよい。
指定カラムに対応するレコードデータ部が生成されるタイミングは上記の例に限定されない。例えば、データ生成システムは元ファイルを複数のレコードグループに分割する際にレコードデータ部を生成してもよいし、複数の一時ファイルを生成する際にレコードデータ部を生成してもよい。
本開示において、「少なくとも一つのプロセッサが、第1の処理を実行し、第2の処理を実行し、…第nの処理を実行する。」との表現、またはこれに対応する表現は、第1の処理から第nの処理までのn個の処理の実行主体、すなわちプロセッサが途中で変わる場合を含む概念を示す。すなわち、この表現は、n個の処理のすべてが同じプロセッサで実行される場合と、n個の処理においてプロセッサが任意の方針で変わる場合との双方を含む概念を示す。
少なくとも一つのプロセッサにより実行される方法の処理手順は上記実施形態での例に限定されない。例えば、上述したステップの一部が省略されてもよいし、別の順序で各ステップが実行されてもよい。また、上述したステップのうちの任意の2以上のステップが組み合わされてもよいし、ステップの一部が修正または削除されてもよい。あるいは、上記の各ステップに加えて他のステップが実行されてもよい。
二つの数値の大小関係の比較では、「以上」および「よりも大きい」という二つの基準のどちらが用いられてもよく、「以下」および「未満」という二つの基準のうちのどちらが用いられてもよい。
[付記]
上記の様々な例から把握されるとおり、本開示は以下に示す態様を含む。
(付記1)
少なくとも一つのプロセッサを備え、
前記少なくとも一つのプロセッサが、
複数のカラムおよび複数のレコードを含む元ファイルを取得し、
前記元ファイルを複数のレコードグループに分割し、
前記複数のレコードグループのそれぞれについて、前記複数のカラムのうちの少なくとも一つによって設定されたソートキーに基づいて、該レコードグループをソートし、
前記ソートされた複数のレコードグループのそれぞれについて、一つ前のレコードと同じ前記ソートキーを含むレコードに所定の印を設定し、
前記ソートされた複数のレコードグループと、前記印とに基づいて、前記ソートキーに基づいてソートされた前記複数のレコードを含む結果ファイルを生成する、
データ処理システム。
(付記2)
前記少なくとも一つのプロセッサが、前記印が設定されたレコードを前記一つ前のレコードと共に結果ファイルに書き出す、
付記1に記載のデータ処理システム。
(付記3)
前記少なくとも一つのプロセッサが、
前記一つ前のレコードを対象レコードとして前記結果ファイルに書き出し、
前記対象レコードに対応する前記レコードグループから、前記対象レコードの次のレコードを選択し、
前記選択されたレコードに前記印が設定されている場合には、前記対象レコードに続けて、該選択されたレコードを前記結果ファイルに書き出す、
付記2に記載のデータ処理システム。
(付記4)
前記少なくとも一つのプロセッサが、
前記ソートされた複数のレコードグループのそれぞれから、ソート順に基づいて1レコードを候補レコードとして選択し、
前記ソートキーに基づいて、複数の前記候補レコードのうちの一つを前記対象レコードとして前記結果ファイルに書き出す、
付記3に記載のデータ処理システム。
(付記5)
前記少なくとも一つのプロセッサが、前記一つ前のレコードと同じ前記ソートキーを含む前記レコードに、所定のフラグ値を前記印として設定する、
付記1~4のいずれか一つに記載のデータ処理システム。
(付記6)
前記少なくとも一つのプロセッサが、前記印として、前記一つ前のレコードと同じ前記ソートキーを含む前記レコードから前記ソートキーを削除する、
付記1~5のいずれか一つに記載のデータ処理システム。
(付記7)
複数のカラムおよび複数のレコードを含む元ファイルを取得するステップと、
前記元ファイルを複数のレコードグループに分割するステップと、
前記複数のレコードグループのそれぞれについて、前記複数のカラムのうちの少なくとも一つによって設定されたソートキーに基づいて、該レコードグループをソートするステップと、
前記ソートされた複数のレコードグループのそれぞれについて、一つ前のレコードと同じ前記ソートキーを含むレコードに所定の印を設定するステップと、
前記ソートされた複数のレコードグループと、前記印とに基づいて、前記ソートキーに基づいてソートされた前記複数のレコードを含む結果ファイルを生成するステップと、
をコンピュータに実行させるデータ処理プログラム。
(付記8)
少なくとも一つのプロセッサを備えるデータ処理システムによって実行されるデータ処理方法であって、
複数のカラムおよび複数のレコードを含む元ファイルを取得するステップと、
前記元ファイルを複数のレコードグループに分割するステップと、
前記複数のレコードグループのそれぞれについて、前記複数のカラムのうちの少なくとも一つによって設定されたソートキーに基づいて、該レコードグループをソートするステップと、
前記ソートされた複数のレコードグループのそれぞれについて、一つ前のレコードと同じ前記ソートキーを含むレコードに所定の印を設定するステップと、
前記ソートされた複数のレコードグループと、前記印とに基づいて、前記ソートキーに基づいてソートされた前記複数のレコードを含む結果ファイルを生成するステップと、
を含むデータ処理方法。
付記1,7,8においては、ソートされた複数のレコードグループのそれぞれについて、一つ前のレコードと同じソートキーを含むレコードに所定の印が設定される。そして、ソートされた複数のレコードグループと印とに基づいて、全レコードがソートされた結果ファイルが生成される。その印を参照することで、結果ファイルを生成するときに一つ前のレコードと同じソートキーを含むレコードをソートする負荷を軽減することができる。したがって、データを高速にソートすることができる。
付記2においては、印が設定されたレコードが他のレコードと比較されることなく結果ファイルに書き出される。その比較の回数が減る分だけデータを高速にソートすることができる。
付記3においては、印が設定されたレコードが、他のレコードと比較されることなく、一つ前のレコードに続けて結果ファイルに書き出される。その比較の回数が減る分だけデータを高速にソートすることができる。
付記4においては、複数のレコードグループから選択された複数の候補レコードがソートキーに基づいて比較され、該複数の候補レコードのうちの一つが対象レコードとして結果ファイルに書き出される。必要な場合に限ってレコードグループ間でのレコードの比較が行われるので、データを高速にソートすることができる。
付記5によれば、フラグ値を参照するという簡単な操作によって、一つ前のレコードと同じソートキーを含むレコードを特定することができる。
付記6によれば、他のレコードとの比較が不要なレコードのソートキーが削除されるので、ソートに必要な記憶領域を節約しつつ、データを高速にソートすることができる。
1…データ処理システム、11…取得部、12…分割部、13…ソート部、14…マーキング部、15…マージ部、16…出力部、20…元ファイル、21…レコードグループ、22…一時ファイル、23…結果ファイル。

Claims (8)

  1. 少なくとも一つのプロセッサを備え、
    前記少なくとも一つのプロセッサが、
    複数のカラムおよび複数のレコードを含む元ファイルを取得し、
    前記元ファイルを複数のレコードグループに分割し、
    前記複数のレコードグループのそれぞれについて、前記複数のカラムのうちの少なくとも一つによって設定されたソートキーに基づいて、該レコードグループをソートし、
    前記ソートされた複数のレコードグループのそれぞれについて、一つ前のレコードと同じ前記ソートキーを含むレコードに所定の印を設定し、
    前記ソートされた複数のレコードグループと、前記印とに基づいて、前記ソートキーに基づいてソートされた前記複数のレコードを含む結果ファイルを生成する、
    データ処理システム。
  2. 前記少なくとも一つのプロセッサが、前記印が設定されたレコードを前記一つ前のレコードと共に結果ファイルに書き出す、
    請求項1に記載のデータ処理システム。
  3. 前記少なくとも一つのプロセッサが、
    前記一つ前のレコードを対象レコードとして前記結果ファイルに書き出し、
    前記対象レコードに対応する前記レコードグループから、前記対象レコードの次のレコードを選択し、
    前記選択されたレコードに前記印が設定されている場合には、前記対象レコードに続けて、該選択されたレコードを前記結果ファイルに書き出す、
    請求項2に記載のデータ処理システム。
  4. 前記少なくとも一つのプロセッサが、
    前記ソートされた複数のレコードグループのそれぞれから、ソート順に基づいて1レコードを候補レコードとして選択し、
    前記ソートキーに基づいて、複数の前記候補レコードのうちの一つを前記対象レコードとして前記結果ファイルに書き出す、
    請求項3に記載のデータ処理システム。
  5. 前記少なくとも一つのプロセッサが、前記一つ前のレコードと同じ前記ソートキーを含む前記レコードに、所定のフラグ値を前記印として設定する、
    請求項1~4のいずれか一項に記載のデータ処理システム。
  6. 前記少なくとも一つのプロセッサが、前記印として、前記一つ前のレコードと同じ前記ソートキーを含む前記レコードから前記ソートキーを削除する、
    請求項1~4のいずれか一項に記載のデータ処理システム。
  7. 複数のカラムおよび複数のレコードを含む元ファイルを取得するステップと、
    前記元ファイルを複数のレコードグループに分割するステップと、
    前記複数のレコードグループのそれぞれについて、前記複数のカラムのうちの少なくとも一つによって設定されたソートキーに基づいて、該レコードグループをソートするステップと、
    前記ソートされた複数のレコードグループのそれぞれについて、一つ前のレコードと同じ前記ソートキーを含むレコードに所定の印を設定するステップと、
    前記ソートされた複数のレコードグループと、前記印とに基づいて、前記ソートキーに基づいてソートされた前記複数のレコードを含む結果ファイルを生成するステップと、
    をコンピュータに実行させるデータ処理プログラム。
  8. 少なくとも一つのプロセッサを備えるデータ処理システムによって実行されるデータ処理方法であって、
    複数のカラムおよび複数のレコードを含む元ファイルを取得するステップと、
    前記元ファイルを複数のレコードグループに分割するステップと、
    前記複数のレコードグループのそれぞれについて、前記複数のカラムのうちの少なくとも一つによって設定されたソートキーに基づいて、該レコードグループをソートするステップと、
    前記ソートされた複数のレコードグループのそれぞれについて、一つ前のレコードと同じ前記ソートキーを含むレコードに所定の印を設定するステップと、
    前記ソートされた複数のレコードグループと、前記印とに基づいて、前記ソートキーに基づいてソートされた前記複数のレコードを含む結果ファイルを生成するステップと、
    を含むデータ処理方法。
JP2022166085A 2022-10-17 2022-10-17 データ処理システム、データ処理プログラム、およびデータ処理方法 Pending JP2024058778A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2022166085A JP2024058778A (ja) 2022-10-17 2022-10-17 データ処理システム、データ処理プログラム、およびデータ処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022166085A JP2024058778A (ja) 2022-10-17 2022-10-17 データ処理システム、データ処理プログラム、およびデータ処理方法

Publications (1)

Publication Number Publication Date
JP2024058778A true JP2024058778A (ja) 2024-04-30

Family

ID=90826775

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022166085A Pending JP2024058778A (ja) 2022-10-17 2022-10-17 データ処理システム、データ処理プログラム、およびデータ処理方法

Country Status (1)

Country Link
JP (1) JP2024058778A (ja)

Similar Documents

Publication Publication Date Title
US8190613B2 (en) System, method and program for creating index for database
US20230006144A9 (en) Trie-Based Indices for Databases
US11080234B2 (en) Computer readable recording medium for index generation
CA2668136C (en) Managing storage of individually accessible data units
EP1566753B1 (en) Searchable archive
US5293616A (en) Method and apparatus for representing and interrogating an index in a digital memory
JP2009289196A (ja) 情報検索プログラム、情報管理プログラム、情報検索装置、情報管理装置、情報検索方法、および情報管理方法
JP5939123B2 (ja) 実行制御プログラム、実行制御方法および情報処理装置
JP4283440B2 (ja) ファイル・システムにおけるネーティブ・データ署名
EP3236367B1 (en) Encoding program, encoding method, encoding device, retrieval program, retrieval method, and retrieval device
JP2833580B2 (ja) 全文インデックス作成装置および全文データベース検索装置
US6601067B1 (en) Apparatus for sorting and merging data records
JPH09245043A (ja) 情報検索装置
US20200278980A1 (en) Database processing apparatus, group map file generating method, and recording medium
JP2024058778A (ja) データ処理システム、データ処理プログラム、およびデータ処理方法
KR20020035093A (ko) 데이타베이스 테이블 복구 시스템
US5873001A (en) Method for rapid expansion of multi-byte sorting weights table to include user supplied sorting weights
US10997139B2 (en) Search apparatus and search method
JPH0981582A (ja) 値を基本としたデータ管理装置及びデータ管理方法
WO2019163610A1 (ja) 情報処理システム及び情報処理方法
JP4181723B2 (ja) 索引作成装置、索引作成方法および記録媒体
JP5494860B2 (ja) 情報管理プログラム、情報管理装置および情報管理方法
JP2009093405A (ja) データ検索のためのシステム、方法及びコンピュータプログラム
JP7215722B2 (ja) 並び替えデータ生成装置、並び替えデータ生産方法、プログラム及び記録媒体
US20020169780A1 (en) Method and data processing system for providing disaster recovery file synchronization