[go: up one dir, main page]

JP4327481B2 - Database system, server, inquiry input method and data update method - Google Patents

Database system, server, inquiry input method and data update method Download PDF

Info

Publication number
JP4327481B2
JP4327481B2 JP2003071908A JP2003071908A JP4327481B2 JP 4327481 B2 JP4327481 B2 JP 4327481B2 JP 2003071908 A JP2003071908 A JP 2003071908A JP 2003071908 A JP2003071908 A JP 2003071908A JP 4327481 B2 JP4327481 B2 JP 4327481B2
Authority
JP
Japan
Prior art keywords
rule
server
query
inquiry
database
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2003071908A
Other languages
Japanese (ja)
Other versions
JP2004280528A (en
Inventor
芳生 鈴木
真二 藤原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2003071908A priority Critical patent/JP4327481B2/en
Priority to US10/751,419 priority patent/US7146357B2/en
Publication of JP2004280528A publication Critical patent/JP2004280528A/en
Application granted granted Critical
Publication of JP4327481B2 publication Critical patent/JP4327481B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F16/217Database tuning
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/25Integrating or interfacing systems involving database management systems
    • G06F16/256Integrating or interfacing systems involving database management systems in federated or virtual databases
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99935Query augmenting and refining, e.g. inexact access

Landscapes

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

Description

【0001】
【発明が属する技術分野】
本発明は、問い合わせを実行する複数のデータベースサーバと、外部から受け付けた問い合わせをデータベースサーバへ投入するフロントエンドサーバとから構成される検索システムに関する。
【0002】
【従来の技術】
近年、性能や信頼性向上を目的として、データベースの並列化・分散化が進められている。図22に、従来のデータベースシステムの典型的な構成例を示す。
【0003】
この従来のデータベースシステムは、一つのマスターデータベース103に対し、複数のレプリカデータベース104を作成し、フロントエンドサーバ102は、それらのレプリカデータベース104に問い合わせを分散して投入することによって、データベースの検索性能の向上が図られている。また、一方を運用系とし、他方を待機系として、障害時に両者を切りかえることによって信頼性の向上が図られる場合もある。
【0004】
このように複数のサーバに対して問い合わせを分散して投入する方法として、ラウンドロビンで割り当てるサーバを決定する方法、又は、CPU利用率等の負荷を計測し負荷の軽いサーバへ割り当てる方法が従来から用いられている。
【0005】
例えば、各バッチジョブのリソース使用量を計算しておき、複数のジョブを実行する場合には、累計のリソースを計算し、累計リソースがサーバの許容量を超える場合には、新たなジョブを投入しないことによってリソース競合を回避するバッチジョブのスケジューリング方法が提案されている(例えば、特許文献1参照。)。
【0006】
データベースシステムの性能をさらに向上させるためには、レプリカデータベース104における、データベースバッファ競合、ディスク競合等のリソース競合を回避することが重要となる。
【0007】
以下、図23、図24を用いてデータベースバッファ競合(キャッシュ競合)について説明する。ディスク201はサーバ200に接続されており、ディスク201には3つの表(205、206、207)が格納されている。表1(205)のデータを要求する問い合わせ1(220)が、サーバ200に投入されると、ディスク201上の表1(205)から必要なデータが問い合わせに送信される。
【0008】
ディスクの入出力(ディスクI/O)は、メモリの入出力に比べ、多くの処理時間を要するため、ディスクの入出力のキャッシュとしてメモリが用いられる。このキャッシュ領域(データベースバッファ)はメモリ203上に作成され、数KBのデータページ204に分割されて構成されている。データページ204はLRU(Least Recently Used)によって、頻繁に利用されるデータほどメモリ203上に残るように管理される。
【0009】
表1(205)のデータを取得する問い合わせ1(220)が発行された場合、データベースバッファが検索され、メモリ203上のデータベースバッファに必要とする表1(205)のデータが記憶されていれば、ディスクI/Oなしで結果を得ることが可能である。
【0010】
一方、図24(A)に示すように、表2(206)のデータを取得する問い合わせ2(221)が、サーバ200に投入されると、メモリ300に必要なデータが記憶されていないため、ディスクI/Oが行われる。そして、図24(B)に示すようにメモリ301の一部は、問い合わせの内容である表2(206)のデータで上書きされる。
【0011】
例えば、それぞれの内容が異なり、かつ、大きな結果を要求する二つの問い合わせが連続して実行される場合、お互いがメモリ300上のデータベースバッファを上書きしあい、問い合わせの実行の度にディスクI/Oが生じる。逆に、内容が共有できる問い合わせの場合は、キャッシュ(データベースバッファ)がに記憶されているデータを使用できる可能性が高く、少ないディスクI/Oで結果を得ることができる。このように、問い合わせには相性があり、問い合わせの投入順序によって、データベースシステムの性能が変化する。
【0012】
データベースバッファ競合(キャッシュ競合)を回避する方法としては、同じデータを要求する複数の問い合わせ間でデータベースバッファを共有させる方法がある。例えば、2つの異なる問い合わせ(クエリ)が、同一のデータを要求し、かつそのデータがデータベースバッファ領域より大きい場合に、最初のクエリがデータを途中まで読んだところで、2番目の問い合わせ(クエリ2)クエリが呼ばれると、データの前半部分はすでにデータベースバッファ上から消去されている可能性がある。すなわち、クエリが必要とするデータが大きい場合には、1番目の問い合わせ(クエリ1)が現在読んでいるデータの後半部分によって、該データの前半部分が上書きされている可能性がある。
【0013】
このような場合、該データの前半部分は、クエリ2によってディスクから再度読み込みされ、バッファが上書きされる。しかし、上書きした部分に記憶されていたデータ(クエリ1が読みこんだデータの後半部分)は、この後クエリ2によっても必要とされるデータなので、無駄なディスクI/Oが生じる。そこで、2番目の読みこみでは、最初から読むのではなく、最初の問い合わせ(クエリ1)とバッファを共有しながら、実行中のクエリ1と同じ場所から読む方法(メリーゴーランドスキャン)がMicrosoft社のデータベース製品であるSQL Serverに導入されている(例えば、非特許文献1参照)。
【0014】
他のバッファを有効利用する方法としては、データの重要度に応じて、キャッシュを分類する方法もある。Oracle社のデータベース製品であるOracleでは、バッファをキープ・デフォルト・リサイクルの3つの領域に分類し、領域毎にサイズや、管理方法の指定を可能としている。例えば、バッファに常駐してほしいデータは、キープへ、上書きされてもよいものはリサイクルへ、その他はデフォルトというように、バッファを分類する。但し、設定にはデータの性質についての理解が必要であり、データのサイズやシステム構成が変化する度に設定の変更が必要となる。
【0015】
分散化・並列化された計算機環境では、性能に加えて運用コストの増大が大きな問題となる。管理対象の計算機が増加すれば、運用コストは増大する。
【0016】
ITシステムを用いたビジネスでは、システムダウンが莫大な損失に結びつくため、システムの安定運用が必須となる。例えば、システムへのアクセス集中によるシステムダウンを回避するために、アクセス数に応じてサーバを追加することが行われる。
【0017】
このように頻繁に構成や設定が変わる環境では、変化に追従して管理を行うことは容易ではない。環境が変化する度に、人手で計算機毎にチューニングや環境設定を実施した場合は、運用管理コストが大きくなってしまう。この運用管理コストを低下させる方法としては、自動チューニングがある。Microsoft社のSQL Serverなど、データベース単体の設定パラメータについては、自動チューニングができる製品がある。ただし、並列分散環境への対応は十分でない。
【0018】
運用コストを低下させる他の方法として、運用管理(全部又は一部)を、ITシステムの管理を請け負うMSP(Management Service Provider)を利用して、外部に委託する方法がある。例えば、MSPによって提供される監視サービスにおいては、サーバのCPU利用率などの性能情報を監視し、予め定めた閾値を超えたらアラームを発するといったサービスが実施される。
【0019】
【特許文献1】
特開平9−311795号公報
【非特許文献1】
”データベース アーキテクチャ”、[online]、インターネット<URL:http://www.microsoft.com/japan/msdn/sqlserver/sql2000/thestorageengine.asp>
【0020】
【発明が解決しようとする課題】
データベースシステムに投入される問い合わせには、他の問い合わせやサーバとの相性がある。相性の悪い組み合わせでは、リソース競合が生じ性能が低下する。例えば、データベースバッファの競合が発生すると、メモリに比べて速度が遅いディスクI/Oが発生し大きな性能上の問題が生じる。
【0021】
データベース単体でみた場合には、自動チューニング技術が開発されているが、並列・分散環境でシステム全体を最適化する技術はない。
【0022】
問い合わせを複数のサーバに分散させる方法として、例えば、ランドロビンでサーバを選択する、又は、負荷の軽いサーバを選択する方法がある。このような方法では、問い合わせ間の相性やサーバとの相性を考慮していないので、実行時にリソース競合が生じる可能性がある。そこで、並列・分散環境において、問い合わせ間や問い合わせとサーバとの間の相性を考慮して、適切なスケジューリングを実施することによって、リソース競合を回避しシステム全体のスループットを向上させることが必要となる。
【0023】
また、サーバの並列化・分散化が進み、管理対象のサーバが多くなると、個別に細かいチューニングを行うのは困難であり高コストとなる。また、単体のサーバだけでなく、システム全体として管理することは容易ではない。そこで、並列・分散環境において、スケジューリング方法を自律的に学習し、システム全体を低コストで管理することが必要となる。
【0024】
【課題を解決するための手段】
本発明は、同一内容の検索が可能なデータベースを有し、問い合わせ要求に従って該データベースを検索する複数のデータベースサーバと、前記問い合わせ依頼を受け付け、定められたルールを用いて前記データベースサーバに問い合わせを投入するフロントエンドサーバと、前記フロントエンドサーバが使用するルールを管理する管理サーバと、前記各サーバ及び問い合わせを要求するクライアント端末を接続するネットワークと、を備え、前記管理サーバは、前記データベースサーバの実行ログを取得するログ取得手段と、前記取得したログを用いて計算された問い合わせに関する相性に基づいて前記ルールを生成するルール生成手段と、を有し、前記フロントエンドサーバは、前記管理サーバで生成されたルールを用いて、前記問い合わせを投入する問合せ投入手段を有する。
【0025】
【発明の作用及び効果】
本発明では、同一内容の検索が可能なデータベースを有し、問い合わせ要求に従って該データベースを検索する複数のデータベースサーバと、前記問い合わせ依頼を受け付け、定められたルールを用いて前記データベースサーバに問い合わせを投入するフロントエンドサーバと、前記フロントエンドサーバが使用するルールを管理する管理サーバと、前記各サーバ及び問い合わせを要求するクライアント端末を接続するネットワークと、を備えるデータベースシステムで用いられる問い合わせ投入方法において、前記管理サーバは、前記データベースサーバの実行ログを取得し、前記取得したログを用いて計算された問い合わせに関する相性に基づいて前記ルールを生成し、前記フロントエンドサーバは、前記管理サーバで生成されたルールを用いて、前記問い合わせを投入する。すなわち、フロントエンドサーバにキュー及びスケジューラを設け、問い合わせの間、又は、問い合わせとデータベースサーバとの間の相性を判断し、スケジューラにおいて相性のよい組み合わせで問い合わせを投入する。そしてこのスケジューリングは、ルールに基づいて行い、リソース競合を回避するようにスケジューリングがされるので、データベースシステム全体の性能向上を図ることができる。
【0026】
また、管理サーバはデータベースサーバの実行ログを取得し、取得した実行ログを統計的に分析することによって、問い合わせ間、又は、問い合わせとデータベースサーバとの間の相性を計算し、計算した相性に基づいてルールを生成し、フロントエンドサーバに送信する。このルールは実行ログに基づいて生成されるので、環境や問い合わせの特徴が変化した場合でも自律的にルールを学習することができる。
【0027】
【発明の実施の形態】
図1は、本発明の第1の実施の形態のデータベースシステムの構成図である。
【0028】
クライアント100は、ネットワーク101(イントラネットやインターネット(登録商標、以下同じ))を介して、データベースに対して問い合わせを発行する。
【0029】
データベースは、データベースサーバ(フロントエンド)102及びバックエンドの複数のデータベースサーバ103、104によって構成される。フロントエンド102は、問い合わせを受け付け、バックエンドのデータベースサーバ03、104に問い合わせを投入(ディスパッチ)する。
【0030】
バックエンドのデータベースサーバは、1台のマスタデータベースサーバ(マスタ)103と、複数のレプリカデータベースサーバ(レプリカ)104によって構成される。マスタ103を記憶装置106有し、レプリカ104は記憶装置107を有する。レプリカ104に接続される記憶装置107は、マスタ103に接続される記憶装置106と同じ内容が記録されている。通常、マスタ103では記憶内容の更新処理及び検索処理が行われるが、レプリカ104では検索処理のみが行われる。そして、定期的にレプリケーションを行うことによって、マスタ103の記憶装置106の変更内容をレプリカ104の記憶装置107に反映させる。
【0031】
レプリカ104は、問い合わせ実行部111及びログ記録・送信部110によって構成される。問い合わせ実行部111は、フロントエンド102が送信した問い合わせを実行する。ログ記録・送信部110は、実行のログ(問い合わせの種類、処理時間等)を記録し、管理サーバ105へ送信する。
【0032】
管理サーバ105は、ログ取得部120、相性計算部121、ルール生成部122及びルール管理部123によって構成される。また、管理サーバ105は、ルールデータベース140を有する。
【0033】
ログ取得部120は、レプリカ104が送信した実行ログを受信し、レプリカ104の実行ログを取得する。
【0034】
相性計算部121は、ログ取得部120が取得した実行ログを解析し、問い合わせに関する相性として、問い合わせ間の相性や、問い合わせとレプリカ104との相性を計算する。相性は、実行ログに記憶される問い合わせの属性間、問い合わせの属性とレプリカとの間、問い合わせを発行したユーザ間で計算することができる。
【0035】
ルール生成部122では、計算された相性に基づいて、問い合わせをスケジューリングするためのルールを生成する。例えば、問い合わせAと問い合わせBとは相性がよいので、同じレプリカ104へ投入すべきというルールが生成される。ここで、生成されたルールは、フロントエンド102へ送信される。
【0036】
ルール管理部123は、ルール生成部122によって生成されたルール及びフロントエンド102で記録された該ルールの適用回数をルールデータベース140へ格納する。また、ルールデータベース140には、各レプリカ104のハードウェアやソフトウェアの性能情報(例えば、CPU利用率、メモリ使用率等のリソース使用率)を保存することもできる。管理者は、ルール及び該ルールの適用回数に関する情報によって実際にどのルールが使用されているかを管理することが可能になる。
【0037】
フロントエンド102は、キュー131及びスケジューラ130を有し、クライアント100から受信した問い合わせをキュー131で受け付け、スケジューラ130がスケジューリングして、問い合わせ104を分配して、投入する。
【0038】
スケジューラ130は、管理サーバ105が生成したルールに基づいてスケジューリングをし、問い合わせを投入するレプリカ104を決定する。レプリカ104への問い合わせの投入の際、ルール毎にそのルールが適用された回数を記録しておく。ルールの適用回数に関する情報は、管理サーバ105へ送信される。
【0039】
レプリカ104が問い合わせを実行する。そして、レプリカ104において実行された問い合わせに基づいて、管理サーバ105が相性を計算し、ルールを生成する。そして、管理サーバにおいて生成されたルールに基づいて、フロントエンド102がレプリカ104に問い合わせを投入する。そして、レプリカ104が問い合わせを実行する。
【0040】
このサイクルが繰り返されることによって、システム変更(例えば、サーバの追加、データサイズの増加)や、入力の変化(例えば、入力負荷の増加、問い合わせ内容の変化)に適応したスケジューリングルールの自律的な生成が可能になる。フロントエンド102において、生成されたスケジューリングルールを用いて、リソースの競合を回避する組み合わせで問い合わせを投入することによって、データベースシステム全体の性能向上を低コストで実現することが可能となる。
【0041】
次に、レプリカ104、管理サーバ105及びフロントエンド102の処理のについて説明する。
【0042】
図2は、本発明の第1の実施の形態のデータベースサーバ(レプリカ104)の処理を示すフローチャートである。
【0043】
まず、クライアント100からの問い合わせを受け付ける(ステップ400)。そして、受け付けた問い合わせを実行する(ステップ401)。続いて、問い合わせの実行ログ410を記録し(ステップ402)、実行ログ410を管理サーバ105へ送信する。そして、次の問い合わせを受け付ける(ステップ400)。
【0044】
実行ログ410は、問い合わせ単位でリアルタイムに送信してもよい。例えば、問い合わせの実行毎にイベントを送信し、実行ログの取得先(管理サーバ105)では、イベントを取得することによって、実行ログを記録する(例えば、Microsoft社のSQL Server2000)。また、複数の問い合わせの実行ログ410をまとめて送信してもよい。例えば、一定期間、レプリカ104で実行ログ410を記録・保存しておき、適当なタイミングで管理サーバ105にバッチ転送する。
【0045】
実行ログ410は、図3に示す形式で送信される。すなわち、問い合わせ毎に、問い合わせ内容(SQL文やストアドプロシージャ)700、処理時間701、開始時刻702、終了時刻703、ユーザ名704等の問い合わせの属性を記録する。
【0046】
また、実行ログ410に加えて、ハードウェアやソフトウェアのリソース使用率など、他の性能情報を管理サーバ105へ送ることもできる。例えば、レプリカ104のCPU利用率、メモリ使用率などが考えられる。これらの性能情報は、相性計算に必須ではないが、時系列データとして管理しておくことによって、レプリカ104の性能の監視・分析に役立つ。
【0047】
図4は、本発明の第1の実施の形態の管理サーバ105の処理を示すフローチャートである。
【0048】
レプリカ104から実行ログ410を取得する(ステップ500)。
【0049】
そして、相性計算の前処理として問い合わせのグループ化を行う(ステップ501)。相性計算は、個々の問い合わせ毎ではなく、複数の問い合わせをパターン毎に分類してグループ化したグループ毎に行う必要がある。個々の問い合わせ毎に行うと、問い合わせの種類だけルールが生成され、該ルールは全く同一の問い合わせに対してのみ適用されるため、ルールの利用性が低くなってしまう。また、個別に計算すると、相性の組み合わせ数が多くなり、処理負担が多くなる。
【0050】
そして、グループ化の後、グループ単位に相性を計算し(ステップ502)、相性計算の結果をルール化する(ステップ503)。最後に、生成したルール510をフロントエンド102へ送信する(ステップ504)。
【0051】
フロントエンド102では、受信したルールに基づいてスケジューリングを実行して、適当なタイミング(予め定めた間隔、又は、管理サーバ105より要求があったとき)に、ルールと適用回数を管理サーバ105へフィードバックする。
【0052】
管理サーバ105では、ルール及びルールの適用回数を受信し(ステップ505)、受信した情報をルールデータベース140へ保存する(ステップ506)。
【0053】
図5は、本発明の第1の実施の形態の問い合わせのグループ化(ステップ501)を説明する図である。
【0054】
以下、“select a from A where b > 3"という単純な検索SQLを用いてグループ化について説明する。ここでは、from句の引数として記述されるAが、テーブル名である。テーブルは複数の行より構成され、行は複数の列より構成される。where句の引数では、検索条件として列名を指定する。この場合は、テーブルAの列bが3より大きいという条件を指定している。どの列を結果として返すかは、select句の引数で指定する(この例では、列aのみを取得している)。
【0055】
図5(A)に示すグループ化例1では、使用するテーブルによって、問い合わせをグループ化する。検索条件内で使用されるテーブルが同一である問い合わせが同一クエリにグループ化される。よって、テーブルAのみを使用する問い合わせ1011及び問い合わせ1012は、同じグループに分類され、テーブルBのみを使用する問い合わせ1013及び問い合わせ1014は、同じグループに分類される。
【0056】
図5(B)に示すグループ化例2では、テーブル名及び取得列名によって問い合わせをグループ化する。検索条件内で使用されるテーブル及び検索結果として返される列名が同一である問い合わせが同一クエリにグループ化される。よって、テーブルAの列aを取得する問い合わせ1021及び問い合わせ1022は同じグループに分類され、テーブルAの列a及びcを取得する問い合わせ1023及び問い合わせ1024は、同じグループに分類される。このとき検索条件は異なってもよい。
【0057】
図5(C)に示すグループ化例3では、テーブル名、取得列名及び検索条件によってグループ化する。検索条件内の定数値以外がすべて同一である問い合わせが同一クエリにグループ化される。よって、テーブルAの列bを用いて条件を指定し、テーブルAの列aを取得する問い合わせ1031と問い合わせ1032は同じグループに分類され、テーブルAの列cを用いて条件を指定し、テーブルAの列aを取得する問い合わせ1033と問い合わせ1034は同じグループに分類される。
【0058】
なお、図5(A)、図5(B)、図5(C)の順で詳細なグループ分けが可能になるが、グループ化のための処理量も増加する。
【0059】
次に、相性計算(ステップ502)について説明する。
【0060】
ここで、相性として、二つの問い合わせを同時に実行した場合の処理時間を、個別に実行する場合の処理時間と比べた処理時間の改善度を考える。例えば、二つの問い合わせについて検索条件内で使用されるテーブルが同じで、データベースバッファが共有できる場合には、これらの二つの問い合わせを同時又は連続して実行すると、処理時間を短縮することができるので、相性がよいということになる。逆に、データベースバッファが共有できない場合は、ディスク I/Oによって性能が劣化するため相性が悪いということになる。
【0061】
図6は、本発明の第1の実施の形態の問い合わせの実行状態を説明する図である。
【0062】
図6に示す例では、Qi(900)と同じ時間にQ2(902)が実行されている。また、Q1(901)の実行時間の一部はQi(900)の実行時間と重複している。
【0063】
本実施の形態では、Qi(900)の実行と重複する問い合わせQjを検索する。この検索は、Qjの終了時間 > Qi(900)の開始時間、かつ、Qjの開始時間 < Qi(900)の終了時間、の条件を満たすQjを検索する。図6に示す例では、Q1(901)、Q2(902)がこの条件に適合する。
【0064】
また、完全に重複する問い合わせだけを検索するのではなく、Qiの実行時間の前後に余裕時間Δを加えた時間(914)と重複する問い合わせQjを検索してもよい。この検索は、Qjの終了時間 > Qi(900)の開始時間−Δ(912)、かつ、Qjの開始時間 < Qi(900)の終了時間+Δ(913)、の条件を満たすQjを検索する。このように、余裕時間Δを用いて検索をすることによって、同時に実行された問い合わせに加え、Qiの直前直後に実行される問い合わせも対象に含めることができる。図6に示す例では、Q1(901)、Q2(902)に加えて、Q3(903)がこの条件に適合する。
【0065】
図7は、本発明の第1の実施の形態において相性計算に用いられる相性マトリックスを説明する図である。
【0066】
相性計算は、問い合わせ間の相性を示す相性マトリックスに基づいて行う。例えば、相性マトリックス800のCij(803)は、問い合わせQi(801)と問い合わせQj(802)との相性を表し、Qj(802)と同時に実行したときの、Qi(801)の処理時間の合計値である。一方、Ai(804)は、全てのQj(802)との組み合わせにおけるQi(801)の処理時間の合計値を表す。
【0067】
呼出マトリックス810は、相性を計算するのに何個の問い合わせを使用したかを表す。例えば、Tij(813)は、Cij(803)を計算するのに何個の問い合わせを使用したのか(実行ログ中で、Qi(801)がQj(802)と同時に呼び出された回数)を表す。Ti(814)は、Ai(804)の計算に使用された問い合わせの数(実行ログに含まれるQi(801)の実行回数)を表す。
【0068】
図8は、本発明の第1の実施の形態の相性計算(ステップ502)を示すフローチャートであり、レプリカ104のログ毎に実行される。
【0069】
まず、Qi(900)と同時に実行される問い合わせを検索する(ステップ1101)。例えば、図6において説明した方法によって検索が行われる。
【0070】
検索条件に適合した全てのjについて、式(1)〜(3)の計算を行い、相性マトリックス800及び呼出マトリックス810の値を更新する(ステップ1102、1103)。
【0071】
Cij = Cij + Qiの処理時間 (1)
Ai = Ai + Qiの処理時間 (2)
Tij = Tij + 1 (3)
最後に、相性マトリックス800の全要素について、式(4)によって値を更新する(ステップ1104、1105)。
【0072】
Cij = Ai/Ti − Cij/Tij (4)
この式(4)の右辺は、(Qi(801)の平均処理時間)−(Qj(802)と同時に実行した場合のQi(801)の平均処理時間)を表す。つまり、Qi(801)に関して、Qj(802)と同時に実行することによる性能改善効果が計算される。この値がQi(801)とQj(802)との間の相性となる。
【0073】
次に、ルールの生成(ステップ503)について説明する。
【0074】
ルールの生成(ステップ503)では、実行ログ410に記録される属性やサーバに関する相性について、ルール化を行う。例えば、問い合わせ間の相性、問い合わせとサーバとの間の相性、ユーザとサーバとの間の相性などが考えられる。ここでは、例として、問い合わせ間の相性に関するルール、問い合わせとサーバの相性に関するルールの生成について説明する。
【0075】
図9(A)は、本発明の第1の実施の形態の問い合わせ間のルールの生成(ステップ503)を示すフローチャートである。
【0076】
既に、レプリカ104毎に、相性マトリックス800、呼出マトリックス810の計算が終了している。また、図9(A)に示す計算は、レプリカ104の実行ログ410毎に行われる。
【0077】
最初に、全てのCijについてルール化の対象となるか否かを判定し、ルール化の対象を絞り込む(ステップ1201)。具体的には、Cijの絶対値をAiで除した値と、予め定めた定数との比較結果(予め定めた定数P1(0≦P1<1)より大きいか否かの判定結果)に基づいて、Cijをルール化の対象とするかを判定する。この条件による判定で、性能への影響が小さいCijをルール化への対象外とする。すなわち、相性の良い悪いにかかわらず、性能への影響の大きいものだけをルール化の対象とする。なお、P1=0とした場合は、全てのCijがルール化の対象となる。
【0078】
そして、|Cij|/Ai がP1より大きければルール化を行い(ステップ1202)、ルールリスト1へ追加する(ステップ1203)。
【0079】
図10(A)に、ルールリスト1(1910)を示す。ルールリスト1(1910)では、ルールは、問い合わせの組の条件1911、相性値1912及び回数1913によって構成される。回数1913はルールが適用された回数を表し、フロントエンド102で設定された値であり、初期値が0を設定される。
【0080】
ルールリスト1(1910)は、条件1201を満たす複数のルールによって構成される。すなわち、ルール化とは、Ci,jについて、問い合わせiとjの組1911として、Ci,jに対する相性値1912と、回数1913(初期値=0)をルールリスト1へ追加することである。
【0081】
図9(B)は、問い合わせとサーバとの間のルールの生成(ステップ503)を示すフローチャートである。
【0082】
最初に、ステップ1220において、サーバ毎に計算されたQiの平均実行時間Ai,sの平均 Ave(Ai,s) を計算する(sはサーバ名)。次に、全てのAi,sについて、条件1222において、改善率 |Ai,s−Ave(Ai,s)|/Ave(Ai,s) が予め定めた定数P2(0≦P2<1)より大きいか否かを判定する。この条件による判定で、性能への影響が小さいAi,sをルール化への対象外とする。すなわち、相性の良い悪いにかかわらず、性能への影響の大きいものだけをルール化の対象とする。なお、P2=0とした場合は、全てのAi,sがルール化の対象となる。
【0083】
そして、|Ai,s−Ave(Ai,s)|/Ave(Ai,s) がP2より大きければルール化を行い(ステップ1223)、ルールリスト2に記録する(ステップ1224)。
【0084】
図10(B)は、ルールリスト2(1930)を示す。ルールリスト2(1930)では、ルールは、問い合わせとサーバの組1931、相性値(Ave(Ai,s)−Ai,s)1932及び回数1933よって構成される。回数1934はルールが適用された回数を表し、フロントエンド102で設定された値であり、初期値が0に設定される。
【0085】
ルールリスト2(1930)は、条件1222を満たす複数のルールによって構成される。すなわち、ルール化とは、Ai,sについて、問い合わせiとサーバsの組1931として、(Ave(Ai,s)−Ai,s)を相性値1932として、回数1933(初期値=0)をルールリスト2へ追加することである。
【0086】
図11は、本発明の第1の実施の形態において、問い合わせとサーバ(レプリカ104)との間の相性計算に用いられる相性マトリックスを説明する図である。
【0087】
図7に示す相性マトリックス800及び呼出マトリックス810は、レプリカ104毎に設けられている。相性マトリックス800の、Aim(804)は、レプリカmにおいて、全てのQj(802)との組み合わせにおけるQi(801)の処理時間の合計値である。また、呼出マトリックス810の、Tim(814)は、レプリカmにおいて、Ai(804)の計算に使用された問い合わせの数(ログ中のQi(801)の実行回数)である。
【0088】
そして、問い合わせQi(801)が投入されるとき、レプリカmについての、Aim(804)を比較して、Aimの最小値を与えるレプリカが、Qiを実行するのに最も適するレプリカであるとして、レプリカと問い合わせ間の相性を判定する。
【0089】
図12は、本発明の第1の実施の形態の管理サーバ105が、ルールデータベース140において管理するデータファイルを説明する図である。
【0090】
データファイル2004は、ルール2000、2001、実行ログ2003及び性能情報2002よって構成される。ルールは、問い合わせ間の相性を表すルールリスト1(2000)と問い合わせとサーバの相性を表すルールリスト2(2001)によって構成される。ルールリスト1(2000)、実行ログ2003、性能情報2002は、各々レプリカ104の数だけ存在する。
【0091】
実行ログ2003は、各レプリカ104で実行された問い合わせに関する性能情報で、図3において前述した形式で保存される。この実行ログ2003に基づいてルール2000、2001が生成される。
【0092】
性能情報2004は、各レプリカ104のハードウェアやソフトウェアに関する性能情報の時系列データであり、例えば、CPU利用率、メモリ使用率等が記録されている。
【0093】
これらのデータファイル2004は、最新のデータだけ保存してもよいし、変更がある度に新たなデータを保存し、時系列データとして管理してもよい。
【0094】
次に、フロントエンド102の処理について説明する。
【0095】
図13は、本発明の第1の実施の形態のフロントエンド102の処理を示すフローチャートである。
【0096】
フロントエンド102では、受信したルールに基づいてスケジューリングを実行する。まず、管理サーバ105が送信したルール510(ルールリスト1、ルールリスト2)を受信する(ステップ600)。
【0097】
そして、ルールを編集する必要があるか否かを判定し(ステップ601)、必要な場合には編集を実行する(ステップ602)。ルールは単純なif-then型で記述されているので、人間(管理者)が理解することができる。例えば、ある問い合わせは、特定のサーバで実行してほしい等の優先すべきルールが予め分かっている場合には、ルールを追加することが可能となる。また、不要なルールを削除したり、相性値を編集することによって、特定のルールが優先的に選択されるような設定をすることもできる。
【0098】
クライアント100より問い合わせを受け付けると(ステップ603)、スケジューリングを実施し(ステップ604)、レプリカ104へ問い合わせを投入する。その際、該ルールが適用された回数を、ルール毎にルールリストの回数部1913、1933(図10参照)へ記録する。そして、一定時間の経過や管理サーバ105からの要求が検出されるか否かを判定し(ステップ605)。ステップ605の条件が満たされるまでスケジューリング(ステップ604)が繰り返される。
【0099】
ステップ605の条件が満たされたタイミングで、ルールリスト520(ルール及びルールの適用回数)を管理サーバへ送信する。
【0100】
図14は、本発明の第1の実施の形態のスケジューリング(ステップ604)を示すフローチャートである。
【0101】
ここで、各レプリカ毎の問い合わせの実行数を記録する変数として“投入数”を用意する。各レプリカ104毎に投入された問い合わせ数を記録しておき、投入数が所定の閾値を超えないように制御することによって、特定のレプリカ104に問い合わせが集中して投入されることを防ぐ意味がある。
【0102】
また、問い合わせを投入可能なレプリカの組として”サーバリスト”を用意する。あるレプリカ104に対する投入数が閾値を超えた場合は、そのレプリカをサーバリストから除外し、以降の処理で、該サーバの選択を防止する。
【0103】
さらに、レプリカ毎に直前に実行したクエリを記録しておく変数として“直前クエリ”を用意する。
【0104】
スケジューリングでは、まず最初に初期化処理を行う。各レプリカの投入数を0に初期化し、全レプリカを含むサーバリストを構成する(ステップ1300)。そして、全レプリカの“直前クエリ”を空欄に初期化する(ステップ1320)。
【0105】
続いて、キューが空白か否かを判定する(ステップ1301)。キューが空白であれば、ステップ1301に戻り、キューが空白でなくなるまで待機する。一方、キューが空白でなければ、サーバリストに全サーバを加えた後、レプリカ毎に投入数を判定し、投入数が予め定めた閾値(N)を超える場合は、そのレプリカに問い合わせが集中して投入されているので、サーバリストから該レプリカを除外する(ステップ1303)。
【0106】
そして、キューから問い合わせを取りだし、ルールリスト1及びルールリスト2とのマッチングを行う(ステップ1304)。例えば、取り出された問い合わせがQiである場合は、{Qi,*}(*は任意)の形式のルールとマッチングを行う。
【0107】
ルールリスト2を用いると、*の部分がレプリカ名(Sj)であるルールとマッチして、Qiと相性が良い又は相性の悪いレプリカに関するルールが抽出される。
【0108】
ルールリスト1を用いると、投入可能な全てのレプリカ毎にマッチングが必要となる。最初に、“直前クエリ”変数を調査することによって、あるレプリカ(R1)の直前に投入された問い合わせ(Qj)を調べ、レプリカ(R1)のルールリスト1に{Qi,Qj}に関するルールがあるか否かを検索する。マッチするルールがあり、相性値が正であれば、レプリカ(R1)に関しては、QiとQjとの相性はよいので、Qiはレプリカ(R1)に投入すべきである。レプリカに対して一度も問い合わせが実行されておらず、直前の問い合わせがない場合には、ルールリスト1を用いたマッチングは行わない。
【0109】
次に、相性が正であるルールがマッチしたか否かを判定する(ステップ1305)。そして、相性が正であるルールがある場合にはステップ1306へ進み、相性が正であるルールがない場合にはステップ1308へ進む。
【0110】
ステップ1305において相性が正であるルールがある場合には、複数のルールの中から一つのルールを選択し、そのルールが指示するレプリカへ問い合わせを投入する。選択に際しては、最も相性値の大きいルールを選択する(ステップ1306)。なお、最も相性値の大きいルールではなく、選択されたルールの中から確率的にルールを選択して、問い合わせを投入するレプリカ決定してもよい。
【0111】
そして、投入したレプリカに対して投入数を更新(1を加算)し、適用したルールの回数を更新(1を加算)する(ステップ1307)。そして、該レプリカの“直前クエリ”として、該ルールが指示する問い合わせを設定して(ステップ1326)、ステップ1301へ戻る。
【0112】
一方、ステップ1305において相性が正であるルールがなかった場合には、相性が負であるルールがあるか否かを判定する(条件1308)。そして、相性が負であるルールがある場合にはステップ1309へ進み、相性が負であるルールがない場合にはステップ1311へ進む。
【0113】
ステップ1308において相性が負であるルールがある場合には、サーバリストに含まれるレプリカから、相性が負であるルールが指示するレプリカを除外したサーバリストを作成する。そして、作成したサーバリストの中から確率的に(ランダムに)レプリカを選択し、問い合わせを投入する(ステップ1309)。続いて、投入したレプリカに対して投入数を更新(1を加算)し、適用したルールの回数を更新(1を加算)する(ステップ1310)。そして、該レプリカの“直前クエリ”として、該ルールが指示する問い合わせを設定して(ステップ1323)、条件1301へ戻る。
【0114】
一方、ステップ1308において相性が負であるルールがなかった場合には、サーバリストの中から確率的に(ランダムに)サーバを選択し、問い合わせを投入する。続いて、投入したレプリカに対して投入数を更新(1を加算)し、適用したルールの回数を更新(1を加算)する(ステップ1312)。そして、該レプリカの“直前クエリ”として、該ルールが指示する問い合わせを設定して(ステップ1322)、条件1301へ戻る。
【0115】
以上説明したように、第1の実施の形態では、問い合わせを実行する複数のレプリカ104と、レプリカ104に問い合わせを配分して投入するフロントエンド102からなるデータベースシステムにおいて、フロントエンド102にキュー131及びスケジューラ130を設け、問い合わせの間、又は、問い合わせとレプリカ104との間の相性を判断し、スケジューラ130において相性のよい組み合わせを抱き合わせて、レプリカ104に問い合わせを投入する。スケジューラ130は、ルールに基づいて機能し、リソース競合を回避するようにスケジューリングすることによって、リソースの競合が回避され、システム全体の性能(スループット)を向上させることができる。
【0116】
また、管理サーバ105は、レプリカ104の実行ログを収集し、収集した実行ログを統計解析することによって、問い合わせ間、又は、問い合わせとレプリカとの間の相性を計算する。計算した相性に基づいてルールを生成し、フロントエンド102に送信する。ルールは実行ログを用いて計算されるため、システム構成、問い合わせの内容や頻度が変化した場合でも自律的に学習することが可能であり、低コストな運用が可能となる。
【0117】
また、相性は人間にも理解可能な形式でルール化されるため、ルールの編集、追加、削除が可能となり、自律的学習に人間の意思を反映させることができる。
【0118】
次に、本発明の第2の実施の形態について説明する、第2の実施の形態では、第1の実施の形態における問い合わせ間及び問い合わせとサーバ間の相性に加えて、ユーザ間の相性による判定をすることもできる。その場合は、問い合わせ間の相性マトリックス800に加え、ユーザ間の相性マトリックス2100、2101を用いる。
【0119】
図15に、本発明の第2の実施の形態において相性計算に用いられるユーザ間の相性マトリックスを説明する図である。
【0120】
相性マトリックス2100のCij(2103)は、ユーザi(Ui:2101)とユーザj(Uj:2102)との相性であり、Uj(2102)が投入した任意のクエリと同時に実行したときの、Ui(2101)が投入した任意の問い合わせの処理時間の合計値を表す。また、Ai(2104)は、Ujにかかわらず、Ui(2101)が投入した全ての問い合わせの処理時間の合計値を表す。
【0121】
呼出マトリックス2110は、相性を計算するのに何個の問い合わせを使用したかを表す。例えば、Tij(2113)は、Cij(2103)を計算するのに何個の問い合わせを使用したのかを表す。すなわち、ログ中で、Ui(2101)が投入した問い合わせが、Uj(2102)が投入した問い合わせと同時に実行された回数である。Ti(2114)は、Ai(2104)の計算に使用された問い合わせの数(Ui(2101)が問い合わせを実行した回数)を表す。
【0122】
問い合わせの相性と同様の方法で、ユーザ間の相性を計算し、ルールを生成し、ルールリスト3(2130)へルールを保存する。ルールリスト3(2130)では、ルールは、ユーザの組2131と相性値2131と回数2134によって構成される。
【0123】
図16は、本発明の第2の実施の形態のユーザ間の相性を考慮する場合のスケジューリング(ステップ604)を示すフローチャートである。なお、図16に示すスケジューリング処理は、図14に示すスケジューリング処理とステップ2200、2201、2202、2202、2203、2204において相違する。
【0124】
ここで、各レプリカ毎の問い合わせの実行数を記録する変数として“投入数”を、問い合わせを投入可能なレプリカの組として”サーバリスト”を、レプリカ毎に直前に実行したクエリを記録しておく変数として“直前クエリ”を用意する。さらに、該問い合わせを実行したユーザを記録する変数である“直前ユーザ”を用意する。
【0125】
スケジューリングでは、まず最初に初期化処理を行う。各レプリカの投入数を0に初期化し、全レプリカを含むサーバリストを構成する(ステップ1300)。そして、全レプリカの“直前クエリ”及び”直前ユーザ”を空欄に初期化する(ステップ2200)。
【0126】
続いて、キューが空白か否かを判定する(ステップ1301)。キューが空白であれば、ステップ1301に戻り、キューが空白でなくなるまで待機する。一方、キューが空白でなければ、サーバリストに全サーバを加えた後、レプリカ毎に投入数を判定し、投入数が予め定めた閾値(N)を超える場合は、そのレプリカに問い合わせが集中して投入されているので、サーバリストから該レプリカを除外する(ステップ1303)。
【0127】
そして、キューから問い合わせを取りだし、ルールリスト1及びルールリスト2とのマッチングを行う(ステップ1304)。例えば、キューから取り出した問い合わせを投入したユーザ(Uiとする)についてマッチングを行う。このマッチングにおいては、レプリカ毎にルールリスト3に条件部が{Ui,“直前ユーザ”}となるルールがあるかを調べる。すなわち、ユーザ(Ui)が投入する問い合わせと相性が良い問い合わせを投入するユーザがいるか、又は、相性が悪い問い合わせを投入するユーザがいるかを判定する。
【0128】
次に、相性が正であるルールがマッチしたか否かを判定する(ステップ1305)。そして、相性が正であるルールがある場合にはステップ1306へ進み、相性が正であるルールがない場合にはステップ1308へ進む。
【0129】
ステップ1305において相性が正であるルールがある場合には、複数のルールの中から一つのルールを選択し、そのルールが指示するレプリカへ問い合わせを投入する。選択に際しては、最も相性値の大きいルールを選択する(ステップ1306)。なお、最も相性値の大きいルールではなく、選択されたルールの中から確率的にルールを選択して、問い合わせを投入するレプリカ決定してもよい。
【0130】
そして、投入したレプリカに対して投入数を更新(1を加算)し、適用したルールの回数を更新(1を加算)する(ステップ1307)。そして、該レプリカの“直前クエリ”として、該ルールが指示する問い合わせを設定し、“直前ユーザ”として、該問い合わせを投入したユーザを設定して(ステップ2204)、ステップ1301へ戻る。
【0131】
一方、ステップ1305において相性が正であるルールがなかった場合には、相性が負であるルールがあるか否かを判定する(条件1308)。そして、相性が負であるルールがある場合にはステップ1309へ進み、相性が負であるルールがない場合にはステップ1311へ進む。
【0132】
ステップ1308において相性が負であるルールがある場合には、サーバリストに含まれるレプリカから、相性が負であるルールが指示するレプリカを除外したサーバリストを作成する。そして、作成したサーバリストの中から確率的に(ランダムに)レプリカを選択し、問い合わせを投入する(ステップ1309)。続いて、投入したレプリカに対して投入数を更新(1を加算)し、適用したルールの回数を更新(1を加算)する(ステップ1310)。そして、該レプリカの“直前クエリ”として、該ルールが指示する問い合わせを設定し、“直前ユーザ”として、該問い合わせを投入したユーザを設定して(ステップ2203)、ステップ1301へ戻る。
【0133】
一方、ステップ1308において相性が負であるルールがなかった場合には、サーバリストの中から確率的に(ランダムに)サーバを選択し、問い合わせを投入する。続いて、投入したレプリカに対して投入数を更新(1を加算)し、適用したルールの回数を更新(1を加算)する(ステップ1312)。そして、該レプリカの“直前クエリ”として、該ルールが指示する問い合わせを設定し、“直前ユーザ”として、該問い合わせを投入したユーザを設定して(ステップ2202)、ステップ1301へ戻る。
【0134】
以上説明したように、第2の実施の形態では、問い合わせを実行する複数のレプリカ104と、レプリカ104に問い合わせを配分して投入するフロントエンド102からなるデータベースシステムにおいて、フロントエンド102にキュー131及びスケジューラ130を設け、問い合わせを投入するユーザ間の相性、又は、問い合わせを投入するユーザとレプリカ104との相性を判断し、スケジューラ130において相性のよい組み合わせを抱き合わせて、レプリカ104に問い合わせを投入する。スケジューラ130は、ルールに基づいて機能し、リソース競合を回避するようにスケジューリングすることによって、リソースの競合が回避され、システム全体の性能(スループット)を向上させることができる。
【0135】
次に、本発明の第3の実施の形態について説明する、第3の実施の形態においては、外部サーバをネットワーク経由で管理サーバに接続し、外部サーバから管理サーバへのアクセスを可能とすることによって、外部から監視、管理を行うことができる。
【0136】
図17は、本発明の第3の実施の形態のデータベースシステムの構成図である。
【0137】
管理サーバ105はネットワーク1601(イントラネットやインターネット)に接続される。管理サーバ105はネットワーク1601を介して、管理を請け負うMSP(Management Service Provider)の監視・分析サーバへ接続1600される。管理サーバ105のルールデータベース140には、ルールや性能データが蓄積されており、監視・分析サーバ1600でそれらを分析することによって、外部からのリモート保守やシステムの診断をすることができる。
【0138】
監視・分析サーバ1600は、性能情報管理部1602及び分析レポート生成部1602よって構成される。性能情報管理部1602では、管理サーバ105から、ルールやルールの適用回数、レプリカ毎のリソース使用率等を、ルール・性能情報1610として取得する。得られたルール・性能情報1610は、ルール・性能情報データベース1620へ格納される。ルール・性能情報データベース1620は、時系列で情報を管理する。分析レポート生成部1603では、性能情報に基づいて分析レポート1612を生成する。
【0139】
また、監視・分析サーバ1600によって、管理サーバ105のリモート保守1613をする。
【0140】
情報システムの経営者又は運営者は、その監視分析の対価としてサービス料、保守料1611をMSPへ払う。情報システムの経営者又は運営者は、データベース管理(又は、その一部)を外部委託することが可能となる。
【0141】
図18は、本発明の第3の実施の形態の監視・分析サーバ1600と管理サーバ105との間の処理のフローチャートを示す。図中左側が監視・分析サーバ1600の処理を、右側が管理サーバ105の処理である。
【0142】
監視・分析サーバ1600は、管理サーバ105へアクセス要求を送信する(ステップ1400)。
【0143】
管理サーバ105は、監視・分析サーバ1600からのアクセスを受け付け、認証を行う(ステップ1410)。認証が成功した場合は(ステップ1411)、ルールデータベース140に記録されるルール・性能情報を送信する(ステップ1412)。
【0144】
要求(1400)が認められた監視・分析サーバ1600は、ルール・性能情報1610を取得する(ステップ1401)。取得したルール・性能情報1610は、ルール・性能情報データベース1620に格納される。
【0145】
そして、ルール・性能情報データベース1620に格納される性能情報について、後述する方法によって時系列解析をして、分析レポートを生成する(ステップ1402)。最後に、生成した分析レポートをメールで送信する(ステップ1403)。なお、生成した分析レポートを監視・分析サーバ1600(又は、管理サーバ105)がネットワークを介してアクセス可能なwebサーバ(図示省略)に格納すると共に、分析レポートが作成されたことを管理サーバ105へ通知してもよい。
【0146】
そして、管理サーバ105は分析レポートを受信する(ステップ1413)。
【0147】
その後、監視・分析サーバ1600では、ルールに問題(例えば、ある特定のルールに問題があるためのスループットの低下)があるかを判定する(ステップ1404)。そして、問題となるルールを編集する(ステップ1405)。例えば、問題となるルールを削除したり、該ルールの相性値を変更することによって、ルールの適用を制御して、スループットを向上させる。そして、編集されたルールを管理サーバ105に送信する(ステップ1406)ことによってルールの保守を行う。
【0148】
管理サーバ105は、監視・分析サーバ1600から送信されたルールを受け付け、ルールデータベース140に記憶する(ステップ1414)。そして、ルールをフロントエンド102へ送信し(ステップ1415)、新しいルールでのスケジューリングを指示する。
【0149】
図19は、本発明の第3の実施の形態の監視・分析サーバ1600が、性能情報データベース1620において管理するデータファイルを説明する図である。
【0150】
データファイル2005は、ルール2000、2001及び性能情報2002よって構成される。ルールは、ルールリスト1(2000)及びルールリスト2(2001)よって構成される。ルールリスト1(2000)及び性能情報(2002)は、各々レプリカ104の数だけ存在する。
【0151】
また、データファイル2005は、ルールが変更される度に新たに生成され、時系列データとして管理される。
【0152】
図20は、本発明の第3の実施の形態の分析レポートの表示画面の例を説明する図である。
【0153】
分析レポート1500として、スループット表示1501、ルール表示1502、性能表示1503が表示されている。
【0154】
スループット表示1501としては、システム全体の性能のグラフが表示される。例えば、単位時間あたりの問い合わせ処理量を表示する。スループット表示1501によって、システム全体の性能の時系列変化を把握することができる。また、グラフを外挿することによって、将来のスループットを予測することもできる。
【0155】
ルール表示1502では、例えば、ある時間にフロントエンドにおいてスケジューリングに使用されたルールに関する情報を表示する。ルールを解析する期間(時間)は、ユーザが直接入力してもよいし、スループット画面1501で指定してもよい。ルール表示1502では、ルールの条件部、相性値、適用回数が表示される。ルール表示1502でルールの条件部に表示されるのは問い合わせにつけられたIDであり、問い合わせの内容ではないため、ルール詳細表示1510を別に設け、実際のルールの内容を表示する。ルール表示1504によって、どのようなルールが生成され、それぞれ何回適用されているのかを把握することができる。
【0156】
また、適用されるルールの時系列的な変化を知ることもできる。例えば、ルールは学習され変化していくため、スループットが低下している場合は、適用されるルールに変化があるかどうかをチェックすることによって、スループット低下の原因を調査することができる。ある特定のルールに問題がある場合は、ルールを編集することによって保守を行う。例えば、該ルールを削除したり、該ルールの相性値を変更することによって、ルールの適用を制御して、スループットを向上させることができる。
【0157】
性能画面1503は、レプリカ毎にCPU利用率、ディスク利用率といった性能リソースに関する情報をグラフ表示する。性能画面によってレプリカ毎の負荷や、レプリカ間の負荷バランスを把握することができる。この性能画面によって、レプリカ毎のボトルネックが分かれば、そのボトルネックを回避するための設備投資提案をすることが可能である。例えば、メモリの使用率が高くなっていれば、メモリ増設を提案することができる。
【0158】
図21は、第3の実施の形態による監視、管理サービスのビジネスモデルの概略を説明する図である。
【0159】
データベースシステム(例えば、図1)等のITシステム1800のシステムの管理者又は経営者は、外部のMSP1801と契約を結び管理をアウトソーシングする。
【0160】
ITシステム1800からは、ルール・性能情報1802をMSP1801へ送信する。このルール・性能情報1802は、サーバのリソース使用率といった性能情報に加え、ITシステム1800において自律的に生成されたルールも含む。
【0161】
MSP1801では、従来行われてきたリソース使用率等の性能情報の監視・分析に加え、ルールの監視・分析を実施する。MSP1801では、ルール・性能情報1802を受けて、分析を実施して分析結果をレポート1803にまとめ、ITシステム1800へ提供する。また、MSP1801では、リモート保守1805を行う。ここでは、従来のソフトウェアの設定パラメータの変更等に加え、ルールの編集を行う。ルールは、複数のデータを抽象化して(例えば、if-then形式で)記載されており、可読性が高いため人間による理解も容易であることから、MSP1801の管理者によって編集をすることができる。
【0162】
また、MSP1801による診断の上、レプリカ104等のハードウェアの変更提案も可能である。ルール・性能情報1802を時系列で管理することによって、システムの変化を把握すれば、性能上の問題が発生する前に対策を取ることができる。
【0163】
ITシステム1800の管理者又は経営者は、保守やサービスに対し対価1804をMSP1801に支払う。
【0164】
より具体的には、MSP1801では、分析レポート1803を定期的に実行する。ユーザである、ITシステム1800の管理者又は経営者は、その対価として、サポート・保守料をMSP1801に支払う。
【0165】
以上説明したように、第3の実施の形態では、外部の監視・分析サーバ1600によって、管理サーバ105の監視・管理をするので、抽象化されたルールを扱うことによって、システムの挙動の把握が容易であり、ルール変更による保守も容易であるため、高付加価値サービスの提供が可能である。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態のデータベースシステムの構成図である。
【図2】本発明の第1の実施の形態のレプリカ104の処理のフローチャートである。
【図3】本発明の第1の実施の形態のレプリカ104で記録されるログデータの構成図である。
【図4】本発明の第1の実施の形態の管理サーバ105の処理のフローチャートである。
【図5】本発明の第1の実施の形態の問い合わせのグループ化の説明図である。
【図6】本発明の第1の実施の形態の問い合わせの実行状態の説明図である。
【図7】本発明の第1の実施の形態において相性計算に用いられる相性マトリックスの説明図である。
【図8】本発明の第1の実施の形態の相性計算(ステップ502)のフローチャートである。
【図9】本発明の第1の実施の形態の問い合わせ間のルールの生成(ステップ503)のフローチャートである。
【図10】本発明の第1の実施の形態のルールリストの構成図である。
【図11】本発明の第1の実施の形態において相性計算に用いられる別の相性マトリックスの説明図である。
【図12】本発明の第1の実施の形態の管理サーバ105がルールデータベース140において管理するデータファイルの説明図である。
【図13】本発明の第1の実施の形態のフロントエンド102の処理のフローチャートである。
【図14】本発明の第1の実施の形態のスケジューリング(ステップ604)のフローチャートである。
【図15】本発明の第2の実施の形態において相性計算に用いられるユーザ間の相性マトリックスの説明図である。
【図16】本発明の第2の実施の形態のスケジューリング(ステップ604)のフローチャートである。
【図17】本発明の第3の実施の形態のデータベースシステムの構成図である。
【図18】本発明の第3の実施の形態の監視・分析サーバ1600と管理サーバ105との間の処理のフローチャートである
【図19】本発明の第3の実施の形態の監視・分析サーバ1600が、性能情報データベース1620において管理するデータファイルの説明図である。
【図20】本発明の第3の実施の形態の分析レポートの表示画面の例を説明する図である。
【図21】監視、管理サービスのビジネスモデルの概略図である。
【図22】従来のデータベースシステムの構成図である。
【図23】従来のデータベースシステムのデータベースバッファの動作の説明図である。
【図24】従来のデータベースシステムのデータベースバッファの動作の説明図である。
【符号の説明】
100 クライアント
101 ネットワーク
102 データベースサーバ(フロントエンド)
103 データベースサーバ(マスタ)
104 データベースサーバ(レプリカ)
105 管理サーバ
106 マスタディスク
107 レプリカディスク
110 ログ記録・送信部
111 問い合わせ実行部
120 ログ取得部
121 相性計算部
122 ルール生成部
123 ルール管理部
140 ルールデータベース
200 サーバ
201 ディスク
203 メモリ
1600 監視・分析サーバ
1601 ネットワーク
1602 性能情報管理部
1603 分析レポート生成部
[0001]
[Technical field to which the invention belongs]
The present invention relates to a search system including a plurality of database servers that execute queries and a front-end server that inputs queries received from outside to the database server.
[0002]
[Prior art]
In recent years, parallel and distributed databases have been promoted for the purpose of improving performance and reliability. FIG. 22 shows a typical configuration example of a conventional database system.
[0003]
This conventional database system creates a plurality of replica databases 104 for one master database 103, and the front-end server 102 distributes queries to these replica databases 104 to input database search performance. Improvements are being made. In some cases, reliability can be improved by switching one of the active system and the other to the standby system in the event of a failure.
[0004]
As a method of distributing and inquiring queries to a plurality of servers as described above, a method of determining a server to be allocated by round robin, or a method of measuring a load such as a CPU usage rate and allocating it to a server with a light load is conventionally used. It is used.
[0005]
For example, calculate the resource usage of each batch job, execute multiple jobs, calculate the cumulative resources, and if the cumulative resources exceed the server's allowable amount, submit a new job A batch job scheduling method that avoids resource contention by not doing so has been proposed (see, for example, Patent Document 1).
[0006]
In order to further improve the performance of the database system, it is important to avoid resource contention such as database buffer contention and disk contention in the replica database 104.
[0007]
Hereinafter, database buffer contention (cache contention) will be described with reference to FIGS. The disk 201 is connected to the server 200, and the disk 201 stores three tables (205, 206, and 207). When inquiry 1 (220) requesting data in Table 1 (205) is input to the server 200, necessary data is transmitted from Table 1 (205) on the disk 201 to the inquiry.
[0008]
Since disk input / output (disk I / O) requires more processing time than memory input / output, a memory is used as a disk input / output cache. This cache area (database buffer) is created on the memory 203 and is divided into several KB data pages 204. The data page 204 is managed by LRU (Least Recently Used) so that the more frequently used data remains in the memory 203.
[0009]
When a query 1 (220) for obtaining data in Table 1 (205) is issued, the database buffer is searched, and if the data in Table 1 (205) necessary for the database buffer on the memory 203 is stored. It is possible to obtain results without disk I / O.
[0010]
On the other hand, as shown in FIG. 24A, when query 2 (221) for acquiring data in Table 2 (206) is input to the server 200, necessary data is not stored in the memory 300. Disk I / O is performed. Then, as shown in FIG. 24B, a part of the memory 301 is overwritten with the data in Table 2 (206), which is the content of the inquiry.
[0011]
For example, when two queries that are different from each other and require a large result are executed in succession, each other overwrites the database buffer in the memory 300, and the disk I / O is executed each time the query is executed. Arise. On the other hand, in the case of an inquiry that can share the contents, there is a high possibility that the data stored in the cache (database buffer) can be used, and the result can be obtained with less disk I / O. In this way, the queries are compatible, and the performance of the database system changes depending on the order in which the queries are input.
[0012]
As a method of avoiding database buffer contention (cache contention), there is a method of sharing a database buffer among a plurality of queries that request the same data. For example, if two different queries (queries) request the same data, and the data is larger than the database buffer area, the second query (query 2) when the first query has read the data halfway. When the query is called, the first half of the data may have already been erased from the database buffer. That is, when the data required by the query is large, there is a possibility that the first half of the data is overwritten by the second half of the data currently read by the first query (query 1).
[0013]
In such a case, the first half of the data is read again from the disk by query 2 and the buffer is overwritten. However, since the data stored in the overwritten portion (the latter half of the data read by the query 1) is data that is also required by the query 2 thereafter, useless disk I / O occurs. Therefore, in the second reading, instead of reading from the beginning, the method of reading from the same location as the query 1 being executed (merry-go-round scan) while sharing the buffer with the first query (query 1) is a Microsoft database. It has been introduced to SQL Server, which is a product (see Non-Patent Document 1, for example).
[0014]
As another method of effectively using other buffers, there is a method of classifying caches according to the importance of data. Oracle, which is an Oracle database product, classifies buffers into three areas: keep, default, and recycle, and allows specification of size and management method for each area. For example, data that wants to be resident in the buffer is classified into keep, data that may be overwritten is recycled, and others are default. However, the setting requires an understanding of the nature of the data, and the setting needs to be changed whenever the data size or system configuration changes.
[0015]
In a distributed and parallel computer environment, an increase in operation cost in addition to performance becomes a big problem. If the number of computers to be managed increases, the operating cost will increase.
[0016]
In business using IT systems, system downtime leads to enormous loss, so stable system operation is essential. For example, in order to avoid a system down due to concentration of access to the system, a server is added according to the number of accesses.
[0017]
In such an environment where the configuration and settings change frequently, it is not easy to perform management following the change. If the tuning or environment setting is performed manually for each computer every time the environment changes, the operation management cost will increase. As a method for reducing the operation management cost, there is automatic tuning. There are products that can automatically tune the configuration parameters of a single database, such as Microsoft SQL Server. However, the correspondence to the parallel distributed environment is not sufficient.
[0018]
As another method for reducing the operation cost, there is a method in which operation management (all or a part) is outsourced using an MSP (Management Service Provider) undertaking management of the IT system. For example, in the monitoring service provided by MSP, performance information such as the CPU usage rate of the server is monitored and an alarm is issued when a predetermined threshold is exceeded.
[0019]
[Patent Document 1]
JP 9-311795 A
[Non-Patent Document 1]
"Database Architecture", [online], Internet <URL: http://www.microsoft.com/japan/msdn/sqlserver/sql2000/thestorageengine.asp>
[0020]
[Problems to be solved by the invention]
Queries input to the database system have compatibility with other inquiries and servers. In a combination that is not compatible, resource contention occurs and performance decreases. For example, when a database buffer contention occurs, a disk I / O that is slower than the memory is generated, resulting in a large performance problem.
[0021]
In the case of a database alone, automatic tuning technology has been developed, but there is no technology for optimizing the entire system in a parallel / distributed environment.
[0022]
As a method of distributing the inquiry to a plurality of servers, for example, there are a method of selecting a server by land robin or a server having a light load. In such a method, since compatibility between queries and compatibility with the server are not taken into consideration, there is a possibility that resource contention occurs at the time of execution. Therefore, in parallel / distributed environments, it is necessary to avoid resource contention and improve overall system throughput by implementing appropriate scheduling in consideration of compatibility between queries and between queries and servers. .
[0023]
In addition, if parallelization / distribution of servers advances and the number of servers to be managed increases, it is difficult to perform fine tuning individually and the cost increases. In addition, it is not easy to manage not only a single server but the entire system. Therefore, it is necessary to learn the scheduling method autonomously and manage the entire system at a low cost in a parallel / distributed environment.
[0024]
[Means for Solving the Problems]
The present invention has a database capable of searching the same content, a plurality of database servers that search the database according to a query request, and accepts the query request, and inputs a query to the database server using a predetermined rule A management server that manages rules used by the front-end server, and a network that connects the servers and client terminals that request inquiries, the management server executing the database server A log acquisition unit that acquires a log; and a rule generation unit that generates the rule based on compatibility with a query calculated using the acquired log, and the front-end server is generated by the management server The above query Having the query dosing means for introducing allowed.
[0025]
[Action and effect of the invention]
In the present invention, there are databases capable of searching the same content, a plurality of database servers that search the database according to the inquiry request, and the inquiry request is received, and the inquiry is input to the database server using a predetermined rule. In a query input method used in a database system comprising: a front-end server that performs management of a rule used by the front-end server; and a network that connects each server and a client terminal that requests a query. The management server acquires an execution log of the database server, generates the rule based on a compatibility related to an inquiry calculated using the acquired log, and the front-end server generates a rule generated by the management server Using, to introduce the inquiry. That is, a queue and a scheduler are provided in the front-end server, the compatibility between the queries or between the query and the database server is determined, and the queries are input in a combination that is compatible with the scheduler. This scheduling is performed based on rules, and scheduling is performed so as to avoid resource contention, so that the performance of the entire database system can be improved.
[0026]
In addition, the management server acquires the execution log of the database server, and statistically analyzes the acquired execution log, thereby calculating the compatibility between queries or between the query and the database server, and based on the calculated compatibility. Generate a rule and send it to the front-end server. Since this rule is generated based on the execution log, the rule can be learned autonomously even when the environment or the characteristics of the inquiry change.
[0027]
DETAILED DESCRIPTION OF THE INVENTION
FIG. 1 is a configuration diagram of the database system according to the first embodiment of this invention.
[0028]
The client 100 issues an inquiry to the database via the network 101 (intranet or Internet (registered trademark, the same applies hereinafter)).
[0029]
The database includes a database server (front end) 102 and a plurality of database servers 103 and 104 on the back end. The front end 102 receives the inquiry and inputs (dispatch) the inquiry to the back-end database servers 03 and 104.
[0030]
The back-end database server includes one master database server (master) 103 and a plurality of replica database servers (replicas) 104. The master 103 has a storage device 106, and the replica 104 has a storage device 107. The storage device 107 connected to the replica 104 records the same content as the storage device 106 connected to the master 103. Usually, the update processing and search processing of the stored contents are performed in the master 103, but only the search processing is performed in the replica 104. Then, by periodically performing replication, the changed contents of the storage device 106 of the master 103 are reflected in the storage device 107 of the replica 104.
[0031]
The replica 104 includes an inquiry execution unit 111 and a log recording / transmission unit 110. The inquiry execution unit 111 executes the inquiry transmitted by the front end 102. The log recording / transmission unit 110 records an execution log (inquiry type, processing time, etc.) and transmits it to the management server 105.
[0032]
The management server 105 includes a log acquisition unit 120, a compatibility calculation unit 121, a rule generation unit 122, and a rule management unit 123. Further, the management server 105 has a rule database 140.
[0033]
The log acquisition unit 120 receives the execution log transmitted by the replica 104 and acquires the execution log of the replica 104.
[0034]
The compatibility calculation unit 121 analyzes the execution log acquired by the log acquisition unit 120 and calculates the compatibility between the queries and the compatibility between the query and the replica 104 as the compatibility regarding the query. Compatibility can be calculated between query attributes stored in the execution log, between query attributes and replicas, and between users who have issued queries.
[0035]
The rule generation unit 122 generates a rule for scheduling an inquiry based on the calculated compatibility. For example, since the query A and the query B are compatible, a rule that should be input to the same replica 104 is generated. Here, the generated rule is transmitted to the front end 102.
[0036]
The rule management unit 123 stores the rule generated by the rule generation unit 122 and the number of application times of the rule recorded by the front end 102 in the rule database 140. The rule database 140 can also store hardware and software performance information (for example, resource usage rates such as a CPU usage rate and a memory usage rate) of each replica 104. The administrator can manage which rule is actually used by the information regarding the rule and the number of times the rule is applied.
[0037]
The front end 102 has a queue 131 and a scheduler 130, receives an inquiry received from the client 100 by the queue 131, schedules the scheduler 130, distributes the inquiry 104, and inputs it.
[0038]
The scheduler 130 performs scheduling based on the rules generated by the management server 105 and determines the replica 104 to which an inquiry is input. When an inquiry is made to the replica 104, the number of times the rule is applied is recorded for each rule. Information regarding the number of times the rule is applied is transmitted to the management server 105.
[0039]
The replica 104 executes the inquiry. Then, based on the query executed in the replica 104, the management server 105 calculates compatibility and generates a rule. Then, the front end 102 inputs an inquiry to the replica 104 based on the rules generated in the management server. Then, the replica 104 executes an inquiry.
[0040]
By repeating this cycle, autonomous generation of scheduling rules adapted to system changes (for example, server addition, data size increase) and input changes (for example, input load increase, query content change) Is possible. In the front end 102, by using the generated scheduling rule to input a query in a combination that avoids resource competition, it is possible to improve the performance of the entire database system at a low cost.
[0041]
Next, processing of the replica 104, the management server 105, and the front end 102 will be described.
[0042]
FIG. 2 is a flowchart illustrating processing of the database server (replica 104) according to the first embodiment of this invention.
[0043]
First, an inquiry from the client 100 is accepted (step 400). Then, the received inquiry is executed (step 401). Subsequently, an inquiry execution log 410 is recorded (step 402), and the execution log 410 is transmitted to the management server 105. Then, the next inquiry is accepted (step 400).
[0044]
The execution log 410 may be transmitted in real time for each inquiry. For example, an event is transmitted for each execution of an inquiry, and the execution log acquisition destination (management server 105) records the execution log by acquiring the event (for example, Microsoft SQL Server 2000). A plurality of inquiry execution logs 410 may be transmitted together. For example, the execution log 410 is recorded and stored in the replica 104 for a certain period, and batch transferred to the management server 105 at an appropriate timing.
[0045]
The execution log 410 is transmitted in the format shown in FIG. That is, for each inquiry, the inquiry attributes such as the inquiry content (SQL sentence or stored procedure) 700, processing time 701, start time 702, end time 703, user name 704, etc. are recorded.
[0046]
In addition to the execution log 410, other performance information such as hardware and software resource usage rates can be sent to the management server 105. For example, the CPU usage rate and memory usage rate of the replica 104 can be considered. These pieces of performance information are not essential for the compatibility calculation, but are managed as time-series data and are useful for monitoring and analyzing the performance of the replica 104.
[0047]
FIG. 4 is a flowchart showing processing of the management server 105 according to the first embodiment of this invention.
[0048]
The execution log 410 is acquired from the replica 104 (step 500).
[0049]
Then, inquiries are grouped as preprocessing for compatibility calculation (step 501). The compatibility calculation needs to be performed not for each individual query but for each group obtained by classifying a plurality of queries into patterns. When it is performed for each individual inquiry, rules are generated only for the types of inquiry, and the rules are applied only to the same inquiry, so the usability of the rules is lowered. Moreover, if it calculates separately, the number of compatibility combinations will increase and processing burden will increase.
[0050]
After grouping, compatibility is calculated for each group (step 502), and the result of the compatibility calculation is ruled (step 503). Finally, the generated rule 510 is transmitted to the front end 102 (step 504).
[0051]
The front end 102 executes scheduling based on the received rule, and feeds back the rule and the number of times of application to the management server 105 at an appropriate timing (a predetermined interval or when requested by the management server 105). To do.
[0052]
The management server 105 receives the rule and the number of times the rule is applied (step 505), and stores the received information in the rule database 140 (step 506).
[0053]
FIG. 5 is a diagram illustrating inquiry grouping (step 501) according to the first embodiment of this invention.
[0054]
Hereinafter, the grouping will be described using a simple search SQL of “select a from A where b> 3”. Here, A described as an argument of the from clause is a table name. The table is composed of a plurality of rows, and the rows are composed of a plurality of columns. Specify the column name as a search condition in the argument of the where clause. In this case, the condition that the column b of the table A is larger than 3 is specified. Which column is returned as a result is specified by an argument of the select clause (in this example, only column a is acquired).
[0055]
In grouping example 1 shown in FIG. 5A, queries are grouped according to the table used. Queries with the same table used in the search condition are grouped into the same query. Therefore, the inquiry 1011 and the inquiry 1012 that use only the table A are classified into the same group, and the inquiry 1013 and the inquiry 1014 that use only the table B are classified into the same group.
[0056]
In grouping example 2 shown in FIG. 5B, queries are grouped by table name and acquisition column name. Queries having the same table used in the search condition and column names returned as search results are grouped into the same query. Therefore, the query 1021 and the query 1022 that acquire the column a of the table A are classified into the same group, and the query 1023 and the query 1024 that acquire the columns a and c of the table A are classified into the same group. At this time, the search conditions may be different.
[0057]
In the grouping example 3 shown in FIG. 5C, grouping is performed based on the table name, the acquisition column name, and the search condition. Queries that are identical except for constant values in the search condition are grouped into the same query. Therefore, a condition is specified using the column b of the table A, and the query 1031 and the query 1032 for obtaining the column a of the table A are classified into the same group, the condition is specified using the column c of the table A, and the table A The query 1033 and the query 1034 for acquiring the column a are classified into the same group.
[0058]
Although detailed grouping becomes possible in the order of FIGS. 5A, 5B, and 5C, the amount of processing for grouping also increases.
[0059]
Next, the compatibility calculation (step 502) will be described.
[0060]
Here, as the compatibility, consider the degree of improvement in processing time compared to the processing time in the case of executing two queries simultaneously compared to the processing time in the case of executing them individually. For example, if the tables used in the search condition for two queries are the same and the database buffer can be shared, the processing time can be reduced by executing these two queries simultaneously or sequentially. It means that compatibility is good. On the other hand, if the database buffer cannot be shared, the performance is degraded by disk I / O, which means that the compatibility is bad.
[0061]
FIG. 6 is a diagram illustrating an execution state of an inquiry according to the first embodiment of this invention.
[0062]
In the example shown in FIG. 6, Q2 (902) is executed at the same time as Qi (900). A part of the execution time of Q1 (901) overlaps with the execution time of Qi (900).
[0063]
In this embodiment, an inquiry Qj that overlaps with the execution of Qi (900) is searched. In this search, Qj satisfying the condition of the end time of Qj> the start time of Qi (900) and the start time of Qj <the end time of Qi (900) is searched. In the example shown in FIG. 6, Q1 (901) and Q2 (902) meet this condition.
[0064]
In addition, instead of searching only for a query that completely overlaps, a query Qj that overlaps with the time (914) obtained by adding a margin time Δ before and after the execution time of Qi may be searched. In this search, a search is made for Qj satisfying the following condition: Qj end time> Qi (900) start time−Δ (912) and Qj start time <Qi (900) end time + Δ (913). In this way, by performing a search using the allowance time Δ, in addition to queries executed at the same time, queries executed immediately before and after Qi can be included in the target. In the example shown in FIG. 6, Q3 (903) satisfies this condition in addition to Q1 (901) and Q2 (902).
[0065]
FIG. 7 is a diagram for explaining a compatibility matrix used for the compatibility calculation in the first embodiment of the present invention.
[0066]
The compatibility calculation is performed based on a compatibility matrix indicating the compatibility between queries. For example, Cij (803) of the compatibility matrix 800 represents the compatibility between the inquiry Qi (801) and the inquiry Qj (802), and the total processing time of Qi (801) when executed simultaneously with Qj (802). It is. On the other hand, Ai (804) represents the total processing time of Qi (801) in combination with all Qj (802).
[0067]
The call matrix 810 represents how many queries were used to calculate the affinity. For example, Tij (813) represents how many queries were used to calculate Cij (803) (the number of times Qi (801) was called simultaneously with Qj (802) in the execution log). Ti (814) represents the number of inquiries used for the calculation of Ai (804) (the number of executions of Qi (801) included in the execution log).
[0068]
FIG. 8 is a flowchart showing the compatibility calculation (step 502) according to the first embodiment of this invention, and is executed for each log of the replica 104.
[0069]
First, an inquiry executed simultaneously with Qi (900) is searched (step 1101). For example, the search is performed by the method described in FIG.
[0070]
For all j that match the search conditions, the calculations of equations (1) to (3) are performed, and the values of the compatibility matrix 800 and the call matrix 810 are updated (steps 1102 and 1103).
[0071]
Cij = Cij + Qi processing time (1)
Ai = Ai + Qi processing time (2)
Tij = Tij + 1 (3)
Finally, the values of all the elements of the compatibility matrix 800 are updated according to the equation (4) (steps 1104 and 1105).
[0072]
Cij = Ai / Ti-Cij / Tij (4)
The right side of the equation (4) represents (Qi (801) average processing time)-(Qi (801) average processing time when executed simultaneously with Qj (802)). That is, with respect to Qi (801), the performance improvement effect by executing simultaneously with Qj (802) is calculated. This value is compatible between Qi (801) and Qj (802).
[0073]
Next, rule generation (step 503) will be described.
[0074]
In the rule generation (step 503), the attributes recorded in the execution log 410 and the compatibility with respect to the server are ruled. For example, compatibility between queries, compatibility between queries and servers, compatibility between users and servers, and the like can be considered. Here, as an example, generation of rules regarding compatibility between queries and rules regarding compatibility between queries and servers will be described.
[0075]
FIG. 9A is a flowchart illustrating rule generation (step 503) between queries according to the first embodiment of this invention.
[0076]
The calculation of the compatibility matrix 800 and the call matrix 810 has already been completed for each replica 104. Further, the calculation shown in FIG. 9A is performed for each execution log 410 of the replica 104.
[0077]
First, it is determined whether or not all Cij are subject to rule formation, and the rule formation targets are narrowed down (step 1201). Specifically, based on a comparison result between a value obtained by dividing the absolute value of Cij by Ai and a predetermined constant (determination result as to whether or not larger than a predetermined constant P1 (0 ≦ P1 <1)). , Cij is determined as a rule target. Cij that has a small effect on performance in the determination based on this condition is excluded from rule formation. In other words, regardless of whether the compatibility is good or bad, only those having a large influence on performance are subject to rule formation. When P1 = 0, all Cij are subject to rule formation.
[0078]
If | Cij | / Ai is larger than P1, a rule is formed (step 1202) and added to the rule list 1 (step 1203).
[0079]
FIG. 10A shows rule list 1 (1910). In the rule list 1 (1910), a rule is constituted by a query pair condition 1911, a compatibility value 1912, and a number of times 1913. The number of times 1913 represents the number of times the rule has been applied, and is a value set by the front end 102. The initial value is set to 0.
[0080]
The rule list 1 (1910) includes a plurality of rules that satisfy the condition 1201. That is, the rule-making is to add the compatibility value 1912 for Ci, j and the number of times 1913 (initial value = 0) to the rule list 1 as a set 1911 of queries i and j for Ci, j.
[0081]
FIG. 9B is a flowchart showing rule generation (step 503) between the inquiry and the server.
[0082]
First, in step 1220, the average Ave (Ai, s) of the average execution time Ai, s of Qi calculated for each server is calculated (s is the server name). Next, for all Ai, s, the improvement rate | Ai, s−Ave (Ai, s) | / Ave (Ai, s) is greater than a predetermined constant P2 (0 ≦ P2 <1) under the condition 1222. It is determined whether or not. In this determination, Ai, s that has a small effect on performance is excluded from the rule. In other words, regardless of whether the compatibility is good or bad, only those having a large influence on performance are subject to rule formation. When P2 = 0, all Ai, s are subject to rule formation.
[0083]
If | Ai, s-Ave (Ai, s) | / Ave (Ai, s) is larger than P2, a rule is formed (step 1223) and recorded in the rule list 2 (step 1224).
[0084]
FIG. 10B shows rule list 2 (1930). In the rule list 2 (1930), a rule is composed of a query / server set 1931, an affinity value (Ave (Ai, s) −Ai, s) 1932, and a count 1933. The number of times 1934 represents the number of times the rule is applied, and is a value set by the front end 102. The initial value is set to zero.
[0085]
The rule list 2 (1930) includes a plurality of rules that satisfy the condition 1222. That is, the rule-making is a rule for Ai, s as a set 1931 of inquiry i and server s, (Ave (Ai, s) -Ai, s) as compatibility value 1932, and number of times 1933 (initial value = 0). To add to list 2.
[0086]
FIG. 11 is a diagram for explaining a compatibility matrix used for compatibility calculation between a query and a server (replica 104) in the first embodiment of this invention.
[0087]
A compatibility matrix 800 and a call matrix 810 shown in FIG. 7 are provided for each replica 104. Aim (804) of the compatibility matrix 800 is the total value of the processing times of Qi (801) in the combination with all Qj (802) in the replica m. In addition, Tim (814) of the call matrix 810 is the number of inquiries used for calculating Ai (804) in the replica m (the number of times Qi (801) is executed in the log).
[0088]
Then, when the inquiry Qi (801) is input, it is assumed that the replica that gives the minimum value of Aim by comparing Aim (804) for the replica m is the most suitable replica for executing Qi. And compatibility between queries.
[0089]
FIG. 12 is a diagram illustrating data files managed in the rule database 140 by the management server 105 according to the first embodiment of this invention.
[0090]
The data file 2004 includes rules 2000 and 2001, an execution log 2003, and performance information 2002. The rules are constituted by a rule list 1 (2000) indicating compatibility between queries and a rule list 2 (2001) indicating compatibility between queries and servers. There are as many rule lists 1 (2000), execution logs 2003, and performance information 2002 as the number of replicas 104.
[0091]
The execution log 2003 is performance information related to the query executed by each replica 104, and is saved in the format described above with reference to FIG. Based on the execution log 2003, rules 2000 and 2001 are generated.
[0092]
The performance information 2004 is time-series data of performance information related to hardware and software of each replica 104, and records, for example, a CPU usage rate, a memory usage rate, and the like.
[0093]
These data files 2004 may store only the latest data, or may store new data whenever there is a change and manage it as time-series data.
[0094]
Next, processing of the front end 102 will be described.
[0095]
FIG. 13 is a flowchart illustrating processing of the front end 102 according to the first embodiment of this invention.
[0096]
The front end 102 executes scheduling based on the received rule. First, the rule 510 (rule list 1, rule list 2) transmitted by the management server 105 is received (step 600).
[0097]
Then, it is determined whether or not the rule needs to be edited (step 601), and if necessary, editing is executed (step 602). Rules are written in a simple if-then type, so humans (administrators) can understand them. For example, a rule can be added when a rule to be prioritized such as that a certain query is to be executed on a specific server is known in advance. It is also possible to make settings so that a specific rule is preferentially selected by deleting unnecessary rules or editing compatibility values.
[0098]
When an inquiry is received from the client 100 (step 603), scheduling is performed (step 604), and the inquiry is input to the replica 104. At that time, the number of times the rule is applied is recorded in the number-of-rules section 1913, 1933 (see FIG. 10) of the rule list for each rule. Then, it is determined whether or not a certain time has elapsed and whether a request from the management server 105 is detected (step 605). Scheduling (step 604) is repeated until the condition of step 605 is met.
[0099]
At the timing when the condition of step 605 is satisfied, the rule list 520 (rule and the number of times the rule is applied) is transmitted to the management server.
[0100]
FIG. 14 is a flowchart showing scheduling (step 604) according to the first embodiment of this invention.
[0101]
Here, the “number of inputs” is prepared as a variable for recording the number of inquiries executed for each replica. By recording the number of queries entered for each replica 104 and controlling the number of queries not to exceed a predetermined threshold, it is possible to prevent queries from being concentrated on a specific replica 104. is there.
[0102]
Also, a “server list” is prepared as a set of replicas that can be inquired. When the number of inputs to a certain replica 104 exceeds the threshold, the replica is excluded from the server list, and the selection of the server is prevented in the subsequent processing.
[0103]
Furthermore, a “previous query” is prepared as a variable for recording a query executed immediately before each replica.
[0104]
In scheduling, first, initialization processing is performed. The number of inputs of each replica is initialized to 0, and a server list including all replicas is constructed (step 1300). Then, the “immediate query” for all replicas is initialized to a blank (step 1320).
[0105]
Subsequently, it is determined whether or not the queue is blank (step 1301). If the queue is empty, the process returns to step 1301 and waits until the queue is not empty. On the other hand, if the queue is not blank, after adding all servers to the server list, the number of inputs is determined for each replica. If the number of inputs exceeds a predetermined threshold (N), inquiries are concentrated on that replica. Therefore, the replica is excluded from the server list (step 1303).
[0106]
Then, an inquiry is taken out from the queue, and matching with rule list 1 and rule list 2 is performed (step 1304). For example, when the retrieved query is Qi, matching is performed with a rule of the form {Qi, *} (* is arbitrary).
[0107]
When the rule list 2 is used, a rule relating to a replica that matches or is not compatible with Qi is extracted by matching a rule whose * part is a replica name (Sj).
[0108]
If rule list 1 is used, matching is required for every replica that can be entered. First, a query (Qj) input immediately before a certain replica (R1) is examined by examining a “previous query” variable, and a rule relating to {Qi, Qj} exists in the rule list 1 of the replica (R1). Search whether or not. If there is a matching rule and the compatibility value is positive, Qi should be input to the replica (R1) because Qi and Qj have good compatibility with respect to the replica (R1). If no query has been executed on the replica and there is no previous query, matching using the rule list 1 is not performed.
[0109]
Next, it is determined whether or not a rule having a positive compatibility has been matched (step 1305). If there is a rule having a positive compatibility, the process proceeds to step 1306. If there is no rule having a positive compatibility, the process proceeds to step 1308.
[0110]
If there is a rule having a positive compatibility in step 1305, one rule is selected from a plurality of rules, and an inquiry is input to the replica indicated by the rule. At the time of selection, the rule having the largest compatibility value is selected (step 1306). Note that, instead of the rule having the largest compatibility value, a replica may be determined by randomly selecting a rule from among the selected rules and inputting an inquiry.
[0111]
Then, the input number is updated (added 1) to the input replica, and the number of applied rules is updated (added 1) (step 1307). Then, an inquiry designated by the rule is set as the “immediate query” of the replica (step 1326), and the process returns to step 1301.
[0112]
On the other hand, if there is no rule having a positive compatibility in step 1305, it is determined whether there is a rule having a negative compatibility (condition 1308). If there is a rule with negative compatibility, the process proceeds to step 1309, and if there is no rule with negative compatibility, the process proceeds to step 1311.
[0113]
If there is a rule with negative affinity in step 1308, a server list is created by excluding the replica indicated by the rule with negative affinity from the replica included in the server list. Then, a replica is selected stochastically (randomly) from the created server list, and an inquiry is input (step 1309). Subsequently, the input number is updated (added 1) to the input replica, and the number of applied rules is updated (added 1) (step 1310). Then, an inquiry indicated by the rule is set as the “immediate query” of the replica (step 1323), and the process returns to the condition 1301.
[0114]
On the other hand, if there is no negative rule in step 1308, a server is selected probabilistically (randomly) from the server list and an inquiry is entered. Subsequently, the input number is updated (added 1) to the input replica, and the number of applied rules is updated (added 1) (step 1312). Then, an inquiry indicated by the rule is set as the “immediate query” of the replica (step 1322), and the process returns to the condition 1301.
[0115]
As described above, in the first embodiment, in the database system including a plurality of replicas 104 that execute queries and the front end 102 that distributes and inputs queries to the replicas 104, queues 131 and A scheduler 130 is provided to determine compatibility between inquiries or between the inquiry and the replica 104, and the scheduler 130 puts in a combination that is compatible and inputs the inquiry to the replica 104. The scheduler 130 functions based on the rules and performs scheduling so as to avoid resource contention, thereby avoiding resource contention and improving the performance (throughput) of the entire system.
[0116]
In addition, the management server 105 collects the execution log of the replica 104 and statistically analyzes the collected execution log, thereby calculating the compatibility between the queries or between the query and the replica. Based on the calculated compatibility, a rule is generated and transmitted to the front end 102. Since the rule is calculated using the execution log, it is possible to learn autonomously even when the system configuration, the content and frequency of the inquiry change, and low-cost operation is possible.
[0117]
Since compatibility is ruled in a form that can be understood by humans, rules can be edited, added, and deleted, and human intentions can be reflected in autonomous learning.
[0118]
Next, a second embodiment of the present invention will be described. In the second embodiment, determination based on compatibility between users in addition to compatibility between queries and between queries and servers in the first embodiment. You can also In this case, compatibility matrixes 2100 and 2101 between users are used in addition to the compatibility matrix 800 between queries.
[0119]
FIG. 15 is a diagram for explaining a compatibility matrix between users used for compatibility calculation in the second embodiment of the present invention.
[0120]
Cij (2103) of the compatibility matrix 2100 is the compatibility between user i (Ui: 2101) and user j (Uj: 2102), and Ui (when executed simultaneously with an arbitrary query entered by Uj (2102). 2101) represents a total value of processing times of arbitrary inquiries input. Ai (2104) represents the total value of the processing times of all inquiries entered by Ui (2101) regardless of Uj.
[0121]
The call matrix 2110 represents how many queries were used to calculate the affinity. For example, Tij (2113) represents how many queries were used to calculate Cij (2103). That is, it is the number of times that the query entered by Ui (2101) is executed simultaneously with the query entered by Uj (2102) in the log. Ti (2114) represents the number of queries used to calculate Ai (2104) (the number of times Ui (2101) executed a query).
[0122]
The compatibility between users is calculated in the same manner as the compatibility of the inquiry, a rule is generated, and the rule is stored in the rule list 3 (2130). In the rule list 3 (2130), a rule is composed of a user set 2131, a compatibility value 2131, and the number of times 2134.
[0123]
FIG. 16 is a flowchart illustrating scheduling (step 604) in consideration of compatibility between users according to the second embodiment of this invention. The scheduling process shown in FIG. 16 differs from the scheduling process shown in FIG. 14 in steps 2200, 2201, 2202, 2202, 2203, and 2204.
[0124]
Here, “the number of inputs” is recorded as a variable for recording the number of inquiries executed for each replica, “server list” is recorded as a set of replicas to which inquiries can be input, and the most recently executed query is recorded for each replica. Prepare “previous query” as a variable. Furthermore, “immediate user” that is a variable for recording the user who executed the inquiry is prepared.
[0125]
In scheduling, first, initialization processing is performed. The number of inputs of each replica is initialized to 0, and a server list including all replicas is constructed (step 1300). Then, “immediate query” and “immediate user” of all replicas are initialized to blanks (step 2200).
[0126]
Subsequently, it is determined whether or not the queue is blank (step 1301). If the queue is empty, the process returns to step 1301 and waits until the queue is not empty. On the other hand, if the queue is not blank, after adding all servers to the server list, the number of inputs is determined for each replica. If the number of inputs exceeds a predetermined threshold (N), inquiries are concentrated on that replica. Therefore, the replica is excluded from the server list (step 1303).
[0127]
Then, an inquiry is taken out from the queue, and matching with rule list 1 and rule list 2 is performed (step 1304). For example, matching is performed for a user (referred to as Ui) who has input an inquiry taken out from the queue. In this matching, it is checked whether or not there is a rule whose condition part is {Ui, “immediate user”} in the rule list 3 for each replica. That is, it is determined whether there is a user who inputs a query having a good compatibility with a query input by the user (Ui) or a user who inputs a query having a poor compatibility.
[0128]
Next, it is determined whether or not a rule having a positive compatibility has been matched (step 1305). If there is a rule having a positive compatibility, the process proceeds to step 1306. If there is no rule having a positive compatibility, the process proceeds to step 1308.
[0129]
If there is a rule having a positive compatibility in step 1305, one rule is selected from a plurality of rules, and an inquiry is input to the replica indicated by the rule. At the time of selection, the rule having the largest compatibility value is selected (step 1306). Note that, instead of the rule having the largest compatibility value, a replica may be determined by randomly selecting a rule from among the selected rules and inputting an inquiry.
[0130]
Then, the input number is updated (added 1) to the input replica, and the number of applied rules is updated (added 1) (step 1307). Then, an inquiry indicated by the rule is set as the “immediate query” of the replica, the user who entered the inquiry is set as the “immediate user” (step 2204), and the process returns to step 1301.
[0131]
On the other hand, if there is no rule having a positive compatibility in step 1305, it is determined whether there is a rule having a negative compatibility (condition 1308). If there is a rule with negative compatibility, the process proceeds to step 1309, and if there is no rule with negative compatibility, the process proceeds to step 1311.
[0132]
If there is a rule with negative affinity in step 1308, a server list is created by excluding the replica indicated by the rule with negative affinity from the replica included in the server list. Then, a replica is selected stochastically (randomly) from the created server list, and an inquiry is input (step 1309). Subsequently, the input number is updated (added 1) to the input replica, and the number of applied rules is updated (added 1) (step 1310). Then, an inquiry indicated by the rule is set as the “immediate query” of the replica, the user who entered the inquiry is set as the “immediate user” (step 2203), and the process returns to step 1301.
[0133]
On the other hand, if there is no negative rule in step 1308, a server is selected probabilistically (randomly) from the server list and an inquiry is entered. Subsequently, the input number is updated (added 1) to the input replica, and the number of applied rules is updated (added 1) (step 1312). Then, an inquiry indicated by the rule is set as the “immediate query” of the replica, the user who entered the inquiry is set as the “immediate user” (step 2202), and the process returns to step 1301.
[0134]
As described above, in the second embodiment, in a database system including a plurality of replicas 104 that execute queries and the front end 102 that distributes and inputs queries to the replicas 104, queues 131 and A scheduler 130 is provided to determine compatibility between users who input an inquiry, or compatibility between a user who inputs an inquiry and the replica 104, and the scheduler 130 inputs a combination having a good compatibility and inputs an inquiry to the replica 104. The scheduler 130 functions based on the rules and performs scheduling so as to avoid resource contention, thereby avoiding resource contention and improving the performance (throughput) of the entire system.
[0135]
Next, a third embodiment of the present invention will be described. In the third embodiment, an external server is connected to the management server via a network, and the management server can be accessed from the external server. Can be monitored and managed from the outside.
[0136]
FIG. 17 is a configuration diagram of the database system according to the third embodiment of this invention.
[0137]
The management server 105 is connected to a network 1601 (intranet or Internet). The management server 105 is connected 1600 to an MSP (Management Service Provider) monitoring / analysis server that undertakes management via a network 1601. Rules and performance data are stored in the rule database 140 of the management server 105, and the monitoring / analysis server 1600 analyzes them, thereby enabling remote maintenance from outside and system diagnosis.
[0138]
The monitoring / analysis server 1600 includes a performance information management unit 1602 and an analysis report generation unit 1602. The performance information management unit 1602 acquires rules, rule application counts, resource usage rates for each replica, and the like as rule / performance information 1610 from the management server 105. The obtained rule / performance information 1610 is stored in the rule / performance information database 1620. The rule / performance information database 1620 manages information in time series. The analysis report generation unit 1603 generates an analysis report 1612 based on the performance information.
[0139]
The monitoring / analysis server 1600 performs remote maintenance 1613 of the management server 105.
[0140]
The manager or operator of the information system pays the service fee and the maintenance fee 1611 to the MSP as consideration for the monitoring analysis. The manager or operator of the information system can outsource database management (or part of it).
[0141]
FIG. 18 is a flowchart of processing between the monitoring / analysis server 1600 and the management server 105 according to the third embodiment of this invention. In the figure, the left side is the process of the monitoring / analysis server 1600, and the right side is the process of the management server 105.
[0142]
The monitoring / analysis server 1600 transmits an access request to the management server 105 (step 1400).
[0143]
The management server 105 accepts access from the monitoring / analysis server 1600 and performs authentication (step 1410). If the authentication is successful (step 1411), the rule / performance information recorded in the rule database 140 is transmitted (step 1412).
[0144]
The monitoring / analysis server 1600 that has accepted the request (1400) acquires the rule / performance information 1610 (step 1401). The acquired rule / performance information 1610 is stored in the rule / performance information database 1620.
[0145]
Then, the performance information stored in the rule / performance information database 1620 is subjected to time series analysis by a method described later to generate an analysis report (step 1402). Finally, the generated analysis report is transmitted by mail (step 1403). The generated analysis report is stored in a web server (not shown) that can be accessed via the network by the monitoring / analysis server 1600 (or the management server 105), and the management server 105 indicates that the analysis report has been created. You may be notified.
[0146]
The management server 105 receives the analysis report (step 1413).
[0147]
Thereafter, the monitoring / analysis server 1600 determines whether there is a problem with the rule (for example, a decrease in throughput due to a problem with a specific rule) (step 1404). Then, the rule in question is edited (step 1405). For example, the rule application is controlled by deleting the problematic rule or changing the compatibility value of the rule, thereby improving the throughput. Then, the edited rule is transmitted to the management server 105 (step 1406) to maintain the rule.
[0148]
The management server 105 accepts the rule transmitted from the monitoring / analysis server 1600 and stores it in the rule database 140 (step 1414). Then, the rule is transmitted to the front end 102 (step 1415), and scheduling with the new rule is instructed.
[0149]
FIG. 19 is a diagram illustrating data files managed in the performance information database 1620 by the monitoring / analysis server 1600 according to the third embodiment of this invention.
[0150]
The data file 2005 is composed of rules 2000 and 2001 and performance information 2002. A rule is composed of a rule list 1 (2000) and a rule list 2 (2001). There are as many rule lists 1 (2000) and performance information (2002) as there are replicas 104, respectively.
[0151]
The data file 2005 is newly generated every time the rule is changed and is managed as time series data.
[0152]
FIG. 20 is a diagram illustrating an example of an analysis report display screen according to the third embodiment of this invention.
[0153]
As the analysis report 1500, a throughput display 1501, a rule display 1502, and a performance display 1503 are displayed.
[0154]
As the throughput display 1501, a graph of the performance of the entire system is displayed. For example, the inquiry processing amount per unit time is displayed. Through the throughput display 1501, it is possible to grasp a time series change in the performance of the entire system. It is also possible to predict future throughput by extrapolating the graph.
[0155]
In the rule display 1502, for example, information on rules used for scheduling in the front end at a certain time is displayed. The period (time) for analyzing the rule may be directly input by the user or may be specified on the throughput screen 1501. In the rule display 1502, the condition part of the rule, the compatibility value, and the number of applications are displayed. In the rule display 1502, what is displayed in the rule condition part is the ID attached to the query and not the content of the query. Therefore, a rule detail display 1510 is provided separately to display the actual rule content. The rule display 1504 makes it possible to grasp what rules are generated and how many times each is applied.
[0156]
It is also possible to know time-series changes in applied rules. For example, since the rules are learned and change, when the throughput is reduced, it is possible to investigate the cause of the throughput reduction by checking whether the applied rule is changed. If there is a problem with a particular rule, maintenance is performed by editing the rule. For example, by deleting the rule or changing the compatibility value of the rule, the application of the rule can be controlled to improve the throughput.
[0157]
The performance screen 1503 displays information on performance resources such as a CPU usage rate and a disk usage rate for each replica in a graph. From the performance screen, it is possible to grasp the load for each replica and the load balance between replicas. If the bottleneck for each replica is known from this performance screen, it is possible to make a capital investment proposal to avoid the bottleneck. For example, if the memory usage rate is high, it is possible to propose a memory expansion.
[0158]
FIG. 21 is a diagram for explaining the outline of the business model of the monitoring and management service according to the third embodiment.
[0159]
A system administrator or manager of an IT system 1800, such as a database system (eg, FIG. 1), contracts with an external MSP 1801 to outsource management.
[0160]
The IT system 1800 transmits rule / performance information 1802 to the MSP 1801. This rule / performance information 1802 includes rules generated autonomously in the IT system 1800 in addition to performance information such as server resource usage.
[0161]
The MSP 1801 performs rule monitoring / analysis in addition to performance information monitoring / analysis such as resource usage rate that has been conventionally performed. The MSP 1801 receives the rule / performance information 1802, performs an analysis, summarizes the analysis result in a report 1803, and provides it to the IT system 1800. The MSP 1801 performs remote maintenance 1805. Here, in addition to changing the setting parameters of the conventional software, the rules are edited. The rule is described by abstracting a plurality of data (for example, in an if-then format), and is easy to understand by humans because of its high readability, so it can be edited by the administrator of the MSP 1801.
[0162]
In addition, after the diagnosis by the MSP 1801, it is possible to propose a change of hardware such as the replica 104. By managing the rule / performance information 1802 in chronological order and grasping changes in the system, it is possible to take measures before a performance problem occurs.
[0163]
The administrator or manager of the IT system 1800 pays the consideration 1804 to the MSP 1801 for maintenance and service.
[0164]
More specifically, MSP 1801 periodically executes analysis report 1803. The administrator or manager of the IT system 1800 as a user pays a support / maintenance fee to the MSP 1801 as the consideration.
[0165]
As described above, in the third embodiment, since the management server 105 is monitored and managed by the external monitoring / analysis server 1600, the behavior of the system can be grasped by handling the abstract rules. Since it is easy and maintenance by changing rules is easy, it is possible to provide high value-added services.
[Brief description of the drawings]
FIG. 1 is a configuration diagram of a database system according to a first embodiment of this invention.
FIG. 2 is a flowchart of processing of the replica 104 according to the first embodiment of this invention.
FIG. 3 is a configuration diagram of log data recorded by the replica 104 according to the first embodiment of this invention.
FIG. 4 is a flowchart of processing of the management server 105 according to the first embodiment of this invention.
FIG. 5 is an explanatory diagram of inquiry grouping according to the first embodiment of this invention;
FIG. 6 is an explanatory diagram of an inquiry execution state according to the first embodiment of this invention;
FIG. 7 is an explanatory diagram of a compatibility matrix used for compatibility calculation in the first embodiment of the present invention.
FIG. 8 is a flowchart of compatibility calculation (step 502) according to the first embodiment of this invention;
FIG. 9 is a flowchart of rule generation (step 503) between queries according to the first embodiment of this invention;
FIG. 10 is a configuration diagram of a rule list according to the first embodiment of this invention.
FIG. 11 is an explanatory diagram of another compatibility matrix used for compatibility calculation in the first embodiment of the present invention.
FIG. 12 is an explanatory diagram of a data file managed in the rule database 140 by the management server 105 according to the first embodiment of this invention.
FIG. 13 is a flowchart of processing of the front end according to the first embodiment of this invention.
FIG. 14 is a flowchart of scheduling (step 604) according to the first embodiment of this invention;
FIG. 15 is an explanatory diagram of a compatibility matrix between users used for compatibility calculation in the second embodiment of the present invention;
FIG. 16 is a flowchart of scheduling (step 604) according to the second embodiment of this invention;
FIG. 17 is a configuration diagram of a database system according to a third embodiment of this invention.
FIG. 18 is a flowchart of processing between the monitoring / analysis server 1600 and the management server 105 according to the third embodiment of this invention;
FIG. 19 is an explanatory diagram of a data file managed by the monitoring / analysis server 1600 according to the third embodiment of this invention in the performance information database 1620;
FIG. 20 is a diagram illustrating an example of an analysis report display screen according to the third embodiment of this invention.
FIG. 21 is a schematic diagram of a business model of a monitoring and management service.
FIG. 22 is a configuration diagram of a conventional database system.
FIG. 23 is an explanatory diagram of the operation of a database buffer in a conventional database system.
FIG. 24 is an explanatory diagram of the operation of a database buffer in a conventional database system.
[Explanation of symbols]
100 clients
101 network
102 Database server (front end)
103 Database server (master)
104 Database server (replica)
105 Management server
106 Master disk
107 replica disk
110 Log recording / transmission unit
111 Inquiry execution unit
120 Log acquisition unit
121 compatibility calculator
122 Rule generator
123 Rule Management Department
140 rule database
200 servers
201 disks
203 memory
1600 Monitoring / analysis server
1601 network
1602 Performance Information Management Department
1603 Analysis report generator

Claims (17)

同一内容の検索が可能なデータベースを有し、問い合わせ要求に従って該データベースを検索する複数のデータベースサーバと、
前記問い合わせ依頼を受け付け、定められたルールを用いて前記データベースサーバに問い合わせを投入するフロントエンドサーバと、
前記フロントエンドサーバが使用するルールを管理する管理サーバと、
前記各サーバ及び問い合わせを要求するクライアント端末を接続するネットワークと、を備えるデータベースシステムであって、
前記管理サーバは、
前記データベースサーバの実行ログを取得するログ取得手段と、
前記取得したログを用いて計算された問い合わせに関する相性に基づいて前記ルールを生成するルール生成手段と、を有し、
前記フロントエンドサーバは、前記管理サーバで生成されたルールを用いて、前記問い合わせを投入する問合せ投入手段を有することを特徴とするデータベースシステム。
A plurality of database servers having databases capable of searching the same content, and searching the databases according to an inquiry request;
A front-end server that accepts the inquiry request and inputs an inquiry to the database server using a predetermined rule;
A management server for managing rules used by the front-end server;
A network system connecting each of the servers and a client terminal that requests an inquiry,
The management server
Log acquisition means for acquiring an execution log of the database server;
Rule generation means for generating the rule based on compatibility with the query calculated using the acquired log,
The database system according to claim 1, wherein the front-end server has inquiry input means for inputting the inquiry using a rule generated by the management server.
同一内容の検索が可能なデータベースを検索する複数のデータベースサーバに対して、定められたルールを用いて、問い合わせ要求に従って問い合わせを投入するフロントエンドサーバが使用するルールを管理するサーバであって、
前記データベースサーバの実行ログを取得するログ取得手段と、
前記取得したログを用いて計算された問い合わせに関する相性に基づいて前記ルールを生成するルール生成手段と、
前記生成されたルールを用いて前記フロントエンドサーバに前記問い合わせを投入させるために、前記生成されたルールを前記フロントエンドサーバに送信するルール送信手段と、有することを特徴とするサーバ。
A server that manages rules used by a front-end server that inputs a query according to a query request using a predetermined rule for a plurality of database servers that search a database capable of searching the same content,
Log acquisition means for acquiring an execution log of the database server;
Rule generation means for generating the rule based on compatibility with the query calculated using the acquired log;
A server having rule transmitting means for transmitting the generated rule to the front-end server in order to cause the front-end server to input the inquiry using the generated rule.
前記ルール生成手段は、前記取得したログに含まれる問い合わせを統計的に処理することによって前記問い合わせ間の相性を計算し、ルールを生成することを特徴とする請求項2に記載のサーバ。  The server according to claim 2, wherein the rule generation unit generates a rule by calculating compatibility between the queries by statistically processing the queries included in the acquired log. 前記ルール生成手段は、前記データベースサーバの実行ログに含まれる問い合わせをグループ化し、
グループ化された問い合わせの平均処理時間と、
該グループ化された問い合わせ及び他のグループ化された問い合わせが所定の時間関係で実行される場合の、該グループ化された問い合わせの平均処理時間と、を比較した結果に基づいて、
前記問い合わせ間の相性を計算し、ルールを生成することを特徴とする請求項3に記載のサーバ。
The rule generation means groups the queries included in the execution log of the database server,
The average processing time for grouped queries,
Based on the result of comparing the grouped query and the average processing time of the grouped query when the grouped query and other grouped queries are executed in a predetermined time relationship,
The server according to claim 3, wherein a compatibility is calculated between the queries and a rule is generated.
前記ルール生成手段は、
前記データベース毎に前記実行ログ内へ記録される問い合わせの処理時間を、前記データベース間で比較した結果に基づいて、
前記問い合わせと前記データベースとの間の相性を計算し、ルールを生成することを特徴とする請求項2に記載のサーバ。
The rule generation means includes:
Based on the result of comparing the processing time of the query recorded in the execution log for each database between the databases,
The server according to claim 2, wherein a rule is generated by calculating compatibility between the inquiry and the database.
前記ルール生成手段は、
あるユーザが実行した問い合わせの平均処理時間と、
該ユーザが実行する問い合わせ及び他のユーザが実行した問い合わせが、所定の時間関係で実行される場合の、該ユーザが投入した問い合わせの平均処理時間とを、比較した結果に基づいて、
問い合わせを発行するユーザ間の相性を計算し、ルールを生成することを特徴とする請求項2に記載のサーバ。
The rule generation means includes:
The average processing time for queries run by a user,
Based on the comparison result of the average processing time of the query submitted by the user when the query executed by the user and the query executed by another user are executed in a predetermined time relationship,
The server according to claim 2, wherein compatibility is calculated between users who issue inquiries, and rules are generated.
前記ルール生成手段によって生成されたルールを変更するルール変更手段を有することを特徴とする請求項2に記載のサーバ。  The server according to claim 2, further comprising a rule changing unit that changes the rule generated by the rule generating unit. ネットワークを介して外部からのアクセスを許容する外部アクセス手段を有し、
前記外部アクセス手段を介して、前記ルール変更手段によって前記ルールを変更することを特徴とする請求項7に記載のサーバ。
Having external access means for allowing access from outside via the network;
The server according to claim 7, wherein the rule is changed by the rule changing unit via the external access unit.
前記ログ取得手段は、前記ルール送信手段によって送信されたルールに基づいて投入された問い合わせに関する実行ログを取得し、
前記ルール生成手段は、前記取得したログを用いて計算された問い合わせに関する相性に基づいて前記ルールを生成することによって、
自律的にルールを学習することを特徴とする請求項2に記載のサーバ。
The log acquisition unit acquires an execution log related to an inquiry input based on the rule transmitted by the rule transmission unit,
The rule generation means generates the rule based on compatibility with the query calculated using the acquired log,
The server according to claim 2, wherein the server learns rules autonomously.
同一内容の検索が可能なデータベースを有し、問い合わせ要求に従って該データベースを検索する複数のデータベースサーバと、
前記問い合わせ依頼を受け付け、定められたルールを用いて前記データベースサーバに問い合わせを投入するフロントエンドサーバと、
前記フロントエンドサーバが使用するルールを管理する管理サーバと、を備えるデータベースシステムで用いられる問い合わせ投入方法において、
前記管理サーバは、
前記データベースサーバの実行ログを取得し、
前記取得したログを用いて計算された問い合わせに関する相性に基づいて前記ルールを生成し、
前記フロントエンドサーバは、
前記管理サーバで生成されたルールを用いて、前記問い合わせを投入することを特徴とする問い合わせ投入方法。
A plurality of database servers having databases capable of searching the same content, and searching the databases according to an inquiry request;
A front-end server that accepts the inquiry request and inputs an inquiry to the database server using a predetermined rule;
In a query input method used in a database system comprising a management server for managing rules used by the front-end server,
The management server
Acquire the execution log of the database server,
Generating the rule based on affinity for the query calculated using the acquired log;
The front-end server is
An inquiry input method, wherein the inquiry is input using a rule generated by the management server.
前記取得したログに含まれる問い合わせを統計的に処理することによって前記問い合わせ間の相性を計算し、ルールを生成することを特徴とする請求項10に記載の問い合わせ投入方法。  11. The inquiry input method according to claim 10, wherein a rule is generated by calculating a compatibility between the inquiries by statistically processing an inquiry included in the acquired log. 前記データベースサーバの実行ログに含まれる問い合わせをグループ化し、
前記グループ化された問い合わせの平均処理時間と、
該グループ化された問い合わせ及び他のグループ化された問い合わせが所定の時間関係で実行される場合の、該グループ化された問い合わせの平均処理時間と、を比較した結果に基づいて、
前記問い合わせ間の相性を計算することを特徴とする請求項11に記載の問い合わせ投入方法。
Grouping the queries included in the execution log of the database server,
An average processing time for the grouped queries;
Based on the result of comparing the grouped query and the average processing time of the grouped query when the grouped query and other grouped queries are executed in a predetermined time relationship,
The inquiry input method according to claim 11, wherein the compatibility between the inquiries is calculated.
前記取得したログに含まれる問い合わせを統計的に処理することによって、前記問い合わせと前記データベースサーバとの間の相性を計算し、ルールを生成することを特徴とする請求項10に記載の問い合わせ投入方法。  The query input method according to claim 10, wherein a rule is generated by calculating compatibility between the query and the database server by statistically processing the query included in the acquired log. . 前記取得したログに含まれる問い合わせを統計的に処理することによって、前記問い合わせに関して、前記問い合わせを発行するユーザ間の相性を計算し、ルールを生成することを特徴とする請求項10に記載の問い合わせ投入方法。  The query according to claim 10, wherein the query included in the acquired log is statistically processed to calculate a compatibility between users who issue the query and generate a rule. Input method. 前記問い合わせを投入するデータベースサーバを決定する際に、該問いあわせと最も相性のよいデータベースサーバを選択することを特徴とする請求項10に記載の問い合わせ投入方法。  11. The inquiry input method according to claim 10, wherein when determining a database server to which the inquiry is input, a database server most compatible with the inquiry is selected. 前記問い合わせを投入するデータベースサーバを決定する際に、
該問いあわせと相性のよいデータベースサーバが無い場合は、
該問い合わせを投入可能なデータベースサーバの中から、該問い合わせと相性が悪いデータベースサーバサーバを除外した後に、
該問い合わせを投入するデータベースサーバを確率的に選択することを特徴とする請求項10に記載の問い合わせ投入方法。
When determining the database server to which the query is to be submitted,
If there is no database server compatible with the inquiry,
After excluding the database server server that is incompatible with the query from the database servers that can input the query,
11. The inquiry input method according to claim 10, wherein a database server to which the inquiry is input is selected stochastically.
前記問い合わせを投入するデータベースサーバを決定する際に、
該問い合わせとの相性のよい問い合わせが直前に実行されているデータベースサーバを選択して、該問い合わせを投入することを特徴とする請求項10に記載の問い合わせ投入方法。
When determining the database server to which the query is to be submitted,
11. The inquiry input method according to claim 10, wherein the inquiry is selected by selecting a database server in which an inquiry having compatibility with the inquiry is executed immediately before.
JP2003071908A 2003-03-17 2003-03-17 Database system, server, inquiry input method and data update method Expired - Fee Related JP4327481B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2003071908A JP4327481B2 (en) 2003-03-17 2003-03-17 Database system, server, inquiry input method and data update method
US10/751,419 US7146357B2 (en) 2003-03-17 2004-01-06 Database system, server, query posing method, and data updating method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003071908A JP4327481B2 (en) 2003-03-17 2003-03-17 Database system, server, inquiry input method and data update method

Publications (2)

Publication Number Publication Date
JP2004280528A JP2004280528A (en) 2004-10-07
JP4327481B2 true JP4327481B2 (en) 2009-09-09

Family

ID=32984695

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003071908A Expired - Fee Related JP4327481B2 (en) 2003-03-17 2003-03-17 Database system, server, inquiry input method and data update method

Country Status (2)

Country Link
US (1) US7146357B2 (en)
JP (1) JP4327481B2 (en)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7448022B1 (en) 2004-02-10 2008-11-04 Prasad Ram Dynamic software composition in a component-based software system
US8024301B2 (en) * 2004-03-26 2011-09-20 Oracle International Corporation Automatic database diagnostic usage models
US20060095403A1 (en) * 2004-11-03 2006-05-04 International Business Machines Corporation Method, system and program product for filtering model objects
JP2008500629A (en) * 2004-11-03 2008-01-10 ネッツ カンパニー リミテッド Provisioning processing apparatus and method
JP4720213B2 (en) * 2005-02-28 2011-07-13 富士通株式会社 Analysis support program, apparatus and method
US8457219B2 (en) * 2005-12-30 2013-06-04 Ikanos Communications, Inc. Self-protection against non-stationary disturbances
US7720863B2 (en) * 2006-03-17 2010-05-18 Microsoft Corporation Security view-based, external enforcement of business application security rules
JP5269394B2 (en) * 2007-11-15 2013-08-21 株式会社野村総合研究所 Database distribution device, database distribution method, program, and recording medium
US20090182707A1 (en) * 2008-01-10 2009-07-16 Dbix Corporation Database changeset management system and method
JP5077430B2 (en) 2008-03-31 2012-11-21 富士通株式会社 Management device and management device program
US8682853B2 (en) * 2008-05-16 2014-03-25 Paraccel Llc System and method for enhancing storage performance in analytical database applications
US20090327216A1 (en) * 2008-06-30 2009-12-31 Teradata Us, Inc. Dynamic run-time optimization using automated system regulation for a parallel query optimizer
JP5257172B2 (en) 2009-03-16 2013-08-07 富士通株式会社 SEARCH METHOD, SEARCH PROGRAM, AND SEARCH DEVICE
JP2011003050A (en) * 2009-06-19 2011-01-06 Mitsubishi Electric Corp Management system
JP5483561B2 (en) * 2010-02-25 2014-05-07 楽天株式会社 Storage device, server device, storage system, database device, data providing method, and program
JP5367636B2 (en) * 2010-05-11 2013-12-11 日本電信電話株式会社 Database management apparatus, database system, database management method and program
US9384112B2 (en) * 2010-07-01 2016-07-05 Logrhythm, Inc. Log collection, structuring and processing
JP2012053660A (en) * 2010-09-01 2012-03-15 Nippon Telegr & Teleph Corp <Ntt> Backup server and operation method of the same
JP5043166B2 (en) * 2010-09-10 2012-10-10 株式会社日立製作所 Computer system, data search method, and database management computer
US9009185B2 (en) * 2010-12-28 2015-04-14 Sevone, Inc. Scalable performance management system
US20130262437A1 (en) * 2011-12-30 2013-10-03 Sameer Abhinkar Energy-Efficient Query Optimization
US8595200B2 (en) * 2012-01-03 2013-11-26 Wizsoft Ltd. Finding suspicious association rules in data records
US10216799B2 (en) 2012-10-19 2019-02-26 Telefonaktiebolaget Lm Ericsson (Publ) Federated database system
US9953054B2 (en) * 2013-04-22 2018-04-24 Salesforce.Com, Inc. Systems and methods for implementing and maintaining sampled tables in a database system
US9940342B2 (en) 2014-09-25 2018-04-10 Red Hat, Inc. Stability measurement for federation engine
US9633060B2 (en) 2015-05-14 2017-04-25 Walleye Software, LLC Computer data distribution architecture with table data cache proxy
US10241965B1 (en) 2017-08-24 2019-03-26 Deephaven Data Labs Llc Computer data distribution architecture connecting an update propagation graph through multiple remote query processors
CN109032849B (en) 2018-08-30 2021-03-23 百度在线网络技术(北京)有限公司 Hot backup system, hot backup method and computer equipment
CN111475489A (en) * 2020-04-14 2020-07-31 北京思特奇信息技术股份有限公司 Data processing method and device
US11416490B2 (en) * 2020-08-03 2022-08-16 International Business Machines Corporation Prioritization and optimization of database workloads
CN112506761B (en) * 2020-11-26 2022-07-05 福州智象信息技术有限公司 Production environment server interface debugging method and system
CN117271588A (en) * 2023-09-21 2023-12-22 中电金信软件有限公司 Data query method and device, electronic equipment and storage medium

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5301317A (en) * 1992-04-27 1994-04-05 International Business Machines Corporation System for adapting query optimization effort to expected execution time
CA2146171C (en) * 1995-04-03 2000-01-11 Bernhard Schiefer Method for estimating cardinalities for query processing in a relational database management system
JPH09311795A (en) 1996-05-22 1997-12-02 Hitachi Ltd Schedule method
US6353818B1 (en) * 1998-08-19 2002-03-05 Ncr Corporation Plan-per-tuple optimizing of database queries with user-defined functions
US6832229B2 (en) * 2001-03-09 2004-12-14 Oracle International Corporation System and method for maintaining large-grained database concurrency with a log monitor incorporating dynamically redefinable business logic
US7499907B2 (en) * 2001-10-12 2009-03-03 Teradata Us, Inc. Index selection in a database system
US6928554B2 (en) * 2002-10-31 2005-08-09 International Business Machines Corporation Method of query return data analysis for early warning indicators of possible security exposures

Also Published As

Publication number Publication date
US7146357B2 (en) 2006-12-05
JP2004280528A (en) 2004-10-07
US20040186829A1 (en) 2004-09-23

Similar Documents

Publication Publication Date Title
JP4327481B2 (en) Database system, server, inquiry input method and data update method
US20230350894A1 (en) Distinct value estimation for query planning
JP6117378B2 (en) System and method for a distributed database query engine
US9292575B2 (en) Dynamic data aggregation from a plurality of data sources
US10877950B2 (en) Slashtags
US20160188594A1 (en) Resource management in a distributed computing environment
WO2019068002A1 (en) Rule-based autonomous database cloud service framework
US20090157806A1 (en) Method and System for Delivering Information with Caching Based on Interest and Significance
CN116185625B (en) Resource peak-shifting sharing method, device, distributed system and storage medium
Naylor et al. Method of efficiently choosing a cache entry for castout
US20230259446A1 (en) PERFORMANCE TEST ENVIRONMENT FOR APIs
KR100597829B1 (en) Business Rule System Using Ontology and Its Service Method
CN117350607B (en) International logistics transportation path planning system of improved KNN algorithm model
US20090144256A1 (en) Workflow control in a resource hierarchy
JPH09114784A (en) Access right evaluation device
US12536177B1 (en) Incremental search results for sequential partial data queries
US12135603B2 (en) Monitoring energy consumption associated with users of a distributed computing system using tracing
JP2006260074A (en) CAD data management device
Li Performance management of event processing systems
Conde-Sarmiento et al. Dynamic Resource Allocation in Disaggregated Query Engines Using Deep Reinforcement Learning
CN121456240A (en) Page configuration methods, devices, equipment, storage media and program products
Lingamaneni et al. Predicting Replication Time in Cassandra
CN121125676A (en) Multi-agent question-answer interaction efficiency and performance optimization method based on large model
CN117009289A (en) Data storage method, device, equipment, storage medium and product
Medeiros et al. Proactive Index Maintenance: Using Prediction Models for Improving Index Maintenance in Databases

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090210

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090331

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090611

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120619

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees