JPWO2010098034A1 - 分散データベース管理システムおよび分散データベース管理方法 - Google Patents
分散データベース管理システムおよび分散データベース管理方法 Download PDFInfo
- Publication number
- JPWO2010098034A1 JPWO2010098034A1 JP2011501480A JP2011501480A JPWO2010098034A1 JP WO2010098034 A1 JPWO2010098034 A1 JP WO2010098034A1 JP 2011501480 A JP2011501480 A JP 2011501480A JP 2011501480 A JP2011501480 A JP 2011501480A JP WO2010098034 A1 JPWO2010098034 A1 JP WO2010098034A1
- Authority
- JP
- Japan
- Prior art keywords
- data
- query
- distributed database
- storage processing
- database management
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
分散データベースに対するデータ操作を効率的に実行し得る非共有型のデータベースシステムを提供する。分散データベース管理システムは、クエリを受信するクエリ受付部(ロードバランサ)と、当該受信されたクエリに基づいて分散データベースに対するデータ操作を協働して実行する複数のストレージ処理部と、を備える。複数のストレージ処理部の各々は、分散データベースを構成する複数の部分データベースのうちの1つを格納しているストレージ装置と、このストレージ装置に格納されている当該部分データベースに対してクエリに基づいたデータ操作を実行するデータ操作部と、を含む。
Description
本発明は、分散データベースに対するデータ操作を実行する技術に関する。
データベース処理において、大量のトランザクション処理の負荷を分散させるために、複数台のサーバなどの複数のプロセッサを用いるクラスタ構成が広く採用されている。クラスタ構成のデータベースシステムとしては、シェアド・ディスク(shared disk)型システムとシェアド・ナッシング型(shared nothing)システムとが知られている。シェアド・ディスク型は、CPUやストレージなどの計算機リソースを共有する共用型システムであり、シェアド・ナッシング型は、計算機リソースを共有しない非共用型システムである。ここで、計算機リソースには、実計算機のリソースだけではなく、仮想計算機のリソースも含まれる。シェアド・ナッシング型の利点は、プロセッサ間(サーバ間)で計算機リソースが競合しないので、プロセッサの数に応じた処理効率を実現することができ、シェアド・ディスク型と比べてスケーラビリティ(システムの拡張性)の点で優れている点にある。
シェアド・ナッシング型のデータベースシステムは、たとえば、特許文献1(特開2007−025785号公報)や特許文献2(特開2005−078394号公報)に開示されている。
しかしながら、シェアド・ナッシング型(非共有型)データベースシステムでは、複数のプロセッサがそれぞれ非共有の計算機リソース群を制御し、これら非共有の計算機リソース群にデータベースが分散して記憶される。それ故、非共有の計算機リソース群に分散格納されているデータ群全体を用いたクエリ処理を実行する場合は、処理速度の低下を招くという問題がある。
たとえば、特許文献2の非共有型データベースシステムは、複数のデータベースノードと、これらデータベースノードを管理する負荷分散装置とで構成されている。クライアント端末からの処理要求に応じて、負荷分散装置が複数のデータベースノードに分散格納されている複数のデータ群を用いたトランザクションを実行する場合には、この負荷分散装置は、当該各データベースノードにデータ転送を要求する。その後、これらデータベースノードから転送されたデータ群を用いて負荷分散装置はトランザクションを実行する。しかしながら、データベースノードから必要なデータ群の全てが転送されない限り、負荷分散装置はトランザクションを完了できないので、これが処理速度の低下を招いてしまう。
上記に鑑みて本発明の目的は、分散データベースに対するデータ操作を効率的に実行し得る非共有型のデータベースシステムおよびデータベース管理方法を提供することである。
本発明によれば、分散データベースに対するデータ操作を行う分散データベース管理システムが提供される。この分散データベース管理システムは、クエリを受信するクエリ受付部と、当該受信されたクエリに基づいて前記分散データベースに対するデータ操作を協働して実行する複数のストレージ処理部と、を備え、前記複数のストレージ処理部の各々は、前記分散データベースを構成する複数の部分データベースのうちの1つを格納しているストレージ装置と、前記ストレージ装置に格納されている当該部分データベースに対して前記クエリに基づいたデータ操作を実行するデータ操作部と、を含む。
本発明によれば、クエリに基づいて分散データベースに対するデータ操作を協働して実行する複数のストレージ処理部を有し、前記ストレージ処理部の各々が、前記分散データベースを構成する複数の部分データベースのうちの1つを格納しているストレージ装置を含んで構成される分散データベース管理システムにおける分散データベース管理方法が提供される。この分散データベース管理方法は、(a)前記複数のストレージ処理部のうちの第1ストレージ処理部において、前記クエリに基づいたデータ操作の実行のために必要なデータセットが当該部分データベースに格納されていないとき、前記複数のストレージ処理部のうち前記第1ストレージ処理部とは異なる単数または複数の第2ストレージ処理部に対して当該データセットのデータ転送要求を発行するステップと、(b)前記第2ストレージ処理部において、前記データ転送要求に応じて当該部分データベースから当該データセットを取得し、当該データセットを前記第1ストレージ処理部に転送するステップと、(c)前記第1ストレージ処理部において、前記第2ストレージ処理部から転送された当該データセットを用いて前記データ操作を実行するステップと、を備える。
本発明によれば、複数のストレージ処理部は、それぞれ自己が管理する部分データベースに対してデータ操作を並列にかつ協働して実行するので、分散データベースに対するデータ操作を効率良く実行する分散データベース管理システムが提供される。
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。
以下、本発明に係る実施の形態について図面を参照しつつ説明する。なお、すべての図面において、同様な構成要素には同一符号を付し、その詳細な説明は重複しないように適宜省略される。
図1は、本発明に係る一実施形態の分散データベース管理システム10の構成を概略的に示す機能ブロック図である。図1に示されるように、この分散データベース管理システム10は、ロードバランサ11、クエリサーバ20A,20B,20C、データサーバ221〜22Nおよび管理サーバ30を備える。データサーバ221〜22Nには、それぞれ、分散データベースを構成する部分データベースが格納されており、分散データベース管理システム10はこの分散データベースに対するデータ操作を行う。
後述するように、分散データベースは少なくとも1つのテーブル構造を有し、部分データベースは、このテーブル構造のサブセット(部分集合)を構成する。図2は、分散データベースを構成するデータベース・テーブルTBLの一例を概略的に示す図である。図2に示されるように、このデータベース・テーブルTBLは、複数のタプル(行)と、列方向に定義されたカラム(属性フィールド)A1,A2,...,APとを有する。タプルとカラムA1,A2,...,APとの交差領域で定まる領域にはデータが格納される。図2に示すように、このデータベース・テーブルTBLを行方向に分割(水平分割)することで複数の部分集合TG1,TG2,...,TGNを構成することができる。このような部分集合TG1,TG2,...,TGNを、部分データベースのテーブルとして、それぞれデータサーバ221〜22Nに格納することができる。
なお、データベース・テーブルTBLをカラム方向に分割(垂直分割)することで複数の部分データベース・テーブルを構成してもよいし、あるいは、水平分割と垂直分割との組み合わせにより複数の部分データベース・テーブルを構成してもよい。
図1に示されるように、通信網NWには、分散データベース管理システム10とクライアント端末T1とが接続されている。これら分散データベース管理システム10とクライアント端末T1だけでなく、多数のクライアント端末(図示せず)が通信網NWに接続されている。ネットワークNWとしては、たとえば、インターネットなどの広域ネットワークが挙げられるが、これに限定されるものではない。
クライアント端末T1は、分散データベース管理システム10が有するデータベースについてSQL(Structured Query Language)やXQuery(XML Query Language:XML問い合わせ言語)などのデータベース言語(データ操作言語)で記述されたクエリを生成し、このクエリを分散データベース管理システム10に宛てて送信する機能を有する。クエリには、分散データベースに対してデータの検索、挿入、更新あるいは削除などのデータ操作を規定するデータベース言語が記述されている。
ロードバランサ11は、通信網NWを介してクライアント端末T1から送信されたクエリをデータ処理要求として受信し、このクエリ(以下、受信クエリと呼ぶ。)を、クエリサーバ(クエリ受付部)20A〜20Cに均等に振り分けて処理負荷を分散する機能を有する。ロードバランサ11は、たとえばラウンドロビン方式に従ってクエリサーバ20A〜20Cのいずれかを選択すればよい。
クエリサーバ20A,20B,20Cは、それぞれ、クエリ解析部21A,21B,21Cを備えている。クエリ解析部21A〜21Cは、ロードバランサ11により振り分けられた受信クエリを解析し最適化する機能を有している。クエリ解析部21A〜21Cは、受信クエリを解析し、この解析結果に基づいて、受信クエリを、特定のデータベース構造に最適化された解析ツリー形式のクエリに変換する。このとき、受信クエリを、たとえば、抽象構文木(AST:Abstract Syntax Tree)形式のクエリに変換することが可能である。
データサーバ221〜22Nの各々は、ルータ24と複数のストレージ処理部251〜25Mとを有する。ルータ24は、ストレージ処理部251〜25Mのうちの任意のストレージ処理部間のデータ転送を制御する機能を有している。また、データサーバ221〜22Nは、LAN(Local Area Network)などの有線伝送路または無線伝送路を介して相互に接続されている。任意のデータサーバ22i内のルータ24は、別のデータサーバ22j(i≠j)内の他のルータ24との間でデータ通信を行う機能を有する。
管理サーバ30は、分散データベースを構成する複数の部分データベースと、データサーバ221〜22Nとの対応関係を規定する管理テーブル30Tを有している。クエリサーバ20A,20B,20Cのうちのいずれれかが、受信クエリの解析結果を管理サーバ30に転送するので、管理サーバ30は、その解析結果に基づいて管理テーブル30Tを参照してデータサーバ221〜22Nの中からクエリの供給先を決定し、この結果を当該クエリサーバに通知する。当該クエリサーバは、管理サーバ30からの通知に従い、データサーバ221〜22Nの中から単数または複数のデータサーバに変換後のクエリを送信する。
各ルータ24は、ストレージ処理部251〜25Mと、これらストレージ処理部251〜25Mにそれぞれ格納されるデータベース・テーブルとの対応関係を規定するルーティングテーブルRTLを有している。ルータ24は、このルーティングテーブルRTLを参照して、クエリサーバ20A〜20Cから受信したクエリの供給先としてストレージ処理部251〜25Mのいずれかを決定する。
図3は、ストレージ処理部25kの構成を概略的に示す機能ブロック図である。図3に示されるように、ストレージ処理部25kは、キュー部250、データ操作部251およびストレージ装置255を備えている。データ操作部251は、クエリ解析部252、トランザクション実行部253および内部クエリ発行部254を含む。ストレージ装置255は、複数のストレージを搭載しており、これらストレージを制御するコントローラや入出力ポート(図示せず)を有している。
キュー部250は、ルータ24から順次入力された複数のクエリを一時的に保持する機能を有し、先に入力され保持されたクエリを優先的にデータ操作部251に供給する。データ操作部251では、クエリ解析部252は、キュー部250から供給されたクエリを解析し、実行プランを生成する。トランザクション実行部253は、この実行プランに従ったトランザクションを実行する。
トランザクション実行部253は、トランザクション実行のために必要なデータセットがストレージ装置255内の部分データベースに格納されていないとき、内部クエリ発行部254に対して当該データセットのデータ取得要求を発する。このデータ取得要求に応じて、内部クエリ発行部254は、内部クエリを生成し、ルータ24に対して、当該内部クエリを含むデータ転送要求を発して当該データセットを取得し得る機能を有する。内部クエリ発行部254の機能については後述する。トランザクション実行部253は、内部クエリ発行部254で取得された当該データセットを用いてトランザクションを実行する。
上記ストレージ処理部25kのデータ操作部251は、半導体集積回路などのハードウェアで実現されてもよいし、あるいは、不揮発性メモリや光ディスクなどの記録媒体に記録されたアプリケーション・プログラムまたはプログラムコードで実現されてもよい。このようなプログラムまたはプログラムコードは、データ操作部251の処理を、CPUなどのプロセッサを有するコンピュータに実行させるものである。このようなプログラムまたはプログラムコードは、データ操作部251の機能ブロック252〜254の全部または一部の処理を、CPUなどのプロセッサを有する実計算機または仮想計算機に実行させるものである。
また、ストレージ装置255は、揮発性メモリまたは不揮発性メモリなどの記録媒体(たとえば、半導体メモリや磁気記録媒体)と、この記録媒体に対してデータの書き込みと読み出しを行うための回路や制御プログラムとで構成することができる。ストレージ装置255を構成するストレージの記憶領域は、予め記録媒体の所定の記憶領域上に構成されていてもよいし、あるいは、システムの動作時に割り当てられる適当な記憶領域上に構成されてもよい。
上記構成を有する分散データベース管理システム10の動作を以下に説明する。
図4は、ストレージ処理部25kのデータ操作部251によるトランザクション処理の手順を概略的に示すフローチャートである。図4を参照すると、データ操作部251では、クエリ解析部252が、キュー部250から与えられたクエリを解析する(ステップS10)。このとき、クエリ解析部252は、この解析結果に基づいて、当該クエリを、ストレージ装置255に格納されている部分データベースの構造に合わせて最適化し、実行プランを生成する。
その後、トランザクション実行部253は、トランザクション実行のために必要なデータセットがストレージ装置255内の部分データベースに格納されているか否かを判定する(ステップS11)。
トランザクション実行のために必要なデータセットがストレージ装置255内の部分データベースに格納されていると判定された場合(ステップS11のNO)、トランザクション実行部253は、クエリ解析部252で生成された実行プランに従ったトランザクションを実行することにより、部分データベースに対するデータの検索、挿入、更新あるいは削除などのデータ操作を行う(ステップS12)。ここで、トランザクションとは、データベース41の検索や更新などの処理を含む1つの作業単位を意味し、原子性(ATOMICITY)、一貫性(CONSISTENCY)、隔離性(ISOLATION)および持続性(DURABILITY)というACID特性を満たす処理である。トランザクション処理が正常に終了したとき(ステップS13のYES)、トランザクションはコミットされる(ステップS14)。そして、トランザクション実行部253は、トランザクションの実行結果(クエリ結果)をルータ24に送信する(ステップS17)。
一方、トランザクションやシステムに関する障害が発生してトランザクションが正常に終了しなかったとき(ステップS13のNO)、トランザクション実行部253は、ロールフォワードを実行する(ステップS15)。すなわち、トランザクション実行部253は、定期的に設定されたチェックポイントの或る時点から障害発生時点までの期間におけるログ情報を確認する。この期間中にコミットされていないトランザクションが存在する場合、トランザクション実行部253は、ログ情報に基づいて当該トランザクションの実行結果を部分データベースに反映させる。また、トランザクション実行部253は、部分データベースの状態を、コミットされていないトランザクションの処理開始前の状態に戻す、すなわち、ロールバックする(ステップS16)。その後、トランザクション実行部253は、トランザクションの実行結果(クエリ結果)をルータ24を介してクエリサーバ20Aに送信する(ステップS17)。クエリサーバ20Aは、このクエリ結果をロードバランサ11を介してクライアント端末T1に送信する。
一方、ステップS11において、トランザクション実行部253は、トランザクション実行のために必要なデータセットがストレージ装置255内の部分データベースに格納されていないと判定した場合には(ステップS11のYES)、内部クエリ発行部254に対して当該データセットのデータ取得要求を発する。このデータ取得要求に応じて、内部クエリ発行部254は、内部クエリを生成し(ステップS20)、ルータ24に対して当該データセットのデータ転送要求を発する(ステップS21)。ここで、データ転送要求には内部クエリが含まれている。内部クエリは、データベースに対するデータの検索、挿入、更新あるいは削除などのデータ操作を規定するデータベース言語で記述されてもよいし、あるいは、システム内で実行可能な形式(たとえば、AST形式などの解析ツリー形式や、マイクロ命令からなる一連の処理手順)で記述されてもよい。
たとえば、ストレージ処理部251において、内部クエリ発行部254からデータ転送要求が発行されたとき(ステップS21)、ルータ24は、このデータ転送要求をデータサーバ221内の他のストレージ処理部252〜25M、あるいは、他のデータサーバ222〜22Nのルータ24に転送する。ルータ24がこのデータ転送要求をデータサーバ221内の他のストレージ処理部252〜25Mに転送した場合、ストレージ処理部252〜25Mでは、それぞれ、当該データ転送要求に応じて、データ操作部251が自己が管理する部分データベースに対して当該内部クエリに基づいたトランザクション処理を実行してデータ操作(主に、検索操作)を行う。
図5は、ストレージ処理部251からデータ転送要求を受信したデータ操作部251による処理手順を概略的に示すフローチャートである。図5を参照すると、先ず、クエリ解析部252が、キュー部250から与えられた内部クエリを解析する(ステップS30)。このとき、クエリ解析部252は、この解析結果に基づいて、当該内部クエリを、ストレージ装置255に格納されている部分データベースの構造に合わせて最適化し、実行プランを生成する。
その後、トランザクション実行部253は、クエリ解析部252で生成された実行プランに従ったトランザクションを実行することにより、部分データベースに対するデータ操作を行う(ステップS31)。トランザクション処理が正常に終了したとき(ステップS32のYES)、トランザクションはコミットされる(ステップS33)。
そして、トランザクション実行部253は、トランザクションの実行結果(クエリ結果)をルータ24を介してストレージ処理部251に送信する(ステップS36)。すなわち、トランザクション実行部253は、ストレージ装置255から当該データセットの取得に成功した場合には、当該データセットをルータ24を介してストレージ処理部251に転送する。一方、データ操作部251は、ストレージ装置255から当該データセットの取得に失敗した場合には、当該データセットの取得に失敗した旨をルータ24を介してストレージ処理部251に通知する。
一方、トランザクションやシステムに障害が発生してトランザクションが正常に終了しなかったとき(ステップS32のNO)、トランザクション実行部253は、ロールフォワードを実行し(ステップS34)、更に、ロールバックを実行する(ステップS35)。その後、トランザクション実行部253は、トランザクションの実行結果(クエリ結果)をルータ24を介してストレージ処理部251に送信する(ステップS36)。
図4のフローチャートに戻ると、ストレージ処理部251において、内部クエリ発行部254が、ストレージ処理部252〜25Mのいずれかから当該データセットの取得に成功した場合(ステップS22のYES)は、トランザクション実行部253は、当該データセットを使用したトランザクションを実行する(ステップS12)。その後、上記ステップS13〜S17が実行される。
一方、ストレージ処理部251において、内部クエリ発行部254が当該データセットの取得に失敗した場合(ステップS22のNO)は、トランザクション実行部253は、データ操作の実行に失敗した旨を含むクエリ結果をルータ24を介してクエリサーバ20Aに通知する。クエリサーバ20Aは、このクエリ結果をロードバランサ11を介してクライアント端末T1に送信する。
なお、クエリ結果は、クエリサーバ20A,20B,20Cのうちのいずれかのクエリサーバを経由してクライアント端末T1に送信される。このとき、当該クエリサーバは、クエリ結果を管理サーバ30にも送信するので、管理サーバ30は、当該クエリ結果に基づいて管理テーブル30Tを更新することができる。
次に、分散データベース管理システム10の動作を示す各種通信シーケンスについて説明する。
図6は、通信シーケンスの一例を概略的に示す図である。図6を参照すると、先ず、クエリサーバ20Aがロードバランサ11を介してクライアント端末T1からクエリを受信すると、クエリサーバ20Aのクエリ解析部21Aは、当該受信クエリを解析し、この解析結果に基づいて、受信クエリを、特定のデータベース構造に最適化された解析ツリー形式のクエリに変換する。次いで、クエリ解析部21Aは、当該クエリの解析結果に基づいて、当該クエリを送信すべきデータサーバ22i,22jを決定する。そして、クエリサーバ20Aは、これらデータサーバ22i,22jに当該クエリを送信する。
データサーバ22iでは、SP(ストレージ処理部)25m,...,25nのデータ操作部251が、それぞれ、クエリを解析し最適化して実行プランを生成する。一方、データサーバ22jでも、同様に、SP(ストレージ処理部)25q,...,25rのデータ操作部251が、それぞれ、クエリを解析し最適化して実行プランを生成する。ここで、クエリサーバ20Aのクエリ解析部21Aが、既に、各データ操作部251が管理する部分データベースの構造に合わせてクエリの最適化を実行している場合には、データ操作部251は、クエリの最適化を行う必要はない。
その後、SP25m,...,25n,25q,...,25rにおいて、それぞれ、トランザクション実行部253が実行プランに従ったトランザクションを実行してデータ操作を行い、その実行結果(クエリ結果)をルータ24に送信する。データサーバ22iのルータ24は、SP25m,...,25nから受信したクエリ結果を集約し、クエリサーバ20Aに送信する。一方、データサーバ22jのルータ24も、SP25q,...,25rから受信したクエリ結果を集約し、クエリサーバ20Aに送信する。クエリサーバ20Aは、データサーバ22i,22jから送信されたクエリ結果を集約し、その結果をクライアント端末T1に送信する。
図6に示されるように、本実施形態の分散データベース管理システム10では、複数のストレージ処理部25m,...,25n,25q,...,25rが、それぞれ自己が管理する部分データベースに対するデータ操作を並列に実行できる。
たとえば、クライアント端末T1から、分散データベースのテーブルにタプル(レコード)の挿入、削除または更新のデータ操作に関するクエリが届いた場合、ストレージ処理部25m,...,25n,25q,...,25rは、それぞれ、自己が管理する部分データベースのテーブルに対して当該データ操作を並列に協働して実行することができる。
クライアント端末T1から、分散データベースのテーブルに対する選択(当該テーブルを構成するタプルのうちから、特定条件に合致したタプルを抽出し、当該抽出されたタプルから新たなテーブルを生成する演算)のデータ操作に関するクエリが届いた場合、ストレージ処理部25m,...,25n,25q,...,25rは、それぞれ自己が管理する部分データベースのテーブルに対して当該データ操作を並列に協働して実行することができる。クエリサーバ20Aは、これら実行結果(クエリ結果)を集約した新たなテーブルを構成し、この新たなテーブルの情報をクライアント端末T1に送信することができる。また、データサーバ22i,22jのルータ24,24は、それぞれ、複数の実行結果(クエリ結果)を集約し、当該集約結果をクエリサーバ20Aに送信する機能を有する。データサーバ22i,22jのルータ24が当該実行結果を集約し、その集約結果をクエリサーバ20Aに送信すれば、クエリサーバ20Aは、これらルータ24,24から受信した集約結果を用いて効率良くクエリ結果を集約することが可能である。
また、図3に示されるように、各ストレージ処理部25kに対して、ストレージ装置255に格納されている1つの部分データベースが割り当てられているので、部分データベースに対するロック(排他制御)を極力排除することができる。
したがって、分散データベース管理システム10は、高いスループットを実現することが可能である。
更に、分散データベース管理システム10の前段のクエリサーバ20A,20B,20Cでクエリの最適化が実行されるので、後段のストレージ処理部251〜25Mは、必ずしもクエリの最適化を実行する必要がないという利点がある。ストレージ処理部251〜25Mは、それぞれ、自己が管理する部分データベースの構造に合わせてクエリを最適化する機能を有する。ストレージ処理部251〜25Mの大部分が同一構造の部分データベース構造を格納していれば、前段のクエリサーバ20A,20B,20Cは、その同一構造の部分データベース構造に合わせた最適化を一括して実行することができる。
次に、図7は、通信シーケンスの他の例を概略的に示す図である。先ず、クエリサーバ20Aがロードバランサ11を介してクライアント端末T1からクエリを受信すると、クエリサーバ20Aのクエリ解析部21Aは、当該受信クエリを解析し、この解析結果に基づいて、受信クエリを、特定のデータベース構造に最適化された解析ツリー形式のクエリに変換する。次いで、クエリ解析部21Aは、当該クエリの解析結果に基づいて、当該クエリを送信すべきデータサーバ22i,22jを決定する。そして、クエリサーバ20Aは、これらデータサーバ22i,22jのルータ24,24に当該クエリを送信する。
データサーバ22iでは、SP(ストレージ処理部)25m,...,25nのデータ操作部251が、それぞれ、クエリを解析し最適化して実行プランを生成する。一方、データサーバ22iでも、同様に、SP(ストレージ処理部)25q,...,25rのデータ操作部251が、それぞれ、クエリを解析し最適化して実行プランを生成する。ここで、クエリサーバ20Aのクエリ解析部21Aが、既に、各データ操作部251が管理する部分データベースの構造に合わせてクエリの最適化を実行している場合には、データ操作部251は、クエリの最適化を行う必要はない。
その後、SP25m,...,25q,...,25rにおいて、それぞれ、トランザクション実行部253が実行プランに従ったトランザクションを実行してデータ操作を行い、その実行結果(クエリ結果)をルータ24に送信する。
一方、SP25nでは、トランザクション実行部253が、トランザクション実行のために必要なデータセットがストレージ装置255内の部分データベースに格納されていないと判定する(図4のステップS11のYES)。そして、トランザクション実行部253は、内部クエリ発行部254に対して当該データセットのデータ取得要求を発する。
たとえば、トランザクション実行部253が、選択操作(特定の条件に合致するタプルを抽出し、これら抽出されたタプルから新たなテーブルを生成するためのデータ操作)や結合操作(ジョイン操作:複数のカラムを結合して新たなテーブルを生成するためのデータ操作)を実行しようとしたが、自己が管理する部分テーブルに選択操作や結合操作に必要なタプルやカラムが存在しない場合、これらタプルやカラムのデータセットのデータ取得要求を内部クエリ発行部254に発する。
図7に示されるように、SP25nの内部クエリ発行部254は、当該データ取得要求に応じて内部クエリを発行し、当該内部クエリを含むデータ転送要求をルータ24を介してSP25mに送信する。この場合、SP25mは、転送された内部クエリを解析し最適化してデータ操作を実行する。そして、SP25mは、そのデータ操作により得られたデータセットをクエリ結果としてルータ24を介してSP25nに供給することができる。
その後、SP25nのトランザクション実行部253は、内部クエリ発行部254により取得されたデータセットを用いてデータ操作を実行してその実行結果(クエリ結果)をルータ24に送信する。
なお、SP25nの内部クエリ発行部254は、図8に示すように、上記データ取得要求に応じて、内部クエリを含むデータ転送要求をルータ24を介してデータサーバ22jのSP25qに送信してもよい。この場合、SP25qは、転送された内部クエリを解析し最適化してデータ操作を実行する。そして、SP25qは、クエリ結果をルータ24を介してSP25nに供給することができる。
そして、図7に示されるように、データサーバ22iのルータ24は、SP25m,...,25nから受信したクエリ結果を集約し、クエリサーバ20Aに送信する。一方、データサーバ22jのルータ24も、SP25q,...,25rから受信したクエリ結果を集約し、クエリサーバ20Aに送信する。クエリサーバ20Aは、データサーバ22i,22jから送信されたクエリ結果を集約し、その結果をクライアント端末T1に送信する。
図7や図8に示されるように、本実施形態の分散データベース管理システム10においては、データサーバ22iのストレージ処理部25nは、データ操作を実行するために不足のデータセットを他のストレージ処理部25m(図7)やストレージ処理部25q(図8)から取得することができる。ストレージ処理部25nは、取得したデータセットを用いてデータ操作を実行するので、ストレージ処理部251〜25M全体で分散処理を効率良く実行できる。よって、不足のデータセットが存在する場合でも、分散データベース管理システム10は、高いスループットを実現することが可能である。
図9は、通信シーケンスの更に他の例を概略的に示す図である。図9の通信シーケンスでは、ストレージ処理部25nがデータ操作を実行する際に不足のデータセットが存在する場合、データサーバ22iのルータ24は、データ転送要求(内部クエリ)を、当該データサーバ22i内のストレージ処理部25mに転送すると同時に、他のデータサーバ22j内のルータ24にも転送する。データサーバ22j内のルータ24は、ルーティングテーブルRTLに従って、当該データ転送要求(内部クエリ)をストレージ処理部25qに転送する。このとき、当該データ転送要求が複数のストレージ処理部25q,...,25rに転送されることもあり得る。図9に示されるように、ストレージ処理部25nは、ストレージ処理部25m,25qからそれぞれクエリ結果であるデータセットを取得し、これらデータセットを用いたデータ操作を実行する。
図10は、通信シーケンスの更に他の例を概略的に示す図である。図10の通信シーケンスでは、ストレージ処理部25nがデータ操作を実行する際に不足のデータセットが存在する場合、データサーバ22iのルータ24は、データ転送要求(内部クエリ)を、外部のデータサーバ22j内のルータ24に転送すると同時に、外部のデータサーバ22k内のルータ24にも転送する。データサーバ22j内のルータ24は、ルーティングテーブルRTLに従って、当該データ転送要求(内部クエリ)をストレージ処理部25qに転送する。並行して、データサーバ22k内のルータ24は、ルーティングテーブルRTLに従って、当該データ転送要求(内部クエリ)をストレージ処理部25tに転送する。
その後、図10に示されるように、ストレージ処理部25q,25tは、それぞれクエリ結果であるデータセットを、ルータ24,24を介してデータサーバ22i内のストレージ処理部25nに送信する。ストレージ処理部25nは、ストレージ処理部25q,25tとからそれぞれクエリ結果であるデータセットを取得し、これらデータセットを用いたデータ操作を実行する。
ところで、図7では、データサーバ22iにおいて、1台のストレージ処理部25mのみが不足のデータセットをストレージ処理部25nに送信する形態が示されているが、この形態に限定されるものではない。データサーバ22iにおいて、複数台のストレージ処理部25m,...,25uが不足のデータセットをストレージ処理部25nに送信する形態もあり得る。この場合、データサーバ22iのルータ24は、これら複数台のストレージ処理部25m,...,25uから送信された不足のデータセットを集約して新たなテーブルを構成し、この新たなテーブルのデータセットをルータ24経由でストレージ処理部25nに送信する機能を有する。後述するように、部分データベースは、ストレージ装置255の記憶領域に格納された実体データ群と、参照テーブルと、複数の中間識別子テーブルとで構成できる(図14〜図15参照)。この種の部分データベースのデータセットを集約して新たなテーブルを構成するとき、同一値を持つ実体データは重複して転送されないので、同じデータサーバ22i内でのデータ転送量の削減が可能となる。
図8の場合、データサーバ22jにおいて、1台のストレージ処理部25qのみが不足のデータセットをデータサーバ22iのルータ24経由でストレージ処理部25nに送信する形態が示されているが、この形態に限定されるものではない。データサーバ22jにおいて、複数台のストレージ処理部25q,...,25rが不足のデータセットをデータサーバ22j,22iのルータ24,24経由でストレージ処理部25nに送信する形態もあり得る。この場合、データサーバ22jのルータ24は、これら複数台のストレージ処理部25q,...,25rから送信された不足のデータセットを集約して新たなテーブルを構成し、この新たなテーブルのデータセットをルータ24経由でストレージ処理部25nに送信する機能を有する。図14に示す部分データベースが使用されるとき、データサーバ22jのルータ24が部分データベースのデータセットを集約することによりデータサーバ22j,22i間でのデータ転送量の削減が可能となる。
図9の場合、データサーバ22iのストレージ処理部25nには、データサーバ22i内のストレージ処理部25mから不足のデータセットがルータ24経由で送信され、データサーバ22j内のストレージ処理部25qからも不足のデータセットがルータ24経由で送信される。データサーバ22iのルータ24は、これらデータセットを集約して新たなテーブルを構成し、この新たなテーブルのデータセットをストレージ処理部25nに送信する機能を有する。図14に示す部分データベースが使用されるとき、データサーバ22iのルータ24が部分データベースのデータセットを集約することにより、データサーバ22i内のルータ24からストレージ処理部25nへのデータ転送量の削減が可能となる。図10の場合には、データサーバ22iのストレージ処理部25nは、2台のデータサーバ22j,22k内のストレージ処理部25q,25tからそれぞれ不足データセットをルータ24経由で受信する。この場合も、図14に示す部分データベースが使用されるとき、データサーバ22iのルータ24が部分データベースのデータセットを集約することにより、データサーバ22i内のルータ24からストレージ処理部25nへのデータ転送量の削減が可能となる。
また、ストレージ処理部25nは、不足のデータセットが複数ある場合に、当該データセットの全てを取得した後でデータ操作を実行してもよいし、あるいは、当該データセットの一部のみを取得した段階で、当該一部を用いたデータ操作を実行してもよい。図9の通信シーケンスでは、ストレージ処理部25nは、ストレージ処理部25mとストレージ処理部25qとからそれぞれクエリ結果であるデータセットの全部を取得した後にデータ操作を実行している。この代わりに、ストレージ処理部25nは、ストレージ処理部25mから第1のデータセットを取得した直後に当該第1のデータセットのみを用いたデータ操作を実行してもよく、その後、ストレージ処理部25qから第2のデータセットを取得した後に当該第2のデータセットを用いたデータ操作を実行してもよい。
次に、分散データベースを構成する部分データベースの構造の好適な例を以下に説明する。
図11は、部分データベースの構造の一例を概略的に示す図である。図11に示されるように、この部分データベース構造は、ストレージ装置255内の記憶領域DA0に格納されている実体データ群と、ストレージ装置255において記憶領域DA0とは異なる記憶領域に格納されている参照テーブル(識別子テーブル)RT0とを有する。
参照テーブルRT0は、行方向に定義された5つのタプルと、列方向に定義された5つの属性フィールドTID,Val1,Val2,Val3,Val4とを有している。第1の実施形態では、説明の便宜上、参照テーブルRT0のタプルの数は5つであるが、これに限定されず、タプルの数を、たとえば、数十〜数百万に設定することができる。属性フィールドTID,Val1,Val2,Val3,Val4の数も5つに限定されるものではない。
参照テーブルRT0の5つのタプルには、それぞれ、一意のタプル識別子(TID)R1,R2,R3,R4,R5が割り当てられている。これらタプルと属性フィールドVal1,Val2,Val3,Val4とで定まる領域(タプルと属性フィールドVal1,Val2,Val3,Val4とが交差する領域)にそれぞれ固定長のデータ識別子VR11,VR12,...,VR43が格納されている。すなわち、属性フィールドVal1は、タプル識別子R1,R2,R3,R4,R5に対応する領域にそれぞれデータ識別子VR11,VR12,VR13,VR14,VR15を含み、属性フィールドVal2は、タプル識別子R1,R2,R3,R4,R5に対応する領域にそれぞれデータ識別子VR21,VR22,VR23,VR23,VR24を含み、属性フィールドVal3は、タプル識別子R1,R2,R3,R4,R5に対応する領域にそれぞれデータ識別子VR31,VR32,VR33,VR34,VR35を含み、属性フィールドVal4は、タプル識別子R1,R2,R3,R4,R5に対応する領域にそれぞれデータ識別子VR41,VR41,VR41,VR42,VR43を含む。
データ識別子VR11〜VR43の値は、ハッシュ関数を用いて算出することができる。ハッシュ関数は、実体データのビット列の入力に対して固定長のビット列を出力する演算子である。このハッシュ関数の出力値(ハッシュ値)をデータ識別子VR11〜VR34の値として利用すればよい。トランザクション実行部253は、検索文字列をハッシュ値に変換し、このハッシュ値と一致する値を持つデータ識別子を参照テーブルRT0から探し出し、探し出されたデータ識別子に対応する実体データを記憶領域DA0から探し出すことができる。このとき、トランザクション実行部253は、可変長データを含まない固定長データ群のみからなる参照テーブルRT0を検索するので、文字列を高速に探し出すことができる。
属性フィールドVal1、Val2、Val3の名称(属性名)としては、たとえば、「店名」、「地域」、「売上」、「年月」を設定できる。図11に示すデータベース構造は、実体データの集合である実テーブルから生成することができる。図12は、実テーブルSTの一例を模式的に示す図である。5行4列の実テーブルSTの「A店」、「B店」、「九州」などの実体データをハッシュ化(実体データの値をハッシュ値に変換)することで、図11に示した固定長のデータ識別子VR11,VR12,...,VR34を生成できる。
上記データ識別子VR11〜VR43は、記憶領域DA0内の実体データをそれぞれ実質的に一意に表す値を有する。このため、トランザクション実行部253は、データ識別子VR11〜VR43を検索し、その検索結果に基づいてこれらデータ識別子VR11〜VR43に対応する可変長の実体データにアクセスすることが可能である。なお、本明細書において「実質的に一意」とは、部分データベースに対するデータ操作上の一意性を満たしていることを意味する。
図13(A)および図13(B)は、部分データベースを構成する論理データ構造を示す図である。図13(A)に示されるデータ構造は、先頭部分にヘッダ領域を有し、末尾部分にアロケーション管理テーブルを有している。また、ヘッダ領域とアロケーション管理テーブルとの間に実体データ群が格納される領域が設けられている。
図13(B)は、ヘッダ領域に含まれる変換テーブルの一例を示す概略図である。この変換テーブルは、データ識別子VR11〜VR43と、これらデータ識別子VR11〜VR43それぞれの記憶領域との間の対応関係を規定するテーブルである。この変換テーブルにおいては、図13(B)に示されるように、データ識別子VR11〜VR34が格納される領域Fidと、これらデータ識別子VR11〜VR34それぞれの記憶領域を示す位置データA11〜A43が格納される領域Faとが設けられている。
図11に示されるように、実体データD11〜D43の記憶領域DA0と、これら実体データD11〜D43をそれぞれ一意に表すデータ識別子VR11〜VR43の記憶領域とは互いに完全に分離されているので、部分データベースの更新処理の高効率化、検索速度の向上、並びに移植性の向上を実現することができる。
たとえば、記憶領域DA0内の実体データ群の一部を更新、追加または削除したとき、参照テーブルRT0と図13(B)の変換テーブルとを更新すれば済むので、更新処理を短時間で行うことができる。実体データの更新、追加または削除に伴い、部分データベースは必要最小限に更新されるので、部分データベースに対する更新が頻繁に行われる場合でも、かかる更新を効率的かつ高速に実行することが可能である。
また、図13(B)の変換テーブルでは、同一値を有するデータ識別子の重複が排除されている(すなわち、変換テーブル内にある任意の2つのデータ識別子の値は必ず異なる)ので、この変換テーブルを使用することにより、同一値を有する実体データを重複させずに記憶領域DA0に記憶させることができる。言い換えれば、部分データベースを構成する実体データ群を圧縮して記憶領域DA0に記憶させることができるので、記憶領域DA0の効率的な利用が可能となる。
次に、部分データベースの構造の他の好適な例を以下に説明する。
図14は、部分データベースの構造を概略的に示す図である。図14に示されるように、このデータベース構造は、ストレージ装置255の記憶領域DA3に格納された実体データ群と、記憶領域DA3とは別の記憶領域に格納された参照テーブルRT1および第1〜第3の中間識別子テーブルIT41,IT42,IT43とを有する。
図15(A)は、参照テーブルRT1の概略構成を示す図である。参照テーブルRT1は、行方向に定義された複数のタプルと、列方向に定義された4つの属性フィールドTID,Col1Ref,Col2Ref,Col3Refとを有している。参照テーブルRT1のタプルの数については、たとえば、これを数十〜数百万に設定することができる。属性フィールドTID,Col1Ref,Col2Ref,Col3Refの数も4つに限定されるものではない。
参照テーブルRT1のタプルには、それぞれ、一意のタプル識別子(TID)R1,R2,R3,R4,...が割り当てられている。これらタプルと属性フィールドCol1Ref,Col2Ref,Col3Refとで定まる領域(タプルと属性フィールドCol1Ref,Col2Ref,Col3Refとが交差する領域)にそれぞれ固定長の参照識別子CRV11,CRV12,...,CRV31,...が格納されている。参照識別子CRV11〜CRV31の値は、上記第1の実施形態のデータ識別子の場合と同様のハッシュ関数を用いて算出することができる。すなわち、データ識別子VR11〜VR31の入力に対するハッシュ関数の出力値をそれぞれ参照識別子CRV11〜CRV31の値とすればよい。
図15(B)〜図15(D)は、第1〜第3の中間識別子テーブルIT41,IT42,IT43の構造を概略的に示す図である。第1の中間識別子テーブルIT41は、行方向に定義された複数のタプルと、列方向に定義された2つの属性フィールドCol1,Valとを有する。属性フィールドCol1は、固定長の参照識別子CRV11,CRV12,...を含み、属性フィールドValは、タプルにそれぞれ対応する領域にそれぞれ固定長のデータ識別子VR11,VR12,...を含む。
第2の中間識別子テーブルIT42は、行方向に定義された複数のタプルと、列方向に定義された2つの属性フィールドCol2,Valとを有する。属性フィールドCol2は、固定長の参照識別子CRV21,CRV22,...を含み、属性フィールドValは、タプルにそれぞれ対応する領域にそれぞれ固定長のデータ識別子VR21,VR22,...を含む。
そして、第3の中間識別子テーブルIT43は、行方向に定義された複数のタプルと、列方向に定義された2つの属性フィールドCol3,Valとを有する。属性フィールドCol3は、固定長の参照識別子CRV31,CRV32,...を含み、属性フィールドValは、タプルにそれぞれ対応する領域にそれぞれ固定長のデータ識別子VR31,VR32,...を含む。
第1〜第3の中間識別子テーブルIT41,IT42,IT43の各々は、互いに重複した値を持つ複数の参照識別子を持たない(すなわち、各中間識別子テーブル内にある任意の2つの参照識別子の値は必ず異なる)ので、冗長性を排除したデータ構造を有する。言い換えれば、中間識別子テーブルIT41,IT42,IT43の各々は、参照識別子とデータ識別子との一対一の対応関係を当該対応関係の重複を排除するように規定するテーブルである。図15(A)に示されるように、参照テーブルRT1の属性フィールドCol1Refのカラムには、参照識別子CRV12,CRV12,CRV11,CRV11,...が格納されている。属性フィールドCol1Refに対応する中間識別子テーブルIT41は、図15(B)に示されるように、これら参照識別子CRV12,CRV12,CRV11,CRV11,...と、データ識別子VR12,VR12,VR11,VR11,...との対応関係を規定するテーブルである。中間識別子テーブルIT41では、互いに重複する対応関係は排除されている(たとえば、参照識別子CRV12とデータ識別子VR12との対応関係は重複して規定されていない)。同様に、図15(C)と図15(D)に示されるように、属性フィールドCol2Refに対応する中間識別子テーブルIT42と、属性フィールドCol3Refに対応する中間識別子テーブルIT43においても、それぞれ、重複する対応関係が排除されている。
トランザクション実行部253は、参照識別子CRV11〜CRV33およびデータ識別子VR11〜VR33を検索し、この検索結果を用いて可変長の実体データにアクセスすることができる。記憶領域DA3は、図13(A)に示した変換テーブルと同様の変換テーブルを有しているので、トランザクション実行部253は、当該検索結果に基づいて実体データにアクセスすることができる。
上述した通り、第1〜第3の中間識別子テーブルIT41,IT42,IT43の各々は、冗長性を排除したデータ構造を有する。よって、データサーバ22iのストレージ処理部25nにおいてデータ操作を実行するためのデータセットが不足し、ストレージ処理部25nが、図14の構造の部分データベースを有するストレージ処理部25m(図7)やストレージ処理部25q(図8)から不足のデータセットを取得する場合、中間識別子テーブルIT41,IT42,IT43を利用すれば、同じ値を持つデータセットを繰り返し転送せずに済むので、データセットの転送量を小さくすることができるという利点がある。
たとえば、ストレージ処理部25mに対して、図15(A)の参照テーブルRT1の属性フィールドCol1Refにおける1カラム分のデータセットのデータ転送要求があった場合、ストレージ処理部25mは、固定長の参照識別子CRV12,CRV12,CRV11,CRV11,...を送信するとともに、中間識別子テーブルIT41の対応関係を用いて参照識別子CRV11,CRV12,...とこれらに対応する実体データD11,D12,...とを送信すればよい。この場合、参照識別子CRV12,CRV12,CRV11,CRV11,...の値は、ハッシュ関数という圧縮関数の出力値(ハッシュ値)であり、同一値を持つ実体データは重複して送信されないので、データ転送量は少なくて済む。
また、中間識別子テーブルIT41,IT42,IT43は、それぞれ、カラム単位で構成されている。よって、ストレージ処理部25iが結合操作(ジョイン操作:複数のカラムを結合して新たなテーブルを生成するためのデータ操作)を実行する際に、その結合操作に必要な不足のデータセットが他のストレージ処理部25jからストレージ処理部25iへ転送される場合にも、データ転送量を小さくすることができるという利点がある。
ストレージ処理部251〜25Mの全てが、参照識別子やデータ識別子の算出のために同一のハッシュ関数を使用してもよいし、あるいは、異なるハッシュ関数を使用してもよい。しかしながら、ストレージ処理部毎に異なるハッシュ関数が使用された場合、たとえばストレージ処理部25q,25r間で、同一値を持つ実体データに対してデータ識別子や参照識別子のハッシュ値が異なる可能性がある。上述の通り、ルータ24は、複数のストレージ処理部25q,25rから転送されたデータセットを集約して新たなテーブルを構成する機能を有する。この集約を行う際に、ルータ24は、データ識別子や参照識別子の不整合を調整する機能を有している。図16は、ルータ24の集約・調整機能を説明するための図である。
図16に示されるように、データサーバ22jのストレージ処理部25q,25rは、データサーバ22iのストレージ処理部25nからのデータ転送要求に応じてそれぞれデータセットDSa,DSbをルータ24に送信する。一方のデータセットDSaは、図16に示されるようにテーブルRTa,Ca1,Ca2のデータであり、他方のデーセットDSbは、図16に示されるようにテーブルRTb,Cb1,Cb2のデータである。データサーバ22jのルータ24は、これらのデータセットDSa,DSbを集約して新たなテーブルRTd,Cd1,Cd2を構成し、当該新たなテーブルRTd,Cd1,Cd2のデータセットDSdをデーサーバ22iに転送する。
参照テーブルRTaは、図15(A)に示した参照テーブルRT1と同じ構造を有する。また、テーブルCa1,Ca2は、ストレージ処理部25q内の中間識別子テーブルを用いて構成される。テーブルCa1は、参照識別子CRV11,CRV12,CRV13と実体データ値"AA"、"AB"、"AC"との間の一対一の対応関係を規定するテーブルであり、テーブルCa2は、参照識別子CRV21と実体データの値"AD"との間の一対一の対応関係を規定するテーブルである。同様に、参照テーブルRTbは、図15(A)に示した参照テーブルRT1と同じ構造を有する。テーブルCb1,Cb2は、ストレージ処理部25r内の中間識別子テーブルを用いて構成される。テーブルCb1は、参照識別子CRV11,CRV12と実体データ値"BA"、"AA"との間の一対一の対応関係を規定するテーブルであり、テーブルCb2は、参照識別子CRV22と実体データの値"AD"との間の一対一の対応関係を規定するテーブルである。
図16に示されるように、テーブルCa1とテーブルCb1とで、同一の実体データ値"AA"に対して異なる参照識別子CRV11,CRV12が使用されている。また、テーブルCa2とテーブルCb2とで、同一の実体データ値"AD"に対して異なる参照識別子CRV21,CRV22が使用されている。このような場合、ルータ24は、データセットDSa,DSbを集約して参照テーブルRTdとテーブルCd1,Cd2とを構成する際に、ルータ24は、同一の実体データ値"AA"に対して一意の参照識別子CRV11を割り当て、同一の実体データ値"AD"に対して一意の参照識別子CRV21を割り当てる。これにより、参照識別子の不整合を解消することができる。
より具体的には、たとえば、以下の手順を採用することができる。先ず、ルータ24は、データセットDSa,DSb間で同一の実体データ値に対する参照識別子の不整合を検査する。この検査の結果、参照識別子の不整合があった場合には、ルータ24は、ストレージ処理部25q,25rのうちの一方のストレージ処理部25qで使用されているハッシュ関数を使用して、テーブルRTb,Cb1,Cb2の参照識別子を更新する。このとき、ルータ24は、ハッシュ値の変換テーブルを作成し、この変換テーブルに従ってテーブルRTb,Cb1,Cb2の参照識別子を更新してもよい。そして、ルータ24は、更新されたテーブルRTb,Cb1,Cb2と、テーブルRTa,Ca1,Ca2とを集約して新たなテーブルRTd,Cd1,Cd2を構成する。その後、テーブルRTb,Cb1,Cb2と、テーブルRTa,Ca1,Ca2とは破棄される。
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。たとえば、上記実施形態は、分散データベースに対してトランザクションを実行するために好適な構成を有するが、これに限定されるものではない。上述の通り、トランザクションは、ACID特性を満たす処理であるが、これらACID特性のうちのいずれかの特性を満たさない場合のデータ操作にも本発明を適用することが可能である。
上記実施形態では、分散データベース管理システム10は、図1に示されるように、3つのクエリサーバ20A,20B,20Cを有するが、これに限定されるものではない。また、データサーバ221〜22Nの各々は、複数のストレージ処理部251〜25Mを有しているが、これに限定されることなく、いずれかのデータサーバ22iが単数のストレージ処理部を有してもよい。データサーバ221〜22Nの基本機能は同一であるが、データサーバ221〜22Nに組み込まれるハードウェア構成は、必ずしも同一である必要はない。
また、上記の通り、ルータ24は、複数のクエリ結果(データセット)を集約する機能を有しているが、ルータ24は、処理時間を削減するために、この集約を実行しない場合もあり得る。
この出願は、日本国特許庁に出願された特願2009−040777号(出願日:2009年2月24日)を基礎とする優先権を主張するものであり、その開示の全ては、本明細書の一部として援用(incorporation herein by reference)される。
Claims (20)
- 分散データベースに対するデータ操作を行う分散データベース管理システムであって、
クエリを受信するクエリ受付部と、
当該受信されたクエリに基づいて前記分散データベースに対するデータ操作を協働して実行する複数のストレージ処理部と、
を備え、
前記複数のストレージ処理部の各々は、
前記分散データベースを構成する複数の部分データベースのうちの1つを格納しているストレージ装置と、
前記ストレージ装置に格納されている当該部分データベースに対して前記クエリに基づいたデータ操作を実行するデータ操作部と、
を含む、分散データベース管理システム。 - 請求項1に記載の分散データベース管理システムであって、
前記複数のストレージ処理部のうちの第1ストレージ処理部の当該データ操作部は、前記クエリに基づいたデータ操作の実行のために必要なデータセットが自己の当該部分データベースに格納されていないとき、前記複数のストレージ処理部のうち前記第1ストレージ処理部とは異なる単数または複数の第2ストレージ処理部に対して当該データセットのデータ転送要求を発行し、
前記第2ストレージ処理部の当該データ操作部は、前記データ転送要求に応じて、自己の当該部分データベースから当該データセットを取得し、前記第1ストレージ処理部に転送する、分散データベース管理システム。 - 請求項2に記載の分散データベース管理システムであって、
前記複数のストレージ処理部と前記クエリ受付部との間のルーティングを行うとともに、前記複数のストレージ処理部のうちの任意のストレージ処理部間のデータ転送を制御するルータを更に備え、
前記ルータは、前記複数の第2ストレージ処理部から転送された当該データセットを集約して新たなテーブルを構成し、当該新たなテーブルのデータセットを前記第1ストレージ処理部に転送する、分散データベース管理システム。 - 請求項2または3に記載の分散データベース管理システムであって、
前記第1ストレージ処理部の当該データ操作部は、前記データ転送要求として内部クエリを生成し、
前記第2ストレージ処理部の当該データ操作部は、前記内部クエリに基づいたデータ操作を自己の当該部分データベースに対して実行することにより当該データセットを取得する、分散データベース管理システム。 - 請求項1から4のうちのいずれか1項に記載の分散データベース管理システムであって、前記クエリは、データベースに対してデータの検索、挿入、更新および削除の中から選択された1以上のデータ操作を規定するデータベース言語で記述されている、分散データベース管理システム。
- 請求項5に記載の分散データベース管理システムであって、前記データ操作部は、
内部クエリを解析するクエリ解析部と、
前記クエリ解析部による解析結果に基づいたトランザクションを実行して前記データ操作を行うトランザクション実行部と、
を含む、分散データベース管理システム。 - 請求項6に記載の分散データベース管理システムであって、前記クエリ解析部は、前記ストレージ装置に格納されている当該部分データベースのデータ構造に応じた最適化を前記内部クエリに対して実行する、分散データベース管理システム。
- 請求項1から7のうちのいずれか1項に記載の分散データベース管理システムであって、前記クエリ受付部は、当該受信されたクエリを解析して最適化するクエリ解析部を含む、分散データベース管理システム。
- 請求項1から8のうちのいずれか1項に記載の分散データベース管理システムであって、
前記部分データベースは、
複数の実体データと、
行方向に定義された少なくとも1つのタプルと列方向に定義された少なくとも1つの属性フィールドとで定まる領域に前記実体データそのものを一意に表す固定長のデータ識別子が格納されている識別子テーブルと、
前記複数の実体データそれぞれの記憶領域を示す位置データと前記複数のデータ識別子との間の対応関係を表す変換テーブルと、
を含む、分散データベース管理システム。 - 請求項9に記載の分散データベース管理システムであって、前記識別子テーブルに割り当てられた記憶領域と前記実体データに割り当てられた記憶領域とが互いに異なる、分散データベース管理システム。
- 請求項9または10に記載の分散データベース管理システムであって、前記データ識別子の値は、前記実体データの入力に対して固定長のビット列を出力するハッシュ関数の出力値である、分散データベース管理システム。
- 請求項9から11のうちのいずれか1項に記載の分散データベース管理システムであって、
前記識別子テーブルは複数存在し、
前記部分データベースは、前記複数の識別子テーブル内のデータ識別子をそれぞれ一意に表す参照識別子の集合を有する参照テーブルを更に含み、
前記データ操作部は、前記参照テーブルおよび前記識別子テーブルを用いて前記データ操作を実行する、分散データベース管理システム。 - 請求項12に記載の分散データベース管理システムであって、前記各識別子テーブルは、前記参照識別子と前記データ識別子との一対一の対応関係を当該対応関係の重複を排除するように規定している、分散データベース管理システム。
- クエリに基づいて分散データベースに対するデータ操作を協働して実行する複数のストレージ処理部を有し、前記ストレージ処理部の各々が、前記分散データベースを構成する複数の部分データベースのうちの1つを格納しているストレージ装置を含んで構成される分散データベース管理システムにおける分散データベース管理方法であって、
(a)前記複数のストレージ処理部のうちの第1ストレージ処理部において、前記クエリに基づいたデータ操作の実行のために必要なデータセットが当該部分データベースに格納されていないとき、前記複数のストレージ処理部のうち前記第1ストレージ処理部とは異なる単数または複数の第2ストレージ処理部に対して当該データセットのデータ転送要求を発行するステップと、
(b)前記第2ストレージ処理部において、前記データ転送要求に応じて当該部分データベースから当該データセットを取得し、当該データセットを前記第1ストレージ処理部に転送するステップと、
(c)前記第1ストレージ処理部において、前記第2ストレージ処理部から転送された当該データセットを用いて前記データ操作を実行するステップと、
を備える、分散データベース管理方法。 - 請求項14に記載の分散データベース管理方法であって、
前記ステップ(a)では、前記データ転送要求として内部クエリが生成され、
前記ステップ(b)では、前記内部クエリに基づいたデータ操作を当該部分データベースに対して実行することにより当該データセットが取得される、分散データベース管理方法。 - 請求項15に記載の分散データベース管理方法であって、前記ストレージ装置に格納されている当該部分データベースのデータ構造に応じた最適化を前記内部クエリに対して実行するステップを更に含む分散データベース管理方法。
- 請求項14から16のうちのいずれか1項に記載の分散データベース管理方法であって、前記クエリを受信し、当該受信されたクエリを解析して最適化するステップを更に含む、分散データベース管理方法。
- 請求項14から17のうちのいずれか1項に記載の分散データベース管理方法であって、
前記部分データベースは、
複数の実体データと、
行方向に定義された少なくとも1つのタプルと列方向に定義された少なくとも1つの属性フィールドとで定まる領域に前記実体データそのものを一意に表す固定長のデータ識別子が格納されている識別子テーブルと、
前記複数の実体データそれぞれの記憶領域を示す位置データと前記複数のデータ識別子との間の対応関係を表す変換テーブルと、
を含む、分散データベース管理方法。 - 請求項18に記載の分散データベース管理方法であって、
前記識別子テーブルは複数存在し、
前記部分データベースは、前記複数の識別子テーブル内のデータ識別子をそれぞれ一意に表す参照識別子の集合を有する参照テーブルを更に含み、
前記データ操作は、前記参照テーブルおよび前記識別子テーブルを用いて実行される、分散データベース管理方法。 - 請求項19に記載の分散データベース管理方法であって、前記各識別子テーブルは、前記参照識別子と前記データ識別子との一対一の対応関係を当該対応関係の重複を排除するように規定している、分散データベース管理方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009040777 | 2009-02-24 | ||
JP2009040777 | 2009-02-24 | ||
PCT/JP2010/000935 WO2010098034A1 (ja) | 2009-02-24 | 2010-02-16 | 分散データベース管理システムおよび分散データベース管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2010098034A1 true JPWO2010098034A1 (ja) | 2012-08-30 |
Family
ID=42665251
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011501480A Pending JPWO2010098034A1 (ja) | 2009-02-24 | 2010-02-16 | 分散データベース管理システムおよび分散データベース管理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20110307470A1 (ja) |
JP (1) | JPWO2010098034A1 (ja) |
WO (1) | WO2010098034A1 (ja) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102023997B (zh) * | 2009-09-23 | 2013-03-20 | 中兴通讯股份有限公司 | 一种数据查询系统及其构建方法与相应的数据查询方法 |
US9183267B2 (en) * | 2010-05-24 | 2015-11-10 | Microsoft Technology Licensing, Llc | Linked databases |
JP5172931B2 (ja) * | 2010-10-25 | 2013-03-27 | 株式会社東芝 | 検索装置、検索方法および検索プログラム |
JP5598279B2 (ja) * | 2010-11-16 | 2014-10-01 | 日本電気株式会社 | 分散メモリデータベースシステム、フロントデータベースサーバ、データ処理方法およびプログラム |
US8868546B2 (en) * | 2011-09-15 | 2014-10-21 | Oracle International Corporation | Query explain plan in a distributed data management system |
JP2013196565A (ja) * | 2012-03-22 | 2013-09-30 | Toshiba Corp | データベース処理方法、及びデータベース処理装置 |
DE102012108117A1 (de) * | 2012-08-03 | 2014-02-06 | Fujitsu Technology Solutions Intellectual Property Gmbh | Hochverfügbares Rechnersystem, Arbeitsverfahren und dessen Verwendung |
US10579634B2 (en) | 2012-08-30 | 2020-03-03 | Citus Data Bilgi Islemleri Ticaret A.S. | Apparatus and method for operating a distributed database with foreign tables |
JP6160958B2 (ja) * | 2013-10-02 | 2017-07-12 | Necソリューションイノベータ株式会社 | 負荷分散システム、負荷分散方法および負荷分散プログラム |
JP6506773B2 (ja) | 2014-10-28 | 2019-04-24 | 株式会社Murakumo | 情報処理装置、方法およびプログラム |
JP2015146205A (ja) * | 2015-03-16 | 2015-08-13 | 株式会社東芝 | データベース処理方法、及びデータベース処理装置 |
US11086822B1 (en) * | 2016-09-13 | 2021-08-10 | Amazon Technologies, Inc. | Application-based compression |
JP6619724B2 (ja) * | 2016-12-20 | 2019-12-11 | Kddi株式会社 | クエリ処理システム及びクエリ処理方法 |
WO2019209736A1 (en) | 2018-04-24 | 2019-10-31 | Von Drakk Viktor | Improved method and device for correlating multiple tables in a database environment |
JP7471091B2 (ja) | 2020-01-22 | 2024-04-19 | 株式会社日立製作所 | ジョブ実行支援システム、及びジョブ実行支援方法 |
JP7031919B1 (ja) * | 2021-09-03 | 2022-03-08 | 株式会社Scalar | トランザクション処理システム及び方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06314299A (ja) * | 1993-04-28 | 1994-11-08 | Hitachi Ltd | データベース管理方法 |
JP2001109758A (ja) * | 1999-10-06 | 2001-04-20 | Hitachi Ltd | 仮想表インタフェースと該インタフェースを用いた問合せ処理システム及び方法 |
JP2002022108A (ja) * | 2000-07-06 | 2002-01-23 | Babcock Hitachi Kk | スプレイノズル |
JP2002222108A (ja) * | 2001-01-26 | 2002-08-09 | Hitachi Ltd | 部分レプリカの生成装置および生成方法 |
JP2004038608A (ja) * | 2002-07-04 | 2004-02-05 | Hitachi Ltd | データベース管理方法及びその実施システム並びにその処理プログラム |
JP2004062566A (ja) * | 2002-07-30 | 2004-02-26 | Jmnet Inc | データベースシステム及びそれを構成するマスターノード装置及びプログラム |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6546381B1 (en) * | 1998-11-02 | 2003-04-08 | International Business Machines Corporation | Query optimization system and method |
CA2377649C (en) * | 2002-03-20 | 2009-02-03 | Ibm Canada Limited-Ibm Canada Limitee | Dynamic cluster database architecture |
US8209696B2 (en) * | 2006-02-13 | 2012-06-26 | Teradata Us, Inc. | Method and system for load balancing a distributed database |
US8027983B1 (en) * | 2007-04-10 | 2011-09-27 | Google Inc. | Enhanced query performance using fixed length hashing of multidimensional data |
US7984043B1 (en) * | 2007-07-24 | 2011-07-19 | Amazon Technologies, Inc. | System and method for distributed query processing using configuration-independent query plans |
CN101685449B (zh) * | 2008-09-26 | 2012-07-11 | 国际商业机器公司 | 一种用于连接多个异构分布式数据库中的表的方法和系统 |
-
2010
- 2010-02-16 WO PCT/JP2010/000935 patent/WO2010098034A1/ja active Application Filing
- 2010-02-16 US US13/202,914 patent/US20110307470A1/en not_active Abandoned
- 2010-02-16 JP JP2011501480A patent/JPWO2010098034A1/ja active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06314299A (ja) * | 1993-04-28 | 1994-11-08 | Hitachi Ltd | データベース管理方法 |
JP2001109758A (ja) * | 1999-10-06 | 2001-04-20 | Hitachi Ltd | 仮想表インタフェースと該インタフェースを用いた問合せ処理システム及び方法 |
JP2002022108A (ja) * | 2000-07-06 | 2002-01-23 | Babcock Hitachi Kk | スプレイノズル |
JP2002222108A (ja) * | 2001-01-26 | 2002-08-09 | Hitachi Ltd | 部分レプリカの生成装置および生成方法 |
JP2004038608A (ja) * | 2002-07-04 | 2004-02-05 | Hitachi Ltd | データベース管理方法及びその実施システム並びにその処理プログラム |
JP2004062566A (ja) * | 2002-07-30 | 2004-02-26 | Jmnet Inc | データベースシステム及びそれを構成するマスターノード装置及びプログラム |
Non-Patent Citations (4)
Title |
---|
CSND199900687002; 安東 一真: '高速検索にはプロセサ稼働率の向上が不可欠「Shared-Everything」が注目集める' 日経エレクトロニクス 第586号, 19930719, p.98-106, 日経BP社 * |
CSNG200900269067; 大川 昌弘: '分散データベース環境における複製データの仮想化によるSQL処理の最適化手法' 電子情報通信学会 第18回データ工学ワークショップ論文集 , 20070601, p.1-8, 電子情報通信学会データ工学研究専門委員会 * |
JPN6013009774; 大川 昌弘: '分散データベース環境における複製データの仮想化によるSQL処理の最適化手法' 電子情報通信学会 第18回データ工学ワークショップ論文集 , 20070601, p.1-8, 電子情報通信学会データ工学研究専門委員会 * |
JPN6013027558; 安東 一真: '高速検索にはプロセサ稼働率の向上が不可欠「Shared-Everything」が注目集める' 日経エレクトロニクス 第586号, 19930719, p.98-106, 日経BP社 * |
Also Published As
Publication number | Publication date |
---|---|
WO2010098034A1 (ja) | 2010-09-02 |
US20110307470A1 (en) | 2011-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2010098034A1 (ja) | 分散データベース管理システムおよび分散データベース管理方法 | |
US11461356B2 (en) | Large scale unstructured database systems | |
KR102307371B1 (ko) | 데이터베이스 시스템 내의 데이터 복제 및 데이터 장애 조치 | |
US11386091B2 (en) | Joining large database tables | |
US8943103B2 (en) | Improvements to query execution in a parallel elastic database management system | |
US11301446B1 (en) | System and method for interacting with a plurality of data sources | |
US20130110873A1 (en) | Method and system for data storage and management | |
JP5727258B2 (ja) | 分散型データベースシステム | |
US10078676B2 (en) | Schema evolution in multi-tenant environment | |
JP5238915B1 (ja) | 分散型データベースシステム | |
CN113407600B (zh) | 一种动态实时同步多源大表数据的增强实时计算方法 | |
US10114874B2 (en) | Source query caching as fault prevention for federated queries | |
US11809421B2 (en) | System and method for data analytics | |
JP2018180688A (ja) | 更新処理プログラム、装置、及び方法 | |
JP6680897B2 (ja) | 計算機システム及び分析ソースデータ管理方法 | |
US20230334037A1 (en) | System and method for data analytics | |
Pereira et al. | Mediator framework for inserting xDRs into Hadoop |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130110 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130305 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130430 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130611 |