JPWO2016067370A1 - 情報処理装置、方法およびプログラム - Google Patents

情報処理装置、方法およびプログラム Download PDF

Info

Publication number
JPWO2016067370A1
JPWO2016067370A1 JP2016556087A JP2016556087A JPWO2016067370A1 JP WO2016067370 A1 JPWO2016067370 A1 JP WO2016067370A1 JP 2016556087 A JP2016556087 A JP 2016556087A JP 2016556087 A JP2016556087 A JP 2016556087A JP WO2016067370 A1 JPWO2016067370 A1 JP WO2016067370A1
Authority
JP
Japan
Prior art keywords
information processing
execution
instruction
processing apparatus
node
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
Application number
JP2016556087A
Other languages
English (en)
Other versions
JP6506773B2 (ja
Inventor
山田 浩之
浩之 山田
洋平 堤
洋平 堤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Murakumo Corp
Original Assignee
Murakumo Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Murakumo Corp filed Critical Murakumo Corp
Publication of JPWO2016067370A1 publication Critical patent/JPWO2016067370A1/ja
Application granted granted Critical
Publication of JP6506773B2 publication Critical patent/JP6506773B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Operations Research (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Fuzzy Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

情報処理装置が、管理下のデータベースに対するクエリ処理に用いるテーブルの部分の夫々を、複数の他の情報処理装置の夫々による担当部分として割り当て、複数の他の情報処理装置に対して、複数の他の情報処理装置の夫々によって管理されている同期された他のデータベースを参照して、担当部分について処理を行うよう指示することとした。

Description

本開示は、負荷分散のための技術に関する。
従来、情報の検索範囲を分担する分散検索装置であって、情報の検索を求める検索依頼を受け付ける第1の受付手段と、前記第1の受付手段によって受け付けられた検索依頼によって検索が求められている情報を、自分が担当する検索範囲内で検索する情報検索手段と、前記第1の受付手段によって受け付けられた検索依頼が求めている検索を、ネットワーク上の他の分散検索装置に依頼する第1の検索依頼手段と、前記第1の検索依頼手段が検索を依頼する他の分散検索装置を特定する装置情報を記憶する装置情報記憶手段と、前記装置情報記憶手段に記憶されている装置情報を更新する更新手段とを備え、前記第1の検索依頼手段が、他の分散検索装置に検索を依頼するに当たり、前記装置情報記憶手段に記憶されている装置情報によって特定される他の分散検索装置に検索を依頼することを特徴とする分散検索装置が提案されている(特許文献1を参照)。
また、探索対象を複数の装置で分担し、並行して処理する技術や(特許文献2を参照)、検索クエリを受け取った管理コンピューターが、各客室システムの旋律検索手段に適宜な検索範囲を指示して検索処理を分担させ、前記客室システムの前記旋律検索手段から報告された検索結果を統合して全検索範囲における検索結果を示す検索レポートを作成する技術(特許文献3を参照)、等が提案されている。
特開2001−005827号公報 特開2000−259672号公報 特開2003−108165号公報
従来、システム全体の負荷を分散するために、クエリを受け付けて実行することが可能な情報処理装置を複数備えるシステムが用いられている。このようなシステムによれば、多数のクエリを並行して処理する場合にも、比較的処理負荷の小さいクエリであれば、複数の情報処理装置にクエリを振り分けることで、処理負荷を分散することが出来る。
しかし、従来のシステムでは、夫々のクエリの処理については、比較的処理負荷の大きいクエリであっても、1の情報処理装置で実行せざるを得ず、処理負荷を分散することができない。
本開示にかかる技術は、上記した問題に鑑み、1のクエリに係る処理負荷を複数の情報処理装置に分散させることを課題とする。
本開示では、上記した課題を解決するために、以下の手段を採用した。即ち、本開示に係る情報処理装置は、データベースを管理するデータベース管理手段と、前記データベースに対するクエリに係る処理に用いられるテーブルに含まれる複数の部分の夫々を、複数の他の情報処理装置の夫々による担当部分として割り当てる割当手段と、前記複数の他の情報処理装置の夫々に対して、前記他の情報処理装置によって管理されている、前記データベースに同期された他のデータベースを参照して、前記担当部分について前記処理を行うよう指示することで、前記処理を複数の他の情報処理装置に分散実行させる、指示手段と、前記複数の他の情報処理装置から、前記担当部分についての前記処理の実行の結果を受信する結果受信手段と、前記結果受信手段によって受信された前記結果を合成することで、前記テーブルについての前記処理の実行結果を取得する合成手段と、を備える情報処理装置である。
また、前記情報処理装置は、前記テーブルについて、前記処理に用いるバージョンを決定するバージョン決定手段を更に備え、前記指示手段は、前記処理に用いるバージョンとして、前記バージョン決定手段によって決定されたバージョンを用いて前記処理を行うように、前記複数の他の情報処理装置に指示してもよい。
また、前記情報処理装置は、前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令に基づいて前記テーブルを更新した場合の更新履歴を作成する更新履歴作成手段と、前記更新履歴を、前記更新命令に係る担当部分が割り当てられた前記他の情報処理装置に通知する更新履歴通知手段と、を更に備えてもよい。
また、前記情報処理装置は、前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令を識別可能な情報を、該更新命令に係る担当部分が割り当てられた他の情報処理装置に通知する更新命令識別情報通知手段を更に備えてもよい。
また、前記情報処理装置は、前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令を識別可能な情報を、該更新命令に係る担当部分が割り当てられた他の情報処理装置に通知する更新命令識別情報通知手段と、前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令による更新が行われたバージョンを、前記テーブルについての前記処理に用いるバージョンとして決定するバージョン決定手段と、を更に備え、前記指示手段は、前記処理に用いるバージョンとして、前記バージョン決定手段によって決定されたバージョンを用いて前記処理を行うように、前記複数の他の情報処理装置に指示してもよい。
また、前記情報処理装置は、前記クエリを、ユーザー端末から受け付けるクエリ受付手段と、前記合成手段による合成によって得られた、前記テーブル全体についての前記処理の実行結果に基づいて、前記クエリへの応答を前記ユーザー端末に対して返す応答手段と、を更に備えてもよい。
また、前記情報処理装置は、前記クエリに含まれる処理の夫々を表すノードが、処理されるべき順序に従ってツリー状に配置されたプランツリーを作成するプランツリー作成手段と、前記プランツリーの解析結果に従って、前記分散実行の対象となる処理を決定する対象決定手段と、
を更に備えてもよい。
また、前記情報処理装置は、前記プランツリーに含まれる各ノードによって表される処理について、前記分散実行の可能性を判定する可能性判定手段を更に備え、前記対象決定手段は、前記可能性判定手段によって分散実行可能と判定された処理を、前記分散実行の対象として決定してもよい。
また、前記情報処理装置は、前記可能性判定手段によって分散実行不可能と判定された処理と前記プランツリーにおいて該処理より上位に接続された処理とを、前記分散実行の対象から除外する不可処理除外手段を更に備えてもよい。
また、前記可能性判定手段は、前記プランツリーにおける下位ノードから上位ノードに向けて順に判定を行ってもよい。
また、前記情報処理装置は、前記プランツリーに含まれる各ノードによって表される処理について、前記分散実行の適性を判定する適性判定手段と、前記適性判定手段によって前記分散実行に適さない処理であると判定された処理と前記プランツリーにおいて該処理より下位に接続された処理とを、前記分散実行の対象から除外する不適処理除外手段と、を更に備えてもよい。
また、前記適性判定手段は、前記プランツリーにおける上位ノードから下位ノードに向けて順に判定を行ってもよい。
また、本開示は、次のように把握することも可能である。即ち、本開示に係る情報処理装置は、他の情報処理装置によって管理される他のデータベースに同期されたデータベースを管理するデータベース管理手段と、前記他の情報処理装置が受け付けたクエリに係る処理に用いられるテーブルにおける、該情報処理装置の担当部分についての、該処理の実行指示を、前記他の情報処理装置から受け付ける指示受付手段と、前記データベース管理手段によって管理されるデータベースを参照して、前記担当部分について前記処理を実行する処理実行手段と、前記担当部分についての前記処理の実行の結果を、前記他の情報処理装置に対して送信する結果送信手段と、を備える情報処理装置である。
また、前記情報処理装置は、前記テーブルについて、前記処理に用いるバージョンを前記他の情報処理装置から取得するバージョン取得手段を更に備え、前記処理実行手段は、前記バージョンのテーブルに基づいて、前記処理を実行してもよい。
また、前記情報処理装置は、前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令に基づいて前記テーブルを更新した場合の更新履歴を、前記他の情報処理装置から取得する更新履歴取得手段を更に備え、前記処理実行手段は、前記バージョン取得手段によって取得されたバージョンのテーブルに前記更新履歴を反映した情報を参照して、前記処理を行ってもよい。
また、前記情報処理装置は、前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令を識別可能な情報を、前記他の情報処理装置から取得する更新命令識別情報取得手段と、前記更新命令を識別可能な情報に基づいて、該更新命令に基づいて更新された内容を特定する更新内容特定手段と、を更に備え、前記処理実行手段は、前記更新内容特定手段によって特定された更新内容を更に参照して、前記処理を実行してもよい。
また、前記情報処理装置は、前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令による更新が行われたバージョンを、前記他の情報処理装置から、前記テーブルについて前記処理に用いるバージョンとして取得するバージョン取得手段を更に備え、前記処理実行手段は、前記バージョンのテーブルに基づいて、前記処理を実行してもよい。
なお、本開示は、コンピューターシステム、情報処理装置、コンピューターによって実行される方法、またはコンピューターに実行させるプログラムとして把握することが可能である。また、本開示は、そのようなプログラムをコンピューターその他の装置、機械等が読み取り可能な記録媒体に記録したものとしても把握できる。ここで、コンピューター等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピューター等から読み取ることができる記録媒体をいう。
本開示に係る技術によれば、1のクエリに係る処理負荷を複数の情報処理装置に分散させることが可能となる。
実施形態に係るシステムのハードウェア構成の概略を示す図である。 実施形態に係るノードの機能構成の概略を示す図である。 実施形態において、ノードによって実行される分散実行指示処理の流れを示すフローチャートである。 実施形態において、ノードによって実行される分散実行処理の流れを示すフローチャートである。 実施形態において、ノードによって実行されるクエリ解析処理の流れを示すフローチャートである。 実施形態において作成されるプランツリーを例示する図である。 実施形態に係るノードの機能構成の概略を示す図Bである。 実施形態において、ノードによって実行される分散実行指示処理の流れを示すフローチャートBである。 実施形態において、ノードによって実行される分散実行処理の流れを示すフローチャートBである。
以下、本開示に係るシステム、情報処理装置、方法およびプログラムの実施の形態を、図面に基づいて説明する。但し、以下に説明する実施の形態は、実施形態を例示するものであって、本開示に係るシステム、情報処理装置、方法およびプログラムを以下に説明する具体的構成に限定するものではない。実施にあたっては、実施形態に応じた具体的構成が適宜採用され、また、種々の改良や変形が行われてよい。
本開示に係るシステムでは、複数の情報処理装置(ノード)が互いに通信可能に接続されている。これら複数のノードは、何れも、クエリを受け付けて実行することが可能なノードである。また、これら複数のノードは、夫々、自身が管理するデータベースを有しており、これらのデータベースは、レプリケーション技術によって同期されている。データベース同期のためのレプリケーション技術としては、例えば、トランザクションログを順次反映していくようなログベースのレプリケーション技術が採用されてよい。
ここで、例えば、大きなテーブルおよび複数の小さなテーブルを用いるJOIN構文の実行では、大きなテーブルに係る処理が比較的重い処理となる。このため、本開示では、大きなテーブルに含まれる複数の部分(これら複数の部分は、テーブルが等分されたものであってもよいし、異なるサイズに分割されたものであってもよい)の夫々について、処理を担当するノードを決定し、決定された複数のノードに処理を分散実行させる。
より具体的には、クエリを受け付けたノードは、分散実行の指示を行う分散実行指示ノードとして動作することで、テーブルの分割方法および担当等を決定し、他のノードに、クエリの内容、および各ノードの担当等を通知し、担当部分についての処理実行を指示する。指示を受けたノードは、命令実行ノードとして、担当部分についての処理を実行し、実行結果を、指示を発したノードに対して送信する。分散実行指示ノードは、分散実行を行った各命令実行ノードから送信された実行結果を受信して集計する。
<第一の実施形態>
はじめに、第一の実施形態について説明する。第一の実施形態では、分散実行の対象となっているクエリが含まれるトランザクション中の更新を考慮した分散実行を行う場合について説明する。
<<システムの構成>>
図1は、本実施形態に係るシステムのハードウェア構成の概略を示す図である。本実施形態に係るシステムは、ユーザー端末9からの検索要求(クエリ)に応答するための複数のノード(情報処理装置)1を備える。複数のノード1は、ネットワークを介して互いに通信可能に接続される。
各ノード1は、CPU(Central Processing Unit)11、RAM(Random Access Memory)12およびROM(Read Only Memory)13等からなる制御部10と、補助記憶装置14と、通信インターフェース15と、を備えるコンピューターである。但し、ノード1の具体的なハードウェア構成に関しては、実施の形態に応じて適宜省略や置換、追加が可能である。また、ノード1は、単一の装置に限定されない。ノード1は、所謂クラウドや分散コンピューティングの技術等を用いた、複数の装置によって実現されてよい。
本実施形態では、システムに属するノードが、分散実行指示ノード(分散実行を指示するノード)および命令実行ノード(分散実行の指示を受けて処理を分散実行するノード)の何れにも成り得る構成について説明する。このため、何れのノードも、分散実行の指示のための分散実行指示機能と、分散処理の対象範囲を決定するためのクエリ解析機能と、分散実行の指示を受けて処理を実行するための命令実行機能と、を備える。
但し、分散実行指示ノードと命令実行ノードは予め決定されていてもよい。この場合、分散実行指示ノードにしかならないノードは、分散実行のための命令実行機能を有さなくてもよいし、命令実行ノードにしかならないノードは、指示のための分散実行指示機能を有さなくてもよい。
なお、本実施形態では、ノードを区別することなくノード一般について述べる場合には「ノード1」と記載し、ノードを区別して述べる場合には「分散実行指示ノード1」、「命令実行ノード1」のように記載する。また、本開示に係るシステムは、階層構造を有するデータベースシステムや、マルチマスターのデータベースシステムに適用可能であるが、この際、データベースシステムにおけるマスターノードおよびスレーブノードの何れであっても、分散実行指示ノード1または命令実行ノード1とすることが出来る。
図2は、本実施形態に係るノード1の機能構成の概略を示す図である。本実施形態に係るノード1は、CPU11が、RAM12に展開された各種プログラムを解釈および実行して、ノード1に備えられた各種ハードウェアを制御することで、データベース管理部21、クエリ受付部22、割当部23、バージョン決定部24、更新履歴作成部25、更新履歴通知部26、指示部27、結果受信部28、合成部29、応答部30、プランツリー作成部31、適性判定部32、不適処理除外部33、可能性判定部34、不可処理除外部35、対象決定部36、指示受付部37、バージョン取得部38、更新履歴取得部39、処理実行部40および結果送信部41を備えるコンピューターとして機能する。
本実施形態では、ノード1の機能が汎用のCPU11によって実行される例について説明しているが、これらの機能は、その一部または全部が、1または複数の専用のプロセッサによって実現されてもよい。
データベース管理部21は、データベースを管理する。当該データベースは、データベース管理部21によって、他のノードによって管理される他のデータベースに同期されている。即ち、データベース管理部21は、レプリケーション技術によって、ネットワークを介して接続された、他のノードが管理するデータベースと、当該データベース管理部21が管理するデータベースとを同期する。
処理実行部40は、データベース管理部21によって管理されるデータベースを参照して、担当部分について処理を実行する。なお、命令実行ノードが分散実行指示ノードによる命令を受けて処理を実行する場合には、当該命令実行ノードの処理実行部40は、後述するバージョン取得部38によって取得されたバージョンのテーブルに更新履歴を反映した情報を参照して、処理を行う。
分散実行指示機能は、以下に説明するクエリ受付部22、割当部23、バージョン決定部24、更新履歴作成部25、更新履歴通知部26、指示部27、結果受信部28、合成部29および応答部30によって実現される。
クエリ受付部22は、ユーザー端末から送信されたクエリを受け付ける。
割当部23は、データベースに対するクエリに係る処理に用いられるテーブルに含まれる複数の部分の夫々を、複数の命令実行ノードの夫々による担当部分として割り当てる。具体的には、割当部23は、システムに属するノードから、分散実行の指示を行う複数のノードを選定する。そして、割当部23は、選定されたノードが分割読み出しの対象となるテーブルの何れの部分を担当するかを決定する。但し、先にテーブルを分割する数を決定し、テーブルが分割される数だけのノードを選定することとしてもよい。
バージョン決定部24は、命令実行ノード間で処理の対象となるデータに相違が生じないようにするため、テーブルについて、処理に用いるバージョンを決定する。ここで、バージョンとは、ある時点におけるデータベースの内容および状態を特定するための情報である。
更新履歴作成部25は、クエリを含むトランザクションに、テーブルに係る更新命令が含まれる場合に、当該更新命令に基づいてテーブルを更新した場合の更新履歴を作成する。更新履歴作成部25は、テーブル中の更新されたレコードを識別可能な情報と、具体的な更新の内容と、が関連づけられた情報を、更新履歴として作成する。
更新履歴通知部26は、更新履歴を、更新命令に係る担当部分が割り当てられた命令実行ノードに通知する。
本実施形態では、分散実行中のノードが更新された場合、更新履歴作成部25が更新履歴を作成し、更新履歴通知部26が更新履歴を命令実行ノードに送信することで、分散処理を行う命令実行ノードに、当該他のノードが管理するテーブルと更新履歴とを組み合わせて処理を行わせることとしている。このため、本開示に係る仕組みは、トランザクション実行中に発行された更新命令に係る更新内容に従って、当該トランザクションがコミットされる前にデータベースの実体が変更されるようなデータベースシステムに対しても、当該トランザクションがコミットされた後にデータベースの実体が変更されるようなデータベースシステムに対しても、適用することが出来る。
例えば、分散実行指示ノードにおいて実行中のトランザクションにテーブルBの更新命令(INSERTやDELETE等)が含まれており、更にテーブルAとテーブルBとのJOIN構文が含まれている場合を想定する。
このとき、トランザクションがコミットされた後にデータベースの実体が変更されるようなデータベースシステムでは、例えば「テーブルBを分散実行指示ノードがどのように更新したかという情報」は、分散実行指示ノードのメモリ上のみに存在しており、分散実行を行う命令実行ノードは、この情報を有していない。そこで、本実施形態では、分散実行の指示を送信する際に、テーブルのバージョン情報と併せて当該更新命令に係る更新履歴を送信することとしている。即ち、本実施形態において、分散実行指示ノードは、分散処理の対象となっているクエリに関連する更新履歴を、分散処理を行わせる命令実行ノードに対して優先的に送信する。命令実行ノードは、バージョン情報に示されたテーブル本体と更新履歴とを組み合わせることで得られたデータに基づいて、担当分のクエリを実行する。命令実行ノード側の処理については、更新履歴取得部39および処理実行部40による処理として改めて後述する。
一方、トランザクションがコミットされる前にデータベースの実体が変更されるようなデータベースシステムでは、命令実行ノードが処理を実行する時点において、トランザクションの更新情報は命令実行ノードに既に反映されているため、上記のような処理は必須ではない。但し、このようなデータベースシステムにおいても、本実施形態に係る処理が採用されてよい。本実施形態に係る処理を採用した場合には、仮に命令実行ノードによる処理実行時点までにデータベースの実体変更が間に合わないような状況が発生しても、問題なくクエリを処理することが出来る。
指示部27は、複数の命令実行ノードの夫々に対して、担当部分について処理を行うよう指示することで、処理を複数の命令実行ノードに分散実行させる。この際、指示部27は、各命令実行ノードによって管理されているデータベースを参照して、処理を行うよう指示する。ここで、上述の通り、各命令実行ノードによって管理されているデータベースは、分散実行指示ノードのデータベースに同期されている。また、指示部27は、処理に用いるバージョンとして、バージョン決定部24によって決定されたバージョンを用いて処理を行うように、複数の命令実行ノードに指示する。
結果受信部28は、複数の命令実行ノードから、担当部分についての処理の実行の結果を受信する。
合成部29は、結果受信部28によって受信された結果を合成することで、テーブルについての処理の実行結果を取得する。
応答部30は、合成部29による合成によって得られた、テーブル全体についての処理の実行結果に基づいて、クエリへの応答をユーザー端末に対して返す。
クエリ解析機能は、以下に説明するプランツリー作成部31、適性判定部32、不適処理除外部33、可能性判定部34、不可処理除外部35および対象決定部36によって実現される。
プランツリー作成部31は、プランツリーを作成する。ここで、プランツリーとは、クエリに含まれる処理の夫々を表すプランノード(情報処理装置を示すノードとの混同を避けるため、「プランノード」と記載する)が、処理されるべき順序に従ってツリー状に配置されたものである。
適性判定部32は、プランツリーに含まれる各プランノードによって表される処理について、処理によって発生する負荷に基づいて、分散実行の適性を判定する。即ち、適性判定部32は、プランノードに示された処理を分散実行した場合に発生する負荷を予測し、この負荷が所定以上であると予測されるような場合に、当該処理に係るプランノードを分散実行に不適なプランノードであると判定する。この際、適性判定部32は、プランツリーにおける上位プランノードから下位プランノードに向けて順に判定を行う。
不適処理除外部33は、適性判定部32によって分散実行に適さない処理であると判定された処理と、プランツリーにおいて当該処理より下位に接続された処理とを、分散実行の対象から除外する。
可能性判定部34は、プランツリーに含まれる各プランノードによって表される処理について、処理の内容に基づいて、分散実行の可能性を判定する。即ち、可能性判定部34は、プランノードに示された処理の内容が、当該システムにおいて分散実行可能な内容の処理であるか否かを判定することで、分散実行の可能性を判定する。ここで、「分散実行の可能性」は、当該システムの持つ機能や設定内容に基づいて、当該システムによって分散実行が可能か否かを示す可能性である。このため、プランノードが示す処理の内容が同一(例えば、AVERAGE構文)であっても、システムによって分散実行可能な処理と分散実行不可能な処理とが異なることがある。この際、可能性判定部34は、プランツリーにおける下位プランノードから上位プランノードに向けて順に判定を行う。
不可処理除外部35は、可能性判定部34によって分散実行不可能と判定された処理と、プランツリーにおいて当該処理より上位に接続された処理とを、分散実行の対象から除外する。
対象決定部36は、プランツリーの解析結果に従って、分散実行の対象となる処理を決定する。本実施形態では、対象決定部36は、可能性判定部34によって分散実行可能と判定された処理を、分散実行の対象として決定する。
命令実行機能は、以下に説明する指示受付部37、バージョン取得部38、更新履歴取得部39および結果送信部41によって実現される。
指示受付部37は、分散実行指示ノードが受け付けたクエリに係る処理に用いられるテーブルにおける、当該情報処理装置の担当部分についての、当該処理の実行指示を、分散実行指示ノードから受け付ける。
バージョン取得部38は、分散処理の対象となっているテーブルについて、処理に用いるバージョンを分散実行指示ノードから取得する。
更新履歴取得部39は、クエリを含むトランザクションに、テーブルに係る更新命令が含まれる場合に、当該更新命令に基づいてテーブルを更新した場合の更新履歴を、分散実行指示ノードから取得する。
結果送信部41は、担当部分についての処理の実行の結果を、分散実行指示ノードに対して送信する。
なお、上述の通り、第一の実施形態では、分散実行の対象となっているクエリが含まれるトランザクション実行中の更新を考慮する実施形態を説明している。しかし、分散実行の対象となっているクエリを実行するにあたって、当該クエリに係るトランザクション実行中のデータベースの更新を考慮しないような実施形態、換言すれば、分散実行において、当該クエリを含むトランザクションによる更新内容を無視するような実施形態では、更新履歴作成部25、更新履歴通知部26および更新履歴取得部39は省略されてよい。
<<処理の流れ>>
次に、本実施形態に係る処理の詳細を説明する。なお、本実施形態において説明される処理の具体的な内容および順序等は、本開示を実施する上での一例である。具体的な処理内容および順序等は、実施の態様に応じて適宜選択されてよい。
図3は、本実施形態において、ノード1によって実行される分散実行指示処理の流れを示すフローチャートである。本フローチャートに示された処理は、ノード1において、クエリが受け付けられたことを契機として開始される。
ステップS101からステップS103では、クエリが受信され、当該クエリを分散実行の対象とするか否かが決定される。クエリ受付部22は、ユーザー端末9から送信されたクエリを受け付ける(ステップS101)。受け付けられたクエリは、受信ノードが備えるクエリ解析機能(プランツリー作成部31、適性判定部32、不適処理除外部33、可能性判定部34、不可処理除外部35および対象決定部36)によって解析される(ステップS102)。
なお、クエリ解析機能によるクエリ解析処理(ステップS102)では、クエリに係る処理の内容が解析され、分散実行される範囲が決定される。具体的には、クエリ解析機能は、プランツリーを作成してこれを解析し、プランツリーの解析結果に従って、分散実行の対象となる処理を決定する。クエリ解析処理の具体例については、図5に示すフローチャートを用いて後述する。
クエリを受信したノードは、クエリ解析処理の結果に従って、受け付けたクエリを、自身で処理するか、または他のノードに分散実行させるかを決定する(ステップS103)。クエリ解析の結果、クエリに係る処理の一部でも分散実行の対象となった場合、処理はステップS105へ進み、以降、クエリを受信したノードは、分散実行指示ノードとして動作する。一方、クエリ解析の結果、クエリに係る処理に分散実行の対象となる部分が無かった場合、処理はステップS104へ進む。
ステップS104では、ユーザー端末9からクエリを受け付けたノード自身によって、クエリに係る処理が実行される。処理実行部40は、ステップS102で作成されたプランツリーに従って、クエリを受け付けたノードのデータベース管理部21によって管理されるデータベースを参照して、データベースに対するクエリに係る処理を実行する。即ち、この場合には分散実行は行われない。その後、処理はステップS113へ進む。
ステップS105では、処理に用いられるバージョンが決定される。バージョン決定部24は、テーブルについて、処理に用いるバージョンを決定する。その後、処理はステップS106へ進む。
ステップS106では、処理に用いられるテーブルの分割方法、および分割された各部分を担当するノードが決定される。割当部23は、クエリに係る処理に用いられるテーブルに含まれる複数の部分の夫々を、複数の命令実行ノードの夫々による担当部分として割り当てる。例えば、割当部23は、システムに属するノードから、命令実行ノードとして、複数(例えば、5つ)のノードを選定する。選定に際しては、各ノードの現在の稼働状態等が参照され、負荷がより少ないノードが選定されてよい。ノードが選定されると、割当部23は、選定された複数のノードの何れのノードがテーブルの何れの部分を担当するかを決定する。ここで、テーブルは、ノード数で等分(例えば、5等分)されてもよいし、ノードの処理能力に応じて分割されてもよい。その後、処理はステップS107へ進む。
なお、分散処理の対象となる処理が複数テーブルのJOINである場合、ステップS106では、複数のテーブルのうち何れのテーブルを分割の対象とするか決定し、決定されたテーブルが分割される。例えば、比較的大きなテーブルが1つで他のテーブルが比較的小さい場合には、通常、最も大きなテーブルを分割対象とする。
但し、分割の対象とするテーブルは1つに限定されなくてもよい。例えば、大きなテーブルが複数有り、且つ十分な数の命令実行ノードが確保できるような場合には、複数テーブルを分割対象とし、分割された異なるテーブルの部分の組み合わせを各命令実行ノードに割り当てることで、JOIN命令に係る複数のテーブルを分割読み出しの対象とすることが出来る。具体的には、例えばテーブルXをx個に分割し、テーブルYをy個に分割した場合、分割されたテーブルXの部分とテーブルYの部分との組み合わせがx*y個出来る。このため、x*y個の組み合わせの夫々について担当する命令実行ノードを決定することで、JOIN命令の分散処理において2つのテーブルを分割読み出しの対象とすることが出来る。同様の方法で、3以上のテーブルについても分割読み出しの対象とすることが可能である。
ステップS107およびステップS108では、受信クエリに係るトランザクションに当該ノードが管理するデータベースの更新命令が含まれている場合に、この更新が適用された場合の更新履歴を作成する。更新履歴作成部25は、クエリを含むトランザクションに、テーブルに係る更新命令が含まれるか否かを判定し(ステップS107)、更新命令が含まれる場合に、当該更新命令に基づいてテーブルを更新した場合の更新履歴を作成する(ステップS108)。具体的な更新履歴の作成方法は、更新履歴作成部25の説明において上述した通りである。その後、処理はステップS109へ進む。
ステップS109では、命令実行ノードに対する指示が送信される。指示部27は、ステップS106で選定された複数の命令実行ノードの夫々に対して、各々の命令実行ノードによって管理されているデータベース(これらのデータベースは、互いに同期されている)を参照して、担当部分について処理を行うよう指示することで、処理を複数の命令実行ノードに分散実行させる。この際、指示部27は、各命令実行ノードに対して、分散処理の対象となっているクエリの内容を通知し、更に、処理に用いるバージョンとして、バージョン決定部24によって決定されたバージョンを用いて処理を行うように、命令実行ノードに指示する。ここで、実施形態に係るシステムにおいてログベースのレプリケーション技術が採用されている場合には、指定されたバージョンに対応するトランザクションログを特定可能なように、指示部27は、決定されたバージョンに対応するトランザクションシーケンス番号(LSN)を通知する。
また、上記ステップS108において更新履歴が作成されている場合、更新履歴通知部26は、更新履歴を、更新命令に係る担当部分が割り当てられた命令実行ノードに通知する。その後、処理はステップS110へ進む。
ステップS109における指示が行われると、指示を受けた複数のノードは、命令実行ノードとして動作し、分散実行指示ノードからの指示に従って、各々が担当する部分について、クエリに係る処理を実行する。
図4は、本実施形態において、ノード1によって実行される分散実行処理の流れを示すフローチャートである。本フローチャートに示された処理は、ノード1において、分散実行指示ノードより送信された(図3のステップS109を参照)分散実行の指示が受け付けられたことを契機として開始される。即ち、本フローチャートは、ノードが命令実行ノードとして動作する場合のフローチャートである。
ステップS201では、分散実行指示ノードより送信された分散実行の指示が受け付けられる。具体的には、指示受付部37は、当該ノードの担当部分(分散実行指示ノードが受け付けたクエリに係る処理に用いられるテーブルにおける担当部分)についての、当該処理の実行指示を、分散実行指示ノードから受け付ける。また、バージョン取得部38は、テーブルについて、処理に用いるバージョンを分散実行指示ノードから取得する。
上述の通り、クエリを含むトランザクションに、テーブルに係る更新命令が含まれる場合には、この更新が適用された場合の更新履歴が作成され、作成された更新履歴が、更新命令に係る担当部分が割り当てられた命令実行ノードに通知される(ステップS108およびステップS109を参照)。このため、クエリを含むトランザクションに、テーブルに係る更新命令が含まれる場合、更新履歴取得部39は、当該更新命令に基づいてテーブルを更新した場合の更新履歴を、分散実行指示ノードから取得する。その後、処理はステップS202へ進む。
ステップS202では、指定されたバージョンのテーブルが揃うまでの待機処理が行われる。具体的には、命令実行ノードは、ステップS201でバージョン取得部38によって取得されたバージョンのテーブルが当該命令実行ノードに存在することが確認されるまで、待機する。例えば、実施形態に係るシステムにおいてログベースのレプリケーション技術が採用されている場合には、指定されたバージョンに対応するトランザクションログが反映されるまで待機すればよい。ここで、トランザクションログの反映有無は、例えば、分散実行指示ノードより通知されたトランザクションシーケンス番号(LSN)を参照することで知ることが可能である。その後、処理はステップS203へ進む。
ステップS203およびステップS204では、更新履歴が取得されている場合に、更新履歴を反映した情報が作成される。命令実行ノードの夫々は、ステップS201において更新履歴取得部39によって更新履歴が取得されたか否かを判定し(ステップS203)、更新履歴が取得されている場合、分散実行指示ノードから取得された更新履歴を、バージョン取得部38によって取得されたバージョンのテーブルに反映した情報を作成する(ステップS204)。より具体的には、命令実行ノードは、データベース内のレコードを1行ずつ読み出し、読み出した行のうち更新履歴が存在しない行については、データベース内のレコードを検索対象とし、読み出した行のうち更新履歴が存在する行については、データベース内のレコードに代えて、更新履歴の行を検索対象とする。但し、ここで得られたデータは検索に用いられるのみであり、当該レコードについて実際に更新が行われるのは、当該データベースが備えるレプリケーション機能によって決定されるタイミング(例えば、同期されたコミットのタイミング)である。即ち、命令実行ノードは、分散処理においては自身のデータベースを更新しなくてもよい。一方、更新履歴が取得されてない場合、ステップS204に示された処理は省略される。その後、処理はステップS205へ進む。
ステップS205では、担当する範囲に応じて実行すべき分散実行用クエリが作成される。はじめに、分散実行の指示を受けた命令実行ノードは、受信したクエリに基づいて、自身が担当する部分についての処理が実行出来るようにカスタマイズされた、分散実行用クエリを作成する。具体的には、オリジナルのクエリがテーブル全体を検索の対象としているが、当該命令実行ノードが担当する範囲が当該テーブルの一部であるような場合、オリジナルのクエリに基づいて、当該命令実行ノードが担当するテーブルのブロックを指定した分散実行用クエリを作成する。なお、本実施形態では、各命令実行ノードが、自身が実行する分散実行用クエリを作成することとしているが、各命令実行ノードが実行する分散実行用クエリを、分散実行指示ノードが予め作成して、指示に含めて命令実行ノードに通知することとしてもよい。その後、処理はステップS206へ進む。
ステップS206では、分散実行用のプランツリーが作成される。プランツリー作成部31は、分散実行用クエリに含まれる命令の夫々を表すプランノードが、実行されるべき順序に従ってツリー状に配置された、分散実行用のプランツリーを作成する。
ステップS207では、作成された分散実行用クエリが実行される。処理実行部40は、ステップS206で作成された分散実行用のプランツリーに従って、分散実行用クエリを実行する。これによって、データベース管理部21によって管理されるデータベースを参照して、担当部分についての処理が実行される。この際、処理実行部40は、ステップS204で作成された、バージョン取得部38によって取得されたバージョンのテーブルに更新履歴を反映した情報を参照して、処理を行う。その後、処理はステップS208へ進む。
ステップS208では、分散実行用クエリの実行結果が送信される。結果送信部41は、担当部分についての処理の実行の結果を、ステップS201で受信した指示の送信元である分散実行指示ノードに対して送信する。その後、図3のフローチャートに示された処理は終了する。
なお、本実施形態では、本開示の理解を容易にするために、命令実行ノードが、自身が担当する部分についての処理を実行するための分散実行用クエリを作成し、これを実行する実施例を説明しているが、各命令実行ノードによる分散実行は、本実施形態に説明するような分散実行用クエリに拠らなくてもよい。例えば、命令実行ノードは、分散実行指示ノードがステップS102で作成したプランツリーの全部または一部を受け取ることで、分散実行用クエリを作成すること無く、受け取ったプランツリーに基づいて当該命令実行ノードが担当するテーブル内のブロック等が指定された分散実行用のプランツリーを作成することが出来る。後述するプランツリー上のノードのうち、自身が担当するノードの構文を、直接、テーブルのうち自身が担当する部分に対して実行することが出来る。
次に、図3に戻り、分散実行指示ノードによる処理の続きを説明する。
ステップS110およびステップS111では、分散実行の指示を受けた命令実行ノードから送信された処理の実行結果が受信され、集計される。結果受信部28は、複数の命令実行ノードから、担当部分についての処理の実行の結果を受信する(ステップS110)。そして、合成部29は、結果受信部28によって複数の命令実行ノードから受信された結果、およびステップS110における自身による実行結果を合成することで、テーブルについての処理の実行結果を取得する(ステップS111)。その後、処理はステップS112へ進む。
ステップS112では、ユーザー端末9からクエリを受け付けたノード自身が担当する処理が実行される。処理実行部40は、ステップS102で作成されたプランツリーに従って、クエリを受け付けたノードのデータベース管理部21によって管理されるデータベースを参照して、データベースに対するクエリに係る処理のうち、分散実行の範囲外となった処理を実行する。この際、処理実行部40は、必要に応じて、ステップS111において得られた分散実行の結果を利用する。その後、処理はステップS113へ進む。
ステップS113では、ステップS110からステップS112までの処理で得られたクエリの実行結果、またはステップS104において自ノードで実行されることで得られたクエリの実行結果が、ユーザー端末に対して送信される。応答部30は、クエリの実行結果がステップS110からステップS112までの処理によって得られている場合には、合成部29による合成によって得られた、テーブル全体についての処理の実行結果に基づいて、クエリへの応答をユーザー端末に対して返す。一方、応答部30は、クエリの実行結果がステップS104において得られている場合には、この実行結果をユーザー端末に対して返す。その後、図4のフローチャートに示された処理は終了する。
本実施形態に係るシステムによれば、図3および図4を用いて上記説明した分散実行指示処理および分散実行処理が、システムに所属する複数のノードのうち、クエリを受信したノード(分散実行指示ノード)および分散実行指示を受けたノード(命令実行ノード)によって処理されることによって、クエリの分散実行が実現され、1のクエリに係る処理負荷を複数の情報処理装置に分散させることが出来る。
また、本開示の技術によれば、複数のノードの各々が互いに同期されたデータベースを管理しているため、分散実行するか否か、および分散する場合の担当を自由に決定することが可能である。更に、本開示の技術によれば、例えば、先述したJOIN構文のような構文を実行する際の処理も分散することが可能である。加えて、分割の態様(分割される数や分割される部分のサイズ等)も、各ノードの負荷に応じて適宜変更することが可能である。
次に、分散実行の範囲を決定するためのクエリ解析処理の流れについて説明する。但し、本実施形態において説明するクエリ解析処理は、分散実行される範囲を決定するための処理の一例である。分散実行される範囲を決定するための処理には、他のアルゴリズムが採用されてもよい。
図5は、本実施形態において、ノード1によって実行されるクエリ解析処理の流れを示すフローチャートである。本フローチャートに示された処理は、図3に示した分散実行指示処理における、ステップS102の処理に相当する。
ステップS301では、プランツリーが作成される。プランツリー作成部31は、クエリに含まれる命令の夫々を表すプランノードが、実行されるべき順序に従ってツリー状に配置されたプランツリーを作成する。
図6は、本実施形態において作成されるプランツリーを例示する図である。本開示に係る分散実行を行う場合、プランツリーを作成してこれを解析し、クエリに含まれる何れの命令を分散実行の対象とするか決定する。解析では、ツリーの根から末端、そして末端から根に向けて分散実行の適否や可否を判定しながら、分散実行の対象とする範囲を決定していく。
生成されたプランツリーの各プランノードは、クエリに含まれる各命令(構文)を示す。プランツリーには、ツリーの葉(即ち、最下位のプランノード)に示された命令から実行が開始された後、命令の実行が終わると実行結果が上位のプランノード(親プランノード)に渡され、実行結果を受けたプランノードに示された命令が実行されることが繰り返されることでクエリが処理される流れが示されている。プランツリーが作成されると、処理はステップS302へ進む。
ステップS302からステップS305では、プランツリー上のプランノードについて、分散実行に適しているか否かが判定される。適性判定部32は、プランツリーに含まれる各プランノードによって表される命令について、分散実行の適性を判定する(ステップS303)。そして、不適処理除外部33は、適性判定部32によって分散実行に適さないと判定された命令とプランツリーにおいて当該命令より下位に接続された命令とを、分散実行の対象から除外する(ステップS304)。
図6に示されたプランツリーでは、クエリ中にREPEAT構文等が存在する。ここで、REPEAT構文を実行するための分散実行の指示と実行結果の取得とがネットワークを介して複数回に亘って行われた場合、命令実行ノードから分散実行指示ノードへの通信におけるネットワークが飽和してしまう可能性がある。また、REPEAT構文が先の命令の結果を再帰的に利用するものであった場合、実行結果を得た分散実行指示ノードが命令実行ノードに対して繰り返し処理の都度実行結果に基づく値を指示する必要がある等、処理が煩雑になる可能性がある。このため、適性判定部32は、REPEAT構文に係るプランノードの命令を、分散実行に適さない命令として判定し、不適処理除外部33は、当該プランノードおよびその下位のプランノードに係る命令を、分散実行の対象から除外する。
上記処理では、分散実行に適さないと判定された命令およびその下位の命令が分散実行の対象から除外されるため、プランツリーにおける上位プランノードから順に判定していくことが効率的である。このため、適性判定部32による判定は、プランツリーにおける上位プランノードから下位プランノードに向けて順に行われる(ステップS302)。全てのプランノードについて判定または除外が完了すると(ステップS305)、処理はステップS306へ進む。なお、分散実行に適していない命令であっても、分散実行が不可能ということではない。このため、ステップS302からステップS305に示した処理は、省略されてもよい。
ステップS306からステップS309では、プランツリー上のプランノードについて、分散実行が可能であるか否かが判定される。可能性判定部34は、プランツリーに含まれる各プランノードのうち、ステップS304で除外されなかったプランノードによって表される命令について、分散実行の可能性を判定する(ステップS307)。本実施形態において、可能性判定部34は、以下に説明する方法で、プランノードに係る命令の分散実行可能性を判定する。具体的には、可能性判定部34は、
(1)プランノードに示された命令が予め用意されたリストにあり、且つ
(2)当該命令の実行時点において、命令実行ノードが当該命令の実行のために必要なテーブル等の情報を有することとなる
場合、当該プランノードに示された命令を、分散実行可能な命令であると判定する。
(1)の条件は、プランノードに係る命令自体が、分散実行が出来る種類の命令であることを確認するためのものであり、分散実行指示ノードは、予め分散実行が可能な種類の命令(構文)を列挙したリストを有している。本実施形態では、例えば、READ命令やJOIN命令が、分散実行が可能な種類の命令としてリストに保持されている。但し、分散実行が可能/不可能な命令の種類は、本実施形態における例示に限定されず、実施形態に係るシステムが備える分散実行機能や設定内容に基づいて決定される。
(2)の条件は、上記(1)の条件を満たすプランノードであっても、当該プランノードを実行する命令実行ノードが、命令の実行のために必要なテーブル等の情報を有していない場合には分散実行が不可能となるため、これを判定するための条件である。例えば、判定対象のプランノードが示す命令が、「当該プランノードの下位プランノードを処理する際に、当該命令実行ノードが処理結果として得た部分」、および/または「当該プランノードを実行する命令実行ノードが管理しているテーブル」のみを参照して実行可能な命令であれば、上記(2)の条件を満たすため、分散実行を指示されたノードが、指示された分散実行に必要な情報を全て把握可能であるといえる。「当該プランノードの下位プランノードを処理する際に、当該命令実行ノードが処理結果として得た部分」としては、例えば、当該プランノードがJOIN命令のプランノードである場合に、当該命令実行ノードが、下位のREAD命令プランノードの処理で読み出したテーブルの部分や、当該命令実行ノードが、下位のJOIN命令プランノードの処理で得た処理結果、等が挙げられる。一方、他のノードによる命令の実行結果から得られる情報のような、命令実行ノードが有していない情報が必要となるプランノードの命令は、分散実行出来ない。そして、分散実行出来ないプランノードの実行結果も、当該命令実行ノードは有することが出来ないため、分散実行出来ないプランノードより上位のプランノードも、同様に分散実行出来ない。
図6に示されたREAD命令について検討する。判定対象のプランノードが示す命令がREAD命令である場合、上述の通りREAD命令は前記リストに保持されており、またデータ中のテーブルは全てのノードにレプリケーションされているため、当該READ命令のプランノードは上記(1)および(2)の条件を満たし、分散実行可能であると判定される。即ち、最も下位のREAD命令プランノードは、何れも分散実行可能である。図6に示した例では、テーブルA、BおよびCのREAD処理を示すプランノードが、分散実行可能と判定される。なお、テーブルDおよびEのREAD処理を示すプランノードは、ステップS302からステップS305の処理で分散実行に適さないと判定されたプランノードに従属しており、可能性判定部34による分散実行可能性の判定対象から既に除かれている。
次に、図6に示されたJOIN命令について検討する。上述の通り、JOIN命令は分散実行が可能な種類の命令としてリストに保持されているため、(1)の条件は満たされる。ここで、上位のプランノードでは、各命令実行ノードが、自身が分割読み出しを担当して読み出した部分の情報しか有していない可能性がある。これは、分散実行可能な、より下位のREAD命令プランノードが、テーブルを分割して読み出す可能性があるためである。但し、より下位のREAD命令プランノードにおいてテーブルの分割読み出しが行われた場合でも、各命令実行ノードに処理させるJOIN処理の対象部分を、分割読み出しにおいて当該命令実行ノードが読み出した部分とすれば、上記(2)の条件を満たすことが出来る。
なお、図6に示した例では、テーブルA、BおよびCのREAD処理を示すプランノードが、分散実行可能と判定されるが、JOIN命令プランノードの下位プランノードにおいて複数テーブルを分割読み出しの対象とすることも可能であるのは、ステップS106の説明において上述した通りである。但し、本実施形態では、複数のテーブルについてREAD処理が分散実行可能であると判定された場合、最も大きいテーブル(READ処理の負荷が最も高いテーブル)のみを分割読み出しの対象とする。
一方、プランツリーの途中に、例えばJOIN構文の実行によって結合されたテーブルの平均値を計算するプランノード(AVERAGE構文)がある場合、分散実行指示ノード以外のノード(命令実行ノード)は、JOIN構文の実行によって得られた結果の全体を有していないため、(2)の条件を満たさず、本実施形態に係るシステムでは、当該プランノードを分散実行可能ではないと判定される(ステップS307を参照)。このため、本実施形態において、このプランノードは分散実行指示ノードが自身によって実行される。なお、本実施形態では、上記リストにAVERAGE命令は保持されておらず、当該プランノードは、(1)の条件も満たさない。但し、分散実行の可能/不可能は、上述の通り、実施形態に係るシステムが備える分散実行機能や設定内容に基づいて判定される。例えば、本実施形態では、AVERAGE構文を分散実行するための機能を備えない実施形態について説明したが、AVERAGE構文を分散実行するための機能を備えるシステムにおいては、AVERAGE命令が前記リストに保持されてよい。AVERAGE命令が前記リストに保持される実施形態では、下位プランノードが単純なREAD命令である等の理由で(2)の条件を満たせば、AVERAGE命令のプランノードは分散実行可能である。
図6に示されたプランツリーでは、最下位のプランノードから順に見ていくと、「READ A」のプランノード、「READ B」のプランノード、「JOIN AB」のプランノード、「READ C」のプランノード、および「JOIN ABC」のプランノードが分散実行可能である。
プランノードに示された命令が分散実行可能な命令であると判定された場合、処理はステップS309へ進む。一方、プランノードに示された命令が分散実行可能な命令でないと判定された場合、処理はステップS308へ進む。不可処理除外部35は、可能性判定部34によって分散実行不可能と判定された命令とプランツリーにおいて当該命令より上位に接続された命令とを、分散実行の対象から除外する(ステップS308)。
上記処理では、分散実行が不可能であると判定された命令およびその上位の命令が分散実行の対象から除外されるため、プランツリーにおける下位プランノードから順に判定していくことが効率的である。このため、可能性判定部34による判定は、プランツリーにおける下位プランノードから上位プランノードに向けて順に行われる(ステップS306)。全てのプランノードについて判定または除外が完了すると(ステップS309)、処理はステップS310へ進む。
ステップS310では、分散実行の対象となる命令が決定される。対象決定部36は、プランツリーの解析結果に従って、分散実行の対象となる命令を決定する。本実施形態では、対象決定部36は、可能性判定部34によって分散実行可能と判定された命令を、分散実行の対象として決定する。図6に示されたプランツリーでは、「READ A」のプランノード、「READ B」のプランノード、「JOIN AB」のプランノード、「READ C」のプランノード、および「JOIN ABC」のプランノードが分散実行の対象として決定される。その後、本フローチャートに示された処理は終了する。
本実施形態では、このようなクエリ解析処理が実行されることで、本実施形態に係る環境において分散実行に適した命令を適切に判定し、分散実行の対象とすることが出来る。
<第二の実施形態>
次に、第二の実施形態について説明する。第二の実施形態においても、第一の実施形態と同様、分散実行の対象となっているクエリが含まれるトランザクション中の更新を考慮した分散実行を行う場合について説明する。なお、以下の説明および図7以降の図面において、第一の実施形態と共通する構成については、同一の符号をもって示し、説明を省略する。
<<システムの構成>>
第二の実施形態に係るシステムのハードウェア構成は、第一の実施形態に係るシステムのハードウェア構成と概略同様であるため、説明を省略する(図1を参照)。
図7は、本実施形態に係るノード1の機能構成の概略を示す図である。本実施形態に係るノード1は、CPU11が、RAM12に展開された各種プログラムを解釈および実行して、ノード1に備えられた各種ハードウェアを制御することで、データベース管理部21、クエリ受付部22、割当部23、バージョン決定部24、更新命令識別情報通知部26b、指示部27、結果受信部28、合成部29、応答部30、プランツリー作成部31、適性判定部32、不適処理除外部33、可能性判定部34、不可処理除外部35、対象決定部36、指示受付部37、バージョン取得部38、更新命令識別情報取得部39b、更新内容特定部39c、処理実行部40および結果送信部41を備えるコンピューターとして機能する。
即ち、本実施形態に係るノード1は、更新履歴作成部25および更新履歴通知部26に代えて更新命令識別情報通知部26bが採用され、更新履歴取得部39に代えて更新命令識別情報取得部39bおよび更新内容特定部39cが採用されている点で、第一の実施形態に係るノード1と異なる。また、本実施形態においても、ノード1の機能が汎用のCPU11によって実行される例について説明しているが、これらの機能は、その一部または全部が、1または複数の専用のプロセッサによって実現されてよい。
更新命令識別情報通知部26bは、クエリを含むトランザクションに、テーブルに係る更新命令が含まれる場合に、当該更新命令を識別するための情報を、当該更新命令に係る担当部分が割り当てられた命令実行ノードに通知する。同期されている複数のデータベース間で同一のトランザクションIDが用いられるシステムである場合には、当該更新命令が含まれるトランザクションのトランザクションIDを通知することで、トランザクションIDの通知を受けた命令実行ノードは、更新命令に係るトランザクションを特定し、更新内容を参照することが出来る。なお、本実施形態に係るシステムでは、複数のデータベース間で同一のトランザクションIDが用いられるため、更新命令を識別するための情報としてトランザクションIDが用いられるが、用いられる情報はトランザクションIDに限定されず、更新命令を識別可能な情報であればよい。
更新命令識別情報取得部39bは、分散実行指示ノードの更新命令識別情報通知部26bによって通知されるトランザクションID(更新命令を識別可能な情報)を取得する。
更新内容特定部39cは、更新命令識別情報取得部39bによって取得されたトランザクションIDに基づいて、当該更新命令に基づいて更新された内容を特定する。
即ち、第二の実施形態では、第一の実施形態で採用された更新履歴の送受信に代えて、更新命令を識別可能な情報(トランザクションID)の送受信を採用することで、分散実行の対象となっているクエリが含まれるトランザクション中の更新を考慮した分散実行を可能としている。
<<処理の流れ>>
次に、本実施形態に係る処理の詳細を説明する。なお、本実施形態において説明される処理の具体的な内容および順序等は、本開示を実施する上での一例である。具体的な処理内容および順序等は、実施の態様に応じて適宜選択されてよい。
図8は、本実施形態において、ノード1によって実行される分散実行指示処理の流れを示すフローチャートである。本フローチャートに示された処理は、ノード1において、クエリが受け付けられたことを契機として開始される。
ステップS401からステップS404の処理は、第一の実施形態において図3を用いて説明したステップS101からステップS104の処理と概略同様であるため、説明を省略する。
ステップS405では、処理に用いられるバージョンが決定される。バージョン決定部24は、テーブルについて、処理に用いるバージョンを決定する。なお、本実施形態では、レプリケーションにおいてデータベースの実体が変更されるデータベースが採用されており、当該クエリを含むトランザクションに更新命令が含まれる場合、ここで決定されるバージョンは、当該更新命令によってデータベースの実体が変更されたバージョンである(第一の実施形態と異なる)。その後、処理はステップS406へ進む。
ステップS406では、処理に用いられるテーブルの分割方法、および分割された各部分を担当するノードが決定される。ステップS406の処理は、第一の実施形態におけるステップS106の処理と概略同様であるため、説明を省略する。
ステップS407およびステップS408では、受信クエリに係るトランザクションに当該ノードが管理するデータベースの更新命令が含まれている場合に、この更新命令を識別するためのトランザクションIDが特定される。更新命令識別情報通知部26bは、クエリを含むトランザクションに、テーブルに係る更新命令が含まれるか否かを判定し(ステップS407)、更新命令が含まれる場合に、当該更新命令が含まれるトランザクションのトランザクションIDを特定する(ステップS408)。その後、処理はステップS409へ進む。
ステップS409では、命令実行ノードに対する指示が送信される。指示部27は、ステップS406で選定された複数の命令実行ノードの夫々に対して、各々の命令実行ノードによって管理されているデータベース(これらのデータベースは、互いに同期されている)を参照して、担当部分について処理を行うよう指示することで、処理を複数の命令実行ノードに分散実行させる。この際、指示部27は、各命令実行ノードに対して、分散処理の対象となっているクエリの内容を通知し、更に、処理に用いるバージョンとして、バージョン決定部24によって決定されたバージョンを用いて処理を行うように、命令実行ノードに指示する。ここで、実施形態に係るシステムにおいてログベースのレプリケーション技術が採用されている場合には、指定されたバージョンに対応するトランザクションログを特定可能なように、指示部27は、決定されたバージョンに対応するトランザクションシーケンス番号(LSN)を通知する。
また、上記ステップS408においてトランザクションIDが特定されている場合、更新命令識別情報通知部26bは、特定されたトランザクションIDを、更新命令に係る担当部分が割り当てられた命令実行ノードに通知する。その後、処理はステップS410へ進む。
ステップS409における指示が行われると、指示を受けた複数のノードは、命令実行ノードとして動作し、分散実行指示ノードからの指示に従って、各々が担当する部分について、クエリに係る処理を実行する。
図9は、本実施形態において、ノード1によって実行される分散実行処理の流れを示すフローチャートである。本フローチャートに示された処理は、ノード1において、分散実行指示ノードより送信された(図8のステップS409を参照)分散実行の指示が受け付けられたことを契機として開始される。即ち、本フローチャートは、ノードが命令実行ノードとして動作する場合のフローチャートである。
ステップS501からステップS502の処理は、第一の実施形態において図4を用いて説明したステップS201からステップS202の処理と概略同様であるため、説明を省略する。但し、上述の通り、クエリを含むトランザクションに、テーブルに係る更新命令が含まれる場合には、この更新命令に対応するトランザクションIDが特定され、更新命令に係る担当部分が割り当てられた命令実行ノードに通知される(ステップS408およびステップS409を参照)。このため、クエリを含むトランザクションに、テーブルに係る更新命令が含まれる場合、更新命令識別情報取得部39bは、当該更新命令に対応するトランザクションIDを、分散実行指示ノードから取得する。
ステップS503およびステップS504では、トランザクションIDが取得されている場合に、トランザクションIDに対応する更新内容が特定される。命令実行ノードの夫々は、ステップS501において更新命令識別情報取得部39bによってトランザクションIDが取得されたか否かを判定する(ステップS503)。そして、トランザクションIDが取得されている場合、更新内容特定部39cは、分散実行指示ノードから取得されたトランザクションIDに基づいて、当該更新命令に基づいて変更された内容を特定する(ステップS504)。本実施形態では、レプリケーションにおいてデータベースの実体が変更されるデータベースが採用されているため、トランザクションIDに基づいて、更新命令に対応する変更内容が特定出来る。一方、トランザクションIDが取得されてない場合、ステップS504に示された処理は省略される。その後、処理はステップS505へ進む。
ステップS505からステップS506の処理は、第一の実施形態において図4を用いて説明したステップS205からステップS206の処理と概略同様であるため、説明を省略する。
ステップS507では、作成された分散実行用クエリが実行される。処理実行部40は、ステップS506で作成された分散実行用のプランツリーに従って、分散実行用クエリを実行する。これによって、データベース管理部21によって管理されるデータベースを参照して、担当部分についての処理が実行される。この際、処理実行部40は、バージョン取得部38によって取得されたバージョンのテーブルを参照して、処理を行う。このバージョンは、ステップS405において説明した通り、オリジナルのクエリを含むトランザクションに更新命令が含まれる場合、当該更新命令によってデータベースの実体が変更されたバージョンである。
また、この際、データベース間のレプリケーションが行われてデータが同期されていても、一般的には、当該トランザクションの実行中には、命令実行ノードにおいて当該トランザクションに係る(コミットされていない)更新内容を参照することが出来ない。本実施形態では、命令実行ノードは、分散実行指示ノードから通知されたトランザクションIDに基づいて、データベースの変更済みの実体を参照することで、実行中のトランザクションに係る(コミットされていない)更新内容を参照する。このため、本実施形態に係るシステムによれば、分散実行の対象となっているクエリが含まれるトランザクション中の更新を考慮した分散実行を行うことが出来る。その後、処理はステップS508へ進む。
ステップS508では、分散実行用クエリの実行結果が送信される。ステップS508の処理は、第一の実施形態におけるステップS208の処理と概略同様であるため、説明を省略する。また、各命令実行ノードによる分散実行において分散実行用クエリの作成を省略してもよいことは、第一の実施形態と同様である。
次に、図8に戻り、分散実行指示ノードによる処理の続きを説明する。
ステップS410からステップS413の処理は、第一の実施形態において図3を用いて説明したステップS110からステップS113の処理と概略同様であるため、説明を省略する。
また、分散実行の範囲を決定するためのクエリ解析処理の流れについては、第一の実施形態において図5を用いて説明した処理の流れと同様であるため、説明を省略する。
上記説明した第二の実施形態によれば、トランザクション実行中の更新結果が同期されている保証がないデータベースシステムであっても、分散実行の対象となっているクエリが含まれるトランザクション中の更新を考慮した分散実行を行うことが出来る。また、第二の実施形態によれば、トランザクションIDを用いて更新内容が特定されるため、分散実行指示ノードと命令実行ノードとの間で更新履歴を送受信する必要がない。
<第三の実施形態>
第三の実施形態では、トランザクション実行中の更新結果まで完全に同期されるようなデータベースシステムにおいて採用可能な実施形態について説明する。このようなデータベースシステムが用いられている場合には、上記第二の実施形態において説明した、バージョンの決定および待機に係る処理が不要となる。
より具体的には、第三の実施形態では、図7を用いて説明したノード1の機能構成のうち、バージョン決定部24およびバージョン取得部38が省略されてよい(図示は省略する)。また、図8および図9を用いて説明した処理の流れのうち、バージョンの決定および待機に関連するステップS405、ステップS502が不要となり、また、ステップS409およびステップS501においても、バージョンに係る情報を送受信しなくてよい(図示は省略する)。
また、ステップS507における分散実行用クエリの実行においては、処理実行部40は、テーブルのバージョンを意識することなく、分散実行用のプランツリーに従って、分散実行用クエリを実行すればよい。この際、命令実行ノードは、分散実行指示ノードから通知されたトランザクションIDに基づいて、実行中のトランザクションに係る更新内容を参照し、トランザクション中の更新を考慮した分散実行を行う。
<バリエーション>
なお、本開示では、処理の分散方法および担当はクエリを受けたノードが決定し、他のノードに分散するが、分散実行の指示を受けたノードが、自身に割り当てられた担当部分を更に分散させて、その他のノードに分散実行指示可能であってもよい。例えば、システム上のノードがツリー上の親子関係をもって接続されている場合、親ノードから命令実行の指示を受けた子ノードは、更に下位のノード(孫ノード)に対して、分散実行の指示を行うことが出来る。この場合、当該子ノードは、前記親ノードから見て命令実行ノードとなるが、前記孫ノードに対しては分散実行指示ノードとなる。
また、システム上のノードは、分散実行指示や実行結果を中継するプロキシノードとして動作してもよい。この場合、プロキシノードは、分散実行の指示を受信すると、この指示を他のノードに転送する。転送を受けたノードは、命令実行ノードとして動作し、実行結果をプロキシノードに送信する。実行結果を受信したプロキシノードは、これを分散実行の指示送信元のノードに転送する。
また、本実施形態では、レプリケーション技術によって複数のノード間でデータベースの内容が同期されるデータベースシステムに基づいて説明したが、レプリケーション技術によってノード間で同期される内容は、データベースの全体ではなく、データベースの一部であってもよい。即ち、本開示は、各ノードが自身の担当するデータベースの一部のみをレプリケーション技術によって同期するような、部分レプリケーションに係るデータベースシステムに適用されてもよい。
このようなデータベースシステムにおいて本開示に係る分散実行を行う場合、各命令実行ノードは、データベースのうち当該命令実行ノードに部分レプリケーションされている部分を、分散実行指示ノードに通知する。分散実行指示ノードは、このような通知を受けることで、各命令実行ノードに部分レプリケーションされている部分を把握することが出来る。但し、分散実行指示ノードが、各命令実行ノードに部分レプリケーションされている部分を把握するための方法には、分散実行指示ノードが部分レプリケーションの設定情報を参照する方法や、分散実行指示ノードが各命令実行ノードに問い合わせる方法等、その他の方法が採用されてもよい。
各命令実行ノードに部分レプリケーションされている部分を把握した分散実行指示ノードにおいて、割当部23は、クエリに係る処理に用いられるテーブルに含まれる複数の部分のうち、該当する部分がレプリケーションされているデータベースを管理する命令実行ノードに対して、当該部分を担当部分として優先的に割り当てる。このようにすることで、指示部27は、各命令実行ノードに部分レプリケーションされている部分が、当該命令実行ノードによる分散実行の担当部分となるように、分散実行の指示を行う。
上記説明したバリエーションでは、本開示に係る分散実行技術と、部分レプリケーション技術とを組み合わせることで、データベース全体を全てのノードにレプリケーションすることなく、全てのノードがデータベース全体を保持しているかのようにクエリを処理することが出来る。即ち、このようなバリエーションによれば、ストレージやネットワーク、プロセッサ等のリソースを節約しつつ、負荷を分散することが出来る。
また、本開示に係る技術は、各ノードがデータベースの全体にアクセス出来るが、各ノードが比較的高速にアクセスできる部分がデータベースの一部に限られているために、当該部分以外へのアクセスが比較的低速になってしまうようなデータベースシステム(即ち、データベース中の各部分によってアクセス速度が異なるデータベース)に適用されても良い。このようなデータベースは、例えば、データベースの全体は比較的低速のストレージに保持され、各ノードがデータベースの一部のみを比較的高速のストレージに保持するようなデータベースシステムである。
このようなデータベースシステムにおいて本開示に係る分散実行を行う場合、各命令実行ノードは、データベースのうち自身が高速にアクセス出来る部分を、分散実行指示ノードに通知する。分散実行指示ノードは、このような通知を受けることで、各命令実行ノードが高速にアクセス出来る部分を把握することが出来る。但し、分散実行指示ノードが、各命令実行ノードが高速にアクセス出来る部分を把握するための方法には、分散実行指示ノードが各命令実行ノードの設定情報を参照する方法や、分散実行指示ノードが各命令実行ノードに問い合わせる方法等、その他の方法が採用されてもよい。
各命令実行ノードが高速にアクセス出来る部分を把握した分散実行指示ノードにおいて、割当部23は、クエリに係る処理に用いられるテーブルに含まれる複数の部分のうち、該当する部分に高速にアクセス出来る命令実行ノードに対して、当該部分を担当部分として優先的に割り当てる。このようにすることで、指示部27は、各命令実行ノードが高速にアクセス出来る部分が、当該命令実行ノードによる分散実行の担当部分となるように、分散実行の指示を行う。
上記説明したバリエーションによれば、本開示に係る分散実行技術を用いて、各ノードが高速にアクセス出来る部分を組み合わせることで、データベース全体に対して高速なアクセスを実現することが出来る。

Claims (23)

  1. データベースを管理するデータベース管理手段と、
    前記データベースに対するクエリに係る処理に用いられるテーブルに含まれる複数の部分の夫々を、複数の他の情報処理装置の夫々による担当部分として割り当てる割当手段と、
    前記複数の他の情報処理装置の夫々に対して、前記他の情報処理装置によって管理されている、前記データベースに同期された他のデータベースを参照して、前記担当部分について前記処理を行うよう指示することで、前記処理を複数の他の情報処理装置に分散実行させる、指示手段と、
    前記複数の他の情報処理装置から、前記担当部分についての前記処理の実行の結果を受信する結果受信手段と、
    前記結果受信手段によって受信された前記結果を合成することで、前記テーブルについての前記処理の実行結果を取得する合成手段と、
    を備える情報処理装置。
  2. 前記テーブルについて、前記処理に用いるバージョンを決定するバージョン決定手段を更に備え、
    前記指示手段は、前記処理に用いるバージョンとして、前記バージョン決定手段によって決定されたバージョンを用いて前記処理を行うように、前記複数の他の情報処理装置に指示する、
    請求項1に記載の情報処理装置。
  3. 前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令に基づいて前記テーブルを更新した場合の更新履歴を作成する更新履歴作成手段と、
    前記更新履歴を、前記更新命令に係る担当部分が割り当てられた前記他の情報処理装置に通知する更新履歴通知手段と、
    を更に備える、請求項2に記載の情報処理装置。
  4. 前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令を識別可能な情報を、該更新命令に係る担当部分が割り当てられた他の情報処理装置に通知する更新命令識別情報通知手段を更に備える、
    請求項1に記載の情報処理装置。
  5. 前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令を識別可能な情報を、該更新命令に係る担当部分が割り当てられた他の情報処理装置に通知する更新命令識別情報通知手段と、
    前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令による更新が行われたバージョンを、前記テーブルについての前記処理に用いるバージョンとして決定するバージョン決定手段と、を更に備え、
    前記指示手段は、前記処理に用いるバージョンとして、前記バージョン決定手段によって決定されたバージョンを用いて前記処理を行うように、前記複数の他の情報処理装置に指示する、
    請求項4に記載の情報処理装置。
  6. 前記クエリを、ユーザー端末から受け付けるクエリ受付手段と、
    前記合成手段による合成によって得られた、前記テーブル全体についての前記処理の実行結果に基づいて、前記クエリへの応答を前記ユーザー端末に対して返す応答手段と、
    を更に備える、請求項1から5の何れか一項に記載の情報処理装置。
  7. 前記他の情報処理装置が管理する前記他のデータベースには、前記データベース管理手段によって管理される前記データベースの少なくとも一部が同期され、
    前記割当手段は、前記クエリに係る処理に用いられるテーブルに含まれる複数の部分のうち、該当する部分が同期されている前記他のデータベースを管理する前記他の情報処理装置に対して、該部分を担当部分として優先的に割り当てる、
    請求項1から6の何れか一項に記載の情報処理装置。
  8. 前記他の情報処理装置が管理する前記他のデータベースは、該他の情報処理装置からのアクセス速度が、部分によって異なるデータベースであり、
    前記割当手段は、前記クエリに係る処理に用いられるテーブルに含まれる複数の部分のうち、該当する部分が他の部分に比べて高速にアクセス可能な前記他の情報処理装置に対して、該部分を担当部分として優先的に割り当てる、
    請求項1から6の何れか一項に記載の情報処理装置。
  9. 前記クエリに含まれる処理の夫々を表すノードが、処理されるべき順序に従ってツリー状に配置されたプランツリーを作成するプランツリー作成手段と、
    前記プランツリーの解析結果に従って、前記分散実行の対象となる処理を決定する対象決定手段と、
    を更に備える、請求項1から8の何れか一項に記載の情報処理装置。
  10. 前記プランツリーに含まれる各ノードによって表される処理について、前記分散実行の可能性を判定する可能性判定手段を更に備え、
    前記対象決定手段は、前記可能性判定手段によって分散実行可能と判定された処理を、前記分散実行の対象として決定する、
    請求項9に記載の情報処理装置。
  11. 前記可能性判定手段によって分散実行不可能と判定された処理と前記プランツリーにおいて該処理より上位に接続された処理とを、前記分散実行の対象から除外する不可処理除外手段を更に備える、
    請求項10に記載の情報処理装置。
  12. 前記可能性判定手段は、前記プランツリーにおける下位ノードから上位ノードに向けて順に判定を行う、
    請求項10または11に記載の情報処理装置。
  13. 前記プランツリーに含まれる各ノードによって表される処理について、前記分散実行の適性を判定する適性判定手段と、
    前記適性判定手段によって前記分散実行に適さない処理であると判定された処理と前記プランツリーにおいて該処理より下位に接続された処理とを、前記分散実行の対象から除外する不適処理除外手段と、
    を更に備える、請求項9から12の何れか一項に記載の情報処理装置。
  14. 前記適性判定手段は、前記プランツリーにおける上位ノードから下位ノードに向けて順に判定を行う、
    請求項13に記載の情報処理装置。
  15. 他の情報処理装置によって管理される他のデータベースに同期されたデータベースを管理するデータベース管理手段と、
    前記他の情報処理装置が受け付けたクエリに係る処理に用いられるテーブルにおける、該情報処理装置の担当部分についての、該処理の実行指示を、前記他の情報処理装置から受け付ける指示受付手段と、
    前記データベース管理手段によって管理されるデータベースを参照して、前記担当部分について前記処理を実行する処理実行手段と、
    前記担当部分についての前記処理の実行の結果を、前記他の情報処理装置に対して送信する結果送信手段と、
    を備える情報処理装置。
  16. 前記テーブルについて、前記処理に用いるバージョンを前記他の情報処理装置から取得するバージョン取得手段を更に備え、
    前記処理実行手段は、前記バージョンのテーブルに基づいて、前記処理を実行する、
    請求項15に記載の情報処理装置。
  17. 前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令に基づいて前記テーブルを更新した場合の更新履歴を、前記他の情報処理装置から取得する更新履歴取得手段を更に備え、
    前記処理実行手段は、前記バージョン取得手段によって取得されたバージョンのテーブルに前記更新履歴を反映した情報を参照して、前記処理を行う、
    請求項16に記載の情報処理装置。
  18. 前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令を識別可能な情報を、前記他の情報処理装置から取得する更新命令識別情報取得手段と、
    前記更新命令を識別可能な情報に基づいて、該更新命令に基づいて更新された内容を特定する更新内容特定手段と、を更に備え、
    前記処理実行手段は、前記更新内容特定手段によって特定された更新内容を更に参照して、前記処理を実行する、
    請求項15に記載の情報処理装置。
  19. 前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令による更新が行われたバージョンを、前記他の情報処理装置から、前記テーブルについて前記処理に用いるバージョンとして取得するバージョン取得手段を更に備え、
    前記処理実行手段は、前記バージョンのテーブルに基づいて、前記処理を実行する、
    請求項18に記載の情報処理装置。
  20. コンピューターが、
    データベースを管理するデータベース管理ステップと、
    前記データベースに対するクエリに係る処理に用いられるテーブルに含まれる複数の部分の夫々を、複数の他の情報処理装置の夫々による担当部分として割り当てる割当ステップと、
    前記複数の他の情報処理装置の夫々に対して、前記他の情報処理装置によって管理されている、前記データベースに同期された他のデータベースを参照して、前記担当部分について前記処理を行うよう指示することで、前記処理を複数の他の情報処理装置に分散実行させる、指示ステップと、
    前記複数の他の情報処理装置から、前記担当部分についての前記処理の実行の結果を受信する結果受信ステップと、
    前記結果受信ステップにおいて受信された前記結果を合成することで、前記テーブルについての前記処理の実行結果を取得する合成ステップと、
    を実行する方法。
  21. コンピューターが、
    他の情報処理装置によって管理される他のデータベースに同期されたデータベースを管理するデータベース管理ステップと、
    前記他の情報処理装置が受け付けたクエリに係る処理に用いられるテーブルにおける、該情報処理装置の担当部分についての、該処理の実行指示を、前記他の情報処理装置から受け付ける指示受付ステップと、
    前記データベース管理ステップにおいて管理されるデータベースを参照して、前記担当部分について前記処理を実行する処理実行ステップと、
    前記担当部分についての前記処理の実行の結果を、前記他の情報処理装置に対して送信する結果送信ステップと、
    を実行する方法。
  22. コンピューターに、
    データベースを管理するデータベース管理ステップと、
    前記データベースに対するクエリに係る処理に用いられるテーブルに含まれる複数の部分の夫々を、複数の他の情報処理装置の夫々による担当部分として割り当てる割当ステップと、
    前記複数の他の情報処理装置の夫々に対して、前記他の情報処理装置によって管理されている、前記データベースに同期された他のデータベースを参照して、前記担当部分について前記処理を行うよう指示することで、前記処理を複数の他の情報処理装置に分散実行させる、指示ステップと、
    前記複数の他の情報処理装置から、前記担当部分についての前記処理の実行の結果を受信する結果受信ステップと、
    前記結果受信ステップにおいて受信された前記結果を合成することで、前記テーブルについての前記処理の実行結果を取得する合成ステップと、
    を実行させるためのプログラム。
  23. コンピューターに、
    他の情報処理装置によって管理される他のデータベースに同期されたデータベースを管理するデータベース管理ステップと、
    前記他の情報処理装置が受け付けたクエリに係る処理に用いられるテーブルにおける、該情報処理装置の担当部分についての、該処理の実行指示を、前記他の情報処理装置から受け付ける指示受付ステップと、
    前記データベース管理ステップにおいて管理されるデータベースを参照して、前記担当部分について前記処理を実行する処理実行ステップと、
    前記担当部分についての前記処理の実行の結果を、前記他の情報処理装置に対して送信する結果送信ステップと、
    を実行させるためのプログラム。
JP2016556087A 2014-10-28 2014-10-28 情報処理装置、方法およびプログラム Active JP6506773B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/078647 WO2016067370A1 (ja) 2014-10-28 2014-10-28 情報処理装置、方法およびプログラム

Publications (2)

Publication Number Publication Date
JPWO2016067370A1 true JPWO2016067370A1 (ja) 2017-09-14
JP6506773B2 JP6506773B2 (ja) 2019-04-24

Family

ID=55856760

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016556087A Active JP6506773B2 (ja) 2014-10-28 2014-10-28 情報処理装置、方法およびプログラム

Country Status (4)

Country Link
US (1) US10860580B2 (ja)
EP (1) EP3214549A1 (ja)
JP (1) JP6506773B2 (ja)
WO (1) WO2016067370A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107769949B (zh) * 2016-08-19 2021-02-12 华为技术有限公司 一种应用组件部署方法及部署节点
JP7242343B2 (ja) * 2019-02-25 2023-03-20 Kddi株式会社 分析装置及び分析方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006505059A (ja) * 2002-11-01 2006-02-09 タイム インダストリアル,インコーポレイテッド バージョン化されたデータベースについてのレポートを作成するためのシステムおよび方法
JP2009211154A (ja) * 2008-02-29 2009-09-17 Toshiba Corp データベース処理装置、情報処理方法及びプログラム
WO2010098034A1 (ja) * 2009-02-24 2010-09-02 日本電気株式会社 分散データベース管理システムおよび分散データベース管理方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000259672A (ja) 1999-03-08 2000-09-22 Tadamitsu Ryu ネットワーク上の情報検索システム
JP3710961B2 (ja) 1999-06-22 2005-10-26 富士通株式会社 分散検索装置および分散検索プログラム記憶媒体
JP3602085B2 (ja) 2001-09-28 2004-12-15 株式会社第一興商 旋律検索の分散処理に特徴を有するカラオケ集合システム
US10983998B2 (en) * 2008-06-25 2021-04-20 Microsoft Technology Licensing, Llc Query execution plans by compilation-time execution
US8713046B2 (en) * 2011-11-08 2014-04-29 Sybase, Inc. Snapshot isolation support for distributed query processing in a shared disk database cluster
US9639575B2 (en) * 2012-03-30 2017-05-02 Khalifa University Of Science, Technology And Research Method and system for processing data queries
US20140136545A1 (en) * 2012-10-05 2014-05-15 International Business Machines Corporation Multi-tier Indexing Methodology for Scalable Mobile Device Data Collection

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006505059A (ja) * 2002-11-01 2006-02-09 タイム インダストリアル,インコーポレイテッド バージョン化されたデータベースについてのレポートを作成するためのシステムおよび方法
JP2009211154A (ja) * 2008-02-29 2009-09-17 Toshiba Corp データベース処理装置、情報処理方法及びプログラム
WO2010098034A1 (ja) * 2009-02-24 2010-09-02 日本電気株式会社 分散データベース管理システムおよび分散データベース管理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
宇山 公隆,谷越 桂太,藤塚 勤也,澤井 健,近藤 公久: "DBMSの並列分散化とその有効性", 第15回データ工学ワークショップ(DEWS2004)論文集 [ONLINE], JPN6019009812, 18 June 2004 (2004-06-18), JP, pages pp.1−8 *

Also Published As

Publication number Publication date
US20170228427A1 (en) 2017-08-10
WO2016067370A1 (ja) 2016-05-06
EP3214549A1 (en) 2017-09-06
JP6506773B2 (ja) 2019-04-24
US10860580B2 (en) 2020-12-08

Similar Documents

Publication Publication Date Title
US10915528B2 (en) Pluggable storage system for parallel query engines
EP2176783B1 (en) Efficient updates for distributed file systems
CN111475506B (zh) 数据存储、查询的方法、装置、系统、设备、存储介质
CN112789606A (zh) 数据重分布方法、装置及系统
CN106874281B (zh) 实现数据库读写分离的方法和装置
JP5375972B2 (ja) 分散ファイルシステム、そのデータ選択方法およびプログラム
CN111324606B (zh) 数据分片的方法及装置
JP5724735B2 (ja) データベース更新制御装置、データベース管理システムおよびデータベース更新制御プログラム
US10812322B2 (en) Systems and methods for real time streaming
CN111858760A (zh) 一种异构数据库的数据处理方法及装置
US11226986B2 (en) Data table partitioning management method and apparatus
US10095737B2 (en) Information storage system
WO2016067370A1 (ja) 情報処理装置、方法およびプログラム
CN101483668A (zh) 热点数据的网络存储和访问方法、设备及系统
CN111767282A (zh) 基于MongoDB的存储系统及数据插入方法和存储介质
JP2008225686A (ja) 分散型データ処理プラットフォームにおけるデータ配置管理装置と方法、システム及びプログラム
JP7068210B2 (ja) データベース管理システム、端末装置及び方法
Dobos et al. A comparative evaluation of NoSQL database systems
CN114072768A (zh) 用于桥接数据库架构的控制器
US11977487B2 (en) Data control device, storage system, and data control method
US11734301B1 (en) Selective table replication to enable stream replication
JPH11327989A (ja) データベース管理装置、および、そのプログラムが記録された記録媒体
US20210311957A1 (en) Cross-cloud auto ingest
US10754839B2 (en) Apparatus for data loading and data loading method
KR102024846B1 (ko) 파일 시스템 프로그램 및 이를 이용한 데이터 센터 제어 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171026

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171026

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181113

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20190108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190306

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190329

R150 Certificate of patent or registration of utility model

Ref document number: 6506773

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250