(57)【要約】【課題】複数のデータ格納領域をサイクリックに利用して効率的にデータ処理する技術を提供する。【解決手段】データ格納状況監視手段３は、複数のデータ格納領域１１〜１ｎを定期的に監視して、その格納状態が以前の登録データで一杯になっている（使用後）データ格納領域を抽出し、該使用後データ格納領域に未処理データが存在しないときは該データ格納領域内の全データを削除して該データ格納領域の格納状態を使用後から未使用に変更する。抽出した使用後データ格納領域に未処理データが存在し且つ該データ格納領域が次のデータ格納領域として利用される領域であるとき、該データ格納領域内の未処理データを退避用領域４に移動するとともに当該データ格納領域内の全データを削除して該データ格納領域の格納状態を使用後から未使用に変更する。【選択図】図１
2010224672.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータ格納領域をサイクリックに利用してデータの格納及び該格納されたデータの処理を非同期に行うデータ処理方法であって、
新規のデータを一つの前記データ格納領域に格納する際に、該データの大きさが前記データ格納領域の書き込み可能領域の大きさを上回ったとき、当該データ格納領域の状態値として「使用後」を示す値を設定するとともに前記データ以降のデータを次のデータ格納領域に格納することにより前記データ格納領域をサイクリックに切り替えて複数の前記データ格納領域にデータを順次格納するステップと、次に利用される順番となった前記データ格納領域に未処理データが存在するとき、該未処理データを退避用領域に移動するステップと、前記複数のデータ格納領域または前記退避用領域に格納されたデータを読み出して処理するステップと、処理完了後に該格納データに処理済みを示すフラグを設定するステップからなることを特徴とするデータ処理方法。
【請求項２】
前記次に利用される順番となった前記データ格納領域に未処理データが存在するときに未処理データを退避用領域に移動するステップは、前記複数のデータ格納領域を定期的に監視し、前記「使用後」を示す値が設定されているデータ格納領域を抽出するステップ、該抽出したデータ格納領域に未処理データが存在しないとき該データ格納領域内の全データを削除し、該データ格納領域の設定値を、「使用後」を示す値から「未使用」を示す値に変更するステップ、前記抽出したデータ格納領域に未処理データが存在し且つ該データ格納領域が次のデータ格納領域として利用される領域であるとき、該データ格納領域内の前記未処理データを退避用領域に移動するとともに該データ格納領域内の全データを削除し、該データ格納領域の設定値を、「使用後」を示す値から「未使用」を示す値に変更するステップを含むことを特徴とする請求項１に記載のデータ処理方法。
【請求項３】
前記次に利用される順番となった前記データ格納領域に未処理データが存在するときに未処理データを退避用領域に移動するステップは、データ登録制御手段から、次のデータ格納領域として利用される前記データ格納領域に存在する未処理データの退避指示を受けて、該データ格納領域内の前記未処理データを退避用領域に移動するとともに該データ格納領域内の全データを削除し、該データ格納領域の状態値を、「使用後」を示す値から「未使用」を示す値に変更するステップを含むことを特徴とする請求項１または２に記載のデータ処理方法。
【請求項４】
前記データ格納領域をサイクリックに切り替えて複数の前記データ格納領域にデータを順次格納するステップは、データ登録処理手段から受け取ったグループを特定するキーを基に、対応するデータ格納領域管理レコードを検索するステップ、前記レコードが有るとき、前記データ登録処理手段から受け取ったアプリケーションデータサイズが、現在データ格納のために使用中の前記データ格納領域に登録可能か否かをチェックするステップ、登録可能であるとき前記使用中のデータ格納領域に前記アプリケーションデータを登録するステップ、登録不可能であるとき前記データ格納領域管理レコードを参照して次のデータ格納領域として利用するデータ格納領域が未使用であるか否かをチェックするステップ、前記次のデータ格納領域として利用するデータ格納領域が未使用であるとき該データ格納領域に前記アプリケーションデータを登録するとともに前記使用中のデータ格納領域の状態値を、「使用中」を示す値から「使用後」を示す値に変更し、前記次のデータ格納領域として利用するデータ格納領域の状態値を、「未使用」を示す値から「使用中」を示す値に変更するステップ、前記次のデータ格納領域として利用するデータ格納領域が未使用でないときデータ格納状況監視手段に前記次のデータ格納領域として利用するデータ格納領域内の未処理データを退避させる指示を与えるステップ、前記未処理データの退避指示に対して、前記データ格納状況監視手段が前記次のデータ格納領域として利用するデータ格納領域を未使用に変更したことを確認して、該データ格納領域に前記アプリケーションデータを登録するとともに前記使用中のデータ格納領域の状態値を、「使用中」を示す値から「使用後」を示す値に変更し、前記次のデータ格納領域として利用するデータ格納領域の状態値を、「未使用」を示す値から「使用中」を示す値に変更するステップ、を含むことを特徴とする請求項１〜３のいずれか１項に記載のデータ処理方法。
【請求項５】
前記退避用領域内の処理済みデータを削除するステップを有することを特徴とする請求項１〜４のいずれか１項に記載のデータ処理方法。
【請求項６】
複数のデータ格納領域をサイクリックに利用してデータの格納及び該格納されたデータの処理を非同期に行うデータ処理システムであって、
新規のデータを一つの前記データ格納領域に格納する際に、該データの大きさが前記データ格納領域の書き込み可能領域の大きさを上回ったとき、当該データ格納領域の状態値として「使用後」を示す値を設定するとともに前記データ以降のデータを次のデータ格納領域に格納することにより前記データ格納領域をサイクリックに切り替えて複数の前記データ格納領域にデータを順次格納する機能を有するデータ登録制御手段と、
次に利用される順番となった前記データ格納領域に未処理データが存在するとき、該未処理データを退避用領域に移動する機能を有するデータ格納状況監視手段と、
前記複数のデータ格納領域または前記退避用領域に格納されたデータを読み出して処理する機能、および処理完了後に該格納データに処理済みを示すフラグを設定する機能を有するデータ取り出し制御手段と、
を備えていることを特徴とするデータ処理システム。
【請求項７】
前記データ格納状況監視手段は、前記複数のデータ格納領域を定期的に監視し、前記「使用後」を示す値が設定されているデータ格納領域を抽出する機能と、該抽出したデータ格納領域に未処理データが存在しないとき該データ格納領域内の全データを削除し、該データ格納領域の状態値を、「使用後」を示す値から「未使用」を示す値に変更する機能と、前記抽出したデータ格納領域に未処理データが存在し且つ該データ格納領域が次のデータ格納領域として利用される領域であるとき、該データ格納領域内の前記未処理データを退避用領域に移動するとともに該データ格納領域内の全データを削除し、該データ格納領域の状態値を、「使用後」を示す値から「未使用」を示す値に変更する機能を有していることを特徴とする請求項６に記載のデータ処理システム。
【請求項８】
前記データ格納状況監視手段は、データ登録制御手段から、次のデータ格納領域として利用される前記データ格納領域に存在する未処理データの退避指示を受けて、該データ格納領域内の前記未処理データを退避用領域に移動するとともに該データ格納領域内の処理済みデータを削除して該データ格納領域の状態値を、「使用後」を示す値から「未使用」を示す値に変更する機能を有していることを特徴とする請求項６または７に記載のデータ処理システム。
【請求項９】
前記データ登録制御手段は、データ登録処理手段から受け取ったグループを特定するキーを基に、対応するデータ格納領域管理レコードを検索する機能と、前記レコードが有るとき、前記データ登録処理手段から受け取ったアプリケーションデータサイズが、現在データ格納のために使用中の前記データ格納領域に登録可能か否かをチェックする機能と、登録可能であるとき前記使用中のデータ格納領域に前記アプリケーションデータを登録する機能と、登録不可能であるとき前記データ格納領域管理レコードを参照して次のデータ格納領域として利用するデータ格納領域が未使用であるか否かをチェックする機能と、前記次のデータ格納領域として利用するデータ格納領域が未使用であるとき該データ格納領域に前記アプリケーションデータを登録するとともに前記使用中のデータ格納領域の状態値を、「使用中」を示す値から「使用後」を示す値に変更し、前記次のデータ格納領域として利用するデータ格納領域の状態値を、「未使用」を示す値から「使用中」を示す値に変更する機能と、前記次のデータ格納領域として利用するデータ格納領域が未使用でないとき前記データ格納状況監視手段に前記次のデータ格納領域として利用するデータ格納領域内の未処理データを退避させる指示を与える機能と、前記未処理データの退避指示に対して前記データ格納状況監視手段が前記次のデータ格納領域として利用するデータ格納領域を未使用に変更したことを確認して、該データ格納領域に前記アプリケーションデータを登録するとともに前記使用中のデータ格納領域の状態値を、「使用中」を示す値から「使用後」を示す値に変更し、前記次のデータ格納領域として利用するデータ格納領域の状態値を、「未使用」を示す値から「使用中」を示す値に変更する機能と、を有していることを特徴とする請求項６〜８のいずれか１項に記載のデータ処理システム。
【請求項１０】
前記データ格納状況監視手段は、前記退避用領域内の処理済みデータを削除する機能を有していることを特徴とする請求項６〜９のいずれか１項に記載のデータ処理システム。
【請求項１１】
複数のデータ格納領域をサイクリックに利用してデータの格納及び該格納されたデータの処理を非同期に行うデータ処理システムが備えるコンピュータに、新規のデータを一つの前記データ格納領域に格納する際に、該データの大きさが前記データ格納領域の書き込み可能領域の大きさを上回ったとき、当該データ格納領域の状態値として「使用後」を示す値を設定するとともに前記データ以降のデータを次のデータ格納領域に格納することにより前記データ格納領域をサイクリックに切り替えて複数の前記データ格納領域にデータを順次格納する機能、次に利用される順番となった前記データ格納領域に未処理データが存在するとき、該未処理データを退避用領域に移動させる機能、前記複数のデータ格納領域または前記退避用領域に格納されたデータを読み出して処理する機能、処理完了後に該格納データに処理済みを示すフラグを設定する機能を実現させるためのプログラム。
【請求項１２】
請求項１１に記載のコンピュータに、データ格納領域管理テーブルを参照して前記複数のデータ格納領域を定期的に監視し、前記「使用後」を示す値が設定されているデータ格納領域を抽出する機能、該抽出したデータ格納領域に未処理データが存在しないとき該データ格納領域内の全データを削除し、該データ格納領域の状態値を、「使用後」を示す値から「未使用」を示す値に変更する機能、前記抽出したデータ格納領域に未処理データが存在し且つ該データ格納領域が次のデータ格納領域として利用される領域であるとき、該データ格納領域内の前記未処理データを退避用領域に移動するとともに該データ格納領域内の全データを削除し、該データ格納領域の状態値を、「使用後」を示す値から「未使用」を示す値に変更する機能を実現させるためのプログラム。
【請求項１３】
請求項１１に記載のコンピュータに、前記複数のデータ格納領域または前記退避用領域に格納されたデータを読み出して処理する機能、処理完了後に該格納データに処理済みを示すフラグを設定する機能を実現させるためのプログラム。
【請求項１４】
請求項１１に記載のコンピュータに、データ登録制御手段から、次のデータ格納領域として利用される前記データ格納領域に存在する未処理データの退避指示を受けて、該データ格納領域内の前記未処理データを退避用領域に移動するとともに該データ格納領域内の処理済みデータを削除して前記データ格納領域管理テーブルにおける該データ格納領域の状態値を、「使用後」を示す値から「未使用」を示す値に変更する機能を実現させるためのプログラム。
【請求項１５】
請求項１１に記載のコンピュータに、データ登録処理手段から受け取ったグループを特定するキーを基に、対応するデータ格納領域管理レコードを検索する機能、前記レコードが有るとき、前記データ登録処理手段から受け取ったアプリケーションデータサイズが、現在データ格納のために使用中の前記データ格納領域に登録可能か否かをチェックする機能、登録可能であるとき前記使用中のデータ格納領域に前記アプリケーションデータを登録する機能、登録不可能であるとき前記データ格納領域管理レコードを参照して次のデータ格納領域として利用するデータ格納領域が未使用であるか否かをチェックする機能、前記次のデータ格納領域として利用するデータ格納領域が未使用であるとき該データ格納領域に前記アプリケーションデータを登録するとともに前記使用中のデータ格納領域の状態値を、「使用中」を示す値から「使用後」を示す値に変更し、前記次のデータ格納領域として利用するデータ格納領域の状態値を、「未使用」を示す値から「使用中」を示す値に変更する機能、前記次のデータ格納領域として利用するデータ格納領域が未使用でないとき前記データ格納状況監視手段に前記次のデータ格納領域として利用するデータ格納領域内の未処理データを退避させる指示を与える機能、前記未処理データの退避指示に対して前記データ格納状況監視手段が前記次のデータ格納領域として利用するデータ格納領域を未使用に変更したことを確認して、該データ格納領域に前記アプリケーションデータを登録するとともに前記使用中のデータ格納領域の状態値を、「使用中」を示す値から「使用後」を示す値に変更し、前記次のデータ格納領域として利用するデータ格納領域の状態値を、「未使用」を示す値から「使用中」を示す値に変更する機能、を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションレイアでデータ転送処理や、メッセージ連携処理を行う技術に関し、特に、データが登録され、取り出し処理が完了するまでデータ紛失が許されず、かつデータ登録と取り出し処理が非同期に行われるデータの処理技術に関する。
【背景技術】
【０００２】
一定期間意味を持つデータを扱う場合、言い換えると登録されてから取り出されるまでの間はデータ保証が必要な場合、ファイル、共有メモリ、データベースなどのデータ格納領域を用いてデータを保存するのが一般的である（特許文献１〜５等参照）。
【０００３】
また、予期せぬデータ肥大に対処するため、またはデータの格納・削除を効率的に行うために、複数のデータ格納領域をサイクリックに利用し、不要となったデータをデータ単位ではなく、データ格納領域ごと削除すること、あるいは、データベースにおいて、複数のパーティションをサイクリックに利用し、ログデータなどパーティションを日付毎に用意し、不要になった時点でパーティション単位に削除する運用（サイクリック的な利用方法）も、例えばＯＬＴＰ（On Line Transaction Processing)分野におけるアプリケーション間での非同期メッセージ通信等において一般に行われている（特許文献５）。
【０００４】
図１０は、ＯＬＴＰシステム等の非同期処理において一般に行われている、データの登録と取り出しが非同期に行われ（取り出し処理は同一キー内においてデータ登録順（時系列）に行う必要がある）、処理が終わったデータのみ削除しながら、複数のデータ格納領域をサイクリックに運用してデータの登録と取り出しを行う従来のデータ処理方式の例を示すシステム図である。
【０００５】
図１０において、データ登録処理を行うアプリケーションプログラム（以下、データ登録処理アプリケーションという）は、データ格納領域（１１）から順にデータを登録し、一杯になったら次のデータ格納領域（１２）へ登録する。最後のデータ格納領域（１３）が一杯になったら、データ格納領域（１１）のデータを削除した後、次のデータを登録することにより再利用する。データ格納領域に登録されるデータには、データを特定するキーと、キーごとに管理され登録のたびに加算される通番が付加されている。
【０００６】
一方、データ取り出し処理を行うアプリケーションプログラム（以下、データ取り出し処理アプリケーションという）は、データ格納領域（１１）から順にデータを取り出して処理し、処理が終わったデータには処理済みフラグを立てる。データ取り出し処理は単純に時系列で処理するのではなく、キー毎に時系列（通番の若い順から）の処理が行われる。データ登録処理手段は、各データ格納領域へのデータ登録を開始する際には、当該データ格納領域に以前に登録された全てのデータに処理済みフラグが立てられていることを確認し、これらのデータを削除して、次のデータの登録を開始する。
【０００７】
例えば図１０では、データ登録処理アプリケーションにより、データ格納領域（１１）に、（キー:０，通番０）、（キー:１，通番０）、（キー:０，通番１）、（キー:２，通番０）の各データを順に登録し、この時点でデータ格納領域（１１）が一杯になったことを判定して、データ格納領域（１２）に、（キー:０，通番２）、（キー:１，通番１）、（キー:０，通番３）、（キー:２，通番１）の各データを順に登録し、この時点でデータ格納領域（１２）が一杯になったことを判定して、データ格納領域（１３）に、（キー:１，通番２）、（キー:２，通番２）、（キー:１，通番３）、（キー:１，通番４）の各データを順に登録し、この時点でデータ格納領域（１３）が一杯になった状態を示している。
【０００８】
一方、データ取り出し処理アプリケーションにより、最初、キー０のデータを通番の若い順「（キー:０，通番０）、（キー:０，通番１）、（キー:０，通番２）、（キー:０，通番３）」に各データを取り出して処理し、夫々に処理済みフラグを立て、次に、キー２のデータを通番の若い順「（キー:２，通番０）、（キー:２，通番１）、（キー:２，通番２）」に各データを取り出して処理し、夫々に処理済みのフラグを立てた状態を示している。
【０００９】
データ登録処理アプリケーションでは、登録データにより最後のデータ格納領域（１３）まで一杯になったことを判定し、次にデータ格納領域（１１）のデータを削除してデータ格納領域（１１）に新たなデータを格納するために、データ格納領域（１１）に格納されているすべてのデータに処理済みフラグが立てられているかを確認するが、データ格納領域（１１）に格納されているキー:１のデータが未処理であるため、データ登録処理アプリケーションは、データ格納領域（１１）に格納されているデータを削除することができない。そのため、データ格納領域に新たなデータを登録することができず、オーバーフロー状態となってしまう。
【００１０】
このようなオーバーフロー状態を避ける技術の一つとして、例えば特許文献３には、送信ノードから送信された一連のデータ要素からなるデータストリームを受信するデータ受信手段、このデータ受信手段により受信されたデータストリーム中のデータを一時蓄積するための高速メモリから構成される１次バッファ手段、この１次バッファ手段に蓄積されたデータを取り出して受信ノードに送出するデータ送信手段、上記１次バッファ手段の記憶領域を補完するための当該１次バッファ手段より低速大容量の２次バッファ手段、および上記１次バッファ手段の入力側のオーバーフローの危険性を検出して、当該１次バッファ手段から上記２次バッファ手段へブロック単位でデータを移動する退避処理を行うと共に、上記２次バッファ手段に退避されたデータを上記データ送信手段によるデータ送出のために上記１次バッファ手段へブロック単位で移動する復帰処理を行うデータ移動手段を備え、ストリーム中継に伴う遅延を小さくすると共に、大容量のバースト的なデータをオーバーフローの発生を招くことなく一時蓄積可能にした中継ノードシステムが記載されている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開平０８−１４７１９４号公報
【特許文献２】特開２００１−０３４５５５号公報
【特許文献３】特許第３２１３６９７号公報
【特許文献４】特許第４１５５９７３号公報
【特許文献５】特開平０７−２３９８０３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
上記特許文献３に記載の発明では、高速メモリから構成される１次バッファ手段がオーバーフローする虞があるときに、当該１次バッファ手段から低速大容量の２次バッファ手段へブロック単位でデータを移動する退避処理を行い、１次バッファ手段へ書込まれる入力データが少なく容量に余裕があるとき、２次バッファ手段に退避されたデータを上記データ送信手段によるデータ送出のために上記１次バッファ手段へブロック単位で移動する復帰処理を行う必要がある。
【００１３】
またそのために、データの入力量と出力量を比較して該当データブロックを２次バッファ手段へ退避するか否かを判断する必要があり、そのための設定制御が複雑である。
【００１４】
また、ＯＬＴＰシステム等の非同期処理において一般に行われている、データの登録と取り出しを非同期に行い、処理が終わったデータを削除しながらデータ格納領域単位でデータの登録をサイクリックに運用する上記従来例のデータ処理方式では、データの退避処理や復帰処理は不要となるが、データ格納領域内の全データが処理完了となるまで当該データ格納領域内データの削除ができないため、例えばデータ取り出し処理の一部が停止してしまった場合など、データ格納領域内データの大半は処理済みで不要データであるにも関わらず、最終的にデータ格納領域内のデータ削除ができないために新たなデータの登録ができず、オーバーフロー状態となってしまうことがある。
【００１５】
このオーバーフロー状態の発生を避けるためには、各データ格納領域を大きくするか、データ格納領域数を増やす必要があるが、ディスク使用量が増大するという問題が生ずる。
【００１６】
また、上記従来のデータ処理方式では、データ格納領域毎の容量管理や、データ格納領域の切り替え制御、データ格納領域内のデータ削除の制御をアプリケーションプログラムで実施しなければならないため、アプリケーションの開発効率が悪いという問題がある。
【００１７】
例えば、データベースを利用し、複数のプログラムから同じグループに属するデータにアクセスしている状況では、データを高速にかつディスクのフラグメンテーションを起こさずに削除することが困難であり、また、同じグループに属するデータをパーティション分割するには、アプリケーション側で振り分け制御を行う必要があった。
【００１８】
本発明の目的は、上述した課題を解決することが可能な、複数のデータ格納領域をサイクリックに利用してデータ処理するための技術を提供することにある。
【課題を解決するための手段】
【００１９】
本発明のデータ処理方法は、複数のデータ格納領域をサイクリックに利用してデータの格納及び該格納されたデータの処理を非同期に行うデータ処理方法であって、新規のデータを一つの前記データ格納領域に格納する際に、該データの大きさが前記データ格納領域の書き込み可能領域の大きさを上回ったとき、当該データ格納領域の状態値として「使用後」を示す値を設定するとともに前記データ以降のデータを次のデータ格納領域に格納することにより前記データ格納領域をサイクリックに切り替えて複数の前記データ格納領域にデータを順次格納するステップと、次に利用される順番となった前記データ格納領域に未処理データが存在するとき、該未処理データを退避用領域に移動するステップと、前記複数のデータ格納領域または前記退避用領域に格納されたデータを読み出して処理するステップと、処理完了後に該格納データに処理済みを示すフラグを設定するステップからなることを特徴とする。
【００２０】
本発明のデータ処理システムは、複数のデータ格納領域をサイクリックに利用してデータの格納及び該格納されたデータの処理を非同期に行うデータ処理システムであって、新規のデータを一つの前記データ格納領域に格納する際に、該データの大きさが前記データ格納領域の書き込み可能領域の大きさを上回ったとき、当該データ格納領域の状態値として「使用後」を示す値を設定するとともに前記データ以降のデータを次のデータ格納領域に格納することにより前記データ格納領域をサイクリックに切り替えて複数の前記データ格納領域にデータを順次格納する機能を有するデータ登録制御手段と、次に利用される順番となった前記データ格納領域に未処理データが存在するとき、該未処理データを退避用領域に移動する機能を有するデータ格納状況監視手段と、前記複数のデータ格納領域または前記退避用領域に格納されたデータを読み出して処理する機能、および処理完了後に該格納データに処理済みを示すフラグを設定する機能を有するデータ取り出し制御手段と、を備えていることを特徴とする。
【００２１】
本発明のプログラムは、複数のデータ格納領域をサイクリックに利用してデータの格納及び該格納されたデータの処理を非同期に行うデータ処理システムが備えるコンピュータに、新規のデータを一つの前記データ格納領域に格納する際に、該データの大きさが前記データ格納領域の書き込み可能領域の大きさを上回ったとき、当該データ格納領域の状態値として「使用後」を示す値を設定するとともに前記データ以降のデータを次のデータ格納領域に格納することにより前記データ格納領域をサイクリックに切り替えて複数の前記データ格納領域にデータを順次格納する機能、次に利用される順番となった前記データ格納領域に未処理データが存在するとき、該未処理データを退避用領域に移動させる機能、前記複数のデータ格納領域または前記退避用領域に格納されたデータを読み出して処理する機能、処理完了後に該格納データに処理済みを示すフラグを設定する機能を実現させることを特徴とする。
【発明の効果】
【００２２】
本発明によれば、データ格納領域のサイクリック利用において、各データ格納領域を大きくすることなく、処理効率を向上させることができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の第１の実施形態のデータ処理方式を示すシステム図である。
【図２】データ格納領域としてデータベースのパーティションを利用した本発明の第２の実施形態のデータ処理方式を示すシステム図である。
【図３】カレントデータ格納領域に登録されるデータレコードのデータ構造を示す図である。
【図４】第２の実施形態のデータ格納領域管理テーブル（２）で保有されている管理情報の例を示す図である。
【図５】第２の実施形態におけるデータ登録制御部（１）の動作を示すフローチャートである。
【図６】第２の実施形態におけるデータ格納状況監視部（３）の動作を示すフローチャートである。
【図７】データ格納領域としてデータベースのパーティションを利用した本発明の第３の実施形態のデータ処理方式を示すシステム図である。
【図８】第３の実施形態のデータ格納領域管理テーブル（２）で保有されている管理情報の例を示す図である。
【図９】第３の実施形態におけるデータ格納状況監視部（３）の動作を示すフローチャートである。
【図１０】従来のデータ処理方式を示すシステム図である。
【発明を実施するための形態】
【００２４】
図１は、本発明の第１の実施形態による、複数のデータ格納領域をサイクリックに運用してデータの登録と取り出しを行うデータ処理方式を示すシステム図である。
【００２５】
図１において、データ格納部（１０）は、データの格納がサイクリックに運用される複数のデータ格納領域（１１〜１ｎ）と、データ退避用に利用される退避用領域（４）を備えている。データ登録制御手段（１）は、データ格納部（１０）の例えばデータ格納領域（１１）へデータを順次格納する。その際、次に格納されるデータの大きさがデータ格納領域（１１）の書き込み可能領域の大きさを上回ったとき、該データ格納領域（１１）の格納状態が以前の登録データで一杯になったと判定し、該データ格納領域（１１）の格納状態を示す値を、「使用後」を示す値に変更し、該データ以降のデータは次のデータ格納領域（１２）に切り替えて順次格納する。以下データ格納領域の格納状態を示す値が「使用後」を示す値に変更される毎に、データ格納領域を順次切り替えてデータ格納領域（１ｎ）までデータを格納し、このデータ格納領域（１ｎ）の格納状態を示す値が「使用後」を示す値に変更されたら、データ格納領域（１１）に戻り、データ格納領域（１１）に切り替えて以降のデータを順次格納する動作を繰り返す。
【００２６】
データ格納状況監視手段（３）は、データ登録制御手段（１）によるデータ格納部（１０）のデータ格納状況を監視し、次のデータ格納領域としてデータ登録制御手段（１）により利用される順番となったデータ格納領域に未処理データが存在する場合には、該未処理データを退避用領域（４）に移動するとともに、当該データ格納領域に格納されている全データを削除することにより、データ登録制御手段（１）が当該データ格納領域に新たなデータを登録できるようにして、登録データがオーバーフロー状態となることを防ぐ。
【００２７】
データ取り出し制御手段（５）は、サイクリックに運用される複数のデータ格納領域（１１〜１ｎ）または前記退避用領域（４）に格納されているデータを読み出して処理するとともに、処理完了後に該格納データに処理済みを示すフラグを設定する。
【００２８】
図２は、データ格納領域としてデータベースのパーティションを利用した本発明の第２の実施形態のデータ処理方式を示すシステム図である。本実施形態では、複数のデータ格納領域（１１〜１３）および退避用領域（４）が、データベースの各パーティションになっている。
【００２９】
図２において、開始／終了手段（７）は、本装置の利用開始／終了を指示する機能を有し、データ格納領域管理テーブル（２）は、データ格納領域毎のデータ格納状況を登録する機能を有している。また、開始／終了手段（７）からの指示を受けて、常駐プログラムとしてデータ格納状況監視部（３）が起動し、データ格納領域管理テーブル（２）の作成および値設定を行い、データ格納領域毎のデータ格納状況の定期監視を開始するとともに、監視結果をデータ格納領域管理テーブル（２）に登録する機能を有している。
【００３０】
データ登録制御部（１）は、データ登録処理アプリケーションからデータ登録要求を受け付け、データ格納領域管理テーブル（２）の内容に従って使用中（カレント）のデータ格納領域へデータレコード（６）を登録する機能を有している。
【００３１】
データ取り出し制御部（５）は、データ取り出し処理アプリケーションから、登録されたデータに対する処理が終了した通知を受け付け、データ格納領域（１１〜１３）内の該当レコードまたは退避用領域（４）内の該当レコードに処理済みフラグを設定する機能を有している。
【００３２】
退避用領域（４）は、データ格納領域（１１〜１３）の中で次のデータ格納領域として利用されるデータ格納領域に未処理データが残っていた場合に、当該未処理データを退避させて格納するための領域である。また、管理情報保存手段（８）は、停止時にデータ格納領域管理テーブル（２）の内容を保存する機能を有している。
【００３３】
図３は、データ格納領域に登録されるデータレコード（６）のデータ構造を示しており、一次キー、二次キー、および処理済みフラグからなる制御情報と、アプリケーションプログラムがデータに直接アクセスするためのＡＰキーおよびＡＰキー内での登録順（図１０の通番に相当する）を示す項目を保有している。
【００３４】
一次キーは、登録先のグループを特定するためのキーであり、図１０に示すキーに相当するものであって、データ格納時にアプリケーションプログラム（ＡＰ）から指定される値である。この一次キーとＡＰキーは一対一で対応している。二次キーは、グループ内でデータ格納領域（パーティション）を特定するための値である。なお、本実施形態において追加される退避用領域を特定するための二次キーの値は、サイクリックに利用されるデータ格納領域と区別できる特定の値に設定される。
【００３５】
処理済みフラグは、データ取り出し制御部（５）により設定されるフラグであり、データ登録時はフラグが“ＯＦＦ”となっているが、データ取り出し処理が完了した時点でフラグが“ＯＮ”に設定される。ＡＰキーは、アプリケーションがデータアクセスする際に用いられるキー項目である。順序は、ＡＰキー内で登録順を表す項目である。このＡＰキー＋順序の組合せがプライマリーキーとなる。データは、ＡＰの任意データである。
【００３６】
図４は、本実施例のデータ格納領域管理テーブル（２）で保有されている管理情報の例を示している。
【００３７】
図４において、Ｐｒｔ数は、グループ内で使用可能なサイクリック用データ格納領域（パーティション：Partition）の数を示しており、Ｍａｘサイズは、夫々のグループ毎に予め設定された各データ格納領域（パーティション）に格納可能な最大データ量を示している。
【００３８】
カレントＰｒｔＮｏ．は、現在データ登録が行われているデータ格納領域（パーティション）の番号を示しており、使用量は、このカレントデータ格納領域（パーティション）に登録されているデータ量を示している。また、ＰｒｔＮｏ．毎に、未使用の場合は「未使用」を示す値“０”、使用中（カレント）は「使用中」を示す値“１”、使用後の場合は「使用後」を示す値“２”を、その状態値として設定することにより、データ格納領域（パーティション）毎の格納状態を管理している。
【００３９】
図４の例では、使用可能なＰｒｔ数は３個（Ｐｒｔ１、Ｐｒｔ２、Ｐｒｔ３）、各データ格納領域（パーティション）に格納可能な最大データ量は３００Ｍに設定され、現在Ｐｒｔ３のデータ格納領域が新規の登録データを格納するために使用されており、その使用量は現在１００Ｍであること、Ｐｒｔ１は、データ格納状況監視部（３）により、使用後（“２”）から未使用（“０”）に変更された状態、Ｐｒｔ２は使用後（“２”）の状態であることを示している。
【００４０】
図５は、本実施形態におけるデータ登録制御部（１）のデータ登録動作を示すフローチャートであり、図６は、本実施形態におけるデータ格納状況監視部（３）のデータ格納状況監視動作を示すフローチャートである。以下、図２〜図６を参照して本実施形態の動作について説明する。
【００４１】
本プログラムを利用する場合には、まず開始／終了手段（７）を使ってデータ格納状況監視部（３）を常駐プロセスとして起動する。データ格納状況監視部（３）は、データ格納領域管理テーブル（２）をメモリに展開する。利用者は、初回起動時にのみ開始／終了手段（７）を用いて、データ格納領域管理テーブル（２）へ図４で示す項目のうち、Ｐｒｔ数、およびＭａｘサイズを必要数分設定する。
【００４２】
２回目以降の起動時は、管理情報保存手段（８）に保存されている前回停止時の情報を読み込んでデータ格納領域管理テーブル（２）へ設定する。これは、本プログラムの使用を終える時に、開始／終了手段（７）からデータ格納状況監視部（３）へ停止指示を送り、停止指示を受けたデータ格納状況監視部（３）は、メモリに展開されているデータ格納領域管理テーブルの情報を管理情報保存手段（８）へ格納することで可能となる。
【００４３】
データ格納状況監視部（３）は、データ格納領域管理テーブル（２）への値設定が終わると、データベースに接続して定期的に図６に示すフローに従って各データ格納領域（パーティション）の状態を確認し、データ格納領域管理テーブル（２）の格納状態更新を行う（ステップＳ３〜ステップＳ１３）が、このデータ格納状況監視部（３）が行う監視間隔の間に、次スワップ先（次のデータ格納領域として利用するパーティション）に未処理データがあるためデータ登録制御部（１）がデータ登録を実行できない事象が生じている場合がある。
【００４４】
そのような場合に、データ登録処理に速やかに対処できるようにするため、データ登録制御部（１）から未処理データ退避指示を受け付ける（ステップＳ１）。データ登録制御部（１）から未処理データ退避指示がある場合（ステップＳ１、ｙｅｓ）には、当該データ格納領域（パーティション）から未処理データを退避用領域（４）へ移動するとともに該データ格納領域（パーティション）内のデータ削除を行い、データ格納領域管理テーブル（２）における該データ格納領域（パーティション）の格納状態を未使用“０”に変更する（ステップＳ２）。
【００４５】
次に、全パーティションのチェックを完了したか判定し（ステップＳ３）、完了していないときには次パーティションのチェック処理を行う（ステップＳ４）。
【００４６】
先ず、データ格納領域管理テーブル（２）のデータ格納領域（パーティション）毎の格納状態を参照して、該当パーティションの格納状態が使用後“２”であるか否かを判定する（ステップＳ５）。使用後“２”でない場合には該当パーティションは未使用“０”か、あるいは使用中（カレント）“１”であるので、以後の処理は行わずにステップＳ３へ戻る。
【００４７】
該当パーティションの格納状態が使用後“２”の場合には、一次／二次キーを基に、該データ格納領域（パーティション）を検索し、その処理済みフラグを参照して未処理データが存在するかをチェックする（ステップＳ６）。未処理データが存在しない場合（ステップＳ７、ｙｅｓ）は、該データ格納領域（パーティション）に格納されたデータを全て削除し、データ格納領域管理テーブル（２）の該当パーティションの格納状態を未使用“０”に変更（ステップＳ８）して、ステップＳ３へ戻る。
【００４８】
未処理データが存在する場合（ステップＳ７、ｎｏ）は、該データ格納領域（パーティション）が次のデータ格納領域として利用される領域（次スワップ先Ｐｒｔ）に該当しているか否かをチェックする（ステップＳ９）。
【００４９】
該データ格納領域（パーティション）が次のデータ格納領域（次スワップ先Ｐｒｔ）に該当しているかの判定は、例えば、当該データ格納領域が、現在使用中“１”のカレントデータ格納領域の次にデータが格納されるデータ格納領域である、あるいは、当該データ格納領域が、現在使用中“１”のカレントデータ格納領域の次にデータが格納されるデータ格納領域であって、且つ、現在使用中“１”のカレントデータ格納領域に既に所定値以上（例えば、Ｍａｘサイズの８０％以上）のデータが格納されている、等の判定基準を設定することにより行うことができる。
【００５０】
チェックの結果、該データ格納領域（パーティション）が次スワップ先Ｐｒｔである場合（ステップＳ９、ｙｅｓ）には、当該データ格納領域（パーティション）内の未処理データを退避用領域（４）へ移動（ステップＳ１０）した後、該データ格納領域（パーティション）に格納されたデータを全て削除し、データ格納領域管理テーブル（２）の該当パーティションの格納状態を未使用“０”に変更（ステップＳ８）して、ステップＳ３へ戻る。
【００５１】
当該データ格納領域（パーティション）が次スワップ先Ｐｒｔではない場合（ステップＳ９、ｎｏ）は、該データ格納領域（パーティション）内のデータは未だ削除する必要はなく、また該データ格納領域（パーティション）内の未処理データは、該データ格納領域が次スワップ先Ｐｒｔとなる前に該格納領域から取り出されて処理される可能性があるので、そのままステップＳ３へ戻る。
【００５２】
ステップＳ３で、全パーティションのチェックが完了したら（ステップＳ３、ｙｅｓ）退避用領域（４）内に処理済みのデータ（レコード）があるかチェックし（ステップＳ１１）、退避用領域（４）内に処理済みのデータがある場合（ステップＳ１１、ｙｅｓ）には、当該レコードを退避用領域（４）から削除する（ステップＳ１２）。
【００５３】
データ格納状況監視部（３）は、以上の監視、処理動作を、監視停止指示（ステップＳ１３、ｙｅｓ）があるまで、定期的に繰り返す。なお、図２に示すデータベースの状態は、現在使用中“１”のカレントデータ格納領域（１３）が、使用後“２”となった状態が検出され、次スワップ先のデータ格納領域（１１）内の未処理データを退避用領域（４）へ移動している状態を示している。
【００５４】
一方、データ登録制御部（１）は、アプリケーションプログラム（ＡＰ）からのデータ登録要求を受け付け、図５に示すフローに従って適切なデータ格納領域へデータレコードを登録し、データ格納領域管理テーブル（２）の情報を更新する。
【００５５】
即ち、ＡＰから受け取ったグループを特定するキーを基に、対応するデータ格納領域管理テーブルを検索する（ステップＳ２１）。該当するキーレコードがない場合（ステップＳ２２、ｙｅｓ）は異常終了し（ステップＳ２３）、該当キーレコードがある場合（ステップＳ２２、ｎｏ）は、図４に示すデータ格納領域管理テーブル（２）のカレントＰｒｔＮｏ．、Ｍａｘサイズ、および使用量と、ＡＰから受け取ったアプリケーションデータサイズから、当該カレントＰｒｔＮｏ．のデータ格納領域（パーティション）に入るか否かをチェックする（ステップＳ２４）。
【００５６】
当該カレントＰｒｔＮｏ．のデータ格納領域（パーティション）への登録が可能な場合（ステップＳ２５、ｙｅｓ）には、データ格納領域管理テーブルの当該カレントＰｒｔＮｏ．の使用量にＡＰから受け取ったアプリケーションデータサイズを加算し、図３に示すように一次キー、二次キーと、処理未済フラグ“ＯＦＦ”（未処理）を設定してデータレコードを登録し（ステップＳ２６）、ＡＰ結果を返却して処理を終了する（ステップＳ３２）。
【００５７】
ＡＰから受け取ったアプリケーションデータサイズが当該カレントＰｒｔＮｏ．のデータ格納領域（パーティション）に格納可能なデータ量（Ｍａｘサイズ−使用量）よりも大きくて、当該カレントＰｒｔＮｏ．のデータ格納領域（パーティション）への登録が不可能な場合（ステップＳ２５、ｎｏ）には、データ格納領域管理レコードから次スワップ先となるデータ格納領域（パーティション）の状態が“０”（未使用）か否かをチェックする（ステップＳ２７）。
【００５８】
未使用“０”の場合（ステップＳ２８、ｙｅｓ）には、データ格納領域管理テーブルのカレントＰｒｔＮｏ．をスワップ先の番号に変更、使用量にＡＰから受け取ったアプリケーションデータサイズを設定、登録が不可能であった旧データ格納領域（パーティション）の格納状態を“１”（使用中）から“２”（使用後）に変更、およびスワップ先となった新データ格納領域（パーティション）の格納状態を“０”（未使用）から“１”（使用中）に変更した後、一次キー、二次キーと、処理未済フラグ“ＯＦＦ”（未処理）を設定してデータレコードを登録して（ステップＳ３１）、処理を終了する（ステップＳ３２）。
【００５９】
次のスワップ先となるデータ格納領域（パーティション）の状態が未使用ではない、即ち“２”（使用後）である場合（ステップＳ２８、ｎｏ）には、データ格納状況監視部（３）にスワップ先の未処理データを退避させる指示（図６のステップＳ１）を与え、当該スワップ先のデータ格納領域（パーティション）の格納状態が“０”（未使用）になるのを待ち（ステップＳ２９〜ステップ３０）、未使用状態となった（ステップＳ３０、ｙｅｓ）後、ステップＳ３１のデータレコード登録処理を実行して、処理を終了する（ステップＳ３２）。
【００６０】
データ取り出し処理を行うアプリケーションは、図３で示すデータ構造のＡＰキーと順序を使って必要なデータレコードを直接読み込んで処理を行う。処理が終了した時点で、データ取り出し制御部（５）へ処理が終了したデータレコードを通知する。データ取り出し制御部（５）は、受け取ったレコードをもとに、データ格納時に未処理を示す“ＯＦＦ”に設定された該当データレコードの処理フラグを、処理済みを示す“ＯＮ”に変更する。
【００６１】
本実施形態によれば、サイクリック利用する複数のデータ格納領域（１１〜１３）以外に退避用領域（４）を用意し、次のスワップ先となるデータ格納領域に未処理データが残っている場合には、当該データを退避用領域に移動して、当該データ格納領域を空にすることができるので、複数のデータ格納領域のサイクリック利用を確実に行うことができる。そのため、ディスク使用量肥大を避けるととともにデータ削除を効率的に行って確実なスワップ処理が実現可能となる。
【００６２】
また、データ登録制御部（１）、およびデータ取り出し制御部（５）によるアプリケーションが、複雑なデータ格納領域の振り分けを意識することなくデータアクセスを行うことが可能となり、アプリケーションプログラムの開発効率を上げることができる。
【００６３】
図７は、データ格納領域としてデータベースのパーティションを利用した本発明の第３の実施形態のデータ処理方式を示すシステム図であり、図８は、本実施形態のデータ格納領域管理テーブル（２）で保有されている管理情報の例を示す図である。
【００６４】
本実施形態は、データ格納領域としてデータベースを、グループ毎のデータ群に分け、グループ毎に夫々独立にデータを格納可能に構成したことを特徴としており、図７に示すように、データ格納領域としてのデータベースは、グループ１のデータ群、グループ２のデータ群、・・・に分けられている。この点を除けば、第１の実施例と同様の構成となっている。
【００６５】
図８において、一次キーは、登録先のグループを特定するためのキー（図１０におけるキーに相当）であり、データ格納時にＡＰから指定される値である。Ｐｒｔ数は、グループ内で使用可能なサイクリック用データ格納領域（パーティション：Partition）の数を示しており、Ｍａｘサイズは、夫々のグループ毎に予め設定された各データ格納領域（パーティション）に格納可能な最大データ量を示している。このＰｒｔ数、およびＭａｘサイズは、初回起動時に開始／終了手段（７）を用いて、一次キー（グループ）毎に、利用者によりデータ格納領域管理テーブル（２）に必要数分設定される。
【００６６】
カレントＰｒｔＮｏ．は、現在データ登録が行われているデータ格納領域（パーティション）の番号を示しており、使用量は、このカレントデータ格納領域（パーティション）に登録されているデータ量を示している。また、ＰｒｔＮｏ．毎に、未使用の場合は“０”、使用中（カレント）は“１”、使用後の場合は“２”により、データ格納領域（パーティション）毎の格納状態を管理している。
【００６７】
図８の例では、一次キー１で特定されるグループは、グループ内で使用可能なＰｒｔ数は３個（Ｐｒｔ１、Ｐｒｔ２、Ｐｒｔ３）、各データ格納領域（パーティション）に格納可能な最大データ量は２００Ｍに設定され、現在Ｐｒｔ３のデータ格納領域が登録データを格納するために使用されており、その使用量は現在１０Ｍであること、Ｐｒｔ１、Ｐｒｔ２は使用後（“２”）の状態であることを示している。
【００６８】
また、一次キー２で特定されるグループは、グループ内で使用可能なＰｒｔ数は２個（Ｐｒｔ１、Ｐｒｔ２）、各データ格納領域（パーティション）に格納可能な最大データ量は２００Ｍに設定され、現在Ｐｒｔ１のデータ格納領域を使用中（“１”）で、その使用量は現在１５０Ｍであり、Ｐｒｔ２は未使用（“０”）状態であることを示している。
【００６９】
また、一次キー３で特定されるグループは、グループ内で使用可能なＰｒｔ数は３個（Ｐｒｔ１、Ｐｒｔ２、Ｐｒｔ３）、各データ格納領域（パーティション）に格納可能な最大データ量は１００Ｍに設定され、現在Ｐｒｔ３のデータ格納領域を使用中（“１”）で、その使用量は現在１００Ｍであり、Ｐｒｔ３は未使用（“０”）状態、Ｐｒｔ１は使用後（“２”）の状態であることを示している。
【００７０】
図９は、本実施形態におけるデータ格納状況監視部（３）のデータ格納状況監視動作を示すフローチャートである。
【００７１】
本実施形態では、図６に示す第２の実施形態のデータ格納状況監視動作フローチャートにおける全パーティションのチェック処理を、グループ１のデータ群、グループ２のデータ群、・・・毎に、夫々独立に実行している。
【００７２】
そのため、図９に示すように、各グループ内のパーティションチェック（ステップＳ５〜ステップＳ１２）を行う前に、チェックするグループ単位を順次選択するための処理（ステップＳ３〜ステップＳ４）が付加されるが、その点を除けば、第２の実施形態におけるデータ格納状況監視動作と同様の動作が行われ、また、データ登録制御部（１）のデータ登録動作も、グループ単位に設けられたサイクリック利用される複数のデータ格納領域及び退避用領域に、グループ毎に夫々独立に登録動作を行っている点を除けば、第２の実施形態におけるデータ登録動作と同様であるので、詳細な動作説明については省略する。
【００７３】
本実施形態においても、サイクリック利用するデータ格納領域以外に退避用領域を用意し、次に利用されるデータ格納領域に未処理データが残っている場合には、該未処理データを退避用領域に移動することによって、当該データ格納領域内の未処理データを空にしてデータ格納領域単位にデータ削除を行うことを可能にしているので、処理効率が向上するとともに、各データ格納領域を大きくするあるいはデータ格納領域数を増やすことなくデータ格納領域のサイクリック利用を確実に行うことが可能となる。
【００７４】
また、データ取り出し手段は、退避用領域に直接アクセスしてデータを取り出すことができるので、退避領域に退避されたデータを、サイクリック利用するデータ格納領域へ復帰させる動作は不要であり、データ格納領域の管理・制御が容易となる。さらに、データ格納領域の管理・及び切替制御は独立したプログラムにより実行可能であるので、アプリケーションの開発効率が上がる。
【産業上の利用可能性】
【００７５】
なお上記実施形態では、データ格納領域としてデータベースのパーティションを使用した場合の態様について説明したが、データ格納領域としてファイルや共有メモリを利用することも可能である。
【００７６】
ただし、本発明が扱うデータは登録された後に処理されるまでは存続することが保証されることを前提とするため（保証の必要がない場合は、次スワップ先に未処理データがあっても削除することでサイクリック利用が可能となる）、データ格納領域としてファイルや共有メモリを使用する場合はデータベース同等のデータ保証機能が必須となる。
【００７７】
また、本実施形態におけるデータ登録制御手段、データ格納状況監視手段、データ取り出し制御手段は、本発明のデータ処理制御を実行するためのプログラムを格納したメモリと、該メモリに格納されたプログラムを読み込み、該プログラムに従って本発明のデータ処理のための制御を実行するＣＰＵ（中央演算処理装置）からなるコンピュータによって実現することができる。
【符号の説明】
【００７８】
１  データ登録制御部
２  データ格納領域管理テーブル
３  データ格納状況監視部
４  退避用領域
５  データ取り出し制御部
６  データレコード
７  開始／終了手段
８  管理情報保存手段
１１〜１３  データ格納領域
【図１】
2010224672.tif 000003
【図２】
2010224672.tif 000004
【図３】
2010224672.tif 000005
【図４】
2010224672.tif 000006
【図５】
2010224672.tif 000007
【図６】
2010224672.tif 000008
【図７】
2010224672.tif 000009
【図８】
2010224672.tif 000010
【図９】
2010224672.tif 000011
【図１０】
2010224672.tif 000012