(57)【要約】【課題】データベースにおけるインデクスを効率的に使用できる様にして高性能なデータベース操作を行うことが可能な技術を提供する。【解決手段】データベースを管理するデータベース管理方法において、受け付けたデータベース処理要求を解析するステップと、前記解析したデータベース処理要求中に分割単位毎のインデクス有無を指定するコマンドが含まれている場合に分割単位毎にインデクス有無の情報を設定するステップと、前記解析したデータベース処理要求中にレコードの追加を行う為のコマンドが含まれている場合に、当該レコードの追加をその分割単位に対応する記録媒体に対して行うステップと、前記レコードの追加の行われた分割単位に対して設定されているインデクス有無の情報がインデクス有りを示している場合に、当該レコードに対応するインデクスのキー情報の作成を行うステップとを有するものである。【選択図】        図１
2005011048.tif 000002
【特許請求の範囲】
【請求項１】
データベースを管理するデータベース管理方法において、
受け付けたデータベース処理要求を解析するステップと、前記解析したデータベース処理要求中に分割単位毎のインデクス有無を指定するコマンドが含まれている場合に分割単位毎にインデクス有無の情報を設定するステップと、
前記解析したデータベース処理要求中にレコードの追加を行う為のコマンドが含まれている場合に、当該レコードの追加をその分割単位に対応する記録媒体に対して行うステップと、
前記レコードの追加の行われた分割単位に対して設定されているインデクス有無の情報がインデクス有りを示している場合に、当該レコードに対応するインデクスのキー情報の作成を行うステップとを有することを特徴とするデータベース管理方法。
【請求項２】
前記分割単位毎のインデクス有無の情報をデータベースの分割情報を示すディクショナリに格納することを特徴とする請求項１に記載されたデータベース管理方法。
【請求項３】
前記分割単位毎のインデクス有無の情報を当該分割単位のディレクトリに格納することを特徴とする請求項１または請求項２のいずれかに記載されたデータベース管理方法。
【請求項４】
データベースを管理するデータベース管理装置において、
受け付けたデータベース処理要求を解析し、前記解析したデータベース処理要求中にレコードの追加を行う為のコマンドが含まれている場合に、当該レコードの追加をその分割単位に対応する記録媒体に対して行うデータベース処理部と、
前記解析したデータベース処理要求中に分割単位毎のインデクス有無を指定するコマンドが含まれている場合に分割単位毎にインデクス有無の情報を設定するディクショナリ管理部と、
前記レコードの追加の行われた分割単位に対して設定されているインデクス有無の情報がインデクス有りを示している場合に、当該レコードに対応するインデクスのキー情報の作成を行うインデクス管理部とを備えることを特徴とするデータベース管理装置。
【請求項５】
データベースを管理するデータベース管理装置としてコンピュータを機能させる為のプログラムにおいて、
受け付けたデータベース処理要求を解析し、前記解析したデータベース処理要求中にレコードの追加を行う為のコマンドが含まれている場合に、当該レコードの追加をその分割単位に対応する記録媒体に対して行うデータベース処理部と、
前記解析したデータベース処理要求中に分割単位毎のインデクス有無を指定するコマンドが含まれている場合に分割単位毎にインデクス有無の情報を設定するディクショナリ管理部と、
前記レコードの追加の行われた分割単位に対して設定されているインデクス有無の情報がインデクス有りを示している場合に、当該レコードに対応するインデクスのキー情報の作成を行うインデクス管理部としてコンピュータを機能させることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデータベースを管理するデータベース管理装置に関し、特にインデクスを有するリレーショナルデータベースを管理するデータベース管理装置に適用して有効な技術に関するものである。
【０００２】
【従来の技術】
リレーショナルデータベースシステムにおいては、格納装置の負荷分散を主な目的として、表を複数の格納装置に分割して格納することは良く行われることである（例えば特許文献１参照）。その様なデータベースにおいてインデクスを定義すると、インデクスは表の分割単位に従って一様に作成され、どの分割単位も均等にアクセスできる様になっている。しかし、逆に分割単位毎の違いを持つことができない様になっている。
【０００３】
【特許文献１】
特開２００１−３３１５０９号公報
【０００４】
【発明が解決しようとする課題】
データベースを複数の外部記憶装置に分割格納する場合、分割の仕方によってはアクセス頻度が低い分割単位が生じることがある。特に時系列データ等を時系列に応じて分割して格納する場合、古いデータへのアクセスはあまり行われないことが多い。従来技術では、その様な分割単位においてもインデクスが作成される為、無駄に外部記憶装置の容量を使用してしまう他、データの追加、削除、更新時にインデクスの更新処理も行われる為、性能が劣化する等の問題がある。
本発明の目的は上記問題を解決し、データベースにおけるインデクスを効率的に使用できる様にして高性能なデータベース操作を行うことが可能な技術を提供することにある。
【０００５】
【課題を解決するための手段】
本発明は、データベースを管理するデータベース管理装置において、分割されたデータベースのそれぞれの分割単位毎にインデクスの有無を選択できる様にするものである。
【０００６】
本発明のデータベース管理装置（計算機や情報処理装置、またはその様な処理を実施するプログラムやオブジェクトでも良い）では、まずインデクス定義文において、各分割単位毎のインデクス有無を指定できる様にする。ＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）定義文解析では、インデクス定義文に指定されたインデクス有無を解析し、その情報をディクショナリに格納し、各分割単位毎のディレクトリ情報にも格納する。
【０００７】
インデクス管理部は、ディレクトリ情報を元にして、インデクス有りと指定された分割単位においてのみ、インデクスを作成する様に制御する。すなわち、インデクス有りと指定された分割単位においてレコードが追加された場合には、追加レコードからキー情報を生成してインデクスへの登録を行い、インデクス無しと指定された分割単位においてはキー情報の生成を行わず、単にレコードの追加だけを行う。
【０００８】
データベースに対して検索が行われた場合は、インデクスを使用するアクセスパスと使用しないアクセスパスを検索対象の分割単位のディクショナリ情報に応じて生成し、インデクスが有る分割単位についてはインデクスを使用するアクセスパスを選択し、インデクスが無い分割単位においてはインデクスを使用しないアクセスパスを選択して検索を行う様にする。
【０００９】
前記の様に本発明では、表とインデクスを分割した場合に、ユーザの指定で分割単位毎のインデクス有無を選択できるので、ユーザが特に優先したい分割単位にだけインデクスを定義してＳＱＬの実行を高速化でき、外部記憶装置を効率的に使用することが可能である。
【００１０】
以上の様に本発明のデータベース管理装置によれば、分割されたデータベースのそれぞれの分割単位毎にインデクスの有無を選択できる様にするので、データベースにおけるインデクスを効率的に使用できる様にして高性能なデータベース操作を行うことが可能である。
【００１１】
【発明の実施の形態】
以下に分割された表及びインデクスを有するデータベースを管理する一実施形態のデータベース管理装置について説明する。
【００１２】
図１は本実施形態のデータベース管理装置の概略構成を示す図である。図１に示す様に本実施形態のデータベース管理装置は、インデクス定義文１０１等のＳＱＬの入力を行う入力装置１０２と、ＳＱＬ処理部１０４、ディクショナリ管理部１０５及びインデクス管理部１０８を備えるデータベース管理処理部１０３と、インデクスの分割情報１０７を管理する為のディクショナリ１０６と、分割単位格納媒体１１０〜１１２を備える外部記憶装置群１０９とから構成されている。
【００１３】
データベース管理処理部１０３は、ＳＱＬ処理部１０４、ディクショナリ管理部１０５及びインデクス管理部１０８の動作を制御してデータベース処理全体を管理する処理部である。ＳＱＬ処理部１０４は、受け付けたデータベース処理要求を解析し、前記解析したデータベース処理要求中にレコードの追加を行う為のコマンドが含まれている場合に、当該レコードの追加をその分割単位に対応する記録媒体に対して行うデータベース処理部である。
【００１４】
ディクショナリ管理部１０５は、前記解析したデータベース処理要求中に分割単位毎のインデクス有無を指定するコマンドが含まれている場合に分割単位毎にインデクス有無の情報を設定する処理部である。
【００１５】
インデクス管理部１０８は、前記レコードの追加の行われた分割単位に対して設定されているインデクス有無の情報がインデクス有りを示している場合に、当該レコードに対応するインデクスのキー情報の作成を行う処理部である。
【００１６】
データベース管理装置をデータベース管理処理部１０３、ＳＱＬ処理部１０４、ディクショナリ管理部１０５及びインデクス管理部１０８として機能させる為のプログラムは、ＣＤ−ＲＯＭ等の記録媒体に記録され磁気ディスク等に格納された後、メモリにロードされて実行されるものとする。なお前記プログラムを記録する記録媒体はＣＤ−ＲＯＭ以外の他の記録媒体でも良い。また前記プログラムを当該記録媒体から情報処理装置にインストールして使用しても良いし、ネットワークを通じて当該記録媒体にアクセスして前記プログラムを使用するものとしても良い。
【００１７】
図２は本実施形態のインデクス定義文１０１の処理手順を示すフローチャートである。ステップ２０１でデータベース管理処理部１０３は、入力装置１０２によりインデクス定義文１０１が入力されているかどうかを調べ、インデクス定義文１０１が入力されている場合にはその入力を受け付けて、受け付けたインデクス定義文１０１をＳＱＬ処理部１０４へ渡す。
【００１８】
ステップ２０２でＳＱＬ処理部１０４は、前記渡されたインデクス定義文１０１の内容を解析して、そのインデクス定義文１０１中に分割単位毎のインデクス有無が指定されているかどうかを調べ、インデクス有無が指定されている場合には、その情報をディクショナリ管理部１０５へ渡す。
【００１９】
ステップ２０３でディクショナリ管理部１０５は、前記渡されたインデクス有無の情報をディクショナリ１０６のインデクスの分割情報１０７中に格納する。またステップ２０４でディクショナリ管理部１０５は、前記渡されたインデクス有無の情報を、外部記憶装置群１０９の分割単位格納媒体１１０〜１１２中の分割単位毎のディレクトリに格納する。
【００２０】
ここでインデクス有無の情報を格納する際に、インデクス有無の情報がインデクス有りを示しているものについては、そのインデクスを使用するアクセスパスを生成して格納し、インデクス有無の情報がインデクス無しを示しているものについては、そのインデクスを使用しないアクセスパスを生成して格納しておく。
【００２１】
図３は本実施形態のＩＮＳＥＲＴ文の処理手順を示すフローチャートである。ステップ３０１でデータベース管理処理部１０３は、入力装置１０２によりＩＮＳＥＲＴ文が入力されているかどうかを調べ、ＩＮＳＥＲＴ文が入力されている場合にはその入力を受け付けて、受け付けたＩＮＳＥＲＴ文をＳＱＬ処理部１０４へ渡す。
【００２２】
ステップ３０２でＳＱＬ処理部１０４は、前記渡されたＩＮＳＥＲＴ文の内容を解析して、各分割単位の境界値として用いられているキー値をＩＮＳＥＲＴ文中から読み出す。
【００２３】
ステップ３０３では、前記読み出したキー値と、各分割単位の境界値とを比較し、前記ＩＮＳＥＲＴ文の処理によりレコードが追加される分割単位を決定する。
【００２４】
ステップ３０４では、前記決定した分割単位に対して前記ＩＮＳＥＲＴ文によるレコードの追加処理を行い、当該分割単位に対応する分割単位格納媒体へレコードを追加する。
【００２５】
ステップ３０５でディクショナリ管理部１０５は、ディクショナリ１０６のインデクスの分割情報１０７を参照し、前記決定した分割単位に対応するインデクスの分割情報１０７を取得する。
【００２６】
ステップ３０６でインデクス管理部１０８は、ディクショナリ管理部１０５によって前記取得されたインデクスの分割情報１０７を参照して、前記レコードの追加の行われた分割単位に対して設定されているインデクス有無の情報がインデクス有りを示しているかどうかを判定し、そのインデクス有無の情報がインデクス有りを示している場合にはステップ３０７へ進む。
【００２７】
ステップ３０７では、当該レコードに対応するインデクスのキー情報を作成し、ステップ３０８では、前記作成したキー情報をインデクスに登録する処理を行う。
【００２８】
またステップ３０６で判定した結果、そのインデクス有無の情報がインデクス無しを示している場合には、インデクスに関する処理は何も行わずにＩＮＳＥＲＴ文の処理を終了する。
【００２９】
前記の様に分割単位毎のインデクス有無の情報に応じてインデクスの作成されたデータベースに対して検索が行われた場合は、ディクショナリ１０６のインデクスの分割情報１０７中のインデクス有無の情報に応じて生成されているアクセスパスを用いて検索処理を行う。
【００３０】
すなわち、データベース管理処理部１０３は、入力装置１０２により検索を要求するＳＥＬＥＣＴ文が入力されているかどうかを調べ、ＳＥＬＥＣＴ文が入力されている場合にはその入力を受け付けて、受け付けたＳＥＬＥＣＴ文をＳＱＬ処理部１０４へ渡す。
【００３１】
ＳＱＬ処理部１０４は、前記渡されたＳＥＬＥＣＴ文の内容を解析して、各分割単位の境界値として用いられているキー値をＳＥＬＥＣＴ文中から読み出し、その読み出したキー値と、各分割単位の境界値とを比較して、前記ＳＥＬＥＣＴ文の処理によりレコードが検索される分割単位を決定する。
【００３２】
そして、ディクショナリ１０６のインデクスの分割情報１０７を参照し、前記決定した分割単位に対応するインデクス有無の情報に応じて生成されているアクセスパス、つまりインデクス有無の情報がインデクス有りを示している場合にはそのインデクスを使用するアクセスパス、インデクス有無の情報がインデクス無しを示している場合にはインデクスを使用しないアクセスパスを使用して検索を行う。
【００３３】
この為、例えば時系列データ等を時系列に応じて分割して格納し、新しいデータを検索してデータベース処理を行う場合に、新しいデータを格納している分割単位にのみインデクス有りとすることにより、新しいデータへのアクセスを高速に行うと共に、古いデータに対するインデクスを省略して外部記憶装置の容量を有効利用すると共に、データの追加、削除または更新時におけるインデクスの更新負荷を低減して性能の劣化を防止することができる。
【００３４】
また前記の様にステップ３０６で判定した結果、そのインデクス有無の情報がインデクス無しを示している場合にはインデクスを作成せずにＩＮＳＥＲＴ文の処理を終了しているが、インデクス有無の情報と共にそのインデクスのキー項目の情報も格納しておき、インデクス有無の情報がインデクス無しを示している場合には、各分割単位の境界値として用いられているキーとインデクスのキーとを比較し、両者が一致している場合やインデクスのキーに分割単位の境界値のキーが含まれている場合等、分割単位の境界値として用いられているキーとインデクスのキーとの間に所定の関係がある場合にインデクスを作成しないものとしても良い。
【００３５】
前記の様に本実施形態では、表とインデクスを分割した場合に、ユーザの指定で分割単位毎のインデクス有無を選択できる為、ユーザが特に優先したい分割単位にだけインデクスを定義してＳＱＬの実行を高速化すると共に、それ以外の分割単位でのインデクスを作成しない様にすることにより外部記憶装置を効率的に使用することが可能である。
【００３６】
更に本実施形態では、インデクス有無の情報を、外部記憶装置群１０９の分割単位格納媒体１１０〜１１２中の分割単位毎のディレクトリに格納しているので、外部記憶装置群１０９へ直接アクセスしてデータベースの保守作業等の処理を行う場合であっても、ディクショナリ１０６を介すること無く、分割単位毎のインデクスの有無に応じた処理を行うことが可能である。
【００３７】
以上説明した様に本実施形態のデータベース管理装置によれば、分割されたデータベースのそれぞれの分割単位毎にインデクスの有無を選択できる様にするので、データベースにおけるインデクスを効率的に使用できる様にして高性能なデータベース操作を行うことが可能である。
【００３８】
【発明の効果】
本発明によれば分割されたデータベースのそれぞれの分割単位毎にインデクスの有無を選択できる様にするので、データベースにおけるインデクスを効率的に使用できる様にして高性能なデータベース操作を行うことが可能である。
【図面の簡単な説明】
【図１】本実施形態のデータベース管理装置の概略構成を示す図である。
【図２】本実施形態のインデクス定義文１０１の処理手順を示すフローチャートである。
【図３】本実施形態のＩＮＳＥＲＴ文の処理手順を示すフローチャートである。
【符号の説明】
１０１…インデクス定義文、１０２…入力装置、１０６…ディクショナリ、１０７…インデクスの分割情報、１０９…外部記憶装置群、１１０〜１１２…分割単位格納媒体、１０３…データベース管理処理部、１０４…ＳＱＬ処理部、１０５…ディクショナリ管理部、１０８…インデクス管理部。
【図１】
2005011048.tif 000003
【図２】
2005011048.tif 000004
【図３】
2005011048.tif 000005