(58)【調査した分野】(Int.Cl.,DB名)
前記追加部は、前記複数のグループのそれぞれについて、前記推定した数が少なくなるように、前記グループに含まれるレコードを前記データベースに追加する処理の開始時刻を決定する、
ことを特徴とする請求項1に記載の情報処理装置。
前記追加部は、前記インデックスが無効に設定されている間に前記検索要求が受信される回数が最少となるグループの数を決定し、前記決定したグループの数に基づいて、前記複数のレコードを複数のグループに分割する、
ことを特徴とする請求項1から6のいずれか1項に記載の情報処理装置。
前記追加部は、前記複数のグループのうちの第1のグループに含まれるレコードを前記データベースに追加した後、前記複数のグループのうちの前記第1のグループとは異なる第2のグループに含まれるレコードを前記データベースに追加する処理の開始時刻を決定する、
ことを特徴とする請求項1から7のいずれか1項に記載の情報処理装置。
前記追加部は、前記第1のグループに含まれるレコードを前記データベースに追加した後、前記検索要求の数を推定して前記グループの数を再計算し、前記データベースに追加すべき複数のレコードのうち未だ追加されていないレコードを前記再計算したグループの数に分割する、
ことを特徴とする請求項8に記載の情報処理装置。
【発明の概要】
【発明が解決しようとする課題】
【0006】
データベースにレコードを追加(インポート)する際、レコードの件数が多いほど、レコードの追加に要する時間は長くなる。また、インデックスを有効にしたままレコードを追加すると、インデックスの再作成も行われ、更に長い時間を要する。そして、レコードを追加する最中にはデータベースに重い負荷がかかり、インデックスを用いた検索であっても検索の速度が遅くなるという問題が発生する。特に、大量のレコードを追加する場合には、すべてのレコードを追加するまでに長い時間がかかってしまい、且つ、その間におけるデータベースの検索が遅くなってしまう。そこで、これらの問題を同時に解決し得る技術が望まれる。
【0007】
本発明は、以上のような事情に鑑みてなされたものであり、検索にできるだけ支障が生じないように効率よくデータベースにレコードを追加することができる情報処理装置、情報処理方法、記録媒体、ならびに、プログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
上記目的を達成するため、本発明の第1の観点に係る情報処理装置は、
検索要求を端末から受信する受信部と、
データベースのインデックスが有効に設定されていれば、前記受信された検索要求に基づき、前記インデックスを参照して前記データベースを検索する検索部と、
前記インデックスが有効に設定されていれば、前記検索部による検索の結果を前記端末へ送信し、前記インデックスが無効に設定されていれば、前記検索部による検索が行われなかった旨の通知を前記端末へ送信する送信部と、
前記データベースに追加すべき複数のレコードを複数のグループに分割し、前記複数のグループのすべてについて、
(a)前記インデックスを無効に設定し、
(b)前記グループに含まれるレコードを前記データベースに追加し、
(c)前記インデックスを再作成して有効に設定する、
処理を実行する追加部と、
を備え、
前記追加部は、前記インデックスが無効に設定されている間に前記検索要求が受信される回数を推定し、前記推定した数が少なくなるように、前記グループの数を決定する、
ことを特徴とする。
【0009】
前記追加部は、前記複数のグループのそれぞれについて、前記推定した数が少なくなるように、前記グループに含まれるレコードを前記データベースに追加する処理の開始時刻を決定してもよい。
【0010】
前記追加部は、前記推定した数と前記決定したグループの数とに基づいて、前記グループに含まれるレコードを前記データベースに追加する処理の時間間隔を決定してもよい。
【0011】
前記送信部は、前記検索部による検索が行われなかった旨、及び、前記インデックスが有効に設定される予定時刻を示す情報、を含む前記通知を前記端末へ送信してもよい。
【0012】
前記追加部は、前記情報処理装置にログインしているユーザの数に基づいて、前記検索要求が受信される回数を推定してもよい。
【0013】
前記追加部は、過去の所定期間内に受信された検索要求の数に基づいて、前記検索要求が受信される回数を推定してもよい。
【0014】
前記追加部は、前記インデックスが無効に設定されている間に前記検索要求が受信される回数が最少となるグループの数を決定し、前記決定したグループの数に基づいて、前記複数のレコードを複数のグループに分割してもよい。
【0015】
前記追加部は、前記複数のグループのうちの第1のグループに含まれるレコードを前記データベースに追加した後、前記複数のグループのうちの前記第1のグループとは異なる第2のグループに含まれるレコードを前記データベースに追加する処理の開始時刻を決定してもよい。
【0016】
前記追加部は、前記第1のグループに含まれるレコードを前記データベースに追加した後、前記検索要求の数を推定して前記グループの数を再計算し、前記データベースに追加すべき複数のレコードのうち未だ追加されていないレコードを前記再計算したグループの数に分割してもよい。
【0017】
本発明のその他の観点に係る情報処理方法は、
検索要求を端末から受信する受信ステップと、
データベースのインデックスが有効に設定されていれば、前記受信された検索要求に基づき、前記インデックスを参照して前記データベースを検索する検索ステップと、
前記インデックスが有効に設定されていれば、前記検索ステップでの検索の結果を前記端末へ送信し、前記インデックスが無効に設定されていれば、前記検索ステップで検索が行われなかった旨の通知を前記端末へ送信する送信ステップと、
前記データベースに追加すべき複数のレコードを複数のグループに分割し、前記複数のグループのすべてについて、
(a)前記インデックスを無効に設定し、
(b)前記グループに含まれるレコードを前記データベースに追加し、
(c)前記インデックスを再作成して有効に設定する、
処理を実行する追加ステップと、
を備え、
前記追加ステップでは、前記インデックスが無効に設定されている間に前記検索要求が受信される回数を推定し、前記推定した数が少なくなるように、前記グループの数を決定する、
ことを特徴とする。
【0018】
本発明のその他の観点に係るコンピュータ読み取り可能な記録媒体は、
コンピュータを、
検索要求を端末から受信する受信部、
データベースのインデックスが有効に設定されていれば、前記受信された検索要求に基づき、前記インデックスを参照して前記データベースを検索する検索部、
前記インデックスが有効に設定されていれば、前記検索部による検索の結果を前記端末へ送信し、前記インデックスが無効に設定されていれば、前記検索部による検索が行われなかった旨の通知を前記端末へ送信する送信部、
前記データベースに追加すべき複数のレコードを複数のグループに分割し、前記複数のグループのすべてについて、
(a)前記インデックスを無効に設定し、
(b)前記グループに含まれるレコードを前記データベースに追加し、
(c)前記インデックスを再作成して有効に設定する、
処理を実行する追加部、
として機能させ、
前記追加部は、前記インデックスが無効に設定されている間に前記検索要求が受信される回数を推定し、前記推定した数が少なくなるように、前記グループの数を決定する、
ように機能させるプログラムを記憶する。
【0019】
本発明のその他の観点に係るプログラムは、
コンピュータを、
検索要求を端末から受信する受信部、
データベースのインデックスが有効に設定されていれば、前記受信された検索要求に基づき、前記インデックスを参照して前記データベースを検索する検索部、
前記インデックスが有効に設定されていれば、前記検索部による検索の結果を前記端末へ送信し、前記インデックスが無効に設定されていれば、前記検索部による検索が行われなかった旨の通知を前記端末へ送信する送信部、
前記データベースに追加すべき複数のレコードを複数のグループに分割し、前記複数のグループのすべてについて、
(a)前記インデックスを無効に設定し、
(b)前記グループに含まれるレコードを前記データベースに追加し、
(c)前記インデックスを再作成して有効に設定する、
処理を実行する追加部、
として機能させ、
前記追加部は、前記インデックスが無効に設定されている間に前記検索要求が受信される回数を推定し、前記推定した数が少なくなるように、前記グループの数を決定する、
ように機能させる。
【0020】
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記記録媒体は、非一時的な記録媒体であってよく、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【0021】
本発明によれば、検索にできるだけ支障が生じないように効率よくデータベースにレコードを追加することができる。
【発明を実施するための形態】
【0023】
(実施形態1)
本発明の実施形態を説明する。以下の実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。従って、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【0024】
図1に、本実施形態における情報処理システム100の構成を示す。
【0025】
情報処理装置120は、電子取引サーバ140及び検索端末130(本図では130A,130Bの二つ)と通信可能に接続される。情報処理装置120は、電子取引サーバ140からデータを取得し、保存する。また、情報処理装置120は、保存したデータに対する検索要求を検索端末130から受信し、保存したデータを検索要求に基づいて検索し、検索結果を検索端末130へ送信する。
【0026】
検索端末130は、ユーザからの指示に基づいて、情報処理装置120に保存されているデータを検索する旨の検索要求を情報処理装置120へ送信する。また、検索端末130は、検索要求に対する検索結果を情報処理装置120から受信し、表示する。検索端末130の数は任意である。
【0027】
電子取引サーバ140は、電子取引サービスをカスタマに提供するためのサーバである。本実施形態では、電子取引サーバ140は、インターネット上で商品を売買する電子ショッピングモールを管理する。電子ショッピングモールでは、例えば、食品、衣服、電気製品、書籍、チケット等、様々な商品又は役務がインターネット上で売買される。電子ショッピングモールで売買される商品又は役務は、本発明によって限定されず、任意である。電子ショッピングモールに参加する店舗の数は任意である。
【0028】
説明の簡略化のため、電子ショッピングモールにて売買される商品又は役務を、単に「商品」と呼ぶ。以下の説明において、商品には役務も含まれる。商品には、食品、衣料品、家電製品等の有形物のほか、例えばホテルの宿泊予約、オンラインチケット、ソフトウェアの使用ライセンスなどの無形物も含まれる。
【0029】
カスタマ端末150は、電子ショッピングモールにおいて商品データを閲覧したり買い物をしたりするカスタマによって操作される。カスタマは、カスタマ端末150を用いて電子取引サーバ140にアクセスし、商品を検索したり購入したりする。例えば、カスタマ端末150は、電子ショッピングモールに参加するショップによって作成された、商品を販売するための商品ページを表示し、商品の画像や商品についての詳しい説明等を表示させる指示がカスタマから入力されると、商品データを送信する旨の閲覧要求を電子取引サーバ140へ送信する。電子取引サーバ140は、閲覧要求を受信すると、商品データをカスタマ端末150へ送信する。カスタマ端末150は、商品データを電子取引サーバ140から受信し、表示する。
図1にはカスタマ端末150が一つしか記されていないが、カスタマ端末150の数は任意である。
【0030】
ショップ端末160は、電子ショッピングモールに参加するショップの管理者によって操作される。ショップ端末160は、ショップの管理者からの指示に基づいて、電子ショッピングモールに出品される商品に関する商品データを電子取引サーバ140へ送信する。電子取引サーバ140は、商品データをショップ端末160から受信し、保存する。
図1にはショップ端末160が一つしか記されていないが、ショップ端末160の数は任意である。
【0031】
通信ネットワーク180は、電子取引サーバ140とカスタマ端末150とショップ端末160を相互に通信可能に接続する。本実施形態では、通信ネットワーク180はインターネットである。ただし、通信ネットワーク180は、LAN(Local Area Network)、WAN(Wide Area Network)、電話回線、専用回線等であってもよい。
【0032】
次に、情報処理装置120の構成について説明する。
図2に、情報処理装置120のハードウェア構成を示す。
【0033】
記憶部201は、ハードディスク等の記憶装置を備える。記憶部201には、統計データベース251が記憶される。統計データベース251には、例えばカスタマ情報やカスタマの売買履歴等、電子取引サーバ140から取得した統計データが記憶される。
【0034】
図3に、本実施形態の統計データベース251に記憶される統計データの構成を示す。統計データベース251には、カスタマを一意に識別可能なカスタマIDと対応付けて、カスタマが商品を購入した履歴(購入履歴)、カスタマが獲得又は使用したポイントの履歴(ポイント履歴)、カスタマがカスタマ端末150を用いて閲覧した商品ページの履歴(閲覧履歴)等を示す情報が記憶される。これらのデータは、後述するカスタマ情報データベース及び商品データベースに保存されるデータから一部又は全部を抽出したものである。
【0035】
通信部202は、NIC(Network Interface Card)を備え、電子取引サーバ140及び検索端末130と通信する。
【0036】
制御部203は、CPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)等を備え、情報処理装置120全体を制御する。
【0037】
情報処理装置120は、電子ショッピングモールを運営する組織の管理者が検索端末130を用いて電子ショッピングモールに関する統計を分析したり日次のバッチ処理を行ったりするために用いられる。例えば、電子ショッピングモールの管理者は、カスタマによる消費の動向やカスタマの人気の商品等を、情報処理装置120と検索端末130を用いて解析する。
【0038】
電子取引サーバ140には多くのカスタマ端末150からのアクセスがあるため、もし管理者がデータ解析等のために検索端末130を用いて直接的に情報処理装置120にアクセスすると、電子取引サーバ140に重い負荷がかかり、電子ショッピングモールの運営に支障を来すおそれがある。そこで、本実施形態では、電子取引サーバ140に記憶されているデータの一部又は全部を、例えばカスタマ端末150からのアクセスが比較的少ない時間帯に、情報処理装置120から抽出し、統計データベース251に保存しておく。そして、検索端末130から、電子取引サーバ140ではなく情報処理装置120の統計データベース251にアクセスするように構成することにより、電子取引サーバ140にかかる負荷を軽減する。
【0039】
次に、検索端末130の構成について説明する。
図4に、検索端末130のハードウェア構成を示す。
【0040】
通信部401は、NICを備え、情報処理装置120と通信する。例えば、ユーザからデータを検索する指示が入力されると、通信部401は、制御部407の制御により、検索条件を含む検索要求を情報処理装置120へ送信する。通信部401は、検索要求に対する検索結果を情報処理装置120から受信する。
【0041】
画像処理部402は、統計データベース251に記憶される統計データを検索するための検索条件の入力をユーザから受け付ける画面や、検索結果を示す画面等を、ディスプレイ451に表示する。
【0042】
音声処理部403は、記憶部406から音声データを取得し、再生し、音声をスピーカ452から出力する。
【0043】
I/O(Input/Output)部404は、取り外し可能なメモリカードを検索端末130に接続するインタフェースを備える。
【0044】
入力部405は、ユーザからの入力を受け付けるインタフェースを備える。本実施形態では、入力部405は、キーボードとマウスを備える。
【0045】
記憶部406は、ハードディスク等の記憶装置を備え、検索端末130を制御するオペレーティングシステム、各種のプログラム、画像データ、音声データ、テキストデータ等を記憶する。
【0046】
制御部407は、CPU、ROM、RAMを備え、検索端末130全体を制御する。
【0047】
次に、電子取引サーバ140の構成について説明する。
図5に、電子取引サーバ140のハードウェア構成を示す。
【0048】
記憶部501は、ハードディスク等の記憶装置を備える。記憶部501には、商品データベース551とカスタマ情報データベース552が記憶される。
【0049】
図6に、本実施形態の商品データベース551に記憶される商品データの構成を示す。商品データベース551には、商品を識別する商品コードと対応付けて、商品の名称、商品の価格、商品の売り上げ数、商品ページへのアクセス数等、様々な情報が記憶される。商品データは、制御部503により更新される。例えば、商品データは、商品を販売するショップの担当者が操作するショップ端末160からの指示に基づいて、更新される。
【0050】
図7に、カスタマ情報データベース552に記憶されるカスタマデータの構成を示す。カスタマ情報データベース552には、カスタマを識別するカスタマIDと対応付けて、電子メールアドレス、年齢、カスタマが商品を購入した履歴(購入履歴)、カスタマが獲得又は使用したポイントの履歴(ポイント履歴)、カスタマがカスタマ端末150を用いて閲覧した商品ページの履歴(閲覧履歴)等、様々な情報が記憶される。カスタマデータは、制御部503により更新される。例えば、カスタマデータは、カスタマが操作するカスタマ端末150からの指示に基づいて、更新される。
【0051】
通信部502は、NICを備え、電子取引サーバ140を通信ネットワーク180に接続し、カスタマ端末150及びショップ端末160と通信する。また、通信部502は、情報処理装置120と通信する。
【0052】
制御部503は、CPU、ROM、RAM等を備え、電子取引サーバ140全体を制御し、売買処理、決済処理等を行う。制御部503は、ショップ端末160からの要求に基づいて、商品データの登録、更新、削除等を行う。制御部503は、商品データを送信する旨の閲覧要求をカスタマ端末150から受信すると、指定された商品データを含む商品ページを構成するHTML(HyperText Markup Language)データや画像データ等をカスタマ端末150へ送信する。
【0053】
次に、本実施形態の情報処理装置120によって行われる処理の詳細について説明する。
図8に、情報処理装置120の機能的な構成を示す。
【0054】
情報処理装置120の制御部203は、電子取引サーバ140に記憶されている商品データベース551とカスタマ情報データベース552から一部又は全部のデータを抽出(エクスポート)し、抽出したデータを統計データベース251に保存(インポート)する。
【0055】
例えば、
図6に示すように商品データベース551に商品データが保存されている場合に、制御部203は、すべての項目の中から、商品コードと売り上げ数とアクセス数の各項目のみをデータの抽出対象とし、商品コードと売り上げ数とアクセス数を示すデータを抽出し、
図3に示すように商品コードと売り上げ数とアクセス数を対応付けて統計データベース251に保存する。また、
図7に示すようにカスタマ情報データベース552にカスタマデータが保存されている場合に、制御部203は、すべての項目の中から、カスタマIDと購入履歴とポイント履歴と閲覧履歴の各項目のみをデータの抽出対象とし、カスタマIDと購入履歴とポイント履歴と閲覧履歴を示すデータを抽出し、
図3に示すようにカスタマIDと購入履歴とポイント履歴と閲覧履歴を対応付けて統計データベース251に保存する。
【0056】
商品データベース551とカスタマ情報データベース552に保存されているすべてのデータのうちどのデータを抽出対象とするかは、管理者又はユーザによって予め決められている。
【0057】
本実施形態では、情報処理装置120は、深夜等の比較的負荷が低い時間帯に、商品データベース551とカスタマ情報データベース552に記憶されているすべてのデータのうち、情報処理装置120の管理者によって指定されたデータを抽出する。
【0058】
制御部203は、商品データベース551とカスタマ情報データベース552から抽出したデータを統計データベース251に保存する。ただし、後述するように、統計データベース251へのデータの保存の際に、情報処理装置120にかかる負荷を軽減し、ユーザによる検索になるべく支障を来さないようにする工夫がなされている。
【0059】
一般に、データベースには、データを格納する一つ以上のフィールドを有するテーブルと、レコードを高速に検索可能にするインデックスとが保存される。インデックスが張られたテーブルにレコードを追加する場合、インデックスを有効にしたままであれば、レコードの追加と共にインデックスの再作成が行われる。従って、レコードを追加する時間のほかに、インデックスを再作成する時間も要することになり、レコードの追加のためにより長い時間を要し、データベースへの負荷が増大する。そこで、本実施形態では、統計データベース251へのレコードの追加時には、対象となるテーブルに関連するインデックスが一時的に無効に設定される。すべてのレコードの追加が終わった後、インデックスが再作成され、インデックスが再作成された後、インデックスが有効に設定される。更に、すべてのレコードが一度に追加されるのではなく、レコードが最適な数のグループに分割され、グループ単位でレコードが追加される。
【0060】
より詳細には、制御部203は、統計データベース251に保存すべきレコードの数が予め決められた閾数を超える場合には、統計データベース251に保存すべき全レコードを複数のグループに分割し、グループ単位でレコードを追加する。全レコードを一度に追加するのではなく、グループ毎に分割して追加し、長時間セッションを占有したままにならないようにする。
【0061】
閾数は任意である。あるいは、制御部203は、保存すべきレコードの数に因らず、常に複数のグループに分割し、グループ単位で保存してもよい。
【0062】
次に、制御部203は、検索端末130からの統計データベース251へのアクセスを禁止する。制御部203は、検索端末130からの検索要求を受信すると、統計データベース251を検索することなく、検索不可能に設定されている旨の通知を検索端末130へ送信する。
【0063】
更に、制御部203は、統計データベース251に保存されているインデックスを無効に設定する。
【0064】
一般に、インデックスが張られていない場合、もしくは、インデックスが無効に設定されている間に検索要求があった場合、インデックスを使用せずにデータベースが検索される。インデックスを用いずに検索を実行すると、検索に要する時間が長くなり、データベースへの負荷が増大する。一方、本実施形態では、インデックスが無効にされる間は、統計データベース251へのアクセス自体を許可しないか、あるいは、検索要求を受信しても検索を実行しないこととしている。
【0065】
インデックスを無効に設定した後、制御部203は、分割した複数のグループのうちの一つのグループ(第1グループ)に属するレコードを、統計データベース251に追加する。
【0066】
第1グループに属するレコードの追加が終わると、制御部203は、インデックスを再作成する。
【0067】
インデックスの再作成が終わると、制御部203は、インデックスを有効に設定する。
【0068】
そして、制御部203は、禁止していた検索端末130からの統計データベース251へのアクセスを許可する。アクセスが許可された後に検索要求を検索端末130から受信すると、検索要求に基づいて統計データベース251を検索し、得られた検索結果を検索端末130へ送信する。
【0069】
統計データベース251へのアクセスを許可してから予め決められた待機時間が経過すると、分割した複数のグループのうちの他の一つのグループ(第2グループ)に属するレコードを追加する処理に移る。
【0070】
すなわち、制御部203は、検索端末130からの統計データベース251へのアクセスを再び禁止する。制御部203は、検索端末130からの検索要求を受信すると、統計データベース251を検索することなく、検索不可能に設定されている旨の通知を検索端末130へ送信する。
【0071】
制御部203は、統計データベース251に保存されているインデックスを無効に設定する。制御部203は、分割した複数のグループのうちの他の一つのグループ(第2グループ)に属するレコードを、統計データベース251に追加する。
【0072】
第2グループに属するレコードの追加が終わると、制御部203は、インデックスを再作成する。インデックスの再作成が終わると、制御部203は、インデックスを有効に設定する。
【0073】
そして、制御部203は、禁止していた検索端末130からの統計データベース251へのアクセスを再び許可する。つまり、検索要求を検索端末130から受信すると、検索要求に基づいて統計データベース251を検索し、得られた検索結果を検索端末130へ送信する。
【0074】
同様にして、第Gグループ(Gはグループ数)に属するレコードを追加する処理を順次実行する。
【0075】
すなわち、制御部203は、下記(1)〜(6)に示す一連の処理を、G個のグループに分割されたすべてのレコードの追加が終わるまで、繰り返す。
【0076】
(1)検索端末130から統計データベース251へのアクセスを禁止する。
(2)インデックスを無効に設定する。
(3)第iグループ(iは1以上G以下の整数)に含まれるレコードを統計データベース251に追加する。
(4)インデックスを有効に設定する。
(5)検索端末130から統計データベース251へのアクセスを許可する。
(6)まだ追加していないレコードがあるならば、上記(5)においてアクセスを許可してから待機時間が経過するまで待機し、待機時間が経過すると上記(1)に戻る。まだ追加していないレコードが無いならば、終了する。
【0077】
待機時間の長さは固定でもよいし、制御部203が逐次計算して決定してもよい。
【0078】
例えば、制御部203は、全レコードを複数のグループに分割したときのグループ数Gに応じて、待機時間を決定する。典型的には、制御部203は、グループ数Gが多いほど、待機時間を長く設定する。
【0079】
ところで、本実施形態では、すべてのレコードを複数のグループに分割して追加処理を順次実行する際、制御部203は、統計データベース251へのアクセスが禁止されている間の検索要求の頻度を推定し、この検索要求が比較的少なくなるように、グループ数Gと追加処理を実行するタイミングとを決定する。統計データベース251へのアクセスが禁止されている間、ユーザは統計データベース251を利用することができないわけであるから、検索できない事態がなるべく発生しないようにするのである。
【0080】
より詳細には、制御部203は、統計データベース251にレコードを追加する処理(追加処理)を開始する時点における統計データベース251にログインしているユーザの数に基づいて、追加処理が開始されてから終了されるまでの間に検索要求が受信される頻度、言い換えればユーザが検索できない頻度を、推定する。
【0081】
ログインしているユーザの数とは、認証処理において正規のユーザであることが認証され、且つ、検索端末130から統計データベース251に接続するセッションが張られている状態のユーザの数のことである。統計データベース251へのセッションの数を、ログインしているユーザの数とみなすことができる。
【0082】
典型的には、制御部203は、統計データベース251へログインしているユーザの数が多いほど、検索要求の頻度が多いと推定する。例えば、制御部203は、ログインしているユーザの数と、実際に受信した検索要求の数の実績値とを予め記録しておき、ログインしているユーザの数と検索要求の数との関係を判別する。
【0083】
図9に、ログインユーザ数と検索要求の数との関係の例を示す。制御部203は、ログインユーザ数と検索要求の数との関係を一次関数により近似し、ログインユーザ数と検索要求の数との関係を示す近似関数910を計算する。これにより、任意のログインユーザ数に対する検索要求の数が推定可能となる。
【0084】
制御部203は、ログインユーザ数と検索要求の数との関係を任意の関数を用いて近似することにより、近似関数910を計算することができる。また、制御部203は、スプライン関数等を用いた補完法により、ログインユーザ数と検索要求の数との関係を表す近似関数910を計算することができる。
【0085】
また、制御部203は、直近の1ヶ月以内等、予め決められた対象期間内における検索要求の数の実績値に基づいて、追加処理が開始されてから終了されるまでの間に検索要求が受信される頻度を推定してもよい。対象期間の決定の仕方は任意である。
【0086】
そして、制御部203は、追加処理が開始されてから終了されるまでの間に検索要求が受信される頻度の推定値が小さくなるように、追加処理を繰り返し実行する時刻を決定する。つまり、ユーザが検索できない頻度がなるべく小さくなるように、追加処理の実行タイミングが決定される。
【0087】
例えば
図10に示すように、制御部203は、第1の時刻T1における検索要求の推定数がX1であり、第1の時刻T1よりも所定時間だけ後の第2の時刻T2における検索要求の推定数がX1よりも少ないX2であるならば、1回目の追加処理(第1グループのデータを追加する処理)を実行する時刻として第1の時刻T1は相応しくないと判別する。更に、第2の時刻T2よりも所定時間だけ後の第3の時刻T3における検索要求の推定数がX2よりも少ないX3であるならば、1回目の追加処理を実行する時刻として第2の時刻T2は相応しくないと判別する。
【0088】
制御部203は、同様にして、所定時間だけ後の時刻における検索要求の推定数が少なくならない時刻を判別し、1回目の追加処理を実行する時刻を決定する。
図10では、第4の時刻T4における検索要求の推定数X4は、第3の時刻T3における検索要求の推定数X3よりも多くなっているので、制御部203は、第3の時刻T3に1回目の追加処理を実行すると決定する。
【0089】
なお、第4の時刻T4における検索要求の推定数X4が、第3の時刻T3における検索要求の推定数X3よりも多く、尚且つ、第1の時刻T1における検索要求の推定数X1又は第2の時刻T2における検索要求の推定数X2よりも多いのであれば、第1の時刻T1又は第2の時刻T2のほうが第4の時刻T4よりも検索要求の推定数が少ないのであるから、第4の時刻T4ではなく、第1の時刻T1又は第2の時刻T2に1回目の追加処理を実行すると決定する。すなわち、制御部203は、検索要求の推定数が、予め決められた期間内で最少となる時刻に、1回目の追加処理を実行すると決定する。
【0090】
また、制御部203は、推定した検索要求の数が少なくなるように、グループ数Gを決定する。
【0091】
例えば
図11に示すように、制御部203は、グループ数をG1とした場合に1回目のデータ追加が終了する時刻を推定し、1回目のデータ追加が行われる期間中における検索要求の推定数Y1を推定する。また、制御部203は、グループ数をG1よりも多いG2とした場合に1回目のデータ追加が終了する時刻を推定し、1回目のデータ追加が行われる期間中における検索要求の推定数Y2を推定する。Y2<Y1であれば、制御部203は、グループ数はG1よりもG2のほうが相応しいと判別する。なお、Y2>Y1であれば、制御部203は、グループ数をG1に決定する。
【0092】
更に、制御部203は、グループ数をG2よりも多いG3とした場合に1回目のデータ追加が終了する時刻を推定し、1回目のデータ追加が行われる期間中における検索要求の推定数Y3を推定する。Y3<Y2であれば、制御部203は、グループ数はG2よりもG3のほうが相応しいと判別する。
【0093】
制御部203は、同様にして、グループ数を増加させた後の検索要求の推定数が少なくならないグループ数を判別し、1回目のデータ追加を実行する時刻を決定する。
図11では、グループ数G4における検索要求の推定数Y4は、グループ数G3における検索要求の推定数Y3よりも多くなっているので、制御部203は、グループ数はG4よりもG3が相応しいと判別する。
【0094】
図11に示すように、グループ数G4における検索要求の推定数Y4が、グループ数G3における検索要求の推定数Y3よりも多く、且つ、グループ数G1における検索要求の推定数Y1又はグループ数G2における検索要求の推定数Y2よりも多いのであれば、グループ数G1又はG2のほうがグループ数G4よりも検索要求の推定数が少ないのであるから、グループ数をG4ではなくG1又はG2(本図の場合、G2)に決定する。すなわち、制御部203は、検索要求の推定数が、予め決められた期間内で最少となるように、グループ数Gを決定する。
【0095】
なお、制御部203は、例えば
図12に示す対応表に基づいて、推定される検索要求の推定数に対応するグループ数Gを取得し、取得したグループ数Gのグループに、追加すべき全レコードを分割してもよい。この対応表は、記憶部201に予め記憶されればよい。
【0096】
制御部203は、グループ数Gと追加処理を実行するタイミングとを、1回目のデータ追加の前にすべて決定してもよいし、G回だけ繰り返されるデータ追加の前に決定してもよい。
【0097】
例えば
図13に示すように、制御部203は、1回目のデータ追加を開始する前に、グループ数Gと1回目のデータ追加の開始時刻S(1)だけでなく、2回目以降のデータ追加の開始時刻S(2),S(G)を決定する。制御部203は、各グループに含まれるレコードの数に基づいて各グループのデータ追加に要する時間を推測し、G回目のデータ追加の開始時刻S(G)を決定することができる。
【0098】
電子取引サーバ140に想定以上の負荷がかかったために推測した時間通りにデータ追加が終わらなかったり、逆に推測した時間よりも早くデータ追加が終わったりする可能性がある。そこで、制御部203は、i回目のデータ追加(第iグループのデータを追加する処理)が終わった後に、次のi+1回目のデータ追加(第i+1グループのデータを追加する処理)の開始時刻S(i+1)を決定してもよい。
【0099】
例えば
図14に示すように、制御部203は、推定した検索要求の数に基づいて、グループ数Gと、1回目のデータ追加の開始時刻S(1)を決定する。制御部203は、開始時刻S(1)に1回目のデータ追加を開始する。終了時刻E(1)に1回目のデータ追加が終了すると、制御部203は、検索要求の数を再び推定し、この推定した検索要求の数に基づいて2回目のデータ追加の開始時刻S(2)を決定する。制御部203は、開始時刻S(2)に2回目のデータ追加を開始する。終了時刻E(2)に2回目のデータ追加が終了すると、制御部203は、検索要求の数を再び推定し、この推定した検索要求の数に基づいて3回目のデータ追加の開始時刻S(3)を決定する。以下同様に繰り返し、すべてのグループに属するデータを追加していく。このようにすれば、より効果的に、ユーザが検索できない機会を減らすことができる。
【0100】
また、制御部203は、i回目のデータ追加が終わった後に、次のi+1回目のデータ追加の最中に受信する検索要求の数を再び推定し、この推定した検索要求の数に基づいて、統計データベース251に追加すべき複数のレコードのうち未だ追加されていないレコード(つまりi+1番目以降のすべてのグループに属するレコード)を、再計算したグループの数に分割し直してもよい。
【0101】
(追加処理)
次に、本実施形態の情報処理装置120によって実行される追加処理の流れについて、
図15のフローチャートを用いて説明する。
【0102】
まず、制御部203は、電子取引サーバ140の商品データベース551とカスタマ情報データベース552から、統計データベース251に保存すべきデータを抽出(エクスポート)する(ステップS1501)。また、制御部203は、抽出したレコードの件数を取得する。
【0103】
制御部203は、抽出した全てのデータを統計データベース251に追加する間に受信する検索要求の数を推定する(ステップS1502)。
【0104】
制御部203は、抽出したレコードの件数が閾値以上であれば、推定した検索要求の数に基づいて、抽出した全てのデータを複数のグループに分割する際のグループ数Gを決定する(ステップS1503)。抽出したレコードの件数が閾値未満であれば、制御部203は、グループ数Gを既定値(例えば1)にする。
【0105】
制御部203は、カウンタi(iは1以上G以下の整数)を初期化する(ステップS1504)。
【0106】
制御部203は、推定した検索要求の数に基づいて、i番目のデータ追加(つまりi番目のグループに属するデータの統計データベース251への追加)の実行中に受信すると推定される検索要求の数がなるべく少なくなるように、i回目のデータ追加の開始時刻を決定する(ステップS1505)。
【0107】
制御部203は、タイマにより時刻を計測し、ステップS1505にて決定した開始時刻が到来したか否かを判別する(ステップS1506)。
【0108】
開始時刻が到来していない場合(ステップS1506;NO)、開始時刻が到来するまで待機する。
【0109】
開始時刻が到来した場合(ステップS1506;YES)、制御部203は、検索端末130から統計データベース251へのアクセスを禁止する(ステップS1507)。
【0110】
ステップS1507においてアクセスが禁止されてから、ステップS1511においてアクセスが許可されるまでの間、検索要求を受信すると、制御部203は、検索できない旨の通知を検索端末130へ送信する。
【0111】
なお、制御部203は、レコードの件数に基づいてi回目のデータ追加に要する時間を推定し、ステップS1511にてアクセスが許可される見込みの時刻、言い換えればユーザが統計データベース251を検索できるようになる予定時刻を示す情報を、検索できない旨の通知の中に含めてもよい。そして、検索端末130は、この通知を受信すると、検索結果を表示する代わりに、検索できない旨、及び、検索できるようになる予定時刻を示す情報を表示してもよい。
【0112】
制御部203は、統計データベース251に保存されているインデックスを無効に設定する(ステップS1508)。
【0113】
制御部203は、i回目のデータ追加を開始する(ステップS1509)。
【0114】
i回目のデータ追加が終了すると、制御部203は、統計データベース251に保存されているインデックスを再作成する(ステップS1510)。
【0115】
制御部203は、再作成したインデックスを有効に設定する(ステップS1511)。
【0116】
制御部203は、検索端末130から統計データベース251へのアクセスを許可する(ステップS1512)。
【0117】
制御部203は、カウンタiの値が、ステップS1503で決定したグループ数Gと合致するか否かを判別する(ステップS1513)。
【0118】
合致しない場合(ステップS1513;NO)、制御部203は、カウンタiをインクリメントし(ステップS1514)、ステップS1505の処理に移る。制御部203は、カウンタiの値が、ステップS1503で決定したグループ数Gと合致するまで、言い換えれば、すべてのグループに属するデータの追加が終了するまで、ステップS1505からステップS1514の処理を繰り返す。
【0119】
合致した場合(ステップS1513;YES)、追加処理を終了する。
【0120】
制御部203が、統計データベース251に追加すべき複数のレコードを複数のグループに分割し、複数のグループのすべてについて、(a)インデックスを無効に設定し、(b)グループに含まれるレコードを統計データベース251に追加し、(c)インデックスを再作成して有効に設定する、追加処理を実行する追加部805として機能する。
【0121】
(検索処理)
次に、本実施形態の情報処理装置120と検索端末130によって実行される検索処理の流れについて、
図16のフローチャートを用いて説明する。
【0122】
まず、検索端末130の制御部407は、検索条件の入力をユーザから受け付け、受け付けた検索条件に基づいて、検索要求を情報処理装置120へ送信する。情報処理装置120の制御部203は、検索要求を検索端末130から受信する(ステップS1601)。
【0123】
制御部203が、検索要求を検索端末130から受信する受信部801として機能する。
【0124】
情報処理装置120の制御部203は、検索端末130から統計データベース251へのアクセスを許可しているか否かを判別する(ステップS1602)。
【0125】
ここで、制御部203は、上述した追加処理におけるステップS1507にてアクセスが禁止されてから、ステップS1512にてアクセスが許可されるまでの禁止期間中に、検索要求を受信したのであれば、アクセスを許可していないと判別し、この禁止期間中ではないときに検索要求を受信したのであれば、アクセスを許可していると判別する。
【0126】
アクセスを許可していると判別した場合(ステップS1602;YES)、情報処理装置120の制御部203は、検索条件に基づいて統計データベース251を検索し(ステップS1603)、得られた検索結果を検索端末130へ送信する(ステップS1604)。検索端末130の制御部407は、検索結果を情報処理装置120から受信し、検索結果をディスプレイ451に表示する。
【0127】
制御部203が、統計データベース251のインデックスが有効に設定されていれば、受信された検索要求に基づき、インデックスを参照して統計データベース251を検索する検索部802として機能する。
【0128】
アクセスを許可していないと判別した場合(ステップS1602;NO)、情報処理装置120の制御部203は、検索出来ない旨の通知を検索端末130へ送信する(ステップS1605)。検索端末130の制御部407は、検索出来ない旨の通知を情報処理装置120から受信し、検索結果の代わりに、検索出来ないことを示すエラーメッセージをディスプレイ451に表示する。
【0129】
制御部203と通信部202が協働して、インデックスが有効に設定されていれば、検索の結果を検索端末130へ送信し、インデックスが無効に設定されていれば、検索が行われなかった旨の通知を検索端末130へ送信する送信部804として機能する。
【0130】
なお、情報処理装置120の制御部203は、ステップS1605にてアクセスが許可される見込みの時刻、言い換えればユーザが統計データベース251を検索できるようになる予定時刻を示す情報を、検索できない旨の通知の中に含めてもよい。そして、検索端末130の制御部407は、この通知を受信すると、検索結果の代わりに、検索できない旨、及び、検索できるようになる予定時刻を示す情報を表示してもよい。
【0131】
このように、インデックスが無効に設定されている期間では、検索端末130は統計データベース251を検索することはできない。
【0132】
本実施形態によれば、情報処理装置120は、検索端末130による統計データベース251の検索にできるだけ支障が生じないようにしつつ、統計データベース251へのレコードの追加を効率よく行うことができる。
【0133】
特に、統計データベース251に追加すべきレコード数が多い場合において、検索にできるだけ支障が生じないようにしつつ、統計データベース251へのレコードの追加を効率よく行うことができる。
【0134】
本実施形態では、制御部203は、商品データベース551とカスタマ情報データベース552の両方からデータを抽出して統計データベース251に追加する。しかし、制御部203は、商品データベース551とカスタマ情報データベース552のうちのいずれか一方のみからデータを抽出して統計データベース251に追加してもよい。
【0135】
(実施形態2)
次に、本発明の実施形態2について説明する。ここでは、本実施形態における情報処理装置120にて行われる処理を、具体的な数式を用いて説明する。
【0136】
商品データベース551とカスタマ情報データベース552から抽出された全レコードを統計データベース251に追加するために要する時間の長さT
ALLは、[式1]で近似される。
【0137】
T
ALL = T*n + R*G + M(G−1) ・・・[式1]
【0138】
Tは、インデックスが張られていないテーブルに1個のレコードを追加するために要する時間の長さである。本実施形態では、Tを定数とする。
【0139】
nは、統計データベース251に追加するすべてのレコードの数である。
【0140】
Rは、インデックスの再作成に要する時間の長さである。既に統計データベース251に記憶されているレコードの数が、追加する全レコードの数nよりも十分に大きければ、Rを定数とみなすことができる。
【0142】
Mは、i番目のデータ追加(i番目のグループに含まれるレコードの追加)が開始される時間と、i+1番目のデータ追加(i+1番目のグループに含まれるレコードの追加)が開始される時間と、の間隔である。
【0143】
全時間T
ALLのうち、インデックスが無効に設定されていて検索端末130による検索が不可能になる時間の長さFは、[式2]で表される。
【0144】
F = T*n + R*G ・・・[式2]
【0145】
ここで、全期間T
ALL中に、L回の検索要求を制御部203が受信したとすると、検索が実行されない回数Qは[式3]を用いて推定される。
【0147】
全期間T
ALLが長いほど、検索要求の数は多いと推定される。また、全期間T
ALLが同じであっても、時間帯によって検索要求の数は異なると推定される。一般的には、昼間であれば検索要求の数は多く、夜間であれば検索要求の数が少ないと推定される。
【0148】
このような条件下において、制御部203は、検索が実行されない回数Qを最小化するために、グループ数Gと時間間隔Mとを調整する。これは、評価関数eをQとし、Qを最小化することに相当する。
【0150】
制御部203は、検索が実行できない回数Qに加えて、[式5]又は[式6]に示すように、全レコードの追加に要する全時間T
ALLを、評価関数eに加えてもよい。
【0151】
e = Q + K/T
ALL ・・・[式5]
【0152】
e = Q
2 + (K/T
ALL)
2 ・・・[式6]
【0154】
また、制御部203は、検索が実行されない回数Qに加えて、[式7]又は[式8]に示すように、検索が実行されなかった時点から、検索が実行されるようになる時点まで、の時間の長さを、評価関数eに加えてもよい。なお、Hは定数とする。
【0155】
e = Q + H*T*n/2 ・・・[式7]
【0156】
e = Q
2 + (H*Q*T*n/2)
2 ・・・[式8]
【0157】
制御部203は、[式4]から[式8]までのいずれかの評価関数eを用い、評価関数eがとる値が最小になるときのグループ数Gと時間間隔Mとを計算する。
【0158】
制御部203は、グループ数Gと時間間隔Mに加えて、i回目のデータ追加を開始する開始時刻Sも調整するようにしてもよい。すなわち、制御部203は、評価関数eがとる値が最小となるときのグループ数Gと時間間隔Mと開始時刻Sとを計算する。この場合、検索要求の頻度に応じて、検索への影響がなるべく小さくなる時間帯を選んでデータを追加することができるようになる。
【0159】
また、制御部203は、グループ数Gを1だけ増やしたり減らしたりし、評価関数eが減少すればそのグループ数Gを採用し、減少しなければグループ数Gを元に戻す、という処理を繰り返してもよい。
【0160】
同様に、制御部203は、時間間隔Mを所定時間だけ長くしたり短くしたりし、評価関数eが減少すればその時間間隔Mを採用し、減少しなければ時間間隔Mを元に戻す、という処理を繰り返してもよい。
【0161】
例えば、制御部203は、最初にグループ数Gと時間間隔Mと開始時刻Sとを予め決められた初期値に設定し、全時間T
ALLと検索が不可能になる時間の長さFとを計算する。また、制御部203は、開始時刻Sから、時刻S+T
ALLまで、に受信する検索要求の数Lを推定する。更に、制御部203は、検索が実行されない回数Qを計算する。そして、制御部203は、グループ数Gと時間間隔Mと開始時刻Sとのうちのいずれか一つを変更し、検索が実行されない回数Qを計算する。制御部203は、検索が実行されない回数Qが小さくなれば変更後の値を採用し、検索が実行されない回数Qが小さくならなければ元の値に戻す。
【0162】
なお、制御部203は、グループ数Gと時間間隔Mと開始時刻Sとのうちのいずれか一つ又は二つを定数とし、残りを変化させることにより、最適なグループ数G又は時間間隔M又は開始時刻Sを計算してもよい。
【0163】
本発明は、上述した実施形態に限定されず、種々の変形及び応用が可能である。また、上述した実施形態の各構成要素を自由に組み合わせることも可能である。
【0164】
上記実施形態では、制御部203は、インデックスを無効に設定する間、検索端末130から統計データベース251へのアクセスを禁止している。しかし、レコードを追加するテーブルとレコードを追加しないテーブルとが混在するのであれば、制御部203は、レコードを追加するテーブルに張られているインデックスのみを無効に設定し、レコードを追加するテーブルへのアクセスのみ禁止する一方、レコードを追加しないテーブルへのアクセスについては常にインデックスを有効にしてアクセスを許可するようにしてもよい。
【0165】
制御部203は、インデックスを無効に設定する代わりに、インデックスを有効に設定したままインデックスの再作成を無効に設定してもよい。この場合、実際にテーブルに格納されているデータとインデックスとの間に一時的に不整合が生じるので、データの追加が終了した後、なるべく早くインデックスを再作成することが望ましい。
【0166】
統計データベース251の管理者は、(0)商品データベース551とカスタマ情報データベース552からのデータの抽出、(1)検索端末130から統計データベース251へのアクセスの禁止、(2)インデックスの無効化、(3)i番目のグループに含まれるレコードの統計データベース251への追加、(4)インデックスの有効化、(5)統計データベース251へのアクセスを許可、(6)待機時間中における追加処理の待機、という一連の流れを自動的に行うジョブを情報処理装置120に登録することにより、すべての処理を自動化することができる。
【0167】
上記実施形態では、情報処理装置120が検索要求を受信し、且つ、情報処理装置120が統計データベース251を記憶している。しかし、
図17に示すように、統計データベース251を記憶するデータベースサーバ1700を別途用意し、情報処理装置120はこのデータベースサーバ1700との間で通信し、情報処理装置120が検索端末130から検索要求を受信し、情報処理装置120が適宜このデータベースサーバ1700に接続して検索を実行するように構成してもよい。
【0168】
上記実施形態では、情報処理装置120は、電子取引サーバ140の商品データベース551とカスタマ情報データベース552に保存されているデータの一部又は全部をエクスポートし、統計データベース251にインポートする。しかし、エクスポート又はインポートされるデータの種類、エクスポート対象のデータベースの数、インポート対象のデータベースの数は、いずれも任意である。情報処理装置120は、任意のデータが格納される一つ以上の第1のデータベースからデータをエクスポートし、エクスポートしたデータを一つ以上の第2のデータベースへインポートすることができる。
【0169】
上記実施形態では、統計データベース251にインポートされたデータは、管理者が電子ショッピングモールに関する統計分析のために用いられる。しかし、データがインポートされるデータベースの用途は、本発明によって限定されない。
【0170】
情報処理システム100の全部又は一部としてコンピュータを動作させるためのプログラムを、メモリカード、CD(Compact Disc)、DVD(Digital Versatile Disk)、MO(Magneto Optical disk)などのコンピュータ読み取り可能な記録媒体に格納して配布し、これを別のコンピュータにインストールし、上述の手段として動作させ、あるいは、上述の工程を実行させてもよい。
【0171】
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等するものとしてもよい。
【0172】
以上のように、本発明によれば、検索にできるだけ支障が生じないように効率よくデータベースにレコードを追加することができる。
受信部(801)は検索要求を端末から受信する。検索部(802)はデータベースのインデックスが有効に設定されていれば、検索要求に基づきデータベースを検索する。送信部(804)は、インデックスが有効に設定されていれば、検索結果を端末へ送信し、インデックスが無効に設定されていれば、検索が行われなかった旨の通知を端末へ送信する。追加部(805)は、データベースに追加すべきレコードを複数のグループに分割し、グループのすべてについて、インデックスを無効に設定した後グループに含まれるレコードをデータベースに追加してインデックスを有効に設定する処理を実行する。追加部(805)は、インデックスが無効に設定されている間に検索要求が受信される回数が少なくなるように、グループの数を決定する。