(57)【要約】  サーバ装置(111)において、更新部(201)は、レコードをファイルの末尾に追加する追加処理を含む編集処理により、ファイルを更新する。収集部(202)は、ファイルに含まれるレコードを配置された順に読み出して、ファイル内におけるレコードの位置とレコードとを対応付けて収集システムに含まれる収集装置に収集させ、当該位置をオフセットとして非一時的に記録する。推定部(203)は、ファイルの先頭から記録されたオフセットまでに配置された冒頭レコードが更新されたか否かを推定する。開始部(204)は、冒頭レコードのいずれかが更新されたと推定されれば、収集部(202)によるレコードの読み出しをファイルの先頭から開始させ、いずれも更新されていないと推定されれば、収集部(202)によるレコードの読み出しを記録されたオフセットから開始させる。
2017158794.tif 000002
【特許請求の範囲】
【請求項１】
ファイルならびに前記ファイルに対するオフセットを非一時的に記録するサーバ装置と、収集システムと、を備えるファイル管理システムであって、
(a)前記サーバ装置は、編集プログラムを実行することにより、
レコードを前記ファイルの末尾に追加する追加処理を含む編集処理により、前記ファイルを更新する更新部
として機能し、
(b)前記サーバ装置は、収集プログラムを実行することにより、
前記ファイルに含まれるレコードを、前記ファイルに配置された順に読み出して、前記読み出されたレコードの先頭が前記ファイル内に配置されている位置と、前記読み出されたレコードと、を対応付けて収集システムに収集させ、前記非一時的に記録されるオフセットを、前記収集されたレコードの末尾が前記ファイル内に配置されている位置に更新する収集部
として機能し、
(c)前記サーバ装置は、前記収集プログラムの実行が開始されると、
前記ファイルの先頭から前記非一時的に記録されたオフセットまでの間に配置されている冒頭レコードのいずれかが更新されたか否かを推定する推定部、
前記冒頭レコードのいずれかが更新されたと推定されれば、前記収集部による前記ファイルからのレコードの読み出しを、前記ファイルの先頭から開始させ、前記冒頭レコードのいずれも更新されていないと推定されれば、前記収集部による前記ファイルからのレコードの読み出しを、前記非一時的に記録されたオフセットから開始させる開始部
として機能する
ことを特徴とするファイル管理システム。
【請求項２】
前記収集部は、前記ファイルの先頭と前記非一時的に記録されたオフセットとの間の抽出位置を取得し、前記ファイルから前記取得された抽出位置に配置されたデータを読み出し、前記読み出されたデータのハッシュ値を計算して、前記取得された抽出位置および前記計算されたハッシュ値を非一時的に記録し、
前記開始部は、前記非一時的に記録された抽出位置を取得し、前記ファイルから前記取得された抽出位置に配置されたデータを読み出し、前記読み出されたデータのハッシュ値を計算して、前記計算されたハッシュ値が、前記非一時的に記録されたハッシュ値と等しければ、前記推定部は、前記冒頭レコードのいずれも更新されていないと推定する
ことを特徴とする請求項1に記載のファイル管理システム。
【請求項３】
前記収集部は、前記抽出位置を、前記ファイルの先頭と前記非一時的に記録されたオフセットとの間でランダムに定める
ことを特徴とする請求項2に記載のファイル管理システム。
【請求項４】
前記抽出位置は、前記ファイルの先頭と、前記非一時的に記録されたオフセットと、の、一方から他方へ向かって減衰する確率分布を有する乱数により、ランダムに定められる
ことを特徴とする請求項3に記載のファイル管理システム。
【請求項５】
前記収集部は、前記非一時的に記録されたオフセットに一意に対応付けられる抽出位置を取得し、前記ファイルから前記取得された抽出位置に配置されたデータを読み出し、前記読み出されたデータのハッシュ値を計算して、前記計算されたハッシュ値を非一時的に記録し、
前記開始部は、前記非一時的に記録されたオフセットに一意に対応付けられる抽出位置を取得し、前記ファイルから前記取得された抽出位置に配置されたデータを読み出し、前記読み出されたデータのハッシュ値を計算して、前記計算されたハッシュ値が、前記非一時的に記録されたハッシュ値と等しければ、前記冒頭レコードのいずれも更新されていないと推定する
ことを特徴とする請求項1に記載のファイル管理システム。
【請求項６】
前記収集部により前記ファイルの先頭に配置された先頭レコードが読み出され、前記先頭レコードが前記収集システムに収集されると、前記収集部は、前記先頭レコードのハッシュ値を計算して、前記計算されたハッシュ値を非一時的に記録し、
前記開始部は、前記ファイルの先頭に配置された先頭レコードのハッシュ値を計算して、前記計算されたハッシュ値が、前記非一時的に記録されたハッシュ値と等しければ、前記冒頭レコードのいずれも更新されていないと推定する
ことを特徴とする請求項1に記載のファイル管理システム。
【請求項７】
前記収集プログラムの実行が開始された後は、前記推定部による推定が、定期的もしくは間欠的に行われ、
前記定期的もしくは間欠的に行われた推定により、前記冒頭レコードのいずれかが更新されたと推定されれば、前記収集部は、前記収集部による前記ファイルからのレコードの読み出しを、前記ファイルの先頭からやり直す
ことを特徴とする請求項1に記載のファイル管理システム。
【請求項８】
前記収集システムにより収集されたレコードを、前記収集されたレコードに対応付けられた位置の順に連結することにより、前記ファイルが復元される
ことを特徴とする請求項1に記載のファイル管理システム。
【請求項９】
前記収集システムは、複数の収集装置を備え、
前記収集システムに収集されるレコードのそれぞれは、前記それぞれのレコードに対応付けられる位置とともに、前記複数の収集装置のいずれかに蓄積され、
前記収集システムがクライアント端末からクエリを受け付けると、前記複数の収集装置のそれぞれは、前記それぞれの収集装置に蓄積されたレコードから前記クエリを満たすレコードを抽出して、前記抽出されたレコードを前記クライアント端末に回答する
ことを特徴とする請求項1に記載のファイル管理システム。
【請求項１０】
ファイルならびに前記ファイルに対するオフセットを非一時的に記録するサーバ装置と、収集システムと、が実行するファイル管理方法であって、
(a)前記サーバ装置は、編集プログラムを実行することにより、
レコードを前記ファイルの末尾に追加する追加処理を含む編集処理により、前記ファイルを更新し、
(b)前記サーバ装置は、収集プログラムを実行することにより、
前記ファイルに含まれるレコードを、前記ファイルに配置された順に読み出して、前記読み出されたレコードの先頭が前記ファイル内に配置されている位置と、前記読み出されたレコードと、を対応付けて収集システムに収集させ、前記非一時的に記録されるオフセットを、前記収集されたレコードの末尾が前記ファイル内に配置されている位置に更新し、
(c)前記サーバ装置は、前記収集プログラムの実行が開始されると、
前記ファイルの先頭から前記非一時的に記録されたオフセットまでの間に配置されている冒頭レコードのいずれかが更新されたか否かを推定し、
前記冒頭レコードのいずれかが更新されたと推定されれば、前記ファイルからのレコードの読み出しを、前記ファイルの先頭から開始させ、前記冒頭レコードのいずれも更新されていないと推定されれば、前記ファイルからのレコードの読み出しを、前記非一時的に記録されたオフセットから開始させる
ことを特徴とするファイル管理方法。
【請求項１１】
請求項1に記載されたファイル管理システムにおける収集プログラム。
【請求項１２】
請求項10に記載の収集プログラムが記録された非一時的なコンピュータ読取可能な情報記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイル管理システム、ファイル管理方法、収集プログラム、ならびに、非一時的なコンピュータ読取可能な情報記録媒体に関する。
【背景技術】
【０００２】
従来から、ファイルに含まれる複数のレコードを、あるコンピュータから別のコンピュータへコピーする技術が広く使われている。たとえば、特許文献1では、ファイルのデータを複数のレコードに分割し、各レコードを複数の移動体端末に配布して、冗長性を保ちつつ保存可能とする分割ファイルバックアップシステムが提案されている。【０００３】
一方で、たとえばウェブサーバでは、ウェブサーバへのアクセスが生じたことをログファイルに記録するため、レコードをファイルの末尾へ追加する編集処理が頻繁に行われる。多くのサーバ装置では、各種のイベントが生じると、当該イベントの詳細を表すレコードをログファイルの末尾へ追加する編集処理が実行される。【０００４】
ログファイルに対しては、ログファイルの途中を置換、削除、挿入等する編集処理が実行されることは稀である。すなわち、ログファイルが大きくなった場合等には、ログファイルそのものを削除あるいはリネームする処理によって、編集処理の対象となるログファイルそのものをクリアしてしまい、その後にまた追加処理を行うことが通例である。【０００５】
このほか、パーソナルコンピュータにおける情報処理においても、ファイル末尾へレコードが追加される追加処理は、他の編集処理に比べて、頻繁に実行されることが多い。【０００６】
このようなファイルに含まれる複数のレコードの内容をあるコンピュータと別のコンピュータで一致させるための最も簡単な手法は、ファイルの更新日時を監視することによってファイルに対する編集処理が行われたことを検知して、編集処理が行われたファイル全体をコピーすることである。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開2014-81898号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記のように、ファイルの更新が頻繁に行われる場合には、ファイル全体のコピーを開始してからコピーが完了するまでの間に、前記ファイルの末尾に対するレコードの追加が行われるような事態が生じることがありうる。すると、ファイルの更新日時が変化するため、再度コピーを先頭からやり直す必要が生じてしまう。したがって、ファイル全体をコピーする、という手法では、コンピュータ間でファイルに含まれる複数のレコードの内容を一致させることが、事実上困難になることが多い。【０００９】
一方で、メンテナンス等によりオリジナルのファイルを管理するサーバ装置の電源が切られたり、サーバ装置のオペレーティング・システムやプログラムが更新されたときには、ファイルに含まれる複数のレコードをコンピュータ間で一致させるためのプログラムが一旦終了される。したがって、コンピュータやオペレーティング・システムの再起動時には、前記プログラムを再実行する必要がある。したがって、プログラムの再実行の際には、できるだけ迅速に初期化を完了させて、ファイルに含まれる複数のレコードをコンピュータ間で一致させる処理が再開されるようにしたい。【００１０】
本発明は、これらの課題を解決するもので、ファイルの末尾にレコードが追加される追加処理を行うサーバ装置が前記ファイルに含まれるレコードを収集装置に収集させるファイル管理システムにおいて、サーバ装置における計算負荷ならびにサーバ装置と収集装置との間の通信負荷を抑制するのに好適なファイル管理システム、ファイル管理方法、前記サーバ装置をコンピュータにより実現するための収集プログラム、ならびに、前記収集プログラムが記録された非一時的なコンピュータ読取可能な情報記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明に係るファイル管理システムは、ファイルならびに前記ファイルに対するオフセットを非一時的に記録するサーバ装置と、収集システムと、を備え、
(a)前記サーバ装置は、編集プログラムを実行することにより、
レコードを前記ファイルの末尾に追加する追加処理を含む編集処理により、前記ファイルを更新し、
(b)前記サーバ装置は、収集プログラムを実行することにより、
前記ファイルに含まれるレコードを、前記ファイルに配置された順に読み出して、前記読み出されたレコードの先頭が前記ファイル内に配置されている位置と、前記読み出されたレコードと、を対応付けて収集システムに収集させ、前記非一時的に記録されるオフセットを、前記収集されたレコードの末尾が前記ファイル内に配置されている位置に更新し、
(c)前記サーバ装置は、前記収集プログラムの実行が開始されると、
前記ファイルの先頭から前記非一時的に記録されたオフセットまでの間に配置されている冒頭レコードのいずれかが更新されたか否かを推定する推定し、
前記冒頭レコードのいずれかが更新されたと推定されれば、前記収集部による前記ファイルからのレコードの読み出しを、前記ファイルの先頭から開始させ、前記冒頭レコードのいずれも更新されていないと推定されれば、前記収集部による前記ファイルからのレコードの読み出しを、前記非一時的に記録されたオフセットから開始させる。
【発明の効果】
【００１２】
本発明によれば、ファイルの末尾にレコードが追加される追加処理を行うサーバ装置が前記ファイルに含まれるレコードを収集装置に収集させるファイル管理システムにおいて、サーバ装置における計算負荷ならびにサーバ装置と収集装置との間の通信負荷を抑制するのに好適なファイル管理システム、ファイル管理方法、前記サーバ装置をコンピュータにより実現するための収集プログラム、ならびに、前記収集プログラムが記録された非一時的なコンピュータ読取可能な情報記録媒体を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施例に係るファイル管理システムの構成を示す説明図である。
【図２】本発明の実施例に係るファイル管理システムにおけるサーバ装置の構成を示す説明図である。
【図３】本発明の実施例に係るサーバ装置にて実行される更新処理の制御を示すフローチャートである。
【図４】本発明の実施例に係るサーバ装置にて実行される収集処理の制御を示すフローチャートである。
【図５】本発明の実施例に係る収集システムが有する収集装置にて実行される応答処理の制御を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下に本発明の実施形態を説明する。なお、本実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【実施例１】
【００１５】
図1は、本発明の実施例に係るファイル管理システムの構成を示す説明図である。以下、本図を参照して説明する。【００１６】
本実施例に係るファイル管理システム101は、サーバ装置111および収集システム121を備える。また、ファイル管理システム101は、省略可能な要素として、クライアント端末141を備えることができる。【００１７】
サーバ装置111は、ファイルの更新(編集)処理が行われるコンピュータである。たとえば、サーバ装置111がウェブサーバとして機能する場合に、当該ウェブサーバへアクセスするイベントが生じるごとに、サーバ装置111は、当該イベントを表すレコードを、ログファイルの末尾に追加する追加処理を実行する。【００１８】
当該ログファイルに基づいてアクセス解析を行う際に、サーバ装置111が担うウェブサーバ機能の性能低下を招くことがないように、本ファイル管理システム101では、当該ログファイルに含まれる各レコードを、収集システム121に収集させる。【００１９】
収集システム121は、1台以上の収集装置122からなる。各収集装置122は、サーバ装置111からの指示に基づいて、サーバ装置111にて管理されるファイルに含まれる各レコードを受け付けて、保存する収集処理を実行する。【００２０】
また、クライアント端末141は、ウェブサーバに対するアクセス解析を実際に担う。すなわち、クライアント端末141から収集システム121へ、クエリが送られると、当該クエリを満たすレコードが回答される。【００２１】
サーバ装置111、収集装置122、クライアント端末141は、各用途のために用意されたコンピュータが、各用途のために用意されたプログラムを実行することにより実現される。【００２２】
これらのプログラムは、ファイル管理システム101の運営者が管理する配布サーバ(図示せず。)から、コンピュータ通信網等の一時的(transitory)伝送媒体を介して、配布することができる。たとえば、サーバ装置111が担うウェブサーバ機能を利用して、プログラムを配布することが可能である。【００２３】
また、これらのプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、ROM(Read Only Memory)、EEPROM(Electrically Erasable Programmable ROM)、フラッシュメモリ、半導体メモリ等のコンピュータ読み取り可能な非一時的(non-transitory)情報記録媒体に記録することができる。この情報記録媒体は、各コンピュータとは独立して配布・販売することもできる。【００２４】
配布されたプログラムは、ダウンロード先のコンピュータのフラッシュメモリやハードディスク等の非一時的(non-transitory)情報記録媒体に記録される。【００２５】
コンピュータのCPU(Central Processing Unit)は、非一時的に記録されたプログラムを一時的(temporary)記憶装置であるRAM(Random Access Memory)に読み出してから、プログラム内の指令を実行する。【００２６】
ただし、ROM(Read Only Memory)とRAMを一つのメモリ空間にマッピングして実行することが可能なアーキテクチャでは、ROMに格納されたプログラムに含まれる指令を、直接CPUが読み出して実行する。【００２７】
なお、コンピュータにより本実施形態の各機器を実現するのではなく、専用の電子回路を用いて構成することも可能である。この態様では、プログラムは、電子回路の配線図やタイミングチャート等を生成するための素材として機能する。このような態様では、プログラムに定められる仕様を満たすような電子回路が、FPGA(Field Programmable Gate Array)や、ASIC(Application Specific Integrated Circuit)等により構成される。前記電子回路は、前記プログラムに定められた機能を果たす専用機器として機能する。【００２８】
図2は、本発明の実施例に係るファイル管理システムにおけるサーバ装置の構成を示す説明図である。以下、本図を参照して説明する。【００２９】
本図に示すように、サーバ装置111は、更新部201、収集部202、推定部203、開始部204を備える。ここで、更新部201は、サーバ装置111を実現するためのコンピュータが編集プログラムを実行することにより実現され、収集部202、推定部203、開始部204は、当該コンピュータが収集プログラムを実行することにより実現される。【００３０】
更新部201は、レコードをファイルの末尾に追加する追加処理を含む編集処理により、ファイルを更新する。【００３１】
編集処理の対象となるファイルは、サーバ装置111が備えるハードディスクやフラッシュディスク等や、サーバ装置111に接続されたネットワークストレージ等の、非一時的な情報記録媒体に保存されている。【００３２】
たとえば、サーバ装置111がウェブサービスを提供しており、サーバ装置111へのアクセスの履歴をログファイルに記録する態様では、ログファイルの末尾に、各アクセスに関する情報を示すレコードが追加される。各レコードは、固定長(固定バイト数)でも良いし、任意長(可変バイト数)の行とし、行の末尾に付される改行文字を、各レコードの区切りとしても良い。【００３３】
更新部201は、ファイルに対する更新が専らファイル末尾への追記によって行われる編集処理を実行するものである。当該編集処理は、サーバ装置111が編集プログラムを実行することによって、自動的に実行されることとしても良いし、ユーザからの指示に応じて他律的に実行されることとしても良い。【００３４】
一方、収集部202は、更新部201によって編集処理がなされるファイルに含まれるレコードを、ファイルに配置された順に読み出して、読み出されたレコードの先頭がファイル内に配置されている位置と、読み出されたレコードと、を対応付けて収集システム121に収集させ、非一時的に記録されるオフセットを、収集されたレコードの末尾がファイル内に配置されている位置に更新する。【００３５】
収集部202が初めて処理を実行する際には、ファイルの先頭からレコードを順に読みだす。そして、レコードを読み出す毎に、当該読み出されたレコードを収集システム121にコピーする。【００３６】
なお、収集部202が、収集システム121にレコードを収集させる際には、当該レコードの先頭がファイル内に配置されている位置とともに記録させる。この処理によって、各レコードを、収集システム121内の複数の収集装置122のいずれかにコピーさせた場合であっても、複数の収集装置122に保存されたレコードを配置位置の順に並べて連結することにより、元のファイルを復元することが可能となる。【００３７】
収集部202が収集システム121に1つのレコードを収集させた後に、収集部202は、ファイルからレコードをどこまで読み出したか、すなわち、収集システム121に対するコピーがどこまで完了したかを表すオフセットを、非一時的な情報記録媒体に記録する。オフセットは、レコードが可変長の場合には、バイト単位で算定することとなるが、レコードが固定長の場合には、バイト単位としても良いし、レコード数単位としても良い。【００３８】
サーバ装置111に何ら故障やトラブルが発生せずに処理が順調に進められている間は、編集処理によってレコードがファイルに追加されると、収集処理によって当該追加されたレコードがファイルから読み出されて、読み出されたレコードは収集システム121にコピーされる。【００３９】
したがって、収集システム121により収集されたレコードを収集システム121内で、もしくは、クライアント端末141等が取得して、収集されたレコードに対応付けられた位置の順に連結することにより、元のファイルを復元することができることになる。【００４０】
収集部202によるレコードの読み出しは、たとえば、OS(Operating System)が用意するファイル更新のイベント検知機能を利用したり、ファイルへの編集処理内にて収集処理を呼び出すためのフラグを更新したり、シグナルや通知を発したりすることによって、当該レコードがファイルに追加されたことを検知して行うこととしても良い。【００４１】
このほか、収集部202が、間欠的(たとえば、サーバ装置111のアイドル時や低負荷時。以下同様。)もしくは定期的(たとえば、毎日の深夜等、ファイルの更新の頻度が下がると予想される時間帯。以下同様。)に、ファイルのサイズ等に変化があったか否かを監視し、変化がなければ、適当に定めた時間だけスリープして同じ処理を繰り返し、変化があれば、ファイルにレコードが追加されたものと判断して読み出しを行うこととしても良い。【００４２】
しかしながら、サーバ装置111に何らかの故障やトラブルが発生したり、各種のメンテナンスを実行したり、OSや各種アプリケーションプログラム、ライブラリプログラムのセキュリティアップデートがあった場合には、編集プログラムや収集プログラムを終了させて再度開始したり、サーバ装置111を実現するコンピュータ自体をリブートする必要が生じる。【００４３】
このように、収集プログラムが再度開始されるときに、推定部203は、ファイルの先頭から非一時的に記録されたオフセットまでの間に配置されている冒頭レコードのいずれかが更新されたか否かを推定する。【００４４】
上記のように、ファイルの先頭からオフセットまでの間に配置される冒頭レコードは、すでに収集システム121に対してコピーが終わっている。また、ファイルに対する編集処理は、ファイル末尾に対するレコード追加がほとんどである。したがって、冒頭レコードのいずれも更新されていなければ、収集システム121に対するコピーをやり直す必要はない。【００４５】
一方で、冒頭レコードのいずれかが更新されていることを完璧にチェックするためには、サーバ装置111と収集システム121との間で、コピー済みのレコードを対比する必要が生じる。しかしながら、このような対比には多大な通信時間ならびに計算時間を要する。【００４６】
そこで、本実施形態では、冒頭レコードのいずれかが更新されているか否かを、推定するにとどめて、通信時間ならびに計算時間の抑制を図り、収集プログラムの再開を迅速に行うこととする。なお、推定の手法については、後述する。【００４７】
さて、開始部204は、冒頭レコードのいずれかが更新されたと推定されれば、収集部202によるファイルからのレコードの読み出しを、ファイルの先頭から開始させ、冒頭レコードのいずれも更新されていないと推定されれば、収集部202によるファイルからのレコードの読み出しを、非一時的に記録されたオフセットから開始させる。すると、上記のように、収集部202は、読み出されたレコードを、読み出された順に、当該レコードが配置された位置とともに、収集システム121に収集させ、レコードの読み出しが終わった位置を表すオフセットを、非一時的に記録する。【００４８】
なお、収集プログラムの実行が開始される際のみならず、収集プログラムの実行が続いている間も、推定部203が、定期的もしくは間欠的に上記と同様の推定を行うこととしても良い。行われた推定の結果、冒頭レコードのいずれかが更新されたと推定されれば、収集部202がファイルからのレコードの読み出しを、ファイルの先頭からやり直し、収集システム121に対するレコードのコピーを最初からやり直す。【００４９】
(推定の手法)
以下では、推定部203による推定の種々の手法について説明する。【００５０】
第1の手法は、冒頭レコードのいずれかをランダムあるいは所定の規則にしたがって取得し、当該レコードについてのみ、変更があったか否かを調べる、というものである。【００５１】
すなわち、収集部202は、後々の推定部203による推定で参照するため、ファイルの先頭と非一時的に記録されたオフセットとの間の抽出位置を取得する。上記のように、抽出位置は、ランダムに定めても良いし、所定の規則にしたがって取得しても良い。【００５２】
ランダムに抽出位置を定める例としては、ファイルの先頭からオフセットまでの一様乱数を発生させ、あるいは、オフセットからファイルの先頭に向かって減衰する確率分布の乱数を発生させて、当該乱数により抽出位置を定める等である。特に後者は、ファイル末尾への書き込みが競合しやすい環境において好適である。減衰は、指数的に減衰させても良いし、線形に減衰させても良いし、逆数で減衰させても良い。【００５３】
また、ユーザが手動でファイルを編集する可能性がある環境では、ファイルの先頭からオフセットに向かって減衰する確率分布の乱数を発生させて、当該乱数により抽出位置を定めることとしても良い。【００５４】
所定の規則にしたがって抽出位置を定める例としては、たとえば、オフセットに対して0以上1未満の定数を乗じて得られる整数を抽出位置とする、等である。【００５５】
ついで、収集部202は、ファイルから取得された抽出位置に配置されたデータを読み出し、読み出されたデータのハッシュ値を計算して、取得された抽出位置および計算されたハッシュ値を非一時的に、ハードディスク、フラッシュディスクや、サーバ装置111に接続されたネットワークストレージ等に記録する。【００５６】
抽出位置の取得、データの読み出し、ハッシュ値の計算ならびに抽出位置とハッシュ値の非一時的な記録を行うタイミングは、サーバ装置111の用途等に応じて適宜定めることができる。たとえば、新たなレコードがファイルに追加されたとき、サーバ装置111の計算負荷が閾値以下となったとき、あらかじめ予定されたスケジュールに定められた時点に至ったとき等を採用することができる。【００５７】
さて、収集プログラムが開始されると、開始部204は、非一時的に記録された抽出位置を取得し、ファイルから取得された抽出位置に配置されたデータを読み出し、読み出されたデータのハッシュ値を計算する。これらの処理は、開始部204が推定部203に指示を出すことによって実行するのが典型的である。【００５８】
ファイルに対する更新が、レコード追加のみであれば、当該ハッシュ値は、非一時的に記録されたハッシュ値と一致するはずである。そこで、推定部203は、計算されたハッシュ値が、非一時的に記録されたハッシュ値と等しければ、冒頭レコードのいずれも更新されていないと推定する。【００５９】
第2の手法は、抽出位置をランダムに決めるのではなく、オフセットに応じて定めるものである。したがって、オフセットが更新されるごとに、抽出位置も変化し、ハッシュ値も更新されることになる。以下、第1の手法との差異に焦点を当てつつ、説明する。【００６０】
すなわち、収集部202は、非一時的に記録されたオフセットに一意に対応付けられる抽出位置を取得し、ファイルから取得された抽出位置に配置されたデータを読み出し、読み出されたデータのハッシュ値を計算して、計算されたハッシュ値を非一時的に記録する。【００６１】
このように、本態様では、オフセットに応じて抽出位置が一意に定められるため、抽出位置を非一時的に記録することはしない。そのかわり、オフセットの非一時的な記録と、ハッシュ値の計算ならびに非一時的な記録と、は、ほぼ同時に、不可分に実施することが望ましい。すなわち、抽出位置の取得、データの読み出し、ハッシュ値の計算ならびに抽出位置とハッシュ値の非一時的な記録を行うタイミングは、オフセットを非一時的に記録するタイミングとすることが望ましい。【００６２】
一方、収集プログラムが開始されると、開始部204は、第1の手法と同様に、非一時的に記録されたオフセットに一意に対応付けられる抽出位置を取得し、ファイルから取得された抽出位置に配置されたデータを読み出し、読み出されたデータのハッシュ値を計算して、計算されたハッシュ値が、非一時的に記録されたハッシュ値と等しければ、推定部203は、冒頭レコードのいずれも更新されていないと推定する。【００６３】
第2の手法では、抽出位置をオフセットから一意に定めるため、抽出位置の非一時的な記録はしない。この点以外は、第1の手法と同様の処理を実行することができる。【００６４】
第3の手法は、第2の手法において、抽出位置を、ファイルの先頭に配置された先頭レコードに固定するものである。すなわち、収集部202によりファイルの先頭に配置された先頭レコードが読み出され、先頭レコードが収集システム121に収集されると、収集部202は、先頭レコードのハッシュ値を計算して、計算されたハッシュ値を非一時的に記録する。【００６５】
一方、開始部204は、ファイルの先頭に配置された先頭レコードのハッシュ値を計算して、計算されたハッシュ値が、非一時的に記録されたハッシュ値と等しければ、推定部203は、冒頭レコードのいずれも更新されていないと推定する。【００６６】
これらの手法において、ハッシュ値の計算の対象となるレコードの数は、1とするのが最も単純であるが、ハードディスク等のセクタサイズやファイル入出力のバッファのサイズから、1つのレコードを読み出そうとしても実質的に複数のレコードが読み出されるような状況では、1回の読み出しで読み出されたレコードのうち、オフセット以前に配置されたレコードすべてを、ハッシュ値の計算の際に参照することとしても良い。【００６７】
(サーバ装置における編集プログラムの動作)
以下では、サーバ装置111において実行される収集プログラムの制御の流れについて説明する。図3は、本発明の実施例に係るサーバ装置にて実行される更新処理の制御を示すフローチャートである。以下、本図を参照して説明する。【００６８】
本実施例における編集プログラムは、サーバ装置111にて発生した各種のイベント、たとえば、サーバ装置111へのアクセスの記録を、ファイルに追記する処理を行う。すなわち、編集プログラムの実行を開始したサーバ装置111は、監視対象となっているイベントが発生するまで待機する(ステップS301)。【００６９】
イベントが発生したら、サーバ装置111は、ファイルをオープン(open)し(ステップS302)、ファイルの末尾(最後)までシーク(seek)する(ステップS303)。【００７０】
その後、サーバ装置111は、イベントの詳細を示したレコードを、ファイルに書き込み(ステップS304)、ファイルをクローズ(close)してから(ステップS305)、処理をステップS301に戻す。【００７１】
このように処理を繰り返すことによって、ファイルの末尾にレコードが追記されることになる。【００７２】
なお、上記の例では、イベントが発生するごとに、ファイルのオープンとクローズを実行している。しかしながら、編集プログラムの開始時にファイルをオープンしてしまい、その後はファイルをオープンしたままとしても良い。この態様では、ファイルに対するレコードの書き込みのフラッシュ(flush)を、適宜実行することが望ましい。【００７３】
また、ステップS302-S305にて実行される処理をシステムコールなどで提供すれば、処理がアトミックに実行されるため、複数のプログラムによる末尾への書き込みが競合してファイルが壊れてしまう事態を防止することができる。【００７４】
(サーバ装置における収集プログラムの動作)
以下では、サーバ装置111において実行される収集プログラムの制御の流れについて説明する。図4は、本発明の実施例に係るサーバ装置にて実行される収集処理の制御を示すフローチャートである。以下、本図を参照して説明する。なお、収集プログラムと、上記の編集プログラムと、は、サーバ装置111において、並行して実行される。【００７５】
収集プログラムの実行を開始したサーバ装置111は、まず、非一時的な情報記録媒体から、ファイルに対応付けられるオフセットの読み出しを試みる(ステップS401)。【００７６】
読み出しに失敗した場合(ステップS401;失敗)、サーバ装置111は、オフセットに0(ファイルの先頭)を設定してから(ステップS402)、制御をステップS403に進める。【００７７】
一方、読み出しに成功した場合(ステップS401;成功)、サーバ装置111は、制御をステップS403に進める。【００７８】
次に、サーバ装置111は、ファイルの先頭から、取得されたオフセットまでの間に配置される冒頭レコードが更新されたか否かを推定する(ステップS403)。当該推定については、上記の3種類の手法のいずれかを採用することができる。【００７９】
更新されたと推定された場合(ステップS403;Yes)、サーバ装置111は、オフセットを0に設定してから(ステップS404)、制御をステップS405に進める。【００８０】
一方、更新されていないと推定された場合(ステップS403;No)、サーバ装置111は、制御をステップS405に進める。【００８１】
そして、サーバ装置111は、ファイルを設定されたオフセットまでシークして(ステップS405)、ファイルの末尾に達したか否かを調べる(ステップS406)。【００８２】
ファイルの末尾に達していなければ(ステップS406;No)、ファイルからレコードを読み出し(ステップS407)、読み出されたレコードをオフセットに対応付けて収集するよう、収集システム121に指示する(ステップS408)。収集システム121から、当該レコードを当該オフセットに対応付けて蓄積した旨の報告を受け取るまで待機する(ステップS409)。【００８３】
当該オフセットに係る報告を受け取ったら、サーバ装置111は、オフセットをファイルの現在位置に更新して(ステップS410)、更新されたオフセットを非一時的な記録媒体に記録し(ステップS411)、制御をステップS406に戻す。なお、報告が所定時間受け取れず、タイムアウトとなった場合には、当該レコードに対する再送を試みても良いし、制御をステップS401に戻すこととしても良い(図示せず)。【００８４】
一方、ファイルの末尾に達していれば(ステップS406;Yes)、ファイルのサイズが変化するまで待機して(ステップS412)、制御をステップS406に戻す。なお、待機時間が所定の閾値を超えた場合には、ステップS406ではなく、ステップS401に制御を戻すこととして、冒頭レコードの改変が生じていないか、再度チェックすることとしても良い。【００８５】
このように、本実施形態では、収集プログラムによるレコードの収集が進むごとに、オフセットを更新して記録するため、サーバ装置111がシャットダウンされたり、収集プログラムの実行が強制終了されたり等、上記の制御の流れから外れることとなった場合であっても、サーバ装置111が再起動したり収集プログラムが再度実行されたりした後には、すでに収集済みのレコードをスキップすることができる。また、冒頭レコードからのサンプリングによって、収集済みのレコードの改変の可能性を短時間で推定することができる。したがって、サーバ装置111は、迅速に収集を再開することが可能となる。【００８６】
(収集システム)
以下では、収集システム121の態様について説明する。以下、図1を参照して説明する。【００８７】
本図に示すように、収集システム121は、1つ又は複数の収集装置122を備える。本図では、複数の収集装置122からなる収集システム121を図示しているが、収集システム121は、1つの収集装置122からなることとしても良い。収集システム121による外部の機器からの指示の受け付けは、各収集装置122が指示を受け付けることによって実現され、各収集装置122は、受け付けた指示に対する応答を、当該外部の機器へ適宜返す。【００８８】
各収集装置122が応答プログラムを実行することにより、収集システム121が実現される。図5は、本発明の実施例に係る収集システムが有する収集装置にて実行される応答処理の制御を示すフローチャートである。以下、本図を参照して説明する。【００８９】
応答プログラムの実行を開始した収集装置122は、外部の機器からの指示が到着するのを待機する(ステップS601)。【００９０】
到着した指示が、サーバ装置111からの収集指示であれば(ステップS601;収集)、収集装置122は、収集指示に指定されたオフセットに基づいて、自身が蓄積を担当するか否かを判定する(ステップS602)。【００９１】
ここで、N台の収集装置122が使用されている場合を考える。この場合では、あらかじめ、管理者が0, 1, 2, ..., N-1の番号を各収集装置122に重複なく割り当てておく。そして、各収集装置122は、オフセットをNで除算した余りが、自身に割り当てられた番号と一致したときに、自身が蓄積を担当する、と判定する。【００９２】
なお、レコードのサイズが一定である場合には、オフセットを当該サイズで除算してから、Nで除算して余りを求めることとしても良い。【００９３】
また、1つのレコードの蓄積を、M台の収集装置122が担当することとしても良い。たとえば、自身に割り当てられた番号にオフセット(もしくはオフセットを固定長レコードのサイズで除算した値)を加算した値をNで除算した余りが、0, 1, ..., M-1のいずれかであれば、自身が蓄積を担当する、と判定すれば良い。【００９４】
さて、蓄積を自身が担当する、と判定した場合(ステップS602;Yes)、収集装置122は、収集指示に指定されたオフセットに対応付けて、収集指示に指定されたレコードを蓄積する(ステップS603)。最も単純には、レコードを蓄積するためのファイル名として、当該オフセットを利用することができる。また、レコードの内容を所定のフォーマットに応じて解釈して、その結果得られた複数のフィールド値とオフセットとを対応付けてデータベースに格納することとしても良い。【００９５】
そして、収集装置122は、指示に指定されたオフセットに対応付けられるレコードを蓄積した旨を、サーバ装置111に報告して(ステップS604)、制御をステップS601に戻す。【００９６】
一方、自身が蓄積を担当しないと判定された場合(ステップS602;No)、収集装置122は、制御をステップS601に戻す。【００９７】
さて、外部の機器から到着した指示が、クライアント端末141からのクエリであった場合(ステップS601;クエリ)、収集装置122は、自身に蓄積されたレコードからクエリを満たすレコードを抽出する(ステップS605)。【００９８】
そして、抽出されたレコードがあれば(ステップS605;あり)、収集装置122は、当該レコードをクライアント端末141に回答して(ステップS606)、制御をステップS601に戻す。一方、レコードが抽出されなければ(ステップS605;なし)、収集装置122は、制御をステップS601に戻す。【００９９】
なお、抽出されたレコードとともに、当該レコードに対するオフセットを回答することとしても良い。この態様では、クライアント端末141から、全レコードを取得するためのクエリを発すると、各収集装置122は、自身が蓄積するレコードおよびそのオフセットを回答する。クライアント端末141が回答されたレコードをオフセットの順に並べて連結すれば、サーバ装置111におけるファイル全体を復元することができる。【０１００】
さて、指示がその他のものであれば(ステップS601;その他)、収集装置122は、対応する処理を実行して(ステップS607)、制御をステップS601に戻す。【０１０１】
(まとめ)
以上説明した通り、本実施形態に係るファイル管理システムは、ファイルならびに前記ファイルに対するオフセットを非一時的に記録するサーバ装置と、収集システムと、を備え、
(a)前記サーバ装置は、編集プログラムを実行することにより、
レコードを前記ファイルの末尾に追加する追加処理を含む編集処理により、前記ファイルを更新する更新部
として機能し、
(b)前記サーバ装置は、収集プログラムを実行することにより、
前記ファイルに含まれるレコードを、前記ファイルに配置された順に読み出して、前記読み出されたレコードの先頭が前記ファイル内に配置されている位置と、前記読み出されたレコードと、を対応付けて収集システムに収集させ、前記非一時的に記録されるオフセットを、前記収集されたレコードの末尾が前記ファイル内に配置されている位置に更新する収集部
として機能し、
(c)前記サーバ装置は、前記収集プログラムの実行が開始されると、
前記ファイルの先頭から前記非一時的に記録されたオフセットまでの間に配置されている冒頭レコードのいずれかが更新されたか否かを推定する推定部、
前記冒頭レコードのいずれかが更新されたと推定されれば、前記収集部による前記ファイルからのレコードの読み出しを、前記ファイルの先頭から開始させ、前記冒頭レコードのいずれも更新されていないと推定されれば、前記収集部による前記ファイルからのレコードの読み出しを、前記非一時的に記録されたオフセットから開始させる開始部
として機能する。【０１０２】
また、本実施形態に係るファイル管理システムにおいて、
前記収集部は、前記ファイルの先頭と前記非一時的に記録されたオフセットとの間の抽出位置を取得し、前記ファイルから前記取得された抽出位置に配置されたデータを読み出し、前記読み出されたデータのハッシュ値を計算して、前記取得された抽出位置および前記計算されたハッシュ値を非一時的に記録し、
前記開始部は、前記非一時的に記録された抽出位置を取得し、前記ファイルから前記取得された抽出位置に配置されたデータを読み出し、前記読み出されたデータのハッシュ値を計算して、前記計算されたハッシュ値が、前記非一時的に記録されたハッシュ値と等しければ、前記推定部は、前記冒頭レコードのいずれも更新されていないと推定する
ように構成することができる。【０１０３】
また、本実施形態に係るファイル管理システムにおいて、
前記収集部は、前記抽出位置を、前記ファイルの先頭と前記非一時的に記録されたオフセットとの間でランダムに定める
ように構成することができる。【０１０４】
また、本実施形態に係るファイル管理システムにおいて、
前記抽出位置は、前記ファイルの先頭と、前記非一時的に記録されたオフセットと、の、一方から他方へ向かって減衰する確率分布を有する乱数により、ランダムに定められる
ように構成することができる。【０１０５】
また、本実施形態に係るファイル管理システムにおいて、
前記収集部は、前記非一時的に記録されたオフセットに一意に対応付けられる抽出位置を取得し、前記ファイルから前記取得された抽出位置に配置されたデータを読み出し、前記読み出されたデータのハッシュ値を計算して、前記計算されたハッシュ値を非一時的に記録し、
前記開始部は、前記非一時的に記録されたオフセットに一意に対応付けられる抽出位置を取得し、前記ファイルから前記取得された抽出位置に配置されたデータを読み出し、前記読み出されたデータのハッシュ値を計算して、前記計算されたハッシュ値が、前記非一時的に記録されたハッシュ値と等しければ、前記冒頭レコードのいずれも更新されていないと推定する
ように構成することができる。【０１０６】
また、本実施形態に係るファイル管理システムにおいて、
前記収集部により前記ファイルの先頭に配置された先頭レコードが読み出され、前記先頭レコードが前記収集システムに収集されると、前記収集部は、前記先頭レコードのハッシュ値を計算して、前記計算されたハッシュ値を非一時的に記録し、
前記開始部は、前記ファイルの先頭に配置された先頭レコードのハッシュ値を計算して、前記計算されたハッシュ値が、前記非一時的に記録されたハッシュ値と等しければ、前記冒頭レコードのいずれも更新されていないと推定する
ように構成することができる。【０１０７】
また、本実施形態に係るファイル管理システムにおいて、
前記収集プログラムの実行が開始された後は、前記推定部による推定が、定期的もしくは間欠的に行われ、
前記定期的もしくは間欠的に行われた推定により、前記冒頭レコードのいずれかが更新されたと推定されれば、前記収集部は、前記収集部による前記ファイルからのレコードの読み出しを、前記ファイルの先頭からやり直す
ように構成することができる。【０１０８】
また、本実施形態に係るファイル管理システムにおいて、
前記収集システムにより収集されたレコードを、前記収集されたレコードに対応付けられた位置の順に連結することにより、前記ファイルが復元される
ように構成することができる。【０１０９】
また、本実施形態に係るファイル管理システムにおいて、
前記収集システムは、複数の収集装置を備え、
前記収集システムに収集されるレコードのそれぞれは、前記それぞれのレコードに対応付けられる位置とともに、前記複数の収集装置のいずれかに蓄積され、
前記収集システムがクライアント端末からクエリを受け付けると、前記複数の収集装置のそれぞれは、前記それぞれの収集装置に蓄積されたレコードから前記クエリを満たすレコードを抽出して、前記抽出されたレコードを前記クライアント端末に回答する
ように構成することができる。【０１１０】
本実施形態に係るファイル管理方法は、
ファイルならびに前記ファイルに対するオフセットを非一時的に記録するサーバ装置と、収集システムと、が実行し、
(a)前記サーバ装置は、編集プログラムを実行することにより、
レコードを前記ファイルの末尾に追加する追加処理を含む編集処理により、前記ファイルを更新し、
(b)前記サーバ装置は、収集プログラムを実行することにより、
前記ファイルに含まれるレコードを、前記ファイルに配置された順に読み出して、前記読み出されたレコードの先頭が前記ファイル内に配置されている位置と、前記読み出されたレコードと、を対応付けて収集システムに収集させ、前記非一時的に記録されるオフセットを、前記収集されたレコードの末尾が前記ファイル内に配置されている位置に更新し、
(c)前記サーバ装置は、前記収集プログラムの実行が開始されると、
前記ファイルの先頭から前記非一時的に記録されたオフセットまでの間に配置されている冒頭レコードのいずれかが更新されたか否かを推定し、
前記冒頭レコードのいずれかが更新されたと推定されれば、前記ファイルからのレコードの読み出しを、前記ファイルの先頭から開始させ、前記冒頭レコードのいずれも更新されていないと推定されれば、前記ファイルからのレコードの読み出しを、前記非一時的に記録されたオフセットから開始させる。【０１１１】
本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施の形態及び変形が可能とされるものである。また、上述した実施の形態は、この発明を説明するためのものであり、本発明の範囲を限定するものではない。すなわち、本発明の範囲は、実施の形態ではなく、特許請求の範囲によって示される。そして、特許請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、この発明の範囲内とみなされる。
【産業上の利用可能性】
【０１１２】
本発明によれば、ファイルの末尾にレコードが追加される追加処理を行うサーバ装置がファイルに含まれるレコードを収集装置に収集させるファイル管理システムにおいて、サーバ装置における計算負荷ならびにサーバ装置と収集装置との間の通信負荷を抑制するのに好適なファイル管理システム、ファイル管理方法、サーバ装置をコンピュータにより実現するための収集プログラム、ならびに、収集プログラムが記録された非一時的なコンピュータ読取可能な情報記録媒体を提供することができる。
【符号の説明】
【０１１３】
101 ファイル管理システム
111 サーバ装置
121 収集システム
122 収集装置
141 クライアント端末
201 更新部
202 収集部
203 推定部
204 開始部
【図１】
2017158794.tif 000003
【図２】
2017158794.tif 000004
【図３】
2017158794.tif 000005
【図４】
2017158794.tif 000006
【図５】
2017158794.tif 000007
【手続補正書】
【提出日】平成30年10月24日(2018.10.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１２
【補正方法】変更
【補正の内容】
【請求項１２】
請求項11に記載の収集プログラムが記録された非一時的なコンピュータ読取可能な情報記録媒体。
【国際調査報告】
2017158794.tif 000008
2017158794.tif 000009