(57)【要約】【課題】  インデックスの再構築に要する時間を短縮する。【解決手段】  一実施形態に係る情報処理装置は、それぞれ属性情報を有する複数のレコードを一時的に保存する第１のテーブルと、前記属性情報に応じて分割された複数のパーティションを有し、前記第１のテーブルに保存された前記レコードを保存する第２のテーブルと、前記第１のテーブルに保存された前記属性情報に基づいて、前記複数のパーティションの中から対象パーティションを選択する選択部と、選択された前記対象パーティションのインデックスを再構築する構築部と、を備える。【選択図】  図３
2019016303.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ属性情報を有する複数のレコードを一時的に保存する第１のテーブルと、
前記属性情報に応じて分割された複数のパーティションを有し、前記第１のテーブルに保存された前記レコードを保存する第２のテーブルと、
前記第１のテーブルに保存された前記属性情報に基づいて、前記複数のパーティションの中から対象パーティションを選択する選択部と、
選択された前記対象パーティションのインデックスを再構築する構築部と、
を備える情報処理装置。
【請求項２】
前記属性情報は、日付を示す情報であり、
前記選択部は、前記第１のテーブルに保存された前記日付のうち、最新日付から降順に所定日数の前記日付を選択し、選択した前記日付に対応する前記パーティションを、前記対象パーティションとして選択する
請求項１に記載の情報処理装置。
【請求項３】
前記選択部は、前記第１のテーブルに保存された前記属性情報のうち、レコード数が最多の前記属性情報を含む所定数の前記属性情報を選択し、選択した前記属性情報に対応する前記パーティションを、前記対象パーティションとして選択する
請求項１に記載の情報処理装置。
【請求項４】
前記選択部は、前記第１のテーブルに保存された前記属性情報のうち、前記第１のテーブルにおけるレコード数の累積割合が所定値以上となるように前記属性情報を選択し、選択した前記属性情報に対応する前記パーティションを、前記対象パーティションとして選択する
請求項１から請求項３までのいずれか１項に記載の情報処理装置。
【請求項５】
前記選択部は、前記第１のテーブルに保存された前記属性情報のうち、前記第１のテーブルに保存されたレコード数の前記第２のテーブルに保存された前記レコード数に対する割合が所定値以上の前記属性情報を選択し、選択した前記属性情報に対応する前記パーティションを、前記対象パーティションとして選択する
請求項１から請求項４までのいずれか１項に記載の情報処理装置。
【請求項６】
前記選択部は、前記第１のテーブルに保存された前記属性情報のうち、前記第２のテーブルにおける断片化率が所定値以上の前記属性情報を選択し、選択した前記属性情報に対応する前記パーティションを、前記対象パーティションとして選択する
請求項１に記載の情報処理装置。
【請求項７】
前記第２のテーブルは、保存した前記レコードをウェブサーバに提供する
請求項１から請求項６までのいずれか１項に記載の情報処理装置。
【請求項８】
前記レコードは、画像形成装置の利用情報を含む
請求項１から請求項７までのいずれか１項に記載の情報処理装置。
【請求項９】
前記選択部は、前記第１のテーブルに保存された前記レコードが前記第２のテーブルにマージされると、前記対象パーティションを選択する
請求項１から請求項８までのいずれか１項に記載の情報処理装置。
【請求項１０】
それぞれ属性情報を有する複数のレコードを一時的に保存する第１のテーブルと、
前記属性情報に応じて分割された複数のパーティションを有し、前記第１のテーブルに保存された前記レコードを保存する第２のテーブルと、
前記第１のテーブルに保存された前記属性情報に基づいて、前記複数のパーティションの中から対象パーティションを選択する選択部と、
選択された前記対象パーティションのインデックスを再構築する構築部と、
を備える情報処理システム。
【請求項１１】
それぞれ属性情報を有する複数のレコードを第１のテーブルに一時的に保存する工程と、
前記属性情報に応じて分割された複数のパーティションを有する第２のテーブルに、前記第１のテーブルに保存された前記レコードを保存する工程と、
前記第１のテーブルに保存された前記属性情報に基づいて、前記複数のパーティションの中から対象パーティションを選択する工程と、
選択された前記対象パーティションのインデックスを再構築する工程と、
を含む情報処理方法。
【請求項１２】
それぞれ属性情報を有する複数のレコードを第１のテーブルに一時的に保存する工程と、
前記属性情報に応じて分割された複数のパーティションを有する第２のテーブルに、前記第１のテーブルに保存された前記レコードを保存する工程と、
前記第１のテーブルに保存された前記属性情報に基づいて、前記複数のパーティションの中から対象パーティションを選択する工程と、
選択された前記対象パーティションのインデックスを再構築する工程と、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、システム、方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、データベースの検索性能を高めるために、Ｂ−Ｔｒｅｅインデックスや関数インデックスなどのインデックスが利用されている。定期的にインデックスを再構築することにより、データベースにレコードが追加された場合であっても、データベースの検索性能を維持することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかしながら、従来のデータベースでは、インデックスの再構築はテーブルごとに行われていたため、データベースの規模が大きくなるほど、インデックスの再構築に要する時間が長くなる、という問題があった。
【０００４】
本発明は、上記の課題に鑑みてなされたものであり、インデックスの再構築に要する時間を短縮することを目的とする。
【課題を解決するための手段】
【０００５】
一実施形態に係る情報処理装置は、それぞれ属性情報を有する複数のレコードを一時的に保存する第１のテーブルと、前記属性情報に応じて分割された複数のパーティションを有し、前記第１のテーブルに保存された前記レコードを保存する第２のテーブルと、前記第１のテーブルに保存された前記属性情報に基づいて、前記複数のパーティションの中から対象パーティションを選択する選択部と、選択された前記対象パーティションのインデックスを再構築する構築部と、を備える。
【発明の効果】
【０００６】
本発明の各実施形態によれば、インデックスの再構築に要する時間を短縮できる。
【図面の簡単な説明】
【０００７】
【図１】情報処理システムの構成の一例を示す図。
【図２】ＤＢサーバのハードウェア構成の一例を示す図。
【図３】ＤＢサーバの機能構成の一例を示す図。
【図４】データファイルの一例を示す図。
【図５】一時保存テーブルの一例を示す図。
【図６】長期保存テーブルの一例を示す図。
【図７】一時保存テーブルに保存される日付ごとのレコード数及びその割合の一例を示す図。
【図８】ＤＢサーバの処理の一例を示すシーケンス図。
【図９】日付ごとのレコード数及びその割合の一例を示す図。
【図１０】第２の選択方法の一例を示すフローチャート。
【図１１】統計情報テーブルの一例を示す図。
【図１２】日付ごとのレコード数、割合、及び累積割合の一例を示す図。
【図１３】第３の選択方法の一例を示すフローチャート。
【図１４】統計情報テーブルの一例を示す図。
【図１５】日付ごとのレコード数、第１割合、及び第２割合の一例を示す図。
【図１６】第４の選択方法の一例を示すフローチャート。
【図１７】統計情報テーブルの一例を示す図。
【図１８】日付ごとのレコード数、第１割合、第２割合、及び断片化率の一例を示す図。
【図１９】第５の選択方法の一例を示すフローチャート。
【図２０】統計情報テーブルの一例を示す図。
【発明を実施するための形態】
【０００８】
以下、本発明の各実施形態について、添付の図面を参照しながら説明する。なお、各実施形態に係る明細書及び図面の記載に関して、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重畳した説明を省略する。
【０００９】
＜第１実施形態＞
第１実施形態に係る情報処理システム１００について、図１〜図８を参照して説明する。本実施形態に係る情報処理システム１００は、販売管理システムなどの、大量のデータを収集及び管理する任意のシステムに適用可能である。具体的には、本実施形態に係る情報処理システム１００は、使用量のデータを送信可能な複数の通信装置から、使用量のデータを収集する任意のシステムに適用可能である。このような通信装置として、画像形成装置、プロジェクタ、電子黒板、テレビ会議装置、カメラ、産業用機器、医療機器、冷蔵庫、空調機器、照明機器などが挙げられる。以下では、情報処理システム１００が、画像形成装置の利用データを収集してユーザに提供する画像形成システムである場合を例に説明する。
【００１０】
まず、情報処理システム１００の構成について説明する。図１は、本実施形態に係る情報処理システム１００の構成の一例を示す図である。図１の情報処理システム１００は、ＤＢ（データベース）サーバ１と、情報収集端末２ａ，２ｂと、画像形成装置３ａ〜３ｄと、ウェブサーバ４と、ユーザ端末５と、を備える。
【００１１】
ＤＢサーバ１、情報収集端末２ａ，２ｂ、ウェブサーバ４及びユーザ端末５は、ネットワークＮ１を介して接続されている。情報収集端末２ａ及び画像形成装置３ａ，３ｂは、ネットワークＮ２を介して接続されている。情報収集端末２ｂ及び画像形成装置３ｃ，３ｄは、ネットワークＮ３を介して接続されている。ネットワークＮ１〜Ｎ３は、それぞれインターネットであってもよいし、イントラネットであってもよいし、これらの組み合わせであってもよい。
【００１２】
ＤＢサーバ１は、情報処理装置の一例であり、ＤＢを備えるサーバコンピュータである。本実施形態において、情報処理装置は、ＤＢサーバ１と同様の機能を有する任意の装置（例えば、クライアントコンピュータなど）で有り得る。ＤＢサーバ１は、ネットワークＮ１を介して、情報収集端末２ａ，２ｂから画像形成装置３ａ〜３ｄのデータを受信し、受信したデータを管理する。
【００１３】
なお、ＤＢサーバ１は、情報処理システム１００に含まれる少なくとも一部の画像形成装置から、直接的にデータを受信してもよい。また、ＤＢサーバ１と情報収集端末２ａ，２ｂとの間には、ゲートウェイやルータなどの複数の装置が介在してもよい。
【００１４】
情報収集端末２ａは、ネットワークＮ２を介して、画像形成装置３ａ，３ｂからデータを収集し、収集したデータをＤＢサーバ１に送信する。情報収集端末２ａは、例えば、サーバコンピュータであるが、これに限られない。図１の例では、情報収集端末２ａは、２つの画像形成装置３ａ，３ｂからデータを収集しているが、１つ又は３つ以上の画像形成装置からデータを収集してもよい。
【００１５】
情報収集端末２ｂの構成は、情報収集端末２ａと同様であるため、説明を省略する。以下、情報収集端末２ａ，２ｂを区別しない場合、情報収集端末２という。なお、図１の例では、情報処理システム１００は２つの情報収集端末２ａ，２ｂを備えるが、１つ又は３つ以上の情報収集端末２を備えてもよい。
【００１６】
画像形成装置３ａは、ネットワークＮ２を介して、情報収集端末２ａにデータを送信する。画像形成装置３ａは、複合機（ＭＦＰ：Multi-Functional Peripheral）、プリンタ、ファックス、スキャナ又はコピー機であるが、これに限られない。
【００１７】
画像形成装置３ｂ〜３ｄの構成は、画像形成装置３ａと同様であるため、説明を省略する。以下、画像形成装置３ａ〜３ｄを区別しない場合、画像形成装置３という。なお、図１の例では、各情報収集端末２には、２つの画像形成装置３が接続されているが、１つ又は３つ以上の画像形成装置３が接続されてもよい。また、画像形成装置３と情報収集端末２との間には、ゲートウェイやルータなどの複数の装置が介在してもよい。また、各画像形成装置は、同一の種類であってもよいし、異なる種類であってもよい。
【００１８】
ウェブサーバ４は、ユーザ端末５からの要求に応じて、ＤＢサーバ１に保存されたデータを取得し、取得したデータに応じた情報を表示するためのウェブページを生成し、生成したウェブページをユーザ端末５に提供するサーバコンピュータである。
【００１９】
ユーザ端末５は、情報処理システム１００のユーザが利用するクライアントコンピュータである。ユーザ端末５は、例えば、ＰＣ（Personal Computer）、スマートフォン、タブレット端末であるが、これに限られない。ユーザ端末５は、ウェブクライアントを有し、ウェブサーバ４が生成したウェブページを、表示装置に表示する。情報処理システム１００のユーザは、ＤＢサーバ１に保存されたデータに応じた所望の情報（ユーザが使用している画像形成装置３の所定期間ごとの使用状況など）を、ユーザ端末５に表示させることができる。
【００２０】
なお、上述の通り、本実施形態に係る情報処理システム１００は、画像形成システムに限られない。例えば、情報処理システム１００は、複数のユーザ端末からの注文を管理する販売管理システムに適用されてもよいし、複数のセンサからのデータを管理するセンサシステムに適用されてもよい。
【００２１】
次に、ＤＢサーバ１のハードウェア構成について説明する。図２は、ＤＢサーバ１のハードウェア構成の一例を示す図である。図２のＤＢサーバ１は、ＣＰＵ（Central Processing Unit）１０１と、ＲＯＭ１０２と、ＲＡＭ１０３と、ＨＤＤ（Hard Disk Drive）１０４と、入力装置１０５と、表示装置１０６と、通信インタフェース１０７と、システムバス１０８と、を備える。
【００２２】
ＣＰＵ１０１は、プログラムを実行することにより、ＤＢサーバ１の全体を制御し、ＤＢサーバ１の機能を実現させる。ＲＯＭ１０２は、ＣＰＵ１０１が実行するプログラム（ＢＩＯＳ（Basic Input/Output System）など）を含む各種のデータを記憶する。ＲＡＭ１０３は、ＣＰＵ１０１に作業領域を提供する。ＨＤＤ１０４は、ＣＰＵ１０１が実行するプログラム（ＯＳ（Operating System）など）を含む各種のデータを記憶する。ＨＤＤ１０４は、画像形成装置３から収集したデータを保存するためのＤＢを備える。
【００２３】
入力装置１０５は、ユーザからの操作に応じた情報をＤＢサーバ１に入力する。入力装置１０５は、マウス、キーボード、タッチパネル及びハードウェアボタンを含む。表示装置１０６は、ＤＢサーバ１が出力する各種の情報を表示する。表示装置１０６は、液晶ディスプレイ及び有機ＥＬディスプレイを含む。通信インタフェース１０７は、ＤＢサーバ１をネットワークＮ１に接続する。ＤＢサーバ１は、通信インタフェース１０７を介して、画像形成装置３のデータを受信する。システムバス１０８は、ＣＰＵ１０１、ＲＯＭ１０２、ＲＡＭ１０３、ＨＤＤ１０４、入力装置１０５、表示装置１０６、及び通信インタフェース１０７を相互に接続する。
【００２４】
なお、情報収集端末２、ウェブサーバ４、及びユーザ端末５のハードウェア構成は、ＤＢサーバ１と同様であるため説明を省略する。また、画像形成装置３は、図２のハードウェアに、画像形成装置３の機能に応じたハードウェア（プリンタ、ファックス及びスキャナなど）を追加することにより構成される。
【００２５】
次に、本実施形態に係るＤＢサーバ１の機能構成について説明する。図３は、本実施形態に係るＤＢサーバ１の機能構成の一例を示す図である。図３のＤＢサーバ１は、受信部１１と、一時保存テーブル１２（第１のテーブル）と、長期保存テーブル１３（第２のテーブル）と、マージ部１４と、選択部１５と、構築部１６と、を備える。これらの各構成は、ＣＰＵ１０１がプログラムを実行し、他のハードウェアと協働することにより実現される。
【００２６】
受信部１１は、ＤＢサーバ１の外部から、データファイルを受信する。図１の例では、受信部１１は、情報収集端末２から、情報収集端末２が収集した複数の画像形成装置３のデータを含むデータファイルを受信する。受信部１１は、所定の時間間隔でデータファイルを受信してもよいし、所定の時刻にデータファイルを受信してもよいし、情報収集端末２がデータファイルを送信する任意のタイミングでデータファイルを受信してもよい。また、受信部１１は、一度に１つのデータファイルを受信してもよいし、一度に複数のデータファイルを受信してもよい。
【００２７】
受信部１１が受信するデータファイルは、それぞれ属性情報を有する複数のレコードを含むファイルであり、例えば、ＣＳＶ（Comma Separated Values）ファイルであるが、これに限られない。属性情報は、各レコードの属性を示す任意の情報である。各レコードは、それぞれ各画像形成装置３のデータに相当する。
【００２８】
本実施形態では、各画像形成装置３が、１日ごとに、前日までの日付ごとの利用状況を集計し、ＤＢサーバ１に送信する場合を想定している。例えば、ＤＢサーバ１は、３／９に、各画像形成装置３から、３／８までの日付ごとの利用状況に関する情報を受信する。各画像形成装置３のレコードには、日付と、装置情報と、利用情報と、が含まれる。
【００２９】
日付は、属性情報の一例であり、利用状況に対応する日付を示す。レコードには、属性情報として、時刻、週、月などの任意の期間が含まれてもよい。装置情報は、画像形成装置３に関する情報であり、画像形成装置３の識別情報（以下「ＤＩＤ」という。）、ＩＰアドレス、及び装置種別などを含む。利用情報は、画像形成装置３の利用状況に関する情報であり、各種設定、設定ごとの印刷枚数、スキャン枚数、コピー枚数、ファックス枚数などを含む。
【００３０】
図４は、データファイルの一例を示す図である。図４のデータファイルは、ＤＢサーバ１が３／９に受信するデータファイルの一例であり、各レコードには、情報項目として、日付（属性情報）と、ＤＩＤ（装置情報）と、ｄａｔａ１〜ｄａｔａ３（利用情報）と、が含まれる。図４に示すように、このデータファイルには、３／７以前のレコードも含まれている。これは、画像形成装置３が、何らかの原因により、３／７以前のレコードを、３／８までにＤＢサーバ１に送信できない場合が有り得るためである。このような原因として、３／８に画像形成装置３の電源がＯＦＦであった場合や、３／８に画像形成装置３がネットワークＮから切断されていた場合などが挙げられる。
【００３１】
受信部１１は、図４のようなデータファイルを受信すると、受信したデータファイルに含まれる各レコードを、一時保存テーブル１２に保存（ロード）する。なお、データファイルに含まれる情報項目は、図４の例に限られない。また、各レコードには、複数の属性情報が含まれてもよいし、期間以外の属性情報が含まれてもよい。また、データファイルは、ＵＳＢ（Universal Serial Bus）などの記憶媒体からＤＢサーバ１に入力されてもよい。この場合、受信部１１は、入力されたデータファイルを受け付け、受け付けたデータファイルに含まれる各レコードを一時保存テーブル１２に保存すればよい。
【００３２】
一時保存テーブル１２は、受信部１１が受信したデータファイルに含まれる複数のレコードを一時的に保存するテーブルであり、ＨＤＤ１０４上に設けられる。一時保存テーブル１２の保存期間として、数秒から数時間が想定される。一時保存テーブル１２は、各レコードを長期保存テーブル１３に保存するためのバッファの役割を果たす。
【００３３】
図５は、一時保存テーブル１２の一例を示す図である。図５の一時保存テーブル１２は、図４のデータファイルに対応する。図５に示すように、データファイルに含まれるレコードを一時保存テーブル１２にロードすることにより、データの検索性能が向上する。これにより、ＤＢサーバ１は、以降の処理を容易に行うことができる。
【００３４】
長期保存テーブル１３は、受信部１１が受信したデータファイルに含まれる複数のレコードを長期的に保存するテーブルであり、ＨＤＤ１０４上に設けられる。長期保存テーブル１３の保存期間として、数日から数年が想定される。長期保存テーブル１３は、受信部１１が受信したレコードを累積的に保存し、保存しているデータをウェブサーバ４などの外部装置に提供する。長期保存テーブル１３は、外部装置からアクセスされると、外部装置からの要求に応じて、保存しているデータを外部装置に送信する。
【００３５】
長期保存テーブル１３は、属性情報に応じて分割された複数のパーティションを有する。各パーティションは、そこに保存されるデータ範囲を、属性情報に応じて予め割り当てられる。各パーティションには、そのパーティションに割り当てられたデータ範囲に含まれるデータが保存される。また、長期保存テーブル１３は、パーティションごとに、Ｂ−Ｔｒｅｅインデックスや関数インデックスなどのインデックスを構築される。
【００３６】
図６は、長期保存テーブル１３の一例を示す図である。図６の例では、長期保存テーブル１３は、日付ごとのパーティションに分割されている、分割方法はこれに限られない。例えば、長期保存テーブル１３は、複数の日付を含む期間ごとに分割されてもよい。図６の各レコードは、情報項目として、ＰＮｏと、ＩＮｏと、日付（属性情報）と、ＲＩＤと、ＤＩＤ（装置情報）と、ｄａｔａ１〜ｄａｔａ３（利用情報）と、を含む。
【００３７】
ＰＮｏは、パーティションの識別情報である。図６に示すように、各パーティションには、複数のレコードが含まれる。ＩＮｏは、パーティションに対して構築されたインデックスの識別情報である。例えば、図６の例では、３／８に対応するパーティションのＰＮｏは１であり、ＩＮｏは１１である。ＲＩＤは、各レコードの識別情報である。
【００３８】
マージ部１４は、一時保存テーブル１２に保存されたレコードを、長期保存テーブル１３にマージする。具体的には、マージ部１４は、一時保存テーブル１２に保存されたある日付のある画像形成装置３のレコードが、長期保存テーブル１３に保存されていた場合、長期保存テーブル１３に保存されたレコードを、一時保存テーブル１２に保存されたレコードに更新する。また、マージ部１４は、一時保存テーブル１２に保存されたある日付のある画像形成装置３のレコードが、長期保存テーブル１３に保存されていない場合、長期保存テーブル１３に、一時保存テーブル１２に保存されたレコードを追加する。
【００３９】
選択部１５は、一時保存テーブル１２に保存された各レコードの属性情報に基づいて、長期保存テーブル１３に設けられた複数のパーティションの中から、対象パーティションを選択する。対象パーティションは、インデックスを再構築するパーティションである。
【００４０】
一時保存テーブル１２に保存されたレコードを長期保存テーブル１３にマージすると、レコードをマージされたパーティションのインデックスが断片化し、長期保存テーブル１３の検索性能が低下する。レコードをマージするたびに、全てのパーティションのインデックスを再構築すれば、長期保存テーブル１３の検索性能の低下は防げるものの、長期保存テーブル１３に保存されたレコード数が多いほど、インデックスの再構築に要する時間が長くなる。
【００４１】
そこで、本実施形態に係るＤＢサーバ１は、レコードをマージするたびに、インデックスの再構築の必要性が高い（マージされるレコード数が多い）パーティションを対象パーティションとして選択し、対象パーティションのインデックスを選択的に再構築する。これにより、長期保存テーブル１３の検索性能の低下を抑制しつつ、インデックスの再構築に要する時間を短縮する。
【００４２】
本実施形態において、選択部１５は、第１の選択方法により対象パーティションを選択する。具体的には、選択部１５は、一時保存テーブル１２に保存された日付のうち、最新日付から降順に所定日数の日付を選択し、選択した日付に対応するパーティションを、対象パーティションとして選択する。選択部１５は、選択した対象パーティションを、構築部１６に通知する。
【００４３】
ここで、図７は、一時保存テーブル１２に保存される日付ごとのレコード数及びその割合の一例を示す図である。図７の例では、受信日は３／９であり、最新日付は３／８である。図７の例では、所定日数が３日の場合、３／６〜３／８に対応するパーティションが対象パーティションとして選択される。また、所定日数が４日の場合、３／４，３／６〜３／８に対応するパーティションが対象パーティションとして選択される。
【００４４】
図７の例のように、最新日付に近いほど多くのレコードが含まれる場合、第１の選択方法により、インデックスの再構築の必要性が高いパーティションを対象パーティションとして効率的に選択することができる。
【００４５】
なお、所定日数は、予め設定されていてもよいし、選択部１５により学習されてもよい。例えば、選択部１５は、複数のデータファイルに基づいて、選択される日付のレコード数の累積割合が所定値以上となる日数を、所定日数として学習すればよい。
【００４６】
構築部１６は、長期保存テーブル１３の各パーティションのインデックスを構築する。より詳細には、構築部１６は、一時保存テーブル１２に保存されたレコードが長期保存テーブル１３に保存されるたびに、長期保存テーブル１３の対象パーティションのインデックスを再構築する。構築部１６は、各パーティションのインデックスとして、Ｂ−Ｔｒｅｅインデックスや関数インデックスなどの既存の任意のインデックスを構築できる。構築部１６は、構築したインデックスを、長期保存テーブル１３に保存する。
【００４７】
次に、本実施形態に係るＤＢサーバ１の処理について説明する。図８は、本実施形態に係るＤＢサーバ１の処理の一例を示すシーケンス図である。ＤＢサーバ１は、以下の処理を、データファイルを受信するたびに実行する。
【００４８】
まず、受信部１１が、情報収集端末２からデータファイルを受信し（ステップＳ１０１）、受信したデータファイルに含まれる各レコードを、一時保存テーブル１２に保存（ロード）する（ステップＳ１０２）。受信部１１は、一時保存テーブル１２にレコードを保存すると、その旨をマージ部１４に通知する（ステップＳ１０３）。
【００４９】
マージ部１４は、一時保存テーブル１２へのレコードの保存を通知されると、一時保存テーブル１２に各レコードを要求し（ステップＳ１０４）、一時保存テーブル１２から各レコードを取得する（ステップＳ１０５）。そして、マージ部１４は、取得した各レコードを長期保存テーブル１３にマージし（ステップＳ１０６）、その旨を選択部１５に通知する（ステップＳ１０７）。
【００５０】
選択部１５は、長期保存テーブル１３へのレコードのマージを通知されると、一時保存テーブル１２を参照し（ステップＳ１０８）、一時保存テーブル１２に保存された日付のうち、最新日付から降順に所定日数の日付を取得する（ステップＳ１０９）。そして、選択部１５は、取得した日付に対応するパーティションを、対象パーティションとして選択する（ステップＳ１１０）。所定日数が３日の場合、図５の例では、３／６〜３／８に対応するパーティションが対象パーティションとして選択される。選択部１５は、対象パーティションを選択すると、一時保存テーブル１２に保存されたレコードを削除し（ステップＳ１１１）、選択した対象パーティションを構築部１６に通知する（ステップＳ１１２）。
【００５１】
構築部１６は、対象パーティションを通知されると、長期保存テーブル１３の各対象パーティションを参照し（ステップＳ１１３）、構築するインデックスに応じたデータを長期保存テーブル１３から取得する（ステップＳ１１４）。構築部１６は、取得したデータに基づいて、各対象パーティションのインデックスを再構築し（ステップＳ１１５）、再構築したインデックスを長期保存テーブル１３に保存する（ステップＳ１１６）。
【００５２】
以上説明した通り、本実施形態に係るＤＢサーバ１は、対象パーティションのインデックスを選択的に再構築する。したがって、長期保存テーブル１３に保存されたレコード数が多い場合であっても、インデックスの再構築に要する時間を短縮することができる。結果として、インデックスの再構築のためにウェブページを提供できない時間を短縮し、情報処理システム１００の利便性を向上させることができる。
【００５３】
また、本実施形態に係るＤＢサーバ１は、一時保存テーブル１２に保存された日付のうち、最新日付から降順に所定日数の日付に対応するパーティションを、対象パーティションとして選択する。したがって、データファイルに、最新日付に近いほど多くのレコードが含まれる場合、ＤＢサーバ１は、インデックスの再構築の必要性が高いパーティションを対象パーティションとして効率的に選択することができる。結果として、インデックスが断片化を効果的に抑制し、長期保存テーブル１３の検索性能の低下を抑制できる。データファイルに、最新日付に近いほど多くのレコードが含まれる情報処理システム１００として、各画像形成装置３が、１日ごとに、前日までの日付ごとの利用状況を集計し、ＤＢサーバ１に送信する画像形成システムが挙げられる。
【００５４】
また、本実施形態によれば、選択部１５は、一時保存テーブル１２に保存されたレコードに基づいて、対象パーティションを選択するため、データファイルに含まれるレコードに基づいて対象パーティションを選択する場合に比べて、処理を高速化できる。
【００５５】
＜第２実施形態＞
第２実施形態に係る情報処理システム１００について、図９〜図１１を参照して説明する。本実施形態では、対象パーティションの第２の選択方法について説明する。なお、情報処理システム１００及びＤＢサーバ１の構成は、第１実施形態と同様である。
【００５６】
ＤＢサーバ１が受信するデータファイルには、情報収集端末２や画像形成装置３におけるシステム日時の誤設定などが原因で、未来日付のレコード（不正なレコード）が含まれることが有り得る。ＤＢサーバ１が未来日付のレコードを受信した場合、第１の選択方法では、未来日付が最新日付として選択され、未来日付から降順に所定日数の日付に対応するパーティションが対象パーティションとして選択されることになる。
【００５７】
ここで、図９は、日付ごとのレコード数及びその割合の一例を示す図である。図９の例では、受信日は３／９であり、最新日付は４／１５（未来日付）であり、正しいレコードの最新日付は３／８である。ＤＢサーバ１が、図９のようなレコードを受信し、かつ、所定日数が３日である場合、第１の選択方法では、３／７，３／８，４／１５に対応するパーティションが対象パーティションとして選択される。図９の例では、４／１５のレコードは１つしか存在しないため、第１の選択方法では、インデックスの再構築の必要性が高い（マージされるレコード数が多い）パーティションを効率的に対象パーティションとして選択することができない。
【００５８】
そこで、本実施形態において、選択部１５は、第２の選択方法により対象パーティションを選択する。具体的には、選択部１５は、一時保存テーブル１２に保存されたレコード数を日付毎に集計し、一時保存テーブル１２に保存された日付のうち、レコード数が最多の日付から、日付の降順に所定日数の日付を選択する。そして、選択部１５は、選択した日付に対応するパーティションを、対象パーティションとして選択する。第２の選択方法は、第１の選択方法において、最新日付の代わりにレコード数が最多の日付を利用する選択方法に相当する。
【００５９】
なお、所定日数は、予め設定されていてもよいし、選択部１５により学習されてもよい。例えば、選択部１５は、複数のデータファイルに基づいて、選択される日付のレコード数の累積割合が所定値以上となる日数を、所定日数として学習すればよい。
【００６０】
図１０は、第２の選択方法の一例を示すフローチャートである。本実施形態において、選択部１５は、図８のステップＳ１０８〜Ｓ１１０の代わりに、図１０の処理を実行する。以下では、所定日数が３日である場合を例に説明する。
【００６１】
選択部１５は、長期保存テーブル１３へのレコードのマージを通知されると（ステップＳ１０７）、一時保存テーブル１２を参照して、統計情報テーブルを生成する（ステップＳ２０１）。
【００６２】
図１１は、統計情報テーブルの一例を示す図である。統計情報テーブルは、一時保存テーブル１２に保存されたレコードの日付ごとの統計情報を示すテーブルである。図１１の例では、統計情報はレコード数であり、統計情報テーブルは、選択フラグを有する。すなわち、図１１の統計情報テーブルは、日付ごとのレコードを有し、各レコードは、情報項目として、日付、レコード数、及び選択フラグを含む。
【００６３】
選択部１５は、一時保存テーブル１２を参照して、一時保存テーブル１２に保存された日付を取得し、取得した日付のレコードを生成し、レコードを日付の降順にソートする。そして、選択部１５は、一時保存テーブル１２を参照して、各日付のレコード数を数え、得られた値を各日付のレコード数として入力する。これにより、選択部１５は、図１１のような統計情報テーブルを生成できる。なお、統計情報テーブルの生成時点では、全ての選択フラグは０である。
【００６４】
次に、選択部１５は、統計情報テーブルを参照して、レコード数が最多の日付を取得し、当該日付の選択フラグを１にする（ステップＳ２０２）。これにより、図１１の例では、３／８の選択フラグが１になる。
【００６５】
続いて、選択部１５は、統計情報テーブルを参照して、選択フラグが１の日数が所定日数以上であるか判定する（ステップＳ２０３）。選択フラグが１の日数が所定日数未満である場合（ステップＳ２０３のＮＯ）、処理はステップＳ２０４に進み、選択フラグが１の日数が所定日数以上である場合（ステップＳ２０３のＹＥＳ）、処理はステップＳ２０５に進む。ここでは、選択フラグが１の日数（１日）は所定日数（３日）未満であるため、処理はステップＳ２０４に進む。
【００６６】
ステップＳ２０４において、選択部１５は、統計情報テーブルを参照して、直前に選択フラグを１にした日付の次の日付の選択フラグを１にする。これにより、図１１の例では、３／７の選択フラグが１になる。その後、処理はステップＳ２０３に戻る。
【００６７】
以降、選択部１５は、選択フラグが１の日数が所定日数以上となるまでステップＳ２０３，Ｓ２０４を繰り返す。以上の処理により、３／８，３／７，３／６の選択フラグが順次１になる。
【００６８】
３／６の選択フラグが１になると、選択フラグが１の日数（３日）が所定日数（３日）以上となるため（ステップＳ２０３のＹＥＳ）、処理はステップＳ２０５に進む。
【００６９】
ステップＳ２０５において、選択部１５は、統計情報テーブルを参照して、選択フラグが１の日付に対応するパーティションを、対象パーティションとして選択する。これにより、３／６〜３／８に対応するパーティションが対象パーティションとして選択される。
【００７０】
以上説明した通り、第２の選択方法によれば、一時保存テーブル１２に保存された日付のうち、レコード数が最多の日付から、日付の降順に所定日数の日付に対応するパーティションを、対象パーティションとして選択することができる。未来日付のレコードは、図９の例のように少数である可能性が高いため、データファイルに、正しいレコードの最新日付に近いほど多くのレコードが含まれる場合、レコード数が最多の日付は、正しいレコードの最新日付となる。
【００７１】
したがって、選択部１５は、データファイルに、正しいレコードの最新日付に近いほど多くのレコードが含まれる場合、一時保存テーブル１２に保存された日付のうち、正しいレコードの最新日付から、日付の降順に所定日数の日付に対応するパーティションを、対象パーティションとして選択することができる。したがって、ＤＢサーバ１は、未来日付のレコードを含むデータファイルを受信した場合であっても、インデックスの再構築の必要性が高いパーティションを対象パーティションとして効率的に選択することができる。結果として、インデックスが断片化を効果的に抑制し、長期保存テーブル１３の検索性能の低下を抑制できる。
【００７２】
なお、本実施形態において、選択部１５は、一時保存テーブル１２に保存された日付のうち、レコード数が最多の日付から、レコード数の降順に所定日数の日付を選択してもよい。当該選択方法は、属性情報が日付ではない場合にも適用可能である。
【００７３】
＜第３実施形態＞
第３実施形態に係る情報処理システム１００について、図１２〜図１４を参照して説明する。本実施形態では、対象パーティションの第３の選択方法について説明する。なお、情報処理システム１００及びＤＢサーバ１の構成は、第１実施形態と同様である。
【００７４】
ＤＢサーバ１が受信するデータファイルには、最新日付から所定日数以上前の日付のレコードが多く含まれることが有り得る。ＤＢサーバ１がこのようなレコードを受信した場合、第１の選択方法では、選択部１５は、最新日付から所定日数以上前の日付に対応するパーティションを対象パーティションとして選択することができない。
【００７５】
ここで、図１２は、日付ごとのレコード数、割合、及び累積割合の一例を示す図である。図１２の例では、受信日は３／９であり、最新日付は３／８である。ＤＢサーバ１が、図１２のようなレコードを受信し、かつ、所定日数が３日である場合、第１の選択方法では、レコード数が多い３／５に対応するパーティションは、対象パーティションとして選択されない。結果として、第１の選択方法では、インデックスの再構築の必要性が高い（マージされるレコード数が多い）パーティションを対象パーティションとして選択することができない。
【００７６】
そこで、本実施形態において、選択部１５は、第３の選択方法により対象パーティションを選択する。具体的には、選択部１５は、一時保存テーブル１２に保存されたレコード数を日付毎に集計し、一時保存テーブル１２に保存された日付のうち、所定の日付から、日付の降順に、一時保存テーブル１２におけるレコード数の累積割合が所定値以上となるように日付を選択する。そして、選択部１５は、選択した日付に対応するパーティションを、対象パーティションとして選択する。所定の日付は、最新日付であってもよいし、レコード数が最多の日付であってもよい。所定値は、予め設定された累積割合の閾値であり、任意に設定可能である。
【００７７】
例えば、図１２の例では、所定値が９０％である場合、３／６〜３／８に対応するパーティションが対象パーティションとして選択され、所定値が９５％である場合、３／５〜３／８に対応するパーティションが対象パーティションとして選択される。
【００７８】
図１３は、第３の選択方法の一例を示すフローチャートである。本実施形態において、選択部１５は、図８のステップＳ１０８〜Ｓ１１０の代わりに、図１３の処理を実行する。以下では、所定の日付が最新日付であり、所定値が９５％である場合を例に説明する。
【００７９】
選択部１５は、長期保存テーブル１３へのレコードのマージを通知されると（ステップＳ１０７）、一時保存テーブル１２を参照して、統計情報テーブルを生成する（ステップＳ３０１）。
【００８０】
図１４は、統計情報テーブルの一例を示す図である。統計情報テーブルは、一時保存テーブル１２に保存されたレコードの日付ごとの統計情報を示すテーブルである。図１４の例では、統計情報はレコード数及びその割合であり、統計情報テーブルは、累積フラグを有する。すなわち、図１４の統計情報テーブルは、日付ごとのレコードを有し、各レコードは、情報項目として、日付、レコード数、割合、及び累積フラグを含む。
【００８１】
選択部１５は、一時保存テーブル１２を参照して、一時保存テーブル１２に保存された日付を取得し、取得した日付のレコードを生成し、レコードを日付の降順にソートする。そして、選択部１５は、一時保存テーブル１２を参照して、各日付のレコード数を数え、得られた値を各日付のレコード数として入力する。さらに、選択部１５は、各日付のレコード数の割合を算出し、算出した値を各日付の割合として入力する。これにより、選択部１５は、図１４のような統計情報テーブルを生成できる。なお、統計情報テーブルの生成時点では、全ての累積フラグは０である。
【００８２】
次に、選択部１５は、統計情報テーブルを参照して、最新日付を取得し、当該最新日付の累積フラグを１にする（ステップＳ３０２）。これにより、図１４の例では、３／８の累積フラグが１になる。
【００８３】
続いて、選択部１５は、統計情報テーブルを参照して、累積フラグが１の日付の累積割合を算出し、算出した累積割合が所定値以上であるか判定する（ステップＳ３０３）。累積割合が所定値未満である場合（ステップＳ３０３のＮＯ）、処理はステップＳ３０４に進み、累積割合が所定値以上である場合（ステップＳ３０３のＹＥＳ）、処理はステップＳ３０５に進む。ここでは、累積フラグが１の日付（３／８）の累積割合（８０％）は所定値（９５％）未満であるため、処理はステップＳ３０４に進む。
【００８４】
ステップＳ３０４において、選択部１５は、統計情報テーブルを参照して、直前に累積フラグを１にした日付の次の日付の累積フラグを１にする。これにより、図１４の例では、３／７の累積フラグが１になる。その後、処理はステップＳ３０３に戻る。
【００８５】
以降、選択部１５は、累積フラグが１の日付の累積割合が所定値以上となるまでステップＳ３０３，Ｓ３０４を繰り返す。これにより、３／７，３／６，３／５の累積フラグが順次１になる。
【００８６】
３／５の累積フラグが１になると、累積フラグが１の日付（３／５〜３／８）の累積割合（９５％）が所定値（９５％）以上となるため（ステップＳ３０３のＹＥＳ）、処理はステップＳ３０５に進む。
【００８７】
ステップＳ３０５において、選択部１５は、統計情報テーブルを参照して、累積フラグが１の日付に対応するパーティションを、対象パーティションとして選択する。これにより、３／５〜３／８に対応するパーティションが対象パーティションとして選択される。
【００８８】
以上説明した通り、第３の選択方法によれば、選択部１５は、レコード数の累積割合が所定値以上となるように、対象パーティションを選択することができる。したがって、ＤＢサーバ１は、最新日付から所定日数以上前の日付のレコードを多く含むデータファイルを受信した場合であっても、インデックスの再構築の必要性が高いパーティションを対象パーティションとして選択することができる。
【００８９】
なお、本実施形態において、選択部１５は、一時保存テーブル１２に保存された日付のうち、レコード数が最多の日付（所定の日付）から、レコード数の降順に、一時保存テーブル１２におけるレコード数の累積割合が所定値以上となるように日付を選択してもよい。当該選択方法は、属性情報が日付ではない場合にも適用可能である。
【００９０】
＜第４実施形態＞
第４実施形態に係る情報処理システム１００について、図１５〜図１７を参照して説明する。本実施形態では、対象パーティションの第４の選択方法について説明する。なお、情報処理システム１００及びＤＢサーバ１の構成は、第１実施形態と同様である。
【００９１】
ＤＢサーバ１が受信するデータファイルに含まれるレコード数は、受信日によって大幅に異なることが有り得る。このため、一時保存テーブル１２に保存されたある日付のレコード数が、一時保存テーブル１２における割合は大きいにもかかわらず、長期保存テーブル１３に保存されたレコード数に対する割合が小さいということが生じ得る。このような場合、当該日付に対応するパーティションは、インデックスを再構築する必要性が小さいにもかかわらず、第１から第３までの選択方法では、対象パーティションとして選択されるおそれがある。
【００９２】
ここで、図１５は、日付ごとのレコード数、第１割合、及び第２割合の一例を示す図である。図１５の例では、受信日は３／９であり、最新日付は３／８である。第１割合は、一時保存テーブル１２におけるレコード数の割合であり、第３実施形態における割合に相当する。第２割合は、一時保存テーブル１２に保存されたレコード数の長期保存テーブル１３に保存されたレコード数に対する割合である。図１５に示すように、最新日付である３／８のレコードは、長期保存テーブル１３に保存されていないため、第２割合は空値である。
【００９３】
図１５の例では、３／６のレコード数は、第１割合が５％と大きいものの、第２割合が０．１％と小さい。これは、長期保存テーブル１３の３／６に対応するパーティションに、５０，０００，０００レコードが既に保存されていることを意味する。このような場合、３／６のレコードを長期保存テーブル１３にマージしても、インデックスの断片化は相対的に小さくなるため、インデックスの再構築の必要性は小さい。しかしながら、３／６は最新日付に近く、また、そのレコード数の第１割合が大きいため、第１から第３までの選択方法では、３／６に対応するパーティションが対象パーティションとして選択される可能性が高い。このように、第１から第３までの選択方法では、インデックスの再構築の必要性が低い（マージされるレコード数の第２割合が小さい）パーティションが対象パーティションとして選択されることを防ぐことが困難である。言い換えると、第１から第３までの選択方法では、インデックスの再構築の必要性が高い（マージされるレコード数の第２割合が大きい）パーティションを対象パーティションとして効率的に選択することができない。
【００９４】
そこで、本実施形態において、選択部１５は、第４の選択方法により対象パーティションを選択する。具体的には、選択部１５は、一時保存テーブル１２に保存されたレコード数を日付毎に集計し、一時保存テーブル１２に保存された日付のうち、第２割合が所定値以上の日付を選択する。そして、選択部１５は、選択した日付に対応するパーティションを、対象パーティションとして選択する。所定値は、予め設定された第２割合の閾値であり、任意に設定可能である。
【００９５】
例えば、図１５の例では、所定値が１％である場合、３／７，３／８に対応するパーティションが対象パーティションとして選択される。３／８に対応するパーティションが選択されるのは、第２割合の空値は、第２割合が無限大であることに相当し、所定値以上とみなされるためである。
【００９６】
図１６は、第４の選択方法の一例を示すフローチャートである。本実施形態において、選択部１５は、図８のステップＳ１０８〜Ｓ１１０の代わりに、図１６の処理を実行する。以下では、所定値が１％である場合を例に説明する。
【００９７】
選択部１５は、長期保存テーブル１３へのレコードのマージを通知されると（ステップＳ１０７）、一時保存テーブル１２を参照して、統計情報テーブルを生成する（ステップＳ４０１）。
【００９８】
図１７は、統計情報テーブルの一例を示す図である。統計情報テーブルは、一時保存テーブル１２に保存されたレコードの日付ごとの統計情報を示すテーブルである。図１７の例では、統計情報はレコード数であり、統計情報テーブルは、割合フラグを有する。すなわち、図１７の統計情報テーブルは、日付ごとのレコードを有し、各レコードは、情報項目として、日付、レコード数、第２割合、及び割合フラグを含む。
【００９９】
選択部１５は、一時保存テーブル１２を参照して、一時保存テーブル１２に保存された日付を取得し、取得した日付のレコードを生成し、レコードを日付の降順にソートする。そして、選択部１５は、一時保存テーブル１２を参照して、各日付のレコード数を数え、得られた値を各日付のレコード数として入力する。これにより、選択部１５は、図１７のような統計情報テーブルを生成できる。なお、統計情報テーブルの生成時点では、全ての割合フラグは０であり、全ての第２割合は空値である。
【０１００】
次に、選択部１５は、統計情報テーブルを参照して、以降の処理対象となる対象日付を選択する（ステップＳ４０２）。ここでは、選択部１５は、最新日付から日付の降順に対象日付を選択するものとする。
【０１０１】
続いて、選択部１５は、統計情報テーブル及び長期保存テーブル１３を参照して、対象日付の第２割合を算出し（ステップＳ４０３）、得られた値を対象日付の第２割合として入力する。統計情報テーブルに保存された対象日付のレコード数がＸ、長期保存テーブル１３に保存された対象日付のレコード数がＹである場合、対象日付の第２割合はＸ／Ｙとなる。
【０１０２】
選択部１５は、対象日付の第２割合を算出すると、当該第２割合が所定値以上であるか判定する（ステップＳ４０４）。第２割合が所定値未満である場合（ステップＳ４０４のＮＯ）、処理はステップＳ４０６に進む。一方、選択部１５は、第２割合が所定値以上である場合（ステップＳ４０４のＹＥＳ）、統計情報テーブルにおける対象日付の割合フラグを１にする（ステップＳ４０５）。その後、処理はステップＳ４０６に進む。ここでは、対象日付（３／８）の第２割合が空値であるため、対象日付の割合フラグが１にされる。
【０１０３】
ステップＳ４０６において、選択部１５は、統計情報テーブルに、対象日付として未選択の日付があるか判定する。未選択の日付がある場合（ステップＳ４０６のＹＥＳ）、処理はステップＳ４０２に戻り、選択部１５は、次の対象日付を選択する。以降、選択部１５は、未選択の日付がなくなるまでステップＳ４０２〜Ｓ４０６の処理を繰り返す。これにより、３／７の割合フラグが１になる。
【０１０４】
その後、未選択の日付がなくなると（ステップＳ４０６のＮＯ）、選択部１５は、統計情報テーブルを参照して、割合フラグが１の日付に対応するパーティションを、対象パーティションとして選択する（ステップＳ４０７）。これにより、３／７，３／８に対応するパーティションが対象パーティションとして選択される。
【０１０５】
以上説明した通り、第４の選択方法によれば、選択部１５は、第２割合が所定値以上の日付に対応するパーティションを、対象パーティションとして選択することができる。したがって、ＤＢサーバ１は、受信日によって受信するレコード数が大幅に異なる場合であっても、インデックスの再構築の必要性が高い（第２割合が大きい）パーティションを対象パーティションとして選択することができる。
【０１０６】
なお、第４の選択方法は、属性情報が日付でない場合にも適用可能である。また、第４の選択方法は、第１から第３の選択方法と併用可能である。このような方法として、例えば、第１から第３の選択方法により日付を選択した上で、選択された日付の中から、第４の選択方法により、第２割合が所定値以上の日付を選択する方法が考えられる。これにより、選択部１５は、統計情報テーブルに保存された全ての日付を対象日付として選択する必要がなくなるため、対象パーティションの選択によるする時間を短縮できる。
【０１０７】
＜第５実施形態＞
第５実施形態に係る情報処理システム１００について、図１８〜図２０を参照して説明する。本実施形態では、対象パーティションの第５の選択方法について説明する。なお、情報処理システム１００及びＤＢサーバ１の構成は、第１実施形態と同様である。
【０１０８】
第１から第４の選択方法では、データファイルに含まれるレコード数が少ない日付や第２割合が小さい日付に対応する長期保存テーブル１３のパーティションは、レコードをマージされてもインデックスを再構築されない。当該パーティションは、マージされるレコード数の観点では、インデックスを再構築する必要性は低いものの、レコードを繰り返しマージされた結果、インデックスの断片化率が高まり、インデックスの再構築の必要性が高まる場合がある。第１から第４の選択方法では、マージされるレコード数に基づいて対象パーティションが選択されるため、レコードを繰り返しマージされた結果、インデックスの断片化率が高まったパーティションを、対象パーティションとして選択することができない。
【０１０９】
ここで、図１８は、日付ごとのレコード数、第１割合、第２割合、及び断片化率の一例を示す図である。図１５の例では、受信日は３／９であり、最新日付は３／８である。断片化率は、長期保存テーブル１３における、その日付に対応するパーティションのインデックスの断片化率である。
【０１１０】
図１８の例では、３／１は、最新日付から離れており、レコード数が少なく、第１割合及び第２割合も小さい。このため、３／１に対応するパーティションは、断片化率は５％と高いにもかかわらず、第１から第４の選択方法では対象パーティションとして選択されない可能性がある。すなわち、第１から第４の選択方法では、レコードのマージを繰り返した結果としてインデックスの再構築の必要性が高まった（断片化率が高まった）パーティションを対象パーティションとして選択することができない。
【０１１１】
そこで、本実施形態において、選択部１５は、第５の選択方法により対象パーティションを選択する。具体的には、選択部１５は、一時保存テーブル１２に保存された日付のうち、断片化率が所定値以上の日付を選択する。そして、選択部１５は、選択した日付に対応するパーティションを、対象パーティションとして選択する。所定値は、予め設定された第２割合の閾値であり、任意に設定可能である。
【０１１２】
例えば、図１８の例では、所定値が５％である場合、３／１に対応するパーティションが対象パーティションとして選択される。
【０１１３】
図１９は、第５の選択方法の一例を示すフローチャートである。本実施形態において、選択部１５は、図８のステップＳ１０８〜Ｓ１１０の代わりに、図１９の処理を実行する。以下では、所定値が５％である場合を例に説明する。
【０１１４】
選択部１５は、長期保存テーブル１３へのレコードのマージを通知されると（ステップＳ１０７）、一時保存テーブル１２を参照して、統計情報テーブルを生成する（ステップＳ５０１）。
【０１１５】
図２０は、統計情報テーブルの一例を示す図である。統計情報テーブルは、一時保存テーブル１２に保存されたレコードの日付ごとの統計情報を示すテーブルである。図２０の例では、統計情報は断片化率であり、統計情報テーブルは、断片化フラグを有する。すなわち、図２０の統計情報テーブルは、日付ごとのレコードを有し、各レコードは、情報項目として、日付、断片化率、及び断片化フラグを含む。
【０１１６】
選択部１５は、一時保存テーブル１２を参照して、一時保存テーブル１２に保存された日付を取得し、取得した日付のレコードを生成し、レコードを日付の降順にソートする。これにより、選択部１５は、図２０のような統計情報テーブルを生成できる。なお、統計情報テーブルの生成時点では、全ての断片化フラグは０であり、全ての断片化率は空値である。
【０１１７】
次に、選択部１５は、統計情報テーブルを参照して、以降の処理対象となる対象日付を選択する（ステップＳ５０２）。ここでは、選択部１５は、最新日付から日付の降順に対象日付を選択するものとする。
【０１１８】
続いて、選択部１５は、長期保存テーブル１３を参照して、対象日付の断片化率を算出し（ステップＳ５０３）、得られた値を対象日付の断片化率として入力する。
【０１１９】
選択部１５は、対象日付の断片化率を算出すると、当該断片化率が所定値以上であるか判定する（ステップＳ５０４）。断片化率が所定値未満である場合（ステップＳ５０４のＮＯ）、処理はステップＳ５０６に進む。一方、選択部１５は、断片化率が所定値以上である場合（ステップＳ５０４のＹＥＳ）、統計情報テーブルにおける対象日付の断片化フラグを１にする（ステップＳ５０５）。その後、処理はステップＳ５０６に進む。ここでは、対象日付（３／８）の断片化率が０％であるため、対象日付の断片化フラグが０のままである。
【０１２０】
ステップＳ５０６において、選択部１５は、統計情報テーブルに、対象日付として未選択の日付があるか判定する。未選択の日付がある場合（ステップＳ５０６のＹＥＳ）、処理はステップＳ５０２に戻り、選択部１５は、次の対象日付を選択する。以降、選択部１５は、未選択の日付がなくなるまでステップＳ５０２〜Ｓ５０６の処理を繰り返す。これにより、３／４の断片化フラグが１になる。
【０１２１】
その後、未選択の日付がなくなると（ステップＳ５０６のＮＯ）、選択部１５は、統計情報テーブルを参照して、断片化フラグが１の日付に対応するパーティションを、対象パーティションとして選択する（ステップＳ５０７）。これにより、３／４に対応するパーティションが対象パーティションとして選択される。
【０１２２】
以上説明した通り、第５の選択方法によれば、選択部１５は、断片化率が所定値以上の日付に対応するパーティションを、対象パーティションとして選択することができる。したがって、ＤＢサーバ１は、レコードのマージを繰り返した結果としてインデックスの再構築の必要性が高まった（断片化率が高まった）パーティションを対象パーティションとして選択することができる。
【０１２３】
なお、第５の選択方法は、属性情報が日付でない場合にも適用可能である。また、第５の選択方法は、第１から第４の選択方法と併用可能である。このような方法として、例えば、第１から第４の選択方法により日付を選択した上で、選択された日付の中から、第５の選択方法により、断片化率が所定値以上の日付を選択する方法が考えられる。これにより、選択部１５は、統計情報テーブルに保存された全ての日付を対象日付として選択する必要がなくなるため、対象パーティションの選択によるする時間を短縮できる。
【０１２４】
なお、以上の各実施形態では、受信部１１、一時保存テーブル１２、長期保存テーブル１３、マージ部１４、選択部１５、及び構築部１６の機能が、１つのＤＢサーバ１により実現される場合を例に説明した。しかしながら、これらの各機能構成は、互いに接続された複数のコンピュータにより構成されたシステムにより実現されてもよい。
【０１２５】
また、上記実施形態に挙げた構成等に、その他の要素との組み合わせなど、ここで示した構成に本発明が限定されるものではない。これらの点に関しては、本発明の趣旨を逸脱しない範囲で変更可能であり、その応用形態に応じて適切に定めることができる。
【符号の説明】
【０１２６】
１：ＤＢサーバ
２：情報収集端末
３：画像形成装置
４：ウェブサーバ
５：ユーザ端末
１１：受信部
１２：一時保存テーブル
１３：長期保存テーブル
１４：マージ部
１５：選択部
１６：構築部
【先行技術文献】
【特許文献】
【０１２７】
【特許文献１】特開２０１３−２１８４３１号公報
【図１】
2019016303.tif 000003
【図２】
2019016303.tif 000004
【図３】
2019016303.tif 000005
【図４】
2019016303.tif 000006
【図５】
2019016303.tif 000007
【図６】
2019016303.tif 000008
【図７】
2019016303.tif 000009
【図８】
2019016303.tif 000010
【図９】
2019016303.tif 000011
【図１０】
2019016303.tif 000012
【図１１】
2019016303.tif 000013
【図１２】
2019016303.tif 000014
【図１３】
2019016303.tif 000015
【図１４】
2019016303.tif 000016
【図１５】
2019016303.tif 000017
【図１６】
2019016303.tif 000018
【図１７】
2019016303.tif 000019
【図１８】
2019016303.tif 000020
【図１９】
2019016303.tif 000021
【図２０】
2019016303.tif 000022