JP5276639B2 - 分散データベース管理装置および分散データベース管理プログラム - Google Patents
分散データベース管理装置および分散データベース管理プログラム Download PDFInfo
- Publication number
- JP5276639B2 JP5276639B2 JP2010223449A JP2010223449A JP5276639B2 JP 5276639 B2 JP5276639 B2 JP 5276639B2 JP 2010223449 A JP2010223449 A JP 2010223449A JP 2010223449 A JP2010223449 A JP 2010223449A JP 5276639 B2 JP5276639 B2 JP 5276639B2
- Authority
- JP
- Japan
- Prior art keywords
- key
- unit
- search request
- data
- primary key
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
ソートマージ法は、各サイトで結合対象となる列でソート(並べ替え)して、一方から他方(結合処理を行うサイト)へソート済みのテーブル全体を送信し、受け取ったサイトでマージ(合併)しながら結合処理を行う。
セミジョイン法は、一方のサイトから結合対象の列のみを他方のサイトに送信し、受信したサイトで結合処理を行い、結合結果を送信元に送り返す。送信元では、受信した結果に対し再度、結合処理を行う。
分散データベース管理装置10は、各DBサーバ20(20A,20B,20C,20D,…)のDBMSの処理により、分散して格納されているデータベースのデータを取得して、データベースの加工処理(データベース加工処理)を行う。このデータベース加工処理は、後の処理である検索処理の際に、自DBサーバ20内でテーブル結合が行えるように、データベースのデータを事前に加工しておくものである。具体的には、分散データベース管理装置10は、取得したデータベースのテーブルごとに、そのテーブルの主キーでレコードをソートして分割した主キー分割テーブルと、主キーおよび外部キーのスキーマのレコードを、外部キーでソートし分割した結合用テーブルを生成し、各DBサーバ20(20A,20B,20C,20D,…)それぞれに格納しておく。そして、クライアント40等から、検索要求を受け付けると、分散データベース管理装置10は、その検索要求の実行プランについて、テーブル結合条件の外部キーの結合対象となるテーブルを、結合用テーブルに書き換えて、検索処理を実行する。このようにすることにより、本実施形態に係る分散データベース管理装置10は、通信コストを発生させずにテーブル結合処理を実現させることができる。
従来のDBMSにおいて、複数のテーブル結合を含む検索処理を行う場合は、各テーブルにおける各カラム値の分布をヒストグラム等の形式で統計的に記憶しておき、テーブル結合の結果のデータ量が最小になるように結合処理を見積もることで最適プランを決定する。しかし、WHERE条件が付与されたり、テーブル結合が多段になるにしたがって、正確に最適プランを選択することが困難になっていた。本実施形態に係る分散データベース管理装置10によれば、対象となるデータベースから、例えば、ランダムサンプリングによる方法によりサンプリングデータを取得し、検索要求についての複数の実行プランを、取得したサンプリングデータに対して実行し、最も早く処理が完了した実行プランを選択する。このようにすることで、本実施形態に係る分散データベース管理装置10は、処理が最も早い最適な実行プランを用いて、検索要求の実行処理を行うことができる。
図2は、本実施形態に係る分散データベース管理装置10の構成を示す機能ブロック図である。図2に示すように、分散データベース管理装置10は、入出力部11と、制御部12と、記憶部13とを含んで構成される。
具体的には、主キー分割テーブル生成部122は、データ送受信部121が受信するデータの集合であるデータベースのテーブルごとに、そのテーブルの主キーで当該テーブルのレコードをソートする。そして、主キー分割テーブル生成部122は、そのソートしたレコードを、当該レコードの値ごとにデータを格納するDBサーバ20の数に応じた所定の範囲で分割し、主キー分割テーブルを生成する。また、主キー分割テーブル生成部122は、生成した主キー分割テーブルを記憶部13に記憶し、その記憶した主キー分割テーブルそれぞれを、各DBサーバ20(20A,20B,20C,20D,…)に分散させて送信する。各DBサーバ20では、送信されたデータを各DB200(200A,200B,200C,200D,…)に記憶する。
また、検索要求書換部125は、テーブル結合処理が複数のステップから構成される場合に、次のステップで結合対象となるキーに基づき、当該処理結果を分割する(詳細は、後記する図13および図14参照)。
なお、この実行プランは、例えば、従来技術であるbushy tree プランや、left-deep プラン等のテーブル結合の最適化法(非特許文献4:Left-deep vs. bushy trees: an analysis of strategy spaces and its implications for query optimization, ACM SIGMOD Record Volume 20, Issue 2, p.168-177, June 1991)を用いて作成される。
次に、本実施形態に係る分散データベース管理装置10の処理手順について、図2を参照しつつ、図3〜図15を用いて詳細に説明する。
図4は、本実施形態に係る分散データベース管理装置10のデータベース加工処理(図3のステップS1)の流れを示すフローチャートである。このデータベース加工処理では、図4に示すように、主キー分割テーブルの生成処理(ステップS11)と結合用テーブルの生成処理(ステップS12)とを行う。
まず、データ送受信部121は、各DBサーバ20(20A,20B,20C,20D,…)に分散して格納された各テーブルのデータを、入出力部11を介して取得する(ステップS111)。
次に、結合用テーブル生成部123は、テーブルごとの主キーおよび外部キーのスキーマを抽出し、その抽出したスキーマのレコードを、外部キーでソートする。そして、結合用テーブル生成部123は、ソートしたレコードを、外部キーが参照する主キーと同じ範囲で分割し、結合用テーブルを生成する(ステップS121)。
図7は、本実施形態に係る分散データベース管理装置10のデータ検索処理(図3のステップS2)の流れを示すフローチャートである。
なお、この検索要求書換部125の結合用テーブルを用いた書換処理については、後記する図8〜図15を用いて詳細に説明する。
次に、図7のステップS22における、検索要求書換部125による結合用テーブルを用いた検索要求の実行プランの書換処理について説明する。ここでは、図7のステップS21において、検索要求受付部124が、図8に示す検索要求(クエリ)を受け付けた例として説明する。また、図8に示す検索要求は、図5のスキーマ例で示したデータベースにおいて、「PART」,「SUPPLIER」,「LINEITEM」,「PARTSUPP」,「ORDERS」,「NATION」の6つのテーブル(from句を参照)を結合する処理であるため、多数の実行プランが想定されるが、その1つの実行プランとして、図9に示す実行プランの書換処理を行うものとする。
・「Q0」を実行
・「Q0」の結果を入力して「Q1」を実行
・「Q3」を実行
・「Q1」,「Q3」の結果を入力して「Q2」を実行
・「Q2」の結果を入力して「Q5」を実行
・「Q4」を実行
・「Q5」,「Q4」の結果を入力して「Q6」を実行
・「Q6」の結果を入力して「Q7」を実行
という順序で各部分クエリ「Q0」〜「Q7」を実行するプランである。各部分クエリ「Q0」〜「Q7」の詳細は、図10および図11に示すとおりである。
ここで、部分クエリ「Q1」におけるテーブル結合条件(where句)は、
s_suppkey = ps_suppkey
である。「s_」は「SUPPLIER」テーブルを意味し、「ps_」は、「PARTSUPP」テーブルを意味する。
検索要求書換部125は、この外部キー「suppkey」の結合条件側のテーブルである「PARTSUPP」テーブルを、結合用テーブル「partsupp_v2」に書き換える。具体的には、検索要求書換部125は、from句のテーブルを、「partsupp」(図10参照)から「partsupp_v2」(図13参照)に書き換える。ここで、図13の「Q1'」のfrom句に示す「Q0」の結果テーブルである「$Q0」はs_suppkeyをキーに分割されており、結合用テーブル「partsupp_v2」も同様にs_suppkeyをキーに分割されている。そのため、自己のDBサーバ20内だけで結合処理を行うことができる。なお、部分クエリにおける「$Q」の表記は、部分クエリ「Q」の結果テーブルを表す。
さらに、本実施形態に係る分散データベース管理装置10および分散データベース管理プログラムによれば、テーブル結合を複数回実行する実行プランを用いた検索処理において、サンプリングデータに対して複数の検索要求の実行プランを実行することで、最も早く処理が完了した実行プランを、最適実行プランとして選択することが可能となる。
次に、本実施形態の変形例について説明する。図1において示した本実施形態に係る分散データベースシステム1においては、各DBサーバ20は、DBMSにより分散処理を行うものとして説明した。本実施形態に係る変形例は、図2に示した分散データベース管理装置10と同じ構成を備えるものであるが、分散処理システムとしてDBMSの代わりにMapReduceを用いる。以下、本実施形態において説明した分散データベース管理装置10と異なる処理について説明する。
10 分散データベース管理装置
11 入出力部
12 制御部
13 記憶部
20 DBサーバ
30 ネットワーク
40 クライアント
121 データ送受信部
122 主キー分割テーブル生成部
123 結合用テーブル生成部
124 検索要求受付部
125 検索要求書換部
126 最適実行プラン選択部
127 検索実行部
200 DB(データベース)
Claims (4)
- ネットワーク上の複数のサーバに、複数のテーブルで構成されるデータベースのデータを分散して格納し、前記格納されたデータに対する検索要求を処理する分散データベース管理装置であって、
前記複数のサーバに分散して格納されたデータを受信するデータ送受信部と、
前記受信したデータの集合であるテーブルごとに、当該テーブルの主キーで当該テーブルのレコードをソートし、当該ソートしたレコードを、当該レコードの値ごとに前記データを格納する前記複数のサーバの数の応じた所定の範囲で分割した主キー分割テーブルを生成して記憶部に記憶し、前記記憶した主キー分割テーブルそれぞれを、前記複数のサーバに前記データ送受信部を介して送信する主キー分割テーブル生成部と、
前記テーブルごとの主キーおよび外部キーのスキーマを抽出し、前記抽出したスキーマのレコードを前記外部キーでソートし、当該ソートしたレコードを、前記外部キーが参照する主キーと同じ前記所定の範囲で分割した結合用テーブルを生成して前記記憶部に記憶し、前記記憶した結合用テーブルそれぞれを、前記複数のサーバに前記データ送受信部を介して送信する結合用テーブル生成部と、
前記データベースに対する前記検索要求を受け付ける検索要求受付部と、
前記受け付けた検索要求の実行プランを生成し、前記生成した実行プランに含まれるテーブル結合条件に示される前記外部キーの結合対象となるテーブルを、当該テーブルについて作成された当該外部キーの前記結合用テーブルに書き換える検索要求書換部と、
前記書き換えた検索要求の実行プランに基づき、前記主キー分割テーブルおよび前記結合用テーブルを用いて、検索処理を実行する検索実行部と、
を備えることを特徴とする分散データベース管理装置。 - 前記複数のサーバに分散して格納されたデータをサンプリングして得られるサンプリングデータベースを生成し、前記サンプリングしたデータに対して、前記検索要求を複数の実行プランで実行し、最も早く処理が完了した前記実行プランを、最適実行プランとして選択する最適実行プラン選択部をさらに備え、
前記検索実行部は、前記最適実行プラン選択部が選択した実行プランを用いて、前記書き換えた検索要求の検索処理を実行すること
を特徴とする請求項1に記載の分散データベース管理装置。 - 前記検索実行部による前記書き換えた検索要求の検索処理の実行において、MapReduceを用いる場合に、
前記主キー分割テーブル生成部は、前記受信したデータの集合であるテーブルごとに、当該テーブルの主キーを、map関数のキーとして設定し、当該設定したキーを用いてハッシュ分割することにより前記主キー分割テーブルを生成し、
前記結合用テーブル生成部は、前記テーブルごとの主キーおよび外部キーのスキーマを抽出し、前記抽出した外部キーをmap関数のキーとして設定し、当該設定したキーを用いてハッシュ分割することにより前記結合用テーブルを生成すること
を特徴とする請求項1に記載の分散データベース管理装置。 - 請求項1乃至請求項3のいずれか一項に記載の分散データベース管理装置を構成する各手段としてコンピュータを機能させるための分散データベース管理プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010223449A JP5276639B2 (ja) | 2010-10-01 | 2010-10-01 | 分散データベース管理装置および分散データベース管理プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010223449A JP5276639B2 (ja) | 2010-10-01 | 2010-10-01 | 分散データベース管理装置および分散データベース管理プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012079078A JP2012079078A (ja) | 2012-04-19 |
JP5276639B2 true JP5276639B2 (ja) | 2013-08-28 |
Family
ID=46239251
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010223449A Active JP5276639B2 (ja) | 2010-10-01 | 2010-10-01 | 分散データベース管理装置および分散データベース管理プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5276639B2 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101542299B1 (ko) | 2013-02-18 | 2015-08-07 | 단국대학교 산학협력단 | 하둡 기반의 질의 처리 방법 및 장치 |
US9779137B2 (en) | 2013-07-09 | 2017-10-03 | Logicblox Inc. | Salient sampling for query size estimation |
US10453071B2 (en) | 2013-09-09 | 2019-10-22 | UnitedLex Corp. | Interactive case management system |
WO2015123809A1 (zh) * | 2014-02-18 | 2015-08-27 | 华为技术有限公司 | 一种数据表的导入方法、数据管理器以及服务器 |
WO2016117007A1 (ja) * | 2015-01-19 | 2016-07-28 | 株式会社日立製作所 | データベースシステム及びデータベース管理方法 |
JP6405062B2 (ja) * | 2016-02-08 | 2018-10-17 | 株式会社日立製作所 | 分散データベースシステム、及び、分散データベースシステムの管理方法 |
US20190065559A1 (en) * | 2016-06-28 | 2019-02-28 | Hitachi, Ltd. | Computer system and database management method |
JP6865003B2 (ja) * | 2016-09-05 | 2021-04-28 | ヤフー株式会社 | 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1196055A (ja) * | 1997-09-19 | 1999-04-09 | Hitachi Ltd | データベースの結合処理最適化方法及び装置 |
CA2556979A1 (en) * | 2004-02-21 | 2005-10-20 | Datallegro, Inc. | Ultra-shared-nothing parallel database |
JP2006146514A (ja) * | 2004-11-18 | 2006-06-08 | Nippon Telegr & Teleph Corp <Ntt> | データベース検索システムおよび方法、プログラムおよび記録媒体 |
-
2010
- 2010-10-01 JP JP2010223449A patent/JP5276639B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2012079078A (ja) | 2012-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5276639B2 (ja) | 分散データベース管理装置および分散データベース管理プログラム | |
US10169409B2 (en) | System and method for transferring data between RDBMS and big data platform | |
US10521427B2 (en) | Managing data queries | |
US11593369B2 (en) | Managing data queries | |
US10713255B2 (en) | Spool file for optimizing hash join operations in a relational database system | |
US6801903B2 (en) | Collecting statistics in a database system | |
US10769147B2 (en) | Batch data query method and apparatus | |
Lee et al. | SQL-to-NoSQL schema denormalization and migration: a study on content management systems | |
Chen et al. | Optimization of sub-query processing in distributed data integration systems | |
CN103353901B (zh) | 基于Hadoop分布式文件系统的表数据的有序管理方法以及系统 | |
US20090043750A1 (en) | Query Optimization in a Parallel Computer System with Multiple Networks | |
CN112015741A (zh) | 一种海量数据的分库分表存储方法与装置 | |
US20160342646A1 (en) | Database query cursor management | |
US11354313B2 (en) | Transforming a user-defined table function to a derived table in a database management system | |
US9870399B1 (en) | Processing column-partitioned data for row-based operations in a database system | |
US10997175B2 (en) | Method for predicate evaluation in relational database systems | |
Tapdiya et al. | A comparative analysis of state-of-the-art sql-on-hadoop systems for interactive analytics | |
Guzun et al. | A two-phase mapreduce algorithm for scalable preference queries over high-dimensional data | |
Gu et al. | Cost-based join algorithm selection in hadoop | |
Kodabagi et al. | A text information retrieval technique for big data using Map Reduce | |
Taelman et al. | Demonstration of Link Traversal SPARQL Query Processing over the Decentralized Solid Environment. | |
Nerić et al. | Big Data Optimization Using Hive | |
Wang et al. | Research on the Application of Bank Transaction Data Stream Storage based on HBase | |
Ma | Data Communication Algorithm of HPDB Parallel Database System Based on Computer Network | |
Gupta et al. | Pragamana: performance comparison and programming-miner algorithm in relational database query language and NoSQL column-oriented using apache phoenix |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20130201 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130314 |
|
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: 20130514 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130517 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 5276639 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |