(57)【要約】【課題】可変長データの連続性を保証するファイルを出力する並列可変長ファイル出力装置及びその出力方法を提供すること課題とする。【解決手段】書き込み時に連続的な番号（通番）が付与された複数の可変長データで構成される可変長ファイルを分割して並列的に第１記憶部１５ａ及び第２記憶部１５ｂに記憶しておき、各記憶部から読み出した複数の可変長データを読込用バッファ１４に読み込み、その通番に基づいて読込用バッファ１４に読み込んだ複数の可変長データを出力する。【選択図】図１
2009064095.tif 000002
【特許請求の範囲】
【請求項１】
書き込み時に連続的な番号が付与された複数の可変長データで構成される可変長ファイルを分割して並列的に記憶しておく記憶部と、
前記記憶部から読み出した前記複数の可変長データをバッファに読み込み、前記番号に基づいて当該複数の可変長データを出力する読込処理部と、
を有することを特徴とする並列可変長ファイル出力装置。
【請求項２】
前記読込処理部は、
複数の読込要求にそれぞれ対応した前記複数の可変長データを前記バッファにそれぞれ読み込むことを特徴とする請求項１に記載の並列可変長ファイル出力装置。
【請求項３】
前記読込処理部は、
前記可変長ファイルを構成する前記可変長データの一部又は全部が前記記憶部に記憶されていない場合に、記憶されていない前記可変長データの書き込みが終了した後に、前記複数の可変長データを当該記憶部から読み出すことを特徴とする請求項１又は２のいずれか１項に記載の並列可変長ファイル出力装置。
【請求項４】
前記読込処理部は、
前記可変長ファイルを構成する前記可変長データの一部が前記記憶部に記憶されていない場合に、記憶されている前記複数の可変長データを読み出して、記憶されていない前記可変長データの書き込みが行われる毎に、書き込まれた当該可変長データを読み出すことを特徴とする請求項１乃至３のいずれか１項に記載の並列可変長ファイル出力装置。
【請求項５】
前記可変長データには、当該可変長データの大きさを示すサイズが更に付与されていることを特徴とする請求項１乃至４のいずれか１項に記載の並列可変長ファイル出力装置。
【請求項６】
書き込み時に連続的な番号が付与された複数の可変長データで構成される可変長ファイルを分割して並列的に記憶部に記憶しておくステップと、
前記記憶部から読み出した前記複数の可変長データをバッファに読み込み、前記番号に基づいて当該複数の可変長データを出力するステップと、
を有することを特徴とする並列可変長ファイル出力方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分割して配置された複数の可変長ファイルを出力する出力装置及びその出力方法の技術に関する。
【背景技術】
【０００２】
現在、インターネット上に存在するブログやネットショップなどのサービスや、モバイルネットワークを用いた携帯電話上のコミュニティなどが日々拡大している。通常、それらのサービスの利用を希望するユーザは、サービスの提供元に対してユーザ登録を行い、一方、サービスの提供元は、そのサービスを更に拡充すると共に、登録されたユーザの顧客管理や、サービスを提供するソフトウェアや該ソフトウェアをインストールするハードウェアなどのシステム管理などを行う。
【０００３】
そして、登録された各種データや、ＢＩＯＳ（Basic Input Output System），ＯＳ（Operating System），アプリケーションなどのシステム全般により定期的に出力されるジャーナルやシステムログといったファイルを適切に管理することは、サービス提供元の信頼を高める上で最も重要視されている。
【０００４】
一方、コンピュータプログラム上でのファイルは、通常、そのファイルのデータの最初から最後までが１つのハードウェアやメモリなどの記憶領域に連続して保存されるのではなく、その記憶領域内の各アドレスを直接的に命令するＢＩＯＳやＯＳにより、空いているアドレスに分割されて保存されている。また、物理的な記憶領域が複数存在する場合には、分割されたファイルは各記憶領域に保存される場合もある。このように各ファイルを分割して保存する理由は、空いている記憶領域を効率的に利用するために行われるものである。
【０００５】
従って、現在では、分割して配置された複数の可変長ファイルを高い信頼で且つ高いスループットで出力する技術が求められている。
【０００６】
ここで、ファイルをメモリや読み込んで出力する従来技術は特許文献１乃至３に開示されている。特許文献１には、入出力処理部と入出力装置との間にバッファプールを管理する複数のバッファ管理部を備え、入出力要求の内容と処理データの特性に応じてバッファ管理部を最適に選択するキャッシュ機構が開示されている。
【０００７】
また、特許文献２は、複数のディスク機構が各々固有のディスコネクト・リコネクト装置を介してバス装置に接続されて各々のディスク装置にキャッシュメモリを搭載する装置において、ＣＰＵから読み込み又は書き込み要求を発行してディスク装置に命令を転送した後に、ディスク装置をバス装置から切り離すことによりディスク媒体からキャッシュメモリの転送時間待ちの間に他のディスクへの命令が転送できる技術が開示されている。
【０００８】
特許文献３は、複数ノードに部分ファイルを配置し、その複数の部分ファイルを束ねる制御を行うことにより、論理的なファイルのサイズを大きくする技術が開示されている。また、この論理的なファイルへのアクセスが集中した場合にも、部分ファイルを複数ノードに分散配置することによりスループットを高くする技術が開示されている。
【特許文献１】特開平５−２６５８６３号公報
【特許文献２】特開平５−２５００９９号公報
【特許文献３】特開平９−３１１８１０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１に開示された技術は、大量の入出力処理を他の入出力要求に対して影響を与えることなく処理する技術であるため、分割されたファイルの連続性を保証できないという問題がある。
【００１０】
また、特許文献２に開示された技術は、デバイスとの接続切断方式と命令の転送に関する技術であるため、上記と同様に、分割されたファイルの連続性を保証できないという問題がある。
【００１１】
更に、特許文献３に開示された技術は、書き込みと読み込みとが同時に要求されることを想定していないため、部分ファイルを書き込み中に一連のファイルの読み込み要求がされた場合に、書き込み中の部分ファイルが読み飛ばされる可能性が存在するので、上記と同様に、分割されたファイルの連続性を確実には保証できないという問題がある。
【００１２】
本発明は、上記を鑑みてなされたものであり、可変長データの連続性を保証するファイルを出力する並列可変長ファイル出力装置及びその出力方法を提供すること課題とする。
【課題を解決するための手段】
【００１３】
請求項１に記載の並列可変長ファイル出力装置は、書き込み時に連続的な番号（通番）が付与された複数の可変長データで構成される可変長ファイルを分割して並列的に記憶しておく記憶部と、前記記憶部から読み出した前記複数の可変長データをバッファに読み込み、前記番号に基づいて当該複数の可変長データを出力する読込処理部と、を有することを要旨とする。
【００１４】
本発明にあっては、書き込み時に連続的な番号（通番）が付与された複数の可変長データで構成される可変長ファイルを分割して並列的に記憶部に記憶しておき、この記憶部から読み出した複数の可変長データをバッファに読み込み、その通番に基づいてバッファに読み込んだ複数の可変長データを出力するため、可変長データの連続性を保証したファイルを出力することができる。
【００１５】
請求項２に記載の並列可変長ファイル出力装置は、前記読込処理部が、複数の読込要求にそれぞれ対応した前記複数の可変長データを前記バッファにそれぞれ読み込むことを要旨とする。
【００１６】
本発明にあっては、読込処理部が、複数の読込要求にそれぞれ対応した複数の可変長データをバッファにそれぞれ読み込むため、異なる要求に対するそれぞれの可変長データを迅速に提供することができる。
【００１７】
請求項３に記載の並列可変長ファイル出力装置は、前記読込処理部が、前記可変長ファイルを構成する前記可変長データの一部又は全部が前記記憶部に記憶されていない場合に、記憶されていない前記可変長データの書き込みが終了した後に、前記複数の可変長データを当該記憶部から読み出すことを要旨とする。
【００１８】
本発明にあっては、読込処理部が、可変長ファイルを構成する可変長データの一部又は全部が記憶部に記憶されていない場合に、記憶されていない可変長データの書き込みが終了した後に、複数の可変長データを読み出すため、可変長ファイルの書込処理と読込処理とが同時に発生した場合であっても、可変長データの連続性を確実に保証するファイルを出力することができる。
【００１９】
請求項４に記載の並列可変長ファイル出力装置は、前記読込処理部が、前記可変長ファイルを構成する前記可変長データの一部が前記記憶部に記憶されていない場合に、記憶されている前記複数の可変長データを読み出して、記憶されていない前記可変長データの書き込みが行われる毎に、書き込まれた当該可変長データを読み出すことを要旨とする。
【００２０】
本発明にあっては、読込処理部が、可変長ファイルを構成する可変長データの一部が記憶部に記憶されていない場合に、記憶されている複数の可変長データを読み出して、記憶されていない可変長データの書き込みが行われる毎に、書き込まれた可変長データを読み出すため、可変長データの連続性を確実に保証するファイルを出力することができる。
【００２１】
請求項５に記載の並列可変長ファイル出力装置は、前記可変長データには、当該可変長データの大きさを示すサイズが更に付与されていることを要旨とする。
【００２２】
本発明にあっては、可変長データには、可変長データの大きさを示すサイズが更に付与されているため、分割された各可変長ファイルの各可変長データを正確にバッファに読み込むことができる。
【００２３】
請求項６に記載の並列可変長ファイル出力方法は、書き込み時に連続的な番号（通番）が付与された複数の可変長データで構成される可変長ファイルを分割して並列的に記憶部に記憶しておくステップと、前記記憶部から読み出した前記複数の可変長データをバッファに読み込み、前記番号に基づいて当該複数の可変長データを出力するステップと、を有することを要旨とする。
【発明の効果】
【００２４】
本発明によれば、可変長データの連続性を保証するファイルを出力する並列可変長ファイル出力装置及びその出力方法を提供することができる。
【発明を実施するための最良の形態】
【００２５】
以下、本発明の実施の形態について図面を用いて説明する。
【００２６】
〔第１の実施の形態〕
図１は、第１の実施の形態に係る並列可変長ファイル出力装置の機能ブロックを示す機能ブロック図である。本実施の形態に係る並列可変長ファイル出力装置１は、読み込み依頼を行う読込依頼部１１と、読み込み処理を行う読込処理部１２と、読み込んだデータ（ファイル）を保持するデータ保持部１３と、読み込まれるファイルが記憶されている第１記憶部１５ａ及び第２記憶部１５ｂとを備えた構成である。
【００２７】
読込依頼部１１は、要求端末２から発行される読込リクエストに基づいて、データ保持部１３に対して、第１記憶部１５ａ及び第２記憶部１５ｂに記憶された各ファイルを構成する複数のデータを読み込むための読込用バッファ１４の確保を依頼し、読込処理部１２に対して、確保された読込用バッファ１４にその複数のデータの読み込みを依頼する機能を備えている。また、読込依頼部１１は、読込処理部１２から通知される読込完了通知、若しくは読込失敗通知を受け取って、要求端末２から発行された読込リクエストに対する処理結果と読込用バッファ１４に読み込まれた読込データとを要求端末２に返却（出力）する機能を備えている。
【００２８】
読込処理部１２は、読込依頼部１１から依頼された読込依頼に基づいて、第１記憶部１５ａ及び第２記憶部１５ｂに記憶された複数のデータを読み出す機能を備えている。また、読み出したデータを読込用バッファ１４へ読み込ませ、その読込データを読込依頼部１１に返却（出力）する機能も備えている。更に、読込処理部１２は、要求端末２から同じデータの読込リクエストが発行された場合に、読込用バッファ１４に既に読み込まれているデータを読込依頼部１１に返却（出力）する機能を備えている。この返却機能により、第１記憶部１５ａ及び第２記憶部１５ｂからデータを読み出す処理を省くことができるので、読込リクエストに対して迅速にデータを返却することができる。
【００２９】
データ保持部１３は、読込依頼部１１から依頼された読込用バッファ１４の確保依頼に基づいて、その確保依頼で指定されたバッファサイズの読込用バッファ１４を確保する機能を備えている。この読込用バッファ１４とは、前述したように、第１記憶部１５ａ及び第２記憶部１５ｂに記憶された各ファイルを構成する複数のデータを読み込むためのバッファ領域である。なお、本実施の形態では、データ保持部１３や読込用バッファ１４は、高速にアクセス可能な（キャッシュ）メモリやファイルなどの一次記憶媒体であり、第１記憶部１５ａ及び第２記憶部１５ｂは、Ｉ／Ｏ（Input/Output）処理が発生するハードディスクなどの二次記憶媒体として説明する。
【００３０】
次に、本実施の形態に係るファイルについて説明する。１つの論理ファイルは、複数の物理ファイルに並列的に分割可能な並列ファイルという概念を持ち、図１及び図２に示すように、第１ファイル１６ａ〜第５ファイル１６ｅで示す５つの複数のファイルに分割されている。そして、第１ファイル１６ａ〜第３ファイル１６ｃは第１記憶部１５ａに記憶され、第４ファイル１６ｄと第５ファイル１６ｅとは第２記憶部１５ｂに記憶されている。
【００３１】
各ファイルの先頭には、分割後の複数のファイルを分割前の１つのファイルにするために用いるファイル番号と、各ファイルの大きさを示すファイルサイズと、各ファイルの使用済み領域を示す使用済みサイズと、各ファイルが格納している最初のデータに付与された開始通番と、各ファイルが格納している最後のデータに付与された終了通番とを有するファイルヘッダが付与されている。
【００３２】
また、ファイルヘッダの次列には複数のレコード領域が用意されており、各レコードには、レコードヘッダと、ユーザ等により入力されたデータと、レコードフッタとが格納されている。レコードヘッダとレコードフッタとの構成は共通であり、第１記憶部１５ａ及び第２記憶部１５ｂへの書き込み依頼時に与えられた連続する番号（通番）と、各レコードの大きさを示すレコードサイズとが格納されている。通常、先に書き込み依頼されたデータであっても、そのデータのサイズなどの関係上、そのデータよりも後に書き込み依頼されたデータの方が先に記憶部に書き込まれる場合があり、各ファイルの各データの順番は、書き込み依頼時の順番に必ずしも一致していない。
【００３３】
更に、各ファイルは追記型のファイルシステムの枠組みで構成された可変長ファイルであって、例えば、ユーザ等によりファイルの内容が一部追記された場合に、その追記されたデータを、これまでに記憶部に書き込まれた次の位置にそのデータを追加的に書き込むことができる。例えば、第１ファイル１６ａの最終レコードの次の位置に追加してもよいし、各レコードのデータ内に追加してレコードサイズを増加してもよい。また、各ファイルは、世代という概念を持ち、複数の世代を保持することができる。
【００３４】
なお、前述したファイルの分割数や、分割された各ファイルが書き込まれている記憶部の数量は一例を示すものであって、書き込み依頼時に連続的な番号（通番）が付与された複数の可変長データで構成される可変長ファイルを分割して並列的に記憶しておく記憶部であれば、単一の記憶部であっても良い。
【００３５】
続いて、並列可変長ファイル出力装置の処理について説明する。図３は、本実施の形態に係る並列可変長ファイル出力装置の処理の流れを示すフローチャートである。
【００３６】
要求端末２は、読込依頼部１１に対して、所望のファイルを読み込むための読込リクエストを発行すると共に、読込開始位置と読込データ数とを通知する（ステップＳ１０１）。なお、この読込開始位置には、読み込む先頭／末尾の位置や、指定されたデータの通番などが含まれている。
【００３７】
読込依頼部１１は、データ保持部１３に対して、読み込むデータ用の読込用バッファの確保依頼を発行すると共に、読み込みに必要なバッファサイズを通知する（ステップＳ１０２）。
【００３８】
データ保持部１３は、読込用バッファの確保依頼に基づいて、読込用バッファが存在しない場合に、通知されたバッファサイズの領域を確保し、その確保結果と確保した読込用バッファの位置（ポインタ）とを読込依頼部１１に返却する（ステップＳ１０３）。
【００３９】
読込依頼部１１は、確保された読込用バッファに対して、要求端末２から通知された読込開始位置と読込データ数とを設定する（ステップＳ１０４）。
【００４０】
読込依頼部１１は、読込処理部１２に対して、ファイルの読込依頼を発行すると共に、データ保持部１１から返却された読込用バッファの位置（ポインタ）を通知する（ステップＳ１０５）。
【００４１】
読込処理部１２は、ファイルの読込依頼を受け取り、通知された読込用バッファの位置（ポインタ）に基づいて、データ保持部１３に対して、読込用バッファの設定情報を要求する（ステップＳ１０６）。
【００４２】
データ保持部１３は、読込処理部１２に対して、読込用バッファに設定された設定情報を返却する（ステップＳ１０７）。
【００４３】
読込処理部１２は、データ保持部１３から返却された設定情報に含まれる読込開始位置と読込データ数とに基づいて、第１記憶部１５ａ及び第２記憶部１５ｂに読込依頼を発行する（ステップＳ１０８）。
【００４４】
第１記憶部１５ａ及び第２記憶部１５ｂは、読込開始位置に記憶されているデータを返却する（ステップＳ１０９）。
【００４５】
読込処理部１２は、返却されたデータを取得して、読込用バッファに読み込む（ステップＳ１１０）。
【００４６】
ステップＳ１０８〜ステップＳ１１０を読込要求のあった読込データ数分繰り返し、ＥＯＦ（End Of File）に到達した場合には読み込みを終了する。なお、読込データ数分繰り返す方法ではなく、各ファイル単位若しくは全ファイル一括で読み込むことも可能である。また、各ファイル単位若しくは全ファイル読込時は、必ずしも一括である必要はなく、一部分を読み込んでも良い。ファイル単位で読み込むことにより、第１記憶部１５ａ及び第２記憶部１５ｂに対するＩ／Ｏ処理を低減するため、要求リクエストに対して高速にデータを返却（出力）することが可能となる。
【００４７】
読込処理部１２は、読込完了通知を読込依頼部１１に通知すると共に、読込用バッファ１４に読み込まれた複数の可変長データ（読込データ）を、通番に基づいて読込依頼部１１に返却（出力）する（ステップＳ１１１）。
【００４８】
読込依頼部１１は、読み込みの処理結果と読込データとを要求端末２に返却（出力）する（ステップＳ１１２）。
【００４９】
読込依頼部１１は、データ保持部１３に対して、読込データの削除依頼を発行する（ステップＳ１１３）。このとき、読込データの位置を指定する。
【００５０】
データ保持部１３は、読込データの削除依頼を受け取り、所定の期間内に再度読込リクエストがない場合には、読込用バッファに読み込まれた読込データを削除する（ステップＳ１１４）。これにより、有限的な資源であるバッファ領域を有効に活用することができる。無論、データ保持部１３は、読込データを永続的に読込用バッファに保持しておくことで、前述したように、要求端末２から同じデータの読込リクエストが発行された場合の処理を高速にすることが可能となる。
【００５１】
なお、ステップＳ１０２〜ステップＳ１０４に記載の処理の要求元は、要求端末２であってもよい。その場合には、ステップＳ１１３〜ステップＳ１１４の処理は要求端末２が行うことになる。
【００５２】
本実施の形態では、要求端末２から発行された読込リクエストに対応するファイルを構成する複数のデータの全てが第１記憶部１５ａ及び第２記憶部１５ｂに書き込まれていることを前提に説明したが、一部又は全部が書き込まれていない場合であってもよい。
【００５３】
前述したように、本実施の形態におけるファイルのデータは可変長なので、記憶部への書き込み依頼時に通番１，通番２，通番３の番号が付与された各データが、通番１，通番３，通番２の順番で書き込み終了する可能性がある。その場合に、ステップＳ１０８〜ステップＳ１１０において、読込処理部１２は、第１記憶部１５ａ及び第２記憶部１５ｂに記憶されていないデータの書き込みが終了した後に、書き込まれたこのデータをこれら記憶部から読み出す処理を行うことができる。例えば、通番１及び通番３の書き込みが終了した直後に、通番１〜通番３のデータの読込依頼が発生した場合には、通番２の書き込み終了を待って通番１，通番２，通番３のデータを読み出し、読込用バッファへの読み込みと読込依頼部１１への返却を行うことで、抜けのないデータの出力が可能となる。
【００５４】
また、読込処理部１２は、まず、第１記憶部１５ａ及び第２記憶部１５ｂに記憶されている複数のデータを読み出して、次に、記憶されていないデータの書き込みが行われる毎に、書き込まれたデータを読み出す処理を行うことも可能である。例えば、通番１〜通番５０のデータが記憶部に書き込まれた状態において、通番１〜通番１００のデータの読込依頼が発生した場合に、最初に、通番１〜通番５０のデータを読み出して、残りの通番５１〜通番１００の各データが記憶部に書き込まれる毎に順次読み出して、読込用バッファに読み込み、読込依頼部１１に返却することで、読込リクエストに対するファイルを構成するデータを確実に出力することができる。なお、読込処理部１２は、データ保持部１３に設定された読込データ数とは関係なく、読込データ数を無限とすることも可能である。その場合、記憶部への書き込みが発生するたびにデータの返却が可能となり、ＵＮＩＸ若しくはＬｉｎｕｘの“ｔａｉｌ  −ｆ”コマンド相当の機能が実現可能となる。
【００５５】
本実施の形態によれば、書き込み時に連続的な番号（通番）が付与された複数の可変長データで構成される可変長ファイルを分割して並列的に第１記憶部１５ａ及び第２記憶部１５ｂに記憶しておき、各記憶部から読み出した複数の可変長データを読込用バッファ１４に読み込み、その通番に基づいて読込用バッファ１４に読み込んだ複数の可変長データを出力するので、可変長データの連続性を保証したファイルを出力することができる。
【００５６】
本実施の形態によれば、読込処理部１２が、可変長ファイルを構成する可変長データの一部又は全部が第１記憶部１５ａ及び第２記憶部１５ｂに記憶されていない場合に、記憶されていない可変長データの書き込みが終了した後に、複数の可変長データを読み出すため、可変長ファイルの書込処理と読込処理とが同時に発生した場合であっても、可変長データの連続性を確実に保証するファイルを出力することができる。
【００５７】
本実施の形態によれば、読込処理部１２が、可変長ファイルを構成する可変長データの一部が第１記憶部１５ａ及び第２記憶部１５ｂに記憶されていない場合に、記憶されている複数の可変長データを読み出して、記憶されていない可変長データの書き込みが行われる毎に、書き込まれた可変長データを読み出すので、可変長データの連続性を確実に保証するファイルを出力することができる。
【００５８】
本実施の形態によれば、可変長データには、可変長データの大きさを示すサイズが更に付与されているので、分割された各可変長ファイルの各可変長データを正確に読み込むことができる。
【００５９】
〔第２の実施の形態〕
図４は、第２の実施の形態に係る並列可変長ファイル出力装置の機能ブロックを示す機能ブロック図である。本実施の形態は、複数の要求端末により複数の読込リクエストが発行された場合の実施の形態を説明するものであって、図４に示す並列可変長ファイル出力装置１は、第１の実施の形態で説明した読込処理部１２と同じ機能を備えた第１読込処理部１２ａ及び第２読込処理部１２ｂを備えた構成である。その他の構成については、第１の実施の形態と同様なので、ここでは重複説明は省略する。
【００６０】
続いて、並列可変長ファイル出力装置の処理について説明する。図５は、本実施の形態に係る並列可変長ファイル出力装置の処理の流れを示すフローチャートである。
【００６１】
第１要求端末２ａは、読込依頼部１１に対して、所望のファイルを読み込むための読込リクエストを発行すると共に、読込開始位置と読込データ数とを通知する（ステップＳ２０１）。また、第２要求端末２ｂも、読込依頼部１１に対して、所望のファイルを読み込むための読込リクエストを発行すると共に、読込開始位置と読込データ数とを通知する（ステップＳ２０１’）。なお、この読込開始位置には、読み込む先頭／末尾の位置や、指定されたデータの通番などが含まれている。
【００６２】
読込依頼部１１は、データ保持部１３に対して、読み込むデータ用の第１読込用バッファ１４ａ及び第２読込用バッファ１４ｂの確保依頼を発行すると共に、それら読み込みに必要な各バッファサイズを通知する（ステップＳ２０２）。
【００６３】
データ保持部１３は、各読込用バッファの確保依頼に基づいて、各読込用バッファが存在しない場合に、通知されたバッファサイズの領域を確保し、その確保結果と確保した第１読込用バッファ１４ａ及び第２読込用バッファ１４ｂの位置（ポインタ）を読込依頼部１１に返却する（ステップＳ２０３）。
【００６４】
読込依頼部１１は、確保された各読込用バッファに対して、第１要求端末２ａ及び第２要求端末２ｂから通知された読込開始位置と読込データ数とをそれぞれ設定する（ステップＳ２０４）。
【００６５】
読込依頼部１１は、第１読込処理部１２ａに対して、第１要求端末２ａからのファイルの読込依頼を発行すると共に、データ保持部１１から返却された第１読込用バッファ１４ａの位置（ポインタ）を通知し、第２読込処理部１２ｂに対しては、第２要求端末２ｂからのファイルの読込依頼を発行すると共に、データ保持部１１から返却された第２読込用バッファ１４ｂの位置（ポインタ）を通知する（ステップＳ２０５）。
【００６６】
第１読込処理部１２ａは、ファイルの読込依頼を受け取り、通知された第１読込用バッファ１４ａの位置（ポインタ）に基づいて、データ保持部１３に対して、第１読込用バッファの設定情報を要求する（ステップＳ２０６）。また、第２読込処理部１２ｂも、ファイルの読込依頼を受け取り、通知された第２読込用バッファ１４ｂの位置（ポインタ）に基づいて、データ保持部１３に対して、第２読込用バッファの設定情報を要求する（ステップＳ２０６’）。
【００６７】
データ保持部１３は、第１読込処理部１２ａに対して、第１読込用バッファ１４ａに設定された設定情報を返却すると共に、第２読込処理部１２ｂに対しては、第２読込用バッファ１４ｂに設定された設定情報を返却する（ステップＳ２０７）。
【００６８】
第１読込処理部１２ａは、データ保持部１３から返却された設定情報に含まれる読込開始位置と読込データ数とに基づいて、第１記憶部１５ａ及び第２記憶部１５ｂに読込依頼を発行する（ステップＳ２０８）。また、第２読込処理部１２ｂも、データ保持部１３から返却された設定情報に含まれる読込開始位置と読込データ数とに基づいて、第１記憶部１５ａ及び第２記憶部１５ｂに読込依頼を発行する（ステップＳ２０８’）。
【００６９】
第１記憶部１５ａ及び第２記憶部１５ｂは、各読込依頼に対して読込開始位置に記憶されているデータをそれぞれ返却する（ステップＳ２０９）。
【００７０】
第１読込処理部１２ａは、返却されたデータを取得して、第１読込用バッファ１４ａに読み込む（ステップＳ２１０）。また、第２読込処理部１２ｂも、返却されたデータを取得して、第２読込用バッファ１４ｂに読み込む（ステップＳ２１０’）。
【００７１】
ステップＳ２０８−ステップＳ２０９−ステップＳ２１０、及び、ステップＳ２０８’−ステップＳ２０９−ステップＳ２１０’を読込データ数分繰り返し、ＥＯＦ（End Of File）に到達した場合には読み込みを終了する。なお、第１の実施の形態で説明したように、読込データ数分繰り返す方法ではなく、各ファイル単位若しくは全ファイル一括で読み込むことも可能である。また、各ファイル単位若しくは全ファイル読込時は、必ずしも一括である必要はなく、一部分を読み込んでも良い。ファイル単位で読み込むことにより、第１記憶部１５ａ及び第２記憶部１５ｂに対するＩ／Ｏ処理を低減するため、要求リクエストに対して高速にデータを返却（出力）することが可能となる。
【００７２】
第１読込処理部１２ａは、読込完了通知を読込依頼部１１に通知すると共に、第１読込用バッファ１４ａに読み込まれた複数の可変長データ（読込データ）を、通番に基づいて読込依頼部１１に返却（出力）する（ステップＳ２１１）。また、第２読込処理部１２ｂも、読込完了通知を読込依頼部１１に通知すると共に、第２読込用バッファ１４ｂに読み込まれた複数の可変長データ（読込データ）を、通番に基づいて読込依頼部１１に返却（出力）する（ステップＳ２１１’）。
【００７３】
読込依頼部１１は、それぞれの読み込みの処理結果及び読込データを第１要求端末２ａ及び第２要求端末２ｂにそれぞれ返却（出力）する（ステップＳ２１２）。
【００７４】
読込依頼部１１は、データ保持部１３に対して、読込データの削除依頼を発行する（ステップＳ２１３）。このとき、読込データの位置を指定する。
【００７５】
データ保持部１３は、読込データの削除依頼を受け取り、所定の期間内に再度読込リクエストがない場合には、第１読込用バッファ及び第２読込用バッファに読み込まれた読込データを削除する（ステップＳ２１４）。無論、データ保持部１３は、読込データを永続的に読込用バッファに保持しておくことも可能である。
【００７６】
なお、ステップＳ２０２〜ステップＳ２０４に記載の処理の要求元は、要求端末２であってもよい。その場合には、ステップＳ２１３〜ステップＳ２１４の処理は要求端末２が行うことになる。
【００７７】
本実施の形態によれば、第１読込処理部１２ａ及び第２読込処理部１２ｂが、複数の読込要求にそれぞれ対応した複数の可変長データをそれぞれ読み込むので、異なる読込リクエストに対するそれぞれの可変長データを迅速に提供することができる。
【００７８】
最後に、第１の実施の形態及び第２の実施の形態では、各要求端末から発行出力されるそれぞれの読込リクエストに対応するバッファ領域をそれぞれ形成する方法について説明したが、図６（ａ）や図６（ｂ）に示すように、読込リクエスト毎に各バッファ領域を形成し、且つ、各バッファ領域を、第１ファイル１６ａ〜第５ファイル１６ｅにそれぞれ対応する第１ファイル用バッファ１４１〜第５ファイル用バッファ１４５というようにファイル毎に形成してもよい。
【００７９】
また、図７に示すように、複数の要求端末による複数の読込リクエストに対して、１つの共用の読込用バッファ１４’を形成してもよい。更には、図８に示すように、図７で示す１つの共用の読込用バッファ１４’を形成し、且つ、この共用のバッファ領域をファイル毎に形成してもよい。
【００８０】
各実施の形態で説明した並列可変長ファイル出力装置１の処理をプログラムとして例えばＣＤやＦＤなどの記録媒体に記録して、この記録媒体をコンピュータに組み込んだり、または記録媒体に記録されたプログラムを通信回線を介してコンピュータにダウンロードしたり、または記録媒体からインストールし、該プログラムでコンピュータを動作させることにより、上述した処理を並列可変長ファイル出力装置１として機能させることができるのは勿論であり、このような記録媒体を用いることにより、その流通性を高めることができるものである。
【図面の簡単な説明】
【００８１】
【図１】第１の実施の形態に係る並列可変長ファイル出力装置の機能ブロックを示す機能ブロック図である。
【図２】第１の実施の形態に係るファイルの構成を示す図である。
【図３】第１の実施の形態に係る並列可変長ファイル出力装置の処理の流れを示すフローチャートである。
【図４】第２の実施の形態に係る並列可変長ファイル出力装置の機能ブロックを示す機能ブロック図である。
【図５】第２の実施の形態に係る並列可変長ファイル出力装置の処理の流れを示すフローチャートである。
【図６】読込用バッファの一例を示す図である。
【図７】読込用バッファの一例を示す図である。
【図８】読込用バッファの一例を示す図である。
【符号の説明】
【００８２】
１…並列可変長ファイル出力装置
２，２ａ，２ｂ…要求端末
１１…読込依頼部
１２，１２ａ，１２ｂ…読込処理部
１３…データ保持部
１４，１４ａ，１４ｂ…読込用バッファ
１５ａ…第１記憶部
１５ｂ…第２記憶部
１６ａ〜１６ｅ…第１ファイル〜第５ファイル
Ｓ１０１〜Ｓ１１４，Ｓ２０１〜Ｓ２１４…ステップ
【図１】
2009064095.tif 000003
【図２】
2009064095.tif 000004
【図３】
2009064095.tif 000005
【図４】
2009064095.tif 000006
【図５】
2009064095.tif 000007
【図６】
2009064095.tif 000008
【図７】
2009064095.tif 000009
【図８】
2009064095.tif 000010