JP2012524930A - データベース管理方法およびシステム - Google Patents

データベース管理方法およびシステム Download PDF

Info

Publication number
JP2012524930A
JP2012524930A JP2012507131A JP2012507131A JP2012524930A JP 2012524930 A JP2012524930 A JP 2012524930A JP 2012507131 A JP2012507131 A JP 2012507131A JP 2012507131 A JP2012507131 A JP 2012507131A JP 2012524930 A JP2012524930 A JP 2012524930A
Authority
JP
Japan
Prior art keywords
query
execution plan
identifier
parameterized
character string
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.)
Granted
Application number
JP2012507131A
Other languages
English (en)
Other versions
JP5600736B2 (ja
Inventor
キョン シク ソ
ギ ウン パク
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Naver Cloud Corp
Original Assignee
Naver Cloud Corp
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 Naver Cloud Corp filed Critical Naver Cloud Corp
Publication of JP2012524930A publication Critical patent/JP2012524930A/ja
Application granted granted Critical
Publication of JP5600736B2 publication Critical patent/JP5600736B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24561Intermediate data storage techniques for performance improvement
    • 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

Landscapes

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

Abstract

データベース管理方法はクエリの実行値リストをパラメータ化して実行計画を生成することができる。またパラメータ化文字列とパラメータ化文字列に対する実行計画の識別子とをマッチングさせて格納できる。データベース管理方法は、クエリから生成されたパラメータ化文字列をクライアントから受信し、パラメータ化文字列がメモリに格納されているか否かを判断し、パラメータ化文字列がメモリに格納されていれば、メモリにパラメータ化文字列とマッチングして格納されている実行計画識別子をクライアントに送信し、パラメータ化文字列がメモリに格納されていなければ、パラメータ化文字列の実行計画に対する実行計画識別子を生成してクライアントに送信し、クライアントから実行計画識別子とクエリが含む実行値リストから構成されるクエリリクエストを受信し、クエリリクエストを用いて取得されるクエリの結果をクライアントに提供するステップを含む。

Description

本発明は、データベース管理方法に関し、より詳しくは、データ処理速度を向上させることができるデータベース管理方法およびシステムに関する。
データベース管理システム(Database Management System、以下「DBMS」という)は、膨大な量のデータを格納するデータベースを管理するためのシステムであって、大量の情報が絶え間なく生成されている現時代において、なくてはならない重要な要素であると考えられている。
このようなDBMSでは、全てのデータをテーブル(Table)形式でデータベースに格納するが、ここでテーブルとは、データベースでデータを格納する基本構造をいい、1つのテーブルは1つ以上のレコード(Record)から構成される。
ここでレコードとは、テーブルの一行(Row)を意味するもので、他の用語ではタプル(Tuple)ともいう。また、各レコードは、1つ以上のカラム(Column)から構成されるが、ここでカラムとは、テーブルを構成する実際のテーブル項目を表現する名前を有するドメイン(Domain)を意味するもので、他の用語ではアトリビュート(Attribute)またはフィールド(Field)ともいう。
このようなDBMSは、外部から特定のクエリ(Query)が入力される場合、入力されたクエリに応じてデータベースにデータを選択、挿入、更新、削除するなどの機能を行う。
ここでクエリとは、データベースのテーブルに格納されているデータに対してどのような要求、すなわち、データに対してどのような操作を希望するか記述したものを意味し、構造化クエリ言語(Structured Query Language、以下「SQL」という)といった言語を用いて表現される。
このようなSQL文のうち最も代表的なクエリ文は、選択(SELECT)文である。このようなSELECT文を用いてテーブルに存在するデータを閲覧し、データを分析してデータの内容を修正し、複数のテーブルに分散し格納されているデータを相互参照して所望のデータを閲覧することができる。
例えば、「SELECT* FROM board WHERE id=10」というSQL構文の場合、「board」というテーブルから「id=10」を満たす全てのカラムに該当するレコード、言い換えれば、全てのカラムに該当するタプルの選択を要求することを意味する。
このようなDBMSでは、上述したクエリ文が入力されると、入力されたクエリ文を通じて要求されるデータを抽出するために、データ抽出方法と順序を決める実行計画を生成するが、従来のDBMSは、クエリ文が入力される時ごとに各クエリ文ごとに新しい実行計画を生成し、生成された実行計画によってデータを抽出する。
しかしながら、以前に入力された第1クエリ文と完全に同一である第2クエリ文、または、特定の条件、例えば実行値リストのみが異なる第2クエリ文が入力される場合、第2クエリ文に対する実行計画は第1クエリ文に対する実行計画と殆ど同一であるにもかかわらず、従来のDBMSは、第2クエリ文に対する実行計画を再度生成するので、システム運用の効率性が低下するという問題点がある。
また、従来のDBMSは、以前に入力された第1クエリ文と完全に同一である第2クエリ文が入力された場合、第1クエリ文に対するクエリの結果を利用せず、第2クエリ文に対して生成された実行計画の実行を通じて第2クエリ文に対するクエリの結果を別途生成するので、非効率的であるという問題点がある。
本発明は、上述した問題点を解決するためのものであって、クエリ文の実行値リストをパラメータ化することで生成されるパラメータ化された文字列に対して実行計画を生成し、パラメータ化された文字列とパラメータ化された文字列に対する実行計画の識別子とをマッチングして格納することができるデータベース管理方法およびシステムを提供することを技術的課題とする。
特定のクエリ文から生成されたパラメータ化された文字列がメモリに格納されている場合、前記メモリに前記パラメータ化された文字列とマッチングして格納されている実行計画を行うことにより、前記クエリ文に対する結果値を取得することができるデータベース管理方法およびシステムを提供することを他の技術的課題とする。
特定のクエリ文から生成されたパラメータ化された文字列および前記クエリ文の実行値リストがメモリに格納されている場合、前記パラメータ化された文字列および実行値リストとマッチングして格納されている結果値を前記クエリ文に対する結果値として提供することができるデータベース管理方法およびシステムを提供することをさらに他の技術的課題とする。
上述した目的を達成するための本発明の一実施形態に係るデータベース管理方法は、特定のクエリ文から生成されたパラメータ化された文字列をクライアントから受信するステップと、前記パラメータ化された文字列がメモリに格納されているか否かを判断するステップと、前記パラメータ化された文字列が前記メモリに格納されていれば、前記メモリに前記パラメータ化された文字列とマッチングして格納されている実行計画識別子を前記クライアントに送信し、前記パラメータ化された文字列が前記メモリに格納されていなければ、前記パラメータ化された文字列の実行計画に対する実行計画識別子を生成して前記クライアントに送信するステップと、前記実行計画識別子と前記特定のクエリ文に含まれる実行値リストとから構成されるクエリリクエストを前記クライアントから受信するステップと、前記クエリリクエストを用いて取得されるクエリの結果を前記クライアントに提供するステップと、を含む。
このとき、前記パラメータ化された文字列が前記メモリに格納されていない場合、前記実行計画識別子送信ステップは、前記クライアントに前記パラメータ化された文字列に対して応答するステップと、前記クライアントによって生成された実行計画を前記クライアントから受信するステップと、前記受信した実行計画に対する実行計画識別子を生成して前記クライアントに送信するステップと、を含むことを特徴とする。
一方、前記生成された実行計画識別子を前記パラメータ化された文字列とマッチングし、前記メモリに格納するステップをさらに含んでもよい。
本発明の一実施形態において、前記クエリ結果提供ステップの前に、前記メモリに前記クエリリクエストとマッチングするクエリ結果識別子が格納されているか否かを判断するステップをさらに含み、前記クエリ結果提供ステップにおいて、前記クエリリクエストとマッチングするクエリ結果識別子が格納されている場合、前記クエリ結果識別子に対応するクエリの結果を前記メモリまたはディスクから取得して前記クライアントに提供し、前記クエリリクエストとマッチングするクエリ結果識別子が格納されていない場合、前記実行計画識別子に対応する実行計画を、前記実行値リストを用いて実行することによって取得されるクエリの結果を前記クライアントに提供してもよい。
このとき、前記クエリリクエストとマッチングするクエリ結果識別子が格納されていない場合、前記実行計画識別子に対応する実行計画は、前記メモリから直接取得するか、又は前記ディスクに格納されているストリーム形式の実行計画を復号化することで取得することを特徴とする。
一方、前記実行計画を実行することで取得されるクエリの結果を識別するためのクエリ結果識別子を生成するステップと、前記クエリ結果識別子、前記クエリリクエスト、および前記パラメータ化された文字列を互いにマッチングして前記メモリに格納するステップと、をさらに含んでもよい。
本発明の一実施形態において、前記パラメータ化された文字列、前記クエリリクエスト、および前記クエリリクエストに対するクエリ結果識別のためのクエリ結果識別子がマッチングして記録されるクエリテーブルを生成するステップをさらに含んでもよい。このような本発明の実施形態による場合、前記パラメータ化された文字列に含まれているテーブル情報に対応するテーブルが変更されれば、前記クエリテーブルを更新するステップをさらに含んでもよい。
このとき、前記パラメータ化された文字列は、前記クエリ文に含まれた実行値リストが予め定められたパラメータに変換された文字列であることを特徴とする。
上述した目的を達成するための本発明の他の実施形態に係るデータベース管理方法は、ユーザから受信したクエリ文からパラメータ化された文字列を生成するステップと、前記パラメータ化された文字列をサーバに送信するステップと、前記サーバから前記パラメータ化された文字列に対する実行計画識別子を受信するステップと、前記実行計画識別子と前記クエリ文に含まれた実行値リストとから構成されるクエリリクエストを前記サーバに送信するステップと、前記クエリリクエストに対するクエリの結果を前記サーバから受信するステップと、を含む。
このとき、前記実行計画識別子受信ステップの以前に、前記サーバから前記パラメータ化された文字列に対する応答が受信されれば、前記パラメータ化された文字列に対する実行計画を生成するステップと、前記生成された実行計画を前記サーバに送信するステップと、をさらに含んでもよい。
上述した目的を達成するための本発明のさらに他の実施形態に係るデータベース管理システムは、クライアントとのインターフェースを担当するインターフェースモジュールと、クエリ文から生成されたパラメータ化された文字列がメモリに格納されているか否かを判断する判断モジュールと、前記パラメータ化された文字列が前記メモリに格納されていれば、前記メモリに前記パラメータ化された文字列とマッチングして格納されている実行計画識別子を前記クライアントに送信し、前記パラメータ化された文字列が前記メモリに格納されていなければ、前記パラメータ化された文字列の実行計画に対する実行計画識別子を生成して前記クライアントに送信する実行計画識別子管理モジュールと、前記実行計画識別子と前記クエリ文に含まれた実行値リストとから構成されるクエリリクエストが前記クライアントから受信されれば、前記クエリリクエストに対するクエリの結果を取得して前記クライアントに提供するクエリ結果取得モジュールと、を含む。
上述した目的を達成するための本発明のさらに他の実施形態に係るデータベース管理システムは、ユーザから受信したクエリ文からパラメータ化された文字列を生成する文字列生成モジュールと、サーバから前記パラメータ化された文字列に対する実行計画識別子が受信されれば、前記実行計画識別子と前記クエリ文に含まれた実行値リストとから構成されるクエリリクエストを生成するクエリリクエスト生成モジュールと、前記パラメータ化された文字列および前記クエリリクエストを前記サーバに送信し、前記サーバから前記実行計画識別子および前記クエリリクエストに対するクエリの結果を受信するインターフェースモジュールと、を含む。
本発明の一実施形態によれば、各クエリ文の実行値リストをパラメータ化することで生成されるパラメータ化された文字列に対して実行計画を生成し、パラメータ化された文字列とパラメータ化された文字列に対する実行計画の識別子とをマッチングして格納するので、各クエリ文とそのクエリ文に対する実行計画の識別子を全部マッチングして格納することに比べて、メモリ資源を効率的に使用することができる。
また、本発明の一実施形態によれば、特定のクエリ文から生成されたパラメータ化された文字列がメモリに格納されている場合、前記クエリ文に対する実行計画を新しく生成する必要がなく、前記メモリに前記パラメータ化された文字列とマッチングして格納されている実行計画を行うことにより、クエリ文に対する結果値を取得することができるので、システムの速度を向上させることができる。
また、本発明の一実施形態によれば、特定のクエリ文から生成されたパラメータ化された文字列と、前記クエリ文の実行値とがメモリに格納されている場合、前記クエリ文に対する実行計画を新しく生成するか、または、生成された実行計画を行う必要なく、前記メモリに前記パラメータ化された文字列および実行値とマッチングして格納されている結果値を前記クエリ文に対する結果値として提供することができるので、システムの速度をさらに向上させることができる。
本発明の一実施形態に係るデータベース管理システムの構成を示す図である。 図1に示されたクライアントの細部構成を示すブロック図である。 図1に示されたサーバの細部構成を示すブロック図である。 本発明の一実施形態に係るデータベース管理方法を示すフローチャートである。
以下、添付する図面を参照して本発明の実施形態について詳細に説明する。
図1は、本発明の一実施形態に係るデータベース管理システムの構成を示す図である。
図1に示すように、データベース管理システム100は、クライアント110とサーバ120を含んでもよく、このようなデータベース管理システム100は、データベース140に接続され、データベース140に記録されたデータを更新または削除したり、データベース140にデータを追加したりするなど、データベース140を統合的に管理する機能を行う。
まず、クライアント110は、ユーザからクエリ文を受信し、そのクエリ文に対する実行計画を生成してサーバ120に送信する機能を行うもので、図2に示すように、クエリ文分析モジュール111と、文字列生成モジュール112と、実行計画生成モジュール114と、クエリリクエスト生成モジュール116と、サーバインターフェースモジュール118とを含む。
クエリ文分析モジュール111は、ユーザからクエリ文を受信し、受信したクエリ文を解析(Parsing)した後、意味分析(Semantic Check)を行うことによってクエリ文を分析する。ここで、クエリ文とは、データベース140に格納されている特定のテーブルから特定の条件を満たすデータを取り出すためのデータ取り出しのリクエストが定義されている文字列を意味する。本発明の一実施形態において、このようなクエリ文は、SQL(Structured Query Language)構文を用いて生成される。
例えば、データベース140から特定の社員番号に該当する社員の情報を取り出すためのリクエストが定義されたクエリ文をSQL構文として作成すると、次のようになる。
1) SELECT * FROM EMPLOYEE WHERE EMPNO = 2106
上述したクエリ文は、特定の社員番号が2106である社員情報の取り出しを定義するSELECT文であり、「*」は取り出す社員の全ての情報(例えば、社員番号が2106に該当するタプルに含まれた全てのカラム)を意味し、「EMPLOYEE」はそのタプルが記録されているテーブルを意味し、「EMPNO=2106」は社員番号が「2106」であることを意味する。
文字列生成モジュール112は、クエリ文分析モジュール111によって分析されたクエリ文からパラメータ化された文字列を生成する。本発明の一実施形態において、文字列生成モジュール112は、クエリ文分析モジュール111によって分析されたクエリ文で定数(Constants)またはバインディング変数(Variables)のような実行値リスト(実行値が複数である可能性があるため、実行値リストと表現した)を予め定められたパラメータに変換することにより、パラメータ化された文字列を生成することができる。
例えば、クエリ文が「SELECT* FROM EMPLOYEE WHERE EMPNO = 2106」である場合、実行値リストは「2106」であるので、実行値を予め定められたパラメータである「?」に変換することにより、「SELECT* FROM EMPLOYEE WHERE EMPNO =?」のようなパラメータ化された文字列を生成することができる。
このように、文字列生成モジュール112が特定のクエリ文からパラメータ化された文字列を生成する理由は、従来においては、実行値リストのみが異なってもクエリ文のそれぞれに対して実行計画を生成したので、非常に多くの資源の浪費が発生せざるを得なかったが、上述したように実行値リストを特定のパラメータに変換した一般化した文字列に対して実行計画を生成するようになると、実行値リストのみが異なる各クエリ文に対して1つの実行計画のみを生成すれば済むので、実行計画生成のための資源の浪費を防止することができるためである。
文字列生成モジュール112は、生成したパラメータ化された文字列を、インターフェースモジュール118を介してサーバ120に送信することにより、サーバ120がパラメータ化された文字列に対する実行計画の生成が要求されたか否かを判断できるようにする。
次に、実行計画生成モジュール114は、後述するサーバ120からパラメータ化された文字列に対する応答が受信されると、パラメータ化された文字列に対する実行計画を生成する。ここで、実行計画とは、特定のテーブルから特定の条件に該当するタプルを取り出す方法や取り出す順序などが含まれている資料の構造を意味する。
本発明の一実施形態において、パラメータ化された文字列に対する応答は、サーバ120にパラメータ化された文字列が格納されていないと判断される場合、インターフェースモジュール118を介してサーバ120から送信される。
すなわち、パラメータ化された文字列がサーバ120に格納されていることは、パラメータ化された文字列に対しては実行計画が既に生成されたことを意味し、パラメータ化された文字列がサーバ120に格納されていない場合に実行計画の生成が必要となる。
本発明の一実施形態において、実行計画生成モジュール114は、サーバ120からパラメータ化された文字列の送信に対する応答としてNullが受信されると、パラメータ化された文字列に対する実行計画を生成することと判断する。
次に、クエリリクエスト生成モジュール116は、サーバ120からパラメータ化された文字列の送信に対する応答または実行計画送信に対する応答として、パラメータ化された文字列に対する実行計画識別子がインターフェースモジュール118を介して受信されると、サーバ120から送信された実行計画識別子とクエリ文分析モジュール111を介して受信されたクエリ文に含まれた実行値リストとを用いて、クエリリクエストを生成する。
パラメータ化された文字列に対する実行計画識別子と関連して、パラメータ化された文字列がサーバ120に格納されている場合には、パラメータ化された文字列に対する実行計画識別子は、パラメータ化された文字列の送信に対する応答としてサーバ120によって直ちに提供されるが、パラメータ化された文字列がサーバ120に格納されていない場合には、実行計画生成モジュール114がパラメータ化された文字列に対する実行計画を生成してサーバ120に送信しなければ、その実行計画に対する実行計画識別子がサーバ120により生成され提供されない。
本発明の一実施形態において、クエリリクエスト生成モジュール116は、サーバ120から送信される実行計画識別子と、クエリ文に含まれている実行値リストとを対(Pair)形式で生成してもよい。
例えば、クエリ文が「SELECT* FROM EMPLOYEE WHERE EMPNO =2106」であり、サーバ120から「SELECT* FROM EMPLOYEE WHERE EMPNO =?」のような一般化した文字列に対する実行計画識別子として「P」が送信された場合、そのクエリ文に含まれている実行値は「2106」であるので、クエリリクエスト生成モジュール116は{P、2106}のような対形式のクエリリクエストをサーバ120に送信する。
このように本発明に係るクエリリクエスト生成モジュール116は、実行計画自体をクエリリクエストとして送信する従来の方法に比べて、クエリリクエストに含まれる情報の量を大幅縮小させることができ、膨大な量のデータ照会時に発生するネットワーク負荷を減少させることができる。
次に、インターフェースモジュール118は、サーバ120とのインターフェース機能を担当するもので、文字列生成モジュール112によって生成されたパラメータ化された文字列をサーバ120に送信し、サーバ120からパラメータ化された文字列の送信に対する応答を受信する。
ここで、パラメータ化された文字列の送信に対する応答は、上述したようにパラメータ化された文字列がサーバ120に格納されている場合には、パラメータ化された文字列に対する実行計画識別子であり、パラメータ化された文字列がサーバ120に格納されていない場合には、その旨の応答とすることができる。
インターフェースモジュール118は、パラメータ化された文字列の送信に対する応答がサーバ120から受信されると、これを実行計画生成モジュール114に送信し、実行計画識別子が送信されると、クエリリクエスト生成モジュール116に実行計画識別子を送信する。
また、インターフェースモジュール118は、実行計画生成モジュール114によって生成された実行計画をストリーム形式に変換してサーバ120に送信し、実行計画生成モジュール114によって生成された実行計画に対する実行計画識別子をサーバ120から受信してクエリリクエスト生成モジュール116に送信する。
また、インターフェースモジュール118は、クエリリクエスト生成モジュール116によって生成されたクエリリクエストをサーバ120に送信し、サーバ120からクエリリクエストに対応するクエリの結果を受信してユーザに提供する。
本発明の一実施形態において、各モジュールを含むクライアント110は、プログラム化されてユーザ端末(図示せず)上に設けられてもよいが、変形された実施形態においてはサーバ120上に設けられてもよい。
再び図1を参照すると、サーバ120は、クライアント110によって生成された実行計画を格納および実行し、実行計画の実行によって取得されるクエリの結果をクライアント110に提供する役割を行う。
このようなサーバ120は、図3に示すように判断モジュール122と、実行計画識別子管理モジュール124と、クエリ結果取得モジュール126と、クエリテーブル管理モジュール128と、インターフェースモジュール130と、メモリ132と、ディスク134とを含む。
判断モジュール122は、クライアント110から受信するパラメータ化された文字列がメモリ132の管理テーブルに記録されているか否かを判断し、その結果を後述する実行計画識別子管理モジュール122に送信する。すなわち、判断モジュール122は、クライアント110から受信するパラメータ化された文字列が以前に受信された文字列であるか否かを判断する。
本発明の一実施形態において、判断モジュール122は、後述するクエリテーブル管理モジュール128に生成され、メモリ132が格納しているクエリテーブルにパラメータ化された文字列が存在するか否かを判断することができる。
実行計画識別子管理モジュール124は、判断モジュール122によってパラメータ化された文字列がクエリテーブルに格納されていると判断されれば、クエリテーブル上でパラメータ化された文字列とマッチングして格納されている実行計画識別子を後述するインターフェースモジュール130を介してクライアント110に送信する。
すなわち、上述したように、パラメータ化された文字列がクエリテーブルに格納されていることは、そのパラメータ化された文字列が以前に受信された文字列であって、そのパラメータ化された文字列に対する実行計画と実行計画識別子とが既に生成されているので、実行計画識別子管理モジュール124は、そのパラメータ化された文字列とマッチングして格納されている実行計画識別子をクライアント110に提供することを意味する。
一方、実行計画識別子管理モジュール124は、判断モジュール122によってパラメータ化された文字列がクエリテーブルに格納されていないと判断されれば、その旨の応答を送信する。本発明の一実施形態において、実行計画識別子管理モジュール124は、パラメータ化された文字列の送信に対する応答としてNullをクライアント110に送信する。
その後、クライアント110からパラメータ化された文字列に対する実行計画が受信されると、実行計画識別子管理モジュール124は、クライアント110から受信したストリーム形式の実行計画をファイルの形式でディスク134に格納し、その実行計画に対する実行計画識別子を生成してクライアント110に送信する。
本発明の一実施形態において、実行計画識別子管理モジュール124は、実行計画が格納されているファイルの識別子を実行計画識別子として決めることができる。
一方、実行計画識別子管理モジュール124は、生成された実行計画識別子を後述するクエリテーブル管理モジュール128に送信することにより、実行計画識別子をパラメータ化された文字列とマッチングし、クエリテーブル上に記録するようにする。
次に、クエリ結果取得モジュール126は、クライアント110から送信されるクエリリクエストに対するクエリの結果を取得し、クライアントインターフェースモジュール130を介してクライアント110に提供する。ここで、クエリリクエストとは、上述したように、パラメータ化された文字列に対する実行計画識別子と、クエリ文に含まれた実行値リストとが対の形式に定義されているテキストを意味し、クエリの結果は1つのタプルまたは複数のタプルの集合であってもよい。
具体的に、クエリ結果取得モジュール126は、メモリ132に格納されたクエリテーブルにクライアント110から受信したクエリリクエストとマッチングするクエリ結果識別子が記録されているか否かを判断し、クエリリクエストとマッチングするクエリ結果識別子がクエリテーブルに記録されている場合、そのクエリ結果識別子に対応するクエリの結果をメモリ132またはディスク134から取得してクライアント110に提供する。
上述したように、クエリテーブルにクエリリクエストとマッチングするクエリ結果識別子が格納されていることは、そのクエリリクエストが以前に入力されたクエリリクエストであって、そのクエリリクエストに対するクエリの結果はメモリ132やディスク134に既に格納されているので、そのクエリリクエストに対するクエリの結果を取得するためにディスク134に格納されている実行計画を復号化したり、復号化された実行計画を実行したりする必要がないことを意味する。
このように、本発明は、同一のクエリリクエストが発生した場合、そのクエリリクエストに対して以前に生成されたクエリの結果を利用することができるので、データを照会する速度を向上させることが可能となる。
一方、クエリリクエストとマッチングするクエリ結果識別子がクエリテーブルに記録されていない場合には、クエリ結果取得モジュール126は、クエリリクエストに含まれた実行計画識別子に対応する実行計画がメモリ132に格納されているか否かを判断する。
判断結果、メモリ132にそのような実行計画が格納されていない場合、クエリ結果取得モジュール126は、ディスク134からクエリリクエストに含まれた実行計画識別子に該当するストリーム形式の実行計画を読み出し、復号化してメモリ132に格納する。その後、クエリリクエストに含まれている実行値リストを用いて復号化された実行計画を実行することにより、データベース140からクエリの結果を取得してディスク134に格納する。
判断結果、メモリ132にその実行計画が格納されている場合、メモリ132上に既に格納されている実行計画をクエリリクエストに含まれた実行値リストを用いて実行することにより、データベース140からクエリの結果を取得してディスク134に格納する。
本発明の一実施形態において、クエリ結果取得モジュール126は取得されたクエリの結果をディスク134に格納するに当たり、クエリの結果に対するクエリ結果識別子を生成し、生成されたクエリ結果識別子を後述するクエリテーブル管理モジュール128に提供することにより、クエリ結果識別子がクエリテーブル上に記録されるようにする。
上述したように、クエリリクエストとマッチングするクエリ結果識別子がクエリテーブルに格納されていないことは、そのクエリリクエストは最初に入力されたクエリリクエストであることを意味するので、そのクエリリクエストに対するクエリの結果は、クエリリクエストに含まれている実行計画識別子に対応する実行計画と、クエリリクエストに含まれている実行値リストとを用いて取得するようになる。
このように、本発明は、クエリリクエストとマッチングするクエリ結果識別子がクエリテーブルに記録されていない場合であっても、クエリリクエストに対するクエリの結果を取得するために新しい実行計画を生成せず、メモリ132やディスク134に格納されている以前の実行計画をそのまま利用することができるので、データベース管理システム110の性能を改善させることが可能となる。
次に、クエリテーブル管理モジュール128は、クライアント110から送信されるパラメータ化された文字列、パラメータ化された文字列に対して実行計画識別子管理モジュール124によって生成された実行計画識別子、クエリ文に含まれている実行値リスト、および、クエリリクエストに対するクエリ結果識別子をマッチングし、メモリ132に格納されているクエリテーブル上に記録する。
また、クエリテーブル管理モジュール128は、新しいパラメータ化された文字列が受信されるか、又は新しい実行値リストの受信によって新しいクエリ結果識別子が生成される場合、クエリテーブルを更新することができる。
本発明の一実施形態において、クエリテーブル管理モジュール128は、パラメータ化された文字列別に{{パラメータ化された文字列、実行計画識別子}、{1st実行値リスト、1stクエリ結果識別子}、{2nd実行値リスト、2ndクエリ結果識別子}、…、{Nst実行値リスト、Nstクエリ結果識別子}}形式にクエリテーブル上に記録することができる。
一方、クエリテーブル管理モジュール128は、データベース140上でパラメータ化された文字列と関連付けられているテーブルが、データの追加、削除、または更新などの理由で変更されると、クエリテーブル上でパラメータ化された文字列と関連するデータ、例えば、パラメータ化された文字列が記録されているレコードを削除することができる。
上述したように本発明に係るクエリテーブル管理モジュール128は、各クエリ文の実行値リストをパラメータ化することで生成されるパラメータ化された文字列別に実行計画識別子と、実行値リスト及びそれに対するクエリ結果識別子とをマッチングさせて格納するので、メモリ資源を効率的に使用することができる。
次に、インターフェースモジュール130は、クライアント110とのインターフェース機能を実現するもので、クライアント110からパラメータ化された文字列を受信して判断モジュール122およびクエリテーブル管理モジュール128に送信し、それに対する応答として、パラメータ化された文字列とマッチングする実行計画識別子やパラメータ化された文字列に対する実行計画生成リクエストを実行計画識別子生成モジュール124から受信し、クライアント110に提供する。
また、インターフェースモジュール130は、クライアント110からパラメータ化された文字列に対する実行計画を受信して実行計画識別子管理モジュール124に送信し、実行計画識別子管理モジュール124によって生成された実行計画識別子をクライアント110に送信する。
また、インターフェースモジュール130は、実行計画識別子と実行値リストとから構成されるクエリリクエストをクライアント110から受信してクエリ結果取得モジュール126に送信し、クエリ結果取得モジュール126によって取得されたクエリの結果をクライアント110に提供する。
メモリ132には、クエリテーブル管理モジュール128によって生成されたクエリテーブルが記録され、クエリ結果取得モジュール126によって復号化された実行計画が格納され、クエリ結果取得モジュール126が復号化された実行計画を、実行値リストを用いて実行したクエリの結果が格納される。本発明の一実施形態において、メモリ132には、実行計画やクエリの結果のうち最近使用されたN個の実行計画やクエリの結果のみが格納される。
ディスク134には、クライアント110から送信された実行計画が格納され、クエリリクエストに対するクエリの結果が格納される。
データベース110には、様々なデータがテーブル形式に格納され、各テーブルは1つ以上のタプルから構成され、各タプルは1つ以上のカラムから構成される。例えば、特定の会社の社員に関する情報が格納されたデータベースである場合、テーブルは社員に関する情報の集合を意味し、タプルは各社員に該当する情報を意味し、カラムは該当する社員の社員番号、該当する社員の氏名、該当する社員の肩書、該当する社員の年収などが格納される領域を意味する。
以下では、上述したデータベース管理システム100が特定のクエリ文を処理する方法について、例を挙げて説明する。
まず、クエリ文分析モジュール111が「SELECT* FROM EMPLOYEE WHERE EMPNO = 2106」というクエリ文を受信した場合、文字列生成モジュール112は、受信されたクエリ文から「SELECT* FROM EMPLOYEE WHERE EMPNO =?」のようなパラメータ化された文字列を生成し、判断モジュール122に送信する。
その後、判断モジュール122は、パラメータ化された文字列がメモリ132のクエリテーブル上に記録されているか否かを判断する。パラメータ化された文字列がクエリテーブル上に記録されていないと仮定すれば、実行計画識別子管理モジュール124は実行計画生成モジュール114にその旨の応答を送信する。
その後、実行計画生成モジュール114がパラメータ化された文字列に対する実行計画を生成して実行計画識別子管理モジュール124に送信すると、実行計画識別子管理モジュール124は、その実行計画をディスク134に格納し、その実行計画に実行計画識別子「P」を生成してクエリリクエスト生成モジュール116に送信する。
その後、クエリリクエスト生成モジュール116は、実行計画識別子管理モジュール124から送信された実行計画識別子「P」と、クエリ文に含まれている実行値リスト「2106」とを用いて、{P、2106}のような対形式のクエリリクエストを生成してクエリ結果取得モジュール126に送信する。
その後、クエリ結果取得モジュール126は、クエリテーブルに受信されたクエリリクエストとマッチングするクエリ結果識別子が存在するか否かを判断する。この例において、クエリ文は最初に入力されたクエリ文であって、これに対するクエリの結果がメモリ132やディスク134には存在しないので、クエリ結果取得モジュール126は、ディスク134から実行計画識別子「P」に該当する実行計画を読み出し、メモリ132に復号化して格納した後、復号化された実行計画を、実行値リスト2106を用いて実行することでクエリの結果を取得し、取得されたクエリの結果をクライアント110に送信する。
その後、クエリ結果取得モジュール126は、取得されたクエリの結果にR1というクエリ結果識別子を付与し、取得されたクエリの結果をディスク134に格納する。
一方、クエリテーブル管理モジュール128は、パラメータ化された文字列「SELECT* FROM EMPLOYEE WHERE EMPNO =?」と、実行計画識別子「P」と、実行値リスト「2106」と、それに対するクエリ結果識別子「R1」とを互いにマッチングし、{SELECT* FROM EMPLOYEE WHERE EMPNO=?、P、{2106、R1}}のような形式でクエリテーブル上に記録する。
一方、クエリ文分析モジュール111がユーザから「SELECT* FROM EMPLOYEE WHERE EMPNO =100」というクエリ文を受信する場合、文字列生成モジュール112は、受信されたクエリ文から「SELECT * FROM EMPLOYEE WHERE EMPNO =?」のようなパラメータ化された文字列を生成して判断モジュール122に送信する。
判断モジュール122は、クエリテーブルに「SELECT * FROM EMPLOYEE WHERE EMPNO =?」のようなパラメータ化された文字列が記録されているか否かを判断し、実行計画識別子管理モジュール124は、パラメータ化された文字列がクエリテーブルに記録されているので、パラメータ化された文字列とマッチングする実行計画識別子「P」をクエリリクエスト生成モジュール116に送信する。すなわち、このような場合には、パラメータ化された文字列に対する実行計画が既に生成されているので、別途実行計画を生成する必要はない。
次に、クエリリクエスト生成モジュール116は、実行計画識別子「P」とクエリ文に含まれた実行値リスト「100」とを用いて、{P、100}のような対形式のクエリリクエストを生成してクエリ結果取得モジュール126に送信する。
クエリ結果取得モジュール126は、クエリテーブルに受信されたクエリリクエストとマッチングするクエリ結果識別子が存在するか否かを判断する。判断結果、そのクエリリクエストとマッチングするクエリ結果識別子が存在しないが、既にメモリ132に実行計画識別子「P」に該当する実行計画が格納されているので、ディスク134から実行計画識別子「P」に該当する実行計画を読み込む必要はない。
その後、クエリ結果取得モジュール126は、メモリ132に格納されている実行計画を、実行値リスト100を用いて実行することにより、クエリの結果を取得してクライアント100に送信する。
その後、クエリ結果取得モジュール126は、取得したクエリの結果にR2というクエリ結果識別子を付与した後、取得したクエリの結果をディスク134に格納する。
その後、クエリテーブル管理モジュール128は、クエリテーブル上に{100、R2}という内容を追加することにより、クエリテーブルを{SELECT * FROM EMPLOYEE WHERE EMPNO=?、P、{2106、R1}、{100、R2}}のような形式に更新する。
一方、クエリ文分析モジュール111が「SELECT * FROM EMPLOYEE WHERE EMPNO = 1206」というクエリ文を再受信する場合、文字列生成モジュール112は、受信されたクエリ文から「SELECT * FROM EMPLOYEE WHERE EMPNO =?」のようなパラメータ化された文字列を生成し、判断モジュール122に送信する。
判断モジュール122は、クエリテーブルに「SELECT * FROM EMPLOYEE WHERE EMPNO =?」のようなパラメータ化された文字列が記録されているか否かを判断し、実行計画識別子管理モジュール124は、パラメータ化された文字列がクエリテーブル上に記録されているので、パラメータ化された文字列とマッチングしている実行計画識別子「P」をクエリリクエスト生成モジュール116に送信する。すなわち、このような場合には、パラメータ化された文字列に対する実行計画が既に生成されているので、別途実行計画を生成する必要はない。
次に、クエリリクエスト生成モジュール116は、実行計画識別子「P」とクエリ文に含まれた実行値リスト「2106」とを用いて、{P、1206}のような対形式のクエリリクエストを生成してクエリ結果取得モジュール126に送信する。
クエリ結果取得モジュール126は、受信されたクエリリクエストとマッチングするクエリ結果識別子がクエリテーブルに存在するか否かを判断する。判断結果、クエリリクエスト{P、1206}とマッチングするクエリ結果識別子R1がクエリテーブル上に記録されているので、クエリ結果取得モジュール126は、ディスク134からクエリ結果識別子R1に対応するクエリの結果を読み出してメモリ132に格納した後、クエリの結果をクライアント110に提供する。
以下、図4を参照して本発明に係るデータベース管理方法を説明する。
図4は、本発明の一実施形態に係るデータベース管理方法を示すフローチャートである。まず、クライアントはユーザからクエリ文を受信して分析する(S400)。ここで、クエリ文はSQL構文から作成されてもよく、このようなクエリ文の分析は、クエリ文を解析(Parsing)および意味分析(Semantic Check)することを意味する。
次に、クライアントは、分析したクエリ文からパラメータ化された文字列を生成する(S402)。本発明の一実施形態において、文字列生成モジュール112は、クエリ文分析モジュール111によって分析されたクエリ文において定数またはバインディング変数のような実行値リストを予め定められたパラメータに変換することにより、パラメータ化された文字列を生成することができる。
その後、クライアントがパラメータ化された文字列をサーバに送信すると(S404)、サーバはパラメータ化された文字列がクエリテーブル上に記録されているか否かを判断する(S406)。
判断結果、パラメータ化された文字列がクエリテーブルに記録されていない場合には、クライアントにその旨の応答を送信する(S408)。本発明の一実施形態において、サーバは、パラメータ化された文字列の送信に対する応答としてNullをクライアントに送信してもよい。
その後、クライアントは、パラメータ化された文字列に対する実行計画を生成し(S410)、生成された実行計画をサーバに送信する(S412)。本発明の一実施形態において、クライアントは、生成された実行計画をストリーム形式に変換してサーバに送信してもよい。
次に、サーバは、受信した実行計画をディスクに格納した後(S414)、格納された実行計画に対して実行計画識別子を生成する(S415)。本発明の一実施形態において、実行計画識別子の生成時に生成された識別子をパラメータ化された文字列とマッチングさせ、クエリテーブルに記録してもよい。
その後、サーバは、生成された実行計画識別子をクライアントに送信する(S416)。
一方、S406における判断結果、パラメータ化された文字列がクエリテーブルに記録されていれば、クエリテーブル上でパラメータ化された文字列とマッチングさせて記録されている実行計画識別子をクライアントに送信する(S416)。
その後、クライアントは、サーバから実行計画識別子が送信されると、実行計画識別子とクエリ文に含まれている実行値リストとから構成されるクエリリクエストを生成した後(S418)、生成されたクエリリクエストをサーバに送信する(S420)。本発明の一実施形態において、クエリリクエストを生成するとき、クライアントは、サーバから送信される実行計画識別子とクエリ文に含まれている実行値リストとを対形式で生成してもよい。このように本発明では、クエリリクエストに含まれる情報の量を、実行計画そのものをクエリリクエストとして送信する既存方法に比べて、大幅に縮小させることができるので、膨大な量のデータ照会時に発生するネットワーク負荷を減少させることができる。
次に、サーバは、クライアントからクエリリクエストが受信されると、クエリテーブルにクエリリクエストとマッチングするクエリ結果識別子が存在するか否かを判断する(S422)。判断結果、クエリリクエストとマッチングするクエリ結果識別子が存在する場合、メモリまたはディスク上でクエリ結果識別子に対応するクエリの結果を取得した後(S424)、取得されたクエリの結果をクライアントに送信する(S426)。
このとき、ディスクからクエリの結果を取得する場合には、取得されたクエリの結果をメモリ上に格納した後、取得されたクエリの結果をクライアントに送信してもよい。
一方、S422の判断結果、クエリテーブル上にクエリリクエストとマッチングするクエリ結果識別子が存在しない場合、クエリリクエストに含まれた実行計画識別子に対応する実行計画がメモリ上に格納されているか否かを判断する(S428)。
判断結果、メモリ上にその実行計画識別子に対応する実行計画が格納されていない場合、ディスク上からその実行計画識別子に対応する実行計画を読み出した後、復号化してメモリに格納する(S430)。その後、メモリに格納されている実行計画をクエリリクエストに含まれている実行値リストを用いて実行することにより、クエリの結果を取得した後、ディスクに格納する(S432)。
取得されたクエリの結果をディスクに格納するとき、そのクエリの結果を識別するためのクエリ結果識別子を生成し、生成されたクエリ結果識別子をクエリテーブル上にクエリリクエストとマッチングさせて記録してもよい。その後、取得されたクエリの結果をクライアントに送信する(S426)。
一方、S428の判断結果、メモリ上にその実行計画識別子に対応する実行計画が格納されている場合、メモリに格納されている実行計画をクエリリクエストに含まれている実行値リストを用いて実行することにより、クエリの結果を取得した後、取得されたクエリの結果をディスクに格納する(S430)。
上述したデータベース管理方法は、様々なコンピュータの手段によって行われるプログラム命令形態で実現され、コンピュータで読み取り可能な記録媒体に記録される。このとき、コンピュータで読み取り可能な記録媒体は、プログラム命令、データファイル、データ構造などを単独または組み合わせて含んでいてもよい。一方、記録媒体に記録されるプログラム命令は、本発明のために特別に設計されて構成されたもの又はコンピュータソフトウェアの当業者に公知されて使用可能なものであってもよい。
コンピュータで読み取り可能な記録媒体としては、ハードディスク、フロッピー(登録商標)ディスクおよび磁気テープのような磁気媒体(Magnetic Media)、CD−ROM、DVDのような光記録媒体(Optical Media)、フロプティカルディスク(Floptical Disk)のような磁気−光媒体(Magneto−Optical Media)、およびROM、RAM、フラッシュメモリ等のようなプログラム命令を格納し、実行するように特別に構成されたハードウェア装置が含まれる。一方、このような記録媒体は、プログラム命令、データ構造などを指定する信号を送信する搬送波を含む光または金属線、導波管などの送信媒体であってもよい。
また、プログラム命令には、コンパイラによって作製されるような機械語コードだけでなく、インタープリタ等を用いてコンピュータによって実行される高級言語コードを含む。上述したハードウェア装置は、本発明の動作を行うために1つ以上のソフトウェアモジュールとして作動するように構成されてもよく、その逆も同様である。
一方、本発明が属する技術分野の当業者は、上述した本発明をその技術的思想や必須特徴を変更せず、他の具体的な形態で実施可能であることを理解できるであろう。
例えば、上述した本発明の実施形態においては、データベース管理システムがクライアントとサーバとから構成されると記載されているが、変形された実施形態においては、クライアントとサーバを物理的に1つのサーバに実現することもでき、クライアントの一部構成要素がサーバに含まれるか又はサーバの一部構成要素がクライアントに含まれるように実現することもできるであろう。
したがって、上述した本発明の実施形態は、全ての面で例示的なものであり、限定的なものではないことを理解すべきである。本発明の範囲は、前記詳細な説明よりも後述する特許請求範囲によって現れ、特許請求範囲の意味および範囲、またその等価概念から導き出される全ての変更または変形された形態が本発明の範囲に含まれるものと解釈しなければならない。

Claims (25)

  1. 特定のクエリ文から生成されたパラメータ化された文字列をクライアントから受信するステップと、
    前記パラメータ化された文字列がメモリに格納されているか否かを判断するステップと、
    前記パラメータ化された文字列が前記メモリに格納されていれば、前記メモリに前記パラメータ化された文字列とマッチングして格納されている実行計画識別子を前記クライアントに送信し、前記パラメータ化された文字列が前記メモリに格納されていなければ、前記パラメータ化された文字列の実行計画に対する実行計画識別子を生成して前記クライアントに送信するステップと、
    前記クライアントから前記実行計画識別子と前記特定のクエリ文に含まれた実行値リストとから構成されるクエリリクエストを受信するステップと、
    前記クエリリクエストを用いて取得されるクエリの結果を前記クライアントに提供するステップと、を含むことを特徴とするデータベース管理方法。
  2. 前記パラメータ化された文字列が前記メモリに格納されていない場合、前記実行計画識別子を送信するステップは、
    前記クライアントに前記パラメータ化された文字列に対して応答するステップと、
    前記クライアントによって生成された実行計画を前記クライアントから受信するステップと、
    前記受信した実行計画に対する実行計画識別子を生成して前記クライアントに送信するステップと、を含むことを特徴とする請求項1に記載のデータベース管理方法。
  3. 前記生成された実行計画識別子を前記パラメータ化された文字列とマッチングして前記メモリに格納するステップをさらに含むことを特徴とする請求項1に記載のデータベース管理方法。
  4. 前記クエリ結果提供ステップの前に、前記メモリに前記クエリリクエストとマッチングするクエリ結果識別子が格納されているか否かを判断するステップをさらに含み、
    前記クエリ結果提供ステップにおいて、前記クエリリクエストとマッチングするクエリ結果識別子が格納されている場合、前記クエリ結果識別子に対応するクエリの結果を前記メモリまたはディスクから取得して前記クライアントに提供し、
    前記クエリリクエストとマッチングするクエリ結果識別子が格納されていない場合、前記実行計画識別子に対応する実行計画を、前記実行値リストを用いて実行することで取得されるクエリの結果を、前記クライアントに提供することを特徴とする請求項1に記載のデータベース管理方法。
  5. 前記クエリリクエストとマッチングするクエリ結果識別子が格納されていない場合、前記実行計画識別子に対応する実行計画は、前記メモリから直接取得するか又は前記ディスクに格納されているストリーム形式の実行計画を復号化することで取得されることを特徴とする請求項4に記載のデータベース管理方法。
  6. 前記実行計画を実行することで取得されるクエリの結果を識別するためのクエリ結果識別子を生成するステップと、
    前記クエリ結果識別子、前記クエリリクエスト、および前記パラメータ化された文字列を互いにマッチングさせて前記メモリに格納するステップと、をさらに含むことを特徴とする請求項4に記載のデータベース管理方法。
  7. 前記パラメータ化された文字列、前記クエリリクエスト、および前記クエリリクエストに対するクエリ結果識別のためのクエリ結果識別子をマッチングして記録されるクエリテーブルを生成するステップをさらに含むことを特徴とする請求項1に記載のデータベース管理方法。
  8. 前記パラメータ化された文字列に含まれているテーブル情報に対応するテーブルが変更されると、前記クエリテーブルを更新するステップをさらに含むことを特徴とする請求項7に記載のデータベース管理方法。
  9. 前記パラメータ化された文字列は、前記クエリ文に含まれた実行値リストが予め定められたパラメータに変換された文字列であることを特徴とする請求項1に記載のデータベース管理方法。
  10. ユーザから受信したクエリ文からパラメータ化された文字列を生成するステップと、
    前記パラメータ化された文字列をサーバに送信するステップと、
    前記サーバから前記パラメータ化された文字列に対する実行計画識別子を受信するステップと、
    前記実行計画識別子と前記クエリ文に含まれた実行値リストとから構成されるクエリリクエストを前記サーバに送信するステップと、
    前記クエリリクエストに対するクエリの結果を前記サーバから受信するステップと、を含むことを特徴とするデータベース管理方法。
  11. 前記パラメータ化された文字列は、前記クエリ文に含まれた実行値リストを予め定められたパラメータに変換することで生成されることを特徴とする請求項10に記載のデータベース管理方法。
  12. 前記実行計画識別子受信ステップの前に、
    前記サーバから前記パラメータ化された文字列に対する応答が受信されれば、前記パラメータ化された文字列に対する実行計画を生成するステップと、
    前記生成された実行計画を前記サーバに送信するステップと、をさらに含むことを特徴とする請求項10に記載のデータベース管理方法。
  13. 前記パラメータ化された文字列に対する応答は、前記サーバに前記パラメータ化された文字列と前記パラメータ化された文字列に対する実行計画識別子とがマッチングして格納されていない場合、前記サーバから受信されることを特徴とする請求項12に記載のデータベース管理方法。
  14. 請求項1乃至請求項13のいずれか1項に記載された方法を行うためのプログラムが記録された記録媒体。
  15. クライアントとのインターフェースを実現するインターフェースモジュールと、
    クエリ文から生成されたパラメータ化された文字列がメモリに格納されているか否かを判断する判断モジュールと、
    前記パラメータ化された文字列が前記メモリに格納されていれば、前記メモリに前記パラメータ化された文字列とマッチングして格納されている実行計画識別子を前記クライアントに送信し、前記パラメータ化された文字列が前記メモリに格納されていなければ、前記パラメータ化された文字列の実行計画に対する実行計画識別子を生成して前記クライアントに送信する実行計画識別子管理モジュールと、
    前記実行計画識別子と前記クエリ文に含まれた実行値リストとから構成されるクエリリクエストが前記クライアントから受信されれば、前記クエリリクエストに対するクエリの結果を取得して前記クライアントに提供するクエリ結果取得モジュールと、を含むことを特徴とするデータベース管理システム。
  16. 前記実行計画識別子管理モジュールは、
    前記パラメータ化された文字列が前記メモリに格納されていない場合、前記クライアントに前記パラメータ化された文字列に対する応答を送信し、前記クライアントから前記実行計画が受信されれば、前記受信された実行計画に実行計画識別子を付与して前記クライアントに送信することを特徴とする請求項15に記載のデータベース管理システム。
  17. 前記クエリ結果取得モジュールは、
    前記メモリに前記クエリリクエストとマッチングするクエリ結果識別子が格納されているか否かを判断し、
    前記クエリリクエストとマッチングするクエリ結果識別子が格納されていれば、前記クエリ結果識別子に対応するクエリの結果を前記メモリまたはディスクから取得して前記クライアントに提供し、
    前記クエリリクエストとマッチングするクエリ結果識別子が格納されていなければ、前記実行計画識別子に対応する実行計画を、前記実行値リストを用いて実行することで取得されるクエリの結果を、前記クライアントに提供することを特徴とする請求項15に記載のデータベース管理システム。
  18. 前記クエリ結果取得モジュールは、
    前記クエリリクエストとマッチングするクエリ結果識別子が格納されていない場合、前記メモリから前記実行計画識別子に対応する実行計画を直接取得するか、又は前記ディスクに格納されているストリーム形態の実行計画を復号化することで前記実行計画識別子に対応する実行計画を取得することを特徴とする請求項17に記載のデータベース管理システム。
  19. 前記クエリ結果取得モジュールは、前記実行計画を実行することで取得されるクエリの結果を識別するためのクエリ結果識別子を生成することを特徴とする請求項17に記載のデータベース管理システム。
  20. 前記パラメータ化された文字列、前記クエリリクエスト、および前記クエリの結果を識別するためのクエリ結果識別子がマッチングして記録されるクエリテーブルを生成し、前記メモリに格納するクエリテーブル管理モジュールをさらに含むことを特徴とする請求項15に記載のデータベース管理システム。
  21. 前記クエリテーブル管理モジュールは、前記パラメータ化された文字列に含まれているテーブル情報に該当するテーブルが変更されると、前記クエリテーブルを更新することを特徴とする請求項20に記載のデータベース管理システム。
  22. ユーザから受信したクエリ文からパラメータ化された文字列を生成する文字列生成モジュールと、
    サーバから前記パラメータ化された文字列に対する実行計画識別子が受信されれば、前記実行計画識別子と前記クエリ文に含まれた実行値リストとから構成されるクエリリクエストを生成するクエリリクエスト生成モジュールと、
    前記パラメータ化された文字列および前記クエリリクエストを前記サーバに送信し、前記サーバから前記実行計画識別子および前記クエリリクエストに対するクエリの結果を受信するインターフェースモジュールと、を含むことを特徴とするデータベース管理システム。
  23. 前記文字列生成モジュールは、前記クエリ文に含まれた実行値リストを予め定められたパラメータに変換することにより、前記パラメータ化された文字列を生成することを特徴とする請求項22に記載のデータベース管理システム。
  24. 前記サーバから前記パラメータ化された文字列に対する応答が受信されれば、前記パラメータ化された文字列に対する実行計画を生成する実行計画生成モジュールをさらに含み、
    前記インターフェースモジュールは、前記サーバから前記パラメータ化された文字列に対する応答を受信し、前記生成された実行計画を前記サーバに送信することを特徴とする請求項22に記載のデータベース管理システム。
  25. 前記パラメータ化された文字列に対する応答は、前記サーバに前記パラメータ化された文字列と前記パラメータ化された文字列に対する実行計画識別子とがマッチングして格納されていない場合、前記サーバから受信されることを特徴とする請求項24に記載のデータベース管理システム。
JP2012507131A 2009-04-24 2009-04-29 データベース管理方法およびシステム Active JP5600736B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR10-2009-0036163 2009-04-24
KR1020090036163A KR101083563B1 (ko) 2009-04-24 2009-04-24 데이터베이스 관리 방법 및 시스템
PCT/KR2009/002254 WO2010123168A1 (ko) 2009-04-24 2009-04-29 데이터베이스 관리 방법 및 시스템

Publications (2)

Publication Number Publication Date
JP2012524930A true JP2012524930A (ja) 2012-10-18
JP5600736B2 JP5600736B2 (ja) 2014-10-01

Family

ID=43011268

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012507131A Active JP5600736B2 (ja) 2009-04-24 2009-04-29 データベース管理方法およびシステム

Country Status (4)

Country Link
US (2) US8661022B2 (ja)
JP (1) JP5600736B2 (ja)
KR (1) KR101083563B1 (ja)
WO (1) WO2010123168A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016500454A (ja) * 2012-11-30 2016-01-12 アマゾン テクノロジーズ インク システム全体のクエリ最適化
JP2017194778A (ja) * 2016-04-19 2017-10-26 株式会社シスバンク リレーショナルデータベースのチューニング装置及び方法
JP2018510413A (ja) * 2015-02-26 2018-04-12 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データベースクエリ実行トレース及び実行に関する問題を診断するためのデータ生成

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9171039B2 (en) * 2011-09-29 2015-10-27 Sap Se Query language based on business object model
KR101542299B1 (ko) * 2013-02-18 2015-08-07 단국대학교 산학협력단 하둡 기반의 질의 처리 방법 및 장치
CN103577561B (zh) * 2013-10-24 2017-12-01 华为技术有限公司 执行计划的存储方法、装置及系统
CN107077512B (zh) * 2015-03-28 2020-10-16 华为技术有限公司 优化视图上的查询的系统和方法
CN107180017B (zh) * 2016-03-11 2021-05-28 阿里巴巴集团控股有限公司 一种样本序列化方法和装置
US10417229B2 (en) * 2017-06-27 2019-09-17 Sap Se Dynamic diagonal search in databases
CN111949631B (zh) * 2019-05-14 2024-06-25 华为技术有限公司 一种确定数据库的配置参数的方法及装置
CN110727835B (zh) * 2019-10-17 2021-03-12 浙江中智达科技有限公司 数据查询方法、装置及系统
CN113872788A (zh) * 2020-06-30 2021-12-31 中兴通讯股份有限公司 数据库配置参数调整方法、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1049539A (ja) * 1996-07-31 1998-02-20 Matsushita Electric Ind Co Ltd データベース管理システム
US6356887B1 (en) * 1999-06-28 2002-03-12 Microsoft Corporation Auto-parameterization of database queries

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6115703A (en) * 1998-05-11 2000-09-05 International Business Machines Corporation Two-level caching system for prepared SQL statements in a relational database management system
US6321235B1 (en) * 1998-09-29 2001-11-20 International Business Machines Corporation Global caching and sharing of SQL statements in a heterogeneous application environment
US7080062B1 (en) * 1999-05-18 2006-07-18 International Business Machines Corporation Optimizing database queries using query execution plans derived from automatic summary table determining cost based queries
US6466931B1 (en) * 1999-07-30 2002-10-15 International Business Machines Corporation Method and system for transparently caching and reusing query execution plans efficiently
US6601064B1 (en) * 1999-11-24 2003-07-29 Ncr Corporation Method and apparatus for fetching array based objects by direct delivery and batching
US6526403B1 (en) * 1999-12-17 2003-02-25 International Business Machines Corporation Method, computer program product, and system for rewriting database queries in a heterogenous environment
US6721724B1 (en) * 2000-03-31 2004-04-13 Microsoft Corporation Validating multiple execution plans for database queries
US20020107835A1 (en) * 2001-02-08 2002-08-08 Coram Michael T. System and method for adaptive result set caching
IL141599A0 (en) * 2001-02-22 2002-03-10 Infocyclone Inc Information retrieval system
US6925457B2 (en) * 2001-07-27 2005-08-02 Metatomix, Inc. Methods and apparatus for querying a relational data store using schema-less queries
JP4162184B2 (ja) * 2001-11-14 2008-10-08 株式会社日立製作所 データベース管理システムの実行情報を取得する手段を有する記憶装置
US6985904B1 (en) * 2002-02-28 2006-01-10 Oracle International Corporation Systems and methods for sharing of execution plans for similar database statements
CA2382714A1 (en) * 2002-04-19 2003-10-19 Ibm Canada Limited-Ibm Canada Limitee Substituting parameter markers for literals in a database query language statement to promote reuse of previously generated access plans
US6999958B2 (en) * 2002-06-07 2006-02-14 International Business Machines Corporation Runtime query optimization for dynamically selecting from multiple plans in a query based upon runtime-evaluated performance criterion
JP4116413B2 (ja) * 2002-12-11 2008-07-09 株式会社日立製作所 プリフェッチアプライアンスサーバ
US7243098B2 (en) * 2002-12-19 2007-07-10 International Business Machines Corporation Method, system, and program for optimizing aggregate processing
US20040162822A1 (en) * 2003-02-13 2004-08-19 Khachatur Papanyan Method and apparatus for converting in-line database queries to stored procedures
US7895191B2 (en) * 2003-04-09 2011-02-22 International Business Machines Corporation Improving performance of database queries
US20040236726A1 (en) * 2003-05-19 2004-11-25 Teracruz, Inc. System and method for query result caching
US7146363B2 (en) * 2003-05-20 2006-12-05 Microsoft Corporation System and method for cardinality estimation based on query execution feedback
US7702610B2 (en) * 2003-09-19 2010-04-20 Netezza Corporation Performing sequence analysis as a multipart plan storing intermediate results as a relation
US7539660B2 (en) * 2003-10-23 2009-05-26 International Business Machines Corporation Method and system for generating SQL joins to optimize performance
US20050216451A1 (en) * 2004-02-19 2005-09-29 Urs Enzler Generation of database queries from predefined query strings
US7979456B2 (en) 2004-04-08 2011-07-12 International Business Machines Corporation Method of managing and providing parameterized queries
US7310637B2 (en) * 2004-05-05 2007-12-18 International Business Machines Corporation Dynamic database access via standard query language and abstraction technology
US7328207B2 (en) * 2004-08-20 2008-02-05 Microsoft Corporation Extensions for query persistence across requests with dynamic update for writeback
US20060074872A1 (en) * 2004-09-30 2006-04-06 International Business Machines Corporation Adaptive database buffer memory management using dynamic SQL statement cache statistics
US8290977B2 (en) * 2004-10-21 2012-10-16 Sybase Inc. Database system providing methodology for execution of functions in XML queries
US7337170B2 (en) * 2005-01-18 2008-02-26 International Business Machines Corporation System and method for planning and generating queries for multi-dimensional analysis using domain models and data federation
US7640230B2 (en) * 2005-04-05 2009-12-29 Microsoft Corporation Query plan selection control using run-time association mechanism
US20060294088A1 (en) * 2005-06-27 2006-12-28 International Business Machines Corporation Method, system, and computer program product for caching dynamically generated queries
US20070214104A1 (en) * 2006-03-07 2007-09-13 Bingjie Miao Method and system for locking execution plan during database migration
US8032522B2 (en) * 2006-08-25 2011-10-04 Microsoft Corporation Optimizing parameterized queries in a relational database management system
US7865515B2 (en) * 2006-08-28 2011-01-04 Microsoft Corporation Server side bucketization of parameterized queries
US8527502B2 (en) * 2006-09-08 2013-09-03 Blade Makai Doyle Method, system and computer-readable media for software object relationship traversal for object-relational query binding
US7898817B2 (en) * 2006-10-17 2011-03-01 Hewlett-Packard Development Company, L.P. Circuit board assembly
US7640238B2 (en) * 2007-01-19 2009-12-29 International Business Machines Corporation Query planning for execution using conditional operators
US20080195578A1 (en) * 2007-02-09 2008-08-14 Fabian Hueske Automatically determining optimization frequencies of queries with parameter markers
US20080201295A1 (en) * 2007-02-21 2008-08-21 Mylavarapu Praveena Caching plans with using data values
US20080319958A1 (en) * 2007-06-22 2008-12-25 Sutirtha Bhattacharya Dynamic Metadata based Query Formulation for Multiple Heterogeneous Database Systems
US8086597B2 (en) * 2007-06-28 2011-12-27 International Business Machines Corporation Between matching
US7877376B2 (en) * 2007-07-18 2011-01-25 Oracle International Corporation Supporting aggregate expressions in query rewrite
US20100005077A1 (en) * 2008-07-07 2010-01-07 Kickfire, Inc. Methods and systems for generating query plans that are compatible for execution in hardware
US20090171895A1 (en) * 2007-12-28 2009-07-02 Herbert Hackmann Method and system for generating dynamic associations to data objects
US7937385B2 (en) * 2008-05-05 2011-05-03 International Business Machines Corporation Obtaining a plan for executing a query in a relational database
US8060495B2 (en) * 2008-10-21 2011-11-15 International Business Machines Corporation Query execution plan efficiency in a database management system
US8666966B2 (en) * 2009-01-30 2014-03-04 Hewlett-Packard Development Company, L.P. Providing parallel result streams for database queries

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1049539A (ja) * 1996-07-31 1998-02-20 Matsushita Electric Ind Co Ltd データベース管理システム
US6356887B1 (en) * 1999-06-28 2002-03-12 Microsoft Corporation Auto-parameterization of database queries

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSNB200500262001; 日本アイ・ビー・エムシステムズ・エンジニアリング株式会社: DB2技術全書 第1版, 20040608, p. 115-121, 337-339, 363-373, 株式会社アスキー *
JPN6013055383; 日本アイ・ビー・エムシステムズ・エンジニアリング株式会社: DB2技術全書 第1版, 20040608, p. 115-121, 337-339, 363-373, 株式会社アスキー *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016500454A (ja) * 2012-11-30 2016-01-12 アマゾン テクノロジーズ インク システム全体のクエリ最適化
US11113280B1 (en) 2012-11-30 2021-09-07 Amazon Technologies, Inc. System-wide query optimization
US11249997B1 (en) 2012-11-30 2022-02-15 Amazon Technologies, Inc. System-wide query optimization
JP2018510413A (ja) * 2015-02-26 2018-04-12 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データベースクエリ実行トレース及び実行に関する問題を診断するためのデータ生成
US10970279B2 (en) 2015-02-26 2021-04-06 International Business Machines Corporation Database query execution tracing and data generation for diagnosing execution issues
US11016970B2 (en) 2015-02-26 2021-05-25 International Business Machines Corporation Database query execution tracing and data generation for diagnosing execution issues
JP2017194778A (ja) * 2016-04-19 2017-10-26 株式会社シスバンク リレーショナルデータベースのチューニング装置及び方法
WO2017183065A1 (ja) * 2016-04-19 2017-10-26 株式会社シスバンク リレーショナルデータベースのチューニング装置及び方法
US10216773B2 (en) 2016-04-19 2019-02-26 Sysbank Co., Ltd. Apparatus and method for tuning relational database

Also Published As

Publication number Publication date
KR20100117415A (ko) 2010-11-03
US20120143847A1 (en) 2012-06-07
US9753977B2 (en) 2017-09-05
KR101083563B1 (ko) 2011-11-14
WO2010123168A1 (ko) 2010-10-28
US8661022B2 (en) 2014-02-25
US20140136515A1 (en) 2014-05-15
JP5600736B2 (ja) 2014-10-01

Similar Documents

Publication Publication Date Title
JP5600736B2 (ja) データベース管理方法およびシステム
US8103705B2 (en) System and method for storing text annotations with associated type information in a structured data store
US8224772B2 (en) Data management apparatus, method and program
KR101927450B1 (ko) 대용량 비정형 데이터를 처리하는 rest api 서비스 제공 방법
US20140297680A1 (en) Analyzing multiple data streams as a single data object
JP6062863B2 (ja) 効率的な検索を可能にするためのサーバに基づくメディアコンテンツ及びlanに基づくメディアコンテンツを集約する方法及び装置
CN112685433B (zh) 元数据更新方法、装置、电子设备及计算机可读存储介质
KR20110024464A (ko) 다양한 포맷의 컨텐츠를 관리하는 미디어 미디에이터 시스템 및 방법
US8073843B2 (en) Mechanism for deferred rewrite of multiple XPath evaluations over binary XML
CN111046041B (zh) 数据处理方法和装置、存储介质及处理器
CN115905740A (zh) 一种多数据源服务引擎接口互联方法
CN108874944B (zh) 一种基于xsl语言转换的异构数据映射系统及方法
US11693859B2 (en) Systems and methods for data retrieval from a database indexed by an external search engine
Kim et al. Comprehensive Knowledge Archive Network harvester improvement for efficient open‐data collection and management
CN109947739B (zh) 数据源管理方法及装置
CN111125129A (zh) 数据处理方法和装置、存储介质及处理器
WO2023164294A1 (en) Query splitter for an inverted index datastore
KR102169930B1 (ko) M2M/IoT 플랫폼에서의 시맨틱 정보 관리 방법
KR102157336B1 (ko) 데이터베이스 관리시스템에서 json 데이터 저장 및 검색 방법
CN111695031A (zh) 基于标签的搜索方法、装置、服务器及存储介质
US20050267881A1 (en) Methods and systems for data storage
JPH06203078A (ja) 情報検索方法およびその装置
JP2015219672A (ja) データ管理装置、データ管理方法、及び、そのプログラム
CN117971859A (zh) 数据查询方法、装置、存储介质及电子设备
JP2015201024A (ja) 用語統一システム及び用語統一プログラム、並びに用語統一方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131030

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131112

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140210

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140818

R150 Certificate of patent or registration of utility model

Ref document number: 5600736

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250