(57)【特許請求の範囲】
【請求項１】
検索要求を端末から受信する受信部と、
データベースのインデックスが有効に設定されていれば、前記受信された検索要求に基づき、前記インデックスを参照して前記データベースを検索する検索部と、
前記インデックスが有効に設定されていれば、前記検索部による検索の結果を前記端末へ送信し、前記インデックスが無効に設定されていれば、前記検索部による検索が行われなかった旨の通知を前記端末へ送信する送信部と、
前記データベースに追加すべき複数のレコードを複数のグループに分割し、前記複数のグループのすべてについて、
（ａ）前記インデックスを無効に設定し、
（ｂ）前記グループに含まれるレコードを前記データベースに追加し、
（ｃ）前記インデックスを再作成して有効に設定する、
処理を実行する追加部と、
を備え、
前記追加部は、前記インデックスが無効に設定されている間に前記検索要求が受信される回数を推定し、前記推定した数が少なくなるように、前記グループの数を決定する、
ことを特徴とする情報処理装置。
【請求項２】
前記追加部は、前記複数のグループのそれぞれについて、前記推定した数が少なくなるように、前記グループに含まれるレコードを前記データベースに追加する処理の開始時刻を決定する、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記追加部は、前記推定した数と前記決定したグループの数とに基づいて、前記グループに含まれるレコードを前記データベースに追加する処理の時間間隔を決定する、
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記送信部は、前記検索部による検索が行われなかった旨、及び、前記インデックスが有効に設定される予定時刻を示す情報、を含む前記通知を前記端末へ送信する、
ことを特徴とする請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
前記追加部は、前記情報処理装置にログインしているユーザの数に基づいて、前記検索要求が受信される回数を推定する、
ことを特徴とする請求項１から４のいずれか１項に記載の情報処理装置。
【請求項６】
前記追加部は、過去の所定期間内に受信された検索要求の数に基づいて、前記検索要求が受信される回数を推定する、
ことを特徴とする請求項１から４のいずれか１項に記載の情報処理装置。
【請求項７】
前記追加部は、前記インデックスが無効に設定されている間に前記検索要求が受信される回数が最少となるグループの数を決定し、前記決定したグループの数に基づいて、前記複数のレコードを複数のグループに分割する、
ことを特徴とする請求項１から６のいずれか１項に記載の情報処理装置。
【請求項８】
前記追加部は、前記複数のグループのうちの第１のグループに含まれるレコードを前記データベースに追加した後、前記複数のグループのうちの前記第１のグループとは異なる第２のグループに含まれるレコードを前記データベースに追加する処理の開始時刻を決定する、
ことを特徴とする請求項１から７のいずれか１項に記載の情報処理装置。
【請求項９】
前記追加部は、前記第１のグループに含まれるレコードを前記データベースに追加した後、前記検索要求の数を推定して前記グループの数を再計算し、前記データベースに追加すべき複数のレコードのうち未だ追加されていないレコードを前記再計算したグループの数に分割する、
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
情報処理装置が、検索要求を端末から受信する受信ステップと、
前記情報処理装置が、データベースのインデックスが有効に設定されていれば、前記受信された検索要求に基づき、前記インデックスを参照して前記データベースを検索する検索ステップと、
前記情報処理装置が、前記インデックスが有効に設定されていれば、前記検索ステップでの検索の結果を前記端末へ送信し、前記インデックスが無効に設定されていれば、前記検索ステップで検索が行われなかった旨の通知を前記端末へ送信する送信ステップと、
前記情報処理装置が、前記データベースに追加すべき複数のレコードを複数のグループに分割し、前記複数のグループのすべてについて、
（ａ）前記インデックスを無効に設定し、
（ｂ）前記グループに含まれるレコードを前記データベースに追加し、
（ｃ）前記インデックスを再作成して有効に設定する、
処理を実行する追加ステップと、
を備え、
前記追加ステップでは、前記インデックスが無効に設定されている間に前記検索要求が受信される回数を推定し、前記推定した数が少なくなるように、前記グループの数を決定する、
ことを特徴とする情報処理方法。
【請求項１１】
コンピュータを、
検索要求を端末から受信する受信部、
データベースのインデックスが有効に設定されていれば、前記受信された検索要求に基づき、前記インデックスを参照して前記データベースを検索する検索部、
前記インデックスが有効に設定されていれば、前記検索部による検索の結果を前記端末へ送信し、前記インデックスが無効に設定されていれば、前記検索部による検索が行われなかった旨の通知を前記端末へ送信する送信部、
前記データベースに追加すべき複数のレコードを複数のグループに分割し、前記複数のグループのすべてについて、
（ａ）前記インデックスを無効に設定し、
（ｂ）前記グループに含まれるレコードを前記データベースに追加し、
（ｃ）前記インデックスを再作成して有効に設定する、
処理を実行する追加部、
として機能させ、
前記追加部は、前記インデックスが無効に設定されている間に前記検索要求が受信される回数を推定し、前記推定した数が少なくなるように、前記グループの数を決定する、
ように機能させるプログラムを記憶したコンピュータ読み取り可能な非一時的な記録媒体。
【請求項１２】
コンピュータを、
検索要求を端末から受信する受信部、
データベースのインデックスが有効に設定されていれば、前記受信された検索要求に基づき、前記インデックスを参照して前記データベースを検索する検索部、
前記インデックスが有効に設定されていれば、前記検索部による検索の結果を前記端末へ送信し、前記インデックスが無効に設定されていれば、前記検索部による検索が行われなかった旨の通知を前記端末へ送信する送信部、
前記データベースに追加すべき複数のレコードを複数のグループに分割し、前記複数のグループのすべてについて、
（ａ）前記インデックスを無効に設定し、
（ｂ）前記グループに含まれるレコードを前記データベースに追加し、
（ｃ）前記インデックスを再作成して有効に設定する、
処理を実行する追加部、
として機能させ、
前記追加部は、前記インデックスが無効に設定されている間に前記検索要求が受信される回数を推定し、前記推定した数が少なくなるように、前記グループの数を決定する、
ように機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検索にできるだけ支障が生じないように効率よくデータベースにレコードを追加することができる情報処理装置、情報処理方法、記録媒体、ならびに、プログラムに関する。
【背景技術】
【０００２】
データベースにおける検索を高速化するために、一般にインデックスが用いられる。インデックスは、テーブル内の一つ以上のフィールドをキー列として予めレコードをソートし保存したものである。典型的なインデックスの構造に、例えばB-TREEがある。【０００３】
インデックスを用いずに検索すると、テーブルをフルスキャンすることになり、処理速度が遅くなってデータベースに過大な負荷がかかるおそれがある。従って、適切なキーを選択してインデックスを予め作成することが重要である。【０００４】
特許文献１には、複数のデータベースサーバを備えるデータベース管理システムにおいて、データベースサーバ間で共有する領域に保存される小インデックスと、各データベースサーバの専用の領域に保存される大インデックスとを用いる技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−０２５７３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
データベースにレコードを追加（インポート）する際、レコードの件数が多いほど、レコードの追加に要する時間は長くなる。また、インデックスを有効にしたままレコードを追加すると、インデックスの再作成も行われ、更に長い時間を要する。そして、レコードを追加する最中にはデータベースに重い負荷がかかり、インデックスを用いた検索であっても検索の速度が遅くなるという問題が発生する。特に、大量のレコードを追加する場合には、すべてのレコードを追加するまでに長い時間がかかってしまい、且つ、その間におけるデータベースの検索が遅くなってしまう。そこで、これらの問題を同時に解決し得る技術が望まれる。【０００７】
本発明は、以上のような事情に鑑みてなされたものであり、検索にできるだけ支障が生じないように効率よくデータベースにレコードを追加することができる情報処理装置、情報処理方法、記録媒体、ならびに、プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明の第１の観点に係る情報処理装置は、
検索要求を端末から受信する受信部と、
データベースのインデックスが有効に設定されていれば、前記受信された検索要求に基づき、前記インデックスを参照して前記データベースを検索する検索部と、
前記インデックスが有効に設定されていれば、前記検索部による検索の結果を前記端末へ送信し、前記インデックスが無効に設定されていれば、前記検索部による検索が行われなかった旨の通知を前記端末へ送信する送信部と、
前記データベースに追加すべき複数のレコードを複数のグループに分割し、前記複数のグループのすべてについて、
（ａ）前記インデックスを無効に設定し、
（ｂ）前記グループに含まれるレコードを前記データベースに追加し、
（ｃ）前記インデックスを再作成して有効に設定する、
処理を実行する追加部と、
を備え、
前記追加部は、前記インデックスが無効に設定されている間に前記検索要求が受信される回数を推定し、前記推定した数が少なくなるように、前記グループの数を決定する、
ことを特徴とする。【０００９】
前記追加部は、前記複数のグループのそれぞれについて、前記推定した数が少なくなるように、前記グループに含まれるレコードを前記データベースに追加する処理の開始時刻を決定してもよい。【００１０】
前記追加部は、前記推定した数と前記決定したグループの数とに基づいて、前記グループに含まれるレコードを前記データベースに追加する処理の時間間隔を決定してもよい。【００１１】
前記送信部は、前記検索部による検索が行われなかった旨、及び、前記インデックスが有効に設定される予定時刻を示す情報、を含む前記通知を前記端末へ送信してもよい。【００１２】
前記追加部は、前記情報処理装置にログインしているユーザの数に基づいて、前記検索要求が受信される回数を推定してもよい。【００１３】
前記追加部は、過去の所定期間内に受信された検索要求の数に基づいて、前記検索要求が受信される回数を推定してもよい。【００１４】
前記追加部は、前記インデックスが無効に設定されている間に前記検索要求が受信される回数が最少となるグループの数を決定し、前記決定したグループの数に基づいて、前記複数のレコードを複数のグループに分割してもよい。【００１５】
前記追加部は、前記複数のグループのうちの第１のグループに含まれるレコードを前記データベースに追加した後、前記複数のグループのうちの前記第１のグループとは異なる第２のグループに含まれるレコードを前記データベースに追加する処理の開始時刻を決定してもよい。【００１６】
前記追加部は、前記第１のグループに含まれるレコードを前記データベースに追加した後、前記検索要求の数を推定して前記グループの数を再計算し、前記データベースに追加すべき複数のレコードのうち未だ追加されていないレコードを前記再計算したグループの数に分割してもよい。【００１７】
本発明のその他の観点に係る情報処理方法は、
検索要求を端末から受信する受信ステップと、
データベースのインデックスが有効に設定されていれば、前記受信された検索要求に基づき、前記インデックスを参照して前記データベースを検索する検索ステップと、
前記インデックスが有効に設定されていれば、前記検索ステップでの検索の結果を前記端末へ送信し、前記インデックスが無効に設定されていれば、前記検索ステップで検索が行われなかった旨の通知を前記端末へ送信する送信ステップと、
前記データベースに追加すべき複数のレコードを複数のグループに分割し、前記複数のグループのすべてについて、
（ａ）前記インデックスを無効に設定し、
（ｂ）前記グループに含まれるレコードを前記データベースに追加し、
（ｃ）前記インデックスを再作成して有効に設定する、
処理を実行する追加ステップと、
を備え、
前記追加ステップでは、前記インデックスが無効に設定されている間に前記検索要求が受信される回数を推定し、前記推定した数が少なくなるように、前記グループの数を決定する、
ことを特徴とする。【００１８】
本発明のその他の観点に係るコンピュータ読み取り可能な記録媒体は、
コンピュータを、
検索要求を端末から受信する受信部、
データベースのインデックスが有効に設定されていれば、前記受信された検索要求に基づき、前記インデックスを参照して前記データベースを検索する検索部、
前記インデックスが有効に設定されていれば、前記検索部による検索の結果を前記端末へ送信し、前記インデックスが無効に設定されていれば、前記検索部による検索が行われなかった旨の通知を前記端末へ送信する送信部、
前記データベースに追加すべき複数のレコードを複数のグループに分割し、前記複数のグループのすべてについて、
（ａ）前記インデックスを無効に設定し、
（ｂ）前記グループに含まれるレコードを前記データベースに追加し、
（ｃ）前記インデックスを再作成して有効に設定する、
処理を実行する追加部、
として機能させ、
前記追加部は、前記インデックスが無効に設定されている間に前記検索要求が受信される回数を推定し、前記推定した数が少なくなるように、前記グループの数を決定する、
ように機能させるプログラムを記憶する。【００１９】
本発明のその他の観点に係るプログラムは、
コンピュータを、
検索要求を端末から受信する受信部、
データベースのインデックスが有効に設定されていれば、前記受信された検索要求に基づき、前記インデックスを参照して前記データベースを検索する検索部、
前記インデックスが有効に設定されていれば、前記検索部による検索の結果を前記端末へ送信し、前記インデックスが無効に設定されていれば、前記検索部による検索が行われなかった旨の通知を前記端末へ送信する送信部、
前記データベースに追加すべき複数のレコードを複数のグループに分割し、前記複数のグループのすべてについて、
（ａ）前記インデックスを無効に設定し、
（ｂ）前記グループに含まれるレコードを前記データベースに追加し、
（ｃ）前記インデックスを再作成して有効に設定する、
処理を実行する追加部、
として機能させ、
前記追加部は、前記インデックスが無効に設定されている間に前記検索要求が受信される回数を推定し、前記推定した数が少なくなるように、前記グループの数を決定する、
ように機能させる。【００２０】
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記記録媒体は、非一時的な記録媒体であってよく、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【００２１】
本発明によれば、検索にできるだけ支障が生じないように効率よくデータベースにレコードを追加することができる。
【図面の簡単な説明】
【００２２】
【図１】情報処理システムの構成を示す図である。
【図２】情報処理装置のハードウェア構成を示す図である。
【図３】統計データベースに記憶される統計データの構成を示す図である。
【図４】検索端末のハードウェア構成を示す図である。
【図５】電子取引サーバのハードウェア構成を示す図である。
【図６】商品データベースに記憶される商品データの構成を示す図である。
【図７】カスタマ情報データベースに記憶されるカスタマデータの構成を示す図である。
【図８】情報処理装置の機能的な構成を示す図である。
【図９】ログインユーザ数と検索要求の数との関係の例を示す図である。
【図１０】時刻と検索要求の推定数との関係の例を示す図である。
【図１１】グループ数と検索要求の推定数との関係の例を示す図である。
【図１２】グループ数と検索要求の推定数との対応表の例を示す図である。
【図１３】追加処理の流れを示す図である。
【図１４】追加処理の流れを示す他の図である。
【図１５】追加処理を説明するためのフローチャートである。
【図１６】検索処理を説明するためのフローチャートである。
【図１７】情報処理システムの他の構成を示す図である。
【発明を実施するための形態】
【００２３】
（実施形態１）
本発明の実施形態を説明する。以下の実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。従って、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【００２４】
図１に、本実施形態における情報処理システム１００の構成を示す。
【００２５】
情報処理装置１２０は、電子取引サーバ１４０及び検索端末１３０（本図では１３０Ａ，１３０Ｂの二つ）と通信可能に接続される。情報処理装置１２０は、電子取引サーバ１４０からデータを取得し、保存する。また、情報処理装置１２０は、保存したデータに対する検索要求を検索端末１３０から受信し、保存したデータを検索要求に基づいて検索し、検索結果を検索端末１３０へ送信する。
【００２６】
検索端末１３０は、ユーザからの指示に基づいて、情報処理装置１２０に保存されているデータを検索する旨の検索要求を情報処理装置１２０へ送信する。また、検索端末１３０は、検索要求に対する検索結果を情報処理装置１２０から受信し、表示する。検索端末１３０の数は任意である。
【００２７】
電子取引サーバ１４０は、電子取引サービスをカスタマに提供するためのサーバである。本実施形態では、電子取引サーバ１４０は、インターネット上で商品を売買する電子ショッピングモールを管理する。電子ショッピングモールでは、例えば、食品、衣服、電気製品、書籍、チケット等、様々な商品又は役務がインターネット上で売買される。電子ショッピングモールで売買される商品又は役務は、本発明によって限定されず、任意である。電子ショッピングモールに参加する店舗の数は任意である。
【００２８】
説明の簡略化のため、電子ショッピングモールにて売買される商品又は役務を、単に「商品」と呼ぶ。以下の説明において、商品には役務も含まれる。商品には、食品、衣料品、家電製品等の有形物のほか、例えばホテルの宿泊予約、オンラインチケット、ソフトウェアの使用ライセンスなどの無形物も含まれる。
【００２９】
カスタマ端末１５０は、電子ショッピングモールにおいて商品データを閲覧したり買い物をしたりするカスタマによって操作される。カスタマは、カスタマ端末１５０を用いて電子取引サーバ１４０にアクセスし、商品を検索したり購入したりする。例えば、カスタマ端末１５０は、電子ショッピングモールに参加するショップによって作成された、商品を販売するための商品ページを表示し、商品の画像や商品についての詳しい説明等を表示させる指示がカスタマから入力されると、商品データを送信する旨の閲覧要求を電子取引サーバ１４０へ送信する。電子取引サーバ１４０は、閲覧要求を受信すると、商品データをカスタマ端末１５０へ送信する。カスタマ端末１５０は、商品データを電子取引サーバ１４０から受信し、表示する。図１にはカスタマ端末１５０が一つしか記されていないが、カスタマ端末１５０の数は任意である。
【００３０】
ショップ端末１６０は、電子ショッピングモールに参加するショップの管理者によって操作される。ショップ端末１６０は、ショップの管理者からの指示に基づいて、電子ショッピングモールに出品される商品に関する商品データを電子取引サーバ１４０へ送信する。電子取引サーバ１４０は、商品データをショップ端末１６０から受信し、保存する。図１にはショップ端末１６０が一つしか記されていないが、ショップ端末１６０の数は任意である。
【００３１】
通信ネットワーク１８０は、電子取引サーバ１４０とカスタマ端末１５０とショップ端末１６０を相互に通信可能に接続する。本実施形態では、通信ネットワーク１８０はインターネットである。ただし、通信ネットワーク１８０は、ＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）、電話回線、専用回線等であってもよい。
【００３２】
次に、情報処理装置１２０の構成について説明する。図２に、情報処理装置１２０のハードウェア構成を示す。
【００３３】
記憶部２０１は、ハードディスク等の記憶装置を備える。記憶部２０１には、統計データベース２５１が記憶される。統計データベース２５１には、例えばカスタマ情報やカスタマの売買履歴等、電子取引サーバ１４０から取得した統計データが記憶される。
【００３４】
図３に、本実施形態の統計データベース２５１に記憶される統計データの構成を示す。統計データベース２５１には、カスタマを一意に識別可能なカスタマＩＤと対応付けて、カスタマが商品を購入した履歴（購入履歴）、カスタマが獲得又は使用したポイントの履歴（ポイント履歴）、カスタマがカスタマ端末１５０を用いて閲覧した商品ページの履歴（閲覧履歴）等を示す情報が記憶される。これらのデータは、後述するカスタマ情報データベース及び商品データベースに保存されるデータから一部又は全部を抽出したものである。
【００３５】
通信部２０２は、ＮＩＣ（Network Interface Card）を備え、電子取引サーバ１４０及び検索端末１３０と通信する。
【００３６】
制御部２０３は、ＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）等を備え、情報処理装置１２０全体を制御する。
【００３７】
情報処理装置１２０は、電子ショッピングモールを運営する組織の管理者が検索端末１３０を用いて電子ショッピングモールに関する統計を分析したり日次のバッチ処理を行ったりするために用いられる。例えば、電子ショッピングモールの管理者は、カスタマによる消費の動向やカスタマの人気の商品等を、情報処理装置１２０と検索端末１３０を用いて解析する。
【００３８】
電子取引サーバ１４０には多くのカスタマ端末１５０からのアクセスがあるため、もし管理者がデータ解析等のために検索端末１３０を用いて直接的に情報処理装置１２０にアクセスすると、電子取引サーバ１４０に重い負荷がかかり、電子ショッピングモールの運営に支障を来すおそれがある。そこで、本実施形態では、電子取引サーバ１４０に記憶されているデータの一部又は全部を、例えばカスタマ端末１５０からのアクセスが比較的少ない時間帯に、情報処理装置１２０から抽出し、統計データベース２５１に保存しておく。そして、検索端末１３０から、電子取引サーバ１４０ではなく情報処理装置１２０の統計データベース２５１にアクセスするように構成することにより、電子取引サーバ１４０にかかる負荷を軽減する。
【００３９】
次に、検索端末１３０の構成について説明する。図４に、検索端末１３０のハードウェア構成を示す。
【００４０】
通信部４０１は、ＮＩＣを備え、情報処理装置１２０と通信する。例えば、ユーザからデータを検索する指示が入力されると、通信部４０１は、制御部４０７の制御により、検索条件を含む検索要求を情報処理装置１２０へ送信する。通信部４０１は、検索要求に対する検索結果を情報処理装置１２０から受信する。
【００４１】
画像処理部４０２は、統計データベース２５１に記憶される統計データを検索するための検索条件の入力をユーザから受け付ける画面や、検索結果を示す画面等を、ディスプレイ４５１に表示する。
【００４２】
音声処理部４０３は、記憶部４０６から音声データを取得し、再生し、音声をスピーカ４５２から出力する。
【００４３】
Ｉ／Ｏ（Input/Output）部４０４は、取り外し可能なメモリカードを検索端末１３０に接続するインタフェースを備える。
【００４４】
入力部４０５は、ユーザからの入力を受け付けるインタフェースを備える。本実施形態では、入力部４０５は、キーボードとマウスを備える。
【００４５】
記憶部４０６は、ハードディスク等の記憶装置を備え、検索端末１３０を制御するオペレーティングシステム、各種のプログラム、画像データ、音声データ、テキストデータ等を記憶する。
【００４６】
制御部４０７は、ＣＰＵ、ＲＯＭ、ＲＡＭを備え、検索端末１３０全体を制御する。
【００４７】
次に、電子取引サーバ１４０の構成について説明する。図５に、電子取引サーバ１４０のハードウェア構成を示す。
【００４８】
記憶部５０１は、ハードディスク等の記憶装置を備える。記憶部５０１には、商品データベース５５１とカスタマ情報データベース５５２が記憶される。
【００４９】
図６に、本実施形態の商品データベース５５１に記憶される商品データの構成を示す。商品データベース５５１には、商品を識別する商品コードと対応付けて、商品の名称、商品の価格、商品の売り上げ数、商品ページへのアクセス数等、様々な情報が記憶される。商品データは、制御部５０３により更新される。例えば、商品データは、商品を販売するショップの担当者が操作するショップ端末１６０からの指示に基づいて、更新される。
【００５０】
図７に、カスタマ情報データベース５５２に記憶されるカスタマデータの構成を示す。カスタマ情報データベース５５２には、カスタマを識別するカスタマＩＤと対応付けて、電子メールアドレス、年齢、カスタマが商品を購入した履歴（購入履歴）、カスタマが獲得又は使用したポイントの履歴（ポイント履歴）、カスタマがカスタマ端末１５０を用いて閲覧した商品ページの履歴（閲覧履歴）等、様々な情報が記憶される。カスタマデータは、制御部５０３により更新される。例えば、カスタマデータは、カスタマが操作するカスタマ端末１５０からの指示に基づいて、更新される。
【００５１】
通信部５０２は、ＮＩＣを備え、電子取引サーバ１４０を通信ネットワーク１８０に接続し、カスタマ端末１５０及びショップ端末１６０と通信する。また、通信部５０２は、情報処理装置１２０と通信する。
【００５２】
制御部５０３は、ＣＰＵ、ＲＯＭ、ＲＡＭ等を備え、電子取引サーバ１４０全体を制御し、売買処理、決済処理等を行う。制御部５０３は、ショップ端末１６０からの要求に基づいて、商品データの登録、更新、削除等を行う。制御部５０３は、商品データを送信する旨の閲覧要求をカスタマ端末１５０から受信すると、指定された商品データを含む商品ページを構成するＨＴＭＬ（HyperText Markup Language）データや画像データ等をカスタマ端末１５０へ送信する。
【００５３】
次に、本実施形態の情報処理装置１２０によって行われる処理の詳細について説明する。図８に、情報処理装置１２０の機能的な構成を示す。
【００５４】
情報処理装置１２０の制御部２０３は、電子取引サーバ１４０に記憶されている商品データベース５５１とカスタマ情報データベース５５２から一部又は全部のデータを抽出（エクスポート）し、抽出したデータを統計データベース２５１に保存（インポート）する。
【００５５】
例えば、図６に示すように商品データベース５５１に商品データが保存されている場合に、制御部２０３は、すべての項目の中から、商品コードと売り上げ数とアクセス数の各項目のみをデータの抽出対象とし、商品コードと売り上げ数とアクセス数を示すデータを抽出し、図３に示すように商品コードと売り上げ数とアクセス数を対応付けて統計データベース２５１に保存する。また、図７に示すようにカスタマ情報データベース５５２にカスタマデータが保存されている場合に、制御部２０３は、すべての項目の中から、カスタマＩＤと購入履歴とポイント履歴と閲覧履歴の各項目のみをデータの抽出対象とし、カスタマＩＤと購入履歴とポイント履歴と閲覧履歴を示すデータを抽出し、図３に示すようにカスタマＩＤと購入履歴とポイント履歴と閲覧履歴を対応付けて統計データベース２５１に保存する。
【００５６】
商品データベース５５１とカスタマ情報データベース５５２に保存されているすべてのデータのうちどのデータを抽出対象とするかは、管理者又はユーザによって予め決められている。
【００５７】
本実施形態では、情報処理装置１２０は、深夜等の比較的負荷が低い時間帯に、商品データベース５５１とカスタマ情報データベース５５２に記憶されているすべてのデータのうち、情報処理装置１２０の管理者によって指定されたデータを抽出する。
【００５８】
制御部２０３は、商品データベース５５１とカスタマ情報データベース５５２から抽出したデータを統計データベース２５１に保存する。ただし、後述するように、統計データベース２５１へのデータの保存の際に、情報処理装置１２０にかかる負荷を軽減し、ユーザによる検索になるべく支障を来さないようにする工夫がなされている。
【００５９】
一般に、データベースには、データを格納する一つ以上のフィールドを有するテーブルと、レコードを高速に検索可能にするインデックスとが保存される。インデックスが張られたテーブルにレコードを追加する場合、インデックスを有効にしたままであれば、レコードの追加と共にインデックスの再作成が行われる。従って、レコードを追加する時間のほかに、インデックスを再作成する時間も要することになり、レコードの追加のためにより長い時間を要し、データベースへの負荷が増大する。そこで、本実施形態では、統計データベース２５１へのレコードの追加時には、対象となるテーブルに関連するインデックスが一時的に無効に設定される。すべてのレコードの追加が終わった後、インデックスが再作成され、インデックスが再作成された後、インデックスが有効に設定される。更に、すべてのレコードが一度に追加されるのではなく、レコードが最適な数のグループに分割され、グループ単位でレコードが追加される。
【００６０】
より詳細には、制御部２０３は、統計データベース２５１に保存すべきレコードの数が予め決められた閾数を超える場合には、統計データベース２５１に保存すべき全レコードを複数のグループに分割し、グループ単位でレコードを追加する。全レコードを一度に追加するのではなく、グループ毎に分割して追加し、長時間セッションを占有したままにならないようにする。
【００６１】
閾数は任意である。あるいは、制御部２０３は、保存すべきレコードの数に因らず、常に複数のグループに分割し、グループ単位で保存してもよい。
【００６２】
次に、制御部２０３は、検索端末１３０からの統計データベース２５１へのアクセスを禁止する。制御部２０３は、検索端末１３０からの検索要求を受信すると、統計データベース２５１を検索することなく、検索不可能に設定されている旨の通知を検索端末１３０へ送信する。
【００６３】
更に、制御部２０３は、統計データベース２５１に保存されているインデックスを無効に設定する。
【００６４】
一般に、インデックスが張られていない場合、もしくは、インデックスが無効に設定されている間に検索要求があった場合、インデックスを使用せずにデータベースが検索される。インデックスを用いずに検索を実行すると、検索に要する時間が長くなり、データベースへの負荷が増大する。一方、本実施形態では、インデックスが無効にされる間は、統計データベース２５１へのアクセス自体を許可しないか、あるいは、検索要求を受信しても検索を実行しないこととしている。
【００６５】
インデックスを無効に設定した後、制御部２０３は、分割した複数のグループのうちの一つのグループ（第１グループ）に属するレコードを、統計データベース２５１に追加する。
【００６６】
第１グループに属するレコードの追加が終わると、制御部２０３は、インデックスを再作成する。
【００６７】
インデックスの再作成が終わると、制御部２０３は、インデックスを有効に設定する。
【００６８】
そして、制御部２０３は、禁止していた検索端末１３０からの統計データベース２５１へのアクセスを許可する。アクセスが許可された後に検索要求を検索端末１３０から受信すると、検索要求に基づいて統計データベース２５１を検索し、得られた検索結果を検索端末１３０へ送信する。
【００６９】
統計データベース２５１へのアクセスを許可してから予め決められた待機時間が経過すると、分割した複数のグループのうちの他の一つのグループ（第２グループ）に属するレコードを追加する処理に移る。
【００７０】
すなわち、制御部２０３は、検索端末１３０からの統計データベース２５１へのアクセスを再び禁止する。制御部２０３は、検索端末１３０からの検索要求を受信すると、統計データベース２５１を検索することなく、検索不可能に設定されている旨の通知を検索端末１３０へ送信する。
【００７１】
制御部２０３は、統計データベース２５１に保存されているインデックスを無効に設定する。制御部２０３は、分割した複数のグループのうちの他の一つのグループ（第２グループ）に属するレコードを、統計データベース２５１に追加する。
【００７２】
第２グループに属するレコードの追加が終わると、制御部２０３は、インデックスを再作成する。インデックスの再作成が終わると、制御部２０３は、インデックスを有効に設定する。
【００７３】
そして、制御部２０３は、禁止していた検索端末１３０からの統計データベース２５１へのアクセスを再び許可する。つまり、検索要求を検索端末１３０から受信すると、検索要求に基づいて統計データベース２５１を検索し、得られた検索結果を検索端末１３０へ送信する。
【００７４】
同様にして、第Ｇグループ（Ｇはグループ数）に属するレコードを追加する処理を順次実行する。
【００７５】
すなわち、制御部２０３は、下記（１）〜（６）に示す一連の処理を、Ｇ個のグループに分割されたすべてのレコードの追加が終わるまで、繰り返す。
【００７６】
（１）検索端末１３０から統計データベース２５１へのアクセスを禁止する。
（２）インデックスを無効に設定する。
（３）第ｉグループ（ｉは１以上Ｇ以下の整数）に含まれるレコードを統計データベース２５１に追加する。
（４）インデックスを有効に設定する。
（５）検索端末１３０から統計データベース２５１へのアクセスを許可する。
（６）まだ追加していないレコードがあるならば、上記（５）においてアクセスを許可してから待機時間が経過するまで待機し、待機時間が経過すると上記（１）に戻る。まだ追加していないレコードが無いならば、終了する。
【００７７】
待機時間の長さは固定でもよいし、制御部２０３が逐次計算して決定してもよい。
【００７８】
例えば、制御部２０３は、全レコードを複数のグループに分割したときのグループ数Ｇに応じて、待機時間を決定する。典型的には、制御部２０３は、グループ数Ｇが多いほど、待機時間を長く設定する。
【００７９】
ところで、本実施形態では、すべてのレコードを複数のグループに分割して追加処理を順次実行する際、制御部２０３は、統計データベース２５１へのアクセスが禁止されている間の検索要求の頻度を推定し、この検索要求が比較的少なくなるように、グループ数Ｇと追加処理を実行するタイミングとを決定する。統計データベース２５１へのアクセスが禁止されている間、ユーザは統計データベース２５１を利用することができないわけであるから、検索できない事態がなるべく発生しないようにするのである。
【００８０】
より詳細には、制御部２０３は、統計データベース２５１にレコードを追加する処理（追加処理）を開始する時点における統計データベース２５１にログインしているユーザの数に基づいて、追加処理が開始されてから終了されるまでの間に検索要求が受信される頻度、言い換えればユーザが検索できない頻度を、推定する。
【００８１】
ログインしているユーザの数とは、認証処理において正規のユーザであることが認証され、且つ、検索端末１３０から統計データベース２５１に接続するセッションが張られている状態のユーザの数のことである。統計データベース２５１へのセッションの数を、ログインしているユーザの数とみなすことができる。
【００８２】
典型的には、制御部２０３は、統計データベース２５１へログインしているユーザの数が多いほど、検索要求の頻度が多いと推定する。例えば、制御部２０３は、ログインしているユーザの数と、実際に受信した検索要求の数の実績値とを予め記録しておき、ログインしているユーザの数と検索要求の数との関係を判別する。
【００８３】
図９に、ログインユーザ数と検索要求の数との関係の例を示す。制御部２０３は、ログインユーザ数と検索要求の数との関係を一次関数により近似し、ログインユーザ数と検索要求の数との関係を示す近似関数９１０を計算する。これにより、任意のログインユーザ数に対する検索要求の数が推定可能となる。
【００８４】
制御部２０３は、ログインユーザ数と検索要求の数との関係を任意の関数を用いて近似することにより、近似関数９１０を計算することができる。また、制御部２０３は、スプライン関数等を用いた補完法により、ログインユーザ数と検索要求の数との関係を表す近似関数９１０を計算することができる。
【００８５】
また、制御部２０３は、直近の１ヶ月以内等、予め決められた対象期間内における検索要求の数の実績値に基づいて、追加処理が開始されてから終了されるまでの間に検索要求が受信される頻度を推定してもよい。対象期間の決定の仕方は任意である。
【００８６】
そして、制御部２０３は、追加処理が開始されてから終了されるまでの間に検索要求が受信される頻度の推定値が小さくなるように、追加処理を繰り返し実行する時刻を決定する。つまり、ユーザが検索できない頻度がなるべく小さくなるように、追加処理の実行タイミングが決定される。
【００８７】
例えば図１０に示すように、制御部２０３は、第１の時刻Ｔ１における検索要求の推定数がＸ１であり、第１の時刻Ｔ１よりも所定時間だけ後の第２の時刻Ｔ２における検索要求の推定数がＸ１よりも少ないＸ２であるならば、１回目の追加処理（第１グループのデータを追加する処理）を実行する時刻として第１の時刻Ｔ１は相応しくないと判別する。更に、第２の時刻Ｔ２よりも所定時間だけ後の第３の時刻Ｔ３における検索要求の推定数がＸ２よりも少ないＸ３であるならば、１回目の追加処理を実行する時刻として第２の時刻Ｔ２は相応しくないと判別する。
【００８８】
制御部２０３は、同様にして、所定時間だけ後の時刻における検索要求の推定数が少なくならない時刻を判別し、１回目の追加処理を実行する時刻を決定する。図１０では、第４の時刻Ｔ４における検索要求の推定数Ｘ４は、第３の時刻Ｔ３における検索要求の推定数Ｘ３よりも多くなっているので、制御部２０３は、第３の時刻Ｔ３に１回目の追加処理を実行すると決定する。
【００８９】
なお、第４の時刻Ｔ４における検索要求の推定数Ｘ４が、第３の時刻Ｔ３における検索要求の推定数Ｘ３よりも多く、尚且つ、第１の時刻Ｔ１における検索要求の推定数Ｘ１又は第２の時刻Ｔ２における検索要求の推定数Ｘ２よりも多いのであれば、第１の時刻Ｔ１又は第２の時刻Ｔ２のほうが第４の時刻Ｔ４よりも検索要求の推定数が少ないのであるから、第４の時刻Ｔ４ではなく、第１の時刻Ｔ１又は第２の時刻Ｔ２に１回目の追加処理を実行すると決定する。すなわち、制御部２０３は、検索要求の推定数が、予め決められた期間内で最少となる時刻に、１回目の追加処理を実行すると決定する。
【００９０】
また、制御部２０３は、推定した検索要求の数が少なくなるように、グループ数Ｇを決定する。
【００９１】
例えば図１１に示すように、制御部２０３は、グループ数をＧ１とした場合に１回目のデータ追加が終了する時刻を推定し、１回目のデータ追加が行われる期間中における検索要求の推定数Ｙ１を推定する。また、制御部２０３は、グループ数をＧ１よりも多いＧ２とした場合に１回目のデータ追加が終了する時刻を推定し、１回目のデータ追加が行われる期間中における検索要求の推定数Ｙ２を推定する。Ｙ２＜Ｙ１であれば、制御部２０３は、グループ数はＧ１よりもＧ２のほうが相応しいと判別する。なお、Ｙ２＞Ｙ１であれば、制御部２０３は、グループ数をＧ１に決定する。
【００９２】
更に、制御部２０３は、グループ数をＧ２よりも多いＧ３とした場合に１回目のデータ追加が終了する時刻を推定し、１回目のデータ追加が行われる期間中における検索要求の推定数Ｙ３を推定する。Ｙ３＜Ｙ２であれば、制御部２０３は、グループ数はＧ２よりもＧ３のほうが相応しいと判別する。
【００９３】
制御部２０３は、同様にして、グループ数を増加させた後の検索要求の推定数が少なくならないグループ数を判別し、１回目のデータ追加を実行する時刻を決定する。図１１では、グループ数Ｇ４における検索要求の推定数Ｙ４は、グループ数Ｇ３における検索要求の推定数Ｙ３よりも多くなっているので、制御部２０３は、グループ数はＧ４よりもＧ３が相応しいと判別する。
【００９４】
図１１に示すように、グループ数Ｇ４における検索要求の推定数Ｙ４が、グループ数Ｇ３における検索要求の推定数Ｙ３よりも多く、且つ、グループ数Ｇ１における検索要求の推定数Ｙ１又はグループ数Ｇ２における検索要求の推定数Ｙ２よりも多いのであれば、グループ数Ｇ１又はＧ２のほうがグループ数Ｇ４よりも検索要求の推定数が少ないのであるから、グループ数をＧ４ではなくＧ１又はＧ２（本図の場合、Ｇ２）に決定する。すなわち、制御部２０３は、検索要求の推定数が、予め決められた期間内で最少となるように、グループ数Ｇを決定する。
【００９５】
なお、制御部２０３は、例えば図１２に示す対応表に基づいて、推定される検索要求の推定数に対応するグループ数Ｇを取得し、取得したグループ数Ｇのグループに、追加すべき全レコードを分割してもよい。この対応表は、記憶部２０１に予め記憶されればよい。
【００９６】
制御部２０３は、グループ数Ｇと追加処理を実行するタイミングとを、１回目のデータ追加の前にすべて決定してもよいし、Ｇ回だけ繰り返されるデータ追加の前に決定してもよい。
【００９７】
例えば図１３に示すように、制御部２０３は、１回目のデータ追加を開始する前に、グループ数Ｇと１回目のデータ追加の開始時刻Ｓ（１）だけでなく、２回目以降のデータ追加の開始時刻Ｓ（２），Ｓ（Ｇ）を決定する。制御部２０３は、各グループに含まれるレコードの数に基づいて各グループのデータ追加に要する時間を推測し、Ｇ回目のデータ追加の開始時刻Ｓ（Ｇ）を決定することができる。
【００９８】
電子取引サーバ１４０に想定以上の負荷がかかったために推測した時間通りにデータ追加が終わらなかったり、逆に推測した時間よりも早くデータ追加が終わったりする可能性がある。そこで、制御部２０３は、ｉ回目のデータ追加（第ｉグループのデータを追加する処理）が終わった後に、次のｉ＋１回目のデータ追加（第ｉ＋１グループのデータを追加する処理）の開始時刻Ｓ（ｉ＋１）を決定してもよい。
【００９９】
例えば図１４に示すように、制御部２０３は、推定した検索要求の数に基づいて、グループ数Ｇと、１回目のデータ追加の開始時刻Ｓ（１）を決定する。制御部２０３は、開始時刻Ｓ（１）に１回目のデータ追加を開始する。終了時刻Ｅ（１）に１回目のデータ追加が終了すると、制御部２０３は、検索要求の数を再び推定し、この推定した検索要求の数に基づいて２回目のデータ追加の開始時刻Ｓ（２）を決定する。制御部２０３は、開始時刻Ｓ（２）に２回目のデータ追加を開始する。終了時刻Ｅ（２）に２回目のデータ追加が終了すると、制御部２０３は、検索要求の数を再び推定し、この推定した検索要求の数に基づいて３回目のデータ追加の開始時刻Ｓ（３）を決定する。以下同様に繰り返し、すべてのグループに属するデータを追加していく。このようにすれば、より効果的に、ユーザが検索できない機会を減らすことができる。
【０１００】
また、制御部２０３は、ｉ回目のデータ追加が終わった後に、次のｉ＋１回目のデータ追加の最中に受信する検索要求の数を再び推定し、この推定した検索要求の数に基づいて、統計データベース２５１に追加すべき複数のレコードのうち未だ追加されていないレコード（つまりｉ＋１番目以降のすべてのグループに属するレコード）を、再計算したグループの数に分割し直してもよい。
【０１０１】
（追加処理）
次に、本実施形態の情報処理装置１２０によって実行される追加処理の流れについて、図１５のフローチャートを用いて説明する。
【０１０２】
まず、制御部２０３は、電子取引サーバ１４０の商品データベース５５１とカスタマ情報データベース５５２から、統計データベース２５１に保存すべきデータを抽出（エクスポート）する（ステップＳ１５０１）。また、制御部２０３は、抽出したレコードの件数を取得する。
【０１０３】
制御部２０３は、抽出した全てのデータを統計データベース２５１に追加する間に受信する検索要求の数を推定する（ステップＳ１５０２）。
【０１０４】
制御部２０３は、抽出したレコードの件数が閾値以上であれば、推定した検索要求の数に基づいて、抽出した全てのデータを複数のグループに分割する際のグループ数Ｇを決定する（ステップＳ１５０３）。抽出したレコードの件数が閾値未満であれば、制御部２０３は、グループ数Ｇを既定値（例えば１）にする。
【０１０５】
制御部２０３は、カウンタｉ（ｉは１以上Ｇ以下の整数）を初期化する（ステップＳ１５０４）。
【０１０６】
制御部２０３は、推定した検索要求の数に基づいて、ｉ番目のデータ追加（つまりｉ番目のグループに属するデータの統計データベース２５１への追加）の実行中に受信すると推定される検索要求の数がなるべく少なくなるように、ｉ回目のデータ追加の開始時刻を決定する（ステップＳ１５０５）。
【０１０７】
制御部２０３は、タイマにより時刻を計測し、ステップＳ１５０５にて決定した開始時刻が到来したか否かを判別する（ステップＳ１５０６）。
【０１０８】
開始時刻が到来していない場合（ステップＳ１５０６；ＮＯ）、開始時刻が到来するまで待機する。
【０１０９】
開始時刻が到来した場合（ステップＳ１５０６；ＹＥＳ）、制御部２０３は、検索端末１３０から統計データベース２５１へのアクセスを禁止する（ステップＳ１５０７）。
【０１１０】
ステップＳ１５０７においてアクセスが禁止されてから、ステップＳ１５１１においてアクセスが許可されるまでの間、検索要求を受信すると、制御部２０３は、検索できない旨の通知を検索端末１３０へ送信する。
【０１１１】
なお、制御部２０３は、レコードの件数に基づいてｉ回目のデータ追加に要する時間を推定し、ステップＳ１５１１にてアクセスが許可される見込みの時刻、言い換えればユーザが統計データベース２５１を検索できるようになる予定時刻を示す情報を、検索できない旨の通知の中に含めてもよい。そして、検索端末１３０は、この通知を受信すると、検索結果を表示する代わりに、検索できない旨、及び、検索できるようになる予定時刻を示す情報を表示してもよい。
【０１１２】
制御部２０３は、統計データベース２５１に保存されているインデックスを無効に設定する（ステップＳ１５０８）。
【０１１３】
制御部２０３は、ｉ回目のデータ追加を開始する（ステップＳ１５０９）。
【０１１４】
ｉ回目のデータ追加が終了すると、制御部２０３は、統計データベース２５１に保存されているインデックスを再作成する（ステップＳ１５１０）。
【０１１５】
制御部２０３は、再作成したインデックスを有効に設定する（ステップＳ１５１１）。
【０１１６】
制御部２０３は、検索端末１３０から統計データベース２５１へのアクセスを許可する（ステップＳ１５１２）。
【０１１７】
制御部２０３は、カウンタｉの値が、ステップＳ１５０３で決定したグループ数Ｇと合致するか否かを判別する（ステップＳ１５１３）。
【０１１８】
合致しない場合（ステップＳ１５１３；ＮＯ）、制御部２０３は、カウンタｉをインクリメントし（ステップＳ１５１４）、ステップＳ１５０５の処理に移る。制御部２０３は、カウンタｉの値が、ステップＳ１５０３で決定したグループ数Ｇと合致するまで、言い換えれば、すべてのグループに属するデータの追加が終了するまで、ステップＳ１５０５からステップＳ１５１４の処理を繰り返す。
【０１１９】
合致した場合（ステップＳ１５１３；ＹＥＳ）、追加処理を終了する。
【０１２０】
制御部２０３が、統計データベース２５１に追加すべき複数のレコードを複数のグループに分割し、複数のグループのすべてについて、（ａ）インデックスを無効に設定し、（ｂ）グループに含まれるレコードを統計データベース２５１に追加し、（ｃ）インデックスを再作成して有効に設定する、追加処理を実行する追加部８０５として機能する。
【０１２１】
（検索処理）
次に、本実施形態の情報処理装置１２０と検索端末１３０によって実行される検索処理の流れについて、図１６のフローチャートを用いて説明する。
【０１２２】
まず、検索端末１３０の制御部４０７は、検索条件の入力をユーザから受け付け、受け付けた検索条件に基づいて、検索要求を情報処理装置１２０へ送信する。情報処理装置１２０の制御部２０３は、検索要求を検索端末１３０から受信する（ステップＳ１６０１）。
【０１２３】
制御部２０３が、検索要求を検索端末１３０から受信する受信部８０１として機能する。
【０１２４】
情報処理装置１２０の制御部２０３は、検索端末１３０から統計データベース２５１へのアクセスを許可しているか否かを判別する（ステップＳ１６０２）。
【０１２５】
ここで、制御部２０３は、上述した追加処理におけるステップＳ１５０７にてアクセスが禁止されてから、ステップＳ１５１２にてアクセスが許可されるまでの禁止期間中に、検索要求を受信したのであれば、アクセスを許可していないと判別し、この禁止期間中ではないときに検索要求を受信したのであれば、アクセスを許可していると判別する。
【０１２６】
アクセスを許可していると判別した場合（ステップＳ１６０２；ＹＥＳ）、情報処理装置１２０の制御部２０３は、検索条件に基づいて統計データベース２５１を検索し（ステップＳ１６０３）、得られた検索結果を検索端末１３０へ送信する（ステップＳ１６０４）。検索端末１３０の制御部４０７は、検索結果を情報処理装置１２０から受信し、検索結果をディスプレイ４５１に表示する。
【０１２７】
制御部２０３が、統計データベース２５１のインデックスが有効に設定されていれば、受信された検索要求に基づき、インデックスを参照して統計データベース２５１を検索する検索部８０２として機能する。
【０１２８】
アクセスを許可していないと判別した場合（ステップＳ１６０２；ＮＯ）、情報処理装置１２０の制御部２０３は、検索出来ない旨の通知を検索端末１３０へ送信する（ステップＳ１６０５）。検索端末１３０の制御部４０７は、検索出来ない旨の通知を情報処理装置１２０から受信し、検索結果の代わりに、検索出来ないことを示すエラーメッセージをディスプレイ４５１に表示する。
【０１２９】
制御部２０３と通信部２０２が協働して、インデックスが有効に設定されていれば、検索の結果を検索端末１３０へ送信し、インデックスが無効に設定されていれば、検索が行われなかった旨の通知を検索端末１３０へ送信する送信部８０４として機能する。
【０１３０】
なお、情報処理装置１２０の制御部２０３は、ステップＳ１６０５にてアクセスが許可される見込みの時刻、言い換えればユーザが統計データベース２５１を検索できるようになる予定時刻を示す情報を、検索できない旨の通知の中に含めてもよい。そして、検索端末１３０の制御部４０７は、この通知を受信すると、検索結果の代わりに、検索できない旨、及び、検索できるようになる予定時刻を示す情報を表示してもよい。
【０１３１】
このように、インデックスが無効に設定されている期間では、検索端末１３０は統計データベース２５１を検索することはできない。
【０１３２】
本実施形態によれば、情報処理装置１２０は、検索端末１３０による統計データベース２５１の検索にできるだけ支障が生じないようにしつつ、統計データベース２５１へのレコードの追加を効率よく行うことができる。
【０１３３】
特に、統計データベース２５１に追加すべきレコード数が多い場合において、検索にできるだけ支障が生じないようにしつつ、統計データベース２５１へのレコードの追加を効率よく行うことができる。
【０１３４】
本実施形態では、制御部２０３は、商品データベース５５１とカスタマ情報データベース５５２の両方からデータを抽出して統計データベース２５１に追加する。しかし、制御部２０３は、商品データベース５５１とカスタマ情報データベース５５２のうちのいずれか一方のみからデータを抽出して統計データベース２５１に追加してもよい。
【０１３５】
（実施形態２）
次に、本発明の実施形態２について説明する。ここでは、本実施形態における情報処理装置１２０にて行われる処理を、具体的な数式を用いて説明する。
【０１３６】
商品データベース５５１とカスタマ情報データベース５５２から抽出された全レコードを統計データベース２５１に追加するために要する時間の長さＴＡＬＬは、［式１］で近似される。
【０１３７】
ＴＡＬＬ  ＝  Ｔ＊ｎ  ＋  Ｒ＊Ｇ  ＋  Ｍ（Ｇ−１）      ・・・［式１］
【０１３８】
Ｔは、インデックスが張られていないテーブルに１個のレコードを追加するために要する時間の長さである。本実施形態では、Ｔを定数とする。
【０１３９】
ｎは、統計データベース２５１に追加するすべてのレコードの数である。
【０１４０】
Ｒは、インデックスの再作成に要する時間の長さである。既に統計データベース２５１に記憶されているレコードの数が、追加する全レコードの数ｎよりも十分に大きければ、Ｒを定数とみなすことができる。
【０１４１】
Ｇは、グループ数である。
【０１４２】
Ｍは、ｉ番目のデータ追加（ｉ番目のグループに含まれるレコードの追加）が開始される時間と、ｉ＋１番目のデータ追加（ｉ＋１番目のグループに含まれるレコードの追加）が開始される時間と、の間隔である。
【０１４３】
全時間ＴＡＬＬのうち、インデックスが無効に設定されていて検索端末１３０による検索が不可能になる時間の長さＦは、［式２］で表される。
【０１４４】
Ｆ  ＝  Ｔ＊ｎ  ＋  Ｒ＊Ｇ      ・・・［式２］
【０１４５】
ここで、全期間ＴＡＬＬ中に、Ｌ回の検索要求を制御部２０３が受信したとすると、検索が実行されない回数Ｑは［式３］を用いて推定される。
【０１４６】
Ｑ  ＝  Ｌ＊Ｆ／Ａ      ・・・［式３］
【０１４７】
全期間ＴＡＬＬが長いほど、検索要求の数は多いと推定される。また、全期間ＴＡＬＬが同じであっても、時間帯によって検索要求の数は異なると推定される。一般的には、昼間であれば検索要求の数は多く、夜間であれば検索要求の数が少ないと推定される。
【０１４８】
このような条件下において、制御部２０３は、検索が実行されない回数Ｑを最小化するために、グループ数Ｇと時間間隔Ｍとを調整する。これは、評価関数ｅをＱとし、Ｑを最小化することに相当する。
【０１４９】
ｅ  ＝  Ｑ      ・・・［式４］
【０１５０】
制御部２０３は、検索が実行できない回数Ｑに加えて、［式５］又は［式６］に示すように、全レコードの追加に要する全時間ＴＡＬＬを、評価関数ｅに加えてもよい。
【０１５１】
ｅ  ＝  Ｑ  ＋  Ｋ／ＴＡＬＬ      ・・・［式５］
【０１５２】
ｅ  ＝  Ｑ２  ＋  （Ｋ／ＴＡＬＬ）２      ・・・［式６］
【０１５３】
Ｋは、予め決められた定数である。
【０１５４】
また、制御部２０３は、検索が実行されない回数Ｑに加えて、［式７］又は［式８］に示すように、検索が実行されなかった時点から、検索が実行されるようになる時点まで、の時間の長さを、評価関数ｅに加えてもよい。なお、Ｈは定数とする。
【０１５５】
ｅ  ＝  Ｑ  ＋  Ｈ＊Ｔ＊ｎ／２      ・・・［式７］
【０１５６】
ｅ  ＝  Ｑ２  ＋  （Ｈ＊Ｑ＊Ｔ＊ｎ／２）２      ・・・［式８］
【０１５７】
制御部２０３は、［式４］から［式８］までのいずれかの評価関数ｅを用い、評価関数ｅがとる値が最小になるときのグループ数Ｇと時間間隔Ｍとを計算する。
【０１５８】
制御部２０３は、グループ数Ｇと時間間隔Ｍに加えて、ｉ回目のデータ追加を開始する開始時刻Ｓも調整するようにしてもよい。すなわち、制御部２０３は、評価関数ｅがとる値が最小となるときのグループ数Ｇと時間間隔Ｍと開始時刻Ｓとを計算する。この場合、検索要求の頻度に応じて、検索への影響がなるべく小さくなる時間帯を選んでデータを追加することができるようになる。
【０１５９】
また、制御部２０３は、グループ数Ｇを１だけ増やしたり減らしたりし、評価関数ｅが減少すればそのグループ数Ｇを採用し、減少しなければグループ数Ｇを元に戻す、という処理を繰り返してもよい。
【０１６０】
同様に、制御部２０３は、時間間隔Ｍを所定時間だけ長くしたり短くしたりし、評価関数ｅが減少すればその時間間隔Ｍを採用し、減少しなければ時間間隔Ｍを元に戻す、という処理を繰り返してもよい。
【０１６１】
例えば、制御部２０３は、最初にグループ数Ｇと時間間隔Ｍと開始時刻Ｓとを予め決められた初期値に設定し、全時間ＴＡＬＬと検索が不可能になる時間の長さＦとを計算する。また、制御部２０３は、開始時刻Ｓから、時刻Ｓ＋ＴＡＬＬまで、に受信する検索要求の数Ｌを推定する。更に、制御部２０３は、検索が実行されない回数Ｑを計算する。そして、制御部２０３は、グループ数Ｇと時間間隔Ｍと開始時刻Ｓとのうちのいずれか一つを変更し、検索が実行されない回数Ｑを計算する。制御部２０３は、検索が実行されない回数Ｑが小さくなれば変更後の値を採用し、検索が実行されない回数Ｑが小さくならなければ元の値に戻す。
【０１６２】
なお、制御部２０３は、グループ数Ｇと時間間隔Ｍと開始時刻Ｓとのうちのいずれか一つ又は二つを定数とし、残りを変化させることにより、最適なグループ数Ｇ又は時間間隔Ｍ又は開始時刻Ｓを計算してもよい。
【０１６３】
本発明は、上述した実施形態に限定されず、種々の変形及び応用が可能である。また、上述した実施形態の各構成要素を自由に組み合わせることも可能である。
【０１６４】
上記実施形態では、制御部２０３は、インデックスを無効に設定する間、検索端末１３０から統計データベース２５１へのアクセスを禁止している。しかし、レコードを追加するテーブルとレコードを追加しないテーブルとが混在するのであれば、制御部２０３は、レコードを追加するテーブルに張られているインデックスのみを無効に設定し、レコードを追加するテーブルへのアクセスのみ禁止する一方、レコードを追加しないテーブルへのアクセスについては常にインデックスを有効にしてアクセスを許可するようにしてもよい。
【０１６５】
制御部２０３は、インデックスを無効に設定する代わりに、インデックスを有効に設定したままインデックスの再作成を無効に設定してもよい。この場合、実際にテーブルに格納されているデータとインデックスとの間に一時的に不整合が生じるので、データの追加が終了した後、なるべく早くインデックスを再作成することが望ましい。
【０１６６】
統計データベース２５１の管理者は、（０）商品データベース５５１とカスタマ情報データベース５５２からのデータの抽出、（１）検索端末１３０から統計データベース２５１へのアクセスの禁止、（２）インデックスの無効化、（３）ｉ番目のグループに含まれるレコードの統計データベース２５１への追加、（４）インデックスの有効化、（５）統計データベース２５１へのアクセスを許可、（６）待機時間中における追加処理の待機、という一連の流れを自動的に行うジョブを情報処理装置１２０に登録することにより、すべての処理を自動化することができる。
【０１６７】
上記実施形態では、情報処理装置１２０が検索要求を受信し、且つ、情報処理装置１２０が統計データベース２５１を記憶している。しかし、図１７に示すように、統計データベース２５１を記憶するデータベースサーバ１７００を別途用意し、情報処理装置１２０はこのデータベースサーバ１７００との間で通信し、情報処理装置１２０が検索端末１３０から検索要求を受信し、情報処理装置１２０が適宜このデータベースサーバ１７００に接続して検索を実行するように構成してもよい。
【０１６８】
上記実施形態では、情報処理装置１２０は、電子取引サーバ１４０の商品データベース５５１とカスタマ情報データベース５５２に保存されているデータの一部又は全部をエクスポートし、統計データベース２５１にインポートする。しかし、エクスポート又はインポートされるデータの種類、エクスポート対象のデータベースの数、インポート対象のデータベースの数は、いずれも任意である。情報処理装置１２０は、任意のデータが格納される一つ以上の第１のデータベースからデータをエクスポートし、エクスポートしたデータを一つ以上の第２のデータベースへインポートすることができる。
【０１６９】
上記実施形態では、統計データベース２５１にインポートされたデータは、管理者が電子ショッピングモールに関する統計分析のために用いられる。しかし、データがインポートされるデータベースの用途は、本発明によって限定されない。
【０１７０】
情報処理システム１００の全部又は一部としてコンピュータを動作させるためのプログラムを、メモリカード、ＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disk）、ＭＯ（Magneto Optical disk）などのコンピュータ読み取り可能な記録媒体に格納して配布し、これを別のコンピュータにインストールし、上述の手段として動作させ、あるいは、上述の工程を実行させてもよい。
【０１７１】
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等するものとしてもよい。
【０１７２】
以上のように、本発明によれば、検索にできるだけ支障が生じないように効率よくデータベースにレコードを追加することができる。
【符号の説明】
【０１７３】
１００  情報処理システム
１２０  情報処理装置
１３０  検索端末
１４０  電子取引サーバ
１５０  カスタマ端末
１６０  ショップ端末
１８０  通信ネットワーク
２０１  記憶部
２０２  通信部
２０３  制御部
２５１  統計データベース
４０１  通信部
４０２  画像処理部
４０３  音声処理部
４０４  Ｉ／Ｏ部
４０５  入力部
４０６  記憶部
４０７  制御部
４５１  ディスプレイ
４５２  スピーカ
４５３  マイクロフォン
５０１  記憶部
５０２  通信部
５０３  制御部
５５１  商品データベース
５５２  カスタマ情報データベース
８０１  受信部
８０２  検索部
８０３  情報記憶部
８０４  送信部
８０５  追加部
９１０  近似関数
【要約】
受信部（８０１）は検索要求を端末から受信する。検索部（８０２）はデータベースのインデックスが有効に設定されていれば、検索要求に基づきデータベースを検索する。送信部（８０４）は、インデックスが有効に設定されていれば、検索結果を端末へ送信し、インデックスが無効に設定されていれば、検索が行われなかった旨の通知を端末へ送信する。追加部（８０５）は、データベースに追加すべきレコードを複数のグループに分割し、グループのすべてについて、インデックスを無効に設定した後グループに含まれるレコードをデータベースに追加してインデックスを有効に設定する処理を実行する。追加部（８０５）は、インデックスが無効に設定されている間に検索要求が受信される回数が少なくなるように、グループの数を決定する。【図１】
0005933150.tif 000002
【図２】
0005933150.tif 000003
【図３】
0005933150.tif 000004
【図４】
0005933150.tif 000005
【図５】
0005933150.tif 000006
【図６】
0005933150.tif 000007
【図７】
0005933150.tif 000008
【図８】
0005933150.tif 000009
【図９】
0005933150.tif 000010
【図１０】
0005933150.tif 000011
【図１１】
0005933150.tif 000012
【図１２】
0005933150.tif 000013
【図１３】
0005933150.tif 000014
【図１４】
0005933150.tif 000015
【図１５】
0005933150.tif 000016
【図１６】
0005933150.tif 000017
【図１７】
0005933150.tif 000018