JP6103037B2 - 計算機システム - Google Patents

計算機システム Download PDF

Info

Publication number
JP6103037B2
JP6103037B2 JP2015505254A JP2015505254A JP6103037B2 JP 6103037 B2 JP6103037 B2 JP 6103037B2 JP 2015505254 A JP2015505254 A JP 2015505254A JP 2015505254 A JP2015505254 A JP 2015505254A JP 6103037 B2 JP6103037 B2 JP 6103037B2
Authority
JP
Japan
Prior art keywords
index
query
data
incomplete
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015505254A
Other languages
English (en)
Other versions
JPWO2014141594A1 (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.)
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
Publication of JPWO2014141594A1 publication Critical patent/JPWO2014141594A1/ja
Application granted granted Critical
Publication of JP6103037B2 publication Critical patent/JP6103037B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • 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

Description

本発明は、クライアントからの問合せを索引を使用して処理する計算機システム、問合せ処理方法、および、プログラムに関する。
データベースを有する計算機システムでは、記憶するデータへの処理を高速化するために索引(インデックス)を作成し、また記憶するデータの削除、更新、追加にあわせて索引を更新している。データベースに記憶されている索引対象データの全てをサポートしている索引は、完全な索引と呼ばれる。他方、データ構造的には不完全さは存在しないが、索引対象データの一部しかサポートしていない索引は、不完全な索引と呼ばれる。
索引を使用してクライアントからの問合せを処理する計算機システムにおいて、問合せに対応する索引が不完全であった場合の処理方法として、以下の2通りの何れかを選択することが本発明に関連する第1の関連技術として提案されている(例えば特許文献1参照)。
(1)問合せを異常終了させる。
(2)問合せの処理を一時的に中断し、完全な索引になるように索引の作成処理を実行した後、中断した問合せの処理を再開する。
特開平5−94475号公報
Junichi Tatemura, Oliver Po, Wang-Pin Hsiung, and Hakan Hacigumus. 2012. Partiqle: an elastic SQL engine over key-value stores. In Proceedings of the 2012 ACM SIGMOD International Conference on Management of Data Pouria Pirzadeh, Junichi Tatemura, Hakan Hacigumus, "Performance Evaluation of Range Queries in Key Value Stores," 2012 IEEE 26th International Parallel and Distributed Processing Symposium Workshops & PhD Forum, pp. 1092-1101
不完全な索引は、サポートするデータ量が少ないために完全な索引を使用した場合と同じ結果を得ることは困難であるけれども、データ構造的に不完全さは存在しないため、問合せに使用しても処理は破たんしない。このため、問合せが一律に異常終了させられたり、或いは不完全な索引が完全な索引になるまで長く待たされたりするよりも、不完全な索引を使用して問合せが速やかに処理された方がクライアントにとってメリットのあるケースが考えられる。しかるに、本発明に関連する第1の関連技術では、不完全な索引をそのまま使用して問合せを処理する考えは一切ない。
本発明の目的は、上述した課題、すなわち、不完全な索引が有効利用されていない、という課題を解決する計算機システムを提供することにある。
本発明の第1の観点に係る計算機システムは、
データを記憶するデータ部と上記データの不完全な索引を記憶する索引部とを有するデータベースと、
クライアントからの問合せを受信し、上記不完全な索引を使用して上記問合せを処理し、上記問合せに対する応答を上記クライアントに送信する処理装置と
を有する。
また本発明の第2の観点に係る問合せ処理方法は、
データを記憶するデータ部と上記データの不完全な索引を記憶する索引部とを有するデータベースと、処理装置とを有する計算機システムが実行する問合せ処理方法であって、
上記処理装置が、クライアントからの問合せを受信し、上記不完全な索引を使用して上記問合せを処理し、上記問合せに対する応答を上記クライアントに送信する。
また本発明の第3の観点に係るプログラムは、
データを記憶するデータ部と上記データの不完全な索引を記憶する索引部とを有するデータベースに接続されたプロセッサに、
クライアントからの問合せを受信するステップと、
上記不完全な索引を使用して上記問合せを処理するステップと、
上記問合せに対する応答を上記クライアントに送信するステップと
を行わせる。
本発明は、不完全な索引を利用してクライアントからの問合せを処理するため、不完全な索引の有効利用が可能になる。
本発明の第1の実施形態に係る計算機システムのブロック図である。 本発明の第1の実施形態に係る計算機システムにおける問合せ処理の手順を示すフローチャートである。 本発明の第2の実施形態に係る計算機システムのブロック図である。 本発明の第2の実施形態に係る計算機システムにおける問合せ処理の手順を示すフローチャートである。 表形式のデータをKV形式のデータとして格納する例と索引の例を示す図である。 B−tree構造の索引の例とそれをKVペアによって表現したハッシュ索引の例とを示す図である。 本発明の第3の実施形態に係る計算機システムのブロック図である。 本発明の第3の実施形態に係る計算機システムにおける索引情報の構成例を示す図である。 本発明の第3の実施形態に係る計算機システムにおける統計情報の構成例を示す図である。 本発明の第3の実施形態に係る計算機システムにおける問合せ処理部の処理例を示すフローチャートである。 本発明の第3の実施形態に係る計算機システムにおける索引選択部の処理例を示すフローチャートである。 本発明の第3の実施形態に係る計算機システムにおける索引作成部の処理例を示すフローチャートである。
次に本発明の実施の形態について図面を参照して詳細に説明する。
[第1の実施形態]
図1を参照すると、本発明の第1の実施形態に係る計算機システム100は、データベース110と処理装置120とを有する。データベース110の種類は任意である。例えばデータベース110は、キーバリューストア(KVS)であってよい。或いはデータベース110は、リレーショナルデータベース(RDB)であってよい。
データベース110は、データ部111と索引部112とを有する。データ部111は、データ1111を記憶する機能を有する。また索引部112は、データ1111の不完全な索引1121を記憶する機能を有する。不完全な索引1121は、データ構造的には不完全さは存在しないが、データ部111に記憶されている索引対象データしかサポートしていない索引を意味する。
処理装置120は、クライアント130からの問合せを受信する機能と、不完全な索引1121を使用して上記問合せを処理する機能と、上記問合せに対する応答をクライアント130に送信する機能とを有する。処理装置120は、一般的にはプロセッサとメモリと通信装置とを有し、メモリに記憶されたプログラムを実行することによって所定の処理を実行する。
図2は本実施形態における問合せ処理の手順を示すフローチャートである。以下、図2を参照して本実施形態の動作を説明する。
計算機システム100の処理装置120は、まず、クライアント130から図示しないネットワークを通じて送信された問合せを受信する(ステップS101)。次に、処理装置120は、索引部112に記憶されている不完全な索引1121を使用してデータ部111のデータ1111をアクセスすることにより、受信した問合せを処理する(ステップS102)。そして、処理装置120は、処理結果を問合せに対する応答としてクライアント130へ送信する(ステップS103)。
このように本実施形態によれば、不完全な索引1121を利用してクライアント130からの問合せを処理するため、不完全な索引の有効利用が可能になる。
本実施形態は上記の構成および動作を基本としつつ、以下のような付加変更が可能である。
例えば処理装置120は、問合せの種別を判定し、判定した種別が予め定められた種別でない場合には不完全な索引1121を使用した上記問合せの処理は行わない機能を有していてよい。或いは処理装置120は、問合せの種別を判定し、判定した種別が予め定められた種別である場合に限り、不完全な索引1121を使用して上記問合せの処理を行い、それ以外は上記問合せを実行不可としてよい。ここで、上記予め定められた種別としては、例えば、集計関数MAX(最大値)、MIN(最小値)、AVG(平均値)のうちの何れかを返す問合せであってよい。その理由は、最大値、最小値、平均値といった統計的な傾向を見る問合せ処理は、データ部111に記憶されている全てのデータ1111を使用しなくても一部分のデータ1111を使用すれば、或る程度の精度で結果が得られるためである。
また処理装置120は、問合せに含まれるユーザ指定情報を解析し、不完全な索引1121の使用がユーザ指定情報において許容されていない場合には不完全な索引1121を使用した上記問合せの処理は行わない機能を有していてよい。或いは処理装置120は、問合せに含まれるユーザ指定情報を解析し、不完全な索引1121の使用がユーザ指定情報において許容されている場合に限り、不完全な索引1121を使用して上記問合せの処理を行い、それ以外は上記問合せを実行不可としてよい。
また処理装置120は、不完全な索引1121の完成度合いを算出し、この算出した完成度合いが閾値を超えない場合には不完全な索引1121を使用した上記問合せの処理は行わない機能を有していてよい。或いは処理装置120は、不完全な索引1121の完成度合いを算出し、この算出した完成度合いが閾値を超えている場合に限り、不完全な索引1121を使用して上記問合せの処理を行い、それ以外は上記問合せを実行不可としてよい。ここで処理装置120は、不完全な索引1121の完成度合いとして、例えば、不完全な索引1121に登録済みのデータ1111の件数、またはデータ部111に記憶されるデータ1111の件数に対する不完全な索引1121に登録済みのデータ1111の件数の割合を用いてよい。あるいは、処理装置120は、不完全な索引1121の完成度合いとして、データ部111が複数のサブデータ部から構成されている場合、複数のサブデータ部のうち、全データが不完全な索引1121に登録されているサブデータ部の数、またはサブデータ部の総数に対する全データが不完全な索引1121に登録されているサブデータ部の数の割合を用いてよい。
また処理装置120は、不完全な索引1121の完成度合いと、不完全な索引1121を使用してデータ部111をアクセスするのに要するコストとを算出し、この算出した完成度合いとコストとに基づいて不完全な索引1121を選択する指標値を算出し、この算出した指標値が閾値より優れていない場合には不完全な索引1121を使用した上記問合せの処理は行わない機能を有していてよい。或いは処理装置120は、上記のように算出した指標値が閾値より優れている場合に限り、不完全な索引1121を使用して上記問合せの処理を行い、それ以外は上記問合せを実行不可としてよい。ここで処理装置120は、上記コストとして、不完全な索引1121がツリー構造を有する索引の場合にはツリー構造の高さを用いてよい。また、処理装置120は、不完全は索引1121が索引部112に記憶されている旧索引に代えて使用するために再構築中の新索引である場合、旧索引の完成度合いと、旧索引を使用してデータ部111をアクセスするのに要するコストとを算出し、この算出した完成度合いとコストとに基づいて旧索引を選択する指標値を算出し、この算出した指標値を上記閾値としてよい。
また処理装置120は、不完全な索引1121が存在する場合、或いは不完全な索引1121が上記の所望の条件を満たさない場合、問合せを実行不可とする代わりに、不完全な索引1121を使用して問合せを処理し、統計的手法に基づき予測区間や信頼区間を算出して応答に含めるようにしてよい。信頼水準は、90%、95%等、任意でよい。例えば信頼水準を90%、信頼区間を20〜30とすると、処理装置は、例えば「信頼水準90%で、問合せ結果は20から30の間にある」という応答を返す。
[第2の実施形態]
図3を参照すると、本発明の第2の実施形態に係る計算機システム200は、データベース210と処理装置220とを有する。データベース210の種類は任意である。例えばデータベース210は、キーバリューストア(KVS)であってよい。或いはデータベース210は、リレーショナルデータベース(RDB)であってよい。
データベース210は、データ部211と索引部212と索引情報213とを有する。データ部211は、データ2111を記憶する機能を有する。また索引部212は、データ2111の完全な索引である旧索引2121と不完全な索引である新索引2122とを記憶する機能を有する。新索引2122は、データ構造的には不完全さは存在しないが、データ部211に記憶されている索引対象データの一部しか登録されていない状態の索引を意味する。例えば、新索引2122は、アクセス効率の低下した旧索引2121の代わりに使用するために再構築中の索引である。索引情報213は、旧索引2121と新索引2122とに関する管理情報を表す。索引情報213では、旧索引2121と新索引2122とがデータ2111のどの表のどの列に対する索引であるのかや、新索引2122が不完全な状態であるのかや、旧索引2121が未だ有効であるのかなどの情報を有する。
処理装置220は、クライアント230からの問合せを受信する機能と、受信した問合せの処理に新索引2122を使用するか否かを決定する機能と、新索引2122を使用すると決定した場合に新索引2122を使用して上記問合せを処理し、新索引2122を使用しないと決定した場合に旧索引2121を使用して上記問合せを処理する機能と、上記問合せに対する応答をクライアント230に送信する機能とを有する。また処理装置220は、一般的にはプロセッサとメモリと通信装置とを有し、メモリに記憶されたプログラムを実行することによって所定の処理を実行する。
図4は本実施形態における問合せ処理の手順を示すフローチャートである。以下、図4を参照して本実施形態の動作を説明する。
計算機システム200の処理装置220は、まず、クライアント230から図示しないネットワークを通じて送信された問合せを受信する(ステップS201)。次に、処理装置220は、索引情報213を参照して、受信した問合せの処理に使用できる索引の中に新索引2122が存在するか否かを判定する(ステップS202)。新索引2122が存在しなければ、処理装置220は、索引部212に記憶されている旧索引2121を使用してデータ部211のデータ2111をアクセスすることにより、受信した問合せを処理する(ステップS203)。そして、処理装置220は、処理結果を問合せに対する応答としてクライアント230へ送信する(ステップS207)。
また新索引2122が存在すれば、処理装置220は、新索引2122の使用の可否を判断する(ステップS204)。例えば処理装置220は、以下の条件1〜4のうちの何れか1つの条件が成立すれば新索引2122を使用可とし、それ以外は使用不可とする。或いは以下の条件1〜4のうちの何れか2つの条件が成立すれば新索引2122を使用可とし、それ以外は使用不可とする。或いは以下の条件1〜4のうちの何れか3つの条件が成立すれば新索引2122を使用可とし、それ以外は使用不可とする。或いは以下の全ての条件1〜4の全てが成立すれば新索引2122を使用可とし、それ以外は使用不可とする。
条件1:
問合せの種別が予め定められた種別であること。上記予め定められた種別としては、例えば、集計関数MAX(最大値)とMIN(最小値)とAVG(平均値)としてよい。例えば、「SELECT c1, AVG(value) FROM t1 WHERE c2=3 GROUP BY c1」のような問合せは、AVG(value)の文字列を検出することで、AVG(平均値)を返す集計関数であることがわかる。このような問合せは、列c1が分類名のようなものであると想定すれば、傾向を見るものであり、必ずしも正確な結果は要求されない可能性が高い。この条件1を考慮して新索引2122の使用可否を決定することにより、旧索引2121を使用した場合と問合せ結果に大きな違いがでないような問合せに関してのみ新索引2122の有効活用が可能になる。
条件2:
問合せに含まれるユーザ指定情報において、不完全な索引である新索引2122の使用が許容されていること。この条件2を考慮して新索引2122の使用可否を決定することにより、新索引2122の使用可否の判断をユーザ側に委ねることが可能になる。
条件3:
新索引2122の完成度合いが閾値を超えていること。新索引2122の完成度合いの算出方法は、第1の実施形態における不完全な索引1121の完成度合いの算出方法と同じでよい。この条件3を考慮して新索引2122の使用可否を決定することにより、再構築開始直後の完成度の極めて低い新索引2122の使用を防止することが可能になる。
条件4:
新索引2122の完成度合いと新索引2122を使用してデータ部211をアクセスするのに要するコストとに基づいて算出した、新索引2122を選択する指標値が閾値より優れていること。上記コストの算出方法は、第1の実施形態における不完全な索引1121のコストの算出方法と同じでよい。また、旧索引2121について新索引2122と同じ方法で算出した指標値を上記閾値として使用してよい。この条件4を考慮して新索引2122の使用可否を決定することにより、再構築開始直後の完成度の極めて低い新索引2122の使用を防止することが可能になる。また、旧索引2121について新索引2122と同じ方法で算出した指標値を上記閾値として使用する方法によれば、完成度合いと利用コストとを統合した観点から、旧索引2121と新索引2122とのうちのより好ましい方を選択して使用することが可能になる。
次に処理装置220は、新索引2122を使用不可と判断した場合(ステップS205でNO)、旧索引2121を使用して問合せを処理し(ステップS203)、処理結果を問合せに対する応答としてクライアント230へ送信する(ステップS207)。
他方、処理装置220は、新索引2122を使用可と判断した場合(ステップS205でYES)、索引部212に記憶された新索引2122を使用してデータ部211のデータ2111をアクセスすることにより、受信した問合せを処理する(ステップS206)。そして、その処理結果を問合せに対する応答としてクライアント230へ送信する(ステップS207)。
このように本実施形態によれば、再構築中の不完全な新索引2122を利用してクライアント230からの問合せを処理するため、不完全な索引の有効利用が可能になる。
また本実施形態によれば、再構築中の不完全な新索引2122の使用可否を判断し、使用不可ならば旧索引2121を利用してクライアント230からの問合せを処理することができる。
[第3の実施形態]
次に本発明の第3の実施形態について詳細に説明する。本実施形態は、分散キーバリューストア(以下、KVSと記す)に本発明を適用する。このため、まず、分散KVSについて簡単に説明する。
極めて大量のデータを保管するために、近年、分散KVSが注目されている。例えばVoldemort(http://www.project-voldemort.com/)はその実装の一つである。一般にKVSは、スケーラビリティとスループットを重視し、少数のノードからなる構成から、必要に応じてノードを追加することでシステムを拡張し、膨大なデータに対する多数の同時要求を処理することが期待されている。
ただし、KVSはスケーラビリティを重視するために、データはキーとバリューからなる単純な構造(以下キーバリューペア、KVペアと言う)で表現されなければならず、対応できる原始的な操作はKVペアのキーを指定してバリューを取得(get)、KVペアを格納(put)、キーを指定してKVペアを削除(delete)のみである。本実施形態における後述する索引の再構築では、格納された全データの走査を用いるが、これはいくつか制約のある操作である。
一方、コンピュータシステムにおいてデータを格納する場合はリレーショナルデータベース(以下RDB)が広く利用されている。RDBは柔軟な表形式のデータ構造と多くの機能を備えるが、スケーラビリティは限られる。そこで、RDBの表形式でのデータ管理をKVS上で実現し、スケーラビリティに優れたものにする試みとしてマイクロシャーディング(Microsharding)がある(例えば非特許文献1参照)。マイクロシャーディングでは、すべてのデータをキーバリュー形式で表現してKVSに格納する。
図5は表形式のデータ(同図(A))をKV形式のデータ(同図(B))として格納する例を示す。KVSは基本的にキーの値を指定したKVペアの取得しか行えないため、図5に示すように、キーとして表の任意の列の値(図の例ではID)を使用し、バリューに1行のすべての列の値を格納する。例えば、表形式のデータの1行目は、キー値=「1」、バリュー=「1,鈴木,東京都,AAA,3」を有するKV形式のデータとして格納される。そのため、キーとした列以外の値でアクセスするためには、索引と呼ぶ別の外部構造が必要になる。例えば、佐藤や鈴木といった名前でアクセスする場合、図5(C)に示されるような索引が必要になる。
通常、1つの索引構造は複数のKVペアにより構成される。KVペアを「{キー,バリュー}」と表現するとしたとき、図5(C)に示される索引のように、索引を{索引対象列の値,元データのキーの値}の形式で表す索引を、ハッシュ索引と言う。ハッシュ索引では、1つの検索対象列の値ごとにKVSにKVペアとして表現される。他方、B−tree或いはそれに類似する構造の索引がある。図6はB−tree構造の索引の例(同図(A))と、それをKVペアによって表現したハッシュ索引の例(同図(B))とを示す。B−tree構造の索引では、木を構成する各ノードがそれぞれKVペアとなる。
ただし、索引を構築すると定期的な再構築が必要になる。例えば、B−treeにおける要素の削除操作を考えたとき、B−tree自体は削除操作をサポートしているものの、木の構造変更がコストの高い操作であるため、単に削除フラグを立てて削除完了とすることが多い(図6(A)では斜めの線が削除を示し、図6(B)では「D」が削除を示す)。このため、要素の削除を繰り返すと無効なデータが蓄積し、木の高さ(=階層の深さ)が高くなることでアクセス効率が悪くなる。従って、パファーマンスを高めるため、定期的に索引を再構築することが要求される。例えばOracle DatabaseではALTER INDEX REBUILD文により索引を再構築する。
ところが、KVSはそのスケーラビリティから極めて大量のデータを格納するために用いられる。索引を再構築するためには索引対象のデータをすべて走査することが必須であり、KVSのように対象データを大量に格納していれば、再構築には長い時間がかかっているのが現状である。この再構築中の索引が有効に活用されていない、という課題を解決することが本実施形態の目的である。
図7を参照すると、本実施形態に係る計算機システム300は、KVS310と処理装置320とを有する。
KVS310は、データ部311と索引部312と索引情報313と統計情報314とを有する。
データ部311は、データ3111を記憶する機能を有する。データ3111は、ユーザが作成したユーザデータである。個々のデータ3111は、例えば図5(B)に示したKV形式のデータのような内容と形式を有する。
索引部312は、データ3111の完全な索引である旧索引3121と再構築中の不完全な索引である新索引3122とを記憶する機能を有する。新索引3122は、データ構造的には不完全さは存在しないが、データ部311に記憶されている索引対象データの全てが登録されておらず、一部のデータが登録されている索引を意味する。
索引情報313は、有効な索引の情報を管理するKVペアである。図8は索引情報313の構成例を示す。索引情報313を構成するKVペアのキーには、当該索引情報313によって管理する索引が、どの表のどの列に係る索引であるかを表す文字列が記録される。例えば、図5(B)に示される索引に対応する索引情報313では、図8に示されるように、表形式のデータを識別する文字列と名前の列を識別する文字列との組み合わせがキー値となる。一方、索引情報313を構成するKVペアのバリューには、有効な索引を識別する情報が記録される。例えば、再構築中の新索引3122がなく旧索引3121が存在する状態では、図8(A)に示されるように、旧索引を識別する情報とその状態(作成完了)とがバリューに記録される。また、新索引3122の作成が開始されると、図8(B)に示されるように、旧索引3121に関する情報に加えて、新索引3122を識別する情報とその状態(作成中)とがバリューに記録される。さらに、新索引3122の作成が完了し、もはや旧索引3121が不要になると、図8(C)に示されるように、旧索引3121の状態が「無効」とされ、新索引3122の状態が「作成完了」とされる。
統計情報314は、新索引3122に登録されているレコード件数等の各種情報を格納しているデータである。図9は統計情報314の構成例である。この例の統計情報314は、旧索引3121に登録されているレコード件数を記録するKVペアと、新索引3122に登録されているレコード件数を記録するKVペアとから構成される。それぞれのKVペアのキーには、旧索引3121または新索引3122を特定する情報が記録される。また旧索引3121のKVペアのバリューには、旧索引3121に登録されているデータ件数が記録される。さらに新索引3122のKVペアのバリューには、新索引3122に登録されているデータ件数が記録される。
なお、一般的にKVS310は、複数のノード(コンピュータ)で構築され、KVS310に格納されるKVペアは、複数のノードに分散して格納される。従って、上述したデータ部311中の個々のデータ2111を構成するKVペア、索引部312中の旧索引3121と新索引3122を構成するKVペア、索引情報313を構成するKVペア、統計情報314を構成するKVペアは、複数のノードに分散して格納されている。
処理装置320は、MPUなどのプロセッサとメモリや通信装置などの周辺回路とを有し、上記プロセッサが上記メモリに記憶されたプログラムを読み込んで実行することにより、上記ハードウェアとプログラムとを協働させて各種処理部を実現する機能を有している。処理装置320で実現される主な処理部として、問合せ処理部321と索引選択部322と索引作成部323とがある。
問合せ処理部321は、クライアント330からの問合せを図示しないネットワーク等を通じて受信して処理し、その応答をクライアント330へ送信する機能を有する。問合せ処理部321は、問合せを処理するための索引を決定するために、受信した問合せを索引選択部322へ通知し、索引選択部322で決定された索引を使用して上記問合せを処理する。
索引選択部322は、問合せ処理部321から受け取った問合せの処理に使用する索引を決定し、問合せ処理部321へ通知する機能を有する。より具体的には、まず索引選択部322は、問合せの処理に使用する索引の候補を索引情報313を参照して決定する。次に索引選択部322は、索引の候補の中に、状態が作成中の新索引3122が含まれていれば、問合せ種別判定部3221、ユーザ指定情報判定部3222および指標値算出比較部3223を用いて、新索引3122の使用可否を決定する。そして、新索引3122を使用可と判断したならば、索引選択部322は、問合せ処理部321に対して新索引3122を通知する。他方、新索引3122を使用不可と判断したならば、索引選択部322は、問合せ処理部321に対して旧索引3121を通知する。
問合せ種別判定部3221は、問合せの種別を判定し、予め定められた種別でなければ、新索引3122は使用不可と判定する。ここで、予め定められた種別は、例えば、集計関数MAX(最大値)とMIN(最小値)とAVG(平均値)を返す問合せである。
ユーザ指定情報判定部3222は、問合せに含まれるユーザ指定情報を解析し、新索引3122の使用を許可する旨がユーザ指定情報中に記述されていなければ、新索引3122は使用不可と判定する。
指標値算出比較部3223は、新索引3122に係る指標値を算出し、この算出した指標値が閾値より優れていなければ、新索引3122は使用不可と判定する。索引に係る指標値は、例えば次式を用いて算出する。この算出方法によれば、より値の小さな指標値ほど、より優れた指標値となる。
指標値=利用コスト+α(1−索引の完成度) …(1)
上記式1において、利用コストとは、索引を使用してデータ部311のデータをアクセスするのに要するコストである。例えばB−tree構造による索引であれば、木の高さ(階層の深さ)を利用コストとすることができる。また、索引の完成度とは、索引の完全さの程度であり、0から1の値をとる(1に近づくほど完全さの程度が高くなる)。索引の完成度は、例えば次式を用いて算出する。
索引の完成度
=現在索引に存在するレコード数/索引の対象となるレコード数 …(2)
新索引3122の場合、現在索引に存在するレコード数は、図9に示した統計情報314における新索引のKVペアのバリューの値を使用する。また、新索引3122の場合、索引の対象となるレコード数は、図9に示した統計情報314における旧索引のKVペアのバリューの値を使用する。
上記式1において、αは、利用コストと索引の完成度との重み付け係数である。利用コストに比べて索引の完成度をより重視したければ、αをより大きな値とし、そうでなければより小さな値とする。
索引作成部323は、索引を再構築する機能を有する。以下、索引の再構築に関して説明する。
KVSは一般に多数のクライアントが同時に接続した際に高いスループットで処理できることが特徴であり、索引の再構築中もクライアントが一貫した情報にアクセスできなければならない。この一貫した情報を見せるという目的のために、例えば原子的な操作が保証された単一KVペアに索引のすべての情報を格納することも可能ではあるが、KVペアのサイズが拡大することによって転送時間が増加すること、大量の要素が含まれることで対象要素の検索処理が必要となること、1つの要素でも書き換われば全体を格納しなければならないなど性能上不利となるため、この方式は現実的ではない。したがって、通常は前述したように1つ索引構造は複数のKVペアにより構成される。即ち、ハッシュ索引では、1つの検索対象列の値ごとにKVS上でKVペアとして表現される。また、B−tree構造の索引では、木を構成する各ノードがそれぞれKVペアとなる。
複数のKVペアで1つの索引を構成するとき、KVSにおいて単一KVペアにしか原子的な更新が行えないという点が問題となる。一般的にKVSは複数のノード(このノードとは前述の木を構成するノードのことではなく、1台のコンピュータなどのことである)で構築され、ここに格納されるKVペアは、KVSの外からはそれぞれがどのノードに格納されているかを意識されない状態で分散して管理される。そのため、原子的な更新は1つのKVペアに限定される。ここで単に索引の各ノード(これは木のノードのことである)をKVペアにしてしまうだけでは、索引に対して操作を行っている途中に他のクライアントが更新中の中途半端な木の状態を参照してしまう。この問題は、索引構造単体においては例えばB−treeであれば、非特許文献2に記載されるような構造、手続きをとることで解決が可能である。索引作成部323は、非特許文献2に記載されるような仕組みで索引の再構成を行うことにより、再構築中の中途半端な新索引3122を使用しても問題が生じないようにしている。
また索引作成部323は、KVS310のデータ部311からデータ2111を順に取得し(走査)、索引対象のデータであれば再構築中の新索引3122にそのデータへの参照を追加していくが、併せて統計情報314を更新する。統計情報314の更新は必ずしも1件単位である必要はなく、例えばレコードを10件だけ索引に登録するたびにまとめて行ってもよい。
さらに索引作成部323は、旧索引3121だけしか存在しない状態において、旧索引3121に代えて新たに使用する新索引3122を作成する際、索引情報313を図8(A)に示されるような状態から図8(B)に示されるような状態へ変更する。また、索引作成部323は、新索引3122の作成を完了すると、索引情報313を図8(B)に示されるような状態から図8(C)に示されるような状態へ変更する。前述したように索引情報313は、1つのKVペアであるため、索引情報313の更新はCAS(Compare And Swap)操作により行われる。このため、旧索引だけの状態から旧索引と新索引とが併存する状態への切替えや、旧索引と新索引とが併存する状態から新索引だけの状態への切替えを、原子的に行うことが可能である。
次に本実施形態に係る計算機システム300の動作を説明する。最初にクライアント330から問合せがあった際の動作を、図10および図11のフローチャートを参照して説明する。
計算機システム300の処理装置320における問合せ処理部321は、まず、クライアント330から図示しないネットワークを通じて送信された問合せを受信する(図10のステップS301)。次に、問合せ処理部321は、受信した問合せの処理に使用する索引を選択するために、受信した問合せを索引選択部322へ通知する(ステップS302)。
索引選択部322は、問合せ処理部321から受け取った問合せを解析し、索引情報313を参照して、問合せに有効な索引があるか否かを確認する(図11のステップS311)。問合せに対する索引とは、例えばデータベースに対する問合せ言語として標準的なSQLで「SELECT * FROM t1 WHERE c2 = 3」と表されるような問合せであれば、表t1の列c2のように問合せの処理の際にKVSからデータを取得する際にキーとなる列に対する索引のことである。索引情報313がどのような表のどのような列に対する索引に関する情報であるかは、索引情報313のキーの値で判明できるようになっている。従って、表t1の列c2によって定まるキー値に対応する索引情報313を取得できる否かによって、索引があるか否かを確認することができる。また、索引が有効であるとは、索引情報313に状態が「無効」である旨の記載がないことである。索引選択部322は、問合せに有効な索引がなければ、その旨を問合せ処理部321へ通知する(ステップS312)。前述の通りKVSは基本的にキーを指定して取得するしかデータを取得する方法はない。このため、もともとc2のような列をキーにしてKVSに格納されているか、あるいは他の列がキーとなっているのであれば索引が用意されていなければならない。したがって有効な索引がなければ、後述するように、その問合せは実行不可となる。
一方、問合せに有効な索引が存在すれば、索引選択部322は、取得した索引情報313をさらに参照して、状態が作成中の新索引3122があるか否かを確認する(ステップS313)。そして、新索引3122が存在しなければ、索引選択部322は、索引情報313に記載されている旧索引3121を問合せ処理部321へ通知する(ステップS314)。また、新索引3122が存在していれば、索引選択部322は、その新索引3122を使用するか否かを以下のようにして決定する(ステップS315〜S318)。
まず索引選択部322は、問合せ種別判定部3211を用いて、問合せの種別を判定する(ステップS315)。問合せの種別が集計関数MAX(最大値)、MIN(最小値)、AVG(平均値)を返すものでなければ、索引選択部322は、新索引3122は使用しないと決定し、索引情報313に記載されている旧索引3121を問合せ処理部321へ通知する(ステップS314)。
問合せの種別が集計関数MAX(最大値)、MIN(最小値)、AVG(平均値)を返すものであれば、索引選択部322は、ユーザ指定情報判定部3222を用いて、問合せ中に再構築中の不完全な新索引3122を使用してよい旨のユーザ指定情報が記述されているか否かを判定する(ステップS316)。新索引3122の使用を許可する所定の文字列等が問合せ中に存在しない場合、索引選択部322は、新索引3122は使用しないと決定し、索引情報313に記載されている旧索引3121を問合せ処理部321へ通知する(ステップS314)。
ユーザ指定情報で使用が許可されている場合、索引選択部322は、指標値算出比較部3223を用いて、新索引3122の指標値を上述した式1により算出し(ステップS317)、この算出した指標値を旧索引3121について上述した式1により算出した指標値と比較する(ステップS318)。そして、索引選択部322は、新索引3122の指標値が旧索引3121の指標値を下回っていなければ(即ち新索引3122の指標値が旧索引3121の指標値以上であれば)、新索引3122は使用しないと決定し、索引情報313に記載されている旧索引3121を問合せ処理部321へ通知する(ステップS314)。反対に、新索引3122の指標値が旧索引3121の指標値を下回っていれば(即ち新索引3122の指標値が旧索引3121の指標値未満であれば)、新索引3122を使用すると決定し、索引情報313に記載されている新索引3122を問合せ処理部321へ通知する(ステップS319)。
問合せ処理部321は、使用する索引に関する情報を索引選択部322から受け取ると(図10のステップS303)、その情報を解析する。問合せ処理部321は、使用する有効な索引が存在しない旨の情報を索引選択部322から受け取った場合には、今回受信した問合せは実行不可と判断し、エラーメッセージ等をクライアント330へ送信する(ステップS304、S305)。
他方、問合せ処理部321は、使用する索引として新索引3122の情報を索引選択部322から受け取ると、新索引3122を使用して問合せを処理する(ステップS304、S306)。また問合せ処理部321は、使用する索引として旧索引3121の情報を索引選択部322から受け取ると、旧索引3121を使用して問合せを処理する(ステップS304、S307)。そして、問合せ処理部321は、処理結果を問合せに対する応答としてクライアント330へ送信する(ステップS308)。
次に、索引作成部323による新索引3122の作成に関する動作を、図12のフローチャートを参照して説明する。
索引作成部323は、まず、旧索引3121の索引情報を管理している索引情報313に新索引3122の情報を追加し、索引情報313を図8(A)に示されるような状態から図8(B)に示されるような状態へ変更する(ステップS321)。
次に索引作成部323は、KVS310のデータ部311からデータ3111を1件ずつ順次取得し、以下の処理を実行する(ステップS322〜S326)。まず、取得したデータ3111が索引対象のデータか否かを判定し(ステップS323)、索引対象のデータでなければ次のデータ3111の処理へ進む。取得したデータ3111が索引対象のデータであれば、新索引3122にデータ3111への参照を追加する(ステップS324)。次に、新索引3122に対応する統計情報314を更新する(ステップS325)。そして次のデータ3111の処理へ進む。
索引作成部323は、KVS310のデータ部311の全てのデータ3111についての処理を終えると、索引情報313の情報を更新し、索引情報313を図8(B)に示される状態から図8(C)に示される状態へ変更する(ステップS327)。
なお、索引作成部323の上記動作は、KVS310において内部のデータを全走査する機能があることを前提としている。一般にこうした機能は管理機能として実装されており、走査中に取得したデータに一貫性があることを保証していない。従って全走査中に取得したデータについて、あるデータはある時刻における更新を反映しているが別のデータは同じ時刻の更新を反映していないことがありうる。そのため、一貫性のある索引を構築するためには、索引作成対象オブジェクトを静止させる(更新をさせない)ことが必要である。但し、更新を伴わない問合せは実施可能である。
このように本実施形態によれば、再構築中の不完全な新索引3122を利用してクライアント330からの問合せを処理するため、不完全な索引の有効利用が可能になる。
また本実施形態によれば、再構築中の不完全な新索引3122の使用可否を判断し、使用不可ならば旧索引3121を利用してクライアント330からの問合せを処理することができる。
さらに本実施形態によれば、新索引3122を作成し終えた時点で、旧索引3121と新索引3122とを併用している状態から、新索引3122のみを使用する状態へと原子的に切り替えることができる。
本実施形態は、上述した構成および動作を基本としつつ、以下のような各種の付加変更が可能である。
問合せ処理部321と索引選択部322と索引作成部323とは同一の処理装置320上に存在する必要はなく、異なる処理装置320上に存在していてもかまわない。
また、索引3121、3122の構造としてB-treeやハッシュ索引を例示したが、本発明で対象とする索引はこれらに限定されず、その他の構造であってもよい。
さらにKVS310に格納されるデータは、Microshardingが対象とする表形式に限定されず、広く一般にキーバリュー形式に表現できるものとその索引とすることができる。
また、一般にKVSが複数ノードで構成されていることを踏まえ、統計情報314として何台のノードのデータに対して索引の構築が完了したかを記録し、索引の完成度を求める式として、次式を使用してもよい。
索引の完成度
=完了ノード数/総ノード数 …(3)
なお、本発明は、日本国にて2013年3月15日に特許出願された特願2013−053392の特許出願に基づく優先権主張の利益を享受するものであり、当該特許出願に記載された内容は、全て本明細書に含まれるものとする。
本発明はクライアントからの問合せを索引を使用して処理する計算機システム、特にKVSに利用することができる。
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
[付記1]
計算機システムであって、
データを記憶するデータ部と前記データの不完全な索引を記憶する索引部とを有するデータベースと、
クライアントからの問合せを受信し、前記不完全な索引を使用して前記問合せを処理し、前記問合せに対する応答を前記クライアントに送信する処理装置と
を有する計算機システム。
[付記2]
前記処理装置は、前記問合せの種別を判定し、該判定した種別が予め定められた種別でない場合には前記不完全な索引を使用した前記問合せの処理は行わない
付記1に記載の計算機システム。
[付記3]
前記処理装置は、前記問合せに含まれるユーザ指定情報を解析し、前記不完全な索引の使用が前記ユーザ指定情報において許容されていない場合には前記不完全な索引を使用した前記問合せの処理は行わない
付記1または2に記載の計算機システム。
[付記4]
前記処理装置は、前記不完全な索引の完成度合いを算出し、該算出した完成度合いが閾値を超えない場合には前記不完全な索引を使用した前記問合せの処理は行わない
付記1乃至3の何れかに記載の計算機システム。
[付記5]
前記処理装置は、前記不完全な索引の完成度合いと前記不完全な索引を使用して前記データ部をアクセスするのに要するコストとを算出し、該算出した前記完成度合いと前記コストとに基づいて前記不完全な索引を選択する指標値を算出し、該算出した指標値が閾値より優れていない場合には前記不完全な索引を使用した前記問合せの処理は行わない
付記1乃至3の何れかに記載の計算機システム。
[付記6]
前記索引部は、完全な索引である旧索引を記憶し、
前記不完全な索引は、前記旧索引に代えて使用するために再構築中の新索引であり、
前記処理装置は、前記不完全な索引を使用した前記問合せの処理を行わない場合、前記旧索引を使用して前記問合せを処理し、前記問合せに対する応答を前記クライアントに送信する
付記1乃至5の何れかに記載の計算機システム。
[付記7]
前記処理装置は、前記データ部に記憶された前記データを順に参照して、前記新索引をより完成度の高い索引へと更新し、前記新索引を完全な索引に更新し終えたときに、前記旧索引を無効にする
付記6に記載の計算機システム。
[付記8]
前記旧索引と前記新索引とは同じ識別名を有し、
前記データベースは、前記識別名に対応付けて、前記旧索引に関する情報と前記新索引に関する情報とを記憶する索引情報を有し、
前記処理装置は、前記問合せに対する有効な索引があるか否か、前記新索引に対応する前記旧索引が有効か否かを前記索引情報を参照して決定する
付記6または7に記載の計算機システム。
[付記9]
前記データベースは、キーバリューストアである
付記1乃至8の何れかに記載の計算機システム。
[付記10]
前記予め定められた種別は、集計関数MAX(最大値)、MIN(最小値)、AVG(平均値)のうちの何れかである
付記2に記載の計算機システム。
[付記11]
前記処理装置は、前記不完全な索引の完成度合いの算出では、前記不完全な索引に登録済みの前記データの件数、または前記データ部に記憶される前記データの件数に対する前記不完全な索引に登録済みの前記データの件数の割合を用いる
付記4または5に記載の計算機システム。
[付記12]
前記処理装置は、前記不完全な索引の完成度合いの算出では、前記データ部が複数のサブデータ部から構成されている場合、前記複数のサブデータ部のうち、全データが前記不完全な索引に登録されている前記サブデータ部の数、または前記サブデータ部の総数に対する全データが前記不完全な索引に登録されている前記サブデータ部の数の割合を用いる
付記4または5に記載の計算機システム。
[付記13]
前記処理装置は、前記コストの算出では、前記不完全な索引がツリー構造を有する索引の場合には前記ツリー構造の高さを用いる
付記5に記載の計算機システム。
[付記14]
前記処理装置は、前記不完全は索引が前記索引部に記憶されている旧索引に代えて使用するために再構築中の新索引である場合、前記旧索引の完成度合いと前記旧索引を使用して前記データ部をアクセスするのに要するコストとを算出し、該算出した前記完成度合いと前記コストとに基づいて前記旧索引を選択する指標値を算出し、該算出した指標値を前記閾値とする
付記5に記載の計算機システム。
[付記15]
データを記憶するデータ部と前記データの不完全な索引を記憶する索引部とを有するデータベースと、処理装置とを有する計算機システムが実行する問合せ処理方法であって、
前記処理装置が、クライアントからの問合せを受信し、前記不完全な索引を使用して前記問合せを処理し、前記問合せに対する応答を前記クライアントに送信する
問合せ処理方法。
[付記16]
前記処理装置は、前記問合せの種別を判定し、該判定した種別が予め定められた種別でない場合には前記不完全な索引を使用した前記問合せの処理は行わない
付記15に記載の問合せ処理方法。
[付記17]
前記処理装置は、前記問合せに含まれるユーザ指定情報を解析し、前記不完全な索引の使用が前記ユーザ指定情報において許容されていない場合には前記不完全な索引を使用した前記問合せの処理は行わない
付記15または16に記載の問合せ処理方法。
[付記18]
前記処理装置は、前記不完全な索引の完成度合いを算出し、該算出した完成度合いが閾値を超えない場合には前記不完全な索引を使用した前記問合せの処理は行わない
付記15乃至17の何れかに記載の問合せ処理方法。
[付記19]
前記処理装置は、前記不完全な索引の完成度合いと前記不完全な索引を使用して前記データ部をアクセスするのに要するコストとを算出し、該算出した前記完成度合いと前記コストとに基づいて前記不完全な索引を選択する指標値を算出し、該算出した指標値が閾値より優れていない場合には前記不完全な索引を使用した前記問合せの処理は行わない
付記15乃至17の何れかに記載の問合せ処理方法。
[付記20]
前記索引部は、完全な索引である旧索引を記憶し、
前記不完全な索引は、前記旧索引に代えて使用するために再構築中の新索引であり、
前記処理装置は、前記不完全な索引を使用した前記問合せの処理を行わない場合、前記旧索引を使用して前記問合せを処理し、前記問合せに対する応答を前記クライアントに送信する
付記15乃至19の何れかに記載の問合せ処理方法。
[付記21]
前記処理装置は、前記データ部に記憶された前記データを順に参照して、前記新索引をより完成度の高い索引へと更新し、前記新索引を完全な索引に更新し終えたときに、前記旧索引を無効にする
付記20に記載の問合せ処理方法。
[付記22]
前記旧索引と前記新索引とは同じ識別名を有し、
前記データベースは、前記識別名に対応付けて、前記旧索引に関する情報と前記新索引に関する情報とを記憶する索引情報を有し、
前記処理装置は、前記問合せに対する有効な索引があるか否か、前記新索引に対応する前記旧索引が有効か否かを前記索引情報を参照して決定する
付記20または21に記載の問合せ処理方法。
[付記23]
前記データベースは、キーバリューストアである
付記15乃至22の何れかに記載の問合せ処理方法。
[付記24]
前記予め定められた種別は、集計関数MAX(最大値)、MIN(最小値)、AVG(平均値)のうちの何れかである
付記16に記載の問合せ処理方法。
[付記25]
前記処理装置は、前記不完全な索引の完成度合いの算出では、前記不完全な索引に登録済みの前記データの件数、または前記データ部に記憶される前記データの件数に対する前記不完全な索引に登録済みの前記データの件数の割合を用いる
付記18または19に記載の問合せ処理方法。
[付記26]
前記処理装置は、前記不完全な索引の完成度合いの算出では、前記データ部が複数のサブデータ部から構成されている場合、前記複数のサブデータ部のうち、全データが前記不完全な索引に登録されている前記サブデータ部の数、または前記サブデータ部の総数に対する全データが前記不完全な索引に登録されている前記サブデータ部の数の割合を用いる
付記18または19に記載の問合せ処理方法。
[付記27]
前記処理装置は、前記コストの算出では、前記不完全な索引がツリー構造を有する索引の場合には前記ツリー構造の高さを用いる
付記19に記載の問合せ処理方法。
[付記28]
前記処理装置は、前記不完全は索引が前記索引部に記憶されている旧索引に代えて使用するために再構築中の新索引である場合、前記旧索引の完成度合いと前記旧索引を使用して前記データ部をアクセスするのに要するコストとを算出し、該算出した前記完成度合いと前記コストとに基づいて前記旧索引を選択する指標値を算出し、該算出した指標値を前記閾値とする
付記19に記載の問合せ処理方法。
[付記29]
データを記憶するデータ部と前記データの不完全な索引を記憶する索引部とを有するデータベースに接続されたプロセッサに、
クライアントからの問合せを受信するステップと、
前記不完全な索引を使用して前記問合せを処理するステップと、
前記問合せに対する応答を前記クライアントに送信するステップと
を行わせるためのプログラム。
100…計算機システム
110…データベース
111…データ部
112…索引部
120…処理装置
130…クライアント
1111…データ
1121…索引(不完全)

Claims (18)

  1. 計算機システムであって、
    データを記憶するデータ部と前記データの不完全な索引を記憶する索引部とを有するデータベースと、
    クライアントからの問合せを受信し、前記不完全な索引を使用して前記問合せを処理し、前記問合せに対する応答を前記クライアントに送信する処理装置と
    を有し、
    前記処理装置は、前記不完全な索引の完成度合いを算出し、該算出した完成度合いが閾値を超えない場合には前記不完全な索引を使用した前記問合せの処理は行わない
    計算機システム。
  2. 計算機システムであって、
    データを記憶するデータ部と前記データの不完全な索引を記憶する索引部とを有するデータベースと、
    クライアントからの問合せを受信し、前記不完全な索引を使用して前記問合せを処理し、前記問合せに対する応答を前記クライアントに送信する処理装置と
    を有し、
    前記処理装置は、前記不完全な索引の完成度合いと前記不完全な索引を使用して前記データ部をアクセスするのに要するコストとを算出し、該算出した前記完成度合いと前記コストとに基づいて前記不完全な索引を選択する指標値を算出し、該算出した指標値が閾値より優れていない場合には前記不完全な索引を使用した前記問合せの処理は行わない
    計算機システム。
  3. 前記処理装置は、前記問合せの種別を判定し、該判定した種別が予め定められた種別でない場合には前記不完全な索引を使用した前記問合せの処理は行わない
    請求項1または2に記載の計算機システム。
  4. 前記処理装置は、前記問合せに含まれるユーザ指定情報を解析し、前記不完全な索引の使用が前記ユーザ指定情報において許容されていない場合には前記不完全な索引を使用した前記問合せの処理は行わない
    請求項1乃至3の何れかに記載の計算機システム。
  5. 前記索引部は、完全な索引である旧索引を記憶し、
    前記不完全な索引は、前記旧索引に代えて使用するために再構築中の新索引であり、
    前記処理装置は、前記不完全な索引を使用した前記問合せの処理を行わない場合、前記旧索引を使用して前記問合せを処理し、前記問合せに対する応答を前記クライアントに送信する
    請求項1乃至4の何れかに記載の計算機システム。
  6. 前記処理装置は、前記データ部に記憶された前記データを順に参照して、前記新索引をより完成度の高い索引へと更新し、前記新索引を完全な索引に更新し終えたときに、前記旧索引を無効にする
    請求項に記載の計算機システム。
  7. 前記旧索引と前記新索引とは同じ識別名を有し、
    前記データベースは、前記識別名に対応付けて、前記旧索引に関する情報と前記新索引に関する情報とを記憶する索引情報を有し、
    前記処理装置は、前記問合せに対する有効な索引があるか否か、前記新索引に対応する前記旧索引が有効か否かを前記索引情報を参照して決定する
    請求項5または6に記載の計算機システム。
  8. 前記データベースは、キーバリューストアである
    請求項1乃至7の何れかに記載の計算機システム。
  9. 前記予め定められた種別は、集計関数MAX(最大値)、MIN(最小値)、AVG(平均値)のうちの何れかである
    請求項に記載の計算機システム。
  10. 前記処理装置は、前記不完全な索引の完成度合いの算出では、前記不完全な索引に登録済みの前記データの件数、または前記データ部に記憶される前記データの件数に対する前記不完全な索引に登録済みの前記データの件数の割合を用いる
    請求項1または2に記載の計算機システム。
  11. 前記処理装置は、前記不完全な索引の完成度合いの算出では、前記データ部が複数のサブデータ部から構成されている場合、前記複数のサブデータ部のうち、全データが前記不完全な索引に登録されている前記サブデータ部の数、または前記サブデータ部の総数に対する全データが前記不完全な索引に登録されている前記サブデータ部の数の割合を用いる
    請求項1または2に記載の計算機システム。
  12. 前記処理装置は、前記コストの算出では、前記不完全な索引がツリー構造を有する索引の場合には前記ツリー構造の高さを用いる
    請求項に記載の計算機システム。
  13. 前記処理装置は、前記不完全は索引が前記索引部に記憶されている旧索引に代えて使用するために再構築中の新索引である場合、前記旧索引の完成度合いと前記旧索引を使用して前記データ部をアクセスするのに要するコストとを算出し、該算出した前記完成度合いと前記コストとに基づいて前記旧索引を選択する指標値を算出し、該算出した指標値を前記閾値とする
    請求項に記載の計算機システム。
  14. データを記憶するデータ部と前記データの不完全な索引を記憶する索引部とを有するデータベースと、処理装置とを有する計算機システムが実行する問合せ処理方法であって、
    前記処理装置が、クライアントからの問合せを受信し、前記不完全な索引を使用して前記問合せを処理し、前記問合せに対する応答を前記クライアントに送信し、
    前記問合せの処理では、前記不完全な索引の完成度合いを算出し、該算出した完成度合いが閾値を超えない場合には前記不完全な索引を使用した前記問合せの処理は行わない問合せ処理方法。
  15. データを記憶するデータ部と前記データの不完全な索引を記憶する索引部とを有するデータベースと、処理装置とを有する計算機システムが実行する問合せ処理方法であって、
    前記処理装置が、クライアントからの問合せを受信し、前記不完全な索引を使用して前記問合せを処理し、前記問合せに対する応答を前記クライアントに送信し、
    前記問合せ処理では、前記不完全な索引の完成度合いと前記不完全な索引を使用して前記データ部をアクセスするのに要するコストとを算出し、該算出した前記完成度合いと前記コストとに基づいて前記不完全な索引を選択する指標値を算出し、該算出した指標値が閾値より優れていない場合には前記不完全な索引を使用した前記問合せの処理は行わない
    問合せ処理方法。
  16. データを記憶するデータ部と前記データの不完全な索引を記憶する索引部とを有するデータベースに接続されたプロセッサに、
    クライアントからの問合せを受信するステップと、
    前記不完全な索引を使用して前記問合せを処理するステップと、
    前記問合せに対する応答を前記クライアントに送信するステップと
    を行わせるためのプログラムであって、
    前記問合せを処理するステップでは、前記不完全な索引の完成度合いを算出し、該算出した完成度合いが閾値を超えない場合には前記不完全な索引を使用した前記問合せの処理は行わない
    プログラム
  17. データを記憶するデータ部と前記データの不完全な索引を記憶する索引部とを有するデータベースに接続されたプロセッサに、
    クライアントからの問合せを受信するステップと、
    前記不完全な索引を使用して前記問合せを処理するステップと、
    前記問合せに対する応答を前記クライアントに送信するステップと
    を行わせるためのプログラムであって、
    前記問合せを処理するステップでは、前記不完全な索引の完成度合いと前記不完全な索引を使用して前記データ部をアクセスするのに要するコストとを算出し、該算出した前記完成度合いと前記コストとに基づいて前記不完全な索引を選択する指標値を算出し、該算出した指標値が閾値より優れていない場合には前記不完全な索引を使用した前記問合せの処理は行わない
    プログラム。
  18. 計算機システムであって、
    データを記憶するデータ部と前記データの不完全な索引を記憶する索引部とを有するデータベースと、
    クライアントからの問合せを受信し、前記不完全な索引を使用して前記問合せを処理し、前記問合せに対する応答を前記クライアントに送信する処理装置とを有し、
    前記処理装置は、前記問合せの種別を判定し、該判定した種別が、集計関数MAX(最大値)、MIN(最小値)、AVG(平均値)のうちの何れかである場合に限って、前記不完全な索引を使用した前記問合せの処理を行う
    計算機システム。
JP2015505254A 2013-03-15 2014-02-19 計算機システム Active JP6103037B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2013053392 2013-03-15
JP2013053392 2013-03-15
PCT/JP2014/000843 WO2014141594A1 (ja) 2013-03-15 2014-02-19 計算機システム

Publications (2)

Publication Number Publication Date
JPWO2014141594A1 JPWO2014141594A1 (ja) 2017-02-16
JP6103037B2 true JP6103037B2 (ja) 2017-03-29

Family

ID=51536278

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015505254A Active JP6103037B2 (ja) 2013-03-15 2014-02-19 計算機システム

Country Status (3)

Country Link
US (1) US10146818B2 (ja)
JP (1) JP6103037B2 (ja)
WO (1) WO2014141594A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107977396B (zh) * 2014-11-12 2021-07-20 华为技术有限公司 一种KeyValue数据库的数据表的更新方法与表数据更新装置
JP6268116B2 (ja) * 2015-03-20 2018-01-24 東芝メモリ株式会社 データ処理装置、データ処理方法およびコンピュータプログラム
US20170060941A1 (en) * 2015-08-25 2017-03-02 Futurewei Technologies, Inc. Systems and Methods for Searching Heterogeneous Indexes of Metadata and Tags in File Systems
US11023439B2 (en) * 2016-09-01 2021-06-01 Morphick, Inc. Variable cardinality index and data retrieval
US10706106B2 (en) * 2017-02-09 2020-07-07 Micron Technology, Inc. Merge tree modifications for maintenance operations
US11068460B2 (en) * 2018-08-06 2021-07-20 Oracle International Corporation Automated real-time index management
US11817183B2 (en) * 2018-09-11 2023-11-14 Koninklijke Philips N.V. Phenotype analysis system and method
US11100071B2 (en) 2018-10-10 2021-08-24 Micron Technology, Inc. Key-value store tree data block spill with compaction
US10915546B2 (en) 2018-10-10 2021-02-09 Micron Technology, Inc. Counter-based compaction of key-value store tree data block
US11048755B2 (en) 2018-12-14 2021-06-29 Micron Technology, Inc. Key-value store tree with selective use of key portion
US10852978B2 (en) 2018-12-14 2020-12-01 Micron Technology, Inc. Key-value store using journaling with selective data storage format
US10936661B2 (en) 2018-12-26 2021-03-02 Micron Technology, Inc. Data tree with order-based node traversal
JP7193721B2 (ja) * 2019-01-31 2022-12-21 富士通株式会社 情報処理装置およびデータベース検索プログラム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0444358B1 (en) * 1990-02-27 1998-08-19 Oracle Corporation Dynamic optimization of a single relation access
JPH0594475A (ja) 1991-10-03 1993-04-16 Hokkaido Nippon Denki Software Kk 索引生成方式
JPH09305619A (ja) * 1996-05-10 1997-11-28 Toshiba Corp 階層インデックス検索装置、及び文書検索方法
US6366904B1 (en) * 1997-11-28 2002-04-02 International Business Machines Corporation Machine-implementable method and apparatus for iteratively extending the results obtained from an initial query in a database
JP2006227715A (ja) * 2005-02-15 2006-08-31 Matsushita Electric Ind Co Ltd 索引サーバ、情報端末、および分散型データベースシステム
KR100905434B1 (ko) * 2008-08-08 2009-07-02 (주)이스트소프트 실시간 색인 정보 추출 기능을 갖는 파일 업로드 방법 및 이를 이용한 웹 스토리지 시스템
US8380701B1 (en) * 2011-09-02 2013-02-19 International Business Machines Corporation Using a partially built index in a computer database system

Also Published As

Publication number Publication date
US20160026666A1 (en) 2016-01-28
JPWO2014141594A1 (ja) 2017-02-16
WO2014141594A1 (ja) 2014-09-18
US10146818B2 (en) 2018-12-04

Similar Documents

Publication Publication Date Title
JP6103037B2 (ja) 計算機システム
US11288282B2 (en) Distributed database systems and methods with pluggable storage engines
US11550769B2 (en) Data processing method, apparatus, and system
US9953054B2 (en) Systems and methods for implementing and maintaining sampled tables in a database system
EP3047398B1 (en) Combined row and columnar storage for in-memory databases for oltp and analytics workloads
US10331641B2 (en) Hash database configuration method and apparatus
US9020916B2 (en) Database server apparatus, method for updating database, and recording medium for database update program
US10769126B1 (en) Data entropy reduction across stream shard
US9934324B2 (en) Index structure to accelerate graph traversal
US8825700B2 (en) Paging hierarchical data
WO2020005808A1 (en) Multi-table partitions in a key-value database
US9928178B1 (en) Memory-efficient management of computer network resources
EP4097602A1 (en) Streams on shared database objects
US11216421B2 (en) Extensible streams for operations on external systems
US20220342888A1 (en) Object tagging
CN115918110A (zh) 使用键值存储库的空间搜索
US20230214391A1 (en) Metadata search via n-gram index
Gedik et al. Disk-based management of interaction graphs
Aksu et al. Multi-resolution social network community identification and maintenance on big data platform
JP5673224B2 (ja) 情報管理装置、情報管理方法、及びプログラム
CN116595025B (zh) 矢量瓦片的动态更新方法、终端和介质
JP2018041174A (ja) データベース管理装置、データベース管理方法、及びプログラム
US11803568B1 (en) Replicating changes from a database to a destination and modifying replication capacity
CN114647630A (zh) 文件同步、信息生成方法、装置、计算机设备和存储介质
Luo et al. HMIBase: An Hierarchical Indexing System for Storing and Querying Big Data

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161101

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161212

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170213

R150 Certificate of patent or registration of utility model

Ref document number: 6103037

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150