JP6812826B2 - 格納方法、格納装置及び格納プログラム - Google Patents

格納方法、格納装置及び格納プログラム Download PDF

Info

Publication number
JP6812826B2
JP6812826B2 JP2017025401A JP2017025401A JP6812826B2 JP 6812826 B2 JP6812826 B2 JP 6812826B2 JP 2017025401 A JP2017025401 A JP 2017025401A JP 2017025401 A JP2017025401 A JP 2017025401A JP 6812826 B2 JP6812826 B2 JP 6812826B2
Authority
JP
Japan
Prior art keywords
data
stored
storage
types
input
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
JP2017025401A
Other languages
English (en)
Other versions
JP2018132900A (ja
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017025401A priority Critical patent/JP6812826B2/ja
Priority to US15/878,583 priority patent/US10365850B2/en
Publication of JP2018132900A publication Critical patent/JP2018132900A/ja
Application granted granted Critical
Publication of JP6812826B2 publication Critical patent/JP6812826B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices

Description

本発明は、データの格納技術に関する。
複数種類のデータを種類毎にソートして格納する場合、データ自体を格納する領域とは別に、ソートの実行中に参照される情報を格納した記憶領域(以下、管理領域と呼ぶ)を使用することがある。
しかし、特に大量のデータを対象として処理を実行する場合、データ自体を格納する領域だけでなく管理領域をも用意することでシステムの記憶領域が占有され、他の処理の実行に影響を与えることがある。また、使用できる物理リソースが限られたシステム(例えば組み込みシステム)の場合、記憶領域の不足により処理を実行できないことがある。
特開平11−167508号公報
Bing-Chao Huang、Michael A. Langston、"Fast Stable Merging and Sorting in Constant Extra Space"、The Computer Journal、Oxford University Press、平成4年12月1日、第35巻、第6号、pp.643−650
本発明の目的は、1つの側面では、複数種類のデータを種類に基づきソートした結果を格納する処理を、データ格納領域の使用量を抑えつつ実行する技術を提供することである。
一態様に係る格納方法は、複数種類のデータを含む対象データにおける、複数種類それぞれのデータの数と、複数種類の順序とに基づき、複数種類それぞれについて、格納位置の情報をデータ格納領域内の管理領域に格納し、対象データに含まれるデータの入力に応じ、入力データの格納位置を、入力データの種類に基づき管理領域から特定し、特定された格納位置に他のデータが格納されていない場合、特定された格納位置に入力データを格納し、特定された格納位置に他のデータが格納されている場合、他のデータの種類の順番と入力データの種類の順番との比較に基づき、入力データを、管理領域のうち入力データの種類に対応する格納位置の情報が格納された位置、または、特定された格納位置に格納する処理を含む。
1つの側面では、複数種類のデータを種類に基づきソートした結果を格納する処理を、データ格納領域の使用量を抑えつつ実行することができるようになる。
図1は、入力されるデータをキー毎にソートしてデータ格納領域に格納する処理を説明するための図である。 図2は、データ格納領域にポインタが格納される場合について説明するための図である。 図3は、データを種類毎にソートして格納する第1の方法を説明するための図である。 図4は、データを種類毎にソートして格納する第1の方法を説明するための図である。 図5は、データを種類毎にソートして格納する第1の方法を説明するための図である。 図6は、データを種類毎にソートして格納する第2の方法を説明するための図である。 図7は、データを種類毎にソートして格納する第2の方法を説明するための図である。 図8は、データを種類毎にソートして格納する第3の方法を説明するための図である。 図9は、データを種類毎にソートして格納する第3の方法を説明するための図である。 図10は、データを種類毎にソートして格納する第3の方法を説明するための図である。 図11は、データを種類毎にソートして格納する第3の方法を説明するための図である。 図12は、データを種類毎にソートして格納する第3の方法を説明するための図である。 図13は、情報処理装置の機能ブロック図である。 図14は、本実施の形態の概要を説明するための図である。 図15は、本実施の形態の概要を説明するための図である。 図16は、本実施の形態の概要を説明するための図である。 図17は、本実施の形態の概要を説明するための図である。 図18は、本実施の形態の概要を説明するための図である。 図19は、本実施の形態の概要を説明するための図である。 図20は、本実施の形態の概要を説明するための図である。 図21は、本実施の形態の概要を説明するための図である。 図22は、本実施の形態の概要を説明するための図である。 図23は、本実施の形態の概要を説明するための図である。 図24は、本実施の形態の概要を説明するための図である。 図25は、本実施の形態の概要を説明するための図である。 図26は、メインの処理フローを示す図である。 図27は、先頭特定処理の処理フローを示す図である。 図28は、データ格納領域に格納されるポインタを示す図である。 図29は、データ格納処理の処理フローを示す図である。 図30は、コンピュータの機能ブロック図である。
以下では、入力されるデータ値をキー毎にソートしてデータ格納領域に格納することを考える。例えば図1に示すように、キーが「a」であるデータ値をデータ格納領域のうち「a」用の領域に入力順で格納し、キーが「b」であるデータ値をデータ格納領域のうち「b」用の領域に入力順で格納し、キーが「c」であるデータ値をデータ格納領域のうち「c」用の領域に入力順で格納する。また、複数のキーには順序が予め定められており、キー「a」はキー「b」よりも順番が先である(言い換えると、図1においてキー「a」のデータ値はキー「b」のデータ値より左に格納される)。また、キー「b」はキー「c」よりも順番が先である(言い換えると、図1においてキー「b」のデータ値はキー「c」のデータ値より左に格納される)。本実施の形態において、データ値の「キー」はデータ値の「種類」と同義である。
このようにデータ値を格納しておけば、後の処理(例えば、データマイニングおよび検索など)を高速で実行することができるようになる。
但し、以下の条件が成立するとする。
(1)各キーについてデータ値の分布(データ値の数のこと。以下、knと表す)は予め判明している。
(2)データ値は1つずつ入力される。
(3)データ値はデータ格納領域にキー毎にソートされ格納される。
(4)各キーについて、データ値は入力順に格納される。
図1の例の場合、aの分布は「4」であり、bの分布は「4」であり、cの分布は「2」である。従って、10個のデータ値を格納可能なデータ格納領域を確保すれば、データ値を過不足なく格納することができる。
なお、データ格納領域にはデータ値を直接格納してもよいが、図2に示すように、データ値へのポインタを格納してもよい。すなわち、データ値そのものは別の格納領域に保存されており、データ格納領域に格納されたポインタに基づいてデータ値に対してアクセスしてもよい。以下では、説明を簡単にするため、特に断らない限りデータ値がデータ格納領域に格納されるものとして説明を行う。
図3乃至図5を用いて、図1を用いて説明した格納処理を実行するための第1の方法について説明する。
図3に示すように、第1の方法においては、各キーのデータ値が次に格納される位置を示すポインタを格納する管理領域が、データ格納領域とは別に設けられる。図3においては、キーが「a」であるデータ値が格納位置「1」(以下、X[1]というように表す)に格納され、キーが「b」であるデータ値がX[4]に格納され、キーが「c」であるデータ値がX[8]に格納される。管理領域に格納されるポインタの初期値は、各キーについての先頭位置を示す。管理領域に格納されるポインタの数は、キー数と同じである。
図4に示すように、データ値「a1」が入力された場合、管理領域に格納された、キー「a」についてのポインタが示すX[1]に、データ値「a1」が格納される。
そして、図5に示すように、管理領域に格納された、キー「a」についてのポインタは、X[2]を示すように更新される。
第1の方法によれば、入力されるデータ値をキー毎にソートして格納する処理を実現することができる。しかし、キーの数が増えるにしたがって管理領域のサイズが大きくなるので、データ値の種類数が多いケースには適していない。
図6及び図7を用いて、図1を用いて説明した格納処理を実行するための第2の方法について説明する。
図6に示すように、第2の方法においては、各キーのデータ値が次に格納される位置を示すポインタを格納する管理領域が、データ格納領域内に設けられる。図6においては、キーが「a」であるデータ値がX[1]に格納され、キーが「b」であるデータ値がX[4]に格納され、キーが「c」であるデータ値がX[8]に格納される。
第2の方法においては、後の処理で使用されるポインタが、入力されたデータ値で上書きされてしまうことがある。例えば、図7に示すように、初期状態においてデータ値「c1」が入力された場合、X[8]に格納されている、キー「b」についてのポインタが、データ値「c1」によって上書きされる。従って、キーが「b」であるデータ値を格納することができなくなる。
図8乃至図12を用いて、図1を用いて説明した格納処理を実行するための第3の方法について説明する。
図8に示すように、第3の方法においては、各キーのデータ値が次に格納される位置を示すポインタを格納する管理領域が、データ格納領域内に設けられる。第3の方法においては、各キーについて(kn−1)を求め、(kn−1)個のデータ値をソートして格納した場合の先頭位置を示すポインタを管理領域に格納する。図8においては、キーが「a」であるデータ値がX[1]に格納され、キーが「b」であるデータ値がX[3]に格納され、キーが「c」であるデータ値がX[6]に格納される。
格納処理は、基本的には第2の方法と同じように進行する。例えば図9に示した状態においてデータ値「a2」が入力された場合、管理領域に格納された、キー「a」についてのポインタが示すX[2]に、データ値「a2」が格納される。
そして、図10に示すように、管理領域に格納された、キー「a」についてのポインタは、X[3]を示すように更新される。
さらに、図11に示すように、データ値「a3」が入力された場合、管理領域に格納された、キー「a」についてのポインタが示すX[3]に、データ値「a3」が格納される。
しかし、第3の方法によっては、各キーの最後のデータ値又は最初のデータ値は上書きされ、全データ値を格納することができない。
以上のように、第1乃至3の方法によっては、データ値を適切に格納することができない。そこで本実施の形態においては、以下で説明するような方法によってデータ値を格納する。
図13に、本実施の形態の情報処理装置1の機能ブロック図を示す。情報処理装置1は、先頭特定部101と、格納処理部103と、並び替え部105と、入力データ格納部111と、データ格納部113と、出力データ格納部115とを含む。先頭特定部101、格納処理部103及び並び替え部105は、図30に示したメモリ2501にロードされたプログラムが図30に示したCPU(Central Processing Unit)2503によって実行されることで実現される。データ格納部113は、メモリ2501に設けられる。入力データ格納部111及び出力データ格納部115は、メモリ2501又は図30に示したHDD(Hard Disk Drive)2505に設けられる。
先頭特定部101は、入力データ格納部111に格納されたデータに基づき、各キーについて先頭位置を特定する処理を実行する。格納処理部103は、入力データ格納部111に格納された入力データを、先頭特定部101による処理の結果に基づきデータ格納部113に格納する。データ格納部113には、管理領域を含むデータ格納領域が含まれる。並び替え部105は、データ格納部113に格納されているデータに基づき処理を実行し、処理結果を出力データ格納部115に格納する。
次に、図14乃至図25を用いて、本実施の形態の概要を説明する。ここでは、最終的に図14(a)に示すようにデータ値をデータ格納領域に格納する。すなわち、X[1]にデータ値「a1」を格納し、X[2]にデータ値「a2」を格納し、X[3]にデータ値「a3」を格納し、X[4]にデータ値「b1」を格納し、X[5]にデータ値「b2」を格納し、X[6]にデータ値「b3」を格納し、X[7]にデータ値「b4」を格納し、X[8]にデータ値「c1」を格納し、X[9]にデータ値「c2」を格納する。キーが「a」であるデータ値の数は3であり、キーが「b」であるデータ値の数は「4」であり、キーが「c」であるデータ値の数は2である。
但し、本実施の形態においては、第3の方法と同様に、各キーについて(kn−1)を求め、(kn−1)個のデータ値をソートして格納した場合の先頭位置を示すポインタを管理領域に格納する。ここで、X[3]及びX[6]に着目する。第3の方法を実行する場合には、図14(b)に示すように、X[3]にはデータ値「a3」及びデータ値「b1」のいずれかが格納され、X[6]にはデータ値「b4」及びデータ値「c1」のいずれかが格納される。
従って、ポインタが示す格納位置X[i](1≦i≦9)に既にデータ値が格納されている場合、入力されたデータ値とX[i]に格納されているデータ値とのいずれかは、対応するキー(キー「k」とする)の最後のデータ値であり、且つ、もう一方のデータ値は、キー「k」の次の順番のキーの最初のデータ値である。この性質を性質(1)とする。
また、或るキーの最後のデータ値が格納された場合、管理領域のうちそのキーについてのポインタを格納する領域は、その後の処理において参照されない。この性質を性質(2)とする。
これらの性質(1)及び性質(2)を踏まえ、本実施の形態においては、ポインタが示す格納位置X[i]に既にデータ値が格納されている場合、そのデータ値と入力されるデータ値とのうち最後のデータ値を特定する。そして、特定したデータ値を、管理領域のうちそのデータ値のキーについてのポインタを格納する領域(すなわち、その後の処理において参照されない領域)に格納する。
これにより、データ格納領域以外の追加領域を用いることなく且つデータ値を上書することなく、データ値をキー毎にソートして格納することが可能になる。
図15乃至図25を用いて、本実施の形態の処理をより具体的に説明する。まず、図15に示すように、データ格納領域内の管理領域に、各キーについてのポインタが格納される。具体的には、各キーの(kn−1)に基づき、キー「a」についてはX[1]を示すポインタが格納され、キー「b」についてはX[3]を示すポインタが格納され、キー「c」についてはX[6]を示すポインタが格納される。
図16に示すように、入力されたデータ値が「b1」である場合、キー「b」についてのポインタが示すX[3]に、データ値「b1」が格納される。そして、図17に示すように、キー「b」についてのポインタが、X[4]を示すように更新される。
図18に示すように、データ値「b2」、データ値「a1」、データ値「b3」、データ値「b4」及びデータ値「a2」が順に入力されたとする。この場合、それぞれのデータ値を格納することで、キー「a」についてのポインタはX[3]を示すように更新され、キー「b」についてのポインタはX[7]を示すように更新される。キー「c」についてのポインタはX[6]のままである。
図19に示すように、次に入力されたデータ値が「a3」である場合、キー「a」についてのポインタが示すX[3]には既にデータ値「b1」が格納されている。この場合、図20に示すように、キー「a」の最後のデータ値である「a3」が、管理領域のうちキー「a」についてのポインタを格納する領域に格納される。
図21に示すように、次に入力されたデータ値が「c1」である場合、キー「c」についてのポインタが示すX[6]には既にデータ値「b4」が格納されている。この場合、図22に示すように、キー「b」の最後のデータ値である「b4」が、管理領域のうちキー「b」についてのポインタを格納する領域に移動される。そして、データ値「c1」は、キー「c」についてのポインタが示すX[6]に格納され、キー「c」についてのポインタが、X[7]を示すように更新される。
図23に示すように、最後に入力されたデータ値が「c2」である場合、キー「c」についてのポインタが示すX[7]には既にデータ値「a3」が格納されている。ここで、「7」は(kn−1)の総和である6より大きいので、図24に示すように、データ値「c2」は管理領域のうちキー「c」についてのポインタを格納する領域に格納される。
ここまでの処理により、図25(a)に示すようにデータ値が格納されるが、データ値を並べ替えることで、図25(b)に示すようにデータ値を格納することができる。並び替えは、例えば、非特許文献1に開示された「安定マージ」に従って行えばよい。「安定マージ」により、データ格納領域のうち管理領域以外の領域に格納されたデータ値と、管理領域に格納されたデータ値とを、記憶領域の使用量を抑制しつつ並び替えることができる。なお、安定マージとは、配列Y1が配列Y2よりも左側にあり、且つ、同一キーのデータ値である「a1」及び「a2」がY1及びY2それぞれに含まれる場合、「a1」は「a2」よりも左側に保存されることが保証されることである。
以下では、情報処理装置1が実行する処理をより詳細に説明する。前提として、入力データ格納部111には、各キーについての分布(以下、C[k](k=1,2,...,σ)とする。σはキーの数であって2以上の自然数)の情報が格納されているとする。また、以下では、データ格納領域のX[i]にデータ値へのポインタが格納されるとする。
まず、先頭特定部101は、先頭特定処理を実行する(図26:ステップS1)。先頭特定処理については、図27及び図28を用いて説明する。
先頭特定部101は、先頭を表す変数hに1を設定する(図27:ステップS11)。
先頭特定部101は、キーの識別番号であるkを1に設定する(ステップS13)。上で述べたように、本実施の形態においては複数のキーの順序が予め定められており、例えばキー「a」の順番がキー「b」の順番より先である場合、キー「a」の識別番号はキー「b」の識別番号より小さい。
先頭特定部101は、分布を表す変数numにC[k]の値を設定する(ステップS15)。
先頭特定部101は、C[k]にhの値を設定する(ステップS17)。この処理により、C[k]は識別番号が「k」であるキーについての先頭位置を表すポインタになるので、先頭特定部101は、C[k]を管理領域に格納する。
先頭特定部101は、hに(h+num−1)を設定する(ステップS19)。この処理により、hは次のキーについての先頭位置を表すポインタになる。
先頭特定部101は、kを1インクリメントする(ステップS21)。
先頭特定部101は、k>σが成立するか判定する(ステップS23)。
k>σが成立しない場合(ステップS23:Noルート)、先頭特定部101が次のkについて処理するため、処理はステップS15に戻る。一方、k>σが成立する場合(ステップS23:Yesルート)、処理は呼び出し元に戻る。
以上のような処理を実行すれば、データ格納領域のうち管理領域には、図28(a)に示すようにポインタが設定される。すなわち、識別番号が「1」であるキーから識別番号が「σ」であるキーまでについて、先頭位置を表すポインタが格納される。
図26の説明に戻り、格納処理部103は、データ格納処理を実行する(ステップS3)。データ格納処理については、図29を用いて説明する。ここでは、各データ値へのポインタが入力データ格納部111に格納されているとする。なお、本ステップは各ポインタについて実行されるが、説明を簡単にするため、1つのポインタpについての処理を説明する。
格納処理部103は、データ値へのポインタpを入力データ格納部111から1つ読み出す。そして、格納処理部103は、格納位置を表す識別番号である変数iにC[key(p)]を設定する(ステップS33)。key(p)は、ポインタpが示すデータ値のキーの識別番号である。
格納処理部103は、X[i]が空である(すなわち、X[i]に値が設定されていない)か判定する(ステップS35)。
X[i]が空である場合(ステップS35:Yesルート)、別のデータ値へのポインタがX[i]の領域に格納されていない。従って、格納処理部103は、X[i]にpを設定する(ステップS37)。
格納処理部103は、C[key(p)]に、C[key(p)]+1を設定する(ステップS39)。すなわち、格納処理部103は、key(p)についてのポインタを、隣接する領域を示すように更新する。
一方、X[i]が空ではない場合(ステップS35:Yesルート)、別のデータ値へのポインタがX[i]の領域に格納されている。従って、格納処理部103は、別のデータ値へのポインタを表す変数sにX[i]を設定する(ステップS41)。
格納処理部103は、i>Mが成立するか判定する(ステップS43)。Mは、(kn−1)の総和(例えば図15乃至図25の例であれば6)である。
i>Mが成立する場合(ステップS43:Yesルート)、ポインタpは最後に読み出されたポインタである。従って、格納処理部103は、C[key(p)]にポインタpを設定する(ステップS45)。
一方、i>Mが成立しない場合(ステップS43:Noルート)、ポインタpは最後に読み出されたポインタではない。従って、格納処理部103は、key(s)>key(p)が成立するか判定する(ステップS47)。すなわち、格納処理部103は、key(s)の順番がkey(p)の順番より後であるか判定する。
key(s)>key(p)が成立する場合(ステップS47:Yesルート)、key(s)の順番がkey(p)の順番より後である。従って、処理はステップS45に移行する。
key(s)>key(p)が成立しない場合(ステップS47:Noルート)、key(s)の順番がkey(p)の順番より前である。従って、格納処理部103は、X[i]にpを設定する(ステップS49)。
格納処理部103は、C[key(s)]にポインタsを設定する(ステップS51)。
格納処理部103は、C[key(p)]に、C[key(p)]+1を設定する(ステップS53)。すなわち、格納処理部103は、key(p)についてのポインタを、隣接する領域を示すように更新する。そして処理は呼び出し元に戻る。
以上のような処理を実行すれば、データ格納領域には、図28(b)に示すようにポインタが設定される。すなわち、データ格納領域にはn個のポインタが格納される。nはデータ値の総数である。
図26の説明に戻り、並び替え部105は、データ格納領域に格納されたポインタを並び替えることで出力データを生成し(ステップS5)、出力データを出力データ格納部115に格納する。上で述べたように、ステップS5においては、例えば「安定マージ」によって並び替えが行われる。そして処理は終了する。
以上のような処理を実行すれば、複数種類のデータを種類に基づきソートした結果を格納する処理を、データ格納領域の使用量を抑えつつ実行することができるようになる。これにより、ソート処理等の実行が原因で他の処理の性能が劣化することを抑制できるようになる。
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した情報処理装置1の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
また、上で説明したデータ構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
なお、上で述べた例では各データ値へのポインタpが入力データから読み出されているが、格納処理部103がポインタpの入力をユーザ等から順次受け付けてもよいし、情報処理装置1がポインタpを他の装置から順次受信するようにしてもよい。
なお、上で述べた情報処理装置1は、コンピュータ装置であって、図30に示すように、メモリ2501とCPU2503とHDD2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本発明の実施の形態をまとめると、以下のようになる。
本実施の形態の第1の態様に係る格納方法は、(A)複数種類のデータを含む対象データにおける、複数種類それぞれのデータの数と、複数種類の順序とに基づき、複数種類それぞれについて、格納位置の情報をデータ格納領域内の管理領域に格納し、(B)対象データに含まれるデータの入力に応じ、入力データの格納位置を、入力データの種類に基づき管理領域から特定し、(C)特定された格納位置に他のデータが格納されていない場合、特定された格納位置に入力データを格納し、(D)特定された格納位置に他のデータが格納されている場合、他のデータの種類の順番と入力データの種類の順番との比較に基づき、入力データを、管理領域のうち入力データの種類に対応する格納位置の情報が格納された位置、または、特定された格納位置に格納する処理を含む。
順次入力される複数種類のデータを種類に基づきソートして格納する処理を、データ格納領域の使用量を抑えつつ実行することができるようになる。
また、特定された格納位置に他のデータが格納されている場合に入力データを格納する処理において、(d1)特定された格納位置に他のデータが格納されており、且つ、他のデータの種類の順番が入力データの種類の順番より前である場合、特定された格納位置に入力データを格納し、(d2)特定された格納位置に他のデータが格納されており、且つ、他のデータの種類の順番が入力データの種類の順番より後である場合、管理領域のうち入力データの種類に対応する格納位置の情報が格納された位置に、入力データを格納してもよい。
また、本格納方法は、(E)管理領域に格納された、入力データの種類に対応する格納位置の情報を更新する処理をさらに含んでもよい。
このようにすれば、次に入力されるデータを適切な位置に格納することができるようになる。
また、本格納方法は、(F)特定された格納位置に他のデータが格納されており、且つ、他のデータの種類の順番が入力データの種類の順番より前である場合、管理領域のうち、他のデータの種類に対応する格納位置の情報が格納された位置に、他のデータを格納する処理をさらに含んでもよい。
このようにすれば、特定された格納位置に元々格納されていた他のデータが書き換えにより消去されてしまうことがなくなる。
また、本格納方法は、(G)対象データに含まれるデータの入力が完了した場合、管理領域に格納されたデータと、データ格納領域のうち管理領域以外の領域に格納されたデータとを、種類毎に入力順に並ぶように並べ替える処理をさらに含んでもよい。
格納後の状態が適切な状態ではない場合においても、適切な状態に是正することができるようになる。
また、データ格納領域に含まれる格納位置の数は、複数種類それぞれのデータの数の総和に等しくてもよい。
このようにすれば、使用する領域を最小限にすることができるようになる。
本実施の形態の第2の態様に係る格納装置は、(H)複数種類のデータを含む対象データにおける、複数種類それぞれのデータの数と、複数種類の順序とに基づき、複数種類それぞれについて、格納位置の情報をデータ格納領域内の管理領域に格納する第1処理部(例えば、先頭特定部101)と、(I)対象データに含まれるデータの入力に応じ、入力データの格納位置を、入力データの種類に基づき管理領域から特定し、特定された格納位置に他のデータが格納されていない場合、特定された格納位置に入力データを格納し、特定された格納位置に他のデータが格納されている場合、他のデータの種類の順番と入力データの種類の順番との比較に基づき、入力データを、管理領域のうち入力データの種類に対応する格納位置の情報が格納された位置、または、特定された格納位置に格納する第2処理部(例えば、格納処理部103)とを有する。
なお、上記方法による処理をプロセッサに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
コンピュータに、
複数種類のデータを含む対象データにおける、前記複数種類それぞれのデータの数と、前記複数種類の順序とに基づき、前記複数種類それぞれについて、格納位置の情報をデータ格納領域内の管理領域に格納し、
前記対象データに含まれるデータの入力に応じ、入力データの格納位置を、前記入力データの種類に基づき前記管理領域から特定し、
特定された前記格納位置に他のデータが格納されていない場合、特定された前記格納位置に前記入力データを格納し、
特定された前記格納位置に他のデータが格納されている場合、前記他のデータの種類の順番と前記入力データの種類の順番との比較に基づき、前記入力データを、前記管理領域のうち前記入力データの種類に対応する格納位置の情報が格納された位置、または、特定された前記格納位置に格納する、
処理を実行させる格納プログラム。
(付記2)
特定された前記格納位置に前記他のデータが格納されている場合に前記入力データを格納する処理において、
特定された前記格納位置に前記他のデータが格納されており、且つ、前記他のデータの種類の順番が前記入力データの種類の順番より前である場合、特定された前記格納位置に前記入力データを格納し、
特定された前記格納位置に前記他のデータが格納されており、且つ、前記他のデータの種類の順番が前記入力データの種類の順番より後である場合、前記管理領域のうち前記入力データの種類に対応する格納位置の情報が格納された位置に、前記入力データを格納する、
付記1記載の格納プログラム。
(付記3)
前記コンピュータに、
前記管理領域に格納された、前記入力データの種類に対応する格納位置の情報を更新する、
処理をさらに実行させる付記1又は2記載の格納プログラム。
(付記4)
前記コンピュータに、
特定された前記格納位置に前記他のデータが格納されており、且つ、前記他のデータの種類の順番が前記入力データの種類の順番より前である場合、前記管理領域のうち、前記他のデータの種類に対応する格納位置の情報が格納された位置に、前記他のデータを格納する、
処理をさらに実行させる付記2記載の格納プログラム。
(付記5)
前記コンピュータに、
前記対象データに含まれるデータの入力が完了した場合、前記管理領域に格納されたデータと、前記データ格納領域のうち前記管理領域以外の領域に格納されたデータとを、種類毎に入力順に並ぶように並べ替える、
処理をさらに実行させる付記1乃至4のいずれか1つ記載の格納プログラム。
(付記6)
前記データ格納領域に含まれる格納位置の数は、前記複数種類それぞれのデータの数の総和に等しい、
付記1乃至5のいずれか1つ記載の格納プログラム。
(付記7)
コンピュータが、
複数種類のデータを含む対象データにおける、前記複数種類それぞれのデータの数と、前記複数種類の順序とに基づき、前記複数種類それぞれについて、格納位置の情報をデータ格納領域内の管理領域に格納し、
前記対象データに含まれるデータの入力に応じ、入力データの格納位置を、前記入力データの種類に基づき前記管理領域から特定し、
特定された前記格納位置に他のデータが格納されていない場合、特定された前記格納位置に前記入力データを格納し、
特定された前記格納位置に他のデータが格納されている場合、前記他のデータの種類の順番と前記入力データの種類の順番との比較の結果に基づき、前記入力データを、前記管理領域のうち前記入力データの種類に対応する格納位置の情報が格納された位置、または、特定された前記格納位置に格納する、
処理を実行する格納方法。
(付記8)
複数種類のデータを含む対象データにおける、前記複数種類それぞれのデータの数と、前記複数種類の順序とに基づき、前記複数種類それぞれについて、格納位置の情報をデータ格納領域内の管理領域に格納する第1処理部と、
前記対象データに含まれるデータの入力に応じ、入力データの格納位置を、前記入力データの種類に基づき前記管理領域から特定し、特定された前記格納位置に他のデータが格納されていない場合、特定された前記格納位置に前記入力データを格納し、特定された前記格納位置に他のデータが格納されている場合、前記他のデータの種類の順番と前記入力データの種類の順番との比較に基づき、前記入力データを、前記管理領域のうち前記入力データの種類に対応する格納位置の情報が格納された位置、または、特定された前記格納位置に格納する第2処理部と、
を有する格納装置。
1 情報処理装置 101 先頭特定部
103 格納処理部 105 並び替え部
111 入力データ格納部 113 データ格納部
115 出力データ格納部

Claims (8)

  1. コンピュータに、
    複数種類のデータを含む対象データにおける、前記複数種類それぞれのデータの数と、前記複数種類の順序とに基づき、前記複数種類それぞれについて、格納位置の情報をデータ格納領域内の管理領域に格納し、
    前記対象データに含まれるデータの入力に応じ、前記データ格納領域内における入力データの格納位置を、前記入力データの種類と前記管理領域に格納された情報とに基づき特定し、
    特定された前記格納位置に他のデータが格納されていない場合、特定された前記格納位置に前記入力データを格納し、
    特定された前記格納位置に他のデータが格納されている場合、前記他のデータの種類の順番と前記入力データの種類の順番との比較に基づき、前記入力データを、前記管理領域のうち前記入力データの種類に対応する格納位置の情報が格納された位置、または、特定された前記格納位置に格納する、
    処理を実行させる格納プログラム。
  2. 特定された前記格納位置に前記他のデータが格納されている場合に前記入力データを格納する処理において、
    特定された前記格納位置に前記他のデータが格納されており、且つ、前記他のデータの種類の順番が前記入力データの種類の順番より前である場合、特定された前記格納位置に前記入力データを格納し、
    特定された前記格納位置に前記他のデータが格納されており、且つ、前記他のデータの種類の順番が前記入力データの種類の順番より後である場合、前記管理領域のうち前記入力データの種類に対応する格納位置の情報が格納された位置に、前記入力データを格納する、
    請求項1記載の格納プログラム。
  3. 前記コンピュータに、
    前記管理領域に格納された、前記入力データの種類に対応する格納位置の情報を更新する、
    処理をさらに実行させる請求項1又は2記載の格納プログラム。
  4. 前記コンピュータに、
    特定された前記格納位置に前記他のデータが格納されており、且つ、前記他のデータの種類の順番が前記入力データの種類の順番より前である場合、前記管理領域のうち、前記他のデータの種類に対応する格納位置の情報が格納された位置に、前記他のデータを格納する、
    処理をさらに実行させる請求項2記載の格納プログラム。
  5. 前記コンピュータに、
    前記対象データに含まれるデータの入力が完了した場合、前記管理領域に格納されたデータと、前記データ格納領域のうち前記管理領域以外の領域に格納されたデータとを、種類毎に入力順に並ぶように並べ替える、
    処理をさらに実行させる請求項1乃至4のいずれか1つ記載の格納プログラム。
  6. 前記データ格納領域に含まれる格納位置の数は、前記複数種類それぞれのデータの数の総和に等しい、
    請求項1乃至5のいずれか1つ記載の格納プログラム。
  7. コンピュータが、
    複数種類のデータを含む対象データにおける、前記複数種類それぞれのデータの数と、前記複数種類の順序とに基づき、前記複数種類それぞれについて、格納位置の情報をデータ格納領域内の管理領域に格納し、
    前記対象データに含まれるデータの入力に応じ、前記データ格納領域内における入力データの格納位置を、前記入力データの種類と前記管理領域に格納された情報とに基づき特定し、
    特定された前記格納位置に他のデータが格納されていない場合、特定された前記格納位置に前記入力データを格納し、
    特定された前記格納位置に他のデータが格納されている場合、前記他のデータの種類の順番と前記入力データの種類の順番との比較の結果に基づき、前記入力データを、前記管理領域のうち前記入力データの種類に対応する格納位置の情報が格納された位置、または、特定された前記格納位置に格納する、
    処理を実行する格納方法。
  8. 複数種類のデータを含む対象データにおける、前記複数種類それぞれのデータの数と、前記複数種類の順序とに基づき、前記複数種類それぞれについて、格納位置の情報をデータ格納領域内の管理領域に格納する第1処理部と、
    前記対象データに含まれるデータの入力に応じ、前記データ格納領域内における入力データの格納位置を、前記入力データの種類と前記管理領域に格納された情報とに基づき特定し、特定された前記格納位置に他のデータが格納されていない場合、特定された前記格納位置に前記入力データを格納し、特定された前記格納位置に他のデータが格納されている場合、前記他のデータの種類の順番と前記入力データの種類の順番との比較に基づき、前記入力データを、前記管理領域のうち前記入力データの種類に対応する格納位置の情報が格納された位置、または、特定された前記格納位置に格納する第2処理部と、
    を有する格納装置。
JP2017025401A 2017-02-14 2017-02-14 格納方法、格納装置及び格納プログラム Active JP6812826B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017025401A JP6812826B2 (ja) 2017-02-14 2017-02-14 格納方法、格納装置及び格納プログラム
US15/878,583 US10365850B2 (en) 2017-02-14 2018-01-24 Method of storing data, information processing apparatus and non-transitory computer-readable storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017025401A JP6812826B2 (ja) 2017-02-14 2017-02-14 格納方法、格納装置及び格納プログラム

Publications (2)

Publication Number Publication Date
JP2018132900A JP2018132900A (ja) 2018-08-23
JP6812826B2 true JP6812826B2 (ja) 2021-01-13

Family

ID=63104575

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017025401A Active JP6812826B2 (ja) 2017-02-14 2017-02-14 格納方法、格納装置及び格納プログラム

Country Status (2)

Country Link
US (1) US10365850B2 (ja)
JP (1) JP6812826B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7053392B2 (ja) 2018-07-13 2022-04-12 オークマ株式会社 同期電動機の回転子
JP7447495B2 (ja) * 2020-01-08 2024-03-12 富士フイルムビジネスイノベーション株式会社 情報処理装置及びプログラム
CN111460050A (zh) * 2020-04-01 2020-07-28 北京汽车集团有限公司 车辆信息处理方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11167508A (ja) 1997-12-02 1999-06-22 Canon Inc 情報記録方法
US8862847B2 (en) * 2013-02-08 2014-10-14 Huawei Technologies Co., Ltd. Distributed storage method, apparatus, and system for reducing a data loss that may result from a single-point failure
US9606729B2 (en) * 2013-03-15 2017-03-28 Skyera, Llc Apparatus and method for insertion and deletion in multi-dimensional to linear address space translation
US10235079B2 (en) * 2016-02-03 2019-03-19 Toshiba Memory Corporation Cooperative physical defragmentation by a file system and a storage device

Also Published As

Publication number Publication date
US20180232145A1 (en) 2018-08-16
JP2018132900A (ja) 2018-08-23
US10365850B2 (en) 2019-07-30

Similar Documents

Publication Publication Date Title
US10055216B2 (en) Minimizing image copying during partition updates
US10255287B2 (en) Method and apparatus for on-disk deduplication metadata for a deduplication file system
US20160188227A1 (en) Method and apparatus for writing data into solid state disk
US8782635B2 (en) Reconfiguration of computer system to allow application installation
US20120330979A1 (en) Sorting a dataset of incrementally received data
JP2005182784A (ja) インストールするのに有効な依存ソフトウェア更新の最大の群の判定
US20120173778A1 (en) Dynamic compression of an i/o data block
JP6812826B2 (ja) 格納方法、格納装置及び格納プログラム
CN104834630A (zh) 运算控制装置、运算控制方法、存储有程序的非瞬时计算机可读介质以及OpenCL设备
CN110399333A (zh) 删除快照的方法、设备和计算机程序产品
US10855818B2 (en) Apparatus and methods for optimizing dirty memory pages in embedded devices
JP4769687B2 (ja) タイミング検証方法、タイミング検証装置及びタイミング検証プログラム
CN110832473B (zh) 日志结构管理系统及方法
CN104951244A (zh) 用于存取数据的方法和设备
CN115202589B (zh) 放置组成员选择方法、装置、设备及可读存储介质
US9507794B2 (en) Method and apparatus for distributed processing of file
JP2008225686A (ja) 分散型データ処理プラットフォームにおけるデータ配置管理装置と方法、システム及びプログラム
JP6961950B2 (ja) 格納方法、格納装置および格納プログラム
US8977814B1 (en) Information lifecycle management for binding content
JP2009157441A (ja) 情報処理装置、ファイル再配置方法およびプログラム
CN111291126B (zh) 数据回收方法、装置、设备及存储介质
CN116579585B (zh) 资源分配方法、装置、计算机设备和存储介质
JP2013109404A (ja) 情報処理装置
US20230297486A1 (en) Arrangement plan search device, computer system, and arrangement plan search method
CN115827204A (zh) 事务调度方法、事务执行方法、装置和计算机设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191112

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200828

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200901

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201030

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: 20201117

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201130

R150 Certificate of patent or registration of utility model

Ref document number: 6812826

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150