(57)【要約】      （修正有）【課題】高速にデータの登録、検索処理を行うことができるデータベース管理装置、分散データベース管理システム、分散データベース管理方法および分散データベース管理プログラムを提供する。【解決手段】データベース管理装置２は、水平垂直分散を組みあわせてデータを分散配置するデータベース装置であって、データを指定するキー値およびカラム名の入力により、キー値およびカラム名により特定されるデータが格納されている若しくは格納すべきデータベース管理装置ＩＤとデータの一部である断片レコードＩＤを組み合わせたハッシュ値を返却するハッシュ関数演算部１５ｅと、カラム名の入力により、カラム名が指定するデータが格納されている１つ以上のデータベース管理装置ＩＤを返却する分散関数演算部１５ｆとを備える。【選択図】図２
2006350741.tif 000002
【特許請求の範囲】
【請求項１】
水平垂直分散を組みあわせてデータを分散配置するデータベース装置であって、
前記データを指定するキー値およびカラム名の入力により、前記キー値およびカラム名により特定されるデータが格納されている若しくは格納すべきデータベース管理装置ＩＤと前記データの一部である断片レコードＩＤを組み合わせたハッシュ値を返却するハッシュ関数演算部と、
前記カラム名の入力により、前記カラム名が指定するデータが格納されている１つ以上のデータベース管理装置ＩＤを返却する分散関数演算部、
とを備えるデータベース管理装置。
【請求項２】
前記断片レコードをデータとして登録するデータ断片登録部と、
登録した断片レコードを追記方式で格納するデータベース部と、
前記データベース部に格納された断片レコードを統合してレコードを構成するレコード統合部
とを更に備える請求項１に記載のデータベース管理装置。
【請求項３】
水平垂直分散を組みあわせ、データを分散配置するための分散データベース管理システムであって、
キー値およびカラム名の入力により、前記キー値およびカラム名により特定されるデータが格納されている若しくは格納すべきデータベース管理装置ＩＤと前記データの一部である断片レコードＩＤを組み合わせたハッシュ値を返却するハッシュ関数演算部と、前記カラム名の入力により、前記カラム名が指定するデータが格納されている１つ以上のデータベース管理装置ＩＤを返却する分散関数演算部とを有する複数のデータベース装置と、
前記複数のデータベース管理装置の負荷情報を収集する負荷情報収集部と、
前記負荷情報収集部内の負荷情報を統計的にデータ処理することで、最も負荷の低いデータベース管理装置とそのデータベース管理装置へのアクセス期間を含むアクセス権を決定するアクセス権管理部とを有する大域サーバとを備え、
前記複数のデータベース装置へのアクセスは前記大域サーバが決定する前記アクセス権に基づいて許可される
ことを特徴とする分散データベース管理システム。
【請求項４】
前記複数のデータベース管理装置のうち前記断片レコードを登録すべきデータベース管理装置に前記断片レコードを登録する際には前記断片レコードが保持する前記キー値およびカラム名を入力し、前記ハッシュ関数を用いてデータを格納するべきデータベース管理装置のＩＤを特定し、特定された前記データベース管理装置に対して前記断片データを送信し登録するデータ登録処理部と、
前記複数のデータベース管理装置内にて前記断片レコードを検索する際には前記検索の為の問い合わせ文に記述された１つ以上のカラム名を特定し、前記分散関数を用いて、前記検索に必要となるデータを格納している少なくとも１つ以上のデータベース管理装置ＩＤを特定し、特定された前記少なくとも１つ以上のデータベース管理装置が実行可能な前記問い合わせ文の一部を送信し、検索を実行する第１部分検索部と、
前記検索を実行した中間結果より特定されたデータのキー値およびカラム名を基に、前記ハッシュ関数を用いて、検索に必要となるデータを格納しているデータベース管理装置のＩＤを特定し、特定された前記データベース管理装置が実行可能な部分問い合わせ分を送信し、検索を実行する第２部分検索部
とを更に備えることを特徴とする請求項３に記載の分散データベース管理システム。
【請求項５】
水平垂直分散を組みあわせてデータを分散配置するための複数のデータベース管理装置を統合管理する分散データベース管理方法であって、
前記複数のデータベース管理装置の負荷情報を負荷情報収集部が収集するステップと、
前記負荷情報収集部内の負荷情報を統計的にデータ処理することで、最も負荷の低いデータベース管理装置とそのデータベース管理装置へのアクセス期間を含むアクセス権をアクセス権管理部が決定するステップと、
前記複数のデータベース装置へのアクセスを前記アクセス権に基づいて許可するステップと、
前記データを分散保持する複数のデータベース管理装置にアクセスが行われ、キー値およびカラム名が入力されると、前記キー値およびカラム名により特定されるデータが格納されている若しくは格納すべきデータベース管理装置ＩＤと前記データの一部である断片レコードＩＤを組み合わせたハッシュ値をハッシュ関数演算部が返却するステップと、
前記カラム名の入力により、前記カラム名が指定するデータが格納されている１つ以上のデータベース管理装置ＩＤを分散関数演算部が返却するステップ
とを備えることを特徴とする分散データベース管理方法。
【請求項６】
水平垂直分散を組みあわせてデータを分散配置するためのコンピュータにおいて、
前記データを分散配置するための複数のデータベース管理装置の負荷情報を負荷情報収集部が収集する命令と、
前記負荷情報収集部内の負荷情報を統計的にデータ処理することで、最も負荷の低いデータベース管理装置とそのデータベース管理装置へのアクセス期間を含むアクセス権をアクセス権管理部が決定する命令と、
前記複数のデータベース装置へのアクセスを前記アクセス権に基づいて許可する命令と、
前記データを分散保持する複数のデータベース管理装置にアクセスが行われ、キー値およびカラム名が入力されると、前記キー値およびカラム名により特定されるデータが格納されている若しくは格納すべきデータベース管理装置ＩＤと前記データの一部である断片レコードＩＤを組み合わせたハッシュ値をハッシュ関数演算部が返却する命令と、
前記カラム名の入力により、前記カラム名が指定するデータが格納されている１つ以上のデータベース管理装置ＩＤを分散関数演算部が返却する命令
とを実行させることを特徴とする分散データベース管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のデータベースを分散構成したデータベース管理装置、分散データベース管理システム、分散データベース管理方法および分散データベース管理プログラムに関する。
【背景技術】
【０００２】
分散データベースシステムを実現する場合、分散データベースを構成するデータベースの定義情報をサイト上にどのように配置するかということが重要である。この配置情報の違いにより分散データベース処理の手法は異なってくる。
【０００３】
従来の分散データベースの手法としては、リレーショナルデータモデルや
オブジェクト指向データモデルに基づいたレコードフォーマットを用いるデータベース管理装置が知られている（特許文献１参照。）。また、水平・垂直分散などの観点でデータを分割して、分散するデータベース管理装置群を統括する大域サーバが登録データを受け付け、分散するデータベース管理装置群にデータを登録する等の処理を行う分散データベースシステム（集中型グローバルＤＤ／Ｄ管理方式）が知られている（特許文献２参照。）。この特許文献２に更に記載される分散型グローバルＤＤ／Ｄ管理方式では、大域サーバを使用せず分散する各データベース管理装置が自立的に応用プログラムからの要求を処理する。
【特許文献１】Raghu Ramakrishnan, Johannes Gehrke、“Database Management Systems”、 Second Edition、GcGraw-Hill、「レコードフォーマット(record formats)」、P２２１−２２４
【特許文献２】特許第００２９６９６２７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１のデータベース管理装置では、リレーショナルデータモデルやオブジェクト指向データモデルに基づいており、断片的なレコードを登録する際には、更新対象となるレコードを検索した上で更新を実行しなければならないため、処理の手間がかかってしまうという問題があった。これは特にセンシングされたデータのように膨大な断片データを登録するような応用においては、高速にデータを書き込めないという問題があった。
【０００５】
更に、特許文献２の集中型グローバルＤＤ／Ｄ管理方式に基づく分散データベースシステムでは、データを格納する方法として水平・垂直分散などの観点でデータを分割して分散するデータベース管理装置群にデータを登録するが、検索を実行する際には大域サーバが問い合わせを受け付けて、分散するデータベース管理装置群へ問い合わせを実行する必要があった。このため、分散サーバ数の増加に従って大域サーバが性能上のボトルネックになってしまうという問題があった。また、分散型グローバルＤＤ／Ｄ管理方式に基づく分散データベースシステムでは、データベース管理装置の負荷状況によらず応用プログラムが自由にアクセス対象であるデータベース管理装置を指定してしまうため、データベース管理装置の負荷を分散できずに性能が劣化してしまうという問題があった。
【０００６】
この他にも、水平・垂直分散を組み合わせてデータベースを分散させる分散データベース装置では、キー値を指定した問い合わせもしくは問い合わせの処理の中間結果として得られる断片レコード群に含まれる個々の断片レコード毎に問い合わせ処理を継続する場合、通常の水平分散の方法では指定のカラム値の範囲(特許文献１には「レンジパーティショニング」と記載)やカラム値（ハッシュによるパーティショニング）によってデータベースを分散しているため、問い合わせにおいて指定されていないカラムに対する条件を処理する場合は、アクセスするべきデータがどのデータベース管理装置に分散配置されているか判断できないため、全てのデータベース管理装置に対してアクセスが発生してしまい、性能が劣化するという問題があった。
【０００７】
本発明は上記問題点を鑑み、断片レコードの登録処理を迅速に行い、ディスク上の記憶領域に空きが生じさせないようにし、分散するデータベース管理装置数の増加に従っても大域サーバが性能上のボトルネックにならず、データの登録・問い合わせ処理において格納するデータ・アクセスするデータがどのデータベース管理装置にあるかを高速に判断して、データの登録・問い合わせ処理を高速に実行することができるデータベース管理装置、分散データベース管理システム、分散データベース管理方法および分散データベース管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明の第１の特徴は、［イ］水平垂直分散を組みあわせてデータを分散配置するデータベース装置であって、データを指定するキー値およびカラム名の入力により、キー値およびカラム名により特定されるデータが格納されている若しくは格納すべきデータベース管理装置ＩＤとデータの一部である断片レコードＩＤを組み合わせたハッシュ値を返却するハッシュ関数演算部（１５ｅ）と、［ロ］カラム名の入力により、カラム名が指定するデータが格納されている１つ以上のデータベース管理装置ＩＤを返却する分散関数演算部（１５ｆ）とを備えるデータベース装置であることを要旨とする。
【０００９】
更に本発明の第１の特徴は、［ハ］断片レコードをデータとして登録するデータ断片登録部（１５ｇ）と、［ニ］登録した断片レコードを追記方式で格納するデータベース部（３）と、［ホ］データベース部（３）に格納された断片レコードを統合してレコードを構成するレコード統合部（１５ｋ）とを更に加えてもよい。
【００１０】
本発明の第２の特徴は、［イ］水平垂直分散を組みあわせ、データを分散配置するための分散データベース管理システムであって、キー値およびカラム名の入力により、キー値およびカラム名により特定されるデータが格納されている若しくは格納すべきデータベース管理装置ＩＤとデータの一部である断片レコードＩＤを組み合わせたハッシュ値を返却するハッシュ関数演算部（１５ｅ）、カラム名の入力により、カラム名が指定するデータが格納されている１つ以上のデータベース管理装置ＩＤを返却する分散関数演算部（１５ｆ）を有する複数のデータベース装置と、［ロ］複数のデータベース管理装置の負荷情報を収集する負荷情報収集部（２５ａ）、負荷情報収集部（２５ａ）内の負荷情報を統計的にデータ処理することで、最も負荷の低いデータベース管理装置とそのデータベース管理装置へのアクセス期間を含むアクセス権を決定するアクセス権管理部（２５ｂ）を有する大域サーバ（１）を備え、［ハ］複数のデータベース装置へのアクセスは大域サーバ（１）が決定するアクセス権に基づいて許可される分散データベース管理システムであることを要旨とする。
【００１１】
更に本発明の第２の特徴は、［ニ］複数のデータベース管理装置のうち断片レコードを登録すべきデータベース管理装置に断片レコードを登録する際には断片レコードが保持するキー値およびカラム名を入力し、ハッシュ関数を用いてデータを格納するべきデータベース管理装置のＩＤを特定し、特定されたデータベース管理装置に対して断片データを送信し登録するデータ登録処理部と、［ホ］複数のデータベース管理装置内にて断片レコードを検索する際には検索の為の問い合わせ文に記述された１つ以上のカラム名を特定し、分散関数を用いて、検索に必要となるデータを格納している少なくとも１つ以上のデータベース管理装置ＩＤを特定し、特定された少なくとも１つ以上のデータベース管理装置が実行可能な問い合わせ文の一部を送信し、検索を実行する第１部分検索部（１５ｈ）、［ヘ］検索を実行した中間結果より特定されたデータのキー値およびカラム名を基に、ハッシュ関数を用いて、検索に必要となるデータを格納しているデータベース管理装置のＩＤを特定し、特定されたデータベース管理装置が実行可能な部分問い合わせ分を送信し、検索を実行する第２部分検索部（１５ｉ）とを更に備えてもよい。
【００１２】
本発明の第３の特徴は、［イ］水平垂直分散を組みあわせてデータを分散配置するための複数のデータベース管理装置を統合管理する分散データベース管理方法であって、複数のデータベース管理装置の負荷情報を負荷情報収集部（２５ａ）が収集するステップと、［ロ］負荷情報収集部（２５ａ）内の負荷情報を統計的にデータ処理することで、最も負荷の低いデータベース管理装置とそのデータベース管理装置へのアクセス期間を含むアクセス権をアクセス権管理部（２５ｂ）が決定するステップと、［ハ］複数のデータベース装置へのアクセスをアクセス権に基づいて許可するステップと、［ニ］データを分散保持する複数のデータベース管理装置にアクセスが行われ、キー値およびカラム名が入力されると、キー値およびカラム名により特定されるデータが格納されている若しくは格納すべきデータベース管理装置ＩＤとデータの一部である断片レコードＩＤを組み合わせたハッシュ値をハッシュ関数演算部（１５ｅ）が返却するステップと、［ホ］カラム名の入力により、カラム名が指定するデータが格納されている１つ以上のデータベース管理装置ＩＤを分散関数演算部（１５ｆ）が返却するステップを備える分散データベース管理方法であることを要旨とする。
【００１３】
本発明の第４の特徴は、［イ］水平垂直分散を組みあわせてデータを分散配置するためのコンピュータにおいて、データを分散配置するための複数のデータベース管理装置の負荷情報を負荷情報収集部（２５ａ）が収集する命令と、［ロ］負荷情報収集部（２５ａ）内の負荷情報を統計的にデータ処理することで、最も負荷の低いデータベース管理装置とそのデータベース管理装置へのアクセス期間を含むアクセス権をアクセス権管理部（２５ｂ）が決定する命令と、［ハ］複数のデータベース装置へのアクセスをアクセス権に基づいて許可する命令と、［ニ］データを分散保持する複数のデータベース管理装置にアクセスが行われ、キー値およびカラム名が入力されると、キー値およびカラム名により特定されるデータが格納されている若しくは格納すべきデータベース管理装置ＩＤとデータの一部である断片レコードＩＤを組み合わせたハッシュ値をハッシュ関数演算部（１５ｅ）が返却する命令と、［ホ］カラム名の入力により、カラム名が指定するデータが格納されている１つ以上のデータベース管理装置ＩＤを分散関数演算部（１５ｆ）が返却する命令を実行させる分散データベース管理プログラムであることを要旨とする。
【発明の効果】
【００１４】
本発明のデータベース管理装置、分散データベース管理システム、分散データベース管理方法および分散データベース管理プログラムによると、応用プログラムは事前にアクセス権を大域サーバから発行してもらうため、データの登録・問い合わせの実行時には大域サーバへの負荷集中をさけることができる。また、大域サーバでは全データベース管理装置の負荷情報に基づきアクセス権を発行するため、データベース管理装置の負荷を分散することができる。
【００１５】
データの登録の際は、ハッシュ関数を用いてそのデータを格納するべきデータベース管理装置を高速に特定し、追記方式で記憶領域にデータを書き込むため、高速にデータの登録処理を行うことができる。
【００１６】
問い合わせ処理の際は、ハッシュ関数・分散関数を用いて問い合わせを処理する上で必要となるデータを格納するデータベース管理装置を高速に特定することができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態に係るデータベース管理装置、分散データベース管理システム、分散データベース管理方法および分散データベース管理プログラムについて説明する。尚、本発明の実施の形態において使用される機器、手法等は一例であり、本発明はこれらに限定されるものでないことは勿論である。
【００１８】
（実施の形態）
（分散データベース管理システム）
本発明の実施の形態に係る分散データベース管理システム１００は、水平・垂直分散を組み合わせてデータベースを分散させる為のシステムであり、その装置して、図１に示すように、大域サーバ１、各々がデータベース２を備える複数のデータベース管理装置２、クライアント端末４等を備える。
【００１９】
大域サーバ１は複数のデータベース管理装置２から成る分散データベース管理装置群５のアクセス状況を管理し、特定のデータベース管理装置２に負荷がかからないように、アクセス状況に応じて、応用プログラムがアクセスするデータベース管理装置２を特定したり、そのアクセス期間を設定したりする。クライアント端末４は利用者が使用する端末であり、分散データベース管理装置群５へ対してデータの登録処理や検索処理を行うための応用プログラムを備えている。尚、クライアント端末４は、入力装置、出力装置、通信装置、主記憶装置、ＣＰＵ等を備える通常のパーソナルコンピュータ等である。
【００２０】
（データベース管理装置）
データベース管理装置２は、図２に示すように、入力装置１１、出力装置１２、通信制御装置１３、通信インタフェース１４、中央制御装置（以下、ＣＰＵと記載）１５、主記憶装置１６、データベース部３、ハッシュテーブル記憶部１８、関数記憶部１９およびキャッシュ部２０等を備えている。
【００２１】
入力装置１１は、キーボード、マウス、入力信号を受信するインタフェース等である。フロッピー（登録商標）ディスク、ハードディスク等の外部記憶装置を介して入力されても良い。出力装置１２は、処理結果等を出力するための装置であり、具体的にはプリンタ、液晶ディスプレイ、ＣＲＴディスプレイ等を指す。通信制御装置１３は、大域サーバ１、他のデータベース管理装置２およびクライアント端末４に対しデータを送受信する為の制御信号を生成する。通信インタフェース１４は、大域サーバ１、他のデータベース管理装置２およびクライアント端末４との間においてデータを送受信するための装置である。
【００２２】
ＣＰＵ１５はプロセス、各命令等の演算処理を行う。主記憶装置１６は、主メモリとして、処理の手順を記述したプログラムや処理されるべきデータを一時的に記憶し、ＣＰＵ１５の要請に従ってプログラムの機械命令やデータを引き渡す。又、ＣＰＵ１５で処理されたデータは主記憶装置１６に書き込まれる。主記憶装置１６とＣＰＵ１５はアドレスバス、データバス、制御信号等で結ばれている。キャッシュ部２０は、主記憶装置１７の補助メモリ、作業用メモリである。
【００２３】
データベース部３は、図３に示すようなＩＤ、カラム名、カラム値、時刻等の項目から構成される断片レコードを追記格納する。同一ＩＤの断片レコードは統合され、まとまった１つの統合レコード３ａと成る。
【００２４】
例えば、図３の統合レコード３ａは、ＲＦＩＤが２１２である断片レコード群を統合したものであり、カラムとして温度，経路(ＩＤリーダ番号)等がある。データベース部３の記憶領域では常に空き領域の先頭アドレスを管理するだけであり、データの追記では第１断片レコードの次に第２断片レコードを書き込むように、記憶領域の空き領域の先頭に次々に追記する。連続領域にデータを書き込むことにより、記憶領域の無駄が出ず、また書き込みが高速に行える。
【００２５】
ハッシュテーブル記憶部１８は、ハッシュテーブルを格納するための記憶領域である。関数記憶部１９は、ハッシュ関数、分散関数を格納するための記憶領域である。
【００２６】
ＣＰＵ１５は、図２に示すように、データ登録処理部１５ａ、検索処理部１５ｂ、ハッシュテーブル管理部１５ｃ、関数管理部１５ｄ、ハッシュ関数演算部１５ｅ、分散関数演算部１５ｆ、データ断片登録部１５ｇ、第１部分検索部１５ｈ、第２部分検索部１５ｉ、検索結果構成部１５ｊ、レコード統合部１５ｋおよびプラン生成部１５ｌ等を備えている。
【００２７】
データ登録処理部１５ａは、クライアント端末４の応用プログラムからのデータの登録命令を処理する。検索処理部１５ｂは、応用プログラムからのデータの検索命令を処理する。ハッシュテーブル管理部１５ｃは、ハッシュテーブル記憶部１８を管理する。ハッシュテーブルはデータの登録時にエントリ登録され、データ検索時のエントリ検索において使用される。関数管理部１５ｄは、データの登録や検索時に用いられるハッシュ関数や分散関数を管理する。
【００２８】
ハッシュ関数演算部１５ｅは、水平・垂直分散を組み合わせてデータベースを分散させる分散データベースにおいて、キー値(レコードＩＤ)とカラム名のペアの入力により、そのデータが格納されている若しくは格納すべきデータベース管理装置ＩＤとデータ断片ＩＤを組み合わせたハッシュ値を返却する関数を算出する。
【００２９】
分散関数演算部１５ｆは、カラム名を入力することで、そのデータが格納されている若しくは格納すべきデータベース管理装置ＩＤの集合を返却する分散関数を算出する。
【００３０】
データ断片登録部１５ｇは、レコードの一部(断片レコード)をデータベース部３の記憶領域に追記方式で格納する。データを格納するべきデータベース管理装置２は上記のハッシュ関数を用いて特定される。
【００３１】
第１部分検索部１５ｈは、問い合わせ処理の際のＷＨＥＲＥ句の処理にて使用され、分散関数を用いて、検索に必要となるデータを格納している１つ以上のデータベース管理装置ＩＤを特定し、このデータベース管理装置２が実行可能な問い合わせ分の部分を送信して検索を実行する。
【００３２】
第２部分検索部１５ｉは、問い合わせ処理の際のＷＨＥＲＥ句の処理にて使用され、検索の中間結果より特定されたデータのキー値(レコードＩＤ)とカラム名のペアとハッシュ関数を用いて、検索に必要となるデータを格納している１つ以上のデータベース管理装置ＩＤを特定する。更に、このデータベース管理装置２が実行可能な問い合わせ文（句）を送信して検索を実行する。
【００３３】
検索結果構成部１５ｊは、問い合わせ処理の際のＳＥＬＥＣＴ句の処理にて、最終的な検索結果を構成する。レコード統合部１５ｋは、断片レコードからレコードを復元して、問い合わせ処理を実行する。プラン生成部１５ｌはＷＨＥＲＥ句の処理を行う際のプランを生成する。
【００３４】
（大域サーバ）
大域サーバ１は、図４に示すように、入力装置２１、出力装置２２、通信制御装置２３、通信インタフェース２４、ＣＰＵ２５、主記憶装置２６、負荷情報記憶部２７およびアクセス権情報記憶部２８等を備えている。
【００３５】
負荷情報記憶部２７は、ＣＰＵコストやＩＯコスト等の負荷情報を格納する。アクセス権情報記憶部２８は、応用プログラムが使用可能なデータベース管理装置２およびそのデータベース管理装置２へのアクセス許可期間等のアクセス権情報を格納する。
【００３６】
ＣＰＵ２５は、負荷情報収集部２５ａおよびアクセス権管理部２５ｂ等より構成される。負荷情報収集部２５ａは分散する全てのデータベース管理装置２のＣＰＵコストやＩＯコスト等の負荷情報を定期的収集し、負荷情報記憶部２７に書き込む。
【００３７】
アクセス権管理部２５ｂは、問い合わせやデータの登録時の大域サーバへのアクセスの集中を防ぐため、応用プログラムが負荷の低いデータベース管理装置を利用するよう制御し、問い合わせ処理、検索処理等を負荷分散する。アクセス権管理部２５ｂは統計処理部２５ｃおよびアクセス権算出部２５ｄ等を備えている。
【００３８】
統計処理部２５ｃは、最も負荷の低いデータベース管理装置２を決定する基準となる負荷情報を収集し、統計的にデータ処理する。
【００３９】
アクセス権算出部２５ｄは、応用プログラムからの要求に応じて、その応用プログラムがアクセス可能なデータベース管理装置２と、アクセスを許可する期間を算出して応用プログラムに返却する。アクセス可能なデータベース管理装置２としては、収集した負荷情報を基に、その時に負荷が軽いデータベース管理装置２が選択、決定される。
【００４０】
他の装置については、データベース管理装置２と同様であるため説明を省略する。
【００４１】
（分散データベース管理システムの動作）
分散データベース管理システム１００の主な動作として、
１．    データベース管理装置２の初期化処理
２．    大域サーバ１の情報収集処理
３．    大域サーバ１のアクセス権発行処理
４．    データベース管理装置２のデータ登録処理
５．    データベース管理装置２の問い合わせ処理
６．    データベース管理装置２のＷＨＥＲＥ句処理
７．    データベース管理装置２のＷＨＥＲＥ句内の条件式処理
８．    データベース管理装置２のＳＥＬＥＣＴ句処理
が挙げられる。以下、これらの動作について各々図面を参照して説明する。
【００４２】
（データベース管理装置の初期化処理）
以下、データベース管理装置２の初期化処理について図５のフローチャートを参照して説明する。
【００４３】
（ａ）先ずステップＳ１１においては、１つのデータベース管理装置２のハッシュ関数演算部１５ｅが、データ分散処理に使用するハッシュ関数を算出する。ハッシュ関数の算出では、既に入力された断片レコードの値のヒストグラムなどの統計情報を用いて、今後入力されると断片レコードのキー値の集合が均一にハッシュされるよう関数ｈ１を決定する。ハッシュ関数の決定方法については、イントロダクショントゥアルゴリズム（introduction to algorithms、著者: Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein、出版社: The MIT Press
)等の書籍や、ＳＨＡ-１、ＭＤ５といったものが広く知られている。
【００４４】
また分散関数演算部１５ｆが、分散関数ｈ２を算出する。ハッシュ関数ｈ１、分散関数ｈ２は、少なくとも以下のような入力と出力の対応表を個々のデータベース管理装置２の関数記憶部１９が保持することで実装可能である。つまり、ｈ１とｈ２は、
ｈ１(入力：レコードのキー値,カラム名)→(出力：データベース管理装置ＩＤ,レコードのキー値のハッシュ値)
ｈ２(入力：カラム名)→（出力：データベース管理装置ＩＤ）の集合
という関数となる。但し、ｈ１(キー値，カラム名)によって得られるデータベース管理装置ＩＤはｈ２(カラム名)により得られるデータベース管理装置ＩＤ群に含まれる。ｈ１はレコードのキー値とデータベースのスキーマにおけるカラム名(もしくはテーブル名とカラム名)を入力とし、ハッシュ値を演算する。そのハッシュ値は複合的なハッシュ値であり、分散するデータベース管理装置２のＩＤと入力したレコードのハッシュ値である。
【００４５】
ｈ２はデータベース部３のスキーマにおけるカラム名、若しくはテーブル名とカラム名を入力とし、分散するデータベース管理装置２のＩＤの集合を返却する。
【００４６】
（ｂ）ステップＳ１２においては、決定されたハッシュ関数を、通信網を介して、全てのデータベース管理装置２（分散データベース管理装置群５）へ送信する。
【００４７】
（ｃ）ステップＳ１３においては、全てのデータベース管理装置２の関数管理部１５ｄが、同じハッシュ関数を受け取り、関数記憶部１９に格納する。更にハッシュテーブル管理部１５ｃがこのハッシュ関数を基にハッシュテーブルを作成する。作成されたハッシュテーブルは各々のハッシュテーブル記憶部１８に格納される。
【００４８】
（大域サーバの情報収集処理）
次に大域サーバ１が分散データベース管理装置群５から負荷情報を収集する処理について図６のフローチャートを参照して説明する。
【００４９】
（ａ）先ずステップＳ２１において、負荷情報収集の収集契機を大域サーバ１の管理者が入力する。収集契機は、定期的な時間間隔を空ける方法や、データベース管理装置２が一定の負荷以下の場合に契機とする方法等によって決定する。またこれらの基準は、分散データベース管理装置群５で統一したものを利用する方法、また個々のデータベース管理装置２毎に異なるものを利用する方法がある。
【００５０】
（ｂ）ステップＳ２２においては、図４の負荷情報収集部２５ａは、指定された収集契機に従って、分散データベース管理装置群５からＩＯコストやＣＰＵコスト等の負荷情報を収集して、大域サーバ１が有する図４の負荷情報記憶部２７に書き込む。
【００５１】
（ｃ）ステップＳ２２の処理はステップＳ２３にて大域サーバ１の管理者が停止を指定しない限り実行される。停止が指定されたら、負荷情報の収集フローを終了する。
【００５２】
（大域サーバのアクセス権発行処理）
次にクライアント端末４の応用プログラムからの要求に応じて、大域サーバ１がアクセス権を発行する処理について図７のフローチャートを参照して説明する。
【００５３】
（ａ）先ずステップＳ３１において、アクセス権管理部２５ｂがクライアント端末４の応用プログラムからアクセス権の発行要求を受け付ける。
【００５４】
（ｂ）ステップＳ３２においては、統計処理部２５ｃが収集した全てのデータベース管理装置２のＣＰＵ/ＩＯ負荷情報を利用して、アクセス権算出部２５ｄは、アクセス権として、応用プログラムがアクセスするべき最も負荷の低いデータベース管理装置２とそのデータベース管理装置２へのアクセス期間を算出する。算出されたアクセス権はアクセス権情報記憶部２８に格納される。
【００５５】
アクセス期間については、過去のデータベース管理装置のＣＰＵ/ＩＯ負荷情報と既に応用プログラムに対して割り当てているアクセス権とを参照し、各々のデータベース管理装置２の負荷の変化を予測する。これにより、負荷が低いアクセス期間を決定する。
【００５６】
（ｃ）ステップＳ３３においては、通信網を介して、これらのアクセスが許可されたデータベース管理装置２とそのアクセス期間を、アクセス権として応用プログラムに返却する。
【００５７】
（データベース管理装置のデータ登録処理）
次に、クライアント端末４の応用プログラムより登録要求を受け、アクセス権にて決定されたデータベース管理装置２がデータを登録する際の動作について図８のフローチャートを参照して説明する。
【００５８】
（ａ）ステップＳ４１において、クライアント端末４よりデータ登録要求を受けたデータ登録処理部１５ａは、入力された断片レコードのキー値とカラム名をハッシュ関数ｈ１に入力し、データベース管理装置ＩＤを得る。このデータベース管理装置ＩＤを用いて、登録された断片レコードを登録するべきデータベース管理装置２が特定される。
【００５９】
例えば、図３の第１断片レコードではキー値は２１２であり、カラム名は温度である。これらがハッシュ関数ｈ１に入力されることになる。
【００６０】
（ｂ）ステップＳ４２においては、登録するべきデータベース管理装置２が、自装置であるか他装置であるかを判定する。自装置である場合はデータ断片登録部１５ｇが断片レコードを自装置のデータベース部３に登録する。またハッシュテーブル管理部１５ｃはこのデータ登録をハッシュテーブルのエントリとしてハッシュテーブル記憶部１８に追記する。ハッシュテーブルにおけるエントリの追加場所については、ハッシュ関数ｈ１から得られるもう一つの結果であるレコードのキー値のハッシュ値を用いて決定される。
【００６１】
（ｃ）他装置である場合は、登録要求があった断片レコードを指定された他装置に送信し、他装置のデータベース部３に登録するよう依頼する。
【００６２】
（データベース管理装置の問い合わせ処理）
次にクライアント端末４の応用プログラムより問い合わせを受けたデータベース管理装置２が、問い合わせを処理する際の動作について図９のフローチャートを参照して説明する。
【００６３】
（ａ）ステップＳ５１においては、受信した問い合わせを解析し、問い合わせのパース木を作成する。
【００６４】
（ｂ）ステップＳ５２においては、問い合わせのＷＨＥＲＥ句を処理するサブルーチンを実行する。
【００６５】
（ｃ）ステップＳ５３においては、ＳＥＬＥＣＴ句を処理するサブルーチンを実行する。
【００６６】
（データベース管理装置のＷＨＥＲＥ句処理）
次にステップＳ５２のＷＨＥＲＥ句を処理するサブルーチンについて図１０のフローチャートを参照して説明する。
【００６７】
（ａ）ステップＳ６１においては、プラン生成部１５ｌがＷＨＥＲＥ句を実行するプランを作成する。実行プランでは、ＷＨＥＲＥ句をＡＮＤ/ＯＲ/括弧により分割された最小の条件式の処理を並列若しくは直列に組み合わせた実行プランを作成する。例えば、ａ=５  ＡＮＤ  ｂ>３  ＡＮＤ  ｃ=１０というＷＨＥＲＥ句の場合、最小の条件式は、ａ=５、ｂ>３、ｃ=１０である。
【００６８】
この例では可能な実行プランは、図１１（ａ）に示す完全に直列なプラン１、図１１（ｂ）に示す一つの条件式だけを並列に実行するプラン２、図１１（ｃ９に示す２つの条件を並列に実行するプラン３である。
【００６９】
条件式が３つあるためプラン２は３種類あるが、図１１（ｂ）ではｂ>３だけを並列に実行するプランを記述している。条件式が３以上ある場合は、平行に実行可能な条件式を３つ以上にするプランがある。一般的に知られている分散問い合わせの最適化技術を利用して、最も高速に処理できる実行プランを選択し、そのプランを実行する。
【００７０】
（ｂ）ステップＳ６２においては、第１部分検索部１５ｈおよび第２部分検索部１５ｉによりＷＨＥＲＥ句内の条件式処理が行われる。詳細は次項にて説明する。
【００７１】
（データベース管理装置のＷＨＥＲＥ句内の条件式処理）
次に第１部分検索部１５ｈおよび第２部分検索部１５ｉによる条件式の処理方法について図１２のフローチャートを参照して説明する。
【００７２】
（ａ）先ずステップＳ７１において、ＷＨＥＲＥ句にキー値が指定されていない場合は、第１部分検索部１５ｈを用いて検索対象となる断片レコードが登録されているデータベース管理装置２を判定する。またＷＨＥＲＥ句にキー値が指定されている場合は、第２部分検索部１５ｉを用いて検索対象となる断片レコードが登録されているデータベース管理装置２を判定する。
【００７３】
（ｂ）ステップＳ７２においては、特定されたデータベース管理装置２が自装置他装置かを判定し、自装置であればステップＳ７３において後述する条件式の処理を行う。
【００７４】
（ｃ）他装置と判定されるとステップＳ７４にて特定された他装置（データベース管理装置２）に条件式を送信し、条件式結果値を送信するように依頼する。ステップＳ７５では他装置より条件式結果値を受信する。
【００７５】
条件式の処理について、プラン毎に説明すると、プラン１では、最初にａ＝５を処理して条件を満たす断片レコード群を特定する。これは後述するＷＨＥＲＥ句中の条件式の処理において、分散関数ｈ２にカラム名ａを入力することで、その結果としてカラム名ａのデータを管理する１つ以上のデータベース管理装置２を特定する。そして特定したデータベース管理装置２毎にａ＝２を処理して、結果として断片レコード群を得る。
【００７６】
次に、個々の断片レコード毎にｂ>３を処理する。後述するＷＨＥＲＥ句中の条件式の処理において、ハッシュ関数ｈ１にキー値とカラム名ｂを入力することで、該当レコードのｂのカラム断片を格納する１つ以上のデータベース管理装置２を特定する。そして特定したデータベース管理装置２毎にｂ>３を処理して、結果として断片レコード群を得る。
【００７７】
最後に、個々の断片レコード毎にｃ＝１０を処理する。これは後述するＷＨＥＲＥ句中の条件式の処理において、ハッシュ関数ｈ１にキー値とカラム名ｃを入力することで、該当レコードのｃカラム断片を格納する１つ以上のデータベース管理装置２を特定する。そして特定したデータベース管理装置２毎にｃ＝１０を処理して、結果として断片レコード群を得る。
【００７８】
プラン２では、ａ＝５の処理とｂ>３の処理を平行に実行する。次に、ａ＝５の結果得られた断片レコード毎にｃ＝１０を処理する。最後に、ｂ>３の結果得られる断片レコード群とｃ＝１０を処理して得られた断片レコードの積集合を演算する。
【００７９】
プラン３では、全ての条件を平行に実行し、得られた断片レコード群の積集合を演算する。
【００８０】
（データベース管理装置のＳＥＬＥＣＴ句処理）
次にステップＳ５３にて検索結果構成部１５ｊがＳＥＬＥＣＴ句を処理するサブルーチンについて図１３のフローチャートを参照して説明する。
【００８１】
（ａ）先ずステップＳ８１において、検索結果構成部１５ｊがＷＨＥＲＥ句で算出された断片レコード毎にハッシュ関数ｈ１を用いて、該当キー値とＳＥＬＥＣＴ句で指定されたカラム名を入力し、該当レコードの指定されたカラム断片を格納するデータベース管理装置を１つ以上特定する。
【００８２】
（ｂ）ステップＳ８２においては、特定されたデータベース管理装置２が自装置他装置かを判定し、自装置であればステップＳ８３においてハッシュテーブルから、検索対象の断片レコードを特定し、カラム値を取得する。
【００８３】
（ｃ）他装置と判定されるとステップＳ８４にて特定された他装置（データベース管理装置２）にハッシュテーブルから、検索対象の断片レコードを特定し、カラム値を取得するよう依頼する。ステップＳ８５では他装置よりカラム値を受信する。最後にレコード統合部１５ｋがデータベース部３に格納される断片レコードからレコードを復元して、問い合わせ処理を実行する。
【００８４】
このため通常の問い合わせ処理を可能にしながら、連続領域にデータを追記でき、登録処理は高速に行われる。
【００８５】
（実施例）
次に上記の分散データベース管理システム１００の動作の実施例について図１４を参照して説明する。図１４はサプライチェーンマネージメントにおける応用例であり、クライアント端末４が応用プログラムにて「物品，２１２の運搬(流通)経路において、室温３０度以上であった区間(ＩＤリーダ番号)を調べたい」といった問い合わせを実行している。これはＳＱＬで、「ＳＥＬＥＣＴ  
ＩＤリーダ番号  ＦＲＯＭ  流通物品  ＷＨＥＲＥ  ＲＦＩＤ＝２１２  ＡＮＤ  温度＞３０」と表記される。
【００８６】
この問い合わせがデータベース管理装置２にて実行されるとすると、まずこのＳＱＬをパースに問い合わせ木に変換する。次にＷＨＥＲＥ句の処理を行う。この例では、温度＞３０の条件式を処理するため、キー値が２１２、カラム名が温度である断片レコードを格納するデータベース管理装置２をハッシュ関数ｈ１を用いて特定し、結果として４を得る。
【００８７】
そして４で指定されるデータベース管理装置２に対して、温度＞３０の条件式を送信し、条件を満たす断片レコード群(キー値が２１２)を特定し返却してもらう。
【００８８】
最後にＳＥＬＥＣＴ句の処理を行う。キー値が２１２、カラム名がＩＤリーダ番号ある断片レコードを格納するデータベース管理装置２をハッシュ関数 ｈ１を用いて特定し、結果として２を得る。そして２で指定されるデータベース管理装置２に対して、キー値が２１２に該当する断片レコードを特定し、カラム値を返却してもらう。
【００８９】
このように、本発明によると、断片レコードの登録処理が遅いという問題とディスク上の記憶領域に空きが生じてしまうという問題を解決することができる。
【００９０】
分散するデータベース管理装置数の増加に従って大域サーバが性能上のボトルネックになってしまうという問題を解決することができる。
【００９１】
データの登録・問い合わせ処理において格納するデータ・アクセスするデータがどのデータベース管理装置にあるかを高速に判断して、データの登録・問い合わせ処理を高速に実行することができる。
【図面の簡単な説明】
【００９２】
【図１】本実施形態の実施の形態に係る分散データベース管理システムの構成を示す図である。
【図２】本実施形態の実施の形態に係るデータベース管理装置の構成を示す図である。
【図３】データベース部のデータの内部構成を示す図である。
【図４】大域サーバ１の構成を示す図である。
【図５】データベース管理装置２の初期化処理を示すフローチャートである。
【図６】大域サーバ１の情報収集処理を示すフローチャートである。
【図７】大域サーバ１のアクセス権発行処理を示すフローチャートである。
【図８】データベース管理装置２のデータ登録処理を示すフローチャートである。
【図９】データベース管理装置２の問い合わせ処理を示すフローチャートである。
【図１０】データベース管理装置２のＷＨＥＲＥ句処理を示すフローチャートである。
【図１１】各プランの条件式を示す図である。
【図１２】データベース管理装置２のＷＨＥＲＥ句内の条件式処理を示すフローチャートである。
【図１３】データベース管理装置２のＳＥＬＥＣＴ句処理を示すフローチャートである。
【図１４】本発明の実施の形態の実施例を示す図である。
【符号の説明】
【００９３】
１…大域サーバ
２…データベース管理装置
３…データベース部
３ａ…統合レコード
４…クライアント端末
５…分散データベース管理装置群
１１…入力装置
１２…出力装置
１３…通信制御装置
１４…通信インタフェース
１５…ＣＰＵ
１５ａ…データ登録処理部
１５ｂ…検索処理部
１５ｃ…ハッシュテーブル管理部
１５ｄ…関数管理部
１５ｅ…ハッシュ関数演算部
１５ｆ…分散関数演算部
１５ｇ…データ断片登録部
１５ｈ…第１部分検索部
１５ｉ…第２部分検索部
１５ｊ…検索結果構成部
１５ｋ…レコード統合部
１５ｌ…プラン生成部
１６…主記憶装置
１７…主記憶装置
１８…ハッシュテーブル記憶部
１９…関数記憶部
２０…キャッシュ部
２１…入力装置
２２…出力装置
２３…通信制御装置
２４…通信インタフェース
２５…ＣＰＵ
２５ａ…負荷情報収集部
２５ｂ…アクセス権管理部
２５ｃ…統計処理部
２５ｄ…アクセス権算出部
２６…主記憶装置
２７…負荷情報記憶部
２８…アクセス権情報記憶部
１００…分散データベース管理システム
【図１】
2006350741.tif 000003
【図２】
2006350741.tif 000004
【図３】
2006350741.tif 000005
【図４】
2006350741.tif 000006
【図５】
2006350741.tif 000007
【図６】
2006350741.tif 000008
【図７】
2006350741.tif 000009
【図８】
2006350741.tif 000010
【図９】
2006350741.tif 000011
【図１０】
2006350741.tif 000012
【図１１】
2006350741.tif 000013
【図１２】
2006350741.tif 000014
【図１３】
2006350741.tif 000015
【図１４】
2006350741.tif 000016