JP6181247B1 - Database management apparatus, database management method, and database management program - Google Patents
Database management apparatus, database management method, and database management program Download PDFInfo
- Publication number
- JP6181247B1 JP6181247B1 JP2016131596A JP2016131596A JP6181247B1 JP 6181247 B1 JP6181247 B1 JP 6181247B1 JP 2016131596 A JP2016131596 A JP 2016131596A JP 2016131596 A JP2016131596 A JP 2016131596A JP 6181247 B1 JP6181247 B1 JP 6181247B1
- Authority
- JP
- Japan
- Prior art keywords
- record
- representative
- data
- expiration date
- index
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】無効レコードの削除に関する処理負荷を軽減することができるデータベース管理装置、データベース管理方法、およびデータベース管理プログラムを提供することである。【解決手段】実施形態のデータベース管理装置は、データ処理部と、代表有効期限決定部と、削除部とを持つ。データ処理部は、記憶装置に対してデータの書き込みまたは読み出しを行う。代表有効期限決定部は、前記データ処理部が扱うデータに対してそれぞれ割り当てられた有効期限に基づいて、前記データをグループ化したデータグループの代表有効期限を決定する。削除部は、前記代表有効期限決定部により決定された代表有効期限に基づいて、削除対象の前記データグループを抽出し、前記抽出した削除対象の前記データグループに含まれるデータのうち前記有効期限を徒過したデータを削除する。【選択図】図1To provide a database management apparatus, a database management method, and a database management program capable of reducing processing load related to deletion of invalid records. According to one embodiment, a database management apparatus includes a data processing unit, a representative expiration date determination unit, and a deletion unit. The data processing unit writes or reads data to or from the storage device. The representative expiration date determination unit determines a representative expiration date of a data group in which the data is grouped based on the expiration dates assigned to the data handled by the data processing unit. The deletion unit extracts the data group to be deleted based on the representative expiration date determined by the representative expiration date determination unit, and determines the expiration date among the data included in the extracted data group to be deleted. Delete the missing data. [Selection] Figure 1
Description
本発明の実施形態は、データベース管理装置、データベース管理方法、およびデータベース管理プログラムに関する。 Embodiments described herein relate generally to a database management apparatus, a database management method, and a database management program.
データベースを管理するシステムでは、データベースにレコードを登録する場合に、そのレコードを利用できる有効期限を設定し、有効期限を徒過したレコード(無効レコード)を所定のタイミングで削除する場合がある。無効レコードを削除する手法としては、例えば定期的にデータベース内の全レコードをスキャンし、有効期限を徒過したレコードを削除する手法(ガベージコレクション)がある。しかしながら、従来の技術では、全レコードをスキャンするために、無効レコードを削除する処理負荷が増大する場合があった。 In a system that manages a database, when a record is registered in the database, an expiration date in which the record can be used is set, and a record that has passed the expiration date (invalid record) may be deleted at a predetermined timing. As a technique for deleting invalid records, for example, there is a technique (garbage collection) in which all records in a database are periodically scanned and records that have expired are deleted. However, in the conventional technique, in order to scan all records, the processing load for deleting invalid records may increase.
本発明が解決しようとする課題は、無効レコードの削除に関する処理負荷を軽減することができるデータベース管理装置、データベース管理方法、およびデータベース管理プログラムを提供することである。 The problem to be solved by the present invention is to provide a database management device, a database management method, and a database management program that can reduce the processing load related to deletion of invalid records.
実施形態のデータベース管理装置は、データ処理部と、代表有効期限決定部と、削除部とを持つ。データ処理部は、記憶装置に対してデータの書き込みまたは読み出しを行う。代表有効期限決定部は、前記データ処理部が扱うデータに対してそれぞれ割り当てられた有効期限に基づいて、前記データをグループ化したデータグループの代表有効期限を決定する。削除部は、前記代表有効期限決定部により決定された代表有効期限に基づいて、削除対象の前記データグループを抽出し、前記抽出した削除対象の前記データグループに含まれるデータのうち前記有効期限を徒過したデータを削除する。 The database management apparatus according to the embodiment includes a data processing unit, a representative expiration date determination unit, and a deletion unit. The data processing unit writes or reads data to or from the storage device. The representative expiration date determination unit determines a representative expiration date of a data group in which the data is grouped based on the expiration dates assigned to the data handled by the data processing unit. The deletion unit extracts the data group to be deleted based on the representative expiration date determined by the representative expiration date determination unit, and determines the expiration date among the data included in the extracted data group to be deleted. Delete the missing data.
以下、実施形態のデータベース管理装置、データベース管理方法、およびデータベース管理プログラムを、図面を参照して説明する。 Hereinafter, a database management device, a database management method, and a database management program according to embodiments will be described with reference to the drawings.
図1は、本実施形態のデータベース管理装置100を備えるデータベース管理システム1の機能構成例を示す図である。図1に示すデータベース管理システム1は、データベース管理装置100と、記憶装置200と、クライアント300とを備える。データベース管理装置100、記憶装置200、およびクライアント300のそれぞれは、インターネットやLAN(Local Area Network)、WAN(Wide Area Network)等を含む通信ネットワークを介して通信する。
FIG. 1 is a diagram illustrating a functional configuration example of a
図1に示すデータベース管理システム1において、記憶装置200およびクライアント300の一方または双方は、データベース管理装置100と統合されてもよい。また、図1の例では、データベース管理装置100を使用する装置として1つのクライアント300を示しているが、複数のクライアント300が1つのデータベース管理装置100を使用してもよい。
In the
データベース管理装置100は、ユーザが使用するクライアント300からの設定情報の入力や、処理を実行するための指示の入力を受け付け、受け付けた内容に基づいて、記憶装置200に対するI/O命令を発行する。また、データベース管理装置100は、処理結果等の情報をクライアント300に出力する。
The
データベース管理装置100は、レコード管理部(データ処理部)110と、インデックス管理部(代表有効期限決定部)120と、無効レコード削除部(削除部)130と、通信部140と、記憶部150とを備える。また、これらの構成要素のうち記憶部150を除くものは、例えば、コンピュータにおけるCPU(Central Processing Unit)等のプロセッサが、記憶部150等のプログラムメモリに格納されたプログラム(ソフトウェア)を実行することで実現される。また、これらの機能部のうち一部または全部は、LSI(Large Scale Integration)やASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)等のハードウェアによって実現されてもよく、ソフトウェアとハードウェアとの協働により実現されてもよい。また、記憶部150は、RAM(Random Access Memory)やROM(Read Only Memory)、HDD(Hard Disk Drive)、フラッシュメモリ等により実現される。記憶部150には、レコード管理情報150A、第1インデックス150B、および第2インデックス150C等の情報が記憶される。
The
レコード管理部110は、クライアント300から書き込み指示されたデータを記憶装置200に書き込んだり、読み出し指示されたデータを記憶装置200から読み出したり、削除指示されたデータを記憶装置200から削除する処理を行う。また、本実施形態では、クライアント300が、書き込み、読み出し、または削除等を指示する一単位のデータを、レコードと称する。レコードは、例えば、レコードを識別する識別情報(レコードID)と、それに関連付けられたデータ本体部とを含む。レコードは、固定長でもよく、可変長でもよい。
The
レコード管理部110は、レコードを、例えば一以上のレコードを包含するページ、および一以上のページを包含するテーブル等で表現される論理的な階層構造で管理する。この階層構造は、レコード管理情報150Aによって把握される。ここで、ページとは、1または複数のレコードが割り当て可能な固定長の記憶領域を持つ仮想的な記憶領域を示すものである。また、テーブルとは、1又は複数のページが割り当て可能な固定長の記憶領域を持つ仮想的な記憶領域を示すものである。テーブルまたはページは、それぞれレコードをグループ化したデータグループの一例である。以下の説明では、ページがデータグループであるものとする。
The
図2は、レコード管理情報150Aの内容の一例を示す図である。レコード管理情報150Aは、例えば、テーブルごとに、「ページID」、「レコードID」、および「TTL(Time To Live)値」が互いに対応付けられた情報である。「ページID」は、ページを識別する識別情報である。レコード管理部110は、記憶装置200に対してレコードの書き込みを行う場合に、レコードごとにTTL値を設定し、レコード管理情報150Aに追加する。「TTL値」は、レコードの有効期限を認識可能な情報の一例である。TTL値は、例えば、そのレコードがいつまで有効であるかを示す時刻情報である。TTL値は、クライアント300から指定されてもよく、データベース管理装置100において設定されてもよい。
FIG. 2 is a diagram illustrating an example of the contents of the
図2に示すTTL値は、時刻型の値(例えば、日時情報)が設定される。また、TTL値は、例えばレコードに対するアクセス時刻からの有効期間(例えば、最終アクセス時刻より24時間といった情報)が設定されてもよい。 As the TTL value shown in FIG. 2, a time type value (for example, date information) is set. In addition, for the TTL value, for example, a valid period from the access time to the record (for example, information such as 24 hours from the last access time) may be set.
なお、レコード管理部110は、レコード管理情報に記憶されたレコードIDに対応する論理アドレスから、記憶装置200の物理アドレスに変換する変換部を備えていてもよい。また、本実施形態では、TTL値が設定されない状態で記憶装置200にレコードが記憶される場合もあり得る。この場合、レコード管理部110は、レコード管理情報150AのTTL値を空欄等にして登録してもよく、そのレコードに関する情報をレコード管理情報150Aに登録しなくてもよい。
Note that the
インデックス管理部120は、レコード管理部110によって、記憶装置200にレコードが書き込まれたり、レコードが削除された場合に、各レコードを管理するためのインデックス(索引情報)を生成する。また、インデックス管理部120は、レコードに対してそれぞれ割り当てられたTTL値に基づいて、データをグループ化したデータグループの代表有効期限(代表TTL値)を決定し、決定した情報をインデックスに格納する。また、インデックス管理部120は、無効レコード削除部130によって、記憶装置200内の無効レコードが削除された場合にも、インデックスを更新する。本実施形態では、インデックスは、第1インデックス150Bと、第2インデックス150Cとを含むものとする。
The
図3は、第1インデックス150Bの内容の一例を示す図である。第1インデックス150Bは、例えば、「代表TTL値」および「ページID」が互いに対応付けられた情報である。「代表TTL値」とは、レコード管理情報150Aで管理されるページごとの代表有効期限である。代表有効期限は、各ページのそれぞれに記憶されたレコードに割り当てられたTTL値等に基づいて決定される期限情報であり、無効レコードを削除する際の一次検索に用いられる。なお、代表TTL値の設定手法については後述する。「代表TTL値」なるデータは、例えば各レコードに対するTTL値と同様のデータ形式で表現される。
FIG. 3 is a diagram illustrating an example of the contents of the
第1インデックス150Bは、例えば代表TTL値を検索条件(キー)として、代表有効期限を徒過したページが検索できるように構成される。第1インデックス150Bは、例えば無効レコード削除部130により、ページ単位でガベージコレクション処理(コンパクション、バキューム、ページ再編成ともいう)を実現するために用いられるインデックスである。
The
図4は、第2インデックス150Cの内容の一例を示す図である。第2インデックス150Cは、例えば、「ページID」、「代表TTL値」、および「付加情報」が互いに対応付けられた情報である。「付加情報」とは、例えば過去の代表TTL値、ページ内の全レコードにおけるTTL値の最大、最小、平均、レコード数、各レコードのレコード長の総和、および代表TTL値を求めるための規則等のうち、少なくとも1つを含む情報である。また、「付加情報」は、例えばインデックス管理部120において、代表TTL値を再計算し、第1インデックス150Bを更新するのに用いられる情報である。
FIG. 4 is a diagram illustrating an example of the contents of the
なお、インデックス管理部120は、上述した第1インデックス150Bおよび第2インデックス150Cを1つのインデックスとして管理してもよく、他の情報を含むインデックスを生成してもよい。
The
無効レコード削除部130は、第1インデックス150Bに基づいて、削除対象のページを抽出し、抽出した削除対象のページに含まれるレコードのうち有効期限を徒過したレコード(無効レコード)を削除する。無効レコードの削除とは、例えば記憶装置200のデータ記憶領域210に記憶されている無効レコードを削除するとともに、レコード管理情報150Aから該当する無効レコードの管理情報を削除することである。
The invalid
なお、無効レコード削除部130は、例えば無効レコードの削除を、ガベージコレクション処理として定期的に実施してもよく、レコード管理情報150Aまたは記憶装置200のデータ量が閾値を超えた場合に実施してもよく、クライアント300からの指示で実施してもよい。
The invalid
通信部140は、他のデータベース管理装置100、記憶装置200、およびクライアント300のうち、少なくとも1つと通信ネットワークを介してデータの送受信を行う通信インターフェースである。
The
記憶部150は、図1に示す情報の他、データベース管理装置100における各種設定情報や、データベース管理に関する各種処理の実行経過または実行結果等により得られる情報、ログ情報、エラー情報等を記憶する。
In addition to the information shown in FIG. 1, the
記憶装置200は、例えばデータベース管理装置100により管理されるストレージ装置である。記憶装置200は、例えば、ハードディスク(ディスク装置)、フラッシュメモリと、制御回路とを備える。記憶装置200は、データ記憶領域210を備える。データ記憶領域210は、レコードを不揮発に保持する。
The
クライアント300は、データベース管理装置100に指示を送信し、応答を取得する。例えば、クライアント300は、データベース管理装置100にデータの読み書き、削除を行わせるためのコマンドを出力する。クライアント300は、例えばPC(Personal Computer)やタブレット端末、携帯電話等の情報処理装置である。クライアント300は、データベース管理装置100のユーザによって使用される情報処理装置であってもよく、更に別の装置から受信したコマンド等に基づいて、データベース管理装置100に各種コマンドを送信する装置であってもよい。また、クライアント300は、内部において情報処理した結果に基づいて、各種コマンドを生成してデータベース管理装置100に送信する装置であってもよい。
The
クライアント300は、データベース管理装置100に対して、データの書き込みを指示するライトコマンド、データの読み出しを指示するリードコマンド、データの削除を指示する削除コマンド等を送信する。また、クライアント300は、データベース管理装置100から指示した内容に対する処理結果を取得する。
The
以下、データベース管理装置100におけるデータベース管理の各種動作について説明する。図5は、データベース管理装置100におけるレコードアクセス時の動作例を説明するための図である。本実施例において、レコードアクセスとは、レコードの書き込み処理を指すものとする。また、レコードの書き込み処理には、レコードの新規登録と更新との双方が含まれる。
Hereinafter, various operations of database management in the
図5において、クライアント300は、レコードの書き込み指示に対応するコマンド(書き込みコマンド)をデータベース管理装置100に出力する(1)。レコード管理部110は、レコード管理情報150Aに書き込み対象のレコードに関する情報を登録する(2)。また、レコード管理部110は、記憶装置200のデータ記憶領域210に書き込み指示されたレコードの書き込み命令を出力する(3)。なお、上記(2)と(3)の順序は逆であってもよく、同時であってもよい。
In FIG. 5, the
また、レコード管理部110は、書き込んだレコードに関する情報およびインデックスの登録指示(または更新指示)をインデックス管理部120に出力する(4)。レコードに関する情報とは、書き込んだレコードに関連付けられたレコードID、書き込んだレコードが属するページID、およびTTL値であるが、例えばレコード管理情報150Aに記憶された管理情報のうち、書き込んだレコードが属するページIDに関連付けられた全レコードの管理情報でもよい。
Also, the
インデックス管理部120は、レコード管理部110により得られる情報に基づいて、第1インデックス150Bおよび第2インデックス150Cを生成(新規作成または更新)する(5)、(6)。
The
また、インデックス管理部120は、書き込んだレコードに対する第1インデックス150Bおよび第2インデックス150Cの生成が終了すると、データの書き込み処理が完了したことを示す情報をクライアント300に出力する(7)。
Further, when the generation of the
次に、データベース管理装置100におけるガベージコレクション処理の実行時の動作について、図を用いて説明する。図6は、データベース管理装置100におけるガベージコレクション処理の動作例を説明するための図である。
Next, an operation at the time of executing the garbage collection process in the
無効レコード削除部130は、定期的に、ガベージコレクション処理による無効レコードの削除処理を行う。無効レコード削除部130は、削除処理を実行するタイミングで第1インデックス150Bを参照し(8)、ページIDごとに設定される代表TTL値と、現在時刻とを比較する。比較の結果、現在時刻が代表TTL値を超えている場合、無効レコード削除部130は、その代表TTL値を持つページIDを、無効レコードを削除する対象のページとして抽出する。
The invalid
なお、無効レコード削除部130は、削除処理の時間を調整するため、1回の削除処理で削除対象とするページの最大数を制限してもよい。その場合、無効レコード削除部130は、現在時刻と代表TTL値とを比較し、代表TTL値からの経過時間が大きいページ順に、最大数を超えない数のページIDを抽出する。
Note that the invalid
次に、無効レコード削除部130は、レコード管理情報150Aを参照し、削除対象のページに記憶された各レコードのTTL値と現在時刻とを比較し、現在時刻よりも前のTTL値が設定されたレコードの管理情報を削除する(9)。また、無効レコード削除部130は、レコード管理情報150Aに対して上述の削除処理を行うとともに、記憶装置200に記憶された対象レコードを削除する(10)。なお、上記(9)および(10)では、レコード管理情報150Aを参照して削除対象のレコードが抽出された場合に、記憶装置200に記憶された対象レコードを削除した後に、レコード管理情報150Aの管理情報を削除してもよく、またその逆でもよい。
Next, the invalid
次に、無効レコード削除部130は、インデックス管理部120に第1インデックス150Bおよび第2インデックス150Cを更新する指示を出力する(11)。なお、無効レコード削除部130は、第1インデックス150Bおよび第2インデックス150Cの更新指示とともに、どのページIDのどのレコードが削除されたかを示す情報等をインデックス管理部120に出力する。
Next, the invalid
インデックス管理部120は、第2インデックス150Cに記憶された情報を参照し、削除対象となったページIDに対する削除前の代表TTL値や付加情報を用いて、第1インデックス150Bを更新する(12)、また、インデックス管理部120は、第1インデックス150Bを生成する際に用いた情報等に基づいて、付加情報を更新し、更新した付加情報を含む第2インデックス150Cを生成する(13)。
The
上述した処理により、ガベージコレクション処理により無効レコードを削除する場合に、レコード管理情報150Aの各レコードを全スキャンするのではなく、ページ単位で大まかに削除の必要性を判定し、無効レコードがページ内にそれほど多くない場合には、無効レコードの物理的な削除を遅延させることができる。これにより、無効レコードの削除に関する処理負荷を軽減することができる。
By deleting the invalid record by the garbage collection process by the above-described process, it is not necessary to scan all the records of the
また、第1インデックス150Bおよび第2インデックス150Cを用いてページごとにインデックス情報を管理することで、インデックスのデータ量を軽減させることができる。
Further, by managing the index information for each page using the
次に、上述した代表TTL値の設定について、具体的に説明する。
(代表TTL値を設定する第1の実施例)
図7は、代表TTL値を設定する第1の実施例を示す図である。第1の実施例では、ページ内の各データのそれぞれに割り当てられたTTL値のうち一部または全部に対して統計処理を行った値に基づいて、ページごとに代表TTL値を設定する。例えば、第1の実施例では、同一のページに属するそれぞれのレコードに割り当てられたTTL値に対する割合を基準に、代表TTL値T(P)を設定する。図7において、横軸を時刻とし、Tminは、同一ページ内に含まれる各レコードのTTL値の最小値を示し、Tmaxは、同一ページ内に含まれる各レコードのTTL値の最大値を示す。
Next, the setting of the representative TTL value described above will be specifically described.
(First embodiment for setting a representative TTL value)
FIG. 7 is a diagram showing a first embodiment for setting a representative TTL value. In the first embodiment, a representative TTL value is set for each page based on a value obtained by performing statistical processing on some or all of the TTL values assigned to each data in the page. For example, in the first embodiment, the representative TTL value T (P) is set on the basis of the ratio to the TTL value assigned to each record belonging to the same page. In FIG. 7, the horizontal axis represents time, Tmin indicates the minimum value of the TTL value of each record included in the same page, and Tmax indicates the maximum value of the TTL value of each record included in the same page.
第1の実施例において、割合に対する閾値aを0≦a≦1とする。レコード管理部110は、各ページ内における全レコードのうち、無効レコードの割合がaを超えたときに、削除対象のページとして抽出されるように、代表TTL値T(P)とする。この閾値は、クライアント300から指定されてもよく、インデックス管理部120に予め設定されていてもよい。
In the first embodiment, the threshold value a for the ratio is set to 0 ≦ a ≦ 1. The
例えば、上述した閾値a=0.3とした場合、図7に示すように、そのページ内に含まれる無効レコード数が全レコード数の30%を超えないページについては、無効レコードの削除処理が実行されず、無効レコード数が全レコード数の30%を超えるページについては、無効レコードの削除処理が実行されるように代表TTL値T(P)を設定する。この場合、インデックス管理部120は、例えば、ページ内の全レコードをTTL値でソートし、TTL値の小さい(時刻の早い)方から数えて全レコード数の30%を超えた最初のレコードのTTL値を代表TTL値T(P)に設定する。
For example, when the above-described threshold value a = 0.3, as shown in FIG. 7, the invalid record deletion process is performed for a page in which the number of invalid records included in the page does not exceed 30% of the total number of records. For pages that are not executed and the number of invalid records exceeds 30% of the total number of records, the representative TTL value T (P) is set so that invalid record deletion processing is executed. In this case, for example, the
また、インデックス管理部120は、ページ内のTmaxとTminとの差分を算出し、その差分値の30%の値と、代表TTL値未満のレコード数C1および代表TTL値以上のレコード数C2の割合とを乗じた値を、Tminに加算することで、代表TTL値T(P)を計算してもよい(T(P)=0.3×(C2/C1)×(Tmax−Tmin)+Tmin)。
Further, the
なお、閾値a=0とした場合、代表TTL値T(P)は、図7に示すTminと一致する。したがって、ガベージコレクション処理による無効レコードの削除を実行する周期が速くなり、ガベージコレクション処理が厳密になるが、削除処理における処理負荷は高くなる。 When the threshold value a = 0, the representative TTL value T (P) matches Tmin shown in FIG. Therefore, the cycle for executing the deletion of invalid records by the garbage collection process becomes fast and the garbage collection process becomes strict, but the processing load in the deletion process increases.
また、閾値a=1とした場合、代表TTL値T(P)は、図7に示すTmaxと一致する。この場合、ページ中の全レコードが無効レコードになるまで削除操作を遅延させることができるため、ガベージコレクション処理による負荷は最大限軽減できるが、それまで無効レコードがページ内に残ったままとなる。 When the threshold value a = 1, the representative TTL value T (P) matches Tmax shown in FIG. In this case, since the deletion operation can be delayed until all the records in the page become invalid records, the load due to the garbage collection process can be reduced to the maximum, but the invalid records remain in the page until then.
ここで、第1の実施例において、1レコードごとに3レコードまで書き込んだ場合の代表TTL値T(P)の設定例について説明する。例えば、第1の実施例において、あるページに最初のレコードR1が書き込まれた場合、インデックス管理部120は、Tmin=0とし、TmaxをレコードR1のTTL値(T(R1))とする。また、インデックス管理部120は、代表TTL値T(P)=T(R1)とする。
Here, an example of setting the representative TTL value T (P) when up to three records are written for each record in the first embodiment will be described. For example, in the first embodiment, when the first record R1 is written in a certain page, the
次に、同一ページに2番目のレコードR2が書き込まれた場合、インデックス管理部120は、TminをレコードR1およびR2のTTL値のうち最も早い方に設定する(Tmin=min(T(R1),T(R2))。また、インデックス管理部120は、TmaxをレコードR1およびR2のTTL値のうち最も遅い方に設定する(Tmax=max(T(R1),T(R2))。
Next, when the second record R2 is written on the same page, the
また、インデックス管理部120は、代表TTL値未満のレコード数C1を1とし、代表TTL値以上のレコード数C2を1として、上述した計算式「T(P)=a×(C2/C1)×(Tmax−Tmin)+Tmin」から代表TTL値T(P)を計算する。また、インデックス管理部120は、上述したレコードR2の書き込み時に使用した情報を付加情報として第2インデックス150Cに保存する。このときの付加情報は、Tmin、Tmax、C1、およびC2である。これにより、インデックス管理部120は、ページ内で代表TTL値T(P)を更新する場合に、対象のページ内の全レコードをスキャンせずに、迅速にTmin、Tmax、C1、C2等を取得することができる。
Further, the
更に、同一ページに3番目のレコードR3を書き込む場合、インデックス管理部120は、レコードR3のTTL値T(R3)と、第2インデックス150Cから取得したTmin、Tmaxとを比較して、新たなTminとTmaxを決定するとともに、C1およびC2のいずれかを更新する。また、インデックス管理部120は、レコードR3を登録したページの代表TTL値T(P)を、上述した計算式を用いて再計算する。以下、レコードが書き込まれるごとに同様の処理を行う。
Furthermore, when writing the third record R3 on the same page, the
このように、第1の実施例では、ページ内における全レコードのTTL値の割合(閾値a)に基づいて、代表TTL値T(P)を設定することができる。したがって、例えば記憶装置200の空き容量等に応じて閾値aを動的に変化させることで、適切なタイミングでガベージコレクション処理を実施することができるため、処理負荷を軽減することができる。
Thus, in the first embodiment, the representative TTL value T (P) can be set based on the ratio (threshold value a) of the TTL values of all records in the page. Therefore, for example, by dynamically changing the threshold value a in accordance with the free capacity of the
(代表TTL値を設定する第2の実施例)
次に、代表TTL値を設定する第2の実施例について説明する。図8は、代表TTL値を設定する第2の実施例を示す図である。第2の実施例では、同一のページに属するそれぞれのレコードに割り当てられたTTL値から最大値と最小値とを取得し、取得した最大値および最小値の一方または双方に対する割合に基づいて、代表TTL値を設定する。例えば、インデックス管理部120は、図8に示すように、割合を示す閾値aを0≦a≦1とし、TTL値の最小値から最大値までの区間を「a:1−a」で内分した時刻を代表TTL値T(P)として設定する。
(Second embodiment for setting a representative TTL value)
Next, a second embodiment for setting the representative TTL value will be described. FIG. 8 is a diagram showing a second embodiment for setting a representative TTL value. In the second embodiment, the maximum value and the minimum value are acquired from the TTL values assigned to the respective records belonging to the same page, and based on the ratio to one or both of the acquired maximum value and minimum value, the representative value is obtained. Set the TTL value. For example, as shown in FIG. 8, the
ここで、第2の実施例において、1レコードごとに3レコードまで書き込んだ場合の代表TTL値T(P)の設定例について説明する。例えば、第1の実施例において、あるページに最初のレコードR1が書き込まれた場合、インデックス管理部120は、Tmin=0とし、TmaxをレコードR1のTTL値(T(R1))とする。また、インデックス管理部120は、代表TTL値T(P)=T(R1)とする。
Here, an example of setting the representative TTL value T (P) when up to three records are written for each record in the second embodiment will be described. For example, in the first embodiment, when the first record R1 is written in a certain page, the
次に、同一ページに2番目のレコードR2が書き込まれた場合、インデックス管理部120は、TminをレコードR1およびR2のTTL値のうち最も早い方に設定する(Tmin=min(T(R1),T(R2))。また、インデックス管理部120は、TmaxをレコードR1およびR2のTTL値のうち最も遅い方に設定する(Tmax=max(T(R1),T(R2))。
Next, when the second record R2 is written on the same page, the
また、第2の実施例において、インデックス管理部120は、ページ内のTmaxとTminとの差分を算出し、その差分値に閾値aを乗じた値を、Tminに加算することで代表TTL値T(P)を計算する(T(P)=a×(Tmax−Tmin)+Tmin)。また、インデックス管理部120は、上述したレコードR2の書き込み時に使用した情報を付加情報Dして第2インデックス150Cに保存する。このときの付加情報は、TminおよびTmaxである。
In the second embodiment, the
更に、同一ページに3番目のレコードR3を書き込む場合、インデックス管理部120は、レコードR3のTTL値T(R3)と、第2インデックス150Cから取得したTmin、Tmaxとを比較して、新たなTminとTmaxとを決定する。また、インデックス管理部120は、レコードR3を登録したページの代表TTL値T(P)を上述した計算式を用いて再計算する。以下、レコードが書き込まれるごとに同様の処理を行う。なお、インデックス管理部120は、代表TTL値T(P)の計算において、上述したTTL値の最小値または最大値のうち、いずれかの値を任意に設定してもよい。
Furthermore, when writing the third record R3 on the same page, the
このように、第2の実施例では、ページ内における全レコードのTTL値の最大値と最小値とのうち一方または双方に基づいて、代表TTL値T(P)を設定することで、ページ内の無効レコードを適切なタイミングで削除することができる。したがって、適切なタイミングでガベージコレクション処理を実施することができるため、処理負荷を軽減することができる。 As described above, in the second embodiment, the representative TTL value T (P) is set on the basis of one or both of the maximum value and the minimum value of the TTL values of all the records in the page. Invalid records can be deleted at an appropriate time. Therefore, since the garbage collection process can be performed at an appropriate timing, the processing load can be reduced.
(代表TTL値を設定する第3の実施例)
次に、代表TTL値を設定する第3の実施例について説明する。図9は、代表TTL値を設定する第3の実施例を示す図である。第3の実施例では、同一のページに属するそれぞれのレコードのサイズ(レコード長)に基づいて代表TTL値T(P)を設定する。例えば、インデックス管理部120は、そのページにおける各レコードのレコード長とTTL値との積の総和S(P)、および各レコードのレコード長の総和L(P)を計算し、代表TTL値T(P)をS(P)/L(P)として設定する。また、第3の実施例における付加情報D(P)は、L(P)とする。
(Third embodiment for setting a representative TTL value)
Next, a third embodiment for setting the representative TTL value will be described. FIG. 9 is a diagram showing a third embodiment for setting a representative TTL value. In the third embodiment, the representative TTL value T (P) is set based on the size (record length) of each record belonging to the same page. For example, the
例えば、第3の実施例において、レコード長L(R)、TTL値T(R)のレコードを追加する場合、インデックス管理部120は、新しいページ代表有効期限T(P’)を、「T(P’)=S(P’)/L(P’)=(T(P)×D(P)+T(R)×L(R))/(D(P)+L(R))」として計算する。ここでの付加情報D(P)は、L(P)と等価であるため、そのページ内の全てのレコードのレコード長の総和を保持している。なお、上記の計算式において、初回のレコード追加時は、D(P)=0として計算される。
For example, in the third embodiment, when adding a record having a record length L (R) and a TTL value T (R), the
ここで、第3の実施例において、1レコードごとに3レコードまで書き込んだ場合の代表TTL値T(P)の設定例について説明する。第1の実施例において、あるページに最初のレコードR1(レコード長L(R1))が書き込まれた場合、インデックス管理部120は、代表TTL値T(P)をレコードR1のTTL値T(R1)とする。また、インデックス管理部120は、上述したレコードR1の書き込み時に使用した情報を付加情報D(P)として第2インデックス150Cに保存する。このときの付加情報D(P)は、L(R1)である。
Here, an example of setting the representative TTL value T (P) when up to three records are written for each record in the third embodiment will be described. In the first embodiment, when the first record R1 (record length L (R1)) is written on a page, the
次に、同一ページに、2番目のレコードR2(レコード長L(R2)(例えば、L(R2)>L(R1)))が書き込まれた場合、インデックス管理部120は、代表TTL値T(P)、これまで追加したレコード長の総和D(P)、レコードR2のTTL値T(R2)、およびレコード長L(R2)を用いて、計算した値T(P’)で代表TTL値T(P)を再設定する(T(P’)=(T(P)×D(P)+T(R2)×L(R2))/(D(P)+L(R2)))。なお、付加情報D(P)は、例えば第2インデックス150Cから取得される。また、レコードR2の書き込み後の付加情報D(P)は、「D(P)=D(P)+L(R2)」として設定される。すなわち、図9に示すように、再設定されたページ有効期限T(P’)は、T(P)とT(R2)をL(R2):L(P)に内分する値として設定される。
Next, when the second record R2 (record length L (R2) (for example, L (R2)> L (R1))) is written on the same page, the
更に、同一ページに新しいレコードR3(レコード長L(R3))が書き込まれた場合、インデックス管理部120は、代表TTL値T(P)、これまで追加したレコード長の総和D(P)、レコードR3のTTL値T(R3)、およびレコード長L(R3)を用いて、上述した計算式によって同様にT(P’)を計算し、計算した値で代表TTL値T(P)を再設定する。以下、レコードが書き込まれるごとに同様の処理を行う。
Furthermore, when a new record R3 (record length L (R3)) is written on the same page, the
なお、第3の実施例においては、例えば、ユーザ等により指定可能な係数(重み)を用いて計算してもよい。例えば、インデックス管理部120は、係数βを設定し、設定した計数βをレコードのTTL値T(R)に付加して代表TTL値T(P)を計算してもよい(β×T(R))。この場合、インデックス管理部120は、新しいページ代表有効期限T(P’)を「T(P’)=(T(P)×D(P)+β×T(R)×L(R))/(D(P)+L(R))」として計算する。
In the third embodiment, for example, calculation may be performed using a coefficient (weight) that can be specified by the user or the like. For example, the
これにより、インデックス管理部120は、レコードサイズと、有効期限とのうち、いずれかの値を優先させることができる。例えば、上述の例において、係数βを、β>1とした場合には有効期限を優先させることができ、β<1の場合にはレコード長を優先させることができる。
Thereby, the
このように、第3の実施例では、ページ内における各レコードのレコードサイズに基づいて、代表TTL値T(P)を設定することで、例えばレコードサイズが大きいレコードが多いページを優先して、ガベージコレクション処理を実施することができる。 As described above, in the third embodiment, by setting the representative TTL value T (P) based on the record size of each record in the page, for example, a page with many records having a large record size is given priority. A garbage collection process can be performed.
なお、本実施形態における代表TTL値の設定例は、上述した第1〜第3の実施例に限定されるものではなく、例えば各実施例のうち、全部または一部を他の実施例と組み合わせてもよい。また、インデックス管理部120は、同一のページに属するそれぞれのレコードのうち、ランダムに選択したレコードのTTL値を代表TTL値に設定してもよい。また、インデックス管理部120は、クライアント300からの指示やデータの種類、用途等に応じて各実施例を動的に変更させてもよい。上述した各実施例では、インデックス管理部120が代表TTL値の設定を行うが、これに代えてレコード管理部110が行ってもよい。
In addition, the setting example of the representative TTL value in the present embodiment is not limited to the first to third examples described above, and for example, all or a part of each example is combined with another example. May be. The
次に、ガベージコレクション処理における無効レコードの削除の具体例について、図を用いて説明する。図10は、削除対象ページの抽出例を説明するための図である。なお、図10(A)は、レコード管理情報150Aで管理される記憶装置200に記憶されたレコードの一例を示す。図10(A)の例では、各ページ(ID(P))に記憶されたレコードが示されている。また、図10(B)は、第1インデックス150Bを示し、図10(C)は、第2インデックス150Cを示す。
Next, a specific example of deleting invalid records in the garbage collection process will be described with reference to the drawings. FIG. 10 is a diagram for explaining an example of extracting a deletion target page. FIG. 10A shows an example of a record stored in the
なお、以下の例では、便宜上、レコード管理情報150A内にある複数のページのうち、ページID(P)=1〜3のそれぞれに含まれるレコード例を示すが、レコード数については、これに限定されるものではない。また、代表TTL値の設定については、上述した第1の実施例における設定手法を用いるものとし、無効レコードの割合の閾値a=0.3とする。また、現在の時刻を「1/20 22:30:00」として説明する。
In the following example, for convenience, a record example included in each of page IDs (P) = 1 to 3 among a plurality of pages in the
図10(A)の例では、ページID(P)=1として、Record1−1〜Record1−6が示されているが、レコード数については、これに限定されない。ここで、Record1−1〜Record1−4は、無効レコードであり、Record1−5およびRecord1−6は、有効期限を徒過していないレコード(有効レコード)であるとする。 In the example of FIG. 10A, Record 1-1 to Record 1-6 are shown with page ID (P) = 1, but the number of records is not limited to this. Here, it is assumed that Records 1-1 to Records 1-4 are invalid records, and Records 1-5 and Records 1-6 are records that have not expired (valid records).
インデックス管理部120は、第1の実施例における設定手法により、Record1−5に設定されたTTL値を、代表TTL値T(P)に設定したとする。この場合、インデックス管理部120は、Record1−5に設定されたTTL値を、ページID(ID(P))と対応付けて第1インデックス150Bに出力する。また、インデックス管理部120は、上述した代表TTL値T(P)と、ページID(ID(P))と、代表TTL値の設定時に用いた情報を含む付加情報D(P)とを対応付けて第2インデックス150Cに出力する。
Assume that the
また、ページID(P)=2において、Record2−1〜Record2−3は、無効レコードであり、Record2−4〜Record2−6は、有効レコードであるとする。また、インデックス管理部120は、第1の実施例における設定手法により、Record2−3に設定されたTTL値を、代表TTL値T(P)に設定したとする。この場合、インデックス管理部120は、Record2−3に設定されたTTL値を、ページID(ID(P))と対応付けて第1インデックス150Bに出力する。また、インデックス管理部120は、上述した代表TTL値T(P)と、ページID(ID(P))と、代表TTL値の設定時に用いた情報を含む付加情報D(P)とを対応付けて第2インデックス150Cに出力する。
Further, in the page ID (P) = 2, it is assumed that Records 2-1 to 2-3 are invalid records, and Records 2-4 to 2-6 are valid records. Further, it is assumed that the
また、ページID(P)=3において、Record3−1〜Record3−5は、無効レコードであり、Record3−6は、有効レコードであるとする。また、インデックス管理部120は、第1の実施例における設定手法により、Record3−5に設定されたTTL値を、代表TTL値T(P)に設定したとする。この場合、インデックス管理部120は、Record3−5に設定されたTTL値を、ページID(ID(P))と対応付けて第1インデックス150Bに出力する。また、インデックス管理部120は、上述した代表TTL値T(P)と、ページID(ID(P))と、代表TTL値の設定時に用いた情報を含む付加情報D(P)とを対応付けて第2インデックス150Cに出力する。
In addition, in the page ID (P) = 3, it is assumed that Records 3-1 to 3-5 are invalid records and Record 3-6 is a valid record. Further, it is assumed that the
第1インデックス150Bには、上述した各ページを代表する代表TTL値(T(P))と、ページID(ID(P))とが対応付けられて保存される。また、第1インデックス150Bは、例えば代表TTL値ごとに昇順にソートされる。
In the
また、第2インデックス150Cには、ページID(ID(P))を基準に、代表TTL値T(P)と、付加情報D(P)とが対応付けられて保存される。付加情報A1〜A3の内容としては、例えば上述したTmin、Tmax、C1、C2であるが、これに限定されるものではない。また、第2インデックス150Cは、例えばページID(P)ごとに昇順にソートされる。
The
無効レコード削除部130は、上述した第1インデックス150Bを用いて削除対象のページを抽出し、抽出したページ内に存在する有効期限を徒過したレコードの削除を行う。例えば、図10(B)の例の場合、現在時刻「1/20 22:30:00」より前の代表TTL値を有するページIDは、ID(P)=2および3となる。したがって、無効レコード削除部130は、ID(P)=2および3に含まれるレコードから無効レコードを削除する。
The invalid
図11は、削除処理実行後の各ページの様子とインデックスの更新例を示す図である。図11の例では、上述した図10の例のうち、ID(P)=2および3に対して無効レコードを削除した各ページの様子と、無効レコードの削除後に、第1インデックス150Bおよび第2インデックス150Cの再生成を行った例を示す。
FIG. 11 is a diagram illustrating a state of each page after execution of the deletion process and an index update example. In the example of FIG. 11, in the example of FIG. 10 described above, the state of each page in which the invalid record is deleted for ID (P) = 2 and 3, and the
図11(A)において、ID(P)=2には、Record2−4〜Record2−6が、有効レコードとして存在する。この場合、インデックス管理部120は、上述した第1の実施例に示す設定手法により、Record2−5に設定されたTTL値を代表TTL値T(P)として設定し、ページID(ID(P))とともに第1インデックス150Bに出力する。また、インデックス管理部120は、上述した代表TTL値T(P)と、ページID(ID(P))と、付加情報D(P)とを、第2インデックス150Cに出力する。
In FIG. 11A, Record2-4 to Record2-6 exist as valid records at ID (P) = 2. In this case, the
また、ID(P)=3には、Record3−6が、有効レコードとして存在する。この場合、ページ内のレコードが1つしか存在しないため、インデックス管理部120は、Record3−6に設定されたTTL値を代表TTL値T(P)として、ページID(ID(P))とともに第1インデックス150Bに出力する。また、インデックス管理部120は、上述した代表TTL値と、ページIDと、付加情報D(P)とを、第2インデックス150Cに出力する。
In addition, Record 3-6 exists as a valid record at ID (P) = 3. In this case, since there is only one record in the page, the
無効レコード削除部130は、新たに生成した第1インデックス150Bおよび第2インデックス150Cに基づいて、所定のタイミングで無効レコードの削除を行うページを抽出し、抽出したページに対して有効期限切れのレコードの削除を行う。
The invalid
また、図12は、ページにレコードが追加された場合のインデックスの生成例を示す図である。図12では、図10に示す各ページのうち、ページID(P)=1に対して新規に1つのレコード(Record1−7)を追加した例を示す。 FIG. 12 is a diagram illustrating an example of index generation when a record is added to a page. FIG. 12 shows an example in which one record (Record 1-7) is newly added to page ID (P) = 1 among the pages shown in FIG.
この場合、インデックス管理部120は、レコードの追加されたページID(P)=1に対し、代表TTL値の再計算を行い、計算された代表TTL値に基づいて、第1インデックス150Bおよび第2インデックス150Cを更新する。なお、ID(P)=2および3については、図10と同じ内容であるため、第1インデックス150Bおよび第2インデックス150Cに含まれる対象のデータについては更新されず、ID(P)=1に対応するデータに対して更新が行われる。
In this case, the
例えば、インデックス管理部120は、上述した第1の実施例の設定手法により、新たに追加したレコード(Record1−7)のTTL値を代表TTL値として設定したとする。この場合、インデックス管理部120は、第1インデックス150Bおよび第2インデックス150CにおけるID(P)=1における管理情報を更新する。これにより、無効レコード削除部130は、更新された第1インデックス150Bを用いて無効レコードの削除を行うページを抽出することができ、抽出したページに含まれる無効レコードを削除することができる。なお、図12の例では、現在時刻を「1/20 22:30:00」とした場合、削除対象のページは、ID(P)=1〜3となる。
For example, it is assumed that the
次に、データベース管理装置100の各種処理内容について、フローチャートを用いて具体的に説明する。図13は、データベース管理装置100におけるレコード書き込み処理(新規登録)の一例を示すフローチャートである。図13の例において、レコード管理部110は、クライアント300からレコードの書き込み指示を受け付ける(ステップS100)。
Next, various processing contents of the
次に、レコード管理部110は、レコードに関する管理情報を記憶部150に記憶されたレコード管理情報150Aに書き込む(ステップS102)。なお、ステップS102の処理では、レコード管理部110は、そのレコードを記憶したテーブルおよびページの情報をレコード管理情報150Aに書き込む。管理情報には、上述したようにページIDと、レコードIDと、必要に応じてTTL値とを含む。
Next, the
次に、レコード管理部110は、レコードを記憶装置200に書き込む(ステップS104)。ステップS104では、レコード管理部110は、レコード管理情報150AのページIDやレコードIDに対応して割り当てられたデータ記憶領域210の領域にレコードを書き込む。なお、レコード管理部110は、記憶装置200に対してレコードを書き込ませるコマンドを発行する。上述したステップS102およびステップS104の処理は、逆の順序で行ってもよく、同時に行ってもよい。
Next, the
次に、レコード管理部110は、レコードの書き込みに成功したか否かを判定する(ステップS106)。レコードの書き込みに成功した場合、レコード管理部110は、書き込まれたレコードにTTL値が設定されているか否かを判定する(ステップS108)。TTL値が設定されている場合、レコード管理部110は、書き込んだレコードに割り当てたページIDと、レコードIDと、TTL値とを、インデックス生成指示とともにインデックス管理部120に通知し、インデックス管理部120におけるインデックス生成処理を実行する(ステップS110)、インデックス生成処理の詳細については、後述する。
Next, the
ステップS108の処理において、TTL値が設定されていない場合、またはステップS110の処理後、レコード管理部110は、レコードの書き込みが成功したことを示す情報をクライアント300に出力する(ステップS112)。また、上述したステップS106の処理において、レコードの書き込みに成功しなかった場合、レコード管理部110は、書き込みが失敗した原因に対応するエラー情報をクライアント300に出力する(ステップS114)。書き込みが失敗した原因としては、例えば記憶装置200の空き容量が不足している場合があるが、これに限定されるものではない。
When the TTL value is not set in the process of step S108, or after the process of step S110, the
図14は、インデックス生成処理の一例を示すフローチャートである。図14の例において、インデックス管理部120は、インデックス生成指示を受け付ける(ステップS200)。インデックス管理部120は、インデックス生成指示とともに受け付けたページIDが記憶部150に記憶された第1インデックス150Bに存在するか否かを判定する(ステップS202)。
FIG. 14 is a flowchart illustrating an example of the index generation process. In the example of FIG. 14, the
ページIDが第1インデックス150Bに存在する場合、第1インデックス150Bの対象ページに対応するインデックスを更新する(ステップS204)。なお、ステップS204の処理では、記憶部150に記憶された第2インデックス150Cの付加情報を用いてインデックスを更新してもよい。また、第1インデックス150Bを更新した後、第2インデックス150Cを更新してもよい。
When the page ID exists in the
また、ページIDが第1インデックス150Bに存在しない場合、第1インデックス150Bに、該当ページIDに対するインデックスを新規作成する(ステップS206)。作成された第1インデックス150Bは、記憶部150に記憶される。なお、ステップS206の処理では、第1インデックス150Bを新規作成した後、第2インデックス150Cを新規作成してもよい。この場合、作成された第2インデックス150Cも、記憶部150に記憶される。
If the page ID does not exist in the
次に、データベース管理装置100におけるレコード書き込み処理(更新)の一例について、フローチャートを用いて説明する。図15は、データベース管理装置100におけるレコード書き込み処理(更新)の一例を示すフローチャートである。なお、以下の説明では、上述した書き込み処理(新規登録)と区別するため、更新に関する書き込み指示を更新指示として説明する。
Next, an example of record write processing (update) in the
図15の例において、レコード管理部110は、レコードの更新指示を受け付けると、(ステップS300)、記憶部150に記憶されたレコード管理情報150Aから対象レコードの管理情報を抽出し、抽出した管理情報を更新する(ステップS302)。なお、ステップS302の処理では、例えばTTL値が更新された場合には、レコード内のTTL値を更新する。また、レコード管理部110は、記憶装置200に記憶されたレコードを更新する。(ステップS304)。なお、上述したステップS302およびステップS304の処理は、逆の順序で行ってもよく、同時に行ってもよい。
In the example of FIG. 15, when the
次に、レコード管理部110は、レコードの更新に成功したか否かを判定する(ステップS306)。レコードの更新に成功した場合、レコード管理部110は、更新したレコードにTTL値が設定されていたか否かを判定する(ステップS308)。TTL値が設定されていた場合、レコード管理部110は、そのレコードが属するページID、レコードID、およびTTL値を、インデックス管理部120に出力し、上述したインデックス生成処理を行う(ステップS310)。
Next, the
ステップS308の処理において、更新したレコードにTTL値が設定されていない場合、またはステップS310の処理後、レコード管理部110は、レコードの更新が成功したことを示す情報をクライアント300に出力する(ステップS312)。また、上述したステップS306の処理において、削除が成功しなかった場合、レコード管理部110は、削除が失敗した原因に対応するエラー情報をクライアント300に出力する(ステップS314)。更新が失敗した原因としては、例えば、記憶装置200が排他制御されていてアクセスできない場合があるが、これに限定されるものではない。
In the process of step S308, when the TTL value is not set in the updated record or after the process of step S310, the
次に、データベース管理装置100におけるレコード読み出し処理についてフローチャートを用いて説明する。図16は、データベース管理装置100におけるレコード読み出し処理の一例を示すフローチャートである。
Next, a record reading process in the
図16の例において、レコード管理部110は、クライアント300からのレコードの読み出し指示を受け付けると(ステップS400)、記憶部150に記憶されたレコード管理情報150Aを参照し、対象レコードの管理情報を取得する(ステップS402)。
In the example of FIG. 16, when the
次に、レコード管理部110は、対象レコードの管理情報の取得に成功したか否かを判定する(ステップS404)。管理情報の取得に成功した場合、レコード管理部110は、その対象レコードのTTL値を取得し(ステップS406)、現在時刻がTTL値を超えているか否かを判定する(ステップS408)。
Next, the
現在時刻がTTL値を超えている場合、そのレコードは有効期限を徒過しているため、レコード管理部110は、レコードが存在しない旨のエラー情報をクライアント300に出力する(ステップS410)。また、現在時刻がTTL値を超えていない場合、有効レコードであるため、レコード管理部110は、記憶装置200から対象レコードを取得し、取得した対象レコードをクライアント300に出力する(ステップS412)。
If the current time exceeds the TTL value, the record has passed the expiration date, and the
また、ステップS404の処理において、管理情報の取得に成功しなかった場合、失敗した原因に基づくエラー情報をクライアント300に出力する(ステップS414)。管理情報の取得が失敗した原因としては、例えばレコード管理情報150Aに対象レコードの管理情報が存在していない場合があるが、これに限定されるものではない。
If the management information is not successfully acquired in the process of step S404, error information based on the cause of the failure is output to the client 300 (step S414). For example, the management information of the target record may not exist in the
次に、データベース管理装置100におけるレコード削除処理の一例についてフローチャートを用いて説明する。図17は、データベース管理装置100におけるレコード削除処理の一例を示すフローチャートである。なお、図17の例は、例えばガベージコレクション処理における周期的なレコードの削除ではなく、クライアント300からの削除指示に基づいて、対応するレコードを削除する処理である。この処理において、削除されるレコードは、有効レコードでも無効レコードでもよい。
Next, an example of record deletion processing in the
図17の例において、レコード管理部110は、レコードの削除指示を受け付けると(ステップS500)、記憶部150に記憶されたレコード管理情報150Aを参照し、対象レコードの管理情報を削除する(ステップS502)。また、レコード管理部110は、対象レコードを記憶装置200から削除する(ステップS504)。なお、上述したステップS502およびステップS504の処理は、逆の順序で行ってもよく、同時に行ってもよい。
In the example of FIG. 17, when receiving a record deletion instruction (step S500), the
次に、レコード管理部110は、レコードの削除に成功したか否かを判定する(ステップS506)。レコードの削除に成功した場合、レコード管理部110は、削除したレコードにTTL値が設定されていたか否かを判定する(ステップS508)。TTL値が設定されていた場合、そのレコードが属するページID、レコードID、およびTTL値を、インデックス管理部120に出力し、上述したインデックス生成処理を行う(ステップS510)。
Next, the
ステップS508の処理において、TTL値が設定されていない場合、またはステップS510の処理後、レコード管理部110は、レコードの削除が成功したことを示す情報をクライアント300に出力する(ステップS512)。また、上述したステップS506の処理において、削除が成功しなかった場合、レコード管理部110は、削除が失敗した原因に対応するエラー情報をクライアント300に出力する(ステップS514)。削除が失敗した原因としては、例えば対象レコードがすでに削除されている場合があるが、これに限定されるものではない。
If the TTL value is not set in the process of step S508, or after the process of step S510, the
次に、データベース管理装置100における無効レコード削除処理についてフローチャートを用いて説明する。図18は、データベース管理装置100における無効レコード削除処理の一例を示すフローチャートである。図18では、ガベージコレクション処理のように、周期的に行われる無効レコードの削除処理の一例を示す。
Next, the invalid record deletion process in the
図18の例において、無効レコード削除部130は、第1インデックス150Bにエントリが存在するか否かを判定する(ステップS600)。なお、エントリとは、第1インデックス150Bに含まれる「代表TTL値」と「ページID」との組を含む情報である。第1インデックス150Bにエントリが存在する場合、無効レコード削除部130は、第1インデックス150Bの中からエントリを1つ取得し(ステップS602)、取得したエントリの代表TTL値を取得する(ステップS604)。
In the example of FIG. 18, the invalid
次に、無効レコード削除部130は、現在時刻が代表TTL値を超えているか否かを判定する(ステップS606)。現在時刻が代表TTL値を超えている場合、無効レコード削除部130は、レコード管理情報150Aを参照し、そのエントリに対応するページIDに属する全レコードをスキャンし、無効レコードを削除する(ステップS608)。また、無効レコード削除部130は、記憶装置200に記憶された対象レコードを削除する(ステップS610)。なお、上述したステップS608およびステップS610の処理は、逆の順序で行ってもよく、同時に行ってもよい。
Next, the invalid
次に、無効レコード削除部130は、削除されたレコードが属していたページID、そのページIDに属するレコードのレコードIDおよびTTL値を、インデックス管理部120に出力し、インデックス管理部120により、インデックスを更新させる(ステップS612)。ステップS612の処理では、例えば上述したインデックス生成処理と同様に、第1インデックス150Bおよび第2インデックス150Cを更新する。
Next, the invalid
ステップS606の処理において、現在時刻が代表TTL値を超えていない場合、または、ステップS612の処理後、無効レコード削除部130は、第1インデックス150B内の全てのエントリに対して処理を行ったか否かを判定する(ステップS614)。
In the process of step S606, if the current time does not exceed the representative TTL value, or after the process of step S612, the invalid
全てのエントリに対して処理されていない場合、無効レコード削除部130は、ステップS602の処理に戻り、まだ処理されていない他のエントリを1つ取得して、以降の処理を行う。また、無効レコード削除部130は、第1インデックス150Bにおいて、スエントリが存在しない場合、また、ステップS614の処理において、第1インデックス150B内の全てのエントリに対して処理された場合、本フローチャートの処理を終了する。また、ステップS600において、第1インデックス150Bにエントリが存在しない場合にも、本フローチャートの処理を終了する。また、図18の例において、1回の削除処理で削除可能なレコードの最大数が設定される場合、レコードの削除数が最大数に達した時点で、無効レコードの削除処理を終了してもよい。これにより、無効レコード削除部130は、無効レコードの削除処理に要する時間を調整することができる。
If all the entries have not been processed, the invalid
以上説明した少なくとも一つの実施形態によれば、記憶装置200に対してレコードの書き込みまたは読み出しを行うレコード管理部110と、レコード管理部110が扱うレコードに対してそれぞれ割り当てられた有効期限に基づいて、レコードをグループ化したデータグループの代表有効期限を決定するインデックス管理部120と、インデックス管理部120により決定された代表有効期限に基づいて、削除対象のデータグループを抽出し、抽出した削除対象のデータグループに含まれるデータのうち有効期限を徒過したデータを削除する無効レコード削除部130とを持つことにより、無効レコードの削除に関する処理負荷を軽減することができる。
According to at least one embodiment described above, based on the
具体的には、少なくとも一つの実施形態によれば、無効レコードがデータグループ内にそれほど多くない場合(閾値以下の場合)には、無効レコードの物理的な削除を遅延させることができる。また、少なくとも一つの実施形態によれば、ページ等のデータグループ単位でインデックスのエントリを管理するため、インデックスのデータ量を軽減することができる。また、少なくとも一つの実施形態によれば、ページ内にレコードが有効期限順に整列されていない場合でも、スキャン対象のページを限定することができ、効率的に無効レコードを削除することができる。 Specifically, according to at least one embodiment, when there are not many invalid records in the data group (when the number is equal to or less than a threshold value), physical deletion of invalid records can be delayed. Also, according to at least one embodiment, index entries are managed in units of data groups such as pages, so that the amount of index data can be reduced. Further, according to at least one embodiment, even when records are not arranged in the order of expiration date, pages to be scanned can be limited, and invalid records can be efficiently deleted.
なお、上述したデータベース管理システム1は、複数の分散化されたデータベース管理装置100で構成された場合でも、上述した各種処理と同様の処理を行うことができ、それによって同様の効果を得ることができる。
The above-described
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。 Although several embodiments of the present invention have been described, these embodiments are presented by way of example and are not intended to limit the scope of the invention. These embodiments can be implemented in various other forms, and various omissions, replacements, and changes can be made without departing from the spirit of the invention. These embodiments and their modifications are included in the scope and gist of the invention, and are also included in the invention described in the claims and the equivalents thereof.
1…データベース管理システム、100…データベース管理装置、110…レコード管理部(データ処理部)、120…インデックス管理部(代表有効期限決定部)、130…無効レコード削除部(削除部)、140…通信部、150…記憶部、200…記憶装置、210…データ記憶領域、300…クライアント
DESCRIPTION OF
Claims (9)
前記データ処理部が扱うデータに対してそれぞれ割り当てられた有効期限に基づいて、前記データをグループ化したデータグループの代表有効期限を決定する代表有効期限決定部と、
前記代表有効期限決定部により決定された代表有効期限に基づいて、削除対象の前記データグループを抽出し、前記抽出した削除対象の前記データグループに含まれるデータのうち前記有効期限を徒過したデータを削除する削除部と、
を備えるデータベース管理装置。 A data processing unit for writing or reading data to or from the storage device;
A representative expiration date determination unit that determines a representative expiration date of a data group in which the data is grouped based on an expiration date assigned to each of the data handled by the data processing unit;
Based on the representative expiration date determined by the representative expiration date determination unit, the data group to be deleted is extracted, and the data that has passed the expiration date among the data included in the extracted data group to be deleted Delete part to delete,
A database management device comprising:
前記削除部は、前記索引情報に基づいて、前記代表有効期限を徒過したデータグループを抽出する、
請求項1に記載のデータベース管理装置。 The representative expiration date determination unit generates index information for managing the data group and the representative expiration date of the data group in association with each other,
The deletion unit extracts a data group that has passed the representative expiration date based on the index information.
The database management device according to claim 1.
前記代表有効期限決定部は、前記データグループ内のデータが更新された場合に、前記付加情報に基づいて前記代表有効期限を再生成する、
請求項2に記載のデータベース管理装置。 The index information further includes additional information for regenerating the representative expiration date,
The representative expiration date determining unit regenerates the representative expiration date based on the additional information when data in the data group is updated.
The database management device according to claim 2.
請求項2または3に記載のデータベース管理装置。 The representative expiration date determining unit updates the index information when the data processing unit writes or deletes data in the storage device.
The database management apparatus according to claim 2 or 3.
請求項1から4のうち、いずれか1項に記載のデータベース管理装置。 The representative expiration date determining unit determines the representative expiration date of the data group based on a value obtained by performing statistical processing on a part or all of the expiration dates assigned to the respective data belonging to the same data group. Set,
The database management device according to any one of claims 1 to 4.
請求項1から5のうち、いずれか1項に記載のデータベース管理装置。 The representative expiration date determining unit acquires the maximum value and minimum value of the expiration date assigned to each data belonging to the same data group, and based on one or both of the acquired maximum value and minimum value, Set a representative expiry date for the data group,
The database management device according to any one of claims 1 to 5.
請求項1から6のうち、いずれか1項に記載のデータベース管理装置。 The representative expiration date determination unit sets the representative expiration date of the data group based on the expiration date assigned to each data belonging to the same data group and the size of each data in the data group;
The database management apparatus according to any one of claims 1 to 6.
記憶装置に対してデータの書き込みまたは読み出しを行い、
前記書き込みまたは読み出しを行うデータに対してそれぞれ割り当てられた有効期限に基づいて、前記データをグループ化したデータグループの代表有効期限を決定し、
決定された前記代表有効期限に基づいて、削除対象の前記データグループを抽出し、前記抽出した削除対象の前記データグループに含まれるデータのうち前記有効期限を徒過したデータを削除する、
データベース管理方法。 The computer of the database management device
Write or read data to the storage device,
Based on the expiration date assigned to each of the data to be written or read, determine a representative expiration date of a data group in which the data is grouped,
Extracting the data group to be deleted based on the determined representative expiration date, and deleting the data that has passed the expiration date from the data included in the extracted data group to be deleted,
Database management method.
記憶装置に対してデータの書き込みまたは読み出しを行わせ、
前記書き込みまたは読み出しを行うデータに対してそれぞれ割り当てられた有効期限に基づいて、前記データをグループ化したデータグループの代表有効期限を決定させ、
決定された前記代表有効期限に基づいて、削除対象の前記データグループを抽出し、前記抽出した削除対象の前記データグループに含まれるデータのうち前記有効期限を徒過したデータを削除させる、
データベース管理プログラム。 In the computer of the database management device,
Write or read data to the storage device,
Based on the validity period assigned to each of the data to be written or read, the representative validity period of the data group in which the data is grouped is determined,
Based on the determined representative expiration date, the data group to be deleted is extracted, and data that has passed the expiration date is deleted from the data included in the extracted data group to be deleted.
Database management program.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016131596A JP6181247B1 (en) | 2016-07-01 | 2016-07-01 | Database management apparatus, database management method, and database management program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016131596A JP6181247B1 (en) | 2016-07-01 | 2016-07-01 | Database management apparatus, database management method, and database management program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6181247B1 true JP6181247B1 (en) | 2017-08-16 |
JP2018005552A JP2018005552A (en) | 2018-01-11 |
Family
ID=59604908
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016131596A Active JP6181247B1 (en) | 2016-07-01 | 2016-07-01 | Database management apparatus, database management method, and database management program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6181247B1 (en) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109359030B (en) * | 2018-09-04 | 2023-05-26 | 中国平安人寿保险股份有限公司 | Method and device for monitoring failure object of test library, computer device and storage medium |
US10963454B2 (en) | 2018-09-24 | 2021-03-30 | Salesforce.Com, Inc. | System and method for bulk removal of records in a database |
US11163737B2 (en) * | 2018-11-21 | 2021-11-02 | Google Llc | Storage and structured search of historical security data |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006350599A (en) * | 2005-06-15 | 2006-12-28 | Hitachi Ltd | Storage system and data migration method thereof |
US20150113206A1 (en) * | 2013-10-18 | 2015-04-23 | Sandisk Enterprise Ip Llc | Biasing for Wear Leveling in Storage Systems |
JP2015172862A (en) * | 2014-03-12 | 2015-10-01 | 日本電気株式会社 | Information processing device for controlling data life cycle, data life cycle control method, and program for the same |
JP2015185162A (en) * | 2014-03-25 | 2015-10-22 | 横河電機株式会社 | Data storage management apparatus and data storage management method |
-
2016
- 2016-07-01 JP JP2016131596A patent/JP6181247B1/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006350599A (en) * | 2005-06-15 | 2006-12-28 | Hitachi Ltd | Storage system and data migration method thereof |
US20150113206A1 (en) * | 2013-10-18 | 2015-04-23 | Sandisk Enterprise Ip Llc | Biasing for Wear Leveling in Storage Systems |
JP2015172862A (en) * | 2014-03-12 | 2015-10-01 | 日本電気株式会社 | Information processing device for controlling data life cycle, data life cycle control method, and program for the same |
JP2015185162A (en) * | 2014-03-25 | 2015-10-22 | 横河電機株式会社 | Data storage management apparatus and data storage management method |
Also Published As
Publication number | Publication date |
---|---|
JP2018005552A (en) | 2018-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI702506B (en) | System, machine readable medium, and machine-implemenated method for merge tree garbage metrics | |
TWI682274B (en) | Key-value store tree | |
US20200349139A1 (en) | Stream selection for multi-stream storage devices | |
US20200334294A1 (en) | Merge tree modifications for maintenance operations | |
US11238098B2 (en) | Heterogenous key-value sets in tree database | |
US10642515B2 (en) | Data storage method, electronic device, and computer non-volatile storage medium | |
CN108932236B (en) | File management method and device | |
JP6181247B1 (en) | Database management apparatus, database management method, and database management program | |
JP6527462B2 (en) | Compression device, compression method, recording medium and decompression device | |
JP2012256318A (en) | Method and device for optimally processing n sort query in multi-range scan | |
JP2010061518A (en) | Apparatus and method for storing data and program | |
US20130218851A1 (en) | Storage system, data management device, method and program | |
CN110990394B (en) | Method, device and storage medium for counting number of rows of distributed column database table | |
JP4508157B2 (en) | Index file search device, search method, search program, and recording medium recording the same | |
CN113656411B (en) | Method and device for storing graph data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20170620 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170719 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 6181247 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |