JP2017167917A - データベース管理装置 - Google Patents

データベース管理装置 Download PDF

Info

Publication number
JP2017167917A
JP2017167917A JP2016053921A JP2016053921A JP2017167917A JP 2017167917 A JP2017167917 A JP 2017167917A JP 2016053921 A JP2016053921 A JP 2016053921A JP 2016053921 A JP2016053921 A JP 2016053921A JP 2017167917 A JP2017167917 A JP 2017167917A
Authority
JP
Japan
Prior art keywords
index
processing time
query
deleted
value
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.)
Pending
Application number
JP2016053921A
Other languages
English (en)
Inventor
寛子 永島
Hiroko Nagashima
寛子 永島
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2016053921A priority Critical patent/JP2017167917A/ja
Publication of JP2017167917A publication Critical patent/JP2017167917A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】クエリの処理効率の観点に基づいてインデックスの生成可否を決定することは困難であること。【解決手段】データベース管理装置は、データおよびインデックスをカラム単位で格納するデータベースに接続され、クライアントからのクエリを受け付けてデータベースに対するクエリ実行結果をクライアントに返却する。データベース管理装置は、処理時間計測部と生成可否決定部を有する。処理時間計測部は、インデックスを利用する場合のクエリの処理時間である第1の処理時間とインデックスを利用しない場合のクエリの処理時間である第2の処理時間とを計測する。生成可否決定部は、インデックスが削除された後に計測された第2の処理時間とインデックスが削除される前に計測された第1の処理時間とに基づいて、インデックスが削除された後、インデックスを生成するか否かを決定する。【選択図】図1

Description

本発明は、データベース管理装置、インデックス生成制御方法、およびプログラムに関する。
今般、ビッグデータ時代の到来から、大量のデータを利用した分析や予測を行う技術が求められている。従来、データベースは、行単位(レコード単位)で処理を行うリレーショナルデータベースが主流だったが、昨今は項目毎(列毎)の集計・並び替えを高速に処理できるカラムストア型データベースが注目を集めている。カラムストア型データベースのデータ保持の方法、即ちデータ構造の一つに、FAST(Filter ARRAY STructure)構造がある(例えば特許文献1参照)。
図1は、1つの表形式データ(図1上部)をFAST構造データ(図1下部)に変換する様子を表している。FAST構造は、表形式のデータを、列毎に、ユニークで昇順にソートされたデータ群である値リストと、列にどのデータが入っているかを示す値番号(PV)との2つの成分に分解して表現する。また、図1には示されていないが、行番号(レコード番号)を表す順序集合を備えることがある。
FAST構造のカラムストア型データベースで、或る値の検索を要求するクエリを処理する場合、以下のような手順になる。
まず、値リストから検索したい値のリスト番号を取得する。例えば、顧客ID102のデータ(レコード)の検索を要求するクエリの場合、図2に示すように、顧客IDの列に対応する値リストから102の値リスト番号を取得する。このとき、値リストは昇順ソートされているため、値リストから該当する値を見つけるためにバイナリサーチを使用することができる。今の例では、値リストの番号として、2を取得する。
次に、図2に示すように、顧客IDの列に対応する値番号の先頭から最後尾までの値番号と、上記取得した値リストの番号2とを順番に比較し、一致する値番号のリスト番号を全て取得する。今の例では、リスト番号2、5を取得する。この取得したリスト番号2、5がクエリ処理結果となる。顧客ID、商品名のデータも一緒に検索したい場合は、顧客ID、商品名の値番号が2、5の値を取得する流れになる。
このようにFAST構造のカラムストア型データベースは、データをカラム単位かつソート状態で保持しているため、行単位(レコード単位)で処理を行うリレーショナルデータベースに比較して、項目毎(列毎)の検索を高速に処理することができる。しかし、上述したように、取得したい値の値リストに格納されている番号と値番号リストとの比較が、値番号のサイズ分だけ繰り返す必要がある。そこで、その繰り返しを避けるため、カラム単位でインデックスを生成する方法がある。
図5は、インデックスを有するFAST構造の例を示す。図5の各項目(日付、顧客ID、商品名)の値リストの横に記載されているのが、当該項目のインデックスである。インデックスを有するFAST構造のカラムストア型データベースで、或る値の検索を要求するクエリを処理する場合、以下のような手順になる。
まず、値リストから検索したい値のリスト番号を取得する。例えば、顧客IDが102のデータ(レコード)を検索する場合、顧客IDの列に対応する値リストから102の値リスト番号を検索する。このとき、値リストは昇順ソートされているため、値リストから該当する値を見つけるためにバイナリサーチを使用することができる。今の例では、値リストの2番目が検索される。
次に、上記検索した値リストの2番目に関連付けられているインデックスに記載されているリスト番号を全て取得する。今の例では、リスト番号2、5を取得する。この取得したリスト番号2、5がクエリ処理結果となる。
このようにインデックスを有するFAST構造では、インデックスを利用することにより、クエリを効率良く処理することができ、一般的には、インデックスを利用しない場合に比較してクエリ処理時間を短縮することができる。
しかし、先述の通り、値リストは昇順ソートされた状態でデータを持っている必要があるため、値リストのデータが更新されてソート状態が崩れると、値リストを再び昇順ソートして作り直す必要が生じる。そして、値リストを作り直すと、元の値リストに関連付けられたインデックスは利用できなくなってしまう。そのため、利用できなくなってしまったインデックスを再び利用できるようにするために、インデックスを保守する仕組みが必要になる。
インデックスを保守する仕組みを有するデータベース管理装置の一例が特許文献2に記載されている。特許文献2に記載される技術では、蓄積されたカラム情報と、外部から利用者により入力された判定式に基づいて、インデックスの保守を自動的に行う。具体的には、データベース管理装置に対して要求されたカラム毎の情報として、表番号、カラム番号、インデックスの有無、検索要求回数、更新要求回数、更新件数をカラム情報テーブルに蓄積する。また、判定式として、「検索要求回数−(更新要求回数×更新件数)×100」を入力する。そして、蓄積した情報を判定式に代入し、判定式の計算結果が正の場合、インデックス要、負の場合、インデックス不要と判定し、判定結果に基づいて、インデックスの生成、削除を行う。
特開2015−179353号公報 特願昭63−201716号公報 特開2015−179353号公報
特許文献2に記載される技術によれば、カラム毎の利用状況に応じて、インデックスの生成可否を決定することができる。しかしながら、検索要求回数、更新要求回数、更新件数は、クエリの処理効率とは無関係であるため、クエリの処理効率の観点に基づいてインデックスの生成可否を決定するのは困難であった。
本発明の目的は、上述した課題、すなわち、クエリの処理効率の観点に基づいてインデックスの生成可否を決定することは困難である、という課題を解決するデータベース管理装置を提供することにある。
本発明の一実施形態に係るデータベース管理装置は、
データおよびインデックスをカラム単位で格納するデータベースに接続され、クライアントからのクエリを受け付けて前記データベースに対するクエリ実行結果を前記クライアントに返却するデータベース管理装置であって、
前記インデックスを利用する場合の前記クエリの処理時間である第1の処理時間と前記インデックスを利用しない場合の前記クエリの処理時間である第2の処理時間とを計測する処理時間計測部と、
前記インデックスが削除された後に計測された前記第2の処理時間と前記インデックスが削除される前に計測された前記第1の処理時間とに基づいて、前記インデックスが削除された後、前記インデックスを生成するか否かを決定する生成可否決定部と、
を有する。
また、本発明の他の実施形態に係るインデックス生成制御方法は、
データおよびインデックスをカラム単位で格納するデータベースに接続され、クライアントからのクエリを受け付けて前記データベースに対するクエリ実行結果を前記クライアントに返却するデータベース管理装置が実行するインデックス生成制御方法であって、
前記インデックスを利用する場合の前記クエリの処理時間である第1の処理時間と前記インデックスを利用しない場合の前記クエリの処理時間である第2の処理時間とを計測し、
前記インデックスが削除された後に計測された前記第2の処理時間と前記インデックスが削除される前に計測された前記第1の処理時間とに基づいて、前記インデックスが削除された後、前記インデックスを生成するか否かを決定する。
また、本発明の他の実施形態に係るプログラムは、
データおよびインデックスをカラム単位で格納するデータベースに接続され、クライアントからのクエリを受け付けて前記データベースに対するクエリ実行結果を前記クライアントに返却するコンピュータを、
前記インデックスを利用する場合の前記クエリの処理時間である第1の処理時間と前記インデックスを利用しない場合の前記クエリの処理時間である第2の処理時間とを計測する処理時間計測部と、
前記インデックスが削除された後に計測された前記第2の処理時間と前記インデックスが削除される前に計測された前記第1の処理時間とに基づいて、前記インデックスが削除された後、前記インデックスを生成するか否かを決定する生成可否決定部と、
して機能させる。
本発明は上述した構成を有するため、クエリの処理効率の観点に基づいてインデックスの生成可否を決定することができる。
表形式データとFAST構造データの例を示す図である。 顧客IDに係る値リストと値番号リストに対して検索処理を行う手順の説明図である。 インデックス生成可否の決定を含むインデックス生成処理のフローチャートである。 本発明の第1の実施形態に係るデータベース管理装置のブロック図である。 インデックスを有するFAST構造データの例を示す図である。 本発明の第1の実施形態に係るデータベース管理装置の動作の一例を示すフローチャートである。 インデックス生成可否を判定する式で使用する参照処理平均時間の計測方法を説明するためのパラメータ等を示す図である。 本発明の第2の実施形態に係るデータベース管理装置のブロック図である。 本発明の第2の実施形態に係るデータベース管理装置の動作の一例を示すフローチャートである。 本発明の第3の実施形態に係るデータベース管理装置のブロック図である。 インデックスを一部削除する例を示す図である。 本発明の第3の実施形態に係るデータベース管理装置の動作の一例を示すフローチャートである。 本発明の第4の実施形態に係るデータベース管理装置のブロック図である。
次に本発明の実施の形態について図面を参照して詳細に説明する。
[第1の実施形態]
図4は本発明の第1の実施形態に係るデータベース管理装置100のブロック図である。図4を参照すると、データベース管理装置100は、LAN等のネットワークを介してクライアント装置101に接続されている。またデータベース管理装置100は、クライアント装置101や図示しないアプリケーションプログラムからのクエリを処理する処理実行部110と、インデックスの生成可否を決定し、必要に応じてインデックスを生成するインデックス生成部120と、FAST構造のデータベースを管理するデータ管理部130とを有する。
データ管理部130は、データベース140とアクセス数カウント処理部150とを有する。データベース140は、FAST構造でデータを保持する機能を有する。データベース140が保持するデータ数、データ型(数値型データ、文字型データなどの実データ)に制限はない。データベース140は、値リスト141と値番号リスト142の組を、項目数の数だけ有する。値リスト141は、実データが格納されているリストであり、値リスト番号管理部143と実の値格納部144とインデックス格納部145とを有する。値番号リスト142は、項目の値を値リストの番号で示したリストであり、値番号リスト管理部146と値番号処理部147とを有する。図5の例えば顧客IDの項目との関係では、値リスト番号管理部143と実の値格納部144は、値リストの番号「1、2、3」と値リスト「101、102、103」に相当し、インデックス格納部145は、値リストに関連付けられたインデックスに相当し、値番号リスト管理部146と値番号処理部147は、値番号リストの番号「1〜7」と値番号「1、2、1、1、2、3、1」に相当する。アクセス数カウント処理部150は、項目毎のアクセス数を計測する機能を有する。
処理実行部110は、クライアント装置101からのクエリを受け付け、データベース140に対するクエリ実行結果をクライアントに返却する機能を有する参照・更新処理部111を有する。
インデックス生成部120は、インデックス削除部121と処理実行時間計測部122とインデックス生成時間計測部123とインデックス生成判断計算部124とを有する。インデックス削除部121は、インデックス格納部145に格納されているインデックスを削除する機能を有する。処理実行時間計測部122は、クエリ処理に要する実行時間を計測する機能を有する。インデックス生成時間計測部123は、インデックス格納部145にインデックスを生成するのに要する実行時間を計測する機能を有する。インデックス生成判断計算部124は、インデックスの生成可否を決定し、必要に応じてインデックスを生成する機能を有する。
上述した参照・更新処理部111、インデックス削除部121、処理実行時間計測部122、インデックス生成時間計測部123、インデックス生成判断計算部124、アクセス数カウント処理部150といった機能手段は、例えば、コンピュータとプログラムとで実現することができる。プログラムは、コンピュータ読み取り可能な記録媒体に記録されて提供され、コンピュータの立ち上げ時にコンピュータに読み取られ、そのコンピュータの動作を制御することにより、そのコンピュータ上に参照・更新処理部111、インデックス削除部121、処理実行時間計測部122、インデックス生成時間計測部123、インデックス生成判断計算部124、アクセス数カウント処理部150といった機能手段を実現する。後述する他の実施形態における機能手段についても同様にコンピュータとプログラムとで実現することができる。
図6はデータベース管理装置100が実行する処理の一例を示すフローチャートである。図6には、クライアント装置101から受け付けたクエリの処理のうち1つの項目(列)に対する処理が示されている。また、受け付けたクエリの解析は別フローで行っているものとして、図6では省略している。また、図6のステップS103に記載されるインデックス存在フラグは、該当項目がインデックスを持っているか否かを示すフラグであり、更新処理実行フラグは、更新処理を行ったか否かを示すフラグである。また、ステップS106に記載される閾値nは、インデックスを生成する判断を行うためのアクセス数の閾値である。この閾値nは、システムによって最適な値を事前に設定しておくことが望ましいが、正の整数であれば問題ない。また、閾値nは項目毎に設定することが望ましい。しかし、以下では、説明を簡単にするために、全項目で共通の閾値nを使用するものとする。また、各項目のアクセス数の初期値は0とする。
図6を参照すると、データベース管理装置100の参照・更新処理部111は、クライアント装置101から受信したクエリが参照クエリか、更新クエリかを判断する(S101)。参照・更新処理部111は、更新クエリならば、更新クエリに従ってデータベース140に対する更新処理を実行する(S102)。次に、参照・更新処理部111は、ステップS103の処理を行う。参照・更新処理部111は、ステップS103においては、以下の処理を行う。
まず、参照・更新処理部111は、更新処理によってソート状態が崩れた値リストを再生成し、それにあわせて値番号リストを再生成する。また、参照・更新処理部111は、更新処理を行った項目がインデックスを持っていれば、インデックス削除部121によりインデックスを破棄する。また、参照・更新処理部111は、インデックスを破棄した場合、当該項目に対応するインデックス存在フラグの値を、インデックスが存在しない旨を示す値0(false)とする。なお、インデックスが存在する旨を示す値は1(true)である。また参照・更新処理部111は、当該項目に対応する更新処理実行フラグの値を、更新処理を実行した旨を示す値1(true)とする。なお、更新処理を実行していない旨を示す値は0(false)とする。ここで、フラグの値を1(true)にすることを、フラグをたてるとも呼ぶ。
参照・更新処理部111は、ステップS103の処理後、次の処理を確認しに行く(1項目の処理は終了する)。
他方、参照・更新処理部111は、クライアント装置101から受信したクエリが参照クエリならば、まず更新処理後の最初のアクセスか否か調べる(S104)。これは、更新処理実行フラグが1か否かを確認することで行う。更新処理実行フラグが1であれば更新処理後の最初のアクセスのため、ステップS109へ進む。このとき、更新処理実行フラグの値を0にしておく。そして、ステップS109の処理を実行後にステップS108へ進む。また、更新処理実行フラグが0であれば、すなわち更新処理後の最初のアクセスではない場合、参照・更新処理部111は、当該項目にインデックスが生成されているか否かを確認する(S105)。これは、インデックス存在フラグが1か否かを確認することで行う。インデックスが存在していれば、参照・更新処理部111は、ステップS108へ進む。また、インデックスが存在していないならば、参照・更新処理部111は、当該項目のアクセス数が最初に設定した閾値n以下であるか否か判断する(S106)。閾値nより項目のアクセス数が大きい場合、ステップS109へ進む。そして、ステップS109の処理の実行後にステップS108へ進む。また、アクセス数が閾値n以下の場合、アクセス数カウント処理部150により当該項目のアクセス数を1だけ加算し(S107)、ステップS108へ進む。
ステップS108では、参照・更新処理部111は、参照クエリに係る参照処理を実行する。このとき、参照・更新処理部111は、処理する項目にインデックスが存在していれば、当該インデックスを利用して参照処理を実行し、処理実行時間計測部122はそのときの参照処理に要した時間を計測する。他方、参照・更新処理部111は、処理する項目にインデックスが存在していなければ、インデックスを利用しない方法で参照処理を実行し、処理実行時間計測部122はそのときの参照処理に要した時間を計測する。ステップS108の実行後、次の処理を確認しに行く(1項目の処理は終了する)。
図3はステップS109の詳細なフローチャートである。以下、図3を参照して、ステップS109の詳細を説明する。
まず、インデックス生成部120のインデックス生成判断計算部124は、インデックス生成の可否を以下の判定式に基づいて決定する(S111)。
t1_avg×n≧t2_avg×n+a …(1)
判定式1において、t1_avgは、インデックスが存在しない時の当該項目の処理時間の平均、即ちステップS108でインデックスを利用しないで当該項目に係る参照処理を行ったときの処理時間の平均を示す。t2_avgは、インデックスが存在する時の当該項目の処理時間の平均、即ちステップS108でインデックスを利用して当該項目に係る参照処理を行ったときの処理時間の平均を示す。t1_avgとt2_avgの初期値は0である。また、aは、当該項目のインデックスを生成するのに要した時間である。aの初期値は0である。
インデックス生成判断計算部124は、判定式1により、インデックスが存在するときと存在しないときの処理時間を閾値n回実行した時の時間で比較する。そして、インデックス生成判断計算部124は、t1_avg×nがt2_avg×n+a以上であれば、インデックスを生成すると決定し、それ以外は生成しないと決定する。判定式1の全ての変数の初期値は0のため、インデックス生成判断計算部124は、初回は必ずインデックスを生成すると決定する。
インデックス生成判断計算部124は、インデックスを生成すると決定すると、値番号リストの値からインデックスを生成する(S113)。また、インデックス生成時間計測部123は、インデックス生成判断計算部124によるインデックスの生成開始から生成終了までの時間を計測する(S112、S114)。この計測時間は、インデックス生成時間aとして使用される。
インデックス生成判断計算部124は、インデックスの生成では、値番号リストを1番目から確認し、値リストに値番号を紐付けていく。例えば、図5の顧客IDでは、値番号リスト1番目は1のため値リストの1番目の値に紐付いたインデックスに1を追加する。2番目は2のため、値リストの2番目の値に紐付いたインデックスに2を追加する。これを繰り返し、最終的に図5のようになる。このインデックスは、わかり易くするためシーケンス上で示しているが、Bツリーインデックスでもハッシュインデックスでも構わない。
インデックス生成判断計算部124は、最後までインデックスを生成し終えたら、当該項目がインデックスを持っていることを示すためにインデックス存在フラグの値を1にする(S115)。
次に、判定式1で使用するt1_avg、t2_avgの計測方法について説明する。
図7に示すように、インデックスが存在しないとき、即ちインデックスフラグがfalseのとき、直前α―1回の参照処理平均時間の平均値がt1_avgであり、α回目の参照時間がt_cであるとする。このとき、最後のα回目の処理を含めた平均時間は、次式で計算する
新参照処理平均時間t1_avg=(t1_avg×(α−1)+t_c)/α
…(2)
同様に、図7に示すように、インデックスが存在するとき、即ちインデックスフラグがtrueのとき、直前β−1回の参照処理平均時間の平均値がt2_avgであり、β回目の参照時間がt_cであるとする。このとき、最後のβ回目の処理を含めた平均時間は、次式で計算する
新参照処理平均時間t2_avg=(t2_avg×(β−1)+t_c)/β
…(3)
先述したように、アクセス回数αが閾値nを超えた場合、図6のステップS109、即ち図3のフローに入る。図3のステップS111の判定式1におけるt1_avg、t2_avgは、上記式2、3を用いて計算された値を使用する。t1_avgがn回の総和の値ではなく平均値を持つ理由は、ステップS109に入るタイミングが閾値nを超えた時点と更新処理直後の2パターンあるためである。t1_avgを保持し、必要時にn倍して計算することで、ステップS109のフローに入るタイミングが閾値nを越えた時以外にも対応できる。
また、上記判定式1は以下のように変形できる。
(t1_avg−t2_avg)×n≧a …(1’)
このため、言い換えるとインデックス生成判断計算部124は、インデックスの生成時間が、インデックスがない時の1回の処理時間とインデックスが存在するときの1回の処理時間の差分の閾値倍より速い場合、インデックスを生成するように決定する、とも言える。したがって、上記判定式1は、インデックスによる効果が大きい項目はインデックスが自動生成され、効果が少ない項目は生成されない判定方法であると言える。
このように本実施形態によれば、クエリの処理効率の観点に基づいてインデックスの生成可否を決定することができる。
また、FAST構造でデータを保持している場合、インデックス生成時間に時間がかかる。本実施形態では、インデックス生成に時間がかかるデータやシステムの場合、インデックスを生成しないため、インデックス生成によるタイムロスを最小限にできる。また、更新が入ったときインデックスが自動破棄されるため、古いデータを参照してしまう危険性を防ぐことができる。また、管理者が常時監視する必要がないため、人の目による確認による誤認識やチェック漏れを回避でき、さらに、人件費を削減可能である。
[第2の実施形態]
図8は本発明の第2の実施形態に係るデータベース管理装置200のブロック図である。図8を参照すると、データベース管理装置200は、図4に示したデータベース管理装置100と比較して、インデックス生成部120がインデックスサイズ計測部125を備えていることと、インデックス生成判断計算部124の機能が図4に示すインデックス生成判断計算部124と異なっている点で、相違する。
インデックスサイズ計測部125は、インデックス格納部145に作成される項目(列)毎の最大インデックスサイズを計測し、保持する機能を有する。ここで、最大インデックスサイズは、インデックスの行の長さの最大値のことである。例えば、図5の顧客IDにおけるインデックスの1行目には4個の値番号リストの番号「1、3、4、7」があり、2行目には2個の値番号リストの番号「2、5」があり、3行目には1個の値番号リストの番号「6」がある。従って、顧客IDの最大インデックスサイズは4である。
インデックス生成判断計算部124は、最大インデックスサイズに基づいて、インデックスを生成するか否かを決定し、必要に応じてインデックスを生成する機能を有する。
次に本実施形態の動作を、第1の実施形態との相違点を中心に説明する。
データベース管理装置200の動作は、データベース管理装置100の動作と比較して、図6のステップS109の動作が相違する。図9は、データベース管理装置200が図6のステップS109において実行する処理の詳細を示すフローチャートである。
まず、インデックス生成部120のインデックス生成判断計算部124は、当該項目の最大インデックスサイズに基づいて、当該項目のインデックスを生成するか否かを決定する(S210)。例えば、インデックス生成判断計算部124は、以下の判定式4に従って、インデックスの生成可否を決定する。
VnoSize/2≧indxmax …(4)
判定式4において、indxmaxはインデックスサイズ計測部125が保持している当該項目の最大インデックスサイズである。また、VnoSizeは、当該項目の値番号リストのサイズである。例えば、図5の顧客IDの値番号リストのサイズは7である。上記判定式4は、最大インデックスサイズが値番号リストのサイズの半分以上であれば、インデックスを生成することを表している。最大インデックスサイズに基づいてインデックス生成の可否を決定する理由は、最大インデックスサイズがより大きなインデックスほど、インデックスを利用する効果が大きいため、削除後に速やかにインデックスを再生成することが望ましいためである。
インデックス生成判断計算部124は、判定式4に基づいてインデックスを生成すると決定した場合、ステップS212へ進み、インデックスを生成しないと決定した場合、ステップS211へ進む。ステップS211は、図3のステップS111と同じであり、インデックス生成判断計算部124は、先述の判定式1に基づいてインデックス生成の可否を決定する。そして、判定式1に基づいてインデックスを生成すると決定した場合、ステップS212へ進み、インデックスを生成しないと決定した場合、図9の処理を終える。
図9のステップS212、S214、S215は、図3のステップS112、S114、S115と同じである。図9のステップS213では、以下のようにして、サイズを計測しながら値番号リストの値からインデックスを生成する。
まず、インデックス生成判断計算部124は、当該項目の値番号リストの次の値を取得できる、すなわち最後の値ではないならば(S221でyes)、値番号リストの値を取得し、該当する値番号に紐付いたインデックスに追加する(S222)。次に、インデックスサイズ計測部125は、初期値が0のインデックスサイズに1を加算する(S223)。次に、インデックスサイズ計測部125は、加算後のインデックスサイズと保持している最大インデックスサイズとを比較する(S224)。そして、インデックスサイズ計測部125は、保持している最大インデックスサイズより加算後のインデックスサイズが大きければ、保持している最大インデックスサイズを加算後のインデックスサイズに更新し(S225)、ステップS221の処理へ戻る。一方、インデックスサイズ計測部125は、保持している最大インデックスサイズより加算後のインデックスサイズが大きくなければ、ステップS225をスキップし、ステップS221の処理へ戻る。ステップS221において、当該項目の値番号リストの次の値を取得できない、すなわち最後の値まで処理し終えていれば(S221でno)、図9の処理を終了する。
このように本実施形態によれば、最大インデックスサイズに基づいて、インデックスの生成可否を決定する。そのため、最大インデックスサイズが大きなインデックスが更新処理に伴って削除されると、速やかに当該インデックスを生成でき、その結果、クエリの効率的な処理が可能になる。
[第3の実施形態]
図10は本発明の第3の実施形態に係るデータベース管理装置300のブロック図である。図10を参照すると、データベース管理装置300は、図4に示したデータベース管理装置100と比較して、インデックス生成部120がインデックス削除部121の代わりにインデックス一部削除部126を備えている点で、相違する。
インデックス一部削除部126は、更新処理が行われた項目に係る最小の値番号リスト142の番号を参照・更新処理部111から取得して保持する機能と、その保持した番号に基づいてインデックス格納部145上と当該項目のインデックスの一部を削除する機能とを有する。
次に本実施形態の動作を、第1の実施形態との相違点を中心に説明する。
図12はデータベース管理装置300が実行する処理の一例を示すフローチャートである。図12に示すステップのうち、ステップS301〜S302、S306〜S311は、図6に示すステップS101〜S102、S104〜S109と同じである。
図12を参照すると、データベース管理装置300の参照・更新処理部111は、クライアント装置101から受信したクエリが更新クエリならば、更新クエリに従ってデータベース140に対する更新処理を実行する(S302)。次に、インデックス一部削除部126は、更新処理が行われた項目に係る最小の値番号リスト142の番号を参照・更新処理部111から取得して保持する(S303)。次に、インデックス一部削除部126は、当該項目のインデックスの一部を削除する(S304)。ここで、インデックスの一部削除は、物理的にインデックスの一部を削除してもよいし、論理的にインデックスの一部を削除してもよい。論理的にインデックスを削除する方法として、通常の処理では絶対に使わない特定の値(例えば−1)で、削除部分のインデックスを書き換える方法がある。
図11は、インデックスの一部を論理的に削除する方法の説明図である。参照・更新処理部111が図11(A)に示すように、顧客IDに係る値番号リストの4番目を1から2に更新したとする(S302)。この更新によって、顧客IDのインデックスは一部が不正なものとなる。そこで、インデックス一部削除部126は、更新処理が行われた項目に係る最小の値番号リスト142の番号「4」を取得し(S303)、値リストに紐付いたインデックスの各行を先頭から順に調べ、上記最小の値番号リストの番号「4」以上の値を発見すると、その発見した値を「−1」に書き換える(S304)。これにより、図11(A)に示すインデックスの丸い印を付けた箇所が、図11(B)に示すように「−1」に更新される。この「−1」は、それ以降のインデックスは削除されていることを示している。その後、インデックス一部削除部126は、図6のステップS103における場合と同様に、該当項目のアクセス数を初期化し、インデックス存在フラグをfalseにし、更新処理事項フラグを1にセットする(S305)。そして、図12の処理を終える。
参照・更新処理部111は、インデックスの利用時、−1が出現するまではインデックスを利用し、−1が出現した後は、インデックスを利用せずに処理を進める。例えば、参照・更新処理部111は、図11(B)において、顧客IDが「102」であるレコードを検索する場合、値リストの「102」に紐付いたインデックスから「2」を取得し、その直後に「−1」が存在するので、インデックスをそれ以上は利用しない。代わりに、参照・更新処理部111は、最小の値番号リストの番号「4」から、値番号リストをシーケンシャルに検索し、「5」を取得する。
このように本実施形態によれば、更新処理に伴うインデックスの削除を一部分に限定することにより、インデックスの一部を利用可能にするため、参照処理時の値番号リストに対するシーケンシャル処理領域を減らすことができる。その結果、インデックスが再生成されるまでの参照処理時間を短縮することができる。
以上は、更新処理時に既に値リストに存在する値に値番号リストを更新する例を示したが、インデックスの一部削除を適用できる形態は上述した例に限定されず、値リストや値番号リストが更新時に再生成しないで済む方法や構造を採用している場合にも適用可能である。例えば、本発明に関連する技術として、表形式データを列ごとの成分に分解した値リストおよび値番号リストに変換する際に、値リストを構成する各データの間に空き領域を形成して、当該値リストおよび値番号リストに変換し、そして、値リストを構成する各データ間に他のデータを挿入する際に、当該各データ間に形成された空き領域に当該他のデータを挿入する技術が知られている(例えば特許文献3参照)。この関連技術によれば、値リストの更新が値リストの空き領域にデータを挿入するものであれば、値リストおよび値番号リストの作り変えは不要であり、インデックスの一部削除を適用可能である。
[第4の実施形態]
図13を参照すると、本発明の第4の実施形態に係るデータベース管理装置400は、データおよびインデックスをカラム単位で格納するデータベース410に接続され、クライアント420からのクエリを受け付けてデータベース410に対するクエリ実行結果をクライアント420に返却する装置である。データベース管理装置400は、処理時間計測部430と生成可否決定部440とを有する。
処理時間計測部430は、インデックスを利用する場合のクエリの処理時間である第1の処理時間と、インデックスを利用しない場合のクエリの処理時間である第2の処理時間とを計測する機能を有する。
生成可否決定部440は、インデックスが削除された後に計測された第2の処理時間とインデックスが削除される前に計測された第1の処理時間とに基づいて、インデックスが削除された後、インデックスを生成するか否かを決定する機能を有する。
このように構成されたデータベース管理装置400は、以下のように動作する。即ち、データベース管理装置400は、まず、処理時間計測部430により、インデックスを利用する場合のクエリの処理時間である第1の処理時間と、インデックスを利用しない場合のクエリの処理時間である第2の処理時間とを計測する。次に、データベース管理装置400は、生成可否決定部440により、インデックスが削除された後に計測された第2の処理時間とインデックスが削除される前に計測された第1の処理時間とに基づいて、インデックスが削除された後、インデックスを生成するか否かを決定する。
このように本実施形態によれば、クエリの処理効率の観点に基づいてインデックスの生成可否を決定することができる。
その理由は、データベース管理装置400は、インデックスが削除された後に計測された第2の処理時間とインデックスが削除される前に計測された第1の処理時間とに基づいて、インデックスが削除された後、インデックスを生成するか否かを決定するためである。
以上、本発明を幾つかの実施形態を挙げて説明したが、本発明は以上の実施形態にのみ限定されず、本発明の範囲内において各種の付加変更が可能である。
データおよびインデックスをカラム単位で格納するFAST構造などのデータベースに接続され、クライアントからのクエリを受け付けてデータベースに対するクエリ実行結果をクライアントに返却するデータベース管理装置に利用できる。
100…データベース管理装置
101…クライアント装置
110…処理実行部
111…参照・更新処理部
120…インデックス生成部
121…インデックス削除部
122…処理実行時間計測部
123…インデックス生成時間計測部
124…インデックス生成判断計算部
125…インデックスサイズ計測部
126…インデックス一部削除部
130…データ管理部
140…データベース
141…値リスト
142…値番号リスト
143…値リスト番号管理部
144…実の値格納部
145…インデックス格納部
146…値番号リスト管理部
147…値番号処理部
150…アクセス数カウント処理部
200…データベース管理装置
300…データベース管理装置
400…データベース管理装置
410…データベース
420…クライアント
430…処理時間計測部
440…生成可否決定部

Claims (10)

  1. データおよびインデックスをカラム単位で格納するデータベースに接続され、クライアントからのクエリを受け付けて前記データベースに対するクエリ実行結果を前記クライアントに返却するデータベース管理装置であって、
    前記インデックスを利用する場合の前記クエリの処理時間である第1の処理時間と前記インデックスを利用しない場合の前記クエリの処理時間である第2の処理時間とを計測する処理時間計測部と、
    前記インデックスが削除された後に計測された前記第2の処理時間と前記インデックスが削除される前に計測された前記第1の処理時間とに基づいて、前記インデックスが削除された後、前記インデックスを生成するか否かを決定する生成可否決定部と、
    を有するデータベース管理装置。
  2. 前記インデックスの生成に要するインデックス生成時間を計測する生成時間計測部を有し、
    前記生成可否決定部は、前記第1の処理時間と前記第2の処理時間と前記インデックス生成時間とに基づいて、前記生成の可否を決定するように構成されている、
    請求項1に記載のデータベース管理装置。
  3. 前記生成可否決定部は、前記インデックスが削除された後に計測された前記第2の処理時間の平均値をt1_avg、前記インデックスが削除される前に計測された前記第1の処理時間の平均値をt2_avg、前記インデックス生成時間をa、予め設定された閾値をnとするとき、t1_avg×n≧t2_avg×n+aが成立するか否かによって、前記インデックスを生成するか否かを決定するように構成されている、
    請求項2に記載のデータベース管理装置。
  4. 前記クエリの処理中における前記データへの参照アクセス回数を計測するアクセス数計測部を有し、
    前記生成可否決定部は、前記インデックスの削除後に前記参照アクセス回数が予め定められた回数を超えた場合、前記データへの参照アクセスが行われる毎に、前記決定を行うように構成されている、
    請求項1乃至3の何れかに記載のデータベース管理装置。
  5. 前記インデックスの行の長さの最大値を最大インデックスサイズとして計測するサイズ計測部を有し、
    前記生成可否決定部は、前記最大インデックスサイズに基づいて、前記インデックスが削除された後、前記インデックスを生成するか否かを決定するように構成されている、
    請求項1乃至4の何れかに記載のデータベース管理装置。
  6. 前記インデックスの削除は、前記インデックスの全てを利用できない状態とすることである、
    請求項1乃至5の何れかに記載のデータベース管理装置。
  7. 前記インデックスの削除は、前記インデックスの一部を利用できない状態とすることである、
    請求項1乃至5の何れかに記載のデータベース管理装置。
  8. 前記データベースは、各カラムに関連する項目値を含むレコードの配列として表される表形式データに対応するデータ構造であって、前記カラムごとに、前記項目値を一意に特定する項目値番号に対応して当該カラムにおける項目値がソート状態で格納されている値リストと、前記レコードの順番に前記項目値番号を指定する情報が格納されている値番号配列とを含むデータ構造を有する、
    請求項1乃至7の何れかに記載のデータベース管理装置。
  9. データおよびインデックスをカラム単位で格納するデータベースに接続され、クライアントからのクエリを受け付けて前記データベースに対するクエリ実行結果を前記クライアントに返却するデータベース管理装置が実行するインデックス生成制御方法であって、
    前記インデックスを利用する場合の前記クエリの処理時間である第1の処理時間と前記インデックスを利用しない場合の前記クエリの処理時間である第2の処理時間とを計測し、
    前記インデックスが削除された後に計測された前記第2の処理時間と前記インデックスが削除される前に計測された前記第1の処理時間とに基づいて、前記インデックスが削除された後、前記インデックスを生成するか否かを決定する、
    インデックス生成制御方法。
  10. データおよびインデックスをカラム単位で格納するデータベースに接続され、クライアントからのクエリを受け付けて前記データベースに対するクエリ実行結果を前記クライアントに返却するコンピュータを、
    前記インデックスを利用する場合の前記クエリの処理時間である第1の処理時間と前記インデックスを利用しない場合の前記クエリの処理時間である第2の処理時間とを計測する処理時間計測部と、
    前記インデックスが削除された後に計測された前記第2の処理時間と前記インデックスが削除される前に計測された前記第1の処理時間とに基づいて、前記インデックスが削除された後、前記インデックスを生成するか否かを決定する生成可否決定部と、
    して機能させるためのプログラム。
JP2016053921A 2016-03-17 2016-03-17 データベース管理装置 Pending JP2017167917A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016053921A JP2017167917A (ja) 2016-03-17 2016-03-17 データベース管理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016053921A JP2017167917A (ja) 2016-03-17 2016-03-17 データベース管理装置

Publications (1)

Publication Number Publication Date
JP2017167917A true JP2017167917A (ja) 2017-09-21

Family

ID=59913333

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016053921A Pending JP2017167917A (ja) 2016-03-17 2016-03-17 データベース管理装置

Country Status (1)

Country Link
JP (1) JP2017167917A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019109693A (ja) * 2017-12-18 2019-07-04 ヤフー株式会社 データ管理装置、データ管理方法、およびプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019109693A (ja) * 2017-12-18 2019-07-04 ヤフー株式会社 データ管理装置、データ管理方法、およびプログラム
US11487729B2 (en) 2017-12-18 2022-11-01 Yahoo Japan Corporation Data management device, data management method, and non-transitory computer readable storage medium

Similar Documents

Publication Publication Date Title
CN106030579B (zh) 用于针对存储器内的多个存储区域扫描指定量的结果的方法、系统和计算机程序
US7673291B2 (en) Automatic database diagnostic monitor architecture
US9996558B2 (en) Method and system for accessing a set of data tables in a source database
JP3959027B2 (ja) 情報システムのためのデータ構造
US8732163B2 (en) Query optimization with memory I/O awareness
US20110072008A1 (en) Query Optimization with Awareness of Limited Resource Usage
CN108027763B (zh) 关系型数据库的调整装置和方法
CN107783985B (zh) 一种分布式数据库查询方法、装置及管理系统
TWI556180B (zh) 用以遞迴檢閱網際網路及其他來源以識別、收集、管理、判定及鑑定商業身分與相關資料之系統及方法
US7502775B2 (en) Providing cost model data for tuning of query cache memory in databases
US7376682B2 (en) Time model
CN107180053B (zh) 一种数据仓库优化方法和装置
CN106294772A (zh) 分布式内存列式数据库的缓存管理方法
US20070239342A1 (en) Method and system for deferred maintenance of database indexes
Jiang et al. Holistic primary key and foreign key detection
JP6982049B2 (ja) インデックスを管理するための方法、装置、設備及び記憶媒体
JP2018165857A (ja) 分析装置、分析システム、分析方法および分析プログラム
CN108062314B (zh) 动态分表数据处理方法和装置
CN113661488A (zh) 用于访问主数据管理系统的数据记录的方法
CN110889023A (zh) 一种elasticsearch的分布式多功能搜索引擎
CN111984625B (zh) 数据库负载特征处理方法、装置、介质和电子设备
JP2017167917A (ja) データベース管理装置
RU2433467C1 (ru) Способ формирования структуры агрегированных данных и способ поиска данных посредством структуры агрегированных данных в системе управления базами данных
JP2008165622A (ja) マルチオペレーション・プロセッシングを用いたデータベースのクエリー処理システム
CN113220530B (zh) 数据质量监控方法及平台