JP5907251B2 - データベース管理方法、プログラム、および情報処理装置 - Google Patents

データベース管理方法、プログラム、および情報処理装置 Download PDF

Info

Publication number
JP5907251B2
JP5907251B2 JP2014507098A JP2014507098A JP5907251B2 JP 5907251 B2 JP5907251 B2 JP 5907251B2 JP 2014507098 A JP2014507098 A JP 2014507098A JP 2014507098 A JP2014507098 A JP 2014507098A JP 5907251 B2 JP5907251 B2 JP 5907251B2
Authority
JP
Japan
Prior art keywords
index
data
update
unit
search
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.)
Active
Application number
JP2014507098A
Other languages
English (en)
Other versions
JPWO2013145129A1 (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014507098A priority Critical patent/JP5907251B2/ja
Publication of JPWO2013145129A1 publication Critical patent/JPWO2013145129A1/ja
Application granted granted Critical
Publication of JP5907251B2 publication Critical patent/JP5907251B2/ja
Active 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/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/21Design, administration or maintenance of databases
    • 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)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (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

本発明は、インデックスを有するデータベースのデータベース管理方法、プログラム、および情報処理装置に関する。
コンピュータシステムで取り扱うデータの多くは、データベース(DB)で管理される。DBに格納されるデータ量の増加に伴い、データの検索に要する時間も長期化する。例えば、全データを走査して検索条件に合致するデータを抽出する場合、O記法でO(N)の計算時間がかかる(Nは、データ数であり1以上の整数)。そこで、DBの検索の効率化のために、例えばDBに格納されたデータの索引データ(インデックス)が作成される。インデックスを作っておくことで、計算時間をO(logN)程度にすることができる。
インデックスには、例えばDB内の各データのキーとなる値(インデックス値)と、そのデータの位置情報とが対応付けて登録される。インデックスを有するDBを検索する場合、検索キーに対応するインデックス値が、インデックスから検索される。そして該当するキーに対応付けられたデータの位置情報に基づいて、そのデータが取得され、検索結果として出力される。
このようなインデックスを有するDBでは、DB内のデータを更新した場合、インデックスを更新することで、検索時に、更新後のデータを迅速に見つけ出すことが可能となる。そこで、インデックスの生成及び削除を自動的に行うことができるインデックスの自動更新装置が考えられている。この装置は、検索すべきデータについての各属性に対するアクセス毎に、該当する属性のアクセス頻度情報を更新し、このアクセス頻度情報に基づいてインデックスの内容を更新すべきか否かを評価すると共に、該評価結果に基づいてインデックスの内容を更新する。
特開平6−215037号公報
インデックスは、高速な検索が可能となるように、例えば木構造に構造化されている。そのため、インデックスの更新処理では、インデックス値の追加、変更、削除に加え、インデックスのデータ構造の再構築が行われる。このようなインデックスのデータ構造の再構築を、DBのデータ更新のたびに行っていると、システム全体の処理負荷が過大となってしまう。そこで、例えば、レコード更新時にはインデックスを更新せず、次回の検索時にインデックスの更新処理を行なうことが考えられる。このようにすれば、インデックス更新が頻繁に発生することを抑止でき、システム全体の処理の効率化が図れる。
しかし、検索時にインデックスの更新を行う場合、検索要求に対する応答時間が、インデックス未更新のレコードの量に左右され、検索時の応答時間にばらつきが生じてしまう。例えば、普段より大量のデータ更新が行われた後に入力された検索要求については、それ以外の検索要求と比べて、検索要求に対する応答時間が極端に遅くなる。
1つの側面では、本発明は、検索要求に対する応答時間のばらつきを抑止したデータベース管理方法、プログラム、および情報処理装置を提供することを目的とする。
1つの案では、情報処理装置が、インデックスを有するデータベースのデータが更新された場合、所定の確率で前記インデックスの更新処理が実行されるように、前記インデックスの更新処理を実行するか否かを決定し、前記インデックスの更新処理を実行すると決定した場合、インデックス更新要求を出力する、データベース管理方法が提供される。
1態様によれば、検索要求に対する応答時間のばらつきが抑止される。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
第1の実施の形態に係る装置の機能構成の一例を示す図である。 第1の実施の形態におけるデータ更新処理手順の一例を示すフローチャートである。 第1の実施の形態におけるデータ検索処理手順の一例を示すフローチャートである。 第1の実施の形態におけるインデックス未反映の更新履歴数の推移の一例を示す図である。 第2の実施の形態のシステム構成例を示す図である。 第2の実施の形態に用いるWebサーバのハードウェアの一構成例を示す図である。 第2の実施の形態に係る各サーバの機能を示すブロック図である。 データ保管部のデータ構造の一例を示す図である。 インデックス保管部のデータ構造の一例を示す図である。 データ更新履歴保管部のデータ構造の一例を示す図である。 データ更新処理手順の一例を示すシーケンス図である。 データ検索時の処理の手順を示すシーケンス図である。 インデックスへ未反映の更新履歴数の推移の一例を示す図である。 第3の実施の形態のシステム構成例を示す図である。 第3の実施の形態に係る各サーバの機能を示すブロック図である。 更新確率定義記憶部のデータ構造の一例を示す図である。 第3の実施の形態におけるデータ更新処理の手順の一例を示すシーケンス図である。
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
まず第1の実施の形態について説明する。第1の実施の形態は、インデックスを有するデータベースのデータが更新された場合に、所定の確率でインデックスの更新処理が実行されるようにしたものである。
例えばインデックス更新方法として、いわば働き者(Eager)と呼ぶことができる第1の方法と、いわば怠け者(Lazy)と呼ぶことができる第2の方法が考えられる。
第1の方法は、データ更新(追加・更新・削除)が行われたときに、インデックスの更新を行う方法である。この方法では、検索処理の応答時間は安定する一方で、データ更新に時間がかかる。しかもデータベースに大量のデータが短時間に登録されると、システム全体の性能が劣化してしまう。
第2の方法は、データ更新時にはインデックスを更新せず、データ検索要求が入力された場合に、データ検索に先立ってインデックスを更新する。この方法では、データ更新を効率よく実行できる一方で、データ検索時の性能にばらつきが生じる。特に、大量のデータ更新が行われた直後のデータ検索に非常に時間がかかる。
第1の実施の形態では、データ検索要求が入力された場合にインデックスを更新すると共に、データ更新時に所定の確率(例えば1/数十〜1/数百の確率)でインデックスを更新する。これにより、データ更新を効率よく実行しながら、データ検索時の性能のばらつきを抑止可能となる。
すなわち第1の実施の形態ではデータ更新時に常にインデックスを更新するわけではないため、第1の方法のようにデータ更新の度にインデックス更新を実行する場合に比べ処理効率が向上する。また第1の実施の形態では、データ更新時にも所定の確率でインデックスを更新するため、短時間で大量のデータ更新があっても、第2の方法よりもデータ検索時の性能のばらつきが抑止される。例えば第2の方法では、100万件のデータ更新後の検索には100万件分のインデックス値の更新が必要になりサービス停止を含む重大な影響が出てしまう。他方、第1の実施の形態では、データ更新時に数十から数百回に一度インデックスの更新処理が実行されるため、検索時のインデックス更新は数十から数百件程度で済み、サービス停止などの悪影響の発生が抑止される。
図1は、第1の実施の形態に係る装置の機能構成の一例を示す図である。データベース(DB)1aを有する情報処理装置1には端末装置2が接続されている。情報処理装置1は、端末装置2から指示に応じて、DB1aのデータの更新やデータの検索を行う。
情報処理装置1は、データベース(DB)1a、更新履歴記憶手段1b、データ更新手段1c、決定手段1d、出力手段1e、インデックス更新手段1f、および検索手段1gを有する。
DB1aは、複数のデータ1hとインデックス1iとを有する。インデックス1iには、複数のデータ1hそれぞれから抽出したキー情報(インデックス値)が、そのキー情報の抽出元となったデータの識別情報(例えばデータへのポインタ)に対応付けて登録されている。
更新履歴記憶手段1bは、前回のインデックス1iの更新処理の後に行われたデータ更新の更新履歴を記憶する。更新履歴には、例えば更新されたデータの識別情報と更新内容(追加・削除)との組が設定される。
データ更新手段1cは、DB1aに格納されたデータを更新する。例えばデータ更新手段1cは、DB1aへの新たなデータの追加、データの削除、データの変更を行う。データ更新手段1cは、例えばデータを更新した場合、更新したデータの識別情報と更新内容との組を、更新履歴として更新履歴記憶手段1bに格納する。
決定手段1dは、インデックス1iを有するDB1aのデータが更新された場合、所定の確率でインデックス1iの更新処理が実行されるように、インデックス1iの更新処理を実行するか否かを決定する。例えば決定手段1dは、インデックス1iの前回の更新処理の後にDB1aのデータが更新された回数をカウントし、カウントした回数が、所定の確率に応じた所定の値(閾値)に達した場合、インデックス1iの更新処理を実行すると決定する。また決定手段1dは、乱数を生成し、乱数の値が、所定の確率に応じた所定の範囲内であれば、インデックスの更新処理を実行すると決定するようにしてもよい。
出力手段1eは、インデックス1iの更新処理を実行すると決定した場合、インデックス更新手段1fに対してインデックス更新要求を出力する。
インデックス更新手段1fは、インデックス更新要求に応じて、インデックス1iを更新する。例えばインデックス更新手段1fは、インデックス1iの前回の更新処理の後に実行されたDB1aのデータの更新処理を示す更新履歴を、更新履歴記憶手段1bから取得する。そしてインデックス更新手段1fは、取得した更新履歴に基づいて、インデックス1iを更新する。例えばインデックス更新手段1fは、データの追加を示す更新履歴に応じて、インデックス1iに、追加されたデータのインデックス値を追加する。またインデックス更新手段1fは、データの削除を示す更新履歴に応じて、インデックス1iから削除されたデータのインデックス値を削除する。その後、インデックス更新手段1fは、例えば、インデックス1i内のインデックス値のソートや、データ構造の再作成を行う。
検索手段1gは、端末装置2からのデータ検索指示に応じて、DB1aからデータを検索する。なお検索手段1gは、データ検索の実行に先立って、インデックス更新手段1fに対してインデックス更新要求を出力する。そして検索手段1gは、インデックス更新手段1fによってインデックスが最新の状態に更新された後、DB1aの検索を行う。例えば検索手段1gは、データ検索要求で示される検索キーに適合するインデックス値を、インデックス1iから検索する。次に検索手段1gは、該当するインデックス値に対応付けられたデータの識別情報に基づいて、その識別情報で示されるデータをDB1aから抽出する。そして検索手段1gは、抽出したデータを、検索結果として端末装置2に送信する。
なお、データ更新手段1c、決定手段1d、出力手段1e、インデックス更新手段1f、および検索手段1gは、情報処理装置1が有するCPU(Central Processing Unit)により実現することができる。また、DB1aと更新履歴記憶手段1bとは、情報処理装置1が有するRAM(Random Access Memory)やハードディスクドライブ(HDD:Hard Disk Drive)などにより実現することができる。
また、図1に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
次に、情報処理装置1におけるデータ更新処理とデータ検索処理とについて、図2,図3を参照して説明する。なお以下の例では、インデックス更新後のデータ更新回数を示すカウンタを用いて、インデックス更新処理を実行するか否かを判断するものとする。
図2は、第1の実施の形態におけるデータ更新処理手順の一例を示すフローチャートである。以下、図2に示す処理をステップ番号に沿って説明する。
[ステップS11]データ更新手段1cは、端末装置2からのデータ更新指示を受け付ける。
[ステップS12]データ更新手段1cは、データ更新指示に応じて、DB1a内のデータを更新する。
[ステップS13]データ更新手段1cは、更新履歴記憶手段1bにデータの更新履歴を格納する。その後、データ更新手段1cは、決定手段1dに、データ更新を行ったことを通知する。
[ステップS14]決定手段1dは、データ更新の回数を示すカウンタに1を加算する。なお、カウンタの初期値は0である。
[ステップS15]決定手段1dは、カウンタの値が閾値に達したか否かを判断する。なお閾値は、インデックス1iの更新処理を実行する確率に応じて予め定義されている。例えば、データが更新された際に1/100の確率でインデックスを更新する場合、閾値として100が設定される。決定手段1dは、カウンタの値が閾値に達した場合、インデックスの更新処理を実行するものと決定し、処理をステップS16に進める。また決定手段1dは、カウンタの値が閾値に達していなければ、処理を終了する。
[ステップS16]出力手段1eは、インデックス更新手段1fに対してインデックス更新要求を出力する。するとインデックス更新手段1fは、更新履歴記憶手段1bに蓄積されている更新履歴に基づいて、インデックス1iを更新する。
[ステップS17]インデックス更新手段1fは、更新履歴記憶手段1b内の更新履歴をクリアする。
[ステップS18]インデックス更新手段1fは、決定手段1dにインデックスを更新したことを通知する。すると決定手段1dは、カウンタに0を代入する。その後、処理が終了する。
図3は、第1の実施の形態におけるデータ検索処理手順の一例を示すフローチャートである。以下、図3に示す処理をステップ番号に沿って説明する。
[ステップS21]検索手段1gは、端末装置2からのデータ検索指示を受け付ける。
[ステップS22]検索手段1gは、更新履歴記憶手段1bにデータの更新履歴があるか否かを判断する。検索手段1gは、更新履歴がある場合、処理をステップS23に進める。また検索手段1gは、更新履歴がない場合、処理をステップS26に進める。
[ステップS23]検索手段1gは、インデックス更新手段1fに対してインデックス更新要求を出力する。するとインデックス更新手段1fは、更新履歴記憶手段1bに蓄積されている更新履歴に基づいて、インデックス1iを更新する。
[ステップS24]インデックス更新手段1fは、更新履歴記憶手段1b内の更新履歴をクリアする。
[ステップS25]インデックス更新手段1fは、決定手段1dと検索手段1gとに、インデックスを更新したことを通知する。すると決定手段1dは、カウンタに0を代入する。
[ステップS26]検索手段1gは、インデックスが更新されたことを確認後、DB1aに対して、データ検索指示に応じたデータ検索を行う。
[ステップS27]検索手段1gは、検索結果を端末装置2に応答する。
このようにして、データ更新時において所定の確率でインデックスが更新されると共に、データ検索時にインデックスが更新される。
図4は、第1の実施の形態におけるインデックス未反映の更新履歴数の推移の一例を示す図である。図4では、横軸に時間、縦軸にインデックスへ未反映の更新履歴数を示している。図4の例では、データ更新時にインデックス更新処理を行う確率は0.01(1%)であるものとする。この場合、決定手段1dには、閾値として「100」が設定される。
インデックスへ未反映の更新履歴数は、決定手段1dで、インデックス1iの更新処理を実行すると決定されたときと、データ検索指示を受信したときとに0になる。それ以外の期間は、インデックスへ未反映の更新履歴数は、データ更新指示を受信するごとに1ずつ増加する。
図4の例では、カウンタの値が100となったときに、インデックス更新要求が出力され、インデックスが更新されている。これにより、インデックスへ未反映の更新履歴数は、最大でも100となる。これは、前回にデータ検索指示から今回のデータ検索指示までの間に、例えば数万件のデータ更新が行われたとしても、データ検索時においてインデックスに反映させる更新履歴数が最大でも100であることを意味する。
このように、データ更新の際に確率的にインデックスの更新処理を実行するので、検索要求を受ける時点で、未更新のインデックス値が大量に残存することが抑止される。そのため、インデックス値の大量更新に起因して、検索要求に対する応答時間の長期化する事態の発生が抑止される。すなわち、検索要求に対する応答時間のばらつきが抑止される。
なお図1の例では、情報処理装置1内にDB1aが設けられているが、DB1aは、情報処理装置1に対してネットワークで接続された他の装置に設けられていてもよい。その場合、更新履歴記憶手段1b、データ更新手段1c、インデックス更新手段1f、または検索手段1gの機能の一部または全部を、DB1aが設けられた他の装置内に設けることもできる。
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、複数のWebサーバから、DBサーバ内のDBを利用するシステムにおいて、複数のWebサーバからの指示により、DBのインデックスの適切な更新を行うものである。
複数のWebサーバがインデックスの更新を指示するシステムでは、第1の実施の形態のように、データの更新回数をカウンタで計数するには、個々のWebサーバが、他のWebサーバからDB内のデータの更新を何回行ったのかを把握する必要が生じる。それにはWebサーバ間で情報をリアルタイムに共有する機能が必要となり、処理が複雑化すると共に処理負荷も増大する。そこで、第2の実施の形態では、インデックスの更新処理を実行するか否かを、各Webサーバが乱数を用いて確率的に決定する。これにより、Webサーバが他のWebサーバからのデータ更新回数を把握せずに、適切な頻度で、DBサーバに対してインデックス更新要求を出すことができる。その結果、複数のWebサーバを用いた並列処理の処理効率が向上し、大規模システムにおける処理効率が向上する。
図5は、第2の実施の形態のシステム構成例を示す図である。複数のWebサーバ100,100a,100b,・・・は、スイッチ装置34を介してDBサーバ200に接続されている。DBサーバ200は、インデックスでレコードが管理されたDBを有している。
またWebサーバ100,100a,100b,・・・は、スイッチ装置33を介してロードバランサ32に接続されている。ロードバランサ32には、ネットワーク31を介して複数の端末装置21,22,23,・・・が接続されている。端末装置21,22,23,・・・は、DBサーバ200内のDBを利用するユーザが使用するコンピュータである。ロードバランサ32は、端末装置21,22,23,・・・からの要求を、複数のWebサーバ100,100a,100b,・・・のうちの1台に振り分ける。その際、ロードバランサ32は、例えばWebサーバ100,100a,100b,・・・それぞれの負荷が均等になるように、要求の振り分け先を決定する。
Webサーバ100,100a,100b,・・・は、端末装置21,22,23,・・・からの要求に応じて処理を実行する。例えばWebサーバ100,100a,100b,・・・は、DBサーバ200で管理されているデータの操作要求を受信した場合、DBサーバ200に対してDBのレコードの更新、または検索などの指示を行う。
第2の実施の形態では、Webサーバ100,100a,100b,・・・は、DBサーバ200のレコードの更新を行う場合、インデックスの更新の要否を決定する。インデックスの更新処理を実行するか否かの決定は、乱数による確率的な判断によって行われる。例えばWebサーバ100,100a,100b,・・・は、インデックスの更新処理を実行するか否かの決定のために、乱数を使った「くじ引き」機構を用意する。この「くじ引き」機構では、特定の確率(例えば1%または5%)で当たりが出て、その他の場合ははずれとなる。そしてWebサーバ100,100a,100b,・・・は、更新時に「くじ引き」を行い、当たりがでたら、DBサーバ200にインデックス更新要求を送信する。一方、DBサーバ200は、インデックス更新要求またはデータ検索要求を受信したときにインデックスを更新する。
図6は、第2の実施の形態に用いるWebサーバのハードウェアの一構成例を示す図である。Webサーバ100は、CPU101によって装置全体が制御されている。CPU101には、バス109を介してRAM102と複数の周辺機器が接続されている。なおWebサーバ100が有するCPU数は1つに限定されず、複数であってもよい。Webサーバ100が複数のCPUを有する場合、複数のCPUが連係動作し、装置全体を制御する。
RAM102は、Webサーバ100の主記憶装置として使用される。RAM102には、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。
バス109に接続されている周辺機器としては、HDD103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108a,108bがある。
HDD103は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103は、Webサーバ100の補助記憶装置として使用される。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
グラフィック処理装置104には、モニタ11が接続されている。グラフィック処理装置104は、CPU101からの命令に従って、画像をモニタ11の画面に表示させる。モニタ11としては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
入力インタフェース105には、キーボード12とマウス13とが接続されている。入力インタフェース105は、キーボード12やマウス13から送られてくる信号をCPU101に送信する。なお、マウス13は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
光学ドライブ装置106は、レーザ光などを利用して、光ディスク14に記録されたデータの読み取りを行う。光ディスク14は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク14には、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
機器接続インタフェース107は、Webサーバ100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置15やメモリリーダライタ16を接続することができる。メモリ装置15は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ16は、メモリカード17へのデータの書き込み、またはメモリカード17からのデータの読み出しを行う装置である。メモリカード17は、カード型の記録媒体である。
ネットワークインタフェース108aは、スイッチ装置33に接続されている。ネットワークインタフェース108aは、スイッチ装置33を介して、ロードバランサ32との間でデータの送受信を行う。
ネットワークインタフェース108bは、スイッチ装置34に接続されている。ネットワークインタフェース108bは、スイッチ装置34を介して、DBサーバ200との間でデータの送受信を行う。
以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。なお図6には、Webサーバ100のハードウェア構成例を示したが、他のWebサーバ100a,100b,・・・、DBサーバ200、ロードバランサ32、および端末装置21,22,23,・・・も同様のハードウェアで実現することができる。また、第1の実施の形態に示した情報処理装置1も、図6に示したWebサーバ100と同様のハードウェアにより実現することができる。
Webサーバ100は、コンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。Webサーバ100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、Webサーバ100に実行させるプログラムをHDD103に格納しておくことができる。CPU101は、HDD103内のプログラムの少なくとも一部をRAM102にロードし、プログラムを実行する。またWebサーバ100に実行させるプログラムを、光ディスク14、メモリ装置15、メモリカード17などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばCPU101からの制御により、HDD103にインストールされた後、実行可能となる。またCPU101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。なおプログラムを記録する記録媒体には、一時的な伝搬信号自体は含まれない。
プログラムを流通させる場合には、例えば、そのプログラムが記録された光ディスク14、メモリ装置15、メモリカード17などの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、他のサーバコンピュータからWebサーバ100にそのプログラムを転送することもできる。Webサーバ100は、ネットワークを介してプログラムを取得する場合、例えば取得したプログラムをHDD103に格納する。そしてWebサーバ100のCPU101がHDD103内のプログラムを実行する。またWebサーバ100のCPU101は、サーバコンピュータからプログラムの一部が転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
次に、第2の実施の形態におけるインデックス更新に関連する各サーバの機能について説明する。
図7は、第2の実施の形態に係る各サーバの機能を示すブロック図である。Webサーバ100は、データ操作受付部110とインデックス更新決定部120とを有する。
データ操作受付部110は、端末装置21,22,23,・・・からのDBサーバ200内のDBに対するデータ操作指示を受け付ける。データ操作指示には、データ更新指示やデータ検索指示などがある。データ更新指示には、データの追加要求、削除要求、変更要求がある。データ操作受付部110は、データ更新指示を受け付けた場合、DBサーバ200に対してデータ更新要求を送信すると共に、インデックス更新決定部120にデータ更新通知を送信する。またデータ操作受付部110は、データ検索指示を受け付けた場合、DBサーバ200に対して、検索キーを含む検索要求を送信する。
インデックス更新決定部120は、データ操作受付部110からのデータ更新通知を受け取ると、インデックス更新処理の実行の要否を判断する。第2の実施の形態では、インデックス更新決定部120は、所定の確率で更新処理を実行すると決定する。例えばインデックス更新決定部120は、乱数を生成する。そしてインデックス更新決定部120は、乱数として生成可能な全数値のうちの、所定の割合の数値に属する乱数が生成された場合、インデックス更新処理を実行すると決定する。インデックス更新処理を実行する確率が例えば0.01(1%)であれば、インデックス更新決定部120は、0〜99の範囲内で乱数を生成する。生成される乱数は一様乱数であり、「0〜99」の各数値が生成される確率は同じである。
そしてインデックス更新決定部120は、0〜99の範囲内の特定の数値(例えば「0」)が生成された場合、インデックス更新処理を実行すると決定する。またインデックス更新決定部120は、特定の数値以外の数値(例えば「1〜99」)が生成された場合、インデックス更新処理を実行しないと決定する。
インデックス更新決定部120は、インデックスを更新すると決定した場合、DBサーバ200に対して、インデックス更新要求を送信する。
なお図7には、代表的にWebサーバ100の機能を示しているが、他のWebサーバ100a,100b,・・・も同様の機能を有している。
DBサーバ200は、データ保管部210、インデックス保管部220、データ更新履歴保管部230、アクセス管理部240、およびインデックス操作部250を有する。
データ保管部210は、管理対象のデータを記憶する。例えばRAM102またはHDD103の記憶領域の一部がデータ保管部210として使用される。
インデックス保管部220は、データ保管部210に格納されたデータのインデックスを記憶する。例えばRAM102またはHDD103の記憶領域の一部がインデックス保管部220として使用される。
データ更新履歴保管部230は、データの更新履歴を記憶する。例えばRAM102またはHDD103の記憶領域の一部が、データ更新履歴保管部230として使用される。なお、データ更新履歴保管部230内のデータの更新履歴は、データ変更内容がインデックスに反映されたときにクリアされる。
アクセス管理部240は、Webサーバ100,100a,100b,・・・から送られたデータ更新要求または検索要求に応じて処理を実行する。例えばアクセス管理部240は、データ更新要求を受信した場合、データ保管部210に格納されているデータの更新操作を行う。アクセス管理部240は、データ更新要求で、データの追加が指示されている場合、新たなデータIDを生成し、生成したデータIDを付与したデータをデータ保管部210に格納する。またアクセス管理部240は、データ更新要求で、データの削除が指示されている場合、データ保管部210から該当するデータを削除する。さらにアクセス管理部240は、データ更新要求で、データの値の変更が指示されている場合、データ保管部210内の該当データの値を変更する。
アクセス管理部240は、データ更新要求に応じたデータ保管部210に対する処理が完了すると、データ更新要求の送信元のWebサーバに、処理結果を応答する。またアクセス管理部240は、データ更新要求に応じて実行した処理内容を、データ更新履歴保管部230に格納する。
さらにアクセス管理部240は、検索要求を受信した場合、データ保管部210に格納されているデータの検索を行う。例えばアクセス管理部240は、検索要求を受信した場合、データ更新履歴保管部230に、インデックスに未反映の更新履歴が格納されているか否かを判断する。未反映の更新履歴がある場合、アクセス管理部240は、インデックス操作部250に対して、インデックス更新要求を送信する。そして、アクセス管理部240は、インデックス操作部250からインデックス更新の完了応答を受け取ると、インデックス保管部220に格納されたインデックスを用いて、データ検索を実行する。例えばアクセス管理部240は、検索要求に含まれる検索キーに対応するデータのデータIDを、インデックスを用いて特定する。次に、アクセス管理部240は、特定したデータIDに対応するデータを、データ保管部210から抽出する。そしてアクセス管理部240は、抽出したデータを、検索要求の送信元のWebサーバに対して送信する。
インデックス操作部250は、インデックス保管部220に格納されているインデックスを管理する。例えばインデックス操作部250は、アクセス管理部240またはWebサーバからインデックス更新要求を受信した場合、インデックスを更新する。インデックスを更新する場合、インデックス操作部250は、データ更新履歴保管部230からデータの更新履歴を取得する。次にインデックス操作部250は、データの更新履歴に応じて、インデックスを更新する。例えばインデックス操作部250は、データ追加の更新履歴があった場合、追加されたデータをデータ保管部210から抽出し、そのデータのインデックス値を、インデックス上の適切な場所に挿入する。またインデックス操作部250は、データ削除の更新履歴があった場合、削除されたデータに対応するインデックス値を無効とする。インデックス操作部250は、インデックスの更新が完了すると、インデックス更新要求の送信元に対して、インデックス更新完了を通知する。
なお、図7に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図7に示したデータ保管部210とインデックス保管部220とを合わせた機能は、図1に示した第1の実施の形態のDB1aの一例である。図7に示したデータ更新履歴保管部230は、図1に示した第1の実施の形態の更新履歴記憶手段1bの一例である。図7に示したインデックス更新決定部120は、図1に示した第1の実施の形態の決定手段1dと出力手段1eとを包含する機能の一例である。図7に示したデータ操作受付部110とアクセス管理部240とが連携して実現する機能は、図1に示した第1の実施の形態のデータ更新手段1cと検索手段1gとを合わせた機能の一例である。図7に示したインデックス操作部250は、図1に示した第1の実施の形態のインデックス更新手段1fの一例である。
次に、DBサーバ200の各記憶部のデータ構造について説明する。
図8は、データ保管部のデータ構造の一例を示す図である。データ保管部210には、データIDに対応付けて、データが格納されている。データIDとデータとの組が、1つのレコードを構成する。データには、インデックス値となる文字列が含まれる。例えば、データの先頭に、データの項目名が設定されており、その項目名がインデックス値として用いられる。なお、データが削除されたレコードは、データIDのみが残され、データの領域は空となっている。
次に、インデックス保管部220のデータ構造について説明する。
図9は、インデックス保管部のデータ構造の一例を示す図である。図9には、B−Treeで構造化されたインデックスの例を示している。B−Treeは、分岐の平衡木である。
インデックス221は、木構造であり、木構造には複数のノード41,42,43,44,45,・・・が含まれる。ノード41は、根のノードである。またノード44,45は、葉のノードである。
葉のノード以外の各ノードから枝が出ており、枝の先に下位のノードが接続されている。ノードに設けられる枝の数には最大値が決められている。また、ノードは、枝の数より1だけ少ない数のキーを有する。例えば図9の例では、各ノードに、最大で3つの枝が生成できるものとする。
根のノード41は、キー「baby」、「drama」を有している。そしてノード41には、3つの枝51〜53が設けられている。枝51はノード42に接続されている。ノード42以下の構造には、アルファベット順でキー「baby」より前のインデックス値が保持される。枝52はノード43に接続されている。ノード43以下の構造には、アルファベット順でキー「baby」以降、「drama」より前のインデックス値が保持される。枝53は、図示していないノードに接続されている。枝53の接続先のノード以下の構造には、アルファベット順でキー「drama」以降のインデックス値が保持される。
ノード42は、キー「abbot」、「abhor」を有している。そしてノード42には、3つの枝54〜56が接続されている。枝54は、葉のノード44に接続されている。ノード44には、アルファベット順でキー「abbot」より前のインデックス値が保持される。枝55は、葉のノード45に接続されている。ノード45には、アルファベット順でキー「abbot」以降、「abhor」より前のインデックス値が保持される。枝56は、図示していない葉のノードに接続されている。枝56の接続先のノードには、アルファベット順でキー「abhor」以降、「drama」より前のインデックス値が保持される。
ノード43は、キー「bring」、「create」を有している。そしてノード43には、3つの枝57〜59が接続されている。各枝には、図示していない葉のノードが接続されている。
葉のノード44,45,・・・には、インデックス値に対応付けて、データIDと無効フラグとの設定領域が設けられている。インデックス値は、例えばアルファベット順にソートされている。データIDの設定領域には、インデックス値に対応するデータに付与されている識別子(データID)が設定される。無効フラグの設定領域は、対応するデータが削除されたインデックス値に対して、そのインデックス値が無効であることを示すフラグ(無効フラグ)が設定される。
このようなデータ構造のインデックス221に対してインデックス値を追加する場合、インデックス値のソートが行われる。また、インデックス221を用いたデータ検索の効率化を図るため、木構造が再構築される。例えば、ノードにおいて、そのノードの複数の枝それぞれの接続先のノード以降で保持されるインデックス値の数が均等となるように、木構造が再構築される。このように、インデックス221の更新時には、最適化のためのインデックス値のソートや、木構造の再構築が行われる。そのため、インデックス221の更新頻度が高すぎると、DBサーバ200の処理負荷が過大となり、データ検索処理などの処理遅延の原因となってしまう。例えば、データ更新処理ごとにインデックス221を更新した場合、処理負荷が過大となるおそれがある。そこで、第2の実施の形態では、データ更新の際には、確率的にインデックス更新処理の実行の有無が判断される。
なお、データが削除するデータ更新が行われた場合、そのデータに対応するデータIDの無効フラグ領域に、無効フラグが設定される。
次に、データ更新履歴保管部230のデータ構造について説明する。
図10は、データ更新履歴保管部のデータ構造の一例を示す図である。データ更新履歴保管部230には、更新履歴管理テーブル231が格納されている。更新履歴管理テーブル231には、データIDと変更区分との欄が設けられている。
データIDの欄には、変更されたデータのうち、変更結果がインデックスに反映されていないデータのデータIDが設定される。変更区分の欄には、変更されたデータのデータIDに対応付けて、変更区分が設定される。変更区分には、変更内容を示す情報として、「追加」または「削除」が設定される。なおデータが変更された場合、データの追加とデータの削除の組で、データの変更内容が表される。データIDと変更区分との組が、更新履歴の1つのレコードを構成する。
インデックス更新処理は、更新履歴管理テーブル231に登録されているレコードごとに行われる。例えば、変更区分「追加」のレコードに応じて、追加されたデータのインデックス値が、インデックス221上の適切な場所に挿入される。また変更区分「削除」のレコードに応じて、削除されたデータのインデックス値が設定されているインデックス221内の葉のノードに対し、削除されたデータのデータIDの位置に無効マークが設定される。
次に、データ更新処理の手順について説明する。
図11は、データ更新処理手順の一例を示すシーケンス図である。以下、図11に示す処理をステップ番号に沿って説明する。
[ステップS101]Webサーバ100のデータ操作受付部110は、端末装置からのデータ更新指示を受け付ける。
[ステップS102]データ操作受付部110は、データ更新指示に応じたデータ更新要求をDBサーバ200に送信する。
[ステップS103]DBサーバ200のアクセス管理部240は、データ更新要求に応じて、データ保管部210内のデータを更新する。
[ステップS104]アクセス管理部240は、データ更新履歴保管部230に更新履歴を追記する。例えば新たなデータが追加された場合、アクセス管理部240は、追加されたデータのデータIDと変更区分「追加」とを有するレコードを、更新履歴管理テーブル231に追加登録する。またデータが削除された場合、アクセス管理部240は、削除されたデータのデータIDと変更区分「削除」とを有するレコードを、更新履歴管理テーブル231に追加登録する。さらにデータが変更された場合、アクセス管理部240は、変更されたデータのデータIDと変更区分「追加」とを有するレコード、および変更されたデータのデータIDと変更区分「削除」とを有するレコードを、更新履歴管理テーブル231に追加登録する。
[ステップS105]アクセス管理部240は、データ更新の処理結果を、Webサーバ100に応答する。
[ステップS106]データ操作受付部110は、インデックス更新決定部120に対して、データ更新通知を送信する。するとインデックス更新決定部120は、インデックスの更新処理をDBサーバ200に実行させるか否かを、確率的に決定する。例えばインデックス更新決定部120は、乱数を生成し、その乱数の値に応じてインデックス更新処理の実行の要否を決定する。
[ステップS107]データ操作受付部110は、インデックス更新処理を実行させると決定した場合、処理をステップS108に進める。またデータ操作受付部110は、インデックス更新処理を実行させないと決定した場合、処理を終了する。
[ステップS108]データ操作受付部110は、インデックス更新処理を実行させると決定した場合、DBサーバ200に対してインデックス更新要求を送信する。
[ステップS109]DBサーバ200のインデックス操作部250は、インデックス保管部220に格納されているインデックス221を更新する。例えばインデックス操作部250は、データ更新履歴保管部230からデータの更新履歴を1つずつ抽出する。次にインデックス操作部250は、抽出した更新履歴に応じて、インデックス221を更新する。例えば抽出した更新履歴の変更区分が「追加」であれば、インデックス操作部250は、その更新履歴のデータIDに対応するデータを、データ保管部210から取得する。次にインデックス操作部250は、取得したデータからインデックス値を抽出する。さらにインデックス操作部250は、インデックス221における、抽出したインデックス値に応じた位置に、そのインデックス値と、取得したデータのデータIDとの組を追加する。また抽出した更新履歴の変更区分が「削除」であれば、インデックス操作部250は、インデックス221における、抽出したインデックス値に対応する無効フラグ領域に、無効フラグを設定する。
インデックス操作部250は、すべての更新履歴について、インデックス221への反映が完了すると、インデックス221のデータ構造の再構築を行う。
[ステップS110]インデックス操作部250は、インデックス221の更新が完了すると、データ更新履歴保管部230内の更新履歴をすべて削除(クリア)する。
このようにして、データの更新時には、乱数を用い、確率的にインデックスの更新処理の実行の有無が決定される。その結果、連続して大量のデータ更新が発生した場合、データ更新の間の適当な間隔で、インデックスの更新処理が実行される。その結果、インデックス221へ未反映の履歴情報の量が過大になることが抑止される。
次に、データ検索時の処理について説明する。
図12は、データ検索時の処理の手順を示すシーケンス図である。以下、図12に示す処理をステップ番号に沿って説明する。
[ステップS121]Webサーバ100のデータ操作受付部110は、端末装置からのデータ検索指示を受け付ける。
[ステップS122]データ操作受付部110は、検索要求をDBサーバ200に送信する。
[ステップS123]DBサーバ200のアクセス管理部240は、データ更新履歴保管部230を参照し、インデックス221へ未反映の更新履歴があるか否かを判断する。更新履歴があれば、アクセス管理部240は処理をステップS124に進める。また更新履歴がなければ、アクセス管理部240は処理をステップS126に進める。
[ステップS124]インデックス221へ未反映の更新履歴がある場合、アクセス管理部240は、インデックス操作部250に対してインデックス更新要求を送信する。インデックス操作部250は、インデックス更新要求に応じてインデックス221を更新する。インデックス更新処理の詳細は、ステップS109で説明した通りである。
[ステップS125]インデックス操作部250は、インデックス221の更新が完了すると、データ更新履歴保管部230内の更新履歴をすべて削除(クリア)する。そしてインデックス操作部250は、インデックス更新の完了応答をアクセス管理部240に送信する。
[ステップS126]アクセス管理部240は、インデックス更新処理の完了応答を受信すると、データ検索を実行する。例えばアクセス管理部240は、検索要求に含まれている検索キーに該当するインデックス値を、インデックス保管部220内のインデックス221から検索する。該当するインデックス値が見つかった場合、アクセス管理部240は、そのインデックス値に対応付けられたデータIDを取得する。次にアクセス管理部240は、取得したデータIDに対応するデータを、データ保管部210から取得する。
[ステップS127]アクセス管理部240は、データ検索で取得したデータを含む検索結果応答を、Webサーバ100に送信する。
[ステップS128]Webサーバ100は、データ検索指示の送信元の端末装置に、検索結果を送信する。
このようにして、データ検索が行われる。そしてデータ検索時に、インデックス221へ未反映の履歴情報があれば、その履歴情報を反映するようにインデックス221が更新される。なお、図11で示したように、データ更新時のみ間欠的にインデックス221が更新されているため、データ検索時に、インデックス221へ未反映の履歴情報が過大に残存していることは抑止されている。そのため、データ検索時にインデックスの更新処理が発生したとしても、更新処理が挟まることによるデータ検索の応答時間が、極端に長期化する事態は抑止される。
図13は、インデックスへ未反映の更新履歴数の推移の一例を示す図である。図13では、横軸に時間、縦軸にインデックスへ未反映の更新履歴数を示している。図13の例では、データ更新時にインデックス更新処理を行う確率は0.01(1%)であるものする。
インデックスへ未反映の更新履歴数は、DBサーバ200における、インデックス更新要求受信時と検索要求受信時とに0になる。それ以外の期間は、DBサーバ200がデータ更新要求を受信するごとに、1ずつ増加する。
図13の例では、インデックス更新要求が、データ更新時に0.01の確率で入力されている。これにより、インデックスへ未反映の更新履歴数は、最大でも100を少し超える程度に収まっている。これは、前回に検索要求から今回の検索要求の間に、例えば数万件のデータ更新が行われたとしても、検索要求時においてインデックスに反映させる更新履歴数が最大でも100を少し超える程度に収まることを意味する。このことから、検索要求に対する応答時間が、極端に長期化する事態の発生が抑止されていることが分かる。
しかも第2の実施の形態では、各Webサーバ100,100a,100b,・・・において、インデックスの更新処理の実行の要否を、確率的に決定している。そのため各Webサーバ100,100a,100b,・・・は、他のWebサーバからのどの程度のデータ更新要求が出されているかの情報を用いずに、インデックス更新要求を送信できる。これにより、インデックス更新要求を出力するためのWebサーバ100,100a,100b,・・・での処理が極めて単純となり、インデックス更新要求を出力することによる処理負荷の増加が最小限に抑えられる。
〔第3の実施の形態〕
次に第3の実施の形態について説明する。第3の実施の形態は、端末装置との間の通信速度に応じて、インデックスの更新処理の実行確率(更新確率)を変動させるものである。
図14は、第3の実施の形態のシステム構成例を示す図である。図14において、第2の実施の形態と同じ要素には、図5に示した第2の実施の形態の対応する要素と同じ符号を付し、説明を省略する。第3の実施の形態では、端末装置61,62,63,・・・が、無線によってネットワーク31に接続されている。端末装置61,62,63,・・・は、例えば移動体通信端末装置である。
Webサーバ300,300a,300b,・・・は、端末装置61,62,63,・・・からの要求に応じて処理を実行する。例えばWebサーバ300,300a,300b,・・・は、DBサーバ200で管理されているデータの操作要求を受信した場合、DBサーバ200に対してDBのレコードの更新、または検索などの指示を行う。
第3の実施の形態では、Webサーバ300,300a,300b,・・・は、DBサーバ200のレコードの更新を行う場合、データ更新要求の送信元の端末装置との間の通信速度に応じて、インデックスの更新確率を決定する。そしてWebサーバ300,300a,300b,・・・は、乱数による確率的な判断によって、インデックスの更新の要否を決定する。
Webサーバ300,300a,300b,・・・のハードウェア構成は、図6に示した第2の実施の形態のWebサーバ100のハードウェア構成と同様である。
図15は、第3の実施の形態に係る各サーバの機能を示すブロック図である。第3の実施の形態では、Webサーバ300,300a,300b,・・・の機能が第2の実施の形態と異なる。DBサーバ200の機能は第2の実施の形態と同様である。
Webサーバ300は、データ操作受付部310、インデックス更新決定部320、および更新確率定義記憶部330を有する。このうちデータ操作受付部310は、第2の実施の形態におけるデータ操作受付部110(図7参照)と同じ機能を有している。また第3の実施の形態では、第2の実施の形態の構成に対して更新確率定義記憶部330が追加されている。
更新確率定義記憶部330は、端末装置との間の通信回線の速度に応じた、インデックスの更新処理の実行確率を定義する情報を記憶する。例えばRAMやHDDの記憶領域の一部が、更新確率定義記憶部330として使用される。
インデックス更新決定部320は、第2の実施の形態におけるインデックス更新決定部120(図7参照)が有する機能に加え、更新確率の判定機能を有する。更新確率判定機能により、インデックス更新決定部320は、データ操作受付部310からのデータ更新通知を受け取ると、更新確率定義記憶部330を参照し、データ更新要求の送信元の端末装置との間の通信速度に応じた更新確率を判断する。そしてインデックス更新決定部320は、判断した更新確率に従って、インデックス更新処理の実行の要否を判断する。
次に、更新確率定義記憶部330のデータ構造について説明する。
図16は、更新確率定義記憶部のデータ構造の一例を示す図である。更新確率定義記憶部330には、回線種別テーブル331と更新確率テーブル332とが格納されている。
回線種別テーブル331には、要求元IPアドレスと回線種別との欄が設けられている。要求元IPアドレスの欄には、データ更新指示の送信元の端末装置のIPアドレスが設定される。要求元IPアドレスの欄には、IPアドレスの一部をワイルドカード「*」で表すことができる。このワイルドカードは、任意の数値を意味する。回線種別の欄には、要求元IPアドレスの欄に設定されたIPアドレスの端末装置との間の通信回線の種別が設定される。
回線種別テーブル331を参照することで、データ更新指示の送信元の端末装置のIPアドレスに基づいて、その端末装置との間の回線種別が判別できる。
更新確率テーブル332には、回線種別と確率との欄が設けられている。回線種別の欄には、要求元IPアドレスの欄に設定されたIPアドレスの端末装置との間の通信回線の種別が設定される。確率の欄には、対応する回線種別の通信回線経由でデータ更新指示を受信した場合の、インデックスの更新処理の実行確率が設定される。例えば、通信速度が速い回線ほど、高い確率が設定される。
更新確率テーブル332を参照することで、回線種別ごとの更新確率が判別できる。
次に、第3の実施の形態におけるデータ更新処理について説明する。
図17は、第3の実施の形態におけるデータ更新処理の手順の一例を示すシーケンス図である。図17に示す処理のうちステップS201〜S205,S207〜S211の処理は、それぞれ図11に示す第2の実施の形態のステップS101〜S110の処理と同じである。そこで第2の実施の形態と異なるステップS206の処理について説明する。
[ステップS206]インデックス更新決定部320は、DBサーバ200からデータ更新の結果応答を受信すると、要求元IPアドレスに基づき、更新確率を決定する。例えばインデックス更新決定部320は、データ更新指示の通信に用いられたパケットから、要求元IPアドレスを抽出する。次にインデックス更新決定部320は、抽出した要求元IPアドレスを検索キーとして、回線種別テーブル331の要求元IPアドレスを検索する。該当する要求元IPアドレスがあれば、インデックス更新決定部320は、その要求元IPアドレスに対応する回線種別を、回線種別テーブル331から抽出する。次にインデックス更新決定部320は、抽出した回線種別を検索キーとして、更新確率テーブル332の回線種別の欄を検索する。インデックス更新決定部320は、該当する回線種別に対応する確率を、更新確率テーブル332から抽出する。そしてインデックス更新決定部320は、抽出した確率を、今回の処理で適用する更新確率に決定する。
以後、ステップS207では、決定された更新確率に基づいて、インデックス更新処理の実行の要否が判断される。
このようにして、端末装置が接続された回線の速度に応じてインデックスの更新確率を変えることができる。例えば回線の速度が高いほどインデックスの更新確率を高くすることで、ユーザが使用する回線速度が早いほど、データ検索時の応答時間を短くすることができる。
すなわち、ユーザが端末装置を利用し、高速回線を介してデータ更新指示が入力された場合、インデックス更新処理の実行頻度が高くなる。すると、データ更新履歴保管部230に蓄積される更新履歴の数も抑制される。その後、そのユーザがデータ検索指示を入力すると、更新履歴の数が抑制されているため、インデックスの更新が短時間で完了し、データ検索の応答時間も短くて済む。これにより、高速回線を使用していながら、データ検索時の応答時間が長期化してしまい、ユーザの要求するサービスの品質が満たせない事態を抑止できる。
一方、ユーザが端末装置を利用し、低速回線を介してデータ更新指示が入力された場合、インデックス更新処理の実行頻度が低くなる。すると、データ更新履歴保管部230に蓄積される更新履歴の数は増大するが、インデックス更新処理の実行に伴う処理負荷は軽減される。その後、そのユーザがデータ検索指示を入力すると、更新履歴の数が多く、高速回線の場合よりもデータ検索の応答時間も長くなる場合もあり得る。ただし、低速回線を使用しているユーザは、もともと通信速度が遅いため、高速回線よりも応答が遅れることを想定しており、若干応答時間が長くなったとしても、気にならないものと思われる。
このように、回線の通信速度に応じた更新確率を適用するようにすると、例えば、データ検索時のインデックス更新に起因する応答時間の増加量を、通信の応答時間の許容誤差の範囲内に抑えることができる。これにより、ユーザに対して、データ検索処理の遅延を感じさせずに、できるだけインデックス更新処理の頻度を抑止し、DBサーバ200の処理効率を向上させることができる。
〔その他の実施の形態〕
第2の実施の形態では、B−Treeのインデックスを用いているが、インデックスのデータ構造は、他の構造であってもよい。例えばインデックスは、B+Treeのデータ構造であってもよい。
また第2・第3の実施の形態では、DBサーバ200が、外部からのインデックス更新要求に応じてインデックスの更新処理を実行する機能を有しているが、DBサーバがそのような機能を有していない場合もある。その場合には、例えばWebサーバのインデックス更新決定部120,320からDBサーバに、インデックス更新要求に代えて、何らかのデータ検索を指示するデータ検索要求を送信することもできる。DBサーバでは、データ検索要求に応じてインデックス更新処理が実行される。これにより、インデックス更新要求に応じた処理の実行機能を有していないDBサーバを用いたシステムであっても、検索要求に対する応答時間のばらつきの抑止が可能となる。
また、第2・第3の実施の形態では、WebサーバとDBサーバとが連携して処理を実行しているが、WebサーバとDBサーバとの機能を1つの情報処理装置(コンピュータ)で実現することもできる。例えば、DBサーバ200が、Webサーバ100またはWebサーバ300の機能を有することもできる。
また、第2・第3の実施の形態では、乱数を生成することで、インデックスの更新処理を実行する確率が所定の値になるようにしているが、乱数の生成以外の手法で、インデックスの更新処理を実行する確率を制御することもできる。例えば、第1の実施の形態で示したように、データの更新回数に基づいてインデックスの更新処理を実行するか否かを判断することで、実行確率を所定の値にすることもできる。また、前回のインデックスの更新時刻からの経過時間を用いることもできる。その場合、Webサーバでは、例えば、インデックスの更新処理を実行する確率が「0.01」であれば、経過時間を100で除算する。そしてWebサーバは、除算により割り切れた場合(余りが「0」の場合)に、インデックスの更新処理を実行するものと決定する。
なお上記の実施の形態では、CPU101がプログラムを実行することによって実現するものとしたが、プログラムで記述された処理の一部を、電子回路に置き換えることが可能である。例えば、上記の処理機能の少なくとも一部を、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
1 情報処理装置
1a DB
1b 更新履歴記憶手段
1c データ更新手段
1d 決定手段
1e 出力手段
1f インデックス更新手段
1g 検索手段
2 端末装置

Claims (6)

  1. 情報処理装置が、
    複数のデータと該複数のデータのインデックスとを記憶する記憶部内のデータが更新された場合、乱数を生成し、該乱数の値が所定の確率に応じた所定の範囲内であれば、前記インデックスの更新処理を実行する決定し、
    前記インデックスの更新処理を実行すると決定した場合、前記記憶部内の前記インデックスの更新を指示するインデックス更新要求を出力する、
    データベース管理方法。
  2. 前記情報処理装置が、
    前記情報処理装置にネットワークを介して接続された端末装置からのデータ更新指示に基づいて前記記憶部内のデータが更新されたときに、前記端末装置と前記情報処理装置との間の通信速度に応じて、前記所定の確率を決定する、
    請求項1記載のデータベース管理方法。
  3. 前記所定の確率の決定では、前記記憶部内のデータ更新指示を出力した前記端末装置と前記情報処理装置との間の通信速度が速いほど高い値を、前記所定の確率とする、
    請求項記載のデータベース管理方法。
  4. 前記情報処理装置、または前記情報処理装置にネットワークを介して接続された他の情報処理装置が、
    前記インデックス更新要求に応じて、前記インデックスの前回の更新処理の後に実行された前記記憶部内のデータの更新処理を示す履歴情報に基づいて、前記インデックスを更新する、
    請求項1乃至のいずれかに記載のデータベース管理方法。
  5. 情報処理装置に、
    複数のデータと該複数のデータのインデックスとを記憶する記憶部内のデータが更新された場合、乱数を生成し、該乱数の値が所定の確率に応じた所定の範囲内であれば、前記インデックスの更新処理を実行する決定し、
    前記インデックスの更新処理を実行すると決定した場合、前記記憶部内の前記インデックスの更新を指示するインデックス更新要求を出力する、
    処理を実行させるプログラム。
  6. インデックスを有するデータベースのデータが更新された場合、乱数を生成し、該乱数の値が所定の確率に応じた所定の範囲内であれば、前記インデックスの更新処理を実行する決定する決定手段と、
    前記インデックスの更新処理を実行すると決定した場合、前記インデックスの更新を指示するインデックス更新要求を出力する出力手段と、
    を有する情報処理装置。
JP2014507098A 2012-03-27 2012-03-27 データベース管理方法、プログラム、および情報処理装置 Active JP5907251B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014507098A JP5907251B2 (ja) 2012-03-27 2012-03-27 データベース管理方法、プログラム、および情報処理装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
PCT/JP2012/057953 WO2013145129A1 (ja) 2012-03-27 2012-03-27 データベース管理方法、プログラム、および情報処理装置
JP2014507098A JP5907251B2 (ja) 2012-03-27 2012-03-27 データベース管理方法、プログラム、および情報処理装置

Publications (2)

Publication Number Publication Date
JPWO2013145129A1 JPWO2013145129A1 (ja) 2015-08-03
JP5907251B2 true JP5907251B2 (ja) 2016-04-26

Family

ID=49258496

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014507098A Active JP5907251B2 (ja) 2012-03-27 2012-03-27 データベース管理方法、プログラム、および情報処理装置

Country Status (3)

Country Link
US (1) US10437806B2 (ja)
JP (1) JP5907251B2 (ja)
WO (1) WO2013145129A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9400817B2 (en) * 2013-12-31 2016-07-26 Sybase, Inc. In-place index repair
JP6273892B2 (ja) * 2014-02-21 2018-02-07 株式会社リコー データ検索装置、プログラム、及びデータ検索システム
JP2019067119A (ja) 2017-09-29 2019-04-25 富士通株式会社 個人情報管理プログラム、個人情報管理方法および情報処理装置
CN112328275A (zh) * 2020-10-10 2021-02-05 岭东核电有限公司 用于核电厂的数据更新方法、装置、终端设备和存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06215037A (ja) 1993-01-18 1994-08-05 Fuji Xerox Co Ltd インデックスの自動更新装置
CA2170564A1 (en) * 1996-02-28 1997-08-29 Frank Michael Kappe Method of propagating data through a distributed information network
US7653665B1 (en) * 2004-09-13 2010-01-26 Microsoft Corporation Systems and methods for avoiding database anomalies when maintaining constraints and indexes in presence of snapshot isolation
EP1884959B1 (en) * 2006-07-31 2011-09-14 Agfa HealthCare NV Phosphor or scintillator screens or panels having a topcoat layer.
US7814117B2 (en) * 2007-04-05 2010-10-12 Oracle International Corporation Accessing data from asynchronously maintained index
US7805595B2 (en) * 2007-04-20 2010-09-28 Arm Limited Data processing apparatus and method for updating prediction data based on an operation's priority level
US7779045B2 (en) * 2007-09-27 2010-08-17 Microsoft Corporation Lazy updates to indexes in a database
WO2009119811A1 (ja) * 2008-03-28 2009-10-01 日本電気株式会社 情報再構成システム、情報再構成方法及び情報再構成用プログラム
JP5380130B2 (ja) 2009-03-30 2014-01-08 株式会社野村総合研究所 ファイル検索装置及びファイル検索方法、並びにプログラム
JP2011065546A (ja) * 2009-09-18 2011-03-31 Hitachi Solutions Ltd ファイル検索システム及びプログラム

Also Published As

Publication number Publication date
JPWO2013145129A1 (ja) 2015-08-03
US20140379727A1 (en) 2014-12-25
US10437806B2 (en) 2019-10-08
WO2013145129A1 (ja) 2013-10-03

Similar Documents

Publication Publication Date Title
US9734203B2 (en) Access path optimization through system statistics
US9052938B1 (en) Correlation and associated display of virtual machine data and storage performance data
US10891229B2 (en) Multi-level caching method and multi-level caching system for enhancing graph processing performance
US20170220572A1 (en) Key_value data storage system
TW201842454A (zh) 合併樹廢棄項目指標
JP5907251B2 (ja) データベース管理方法、プログラム、および情報処理装置
US20150363470A1 (en) Index merge ordering
US10747773B2 (en) Database management system, computer, and database management method
JP6269140B2 (ja) アクセス制御プログラム、アクセス制御方法、およびアクセス制御装置
US10095737B2 (en) Information storage system
KR101640733B1 (ko) 인-메모리 데이터베이스 기반의 데이터 관리 시스템 및 그 방법
JP5076015B1 (ja) 情報処理装置、クライアント管理方法及びクライアント管理システム
JP5160483B2 (ja) ストレージシステム及びデータマイグレーション対応検索システム
JP5083408B2 (ja) 構成管理装置、構成管理プログラム、構成管理方法
JP6084700B2 (ja) 検索システム及び検索方法
WO2012081165A1 (ja) データベース管理装置及びデータベース管理方法
JP2006134191A (ja) 文書検索方法およびそのシステム
JP7068210B2 (ja) データベース管理システム、端末装置及び方法
JP5472885B2 (ja) プログラム、ストリームデータ処理方法及びストリームデータ処理計算機
JP6688433B2 (ja) 計算機システム
JP6193491B2 (ja) 計算機システム
US11947822B2 (en) Maintaining a record data structure using page metadata of a bookkeeping page
JP5673224B2 (ja) 情報管理装置、情報管理方法、及びプログラム
JP6627809B2 (ja) データベース処理装置、システム、方法およびプログラム
JP6167015B2 (ja) 情報処理システム、管理プログラム、及びインデックス管理方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151208

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160202

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: 20160223

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160307

R150 Certificate of patent or registration of utility model

Ref document number: 5907251

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150