JP5798503B2 - ファイルリスト生成方法及びシステム、ファイルリスト生成装置並びにプログラム - Google Patents

ファイルリスト生成方法及びシステム、ファイルリスト生成装置並びにプログラム Download PDF

Info

Publication number
JP5798503B2
JP5798503B2 JP2012017738A JP2012017738A JP5798503B2 JP 5798503 B2 JP5798503 B2 JP 5798503B2 JP 2012017738 A JP2012017738 A JP 2012017738A JP 2012017738 A JP2012017738 A JP 2012017738A JP 5798503 B2 JP5798503 B2 JP 5798503B2
Authority
JP
Japan
Prior art keywords
file
directory
list
scanning
hierarchy
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012017738A
Other languages
English (en)
Other versions
JP2013156881A (ja
Inventor
晋平 西田
晋平 西田
康裕 桐畑
康裕 桐畑
晃治 中山
晃治 中山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Solutions Ltd
Original Assignee
Hitachi Solutions Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Solutions Ltd filed Critical Hitachi Solutions Ltd
Priority to JP2012017738A priority Critical patent/JP5798503B2/ja
Priority to US13/741,892 priority patent/US9015214B2/en
Priority to EP13151871.4A priority patent/EP2624147A1/en
Priority to CN2013100200431A priority patent/CN103226556A/zh
Publication of JP2013156881A publication Critical patent/JP2013156881A/ja
Application granted granted Critical
Publication of JP5798503B2 publication Critical patent/JP5798503B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1734Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、ファイルサーバ内に保存された大量のファイルデータの階層を効率よく解析するための技術に関するものであり、特に、検索システムにおいて検索インデックスを更新すべきファイルデータについて、リストを効率的に生成できるファイルリスト生成方法及びシステム、ファイルリスト生成装置並びにプログラムに関するものである。
近年、コンピュータ性能の高速化、HDDの大容量化に伴い、膨大な数の非定型文書が作られるようになっている。このため、膨大な数の文書の中から、必要とする文書を高速かつ的確に探し出すことの検索システムの必要性が高まっている。検索結果を的確なものとするためには、検索対象となる非定型文書が格納されたファイルサーバに対して検索インデクス作成後に行われたファイルデータの追加、変更、削除操作をタイムリーに検索インデクスに反映することが重要となる。これらを検索インデクスへと反映させる際、変更されていないファイルデータについても検索インデクスを更新すると多大な時間がかかってしまうため、一般的には追加、変更、削除のあったファイルデータのみに絞って検索インデクスを更新する。そのためには、追加、変更、削除されたファイルデータの一覧を作成する必要がある。
このような検索システムのニーズにこたえるため、ファイルサーバの中にはファイルデータの操作履歴を記憶し、外部からの要求に応じて追加、変更、削除されたファイルデータの一覧を提供するインタフェースを備えるものも存在する(下記先行技術文献参照)。
特開2006−268456号
追加、変更、削除されたファイルデータの一覧を作成する際、ファイルサーバが一覧を提供している場合はそのインタフェースを利用すればよいが、そのようなインタフェースを備えていないファイルサーバの場合は、ファイルサーバ内に存在する検索インデクス作成対象範囲のファイルデータ全てを走査し、更新操作の有無を判定する必要がある。ここで、追加、変更、削除されたファイルデータが少量である場合であっても、全てのファイルデータを走査する必要があるため、追加、変更、削除されたファイルデータの一覧の作成処理が、インデクス更新処理の長時間化の要因となってしまっている。
これに対して、ファイルサーバ内のファイルツリー構造を幾つかに分割し、それらのサブツリーに対する走査処理を並列に行うことにより、走査処理を高速化することが考えられる。
しかしながら、ファイルサーバ内のファイルツリーは環境によって様々未知であるため、効率的な分割方法を決定することは困難である。
本発明の目的は、検索インデクス更新処理を高速に行うことで、検索システムによる検索結果を可能な限り的確なものとすることであり、これを実現させるため、既に一度インデクスを作成したことのあるファイルサーバに対して、ファイルデータ走査処理を並列分散実行し、追加、変更、削除されたファイルデータの一覧を高速に作成することができるファイルリスト生成方法及びシステム、ファイルリスト生成装置およびプログラムを提供することにある。
上記目的を達成するために、本発明に係るファイルリスト生成方法は、走査対象ファイルのインデクス作成済みのファイルリストを分散処理サーバによって作成するステップと、前記分散処理サーバによって作成されたインデクス作成済みのファイルリストを記憶装置記憶させるステップと、前記インデクス作成済みのファイルリストを前記記憶装置から取得し、そのファイルリストから走査対象ファイルのディレクトリURLを取得し、そのディレクトリURLを解析して各階層のディレクトリ数を集計し、その集計結果に基づき走査対象ディレクトリの走査処理を分割して行う分割方針を決定するステップと、決定された分割方針に従い走査対象ファイルのディレクトリを分割し、分割した単位で各ディレクトリ上の走査対象ファイルを前記分散処理サーバによって分散走査し、走査対象ファイルのファイルリストを作成するステップと、作成されたファイルリストと前記インデクス作成済みのファイルリストとを比較して前記インデクス作成後に追加、変更、削除されたファイルの一覧を作成して出力するステップとを備え
前記走査処理の分割単位を決定するステップは、最上位階層から数えたディレクトリ数が所定数未満であれば走査対象ディレクトリの走査処理を行う分割数を1とする分割方針を決定し、所定数を越えた場合には最上位階層のディレクトリから所定階層までの階層を1つの分割単位として初回走査を行い、その初回走査で発見した走査対象ディレクトリの下位階層は深度1階層を分割単位として走査する分割方針を決定するものであることを特徴とする。
また、本発明に係るファイルリスト生成システムは、走査対象ファイルのインデクス作成済みのファイルリストを作成する分散処理サーバと、該分散処理サーバによって作成されたインデクス作成済みのファイルリストを記憶した記憶装置と、前記インデクス作成済みのファイルリストを前記記憶装置から取得し、そのファイルリストから走査対象ファイルのディレクトリURLを取得し、そのディレクトリURLを解析して各階層のディレクトリ数を集計し、その集計結果に基づき走査対象ディレクトリの走査処理を分割して行う分割単位を決定するファイル走査処理分割方針決定手段と、決定された分割方針に従い走査対象ファイルのディレクトリを分割し、分割した単位で各ディレクトリ上の走査対象ファイルを前記分散処理サーバによって分散走査し、走査対象ファイルのファイルリストを作成するファイル走査手段と、作成されたファイルリストと前記インデクス作成済みのファイルリストとを比較して前記インデクス作成後に追加、変更、削除されたファイルの一覧を作成して出力する比較手段とを備え、
前記ファイル走査処理分割方針決定手段は、最上位階層から数えたディレクトリ数が所定数未満であれば走査対象ディレクトリの走査処理を行う分割数を1とする分割方針を決定し、所定数を越えた場合には最上位階層のディレクトリから所定階層までの階層を1つの分割単位として初回走査を行い、その初回走査で発見した走査対象ディレクトリの下位階層は深度1階層を分割単位として走査する分割方針を決定するものであることを特徴とする。
また、本発明に係るファイルリスト生成装置は、走査対象ファイルのインデクス作成済みのファイルリストを取得し、そのファイルリストから走査対象ファイルのディレクトリURLを取得し、そのディレクトリURLを解析して各階層のディレクトリ数を集計し、その集計結果に基づき走査対象ディレクトリの走査処理を分割して行う分割単位を決定するファイル走査処理分割方針決定手段と、決定された分割方針に従い走査対象ファイルのディレクトリを分割し、分割した単位で各ディレクトリ上の走査対象ファイルを分散処理サーバによって分散走査し、走査対象ファイルのファイルリストを作成するファイル走査手段と、作成されたファイルリストと前記インデクス作成済みのファイルリストとを比較して前記インデクス作成後に追加、変更、削除されたファイルの一覧を作成して出力する比較手段とを備え
前記ファイル走査処理分割方針決定手段は、最上位階層から数えたディレクトリ数が所定数未満であれば走査対象ディレクトリの走査処理を行う分割数を1とする分割方針を決定し、所定数を越えた場合には最上位階層のディレクトリから所定階層までの階層を1つの分割単位として初回走査を行い、その初回走査で発見した走査対象ディレクトリの下位階層は深度1階層を分割単位として走査する分割方針を決定するものであることを特徴とする。
また、本発明に係るファイルリスト生成プログラムは、走査対象ファイルのインデクス作成済みのファイルリストを作成する分散処理サーバと、該分散処理サーバによって作成されたインデクス作成済みのファイルリストを記憶した記憶装置と、ファイルリスト作成サーバとから構成されたシステムに使用するプログラムであって、
前記ファイルリスト作成サーバを、
前記インデクス作成済みのファイルリストを前記記憶装置から取得し、そのファイルリストから走査対象ファイルのディレクトリURLを取得し、そのディレクトリURLを解析して各階層のディレクトリ数を集計し、その集計結果に基づき走査対象ディレクトリの走査処理を分割して行う分割単位を決定するファイル走査処理分割方針決定手段と、決定された分割方針に従い走査対象ファイルのディレクトリを分割し、分割した単位で各ディレクトリ上の走査対象ファイルを前記分散処理サーバによって分散走査し、走査対象ファイルのファイルリストを作成するファイル走査手段と、作成されたファイルリストと前記インデクス作成済みのファイルリストとを比較して前記インデクス作成後に追加、変更、削除されたファイルの一覧を作成して出力する比較手段として機能させ、
さらに前記ファイル走査処理分割方針決定手段を、最上位階層から数えたディレクトリ数が所定数未満であれば走査対象ディレクトリの走査処理を行う分割数を1とする分割方針を決定し、所定数を越えた場合には最上位ディレクトリから所定階層までの階層を1つの分割単位として初回走査を行い、その初回走査で発見した走査対象ディレクトリの下位階層は深度1階層を分割単位として走査する分割方針を決定する手段として機能させることを特徴とする。
本発明によれば、既に一度検索インデクスを作成したことのあるファイルデータについて、そのディレクトリ構造を解析してディレクトリ数を集計し、その集計結果に基づき、ファイルデータを分割して走査する分割方針を決定し、決定された分割方針に従い検索対象ファイルのディレクトリを分割し、分割した単位で各ディレクトリ上の検索対象ファイルを分散処理サーバによって分散走査し、検索対象ファイルのファイルリストを作成し、作成されたファイルリストとインデクス作成済みのファイルリストとを比較して前記インデクス作成後に追加、変更、削除されたファイルの一覧を作成して出力するように構成したため、ファイルサーバ上で追加、変更、削除されたファイルの一覧を高速に作成することが可能となる。これによって、検索インデクスの更新処理を高速に行うことが可能となり、結果として、検索システムによる検索結果を可能な限り的確なものとすることができる。
本発明に係る第一の実施形態を示すシステム構成図である。 インデクス済みファイルリストのデータ構成図である。 インデクス済みファイルリストの概念図である。 ファイルツリーを解析し、ファイル走査処理の分割方針を決定する処理のフローチャートである。 インデクス済みファイルリストとファイルサーバ走査実行手段によって得られたファイルサーバ上のファイル一覧を比較して追加、変更、削除されたファイルデータの一覧を作成する処理のフローチャートである。 ファイルリスト作成と走査範囲設定処理を示すフローチャートである。 図6の続きを示すフローチャートである。 インデクス済みファイルのURLリストの残件処理のフローチャートである。 ソート済みURLリストの残件処理のフローチャートである。 更新ファイル追加処理のフローチャートである。 追加ファイル追加処理のフローチャートである。 削除ファイル追加処理のフローチャートである。 ファイルツリーの途中の階層でディレクトリ数増加の割合が急激に大きくなるようなファイルツリーの概念図である。 ディレクトリ数増加の割合が急激に大きくなる階層を検出するための2階差分値の説明図である。 インデクス作成直後のディレクトリツリーと更新後のディレクトリツリーの例を示すイメージ図である。
以下、本発明を実施する場合の第一の実施形態について、図面に基づき詳細に説明する。
図1は、本発明に係る第一の実施形態におけるシステム構成図である。
図1に示したファイルリスト生成システムは、ファイルリスト作成サーバ1、分散処理サーバ群2、およびファイルサーバ3(以下「サーバ等」という)を、LAN(Local Area Network)4等の有線又は無線の通信回線により互いに通信可能に接続したシステムである。
図1においては、サーバ等はLAN4によって互いに通信可能に接続されているが、接続方法はLANに限定されるものではなく、例えばWAN(Wide Area Network)やインターネットによって接続されていてもよい。また、図1においては、サーバ等が同一LANセグメント上で接続されているが、この構成は一例に過ぎず、どのような構成になっていてもよい。さらに、図1においては、ファイルリスト作成サーバ1、分散処理サーバ群2、およびファイルサーバ3はそれぞれ1台ずつ存在しているが、それぞれ2台以上存在しても構わない。また、ファイルリスト作成サーバ1、分散処理サーバ群2、およびファイルサーバ3はそれぞれ異なる装置である必要はなく、例えば、ファイルリスト作成サーバ1、分散処理サーバ群2、およびファイルサーバ3の機能を1台の装置によって実現することも可能である。
以上のような構成により、ファイルリスト作成サーバ1は分散処理サーバ群2を利用してファイルサーバ3上のファイルデータのうち、前回のインデクス作成処理以降に追加、更新、削除されたファイルデータの一覧を作成する。
ファイルリスト作成サーバ1はPC等の装置であり、記憶装置15と通信可能に接続されている。
記憶装置15は磁気ディスク等の装置であり、ファイルリスト作成サーバ1に内蔵され又は外部接続される。記憶装置15と、ファイルリスト作成サーバ1の主記憶装置等は、ファイルリスト作成サーバ1の記憶手段として機能する。記憶装置15には、インデクス済みファイルリスト16が記憶されている。インデクス済みファイルリスト16には、既に検索インデクスを作成したことのある、ファイルサーバ3上の記憶装置31に格納されている検索対象ファイル32のURLが1以上記憶されている。
サーバ等と通信可能に接続されている検索用インデクス作成サーバ5によって検索用インデクスが更新された後、ファイルリスト作成サーバ1が、インデクス済みファイルリスト16に対して、インデクス済みファイルの追加、更新、削除を反映する。
ファイルリスト作成サーバ1はスケジューラ11、ファイル走査処理分割方針決定手段12、ファイル走査実行手段13、およびファイルリスト比較手段14を備えている。
また、ファイルリスト作成サーバ1はCPU、主記憶装置等を備えており、CPUは記憶装置15に記憶されているファイルリスト比較手段等のプログラムを主記憶装置上にローディングし、その命令コードを実行することで各種の処理を実行する。
スケジューラ11は追加、更新、削除されたファイルデータの一覧を定期的に作成するにあたり、記憶装置15に記憶されている一覧作成処理実行時間間隔を参照してファイル走査処理分割方針決定手段12を起動した後、ファイル走査実行手段13、ファイルリスト比較手段14を起動して、インデクス済みファイルリスト16の作成後に追加、更新、削除されたファイルデータの一覧を作成する。
ファイル走査処理分割方針決定手段12は記憶装置15に記憶されているインデクス済みファイルリスト16を分析し、ファイル走査処理をどのように分割して並列実行させるかの方針を判定する。この動作については、ファイル走査処理分割方針決定処理(図4)として後述する。
ファイル走査実行手段13はファイル走査処理分割方針判定手段12によって判定されたファイル走査処理の分割方針に基づいて、ファイルサーバ3の記憶装置31に格納された検査対象ファイル32を走査し、現在ファイルサーバ3上にあるファイルデータの一覧を作成する。
ファイルリスト比較手段14はファイル走査実行手段13によって作成された現在ファイルサーバ3上にあるファイルデータの一覧と、記憶装置15に記憶されているインデクス済みファイルリスト16とを比較し、追加、更新、削除されたファイルデータの一覧を作成する。この動作については、ファイル走査処理(図5)として後述する。
図2はインデクス済みファイルリスト16の構成要素であるファイルレコード160のデータ構成図である。
インデクス済みファイルリスト16は、1以上のインデクス済みファイルレコード160から構成される。インデクス済みファイルレコード160には、検索用インデクス作成済みであるファイルに関して、その情報がディレクトリURL161とディレクトリ内ファイル情報162に分けて記憶されている。
具体的にはディレクトリURL161はファイルサーバ上のディレクトリを一意に識別するためのパスが設定される。例えばファイルサーバの識別名が”server1”であり、共有名がshare1である共有ディレクトリの直下にあるetcという名前のディレクトリを示すURLはhttp://server1/share1/etc/となる。
ディレクトリ内ファイル情報162は、ファイル名163とファイル情報ハッシュ値164から構成される。ディレクトリ内ファイル情報162は1つのディレクトリURL160に対して、ディレクトリ直下にあるファイルの個数分(n個)情報が記憶される。具体的にはファイル名163はfile1.docやfile2.xmlのようなファイル名が記憶される。
ファイル情報ハッシュ値164はそのファイルが更新されたか否かを判定するために用いるファイルのメタデータから作成したハッシュ値を記憶する。例えば、ファイルの最終更新時刻、またはファイルサイズのいずれかが変化している場合にファイルが更新されたと判断する場合は、ファイルの最終更新時刻とファイルサイズを文字列化したものを連結し、そのハッシュ値を算出して記憶する。
ここで、最終更新時刻とファイルサイズは一例であり、例えばファイルや上位ディレクトリのアクセス権情報が管理者等によって変更された場合にファイルが更新されたと判断できるよう、それらのアクセス権情報をもとにハッシュ値を算出することも考えられる。
図3はインデクス済みファイルリスト16の具体例を示した概念図である。
この概念図に示すファイルサーバ3の構成においては、あるファイルサーバ3の識別名が“server1”である。“server1”では2つのディレクトリが共有されており、それぞれ”share1”、”share2”という共有名により一意に識別可能である。“server1”の”share1”、”share2”には、図示したようなディレクトリおよびファイルが存在する。例えば、“server1”の“share1”には、“etc”、“doc”の2つのディレクトリが存在し、“etc”ディレクトリには“file1.doc”、“file2.xml”の2つのファイルが、“doc”ディレクトリには“file3.doc”の1つのファイルが存在する。
同様に、“server1”の“share2”には、1つのディレクトリ“pjt”が存在し、“pjt”ディレクトリには“pjt1”、“pjt2”、“pjt3”の3つのディレクトリが存在し、そのうち“pjt1”ディレクトリには“file4.txt”、“file5.doc”の2つのファイルが存在する。
例えば、図3における点線内の部分31に対するインデクス済みファイルリスト16のデータとしては、ディレクトリURL161には”http://server1/share1/etc/”という値が記憶され、ディレクトリ内ファイル情報162のファイル名163が”file1.doc”であり、ファイル情報ハッシュ値164が”5c34a4dd1B46183A58ABC2B2C8F1B1D58EA34FC65DA8EB25B9FFD1A6131308CC”であるレコードと、ファイル名163が”file2.xml”であり、ファイル情報ハッシュ値164が”63b2cda32728C336134A8836A765270710D6712F11B2BEE0FA68715D7FDE74A3”であるレコードが記憶される。
図4はファイル走査処理分割方針決定手段12の動作を示すフローチャートである。
ファイル走査処理分割方針決定手段12は、走査対象のファイルツリー構造を複数に分割して走査処理を並列に行うことで高速化するという本発明の目的に対し、分割された範囲があまりに小さかった場合には並列処理を行うことによるオーバーヘッドが並列処理による高速化のメリットを上回ってしまうことを避けるために、既にインデクス済みのファイルの一覧を分析することにより、最初に行う走査処理の範囲が適切な大きさになるように判断する処理である。このような判断処理は、走査対象のファイルツリー構造が、走査処理開始ディレクトリに近い上位階層ほどディレクトリ数が少なく、下位階層ほどディレクトリ数が多い三角形構造の場合に適している。三角形構造の中でも特に、階層間のディレクトリ数の増加の割合が一定ではなく途中の階層で増加の割合が急激に大きくなるような場合、最上位階層から増加割合が急激に大きくなる直前の階層までを最初の走査範囲に設定する。
図13は途中の階層で増加の割合が急激に大きくなるようなファイルツリーの概念図である。図中の丸1306は1つのディレクトリを表す。なお、各ディレクトリの下にはファイルがある。また、下位階層のディレクトリは上位階層のいずれかのディレクトリに属している。
この概念図に示すファイルサーバ3のファイルツリーの構造においては、第一階層1301に1ディレクトリが属し、第二階層1302には3ディレクトリが属し、第三階層1303には6ディレクトリが属し、第四階層1304には12ディレクトリが属し、第五階層1305には10000ディレクトリが属している。このようなファイルツリー構造を持つファイルサーバとしては企業組織のヒエラルキーに即して構築された企業内ファイルサーバが考えられる。例えば第一階層1301を”本部”とし、第二階層1302を”部”、第三階層1303を”課”、第四階層1304を”各従業員”用のディレクトリとする場合、このようなディレクトリ数の比率を持つファイルツリー構造になる。各階層間のディレクトリ数の増加の割合は階層間のディレクトリ数の2階差分値によって近似的に算出できる。
2階差分値とは図14の説明図に示すように、各階層のディレクトリ数について上位階層と直下の下位階層のディレクトリ数の差を1階差分値としたとき、さらに下位階層のディレクトリ数と1階差分値との差を2階差分値とするものである。2階微分演算を近似したものに相当する。
図14の説明図においては、第3階層と第4階層のディレクトリ数の2階差分値が急変しているために、第4階層でディレクトリ数が急変していることを近似的に検出することができる。
図13の例においては、第一階層1301、第二階層1302、第三階層1303間の2階差分値は1となり、第二階層1302、第三階層1303、第四階層1304間の2階差分値は3となり、第三階層1303、第四階層1304、第五階層1305間の2階差分値は9982となる。これらの2階差分値の比較から第四階層1304と第五階層1305の間で増加の割合が急激に大きくなっていることが判断できる。ファイル走査処理分割方針決定手段12はこの手法によって、最上位階層1301から第4階層1304までを1つの分割深度として初回走査範囲に設定する。
初回走査範囲に設定した第4階層の以下の下位階層については、ディレクトリ数が多いため、その下位のディレクトリ階層を1深度単位として走査し、当該ディレクトリ上のファイルリストを作成する。
なお、ディレクトリ数が多い第5階層以下の階層においては、当該階層に属するディレクトリの走査を複数の分散処理サーバ群2で分担して走査する。この場合、分担の仕方については任意である。
また、最下位階層までのディレクトリ数の集計結果が非常に少なく所定数未満であった場合には、分割して走査しても高速化の目的に反するので、分割数を1として走査する。
このように本実施形態では、検索用インデクス作成直後の検索対象ファイルのディレクトリ構造を反映したディレクトリツリーが判明する。そして、その後、検索対象ファイルを全て走査(初回走査、次回走査、次々回走査・・・)することにより、検索用インデクス作成直後のディレクトリツリーを原型ツリーとして、これに追加、削除されたファイルを反映したディレクトリツリーが判明する。また、ディレクトリは追加されていないが、内容が更新されたファイルがあればハッシュ値が更新されたディレクトリが判明する。
図15に当初の検索用インデクス作成直後のディレクトリツリーと更新後のディレクトリツリーのイメージ図を示している。
そこで、当初の原型ツリーと追加、削除、更新を反映した最新ツリーとをファイルリスト同士(URLリスト同士)で比較することによって追加、削除、更新のあったファイルリストを抽出することが可能になる。この場合、ファイルリスト同士の比較処理も分散処理サーバ群2の各分散処理実行手段21で分散して実行することにより、高速に追加、削除、更新のあったファイルリストを抽出することが可能になる。
従って、ディレクトリ数が多くない所定数未満の階層までは初回走査で一挙にディレクトリ構造を解明し、ディレクトリ数が多い下位階層では1階層単位で走査してそのディレクトリ構造を解明するという処理を行っていることになる。
図4のS401に至るまでの処理は、前述のように、スケジューラ11が、追加、更新、削除されたファイルデータの一覧を定期的に作成するにあたり、記憶装置15に記憶されている一覧作成処理実行間隔を参照して、処理を開始させる。
まず、走査対象となるファイルサーバ3の共有ディレクトリに関わる全てのディレクトリのURL161(全ての走査対象ディレクトリのURL)を記憶装置15に記憶されたインデクス済みファイルリスト16から取得する(S401)。
次に取得した各ディレクトリURL161を文字”/”でファイルパス上の各階層のディレクトリ名に分割する(S402)。例えば、前述の例でいうと、”http://server1/share1/etc/”は、”http:”、””(空字列)、”server1”、
”share1”、”etc”に分割される。
次に、分割したディレクトリ名がそれぞれ、ファイルパス上の何階層目に所属しているか階層数を算出する(S403)。例えば前述の例で言うと、”http://server1/share1/etc/”の”share1”は第一階層となり、“etc”は第二階層となる。
次に、階層ごとにディレクトリ数を集計する。例えば図3に示したファイルツリーの場合、共有ディレクトリ”share1”に係る第一階層は”share1”一つであると算出される。同様に第二階層は”etc”と”doc”の二つであると算出される。S402とS403は複数の分散処理サーバ群2において分散処理実行手段21を利用して並列に処理できる。例えば、ディレクトリURL161を5000行ずつ各分散処理サーバ群2に分配し、各分散処理サーバ群2は割り当てられたディレクトリURL161一つずつに対して、S402とS403の処理を行う。
次に、階層ごとにユニークなディレクトリ名がいくつあるかを数えることにより、階層ごとのディレクトリ数を集計する(S404)。S404は複数の分散処理サーバ群2において分散処理実行手段21を利用して並列に処理できる。S403で算出した階層数ごとに、ディレクトリ名を各分散処理サーバ群2に分配し、各分散処理サーバ群2は割り当てられた階層についてS404のユニークなディレクトリ数を集計する処理を行う。
このS402〜S404がファイルツリー構造を解析するする処理に相当する。
次に、集計が完了した階層のうち、第一階層について処理を進める(S405)。
次に、第一階層の推定ファイル数を算出して、推定総ファイル数に加算する(S406)。なお、推定ファイル数は、S404で算出した第一階層のディレクトリ数に一定の数をかけることで算出する。一定の数とは例えば100といった値である。この値はファイルリスト作成サーバ1上の設定ファイルなどに記憶している値を参照する。この値は、1ディレクトリが保持するファイルの平均の数に近い値を推定して設定することが望ましい。
次に、推定総ファイル数が最高推定総ファイル数以上かどうかを判定する(S407)。なお、最高推定総ファイル数はファイルリスト作成サーバ1上の設定ファイルなどに記憶している値を参照する。この値は、例えば2000000といった値であり、一台のファイルリスト作成サーバ1が1度のファイルサーバ走査によって少なくとも数時間以内に走査完了できる数字を推定して設定することが望ましい。推定総ファイル数が最高推定総ファイル数以上だった場合は、最初の階層から今階層までをまとめて走査する対象として判断する(S412)。すなわちこの場合は、第一階層のみを走査対象として判断する。最高推定総ファイル数は、まとめて走査する対象の範囲が際限なく拡大することを防ぐ目的で設定している。
推定総ファイル数が最高推定総ファイル数より少なかった場合は、次に、前々階層、前階層、今階層のディレクトリ数の2階差分値を計算する(S408)。第一階層の場合は、前々階層、前階層が無いため、第一階層のディレクトリ数そのものを2階差分値とする。
次に、2階差分値が階層数2階差分閾値以上かどうかを判定する(S409)。なお、階層数2階差分閾値はファイルリスト作成サーバ1上の設定ファイルなどに記憶している値を参照する。この値は階層間のディレクトリ数の増加の割合がどの程度急激であるかを近似的に示す値であり、例えば5000といった値を設定する。
2階差分値が2階差分閾値以上である場合は、次に推定総ファイル数が最低推定総ファイル数以上であるかどうかを判定する(S410)。なお、最低推定総ファイル数はファイルリスト作成サーバ1上の設定ファイルなどに記憶している値を参照する。この値は、例えば1000000と言った値であり、一台のファイルリスト作成サーバ1が1度のファイルサーバ走査によって少なくとも数分以上走査にかけるファイル数を推定して、その数を設定することが望ましい。
推定総ファイル数が最低推定総ファイル数以上である場合は、最初の階層から今階層までをまとめて走査する対象として判断する(S412)。
S410の判断で推定総ファイル数が最低推定総ファイル数より少なかった場合は、次の階層に進む(S411)。図4の処理はあまりに小さな範囲を走査範囲として設定しないようにするための処理であるため、一定数のファイルは走査範囲に含まれるようにS410の判断処理を加えている。
S409の判断で2階差分値が2階差分閾値より小さかった場合は、次の階層に進む(S411)。
S411で次の階層に進んだ後は、S406の処理に戻る。S407かS409とS410のどちらかの判断によって走査範囲が決まるまでS406からS411の処理を繰り返し実行する。
これらの処理により、ファイル走査実行手段13が最初に行う走査処理の範囲として、適切な範囲が決定される。
図5はファイル走査実行手段13とファイルリスト比較手段14によって追加、更新、削除されたファイルデータの一覧を作成する処理の動作を示すフローチャートである。
図4のフローチャートに示した処理の終了後、スケジューラ11が図5の処理を起動させる。
図4のフローチャートで示された分割方針決定手段によって判断された範囲を走査範囲に設定する(S501)。
次に走査範囲のファイルを走査し、ファイルとディレクトリのURLを列挙する(S502)。
ファイルサーバ3内の一部範囲を走査してファイルとディレクトリを列挙することは周知の技術であるため、ファイルサーバ走査実行手段13がどのように走査を行うかについてはここでは詳細には記載しないが、例えばファイルリスト作成サーバ1がファイルサーバ3の記憶装置31の検索対象ファイル32を、ネットワークファイルシステムを通じてアクセス可能な状態にし、ファイルリスト作成サーバ1のローカルファイル用のファイルツリー探索プログラムを使用して各ファイルデータのファイルシステム上のファイルパスの一覧を出力するなどさせればよい。ファイルシステム上のファイルパスが求まれば、ファイルパスにファイルサーバ3の識別名などをファイルパスに付け加えることでURLを作成することができる。
次に、ファイルリストを作成し、次回走査範囲を設定する(S503)。この次回走査範囲は、S502で走査された範囲の最下層のディレクトリが設定され、そのディレクトリの直下1階層分を走査範囲として設定する。すなわちS501で設定された初回の走査より後の走査では1階層ずつファイルツリーを走査する。この処理の詳細はファイルリスト作成と走査範囲設定処理(S601等)として後述する。
次に、次回走査範囲が空かどうかを判断する(S504)。
もし次回走査範囲が空であれば、ファイルツリーを全て探索し終えたので、処理を終了する。
次回走査範囲が空でなければ、S502に戻って次の走査範囲について走査し、ファイルとディレクトリのURLを列挙する。
図6及び図7は、ファイルリスト作成と走査範囲設定処理の動作を示すフローチャートである。これは図5のS503の処理の詳細なフローである。
最初に、S502で列挙されたファイルとディレクトリのURLを文字列順にソートする(S601)。
次に、インデクス済みファイルリスト16から走査範囲のインデクス済みファイルのURLリストを取得する(S602)。インデクス済みファイルのURLリストは、インデクス済みファイルリスト16から走査範囲に含まれるディレクトリURL161のレコードをすべて抽出し、それらのレコードに含まれるファイル名163をそれぞれ接続してファイルのURLを作成することで作成できる。ここで走査範囲は階層数で表すことができ、階層数はディレクトリURLに含まれる”/”の数から算出可能である。よって、例えば”/”を指定数含む正規表現を作成して、その正規表現に適合するディレクトリURL161を抽出することで、走査範囲のディレクトリURL161のレコードを抽出することができる。
次に、ソート済みURLリストの先頭行を取り出す(S603)。このURLは現在ファイルサーバ3上で走査範囲に含まれる検索対象ファイル32のうち、ファイルURLが辞書順(ABC順)で最も前にあるファイルのURLである。
次に、インデクス済みファイルのURLリストの先頭行を取り出す(S604)。このURLは記憶装置15に記憶されたインデクス済みファイルリスト16のなかで走査範囲に含まれるファイルのうち、ファイルURLが辞書順で最も前にあるファイルのURLである。
次に、S603とS604で取り出したURL同士を文字列として比較する(S605)。
次に、S605の比較の結果、URLが文字列として一致していたかどうかを判断する(S606)。
もしURLが一致していた場合は、現在ファイルサーバ3上にあるファイルまたはディレクトリと、インデクス済みファイルリストのファイルまたはディレクトリのURLが一致しているということなので、このファイルまたはディレクトリは、新規にファイルサーバ3上に追加されたファイルまたはディレクトリや、前回インデクスされたファイルまたはディレクトリが削除されたものではなく、変更が無かった、または更新があったファイルまたはディレクトリであると判断できる。このファイルまたはディレクトリは更新の可能性があるファイルまたはディレクトリであるとして、追加、更新、削除されたファイルデータの一覧に追加する処理(S607)を行う。この処理の詳細は更新ファイル追加処理(S901等)として後述する。
次に、ソート済みURLリストに次の行があるかどうかを判断する(S608)。
もしソート済みURLリストに次の行がある場合は、次に、インデクス済みファイルのURLリストに次の行があるかを判断する(S609)。
もしインデクス済みファイルのURLリストに次の行がある場合は、ソート済みURLリストの次の行を取り出す(S610)。
次に、インデクス済みファイルのURLリストの次の行を取り出す(S611)。
次に、S605に戻り、次のURL同士を比較する。ソート済みURLリストとインデクス済みファイルのURLリストの全てのURLについて処理を終えるまで、これらの処理を繰り返し実行する。
もしS608の判断で、ソート済みURLリストに次の行が無かった場合は、インデクス済みファイルのURLリストに残っているURLを削除されたファイルまたはディレクトリであるとして追加、更新、削除ファイル一覧に追加する処理(図7のS620)を行う。この処理の詳細はインデクス済みファイルのURLリストの残件処理(S701等)として後述する。
もしS609の判断で、インデクス済みファイルのURLリストに次の行が無かった場合は、ソート済みURLリストに残っているURLを追加されたファイルまたはディレクトリとして追加、更新、削除ファイル一覧に追加する処理(図7のS619)を行う。この処理の詳細は、ソート済みURLリストの残件処理(S801等)として後述する。
もしS606の判断で、URLが文字列として一致していなかった場合は、次にソート済みURLリストのURLが辞書順でインデクス済みファイルのURLリストのURLより前かどうかを判断する(図7のS612)。
もしソート済みURLリストのURLが辞書順でインデクス済みファイルのURLリストのURLより前だった場合は、インデクス済みファイルリストには存在していないファイルまたはディレクトリがファイルサーバ3上に新たに作成されたということを示すので、次に追加されたファイルまたはディレクトリであるとして、追加、更新、削除されたファイルデータの一覧に追加する処理(図7のS613)を行う。例えば、インデクス済みファイルのURLリストのURLが”http://server1/share1/etc/file1.doc”であり、ソート済みURLリストのURLが”http://server1/share1/etc/file0.txt”だった場合は、ソート済みURLリストのURLの方が辞書順で前であり、”http://server1/share1/etc/file0.txt”というファイルが前回のインデクス更新時から今回のインデクス時までの間にファイルサーバ3に新たに作成されたファイルであると判断できる。この処理の詳細は追加ファイル追加処理(S1001等)として後述する。
次に、ソート済みURLリストに次の行があるかを判断する(S614)。
もしソート済みURLリストに次の行があればソート済みURLリストの次の行を取り出す(S615)。
次に、図6のS605に戻ってURL同士を比較する。このとき、ソート済みURLリストのURLはS615の処理によって次の行に進んでいるが、インデクス済みファイルのURLリストのURLは次の行に進んでいない。
もしS614の判断でソート済みURLリストに次の行がなかった場合は、次にインデクス済みファイルのURLリストの残件処理(S620)を行う。
もしS612の判断でソート済みURLリストのURLが辞書順でインデクス済みファイルのURLリストのURLより後だった場合は、インデクス済みファイルリストに含まれていたファイルまたはディレクトリが、現在のファイルサーバ3上には存在しないということを示すので、次に削除されたファイルまたはディレクトリであるとして、追加、更新、削除されたファイルデータの一覧に追加する処理(図7のS616)を行う。この処理の詳細は削除ファイル追加処理(S1101等)として後述する。
次に、インデクス済みファイルのURLリストに次の行があるかどうかを判断する(S617)。
もしインデクス済みファイルのURLリストに次の行があればインデクス済みファイルのURLリストの次の行を取り出す(S618)。
次に、S605に戻ってURL同士を比較する。このとき、インデクス済みファイルのURLリストのURLはS618の処理によって次の行に進んでいるが、ソート済みURLリストのURLは次の行に進んでいない。
もしS617の判断でインデクス済みファイルのURLリストに次の行がなければ、次にソート済みURLリストの残件処理(S619)を行う。
これまで述べたように、S605の判断でURLが一致していた場合は、ソート済みURLリストとインデクス済みファイルのURLリストを共に次の行に進め、S605の判断でURLが一致せず、かつS612の判断でソート済みURLリストのURLが辞書順で前だった場合はソート済みURLリストのみを次の行に進め、S605の判断でURLが一致せず、かつS612の判断でソート済みURLリストのURLが辞書順で後だった場合はインデクス済みファイルのURLリストのみを次の行に進める。このような方法で両URLリストのURLを先頭から最後尾まで比較していくことで、該当範囲について追加、更新、削除されたファイルを全て追加、更新、削除されたファイルデータの一覧に追加することができる。
これらの処理により、今回の走査範囲についての追加、更新、削除されたファイルデータの一覧が作成され、次回の走査範囲が決定される。
図8はインデクス済みファイルのURLリストの残件処理の動作を示すフローチャートである。これは図7のS620の処理の詳細なフローである。
最初に、インデクス済みファイルのURLリストに次の行があるかどうかを判断する(S801)。ここでインデクス済みファイルのURLリストとは、図6の処理におけるインデクス済みファイルのURLリストと同じものを指す。
もしインデクス済みファイルのURLリストに次の行がある場合は、次にインデクス済みファイルのURLリストの次の行を取り出す(S802)。
次に取り出したインデクス済みファイルのURLリストのURLがディレクトリのものかどうかを判断する(S803)。
もし取り出したURLがディレクトリのものである場合は、次にインデクス済みファイルリストからURLが示すディレクトリ以下のファイルの一覧を取得する(S804)。これは、ファイルツリーにおいて上位のディレクトリが削除されると、その配下のファイルおよびディレクトリは全て削除されることから、インデクス済みファイルリストに存在する当該ファイルを、全て削除ファイルとして追加、更新、削除ファイル一覧に追加しなければならないためである。インデクス済みファイルリスト一覧から取り出したURLが示すディレクトリ以下のファイルの一覧を取得する方法としては、例えばインデクス済みファイルリストから取り出したURLと前方一致するURLを検索する方法が考えられる。
次に取得したファイルを全て削除ファイルとして追加、更新、削除ファイル一覧に追加する(S805)。
次にS801に戻り、インデクス済みファイルのURLリストに次の行があるかどうかを判断する。
もしインデクス済みファイルのURLリストに次の行が無い場合は処理を終了する。
もしインデクス済みファイルのURLリストに次の行がある場合はS801からS805の処理をインデクス済みファイルのURLリスト全てに対して繰り返し行う。
もしS803の判断でURLがディレクトリのものではなくファイルのものだった場合は、次にそのファイルを削除ファイルとして追加、更新、削除ファイル一覧に追加する(S805)。
これらの処理により、インデクス済みファイルのURLリストに残っているURLが、削除されたファイルまたはディレクトリとして追加、更新、削除ファイル一覧に追加される。
図9はソート済みURLリストの残件処理の動作を示すフローチャートである。これは、図7のS619の処理の詳細なフローである。
最初に、ソート済みURLリストに次の行があるかどうかを判断する(S901)。
もしソート済みURLリストに次の行がある場合は、次にソート済みURLリストの次の行を取り出す(S902)。
次に、URLがディレクトリのものかどうかを判断する(S903)。
もしURLがディレクトリのものである場合は、次に、それが走査範囲の最下層のディレクトリであるかどうかを判断する(S904)。例えば、図12のファイルツリーで第一階層1201から第五階層1205までを走査範囲に設定した場合は、第五階層1205に属するディレクトリのURLが最下層のディレクトリと判断される。
もしURLが示すディレクトリが最下層のディレクトリだった場合は、そのディレクトリは次回走査範囲における起点ディレクトリの一つとして含まれるため、次回走査範囲に追加する(S905)。この次回走査範囲はファイルリスト作成サーバ1の主記憶装置上に保持してもよいし、次回走査範囲に追加されるディレクトリ数が多い場合は記憶装置15に一時的に記憶して次回処理の際にロードするようにしてもよい。
もしS904の判断で走査範囲の最下層のディレクトリではなかった場合は、現走査範囲に下位のディレクトリが含まれているため、そのディレクトリは次回走査範囲に含める必要は無い。よって、次にS901に戻ってソート済みURLリストに次の行があるか判断する。
もしS903の判断でURLがディレクトリのものではなくファイルのものだった場合は、そのファイルを追加ファイルであるとして追加、更新、削除ファイル一覧に追加する。
次に、S901に戻ってソート済みURLリストに次の行があるか判断する。
もしS901の判断でソート済みURLリストに次の行が無かった場合は、処理を終了する。
これらの処理により、ソート済みURLリストに残っているURLが、ファイルの場合は追加ファイルとして追加、更新、削除ファイル一覧に追加され、また、走査範囲の最下層のディレクトリの場合は次回走査範囲に追加される。
図10は更新ファイル追加処理の動作を示すフローチャートである。これは図6のS607の処理の詳細なフローである。
最初に、URLがディレクトリのものであるかどうか判断する(S1001)。このURLは図6のS605で比較し、S606で一致していると判断されたURLであり、ソート済みURLリストから取り出したURLを使用してもよいし、インデクス済みファイルのURLリストから取り出したURLを使用してもよい。
もしURLがディレクトリのものである場合は、次に走査範囲の最下層のディレクトリであるかどうかを判断する(S1002)。
もしURLが示すディレクトリが最下層のディレクトリだった場合は、そのディレクトリは次回走査範囲における起点ディレクトリの一つとして含まれるため、次回走査範囲に追加する(S1003)。
もしS1002の判断で走査範囲の最下層のディレクトリではなかった場合は、現走査範囲に下位のディレクトリが含まれているため、そのディレクトリは次回走査範囲に含める必要は無い。よって処理を終了する。
もしS1001の判断で、URLがディレクトリのものではなくファイルのものだった場合は、次にそのURLに対するインデクス済みファイルのファイル情報ハッシュ値164と、ファイルサーバ3上のソート済みURLリストのURLが示すファイルのメタデータからファイル情報ハッシュ値164と同様の方式で算出したハッシュ値を比較する(S1004)。
次に、比較したハッシュ値に差があるかどうかを判断する(S1005)。
S1005の判断でハッシュ値に差がある場合は、そのファイルが更新されていることを示すので、次にそのURLを更新ファイルとして追加、更新、削除ファイル一覧にURLを追加する(S1006)。
S1005の判断でハッシュ値に差が無い場合は、そのファイルが更新されていないことを示すので、そのファイルについては追加、更新、削除ファイル一覧に追加する必要は無い。そのため、これで処理を終了する。
これらの処理により、URLがファイルであり、かつ更新されていた場合は、更新ファイルであるとして追加、更新、削除されたファイルデータの一覧に追加され、また、走査範囲の最下層のディレクトリの場合は次回走査範囲に追加される。
図11は追加ファイル追加処理の動作を示すフローチャートである。これは図7のS613の処理の詳細なフローである。
最初に、ソート済みURLリストのURLがディレクトリのものかどうかを判断する(S1101)。
もしURLがディレクトリのものだった場合は、次にそのディレクトリが走査範囲の最下層のディレクトリかどうかを判断する(S1102)。
もしディレクトリが最下層のものだった場合は、次にディレクトリを次回走査範囲に追加する(S1103)。
もしS1102の判断で、ディレクトリが走査範囲の最下層のディレクトリではなかった場合は、これで処理を終了する。
もしS1101の判断で、ソート済みURLリストのURLがディレクトリのものではなくファイルのものだった場合は、そのファイルを追加ファイルとして追加、更新、削除ファイル一覧に追加する(S1104)。
これらの処理により、URLがファイルである場合は、追加ファイルであるとして追加、更新、削除されたファイルデータの一覧に追加され、また、走査範囲の最下層のディレクトリの場合は次回走査範囲に追加される。
図12は削除ファイル追加処理の動作を示すフローチャートである。これは図7のS616の処理の詳細なフローである。
最初に、インデクス済みファイルのURLリストのURLがディレクトリのものかどうかを判断する(S1201)。
もしURLがディレクトリのものだった場合は、そのディレクトリ以下のファイル全てを削除ファイルとして追加、更新、削除ファイル一覧に追加する必要があるため、次に、インデクス済みファイルリストからURL配下のファイルの一覧を取得する(S1202)。
次に、削除ファイルとして追加、更新、削除ファイル一覧に取得した一覧に含まれるファイル全てを追加する(S1203)。
もしS1201の判断でインデクス済みファイルのURLリストのURLがディレクトリのものではなくファイルのものだった場合は、そのファイルを削除ファイルとして追加、更新、削除ファイル一覧に追加する(S1204)。
図5で示したS502の走査は複数の分散処理サーバ群2において分散処理実行手段21を利用して並列に処理できる。S502の処理を分散させる場合は走査範囲に設定されたディレクトリのうち一定数を一つの分散処理実行手段21に割り当てる。例えば一つの分散処理実行手段21が最大5ディレクトリを受け持つようにすると、走査範囲に設定されたディレクトリが22あった場合、5ディレクトリ、5ディレクトリ、5ディレクトリ、5ディレクトリ、2ディレクトリの5つに処理が分散される。
また、図5で示したS503のファイルリスト作成処理と次回走査範囲の設定も複数の分散処理サーバ群2において分散処理実行手段21を利用して並列に処理できる。S503の処理を分散させる場合は、1つのディレクトリに対する処理を一つの分散処理実行手段21に割り当てる。例えば図3に示す例で走査範囲が”http://server1/share1/etc”と”http://server1/share1/doc”だと設定されていた場合、”http://server1/share1/etc/”についての処理を一つの分散処理実行手段21に割り当てて、”http://server1/share1/doc/”についての処理を一つの分散処理実行手段21に割り当てる。例えば”http://server1/share1/etc/”についての処理を割り当てられた分散処理実行手段21は”http://server1/share1/etc/file1.doc”や”http://server1/share1/etc/file2.xml”などの”http://server1/share1/etc/”の直下にあるディレクトリおよびファイルについてS503の処理を行う。
これらの処理により、URLがファイルである場合は、削除ファイルであるとして追加、更新、削除されたファイルデータの一覧に追加され、また、ディレクトリの場合はインデクス済みファイルリストのURL配下のファイル全てが削除ファイルとして追加、更新、削除されたファイルデータの一覧に追加される。
1 ファイルリスト作成サーバ
2 分散処理サーバ群
3 ファイルサーバ
4 ネットワーク
11 スケジューラ
12 ファイル走査処理分割方針決定手段
13 ファイル走査実行手段
14 ファイルリスト比較手段
15 ファイルリスト作成サーバ1に接続された記憶装置
16 インデクス済みファイルリスト
21 分散処理実行手段
31 ファイルサーバ3に接続された記憶装置
32 検索対象ファイル
160 インデクス済みファイルリスト16のファイルレコード
161 ディレクトリURL
162 ディレクトリ内ファイル情報
163 ファイル名
164 ファイル情報ハッシュ値

Claims (4)

  1. 走査対象ファイルのインデクス作成済みのファイルリストを分散処理サーバによって作成するステップと、前記分散処理サーバによって作成されたインデクス作成済みのファイルリストを記憶装置に記憶させるステップと、前記インデクス作成済みのファイルリストを前記記憶装置から取得し、そのファイルリストから走査対象ファイルのディレクトリURLを取得し、そのディレクトリURLを解析して各階層のディレクトリ数を集計し、その集計結果に基づき走査対象ディレクトリの走査処理を分割して行う分割方針を決定するステップと、決定された分割方針に従い走査対象ファイルのディレクトリを分割し、分割した単位で各ディレクトリ上の走査対象ファイルを前記分散処理サーバによって分散走査し、走査対象ファイルのファイルリストを作成するステップと、作成されたファイルリストと前記インデクス作成済みのファイルリストとを比較して前記インデクス作成後に追加、変更、削除されたファイルの一覧を作成して出力するステップとを備え、
    前記走査処理の分割方針を決定するステップは、最上位階層から数えたディレクトリ数が所定数未満であれば走査対象ディレクトリの走査処理を行う分割数を1とする分割方針を決定し、所定数を越えた場合には最上位階層のディレクトリから所定階層までの階層を1つの分割単位として初回走査を行い、その初回走査で発見した走査対象ディレクトリの下位階層は深度1階層を分割単位として走査する分割方針を決定するものであることを特徴とするファイルリスト生成方法。
  2. 走査対象ファイルのインデクス作成済みのファイルリストを作成する分散処理サーバと、該分散処理サーバによって作成されたインデクス作成済みのファイルリストを記憶した記憶装置と、前記インデクス作成済みのファイルリストを前記記憶装置から取得し、そのファイルリストから走査対象ファイルのディレクトリURLを取得し、そのディレクトリURLを解析して各階層のディレクトリ数を集計し、その集計結果に基づき走査対象ディレクトリの走査処理を分割して行う分割単位を決定するファイル走査処理分割方針決定手段と、決定された分割方針に従い走査対象ファイルのディレクトリを分割し、分割した単位で各ディレクトリ上の走査対象ファイルを前記分散処理サーバによって分散走査し、走査対象ファイルのファイルリストを作成するファイル走査手段と、作成されたファイルリストと前記インデクス作成済みのファイルリストとを比較して前記インデクス作成後に追加、変更、削除されたファイルの一覧を作成して出力する比較手段とを備え、
    前記ファイル走査処理分割方針決定手段は、最上位階層から数えたディレクトリ数が所定数未満であれば走査対象ディレクトリの走査処理を行う分割数を1とする分割方針を決定し、所定数を越えた場合には最上位階層のディレクトリから所定階層までの階層を1つの分割単位として初回走査を行い、その初回走査で発見した走査対象ディレクトリの下位階層は深度1階層を分割単位として走査する分割方針を決定するものであることを特徴とするファイルリスト生成システム。
  3. 走査対象ファイルのインデクス作成済みのファイルリストを取得し、そのファイルリストから走査対象ファイルのディレクトリURLを取得し、そのディレクトリURLを解析して各階層のディレクトリ数を集計し、その集計結果に基づき走査対象ディレクトリの走査処理を分割して行う分割単位を決定するファイル走査処理分割方針決定手段と、決定された分割方針に従い走査対象ファイルのディレクトリを分割し、分割した単位で各ディレクトリ上の走査対象ファイルを分散処理サーバによって分散走査し、走査対象ファイルのファイルリストを作成するファイル走査手段と、作成されたファイルリストと前記インデクス作成済みのファイルリストとを比較して前記インデクス作成後に追加、変更、削除されたファイルの一覧を作成して出力する比較手段とを備え、
    前記ファイル走査処理分割方針決定手段は、最上位階層から数えたディレクトリ数が所定数未満であれば走査対象ディレクトリの走査処理を行う分割数を1とする分割方針を決定し、所定数を越えた場合には最上位階層のディレクトリから所定階層までの階層を1つの分割単位として初回走査を行い、その初回走査で発見した走査対象ディレクトリの下位階層は深度1階層を分割単位として走査する分割方針を決定するものであることを特徴とするファイルリスト生成装置。
  4. 走査対象ファイルのインデクス作成済みのファイルリストを作成する分散処理サーバと、該分散処理サーバによって作成されたインデクス作成済みのファイルリストを記憶した記憶装置と、ファイルリスト作成サーバとから構成されたシステムに使用するプログラムであって、
    前記ファイルリスト作成サーバを、
    前記インデクス作成済みのファイルリストを前記記憶装置から取得し、そのファイルリストから走査対象ファイルのディレクトリURLを取得し、そのディレクトリURLを解析して各階層のディレクトリ数を集計し、その集計結果に基づき走査対象ディレクトリの走査処理を分割して行う分割単位を決定するファイル走査処理分割方針決定手段と、決定された分割方針に従い走査対象ファイルのディレクトリを分割し、分割した単位で各ディレクトリ上の走査対象ファイルを前記分散処理サーバによって分散走査し、走査対象ファイルのファイルリストを作成するファイル走査手段と、作成されたファイルリストと前記インデクス作成済みのファイルリストとを比較して前記インデクス作成後に追加、変更、削除されたファイルの一覧を作成して出力する比較手段として機能させ、
    さらに前記ファイル走査処理分割方針決定手段を、最上位階層から数えたディレクトリ数が所定数未満であれば走査対象ディレクトリの走査処理を行う分割数を1とする分割方針を決定し、所定数を越えた場合には最上位ディレクトリから所定階層までの階層を1つの分割単位として初回走査を行い、その初回走査で発見した走査対象ディレクトリの下位階層は深度1階層を分割単位として走査する分割方針を決定する手段として機能させることを特徴とするファイルリスト生成プログラム。
JP2012017738A 2012-01-31 2012-01-31 ファイルリスト生成方法及びシステム、ファイルリスト生成装置並びにプログラム Expired - Fee Related JP5798503B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2012017738A JP5798503B2 (ja) 2012-01-31 2012-01-31 ファイルリスト生成方法及びシステム、ファイルリスト生成装置並びにプログラム
US13/741,892 US9015214B2 (en) 2012-01-31 2013-01-15 Process of generating a list of files added, changed, or deleted of a file server
EP13151871.4A EP2624147A1 (en) 2012-01-31 2013-01-18 File list generation method and system, file list generation apparatus, and program
CN2013100200431A CN103226556A (zh) 2012-01-31 2013-01-18 文件列表生成方法及系统、文件列表生成装置及程序

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012017738A JP5798503B2 (ja) 2012-01-31 2012-01-31 ファイルリスト生成方法及びシステム、ファイルリスト生成装置並びにプログラム

Publications (2)

Publication Number Publication Date
JP2013156881A JP2013156881A (ja) 2013-08-15
JP5798503B2 true JP5798503B2 (ja) 2015-10-21

Family

ID=47681670

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012017738A Expired - Fee Related JP5798503B2 (ja) 2012-01-31 2012-01-31 ファイルリスト生成方法及びシステム、ファイルリスト生成装置並びにプログラム

Country Status (4)

Country Link
US (1) US9015214B2 (ja)
EP (1) EP2624147A1 (ja)
JP (1) JP5798503B2 (ja)
CN (1) CN103226556A (ja)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10459892B2 (en) 2014-04-23 2019-10-29 Qumulo, Inc. Filesystem hierarchical aggregate metrics
CN105610596B (zh) * 2014-11-20 2020-02-18 腾讯科技(武汉)有限公司 一种资源目录管理方法和网络终端
US9836480B2 (en) 2015-01-12 2017-12-05 Qumulo, Inc. Filesystem capacity and performance metrics and visualizations
US11132336B2 (en) 2015-01-12 2021-09-28 Qumulo, Inc. Filesystem hierarchical capacity quantity and aggregate metrics
US10318494B2 (en) * 2016-10-07 2019-06-11 Qumulo, Inc. Analyzing and visualizing trends in the use and consumption of data in a shared storage system
US10095729B2 (en) 2016-12-09 2018-10-09 Qumulo, Inc. Managing storage quotas in a shared storage system
US11360936B2 (en) 2018-06-08 2022-06-14 Qumulo, Inc. Managing per object snapshot coverage in filesystems
US10534758B1 (en) 2018-12-20 2020-01-14 Qumulo, Inc. File system cache tiers
US11151092B2 (en) 2019-01-30 2021-10-19 Qumulo, Inc. Data replication in distributed file systems
US10614033B1 (en) 2019-01-30 2020-04-07 Qumulo, Inc. Client aware pre-fetch policy scoring system
CN111859028B (zh) * 2019-04-30 2024-08-16 伊姆西Ip控股有限责任公司 创建用于流式存储的索引的方法、设备和计算机程序产品
US20210103577A1 (en) * 2019-10-07 2021-04-08 Microsoft Technology Licensing, Llc Reliable detection of deleted assets in data stores
US10725977B1 (en) 2019-10-21 2020-07-28 Qumulo, Inc. Managing file system state during replication jobs
US10795796B1 (en) 2020-01-24 2020-10-06 Qumulo, Inc. Predictive performance analysis for file systems
US10860372B1 (en) 2020-01-24 2020-12-08 Qumulo, Inc. Managing throughput fairness and quality of service in file systems
US11151001B2 (en) 2020-01-28 2021-10-19 Qumulo, Inc. Recovery checkpoints for distributed file systems
US10860414B1 (en) 2020-01-31 2020-12-08 Qumulo, Inc. Change notification in distributed file systems
US10936551B1 (en) 2020-03-30 2021-03-02 Qumulo, Inc. Aggregating alternate data stream metrics for file systems
US10936538B1 (en) 2020-03-30 2021-03-02 Qumulo, Inc. Fair sampling of alternate data stream metrics for file systems
US11775481B2 (en) 2020-09-30 2023-10-03 Qumulo, Inc. User interfaces for managing distributed file systems
KR102648501B1 (ko) * 2020-12-16 2024-03-19 한국전자통신연구원 네트워크 환경 동기화 장치 및 방법
US11157458B1 (en) 2021-01-28 2021-10-26 Qumulo, Inc. Replicating files in distributed file systems using object-based data storage
US11461241B2 (en) 2021-03-03 2022-10-04 Qumulo, Inc. Storage tier management for file systems
US11567660B2 (en) 2021-03-16 2023-01-31 Qumulo, Inc. Managing cloud storage for distributed file systems
US11132126B1 (en) 2021-03-16 2021-09-28 Qumulo, Inc. Backup services for distributed file systems in cloud computing environments
US11669255B2 (en) 2021-06-30 2023-06-06 Qumulo, Inc. Distributed resource caching by reallocation of storage caching using tokens and agents with non-depleted cache allocations
US11294604B1 (en) 2021-10-22 2022-04-05 Qumulo, Inc. Serverless disk drives based on cloud storage
US11354273B1 (en) 2021-11-18 2022-06-07 Qumulo, Inc. Managing usable storage space in distributed file systems
US11599508B1 (en) 2022-01-31 2023-03-07 Qumulo, Inc. Integrating distributed file systems with object stores
CN114691625B (zh) * 2022-04-21 2023-05-16 成都理工大学 一种面向海量动态文件的数据管理方法
CN115238257B (zh) * 2022-09-26 2023-01-06 深圳市亲邻科技有限公司 门禁人脸权限更新方法、装置、计算机设备及存储介质
US11722150B1 (en) 2022-09-28 2023-08-08 Qumulo, Inc. Error resistant write-ahead log
US11729269B1 (en) 2022-10-26 2023-08-15 Qumulo, Inc. Bandwidth management in distributed file systems
US11966592B1 (en) 2022-11-29 2024-04-23 Qumulo, Inc. In-place erasure code transcoding for distributed file systems
US11921677B1 (en) 2023-11-07 2024-03-05 Qumulo, Inc. Sharing namespaces across file system clusters
US11934660B1 (en) 2023-11-07 2024-03-19 Qumulo, Inc. Tiered data storage with ephemeral and persistent tiers

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5845290A (en) * 1995-12-01 1998-12-01 Xaxon R&D Ltd. File recording support apparatus and file recording support system for supporting recording of file on home page on internet and intranet
US5935207A (en) * 1996-06-03 1999-08-10 Webtv Networks, Inc. Method and apparatus for providing remote site administrators with user hits on mirrored web sites
US7243369B2 (en) * 2001-08-06 2007-07-10 Sun Microsystems, Inc. Uniform resource locator access management and control system and method
JP4106601B2 (ja) * 2002-07-31 2008-06-25 日本電気株式会社 ディレクトリ情報への更新情報生成システム、更新情報生成プログラム
US7730155B1 (en) * 2002-10-01 2010-06-01 Apple Inc. Method and apparatus for dynamically locating resources
US20040068523A1 (en) * 2002-10-07 2004-04-08 Keith Robert Olan Method and system for full asynchronous master-to-master file synchronization
US20060117008A1 (en) 2004-11-17 2006-06-01 Kabushiki Kaisha Toshiba File management apparatus and file management program
TW200619928A (en) * 2004-12-10 2006-06-16 Hon Hai Prec Ind Co Ltd A method and system for restoring tree document directory
JP2006268456A (ja) 2005-03-24 2006-10-05 Nec Corp ファイル管理装置、ファイル管理方法、及びファイル管理プログラム
JP2007193660A (ja) * 2006-01-20 2007-08-02 Seiko Epson Corp 情報管理装置、情報管理方法及びそのプログラム
US7854006B1 (en) * 2006-03-31 2010-12-14 Emc Corporation Differential virus scan
JP4971717B2 (ja) * 2006-08-11 2012-07-11 国立大学法人東京工業大学 ディレクトリ分散型記憶装置及びデータ処理要求移譲プログラム
JP2008304981A (ja) * 2007-06-05 2008-12-18 Konica Minolta Holdings Inc ディレクトリ情報の管理方法、及びディレクトリ情報の管理システム
GB0712640D0 (en) * 2007-06-28 2007-08-08 Symbian Software Ltd Domputing device having a merged directory hierarchy from multiple filesystems
CN101315640B (zh) * 2008-07-01 2010-09-01 中兴通讯股份有限公司 一种目录管理方法和装置
JP5371656B2 (ja) * 2009-09-24 2013-12-18 株式会社日立ソリューションズ ファイル検索システム
JP5657498B2 (ja) * 2011-09-30 2015-01-21 株式会社日立ソリューションズ ファイル検索システム

Also Published As

Publication number Publication date
JP2013156881A (ja) 2013-08-15
CN103226556A (zh) 2013-07-31
US9015214B2 (en) 2015-04-21
EP2624147A1 (en) 2013-08-07
US20130198251A1 (en) 2013-08-01

Similar Documents

Publication Publication Date Title
JP5798503B2 (ja) ファイルリスト生成方法及びシステム、ファイルリスト生成装置並びにプログラム
JP5759915B2 (ja) ファイルリスト生成方法及びシステム並びにプログラム、ファイルリスト生成装置
US8799291B2 (en) Forensic index method and apparatus by distributed processing
KR20200053512A (ko) Kvs 트리 데이터베이스
US10831747B2 (en) Multi stage aggregation using digest order after a first stage of aggregation
KR101266358B1 (ko) 다중 길이 시그니처 파일 기반 분산 색인 시스템 및 방법
JP6183376B2 (ja) インデックス生成装置及び方法並びに検索装置及び検索方法
US8682874B2 (en) Information processing system
US20150363404A1 (en) Minimizing index maintenance costs for database storage regions using hybrid zone maps and indices
US20130297788A1 (en) Computer system and data management method
JP6065844B2 (ja) インデックス走査装置及びインデックス走査方法
KR101355273B1 (ko) 컴퓨팅 시스템 및 그 실행 제어 방법과, 그 실행 제어 프로그램을 기록한 기록 매체
JP6135509B2 (ja) 情報システム、その管理方法およびプログラム、データ処理方法およびプログラム、ならびに、データ構造
KR20140048396A (ko) 클라우드 스토리지 서비스의 파일 검색 시스템 및 방법, 및 파일 제어 방법
JP6715420B2 (ja) データ量圧縮方法、装置、プログラム及びicチップ
CN110795397B (zh) 一种地质资料包目录与文件类型自动识别方法
CN110795520B (zh) 一种数字化地质资料包目录与文件关联关系自动识别方法
US9235578B2 (en) Data partitioning apparatus and data partitioning method
Mathew et al. Efficient information retrieval using Lucene, LIndex and HIndex in Hadoop
WO2012081165A1 (ja) データベース管理装置及びデータベース管理方法
JP5151394B2 (ja) 情報管理装置、情報管理方法、及びプログラム
EP3995972A1 (en) Metadata processing method and apparatus, and computer-readable storage medium
US20190057097A1 (en) Information processing device, information processing method, and computer-readable recording medium
KR20200005004A (ko) 기술 도메인의 분석 방법 및 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140725

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150226

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150309

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20150413

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20150420

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150526

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150609

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150818

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150821

R150 Certificate of patent or registration of utility model

Ref document number: 5798503

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees