JP2004062566A - データベースシステム及びそれを構成するマスターノード装置及びプログラム - Google Patents
データベースシステム及びそれを構成するマスターノード装置及びプログラム Download PDFInfo
- Publication number
- JP2004062566A JP2004062566A JP2002220765A JP2002220765A JP2004062566A JP 2004062566 A JP2004062566 A JP 2004062566A JP 2002220765 A JP2002220765 A JP 2002220765A JP 2002220765 A JP2002220765 A JP 2002220765A JP 2004062566 A JP2004062566 A JP 2004062566A
- Authority
- JP
- Japan
- Prior art keywords
- database
- node device
- request
- divided
- master 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
Abstract
【課題】性能が向上したデータベースシステムを提供することである。
【解決手段】複数のテーブルからなるデータベースを、このテーブルを単位として分割して、各データベースノード14が管理している。各データベースノード14は、それぞれ1個以上のテーブルを保持・管理している。そして、各データベースノード14に、それぞれ保持するテーブルに関する処理を担当させることによって、データベース全体に対する処理を複数個のデータベースノード14に分散させることができる。その結果、データベース処理の負担を複数台のデータベースノード14に分散させることができ、性能の向上したデータベースシステム10を構築することができる。
【選択図】 図1
【解決手段】複数のテーブルからなるデータベースを、このテーブルを単位として分割して、各データベースノード14が管理している。各データベースノード14は、それぞれ1個以上のテーブルを保持・管理している。そして、各データベースノード14に、それぞれ保持するテーブルに関する処理を担当させることによって、データベース全体に対する処理を複数個のデータベースノード14に分散させることができる。その結果、データベース処理の負担を複数台のデータベースノード14に分散させることができ、性能の向上したデータベースシステム10を構築することができる。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、データベースシステムに関する。特に、データベースシステムの性能の向上に関する。
【0002】
【従来の技術】
1 クラスタリング
コンピュータによるサービスの性能を向上させるために、クラスタリングと呼ばれる手法が広く利用されている。クラスタリングは、複数のコンピュータを統合し、あたかも1台のコンピュータとして動作させることによって、提供できるサービスの性能を向上させるための技術を言う。クラスタリングによれば、障害への対応能力が向上し、負荷の分散によってサービスの効率が向上し、計算能力の向上を図ることができるとされている。
【0003】
クラスタリングを実現する具体的な手法としては、フェイルオーバ型のクラスタリングや、ロードバランシング、DNSラウンドロビンその他の種々の手法が知られている。
【0004】
2 分散型データベース
また、近年、データベースを複数箇所に分散させた、分散型データベースシステムを構築することがしばしば行われている。
【0005】
従来の分散型データベースシステムは、単一のデータベースではなく、複数個の基本的に同一内容のデータベースを用いてデータベースサービスを提供しようとするものである。たとえば、東京と大阪にデータベースを設置し、2台でデータベースサービスを提供しようとするシステムの構成例が考えられる。1台で100人の人にサービスを提供できる場合、このように2台準備することによって原理的には200人の人に同時にサービスを提供できることになる。これは負荷分散の原理そのものである。
【0006】
【発明が解決しようとする課題】
しかし、実際には、2個のデータベースの内容を同期させるための処理が別途必要となるので、2倍になることはなく、1.5倍程度の性能の向上にとどまる場合が多い。ここで、同期とは、2個のデータベースの内容を同一のものに保持するための処理をいう。また、2個のデータベースの例を示したが、3個以上のデータベースを用いる例は現実にはほとんど知られていない。上記の同期処理が複雑化し、システムが複雑になる割には性能の向上が見込めないからである。
【0007】
このように、従来の分散型データベースでは、その性能の向上に限界があった。
【0008】
本発明は係る課題に鑑みなされたものであり、その目的は、上で述べたクラスタリングの技術を用いた新しい負荷分散の原理を提案し、性能が向上したデータベースシステムを提供することである。
【0009】
【課題を解決するための手段】
本発明は、上記課題を解決するために、複数のテーブルからなるデータベースを管理し、外部からの要求に応じてデータベースサービスを提供するデータベースシステムにおいて、外部からの要求を分割するマスターノード装置と、前記分割された要求を処理する複数のノード装置と、を備え、前記ノード装置は、1個以上の前記テーブルを保持し、前記マスターノード装置から送信された分割された要求の内容に従って前記テーブルに関する処理を行い、前記マスターノード装置は、前記外部からの要求を、データベースを構成するテーブル毎に分割し、この分割された要求を、各対応するテーブルを保持する前記ノード装置に送信することを特徴とするベースシステムである。
【0010】
このような構成によって、各ノード装置が個別に処理を実行することによって、処理速度が向上する。
【0011】
また、本発明は、前記ノード装置は、分割された要求を処理した結果を前記マスターノード装置に送信し、前記マスターノード装置は、前記送信されてきた結果を統合することによって、前記外部からの要求に対する処理結果を生成することを特徴とするデータベースシステムである。
【0012】
このような構成によって、各ノード装置が個別に行った処理を統合することができる。
【0013】
また、本発明は、複数のテーブルからなるデータベースを管理し、外部からの要求に応じてデータベースサービスを提供するデータベースシステムにおいて、外部からの要求を分割するマスターノード装置と、前記分割された要求を処理する複数のノード装置と、を備え、前記ノード装置は、1個以上の前記テーブルを保持し、前記マスターノード装置から送信された分割された要求の内容に従って前記テーブルに関する処理を行い、前記マスターノード装置は、前記外部からの要求を、データベースを構成するテーブル毎に分割し、この分割された要求を、処理すべき順番に基づき各対応するテーブルを保持する前記ノード装置に順番に送信することを特徴とするベースシステムである。
【0014】
このような構成によって、処理に順番に従った処理を各ノード装置に行わせることができる。
【0015】
また、本発明は、前記ノード装置は、分割された要求を処理した結果を前記マスターノード装置に送信し、前記マスターノード装置は、前記送信されてきた結果を用いて、前記結果を送信してきたノード装置とは別の他のノード装置に送信するべき分割された要求を作成することを特徴とすることを特徴とするデータベースシステムである。
【0016】
このような構成によって、ある処理の結果を利用して他の処理を行わせることが可能となる。
【0017】
また、本発明は、前記各ノード装置が保持する1個以上のテーブルは、他のノード装置が保持するテーブルとデータ内容が独立していることを特徴とするデータベースシステムである。
【0018】
このような構成によって、各テーブルに対する処理を個別に行うことができる。
【0019】
また、本発明は、前記要求は、構造化照会言語で記述されていることを特徴とするデータベースシステムである。
【0020】
このような構成に寄れば、要求の分割を、構造化照会言語の構文解析による分割を行うことによって容易に実行可能である。
【0021】
さらに、本発明は、複数のノード装置と共に、データベースシステムを構成するマスターノード装置において、外部からの要求を、データベースを構成するテーブル毎に分割し、この分割した要求を、各対応するテーブルを保持する前記ノード装置に送信することを特徴とするマスターノード装置である。
【0022】
このような構成によって、外部からの要求を、効率的に分割し、ノード装置に割り振ることができる。
【0023】
また、本発明は、複数のノード装置と共に、データベースシステムを構成するマスターノード装置において、外部からの要求を、データベースを構成するテーブル毎に分割し、この分割された要求を、処理すべき順番に基づき各対応するテーブルを保持する前記ノード装置に順番に送信することを特徴とするマスターノード装置である。
【0024】
このような構成によって、外部からの要求を分割して、分割後の処理を所定の順番に従ってノード装置に処理させることができる。
【0025】
また、本発明は、前記ノード部が前記マスターノード部に送信してきた結果を用いて、前記結果を送信してきた前記ノード装置とは別の他のノード装置に送信するべき分割された要求を作成することを特徴とするマスターノード装置である。
【0026】
このような構成によれば、所定の処理結果を他の処理に反映させることができ、所定の順番に従った処理をノード装置に行わせることができる。
【0027】
また、本発明は、コンピュータを、マスターノード装置として動作させるプログラムにおいて、前記コンピュータに、外部からの要求を、データベースを構成するテーブル毎に分割する手順と、前記分割した要求を、各対応するテーブルを保持する前記ノード装置に送信する手順と、を実行させることを特徴とするプログラムである。
【0028】
このような構成によれば、コンピュータをマスターノード装置として動作させることができる。
【0029】
また、本発明は、コンピュータを、マスターノード装置として動作させるプログラムにおいて、前記コンピュータに、外部からの要求を、データベースを構成するテーブル毎に分割する手順と、前記分割された要求を、処理すべき順番に基づき各対応するテーブルを保持する前記ノード装置に順番に送信する手順と、を実行させることを特徴とするプログラムである。
【0030】
このような構成によれば、コンピュータをマスターノード装置として動作させることができ、各ノード装置に所定の順番に従った処理を行わせることができる。
【0031】
また、本発明は、前記コンピュータにさらに、前記ノード部が前記マスターノード部に送信してきた結果を用いて、前記結果を送信してきた前記ノード装置とは別の他のノード装置に送信するべき分割された要求を作成する手順、を実行させることを特徴とするプログラムである。
【0032】
このような構成によれば、所定の処理結果を、他の処理に利用することが可能となる。
【0033】
また、本発明は、複数のテーブルからなるデータベースを管理し、外部からの要求に応じてデータベースサービスを提供する方法において、前記外部からの要求を、データベースを構成するテーブル毎に分割するステップと、前記分割された要求を別個に処理するステップと、を含むことを特徴とする方法である。
【0034】
このような方法によれば、データベースをテーブル毎に分割し、処理を各テーブル毎に分割して実行することができる。
【0035】
【発明の実施の形態】
以下、本発明の好適な実施の形態を図面に基づき説明する。
【0036】
図1には、本実施の形態の分散データベースシステムの構成図が示されている。この図に示すように、データベースシステム10は、データベースマスターノード12と、データベースノード14と、から構成されている。
【0037】
データベースマスターノード12は、請求の範囲の「マスターノード装置」の一例に相当する。データベースノード14は、請求の範囲の「ノード装置」の一例に相当する。
【0038】
また、本特許では、データベースとは、1個以上のテーブルから構成されるデータの集合体をいう。また、データベースシステムとは、このデータベースを管理し、外部に対しデータベースサービスを提供するシステムを言う。データベースサービスとは、データベースのデータを閲覧や抽出、データの変更(書き換え)、新規なデータの登録等を行うサービスを言う。
【0039】
A.データベースノード14
データベースノード14は、従来から知られている既存のデータベースプログラムが動作しているコンピュータであり、ハードディスク14b中にデータベースを構成するテーブルが格納されている。
【0040】
一般に、データベースは複数のテーブルから構成されている。販売商品のデータベースでは、商品名とその価格からなる価格テーブルや、仕入れ日と、その仕入れ日に仕入れた商品とからなる仕入れテーブル等、種々のテーブルから構成されることが多い。データベースプログラムは、これらのテーブルを管理しており、しばしばRDBMS(Relational Data Base Management System)と呼ばれる場合も多い。
【0041】
本実施の形態において特徴的なことは、複数のテーブルからなるデータベースを、このテーブルを単位として分割して、各データベースノード14が管理していることである。たとえば、5個のテーブルからなるデータベースを、5個のデータベースノード14に分割して格納しておくのである。この場合、各データベースノード14は、それぞれ1個のテーブルを保持・管理している。そして、各データベースノード14に、それぞれ保持するテーブルに関する処理を担当させることによって、データベース全体に対する処理を5個のデータベースノード14に分散させることができる。その結果、データベース処理の負担を5台のデータベースノード14に分散させることができ、性能の向上したデータベースシステム10を構築することができる。
【0042】
この場合、各データベースノード装置14が保持する各テーブルは、その内容がデータ的に独立している。このように独立しているので、各テーブルに対する処理を並列に実行させることができるのであり、その結果、処理速度の向上を図ることができる。ここで、一部のテーブルに独立していない部分が含まれている場合は、独立している部分に関してのみ処理を並列に行うことが好ましい。また、独立していない場合には、後述するスケジューリングの処理を行うことも好ましい。
【0043】
独立しているデータの典型的な例として、地図データが挙げられる。北海道の地図データと、沖縄の地図データとは互いに独立していると考えられる。 もちろん、データベースノード14の個数がテーブル数より少ない構成を採用することも可能である。たとえば、10個のテーブルからなるデータベースを、5個のデータベースノード14に分割して格納しておくこともできる。この場合、各データベースノード14は、それぞれ2個のテーブルを保持・管理している。そして、各データベースノード14に、それぞれ保持する2個のテーブルに関する処理を担当させることによって、データベース全体に対する処理を5個のデータベースノード14に分散させることができる。その結果、データベース処理の負担を5台のデータベースノード14に分散させることができ、性能の向上したデータベースシステム10を構築することができる。
【0044】
この場合も、各データベースノード装置14が保持する複数のテーブルは、その内容がデータ的に他のデータベースノード装置に保持されているテーブルとは独立しているのである。このように独立しているので、所定のデータベースノード装置14に保持されているテーブルに対する処理を、他のデータベースノード装置14における処理とは別個・独立に(すなわち並列に)実行させることができる。その結果、処理速度の向上を図ることができる。ここで、すべてのテーブルの内容が独立である必要はない。一部独立でない部分が含まれていても、独立している部分に関して並列処理が可能であるので、処理速度の向上が図れるものである。
【0045】
このように本実施の形態では、データベースを構成する複数のテーブルをデータベースノード14に分散させたので、各テーブルに対する処理を並列に実行することができる。その結果、処理性能の向上したデータベースシステム10を実現することができる。
【0046】
B.データベースマスターノード12
データベースマスターノード12は、外部からのSQL問い合わせ(SQL query)を受け付けるコンピュータである。このデータベースマスターノード12は、外部からのSQL問い合わせを、データベースを構成するテーブル毎に分割し、それぞれ対応するデータベースノード14に送信する。この送信の様子が、図1の中で、データベースマスターノード12から、データベースノード14に向かう矢印で表現されている。なお、本実施の形態で説明するデータベースマスターノード12の動作は、プログラムで記述されている。すなわちデータベースノード12は、コンピュータと、このコンピュータが実行するプログラムから構成されている。
【0047】
本実施の形態では、外部からのSQL問い合わせは、いわゆるSQL文で構成されており、データベースマスターノード12は、このSQL文を、各テーブル毎の処理に分割し、より小さなSQL文を作成するのである。
【0048】
本特許では、この分割後の小さなSQL文を「分割SQL文」と呼び、外部から送信されてきた元のSQLを「原SQL文」と呼ぶ。この原SQL文は、請求の範囲における「要求」の一例に相当し、分割SQL文は、請求の範囲における「分割された要求」の一例に相当する。
【0049】
なお、外部からのSQL文が、単一のテーブルに関する処理のみに関するSQL文である場合には、そのSQL文を分割せずにそのまま対応するデータベースノード14に送信する。このような分割を伴わない「振り分ける」処理でも、各テーブルに関する処理を各データベースノード14に分散させることができるので、処理速度の向上を図ることができる。
【0050】
なお、SQLとは、Structured Query Language の意味であり、日本語では構造化照会言語(または構造化問い合わせ言語)と呼ばれることもある。
【0051】
各データベースノード14は、従来から利用されているデータベースプログラムが起動しているコンピュータであり、送信されてきた分割SQL文を、従来のデータベースシステムと同様に処理を行う。すなわち、データベースノード14において行われるSQL文の処理自体は、従来のシステムと全く同様である。
【0052】
各データベースノード14は、従来のシステムと同様の処理を実行し、結果をデータベースマスターノード12に返す。この様子が図2に示されている。図2の中のデータベースノード14からデータベースマスターノード12に向かう矢印がこの「返す」動作を表している。図2は、図1と同様に、本実施の形態のデータベースシステム10の構成図である。
【0053】
そして、データベースマスターノード12は、データベースノード14から返されてきた結果を統合し、最終的な結果を得、この最終的な結果を外部に提供するのである。この結果、従来のデータベースシステムと同様の処理を、より高速に実行可能なデータベースシステムを実現できるのである。
【0054】
C.具体的な動作例
以下、簡単な例を用いて、本実施の形態のデータベースシステム10の動作を詳細に説明する。これらの動作は、プログラムで記述され、データベースマスターノード12やデータベースノード14のコンピュータがこのプログラムを実行することによって、本実施の形態で説明する動作を行わせている。
【0055】
図3には、この動作例を表すフローチャートが示されている。
【0056】
まず、ステップS3−1においては、クライアント20が所定のネットワークを介してアプリケーションサーバ22にデータベースの問い合わせを行う。このアプリケーションサーバ22は、クライアント20が参照するサーバであり、たとえばWEBサーバ等が好ましい一例である。クライアント20はインターネット等を通じてこのWEBサーバにアクセスするのである。
【0057】
アプリケーションサーバ22がWEBサーバである場合には、クライアント20は、WEBページの画面上でデータベースの内容を見ることができるのである。
【0058】
ステップS3−1における問い合わせの例としては、たとえば、クライアントが会社の人事データベースの閲覧を行うために、「東京都内に住所を有する40歳以上の社員」のような条件を含む問い合わせが考えられる。クライアント20は、このような条件を、WEBページ上のチェックボタンや、ラジオボタン、テキスト入力その他の種々のデータ入力手法で入力することができる。
【0059】
次に、ステップS3−2においては、クライアント20の示した条件に基づき、アプリケーションサーバ22がSQL文を作成し、そのSQL文をデータベースシステム10に送信する。この送信されるSQL文は、上で述べた原SQLである。この原SQL文は、特許請求の範囲の「要求」の一例に相当する。
【0060】
以上のようなクライアント20やアプリケーションサーバ22の動作は、従来から知られている動作である。
【0061】
そして、ステップS3−3においては、データベースマスターノード12が上記原SQL文を受信する。そして、このSQL文を、各テーブル毎に分割するのである。具体的には、以下のような動作を行う。
【0062】
select文
原SQL文にたとえば、以下のような第1select文が存在した場合、このSQL文は、第2select文と、第3select文に分割される。なお、SQLにおけるSelect文とは、データベース内の特定のデータを検索する命令である。
【0063】
第1select文:
【数1】
Select name, address from Nametable, Addresstable where Nametable No=’1’ and Addresstable No=’1’
この第1select文は、Nametable というテーブル中のNo=1のデータである name を取得し、AddressTable というテーブル中のNo=1のデータである address を取得せよという内容のselect文である。
【0064】
Nametable というテーブルの内容を表す概念図が図4に示されている。この図に示すように、Nametable は、データのNoと氏名とから構成されるテーブルである。この氏名のフィールド名(項目名ともいう)は”name”である。
【0065】
AddressTable というテーブルの内容を表す概念図が図5に示されている。この図に示すように、Addresstable は、データのNoと住所と、電話番号とから構成されるテーブルである。この住所のフィールド名(項目名ともいう)は”address”である。また電話番号のフィールド名は”tel”である。
【0066】
第2select文:
【数2】
Select name from Nametable where No=’1’
この第2select文は、Nametable というテーブル中のNo=1のデータである name を取得する内容である。このような第2Select文は、請求の範囲の「分割された要求」の一例に相当する。この第2Select文は、Nametable というテーブルに関する処理である。
第3select文:
【数3】
Select address from Addresstable where No=’1’
この第3select文は、Addresstable というテーブル中のNo=1のデータである address を取得する内容である。このような第3Select文も、請求の範囲の「分割された要求」の一例に相当する。この第3select文は、Addresstable というテーブルに関する処理である。
【0067】
すなわち、Nametable というテーブルと、Addresstable というテーブルとに関する処理を行わせる内容が、それぞれのテーブルに対する処理内容に分割されているのである。
【0068】
このような処理は、一般に構文解析による言語処理の技術そのものである。構文解析は、コンピュータ言語のインタープリターやコンパイラー等で従来から利用されており、コンピュータ言語の内容を解析してその動作をコンピュータが実行することは従来から行われてきたことである。
【0069】
本実施の形態においても、この構文解析の技術を用いれば、コンピュータ言語の解析と同様に、SQL文を解析し、その内容を分割することが可能である。
【0070】
また、データベースマスターノード12が、このような分割処理を行い、分割後の分割SQL文を各データベースノード14に送信するためには、各データベースノード14がどのテーブルを受け持っているのか(保持しているか)に関する情報が必要である。このような情報はデータベースマスターノード12に備えられているハードディスク12a中に格納されている。このハードディスク12a中に格納されている情報の例を図6に示す。この図に示されているように、各データベースノード14に、それぞれnametable , Addresstable , Agetable , Birthdaytable , Familytable等のテーブルが保持されているという情報がハードディスク12a内に格納されている。
【0071】
update文
原SQL文に、update文が存在した場合、その分割は、上記select文と全く同様に行われる。update文は、データベース中のデータの更新を行うSQLの文である。
【0072】
insert文
原SQL文に、insert文が存在した場合、その分割も、上記select文と全く同様に行われる。insert文は、新しいデータを挿入するSQL文である。
【0073】
次に、ステップS3−4においては、データベースマスターノード12が上記分割後の分割SQL文をそれぞれ対応するデータベースノード14に送信する。
【0074】
この分割SQL文は、たとえば、上記第2Select文、第3Select文である。第2Select文は、Nametable というテーブルを保持するデータベースノード14に送信され、第3Select文は、Addresstable というテーブルを保持するデータベースノード14に送信される。データベースマスターノード12は、ハードディスク12aの内部を参照することにより、どのテーブルがどのデータベースノード14に保持されているのかを知ることができる。
【0075】
次に、ステップS3−5においては、データベースノード14が上記分割SQL文を受信し、それぞれそのSQL文によって指示された処理を実行する。
【0076】
たとえば、テーブル Nametable を保持するデータベースノード14は、上記第2select文を受信し、テーブル Nametable からNo=1のデータであるnameを取り出し、この値をデータベースマスターノード12に返信する。
【0077】
また、テーブル Addresstable を保持するデータベースノード14は、上記第3select文を受信し、テーブル Addresstable からNo=1のデータであるaddressを取り出し、この値をデータベースマスターノード12に返信する。
【0078】
このようなデータベースノード12の動作自体は、従来のデータベースプログラムの動作と同様である。
【0079】
本実施の形態において特徴的なことは、データベースをテーブルに分けて保持しているので、各テーブルに対する処理を並行して同時に実行することができたことである。この結果、本実施の形態によればデータベース処理速度の向上が図れる。
【0080】
次に、ステップS3−6においては、データベースマスターノード12が、データベースノード12からの処理結果を受信し、その結果を統合する。
【0081】
たとえば、テーブル Nametable を保持するデータベースノード14が送信してきたnameと、テーブル Addresstable を保持するデータベースノード14が送信してきたaddressとを、合わせて、アプリケーションサーバ22に送信するのである。アプリケーションサーバ22は、この得られた結果をWEBページ等に表示することによって、クライアント20にデータベースの処理結果を提供するのである。
【0082】
このように、アプリケーションサーバ22から見れば、本実施の形態のデータベースシステム10は、従来のデータベースシステムと機能上は何ら変わりないものである。
【0083】
D.効果
本実施の形態においては、データベースを構成するテーブル毎にデータベースを分割して、それぞれ別個のデータベースノード12で管理・保持している。そして、各テーブルに対する処理をそれぞれ対応するデータベースノード14で個別に行うことにより処理を並列に行うことができ、処理速度の向上が実現できるのである。
【0084】
E.実施の形態2(スケジューリング)
上のA〜Dで述べた例では、原SQL文を単純に、テーブル毎にその内容を分割する例を示した。しかし、ある一方のテーブルにおける処理結果が決定されないと、他方のテーブルに対するSQL文が作成できない場合もある。典型的な例としては、ある一方のテーブルの検索結果を利用して他方のテーブルの検索が行われる場合等が挙げられる。たとえば、電話番号”046−1234−5678”の人の名前を知りたい場合等がこれに相当する。
【0085】
このような場合には、データベースマスターノード12が、一方のテーブルを保持しているデータベースノード14にSQL文を送信し、この結果が得られてから、他方のテーブルを保持しているデータベースノード14に対するSQL文を作成し、そのデータベースノード14に作成したSQL文を送信するのである。このような動作を本実施の形態2ではスケジューリングと呼んでいる。
【0086】
以下、このような動作をフローチャートに基づき、詳細に説明する。具体的な例としては、上で述べた電話番号から人の名前を知りたい場合を適宜用いる。
【0087】
図7には、このフローチャートが示されている。
【0088】
まず、ステップS7−1においては、外部から送信されてきたSQL文が複文であるかどうか検査される。この検査の結果、2種以上の命令(コマンド(command)とも呼ぶ)が1つの文に含まれる複文であると判断された場合には、ステップS7−2に処理が移行し、複文でない場合には、ステップS7−3に処理が移行する。
【0089】
ステップS7−3では、既に図3で説明した分割処理が実行され、1つのSQL文の内容が、そのSQL文に含まれるテーブル毎に分割されるのである。
【0090】
一方、ステップS7−2では、2種以上のコマンドの最も先に処理すべきコマンドの内容が取り出され、1つのSQL文が作成される。
【0091】
たとえば、外部から次のような第4Select文が送信されてきた場合、データベースマスターノード12は、この文が複文であると判断し、ステップS7−2に処理が移行する。その理由は、コマンドSelectが2個含まれているからである。そして、最も内側の先に処理すべきSelectコマンドを選択し、その内容を抽出して、第5Select文を生成する。
【0092】
第4Select文は、電話番号が ”046−1234−5678”である人のNoをテーブル Addresstable から取り出し、このNoの人の名前をテーブル Nametable から取り出すSQL文である。
【0093】
第4Select文:
【数4】
Select name from Nametable where No = Select no from Addresstable where tel = ”046−1234−5678”
第5Select文:
【数5】
Select no from Addresstable where tel = ”046−1234−5678”
データベースマスターノード12はこのような第5select文を作成し、テーブル addresstable を保持するデータベースノード14に送信する。この第5Select文は、実施の形態2における「分割SQL文」である。
【0094】
ステップS7−4では、この第5select文を受信したデータベースノード14が、従来のデータベースシステムと同様の動作をし、電話番号が ”046−1234−5678”である人のNoをテーブル Addresstable から取り出し、その値をデータベースマスターノード12に送信する。
【0095】
ステップS7−5では、送信されてきたNoに基づき、データベースマスターノード12が次の第6Select文を作成する。この第6Select文も、本実施の形態2における分割SQL文の例である。
【0096】
第6Select文:
【数6】
Select name from Nametable where no = ”第5Select文の結果”
ここで、”第5Select文の結果”とは、具体的には「1」や「2」のような数である。
【0097】
なお、以上述べた例においても、テーブル Nametable は図4の如きテーブルであり、テーブル Addresstable は図5の如きテーブルである。
【0098】
SQLのコマンドが複数含まれているSQL文を実行する際に、各SQL文の処理の実行順序は、従来から一般に構文解析の技術を用いて決定される。この技術は従来からコンピュータ言語のインタープリターやコンパイラー等の構成に広く利用されている技術である。本実施の形態においてもこのような構文解析の技術を用いて、上記第4Select文から、第5Select文や第6Select文を構成する。
【0099】
データベースマスターノード12は、この第6Select文をテーブル Nametable を保持するデータベースノード14に送信する。
【0100】
ステップS7−6では、この第6select文を受信したデータベースノード14が、従来のデータベースシステムと同様の動作をし、第5Select文の結果の番号、たとえばNoが「1」である人の氏名をテーブル Nametable から取り出し、その値(氏名)をデータベースマスターノード12に送信する。
【0101】
ステップS7−7では、送信されてきた氏名を、データベースマスターノード12が外部に提供する。この動作は図3のステップS3−6における送信の動作と基本的に同様である。
【0102】
このように、本実施の形態(E.実施の形態2)においては、SQL文の内容を構文解析し、SQL文を順次作成して、各データベースノード14に送信している。したがって、あるテーブルに対する処理が、他のテーブルに対する処理の結果を利用するような場合でも、他のテーブルに対する処理結果を利用してSQL文を作成することができるので、複文のSQL文を分散させて複数のデータベースノード14に実行させることが可能である。
【0103】
F.その他
(1)標準的なSQL文以外に、条件分岐や繰り返し等の独自の拡張されたSQL文をサポートするようにデータベースシステム10を構成することも好ましい。この場合は、その拡張されたSQL文は、データベースマスターノード12が処理・実行を行う。
【0104】
(2)いわゆるストアードプロシージャに関しては、データベースマスターノード12がSQL文に分解する。そして、データベースマスターノード12が、各SQL文を各データベースノード14に送信し、各データベースノード14ががそれぞれ実行する。
【0105】
(3)データベースマスターノード12は、各データベースノード14が送信してくる処理結果を統合してから外部に提供するが、この際、各データベースノード14が送信してくる処理結果中にエラーが生じる場合も想定される。この場合、データベースマスターノード12はいわゆるロールバック(Rollback)を実行し、分割SQL文を送信する前の状態にまでデータベースの状態を戻してから、エラーが生じた旨を外部に提供するのである。このロールバックの技術自体はデータベースシステムにおいて従来から知られている技術である。本実施の形態では、このロールバックの判断をデータベースマスターノード12が行っているのである。
【0106】
【発明の効果】
以上述べたように、本発明によれば、データベースをテーブル毎に分散させて管理しているので、各テーブル毎の処理を並列に行うことができる。その結果、処理性能の向上したデータベースシステムが得られる。
【0107】
また、本発明によれば、外部からの要求を、各テーブル毎の要求に分割する際に、一方のテーブルの処理結果に基づき、他のテーブルに対する要求を作成している。その結果、テーブル毎の処理を所定の順番に基づき行うことができる。
【図面の簡単な説明】
【図1】本実施の形態のデータベースシステムの構成図である。
【図2】本実施の形態のデータベースシステムの構成図である。
【図3】本実施の形態のデータベースシステムの動作を表すフローチャートである。
【図4】テーブル Nametable 内容を表す図である。
【図5】テーブル AddressTable の内容を表す図である。
【図6】データベースノードの保持するテーブルを表す説明図である。
【図7】実施の形態2の動作を表すフローチャートである。
【符号の説明】
10 データベースシステム
12 データベースマスターノード
12a ハードディスク
14 データベースノード
20 クライアント
22 アプリケーションサーバ
【発明の属する技術分野】
本発明は、データベースシステムに関する。特に、データベースシステムの性能の向上に関する。
【0002】
【従来の技術】
1 クラスタリング
コンピュータによるサービスの性能を向上させるために、クラスタリングと呼ばれる手法が広く利用されている。クラスタリングは、複数のコンピュータを統合し、あたかも1台のコンピュータとして動作させることによって、提供できるサービスの性能を向上させるための技術を言う。クラスタリングによれば、障害への対応能力が向上し、負荷の分散によってサービスの効率が向上し、計算能力の向上を図ることができるとされている。
【0003】
クラスタリングを実現する具体的な手法としては、フェイルオーバ型のクラスタリングや、ロードバランシング、DNSラウンドロビンその他の種々の手法が知られている。
【0004】
2 分散型データベース
また、近年、データベースを複数箇所に分散させた、分散型データベースシステムを構築することがしばしば行われている。
【0005】
従来の分散型データベースシステムは、単一のデータベースではなく、複数個の基本的に同一内容のデータベースを用いてデータベースサービスを提供しようとするものである。たとえば、東京と大阪にデータベースを設置し、2台でデータベースサービスを提供しようとするシステムの構成例が考えられる。1台で100人の人にサービスを提供できる場合、このように2台準備することによって原理的には200人の人に同時にサービスを提供できることになる。これは負荷分散の原理そのものである。
【0006】
【発明が解決しようとする課題】
しかし、実際には、2個のデータベースの内容を同期させるための処理が別途必要となるので、2倍になることはなく、1.5倍程度の性能の向上にとどまる場合が多い。ここで、同期とは、2個のデータベースの内容を同一のものに保持するための処理をいう。また、2個のデータベースの例を示したが、3個以上のデータベースを用いる例は現実にはほとんど知られていない。上記の同期処理が複雑化し、システムが複雑になる割には性能の向上が見込めないからである。
【0007】
このように、従来の分散型データベースでは、その性能の向上に限界があった。
【0008】
本発明は係る課題に鑑みなされたものであり、その目的は、上で述べたクラスタリングの技術を用いた新しい負荷分散の原理を提案し、性能が向上したデータベースシステムを提供することである。
【0009】
【課題を解決するための手段】
本発明は、上記課題を解決するために、複数のテーブルからなるデータベースを管理し、外部からの要求に応じてデータベースサービスを提供するデータベースシステムにおいて、外部からの要求を分割するマスターノード装置と、前記分割された要求を処理する複数のノード装置と、を備え、前記ノード装置は、1個以上の前記テーブルを保持し、前記マスターノード装置から送信された分割された要求の内容に従って前記テーブルに関する処理を行い、前記マスターノード装置は、前記外部からの要求を、データベースを構成するテーブル毎に分割し、この分割された要求を、各対応するテーブルを保持する前記ノード装置に送信することを特徴とするベースシステムである。
【0010】
このような構成によって、各ノード装置が個別に処理を実行することによって、処理速度が向上する。
【0011】
また、本発明は、前記ノード装置は、分割された要求を処理した結果を前記マスターノード装置に送信し、前記マスターノード装置は、前記送信されてきた結果を統合することによって、前記外部からの要求に対する処理結果を生成することを特徴とするデータベースシステムである。
【0012】
このような構成によって、各ノード装置が個別に行った処理を統合することができる。
【0013】
また、本発明は、複数のテーブルからなるデータベースを管理し、外部からの要求に応じてデータベースサービスを提供するデータベースシステムにおいて、外部からの要求を分割するマスターノード装置と、前記分割された要求を処理する複数のノード装置と、を備え、前記ノード装置は、1個以上の前記テーブルを保持し、前記マスターノード装置から送信された分割された要求の内容に従って前記テーブルに関する処理を行い、前記マスターノード装置は、前記外部からの要求を、データベースを構成するテーブル毎に分割し、この分割された要求を、処理すべき順番に基づき各対応するテーブルを保持する前記ノード装置に順番に送信することを特徴とするベースシステムである。
【0014】
このような構成によって、処理に順番に従った処理を各ノード装置に行わせることができる。
【0015】
また、本発明は、前記ノード装置は、分割された要求を処理した結果を前記マスターノード装置に送信し、前記マスターノード装置は、前記送信されてきた結果を用いて、前記結果を送信してきたノード装置とは別の他のノード装置に送信するべき分割された要求を作成することを特徴とすることを特徴とするデータベースシステムである。
【0016】
このような構成によって、ある処理の結果を利用して他の処理を行わせることが可能となる。
【0017】
また、本発明は、前記各ノード装置が保持する1個以上のテーブルは、他のノード装置が保持するテーブルとデータ内容が独立していることを特徴とするデータベースシステムである。
【0018】
このような構成によって、各テーブルに対する処理を個別に行うことができる。
【0019】
また、本発明は、前記要求は、構造化照会言語で記述されていることを特徴とするデータベースシステムである。
【0020】
このような構成に寄れば、要求の分割を、構造化照会言語の構文解析による分割を行うことによって容易に実行可能である。
【0021】
さらに、本発明は、複数のノード装置と共に、データベースシステムを構成するマスターノード装置において、外部からの要求を、データベースを構成するテーブル毎に分割し、この分割した要求を、各対応するテーブルを保持する前記ノード装置に送信することを特徴とするマスターノード装置である。
【0022】
このような構成によって、外部からの要求を、効率的に分割し、ノード装置に割り振ることができる。
【0023】
また、本発明は、複数のノード装置と共に、データベースシステムを構成するマスターノード装置において、外部からの要求を、データベースを構成するテーブル毎に分割し、この分割された要求を、処理すべき順番に基づき各対応するテーブルを保持する前記ノード装置に順番に送信することを特徴とするマスターノード装置である。
【0024】
このような構成によって、外部からの要求を分割して、分割後の処理を所定の順番に従ってノード装置に処理させることができる。
【0025】
また、本発明は、前記ノード部が前記マスターノード部に送信してきた結果を用いて、前記結果を送信してきた前記ノード装置とは別の他のノード装置に送信するべき分割された要求を作成することを特徴とするマスターノード装置である。
【0026】
このような構成によれば、所定の処理結果を他の処理に反映させることができ、所定の順番に従った処理をノード装置に行わせることができる。
【0027】
また、本発明は、コンピュータを、マスターノード装置として動作させるプログラムにおいて、前記コンピュータに、外部からの要求を、データベースを構成するテーブル毎に分割する手順と、前記分割した要求を、各対応するテーブルを保持する前記ノード装置に送信する手順と、を実行させることを特徴とするプログラムである。
【0028】
このような構成によれば、コンピュータをマスターノード装置として動作させることができる。
【0029】
また、本発明は、コンピュータを、マスターノード装置として動作させるプログラムにおいて、前記コンピュータに、外部からの要求を、データベースを構成するテーブル毎に分割する手順と、前記分割された要求を、処理すべき順番に基づき各対応するテーブルを保持する前記ノード装置に順番に送信する手順と、を実行させることを特徴とするプログラムである。
【0030】
このような構成によれば、コンピュータをマスターノード装置として動作させることができ、各ノード装置に所定の順番に従った処理を行わせることができる。
【0031】
また、本発明は、前記コンピュータにさらに、前記ノード部が前記マスターノード部に送信してきた結果を用いて、前記結果を送信してきた前記ノード装置とは別の他のノード装置に送信するべき分割された要求を作成する手順、を実行させることを特徴とするプログラムである。
【0032】
このような構成によれば、所定の処理結果を、他の処理に利用することが可能となる。
【0033】
また、本発明は、複数のテーブルからなるデータベースを管理し、外部からの要求に応じてデータベースサービスを提供する方法において、前記外部からの要求を、データベースを構成するテーブル毎に分割するステップと、前記分割された要求を別個に処理するステップと、を含むことを特徴とする方法である。
【0034】
このような方法によれば、データベースをテーブル毎に分割し、処理を各テーブル毎に分割して実行することができる。
【0035】
【発明の実施の形態】
以下、本発明の好適な実施の形態を図面に基づき説明する。
【0036】
図1には、本実施の形態の分散データベースシステムの構成図が示されている。この図に示すように、データベースシステム10は、データベースマスターノード12と、データベースノード14と、から構成されている。
【0037】
データベースマスターノード12は、請求の範囲の「マスターノード装置」の一例に相当する。データベースノード14は、請求の範囲の「ノード装置」の一例に相当する。
【0038】
また、本特許では、データベースとは、1個以上のテーブルから構成されるデータの集合体をいう。また、データベースシステムとは、このデータベースを管理し、外部に対しデータベースサービスを提供するシステムを言う。データベースサービスとは、データベースのデータを閲覧や抽出、データの変更(書き換え)、新規なデータの登録等を行うサービスを言う。
【0039】
A.データベースノード14
データベースノード14は、従来から知られている既存のデータベースプログラムが動作しているコンピュータであり、ハードディスク14b中にデータベースを構成するテーブルが格納されている。
【0040】
一般に、データベースは複数のテーブルから構成されている。販売商品のデータベースでは、商品名とその価格からなる価格テーブルや、仕入れ日と、その仕入れ日に仕入れた商品とからなる仕入れテーブル等、種々のテーブルから構成されることが多い。データベースプログラムは、これらのテーブルを管理しており、しばしばRDBMS(Relational Data Base Management System)と呼ばれる場合も多い。
【0041】
本実施の形態において特徴的なことは、複数のテーブルからなるデータベースを、このテーブルを単位として分割して、各データベースノード14が管理していることである。たとえば、5個のテーブルからなるデータベースを、5個のデータベースノード14に分割して格納しておくのである。この場合、各データベースノード14は、それぞれ1個のテーブルを保持・管理している。そして、各データベースノード14に、それぞれ保持するテーブルに関する処理を担当させることによって、データベース全体に対する処理を5個のデータベースノード14に分散させることができる。その結果、データベース処理の負担を5台のデータベースノード14に分散させることができ、性能の向上したデータベースシステム10を構築することができる。
【0042】
この場合、各データベースノード装置14が保持する各テーブルは、その内容がデータ的に独立している。このように独立しているので、各テーブルに対する処理を並列に実行させることができるのであり、その結果、処理速度の向上を図ることができる。ここで、一部のテーブルに独立していない部分が含まれている場合は、独立している部分に関してのみ処理を並列に行うことが好ましい。また、独立していない場合には、後述するスケジューリングの処理を行うことも好ましい。
【0043】
独立しているデータの典型的な例として、地図データが挙げられる。北海道の地図データと、沖縄の地図データとは互いに独立していると考えられる。 もちろん、データベースノード14の個数がテーブル数より少ない構成を採用することも可能である。たとえば、10個のテーブルからなるデータベースを、5個のデータベースノード14に分割して格納しておくこともできる。この場合、各データベースノード14は、それぞれ2個のテーブルを保持・管理している。そして、各データベースノード14に、それぞれ保持する2個のテーブルに関する処理を担当させることによって、データベース全体に対する処理を5個のデータベースノード14に分散させることができる。その結果、データベース処理の負担を5台のデータベースノード14に分散させることができ、性能の向上したデータベースシステム10を構築することができる。
【0044】
この場合も、各データベースノード装置14が保持する複数のテーブルは、その内容がデータ的に他のデータベースノード装置に保持されているテーブルとは独立しているのである。このように独立しているので、所定のデータベースノード装置14に保持されているテーブルに対する処理を、他のデータベースノード装置14における処理とは別個・独立に(すなわち並列に)実行させることができる。その結果、処理速度の向上を図ることができる。ここで、すべてのテーブルの内容が独立である必要はない。一部独立でない部分が含まれていても、独立している部分に関して並列処理が可能であるので、処理速度の向上が図れるものである。
【0045】
このように本実施の形態では、データベースを構成する複数のテーブルをデータベースノード14に分散させたので、各テーブルに対する処理を並列に実行することができる。その結果、処理性能の向上したデータベースシステム10を実現することができる。
【0046】
B.データベースマスターノード12
データベースマスターノード12は、外部からのSQL問い合わせ(SQL query)を受け付けるコンピュータである。このデータベースマスターノード12は、外部からのSQL問い合わせを、データベースを構成するテーブル毎に分割し、それぞれ対応するデータベースノード14に送信する。この送信の様子が、図1の中で、データベースマスターノード12から、データベースノード14に向かう矢印で表現されている。なお、本実施の形態で説明するデータベースマスターノード12の動作は、プログラムで記述されている。すなわちデータベースノード12は、コンピュータと、このコンピュータが実行するプログラムから構成されている。
【0047】
本実施の形態では、外部からのSQL問い合わせは、いわゆるSQL文で構成されており、データベースマスターノード12は、このSQL文を、各テーブル毎の処理に分割し、より小さなSQL文を作成するのである。
【0048】
本特許では、この分割後の小さなSQL文を「分割SQL文」と呼び、外部から送信されてきた元のSQLを「原SQL文」と呼ぶ。この原SQL文は、請求の範囲における「要求」の一例に相当し、分割SQL文は、請求の範囲における「分割された要求」の一例に相当する。
【0049】
なお、外部からのSQL文が、単一のテーブルに関する処理のみに関するSQL文である場合には、そのSQL文を分割せずにそのまま対応するデータベースノード14に送信する。このような分割を伴わない「振り分ける」処理でも、各テーブルに関する処理を各データベースノード14に分散させることができるので、処理速度の向上を図ることができる。
【0050】
なお、SQLとは、Structured Query Language の意味であり、日本語では構造化照会言語(または構造化問い合わせ言語)と呼ばれることもある。
【0051】
各データベースノード14は、従来から利用されているデータベースプログラムが起動しているコンピュータであり、送信されてきた分割SQL文を、従来のデータベースシステムと同様に処理を行う。すなわち、データベースノード14において行われるSQL文の処理自体は、従来のシステムと全く同様である。
【0052】
各データベースノード14は、従来のシステムと同様の処理を実行し、結果をデータベースマスターノード12に返す。この様子が図2に示されている。図2の中のデータベースノード14からデータベースマスターノード12に向かう矢印がこの「返す」動作を表している。図2は、図1と同様に、本実施の形態のデータベースシステム10の構成図である。
【0053】
そして、データベースマスターノード12は、データベースノード14から返されてきた結果を統合し、最終的な結果を得、この最終的な結果を外部に提供するのである。この結果、従来のデータベースシステムと同様の処理を、より高速に実行可能なデータベースシステムを実現できるのである。
【0054】
C.具体的な動作例
以下、簡単な例を用いて、本実施の形態のデータベースシステム10の動作を詳細に説明する。これらの動作は、プログラムで記述され、データベースマスターノード12やデータベースノード14のコンピュータがこのプログラムを実行することによって、本実施の形態で説明する動作を行わせている。
【0055】
図3には、この動作例を表すフローチャートが示されている。
【0056】
まず、ステップS3−1においては、クライアント20が所定のネットワークを介してアプリケーションサーバ22にデータベースの問い合わせを行う。このアプリケーションサーバ22は、クライアント20が参照するサーバであり、たとえばWEBサーバ等が好ましい一例である。クライアント20はインターネット等を通じてこのWEBサーバにアクセスするのである。
【0057】
アプリケーションサーバ22がWEBサーバである場合には、クライアント20は、WEBページの画面上でデータベースの内容を見ることができるのである。
【0058】
ステップS3−1における問い合わせの例としては、たとえば、クライアントが会社の人事データベースの閲覧を行うために、「東京都内に住所を有する40歳以上の社員」のような条件を含む問い合わせが考えられる。クライアント20は、このような条件を、WEBページ上のチェックボタンや、ラジオボタン、テキスト入力その他の種々のデータ入力手法で入力することができる。
【0059】
次に、ステップS3−2においては、クライアント20の示した条件に基づき、アプリケーションサーバ22がSQL文を作成し、そのSQL文をデータベースシステム10に送信する。この送信されるSQL文は、上で述べた原SQLである。この原SQL文は、特許請求の範囲の「要求」の一例に相当する。
【0060】
以上のようなクライアント20やアプリケーションサーバ22の動作は、従来から知られている動作である。
【0061】
そして、ステップS3−3においては、データベースマスターノード12が上記原SQL文を受信する。そして、このSQL文を、各テーブル毎に分割するのである。具体的には、以下のような動作を行う。
【0062】
select文
原SQL文にたとえば、以下のような第1select文が存在した場合、このSQL文は、第2select文と、第3select文に分割される。なお、SQLにおけるSelect文とは、データベース内の特定のデータを検索する命令である。
【0063】
第1select文:
【数1】
Select name, address from Nametable, Addresstable where Nametable No=’1’ and Addresstable No=’1’
この第1select文は、Nametable というテーブル中のNo=1のデータである name を取得し、AddressTable というテーブル中のNo=1のデータである address を取得せよという内容のselect文である。
【0064】
Nametable というテーブルの内容を表す概念図が図4に示されている。この図に示すように、Nametable は、データのNoと氏名とから構成されるテーブルである。この氏名のフィールド名(項目名ともいう)は”name”である。
【0065】
AddressTable というテーブルの内容を表す概念図が図5に示されている。この図に示すように、Addresstable は、データのNoと住所と、電話番号とから構成されるテーブルである。この住所のフィールド名(項目名ともいう)は”address”である。また電話番号のフィールド名は”tel”である。
【0066】
第2select文:
【数2】
Select name from Nametable where No=’1’
この第2select文は、Nametable というテーブル中のNo=1のデータである name を取得する内容である。このような第2Select文は、請求の範囲の「分割された要求」の一例に相当する。この第2Select文は、Nametable というテーブルに関する処理である。
第3select文:
【数3】
Select address from Addresstable where No=’1’
この第3select文は、Addresstable というテーブル中のNo=1のデータである address を取得する内容である。このような第3Select文も、請求の範囲の「分割された要求」の一例に相当する。この第3select文は、Addresstable というテーブルに関する処理である。
【0067】
すなわち、Nametable というテーブルと、Addresstable というテーブルとに関する処理を行わせる内容が、それぞれのテーブルに対する処理内容に分割されているのである。
【0068】
このような処理は、一般に構文解析による言語処理の技術そのものである。構文解析は、コンピュータ言語のインタープリターやコンパイラー等で従来から利用されており、コンピュータ言語の内容を解析してその動作をコンピュータが実行することは従来から行われてきたことである。
【0069】
本実施の形態においても、この構文解析の技術を用いれば、コンピュータ言語の解析と同様に、SQL文を解析し、その内容を分割することが可能である。
【0070】
また、データベースマスターノード12が、このような分割処理を行い、分割後の分割SQL文を各データベースノード14に送信するためには、各データベースノード14がどのテーブルを受け持っているのか(保持しているか)に関する情報が必要である。このような情報はデータベースマスターノード12に備えられているハードディスク12a中に格納されている。このハードディスク12a中に格納されている情報の例を図6に示す。この図に示されているように、各データベースノード14に、それぞれnametable , Addresstable , Agetable , Birthdaytable , Familytable等のテーブルが保持されているという情報がハードディスク12a内に格納されている。
【0071】
update文
原SQL文に、update文が存在した場合、その分割は、上記select文と全く同様に行われる。update文は、データベース中のデータの更新を行うSQLの文である。
【0072】
insert文
原SQL文に、insert文が存在した場合、その分割も、上記select文と全く同様に行われる。insert文は、新しいデータを挿入するSQL文である。
【0073】
次に、ステップS3−4においては、データベースマスターノード12が上記分割後の分割SQL文をそれぞれ対応するデータベースノード14に送信する。
【0074】
この分割SQL文は、たとえば、上記第2Select文、第3Select文である。第2Select文は、Nametable というテーブルを保持するデータベースノード14に送信され、第3Select文は、Addresstable というテーブルを保持するデータベースノード14に送信される。データベースマスターノード12は、ハードディスク12aの内部を参照することにより、どのテーブルがどのデータベースノード14に保持されているのかを知ることができる。
【0075】
次に、ステップS3−5においては、データベースノード14が上記分割SQL文を受信し、それぞれそのSQL文によって指示された処理を実行する。
【0076】
たとえば、テーブル Nametable を保持するデータベースノード14は、上記第2select文を受信し、テーブル Nametable からNo=1のデータであるnameを取り出し、この値をデータベースマスターノード12に返信する。
【0077】
また、テーブル Addresstable を保持するデータベースノード14は、上記第3select文を受信し、テーブル Addresstable からNo=1のデータであるaddressを取り出し、この値をデータベースマスターノード12に返信する。
【0078】
このようなデータベースノード12の動作自体は、従来のデータベースプログラムの動作と同様である。
【0079】
本実施の形態において特徴的なことは、データベースをテーブルに分けて保持しているので、各テーブルに対する処理を並行して同時に実行することができたことである。この結果、本実施の形態によればデータベース処理速度の向上が図れる。
【0080】
次に、ステップS3−6においては、データベースマスターノード12が、データベースノード12からの処理結果を受信し、その結果を統合する。
【0081】
たとえば、テーブル Nametable を保持するデータベースノード14が送信してきたnameと、テーブル Addresstable を保持するデータベースノード14が送信してきたaddressとを、合わせて、アプリケーションサーバ22に送信するのである。アプリケーションサーバ22は、この得られた結果をWEBページ等に表示することによって、クライアント20にデータベースの処理結果を提供するのである。
【0082】
このように、アプリケーションサーバ22から見れば、本実施の形態のデータベースシステム10は、従来のデータベースシステムと機能上は何ら変わりないものである。
【0083】
D.効果
本実施の形態においては、データベースを構成するテーブル毎にデータベースを分割して、それぞれ別個のデータベースノード12で管理・保持している。そして、各テーブルに対する処理をそれぞれ対応するデータベースノード14で個別に行うことにより処理を並列に行うことができ、処理速度の向上が実現できるのである。
【0084】
E.実施の形態2(スケジューリング)
上のA〜Dで述べた例では、原SQL文を単純に、テーブル毎にその内容を分割する例を示した。しかし、ある一方のテーブルにおける処理結果が決定されないと、他方のテーブルに対するSQL文が作成できない場合もある。典型的な例としては、ある一方のテーブルの検索結果を利用して他方のテーブルの検索が行われる場合等が挙げられる。たとえば、電話番号”046−1234−5678”の人の名前を知りたい場合等がこれに相当する。
【0085】
このような場合には、データベースマスターノード12が、一方のテーブルを保持しているデータベースノード14にSQL文を送信し、この結果が得られてから、他方のテーブルを保持しているデータベースノード14に対するSQL文を作成し、そのデータベースノード14に作成したSQL文を送信するのである。このような動作を本実施の形態2ではスケジューリングと呼んでいる。
【0086】
以下、このような動作をフローチャートに基づき、詳細に説明する。具体的な例としては、上で述べた電話番号から人の名前を知りたい場合を適宜用いる。
【0087】
図7には、このフローチャートが示されている。
【0088】
まず、ステップS7−1においては、外部から送信されてきたSQL文が複文であるかどうか検査される。この検査の結果、2種以上の命令(コマンド(command)とも呼ぶ)が1つの文に含まれる複文であると判断された場合には、ステップS7−2に処理が移行し、複文でない場合には、ステップS7−3に処理が移行する。
【0089】
ステップS7−3では、既に図3で説明した分割処理が実行され、1つのSQL文の内容が、そのSQL文に含まれるテーブル毎に分割されるのである。
【0090】
一方、ステップS7−2では、2種以上のコマンドの最も先に処理すべきコマンドの内容が取り出され、1つのSQL文が作成される。
【0091】
たとえば、外部から次のような第4Select文が送信されてきた場合、データベースマスターノード12は、この文が複文であると判断し、ステップS7−2に処理が移行する。その理由は、コマンドSelectが2個含まれているからである。そして、最も内側の先に処理すべきSelectコマンドを選択し、その内容を抽出して、第5Select文を生成する。
【0092】
第4Select文は、電話番号が ”046−1234−5678”である人のNoをテーブル Addresstable から取り出し、このNoの人の名前をテーブル Nametable から取り出すSQL文である。
【0093】
第4Select文:
【数4】
Select name from Nametable where No = Select no from Addresstable where tel = ”046−1234−5678”
第5Select文:
【数5】
Select no from Addresstable where tel = ”046−1234−5678”
データベースマスターノード12はこのような第5select文を作成し、テーブル addresstable を保持するデータベースノード14に送信する。この第5Select文は、実施の形態2における「分割SQL文」である。
【0094】
ステップS7−4では、この第5select文を受信したデータベースノード14が、従来のデータベースシステムと同様の動作をし、電話番号が ”046−1234−5678”である人のNoをテーブル Addresstable から取り出し、その値をデータベースマスターノード12に送信する。
【0095】
ステップS7−5では、送信されてきたNoに基づき、データベースマスターノード12が次の第6Select文を作成する。この第6Select文も、本実施の形態2における分割SQL文の例である。
【0096】
第6Select文:
【数6】
Select name from Nametable where no = ”第5Select文の結果”
ここで、”第5Select文の結果”とは、具体的には「1」や「2」のような数である。
【0097】
なお、以上述べた例においても、テーブル Nametable は図4の如きテーブルであり、テーブル Addresstable は図5の如きテーブルである。
【0098】
SQLのコマンドが複数含まれているSQL文を実行する際に、各SQL文の処理の実行順序は、従来から一般に構文解析の技術を用いて決定される。この技術は従来からコンピュータ言語のインタープリターやコンパイラー等の構成に広く利用されている技術である。本実施の形態においてもこのような構文解析の技術を用いて、上記第4Select文から、第5Select文や第6Select文を構成する。
【0099】
データベースマスターノード12は、この第6Select文をテーブル Nametable を保持するデータベースノード14に送信する。
【0100】
ステップS7−6では、この第6select文を受信したデータベースノード14が、従来のデータベースシステムと同様の動作をし、第5Select文の結果の番号、たとえばNoが「1」である人の氏名をテーブル Nametable から取り出し、その値(氏名)をデータベースマスターノード12に送信する。
【0101】
ステップS7−7では、送信されてきた氏名を、データベースマスターノード12が外部に提供する。この動作は図3のステップS3−6における送信の動作と基本的に同様である。
【0102】
このように、本実施の形態(E.実施の形態2)においては、SQL文の内容を構文解析し、SQL文を順次作成して、各データベースノード14に送信している。したがって、あるテーブルに対する処理が、他のテーブルに対する処理の結果を利用するような場合でも、他のテーブルに対する処理結果を利用してSQL文を作成することができるので、複文のSQL文を分散させて複数のデータベースノード14に実行させることが可能である。
【0103】
F.その他
(1)標準的なSQL文以外に、条件分岐や繰り返し等の独自の拡張されたSQL文をサポートするようにデータベースシステム10を構成することも好ましい。この場合は、その拡張されたSQL文は、データベースマスターノード12が処理・実行を行う。
【0104】
(2)いわゆるストアードプロシージャに関しては、データベースマスターノード12がSQL文に分解する。そして、データベースマスターノード12が、各SQL文を各データベースノード14に送信し、各データベースノード14ががそれぞれ実行する。
【0105】
(3)データベースマスターノード12は、各データベースノード14が送信してくる処理結果を統合してから外部に提供するが、この際、各データベースノード14が送信してくる処理結果中にエラーが生じる場合も想定される。この場合、データベースマスターノード12はいわゆるロールバック(Rollback)を実行し、分割SQL文を送信する前の状態にまでデータベースの状態を戻してから、エラーが生じた旨を外部に提供するのである。このロールバックの技術自体はデータベースシステムにおいて従来から知られている技術である。本実施の形態では、このロールバックの判断をデータベースマスターノード12が行っているのである。
【0106】
【発明の効果】
以上述べたように、本発明によれば、データベースをテーブル毎に分散させて管理しているので、各テーブル毎の処理を並列に行うことができる。その結果、処理性能の向上したデータベースシステムが得られる。
【0107】
また、本発明によれば、外部からの要求を、各テーブル毎の要求に分割する際に、一方のテーブルの処理結果に基づき、他のテーブルに対する要求を作成している。その結果、テーブル毎の処理を所定の順番に基づき行うことができる。
【図面の簡単な説明】
【図1】本実施の形態のデータベースシステムの構成図である。
【図2】本実施の形態のデータベースシステムの構成図である。
【図3】本実施の形態のデータベースシステムの動作を表すフローチャートである。
【図4】テーブル Nametable 内容を表す図である。
【図5】テーブル AddressTable の内容を表す図である。
【図6】データベースノードの保持するテーブルを表す説明図である。
【図7】実施の形態2の動作を表すフローチャートである。
【符号の説明】
10 データベースシステム
12 データベースマスターノード
12a ハードディスク
14 データベースノード
20 クライアント
22 アプリケーションサーバ
Claims (13)
- 複数のテーブルからなるデータベースを管理し、外部からの要求に応じてデータベースサービスを提供するデータベースシステムにおいて、
外部からの要求を分割するマスターノード装置と、
前記分割された要求を処理する複数のノード装置と、
を備え、
前記ノード装置は、1個以上の前記テーブルを保持し、前記マスターノード装置から送信された分割された要求の内容に従って前記テーブルに関する処理を行い、
前記マスターノード装置は、前記外部からの要求を、データベースを構成するテーブル毎に分割し、この分割された要求を、各対応するテーブルを保持する前記ノード装置に送信することを特徴とするベースシステム。 - 請求項1記載のデータベースシステムにおいて、
前記ノード装置は、分割された要求を処理した結果を前記マスターノード装置に送信し、
前記マスターノード装置は、前記送信されてきた結果を統合することによって、前記外部からの要求に対する処理結果を生成することを特徴とするデータベースシステム。 - 複数のテーブルからなるデータベースを管理し、外部からの要求に応じてデータベースサービスを提供するデータベースシステムにおいて、
外部からの要求を分割するマスターノード装置と、
前記分割された要求を処理する複数のノード装置と、
を備え、
前記ノード装置は、1個以上の前記テーブルを保持し、前記マスターノード装置から送信された分割された要求の内容に従って前記テーブルに関する処理を行い、
前記マスターノード装置は、前記外部からの要求を、データベースを構成するテーブル毎に分割し、この分割された要求を、処理すべき順番に基づき各対応するテーブルを保持する前記ノード装置に順番に送信することを特徴とするベースシステム。 - 請求項3記載のデータベースシステムにおいて、
前記ノード装置は、分割された要求を処理した結果を前記マスターノード装置に送信し、
前記マスターノード装置は、前記送信されてきた結果を用いて、前記結果を送信してきたノード装置とは別の他のノード装置に送信するべき分割された要求を作成することを特徴とすることを特徴とするデータベースシステム。 - 請求項1、2、3又は4記載のデータベースシステムにおいて、
前記各ノード装置が保持する1個以上のテーブルは、他のノード装置が保持するテーブルとデータ内容が独立していることを特徴とするデータベースシステム。 - 請求項1、2、3又は4記載のデータベースシステムにおいて、
前記要求は、構造化照会言語で記述されていることを特徴とするデータベースシステム。 - 複数のノード装置と共に、データベースシステムを構成するマスターノード装置において、
外部からの要求を、データベースを構成するテーブル毎に分割し、この分割した要求を、各対応するテーブルを保持する前記ノード装置に送信することを特徴とするマスターノード装置。 - 複数のノード装置と共に、データベースシステムを構成するマスターノード装置において、
外部からの要求を、データベースを構成するテーブル毎に分割し、この分割された要求を、処理すべき順番に基づき各対応するテーブルを保持する前記ノード装置に順番に送信することを特徴とするマスターノード装置。 - 請求項8記載のマスターノード装置において、
前記ノード部が前記マスターノード部に送信してきた結果を用いて、前記結果を送信してきた前記ノード装置とは別の他のノード装置に送信するべき分割された要求を作成することを特徴とするマスターノード装置。 - コンピュータを、請求項7記載のマスターノード装置として動作させるプログラムにおいて、前記コンピュータに、
外部からの要求を、データベースを構成するテーブル毎に分割する手順と、
前記分割した要求を、各対応するテーブルを保持する前記ノード装置に送信する手順と、
を実行させることを特徴とするプログラム。 - コンピュータを、請求項8記載のマスターノード装置として動作させるプログラムにおいて、前記コンピュータに、
外部からの要求を、データベースを構成するテーブル毎に分割する手順と、
前記分割された要求を、処理すべき順番に基づき各対応するテーブルを保持する前記ノード装置に順番に送信する手順と、
を実行させることを特徴とするプログラム。 - 請求項11記載のプログラムにおいて、前記コンピュータにさらに、
前記ノード部が前記マスターノード部に送信してきた結果を用いて、前記結果を送信してきた前記ノード装置とは別の他のノード装置に送信するべき分割された要求を作成する手順、
を実行させることを特徴とするプログラム。 - 複数のテーブルからなるデータベースを管理し、外部からの要求に応じてデータベースサービスを提供する方法において、
前記外部からの要求を、データベースを構成するテーブル毎に分割するステップと、
前記分割された要求を別個に処理するステップと、
を含むことを特徴とする方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002220765A JP2004062566A (ja) | 2002-07-30 | 2002-07-30 | データベースシステム及びそれを構成するマスターノード装置及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002220765A JP2004062566A (ja) | 2002-07-30 | 2002-07-30 | データベースシステム及びそれを構成するマスターノード装置及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004062566A true JP2004062566A (ja) | 2004-02-26 |
Family
ID=31941262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002220765A Pending JP2004062566A (ja) | 2002-07-30 | 2002-07-30 | データベースシステム及びそれを構成するマスターノード装置及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004062566A (ja) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008250588A (ja) * | 2007-03-30 | 2008-10-16 | Nomura Research Institute Ltd | データ処理システム |
JP2012059215A (ja) * | 2010-09-13 | 2012-03-22 | Nomura Research Institute Ltd | データ検索システム及びプログラム |
JPWO2010098034A1 (ja) * | 2009-02-24 | 2012-08-30 | 日本電気株式会社 | 分散データベース管理システムおよび分散データベース管理方法 |
JP2013131011A (ja) * | 2011-12-21 | 2013-07-04 | Nomura Research Institute Ltd | データ利用システム |
WO2013136442A1 (ja) * | 2012-03-13 | 2013-09-19 | 株式会社野村総合研究所 | データ利用システム、時限データの履歴管理システム及びデータ処理システム |
JP2014016887A (ja) * | 2012-07-10 | 2014-01-30 | Nomura Research Institute Ltd | データ利用システム |
JP2014112385A (ja) * | 2013-12-24 | 2014-06-19 | Nomura Research Institute Ltd | データ利用システム |
JP2015125538A (ja) * | 2013-12-26 | 2015-07-06 | 三菱電機株式会社 | 部分式ファイル生成装置、計算結果算出装置、部分式ファイル生成プログラムおよび計算結果算出プログラム |
JP2016110397A (ja) * | 2014-12-05 | 2016-06-20 | 日本電信電話株式会社 | 並列処理システム、方法、およびプログラム |
KR20180021994A (ko) * | 2016-08-23 | 2018-03-06 | 주식회사 한컴시큐어 | 대용량 데이터베이스에 최적화된 암호화 스케줄링의 자동화가 가능한 데이터베이스 암호화 장치 및 그 동작 방법 |
JP2022551454A (ja) * | 2019-10-25 | 2022-12-09 | 中興通訊股▲ふん▼有限公司 | ストアドプロシージャの実行方法、装置、データベースシステム及び記憶媒体 |
-
2002
- 2002-07-30 JP JP2002220765A patent/JP2004062566A/ja active Pending
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008250588A (ja) * | 2007-03-30 | 2008-10-16 | Nomura Research Institute Ltd | データ処理システム |
JPWO2010098034A1 (ja) * | 2009-02-24 | 2012-08-30 | 日本電気株式会社 | 分散データベース管理システムおよび分散データベース管理方法 |
JP2012059215A (ja) * | 2010-09-13 | 2012-03-22 | Nomura Research Institute Ltd | データ検索システム及びプログラム |
JP2013131011A (ja) * | 2011-12-21 | 2013-07-04 | Nomura Research Institute Ltd | データ利用システム |
WO2013136442A1 (ja) * | 2012-03-13 | 2013-09-19 | 株式会社野村総合研究所 | データ利用システム、時限データの履歴管理システム及びデータ処理システム |
JP2014016887A (ja) * | 2012-07-10 | 2014-01-30 | Nomura Research Institute Ltd | データ利用システム |
JP2014112385A (ja) * | 2013-12-24 | 2014-06-19 | Nomura Research Institute Ltd | データ利用システム |
JP2015125538A (ja) * | 2013-12-26 | 2015-07-06 | 三菱電機株式会社 | 部分式ファイル生成装置、計算結果算出装置、部分式ファイル生成プログラムおよび計算結果算出プログラム |
JP2016110397A (ja) * | 2014-12-05 | 2016-06-20 | 日本電信電話株式会社 | 並列処理システム、方法、およびプログラム |
KR20180021994A (ko) * | 2016-08-23 | 2018-03-06 | 주식회사 한컴시큐어 | 대용량 데이터베이스에 최적화된 암호화 스케줄링의 자동화가 가능한 데이터베이스 암호화 장치 및 그 동작 방법 |
KR101936273B1 (ko) * | 2016-08-23 | 2019-01-08 | 주식회사 한컴시큐어 | 대용량 데이터베이스에 최적화된 암호화 스케줄링의 자동화가 가능한 데이터베이스 암호화 장치 및 그 동작 방법 |
JP2022551454A (ja) * | 2019-10-25 | 2022-12-09 | 中興通訊股▲ふん▼有限公司 | ストアドプロシージャの実行方法、装置、データベースシステム及び記憶媒体 |
JP7427775B2 (ja) | 2019-10-25 | 2024-02-05 | 中興通訊股▲ふん▼有限公司 | ストアドプロシージャの実行方法、装置、データベースシステム及び記憶媒体 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200183932A1 (en) | Optimizing write operations in object schema-based application programming interfaces (apis) | |
CA3025493C (en) | Optimizing read and write operations in object schema-based application programming interfaces (apis) | |
US7401064B1 (en) | Method and apparatus for obtaining metadata from multiple information sources within an organization in real time | |
US9753706B2 (en) | Adding directives for versions of source files directly into source code | |
US7349929B2 (en) | Accessing data based on user identity | |
US7426543B2 (en) | Accessing data stored in multiple locations | |
US8805864B2 (en) | Multi-client generic persistence for extension fields | |
US8219581B2 (en) | Method and system for analyzing ordered data using pattern matching in a relational database | |
US20120130987A1 (en) | Dynamic Data Aggregation from a Plurality of Data Sources | |
US20070156698A1 (en) | Systems and methods for finding log files generated by a distributed computer | |
US10102269B2 (en) | Object query model for analytics data access | |
US7779047B2 (en) | Pluggable merge patterns for data access services | |
US10120886B2 (en) | Database integration of originally decoupled components | |
US7765196B2 (en) | Method and apparatus for web cache using database triggers | |
US20040215825A1 (en) | Accessing data in a computer network | |
US7373350B1 (en) | Virtual metadata analytics and management platform | |
US20020059280A1 (en) | Automated table installer for multiple heterogenous databases | |
WO2020238597A1 (zh) | 基于Hadoop的数据更新方法、装置、系统及介质 | |
US20210124684A1 (en) | Systems and methods for implementing overlapping data caching for object application program interfaces | |
US20140229435A1 (en) | In-memory real-time synchronized database system and method | |
JPWO2011111532A1 (ja) | データベースシステム | |
JP2004062566A (ja) | データベースシステム及びそれを構成するマスターノード装置及びプログラム | |
US10204123B2 (en) | Method for accessing and automatically correlating data from a plurality of external data sources | |
CN109947768B (zh) | 用于数据库对象的局部标识符 | |
US11556316B2 (en) | Distributed extensible dynamic graph |