(57)【要約】【課題】性能が向上したデータベースシステムを提供することである。【解決手段】複数のテーブルからなるデータベースを、このテーブルを単位として分割して、各データベースノード１４が管理している。各データベースノード１４は、それぞれ１個以上のテーブルを保持・管理している。そして、各データベースノード１４に、それぞれ保持するテーブルに関する処理を担当させることによって、データベース全体に対する処理を複数個のデータベースノード１４に分散させることができる。その結果、データベース処理の負担を複数台のデータベースノード１４に分散させることができ、性能の向上したデータベースシステム１０を構築することができる。【選択図】　　　図１
2004062566.tif 000002
【特許請求の範囲】
【請求項１】
複数のテーブルからなるデータベースを管理し、外部からの要求に応じてデータベースサービスを提供するデータベースシステムにおいて、
外部からの要求を分割するマスターノード装置と、
前記分割された要求を処理する複数のノード装置と、
を備え、
前記ノード装置は、１個以上の前記テーブルを保持し、前記マスターノード装置から送信された分割された要求の内容に従って前記テーブルに関する処理を行い、
前記マスターノード装置は、前記外部からの要求を、データベースを構成するテーブル毎に分割し、この分割された要求を、各対応するテーブルを保持する前記ノード装置に送信することを特徴とするベースシステム。
【請求項２】
請求項１記載のデータベースシステムにおいて、
前記ノード装置は、分割された要求を処理した結果を前記マスターノード装置に送信し、
前記マスターノード装置は、前記送信されてきた結果を統合することによって、前記外部からの要求に対する処理結果を生成することを特徴とするデータベースシステム。
【請求項３】
複数のテーブルからなるデータベースを管理し、外部からの要求に応じてデータベースサービスを提供するデータベースシステムにおいて、
外部からの要求を分割するマスターノード装置と、
前記分割された要求を処理する複数のノード装置と、
を備え、
前記ノード装置は、１個以上の前記テーブルを保持し、前記マスターノード装置から送信された分割された要求の内容に従って前記テーブルに関する処理を行い、
前記マスターノード装置は、前記外部からの要求を、データベースを構成するテーブル毎に分割し、この分割された要求を、処理すべき順番に基づき各対応するテーブルを保持する前記ノード装置に順番に送信することを特徴とするベースシステム。
【請求項４】
請求項３記載のデータベースシステムにおいて、
前記ノード装置は、分割された要求を処理した結果を前記マスターノード装置に送信し、
前記マスターノード装置は、前記送信されてきた結果を用いて、前記結果を送信してきたノード装置とは別の他のノード装置に送信するべき分割された要求を作成することを特徴とすることを特徴とするデータベースシステム。
【請求項５】
請求項１、２、３又は４記載のデータベースシステムにおいて、
前記各ノード装置が保持する１個以上のテーブルは、他のノード装置が保持するテーブルとデータ内容が独立していることを特徴とするデータベースシステム。
【請求項６】
請求項１、２、３又は４記載のデータベースシステムにおいて、
前記要求は、構造化照会言語で記述されていることを特徴とするデータベースシステム。
【請求項７】
複数のノード装置と共に、データベースシステムを構成するマスターノード装置において、
外部からの要求を、データベースを構成するテーブル毎に分割し、この分割した要求を、各対応するテーブルを保持する前記ノード装置に送信することを特徴とするマスターノード装置。
【請求項８】
複数のノード装置と共に、データベースシステムを構成するマスターノード装置において、
外部からの要求を、データベースを構成するテーブル毎に分割し、この分割された要求を、処理すべき順番に基づき各対応するテーブルを保持する前記ノード装置に順番に送信することを特徴とするマスターノード装置。
【請求項９】
請求項８記載のマスターノード装置において、
前記ノード部が前記マスターノード部に送信してきた結果を用いて、前記結果を送信してきた前記ノード装置とは別の他のノード装置に送信するべき分割された要求を作成することを特徴とするマスターノード装置。
【請求項１０】
コンピュータを、請求項７記載のマスターノード装置として動作させるプログラムにおいて、前記コンピュータに、
外部からの要求を、データベースを構成するテーブル毎に分割する手順と、
前記分割した要求を、各対応するテーブルを保持する前記ノード装置に送信する手順と、
を実行させることを特徴とするプログラム。
【請求項１１】
コンピュータを、請求項８記載のマスターノード装置として動作させるプログラムにおいて、前記コンピュータに、
外部からの要求を、データベースを構成するテーブル毎に分割する手順と、
前記分割された要求を、処理すべき順番に基づき各対応するテーブルを保持する前記ノード装置に順番に送信する手順と、
を実行させることを特徴とするプログラム。
【請求項１２】
請求項１１記載のプログラムにおいて、前記コンピュータにさらに、
前記ノード部が前記マスターノード部に送信してきた結果を用いて、前記結果を送信してきた前記ノード装置とは別の他のノード装置に送信するべき分割された要求を作成する手順、
を実行させることを特徴とするプログラム。
【請求項１３】
複数のテーブルからなるデータベースを管理し、外部からの要求に応じてデータベースサービスを提供する方法において、
前記外部からの要求を、データベースを構成するテーブル毎に分割するステップと、
前記分割された要求を別個に処理するステップと、
を含むことを特徴とする方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データベースシステムに関する。特に、データベースシステムの性能の向上に関する。
【０００２】
【従来の技術】
１　クラスタリング
コンピュータによるサービスの性能を向上させるために、クラスタリングと呼ばれる手法が広く利用されている。クラスタリングは、複数のコンピュータを統合し、あたかも１台のコンピュータとして動作させることによって、提供できるサービスの性能を向上させるための技術を言う。クラスタリングによれば、障害への対応能力が向上し、負荷の分散によってサービスの効率が向上し、計算能力の向上を図ることができるとされている。
【０００３】
クラスタリングを実現する具体的な手法としては、フェイルオーバ型のクラスタリングや、ロードバランシング、ＤＮＳラウンドロビンその他の種々の手法が知られている。
【０００４】
２　分散型データベース
また、近年、データベースを複数箇所に分散させた、分散型データベースシステムを構築することがしばしば行われている。
【０００５】
従来の分散型データベースシステムは、単一のデータベースではなく、複数個の基本的に同一内容のデータベースを用いてデータベースサービスを提供しようとするものである。たとえば、東京と大阪にデータベースを設置し、２台でデータベースサービスを提供しようとするシステムの構成例が考えられる。１台で１００人の人にサービスを提供できる場合、このように２台準備することによって原理的には２００人の人に同時にサービスを提供できることになる。これは負荷分散の原理そのものである。
【０００６】
【発明が解決しようとする課題】
しかし、実際には、２個のデータベースの内容を同期させるための処理が別途必要となるので、２倍になることはなく、１．５倍程度の性能の向上にとどまる場合が多い。ここで、同期とは、２個のデータベースの内容を同一のものに保持するための処理をいう。また、２個のデータベースの例を示したが、３個以上のデータベースを用いる例は現実にはほとんど知られていない。上記の同期処理が複雑化し、システムが複雑になる割には性能の向上が見込めないからである。
【０００７】
このように、従来の分散型データベースでは、その性能の向上に限界があった。
【０００８】
本発明は係る課題に鑑みなされたものであり、その目的は、上で述べたクラスタリングの技術を用いた新しい負荷分散の原理を提案し、性能が向上したデータベースシステムを提供することである。
【０００９】
【課題を解決するための手段】
本発明は、上記課題を解決するために、複数のテーブルからなるデータベースを管理し、外部からの要求に応じてデータベースサービスを提供するデータベースシステムにおいて、外部からの要求を分割するマスターノード装置と、前記分割された要求を処理する複数のノード装置と、を備え、前記ノード装置は、１個以上の前記テーブルを保持し、前記マスターノード装置から送信された分割された要求の内容に従って前記テーブルに関する処理を行い、前記マスターノード装置は、前記外部からの要求を、データベースを構成するテーブル毎に分割し、この分割された要求を、各対応するテーブルを保持する前記ノード装置に送信することを特徴とするベースシステムである。
【００１０】
このような構成によって、各ノード装置が個別に処理を実行することによって、処理速度が向上する。
【００１１】
また、本発明は、前記ノード装置は、分割された要求を処理した結果を前記マスターノード装置に送信し、前記マスターノード装置は、前記送信されてきた結果を統合することによって、前記外部からの要求に対する処理結果を生成することを特徴とするデータベースシステムである。
【００１２】
このような構成によって、各ノード装置が個別に行った処理を統合することができる。
【００１３】
また、本発明は、複数のテーブルからなるデータベースを管理し、外部からの要求に応じてデータベースサービスを提供するデータベースシステムにおいて、外部からの要求を分割するマスターノード装置と、前記分割された要求を処理する複数のノード装置と、を備え、前記ノード装置は、１個以上の前記テーブルを保持し、前記マスターノード装置から送信された分割された要求の内容に従って前記テーブルに関する処理を行い、前記マスターノード装置は、前記外部からの要求を、データベースを構成するテーブル毎に分割し、この分割された要求を、処理すべき順番に基づき各対応するテーブルを保持する前記ノード装置に順番に送信することを特徴とするベースシステムである。
【００１４】
このような構成によって、処理に順番に従った処理を各ノード装置に行わせることができる。
【００１５】
また、本発明は、前記ノード装置は、分割された要求を処理した結果を前記マスターノード装置に送信し、前記マスターノード装置は、前記送信されてきた結果を用いて、前記結果を送信してきたノード装置とは別の他のノード装置に送信するべき分割された要求を作成することを特徴とすることを特徴とするデータベースシステムである。
【００１６】
このような構成によって、ある処理の結果を利用して他の処理を行わせることが可能となる。
【００１７】
また、本発明は、前記各ノード装置が保持する１個以上のテーブルは、他のノード装置が保持するテーブルとデータ内容が独立していることを特徴とするデータベースシステムである。
【００１８】
このような構成によって、各テーブルに対する処理を個別に行うことができる。
【００１９】
また、本発明は、前記要求は、構造化照会言語で記述されていることを特徴とするデータベースシステムである。
【００２０】
このような構成に寄れば、要求の分割を、構造化照会言語の構文解析による分割を行うことによって容易に実行可能である。
【００２１】
さらに、本発明は、複数のノード装置と共に、データベースシステムを構成するマスターノード装置において、外部からの要求を、データベースを構成するテーブル毎に分割し、この分割した要求を、各対応するテーブルを保持する前記ノード装置に送信することを特徴とするマスターノード装置である。
【００２２】
このような構成によって、外部からの要求を、効率的に分割し、ノード装置に割り振ることができる。
【００２３】
また、本発明は、複数のノード装置と共に、データベースシステムを構成するマスターノード装置において、外部からの要求を、データベースを構成するテーブル毎に分割し、この分割された要求を、処理すべき順番に基づき各対応するテーブルを保持する前記ノード装置に順番に送信することを特徴とするマスターノード装置である。
【００２４】
このような構成によって、外部からの要求を分割して、分割後の処理を所定の順番に従ってノード装置に処理させることができる。
【００２５】
また、本発明は、前記ノード部が前記マスターノード部に送信してきた結果を用いて、前記結果を送信してきた前記ノード装置とは別の他のノード装置に送信するべき分割された要求を作成することを特徴とするマスターノード装置である。
【００２６】
このような構成によれば、所定の処理結果を他の処理に反映させることができ、所定の順番に従った処理をノード装置に行わせることができる。
【００２７】
また、本発明は、コンピュータを、マスターノード装置として動作させるプログラムにおいて、前記コンピュータに、外部からの要求を、データベースを構成するテーブル毎に分割する手順と、前記分割した要求を、各対応するテーブルを保持する前記ノード装置に送信する手順と、を実行させることを特徴とするプログラムである。
【００２８】
このような構成によれば、コンピュータをマスターノード装置として動作させることができる。
【００２９】
また、本発明は、コンピュータを、マスターノード装置として動作させるプログラムにおいて、前記コンピュータに、外部からの要求を、データベースを構成するテーブル毎に分割する手順と、前記分割された要求を、処理すべき順番に基づき各対応するテーブルを保持する前記ノード装置に順番に送信する手順と、を実行させることを特徴とするプログラムである。
【００３０】
このような構成によれば、コンピュータをマスターノード装置として動作させることができ、各ノード装置に所定の順番に従った処理を行わせることができる。
【００３１】
また、本発明は、前記コンピュータにさらに、前記ノード部が前記マスターノード部に送信してきた結果を用いて、前記結果を送信してきた前記ノード装置とは別の他のノード装置に送信するべき分割された要求を作成する手順、を実行させることを特徴とするプログラムである。
【００３２】
このような構成によれば、所定の処理結果を、他の処理に利用することが可能となる。
【００３３】
また、本発明は、複数のテーブルからなるデータベースを管理し、外部からの要求に応じてデータベースサービスを提供する方法において、前記外部からの要求を、データベースを構成するテーブル毎に分割するステップと、前記分割された要求を別個に処理するステップと、を含むことを特徴とする方法である。
【００３４】
このような方法によれば、データベースをテーブル毎に分割し、処理を各テーブル毎に分割して実行することができる。
【００３５】
【発明の実施の形態】
以下、本発明の好適な実施の形態を図面に基づき説明する。
【００３６】
図１には、本実施の形態の分散データベースシステムの構成図が示されている。この図に示すように、データベースシステム１０は、データベースマスターノード１２と、データベースノード１４と、から構成されている。
【００３７】
データベースマスターノード１２は、請求の範囲の「マスターノード装置」の一例に相当する。データベースノード１４は、請求の範囲の「ノード装置」の一例に相当する。
【００３８】
また、本特許では、データベースとは、１個以上のテーブルから構成されるデータの集合体をいう。また、データベースシステムとは、このデータベースを管理し、外部に対しデータベースサービスを提供するシステムを言う。データベースサービスとは、データベースのデータを閲覧や抽出、データの変更（書き換え）、新規なデータの登録等を行うサービスを言う。
【００３９】
Ａ．データベースノード１４
データベースノード１４は、従来から知られている既存のデータベースプログラムが動作しているコンピュータであり、ハードディスク１４ｂ中にデータベースを構成するテーブルが格納されている。
【００４０】
一般に、データベースは複数のテーブルから構成されている。販売商品のデータベースでは、商品名とその価格からなる価格テーブルや、仕入れ日と、その仕入れ日に仕入れた商品とからなる仕入れテーブル等、種々のテーブルから構成されることが多い。データベースプログラムは、これらのテーブルを管理しており、しばしばＲＤＢＭＳ（Ｒｅｌａｔｉｏｎａｌ　Ｄａｔａ　Ｂａｓｅ　Ｍａｎａｇｅｍｅｎｔ　Ｓｙｓｔｅｍ）と呼ばれる場合も多い。
【００４１】
本実施の形態において特徴的なことは、複数のテーブルからなるデータベースを、このテーブルを単位として分割して、各データベースノード１４が管理していることである。たとえば、５個のテーブルからなるデータベースを、５個のデータベースノード１４に分割して格納しておくのである。この場合、各データベースノード１４は、それぞれ１個のテーブルを保持・管理している。そして、各データベースノード１４に、それぞれ保持するテーブルに関する処理を担当させることによって、データベース全体に対する処理を５個のデータベースノード１４に分散させることができる。その結果、データベース処理の負担を５台のデータベースノード１４に分散させることができ、性能の向上したデータベースシステム１０を構築することができる。
【００４２】
この場合、各データベースノード装置１４が保持する各テーブルは、その内容がデータ的に独立している。このように独立しているので、各テーブルに対する処理を並列に実行させることができるのであり、その結果、処理速度の向上を図ることができる。ここで、一部のテーブルに独立していない部分が含まれている場合は、独立している部分に関してのみ処理を並列に行うことが好ましい。また、独立していない場合には、後述するスケジューリングの処理を行うことも好ましい。
【００４３】
独立しているデータの典型的な例として、地図データが挙げられる。北海道の地図データと、沖縄の地図データとは互いに独立していると考えられる。　もちろん、データベースノード１４の個数がテーブル数より少ない構成を採用することも可能である。たとえば、１０個のテーブルからなるデータベースを、５個のデータベースノード１４に分割して格納しておくこともできる。この場合、各データベースノード１４は、それぞれ２個のテーブルを保持・管理している。そして、各データベースノード１４に、それぞれ保持する２個のテーブルに関する処理を担当させることによって、データベース全体に対する処理を５個のデータベースノード１４に分散させることができる。その結果、データベース処理の負担を５台のデータベースノード１４に分散させることができ、性能の向上したデータベースシステム１０を構築することができる。
【００４４】
この場合も、各データベースノード装置１４が保持する複数のテーブルは、その内容がデータ的に他のデータベースノード装置に保持されているテーブルとは独立しているのである。このように独立しているので、所定のデータベースノード装置１４に保持されているテーブルに対する処理を、他のデータベースノード装置１４における処理とは別個・独立に（すなわち並列に）実行させることができる。その結果、処理速度の向上を図ることができる。ここで、すべてのテーブルの内容が独立である必要はない。一部独立でない部分が含まれていても、独立している部分に関して並列処理が可能であるので、処理速度の向上が図れるものである。
【００４５】
このように本実施の形態では、データベースを構成する複数のテーブルをデータベースノード１４に分散させたので、各テーブルに対する処理を並列に実行することができる。その結果、処理性能の向上したデータベースシステム１０を実現することができる。
【００４６】
Ｂ．データベースマスターノード１２
データベースマスターノード１２は、外部からのＳＱＬ問い合わせ（ＳＱＬ　ｑｕｅｒｙ）を受け付けるコンピュータである。このデータベースマスターノード１２は、外部からのＳＱＬ問い合わせを、データベースを構成するテーブル毎に分割し、それぞれ対応するデータベースノード１４に送信する。この送信の様子が、図１の中で、データベースマスターノード１２から、データベースノード１４に向かう矢印で表現されている。なお、本実施の形態で説明するデータベースマスターノード１２の動作は、プログラムで記述されている。すなわちデータベースノード１２は、コンピュータと、このコンピュータが実行するプログラムから構成されている。
【００４７】
本実施の形態では、外部からのＳＱＬ問い合わせは、いわゆるＳＱＬ文で構成されており、データベースマスターノード１２は、このＳＱＬ文を、各テーブル毎の処理に分割し、より小さなＳＱＬ文を作成するのである。
【００４８】
本特許では、この分割後の小さなＳＱＬ文を「分割ＳＱＬ文」と呼び、外部から送信されてきた元のＳＱＬを「原ＳＱＬ文」と呼ぶ。この原ＳＱＬ文は、請求の範囲における「要求」の一例に相当し、分割ＳＱＬ文は、請求の範囲における「分割された要求」の一例に相当する。
【００４９】
なお、外部からのＳＱＬ文が、単一のテーブルに関する処理のみに関するＳＱＬ文である場合には、そのＳＱＬ文を分割せずにそのまま対応するデータベースノード１４に送信する。このような分割を伴わない「振り分ける」処理でも、各テーブルに関する処理を各データベースノード１４に分散させることができるので、処理速度の向上を図ることができる。
【００５０】
なお、ＳＱＬとは、Ｓｔｒｕｃｔｕｒｅｄ　Ｑｕｅｒｙ　Ｌａｎｇｕａｇｅ　の意味であり、日本語では構造化照会言語（または構造化問い合わせ言語）と呼ばれることもある。
【００５１】
各データベースノード１４は、従来から利用されているデータベースプログラムが起動しているコンピュータであり、送信されてきた分割ＳＱＬ文を、従来のデータベースシステムと同様に処理を行う。すなわち、データベースノード１４において行われるＳＱＬ文の処理自体は、従来のシステムと全く同様である。
【００５２】
各データベースノード１４は、従来のシステムと同様の処理を実行し、結果をデータベースマスターノード１２に返す。この様子が図２に示されている。図２の中のデータベースノード１４からデータベースマスターノード１２に向かう矢印がこの「返す」動作を表している。図２は、図１と同様に、本実施の形態のデータベースシステム１０の構成図である。
【００５３】
そして、データベースマスターノード１２は、データベースノード１４から返されてきた結果を統合し、最終的な結果を得、この最終的な結果を外部に提供するのである。この結果、従来のデータベースシステムと同様の処理を、より高速に実行可能なデータベースシステムを実現できるのである。
【００５４】
Ｃ．具体的な動作例
以下、簡単な例を用いて、本実施の形態のデータベースシステム１０の動作を詳細に説明する。これらの動作は、プログラムで記述され、データベースマスターノード１２やデータベースノード１４のコンピュータがこのプログラムを実行することによって、本実施の形態で説明する動作を行わせている。
【００５５】
図３には、この動作例を表すフローチャートが示されている。
【００５６】
まず、ステップＳ３−１においては、クライアント２０が所定のネットワークを介してアプリケーションサーバ２２にデータベースの問い合わせを行う。このアプリケーションサーバ２２は、クライアント２０が参照するサーバであり、たとえばＷＥＢサーバ等が好ましい一例である。クライアント２０はインターネット等を通じてこのＷＥＢサーバにアクセスするのである。
【００５７】
アプリケーションサーバ２２がＷＥＢサーバである場合には、クライアント２０は、ＷＥＢページの画面上でデータベースの内容を見ることができるのである。
【００５８】
ステップＳ３−１における問い合わせの例としては、たとえば、クライアントが会社の人事データベースの閲覧を行うために、「東京都内に住所を有する４０歳以上の社員」のような条件を含む問い合わせが考えられる。クライアント２０は、このような条件を、ＷＥＢページ上のチェックボタンや、ラジオボタン、テキスト入力その他の種々のデータ入力手法で入力することができる。
【００５９】
次に、ステップＳ３−２においては、クライアント２０の示した条件に基づき、アプリケーションサーバ２２がＳＱＬ文を作成し、そのＳＱＬ文をデータベースシステム１０に送信する。この送信されるＳＱＬ文は、上で述べた原ＳＱＬである。この原ＳＱＬ文は、特許請求の範囲の「要求」の一例に相当する。
【００６０】
以上のようなクライアント２０やアプリケーションサーバ２２の動作は、従来から知られている動作である。
【００６１】
そして、ステップＳ３−３においては、データベースマスターノード１２が上記原ＳＱＬ文を受信する。そして、このＳＱＬ文を、各テーブル毎に分割するのである。具体的には、以下のような動作を行う。
【００６２】
ｓｅｌｅｃｔ文
原ＳＱＬ文にたとえば、以下のような第１ｓｅｌｅｃｔ文が存在した場合、このＳＱＬ文は、第２ｓｅｌｅｃｔ文と、第３ｓｅｌｅｃｔ文に分割される。なお、ＳＱＬにおけるＳｅｌｅｃｔ文とは、データベース内の特定のデータを検索する命令である。
【００６３】
第１ｓｅｌｅｃｔ文：
【数１】
Ｓｅｌｅｃｔ　ｎａｍｅ，　ａｄｄｒｅｓｓ　ｆｒｏｍ　Ｎａｍｅｔａｂｌｅ，　Ａｄｄｒｅｓｓｔａｂｌｅ　ｗｈｅｒｅ　Ｎａｍｅｔａｂｌｅ　Ｎｏ＝’１’　ａｎｄ　Ａｄｄｒｅｓｓｔａｂｌｅ　Ｎｏ＝’１’
この第１ｓｅｌｅｃｔ文は、Ｎａｍｅｔａｂｌｅ　というテーブル中のＮｏ＝１のデータである　ｎａｍｅ　を取得し、ＡｄｄｒｅｓｓＴａｂｌｅ　というテーブル中のＮｏ＝１のデータである　ａｄｄｒｅｓｓ　を取得せよという内容のｓｅｌｅｃｔ文である。
【００６４】
Ｎａｍｅｔａｂｌｅ　というテーブルの内容を表す概念図が図４に示されている。この図に示すように、Ｎａｍｅｔａｂｌｅ　は、データのＮｏと氏名とから構成されるテーブルである。この氏名のフィールド名（項目名ともいう）は”ｎａｍｅ”である。
【００６５】
ＡｄｄｒｅｓｓＴａｂｌｅ　というテーブルの内容を表す概念図が図５に示されている。この図に示すように、Ａｄｄｒｅｓｓｔａｂｌｅ　は、データのＮｏと住所と、電話番号とから構成されるテーブルである。この住所のフィールド名（項目名ともいう）は”ａｄｄｒｅｓｓ”である。また電話番号のフィールド名は”ｔｅｌ”である。
【００６６】
第２ｓｅｌｅｃｔ文：
【数２】
Ｓｅｌｅｃｔ　ｎａｍｅ　ｆｒｏｍ　Ｎａｍｅｔａｂｌｅ　ｗｈｅｒｅ　Ｎｏ＝’１’
この第２ｓｅｌｅｃｔ文は、Ｎａｍｅｔａｂｌｅ　というテーブル中のＮｏ＝１のデータである　ｎａｍｅ　を取得する内容である。このような第２Ｓｅｌｅｃｔ文は、請求の範囲の「分割された要求」の一例に相当する。この第２Ｓｅｌｅｃｔ文は、Ｎａｍｅｔａｂｌｅ　というテーブルに関する処理である。
第３ｓｅｌｅｃｔ文：
【数３】
Ｓｅｌｅｃｔ　ａｄｄｒｅｓｓ　ｆｒｏｍ　Ａｄｄｒｅｓｓｔａｂｌｅ　ｗｈｅｒｅ　Ｎｏ＝’１’
この第３ｓｅｌｅｃｔ文は、Ａｄｄｒｅｓｓｔａｂｌｅ　というテーブル中のＮｏ＝１のデータである　ａｄｄｒｅｓｓ　を取得する内容である。このような第３Ｓｅｌｅｃｔ文も、請求の範囲の「分割された要求」の一例に相当する。この第３ｓｅｌｅｃｔ文は、Ａｄｄｒｅｓｓｔａｂｌｅ　というテーブルに関する処理である。
【００６７】
すなわち、Ｎａｍｅｔａｂｌｅ　というテーブルと、Ａｄｄｒｅｓｓｔａｂｌｅ　というテーブルとに関する処理を行わせる内容が、それぞれのテーブルに対する処理内容に分割されているのである。
【００６８】
このような処理は、一般に構文解析による言語処理の技術そのものである。構文解析は、コンピュータ言語のインタープリターやコンパイラー等で従来から利用されており、コンピュータ言語の内容を解析してその動作をコンピュータが実行することは従来から行われてきたことである。
【００６９】
本実施の形態においても、この構文解析の技術を用いれば、コンピュータ言語の解析と同様に、ＳＱＬ文を解析し、その内容を分割することが可能である。
【００７０】
また、データベースマスターノード１２が、このような分割処理を行い、分割後の分割ＳＱＬ文を各データベースノード１４に送信するためには、各データベースノード１４がどのテーブルを受け持っているのか（保持しているか）に関する情報が必要である。このような情報はデータベースマスターノード１２に備えられているハードディスク１２ａ中に格納されている。このハードディスク１２ａ中に格納されている情報の例を図６に示す。この図に示されているように、各データベースノード１４に、それぞれｎａｍｅｔａｂｌｅ　，　Ａｄｄｒｅｓｓｔａｂｌｅ　，　Ａｇｅｔａｂｌｅ　，　Ｂｉｒｔｈｄａｙｔａｂｌｅ　，　Ｆａｍｉｌｙｔａｂｌｅ等のテーブルが保持されているという情報がハードディスク１２ａ内に格納されている。
【００７１】
ｕｐｄａｔｅ文
原ＳＱＬ文に、ｕｐｄａｔｅ文が存在した場合、その分割は、上記ｓｅｌｅｃｔ文と全く同様に行われる。ｕｐｄａｔｅ文は、データベース中のデータの更新を行うＳＱＬの文である。
【００７２】
ｉｎｓｅｒｔ文
原ＳＱＬ文に、ｉｎｓｅｒｔ文が存在した場合、その分割も、上記ｓｅｌｅｃｔ文と全く同様に行われる。ｉｎｓｅｒｔ文は、新しいデータを挿入するＳＱＬ文である。
【００７３】
次に、ステップＳ３−４においては、データベースマスターノード１２が上記分割後の分割ＳＱＬ文をそれぞれ対応するデータベースノード１４に送信する。
【００７４】
この分割ＳＱＬ文は、たとえば、上記第２Ｓｅｌｅｃｔ文、第３Ｓｅｌｅｃｔ文である。第２Ｓｅｌｅｃｔ文は、Ｎａｍｅｔａｂｌｅ　というテーブルを保持するデータベースノード１４に送信され、第３Ｓｅｌｅｃｔ文は、Ａｄｄｒｅｓｓｔａｂｌｅ　というテーブルを保持するデータベースノード１４に送信される。データベースマスターノード１２は、ハードディスク１２ａの内部を参照することにより、どのテーブルがどのデータベースノード１４に保持されているのかを知ることができる。
【００７５】
次に、ステップＳ３−５においては、データベースノード１４が上記分割ＳＱＬ文を受信し、それぞれそのＳＱＬ文によって指示された処理を実行する。
【００７６】
たとえば、テーブル　Ｎａｍｅｔａｂｌｅ　を保持するデータベースノード１４は、上記第２ｓｅｌｅｃｔ文を受信し、テーブル　Ｎａｍｅｔａｂｌｅ　からＮｏ＝１のデータであるｎａｍｅを取り出し、この値をデータベースマスターノード１２に返信する。
【００７７】
また、テーブル　Ａｄｄｒｅｓｓｔａｂｌｅ　を保持するデータベースノード１４は、上記第３ｓｅｌｅｃｔ文を受信し、テーブル　Ａｄｄｒｅｓｓｔａｂｌｅ　からＮｏ＝１のデータであるａｄｄｒｅｓｓを取り出し、この値をデータベースマスターノード１２に返信する。
【００７８】
このようなデータベースノード１２の動作自体は、従来のデータベースプログラムの動作と同様である。
【００７９】
本実施の形態において特徴的なことは、データベースをテーブルに分けて保持しているので、各テーブルに対する処理を並行して同時に実行することができたことである。この結果、本実施の形態によればデータベース処理速度の向上が図れる。
【００８０】
次に、ステップＳ３−６においては、データベースマスターノード１２が、データベースノード１２からの処理結果を受信し、その結果を統合する。
【００８１】
たとえば、テーブル　Ｎａｍｅｔａｂｌｅ　を保持するデータベースノード１４が送信してきたｎａｍｅと、テーブル　Ａｄｄｒｅｓｓｔａｂｌｅ　を保持するデータベースノード１４が送信してきたａｄｄｒｅｓｓとを、合わせて、アプリケーションサーバ２２に送信するのである。アプリケーションサーバ２２は、この得られた結果をＷＥＢページ等に表示することによって、クライアント２０にデータベースの処理結果を提供するのである。
【００８２】
このように、アプリケーションサーバ２２から見れば、本実施の形態のデータベースシステム１０は、従来のデータベースシステムと機能上は何ら変わりないものである。
【００８３】
Ｄ．効果
本実施の形態においては、データベースを構成するテーブル毎にデータベースを分割して、それぞれ別個のデータベースノード１２で管理・保持している。そして、各テーブルに対する処理をそれぞれ対応するデータベースノード１４で個別に行うことにより処理を並列に行うことができ、処理速度の向上が実現できるのである。
【００８４】
Ｅ．実施の形態２（スケジューリング）
上のＡ〜Ｄで述べた例では、原ＳＱＬ文を単純に、テーブル毎にその内容を分割する例を示した。しかし、ある一方のテーブルにおける処理結果が決定されないと、他方のテーブルに対するＳＱＬ文が作成できない場合もある。典型的な例としては、ある一方のテーブルの検索結果を利用して他方のテーブルの検索が行われる場合等が挙げられる。たとえば、電話番号”０４６−１２３４−５６７８”の人の名前を知りたい場合等がこれに相当する。
【００８５】
このような場合には、データベースマスターノード１２が、一方のテーブルを保持しているデータベースノード１４にＳＱＬ文を送信し、この結果が得られてから、他方のテーブルを保持しているデータベースノード１４に対するＳＱＬ文を作成し、そのデータベースノード１４に作成したＳＱＬ文を送信するのである。このような動作を本実施の形態２ではスケジューリングと呼んでいる。
【００８６】
以下、このような動作をフローチャートに基づき、詳細に説明する。具体的な例としては、上で述べた電話番号から人の名前を知りたい場合を適宜用いる。
【００８７】
図７には、このフローチャートが示されている。
【００８８】
まず、ステップＳ７−１においては、外部から送信されてきたＳＱＬ文が複文であるかどうか検査される。この検査の結果、２種以上の命令（コマンド（ｃｏｍｍａｎｄ）とも呼ぶ）が１つの文に含まれる複文であると判断された場合には、ステップＳ７−２に処理が移行し、複文でない場合には、ステップＳ７−３に処理が移行する。
【００８９】
ステップＳ７−３では、既に図３で説明した分割処理が実行され、１つのＳＱＬ文の内容が、そのＳＱＬ文に含まれるテーブル毎に分割されるのである。
【００９０】
一方、ステップＳ７−２では、２種以上のコマンドの最も先に処理すべきコマンドの内容が取り出され、１つのＳＱＬ文が作成される。
【００９１】
たとえば、外部から次のような第４Ｓｅｌｅｃｔ文が送信されてきた場合、データベースマスターノード１２は、この文が複文であると判断し、ステップＳ７−２に処理が移行する。その理由は、コマンドＳｅｌｅｃｔが２個含まれているからである。そして、最も内側の先に処理すべきＳｅｌｅｃｔコマンドを選択し、その内容を抽出して、第５Ｓｅｌｅｃｔ文を生成する。
【００９２】
第４Ｓｅｌｅｃｔ文は、電話番号が　”０４６−１２３４−５６７８”である人のＮｏをテーブル　Ａｄｄｒｅｓｓｔａｂｌｅ　から取り出し、このＮｏの人の名前をテーブル　Ｎａｍｅｔａｂｌｅ　から取り出すＳＱＬ文である。
【００９３】
第４Ｓｅｌｅｃｔ文：
【数４】
Ｓｅｌｅｃｔ　ｎａｍｅ　ｆｒｏｍ　Ｎａｍｅｔａｂｌｅ　ｗｈｅｒｅ　Ｎｏ　＝　Ｓｅｌｅｃｔ　ｎｏ　ｆｒｏｍ　Ａｄｄｒｅｓｓｔａｂｌｅ　ｗｈｅｒｅ　ｔｅｌ　＝　”０４６−１２３４−５６７８”
第５Ｓｅｌｅｃｔ文：
【数５】
Ｓｅｌｅｃｔ　ｎｏ　ｆｒｏｍ　Ａｄｄｒｅｓｓｔａｂｌｅ　ｗｈｅｒｅ　ｔｅｌ　＝　”０４６−１２３４−５６７８”
データベースマスターノード１２はこのような第５ｓｅｌｅｃｔ文を作成し、テーブル　ａｄｄｒｅｓｓｔａｂｌｅ　を保持するデータベースノード１４に送信する。この第５Ｓｅｌｅｃｔ文は、実施の形態２における「分割ＳＱＬ文」である。
【００９４】
ステップＳ７−４では、この第５ｓｅｌｅｃｔ文を受信したデータベースノード１４が、従来のデータベースシステムと同様の動作をし、電話番号が　”０４６−１２３４−５６７８”である人のＮｏをテーブル　Ａｄｄｒｅｓｓｔａｂｌｅ　から取り出し、その値をデータベースマスターノード１２に送信する。
【００９５】
ステップＳ７−５では、送信されてきたＮｏに基づき、データベースマスターノード１２が次の第６Ｓｅｌｅｃｔ文を作成する。この第６Ｓｅｌｅｃｔ文も、本実施の形態２における分割ＳＱＬ文の例である。
【００９６】
第６Ｓｅｌｅｃｔ文：
【数６】
Ｓｅｌｅｃｔ　ｎａｍｅ　ｆｒｏｍ　Ｎａｍｅｔａｂｌｅ　ｗｈｅｒｅ　ｎｏ　＝　”第５Ｓｅｌｅｃｔ文の結果”
ここで、”第５Ｓｅｌｅｃｔ文の結果”とは、具体的には「１」や「２」のような数である。
【００９７】
なお、以上述べた例においても、テーブル　Ｎａｍｅｔａｂｌｅ　は図４の如きテーブルであり、テーブル　Ａｄｄｒｅｓｓｔａｂｌｅ　は図５の如きテーブルである。
【００９８】
ＳＱＬのコマンドが複数含まれているＳＱＬ文を実行する際に、各ＳＱＬ文の処理の実行順序は、従来から一般に構文解析の技術を用いて決定される。この技術は従来からコンピュータ言語のインタープリターやコンパイラー等の構成に広く利用されている技術である。本実施の形態においてもこのような構文解析の技術を用いて、上記第４Ｓｅｌｅｃｔ文から、第５Ｓｅｌｅｃｔ文や第６Ｓｅｌｅｃｔ文を構成する。
【００９９】
データベースマスターノード１２は、この第６Ｓｅｌｅｃｔ文をテーブル　Ｎａｍｅｔａｂｌｅ　を保持するデータベースノード１４に送信する。
【０１００】
ステップＳ７−６では、この第６ｓｅｌｅｃｔ文を受信したデータベースノード１４が、従来のデータベースシステムと同様の動作をし、第５Ｓｅｌｅｃｔ文の結果の番号、たとえばＮｏが「１」である人の氏名をテーブル　Ｎａｍｅｔａｂｌｅ　から取り出し、その値（氏名）をデータベースマスターノード１２に送信する。
【０１０１】
ステップＳ７−７では、送信されてきた氏名を、データベースマスターノード１２が外部に提供する。この動作は図３のステップＳ３−６における送信の動作と基本的に同様である。
【０１０２】
このように、本実施の形態（Ｅ．実施の形態２）においては、ＳＱＬ文の内容を構文解析し、ＳＱＬ文を順次作成して、各データベースノード１４に送信している。したがって、あるテーブルに対する処理が、他のテーブルに対する処理の結果を利用するような場合でも、他のテーブルに対する処理結果を利用してＳＱＬ文を作成することができるので、複文のＳＱＬ文を分散させて複数のデータベースノード１４に実行させることが可能である。
【０１０３】
Ｆ．その他
（１）標準的なＳＱＬ文以外に、条件分岐や繰り返し等の独自の拡張されたＳＱＬ文をサポートするようにデータベースシステム１０を構成することも好ましい。この場合は、その拡張されたＳＱＬ文は、データベースマスターノード１２が処理・実行を行う。
【０１０４】
（２）いわゆるストアードプロシージャに関しては、データベースマスターノード１２がＳＱＬ文に分解する。そして、データベースマスターノード１２が、各ＳＱＬ文を各データベースノード１４に送信し、各データベースノード１４ががそれぞれ実行する。
【０１０５】
（３）データベースマスターノード１２は、各データベースノード１４が送信してくる処理結果を統合してから外部に提供するが、この際、各データベースノード１４が送信してくる処理結果中にエラーが生じる場合も想定される。この場合、データベースマスターノード１２はいわゆるロールバック（Ｒｏｌｌｂａｃｋ）を実行し、分割ＳＱＬ文を送信する前の状態にまでデータベースの状態を戻してから、エラーが生じた旨を外部に提供するのである。このロールバックの技術自体はデータベースシステムにおいて従来から知られている技術である。本実施の形態では、このロールバックの判断をデータベースマスターノード１２が行っているのである。
【０１０６】
【発明の効果】
以上述べたように、本発明によれば、データベースをテーブル毎に分散させて管理しているので、各テーブル毎の処理を並列に行うことができる。その結果、処理性能の向上したデータベースシステムが得られる。
【０１０７】
また、本発明によれば、外部からの要求を、各テーブル毎の要求に分割する際に、一方のテーブルの処理結果に基づき、他のテーブルに対する要求を作成している。その結果、テーブル毎の処理を所定の順番に基づき行うことができる。
【図面の簡単な説明】
【図１】本実施の形態のデータベースシステムの構成図である。
【図２】本実施の形態のデータベースシステムの構成図である。
【図３】本実施の形態のデータベースシステムの動作を表すフローチャートである。
【図４】テーブル　Ｎａｍｅｔａｂｌｅ　内容を表す図である。
【図５】テーブル　ＡｄｄｒｅｓｓＴａｂｌｅ　の内容を表す図である。
【図６】データベースノードの保持するテーブルを表す説明図である。
【図７】実施の形態２の動作を表すフローチャートである。
【符号の説明】
１０　データベースシステム
１２　データベースマスターノード
１２ａ　ハードディスク
１４　データベースノード
２０　クライアント
２２　アプリケーションサーバ
【図１】
2004062566.tif 000003
【図２】
2004062566.tif 000004
【図３】
2004062566.tif 000005
【図４】
2004062566.tif 000006
【図５】
2004062566.tif 000007
【図６】
2004062566.tif 000008
【図７】
2004062566.tif 000009