(57)【要約】【課題】  ストレージ容量に制限がある組込みデバイスにおいても、ストレージ領域上に複数の論理領域を設ける事無く、データベースへの書込みを確実に済ませるための技術を提供すること。【解決手段】  データベースにデータを書き込む前に該データベースから退避させるべきデータを退避データとし、該退避データを格納可能な空き容量を有する退避先をデータベース内から検索する。検索した退避先に退避データを格納した後、データをデータベースに書き込み、該書き込みの終了後、退避先から退避データを削除する。【選択図】図１
2013161195.tif 000002
【特許請求の範囲】
【請求項１】
データベースにデータを書き込む前に該データベースから退避させるべきデータを退避データとし、該退避データを格納可能な空き容量を有する退避先を前記データベース内から検索する検索手段と、
前記検索手段が検索した退避先に前記退避データを格納した後、前記データを前記データベースに書き込み、該書き込みの終了後、前記退避先から前記退避データを削除する処理手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記検索手段は、
前記退避先として予め指定された記憶領域が前記退避データを格納可能な空き容量を有するか否かを判断し、該記憶領域が前記退避データを格納可能な空き容量を有さないと判断した場合に前記検索を行う
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記処理手段は、前記データベース内の、データを格納可能なインデックス格納領域のノード群のうち、空き容量の大きいノードから順に使用して前記退避データを格納する
ことを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記処理手段は、前記データベース内の、データを格納可能なインデックス格納領域のノード群のうち、最も低い優先度が設定されたノードを使用して前記退避データを格納する
ことを特徴とする請求項１又は２に記載の情報処理装置。
【請求項５】
前記検索手段は、
前記データベース内の更新対象データを更新する前に該更新対象データを退避データとし、該退避データを格納可能な空き容量を有する退避先を前記データベース内から検索する
ことを特徴とする請求項１乃至４の何れか１項に記載の情報処理装置。
【請求項６】
情報処理装置が行う情報処理方法であって、
前記情報処理装置の検索手段が、データベースにデータを書き込む前に該データベースから退避させるべきデータを退避データとし、該退避データを格納可能な空き容量を有する退避先を前記データベース内から検索する検索工程と、
前記情報処理装置の処理手段が、前記検索工程で検索した退避先に前記退避データを格納した後、前記データを前記データベースに書き込み、該書き込みの終了後、前記退避先から前記退避データを削除する処理工程と
を備えることを特徴とする情報処理方法。
【請求項７】
コンピュータを、請求項１乃至５の何れか１項に記載の情報処理装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースにおけるデータの書込み処理技術に関するものである。
【背景技術】
【０００２】
一般的に、データベースのトランザクション中のデータ書込み処理は、処理中のデバイス電源断によりデータが不整合となる事を回避する為の構成を備える。具体的には、一旦退避データを永続化可能な記憶領域に仮書きした後、本来書込む記憶領域にデータを書込むという手順を踏む。これにより仮に電源断が発生した場合でも書込み前または書込み完了後の必ずいずれかの状態にデータベースを復旧することでトランザクションのデータ整合性を保証する事が可能となる。ただし、退避データの書込みには本来書込むべき記憶領域とは別の領域が必要となる。そのため、同一サイズのデータ更新等、データベース本体のサイズが増加しない更新処理であっても退避データ書込み先のストレージ容量が不足すると書込みエラーとなり、トランザクションを終了させる事ができない。
【０００３】
近年、MFPに代表される１台で複数の機能を備えたデバイス内部には印刷、コピー、FAX等の機能毎に使用する用紙サイズを初めとする多くの設定値が格納されている。また、近年デバイスが常時ネットワークに接続されて稼動する状況が増えており、デバイス内部に格納されるデータ件数は益々増加している。このような状況を受け、デバイスにおいても統一的なデータ管理構成としてデータベースが導入され、設定値をデータベースに格納して使用する構成が取られつつある。
【０００４】
一方、MFP等のデバイスにおいては、課金情報等のビジネス上極めて重要なデータが存在するため、データ書込み処理の中断はデバイス障害が致命的な状態以外では発生してはならない。
【０００５】
このようなストレージ容量不足によってデータ書込み処理が中断してしまう問題を解決するための提案として、特許文献１では、記憶領域の容量不足時の容量拡充方法が提案されている。これによれば、ストレージ装置に設けられた論理領域の容量が不足した場合、他に未使用の領域が存在する場合は他の論理領域の容量を容量不足の論理領域に割り当てることで容量不足を回避している。また、他に未使用領域が存在しない場合は事前に設定した優先レベルよりも低い他の論理領域の冗長を解除し、解除した論理領域の容量を容量不足の論理領域に割り当てることで容量不足を回避している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−３４３９２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１による方法は、ストレージ領域上に複数の論理領域を設け、かつそれらの領域の割り当て状況を動的に管理するための仕組みが必要となる。しかし、MFPを始め、組込みデバイスではストレージ容量に制限があるため、優先度レベルが指定可能な程冗長に多くの論理領域構成を確保することは困難である。
【０００８】
本発明は、このような問題に鑑みてなされたものであり、ストレージ容量に制限がある組込みデバイスにおいても、ストレージ領域上に複数の論理領域を設ける事無く、データベースへの書込みを確実に済ませるための技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の目的を達成するために、例えば、本発明の情報処理装置は、データベースにデータを書き込む前に該データベースから退避させるべきデータを退避データとし、該退避データを格納可能な空き容量を有する退避先を前記データベース内から検索する検索手段と、前記検索手段が検索した退避先に前記退避データを格納した後、前記データを前記データベースに書き込み、該書き込みの終了後、前記退避先から前記退避データを削除する処理手段とを備えることを特徴とする。
【発明の効果】
【００１０】
本発明の構成によれば、退避用のストレージ領域が不足する状況であっても、データベースへの書込みが中断される事無く確実に処理を済ませることができる。
【図面の簡単な説明】
【００１１】
【図１】情報処理装置の構成例を示すブロック図。
【図２】情報処理装置の使用例を示す図。
【図３】退避データの書き込み手順を説明する図。
【図４】データベースの構成例を示す図。
【図５】退避データの書き込み手順を説明する図。
【図６】情報処理装置が行う処理のフローチャート。
【図７】ステップＳ６０４における処理のフローチャート。
【図８】ステップＳ７０６における処理のフローチャート。
【図９】退避データの書き込み手順を説明する図。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載の構成の具体的な実施例の１つである。
【００１３】
［第１の実施形態］
先ず、本実施形態に係る情報処理装置の構成例について、図１のブロック図を用いて説明する。本実施形態に係る情報処理装置は、１台で印刷、コピー、FAX等の複数の機能を備えたＭＦＰ（複合機）であるものとして説明する。
【００１４】
ＣＰＵ１０１は、ＲＯＭ１０７やＲＡＭ１０８、ハードディスク１０９に格納されているコンピュータプログラム（ブートプログラムや制御プログラムなど）やデータ（各種初期データや各種コンテンツデータなど）を用いて各種の処理を実行する。更にＣＰＵ１０１は、入力部１０２や通信部１０５を介して本装置に入力された各種のデータも用いて処理を実行する。これによりＣＰＵ１０１は、印刷処理、コピー処理、スキャン処理、画面制御処理、データ登録処理、データ検索処理等のための演算、論理判断等を行い、バス（ＢＵＳ）１０６に接続された各部を制御する。
【００１５】
ＢＵＳ１０６には、図１に示す如く、情報処理装置の各部が接続されており、各部はこのＢＵＳ１０６を介して互いに通信可能である。例えば、ＣＰＵ１０１の制御対象である各部に対する指示信号であるアドレス信号、コントロール信号はこのＢＵＳ１０６を介して転送される。また、各部間のデータ転送もこのＢＵＳ１０６を介して行われる。
【００１６】
入力部１０２はボタン群により構成されており、本装置のユーザが操作することで、各種の指示をＣＰＵ１０１に対して入力することができる。表示部１０３は様々な画面を表示可能な液晶ディスプレイ等である。なお、入力部１０２と表示部１０３とを一体化させて、タッチパル画面としても良い。
【００１７】
スキャナ１０４は、紙などの記録媒体上に記録されている情報を画像情報として読み取るものであり、読み取られた画像情報は、ＲＡＭ１０８やハードディスク１０９に格納される。また、ＣＰＵ１０１がＯＣＲのコンピュータプログラムを実行することで、読み取られた画像情報中の文字を認識し、認識した文字のコードをＲＡＭ１０８やハードディスク１０９に格納するようにしても良い。
【００１８】
通信部１０５は、有線及び／又は無線のネットワークを介して外部装置とのデータ通信を行う。本実施形態では、情報処理装置は、ネットワークを介してＰＣ（パーソナルコンピュータ）やＭＦＰ等の外部装置に接続されているものとし、これらの装置とのデータ通信は、通信部１０５が行うものとする。これらの装置とのデータ通信により、該装置内の空きストレージ領域をデバイス外の書込み領域として探索し、利用することができる。
【００１９】
印刷部１０１０は、紙などの記録媒体上に画像や文字などを印刷可能な印刷機構を有する装置であり、例えば、プリンタである。プリンタの詳細な構成については本実施形態の範疇ではなく、如何なる構成を採用しても良い。
【００２０】
ＲＯＭ１０７には、周知のブートプログラムや、各種初期データ（情報処理装置の設定データなど）に加え、情報処理装置が行うものとして後述する各処理をＣＰＵ１０１に実行させるためのコンピュータプログラムを含む制御プログラムが格納されている。
【００２１】
ＲＡＭ１０８は、ハードディスク１０９からロードされたコンピュータプログラムやデータ、ＲＯＭ１０７からロードされたコンピュータプログラムやデータ、通信部１０５を介して外部から受信したデータ、を一時的に記憶するためのエリアを有する。更にＲＡＭ１０８は、ＣＰＵ１０１が各種の処理を実行する際に用いる各種ワークエリアを有する。また、ＲＡＭ１０８は、データベースを構成する各ノードが保持するものとして後述するデータベースキャッシュを有する。即ち、ＲＡＭ１０８は、各種のエリアを適宜提供することができる。
【００２２】
ハードディスク１０９には、ＯＳ（オペレーティングシステム）や、印刷、コピー等の履歴および課金情報等を記憶する為のデータベース等が保存されている。また、ハードディスク１０９には、一時領域が設けられ、この一時領域には、データベースへのデータ書込み中に電源断が発生した場合のリカバリに必要な退避データが保存される。即ち、この一時領域は、退避データの退避先として予め指定された記憶領域である。
【００２３】
また、この一時領域には、ユーザが入力部１０２を操作することで再印刷指示が入力された場合に使用する再印刷用データ等の各種コンテンツデータの格納場所としても使用される。通常、再印刷用データについては、ユーザが入力部１０２を操作して削除指示が入力されるまで一時領域内に保持される。
【００２４】
なお、本実施形態では、上記の制御プログラムは、ＲＯＭ１０７に格納されているものとしているが、ハードディスク１０９に格納するようにしても良い。これより、コンピュータプログラムを固定化せず、途中で修正可能に構成することができ、柔軟なシステムを実現することができる。
【００２５】
なお、ハードディスク１０９の代わりに、ＣＤ−ＲＯＭやＳＤカード、ＣＦカードなどの他の記憶装置を用いてもかまわないし、これらと併用してもかまわない。また、図１に示した構成はあくまで一例であり、以下に説明する機能を実現可能な構成であれば、如何なる構成を採用しても良い。
【００２６】
また、上記の通り、本実施形態に係る情報処理装置は、ＣＰＵ１０１がコンピュータプログラムやデータを用いて処理を実行することで、目的とする機能を達成するが、ＣＰＵと協調して動作するＡＳＩＣなどの制御回路がこれらの機能を実現させてもよい。
【００２７】
また、ＣＰＵと制御回路との協調によってこれらの機能が実現されてもよい。また、ＣＰＵは単一のものである必要はなく、複数であってもよい。この場合、複数のＣＰＵは分散して処理を実行する。また、複数のＣＰＵは単一のコンピュータに配置されていてもよいし、物理的に異なる複数のコンピュータに配置されていてもよい。なお、ＣＰＵがソフトウェアを実行することで実現する機能が専用の回路によって実現されてもよい。
【００２８】
次に、本実施形態に係る情報処理装置の使用例について、図２を用いて説明する。図２では、本実施形態に係る情報処理装置は、ＭＦＰ２０１として示されている。図２では、ユーザがＭＦＰ２０１を使用して原稿のコピーを実施している状況を示している。
【００２９】
このとき、ハードディスク１０９上にはファイルシステム領域２０２が構築されている。ファイルシステム領域２０２内には、コピー履歴およびその課金情報等を格納したデータベースを格納する為の領域であるデータベースファイル領域２０３が存在する。また、ファイルシステム領域２０２内には、電源断発生時のリカバリに用いる退避データ２０５をデータベースへの上書きに先んじて書込むための一時領域２０４が存在する。
【００３０】
ここでは、一時領域２０４が未削除の再印刷用データによって占有されてしまった状況を想定する。この状況でコピーを実施しても、一時領域２０４が未削除の再印刷用データによって占有されてしまっているため、データベースへの課金情報書込みに先んじて退避データ２０５を一時領域２０４に書き込もうとしてもできない。そこで本実施形態では、一時領域２０４の代わりとなる領域（代替書込み可能な領域）を探索する。
【００３１】
図２では、探索によって代替書込み可能な領域としてインデックスの空き領域が見つかった場合を示している。この結果、退避データ２０５はインデックスの空き領域に代替書込みを行い、その後、通常通りのデータベース上書き書込みを行い、データベースへの書込み処理が完了する。最後に、コピー処理が完了した旨をユーザに表示することでコピーが完了する。万が一、上記書込み処理途中でデバイス電源断が発生した場合は、インデックスの空き領域に代替書込み処理を行った退避データ２０５を使ってリカバリ処理を行うことができる。
【００３２】
次に、データベースに対するデータ書き込み（データ更新）に先んじて、整合性保証のための退避データの書込み手順の一例を、図３を用いて説明する。図３（ａ）は、データベースにデータを書き込む（更新する）直前におけるファイルシステム領域３０１と、ＲＡＭ１０８上に設けられたデータベースキャッシュ３０３と、を示している。
【００３３】
ファイルシステム領域３０１中のデータベースファイル領域３０２は、固定サイズのＰａｇｅ（図３では１〜５）によって構成される。ここでは、データベースファイル領域３０２内のＰａｇｅ３０４内に格納されたレコードを更新し、コミットを行う直前の状況を示している。一旦データベースキャッシュ３０３上に読み込まれたＰａｇｅ３０４の更新後のデータがキャッシュＰａｇｅ３０５として存在している。データベースキャッシュ３０３は、ハードディスク等の比較的読み書きに時間のかかるデータへの高速なアクセスに用いる。また、トランザクション処理途中に変更されたデータをファイルに書き出す事無く保持し、複数トランザクション間のデータ整合性を維持する目的も果たしている。
【００３４】
図３（ｂ）〜（ｄ）は、データベース更新処理においてコミット処理中のデータ書込み処理手順を示している。
【００３５】
図３（ｂ）は、コミット処理におけるデータ書込み手順の最初の手順として退避データの書込み手順を実行した後の状態を示している。データベースファイル領域３０２にキャッシュＰａｇｅ３０５を書込む前に、データベースファイル領域３０２内のＰａｇｅ３０４内のデータを退避データ３０６として一時領域に書込む。退避データ３０６の書込みが完了した時点でデータベースファイル領域３０２への書込み途中に電源断が発生し、データが不整合状態になったとしても、この退避データ３０６から元の状態に復元することができる。
【００３６】
図３（ｃ）は図３（ｂ）の次の手順としてデータベースファイル領域３０２にキャッシュＰａｇｅ３０５を書込んだ後の状態を示している。ここで書換え後のデータベースファイル領域３０２内のＰａｇｅ３０４には新たにキャッシュＰａｇｅ３０５が上書きされている。
【００３７】
図３（ｄ）はコミット処理の最後の手順を実施した後の状態を示している。ここでは退避データ３０６が一時領域から削除され、データベースキャッシュ３０３内のキャッシュＰａｇｅ３０５についても更新が反映され、他のＰａｇｅ同様、データベースファイル領域３０２との変更差異は無い状態として管理される。
【００３８】
以上の手順により、データベースファイル書込み処理途中でデバイス電源断が発生しても、更新前のデータに書き戻すリカバリ処理を実施することができるため、データの整合性を維持する事ができる。
【００３９】
次に、データベースの構成例について、図４を用いて説明する。図４（ａ）は、データベース全体の構成を示している。データベースは表４０１とインデックス群４０２から構成される。インデックス群４０２は更に細分化され、単一カラムインデックス４０３および４０４、複合カラムインデックス４０５、等から構成される。
【００４０】
図４（ｂ）は、インデックスの構成を示している。インデックスの論理構成は、基本的にはいわゆるＢ−Ｔｒｅｅの構造である。インデックスは複数の固定長のノードで構成され、ノード内に各キーがバランスされて格納される。各ノードは下位ノードへのリンク４０６とキー４０７からなり、最も上位のノード（ルートノード）から、キーの大小関係を判断してリンクをたどることによって目的のキーを参照できる。最下層のノード（リーフノード）にはキー４０８とＲｏｗＩＤ４０９が対応づけられて格納される。ここで得られたＲｏｗＩＤに従って表を参照することにより、目的の行データを参照することができる。
【００４１】
次に、インデックス内部の空き領域への退避データの書込み処理について、図５を用いて説明する。図５（ａ）は、データベースのノードの物理構成を示している。先頭付近にはノード内の空き領域、セル数等、ノードに関する管理情報を格納したヘッダ領域５０１が存在する。次の領域にはセルへのリンク５０２が格納される。また末尾付近には実際のセル５０４が格納される。各セルは下位ノードへのリンク５０６とキー５０７から構成される。ノードの末尾のリンク５０５は、Ｂ−Ｔｒｅｅの論理構成において本ノード配下に存在する値の内、末尾の値を格納する下位ノードへのリンクを意味する。セルへのリンクとセルの間には空き領域が配置される。このように、セルへのリンク５０２とセル５０４が分離された構造になっているのは、キーのソート順にセルを取得できるようにする必要があり、セル挿入の際のソート順維持を高速化するためである。セルは一般にデータ長が長いため、セルへのリンクの再配置だけで、ソート順を維持した高速の挿入処理が可能となる。空き領域のサイズは任意のサイズに決めることができるが、挿入のことを考えて、通例、全体の半分程度の量を確保しておく。
【００４２】
図５（ｂ）は、データベースへの上書きに先んじて退避データを書込むための一時領域の容量が不足した場合に、代替書込み領域としてインデックスの空き領域に退避データを書込んだ後の状態を示している。この場合、本ノードが代替書込みに使用された事を示す退避データサイズ等の情報がヘッダ領域５０８に書込まれている。退避データ領域５０９は、インデックスの空き領域に書込まれた退避データを格納する領域であり、ヘッダ領域５０８にはこの領域のサイズ情報が格納される。各退避データ領域は下位ノードへのリンク５０１０と退避データ本体５０１１から構成される。下位ノードへのリンク５０１０によって複数の退避データ領域を使って単一のノードに収める事ができないサイズの退避データを書込む事ができる。退避データ領域の有無についてはデータベースファイルの先頭Ｐａｇｅのヘッダ領域に退避データを格納する先頭ノードへのリンク情報が格納されており、この情報を元に退避データ領域を使ったリカバリ処理をすべきかを判断する。
【００４３】
次に、本実施形態に係る情報処理装置が行う処理について、同処理のフローチャートを示す図６を用いて説明する。なお、図６のフローチャートに従った処理をＣＰＵ１０１に実行させるためのコンピュータプログラムは、上記の制御プログラムに含まれている。然るにＣＰＵ１０１がこのコンピュータプログラムをＲＡＭ１０８に読み出して実行することで、情報処理装置は、図６の各ステップにおける処理を実行することになる。このことから、各ステップにおける処理の主体は何れも、ＣＰＵ１０１となる。
【００４４】
ステップＳ６０１では、情報処理装置の初期化処理を行う。この初期化処理には、各種パラメータの初期化処理や初期画面を表示部１０３に表示したりする処理が含まれている。
【００４５】
ステップＳ６０３では、入力部１０２や通信部１０５等からの入力に応じて、何らかのイベントが発生したか否かを判断する。例えば、ユーザが入力部１０２を操作して印刷やコピーの指示を入力したことに応じて印刷やコピーのイベントが発生したか否かを判断する。実際には、印刷やコピーの指示を受けると、ＣＰＵ１０１が対応するイベントを発生させる。この判断の結果、イベントが発生した場合には、処理はステップＳ６０４に進み、発生していない場合は、ステップＳ６０３で待機する。
【００４６】
ステップＳ６０４では、発生したイベントの種別に応じた処理を実行する。ステップＳ６０４における処理の詳細については、図７のフローチャートを用いて後述する。
【００４７】
ステップＳ６０５では、上記の各処理の処理結果や処理終了を表示部１０３に表示する。表示方法は特定の方法に限るものではないが、ステップＳ６０５における表示処理は、検索結果出力の画面表示、エラーがあった場合のエラー表示、正常な処理が行われた場合の画面表示への反映など通常広く行われる処理である。
【００４８】
次に、上記のステップＳ６０４における処理の詳細について、同処理のフローチャートを示す図７を用いて説明する。図７のフローチャートでは、印刷、コピー、FAX処理における退避データの取り扱いについて述べるが、画面制御処理、スキャン処理などの他の処理における退避データの取り扱いも考え得る。図７のフローチャートの処理は、印刷、コピー、FAX等のジョブ実行に伴う課金情報等をデータベースに書込む際に呼ばれる。
【００４９】
ステップＳ７０１では、データベース中のデータのうち上書き対象（更新対象）となるデータ（更新対象データ）を退避データとし、ハードディスク１０９内の一時領域内に、該退避データを格納するための空き容量が存在するか否かを判断する。この判断の結果、存在する場合には、処理はステップＳ７０２に進み、存在しない場合は、処理はステップＳ７０３に進む。
【００５０】
ステップＳ７０２では、退避データを一時領域内に格納し、該格納の後、データベースに上書きするデータ（上記の課金情報など）を上書き対象となるデータに上書きし、該上書きの後、一時領域内の退避データを削除する。
【００５１】
一方、ステップＳ７０３では、通信部１０５が通信可能な外部装置に対して退避データを転送可能か否かを判断する。上記の通り、本実施形態では、情報処理装置には、１台以上の外部装置が接続されているので、通信部１０５は、この外部装置と通信を行いながら、退避データを格納可能な空き容量を有する外部装置を検索する。そしてこの検索の結果、退避データを格納可能な空き容量を有する外部装置が見つかれば、転送可能と判断し、処理はステップＳ７０４に進む。一方、退避データを格納可能な空き容量を有する外部装置が見つからなかった場合、転送不可能と判断し、処理はステップＳ７０５に進む。
【００５２】
ステップＳ７０４では、通信部１０５に、ステップＳ７０３で検索した外部装置に対して退避データを転送させる。そしてこの転送の後、データベースに上書きするデータを上書き対象となるデータに上書きし、該上書きの後、通信部１０５に、ステップＳ７０３で検索した外部装置に送信した退避データを削除させるための指示を該外部装置に対して送信させる。
【００５３】
一方、ステップＳ７０５では、ハードディスク１０９内のデータベース内に、退避データを格納するための空き容量が存在するか否かを判断する。この判断の結果、存在する場合には、処理はステップＳ７０６に進み、存在しない場合は、処理はステップＳ７０７に進む。ステップＳ７０６における処理の詳細については、図８のフローチャートを用いて後述する。
【００５４】
一方、ステップＳ７０７では、ＲＡＭ１０８や、本装置にリムーバブルメモリが接続されている場合には該リムーバブルメモリ、などのメモリに、退避データを格納するための空き容量が存在するか否かを判断する。この判断の結果、存在する場合には、処理はステップＳ７０８に進み、存在しない場合は、処理はステップＳ７０９に進む。
【００５５】
ステップＳ７０８では、退避データをメモリの空き領域内に格納し、該格納の後、データベースに上書きするデータを上書き対象となるデータに上書きし、該上書きの後、空き領域内の退避データを削除する。
【００５６】
ステップＳ７０９では、印刷部１０１０に退避データを印刷させることが可能か否かを判断する。この判断方法には様々な方法があり、印刷部１０１０が正常動作しているか否か、退避データのデータサイズ分だけの印刷が可能か否か、記録媒体が不足しているか否か等の判断がある。この判断の結果、印刷させることが可能であれば、処理はステップＳ７０１０に進み、印刷させることが不可能であれば、処理はステップＳ７０１１に進む。
【００５７】
ステップＳ７０１０では、退避データを印刷可能なデータ形式に変換し、変換したデータを印刷部１０１０に送出することで、この印刷部１０１０に退避データを記録媒体上に印刷させる。なお、退避データは、この記録媒体をスキャナ１０４で読み取った場合に、退避データが復元可能な形態で印刷する。然るに、この条件が満たされるのであれば、例えば、２次元バーコード形式など、様々な印刷形態を採用しても良い。
【００５８】
そしてこの印刷の後、データベースに上書きするデータを上書き対象となるデータに上書きし、該上書きの後、退避データを印刷した記録媒体が不要になった旨を表示部１０３に表示させる。
【００５９】
ステップＳ７０１１では、表示部１０３に退避データを表示させる。なお、退避データは、表示部１０３の画面を見たユーザが入力部１０２を用いて退避データの内容を入力することが出来るような形態で表示する。然るに、この条件が満たされるのであれば、様々な表示形態を採用しても良い。
【００６０】
そしてこの表示の後、データベースに上書きするデータを上書き対象となるデータに上書きし、該上書きの後、表示部１０３に退避データの表示を終了させる。
【００６１】
なお、図７のフローチャートの処理は、退避データの書込み先判定処理手順の一例であり、書込み先を決定する判定順序については個々のデバイスにおけるネットワーク環境や電源の安定供給状況等に応じて自由に入れ替えることができる。
【００６２】
次に、上記のステップＳ７０６における処理の詳細について、同処理のフローチャートを示す図８を用いて説明する。
【００６３】
ステップＳ８０１では、退避データを格納するためのノード群（インデックス）を、データベースから検索する。この検索では、各ノードのヘッダ領域５０１に登録されている空き領域サイズをチェックし、空き領域サイズが大きいものから順に使用対象とする。
【００６４】
ステップＳ８０２では、ステップＳ８０１で使用するものとして検索されたノード内の空き領域に退避データを書き込むと共に、該ノードのヘッダ領域５０１に該退避データのサイズを書き込む。
【００６５】
例えば、ノード１の空き領域に退避データの第１の部分が格納可能であり、ノード２の空き領域に退避データの第２の部分が格納可能であり、ノード３の空き領域に退避データの第３の部分（退避データ−第１の部分−第２の部分）が格納可能であるとする。このとき、ノード１に退避データの第１の部分を格納すると共に、ノード１のヘッダ領域５０１に第１の部分のデータサイズを書き込む。更に、ノード２に退避データの第２の部分を格納すると共に、ノード２のヘッダ領域５０１に第２の部分のデータサイズを書き込む。更に、ノード３に退避データの第３の部分を格納すると共に、ノード３のヘッダ領域５０１に第３の部分のデータサイズを書き込む。
【００６６】
ステップＳ８０３では、データベースに上書きするデータを上書き対象となるデータに上書きする。
【００６７】
ステップＳ８０４では、ステップＳ８０１で使用するものとして検索されたノード内の空き領域に書き込んだ退避データを削除すると共に、該ノードのヘッダ領域５０１に書き込んだ該退避データのサイズを削除する。
【００６８】
このように、本実施形態に係る情報処理装置は先ず、データベースにデータを書き込む前に該データベースから退避させるべきデータを退避データとし、該退避データを格納可能な空き容量を有する退避先を検索する。そして、検索した退避先に退避データを格納した後、該データをデータベースに書き込み、該書き込みの終了後、退避先から退避データを削除する。然るに、このような構成を有するのであれば、本実施形態で説明した構成は適宜変形／変更してもかまわない。
【００６９】
このように本実施形態によれば、ネットワーク等で接続された他の装置が持つストレージの空き領域に退避データを書き込むことが出来る。そのため、自身のストレージの空き容量が不足した場合でも、処理を停止する事無く、確実にデータベースを更新する事ができる。
【００７０】
また、データベース内に作成済みであるインデックスの空き領域に退避データを書き込むことができるため、他の装置とネットワーク等で接続されていなくとも、処理を停止する事無く、確実にデータベースを更新する事ができる。また、インデックスの空き領域を利用する為、その後のインデックスを利用する処理に影響を与える事無く退避データの書込みを実現できる。
【００７１】
また、メモリ上の空き領域に退避データを書き込むことができる。そのため、他の装置とネットワーク等で接続されておらず、自身のストレージ容量が不足し、データベース内の空き領域も十分でない場合であっても、処理を停止する事無く、確実にデータベースを更新する事ができる。
【００７２】
また、記録媒体に退避データを印刷することができる。そのため、他の装置とネットワーク等で接続されておらず、自身のストレージ容量が不足し、データベース内の空き領域も不足し、メモリ上の空き領域も不足する場合であっても、処理を停止する事無く、確実にデータベースを更新する事ができる。
【００７３】
また、画面に退避データを表示することができる。そのため、他の装置との接続が無く、自身のストレージ容量が不足し、データベース内の空き領域も不足し、メモリ上の空き領域も不足し、用紙も不足している場合であっても、処理を停止する事無く、確実にデータベースを更新する事ができる。なお、退避データの印刷や表示は、データベースやメモリへの退避データの格納、外部装置への退避データの送信と合わせて行っても良い。
【００７４】
［第２の実施形態］
以降では、第１の実施形態の様々な変形例としての第２の実施形態について説明する。もちろん、変形例は以下に説明するものに限らず、様々なものが考え得る。
【００７５】
第１の実施形態においては、データベース内に退避データを書き込む場合には、作成済みインデックスのノード内の空き領域を用いていた。ここで、データベース内の大量のデータを更新する場合、それに伴い、大量の退避データを退避させる必要が出てくる。その場合、この大量の退避データを格納するための十分な空き領域が確保できない可能性がある。このような場合、インデックスが複数存在する場合はなるべく検索性能に影響が出ないよう、最も優先度の低いインデックスから順に削除し、代替書込み領域として再利用することもできる。そのような場合のインデックス格納領域の再利用方法や、削除対象インデックスの優先度判定は次のように行われる。
【００７６】
削除対象となったインデックスへの退避データ書込み状況について、図９を用いて説明する。ここではデータベースファイル領域９０１にＴａｂｌｅＡとそれに紐づくＩｎｄｅｘＡおよびＩｎｄｅｘＢが作成済であったが、ＩｎｄｅｘＡが代替書込み領域９０３となって削除され再利用されている状態を示している。ここでテーブル、インデックスを構成するＰａｇｅはデータの書込み状況に応じて個別に作成されるため、ファイルの先頭に存在するＤＢヘッダに続くＰａｇｅは個々のテーブル、インデックス毎に複数個所存在し、かつ連続する事無く配置される。ＤＢヘッダに格納もしくはリンクされているデータベース格納オブジェクトリスト９０２には、各テーブル、インデックスの存在状況とそれらの先頭Ｐａｇｅ番号が格納されている。ここで、ＩｎｄｅｘＡに関する存在状況は「再利用」となっており、パーティション容量不足時には代替書込み領域としてＩｎｄｅｘＡの格納領域を再利用する。また、デバイス復旧時にパーティション容量不足が解消された場合には、この情報をもとに、削除されたＩｎｄｅｘＡを再構築する。代替書込み領域９０３はＩｎｄｅｘＡを削除することで得られる論理的な連続書込み可能領域であり、退避データと次Ｐａｇｅ番号によって構成される。
【００７７】
この場合、図６〜８のフローチャートにおいて、ステップＳ８０１における処理のみが、第１の実施形態と異なる。本実施形態では、ステップＳ８０１では、代替書込み領域とする削除対象のインデックスとして、なるべく検索性能に影響が出ないよう、最も優先度の低いインデックスを選択する。これには状況に応じて複数の選択方法をとる事ができる。１つは複数のインデックスに対して検索に用いられた使用頻度を記録しておき、最も使用頻度の低いインデックスを最も優先度が低いインデックスとして選択する。または、複数のインデックスに対してデータのばらつき量を事前に計算・保持し、ばらつき量が最小である、つまり絞り込み効果が薄いインデックスを最も優先度が低いインデックスとして選択する。または同一のカラムに対して個別のインデックスと複合インデックスが作成済の場合は、複合インデックスを個別のインデックスよりも優先度が低いインデックスとして選択する。
【００７８】
このように、本実施形態によれば、最も使用頻度の低いインデックスの領域を退避データ書込み領域として代替利用できる。そのため、他のデバイスとネットワーク等で接続されていなくとも、処理を停止する事無く、また以降の高頻度に実行される検索処理性能に影響を与える事無く、確実にデータベースを更新する事ができる。
【００７９】
また、本実施形態によれば、最も絞り込み効果の低いインデックスの領域を退避データ書込み領域として代替利用できる。そのため、他のデバイスとネットワーク等で接続されていなくとも、処理を停止する事無く、また以降の絞り込み検索処理性能に影響を与える事無く、確実にデータベースを更新する事ができる。
【００８０】
また、本実施形態によれば、同一カラムに作成されているより冗長なインデックス領域に退避データを書込むことができる。そのため、他のデバイスとネットワーク等で接続されていなくとも、処理を停止する事無く、また該当カラムを検索条件に使用する検索機能に影響を与える事無く、確実にデータベースを更新する事ができる。なお、第２の実施形態は適宜第１の実施形態と組み合わせても良い。
【００８１】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2013161195.tif 000003
【図２】
2013161195.tif 000004
【図３】
2013161195.tif 000005
【図４】
2013161195.tif 000006
【図５】
2013161195.tif 000007
【図６】
2013161195.tif 000008
【図７】
2013161195.tif 000009
【図８】
2013161195.tif 000010
【図９】
2013161195.tif 000011