JPH0362137A - 可変長ブロック群による長大データの格納方法 - Google Patents
可変長ブロック群による長大データの格納方法Info
- Publication number
- JPH0362137A JPH0362137A JP1197531A JP19753189A JPH0362137A JP H0362137 A JPH0362137 A JP H0362137A JP 1197531 A JP1197531 A JP 1197531A JP 19753189 A JP19753189 A JP 19753189A JP H0362137 A JPH0362137 A JP H0362137A
- Authority
- JP
- Japan
- Prior art keywords
- data
- block
- header
- entry
- file
- 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
Links
- 238000000034 method Methods 0.000 title claims description 48
- 238000012217 deletion Methods 0.000 claims abstract description 22
- 230000037430 deletion Effects 0.000 claims abstract description 22
- 238000012546 transfer Methods 0.000 claims description 11
- 238000012545 processing Methods 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 9
- 238000013500 data storage Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 101000701286 Pseudomonas aeruginosa (strain ATCC 15692 / DSM 22644 / CIP 104116 / JCM 14847 / LMG 12228 / 1C / PRS 101 / PAO1) Alkanesulfonate monooxygenase Proteins 0.000 description 1
- 101000983349 Solanum commersonii Osmotin-like protein OSML13 Proteins 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明は可変長ブロック群による長大データの格納方法
に関し、特に電子計算機の処理装置と記憶装置とにより
、データベースの格納手段等に用いられる二次記憶装置
上に長大データを格納する可変長ブロック群による長大
データの格納方法に関する。
に関し、特に電子計算機の処理装置と記憶装置とにより
、データベースの格納手段等に用いられる二次記憶装置
上に長大データを格納する可変長ブロック群による長大
データの格納方法に関する。
二次記憶装置上のファイルにイメージやテキスト等の長
大データを格納する方法に関しては、従来、1つのイメ
ージデータ等を1つのファイルに格納する方法が知られ
ている。また、これを改良したものとして、いわゆる「
B成木」を用いて長大データを管理する方法を、キャレ
イ(Michael J、 Carey)らが大規
模データベース国際会議報告(Proceedings
。
大データを格納する方法に関しては、従来、1つのイメ
ージデータ等を1つのファイルに格納する方法が知られ
ている。また、これを改良したものとして、いわゆる「
B成木」を用いて長大データを管理する方法を、キャレ
イ(Michael J、 Carey)らが大規
模データベース国際会議報告(Proceedings
。
f Very Large Data Ba5
es、VLDB Endowment、1986年、
91−100ページ〉で記述している。
es、VLDB Endowment、1986年、
91−100ページ〉で記述している。
最近研究が活発化しているマルチメディアデータベース
においては、イメージやテキスト等の長大データを大量
に二次記憶中に保管し、高速に格納及び検索する必要が
ある。特にイメージやテキストを編集する応用プログラ
ムの場合には、長大データを高速に更新することも必要
となる。
においては、イメージやテキスト等の長大データを大量
に二次記憶中に保管し、高速に格納及び検索する必要が
ある。特にイメージやテキストを編集する応用プログラ
ムの場合には、長大データを高速に更新することも必要
となる。
ところが、従来の1データを1フアイルに格納する方法
では、内容の変更に際してファイル全体をコピーする処
理を行なうため、長大データの場合には、更新処理に相
当の時間がかかり、またデータ件数が多いとファイルの
個数が増え過ぎるという問題点があった。
では、内容の変更に際してファイル全体をコピーする処
理を行なうため、長大データの場合には、更新処理に相
当の時間がかかり、またデータ件数が多いとファイルの
個数が増え過ぎるという問題点があった。
キャレイらはこの問題を解決するために、長大データを
複数のブロックに分割し、ブロック群全体をB成木を用
いて管理する方法を提案している。
複数のブロックに分割し、ブロック群全体をB成木を用
いて管理する方法を提案している。
しかし、キャレイらの方法では、各ブロックが固定長で
あり、また多段の木を用いるため、長大データを格納す
ると一般にブロック数が多くなりすぎて読み出し時間が
長くなり、特に更新の少ないデータでは、全体としての
性能が悪化するという欠点があった。
あり、また多段の木を用いるため、長大データを格納す
ると一般にブロック数が多くなりすぎて読み出し時間が
長くなり、特に更新の少ないデータでは、全体としての
性能が悪化するという欠点があった。
本発明の目的は、可変長ブロック群を用いて二次記憶中
の長大データを管理する方法を提案することにより、二
次記憶中のデータの格納、読み出し、上書き、追加、削
除の各処理を高速かつ効率的に実行する手段を提供する
ことにある。
の長大データを管理する方法を提案することにより、二
次記憶中のデータの格納、読み出し、上書き、追加、削
除の各処理を高速かつ効率的に実行する手段を提供する
ことにある。
第1の発明の可変長ブロック群による長大データの格納
方法は、二次記憶中の長大データを各々が複数のページ
から成る可変長ブロック集合に分割して格納したデータ
ファイルと、長大データの各ブロックの先頭のページ番
号およびそのブロック中のデータの有効サイズをエント
リとして記録したヘッダレコード群を格納したヘッダフ
ァイルとを用意し、データの新規格納の場合に、必要な
個数の連続したページをブロックとしてデータファイル
中に確保し、主記憶からデータを当該ページ群に転送し
、ヘッダレコードの領域をヘッダファイル中に確保し、
ヘッダにデータのサイズとブロックの先頭ページの番号
とを記録し、結果として二次記憶中の長大データの格納
を高速化することにより構成されている。
方法は、二次記憶中の長大データを各々が複数のページ
から成る可変長ブロック集合に分割して格納したデータ
ファイルと、長大データの各ブロックの先頭のページ番
号およびそのブロック中のデータの有効サイズをエント
リとして記録したヘッダレコード群を格納したヘッダフ
ァイルとを用意し、データの新規格納の場合に、必要な
個数の連続したページをブロックとしてデータファイル
中に確保し、主記憶からデータを当該ページ群に転送し
、ヘッダレコードの領域をヘッダファイル中に確保し、
ヘッダにデータのサイズとブロックの先頭ページの番号
とを記録し、結果として二次記憶中の長大データの格納
を高速化することにより構成されている。
また、第2の発明の可変長ブロック群による長大データ
の格納方法は、二次記憶中の長大データを各々が複数の
ページから成る可変長のブロック集合に分割して格納し
たデータファイルと、長大データの各ブロックの先頭の
ページ番号およびそのブロック中のデータの有効サイズ
をエントリとして記録したヘッダレコード群を格納した
ヘッダファイルとを用意し、データの読み出しと上書き
との場合に、ヘッダレコードを主記憶に読み込んで与え
られた開始位置を持つエントリを見つけ、当該エントリ
がポイントするデータブロックを主記憶中に読み込み、
データの読み出し操作の場合には当該ブロックを応用プ
ログラム領域に転送し、データの上書き操作の場合には
応用プログラム領域からデータを転送して当該ブロック
に書き込んでから二次記憶に書き戻し、再び次のエント
リに進んで、以上の操作を与えられたデータサイズに達
するまで繰り返し、結果として二次記憶中の長大データ
の読み出しと上書きとを高速化することにより構成され
ている。
の格納方法は、二次記憶中の長大データを各々が複数の
ページから成る可変長のブロック集合に分割して格納し
たデータファイルと、長大データの各ブロックの先頭の
ページ番号およびそのブロック中のデータの有効サイズ
をエントリとして記録したヘッダレコード群を格納した
ヘッダファイルとを用意し、データの読み出しと上書き
との場合に、ヘッダレコードを主記憶に読み込んで与え
られた開始位置を持つエントリを見つけ、当該エントリ
がポイントするデータブロックを主記憶中に読み込み、
データの読み出し操作の場合には当該ブロックを応用プ
ログラム領域に転送し、データの上書き操作の場合には
応用プログラム領域からデータを転送して当該ブロック
に書き込んでから二次記憶に書き戻し、再び次のエント
リに進んで、以上の操作を与えられたデータサイズに達
するまで繰り返し、結果として二次記憶中の長大データ
の読み出しと上書きとを高速化することにより構成され
ている。
一方、第3の発明の可変長ブロック群による長大データ
の格納方法は、二次記憶中の長大データを各々が複数の
ページから成る可変長のブロック集合に分割して格納し
たデータファイルと、長大データの各ブロックの先頭の
ページ番号およびそのブロック中のデータの有効サイズ
をエントリとして記録したヘッダレコード群を格納した
ヘッダファイルとを用意し、データの途中追加の場合に
、ヘッダレコードを主記憶に読み込んで与えられた開始
位置を持つエントリを見つけ、ヘッダ中のエントリ数が
最大値−1未満の場合には、サイズが追加データのサイ
ズ+1ページの新ブロックをデータファイル中に割り当
て、追加データの開始位置を含むページの内容を新ブロ
ックにコピーし、追加データを新ブロックに書き込み、
新ブロックの先頭ページを指すエントリをヘッダ中に作
成し、追加前のブロックのデータ追加位置以降のページ
を指すエントリをヘッダ中に作成し、またヘッダ中のエ
ントリ数が最大値−1以上の場合には、ヘッダ中で最小
のブロックを持つエントリとその前後で小さい方のブロ
ックを持つエントリとを見つけ、両方のブロックの合計
のサイズを持つ新ブロックをデータファイル中に割り当
て、両方のブロックの内容を新ブロックにコピーし、両
方のブロツクを指す2つのエントリを削除して新ブロッ
クを指すエントリをヘッダ中に作成し、以上のマージ処
理でエントリ数が削減したヘッダに対して改めて上記の
追加処理を繰り返し、結果として二次記憶中の最大デー
タの追加を高速化することにより構成されている。
の格納方法は、二次記憶中の長大データを各々が複数の
ページから成る可変長のブロック集合に分割して格納し
たデータファイルと、長大データの各ブロックの先頭の
ページ番号およびそのブロック中のデータの有効サイズ
をエントリとして記録したヘッダレコード群を格納した
ヘッダファイルとを用意し、データの途中追加の場合に
、ヘッダレコードを主記憶に読み込んで与えられた開始
位置を持つエントリを見つけ、ヘッダ中のエントリ数が
最大値−1未満の場合には、サイズが追加データのサイ
ズ+1ページの新ブロックをデータファイル中に割り当
て、追加データの開始位置を含むページの内容を新ブロ
ックにコピーし、追加データを新ブロックに書き込み、
新ブロックの先頭ページを指すエントリをヘッダ中に作
成し、追加前のブロックのデータ追加位置以降のページ
を指すエントリをヘッダ中に作成し、またヘッダ中のエ
ントリ数が最大値−1以上の場合には、ヘッダ中で最小
のブロックを持つエントリとその前後で小さい方のブロ
ックを持つエントリとを見つけ、両方のブロックの合計
のサイズを持つ新ブロックをデータファイル中に割り当
て、両方のブロックの内容を新ブロックにコピーし、両
方のブロツクを指す2つのエントリを削除して新ブロッ
クを指すエントリをヘッダ中に作成し、以上のマージ処
理でエントリ数が削減したヘッダに対して改めて上記の
追加処理を繰り返し、結果として二次記憶中の最大デー
タの追加を高速化することにより構成されている。
さらに、第4の発明の可変長ブロック群による長大デー
タの格納方法は、二次記憶中の長大データを各々が複数
のページから成る可変長のブロック集合に分割して格納
したデータファイルと、長大データの各ブロックの先頭
のページ番号およびそのブロック中のデータの有効サイ
ズをエントリとして記録したヘッダレコード群を格納し
たヘッダファイルとを用意し、データの途中追加の場合
に、ヘッダレコードを主記憶に読み込んで与えられた開
始位置を持つエントリを見つけ、−削除データサイズが
当該エントリの指すブロック長以上の場合には、削除を
開始したエントリの時にはエントリ中の有効データサイ
ズを更新し、そうでない場合には現エントリを削除し、
再び次のエントリに進んで削除処理を繰り返し、また削
除データサイズが当該エントリの指すブロック長より小
さい場合には、現ブロックの残りのデータを含み得るサ
イズの新ブロックを割り当て、現ブロック中の削除され
たデータを新ブロックにコピーし、現エントリのページ
番号を新ブロックの先頭ページに更新し、結果として二
次記憶中の長大データの削除を高速化することにより構
成されている。
タの格納方法は、二次記憶中の長大データを各々が複数
のページから成る可変長のブロック集合に分割して格納
したデータファイルと、長大データの各ブロックの先頭
のページ番号およびそのブロック中のデータの有効サイ
ズをエントリとして記録したヘッダレコード群を格納し
たヘッダファイルとを用意し、データの途中追加の場合
に、ヘッダレコードを主記憶に読み込んで与えられた開
始位置を持つエントリを見つけ、−削除データサイズが
当該エントリの指すブロック長以上の場合には、削除を
開始したエントリの時にはエントリ中の有効データサイ
ズを更新し、そうでない場合には現エントリを削除し、
再び次のエントリに進んで削除処理を繰り返し、また削
除データサイズが当該エントリの指すブロック長より小
さい場合には、現ブロックの残りのデータを含み得るサ
イズの新ブロックを割り当て、現ブロック中の削除され
たデータを新ブロックにコピーし、現エントリのページ
番号を新ブロックの先頭ページに更新し、結果として二
次記憶中の長大データの削除を高速化することにより構
成されている。
本発明は、上述の方法をとることにより、最初の格納時
には、連続したページからなる1ブロツクだけを割り当
て、追加や削除の際には更新が必要な最小部分のみをペ
ージ単位で追加、削除するとともに、随時ブロック群を
マージして個数を減少させることができる。
には、連続したページからなる1ブロツクだけを割り当
て、追加や削除の際には更新が必要な最小部分のみをペ
ージ単位で追加、削除するとともに、随時ブロック群を
マージして個数を減少させることができる。
このため、全体のブロック数が常に一定値以内に収まる
ので長大データを高速に読み出すことが可能となり、さ
らに必要な部分のみを置換するのでデータの更新処理を
高速に行うことができる。
ので長大データを高速に読み出すことが可能となり、さ
らに必要な部分のみを置換するのでデータの更新処理を
高速に行うことができる。
本発明の実施例について図面を参照して説明する。
第1図は第1の発明の一実施例を示す流れ図、第2図は
第2の発明の一実施例を示す流れ図、第3図は第3の発
明の一実施例を示す流れ図、第4図は第4の発明の一実
施例を示す流れ図である。
第2の発明の一実施例を示す流れ図、第3図は第3の発
明の一実施例を示す流れ図、第4図は第4の発明の一実
施例を示す流れ図である。
また、第5図は二次記憶装置中に格納されるデータとそ
のヘッダとの関係の一例を示すブロック図である。そし
て、第6図はヘッダとデータブロックとの関係の一例を
示すブロック図である。
のヘッダとの関係の一例を示すブロック図である。そし
て、第6図はヘッダとデータブロックとの関係の一例を
示すブロック図である。
第5図に示すように、二次記憶装置中の1件の長大デー
タは、データファイル51中の複数のブロックに分割さ
れて格納される。例えば、データAは、第5図では、3
つのブロックAl、A2゜A3に分割されて格納されて
いる。また、データBは、2つのブロックBl、B2に
分割されて格納されている。このように、データファイ
ル51には、複数の長大データが混在して格納される。
タは、データファイル51中の複数のブロックに分割さ
れて格納される。例えば、データAは、第5図では、3
つのブロックAl、A2゜A3に分割されて格納されて
いる。また、データBは、2つのブロックBl、B2に
分割されて格納されている。このように、データファイ
ル51には、複数の長大データが混在して格納される。
一方、ヘッダファイル52には、複数のヘッダHA、H
,が格納されている。各ヘッダは1件の長大データに対
応し、それを構成する各ブロックをポイントしている。
,が格納されている。各ヘッダは1件の長大データに対
応し、それを構成する各ブロックをポイントしている。
他方、第6図に示すように、ヘッダH^は複数のエント
リE A l 、E A2 *・・・EAaから構成さ
れ、ブロックA1は複数個のページPAI□、P^12
゜P A13から構成されている。なお、ページは固定
長であるが、ブロックを構成するページ数は可変なので
、ブロック長は可変となっている。
リE A l 、E A2 *・・・EAaから構成さ
れ、ブロックA1は複数個のページPAI□、P^12
゜P A13から構成されている。なお、ページは固定
長であるが、ブロックを構成するページ数は可変なので
、ブロック長は可変となっている。
また、各エントリは、ブロックの先頭のページ番号とそ
のブロック中の有効データサイズとを含んでいる。有効
データサイズは、ブロック内で実際にデータの格納に使
われている領域の大きさを示している。
のブロック中の有効データサイズとを含んでいる。有効
データサイズは、ブロック内で実際にデータの格納に使
われている領域の大きさを示している。
第7図は第1の発明によるデータの新規格納時の状態の
一例を示す説明図である。
一例を示す説明図である。
次に、第1図および第7図を用いて、第1の発明による
データの新規格納方法を説明する。
データの新規格納方法を説明する。
最D1に、第1図のステップ11で、データAの格納に
必要なページ数を算出し、ステップ12で、そのページ
数だけの連続領域をデータファイル51中に確保する。
必要なページ数を算出し、ステップ12で、そのページ
数だけの連続領域をデータファイル51中に確保する。
この領域が第7図のブロックA1となる。
次に、ステップ13で、主記憶中の応用プログラムの領
域からデータAを当該ブロックA1に転送する。また、
ステップ14で、ヘッダファイル51中にヘッダレコー
ドの領域を確保し、ステップ15で、ヘッダHへにブロ
ックA1の先頭ページPA11のページ番号とデータA
の有効サイズとを書き込んで終了する。
域からデータAを当該ブロックA1に転送する。また、
ステップ14で、ヘッダファイル51中にヘッダレコー
ドの領域を確保し、ステップ15で、ヘッダHへにブロ
ックA1の先頭ページPA11のページ番号とデータA
の有効サイズとを書き込んで終了する。
次に、第2図(a)、(b)および第6図により、第2
の発明によるデータの読み出しと上書きとの方法を説明
する。なお、第2図において、OFは応用プログラム(
A P−という)からの入力情報であり、データ中の読
み出し/上書き位置を示す。また、OXは各ブロックの
先頭が元のデータ中で占める位置、Sは各ブロック中の
有効データサイズ、STは各ブロック内での転送開始位
置、SRは各ブロック内での残りの転送サイズ、Lは各
ブロックごとの転送サイズである。
の発明によるデータの読み出しと上書きとの方法を説明
する。なお、第2図において、OFは応用プログラム(
A P−という)からの入力情報であり、データ中の読
み出し/上書き位置を示す。また、OXは各ブロックの
先頭が元のデータ中で占める位置、Sは各ブロック中の
有効データサイズ、STは各ブロック内での転送開始位
置、SRは各ブロック内での残りの転送サイズ、Lは各
ブロックごとの転送サイズである。
最初に、第2図(a)のステップ201で、当該データ
Aに対応するヘッダHAをヘッダファイル52から読み
込む。ステップ202で、OXを初期化し、ステップ2
03で、Sに現ブロック中の有効データサイズをセット
する。
Aに対応するヘッダHAをヘッダファイル52から読み
込む。ステップ202で、OXを初期化し、ステップ2
03で、Sに現ブロック中の有効データサイズをセット
する。
次に、ステップ204で読み込み/上書き開始位置が現
ブロック中か否かをチエツクし、もしそうである(Y)
ならば、第2図(b)のステップ208に飛び、否であ
る(N)ならば、次に進む。
ブロック中か否かをチエツクし、もしそうである(Y)
ならば、第2図(b)のステップ208に飛び、否であ
る(N)ならば、次に進む。
ステップ205で、次のエントリの内容を手にいれ、ス
テップ206で、エントリが空か否かを確認し、空(エ
ントリの終わり〉である(Y)ならば終了する。空でな
い(N)ならば、OXを次のブロックの先頭位置に進め
、ステップ203に戻る。
テップ206で、エントリが空か否かを確認し、空(エ
ントリの終わり〉である(Y)ならば終了する。空でな
い(N)ならば、OXを次のブロックの先頭位置に進め
、ステップ203に戻る。
次に、ステップ208で、当該ブロックを読み込み、ス
テップ209で、ブロック内の転送開始位置をセットし
、ステップ210で、そのブロック内での実際の転送サ
イズを求める。
テップ209で、ブロック内の転送開始位置をセットし
、ステップ210で、そのブロック内での実際の転送サ
イズを求める。
また、ステップ211で、読み出しか上書きかをチエツ
クし、読み出しくY)ならば、ステップ212で、ブロ
ック内の位置STからLバイトを応用プログラム領域に
転送する。
クし、読み出しくY)ならば、ステップ212で、ブロ
ック内の位置STからLバイトを応用プログラム領域に
転送する。
上書きの場合(N>には、ステップ213で、応用プロ
グラム領域のLバイトのデータを位置STからブロック
中に書き込み、ステップ214で、ブロックを二次記憶
に書き戻す。
グラム領域のLバイトのデータを位置STからブロック
中に書き込み、ステップ214で、ブロックを二次記憶
に書き戻す。
また、ステップ215で、次の転送開始位置をセットし
、ステップ216で、残りの転送サイズをセットする。
、ステップ216で、残りの転送サイズをセットする。
ステップ217で、残りがO以下(Y)ならば終了し、
そうでない(N)ならば、ステップ205へ戻って、次
のエントリに進む。
そうでない(N)ならば、ステップ205へ戻って、次
のエントリに進む。
第8図は第3の発明によるデータの途中追加時の状態の
一例を示す説明図である。
一例を示す説明図である。
次に、第3図および第8図を用いて、第3の発明による
データの途中追加の方法を説明する。なお、第3図にお
いて、OFは、応用プログラムからの入力情報であり、
データ中の追加位置を示す。
データの途中追加の方法を説明する。なお、第3図にお
いて、OFは、応用プログラムからの入力情報であり、
データ中の追加位置を示す。
また、SAは、データの追加サイズに対応するページ数
を示す。
を示す。
最初に、第3図のステップ301で、当該データAに対
応するヘッダHAをヘッダファイル52から、第8図(
a)のように読み込み、ステップ302で、位置OFを
含むブロックAIのエントリをみつける。
応するヘッダHAをヘッダファイル52から、第8図(
a)のように読み込み、ステップ302で、位置OFを
含むブロックAIのエントリをみつける。
次に、ステップ303で、ヘッダHA中のエントリ数が
最大値−1未満か否かをチエツクし、YESならばステ
ップ304に、Noならばステップ308に進む、ステ
ップ304では、追加サイズ+1個のページ数を持つ新
ブロックA12を、第8図(b)のように、データファ
イル51中に割り当てる。
最大値−1未満か否かをチエツクし、YESならばステ
ップ304に、Noならばステップ308に進む、ステ
ップ304では、追加サイズ+1個のページ数を持つ新
ブロックA12を、第8図(b)のように、データファ
イル51中に割り当てる。
ステップ305で、追加位置OFを含むページに関して
、OFの前後を新ブロツク内の前後にそれぞれコピーし
、ステップ306で、追加データを新ブロックにコピー
する。ステップ307で、新ブロツク用及び残りのブロ
ック用の2個のエントリを、第8図(b)のように、ヘ
ッダHA中に作成して終了する。
、OFの前後を新ブロツク内の前後にそれぞれコピーし
、ステップ306で、追加データを新ブロックにコピー
する。ステップ307で、新ブロツク用及び残りのブロ
ック用の2個のエントリを、第8図(b)のように、ヘ
ッダHA中に作成して終了する。
次に、ステップ308以下では、ヘッダ中のエントリ数
を減らすために、2つのブロックの併合を行なう、まず
、ステップ308で、ヘッダHA中で最小サイズのブロ
ックを持つエントリを見つけ、ステップ309で、当該
エントリの前後で小さい方のブロックを持つエントリを
見つける。
を減らすために、2つのブロックの併合を行なう、まず
、ステップ308で、ヘッダHA中で最小サイズのブロ
ックを持つエントリを見つけ、ステップ309で、当該
エントリの前後で小さい方のブロックを持つエントリを
見つける。
ステップ310では、上記の2つのエントリのブロック
長の合計サイズの新ブロックをデータファイル中に割り
当てる。ステップ311で、2つの旧ブロックの内容を
新ブロックにコピーし、ステップ312で、2つの旧エ
ントリを削除し、ステップ313で、新エントリをヘッ
ダHA中に作成し、ステップ302に戻る。
長の合計サイズの新ブロックをデータファイル中に割り
当てる。ステップ311で、2つの旧ブロックの内容を
新ブロックにコピーし、ステップ312で、2つの旧エ
ントリを削除し、ステップ313で、新エントリをヘッ
ダHA中に作成し、ステップ302に戻る。
第9図は第4の発明によるデータの途中削除時の状態の
一例を示す説明図である。
一例を示す説明図である。
次に第4図および第9図を用いて、第4の発明によるデ
ータの途中削除の方法を説明する。なお、第4図におい
て、OFは応用プログラムからの入力情報であり、デー
タ中の削除開始位置を示す。
ータの途中削除の方法を説明する。なお、第4図におい
て、OFは応用プログラムからの入力情報であり、デー
タ中の削除開始位置を示す。
また、SDは削除サイズ、Sは各ブロック中の有効デー
タサイズである。
タサイズである。
最初に、第4図(a>のステップ401で、当該データ
Aに対応するヘッダHAをヘッダファイル52から、第
9図(a、)のように読み込む。次に、ステップ402
で、位置OFを含むエントリをみつける。この時OFを
、当該ブロックの先頭からのオフセットに変換しておく
。
Aに対応するヘッダHAをヘッダファイル52から、第
9図(a、)のように読み込む。次に、ステップ402
で、位置OFを含むエントリをみつける。この時OFを
、当該ブロックの先頭からのオフセットに変換しておく
。
次に、ステップ403で、削除データが当該ブロック中
に全て含まれるか否かをチエツクし、含まれない(Y)
ならば、ステップ404に、含まれる(N)ならば第4
図(b)のステップ411に進む。ステップ404では
、削除位置OFがブロックの先頭か否かをチエツクし、
先頭である(Y)ならば、ステップ406で、当該エン
トリを削除する。また、先頭でない(N)ならば、ステ
ップ405で、第9図(b)に示すように、ブロック内
の有効データサイズSをOFに更新する。
に全て含まれるか否かをチエツクし、含まれない(Y)
ならば、ステップ404に、含まれる(N)ならば第4
図(b)のステップ411に進む。ステップ404では
、削除位置OFがブロックの先頭か否かをチエツクし、
先頭である(Y)ならば、ステップ406で、当該エン
トリを削除する。また、先頭でない(N)ならば、ステ
ップ405で、第9図(b)に示すように、ブロック内
の有効データサイズSをOFに更新する。
次に、ステ・ツブ407で、削除サイズと削除開始位置
とを次のブロック中のサイズと位置とに更新する。ステ
ップ408では、削除データの残りがあるか否かをチエ
ツクし、ない(N)ならば終了し、ある(Y)ならば、
ステップ409で、次のエントリをみつける。ステップ
410では、次のエントリが空か否かをチエツクし、空
(Y)ならば終了し、そうでない(N)ならば、ステッ
プ403に戻る。
とを次のブロック中のサイズと位置とに更新する。ステ
ップ408では、削除データの残りがあるか否かをチエ
ツクし、ない(N)ならば終了し、ある(Y)ならば、
ステップ409で、次のエントリをみつける。ステップ
410では、次のエントリが空か否かをチエツクし、空
(Y)ならば終了し、そうでない(N)ならば、ステッ
プ403に戻る。
次に、第4図(b)のステップ411では、データ削除
後のブロックサイズである5−SDのサイズを持つ新ブ
ロックをデータファイル51中に第9図(b)のように
割り当てる。ステップ412では、削除開始位置がブロ
ックの先頭か否かをチエツクし、先頭でない(N)なら
ば、ステップ413で、旧ブロック中の削除開始位置以
前のデータを新ブロックにコピーする。
後のブロックサイズである5−SDのサイズを持つ新ブ
ロックをデータファイル51中に第9図(b)のように
割り当てる。ステップ412では、削除開始位置がブロ
ックの先頭か否かをチエツクし、先頭でない(N)なら
ば、ステップ413で、旧ブロック中の削除開始位置以
前のデータを新ブロックにコピーする。
また、ステ・シブ414では、旧ブロック中の削除終了
位置以降のデータを新ブロックにコピーする。最後にス
テップ415で、現エントリ中のブロック先頭ページ番
号を新ブロックを指すように更新して終了する。
位置以降のデータを新ブロックにコピーする。最後にス
テップ415で、現エントリ中のブロック先頭ページ番
号を新ブロックを指すように更新して終了する。
本発明の可変長ブロック群による長大データの格納方法
は、二次記憶中の長大データの部分的な更新に際して、
その一部のみしか実際に入出力しないため、データの途
中追加および途中削除の各処理を高速に実行できるとと
もに、長大データを格納するブロック数が一定値以内に
抑えられるため、データの新規格納および読み出し並び
に上書きの各処理を高速に実行できるという効果を有し
ている。
は、二次記憶中の長大データの部分的な更新に際して、
その一部のみしか実際に入出力しないため、データの途
中追加および途中削除の各処理を高速に実行できるとと
もに、長大データを格納するブロック数が一定値以内に
抑えられるため、データの新規格納および読み出し並び
に上書きの各処理を高速に実行できるという効果を有し
ている。
第1図は第1の発明の一実施例を示す流れ図、第2図は
第2の発明の一実施例を示す流れ図、第3図は第3の発
明の一実施例を示す流れ図、第4図は第4の発明の一実
施例を示す流れ図、第5図は二次記憶装置中に格納され
るデータとそのヘッダとの関係の一例を示すブロック図
、第6図はヘッダとデータブロックとの関係の一例を示
すブロック図、第7図は第1の発明によるデータの新規
格納時の状態の一例を示す説明図、第8図は第3の発明
によるデータの途中追加時の状態の一例を示す説明図、
第9図は第4の尭明によるデータの途中削除時の状態の
一例を示す説明図である。 51・・・データファイル、52・・・ヘッダファイル
、A、B・・・データ、Al、A2.A3.Ai。 Ail、Ai2.Ai3.Bl、B2.Bj・・・ブロ
ック、EAl、EAl、〜EA1・・エントリ、HA。 HB””ヘッダ、PAII・P A12・PA13”’
ページ。
第2の発明の一実施例を示す流れ図、第3図は第3の発
明の一実施例を示す流れ図、第4図は第4の発明の一実
施例を示す流れ図、第5図は二次記憶装置中に格納され
るデータとそのヘッダとの関係の一例を示すブロック図
、第6図はヘッダとデータブロックとの関係の一例を示
すブロック図、第7図は第1の発明によるデータの新規
格納時の状態の一例を示す説明図、第8図は第3の発明
によるデータの途中追加時の状態の一例を示す説明図、
第9図は第4の尭明によるデータの途中削除時の状態の
一例を示す説明図である。 51・・・データファイル、52・・・ヘッダファイル
、A、B・・・データ、Al、A2.A3.Ai。 Ail、Ai2.Ai3.Bl、B2.Bj・・・ブロ
ック、EAl、EAl、〜EA1・・エントリ、HA。 HB””ヘッダ、PAII・P A12・PA13”’
ページ。
Claims (4)
- (1)二次記憶中の長大データを各々が複数のページか
ら成る可変長ブロック集合に分割して格納したデータフ
ァイルと、長大データの各ブロックの先頭のページ番号
およびそのブロック中のデータの有効サイズをエントリ
として記録したヘッダレコード群を格納したヘッダファ
イルとを用意し、データの新規格納の場合に、必要な個
数の連続したページをブロックとしてデータファイル中
に確保し、主記憶からデータを当該ページ群に転送し、
ヘッダレコードの領域をヘッダファイル中に確保し、ヘ
ッダにデータのサイズとブロックの先頭ページの番号と
を記録し、結果として二次記憶中の長大データの格納を
高速化することを特徴とする可変長ブロック群による長
大データの格納方法。 - (2)二次記憶中の長大データを各々が複数のページか
ら成る可変長のブロック集合に分割して格納したデータ
ファイルと、長大データの各ブロックの先頭のページ番
号およびそのブロック中のデータの有効サイズをエント
リとして記録したヘッダレコード群を格納したヘッダフ
ァイルとを用意し、データの読み出しと上書きとの場合
に、ヘッダレコードを主記憶に読み込んで与えられた開
始位置を持つエントリを見つけ、当該エントリがポイン
トするデータブロックを主記憶中に読み込み、データの
読み出し操作の場合には当該ブロックを応用プログラム
領域に転送し、データの上書き操作の場合には応用プロ
グラム領域からデータを転送して当該ブロックに書き込
んでから二次記憶に書き戻し、再び次のエントリに進ん
で、以上の操作を与えられたデータサイズに達するまで
繰り返し、結果として二次記憶中の長大データの読み出
しと上書きとを高速化することを特徴とする可変長ブロ
ック群による長大データの格納方法。 - (3)二次記憶中の長大データを各々が複数のページか
ら成る可変長のブロック集合に分割して格納したデータ
ファイルと、長大データの各ブロックの先頭のページ番
号およびそのブロック中のデータの有効サイズをエント
リとして記録したヘッダレコード群を格納したヘッダフ
ァイルとを用意し、データの途中追加の場合に、ヘッダ
レコードを主記憶に読み込んで与えられた開始位置を持
つエントリを見つけ、ヘッダ中のエントリ数が最大値−
1未満の場合には、サイズが追加データのサイズ+1ペ
ージの新ブロックをデータファイル中に割り当て、追加
データの開始位置を含むページの内容を新ブロックにコ
ピーし、追加データを新ブロックに書き込み、新ブロッ
クの先頭ページを指すエントリをヘッダ中に作成し、追
加前のブロックのデータ追加位置以降のページを指すエ
ントリをヘッダ中に作成し、またヘッダ中のエントリ数
が最大値−1以上の場合には、ヘッダ中で最小のブロッ
クを持つエントリとその前後で小さい方のブロックを持
つエントリとを見つけ、両方のブロックの合計のサイズ
を持つ新ブロックをデータファイル中に割り当て、両方
のブロックの内容を新ブロックにコピーし、両方のブロ
ックを指す2つのエントリを削除して新ブロックを指す
エントリをヘッダ中に作成し、以上のマージ処理でエン
トリ数が削減したヘッダに対して改めて上記の追加処理
を繰り返し、結果として二次記憶中の最大データの追加
を高速化することを特徴とする可変長ブロック群による
長大データの格納方法。 - (4)二次記憶中の長大データを各々が複数のページか
ら成る可変長のブロック集合に分割して格納したデータ
ファイルと、長大データの各ブロックの先頭のページ番
号およびそのブロック中のデータの有効サイズをエント
リとして記録したヘッダレコード群を格納したヘッダフ
ァイルとを用意し、データの途中追加の場合に、ヘッダ
レコードを主記憶に読み込んで与えられた開始位置を持
つエントリを見つけ、削除データサイズが当該エントリ
の指すブロック長以上の場合には、削除を開始したエン
トリの時にはエントリ中の有効データサイズを更新し、
そうでない場合には現エントリを削除し、再び次のエン
トリに進んで削除処理を繰り返し、また削除データサイ
ズが当該エントリの指すブロック長より小さい場合には
、現ブロックの残りのデータを含み得るサイズの新ブロ
ックを割り当て、現ブロック中の削除されたデータを新
ブロックにコピーし、現エントリのページ番号を新ブロ
ックの先頭ページに更新し、結果として二次記憶中の長
大データの削除を高速化することを特徴とする可変長ブ
ロック群による長大データの格納方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1197531A JPH0362137A (ja) | 1989-07-28 | 1989-07-28 | 可変長ブロック群による長大データの格納方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1197531A JPH0362137A (ja) | 1989-07-28 | 1989-07-28 | 可変長ブロック群による長大データの格納方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0362137A true JPH0362137A (ja) | 1991-03-18 |
Family
ID=16376018
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP1197531A Pending JPH0362137A (ja) | 1989-07-28 | 1989-07-28 | 可変長ブロック群による長大データの格納方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0362137A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05158762A (ja) * | 1991-12-03 | 1993-06-25 | Nippon Steel Corp | プログラムライブラリーの格納方法 |
JPH05181719A (ja) * | 1991-12-27 | 1993-07-23 | Nippon Steel Corp | 可変長データの格納および参照システム |
JPH11288385A (ja) * | 1998-04-03 | 1999-10-19 | Nec Corp | データの加工装置 |
US10102217B2 (en) | 2014-03-07 | 2018-10-16 | Fujitsu Limited | Non-transitory computer-readable recording medium having stored therein data dividing program, data dividing apparatus, and data dividing method |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01261745A (ja) * | 1988-04-08 | 1989-10-18 | Internatl Business Mach Corp <Ibm> | データ・ベース・レコードのトランザクシヨンの回復方法 |
-
1989
- 1989-07-28 JP JP1197531A patent/JPH0362137A/ja active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01261745A (ja) * | 1988-04-08 | 1989-10-18 | Internatl Business Mach Corp <Ibm> | データ・ベース・レコードのトランザクシヨンの回復方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05158762A (ja) * | 1991-12-03 | 1993-06-25 | Nippon Steel Corp | プログラムライブラリーの格納方法 |
JPH05181719A (ja) * | 1991-12-27 | 1993-07-23 | Nippon Steel Corp | 可変長データの格納および参照システム |
JPH11288385A (ja) * | 1998-04-03 | 1999-10-19 | Nec Corp | データの加工装置 |
US10102217B2 (en) | 2014-03-07 | 2018-10-16 | Fujitsu Limited | Non-transitory computer-readable recording medium having stored therein data dividing program, data dividing apparatus, and data dividing method |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4249267B2 (ja) | ファイル・システムにおけるディスク・スペースの解放 | |
DE60035151T2 (de) | Hardware-Anordnung zur Verwaltung von Cachespeicherstrukturen in einem Datenspeichersystem | |
DE60112257T2 (de) | Virtuelles Dateisystem für dynamisch erzeugte Webseiten | |
JPH1063555A (ja) | ファイル管理方法 | |
JP2010225024A (ja) | ストレージ装置とそのファイル制御方法およびストレージシステム | |
KR100907477B1 (ko) | 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법 | |
JPH01261745A (ja) | データ・ベース・レコードのトランザクシヨンの回復方法 | |
JP2553751B2 (ja) | ディスクセクタ代替方式 | |
JPH0362137A (ja) | 可変長ブロック群による長大データの格納方法 | |
JPH04360246A (ja) | ファイル圧縮装置 | |
JP2972548B2 (ja) | ファイル管理方式 | |
JP2925042B2 (ja) | 情報リンク生成方法 | |
US5978810A (en) | Data management system and method for storing a long record in a set of shorter keyed records | |
JPH11353215A (ja) | 更新後ジャーナル採取処理方式 | |
KR20190057957A (ko) | Ext 파일 관리 구조의 파일단위 단편화 제거 시스템 및 방법 | |
JP2874810B2 (ja) | キーの記憶割り当て方法 | |
JPH0477938A (ja) | データ記憶方法 | |
JPS6129955A (ja) | 追記型媒体における情報蓄積方式 | |
JP3858648B2 (ja) | データ格納領域管理方法および装置 | |
JPH09305449A (ja) | データベース管理システム | |
JP2721034B2 (ja) | クラスタリング制御システム | |
JPH08328929A (ja) | データベース分割管理システム | |
JP2767966B2 (ja) | 高速ファイルアクセス方式 | |
KR100882470B1 (ko) | 미디어 파일 편집 방법 | |
JP3463630B2 (ja) | 仮想記憶空間計算機システム |