【文献】
野首 寛高,UNIXプログラミング No.6,Personal UNIX,株式会社毎日コミュニケーションズ,2000年 7月31日,第6号,pp.148-153
(58)【調査した分野】(Int.Cl.,DB名)
前記計算機は、前記データが他のデータに正常に関連付けられているか否かの検査を複数のデータで実行する場合には、一のデータの検査が完了したか否かにかかわらず、他のデータの検査を開始することを特徴とする請求項1に記載の計算機システム。
前記スケジュール待ちキューには、第1のスケジュール待ちキューと、当該第1のスケジュール待ちキューよりも優先して要求が処理される第2のスケジュール待ちキューと、が含まれ、
前記入出力制御部は、
前記記憶領域に格納されたデータを読み書きする要求を受け付けた場合には、当該要求を前記第1のスケジュール待ちキューに格納し、
前記検査の実行要求を受け付けた場合には、当該要求を前記第2のスケジュール待ちキューに格納することを特徴とする請求項4に記載の計算機システム。
前記スケジュール待ちキューには、第1のスケジュール待ちキューと、当該第1のスケジュール待ちキューよりも優先してタスクが実行される第2のスケジュール待ちキューと、が含まれ、
前記入出力制御部は、
前記記憶領域に格納されたデータを読み書きするためのタスクを、前記第1のスケジュール待ちキューに格納し、
前記検査を実行するためのタスクを、前記第2のスケジュール待ちキューに格納することを特徴とする請求項6に記載の計算機システム。
前記検査を複数のデータで実行する場合には、前記計算機が、一のデータの検査が完了したか否かにかかわらず、他のデータの検査を開始することを特徴とする請求項13に記載のデータの検査方法。
前記データが他のデータに正常に関連付けられているか否かの検査を複数のデータで実行する場合には、前記プロセッサは、一のデータの検査が完了したか否かにかかわらず、他のデータの検査を開始することを特徴とする請求項15に記載の計算機。
【発明を実施するための形態】
【0009】
(第1実施形態)
本発明の第1実施形態におけるネットワークファイルシステム(計算機システム)では、クライアント300がアプリケーションプログラム321によって業務処理を実行し、ネットワークファイルシステムサーバ100を介して当該業務処理に必要なデータを読み書きする。以下、本発明の第1実施形態におけるネットワークファイルシステムの構成について説明する。
【0010】
図1は、本発明の第1実施形態のネットワークファイルシステムの構成を示す図である。
【0011】
本発明の第1実施形態のネットワークファイルシステムは、ネットワークファイルシステムサーバ100、外部ストレージ装置200及びクライアント300を含む。ネットワークファイルシステムサーバ100は、複数であってもよく、単数に限られない。また、外部ストレージ装置200は、システム内に複数備えられるようにしてもよい。さらに、クライアント300の数は任意である。
【0012】
ネットワークファイルシステムサーバ100は、外部ストレージ装置200に格納されたファイル(データ)を管理する。外部ストレージ装置200は、クライアント300によってアクセスされるファイル(データ)を格納する。クライアント300は、ネットワークファイルシステムサーバ100を介して外部ストレージ装置200に格納されたファイル(データ)にアクセスする。
【0013】
ネットワークファイルシステムサーバ100は、ネットワーク10を介してクライアント300に接続される。ネットワーク10は、例えば、インターネットプロトコル(IP)ネットワークである。
【0014】
また、ネットワークファイルシステムサーバ100は、ネットワーク20を介して外部ストレージ装置200に接続する。ネットワーク20は、ネットワーク10と共通であってもよいし、例えば、ファイバーチャネル(FC)プロトコルが適用されるストレージエリアネットワーク(SAN)であってもよい。ネットワークファイルシステムサーバ100と外部ストレージ装置200との間をSANで接続することによって、信頼性を向上させながら大量のデータを高速に送受信することが可能となる。
【0015】
続いて、ネットワークファイルシステムサーバ100、外部ストレージ装置200及びクライアント300の詳細を説明する。まず、ネットワークファイルシステムサーバ100について説明する。
【0016】
ネットワークファイルシステムサーバ100は、クライアント300から要求されたファイル(データ)を外部ストレージ装置200から取得し、当該クライアント300に送信する。
【0017】
ネットワークファイルシステムサーバ100は、CPU110、メモリ120、ネットワークインターフェイス(I/F)130及びネットワークファイルアクセスインターフェイス(I/F)170を備える。CPU110、メモリ120、ネットワークI/F130及びネットワークファイルアクセスI/F170は、内部バスによって接続される。
【0018】
CPU110は、メモリ120に記憶されたプログラム(図示せず)を実行することによって、クライアント300から要求された処理、又は、入力装置(図示せず)を介して管理者から指示された処理を実行する。
【0019】
メモリ120は、CPU110によって実行されるプログラムと、当該プログラムの実行に必要なデータなどを記憶する。さらに、外部ストレージ装置200とクライアント300との間で送受信されるデータを一時的に記憶する。
【0020】
また、メモリ120は、外部ストレージ装置200によって提供される記憶領域を管理するファイルシステム150を記憶する。ファイルシステム150は、図示しないオペレーティングシステムによって提供される機能であってもよいし、単体のプログラムなどであってもよい。また、分散ファイルシステムのように、複数の計算機にまたがって構成されていてもよい。さらに、メモリ120は、外部ストレージ装置200によって提供される記憶領域にアクセスするためのソフトウェアであるドライバ160を記憶する。
【0021】
ファイルシステム150には、ファイルアクセス管理部151、一貫性検査部152、入出力制御部153が含まれる。ファイルアクセス管理部151は、ファイルシステム150によって管理されるファイルのアクセス要求を管理する。例えば、クライアント300から送信されたファイルアクセス要求を受け付け、当該受け付けた要求を入出力制御部153に入力する。なお、ファイルアクセス要求そのものではなく、要求内容に応じて定義された当該ファイルの入出力要求を含むタスクを入力するようにしてもよい。タスクは、外部ストレージ装置200に対する入出力処理の他に、出力されたファイル(データ)の加工など応答結果に基づく処理などを含む。
【0022】
一貫性検査部152は、後述するファイルシステムボリューム210に格納されたファイルの一貫性(整合性)を検査する。一貫性検査は、ファイル毎に実行してもよいし、記憶領域(論理ボリューム)毎に実行してもよい。一貫性検査部152は、コマンド入力などによって一貫性検査要求(検査要求)を受け付けると、受け付けられた一貫性検査要求を入出力制御部153に入力する。
【0023】
入出力制御部153は、ファイルアクセス管理部151又は一貫性検査部152から要求の入力を受け付け、当該要求に基づくタスクの実行によりファイルシステムボリューム210にアクセスする順序、すなわち、要求の処理順序を決定する。そして、決定された順序でCPU110がタスクを実行し、入出力要求を外部ストレージ装置200に発行する。なお、具体的な手順については後述する(
図11、
図12)。
【0024】
本発明の第1実施形態では、ネットワーク10及びネットワーク20は、異なるネットワークを構成しており、ネットワークファイルシステムサーバ100は、各ネットワークに接続するためのインターフェイスをそれぞれ備えている。なお、ネットワーク10及びネットワーク20は同じであってもよく、この場合にはネットワークに接続するインターフェイスを共通にしてもよい。
【0025】
ネットワークI/F130は、ネットワーク10に接続するためのインターフェイスである。例えば、ネットワークインターフェイスカードなどである。一方、ネットワークファイルアクセスI/F170は、ネットワーク20に接続するためのインターフェイスである。ネットワーク20が前述したSANである場合には、ネットワークファイルアクセスI/F170は、例えば、ホストバスアダプタ(HBA)である。
【0026】
続いて、外部ストレージ装置200について説明する。外部ストレージ装置200は、ファイルシステムボリューム210、ディスク制御コントローラ250及びディスクインターフェイス(I/F)260を備える。
【0027】
ファイルシステムボリューム210は、クライアント300によってアクセスされるファイルを格納する記憶領域である。また、ファイルシステムボリューム210は、複数の記憶装置によって構成された論理的なボリュームである。ファイルシステムボリューム210を複数の記憶装置で構成することによって、大容量の記憶領域を提供することが可能となっている。
【0028】
ファイルシステムボリューム210を構成する記憶装置は、例えば、ハードディスクドライブ(HDD)、光ディスクドライブ、半導体記憶装置(ソリッドステートドライブ;SSD)などの不揮発性記憶媒体である。また、複数の記憶装置によってディスクアレイを構成するようにしてもよい。
【0029】
ファイルシステムボリューム210には、各ファイルの名前、格納位置などを含むメタ情報211と、外部から読み書きされるデータであるファイル(データ)212とが格納される。
【0030】
ディスク制御コントローラ250は、ファイルの読み書きなどの制御を実行する。例えば、ネットワークファイルシステムサーバ100から送信された入出力要求に基づいて、ファイルシステムボリューム210に格納されたファイルを読み書きする。また、ファイルの更新、削除、移動などにともなって、メタ情報211を更新する。
【0031】
ディスクI/F260は、ネットワーク20を介してネットワークファイルシステムサーバ100に接続するためのインターフェイスである。
【0032】
続いて、クライアント300について説明する。クライアント300は、CPU310、メモリ320及びネットワークインターフェイス(I/F)330を備える。
【0033】
CPU310は、メモリ320に記憶されたプログラムを実行することによって各種処理を実行する。メモリ320は、CPU310によって実行されるプログラム及び当該プログラムの実行に必要なデータを記憶する。CPU310によって実行されるプログラムには、業務処理を実行するためのアプリケーションプログラム321と、アプリケーションプログラム321が各種資源(リソース)を利用するためのインターフェイスを提供したり、リソースを管理したりするためのオペレーティングシステム(OS)322とが含まれる。
【0034】
ネットワークI/F330は、ネットワーク10に接続するためのインターフェイスであり、ネットワークファイルシステムサーバ100に備えられたネットワークI/F130と同様でよい。なお、ネットワーク10に有線で接続するようにしてもよいし、無線で接続するようにしてもよい。
【0035】
以上、本発明の第1実施形態におけるネットワークファイルシステムの構成について説明した。続いて、本発明の第1実施形態のネットワークファイルシステムにおいて、管理対象のファイル(データ)を格納する構造について説明する。
【0036】
図2及び
図3は、本発明の第1実施形態におけるファイルを格納する構造を説明する図である。
図2はファイルが正常に格納されている状態を示し、
図3はファイル(データ)の格納情報に不整合が発生している状態を示している。
【0037】
まず、本発明の第1実施形態のファイルシステムにおいてファイルを格納するためのデータ構造について説明する。本発明の第1実施形態のファイルシステムに格納されたファイルは、ファイル管理表(管理情報)220によって管理される。
【0038】
ファイル管理表220には、ファイルを一意に識別するファイル識別子(File ID)221及びファイルが格納されたページ(ページ領域)を示すページ識別子(Page ID)222が含まれる。
【0039】
また、ファイルがディレクトリに格納されている場合には、ファイル識別子221がディレクトリのInode番号(Inode ID)231としてディレクトリ管理表230に格納される。さらに、当該ファイルが格納されているディレクトリのパス名(Path)232がInode番号231と関連付けられて格納されている。
【0040】
なお、ファイル管理表220及びディレクトリ管理表230は、外部ストレージ装置200のファイルシステムボリューム210に記憶されたメタ情報211に含まれるようにしてもよいし、ネットワークファイルシステムサーバ100に保持されるようにしてもよい。また、複数の外部ストレージ装置200のメタ情報を管理するための計算機をネットワークファイルシステムに備えるようにしてもよい。
【0041】
本発明の第1実施形態では、ファイル(データ)は、ページ単位に分割されて格納される。各ページには、分割されたページの位置を指し示す参照ポインタ(P)と、ファイルの内容(コンテンツ)が格納されたページの位置を指し示す実体ポインタ(P)とが含まれる。参照P及び実体Pは参照先のページのページ識別子に対応し、
図2及び
図3では、理解しやすいように、ポインタ(アドレス)とページ識別子とが一致するようにしている。
【0042】
また、参照Pの参照先のページには、参照Pと実体Pが含まれる。また、実体Pの参照先のページには、分割されたファイルの内容(コンテンツ)が格納される。
【0043】
なお、
図2に示すように参照先のポインタとコンテンツのいずれか一方のみがページに格納されるのではなく、参照先のポインタとコンテンツの両方が格納されるようにしてもよい。このように構成することによってページの構造が統一されるので、ファイルにアクセスする処理を簡略化することが可能となる。
【0044】
ここで、
図2を参照しながらデータ構造を具体的に説明すると、まず、ファイル管理表220には、ファイル識別子221として「9001」、ページ識別子222として「101」が設定されたレコードが格納されている。また、ファイル識別子221が「9001」のファイル(以下、「ファイル9001」と表現する)は、ディレクトリ「/data/data01」に格納されている。そこで、ディレクトリ管理表230には、Inode番号231にファイル識別子221である「9001」が設定されたレコードが格納されており、パス名として「/data/data01」が設定される。
【0045】
ページ識別子222が「101」のページ(以下、「ページ101」と表現する)には、参照P「111」「112」、実体P「113」が設定されている。同様に、ページ111には参照P「121」及び実体P「122」、ページ112には参照P「131」及び実体P「132」、さらに、ページ121には参照P「141」及び実体P「142」、ページ131には参照P「151」及び実体P「152」が設定されている。したがって、ファイル9001の実体は、ページ113、ページ122、ページ132、ページ142、ページ152、・・・に分割して格納されている。
【0046】
以上、
図2を参照しながらファイル9001が正常に格納されている状態を説明した。次に、ファイル9001の格納位置を示す情報(参照P)に不整合が発生している状態を示す場合について
図3を参照しながら説明する。
【0047】
図3に示すように、ファイル管理表220及びディレクトリ管理表230は、
図2に示した例と同様である。また、ページ101も正常な場合と同様であるが、ページ111の参照Pが指し示すページ121では、ページそのものが欠落しており、内容を参照することができなくなっている。さらに、ページ112の参照Pは不正なポインタ(−1)となっており、参照先のページを特定することができなくなっている。
【0048】
ファイルが正常に格納されている場合には、ファイル管理表220に格納された先頭ページに対応するページ識別子222から参照Pをたどり、実体Pの参照先のページに格納されたコンテンツを結合することによってファイルを取得することが可能となっている。しかしながら、
図3に示すように、参照Pの参照先のページが欠落していたり、参照Pの値が不正であった場合には、ファイルを正常に読み出すことができなくなってしまう。本発明の第1実施形態における一貫性検査は、ファイルを構成するコンテンツを格納するページが正常に登録されているか否かを判定する検査である。
【0049】
なお、本発明の第1実施形態では、各ファイルは、各ページを節点とし、参照P又は実体Pによるページ間の接続(参照)を枝とする木構造を形成している。また、一のファイルについて一の木が対応するように構成されており、各ファイルに対応する木は、ファイル管理表220にファイルと対応付けられて格納されたページ識別子222に対応するページに対応する節点を根とする。さらに、
図2及び
図3に示した例では、参照先のポインタ又はコンテンツのいずれか一方がページに格納されるため、葉となる節点にはコンテンツが格納される。
【0050】
以下、ファイルの格納情報が正常であるか否かを検査する手順について説明する。ファイルシステムの一貫性(整合性)検査は、通常、オペレーティングシステムの機能として提供される。例えば、UNIX(登録商標)関連のOSではfsckコマンド、Windows(登録商標)ではScandiskコマンドとしてファイルの一貫性を検査する機能が提供される。これらのコマンドには、ファイルに不整合が生じている場合(ファイルの一貫性が損なわれている場合)に修復を試みる機能が含まれている。
【0051】
図4は、本発明の第1実施形態のファイルシステムボリューム210に格納されたファイルの一貫性検査を実行するための手順を示すフローチャートである。本処理は、システムの起動、又は、一貫性検査の実行を要求するコマンドの入力を契機にネットワークファイルシステムサーバ100によって実行され、外部ストレージ装置200に格納された各ファイルの一貫性を検査する。また、
図4に示すフローチャートでは、ファイル管理表220に含まれるすべてのファイルに対して一貫性検査を実行するように構成されているが、ファイル又はディレクトリを指定して一貫性検査を実行するようにしてもよい。
【0052】
ネットワークファイルシステムサーバ100のCPU110は、ファイルシステムボリューム210の一貫性検査が開始されると、一貫性検査の結果を記録する検査結果表140を初期化する(S1001)。検査結果表140は、ファイルシステム150に記憶するようにしてもよいし、外部ストレージ装置200のメタ情報211の一部として記憶してもよい。なお、ファイルシステム150に記憶する場合には、ネットワークファイルシステムサーバ100に備えられた図示しない不揮発性の記憶装置に記憶するようにしてもよい。なお、検査結果表140の内容については後述する(
図7)。
【0053】
次に、CPU110は、外部ストレージ装置200に格納されたメタ情報211のファイル管理表220を検索し、検査対象のファイルを選択する(S1002)。続いて、選択されたファイルに対し、当該ファイルの格納情報が整合しているか否かを検査する一貫性検査を実行する(S1003)。なお、一貫性検査の詳細な手順については後述する(
図5)。
【0054】
CPU110は、検査対象のファイルの一貫性検査が終了すると、未検査のファイルが残っているか否かを判定する(S1004)。未検査のファイルが残っている場合には(S1004の結果が「T」)、次の検査対象のファイルを選択し(S1005)、当該ファイルに対する一貫性検査を実行する(S1003)。
【0055】
以上のようにして、すべての検査対象のファイルの一貫性検査が終了すると(S1004の結果が「F」)、CPU110は、検査結果表140を出力し(S1006)、本処理を終了する。
【0056】
ここで、本発明の第1実施形態の外部ストレージ装置200は、前述のように、複数の記憶装置で記憶領域を構成することで、記憶装置単体では提供できない大容量の領域を提供することが可能となっている。また、ストレージ装置の信頼性(耐障害性)を向上させるために、複数の記憶装置によって冗長性を持たせた構成とする場合もある。このように構成された記憶領域では、一のファイルのコンテンツを格納する各ページが複数の記憶装置に分散して格納される場合がある。そこで、異なる記憶装置に格納されたページを検査する場合には、各ページを並列して検査することによって一貫性検査を高速化することができる。以下、ファイルの一貫性検査の手順について具体的に説明する。
【0057】
図5は、本発明の第1実施形態のファイルの一貫性を検査する手順を示すフローチャートである。本処理は、ネットワークファイルシステムサーバ100によって実行され、外部ストレージ装置200に格納されたファイル毎の一貫性を検査する処理である。
【0058】
ネットワークファイルシステムサーバ100のCPU110は、まず、メタ情報211のファイル管理表220を参照し、検査対象のファイルの根(ルート)となるページのページ識別子222を取得する(S1101)。さらに、取得したページ識別子222に基づいて、対応するページを読み込む(S1102)。
【0059】
次に、CPU110は、読み込まれたページが正当か否かを判定する(S1103)。例えば、不良セクタなどによって参照ポインタ又は実体ポインタが指し示すページに記憶された内容を読み込むことができない場合には、ページが正当でないと判断する。読み込まれたページが正当でない場合には(S1103の結果が「N」)、エラー内容を保存する処理を実行する(S1104)。エラー内容を保存する処理については後述する(
図6)。
【0060】
一方、CPU110は、読み込まれたページが正当である場合には(S1103の結果が「T」)、読み込まれたページに参照先となる別ページのページ識別子が含まれているか否かを判定する(S1105)。別ページのページ識別子は、前述のように、参照ポインタ又は実体ポインタである。CPU110は、別ページのページ識別子が含まれていない場合には(S1105の結果が「F」)、本処理を終了する。
【0061】
CPU110は、読み込まれたページに別ページのページ識別子が設定されている場合には(S1105の結果が「T」)、別ページのページ識別子が正当であるか否かを判定する(S1106)。ページ識別子に対応するページが存在しないなど、別ページのページ識別子が正当でない場合には(S1106の結果が「F」)、エラー内容を保存する処理を実行し(S1107)、S1109以降の処理を実行する。
【0062】
CPU110は、別ページのページ識別子が正当である場合には(S1106の結果が「T」)、別ページを対象とする一貫性検査を実行するためのスレッドを生成する(S1108)。そして、生成されたスレッドで別ページを根(ルート)とした一貫性検査を実行する(S1111〜S1116)。詳細については後述する。
【0063】
CPU110は、別ページの一貫性検査を実行するためのスレッドを生成すると、当該スレッドで実行された一貫性検査が終了するまで待機せずに、読み込まれたページに他のページ識別子が含まれているか否かを判定する(S1109)。
【0064】
CPU110は、読み込まれたページに他のページ識別子が含まれている場合には(S1109の結果が「T」)、他のページ識別子についてS1106以降の処理を実行する。一方、読み込まれたページに他のページ識別子が含まれていない場合には(S1109の結果が「F」)、本処理を終了する。
【0065】
ここで、S1108の処理で生成されたスレッドで実行される一貫性検査について説明する。本発明の第1実施形態では、複数のスレッドを並列して生成可能となっており、ページ毎の一貫性検査を再帰的に実行することによって、複数のページに対する一貫性検査を並列して処理することが可能となっている。
【0066】
S1108の処理で別ページのページ識別子に基づいてスレッドが起動されると、CPU110は、当該別ページのページ識別子に基づいて対応するページを読み込む(S1111)。続いて、読み込まれたページが正当か否かを判定する(S1112)。S1112の処理は、S1103の処理と同様である。
【0067】
CPU110は、読み込まれたページが正当でない場合には(S1112の結果が「N」)、エラー内容を保存する処理を実行する(S1113)。一方、読み込まれたページが正当である場合には(S1112の結果が「T」)、読み込まれたページにさらに別ページを参照するページ識別子が含まれているか否かを判定する(S1114)。
【0068】
CPU110は、読み込まれたページに別ページを参照するページ識別子が含まれていない場合には(S1114の結果が「F」)、本処理を終了する。このとき、本処理を実行するために生成されたスレッドを消滅させることでメモリの消費を抑制する。
【0069】
また、CPU110は、読み込まれたページに別ページを参照するページ識別子が含まれている場合には(S1114の結果が「T」)、別ページを参照するページ識別子が正当であるか否かを判定する(S1115)。別ページのページ識別子が正当でない場合には(S1115の結果が「F」)、エラー内容を保存する処理を実行し(S1116)、S1118以降の処理を実行する。
【0070】
CPU110は、別ページのページ識別子が正当である場合には(S1115の結果が「T」)、別ページを対象とする一貫性検査を実行するためのスレッドをさらに生成し(S1117)、一貫性検査を行うS1111からS1118までの一連の処理を実行する。なお、S1111からS1118までの一連の処理を、一貫性検査を行うための「タスク」とする。本発明の第1実施形態では、1スレッド上で1タスクが実行され、完結する(別のタスクを実行するために、新たにスレッドを生成する場合を含む)。タスクには、一貫性検査の他に、通常のファイルアクセスを行うための処理なども含まれる。
【0071】
CPU110は、さらに、読み込まれたページに他のページ識別子が含まれているか否かを判定する(S1118)。そして、他のページ識別子が含まれている場合には(S1118の結果が「T」)、他のページ識別子について、スレッドを新たに生成して一貫性検査を行うタスクを実行する。一方、他のページ識別子が含まれていない場合には(S1118の結果が「F」)、本処理を終了する。
【0072】
以上のように、本発明の第1実施形態では、一貫性検査を実行するためのスレッドを生成すると、当該スレッドで実行された一貫性検査が完了するまで待機せずに、ページ毎の一貫性検査を再帰的に実行する。このように、複数の一貫性検査を並列して実行することによって、検査に要する時間を短縮することが可能となる。
【0073】
本発明の第1実施形態では、データを格納するページが正常に設定されているか否か、すなわち、ページ識別子の参照先のページが正常であるか(存在するか)、ページ識別子そのものが正常であるかを、ネットワークファイルシステムサーバ100が判定している。これに対し、外部ストレージ装置200のディスク制御コントローラ250がデータを格納するページが正常に設定されているか否かを判定するようにしてもよい。また、ファイルシステムボリューム210のメタ情報211にファイル管理表220が含まれている場合には、外部ストレージ装置200が一貫性検査を実行し、検査結果表を生成するようにしてもよい。
【0074】
さらに、外部ストレージ装置200のディスク制御コントローラ250が、ファイル管理表220等の一貫性検査に必要な情報を管理し、さらに、
図5のフローチャートに示した処理を実行するようにしてもよい。このように構成することによって、外部ストレージ装置200が一貫性検査を含むデータ(ファイル)の一貫性の管理を行うことが可能となり、ネットワークファイルシステムサーバ100の負荷を低減することができる。
【0075】
また、本発明の第1実施形態では、スレッドを無制限に生成するのではなく、ネットワークファイルシステムサーバ100の資源(リソース)などに依存して生成数などを制限し、制限を超えた数のスレッドの生成は待機させる。なお、スレッドの生成数の制限及び生成されたスレッドの実行順序等の制御については後述する(
図8〜
図12)。
【0076】
続いて、検査結果表140の生成及び内容について説明する。
図6は、本発明の第1実施形態においてエラー内容を検査結果表140に保存する処理の手順を示すフローチャートである。
図7は、本発明の第1実施形態の検査結果表140の一例を示す図である。
【0077】
ネットワークファイルシステムサーバ100のCPU110は、検査結果表140に発生したエラーの内容を書き込む(S1201)。具体的には、
図7に示すように、エラーが発生したファイルの識別子(File ID)141、参照元のページ142、参照先のページ(参照先のPage ID)143、参照結果(エラーの種類)144が保存される。
【0078】
また、参照結果には、
図7に示すように、ページの不正、参照先のページ識別子の不正等がある。ページの不正では、ページを格納する領域が物理的に破損している場合などが含まれる。参照先のページ識別子が不正では、ページ識別子に対応するページが存在しない場合などが含まれる。
【0079】
以上のように、ページ毎に一貫性検査を実行し、検査結果表140を作成することによって、エラーが発生したページを特定することができる。そして、検査結果表140を参照しながらファイルの修復などの処理を実行することが可能となる。
【0080】
ここで、スレッド生成数の制限について説明する。本発明の第1実施形態では、ネットワークファイルシステムサーバ100及びネットワーク20などの資源の余力(性能)が記録された資源余力表180(
図10)に基づいてスレッドの生成可否を決定する。スレッドの生成が許可されなかった場合には、生成可能となるまで待機させる。以下、詳細について説明する。
【0081】
図8は、本発明の第1実施形態の一貫性検査を実行するためのスレッドを生成する手順を示すフローチャートである。
【0082】
ネットワークファイルシステムサーバ100のCPU110は、まず、資源余力表180を参照し(S2001)、一貫性検査を実行するための所定の制約条件を満たすか否かを判定する。具体的には、一貫性検査を実行するために割当可能な資源余力が存在するか否か、又は、一貫性検査実行時に使用中の資源の総量が所定の最大資源(閾値)を超えるか否かを判定する(S2002)。
【0083】
所定の制約条件としては、例えば、同時に実行(生成)するスレッドの数、CPU110の使用率などのネットワークファイルシステムサーバ100の資源に関する制約、ストレージ装置200との間の転送帯域などのネットワーク資源に関する制約などが含まれる。資源及び当該資源の制約条件の具体的な例については後述する(
図10)。
【0084】
CPU110は、一貫性検査の実行に割当可能な資源余力又は最大資源を超えない場合には(S2002の結果が「F」)、スレッドを生成し(S2003)、一貫性検査を行うためのタスクを実行する。一方、一貫性検査の実行に割当可能な資源余力又は最大資源を超えてしまう場合には(S2002の結果が「T」)、スレッドの生成を保留し、生成可能となるまで待機させるためのキューに、当該スレッドで実行されるタスクを格納する(S2004)。なお、一貫性検査を実行するための一連の手順(タスク)をあらかじめ定義し、キューには一貫性検査の対象となるページの識別子を格納するようにしてもよい。
【0085】
続いて、キューに格納されたスレッドを再開(生成)するための手順について説明する。
図9は、本発明の第1実施形態の一貫性検査を実行するためのスレッドを再開する手順を示すフローチャートである。
【0086】
ネットワークファイルシステムサーバ100のCPU110は、まず、キューにスレッド生成待ちのタスクが存在するか否かを判定する(S2101)。存在しない場合には(S2101の結果が「F」)、本処理を終了する。
【0087】
一方、CPU110は、キューにスレッド生成待ちのタスクが存在する場合には(S2101の結果が「T」)、キューの先頭に格納されたタスクを取得する(S2102)。そして、
図8に示した場合と同様に、資源余力表180を参照し(S2103)、スレッドを生成してタスク(一貫性検査)を実行することにより、当該一貫性検査の実行に割当可能な資源余力又は最大資源を超えるか否かを判定する(S2104)。
【0088】
CPU110は、一貫性検査の実行に割当可能な資源余力又は最大資源を超えない場合には(S2104の結果が「F」)、スレッドを生成し(S2105)、タスク(一貫性検査)を実行する。一方、タスク(一貫性検査)の実行に割当可能な資源余力又は最大資源を超えてしまう場合には(S2104の結果が「T」)、スレッドの生成を保留し、生成可能となるまで待機させるための再びキューに当該タスクを格納する(S2106)。
【0089】
以上が、スレッドを生成する手順である。続いて、スレッドの生成を許可するか否かを決定するための資源余力表180について説明する。
図10は、本発明の第1実施形態の資源余力表180の一例を示す図である。
【0090】
本発明の第1実施形態では、入出力処理帯域、転送帯域、同時入出力発行数、同時実行スレッド数、CPU使用率の5種類の項目に基づいて、スレッドを生成するか否かを判定する。さらに別の項目に基づいてスレッドの生成可否を判断してもよい。
【0091】
また、これらの項目について、システムが利用可能な最大資源である「システムが保持する性能資源(A)」、外部ストレージ装置200に格納されたファイルにアクセスするために利用される資源である「ファイルアクセスによる利用資源(B)」があらかじめ設定される。また、「システムが保持する性能資源(A)」から「ファイルアクセスによる利用資源(B)」を減算することによって、「一貫性検査のために割当可能な資源余力(A)−(B)」を算出することができる。さらに、ファイルアクセスに必要な資源も含めて「一貫性検査のために割当可能な最大資源(C)」が設定される。
【0092】
本発明の第1実施形態では、前述のように、スレッド生成前(又は生成後)の資源の消費量が「一貫性検査のために割当可能な資源余力(A)−(B)」及び「一貫性検査のために割当可能な最大資源(C)」を超えない場合に、スレッドの生成が許可される。以下、各項目について説明する。
【0093】
入出力処理帯域は、ネットワークファイルシステムサーバ100が外部ストレージ装置200に1秒間で送信可能な入出力要求の数である。システムが保持する性能資源(A)は50000IO/sとなっており、ファイルアクセスによる利用資源(B)は20000IO/sとなっている。したがって、一貫性検査のために割当可能な資源余力は30000MB/sとなる。さらに、一貫性検査のために割当可能な最大資源(C)は、40000MB/sとなっている。
【0094】
転送帯域は、ネットワークファイルシステムサーバ100と外部ストレージ装置200との間で1秒間に転送可能なデータ量である。システムが保持する性能資源(A)は5000MB/sとなっており、ファイルアクセスによる利用資源(B)は2500MB/sとなっている。したがって、一貫性検査のために割当可能な資源余力は2500MB/sとなる。さらに、一貫性検査のために割当可能な最大資源(C)は、4000MB/sとなっている。
【0095】
同時入出力発行数は、外部ストレージ装置200に対して同時に発行される入出力要求の数である。システムが保持する性能資源(A)は1000IOsとなっており、すなわち、最大1000件の入出力要求を同時に発行することが可能となっている。また、ファイルアクセスによる利用資源(B)は、200IOsとなっている。したがって、一貫性検査のために割当可能な資源余力は800IOsとなる。さらに、一貫性検査のために割当可能な最大資源(C)は、800IOsとなっている。
【0096】
同時実行スレッド数は、ネットワークファイルシステムサーバ100が実行(生成)可能なスレッドの数である。システムが保持する性能資源(A)は800Threadsとなっており、ファイルアクセスによる利用資源(B)は150Threadsとなっている。したがって、一貫性検査のために割当可能な資源余力は650Threadsとなる。さらに、一貫性検査のために割当可能な最大資源(C)は、600Threadsとなっている。
【0097】
CPU使用率は、ネットワークファイルシステムサーバ100のCPU110の使用率である。システムが保持する性能資源(A)は100%となっており、ファイルアクセスによる利用資源(B)は10%となっている。したがって、一貫性検査のために割当可能な資源余力は90%となる。さらに、一貫性検査のために割当可能な最大資源(C)は、80%となっている。
【0098】
なお、システムが使用中の資源量の取得は、オペレーティングシステムにあらかじめ用意されているコマンドを利用してもよいし、同等の機能を実装してもよい。
【0099】
続いて、スレッドの生成を待機させる構成について説明する。
図11は、本発明の第1実施形態のスレッドの生成を待機させるキューの構造を説明する図である。
【0100】
クライアント300から外部ストレージ装置200に格納されたファイルに対するアクセス要求が送信されると、ネットワークファイルシステムサーバ100は、ファイルアクセス管理部151によって当該アクセス要求を受け付ける。ファイルアクセス管理部151は、アクセス要求を受け付けると、当該受け付けられたアクセス要求を入出力制御部153に引き渡す。
【0101】
また、ネットワークファイルシステムサーバ100は、外部ストレージ装置200によって提供される記憶領域の一貫性検査要求を一貫性検査部152が受け付ける。一貫性検査部152は、一貫性検査要求を受け付けると、当該受け付けられた一貫性検査要求を入出力制御部153に引き渡す。
【0102】
入出力制御部153は、優先度が設定された複数のスケジュール待ちキュー154と、スレッドの生成を待機させる発行待ちキュー155とを備える。発行待ちキュー155に格納された要求を処理することによって、ファイルシステムボリューム210に対する入出力要求を発行する。
【0103】
入出力制御部153は、ファイルアクセス管理部151から受け付けられたアクセス要求を、優先度の高いスケジュール待ちキュー154に格納する。一方、一貫性検査部152から受け付けられた一貫性検査要求を、優先度の低いスケジュール待ちキュー154に格納する。なお、ファイルのアクセス要求及び記憶領域の一貫性検査要求に対し、個別に優先度を設定するようにしてもよい。
【0104】
スケジュール待ちキュー154にファイルのアクセス要求又は記憶領域の一貫性検査要求が格納されると、入出力制御部153は、要求の種類等に基づいてスケジュール待ちキュー154から要求を選択し、選択された要求を発行待ちキュー155に移動させる。スケジュール待ちキュー154から発行待ちキュー155に要求を移動させる手順については後述する(
図12)。そして、発行待ちキュー155の先頭から取り出された要求を処理することによってファイルシステムボリューム210に入出力要求を発行する。
【0105】
図12は、本発明の第1実施形態のスケジュール待ちキュー154に格納された要求を発行待ちキュー155に移動させる手順を示すフローチャートである。なお、スケジュール待ちキュー154に格納された要求を発行待ちキュー155に移動させるタイミングは、例えば、発行待ちキュー155に格納された要求が所定数以下になった場合であってもよいし、生成されているスレッドの数が所定数以下になった場合であってもよい。
【0106】
ネットワークファイルシステムサーバ100のCPU110は、まず、高優先度のスケジュール待ちキュー154に要求があるか否かを判定する(S2201)。高優先度のスケジュール待ちキュー154に要求がある場合には(S2201の結果が「T」)、高優先度のスケジュール待ちキュー154から最大M個の要求を取り出す(S2202)。
【0107】
一方、CPU110は、高優先度のスケジュール待ちキュー154に要求がない場合には(S2201の結果が「F」)、低優先度のスケジュール待ちキュー154に要求があるか否かを判定する(S2203)。低優先度のスケジュール待ちキュー154に要求がない場合には(S2203の結果が「F」)、スケジュール待ちキュー154に要求が含まれていないので、本処理を終了する。
【0108】
また、CPU110は、低優先度のスケジュール待ちキュー154に要求がある場合には(S2203の結果が「T」)、低優先度のスケジュール待ちキュー154から最大N個の要求を取り出す(S2204)。このとき、MとNは同じ値であってもよいし、優先度の高い要求を処理できるように、NをMよりも小さい値としてもよい。
【0109】
CPU110は、スケジュール待ちキュー154から取り出された要求を並び替える(S2205)。例えば、優先度の高い要求ほど早く処理するように順序を決定する。また、優先度が同じ場合には、後続の処理が多い(残りの処理時間の多い)要求を優先するようにしてもよいし、発行待ちキュー155に含まれる要求を最小化するために後続の処理が少ない(残りの処理時間の少ない)要求を優先するようにしてもよい。
【0110】
また、発行待ちキュー155に要求が含まれている場合には、取り出された要求と、発行待ちキュー155に含まれている要求とを合わせて並べ替えをしてもよい。
【0111】
最後に、CPU110は、並び替えられた要求を発行キューに格納し(S2206)、本処理を終了する。発行キューに格納された要求は、スレッドの生成が可能になると、キューの先頭から順次取り出され、生成されたスレッドで処理される。そして、生成されたスレッドにおいて、外部ストレージ装置200に入出力要求が発行(送信)され、入出力要求に対する応答が処理される。
【0112】
ファイルの入出力要求の場合には、スレッド毎にページ単位でファイルのコンテンツが取得される。このとき、取得された各コンテンツを結合してファイルを生成した後、クライアント300に送信するようにしてもよいし、ファイルを生成せずに分割された状態でクライアント300に送信し、クライアント300で結合するようにしてもよい。
【0113】
一方、記憶領域の一貫性検査要求の場合には、前述のように、スレッド毎に検査結果表140に検査結果を書き出す。そして、指定された記憶領域の一貫性検査が終了した後、検査結果表140を出力する。
【0114】
なお、入出力制御部153のスケジュール待ちキュー154及び発行待ちキュー155には、ファイルのアクセス要求又は記憶領域の一貫性検査要求の代わりに各要求に対応するタスクを格納するようにしてもよい。
【0115】
以上のように、本発明の第1実施形態によれば、一貫性検査をページ毎に並列して処理することが可能であるため、各ページに対して順次検査する場合と比較して高速に一貫性検査を行うことができる。特に、外部ストレージ装置200が提供する記憶領域を構成する記憶装置の数が多くなるほど処理の並列性を高めることが可能となる。
【0116】
なお、本発明の第1実施形態では、記憶領域単位で一貫性検査を実行する例について説明したが、ファイル単位又はディレクトリ単位で一貫性検査を行うようにしてもよい。
【0117】
以上説明した第1実施形態では、ネットワークファイルシステム(ネットワークアタッチトストレージ;NAS)に対して、ページ毎に並列して一貫性検査を実行する例について説明したが、外部にストレージ装置を備えずにディスクアレイ装置が接続されたアプリケーションサーバ又はデータベースサーバなどにも適用することができる。
【0118】
(第2実施形態)
第1実施形態では、記憶装置に格納されたファイル(データ)の一貫性検査に本発明を適用する例について説明したが、第2実施形態では、データベースシステムによって管理されるデータの一貫性検査に本発明を適用する例について説明する。
【0119】
図13は、本発明の第2実施形態のデータベースシステムの構成を示す図である。本発明の第2実施形態におけるデータベースシステムは、第1実施形態におけるネットワークファイル
システムサーバ100の代わりに、外部ストレージ装置200に格納されたデータを管理するデータベースサーバ400を備える。なお、外部ストレージ装置200及びクライアント300については、第1実施形態と共通の構成については同じ符号を割り当てる。
【0120】
本実施形態では、クライアント300がアプリケーションプログラム321を実行し、データベースサーバ400によって管理されるデータにアクセスする。外部ストレージ装置200は、データベースサーバ400によって管理されるデータを格納する。なお、データベースを管理するための管理計算機を計算機システムに備えるようにしてもよい。
【0121】
外部ストレージ装置200及びクライアント300の構成は第1実施形態と同様である。また、ネットワーク10及びネットワーク20についても第1実施形態と同様であり、前述のように、ネットワーク10及びネットワーク20が同じネットワークであってもよい。
【0122】
データベースシステムには、関係モデルをベースとした関係データベース(RDB)、又はオブジェクトモデルをベースとしたオブジェクト指向データベースがある。本実施形態では、関係データベースを対象として説明する。
【0123】
関係データベースでは、複数種類のデータによって構成されるレコード単位でデータを関係表1270に格納し、少ない入出力要求でレコードにアクセスするための索引1280を備える。索引1280のデータ構造は、本実施形態では後述するようにB+木であるが、B木であってもよいし、ハッシュであってもよい。
【0124】
なお、本実施形態におけるデータベースシステムでは、関係表1270及び索引1280を外部ストレージ装置200に格納しているが、データベースサーバ400に備えられた記憶装置に関係表1270及び索引1280を格納するようにしてもよい。
【0125】
データベースサーバ400は、CPU410、メモリ420、ネットワークI/F430及びホストバスアダプタ470を備える。CPU410、メモリ420、ネットワークI/F430は、第1実施形態のネットワークファイルシステムサーバ100のCPU110、メモリ120、ネットワークインターフェイス(I/F)130と同様であり、同等の機能を有する。また、ホストバスアダプタ470についても、ネットワークファイルアクセスインターフェイス(I/F)170と同様である。
【0126】
データベースサーバ400は、メモリ420に記憶されたプログラムであるデータベース管理システム450を実行することによって、外部ストレージ装置200に格納されたデータを管理する。なお、第2実施形態も第1実施形態と同様にメモリ420にドライバが記憶されるが、第1実施形態と同等の機能であるため記載を省略する。
【0127】
データベース管理システム450は、問合せ処理部451、データ管理部452、一貫性検査部453、入出力制御部454等を含む。
【0128】
問合せ処理部451は、クライアント300から送信されたデータアクセス要求を受け付ける。データアクセス要求は、例えば、SQLによって記述される。また、問合せ処理部451は、受け付けたデータアクセス要求に基づいて、外部ストレージ装置200に格納されたデータにアクセスする。
【0129】
データ管理部452は、本実施形態のデータベースシステムにおいてデータを管理するための機能(プログラム)及び管理情報を含む。管理情報には、関係表1270及び索引1280の格納位置を示す情報などが含まれる。
【0130】
一貫性検査部453は、索引1280に定義された参照先のレコードが関係表1270に格納されているか否かを検査する。具体的には、索引1280に定義された参照先のレコードが関係表1270に存在するか否か、格納場所そのものが存在するか否かを検査する。詳細については、
図14及び
図15にて後述する。なお、索引1280の内部における索引間の一貫性を検査するようにしてもよい。
【0131】
また、一貫性検査部453は、関係表1270に格納されたレコード間の関係性(参照整合性)が維持されているか否かを検査する。通常、参照整合性を破壊するレコードの更新又は削除は、データベース管理システム450(例えば、データ管理部452)によって阻止される。しかしながら、参照整合性の定義に誤りがあったり、定義そのものがなされていなかったりした場合など、関係性に不整合が生じたレコードが生成されてしまう可能性がある。本実施形態における一貫性検査部453は、このような不整合を検出する。詳細については、
図16及び
図17にて後述する。
【0132】
入出力制御部454は、第1実施形態と同様に、外部ストレージ装置200に格納されたデータに対する入出力を制御する。具体的には、問合せ処理部451又は一貫性検査部453からの要求に基づいて、外部ストレージ装置200に格納されたデータにアクセスする。
【0133】
例えば、問合せ処理の場合には、入出力制御部454がクライアント300から送信された問合せ要求を受け付け、問合せ処理部451に引き渡す。そして、問合せ処理部451が問合せ要求を処理し、問合せ結果を入出力制御部454に応答する。入出力制御部454は、問合せ結果をクライアント300に送信する。
【0134】
一方、一貫性検査の場合には、入出力制御部454が管理計算機等から送信された検査要求を受け付け、一貫性検査部453に引き渡す。そして、一貫性検査部453が一貫性検査を実行し、検査結果を入出力制御部454に応答する。入出力制御部454は、検査結果を一貫性検査の要求元に送信する。
【0135】
このとき、入出力制御部454は、第1実施形態と同様に、受け付けた要求(問合せ要求、検査要求)の実行順序を管理する。例えば、優先度の高いスケジュール待ちキューに問合せ要求、優先度の低いスケジュール待ちキューには検査要求を格納し、第1実施形態と同様に要求を処理するタスクを実行するためのスレッドを順次生成する。
【0136】
続いて、関係表1270に格納されたレコードと索引1280のデータ構造について説明する。
図14及び
図15は、本発明の第2実施形態のデータベースシステムにおける関係表及び索引のデータ構造を説明する図である。
図14はデータが正常に格納されている状態を示し、
図15はデータの格納情報に不整合が発生している状態を示している。
【0137】
本実施形態では、主キー以外の属性に索引を付与する二次索引の場合を例として説明する。二次索引では、データレコードを格納する必要はなく、キーに対し、レコードの格納情報(ポインタ、レコード識別子)を保持すればよい。
【0138】
二次索引は、B+木で構成されており、ページ101が根(ルート)に対応するページとなっている。B+木では、葉(リーフ)に対応するページにのみ関係表
1270のレコードの格納情報が格納される。
図14及び
図15では、根(ルート)であるページ101から、葉(リーフ)であるページ111及びページ112を参照している。
【0139】
格納情報についてさらに説明すると、二次索引内部におけるページ間の参照はページ番号のみとなっている。一方、葉(リーフ)から関係表1270(ページ201〜ページ203)のレコードへの参照はページ番号及びスロット番号となっている。スロット番号は、ページ内でレコードが格納されている位置を示す情報である。
【0140】
以上のようなデータ構造で関係表1270及び索引1280が構成される。
図14を参照すると、ルートとなるページ101には、key1からkey3に対応するレコードの参照情報がページ111に格納され、key3以降に対応するレコードの参照情報がページ112に格納されることが示されている。そして、ページ111にはkey01に対応するレコードがページ番号201のスロット番号1に対応する領域に格納されていることが示されている。他のレコードについても同様に格納領域が特定されている。
【0141】
これに対し、
図15に示す状態では、一部のkeyに対応するレコードの格納領域を特定できない状態となっている。具体的には、ページ111においてkey02に対応するレコードが格納されている領域が「−1」となっているため、レコードの格納位置を特定することができなくなっている。また、ページ112においてkey12に対応するレコードがページ番号203のスロット番号2に対応する領域に格納されていることが示されているが、ページ203が存在していない。
【0142】
本発明の第2実施形態における一貫性検査では、索引1280によってレコードの格納位置を特定することができない不整合を検出することが可能となっている。基本的には、第1実施形態(
図4、
図5)に示した手順と同様に処理することができる。
【0143】
索引1280には複数の索引が含まれており、これらの索引はデータ管理部452によって取得することが可能となっている。そのため、索引1280に含まれる各索引(第1実施形態のファイルに対応)を順次選択して一貫性検査を実行することによって、
図4のフローチャートに示した手順と同様に処理することができる。
【0144】
また、索引ごとの一貫性検査についても
図5のフローチャートに示した手順と同様に処理することができる。まず、検査対象の索引の根(ルート)となるページを特定し(S1101)、当該ページを読み込む(S1102)。そして、ページの正当性を判定する(S1103)。検査対象のページが他のページを参照しているか否かを判定し(S1105)、さらにページの参照先の正当性を判定する(S1106)。参照先が正当である場合には、新たにスレッドを生成し、参照先のページに対して一貫性検査を実行する(S1108)。
【0145】
以上のように、データベースシステムにおける索引の一貫性検査においても本願発明を適用することができる。本発明の第2実施形態によれば、複数の記憶装置によって一の記憶領域が構成されている場合に、並列して一貫性検査を実行することが可能であるため、特に、大規模なデータベースシステムにおいて高速に検査を行うことが可能となる。そして、索引の一貫性検査を高速に完了させることが可能となるため、計算機システム全体の信頼性を向上させることができる。
【0146】
続いて、関係表に含まれるレコード間の関係性に生じた不整合を検出する場合について説明する。
図16及び
図17は、本発明の第2実施形態のデータベースシステムにおけるデータモデルを説明する図である。
図16は正常な状態(レコード間に不整合が生じていない状態)を示し、
図17はレコード間に不整合が生じている状態を示している。
【0147】
図16及び
図17には、顧客情報を格納するCUSTOMER表と顧客の注文情報を格納するORDERS表が示されており、各表はCustIDで関係付けられている。ORDERS表に含まれるCustIDに対応するレコードをCUSTOMER表から削除すると注文に対応する顧客情報が消失してしまう。そのため、CustIDがORDERS表に含まれる場合には、通常、データベース管理システム450(データ管理部452)がCUSTOMER表から対応するレコードが削除されないように制御している。
【0148】
図16を参照すると、CUSTOMER表とORDERS表の各レコードの関係性が正常な場合には、ORDERS表に含まれる各レコードに対応するCustIDを有するレコードがすべて存在している。
【0149】
一方、
図17に示すORDERS表には、CustIDが「106」のレコードが含まれているが、対応するCustIDのレコードはCUSTOMER表に含まれていない。そのため、CustIDが「106」に対応する注文情報に顧客情報が含まれない不完全なデータとなってしまう。
【0150】
また、
図16及び
図17に示した例では一方の関係表が他方の関係表を参照する単純な構成であったが、一般的に、関係データベースでは、データ量を最小限に抑え、データの重複をなくすように関係表を正規化する。そのため、大規模なデータベースでは、トランザクション系の関係表で多くのマスタ系の関係表を参照する場合があり、不整合が生じているレコードを検出するために多くのコストを必要とする可能性がある。そこで、本発明の一貫性検査を適用することで、レコード間の関係の不整合を迅速に検出することが可能となる。
【0151】
データベースシステムで管理される関係表のレコード間の関係は、データベースの定義情報に基づいて木構造で表現することができる。そこで、他の関係表(例えば、CUSTOMER表)を参照する関係表(例えば、ORDERS表)の各レコードを根(ルート)とすることで、第1実施形態(
図4、
図5)に示した手順と同様に、レコード(フィールド)ごとに一貫性検査を実行することができる。
【0152】
なお、複数のレコードが一のレコードを参照する場合には、検査対象のフィールド(例えば、CustID)ごとに重複したレコードをあらかじめ除外して検査を行うようにしてもよいし、検査済みのフィールドを検査しないように制御してもよい。また、レコード(フィールド)ごとではなく、関係表ごとに一貫性検査を実行するようにしてもよい。
【0153】
本発明の第2実施形態によれば、データベースシステムにおける索引と関係表のレコードとの間の整合性、及び、関係表のレコード間の整合性の検査に要する時間を短縮することができる。
【0154】
以上、本発明の実施形態について説明したが、上記実施形態は本発明の適用例の一部を示したに過ぎず、本発明の技術的範囲を上記実施形態の具体的構成に限定する趣旨ではない。