説明

整合性検証システム、検証方法およびプログラム

【課題】 ソート処理を1回に抑えたままで、処理時間の短縮を可能にするシステムおよび方法を提供する。
【解決手段】 このシステムは、複数のパーティションを有する階層型データベースに作成されたインデックスに含まれるポインタにより指示されるセグメント・データの保存先アドレスの整合性を検証するシステムである。このシステムは、ポインタを読み出す読出部31と、ポインタをアドレス順にソートするソート部32と、ポインタをパーティション毎に振り分ける振分部33と、ポインタを、セグメント・データのセグメント識別子と該セグメント・データの最新の保存先アドレスとを含むデータ・セットと照合する処理を、パーティション毎に並列に実行する2以上の照合部34とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データベースに格納されたインデックスに含まれるポインタにより指示されるセグメント・データの保存先アドレスの整合性を検証するシステム、その検証方法およびプログラムに関する。
【背景技術】
【0002】
データベースは、特定の項目に沿ったデータを集めて管理し、検索や抽出等によって再利用できるようにしたものである。データベースには、オペレーティング・システム(OS)が提供するファイル・システム上に直接構築されるものや、データベースをコンピュータ上で管理するためのデータベース管理システム(DBMS)を用いて構築されるものがある。
【0003】
DBMSには、階層型データベース管理システムと呼ばれる、データを木構造で管理するものがある。木構造における各データ・エレメントは、セグメント・データであり、その木構造の頂点にある第1データ・エレメントは、ルート・セグメント・データである。このルート・セグメント・データに従属するセグメント・データは、子、それに従属するセグメント・データは、子の子、すなわち孫であり、この木構造は、ルート・セグメント・データを出発点として、そのルート・セグメント・データから子へ、子から孫へと辿るデータ構造とされている。このため、各セグメント・データは、従属するセグメント・データを指示するポインタを有している。
【0004】
この階層型データベース管理システムが管理するデータベースとして、IMS(登録商標)データベースがあり、そのIMSデータベースにはHALDB(High Availability Large Databases)と呼ばれるものがある。HALDBは、大量のデータを格納することができる形式で、複数のパーティションと呼ばれるDBが複数集まった形をしている。
【0005】
図1に、HALDBの構成例を示す。HALDBは、パーティション1、2、…、10と、セグメント・データを格納する際に作成されたインデックス11とを含む。ここでは、データベースが10個の区画に分割され、10個のパーティションから構成されている。インデックス11は、データの検索時間を短縮するために作成されるファイルであり、データの検索や抽出を行う際に比較対象となるソース・キーと、セグメント・データを指示するポインタとのペアからなり、ソース・キーが与えられると、対応するセグメント・データを取得することができるように構成されている。
【0006】
HALDBは、セグメント・データの挿入や削除が繰り返されると、不要な隙間が多く発生することから、定期的に再編成処理が実行される。この再編成処理では、データの内容を保持したままデータベースを作成しなおす処理が行われる。これにより、断片化、記憶効率の低下、アクセス速度の低下といった不具合が解消される。
【0007】
HALDBでは、再編成処理が行われると、図1に示すように、セグメント・データの格納場所が、破線で示される場所から実線で示される場所へ移動することになるが、この再編成処理時には、インデックス11は更新されず、予めセグメント・データに割り当てられたILK(Indirect List Key)という固有の識別子と新しい場所の相対バイト・アドレス(RBA)とがパーティション毎にILDS(Indirect List key Data Set)12と呼ばれる場所に格納される。ここで、RBAは、所定の基準アドレスと比較したセグメント・データの先頭アドレスの位置で、具体的には、ファイルを構成するデータ・セット中の各レコードの、そのデータ・セットの先頭を0としたバイト・アドレスである。
【0008】
また、HALDBでは、再編成処理の後に、インデックス11を使用してセグメント・データを取得する場合、ILDS12を使用して新しい場所のRBAを取得するように構成されている。このため、インデックス11に含まれるセグメント・データを指示するポインタには、セグメント・データのRBAとILKとが含まれている。このポインタは、EPS(Extended Pointer Set)ポインタと呼ばれる。
【0009】
EPSポインタに含まれるRBAは、再編成処理時に更新されないことから、セグメント・データの取得時に、そのセグメント・データの現在の場所を反映していない場合がある。そのために、ILDS12は、セグメント・データの最新のRBAを保持し、ILDS12を使用してセグメント・データの取得を可能にしている。しかしながら、セグメント・データの取得のたびに、ILDS12から最新のRBAを読み出し、セグメント・データの場所を探索することは好ましくなく、出来る限りEPSポインタを使用してセグメント・データの場所を求めることが好ましい。
【0010】
このため、EPSポインタの修復が定期的に実行される(非特許文献1参照)。なお、この修復処理は、EPS Healingと呼ばれる。
【0011】
この修復処理が正しく行われるかも含め、データベースのポインタの整合性をチェックするものとして、ポインタ・チェッカがある(非特許文献2参照)。ポインタ・チェッカは、ポインタの問題を見つけて報告するもので、上記の再編成処理後のデータベースの整合性も含め、エラーとそのエラーが発生した場所を正確に指摘し、多くのレポートを作成する。
【0012】
このポインタ・チェッカは、EPSポインタが古いセグメント・データの場所を示している場合、ILDS12を使用して正しい場所に修復されるかをチェックするEPSチェック機能を備える。この機能では、データベースからEPSポインタを抽出し、その抽出したEPSポインタをILDS12に格納されているILDSレコードと照合し、ESP Healingが正しく行われるか否かのチェックを行う。
【0013】
EPSポインタに含まれるILKには、セグメント・データが存在するパーティション番号と、そのセグメント・データが最初に挿入された場所の初期RBAとが含まれる。
【0014】
ILDS12は、パーティション毎に1つ存在するため、パーティション番号が分かれば、照合処理に使用すべきILDS12を特定することができる。また、ILDS12内ではILKがRBA順にソートされているため、照合処理を行うためには、EPSポインタをRBA順にソート(並べ替え)する必要がある。このため、このポインタ・チェッカでは、EPSチェックを行うために、次の2段階の処理を行っている。
【0015】
(1)EPSポインタをパーティション番号およびRBAでソートする。
(2)ソートされたEPSポインタとILDSレコードの照合を行う。
【0016】
これらの処理を、図2を参照して詳細に説明すると、次のようなものになる。図2に示すテーブル13のように、データベースに格納されたインデックスからEPSポインタ、すなわちEPSポインタが指示するセグメント・データが存在するパーティションのパーティション番号、そのセグメント・データのRBA、その他のデータを読み出す。読み出した後、EPSポインタをパーティション番号とRBAでソートする。最初に、パーティション番号1のEPSポインタを抽出し、RBA順に並べる。パーティション番号1のEPSポインタをすべて並べた後、パーティション番号2のEPSポインタを選択し、RBA順に並べる。このようにして最後のパーティション番号nのEPSポインタを並べ終えたところで、ソートを終了する。
【0017】
ソート処理が終了した後、照合処理において、並び替えられたESPポインタを、対応するパーティション番号のILDS内のILDSレコードと照合する。この照合処理では、ILKを基に、ILKが一致するレコードがILDS内に存在するか否かをチェックする。上記のように、ILKはパーティション番号と初期RBAを含むことから、これらがすべて一致するかをチェックする。そして、一致していないEPSポインタに対しては、データベース管理者に対し、ポインタ・エラーを報告する。
【0018】
この照合処理では、ソートされたEPSポインタがILDSレコードと同じ順に並んでいるため、skip sequential readを使用して効率良く行うことができる。このskip sequential readは、一部のレコードを順次読み出す方法であり、その詳細については、特許文献1に記載されている。
【特許文献1】米国特許出願公開第2006/0080270号明細書
【非特許文献1】IMS:Administration Guide:Database Manager、[on line]、[平成20年8月26日検索]、インターネット<URL:http://publib.boulder.ibm.com/cgi-bin/bookmgr/BOOKS/DFSADBE4/CCONTENTS>
【非特許文献2】IMS High Performance Pointer Checker User’s Guide、[online]、[平成20年8月26日検索]、インターネット<URL:http://publibfi.boulder.ibm.com/cgi-bin/bookmgr/BOOKS/FABP1B10/CCONTENTS>
【発明の開示】
【発明が解決しようとする課題】
【0019】
ILDSが複数存在する場合、各ILDSとの照合処理を並列に実行することができれば、処理時間を短縮することができる。しかしながら、従来のシステムや方法では、パーティション番号とRBAでEPSポインタをソートしていることから、パーティション番号順に照合処理を行わなければならない。なぜなら、パーティション番号1に挿入されたセグメント・データを指示するポインタのすべてが照合処理へ入力されるまで、パーティション番号2に挿入されたセグメント・データを指示するポインタが入力されず、結果的に、パーティション番号順に照合処理が行われるからである。
【0020】
現状、ポインタ・チェッカでは、同時にスキャン等の他のタスクも実行しており、他のタスクの妨げにならないようにするために、EPSポインタのソート処理を複数実行することはできないという状況がある。
【0021】
また、上記のskip sequential readを使用して突き合わせ処理を効率良く行うことができるが、これでもまだ処理時間の短縮が不十分で、さらなる時間短縮が求められている。
【0022】
そこで、現状の制約を満たすためにソート処理を1回に抑えたままで、さらなる処理時間の短縮を可能にするシステムおよび方法の提供が望まれていた。
【課題を解決するための手段】
【0023】
本発明は、パーティション番号とRBAでソートするのではなく、RBAのみでソートしてEPSポインタをRBA順に並べ、パーティション番号の数だけ照合処理を並列に実行させ、RBA順に並んだEPSポインタを、パーティション番号に応じて対応する照合処理へ入力することにより、ソート処理を1回に抑えたままで、処理時間を短縮することができることを見出すことによりなされたものである。
【0024】
EPSポインタに含まれるRBAの分布を考えてみると、各パーティション番号のEPSポインタに含まれるRBAの分布が似通っている場合、RBAのみでソート処理を行うと、パーティション番号が比較的均等に混ざった状態で分布することになる。したがって、RBAの分布が似通っている場合ほど、各照合処理へEPSポインタがほぼ均等に入力され、ほぼ均等に並列に処理が行われることになる。
【0025】
一方、RBAの分布に重なりがまったくない場合は、ある照合処理のみにEPSポインタが入力され、その照合処理のみが実行される。これは、従来の照合処理においてかかる処理時間と同じであるが、重なりがまったくない分布というものは非常にまれなケースである。このことから、従来の照合処理に比較して処理速度を向上させることができるものであり、その結果、処理時間を短縮することができるものである。
【0026】
また、あるパーティション番号に着目した場合、EPSポインタがRBA順に入力されることから、skip sequential readによる効率の良い突き合わせ処理を行うことが可能であり、さらに処理時間を短縮することができる。
【0027】
したがって、上記課題は、本発明の整合性検証システム、検証方法およびその方法を実現するためのコンピュータ可読なプログラムを提供することにより解決することができる。
【0028】
本発明の整合性検証システムは、複数のパーティションを有する階層型データベースに作成されたインデックスに含まれるポインタにより指示されるセグメント・データの保存先アドレスの整合性を検証するシステムである。この整合性を検証するために、インデックスからセグメント・データを識別するためのセグメント識別子とそのセグメント・データの保存先アドレスとを含むポインタを読み出す読出部と、読み出されたポインタをアドレス順にソートするソート部と、ソートされたポインタを、ポインタが指示するセグメント・データが保存されるパーティションに応じて2以上のパーティション群に振り分ける振分部と、振り分けられたポインタを、セグメント・データのセグメント識別子とそのセグメント・データの最新の保存先アドレスとを含むデータ・セットと照合する処理を、パーティション群毎に並列に実行する2以上の照合部とを備える。
【0029】
照合部は、パーティションと同数設けることができ、この場合、振分部は、ソートされたポインタをパーティション毎に振り分け、2以上の照合部はパーティション毎に並列に照合処理を行う。
【0030】
照合部とパーティションの数が同数ではなく、照合部の数がパーティションの数より少ない場合、照合部の少なくとも1つが、少なくとも2つのパーティションに保存されたセグメント・データを指示するポインタを処理することとなる。このため、ソート部は、少なくとも2つのパーティションの各々を識別するために処理順識別子を割り振り、処理順識別子で表される処理順とアドレス順とでソートする。
【0031】
また、振分部により振り分けられたポインタを、パーティション群に対応した照合部へ効率良く入力し、処理するために、一時的にポインタを記憶する2以上のキュー部をさらに備えることができる。
【0032】
本発明の検証方法は、上記の各部により実行される処理ステップを含む。本発明では、この検証方法を実行するためのコンピュータ可読なプログラムおよびそのプログラムを格納した記録媒体を提供することもできる。
【発明の効果】
【0033】
本発明のシステムおよび方法を提供することにより、ソート処理を1回に抑えたままで従来のパーティション番号とRBAでソート処理する場合に比較して処理時間の短縮を図ることができる。
【発明を実施するための最良の形態】
【0034】
以下、本発明を図面に示した具体的な実施の形態に沿って説明するが、本発明は、後述する実施の形態に限定されるものではない。
【0035】
図3は、データベース整合性チェック・システムの概略構成を示した図である。データベース整合性チェック・システムは、複数のパーティションに分割されて複数のDBを構成する階層型データベース20と、階層型データベース20の整合性を検証する整合性検証システム30とを備える。
【0036】
階層型データベース20は、図1に示すHALDBであり、パーティションと呼ばれる論理区画に分割され、複数のDBが集まった形とされている。したがって、この階層型データベース20は、複数のパーティションを有するものとされている。また、階層型データベース20は、データ構造が木構造とされ、木構造の各データ・エレメントとしてセグメント・データを含むものとされている。各セグメント・データには、従属するセグメント・データを指示するポインタが含まれる。また、階層型データベース20は、項目に分けてセグメントが管理され、特定項目を素早く参照できるように項目を特定順番に並べ、その項目が出現する物理的な位置をまとめたインデックスを格納している。
【0037】
インデックスは、ソース・キーとポインタとを含み、ポインタは、対応するセグメント・データのRBAと、対応するセグメント・データに固有の識別子であるILKとを有する。ILKは、そのセグメント・データが存在するパーティションのパーティション番号と、そのセグメント・データが最初に保存された場所を示す初期RBAと、再編成回数を示す再編成番号(Reorg Num)と、セグメント・データの種類を示す情報であるセグメント・コード(SC)とを含む。RBAやILK等については、上記に詳述したので、ここでは説明を省略する。
【0038】
この階層型データベース20は、新しいセグメント・データの追加と不要になったセグメント・データの削除を繰り返すことにより、記憶領域に不要な隙間が多く発生する。
【0039】
ここで、図3には図示していないが、階層型データベース20と接続され、階層型データベース20の管理を行うものとして、データベース管理システムがある。このデータベース管理システムは、セグメント・データの格納の際、インデックスを作成し、セグメント・データの追加の際には、インデックスにポインタを追加する。また、データベース管理システムは、定期的に階層型データベース20の再編成処理をパーティション毎に行う。この再編成処理を行う場合、データベース管理システムは、インデックスは更新せず、パーティション毎にILDSと呼ばれる場所にデータ・セットとしてセグメント・データを識別するためのILKと新しい場所を示す最新RBAとを関連付けて格納させる。これにより、階層型データベース20には、各パーティションに対応した複数のILDSとインデックスが格納される。
【0040】
また、データベース管理システムは、外部装置からの要求によりセグメント・データを取得する場合、インデックスを使用して行うが、再編成処理を行った場合には、インデックス中のポインタが古いRBAをもつので、ILDSを参照し最新RBAを用いて、そのセグメント・データを取得する。しかしながら、セグメント・データの取得のたびに、ILDSから最新RBAを読み出し、セグメント・データの場所を探索することは、処理ステップが増加して処理時間がかかることから、ポインタのRBAをILDS内の最新RBAに更新する。
【0041】
整合性検証システム30は、ポインタが有するセグメント・データの保存先アドレスの整合性を判断する処理を行う。整合性検証システム30は、階層型データベース20のインデックスからポインタを読み出し、ポインタをRBA順にソートし、ソートされたポインタを、ILKを基に照合し、ILDS内にそのILKをもつレコードが存在するか否かをチェックすることにより、整合性の検証を行う。
【0042】
その結果、ILDS内にそのILKをもつレコードが存在しない場合、整合性がないことを意味するので、ポインタ・エラーをデータベース管理者へ報告する。
【0043】
図4は、整合性検証システム30として機能する情報処理装置のハードウェア構成の一例を示した図である。ハードウェア構成は、これに限られるものではないが、メモリ40と、少なくとも1つのプロセッサ41と、メモリ制御部42と、チャネル・サブシステム43と、少なくとも1つの制御装置44と、少なくとも1つの入出力デバイス45とを備える。
【0044】
メモリ40は、入出力デバイス45から入力されたデータやプログラムを格納し、プロセッサ41およびチャネル・サブシステム43からのアドレス指定に応答して、そのアドレスに格納しているデータ等をプロセッサ41およびチャネル・サブシステム43へ送る。
【0045】
プロセッサ41は、情報処理装置全体を制御し、少なくとも1つのOSを実行する。OSは、情報処理装置におけるプログラムの実行や入出力処理を制御するものである。メモリ制御部42は、バスを経由してメモリ40、プロセッサ41、チャネル・サブシステム43のそれぞれに接続される。このメモリ制御部42は、プロセッサ41やチャネル・サブシステム43が出したリクエストを一時的にキューに格納し、所定のタイミングでメモリ40へ送ることができる。
【0046】
チャネル・サブシステム43は、各制御装置44へ接続され、プロセッサ41の処理負荷を軽減するために、入出力デバイス45とメモリ40との間のデータ転送を制御する。これにより、プロセッサ41による演算処理と、入出力デバイス45による入出力処理とを並列に実行させることができ、処理効率を向上させることができる。
【0047】
制御装置44は、入出力デバイス45のデータ転送のタイミング等を制御する。入出力デバイス45は、制御装置44、チャネル・サブシステム43、メモリ制御部42を経由し、メモリ40との間でデータ転送を行う。入出力デバイス45としては、HDD、ディスプレイ、キーボード、プリンタ、通信デバイス、他の記憶装置を挙げることができ、入出力デバイス45の1つには、階層型データベース20が接続される。
【0048】
整合性検証システム30による整合性を検証する処理を実現するために、プログラムが記録された記録媒体が提供され、その記録媒体が入出力デバイス45の1つに接続され、そのプログラムが、制御装置44、チャネル・サブシステム43、メモリ制御部42を経由して、メモリ40へ送られ、メモリ40に格納される。格納されたプログラムは、再度それらを経由して入出力デバイス45に接続されたHDDへインストールされ、適宜プロセッサ41により読み出され、実行される。
【0049】
プログラムが格納される記録媒体としては、フレキシブル・ディスク、CD-ROM、DVD、SDカード、フラッシュメモリ等を挙げることができる。
【0050】
図5は、整合性検証システム30の構成を機能毎に示した機能ブロック図である。図5では、階層型データベース20の構成も例示しているが、階層型データベースについては図1を参照して既に説明したので、ここでは、整合性検証システム30について詳細に説明する。整合性検証システム30は、階層型データベース20に格納されているインデックス21からポインタを読み出す読出部31と、読み出されたポインタをRBA順にソートするソート部32と、ソートされたポインタを、そのポインタが指示するセグメント・データが保存されるパーティションに応じて2つ以上のパーティション群に振り分ける振分部33と、振り分けられたポインタを、ILKを基に、ILDS22内のILKと最新RBAとを含むILDSレコードと照合する処理を並列に実行する2つ以上の照合部34とを備える。図5に示す実施形態では、パーティションの数nと同数のn個の照合部34を備える構成とされている。
【0051】
読出部31は、階層型データベース20に格納されたインデックス21からポインタを読み出す。ポインタには、セグメント・データの固有の識別子ILKと、そのセグメント・データのRBAとが含まれており、これらの情報が読み出される。
【0052】
ソート部32は、読み出されたポインタに含まれるILK内のRBAのみをソート・キーとして、ポインタをソートする。RBAは、所定の基準アドレスと比較したデータ・セグメントが格納されている位置を示すものであるから、所定の基準アドレスに近い位置に格納されていれば、その値は小さく、その反対に遠い位置に格納されていれば、その値は大きくなる。また、各パーティションで基準アドレスは同じ値であるから、RBAが同じ値のものが複数存在する場合や、近似した値のものが複数存在する場合がある。
【0053】
ソート部32は、RBAが同じ値である場合は、読み出された順に、その他の場合には、RBAの値が小さい順にポインタを並べ替える。ソートされたポインタは、RBAの値が小さい順に並び替えられ、その順に振分部33へ入力される。
【0054】
振分部33は、入力されたポインタを、そのポインタが指示するセグメント・データが格納されているパーティションに応じて、そのパーティションに対応した照合部34へ入力するように振り分ける。図5に示す実施形態では、パーティションの数と、照合部34の数が同数であるため、これらは1対1で対応付けられているが、パーティションの数に比較して照合部34の数が少ない場合には、1つの照合部34に対応付けられるパーティションを、2つ以上のパーティションからなるパーティション群として対応付け、ポインタをパーティション群で振り分けることにより所望の照合部34へ入力することができる。この振り分けは、ポインタに含まれるILKを構成するパーティション番号を基に行うことができる。
【0055】
各照合部34へは、対応するパーティション毎にポインタが入力され、各照合部34では並列に、ILKを基にILDS22内のILDSレコードと照合し、ILKが一致するレコードが存在するか否かのチェックを行う。そのために、各照合部34は、各ILDS22からILDSレコードを読み出し取得する。照合部34は、ILKが一致するレコードが存在する場合は、整合性ありと判断し、一致していない場合は、最新のものではなく、整合性なしと判断する。
【0056】
照合部34が整合性なしと判断した場合、ポインタ・エラーをデータベース管理者へ報告する。
【0057】
図5に示す実施形態では、ILDS22内のILDSレコードを照合部34が読み出し、照合しているが、読出部31が読み出し、照合部34へ渡すように構成されていてもよいし、別途読出部を設け、その読出部が読み出すように構成されていてもよい。
【0058】
この処理を、図6を参照して詳細に説明する。この処理は、断片化を防止するために定期的に実施される。まず、ステップ600から処理を開始し、ステップ610で、インデックスからポインタを読み出す。ポインタは、格納順やソース・キー毎等、いかなる順に読み出すこともできる。次に、ステップ620で、読み出されたポインタを、RBAのみをソート・キーとしてソートする。
【0059】
ステップ620のRBA順にソートされると、図7(b)に示すように並べ替えられる。図7では、従来のパーティション番号とRBAの両方でソートした結果を、比較のために図7(a)に示している。図7(b)を参照すると、パーティション番号は互いに相違しているが、RBAは基準アドレス‘00000000’Xから近い順に並んでいる。
【0060】
再び図6を参照すると、ステップ630で、照合処理をパーティションの数だけ稼働させる。すなわち、パーティションの数と同じ数の照合部を、入力を受け付けると直ちに処理を開始することができる状態にさせる。ステップ640で、ソートされたポインタをRBA順に取り出し、パーティション番号毎に振り分ける。振り分けは、ポインタのILKに含まれるパーティション番号に基づき行われる。
【0061】
ステップ650で、パーティション番号に対応した照合処理へ入力し、ILKを基に、そのパーティション番号に対応したILDS内のILDSレコードと照合し、ILKが一致するレコードが存在するかをチェックする。あるパーティション番号に着目すると、それに対応した照合処理へ入力されるポインタは、RBA順に入力されることから、skip sequential readによる照合処理が行われており、これは、効率の良い処理である。また、複数の照合処理が稼働し、それら複数の照合処理へポインタが順に入力されることから、同時に複数のポインタの照合処理が並列に行われる。このように複数の照合処理を並列に行うことで、処理時間を短縮することができる。すべてのポインタについて照合処理が終了したところで、ステップ660においてこの処理を終了する。
【0062】
図5に示す実施形態では、振分部33から照合部34へ直接受け渡しているが、振分部33により同じパーティションとして振り分けられたポインタが連続する場合、前のポインタの照合処理が終了するまで次のポインタの入力を受け付けない。これでは、さらに次に別の照合部で照合処理を行うことが可能であるのに、その照合処理を行うことができず、処理時間がかかってしまうという問題がある。
【0063】
そこで、図8に示すように照合部34と同じ数のキュー部35を設け、照合部34が入力を受け付けるまでそのポインタをキュー部35で一時的に保持するように構成する。このキュー部35を備えることで、振分部33は、同じパーティションとして振り分けられたポインタが連続していても、それらポインタをキュー部35に入力し、保持させておけばよく、その後の振り分け処理を停止することなく、継続して実施することができる。なお、キュー部35は、FIFOキューとして構成することができ、FIFOキューは、先に入力されたポインタを先に出力するため、ソートしたRBA順に照合処理を行うことができる。
【0064】
本発明のシステムにおける処理時間がどれだけ短縮されるかを確認するために、従来のシステムにおける処理時間と比較する比較実験を行った。従来のシステムは、パーティション番号とRBAでソートし、照合処理を行うPointer Checker V2を実装したシステムであり、本発明のシステムは、RBAのみでソートし、照合処理を行う、従来のPointer Checker V2を改良したPointer Checker V3を実装したシステムである。
【0065】
データベースは、1.5GBの記憶容量のものを使用し、5つのパーティションに分け、ILDSを5つ格納している。ILDSに対応するRBAの分布は、図9に示すように、同一ではないが、ほぼ同じような分布とされている。なお、図9では、パーティション1から5まで順に並べられている。ここで、図9中のBINとは、RBAが取りうる値‘0000000’X〜‘FFFFFFFF’Xを200等分し、番号を1から順に割り振ったものである。データベースに格納されるデータは、ルート・セグメントの数を200000とし、データベース管理システムとして4つのCPUを備えるz/OS(登録商標)システムで処理し、処理時間を測定した。z/OS(登録商標)システムとは、z/OS(登録商標)をOSとして組み込んだコンピュータシステムである。
【0066】
測定結果は、図10に示すように、従来のシステム(V2で表わす。)では処理時間が平均42.3秒であるのに対し、本発明のシステム(V3で表わす。)では処理時間が34.0秒であり、従来のシステムに対して約20%処理時間を短縮することができた。これを照合処理(図10中、濃い色で示される上側部分)のみについて参照してみると、従来のシステムでは平均17.0秒であったものが、本発明のシステムでは平均8.3秒と、約半分の処理時間で処理することができている。
【0067】
このことから、RBAのみの1回のソートで、かつ複数の照合部による処理を並列に実行することにより、処理時間を大幅に短縮することができていることが見出された。
【0068】
これまでに説明した実施形態では、照合部34の数とパーティションの数とが同数として詳細に説明してきた。しかしながら、本発明では、照合部34の数とパーティションの数とが同数でなくてもよい。そこで、同数でない場合について詳細に説明するべく、例えば、並列に実行される照合部34の数を、パーティションの数の半分にした場合について説明する。この場合の構成例を、図11に示す。図11では、1つの照合部34に、2つのパーティションに存在するセグメント・データを指示するポインタが入力されている。
【0069】
照合部の数を2として並列に稼働させ、4つのパーティションに存在するセグメント・データを指示するポインタを処理する場合について説明する。2つのパーティションに存在するセグメント・データを指示するポインタを1つの照合部34により処理する場合、その照合部34へ入力されたポインタが、いずれのパーティションに存在するセグメント・データを指示するものであるかを識別する必要がある。これは、セグメント・データの場所をRBAで示しているためである。そこで、この実施形態では、処理順番号を導入する。
【0070】
4つのパーティションに対し、1〜4の番号を割り当て、1つの照合部(第1照合部)に対し、パーティション1番、2番を割り当て、もう1つの照合部(第2照合部)に対し、パーティション3番、4番を割り当てる。
【0071】
このとき、第1照合部では、パーティション1番に存在するセグメント・セグメントを指し示すポインタを1番目に処理し、パーティション2番に存在するセグメント・セグメントを指し示すポインタを2番目に処理するように、ソート部32では、パーティション1番に存在するセグメント・セグメントを指し示すポインタに対し、処理順番号1を割り当て、パーティション2番に存在するセグメント・セグメントを指し示すポインタに対し、処理順番号2を割り当てる。同様にして、第2照合部では、パーティション3番に存在するセグメント・セグメントを指し示すポインタを1番目に処理し、パーティション4番に存在するセグメント・セグメントを指し示すポインタを2番目に処理するように、ソート部32では、パーティション3番に存在するセグメント・セグメントを指し示すポインタに対し、処理順番号1を割り当て、パーティション4番に存在するセグメント・セグメントを指し示すポインタに対し、処理順番号2を割り当てる。
【0072】
その後、ソート部32は、RBAと処理順番号とでソートし、照合部34は、RBA順で、かつ処理順番号が1、2、1、2、…の順に入力を受け付け、照合処理を行う。ある照合部34が処理する、あるパーティション番号に着目してみると、RBA順に入力されることから、RBA順に照合処理を行うものである。
【0073】
図12を参照して、この処理について詳細に説明する。まず、ステップ1200から処理を開始し、ステップ1210で、インデックスからポインタを読み出す。次に、ステップ1220で、読出部31が読み出したポインタに対し、ソート部32は、処理順番号を割り当てる。例えば、パーティション1番に存在するセグメント・データを指し示すポインタに対しては、処理順番号1を割り当てる。次に、パーティション2番に存在するセグメント・データを指し示すポインタに対しては、処理順番号2を割り当てる。
【0074】
ステップ1230において、ソート部32は、処理順番号が割り当てられたポインタを、RBAを第1のソート・キーとして、処理順番号を第2のソート・キーとして、ソート処理を実行する。このソート処理では、RBA順で、かつ処理順番号が1、2、1、2、…の順に並ぶようにポインタが並べ替えられる。
【0075】
ステップ1240で、照合処理をパーティションの数だけ稼働させる。すなわち、パーティションの数の半分の照合部を、入力を受け付けると直ちに処理を開始することができる状態にさせる。ステップ1250で、ソートされたポインタを順に取り出し、パーティション1番とパーティション2番とからなるパーティション群と、パーティション3番とパーティション4番とからなるパーティション群とに振り分ける。振り分けは、ポインタのILKに含まれるパーティション番号に基づき行われる。
【0076】
そして、ステップ1260で、パーティション群に対応した照合処理へ入力し、ILKを基に、そのパーティション番号に対応したILDS内のILDSレコードと照合し、ILKが一致するレコードが存在するかをチェックする。複数の照合処理が稼働し、それら複数の照合処理へポインタが順に入力されることから、同時に複数のポインタの照合処理が並列に行われる。このように複数の照合処理を並列に行うことで、処理時間を短縮することができる。すべてのポインタについて照合処理が終了したところで、ステップ1270においてこの処理を終了する。
【0077】
ここでは、1つの照合部に対し、2つのILDS内のILDSレコードを担当するように構成しているが、2つに限られるものではなく、3つ以上であってもよく、反対に、1つのILDS内のILDSレコードに対し、2つ以上の照合部により処理させることも可能である。
【0078】
これまで、本発明のシステム、そのシステムにより実行される方法を、図面を参照して詳細に説明してきたが、本発明は上記実施の形態に限定されるものではなく、他の実施形態や、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【図面の簡単な説明】
【0079】
【図1】HALDBの構成例を示した図。
【図2】従来のソートおよび照合処理を例示した図。
【図3】本発明のデータベース管理システムを含むデータベース・システムの構成例を示した図。
【図4】本発明のデータベース管理システムのハードウェア構成を例示した図。
【図5】本発明のデータベース管理システムの第1実施形態を示した機能ブロック図。
【図6】図5に示すシステムが実行するソートおよび照合処理の流れを示したフローチャート図。
【図7】ポインタをソートした結果を例示した図。
【図8】本発明のデータベース管理システムの第2実施形態を示した機能ブロック図。
【図9】各パーティションに格納されているレコード数を示した図。
【図10】従来のシステムによる処理時間と、本発明のシステムによる処理時間とを比較した図。
【図11】本発明のデータベース管理システムの第3実施形態を示した機能ブロック図。
【図12】図10に示すシステムが実行するソートおよび照合処理の流れを示したフローチャート図。
【符号の説明】
【0080】
1、2、10…パーティション、11…インデックス、12…ILDS、13…テーブル、20…階層型データベース、21…インデックス、22…ILDS、30…整合性検証システム、31…読出部、32…ソート部、33…振分部、34…照合部、35…キュー部、40…メモリ、41…プロセッサ、42…メモリ制御部、43…チャネル・サブシステム、44…制御装置、45…入出力デバイス

【特許請求の範囲】
【請求項1】
複数のパーティションを有する階層型データベースに格納されたインデックスに含まれるポインタにより指示されるセグメント・データの保存先アドレスの整合性を検証するシステムであって、
前記セグメント・データを識別するためのセグメント識別子と該セグメント・データの保存先アドレスとを含む前記ポインタを、前記インデックスから読み出す読出部と、
読み出された前記ポインタをアドレス順にソートするソート部と、
ソートされた前記ポインタを、該ポインタが指示するセグメント・データが保存されるパーティションに応じて2以上のパーティション群に振り分ける振分部と、
振り分けられた前記ポインタを、セグメント・データのセグメント識別子と該セグメント・データの最新の保存先アドレスとを含むデータ・セットと照合する処理を、パーティション群毎に並列に実行する2以上の照合部とを備える、システム。
【請求項2】
前記照合部は、前記パーティションと同数設けられ、前記振分部は、前記ソートされたポインタをパーティション毎に振り分ける、請求項1に記載のシステム。
【請求項3】
前記照合部の数が前記パーティションの数より少ない場合、前記照合部の少なくとも1つが、少なくとも2つのパーティションに保存されたセグメント・データを指示するポインタを処理するために、前記ソート部は、前記少なくとも2つのパーティションの各々を識別するために処理順識別子を割り振り、前記処理順識別子で表される処理順と前記アドレス順とでソートする、請求項1に記載のシステム。
【請求項4】
前記振分部により振り分けられたポインタを前記パーティション群に対応した前記照合部へ入力するために、一時的に該ポインタを記憶する2以上のキュー部をさらに備える、請求項1に記載のシステム。
【請求項5】
複数のパーティションを有する階層型データベースに作成されたインデックスに含まれるポインタにより指示されるセグメント・データの保存先アドレスの整合性を検証する方法であって、前記方法は、読出部と、ソート部と、振分部と、2以上の照合部とを備える整合性検証システムにより実行され、
前記読出部により、前記セグメント・データを識別するためのセグメント識別子と該セグメント・データの保存先アドレスとを含む前記ポインタを、前記インデックスから読み出すステップと、
前記ソート部により、読み出された前記ポインタをアドレス順にソートするステップと、
前記振分部により、ソートされた前記ポインタを、該ポインタが指示するセグメント・データが保存されるパーティションに応じて2つ以上のパーティション群に振り分けるステップと、
前記2以上の照合部により、振り分けられた前記ポインタを、セグメント・データのセグメント識別子と該セグメント・データの最新の保存先アドレスとを含むデータ・セットと照合する処理を、パーティション群毎に並列に実行するステップとを含む、方法。
【請求項6】
前記照合部は、前記パーティションと同数設けられ、前記振り分けるステップでは、前記ソートされたポインタをパーティション毎に振り分ける、請求項5に記載の方法。
【請求項7】
前記照合部の数が前記パーティションの数より少ない場合、前記照合部の少なくとも1つが、少なくとも2つのパーティションに保存されたセグメント・データを指示するポインタを処理するために、前記ソートするステップでは、前記少なくとも2つのパーティションの各々を識別するために処理順識別子を割り振り、前記処理順識別子で表される処理順と前記アドレス順とでソートする、請求項5に記載の方法。
【請求項8】
前記振り分けるステップで振り分けられたポインタを前記パーティション群に対応した前記照合部へ入力するために、一時的に該ポインタを記憶するステップをさらに含む、請求項5に記載の方法。
【請求項9】
複数のパーティションを有する階層型データベースに格納されたインデックスに含まれるポインタにより指示されるセグメント・データの保存先アドレスの整合性を判断する処理を実行するためのコンピュータ可読なプログラムであって、前記プログラムは、
前記セグメント・データを識別するためのセグメント識別子と該セグメント・データの保存先アドレスとを含む前記ポインタを、前記インデックスから読み出すステップと、
読み出された前記ポインタをアドレス順にソートするステップと、
ソートされた前記ポインタを、該ポインタが指示するセグメント・データが保存されるパーティションに応じて2つ以上のパーティション群に振り分けるステップと、
振り分けられた前記ポインタを、セグメント・データのセグメント識別子と該セグメント・データの最新の保存先アドレスとを含むデータ・セットと照合する処理を、パーティション群毎に並列に実行するステップとを前記コンピュータに実行させる、プログラム。
【請求項10】
前記振り分けるステップは、前記ソートされたポインタをパーティション毎に振り分ける、請求項9に記載のプログラム。
【請求項11】
前記ソートするステップは、少なくとも2つのパーティションの各々を識別するために処理順識別子を割り振り、前記処理順識別子で表される処理順と前記アドレス順とでソートする、請求項9に記載のプログラム。
【請求項12】
前記振り分けるステップで振り分けられたポインタを一時的に記憶するステップを実行させる、請求項9に記載のプログラム。
【請求項13】
複数のパーティションを有する階層型データベースに格納されたインデックスに含まれるポインタにより指示されるセグメント・データの保存先アドレスの整合性を検証するシステムであって、
前記セグメント・データを識別するためのセグメント識別子と該セグメント・データの保存先アドレスとを含む前記ポインタを、前記インデックスから読み出す読出部と、
読み出された前記ポインタをアドレス順にソートするソート部と、
ソートされた前記ポインタを、該ポインタが指示するセグメント・データが保存されるパーティションに応じて2以上のパーティション群に振り分ける振分部と、
振り分けられた前記ポインタを、セグメント・データのセグメント識別子と該セグメント・データの最新の保存先アドレスとを含むデータ・セットと照合する処理を、パーティション群毎に並列に実行する2以上の照合部とを備え、
前記照合部は、前記パーティションと同数設けられ、前記振分部は、前記ソートされたポインタをパーティション毎に振り分け、
前記照合部の数が前記パーティションの数より少ない場合、前記照合部の少なくとも1つが、少なくとも2つのパーティションに保存されたセグメント・データを指示するポインタを処理するために、前記ソート部は、前記少なくとも2つのパーティションの各々を識別するために処理順識別子を割り振り、前記処理順識別子で表される処理順と前記アドレス順とでソートし、
前記振分部により振り分けられたポインタを前記パーティション群に対応した前記照合部へ入力するために、一時的に該ポインタを記憶する2以上のキュー部をさらに備える、システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2010−61604(P2010−61604A)
【公開日】平成22年3月18日(2010.3.18)
【国際特許分類】
【出願番号】特願2008−229365(P2008−229365)
【出願日】平成20年9月8日(2008.9.8)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【復代理人】
【識別番号】100110607
【弁理士】
【氏名又は名称】間山 進也
【Fターム(参考)】