JP2016095561A - Control device, distributed database system, method, and program - Google Patents
Control device, distributed database system, method, and program Download PDFInfo
- Publication number
- JP2016095561A JP2016095561A JP2014229618A JP2014229618A JP2016095561A JP 2016095561 A JP2016095561 A JP 2016095561A JP 2014229618 A JP2014229618 A JP 2014229618A JP 2014229618 A JP2014229618 A JP 2014229618A JP 2016095561 A JP2016095561 A JP 2016095561A
- Authority
- JP
- Japan
- Prior art keywords
- query
- processing cost
- data group
- target data
- column
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
本発明は、分散データベースシステム、データの分割配置(partition)を制御する制御装置、分割配置制御方法および分割配置制御用プログラムに関する。 The present invention relates to a distributed database system, a control device that controls data partitioning, a partition placement control method, and a partition placement control program.
機械学習等を用いて大量のデータを分析する分析処理の前処理として、分析対象のデータ群に対して抽出、集約、整形などを行い、分析処理が処理しやすい形(例えば、行列、計画行列、属性データ付の任意のデータ型等)に整える作業を行う場合がある。このような作業は、一般に属性生成処理(feature engineering)と呼ばれる。 As preprocessing of analysis processing that analyzes a large amount of data using machine learning, etc., the data group to be analyzed is extracted, aggregated, shaped, etc., so that the analysis processing is easy to process (for example, matrix, planning matrix) , Any data type with attribute data, etc.) may be performed. Such work is generally referred to as attribute generation processing (feature engineering).
属性生成処理はデータベースシステムを利用して行われることが多い。データベースシステムを利用する場合、例えば、ユーザまたは属性生成処理を行う手段は、分析対象とされるデータ群を元データとしてデータベースシステムの記憶領域に格納させた上で、該データベースシステムに対してSQLといった一般にクエリと呼ばれる問い合わせ言語を発行して、所望のデータ操作を行う。元データが膨大である場合には、分散データベースシステムが利用される。 The attribute generation process is often performed using a database system. When using the database system, for example, the user or the means for performing attribute generation processing stores the data group to be analyzed as original data in the storage area of the database system, and then executes SQL for the database system. A query language generally called a query is issued to perform desired data manipulation. When the original data is enormous, a distributed database system is used.
分散データベースシステムは、データ群を細かいデータブロックに分割して複数のデータノードに格納する、いわゆる分割配置(partition)を行って、分割配置したデータブロックの各々に対して並列にクエリに基づくデータ操作を行うシステムである。分散データベースシステムに実装されるデータ操作用のオープンソースソフトウェアとして、Hive、Impala、Prestoなどが広く知られている。 A distributed database system divides a data group into fine data blocks and stores them in a plurality of data nodes, so-called partitioning (partition), and data operation based on a query in parallel for each of the partitioned data blocks It is a system that performs. As open source software for data manipulation implemented in a distributed database system, Hive, Impala, Presto, and the like are widely known.
属性生成処理では、分析処理が処理しやすいデータの形を得るために、一度に大量のクエリが発行される。そのため、属性生成処理は、分析タスクの中でも時間のかかりやすい処理といえる。分析タスク全体の効率化を図るためには、属性生成処理の効率化が求められている。 In the attribute generation process, a large number of queries are issued at a time in order to obtain a form of data that can be easily processed by the analysis process. Therefore, it can be said that the attribute generation process is a time-consuming process in the analysis task. In order to improve the efficiency of the entire analysis task, it is required to improve the efficiency of attribute generation processing.
分散データベースシステムにおけるデータ操作の効率化に関する技術として、分割配置したデータブロックごとに、メタ情報を付与する技術がある。 As a technique for improving the efficiency of data operation in a distributed database system, there is a technique for adding meta information to each divided data block.
Hiveがサポートするデータフォーマットの1つであるORCFileを例に用いて、該技術の一例を挙げる。ORCfileでは、Hiveが扱うレコード群(元データ)を複数のレコード(行データ)からなるグループに分割したものをデータブロックとして保持する。すなわち、ORCfileにおいて、各データブロックには複数のレコードが格納されている。そして、各データブロックは、当該データブロック内での、各列に対するレコードの最大値、最小値、和、カウント値等の統計情報をメタデータとして保持する。以下、このような分割配置されたデータブロックに対して付与される、データブロック内のデータの統計量を示すメタデータを、ブロック統計情報と呼ぶ場合がある。 An example of this technique will be described using ORCFFile, which is one of the data formats supported by Hive, as an example. In the ORC file, a record group (original data) handled by Hive is divided into a group composed of a plurality of records (row data) and held as a data block. That is, in the ORC file, a plurality of records are stored in each data block. Each data block holds statistical information such as the maximum value, the minimum value, the sum, and the count value of the records for each column in the data block as metadata. Hereinafter, the metadata indicating the statistical amount of data in the data block, which is given to the data blocks arranged in a divided manner, may be referred to as block statistical information.
ブロック統計情報は、ある種のデータ操作を行うときに効率性を発揮する。例えば、次のようなクエリを考える。 Block statistics information is efficient when performing certain types of data operations. For example, consider the following query:
クエリ例1:
select * from Table1 where attribute01 <= 100;
Query example 1:
select * from Table1 where attribute01 <= 100;
クエリ例1は、“Table1”というテーブルから、“attribute01”という列(属性)名の列の値が100以下であるレコードをすべて取得するというデータ操作を行わせるためのクエリである。なお、テーブルは、データベース表やリレーションモデルオブジェクトとも呼ばれる。 Query example 1 is a query for performing a data operation of acquiring all records having a column (attribute) name column value “attribute01” of 100 or less from a table “Table1”. The table is also called a database table or a relationship model object.
Hiveを利用した分散データベースシステムは、このようなクエリを受け取ると、まずクエリ内の述語“attribute01 <= 100”で示される条件を基に、各データブロックのブロック統計情報を参照して、列“attribute01”の最小値を確認する。ここで、述語(predicate)は、述語論理における述語であり、クエリ内においては、例えば、where句などに指定される論理式の部分に相当する。クエリに用いられる述語のうち分割配置の仕方によって処理コストに変化が生じるものとしては、選択述語と結合述語とがある。上記のクエリ例1に用いられている述語は、選択述語である。 When the distributed database system using Hive receives such a query, first, based on the condition indicated by the predicate “attribute01 <= 100” in the query, the block statistical information of each data block is referred to, and the column “ Check the minimum value of “attribute01”. Here, the predicate is a predicate in the predicate logic, and corresponds to, for example, a part of a logical expression specified in the where clause in the query. Among the predicates used in a query, there are a selection predicate and a join predicate that cause a change in processing cost depending on the way of divided arrangement. The predicate used in the above query example 1 is a selection predicate.
今、仮に、あるデータブロックのブロック統計情報が示す“attribute01”列の最小値が110であるとする。その場合、当該データブロックの中には、“attribute01”列の値が110以上のレコードしか存在しない。したがって、そのようなデータブロックは、クエリ例1の処理で読み込む必要がない。 Now, suppose that the minimum value of the “attribute01” column indicated by the block statistical information of a certain data block is 110. In that case, only the record whose value of the “attribute01” column is 110 or more exists in the data block. Therefore, such a data block does not need to be read in the process of the query example 1.
Hiveを利用した分散データベースシステムでは、データフォーマットにORCFileを用いている場合、まず、発行されたクエリ内の述語を基に、各データブロックのブロック統計情報を参照する。そして、該分散データベースシステムは、述語にマッチするレコード、より具体的には述語が示す論理式を満たすレコードがデータブロック内に存在しないことがわかると、当該データブロックの読み込みを回避する。このようにして、記憶領域に対するI/O(Input/Output)の発生を抑え、より高速なデータ操作を実現している。 In the distributed database system using Hive, when ORFFile is used as the data format, first, block statistical information of each data block is referred to based on the predicate in the issued query. Then, when it is found that there is no record in the data block that matches the predicate, more specifically, a record that satisfies the logical expression indicated by the predicate, the distributed database system avoids reading the data block. In this way, the generation of I / O (Input / Output) for the storage area is suppressed, and higher-speed data operation is realized.
分散データベースシステムにおけるデータの分割配置に関する技術として、例えば、非特許文献1に記載された技術がある。非特許文献1には、データベースシステムが、追加データを格納する際に、既に格納されているデータに対して過去に発行されたクエリの履歴に基づいて、追加データをどのように分割配置するかを決定するデータ分割配置方法が記載されている。具体的には、データベースシステムが、クエリの履歴から、過去発行されたクエリに頻出する選択述語の集合を抽出して、抽出された選択述語集合に含まれるいずれか1つ以上の選択述語にマッチしない行を同一グループに選り分ける。このような分割配置を行うことで、ある1つ以上の選択述語にマッチにしないグループに相当するデータブロックを、該当する選択述語のいずれかを含むクエリが発行されたときに読み飛ばせるようにし、記憶領域に対する不要なI/Oの削減によるデータ操作の効率化を図る。
As a technique related to the divided arrangement of data in the distributed database system, for example, there is a technique described in
また、特許文献1には、分散型のデータベース装置が、指定されたタイミング毎に、アクセス履歴から算出した複数の分割テーブルそれぞれに対するアクセス頻度およびレコードのヒット率に基づいて、複数のテーブル領域のそれぞれに格納されるべき分割テーブルの配置を変更することが記載されている。
Also, in
また、特許文献2には、クエリが発行された段階で、そのクエリを処理するトランザクションが、現在のブロック内のソート状態における次元の順序と問い合わせ結果の出力順序とが一致していない場合に、ブロック内をソートすることが記載されている。
Further, in
また、特許文献3には、クエリを、選択演算や結合演算などの関係代数を接点とするタスクで構成された処理ツリーに変換し、変換した処理ツリーから、関係代数を他の関係代数の結果に依存しないで実施できるタスク群を取り出して、データベースへのアクセス領域ごとにグループ分けすることが記載されている。また、特許文献3には、グループ分けされたタスクに対してマルチプロセッション・プロセッシングを行う際に、処理コストの小さい順にタスクの処理を行うことや、共通のブロックへのアクセスを一度に行うことなどが記載されている。
ブロック統計情報により不要なI/Oを抑制する効果を得るためには、データブロックが適切に分割配置されていなければならない。すなわち、分散データベースシステムにおけるデータ操作の効率化には、元のデータが不要なI/Oを抑制できるようなデータブロックに分割されていることが重要である。 In order to obtain the effect of suppressing unnecessary I / O by the block statistical information, the data block must be appropriately divided and arranged. That is, in order to improve the efficiency of data operation in the distributed database system, it is important that the original data is divided into data blocks that can suppress unnecessary I / O.
例えば、クエリ例1のような“attribute01”列に関する述語を含むクエリが頻繁に発行されることが事前に分かる場合、 “Table1”の各レコードを“attribute01”列の値に基づいて分割配置することにより、効果的に記憶領域に対する不要なI/Oを抑制できる。 For example, if it is known in advance that a query including a predicate related to the “attribute01” column as in Query Example 1 is frequently issued, each record of “Table1” is divided and arranged based on the value of the “attribute01” column Thus, unnecessary I / O to the storage area can be effectively suppressed.
しかし、分析者が試行錯誤を行いながら分析処理を行うような分析タスクでは、属性生成処理で生成したい属性もその都度異なってくる。このため、属性生成処理で発行されるクエリに使用される列の傾向を事前につかむことは難しい。 However, in an analysis task in which an analyst performs an analysis process while performing trial and error, attributes to be generated in the attribute generation process are also different each time. For this reason, it is difficult to grasp in advance the tendency of the columns used in the query issued in the attribute generation process.
例えば、特許文献1に記載された方法のように、過去のアクセス履歴からであれば、アクセス頻度が高いにも関わらずヒット率が低い分割テーブルを、さらに2以上の分割テーブルに分割することは可能である。しかし、新規に発行されたクエリセットがアクセス履歴に追従しない場合には、そのようなアクセス頻度やヒット率に基づく方法では、データ操作の効率化は図れない。
For example, as in the method described in
すなわち、アクセス履歴により示されるアクセス頻度やレコードのヒット率は、似た傾向のクエリが発行されるデータベースシステムにおいて定期的に行われるデータの分割配置の見直しにおけるデータの分割時の基準として適していたとしても、新規のクエリ集合に対して、その実行前にデータの再分割配置の是非を問うための判定基準としては適さない。 In other words, the access frequency and record hit rate indicated by the access history were suitable as the criteria for data division in the review of the data division arrangement periodically performed in database systems that issue queries with similar trends. However, it is not suitable as a criterion for asking whether or not to re-divide data before executing a new query set.
なお、非特許文献1に記載された方法のように、クエリ内の述語の頻度に基づいてパーティションキーを設定する方法であれば、新規のクエリ集合に対しても適用できるかもしれない。
Note that, as in the method described in Non-Patent
しかし、非特許文献1に記載された方法には、次のような問題がある。第一に、非特許文献1に記載された方法は、クエリ集合における述語の頻度のみを考慮しており、述語そのものがデータ操作に与える処理コストを考慮していない。このため、処理コストが小さく、問題にならないような述語が頻繁にクエリ履歴内に現れた場合に、真に処理コストのボトルネックとなっている述語が無視される可能性がある。真に処理コストのボトルネッックとなっている述語が無視された場合、効率化効果が見込めない場合がある。
However, the method described in
第二に、非特許文献1に記載された方法は、選択述語のみを考慮しており、結合述語を無視している。結合述語は、複数のテーブル間の結合(join)演算を要する述語である。選択述語は、複数のテーブル間の結合演算を要せず、1つのテーブルから条件にマッチする行を抽出する選択(selection)演算を要する述語である。
Secondly, the method described in
クエリ例2:
select * from T,R where T.name=R.name ∧ T.age>30;
Query example 2:
select * from T, R where T.name = R.name ∧ T.age>30;
例えば、上記のクエリ例2には、“T.name = R.name”という結合述語と、“T.age > 30”という選択述語の2つの述語の論理積が用いられている。なお、論理積であるので、“T.name=R.name ∧ T.age>30”をまとめて1つの結合述語とみなしてもよい。 For example, in the above query example 2, a logical product of two predicates of a join predicate “T.name = R.name” and a selection predicate “T.age> 30” is used. Since it is a logical product, “T.name = R.name∧T.age> 30” may be collectively regarded as one join predicate.
結合演算には計算量の異なるアルゴリズムがいくつか存在し、例えば、上記のクエリ例2の場合、要する演算は選択演算と結合演算の組み合わせとなるが、事前にデータが適切にソートされて分割配置されている方が、結合演算で効率のいいアルゴリズムを選択できる。 There are several algorithms with different computational complexity in the join operation. For example, in the case of the above query example 2, the required operation is a combination of the selection operation and the join operation, but the data is appropriately sorted in advance and divided. The more efficient algorithm can be selected in the join operation.
しかし、非特許文献1に記載された方法は、結合述語については何ら開示されておらず、選択述語のみを対象にしているため、結合述語が用いられた場合に適切な分割配置を行うことができない。一般に、選択演算よりも結合演算の処理コストの方が大きくなる傾向があるため、選択述語のみを対象にしている非特許文献1に記載された方法では、処理効率化の大きな機会損失が生じている。
However, the method described in
第三に、非特許文献1に記載された方法は、新しく追加されたデータに対して、初めて分割配置を行うことを想定しており、既にデータベース内に存在するデータに対して、適切な基準を与えてデータの分割配置をやり直すことを想定していない。属性生成処理では、一度に大量のクエリが発行されることが多い。そのような大量のクエリを一連の処理要求であるクエリセットとして見た場合、当該クエリセットの実行には多くの時間が掛かる。このため、大量のクエリを含むクエリセットを受け付けた場合には、その実行前に当該クエリセットに対応した適切な基準でデータの分割配置をやり直したほうが、総実行時間の短縮が可能な場合がある。しかし、データの分割配置をやり直すことで余計に時間が掛かる場合も当然あるため、データの分割配置を行うかどうかを判断する仕組みが必要だが、非特許文献1にはそのような仕組みについては何ら考慮されていない。一般に、データの分割配置をやり直す処理、すなわちデータが複数のデータノードに分割されて配置されている状態でそれとは異なる分割方法を用いてデータを分割して配置しなおす処理は、データの再分割配置(re-partition)と呼ばれる。
Thirdly, the method described in
なお、特許文献2に記載された方法は、ブロックごとに当該ブロック内のソート状態を示す情報を保持しておくことにより、各ブロックに対して同じソート処理が繰り返されるのを防ごうというものであって、データ全体の分割配置の最適化については何ら考慮されていない。
Note that the method described in
また、特許文献3に記載された方法は、クエリ内の演算処理に対応するタスクを、アクセス先のデータ領域ごとにグループ化して処理の効率化を図ろうというものであって、データの分割配置の最適化については何ら考慮されていない。
In addition, the method described in
そこで、本発明は、属性生成処理のような複数のクエリや述語の演算に時間のかかるクエリの発行を伴うワークロードの総処理時間を縮小できる制御装置、分散データベースシステム、分割配置制御方法および分散配置制御用プログラムを提供することを目的とする。 Therefore, the present invention provides a control device, a distributed database system, a divided arrangement control method, and a distribution that can reduce the total processing time of a workload that involves issuing multiple queries such as attribute generation processing and queries that require time for predicate operations. An object is to provide a program for arrangement control.
本発明による制御装置は、複数のデータ格納手段に分割されて格納されている所定のデータ群である対象データ群に対する、1つ以上のクエリを含むクエリセットを受け付けるクエリセット受付手段と、対象データ群のメタデータに基づいて、対象データ群を再分割配置せずにクエリセットを実行した場合の処理コストである第1の処理コストと、対象データ群を所定の方法で再分割配置した後にクエリセットを実行した場合の処理コストである第2の処理コストとを推定する処理コスト推定手段と、処理コスト推定手段による推定結果に基づいて、クエリセットを実行する前に、対象データ群を再分割配置するか否か、および再分割配置する場合にはどのような方法で再分割配置するかを判断する再分割配置判断手段とを備えたことを特徴とする。 A control device according to the present invention includes a query set receiving unit that receives a query set including one or more queries for a target data group that is a predetermined data group that is divided and stored in a plurality of data storage units, and target data Based on the group metadata, the first processing cost, which is the processing cost when the query set is executed without subdividing the target data group, and the query after subdividing the target data group by a predetermined method Based on the processing cost estimation means for estimating the second processing cost, which is the processing cost when the set is executed, and the estimation result by the processing cost estimation means, the target data group is subdivided before executing the query set Re-division arrangement determining means for determining whether or not to arrange, and in the case of sub-division arrangement, how to re-divide arrangement. To.
また、本発明による分散データベースシステムは、所定のデータ群を複数のデータブロックに分割して格納する複数のデータ格納手段と、所定のデータ群である対象データ群に対する、1つ以上のクエリを含むクエリセットを受け付けるクエリセット受付手段と、対象データ群のメタデータを記憶するメタデータ格納手段と、メタデータに基づいて、対象データ群を再分割配置せずにクエリセットを実行した場合の処理コストである第1の処理コストと、対象データ群を再分割配置した後でクエリセットを実行した場合の処理コストである第2の処理コストとを推定する処理コスト推定手段と、処理コスト推定手段による推定結果に基づいて、クエリセットを実行する前に、対象データ群を再分割配置するか否か、および再分割配置する場合にはどのような方法で再分割配置するかを判断する再分割配置判断手段と、再分割配置判断手段によって対象データ群を再分割配置すると判断された場合に、クエリセットを実行する前に、対象データ群の再分割配置を実行する再分割配置実行手段とを備えたことを特徴とする。 The distributed database system according to the present invention includes a plurality of data storage means for dividing a predetermined data group into a plurality of data blocks and storing the data, and one or more queries for the target data group that is the predetermined data group. Query set receiving means for receiving a query set, metadata storage means for storing metadata of the target data group, and processing cost when executing the query set without subdividing the target data group based on the metadata A processing cost estimation unit that estimates the first processing cost and the second processing cost that is the processing cost when the query set is executed after the target data group is subdivided and arranged, and the processing cost estimation unit Based on the estimation result, whether or not to subdivide the target data group and execute subdivision arrangement before executing the query set Is a subdivision arrangement determination unit that determines how to perform subdivision arrangement, and when the target data group is determined to be subdivision arrangement by the subdivision arrangement determination unit, before executing the query set, And a subdivision arrangement executing means for executing subdivision arrangement of the data group.
また、本発明によるデータ分割配置制御方法は、制御装置が、複数のデータ格納手段に分割されて格納されている所定のデータ群である対象データ群に対する、1つ以上のクエリを含むクエリセットを受け付け、制御装置が、クエリセットを実行する前に、対象データ群のメタデータに基づいて、対象データ群を再分割配置せずにクエリセットを実行した場合の処理コストと、対象データ群を所定の方法で再分割配置した後にクエリセットを実行した場合の処理コストとを推定し、制御装置が、クエリセットを実行する前に、推定結果に基づいて、クエリセットを実行する前に、対象データ群を再分割配置するか否か、および再分割配置する場合にはどのような方法で再分割配置するかを判断することを特徴とする。 Further, in the data division arrangement control method according to the present invention, the control device includes a query set including one or more queries for a target data group that is a predetermined data group that is divided and stored in a plurality of data storage means. Receiving and processing device when the control device executes the query set without subdividing the target data group based on the metadata of the target data group, and the target data group are determined in advance before executing the query set The processing cost is estimated when the query set is executed after subdivision placement by the above method, and before the controller executes the query set, the target data before executing the query set is executed based on the estimation result. It is characterized in that it is determined whether or not a group is to be subdivided and in what manner the group is to be subdivided.
また、本発明による分割配置制御用プログラムは、コンピュータに、複数のデータ格納手段に分割されて格納されている所定のデータ群である対象データ群に対する、1つ以上のクエリを含むクエリセットを受け付ける処理、対象データ群のメタデータに基づいて、対象データ群を再分割配置せずにクエリセットを実行した場合の処理コストと、対象データ群を所定の方法で再分割配置した後にクエリセットを実行した場合の処理コストとを推定する処理、およびクエリセットを実行する前に、推定結果に基づいて、対象データ群を再分割配置するか否か、再分割配置する場合にはどのような方法で再分割配置するかを判断する処理を実行させることを特徴とする。 In addition, the divided arrangement control program according to the present invention accepts a query set including one or more queries for a target data group, which is a predetermined data group that is divided and stored in a plurality of data storage means, in a computer. Based on the processing and metadata of the target data group, the processing cost when executing the query set without subdividing the target data group, and executing the query set after subdividing the target data group by a predetermined method Whether to re-divide the target data group based on the estimation result before executing the query set and the processing cost, and what method to re-divide It is characterized in that a process for determining whether to divide and arrange is executed.
本発明によれば、属性生成処理のようなクエリの発行を伴うワークロードの総処理時間を縮小できる。 According to the present invention, it is possible to reduce the total processing time of a workload that involves issuing a query such as attribute generation processing.
以下、本発明の実施形態を図面を参照して説明する。図1は、本発明の実施形態にかかる分散データベースシステムの構成例を示すブロック図である。 Hereinafter, embodiments of the present invention will be described with reference to the drawings. FIG. 1 is a block diagram showing a configuration example of a distributed database system according to an embodiment of the present invention.
図1に示す分散データベースシステムは、クエリセット受付手段11と、処理コスト推定手段12と、再分割配置判断手段13と、再分割配置実行手段14と、クエリ実行手段15と、複数のデータ格納手段21と、メタデータ格納手段22とを備える。図1において、各コンポーネントは、ネットワークやバス等を介して互いに通信可能に接続されている。
The distributed database system shown in FIG. 1 includes a query set receiving
データ格納手段21の各々は、クエリの処理対象とされるデータ群を分割したデータブロックを格納する。以下、クエリの処理対象とされるデータ群を、単に対象データ群という。 Each of the data storage means 21 stores a data block obtained by dividing a data group to be processed by a query. Hereinafter, a data group to be processed by a query is simply referred to as a target data group.
本実施形態において対象データ群は、1つ以上の列の各々に割り当てられる値を含む1つ以上の行データからなる表データである。本発明では、表データを、テーブルの実体という意味で用いている。また、対象データ群は、表データにおける1つ以上の任意の列の集合である列集合をパーティションキーとして、1つ以上の行データを各々有する複数のデータブロックに分割されて、データ格納手段21に格納される。対象データ群は、より具体的には、各行データに含まれるパーティションキーに指定された列集合の値に基づいて、複数のデータブロックに分割されてデータ格納手段21に格納される。なお、パーティションキーは、表データを分割する際の基準とされるキーである。また、分散データベースシステムは、各行データがどのデータブロックに所属するかを示す情報を保持している。 In the present embodiment, the target data group is table data composed of one or more row data including values assigned to each of one or more columns. In the present invention, the table data is used in the sense of a table entity. The target data group is divided into a plurality of data blocks each having one or more row data using a column set, which is a set of one or more arbitrary columns in the table data, as a partition key, and the data storage means 21 Stored in More specifically, the target data group is divided into a plurality of data blocks and stored in the data storage means 21 based on the value of the column set designated by the partition key included in each row data. The partition key is a key used as a reference when dividing table data. Further, the distributed database system holds information indicating to which data block each row data belongs.
メタデータ格納手段22は、対象データ群のメタデータを格納する。対象データ群のメタデータは、後述する処理コスト推定手段12がクエリセットの処理コストを算出できる情報を含んでいればよい。対象データ群のメタデータは、例えば、対象データ群のデータサイズ(行数、バイトサイズ等)、各データブロックのデータサイズ(行数、バイトサイズ等)といった基本的な情報だけでなく、データの各種カテゴリ(列や行やそれらの集合等)に関する統計量、特に、対象データ群の列ごとの値のカーディナリティ(cardinality)、選択率(selectivity)、ヒストグラムといった対象データ群の表データにおける列の値に関する統計量を含んでいてもよい。
The
本実施形態において、クエリセットの処理コストの計算方法は特に限定されないが、対象データ群のメタデータは、対象データ群とされる表データにおける列の値に関する統計量であって、列中の占有度合いや選択度合い(選択されやすさ又は選択されにくさ)に関する統計量を含むことが好ましい。 In this embodiment, the calculation method of the processing cost of the query set is not particularly limited, but the metadata of the target data group is a statistic regarding the value of the column in the table data set as the target data group, and the occupation in the column It is preferable to include a statistic regarding the degree and the degree of selection (ease of selection or difficulty of selection).
クエリセット受付手段11は、外部から対象データ群に対するクエリセットを受け付ける。クエリセットは、1つ以上のクエリを含んでいればよい。クエリセットの発行元は、例えば、一連の処理として実行させたい1つ以上のクエリをクエリセットとして入力すればよい。
The query
処理コスト推定手段12は、メタデータ格納手段22に記憶されている対象データ群のメタデータに基づいて、対象データ群を再分割配置せずにクエリセットを実行した場合の処理コストである第1の処理コストと、対象データ群を所定の方法で再分割配置した後にクエリセットを実行した場合の処理コストである第2の処理コストとを推定(算出)する。処理コスト推定手段12は、例えば、再分割配置判断手段13からの要求に応じて、第1の処理コストおよび第2の処理コストを推定してもよい。
The processing
本実施形態において、処理コストは、指定された処理を完了するまでにかかる時間である処理時間に関連する指標であって、処理コストを比較することによって処理時間の大小比較ができる指標であれば特に問わない。 In the present embodiment, the processing cost is an index related to the processing time, which is the time taken to complete the specified processing, and can be compared with the processing time by comparing the processing costs. It doesn't matter.
また、処理コスト推定手段12は、対象データ群のメタデータだけでなく、さらに各データ格納手段21を制御する計算機のディスクバンド幅や当該計算機間を接続するネットワークバンド幅といった分散データベースシステムの構成要素の処理性能に関する情報に基づいて、第1の処理コストおよび第2の処理コストを推定してもよい。なお、ここでは、バンド幅を、単位時間あたりのデータ転送容量という意味で用いている。 The processing cost estimation means 12 is not only the metadata of the target data group, but also the components of the distributed database system such as the disk bandwidth of the computer that controls each data storage means 21 and the network bandwidth that connects the computers. The first processing cost and the second processing cost may be estimated based on the information regarding the processing performance. Here, the bandwidth is used to mean the data transfer capacity per unit time.
図2は、処理コスト推定手段12の構成例を示すブロック図である。図2に示すように、処理コスト推定手段12は、列集合抽出手段121と、第1の処理コスト算出手段122と、分割配置方法格納手段123と、第2の処理コスト算出手段124とを含んでいてもよい。
FIG. 2 is a block diagram illustrating a configuration example of the processing
列集合抽出手段121は、クエリセットに含まれるクエリの述語(より具体的には、選択述語と結合述語)に出現する列集合を抽出する。列集合抽出手段121により抽出された列集合は、再分割配置におけるパーティションキーの候補とされるとともに、処理コストの算出対象とするクエリを限定するために用いられる。列集合抽出手段121は、処理コストの計算時間をさらに短縮するため、クエリセットに含まれるクエリの選択述語または結合述語に出現する列集合のうち所定の頻度以上で出現する列集合を抽出してもよい。
The column set
第1の処理コスト算出手段122は、第1の処理コストを算出する。
The first processing
分割配置方法格納手段123は、第2の処理コストを算出する際の分割配置方法を特定する情報を格納する。分割配置方法格納手段123は、分割配置方法を特定する情報を複数格納してもよい。分割配置方法の例としては、パーティションキーとされた列集合の値が同じである行データが同一データブロックに多く含まれるように対象データ群を分割する分割方法や、全データブロックに渡りパーティションキーとされた列集合の値で行データがソートされるように対象データ群を分割する分割方法などが挙げられる。同じ分割方法であっても異なる分割数を指定する場合などは異なる分割配置方法として扱ってもよい。分割配置方法格納手段123に格納される情報は、再分割配置実行手段が対応可能な分割配置方法を特定する情報であれば、特に問わない。なお、再分割配置実行手段14が対応可能な分割配置方法が1つしかないなどで第2の処理コストを算出する際の分割配置方法が固定される場合には、分割配置方法格納手段123は省略されてもよい。以下、分割配置方法格納手段123に格納されている情報によって特定される分割配置方法を、単に、指定の分割配置方法という場合がある。
The divided arrangement
第2の処理コスト算出手段124は、第2の処理コストを算出する。第2の処理コスト算出手段124は、列集合抽出手段121によって抽出された列集合の各々をパーティションキーの候補として、候補ごとに、分割配置方法格納手段123に格納されている情報によって特定される分割配置方法で対象データ群を再分割配置した場合の第2の処理コストを算出する。このとき、第2の処理コスト算出手段124は、当該候補の列集合を使用しているクエリのみを対象にして、第2の処理コストを算出してもよい。なお、その場合、第1の処理コスト算出手段122も、上記の候補に対して、当該候補の列集合を使用しているクエリのみを対象にして、第1の処理コストを算出する。
The second processing
第1の処理コスト算出手段122および第2の処理コスト算出手段124は、処理コストを算出する際に、クエリの実行アルゴリズムとして所定の最適化アルゴリズムが適用されると仮定して、処理コストを算出してもよい。所定の最適化アルゴリズムは、例えば、結合演算を含むクエリのオペレーションの順序を最適化した実行アルゴリズムであってもよい。
The first processing
図示省略しているが、分散データベースシステムは、後述するクエリ実行手段15がどのようなアルゴリズムに対応しているかを示す情報を格納するアルゴリズム格納手段や、受け付けたクエリセットを格納するクエリセット格納手段を有していてもよい。
Although not shown, the distributed database system includes an algorithm storage unit that stores information indicating what algorithm the
なお、第1の処理コスト算出手段122および第2の処理コスト算出手段124は、これら処理コストの算出をクエリセットの実行前に行う。
Note that the first processing
再分割配置判断手段13は、処理コスト推定手段12によって推定された第1の処理コストおよび第2の処理コストに基づいて、クエリセットの実行前に、対象データ群を再分割配置するか否か、および再分割配置する場合にはどのような方法で再分割配置するかを判断する。
The subdivision
再分割配置判断手段13は、例えば、第2の処理コストのいずれかが第1の処理コストよりも小さかった場合に、最も小さい第2の処理コストが算出されたパーティションキーの候補と分割配置方法とを用いて対象データ群を再分割配置すると判断してもよい。
For example, the re-division
再分割配置実行手段14は、再分割配置判断手段13によって対象データ群を再分割配置すると判断された場合に、クエリセットを実行する前に、対象データ群の再分割配置を実行する。
The subdivision
再分割配置実行手段14は、例えば、再分割配置判断手段13からの要求に応じて、指定されたパーティションキーおよび分割配置方法を用いて対象データ群の再分割配置を実行してもよい。再分割配置実行手段14は、より具体的には、表データにおけるパーティションキーとして指定された列集合に関する値の集合を基に、表データに含まれる各行データを複数のデータブロックのいずれかに割り振ってもよい。このとき、再分割配置実行手段14は、例えば、各行データに対して当該行データがどのデータブロックに所属するかを示すパーティション情報を生成してもよい。そして、再分割配置実行手段14は、生成したパーティション情報を基に、行データの移動を指示するクエリを発行するなどして、各行データを、当該行データの所属先とされたデータブロックを格納するデータ格納手段21に移動させる。また、再分割配置実行手段14は、再分割配置を実行した後、新たな分割配置における各データブロック内のデータの統計量を示すメタデータ(ブロック統計情報)を生成して、メタデータ格納手段22に格納してもよい。
For example, in response to a request from the subdivision
クエリ実行手段15は、指定されたクエリを実行する。 The query execution means 15 executes the designated query.
本実施形態において、クエリセット受付手段11は、例えば、マウスやキーボード、ネットワークカードといったデータの入出力を行うデータ入出力装置と、記憶手段に記憶されているプログラムに従って動作するCPU等の情報処理装置とによって実現される。また、処理コスト推定手段12、再分割配置判断手段13、再分割配置実行手段14およびクエリ実行手段15は、例えば、記憶手段に記憶されているプログラムに従って動作するCPU等の情報処理装置とによって実現される。また、データ格納手段21、メタデータ格納手段22およびその他の格納手段(上記のアルゴリズム情報格納手段やクエリセット格納手段等)は、例えば、記憶装置により実現される。
In the present embodiment, the query set accepting
次に、本実施形態の動作を説明する。図3は、本実施形態の分散データベースシステムの動作例を示すフローチャートである。図3に示す例では、まずクエリセット受付手段11が、外部からクエリセットを受け付ける(ステップS11)。
Next, the operation of this embodiment will be described. FIG. 3 is a flowchart showing an operation example of the distributed database system of the present embodiment. In the example shown in FIG. 3, first, the query set receiving
次に、処理コスト推定手段12が、受け付けたクエリセットの第1の処理コストと第2の処理コストとを算出する(ステップS12)。なお、処理コストの算出方法については後述する。 Next, the processing cost estimation means 12 calculates the first processing cost and the second processing cost of the accepted query set (step S12). The processing cost calculation method will be described later.
次に、再分割配置判断手段13が、算出された第1の処理コストと第2の処理コストとに基づいて、対象データ群を再分割配置するか否か、および再分割配置する場合にはいずれの方法で再分割配置するかを判断する(ステップS13)。
Next, the subdivision
ステップS13では、再分割配置判断手段13は、算出された第1の処理コストと第2の処理コストとを比較して、第2の処理コストのいずれかが第1の処理コストよりも小さい場合に(ステップS13のYes)、最も小さい第2の処理コストが算出された方法(パーティションキーの候補と分割配置方法)を用いて再分割配置すると判断する。また、再分割配置判断手段13は、算出された第1の処理コストと第2の処理コストとを比較して、第2の処理コストのいずれも第1の処理コストよりも小さくなければ(ステップS13のNo)、再分割配置しないと判断する(ステップS15に進む)。
In step S13, the re-division
再分割配置判断手段13が再分割配置すると判断した場合(ステップS13のYes)、再分割配置実行手段14は、指定された方法で再分割配置を実行する(ステップS14)。
When the subdivision
最後に、クエリ実行手段15は、受け付けたクエリセットを実行して、実行結果を出力する(ステップS15、ステップS16)。 Finally, the query execution means 15 executes the accepted query set and outputs the execution result (step S15, step S16).
一方、再分割配置判断手段13が再分割配置しないと判断した場合(ステップS13のNo)には、現在の分割配置のまま、クエリ実行手段15が、受け付けたクエリセットを実行して、実行結果を出力する(ステップS15、ステップS16)。
On the other hand, when the subdivision
次に、具体例を用いて本実施形態の動作を説明する。図4に示すフローチャートは、処理コスト推定手段12および再分割配置判断手段13の動作である上記のステップS12〜ステップS14のより詳細な処理フローの一例である。
Next, the operation of this embodiment will be described using a specific example. The flowchart shown in FIG. 4 is an example of a more detailed processing flow of the above-described steps S12 to S14 that are operations of the processing
図4に示す例では、まず処理コスト推定手段12の第1の処理コスト算出手段122が、クエリセット受付手段11が受け付けたクエリセット(以下、クエリセットQという)のクエリqj∈Qの各々について、再分割配置を行わない場合に当該クエリqjを実行するのにかかる処理コストである第1のクエリ実行コストとして、query_cost_nojを算出する(ステップS101)。
In the example illustrated in FIG. 4, first, the first processing
図5は、クエリセットQの例を示す説明図である。例えば、クエリセット受付手段11は、図5に示すような5つのクエリ(q1〜q5)を含むクエリセットQを受け付けたとする。そのような場合、第1の処理コスト算出手段122は、qj=q1〜q4の各々について、query_cost_nojを算出する。本例では、j=1〜4の整数である。
FIG. 5 is an explanatory diagram showing an example of the query set Q. For example, it is assumed that the query set accepting
次に、処理コスト推定手段12の列集合抽出手段121は、クエリセットQのクエリqjから、選択述語または結合述語のいずれかにおいて所定の頻度以上で出現する列集合Ciを全て抽出し、列集合Ciの集合{C1,C2,...,CI}を得る(ステップS102)。なお、Iは抽出された列集合Ciの数(種類数)である。なお、列集合抽出手段121は、抽出された列集合Ciの数が所定数に満たなければ、最も多く出現した列集合Ciから順に所定数の列集合Ciを抽出してもよい。また、列集合抽出手段121は、抽出された列集合Ciの数がゼロである場合には、現在の分割配置におけるパーティションキーそのままに異なる分割配置方法を用いた場合の第2の処理コストを第2の処理コスト算出手段124に算出させてもよい。
Next, the column set
以下、列集合Ciの単純な抽出法を例に挙げる。なお、抽出法は、クエリセットQと頻度の閾値θを与えられて、θ以上の頻度でクエリセットQ内のクエリの選択述語または結合述語のいずれかに現れる列集合の全てを列挙するものであれば、方式やアルゴリズムは問わない。 Below, include a simple extraction method set of columns C i as an example. The extraction method enumerates all the column sets that appear in either the selection predicate or the join predicate of the query in the query set Q with a query set Q and a frequency threshold θ. Any method or algorithm can be used.
単純な抽出法では、列集合抽出手段121は、まずクエリセットQを走査し、where句から述語を抜き出す。そして、列集合抽出手段121は、抜き出した述語に用いられている列の組合せを全て抽出して、抽出した列の組合せが異なるごとに一つの列集合として生成する。図5に示すクエリセットQによる例を示す。まず、列集合抽出手段121は、クエリセットQ内の各クエリ(q1〜q4)を走査し、where句から述語を抜き出す。このとき、列集合抽出手段121は、クエリq3のように論理和(∨)で連結されている述語があった場合は、該述語を分割して別々の述語として扱う。
In a simple extraction method, the column set
図6は、述語の抽出結果の例を示す説明図である。図6には、図5に示すクエリセットQから抽出される述語が一例として示されている。上記の方法によれば、図5に示すクエリセットQから、5つの述語(p1〜p5)が抽出される。 FIG. 6 is an explanatory diagram illustrating an example of a predicate extraction result. FIG. 6 shows an example of predicates extracted from the query set Q shown in FIG. According to the above method, five predicates (p1 to p5) are extracted from the query set Q shown in FIG.
続いて、列集合抽出手段121は、抽出した述語の各々に現れる列の組合せからなる列集合を抽出するとともに、抽出した列集合が、抽出した全述語内に現れる頻度を計算する。このとき、列集合抽出手段121は、1つの述語内に同じテーブルに存在する複数の列が共起している場合には、それら複数の列で作られるあらゆる組合せを列集合として抽出して、抽出した列集合の各々に対して頻度を計算する。例えば、述語p1には、“T.name”と“R.name”と“T.age”という3つの列が現れている。“T.name”と“T.age”とは同じテーブルに存在する列である。これら同じテーブルに存在する複数の列で作られるあらゆる列の組合せとしては{T.name},{T.age},{T.name, T.age}の3通りが考えられ、これら3通りの組合せの各々が1つの列集合として抽出される。なお、述語p1からは、さらにテーブルの異なる列{R.name}が追加されて、{T.name},{T.age},{T.name, T.age},{R.name}の計4つの列集合が抽出される。なお、これら列集合の全ては述語p1に出現するため、これら4つの列集合の各々に対して出現述語数が+1される。列集合抽出手段121は、抽出した述語p1〜p5について同様の処理を行う。なお、次の述語から抽出した列集合が、既に抽出された列集合と完全一致した場合には、新たな列集合とせずに、完全一致した列集合に対して出現述語数を+1すればよい。
Subsequently, the column set
図7は、列集合の抽出結果の例を示す説明図である。図7には、図6に示す述語集合から抽出される列集合およびその頻度が示されている。図7に示すように、本例では、5通りの列集合Ci=C1〜C5が抽出されて、抽出された列集合Ciの各々について頻度(出現述語数)が算出される。今、θ=3とすると、列集合抽出手段121は、クエリセットQに頻出する列集合として、列集合C1とC2とを抽出する。なお、列集合抽出手段121は、再分割配置判断手段13が再分割配置する際の方法としてパーティションキーのみを指定する場合には、現在の分割配置におけるパーティションキーと同じ列集合を抽出対象から除外してもよい。
FIG. 7 is an explanatory diagram illustrating an example of column set extraction results. FIG. 7 shows a column set extracted from the predicate set shown in FIG. 6 and its frequency. As shown in FIG. 7, in this example, five column sets C i = C 1 to C 5 are extracted, and the frequency (number of appearance predicates) is calculated for each of the extracted column sets C i . Now, assuming that θ = 3, the column set
なお、図7に示す例では、頻度を、対象の列集合が現れる述語の数すなわち出現述語数と定義しているが、頻度の定義はこれに限られない。例えば、抽出された述語の総数に対する出現述語数の割合を頻度としてもよいし、述語の数ではなく対象の列集合が述語に現れているクエリの数を頻度としてもよいし、その他任意に定義された指標を用いてもよい。 In the example shown in FIG. 7, the frequency is defined as the number of predicates in which the target column set appears, that is, the number of appearance predicates, but the definition of the frequency is not limited to this. For example, the ratio of the number of appearance predicates to the total number of extracted predicates may be the frequency, the number of queries in which the target column set appears in the predicate instead of the number of predicates may be the frequency, or any other definition The measured index may be used.
次に、列集合抽出手段121は、抽出された列集合Ciの各々について、クエリセットQに含まれるクエリqjの中から、当該列集合Ciをカバーしているクエリqjを抽出して、抽出したクエリqjからなるサブセットQi’を得る(ステップS103)。ここで、列集合Ciをカバーしているクエリは、具体的には、選択述語または結合述語を含むクエリであって、当該列集合Ciの要素となっている列が当該1つのクエリ内に全て現れているクエリである。以下、サブセットQi’に含まれるクエリqjの各々をクエリqj’と記す場合がある。ここで、j’はクエリセットQに含まれるクエリqjの識別子であるjのうち指定された列集合Ciをカバーするとの条件を満たすものを表わしている。
Next, the column set
図8は、クエリのサブセットQi’の例を示す説明図である。図8には、図5に示すクエリセットQから抽出された列集合Ciである列集合C1およびC2について、クエリセットQから抽出されたクエリのサブセットQ1’およびQ2’の例が示されている。 FIG. 8 is an explanatory diagram illustrating an example of a subset Q i ′ of a query. FIG. 8 shows an example of the subsets Q 1 ′ and Q 2 ′ of the query extracted from the query set Q for the column sets C 1 and C 2 that are the column set C i extracted from the query set Q shown in FIG. It is shown.
例えば、列集合抽出手段121は、頻出する列集合として列集合C1とC2とが抽出されると、再びクエリセットQを走査して、列集合C1または列集合C2がwhere句の述語に現れているクエリを特定し、特定したクエリの識別子jを、該当する列集合の識別子iと対応づければよい。
For example, when the column sets C 1 and C 2 are extracted as frequent column sets, the column set
本例では、列集合抽出手段121は、列集合C1={T.age}が全て現れているクエリのサブセットQ1’として、Q1’={q1,q2,q3}を得る。また、列集合抽出手段121は、列集合C2={T.name}が全て現れているクエリのサブセットQ2’として、Q2’={q1,q2,q5}を得る。
In this example, the column set
次に、処理コスト推定手段12の第2の処理コスト算出手段124は、メタデータ格納手段22に格納されている対象データ群のメタデータと、分割配置方法格納手段123に格納されている情報に基づいて、ステップS102で抽出された列集合をパーティションキーとして再分割配置した場合の第2の処理コストを算出する(ステップS104)。
Next, the second processing
ステップS104では、第2の処理コスト算出手段124は、抽出された列集合Ciをそれぞれパーティションキーとした場合の再分割配置の実行にかかる処理コストである分割配置コストとして、partition_costiを算出するとともに、再分割配置後の状態においてクエリqj’∈Qi’の各々の実行にかかる処理コストである第2のクエリ実行コストとして、query_cost_partij’を算出する。
In step S104, the second processing
本例では、1つの列集合Ciに対して、partition_costiと、クエリqj’∈Qi’の全てのj’についてのquery_cost_partij’とを足したものが第2の処理コストとなる。また、クエリqj∈Qのうちj=j’となる全てのjについてのquery_cost_nojを足したものが、当該列集合Ciの第2の処理コストと比較される第1の処理コストとなる。 In the present example, the second processing cost is obtained by adding partition_cost i and query_cost_part ij ′ for all j ′ of the query q j ′ ∈Q i ′ to one column set C i . Also, the sum of query_cost_no j for all j with j = j ′ in the query q j εQ is the first processing cost compared with the second processing cost of the column set C i . .
第1の処理コストおよび第2の処理コストが算出されると、再分割配置判断手段13は、これらを比較して、再分割配置するか否か、および再分割配置する場合には再分割配置時に用いるパーティションキーを決定する(ステップS105〜ステップS112)。
When the first processing cost and the second processing cost are calculated, the subdivision
本例では、再分割配置判断手段13は、再分割配置することで、しないときよりも総処理コストが小さくなる列集合Ciがあるかどうかを以下の条件式(1)が真となるcost_cutiが存在するかどうかで判断する。なお、条件式(1)におけるcost_cutiは、指定の列集合Ciでの再分割配置によるコスト削減量の見積もりに相当する。
In this example, the subdivision
図4に示す例では、再分割配置判断手段13は、まず列集合Ciの識別子iを初期化するとともに、条件式(1)が真となったCiを格納するバッファBを初期化する(ステップS105)。ステップS105では、i=1とし、またB=Φとする。ここで、Φは空集合を表す記号である。なお、本例では、わかりやすいよう識別子iの値を1基準としているが、識別子の形式は特に限定されない。
In the example shown in FIG. 4, subdivided
次に、再分割配置判断手段13は、識別子iが示す列集合Ciについて、上記の条件式(1)を判定する(ステップS106)。再分割配置判断手段13は、具体的には、上記の条件式(1)に従い、cost_cutiを算出して、算出されたcost_cutiが0以上であるか否かを判定する。条件式(1)が真であれば(ステップS106のYes)、バッファBに、cost_cutiの算出に用いた列集合Ciまたはその識別子iを、算出したcost_cutiの値と一緒に格納する(ステップS107)。一方、偽であれば(ステップS106のNo)、そのままステップS108に進む。
Next, the subdivision
ステップS108では、iがインクリメントされる。次いで、再分割配置判断手段13は、ステップS109で、iが列集合Ciの最大数であるIを超えたか否か、すなわちステップS102で抽出された全ての列集合CiについてステップS106〜ステップS107の処理を完了したか否かを判断する。 In step S108, i is incremented. Next, the subdivision arrangement determination means 13 determines whether or not i exceeds I, which is the maximum number of column sets C i in step S109, that is, all column sets C i extracted in step S102. It is determined whether or not the processing of S107 is completed.
再分割配置判断手段13は、全ての列集合CiについてステップS106〜ステップS107の処理を完了すると(ステップS109のYes)、バッファBが空でないかを判定する(ステップS110)。ステップS110の判定式が真、すなわちバッファBが空でなければ、再分割配置すると判断して、ステップS111に進む。一方、ステップS110の判定式が偽、すなわちバッファBが空であれば、再分割配置しないと判断する(ステップS112)。再分割配置判断手段13は、例えば、再分割配置しないと判断した場合、クエリ実行手段15にクエリセットQを渡し、クエリセットQを実行する命令を発行してもよい。
Subdividing the
ステップS111では、再分割配置判断手段13は、再分割配置すると判断した場合、バッファBを参照してcost_cutiが最大値をとる列集合Ciを選択することにより、選択した列集合Ciをパーティションキーに用いて再分割配置することを決定する。
In step S111, when the subdivision
再分割配置判断手段13は、例えば、再分割配置実行手段14にパーティションキーとする列集合の情報とともに再分割配置を実行する命令を発行してもよい。
The subdivision
なお、図4に示す例は、指定の分割配置方法が1つの場合の例であるが、指定の分割配置方法は複数であってもよい。そのような場合には、ステップS104で、第2の処理コスト算出手段124が、列集合Ciと分割配置方法Mhの組ごとに、当該列集合Ciをパーティションキーとし、かつ分割配置方法Mhを用いた場合の分割配置コストであるpartition_costihと、そのような方法を用いた再分割配置後の状態におけるクエリqj’∈Qi’の各々についての第2のクエリ実行コストであるquery_cost_partihj’とを算出すればよい。
The example shown in FIG. 4 is an example in which there is one designated divided arrangement method, but there may be a plurality of designated divided arrangement methods. In such a case, in step S104, the second processing
その場合、再分割配置判断手段13は、再分割配置することで、しないときよりも総処理コストが小さくなる列集合Ciと分割配置方法Mhの組があるかどうかを以下の条件式(2)が真となるcost_cutihが存在するかどうかで判断すればよい。条件式(1)におけるcost_cutihは、指定の列集合Ciおよび分割配置方法Mhでの再分割配置によるコスト削減量の見積もりに相当する。 In that case, the subdivision arrangement determination means 13 determines whether there is a set of the column set C i and the subdivision arrangement method M h that reduces the total processing cost by performing the subdivision arrangement as compared with the case where it is not. The determination may be made based on whether or not cost_cut ih in which 2) is true exists. Cost_cut ih the conditional expression (1) corresponds to estimation of cost reductions by subdivision located in the specified set of columns C i and the division arrangement method M h.
そして、再分割配置判断手段13は、条件式(2)が真となるcost_cutihが存在した場合には、cost_cutihが最大値をとる列集合Ciと分割配置方法Mhの組を選択することにより、選択した列集合Ciをパーティションキーに用い、かつ選択した分割配置方法Mhを用いて再分割配置することを決定する。
The subdivision
なお、第2の処理コスト算出手段124は、上記の方法以外にも、例えば、予め所定の分割方法で固定して第2のクエリ実行コストを算出し、再分割配置判断手段13が、コスト削減量に基づいて、再分割配置するか否かを決定するとともに、再分割配置する場合には、算出された第2のクエリ実行コストの中から高コストとなった述語の演算の種類およびクエリ内におけるそれら演算の出現頻度とに基づいて、パーティションキーと分割配置方法とを決定してもよい。
In addition to the above method, the second processing
例えば、再分割配置判断手段13は、クエリセット内のクエリにある列集合に対して一致条件(=や≠)で選択演算を行う際に高コストとなるクエリが、他の演算を行う際に高コストとなるクエリと比べて多いとき、パーティションキーとして当該列集合と、列値が同じ多くの行データを同一ブロックに配置する分割法とを選択してもよい。また、例えば、再分割配置判断手段13は、クエリセット内のクエリにある列集合に対して範囲条件(>や<)で選択演算を行う際に高コストとなるクエリが、他の演算を行う際に高コストとなるクエリと比べて多いとき、パーティションキーとして当該列集合と、全ブロックに渡り列値で全行データがソートされるような分割方法とを選択してもよい。また、例えば、再分割配置判断手段13は、クエリセット内のクエリにある列集合に対して結合演算を行う高コストとなるクエリが、他の演算を行う際に高コストとなるクエリと比べて多いとき、パーティションキーとして当該列集合と、全ブロックに渡り列値で全行データがソートされるような分割方法とを選択してもよい。
For example, the subdivision
また、上記の例では、列集合抽出手段121が、パーティションキーの候補とされる列集合を抽出する処理(ステップS102)で、クエリセット内の述語(選択述語または結合述語)への出現頻度が所定の頻度以上であることを要件の1つとしたが、クエリセット内の述語への出現頻度を見ずに、クエリセット内の選択述語または結合述語に出現している列集合全てを抽出することも可能である。そのような場合には、θ=0とすればよい。
In the above example, the column set
ただし、列集合の総数が多い場合は計算時間が非常に大きくなるため、適切な閾値が設定されるのが好ましい。ただし、出現頻度の閾値を高くしすぎると、コストの大きな低頻度の列集合を見落とす可能性があることに注意が必要である。 However, when the total number of column sets is large, the calculation time becomes very long, so it is preferable to set an appropriate threshold value. However, it should be noted that if the threshold value of the appearance frequency is set too high, a low-frequency column set having a large cost may be overlooked.
本実施形態では、クエリセットから所定の頻度以上の述語を抽出してパーティションキーの候補を得るのではなく、クエリセットから所定の頻度以上の列集合を抽出してパーティションキーの候補を得ている。このため、コストの大きな低頻度の列集合を見落とす可能性は、述語の頻度に基づく方法よりは低くなると考えられる。一般に、列と述語とでは、列のほうが粒度(granularity)の粗い概念になるため、あるクエリ集合においてある列を含む述語の頻度が極端に低くても、列の頻度は比較的大きくなる傾向がある。また、あるクエリ集合において述語に用いられる列集合の種類数は述語の種類数より小さくなる場合が多い。このため、見落とされる列集合の数は見落とされる述語の数より小さいことが期待できる。 In this embodiment, rather than extracting a predicate having a predetermined frequency or higher from a query set to obtain a partition key candidate, a column set having a predetermined frequency or higher is extracted from the query set to obtain a partition key candidate. . For this reason, it is considered that the possibility of overlooking a low-frequency column set having a large cost is lower than the method based on the predicate frequency. In general, because columns and predicates have a coarser granularity concept, the frequency of columns tends to be relatively large even if the frequency of predicates that include a column in a query set is extremely low. is there. In many query sets, the number of types of column sets used for predicates is smaller than the number of types of predicates. For this reason, it can be expected that the number of column sets that are overlooked is smaller than the number of predicates that are overlooked.
次に、処理コストの算出方法について具体例を用いて説明する。本例は、分割配置方法として、対象データ群全体をパーティションキーで指定された列集合の値でソートした後に指定の数のブロックに等分割して配置する方法(ソート分割法)を採用したときの処理コストの算出方法の例である。本例でも、図5に示すクエリセットQを例に用いる。 Next, a method for calculating the processing cost will be described using a specific example. In this example, when the entire target data group is sorted by the value of the column set specified by the partition key and then equally divided into the specified number of blocks (sort partition method) This is an example of a method for calculating the processing cost. Also in this example, the query set Q shown in FIG. 5 is used as an example.
図9は、対象データ群の分割配置例を示す説明図である。なお、図9には、対象データ群のうちテーブル“T”に属する行データが2つのデータブロックに分割配置される例が示されている。なお、テーブル“T”は、データ属性に対応する列として、“name”列、“age”列、“sex”列の3つの列を有している。 FIG. 9 is an explanatory diagram illustrating an example of a divided arrangement of the target data group. FIG. 9 shows an example in which row data belonging to the table “T” in the target data group is divided and arranged into two data blocks. The table “T” has three columns, “name” column, “age” column, and “sex” column, as columns corresponding to the data attribute.
今、第1のデータブロックTB1には、列“name”の値がそれぞれ“suzuki”,“yamada”,“aida”である3つの行データが含まれている。また、第2のデータブロックTB2には、列“name”の値が“kuroda”,“hirata”,“satou”である3つの行データが含まれている。また、メタデータ格納手段22には、各データブロックのブロック統計情報として、当該データブロック内における各列の最小値“min”と最大値“max”が少なくとも格納されている。図9に示す例では、テーブル“T”は、例えば行データが登録された順番のまま2つのデータブロック(TB1,TB2)に等分割されて配置されている。
Now, the first data block TB1 includes three row data whose values of the column “name” are “suzuki”, “yamada”, and “aida”, respectively. The second data block TB2 includes three row data whose column “name” values are “kuroda”, “hirata”, and “satou”. The
また、図10および図11は、対象データ群の他の分割配置例を示す説明図である。図10には、パーティションキーとして{T.age}を用い、かつソート分割法を用いてテーブル“T”を2つのデータブロック(TB1,TB2)に分割配置した例が示されている。また、図11には、パーティションキーとして{T.sex, T.name}を用い、かつソート分割法を用いてテーブル“T”を2つのデータブロック(TB1,TB2)に分割配置した例が示されている。 FIGS. 10 and 11 are explanatory diagrams illustrating other examples of divided arrangement of the target data group. FIG. 10 shows an example in which {T.age} is used as the partition key and the table “T” is divided and arranged into two data blocks (TB1, TB2) using the sort division method. FIG. 11 shows an example in which {T.sex, T.name} is used as the partition key and the table “T” is divided and arranged into two data blocks (TB1, TB2) using the sort partition method. Has been.
なお、分割配置を行う際の分割方法は、ソート分割法だけではない。例えば、パーティションキーとして指定された列集合の値からハッシュ値を生成し、同値のハッシュ値を持つブロックに行データを割り当てる方法(ハッシュ分割法)なども一般的な方法である。分割配置アルゴリズムごとに分割配置コスト(partition_cost)は異なる。例えば、ソート分割法では典型的なソートアルゴリズムを用いる場合、表データの行数Nに対して、O(NlogN)+O(N)の分割配置コストがかかるが、ハッシュ分割法では、O(N)の分割配置コストとなる。 It should be noted that the division method for performing the divided arrangement is not limited to the sort division method. For example, a general method is a method in which a hash value is generated from a column set value designated as a partition key and row data is allocated to a block having the same hash value (hash partitioning method). The division arrangement cost (partition_cost) is different for each division arrangement algorithm. For example, when a typical sort algorithm is used in the sort partition method, a partition arrangement cost of O (NlogN) + O (N) is required for the number of rows N of the table data. In the hash partition method, O (N) It becomes the division arrangement cost.
次に、クエリ実行コストの算出例を示す。各クエリのコスト計算は、データベース技術分野における、コストに基づいたクエリ最適化を行うことと等価である。一般に、コストに基づいたクエリ最適化では、与えられたクエリについて考えられる全てのクエリ実行計画を列挙する。 Next, an example of calculating the query execution cost is shown. Cost calculation for each query is equivalent to performing cost-based query optimization in the database technology field. In general, cost-based query optimization enumerates all possible query execution plans for a given query.
図12に、図5に示されるクエリq1について考えられるクエリ実行計画の例として、3種のクエリ実行計画木を示す。各クエリ実行計画木は、葉ノードにテーブルを持つ。また、各クエリ実行計画木の中間ノードは、対象クエリのオペレーション(選択、結合、射影)に対応している。クエリ実行計画木では、左側の葉ノードから順番に処理が実行され、ルートノードにおいて結果が算出されることを意味する。図中のσ記号はオペレーションが選択演算であることを表している。また、リボン状の記号は、オペレーションが結合演算であることを表している。また、各オペレーション記号の添え字はそれぞれ選択条件、結合条件を表している。 FIG. 12 shows three types of query execution plan trees as examples of possible query execution plans for the query q1 shown in FIG. Each query execution plan tree has a table at a leaf node. Further, the intermediate node of each query execution plan tree corresponds to the operation (selection, combination, projection) of the target query. In the query execution plan tree, this means that processing is executed in order from the left leaf node, and the result is calculated at the root node. The symbol σ in the figure indicates that the operation is a selection operation. A ribbon-like symbol indicates that the operation is a join operation. The subscripts of each operation symbol represent the selection condition and the combination condition, respectively.
第1の処理コスト算出手段122および第2の処理コスト算出手段124は、このようなクエリ実行計画木を基に、各クエリ実行計画を実行する際のクエリ実行コストを計算して、最も処理コストの小さいクエリ実行計画のクエリ実行コストを、当該クエリのクエリ実行コストに採用してもよい。
The first processing
各クエリのクエリ実行コストは、メタデータ格納手段22に格納されている列ごとの値の選択率やヒストグラム等のメタデータから算出できる。
The query execution cost of each query can be calculated from metadata such as a value selection rate and a histogram stored for each column stored in the
例えば、クエリセットQにおいて頻出な列集合Ciとして、列集合C1とC2とが与えられたとする。なお、列集合C1={T.age}をカバーするクエリqij’はq1,q2,q3である。 For example, it is assumed that column sets C 1 and C 2 are given as frequent column sets C i in the query set Q. Note that the query q ij ′ covering the column set C 1 = {T.age} is q1, q2, and q3.
今、第2の処理コスト算出手段124が、列集合C1をパーティションキーに用いて再分割配置後の状態におけるクエリq1の第2のクエリ実行コストであるquery_cost_part11を算出することを考える。図12に示す例では第3の計画が最も小さなクエリ実行コストとなる。なぜなら結合演算と選択演算が混在する場合、先に選択演算を行うほうが効率的であるため、第1の計画より第2の計画および第3の計画のほうが低コストとなる。 Now, the second processing cost calculation means 124, consider calculating the Query_cost_part 11 is a second query execution cost query q1 in the state after the subdivision placed using a column set C 1 in the partition key. In the example shown in FIG. 12, the third plan has the lowest query execution cost. This is because when the combination operation and the selection operation are mixed, it is more efficient to perform the selection operation first, so that the second plan and the third plan are less expensive than the first plan.
また、本例の場合、テーブル“T”は列集合C1={T.age}をパーティションキーとしてソート分割法で再分割配置されている。すなわち、図10に示す状態にある。すると、選択演算“T.age>30”に対して、事前にブロック統計情報を参照することにより、第1のデータブロックへの不要な読み込みを阻止できる。したがって、第1の計画より第3の計画の方が処理時間が短くなる。 In this example, the table “T” is re-divided and arranged by the sort division method with the column set C 1 = {T.age} as the partition key. That is, it is in the state shown in FIG. Then, unnecessary reading into the first data block can be prevented by referring to the block statistical information in advance for the selection operation “T.age> 30”. Accordingly, the processing time is shorter in the third plan than in the first plan.
本例では、第3の計画が選ばれ、第3の計画による第2のクエリ実行コストがquery_cost_part11として使用される。クエリq2,q3についても同様に、query_cost_part12,query_cost_part13が求められる。 In this example, the third plan is selected, and the second query execution cost based on the third plan is used as the query_cost_part 11 . Similarly, query_cost_part 12 and query_cost_part 13 are also obtained for the queries q2 and q3.
なお、再分割配置を行わない場合のクエリ実行コストの算出方法も基本的には同様である。すなわち、第1の処理コスト算出手段122は、対象クエリqjのクエリ実行計画木を基に、現在の再部活配置において最も処理コストの小さいクエリ実行計画のクエリ実行コストを、対象クエリqjの第1のクエリ実行コストであるquery_cost_nojに採用する。 Note that the method for calculating the query execution cost when the subdivision arrangement is not performed is basically the same. That is, the first processing cost calculation means 122, based on the query plan tree of the target query q j, the query execution cost of the most processing cost small query plan for the current re club arrangement, the target query q j This is adopted as query_cost_no j which is the first query execution cost.
ただし、第1の処理コスト算出手段122は、各クエリ実行計画を実行する際のクエリ実行コストを計算する際、現在の分割配置の状態におけるクエリ実行コストを計算する。本例の場合、第1の処理コスト算出手段122は、テーブル“T”が図10に示す状態にあるとして、クエリ実行計画木のクエリ実行コストを計算する。なお、図10に示す状態は、テーブル“T”が{T.age}でソートされずに分割された例である。このため、例えばクエリq1に対しては、図12に示した計画のうちの第1の計画および第2の計画の2種類が考えられるクエリ実行計画となる。したがって、第2の計画が最も効率的であるとして選択されて、現在の分割配置における第2の計画のクエリ実行コストがquery_cost_no1となる。第1の処理コスト算出手段122は、他のクエリqjについても同様に、query_cost_nojを計算する。このようにして、列集合C1,列集合C2に対応したcost_cutiやcost_cutihを算出するための各種の処理コストを得る。
However, the first processing
再分割配置判断手段13は、このようにして得られた各種の処理コストを、例えば条件式(1)に代入して、列集合Ciの各々についてのcost_cutiを得る。
The subdivision
以下に、クエリ実行コストの算出例を示す。本例は、上述したクエリq1の第3の計画に対するクエリ実行コストの算出例である。クエリq1は選択演算と結合演算からなるクエリであるため、クエリ実行コストは、選択演算の処理コストと結合演算の処理コストの和になる。処理コストを表す指標はCPUコストやI/Oコストなど複数考えられるが、ここではI/Oコストのみ考慮する。I/OにはディスクのI/OとネットワークのI/Oの2種類があるが、ここではこれらの負荷はデータブロックの格納先にかかわらずみな同量であると仮定し、ディスクのI/Oコストのみを算出対象する。 An example of calculating the query execution cost is shown below. This example is a calculation example of the query execution cost for the third plan of the query q1 described above. Since the query q1 is a query including a selection operation and a join operation, the query execution cost is the sum of the processing cost of the selection operation and the processing cost of the join operation. There are a plurality of indexes representing the processing cost, such as CPU cost and I / O cost, but only I / O cost is considered here. There are two types of I / O: disk I / O and network I / O. Here, it is assumed that these loads are the same regardless of the storage location of the data block. Only O cost is calculated.
本例では、選択演算および結合演算の処理コストを、当該演算でアクセスされるデータブロックに含まれる行数の和で表す。データブロックにアクセスすることは、ディスクのI/Oが行われることを意味する。また、本例では、索引(インデックス)は存在しないものとする。 In this example, the processing cost of the selection operation and the join operation is represented by the sum of the number of rows included in the data block accessed by the operation. Accessing the data block means that disk I / O is performed. In this example, it is assumed that no index exists.
クエリq1の第3の計画では、まず第1のオペレーションとして選択演算が実行される。より具体的には、テーブル“T”に対して、条件“age>30”を指定した選択演算が実行される。インデックスがない場合、条件に用いられている列集合(本例の場合、{T.age})でソートされていないテーブルへの選択演算では、全てのデータブロックにアクセスする必要がある。すなわち、再分割配置しない場合の選択演算の処理コストは6となる。 In the third plan of query q1, a selection operation is first executed as the first operation. More specifically, the selection calculation specifying the condition “age> 30” is executed for the table “T”. When there is no index, it is necessary to access all data blocks in a selection operation on a table that is not sorted by the column set used in the condition (in this example, {T.age}). In other words, the processing cost of the selection calculation when the subdivision arrangement is not performed is 6.
一方、条件に用いられている列集合をパーティションキーとしてソート分割法で再分割配置した場合の選択演算の処理コストは、次のようになる。条件に用いられている列集合の値の順にソートされた後で分割されている場合、ブロック統計情報を参照して不要なデータブロックへのアクセスを避けることができる。このため、選択演算の処理コストの計算では、まず当該選択演算においてアクセスされるであろうデータブロックの数(以下、アクセスブロック数という。)を見積もる。 On the other hand, the processing cost of the selection operation when the column set used for the condition is repartitioned by the sort partition method with the partition key as follows is as follows. When the data is divided after being sorted in the order of the values of the column set used in the condition, access to unnecessary data blocks can be avoided by referring to the block statistical information. For this reason, in the calculation of the processing cost of the selection calculation, first, the number of data blocks that will be accessed in the selection calculation (hereinafter referred to as the number of access blocks) is estimated.
例えば、第2の処理コスト算出手段124は、メタデータとしてメタデータ格納手段22に格納されている各列の値のヒストグラムに基づいて、条件に合致する列の値を持つ行データが全体の何%を占めるかを計算してもよい。
For example, the second processing
図13に、本例のテーブル“T”における列”age”のヒストグラムを示す。本例では、メタデータ格納手段22から、テーブル“T”における列”age”のヒストグラムとして図13に示されるヒストグラムが得られたとする。図13に示すヒストグラムによれば、列”age”の値が30よりも大きい値を持つ行データが全体の50%存在することを事前に(再分割配置する前に)知ることができる。
FIG. 13 shows a histogram of the column “age” in the table “T” of this example. In this example, it is assumed that the histogram shown in FIG. 13 is obtained from the
以下、本例においてこの50%を選択率と呼び、πで表す。これにより、該選択演算によるアクセスブロック数は、次のような演算により求まる。 Hereinafter, this 50% is referred to as selectivity in this example, and is represented by π. Thereby, the number of access blocks by the selection calculation is obtained by the following calculation.
アクセスブロック数=ceil(行の総数×選択率π)÷floor(行の総数÷データブロック数)
・・・(3)
Number of access blocks = ceil (total number of rows x selection rate π) ÷ floor (total number of rows ÷ number of data blocks)
... (3)
ここで、ceil()は小数点以下を切り上げる関数を表している。また、floor()は、小数点以下を切り捨てる関数を表している。 Here, ceil () represents a function that rounds up the decimal point. Further, floor () represents a function for truncating after the decimal point.
式(3)によれば、クエリq1の第3の計画における第1のオペレーションである選択演算によるアクセスブロック数=1と見積もられる。 According to Expression (3), it is estimated that the number of access blocks by the selection operation that is the first operation in the third plan of the query q1 = 1.
また、このとき、該選択演算によって選択される行数は、行の総数×選択率π=3であることも分かる。 Also, at this time, it can be seen that the number of rows selected by the selection calculation is the total number of rows × selectivity π = 3.
第3の計画では次に、第2のオペレーションとして結合演算が実行される。なお、結合演算の処理コストは、{T.age}でソート分割されている場合とされていない場合とで変わらない。今、対象データ群に、テーブル“R”の行データとして、列“age”を持つ6個の行データが含まれており、3行ずつ2個のデータブロック(データブロックRB1、データブロックRB2)に分割されて格納されていると仮定する。 Next, in the third plan, the join operation is executed as the second operation. It should be noted that the processing cost of the join operation does not change depending on whether the sorting is performed with {T.age} or not. Now, the target data group includes 6 row data having the column “age” as the row data of the table “R”, and 2 data blocks (data block RB1, data block RB2) every 3 rows. It is assumed that the data is divided and stored.
分散データベースシステムにおいて結合演算でよく知られたアルゴリズムは、Map−side−joinと呼ばれ、次のような流れで処理を行うアルゴリズムである。 An algorithm that is well-known for join operations in a distributed database system is called Map-side-join, and is an algorithm that performs processing in the following flow.
当該クエリの結合演算を並列に行うノードがn個あるとする。一般に、データ格納手段の各々には、当該データ格納手段に格納されているデータブロックに対するデータ操作を取りまとめて行うノード(計算機)が対応づけられている。まず、第1のステップで、データベース管理システムが、より小さなテーブル“T”をn個のノード全てにコピーする。第2のステップで、n個のノードが、より大きなテーブル“R”の行データを含むデータブロックを、ノード間で重複がないように読み込み、読み込んだテーブル“R”のデータブロックと、先のステップでコピーされたテーブル“T”とを結合する。第3のステップで、データベース管理システムが、各ノードの結合結果をマージして出力する。 Assume that there are n nodes that perform the join operation of the query in parallel. In general, each data storage means is associated with a node (computer) that collectively performs data operations on the data blocks stored in the data storage means. First, in a first step, the database management system copies a smaller table “T” to all n nodes. In the second step, n nodes read the data block including the row data of the larger table “R” so that there is no duplication between the nodes, and the data block of the read table “R” Join table “T” copied in step. In the third step, the database management system merges and outputs the join results of the nodes.
第3の計画の第2のオペレーションとして、第1のオペレーションによるテーブル“T”についての選択結果と、テーブル“R”との結合を行う場合、n=2とすると、まず第1のオペレーションによるテーブル“T”についての選択結果である3個の行からなるテーブル“T'”が各ノード(ノードn1およびノードn2)に読み込まれる。次に、ノードn1がテーブル“R”のデータブロックであるデータブロックRB1を読み込んでテーブル“T'”と結合するとともに、ノードn2がテーブル“R”のデータブロックであるデータブロックRB2を読み込んでテーブル“T'”と結合する。このとき、結合演算の処理コストは、テーブル“T'”のスキャンにかかる処理コストと、テーブル“R”の最大行数を持つデータブロックをスキャンするのにかかる処理コストである。 As the second operation of the third plan, when the selection result for the table “T” by the first operation is combined with the table “R”, if n = 2, the table by the first operation is first set. A table “T ′” consisting of three rows as a selection result for “T” is read into each node (node n1 and node n2). Next, the node n1 reads the data block RB1 which is a data block of the table “R” and combines it with the table “T ′”, and the node n2 reads the data block RB2 which is a data block of the table “R”. Combine with “T '”. At this time, the processing cost of the join operation is the processing cost for scanning the table “T ′” and the processing cost for scanning the data block having the maximum number of rows in the table “R”.
したがって、クエリq1の第3の計画における第2のオペレーションである結合演算による処理コストは、3+ceil(6÷2)=6と見積もられる。 Therefore, the processing cost by the join operation, which is the second operation in the third plan of the query q1, is estimated as 3 + ceil (6 ÷ 2) = 6.
以上から、現状の分割配置すなわち列“age”でテーブル“T”を分割配置されていない状態におけるクエリq1のクエリ実行コスト(第1のクエリ実行コスト)であるquery_cost_no1は6+6=12となる。また、列“age”でテーブル“T”を再分割配置した状態におけるクエリq1のクエリ実行コスト(第2のクエリ実行コスト)であるquery_cost_no11は、3+6=9となる。他のクエリについても同様の方法で、クエリ実行コストを計算できる。 From the above, query_cost_no 1 which is the query execution cost (first query execution cost) of the query q1 in the state where the table “T” is not divided and arranged in the current divided arrangement, that is, the column “age” is 6 + 6 = 12. Further, the query_cost_no 11 that is the query execution cost (second query execution cost) of the query q1 in a state where the table “T” is rearranged in the column “age” is 3 + 6 = 9. Query execution costs can be calculated for other queries in the same way.
なお、上記の例では、ディスクのI/Oの負荷およびネットワークのI/Oの負荷は、データブロックの格納先にかかわらず同量であると仮定したが、データブロックの格納先によってこれらの負荷が異なってくる場合には、各データ格納手段を制御する各計算機のディスクバンド幅やそれら計算機間を接続するネットワークバンド幅等の当該分散データベースの構成要素の処理性能に関する情報を基に、データブロックの格納先に応じた重みを設定して、クエリ実行コストを算出してもよい。 In the above example, it is assumed that the I / O load on the disk and the I / O load on the network are the same regardless of the storage location of the data block, but these loads depend on the storage location of the data block. Data blocks based on information on the processing performance of the constituent elements of the distributed database, such as the disk bandwidth of each computer that controls each data storage means and the network bandwidth that connects these computers. The query execution cost may be calculated by setting a weight according to the storage location.
以上のように、本実施形態によれば、第一に、クエリの述語がデータ操作に与える処理コストを考慮したデータ分割配置が可能となり、演算の処理コストが問題にならないような述語が頻繁にクエリに現れている場合に、真にボトルネックとなっている述語が無視されることが回避できる。第二に、選択述語のみならず結合述語のコストも対象にし、真にコストの大きな述語を効率化するデータ分割配置のためのパーティションキーを設定できる。第三に、データの分割配置をやり直した場合のクエリセットの実行にかかる総処理時間が削減できる見込みを計算することで、再分割配置することで逆に総処理時間が増えてしまう場合を回避できる。したがって、複数のクエリや述語の演算に時間のかかるクエリを実行して初めて1つの仕事が完了する属性生成処理といった、クエリの発行を伴うワークロードの効率化が図れる。 As described above, according to the present embodiment, firstly, it is possible to perform the data division arrangement considering the processing cost given to the data operation by the query predicate, and the predicate in which the processing cost of the operation does not become a problem frequently. It can be avoided that predicates that are truly bottlenecks are ignored when they appear in the query. Secondly, it is possible to set a partition key for data division arrangement that makes the cost of not only the selection predicate but also the join predicate a target and makes the predicate with a truly large cost efficient. Third, by calculating the probability that the total processing time required to execute the query set when the data division arrangement is redone will be avoided, avoiding the case where the total processing time increases conversely due to the subdivision arrangement it can. Therefore, it is possible to improve the efficiency of a workload that involves issuing a query, such as an attribute generation process in which one work is completed only after executing a query that takes a long time to calculate a plurality of queries and predicates.
特に、分散データベースシステムが、分割したデータブロックに対してORCFileのようなブロック統計情報を所持する場合において、一連のクエリの実行にかかる総処理時間の減少が期待できる。 In particular, when the distributed database system possesses block statistical information such as ORFFile for the divided data blocks, it can be expected that the total processing time required for executing a series of queries will be reduced.
また、本実施形態によれば、例えば、大量クエリの中で1つ以上の列に対する高コストな選択演算や結合演算が出現する場合に、当該1つ以上の列に対してデータの再分割配置を行ってから大量のクエリを実行したほうが再分割配置しない場合に比べて総処理時間が減る見込みがあれば、当該1つ以上の列のうち最もコスト削減量が見込まれる列集合からデータ再分割配置を行うためのパーティションキーを生成できるので、一連のクエリの実行にかかる総処理時間が最小化されることが期待できる In addition, according to the present embodiment, for example, when a high-cost selection operation or join operation for one or more columns appears in a large amount of queries, data subdivision arrangement for the one or more columns If there is a possibility that the total processing time will be reduced when a large number of queries are executed after performing the query, compared to the case where the re-partitioning is not performed, the data is subdivided from the column set that is expected to reduce the most cost among the one or more columns. Since a partition key can be generated for placement, the total processing time required to execute a series of queries can be expected to be minimized.
なぜなら、クエリの述語に頻出する列集合に注目するだけでなく、その列集合を述語に含むクエリのコストに注目し、クエリセットの総処理コストが最小になるような再分割配置を行うからである。そのような再分割配置が行えるのは、式(1)等により算出されるコスト削減量に基づくパーティションキーや分割配置方法の決定による。コスト削減量に基づいて再分割配置のパーティションキーや分割配置方法を決定するので、計算コストが問題にならないような述語が頻繁にクエリに現れている場合に、真に計算のボトルネックとなっている述語が無視される問題が回避できる。また、クエリの述語ではなく述語に登場する列集合に注目することで、選択述語のみならず結合述語のコストも対象にでき、真にコストの大きな述語を効率化するデータ分割配置のためのパーティションキーを抽出できる。また、再分割配置判断手段を設けることで、不要な再分割配置を実行してしまうリスクを回避できる。 This is because not only the column set that frequently appears in the query predicate but also the cost of the query that includes the column set in the predicate, and the subdivision arrangement that minimizes the total processing cost of the query set is performed. is there. Such subdivision arrangement can be performed by determining the partition key and the division arrangement method based on the cost reduction amount calculated by the equation (1) or the like. Since the partition key and the partition placement method for subdivision placement are determined based on the amount of cost reduction, if a predicate that does not pose a problem in computation cost frequently appears in the query, it is truly a bottleneck for computation. The problem that predicates are ignored can be avoided. In addition, by focusing on the column set that appears in the predicate rather than the query predicate, it is possible to target not only the selection predicate but also the cost of the join predicate. The key can be extracted. Moreover, the risk of executing unnecessary subdivision arrangement can be avoided by providing subdivision arrangement judgment means.
なお、上記の実施形態では、分散データベースシステムが、受け付けたクエリセットに対して、データの再分割配置をするか否かおよびその方法を判断する例を示したが、データの再分割配置をするか否かを判断する手段または装置は、分散データベースシステムが備える制御装置でなくてもよい。例えば、ユーザは分散データベースシステムにクエリセットを発行する前に、別途用意されたデータ再分割配置制御装置にクエリセットを発行して、データ再分割配置制御装置が受け付けたクエリセットに対して、分散データベースシステムに格納されているデータ群に対して再分割配置をするか否かおよびその方法を判断して、判断結果に基づいて、分散データベースシステムに分割配置の命令を発行したり、クエリセットを転送してもよい。 In the above embodiment, an example has been described in which the distributed database system determines whether or not to repartition and arrange the data for the accepted query set. The means or device for determining whether or not the distributed database system does not have to be a control device. For example, before issuing a query set to a distributed database system, a user issues a query set to a separately prepared data subdivision arrangement control device and distributes the query set received by the data subdivision arrangement control device. Determine whether and how to re-partition the data group stored in the database system, and issue a split placement instruction to the distributed database system, It may be transferred.
すなわち、上記の実施形態で示したクエリセット受付手段、処理コスト推定手段、再分割配置手段、クエリ実行手段、再分割配置手段、メタデータ記憶手段は、それぞれ別々のユニットとして実現されていてもよい。また、処理コスト推定手段に含まれるとした列集合抽出手段、第1の処理コスト算出手段、分割配置方法格納手段、第2の処理コスト算出手段も、それぞれ別々のユニットとして実現されていてもよい。 That is, the query set receiving means, processing cost estimation means, subdivision arrangement means, query execution means, subdivision arrangement means, and metadata storage means described in the above embodiment may be realized as separate units. . Also, the column set extraction means, the first processing cost calculation means, the divided arrangement method storage means, and the second processing cost calculation means that are included in the processing cost estimation means may be realized as separate units. .
次に、本発明の概要を説明する。図14は、本発明の概要を示すブロック図である。図14に示すように、本発明の制御装置は、クエリセット受付手段51と、処理コスト推定手段52と、再分割配置判断手段53とを備えている。
Next, the outline of the present invention will be described. FIG. 14 is a block diagram showing an outline of the present invention. As shown in FIG. 14, the control device of the present invention includes a query set receiving
クエリセット受付手段51(例えば、クエリセット受付手段11)は、複数のデータ格納手段に分割されて格納されている所定のデータ群である対象データ群に対する、1つ以上のクエリを含むクエリセットを受け付ける。 The query set accepting unit 51 (for example, the query set accepting unit 11) selects a query set including one or more queries for a target data group that is a predetermined data group that is divided and stored in a plurality of data storage units. Accept.
処理コスト推定手段52(例えば、処理コスト推定手段12)は、対象データ群のメタデータに基づいて、対象データ群を再分割配置せずにクエリセットを実行した場合の処理コストである第1の処理コストと、対象データ群を所定の方法で再分割配置した後にクエリセットを実行した場合の処理コストである第2の処理コストとを推定する。 The processing cost estimation unit 52 (for example, the processing cost estimation unit 12) is a first processing cost that is a processing cost when a query set is executed without subdividing the target data group based on the metadata of the target data group. A processing cost and a second processing cost that is a processing cost when the query set is executed after the target data group is re-divided and arranged by a predetermined method are estimated.
再分割配置判断手段53(例えば、再分割配置判断手段13)は、処理コスト推定手段52による推定結果に基づいて、クエリセットを実行する前に、対象データ群を再分割配置するか否か、および再分割配置する場合にはどのような方法で再分割配置するかを判断する。
Based on the estimation result by the processing
このような構成を有することによって、クエリの発行を伴うワークロードの総処理時間を縮小できる。 By having such a configuration, it is possible to reduce the total processing time of a workload that involves issuing a query.
また、対象データ群は、1つ以上の列の各々に割り当てられる値を含む1つ以上の行データからなる表データであり、対象データ群は、表データにおける1つ以上の任意の列の集合である列集合をパーティションキーとして、各行データに含まれるパーティションキーの値に基づいて、1つ以上の行データを各々有する複数のデータブロックに分割されており、対象データ群のメタデータは、列の値に関する統計量を含み、処理コスト推定手段は、第2の処理コストとして、クエリセットに含まれるクエリの述語に出現する列集合をパーティションキーに用いて対象データ群を再分割配置したときのクエリセットの処理コストを、メタデータに基づいて推定し、再分割配置判断手段は、第2の処理コストのいずれかが第1の処理コストよりも小さい場合に、最も小さい第2の処理コストが得られた列集合をパーティションキーに用いて対象データ群を再分割配置すると判断してもよい。 The target data group is table data including one or more row data including values assigned to each of one or more columns, and the target data group is a set of one or more arbitrary columns in the table data. Is divided into a plurality of data blocks each having one or more row data based on the value of the partition key included in each row data, and the metadata of the target data group is a column The processing cost estimation means includes a column set appearing in the query predicate included in the query set as a second key, and the target data group is subdivided and arranged as a partition key. The processing cost of the query set is estimated based on the metadata, and the re-division arrangement determining unit determines whether any of the second processing costs is higher than the first processing cost. If again, it may be determined that subdivide arranged subject data group using a set of columns in which the smallest second processing cost obtained partitioning key.
また、受け付けたクエリセットに含まれているクエリの述語に所定の頻度以上で出現する列集合を抽出する列集合抽出手段を備え、処理コスト推定手段は、列集合抽出手段によって抽出された列集合の各々をパーティションキーの候補として、各候補について、クエリセットのうち当該候補に含まれる列を使用する述語を含むクエリの実行にかかる第1の処理コストおよび第2の処理コストを推定してもよい。 In addition, a column set extraction unit that extracts a column set that appears at a predetermined frequency or more in a query predicate included in the accepted query set is provided, and the processing cost estimation unit includes the column set extracted by the column set extraction unit. As the partition key candidates, the first processing cost and the second processing cost for executing a query including a predicate that uses a column included in the candidate of the query set for each candidate may be estimated. Good.
また、処理コスト推定手段は、パーティションキーの一候補に対して、複数の分割配置方法に対応した複数の第2の処理コストを推定し、再分割配置判断手段は、第2の処理コストのいずれかが第1の処理コストよりも小さい場合に、最も小さい第2の処理コストが得られたパーティションキーの候補と分割配置方法とを用いて対象データ群を再分割配置すると判断してもよい。 Further, the processing cost estimation means estimates a plurality of second processing costs corresponding to a plurality of division arrangement methods for one partition key candidate, and the subdivision arrangement determination means determines which of the second processing costs. If is smaller than the first processing cost, it may be determined that the target data group is subdivided and arranged using the partition key candidate and the division arrangement method that provide the smallest second processing cost.
また、複数の分割配置方法には、パーティションキーとされた列集合の値が同じである行データが同一データブロックに多く含まれるように対象データ群を分割する第1の分割方法と、全データブロックに渡りパーティションキーとされた列集合の値で行データがソートされるように対象データ群を分割する第2の分割方法とが含まれていてもよい。 The plurality of division arrangement methods include a first division method that divides the target data group so that many row data having the same column set values as partition keys are included in the same data block, and all data There may be included a second division method for dividing the target data group so that the row data is sorted by the value of the column set used as the partition key over the block.
処理コスト推定手段は、クエリの実行アルゴリズムとして所定の最適化アルゴリズムを適用して、第1の処理コストおよび第2の処理コストを推定してもよい。 The processing cost estimation means may estimate the first processing cost and the second processing cost by applying a predetermined optimization algorithm as a query execution algorithm.
また、処理コスト推定手段は、さらに、各データ格納手段を制御する計算機のディスクバンド幅または該計算機間を接続するネットワークのバンド幅に基づいて、第1の処理コストおよび第2の処理コストを推定してもよい。 The processing cost estimation means further estimates the first processing cost and the second processing cost based on the disk bandwidth of the computer that controls each data storage means or the bandwidth of the network that connects the computers. May be.
以上、実施形態及び実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。 Although the present invention has been described with reference to the embodiments and examples, the present invention is not limited to the above embodiments and examples. Various changes that can be understood by those skilled in the art can be made to the configuration and details of the present invention within the scope of the present invention.
本発明は、分析用途に限らず、大量のデータを扱う業務システムの効率化や、複雑な計算を行う計算機システムの効率化といった用途にも好適に適用できる。 The present invention can be suitably applied not only to analysis applications, but also to applications such as improving the efficiency of business systems that handle large amounts of data and improving the efficiency of computer systems that perform complex calculations.
11 クエリセット受付手段
12 処理コスト推定手段
121 列集合抽出手段
122 第1の処理コスト算出手段
123 分割配置方法格納手段
124 第2の処理コスト算出手段
13 再分割配置判断手段
14 再分割配置実行手段
15 クエリ実行手段
21 データ格納手段
22 メタデータ格納手段
51 クエリセット受付手段
52 処理コスト推定手段
53 再分割配置判断手段
DESCRIPTION OF
Claims (10)
前記対象データ群のメタデータに基づいて、前記対象データ群を再分割配置せずに前記クエリセットを実行した場合の処理コストである第1の処理コストと、前記対象データ群を所定の方法で再分割配置した後に前記クエリセットを実行した場合の処理コストである第2の処理コストとを推定する処理コスト推定手段と、
前記処理コスト推定手段による推定結果に基づいて、前記クエリセットを実行する前に、前記対象データ群を再分割配置するか否か、および再分割配置する場合にはどのような方法で再分割配置するかを判断する再分割配置判断手段とを備えた
ことを特徴とする制御装置。 Query set accepting means for accepting a query set including one or more queries for a target data group that is a predetermined data group divided and stored in a plurality of data storage means;
Based on the metadata of the target data group, a first processing cost that is a processing cost when the query set is executed without subdividing the target data group, and the target data group in a predetermined method Processing cost estimation means for estimating a second processing cost that is a processing cost when the query set is executed after the subdivision arrangement;
Based on the estimation result by the processing cost estimation means, whether or not to re-divide the target data group before executing the query set, and in what way to re-division arrangement And a subdivision arrangement determining means for determining whether or not to perform the control.
前記対象データ群は、前記表データにおける1つ以上の任意の列の集合である列集合をパーティションキーとして、各行データに含まれる前記パーティションキーの値に基づいて、1つ以上の行データを各々有する複数のデータブロックに分割されており、
前記対象データ群のメタデータは、前記列の値に関する統計量を含み、
処理コスト推定手段は、第2の処理コストとして、クエリセットに含まれるクエリの述語に出現する列集合をパーティションキーに用いて前記対象データ群を再分割配置したときの前記クエリセットの処理コストを、前記メタデータに基づいて推定し、
再分割配置判断手段は、前記第2の処理コストのいずれかが第1の処理コストよりも小さい場合に、最も小さい第2の処理コストが得られた列集合をパーティションキーに用いて前記対象データ群を再分割配置すると判断する
請求項1に記載の制御装置。 The target data group is table data composed of one or more row data including a value assigned to each of one or more columns.
The target data group includes a column set that is a set of one or more arbitrary columns in the table data as a partition key, and each set of one or more row data based on the value of the partition key included in each row data. Divided into a plurality of data blocks,
The metadata of the target data group includes a statistic regarding the value of the column,
The processing cost estimation means uses, as a second processing cost, a processing cost of the query set when the target data group is subdivided and arranged using a column set appearing in a query predicate included in the query set as a partition key. , Based on the metadata,
The subdivision arrangement determining means uses the column set from which the smallest second processing cost is obtained as a partition key when any of the second processing costs is smaller than the first processing cost. The control device according to claim 1, wherein the control unit determines that the group is to be rearranged.
処理コスト推定手段は、列集合抽出手段によって抽出された列集合の各々をパーティションキーの候補として、各候補について、前記クエリセットのうち当該候補に含まれる列を使用する述語を含むクエリの実行にかかる第1の処理コストおよび第2の処理コストを推定する
請求項2に記載の制御装置。 Column set extraction means for extracting a column set that appears at a predetermined frequency or more in a query predicate included in the accepted query set,
The processing cost estimation means executes each of the column sets extracted by the column set extraction means as a partition key candidate, and executes a query including a predicate that uses a column included in the candidate in the query set for each candidate. The control device according to claim 2, wherein the first processing cost and the second processing cost are estimated.
再分割配置判断手段は、前記第2の処理コストのいずれかが第1の処理コストよりも小さい場合に、最も小さい第2の処理コストが得られたパーティションキーの候補と分割配置方法とを用いて前記対象データ群を再分割配置すると判断する
請求項2または請求項3に記載の制御装置。 The processing cost estimation means estimates a plurality of second processing costs corresponding to a plurality of divided arrangement methods for a partition key candidate,
The re-division arrangement determining unit uses the partition key candidate and the division arrangement method that provide the smallest second processing cost when any of the second processing costs is smaller than the first processing cost. The control device according to claim 2, wherein the target data group is determined to be subdivided.
請求項4に記載の制御装置。 The plurality of division arrangement methods include a first division method that divides a target data group so that many row data having the same column set value as a partition key are included in the same data block, and all data blocks. 5. The control device according to claim 4, further comprising: a second division method that divides the target data group so that the row data is sorted by the value of the column set that is set as the transition partition key.
請求項1から請求項5のうちのいずれか1項に記載の制御装置。 The processing cost estimation means estimates a first processing cost and a second processing cost by applying a predetermined optimization algorithm as an execution algorithm of a query. The control device described.
請求項1から請求項6のうちのいずれか1項に記載の制御装置。 The processing cost estimation means further estimates the first processing cost and the second processing cost based on the disk bandwidth of each computer that controls each data storage means or the bandwidth of the network that connects the computers. The control device according to any one of claims 1 to 6.
前記所定のデータ群である対象データ群に対する、1つ以上のクエリを含むクエリセットを受け付けるクエリセット受付手段と、
前記対象データ群のメタデータを記憶するメタデータ格納手段と、
前記メタデータに基づいて、前記対象データ群を再分割配置せずに前記クエリセットを実行した場合の処理コストである第1の処理コストと、前記対象データ群を再分割配置した後で前記クエリセットを実行した場合の処理コストである第2の処理コストとを推定する処理コスト推定手段と、
前記処理コスト推定手段による推定結果に基づいて、前記クエリセットを実行する前に、前記対象データ群を再分割配置するか否か、および再分割配置する場合にはどのような方法で再分割配置するかを判断する再分割配置判断手段と、
前記再分割配置判断手段によって前記対象データ群を再分割配置すると判断された場合に、前記クエリセットを実行する前に、前記対象データ群の再分割配置を実行する再分割配置実行手段とを備えた
ことを特徴とする分散データベースシステム。 A plurality of data storage means for dividing and storing a predetermined data group into a plurality of data blocks;
Query set accepting means for accepting a query set including one or more queries for the target data group which is the predetermined data group;
Metadata storage means for storing metadata of the target data group;
Based on the metadata, a first processing cost that is a processing cost when the query set is executed without subdividing the target data group, and the query after subdividing the target data group A processing cost estimation means for estimating a second processing cost that is a processing cost when the set is executed;
Based on the estimation result by the processing cost estimation means, whether or not to re-divide the target data group before executing the query set, and in what way to re-division arrangement Subdivision arrangement judging means for judging whether to do,
Re-division arrangement execution means for executing re-division arrangement of the target data group before executing the query set when it is determined by the sub-division arrangement determination means that the target data group is re-division arrangement. A distributed database system characterized by this.
前記制御装置が、前記クエリセットを実行する前に、前記対象データ群のメタデータに基づいて、前記対象データ群を再分割配置せずに前記クエリセットを実行した場合の処理コストと、前記対象データ群を所定の方法で再分割配置した後に前記クエリセットを実行した場合の処理コストとを推定し、
前記制御装置が、前記クエリセットを実行する前に、前記推定結果に基づいて、前記クエリセットを実行する前に、前記対象データ群を再分割配置するか否か、および再分割配置する場合にはどのような方法で再分割配置するかを判断する
ことを特徴とする分割配置制御方法。 The control device accepts a query set including one or more queries for a target data group that is a predetermined data group that is divided and stored in a plurality of data storage means,
Before the execution of the query set, the control device executes the query set without subdividing the target data group based on the metadata of the target data group, and the target Estimating the processing cost when the query set is executed after the data group is re-partitioned by a predetermined method,
Whether the target data group is to be subdivided and arranged before executing the query set based on the estimation result before executing the query set, and Is a divisional placement control method characterized by determining how to re-partition placement.
複数のデータ格納手段に分割されて格納されている所定のデータ群である対象データ群に対する、1つ以上のクエリを含むクエリセットを受け付ける処理、
前記対象データ群のメタデータに基づいて、前記対象データ群を再分割配置せずに前記クエリセットを実行した場合の処理コストと、前記対象データ群を所定の方法で再分割配置した後に前記クエリセットを実行した場合の処理コストとを推定する処理、および
前記クエリセットを実行する前に、前記推定結果に基づいて、前記対象データ群を再分割配置するか否か、再分割配置する場合にはどのような方法で再分割配置するかを判断する処理
を実行させるための分割配置制御用プログラム。 On the computer,
A process of receiving a query set including one or more queries for a target data group that is a predetermined data group that is divided and stored in a plurality of data storage means;
Based on the metadata of the target data group, the processing cost when the query set is executed without subdividing the target data group, and the query after the target data group is subdivided by a predetermined method A process for estimating the processing cost when the set is executed, and whether or not the target data group is subdivided and arranged based on the estimation result before the query set is executed. Is a split placement control program for executing the process of determining how to re-partition placement.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014229618A JP6398632B2 (en) | 2014-11-12 | 2014-11-12 | Control device, distributed database system, method and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014229618A JP6398632B2 (en) | 2014-11-12 | 2014-11-12 | Control device, distributed database system, method and program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016095561A true JP2016095561A (en) | 2016-05-26 |
JP6398632B2 JP6398632B2 (en) | 2018-10-03 |
Family
ID=56071178
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014229618A Active JP6398632B2 (en) | 2014-11-12 | 2014-11-12 | Control device, distributed database system, method and program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6398632B2 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017195643A1 (en) | 2016-05-11 | 2017-11-16 | 本田技研工業株式会社 | Traveling vehicle |
KR20200114746A (en) * | 2019-03-29 | 2020-10-07 | 한국전자통신연구원 | Method and system for secure distributed data management of dynamic data |
WO2021038795A1 (en) * | 2019-08-29 | 2021-03-04 | 日本電信電話株式会社 | Database system, distributed processing device, database device, distributed processing method, and distributed processing program |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1196055A (en) * | 1997-09-19 | 1999-04-09 | Hitachi Ltd | Method and device for optimizing connection processing of data base |
US6212514B1 (en) * | 1998-07-31 | 2001-04-03 | International Business Machines Corporation | Data base optimization method for estimating query and trigger procedure costs |
US20140101205A1 (en) * | 2012-10-04 | 2014-04-10 | Oracle International Company | Efficient Pushdown Of Joins In A Heterogeneous Database System Involving A Large-Scale Low-Power Cluster |
US20140114952A1 (en) * | 2012-10-23 | 2014-04-24 | Microsoft Corporation | Optimizing queries of parallel databases |
JP2014186364A (en) * | 2013-03-21 | 2014-10-02 | Kddi Corp | Dispersion system |
US20140304219A1 (en) * | 2011-12-22 | 2014-10-09 | Yongsik Yoon | Hybrid Database Table Stored as Both Row and Column Store |
-
2014
- 2014-11-12 JP JP2014229618A patent/JP6398632B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1196055A (en) * | 1997-09-19 | 1999-04-09 | Hitachi Ltd | Method and device for optimizing connection processing of data base |
US6212514B1 (en) * | 1998-07-31 | 2001-04-03 | International Business Machines Corporation | Data base optimization method for estimating query and trigger procedure costs |
US20140304219A1 (en) * | 2011-12-22 | 2014-10-09 | Yongsik Yoon | Hybrid Database Table Stored as Both Row and Column Store |
US20140101205A1 (en) * | 2012-10-04 | 2014-04-10 | Oracle International Company | Efficient Pushdown Of Joins In A Heterogeneous Database System Involving A Large-Scale Low-Power Cluster |
US20140114952A1 (en) * | 2012-10-23 | 2014-04-24 | Microsoft Corporation | Optimizing queries of parallel databases |
JP2014186364A (en) * | 2013-03-21 | 2014-10-02 | Kddi Corp | Dispersion system |
Non-Patent Citations (1)
Title |
---|
小山田 昌史 ほか: "データの部分集約による高速かつ正確なデータ集計処理の実現", 情報処理学会研究報告, vol. Vol.2014-OS-131 No.19, JPN6018030654, 11 November 2014 (2014-11-11), JP, pages 1 - 7, ISSN: 0003853590 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017195643A1 (en) | 2016-05-11 | 2017-11-16 | 本田技研工業株式会社 | Traveling vehicle |
KR20200114746A (en) * | 2019-03-29 | 2020-10-07 | 한국전자통신연구원 | Method and system for secure distributed data management of dynamic data |
KR102193969B1 (en) * | 2019-03-29 | 2020-12-22 | 한국전자통신연구원 | Method and system for secure distributed data management of dynamic data |
WO2021038795A1 (en) * | 2019-08-29 | 2021-03-04 | 日本電信電話株式会社 | Database system, distributed processing device, database device, distributed processing method, and distributed processing program |
JPWO2021038795A1 (en) * | 2019-08-29 | 2021-03-04 | ||
JP7295461B2 (en) | 2019-08-29 | 2023-06-21 | 日本電信電話株式会社 | Database system, distributed processing device, database device, distributed processing method, and distributed processing program |
Also Published As
Publication number | Publication date |
---|---|
JP6398632B2 (en) | 2018-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10691646B2 (en) | Split elimination in mapreduce systems | |
US11645294B2 (en) | Interactive identification of similar SQL queries | |
US5806059A (en) | Database management system and method for query process for the same | |
EP3014488B1 (en) | Incremental maintenance of range-partitioned statistics for query optimization | |
US6801903B2 (en) | Collecting statistics in a database system | |
US6556988B2 (en) | Database management apparatus and query operation therefor, including processing plural database operation requests based on key range of hash code | |
US7069264B2 (en) | Stratified sampling of data in a database system | |
US9558240B2 (en) | Extending relational algebra for data management | |
US20190266154A1 (en) | High performance data profiler for big data | |
US8880485B2 (en) | Systems and methods to facilitate multi-threaded data retrieval | |
US9934304B2 (en) | Systems and methods for memory optimization interest-driven business intelligence systems | |
Han et al. | Scatter-gather-merge: An efficient star-join query processing algorithm for data-parallel frameworks | |
JP6398632B2 (en) | Control device, distributed database system, method and program | |
US9324036B1 (en) | Framework for calculating grouped optimization algorithms within a distributed data store | |
US10997175B2 (en) | Method for predicate evaluation in relational database systems | |
US8046394B1 (en) | Dynamic partitioning for an ordered analytic function | |
US11216457B1 (en) | Selectively assigning join operations for remote data processing | |
US11822582B2 (en) | Metadata clustering | |
US20240354315A1 (en) | Micro-partition clustering based on expression property metadata | |
JP3668243B2 (en) | Database management system | |
JP4422697B2 (en) | Database management system and query processing method | |
US10649812B1 (en) | Computation using tenant and commingling processors | |
US10831485B1 (en) | Flexible modular pipelined analytics | |
Manjula et al. | A methodology for data management in multidimensional warehouse | |
Zhang et al. | Determination of the Data Model for Heterogeneous Data Processing Based on Cost Estimation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20171005 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180720 |
|
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: 20180807 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180820 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6398632 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |