説明

通信装置管理システムおよびデータベースアクセス処理方法

【課題】レコードの競合やデッドロックを回避しつつ処理負荷の軽減が可能な通信装置管理システムを得ること。
【解決手段】同一テーブルの同一レコードにアクセスするCMDB処理要求に対してハッシュ計算を行うと同一のハッシュ計算値を得るハッシュ関数を適用する場合に、CMDB処理要求を受信し、CMDB処理要求に記載されているテーブル識別子およびレコード識別子に基づいてハッシュ計算を行い、ハッシュ計算値に基づいて受信したCMDB処理要求の振り分け先を決定する振分処理部10と、ハッシュ計算値ごとに同一のハッシュ計算値のCMDB処理要求を格納するDB処理要求キュー11〜13と、DB処理要求キュー11〜13ごとに格納されたCMDB処理要求を取り出して構成管理データベース17に対するアクセス処理を行うDB処理部14〜16と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、構成管理データベースに対して並列処理を行う通信装置管理システムに関する。
【背景技術】
【0002】
従来、通信装置管理システム(EMS:Element Management System)に対して、非同期に発生する複数の構成管理データベース(CMDB:Configuration Management Database)の更新/参照処理要求(以下、CMDB処理要求とする)を効率的に負荷分散するため、一連の複数のレコードアクセスであるトランザクション単位で複数のキューにランダムに分散して振り分け、キュー毎に起動されたデータベースアクセス処理アプリケーションプロセス群が、各キューに登録された要求をひとつずつ順番に取り出してCMDBアクセス処理を行っている。
【0003】
CMDB処理要求をトランザクション単位で各キューに割り振る場合、同一レコードに対する処理要求を含む複数のトランザクションが異なるキューに振り分けられるため、同一レコードに対する競合が発生する。また、各トランザクション内のレコードの更新/参照順序が異なると、実行順序によってデッドロックが発生する。そのため、定期的にデッドロック状態を監視し、デッドロック発生時は、デッドロックを発生させているトランザクションによるCMDB処理要求をリセットし、再度CMDB処理要求を発行し直す必要がある。デッドロック状態を監視するプロセスを定期的に起動し、デッドロック発生時は処理負荷が高くなるため、応答性能が悪化する等の問題が生じていた。
【0004】
このような問題の解決策として、CMDB処理キューを一元化する方式がある。EMSに対して非同期に発生する複数のCMDB処理要求間の競合やデッドロックを回避するため、CMDB処理要求を単一のキュー(待ち行列)に一元的に集約し、先頭から登録された順序で処理する。しかしながら、単一キュー方式では、CMDB処理要求が大量に発生して負荷が増大した場合、並列処理して負荷分散する本来の目的の実現が困難であった。
【0005】
そこで、同一レコードに対するCMDB処理要求ごとにキューに割り振る方法が考えられる。例えば、CMDB処理要求が対象とするデータベース上のレコードキーにハッシュ関数を使用する方法である。具体的に、データベースへの更新/参照要求の処理においてハッシュ関数を適用する技術が、下記特許文献1〜4において開示されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開平5−046454号公報
【特許文献2】特開平5−298366号公報
【特許文献3】特開2000−187668号公報
【特許文献4】特開2000−250927号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、上記従来の技術によれば、登録後のレコード状態の分散化や平均化、アクセス頻度の平滑化や検索の迅速性等の登録後の処理を目的としてハッシュ関数を使用するものである。そのため、レコード更新処理を目的とするCMDB処理要求が大量に発生した場合には更新対象が競合するため、並列処理を実行しても処理負荷を軽減することができない、という問題があった。
【0008】
本発明は、上記に鑑みてなされたものであって、レコードの競合やデッドロックを回避しつつ、処理負荷の軽減が可能な通信装置管理システムを得ることを目的とする。
【課題を解決するための手段】
【0009】
上述した課題を解決し、目的を達成するために、本発明は、構成管理データベースを備え、他装置からのデータ更新またはデータ参照の処理要求であるアクセス要求に基づいて、当該構成管理データベースへのアクセス処理を行う通信装置管理システムであって、同一テーブルの同一レコードにアクセスするアクセス要求に対してハッシュ計算を行うと同一のハッシュ計算値を得るハッシュ関数を適用する場合において、他装置からのアクセス要求を受信し、当該アクセス要求に記載されている前記構成管理データベースのアクセス先を特定するテーブル識別子およびレコード識別子に基づいてハッシュ計算を行い、ハッシュ計算値に基づいて、受信したアクセス要求の振り分け先を決定する振分処理手段と、複数のキューを備え、ハッシュ計算値ごとに、同一のハッシュ計算値のアクセス要求を同一キューに格納する格納手段と、前記キューごとに、格納されたアクセス要求を取り出して前記構成管理データベースに対するアクセス処理を行うデータベース処理手段と、を備えることを特徴とする。
【発明の効果】
【0010】
本発明によれば、レコードの競合やデッドロックを回避しつつ、処理負荷を軽減できる、という効果を奏する。
【図面の簡単な説明】
【0011】
【図1】図1は、通信装置管理システムの構成例を示す図である。
【図2】図2は、構成管理DBの更新処理を示すフローチャートである。
【図3】図3は、通信装置管理システムの構成例を示す図である。
【図4】図4は、通信装置管理システムの構成例を示す図である。
【図5】図5は、構成管理DBの更新処理を示すフローチャートである。
【図6】図6は、通信装置管理システムの接続例を示す図である。
【発明を実施するための形態】
【0012】
以下に、本発明にかかる通信装置管理システムの実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【0013】
実施の形態1.
図1は、通信装置管理システム(EMS:Element Management System)の構成例を示す図である。通信装置管理システム1は、同時に発生する複数のCMDB(Configuration Management Database)処理要求に対して、競合を防止しつつ並行して処理する。CMDB処理要求は、通信装置管理システム1が備える構成管理データベース(CMDB)に対する更新/参照処理を要求するメッセージである。ここでは、トランザクション単位が、1レコード単位の更新/参照とする簡易なシステムとする。なお、CMDB処理要求を送信する装置として、上位管理アプリケーション装置2と、EMS利用者端末3と、管理対象通信装置4を想定する。
【0014】
通信装置管理システム1は、振分処理部10と、データベース(DB)処理要求キュー11〜13と、データベース(DB)処理部14〜16と、構成管理データベース(DB)17と、を備える。振分処理部10は、上位管理アプリケーション装置2等からのCMDB処理要求に対してハッシュ関数の計算を行い、計算結果に基づいて振り分け処理を行う。DB処理要求キュー11〜13は、振り分けされたCMDB処理要求を登録する。DB処理部14〜16は、各DB処理要求キューに登録されたCMDB処理要求を取り出してアプリケーションを並行して実行し、構成管理DB17にアクセスする。構成管理DB17は、システムに関する情報を管理するデータベースである。
【0015】
構成管理DB17は、テーブル18、19を備える。テーブル18、19は、データベース上に登録されているリレーショナルデータベーステーブルである。レコード181、182、183は、テーブル18に登録されたレコードを示し、レコード191、192、193は、テーブル19に登録されたレコードを示す。
【0016】
つづいて、通信装置管理システム1の動作について説明する。図2は、通信装置管理システムにおける構成管理DB17の更新処理を示すフローチャートである。まず、上位管理アプリケーション装置2、EMS利用者端末3、および管理対象通信装置4においてCMDB処理要求が非同期に複数発生する。ここでは、上位管理アプリケーション装置2、EMS利用者端末3、管理対象通信装置4の順に各装置がCMDB処理要求を送信する。なお、上位管理アプリケーション装置2およびEMS利用者端末3からのCMDB処理要求はテーブル18のレコード181に対するレコード更新要求、管理対象通信装置4からのCMDB処理要求はテーブル19のレコード192に対するレコード更新要求とする。
【0017】
通信装置管理システム1では、振分処理部10において、各装置から送信されたCMDB処理要求を受け付ける(ステップS1)。振分処理部10は、CMDB処理要求に付与されているDB処理対象のテーブル識別子、レコード識別子を元にハッシュ関数により計算処理を実行し(ステップS2)、計算結果に基づいて、受け付けたCMDB処理要求を各DB処理要求キューに登録する(ステップS3)。テーブル識別子は各テーブルに通番で振られるテーブル番号とし、レコード識別子はレコードキー番号と定義する。また、ハッシュ関数の計算結果の値は、入力値を元にアクセス要求キュー番号に一意に対応するように設定する。
【0018】
ここでは、3つのDB処理要求キューが存在するので、テーブル番号とレコードキーの和を3で割った余りをハッシュ計算結果値とする。具体的に、以下の式(1)の様に定義する。
ハッシュ関数 F(x、y、z)=MOD(x+y、z) …(1)
(x=テーブル番号、y=レコードキー番号、z=DB処理要求キュー数)
本実施の形態ではz=3となる。すなわち、振分処理部10は、ハッシュ値が2の場合はDB処理要求キュー11、ハッシュ値が1の場合はDB処理要求キュー12、ハッシュ値が0の場合はDB処理要求キュー13の各DB処理要求キューに振り分ける。
【0019】
計算の簡素化のため、テーブル18のテーブル番号を1、レコード181〜183のレコードキー番号を1〜3とし、テーブル19のテーブル番号を2、レコード191〜193のレコードキー番号を1〜3とする。上記式(1)を適用すると、上位管理アプリケーション装置2、EMS利用者端末3からのCMDB処理要求に対するハッシュ値は、(テーブル番号1+レコードキー番号1)=2の数値を3で割った余りとして計算結果2を得る。振分処理部10は、2件とも、ハッシュ値2であるため、DB処理要求キュー11に登録する。同様に、管理対象通信装置4からのCMDB処理要求に対するハッシュ値は、(テーブル番号2+レコードキー番号2)=4を3で割った余りとして計算結果1を得る。振分処理部10は、ハッシュ値1に対応してDB処理要求キュー12に登録する。
【0020】
DB処理部14〜16は、各DB処理要求キューに登録されたCMDB処理要求を順次取り出し(ステップS4)、構成管理DB17に対してCMDB更新/参照処理を実行する(ステップS5)。ここでは、DB処理部14がDB処理要求キュー11から2件のCMDB処理要求を取り出し、上位管理アプリケーション装置2、EMS利用者端末3からの順に実行し、テーブル18のレコード181を、「10」、「20」と順次書き換える。また、DB処理部15がDB処理要求キュー12からCMDB処理要求を取り出して実行し、テーブル19のレコード192を、「30」に書き換える。
【0021】
このように、各DB処理部が更新対象とするレコードが他のDB処理部と競合することが無いため、各DB処理部によって構成管理DB17に対するレコード更新の並列処理が可能となる。
【0022】
以上説明したように、本実施の形態によれば、単一レコード処理が単一トランザクション単位である場合に、振分処理部が受け付けたCMDB処理要求に対してハッシュ関数による計算を実行し、同一テーブルの同一レコードに対するCMDB処理要求を同一のDB処理要求キューに振り分けた後、各DB処理要求キューに対応するDB処理部が構成管理DBの更新処理を行うこととした。これにより、同一レコードに対して複数のDB処理部から同時に更新/参照されることはなく競合が発生しない。また、同一レコードに対する更新/参照要求に対して時系列上の順序逆転は発生せず、時系列性を維持しつつ、効率的に並列処理を行うことができる。
【0023】
なお、3つの並行処理のため、DB処理要求キューを3つ、DB処理部も3つを準備し、ハッシュ関数も3で除算することにより0〜2までの3つの数値を算出できるように実装したが、負荷に応じて並列処理度数を式(1)の除数値に設定することで、並列度数を柔軟に変更することが可能である。例えば、並列度数を4に増やしたい場合、式(1)のハッシュ計算式で使用する除数を4に変更することにより、ハッシュ計算式の算出結果は、拡大させた並列に振り分けるキュー番号の範囲として0〜3の値域に適応できる。なお、テーブル識別子とレコード識別子の連係として、テーブル番号とレコード番号の和としたが、各々一意に識別できる連結計算値であればどのような連携であってもよい。例えば、テーブル名称、レコードキー値を数値化した値でもよく、また相互連携は、和算である必要ななく、乗算、除算、指数計算等、2つの数値を使った連携計算のいずれにおいても、同様の効果を得ることができる。
【0024】
実施の形態2.
本実施の形態では、トランザクションが複数のレコードの更新/参照処理のまとまりである場合において、デッドロックを回避するシステムについて説明する。実施の形態1と異なる部分について説明する。
【0025】
本実施の形態では、EMS利用者端末3等からのCMDB処理要求がトランザクション単位であり、トランザクションは、複数のレコードの更新/参照処理のまとまりであり、他の対象レコード更新/参照の介在を許可しない一連の処理とする。トランザクションは、通信装置管理システムの振分処理部において、複数の異なるレコード処理単位のCMDB処理要求に分解できることとする。また、各トランザクションには、トランザクション番号(TR−1、TR−2、・・・と明示する)が割り当てられ、分解されたCMDB処理要求には所属するトランザクション番号が含まれ、通信装置管理システムのDB処理部によって読み出し可能とする。
【0026】
まず、従来においてデッドロックが発生する処理について説明する。図3は、通信装置管理システムの構成例を示す図である。通信装置管理システム1aは、振分処理部10aと、DB処理要求キュー11a、12aと、DB処理部14a、15aと、構成管理DB17と、を備える。振分処理部10aは、EMS利用者端末3等からのトランザクションについて、トランザクション単位で振り分け処理を行う。DB処理要求キュー11a、12aは、振り分けされたトランザクションを登録する。DB処理要求キュー11aは、EMS利用者端末3からのトランザクションTR−1を登録する。また、DB処理要求キュー12aは、管理対象通信装置4からのトランザクションTR−2を登録する。DB処理部14a、15aは、各DB処理要求キューに登録されたトランザクションを取り出して、トランザクションに含まれるCMDB処理要求に基づくアプリケーションを並行して実行し、構成管理DB17にアクセスする。
【0027】
ここで、トランザクションTR−1は、(1)テーブル18のレコード181のロックおよび更新をする要求、および、(3)テーブル19のレコード191のロックおよび更新をする要求、の2つのCMDB処理要求から構成される。また、トランザクションTR−2は、(2)テーブル19のレコード191のロックおよび更新をする要求、および、(4)テーブル18のレコード181のロックおよび更新をする要求、の2つのCMDB処理要求から構成される。すなわち、2つのトランザクションTR−1、TR−2は、同じ2レコードを更新するが、双方で更新順序が逆転するトランザクションとなっている。処理の順序としては、DB処理部14a、15aが並行して各DB処理要求キューの要求を処理するため、各DB処理要求キューに登録されて要求は非同期で処理される。ここでは、(1)、(2)、(3)、(4)の順で実行されるとする。
【0028】
つづいて、通信装置管理システム1aの動作について説明する。まず、EMS利用者端末3、管理対象通信装置4が、それぞれ、トランザクションTR−1、TR−2の個別のCMDB処理要求を送信する。トランザクションTR−1は、(1)テーブル18のレコード181の更新と、(3)テーブル19のレコード191の更新、の2つのCMDB処理要求に分解できる。また、トランザクションTR−2も、(2)テーブル19のレコード191の更新と、(4)テーブル18のレコード181の更新、の2つのCMDB処理要求に分解できる。
【0029】
従来ではトランザクション単位でDB処理要求キューに登録していたため、振分処理部10aは、同一のトランザクションTR−1に属する(1)と(3)のCMDB処理要求を、まとめてDB処理要求キュー11aに振り分けて登録する。同様に、振分処理部10aは、同一のトランザクションTR−2に属する(2)と(4)のCMDB処理要求を、まとめてDB処理要求キュー12aに振り分けて登録する。
【0030】
DB処理部14a、15aは、CMDB処理要求キュー11a、12aにそれぞれ登録されたCMDB処理要求を取り出し、非同期、かつ独立に構成管理DB17を更新する。上述のように、(1)、(2)、(3)、(4)の順に取り出され実行される。
【0031】
その結果、まず、DB処理部14aが、先頭の(1)のCMDB処理要求に基づく更新処理により、テーブル18のレコード181にロックを掛け、本レコードの更新を行う。レコードにロックが掛けられた場合、他のDB処理部からは対象レコードの参照や更新ができなくなる。ロックが掛ったレコードを更新/参照する他のDB処理部は、先にロックを掛けたDB処理部がロック解除するまで待ち状態に置かれる。ロックを掛ける処理を含むトランザクション処理全体が終了してレコードのロックが解除されると、始めて、ロックにより発生した待ち状態が解け、レコードの更新/参照ができるようになる。
【0032】
ここでは、(1)の実行により、テーブル18のレコード181にロックが掛けられた状態となる。つぎに、DB処理部15aが、(2)のCMDB処理要求に基づく更新処理により、テーブル19のレコード191にロックが掛けられた状態となる。さらに、DB処理部14aが、(3)のCMDB処理要求に基づく更新処理により、テーブル19のレコード191の更新を試みる。しかしながら、既に、(2)の更新処理の際、レコードロックが掛けられているため、トランザクションTR−1の(3)の処理は待ち状態となる。また、DB処理部14bが、(4)のCMDB処理要求に基づく更新処理により、テーブル18のレコード181の更新を試みる。この場合も同様に、(1)の更新処理の際、レコードロックが掛けられているため、トランザクションTR−2の(4)の処理は待ち状態となる。
【0033】
このように、相互にロックを掛け合っているため、トランザクションTR−1、TR−2が、ともに待ち状態となる。相互に他のDB処理部側からトランザクションのロック解除がされないと先に進めないが、相互に停止状態でロック解除ができないため、永久的な待ち状態が継続する、いわゆるデッドロック状態に陥る。デッドロックを解消する方法として、定期的にデッドロック状態を監視するプロセスを起動してデッドロックが発生していないか監視し、デッドロック発生時に、双方または片方のトランザクションをキャンセルする方法が一般的である。キャンセルされたトランザクションについては、再度、同様の操作を実行する。
【0034】
デッドロックが発生した場合、DB処理の遅延または永久停止が発生する。また、デッドロックを検出した場合、デッドロック監視プロセスにより、片方または両方のトランザクション処理を一旦消去して、トランザクションの最初からやり直しをする方法が一般的である。このような処理を行うと、システム負荷の増大、デッドロック検出やデッドロック時の処理のやり直しによる応答性能の大幅な悪化が発生する。
【0035】
つぎに、デッドロックを回避する処理について説明する。図4は、通信装置管理システムの構成例を示す図である。通信装置管理システム1bは、振分処理部10bと、DB処理要求キュー11b、12bと、DB処理部14b、15bと、構成管理DB17と、現トランザクションリスト100と、を備える。振分処理部10bは、EMS利用者端末3等からのトランザクションについて、トランザクションに含まれるレコード処理単位のCMDB処理要求に対してハッシュ関数の計算を行い、振り分け処理を行う。DB処理要求キュー11b、12bは、振り分けされたCMDB処理要求を登録する。DB処理要求キュー11bは、テーブル18のレコード181を更新するCMDB処理要求を登録する。また、DB処理要求キュー12bは、テーブル19のレコード191を更新するCMDB処理要求を登録する。DB処理部14b、15bは、各DB処理要求キューに登録されたCMDB処理要求を取り出してアプリケーションを並行して実行し、構成管理DB17にアクセスする。また、各DB処理要求キューに登録されたCMDB処理要求の並べ替えを行う。現トランザクションリスト100は、各DB処理要求キュー内の順序を決定するトランザクション番号を管理する現トランザクション優先順位テーブルである。
【0036】
ここでは、振分処理部10bが、トランザクション単位ではなく、トランザクションに含まれるレコード処理単位のCMDB処理要求に対してテーブル番号とレコードキー番号を元にしたハッシュ関数の計算を行い、ハッシュ関数値に基づき、レコード処理単位に分解して各DB処理要求キューに振り分けて登録する。具体的には、DB処理要求キュー11bには、トランザクションTR−1の(1)テーブル18のレコード181の更新要求、トランザクションTR−2の(4)テーブル18のレコード181の更新要求が登録される。また、DB処理要求キュー12bには、トランザクションTR−1の(3)テーブル19のレコード191の更新要求、トランザクションTR−2の(2)テーブル19のレコード191の更新要求が登録される。
【0037】
つづいて、通信装置管理システム1bの動作について説明する。図5は、通信装置管理システムにおける構成管理DB17の更新処理を示すフローチャートである。まず、EMS利用者端末3、管理対象通信装置4が、それぞれ、トランザクションTR−1、TR−2の個別のCMDB処理要求を送信する。それぞれに含まれるレコード更新の内容は、図3におけるデッドロックが発生する場合のものと同一である。
【0038】
ここで、CMDB処理要求を送信する各装置は、トランザクション毎に、ユニークなトランザクションID(TR−IDとする)を決定し、同一トランザクションの全CMDB処理要求に本TR−IDを付与する。さらに、トランザクションの最初のCMDB処理要求には、トランザクション開始マーク(StartTRとする)、最後のCMDB処理要求にはトランザクション終了マーク(EndTRとする)を付与する。
【0039】
通信装置管理システム1bでは、振分処理部10bにおいて、各装置から送信されたトランザクションを受け付け(ステップS11)、受信したトランザクションTR−1、TR−2をレコード処理単位のCMDB処理要求に分解する(ステップS12)。振分処理部10bは、分解したレコード処理単位のCMDB処理要求について、CMDB処理要求に付与されているDB処理対象のテーブル識別子、レコード識別子を元にハッシュ関数により計算処理を実行し(ステップS13)、計算結果に基づいて、CMDB処理要求を各DB処理要求キューに登録する(ステップS14)。
【0040】
ハッシュ関数による計算方法は実施の形態1と同様である。すなわち、同一テーブルの同一レコードに対するCMDB処理要求は同じDB処理要求キューに振り分けられて登録される。具体的に、振分処理部10bは、テーブル18のレコード181に対する処理要求であるトランザクションTR−1の(1)、およびトランザクションTR−2の(4)をDB処理要求キュー11bに登録する。また、振分処理部10bは、テーブル19のレコード191に対する処理要求であるトランザクションTR−1の(3)、およびトランザクションTR−2の(2)をDB処理要求キュー12bに登録する。
【0041】
このとき、振分処理部10bは、現トランザクションリスト100に、トランザクションTR−1、TR−2の受信順に現在実行中のトランザクションとして登録する。トランザクションの優先度は現トランザクションリスト100の登録順であるため、トランザクションTR−1の方がトランザクションTR−2より優先度が高いことを示す。
【0042】
つぎに、各DB処理部が、CMDB処理要求の実行するにあたり、現トランザクションリスト100の登録順(優先順位)に基づいて、各DB処理要求キュー内のCMDB処理要求を並べ替える(ステップS15)。並べ替えの方法としては、例えば、最も優先順位の高いTR−IDと同一のTR−IDが付与されたCMDB処理要求を抜き出し、各BD処理要求キュー内で当該TR−IDが付与された全てのCMDB処理要求をまとめて、TR−IDの優先順位に従って各DB処理要求キュー内で並び替える。このとき、2番目以降の優先順位のTR−IDと同一のTR−IDが付与されたCMDB処理要求について並び替えを行ってもよい。なお、並べ替える方法は、これに限定するものではない。
【0043】
また、並び替えるタイミングとしては、例えば、いずれかのDB処理部でEndTRマークが付与されたCMDB処理要求を処理した場合に現トランザクションリスト100から当該TR−IDを削除する処理を行うため、このタイミングとしてもよい。なお、並べ替えるタイミングは、これに限定するものではない。
【0044】
具体的には、DB処理部14bが、トランザクションTR−1に属するCMDB処理要求を優先して並び替える。その結果、DB処理要求キュー11bにおいて、トランザクションTR−1の(1)を先頭に登録し、つぎに、トランザクションTR−2の(4)が位置するように再登録する。同様に、DB処理部15bが、DB処理要求キュー12bにおいて、トランザクションTR−1の(3)を先頭に登録し、つぎに、トランザクションTR−2の(2)が位置するように再登録する。
【0045】
DB処理部14b、15bは、各DB処理要求キューに登録されたCMDB処理要求を取り出し(ステップS16)、構成管理DB17に対してCMDB更新/参照処理を実行する(ステップS17)。構成管理DB17に対する処理は、上述の説明と同様である。
【0046】
いずれかのDB処理部において、EndTRマークが付与されたCMDB処理要求を取り出した場合は、他のDB処理要求キューに同一TR−IDのCMDB処理要求が残っているかどうかを確認する。残っていた場合は、EndTRマークが付与されたCMDB処理要求の処理を行わない。残っていない場合は、取り出したCMDB処理要求の処理を行った後、現トランザクションリスト100から当該TR−IDを削除する。
【0047】
このように、各DB処理部が、各DB処理要求キューに登録されたCMDB処理要求を現トランザクションリスト100の登録順序で並べ替えるため、その結果、トランザクションの優先順で各レコード単位のCMDB処理要求が実行されるため、デッドロックが発生しない。なお、各DB処理部が、各DB処理要求キューに登録されたCMDB処理要求を並べ替えることとしたが、振分処理部10bが各DB処理要求キューに登録する際に行ってもよい。
【0048】
なお、本実施の形態では、トランザクションの優先順位として、振分処理部10bで受信した順番としているが、これに限定するものではない。例えば、各DB処理部において、トランザクション開始時期を現トランザクションリスト100に記録することにより、トランザクションの開始タイミングが早い程、優先順位を高くすると定義してもよい。また、利用者によりCMDB処理要求時に優先順位を明示的に設定する等、他の規則によりトランザクションの優先順位を決定した場合においても同様の効果が期待できる。
【0049】
例えば、開始タイミングの早いトランザクションの優先順位を高くする場合では、StartTRが付与されたCMDB処理要求を取り出したいずれかのDB処理部が、当該StartTRが付与されたトランザクションのTR−IDを現トランザクションリスト100に記録する。その後、各DB処理が当該TR−IDが付与されたCMDB要求を各DB処理要求キューから抜き出し、各DB処理要求キュー内において優先順位に基づいて並べ替えを行う。待ちフラグの立っているCMDB処理要求についてはリセットする。待ちフラグは、現トランザクションリスト100に無いCMDB処理要求を取り出したDB処理部が、当該CMDB処理要求に立て、処理の対象としない。なお、トランザクションの優先順位を受信順で決める場合では、各DB処理要求キューに登録されているCMDB処理要求に付与されているTR−IDは、必ず現トランザクションリスト100に登録されている。そのため、現トランザクションリスト100に基づいて並べ替えることが可能であり、待ちフラグの必要はない。
【0050】
以上説明したように、本実施の形態によれば、トランザクションが複数のレコードの更新/参照処理のまとまりである場合に、振分処理部が、受け付けたトランザクションをレコード処理単位のCMDB処理要求に分解してハッシュ関数による計算を実行し、また、DB処理部が、トランザクションの優先順位に基づいてDB処理要求キューに登録されたCMDB処理要求を並び替えることとした。これにより、実施の形態1の効果に加え、デッドロックを防止することができ、システム全体として負荷を軽減することができる。
【0051】
なお、これまでの説明では、通信装置管理システムに対して、上位管理アプリケーション装置等が全て共通のインタフェイスでCMDB処理要求を送信する方式を想定している。しかしながら、全てのCMDB処理要求側のインタフェイスを一括変更することが困難な場合がある。このように、共通でないCMDB処理要求元が存在した場合でも、メッセージ形式を共通形式に変換するゲートウェイ等を用いることによって並列処理することが可能となる。
【0052】
図6は、変換ゲートウェイを配置した通信装置管理システムとの接続例を示す図である。例えば、管理対象通信装置4からは、通信装置管理システム1と通信できない独自のメッセージ形式のCMDB処理要求を送信する。このような場合に、独自形式のメッセージを共通形式のメッセージに変換する変換ゲートウェイ5を用いる。
【0053】
変換ゲートウェイ5は、管理対象通信装置4から入力した独自メッセージ形式のCMDB処理要求を通信装置管理システム1が受け付け可能な共通のメッセージ形式のCMDB処理要求に変換して出力する。通信装置管理システム1は、変換後の共通メッセージ形式のCMDB処理要求を受信することにより、CMDB処理要求を受け付け可能となる。
【0054】
このように、CMDB処理要求メッセージが共通でない場合でも、変換ゲートウェイ5が異なるメッセージ形式を共通の要求メッセージ形式に変換し、通信装置管理システムに送信することにより、異なるメッセージ形式のCMDB処理要求についても、共通に処理して通信装置管理システムにおける処理負荷を分散することができる。
【0055】
なお、メッセージ形式を変換する構成を通信装置管理システムとCMDB処理要求を送信する装置との間に配置する場合について説明したが、これに限定するものではなく、通信装置管理システム内の備えてもよい。
【0056】
また、CMDB処理要求のメッセージ形式だけでなく、通信プロトコルやコード体系等が標準と異なる場合等、共通の通信インタフェイス仕様から異なる場合においても、変換ゲートウェイを介在させることで、通信装置管理システムに対するインタフェイスを共通化することが可能であり、データベースの更新/参照処理の負荷分散の同等の効果を得ることが期待できる。
【0057】
また、単一のデータベースを想定しているが、複数のデータベースに跨るデータベースシステムを対象とする場合においても、ハッシュ関数対象をデータベース識別子まで拡張し、データベース識別子、テーブル識別子、レコード識別子の3つの連結計算とすることで適用可能であり、同様の効果を得ることができる。
【0058】
また、本並列処理方式では、並列度数に応じて、DB処理要求キューを複数設けたが、DB処理要求キューは論理的に分離したキューであればよく、物理的には単一キューに実装しても問題なく同様の効果が期待できる。すなわち、物理的に単一のDB処理要求キューとして実装した場合でも、振分処理部において、CMDB処理要求を受信後、単一キューにCMDB処理要求を登録する際、ハッシュ関数の計算値を各CMDB処理要求に付加して登録する。その後、複数のDB処理部が、単一キューからCMDB処理要求を取り出す際、付加されたハッシュ関数値を参照して各DB処理部に割り当てられたハッシュ関数値に属するCMDB処理要求のみを取り出し、並列して実行することで同様の効果を得ることが期待できる。
【産業上の利用可能性】
【0059】
以上のように、本発明にかかる通信装置管理システムは、構成管理データベースに対するデータ処理に有用であり、特に、構成管理データベースに対して並列処理を行うシステムに適している。
【符号の説明】
【0060】
1 通信装置管理システム
2 上位管理アプリケーション装置
3 EMS利用者端末
4 管理対象通信装置
5 変換ゲートウェイ
10、10a、10b 振分処理部
11、11a、11b、12、12a、12b、13 DB処理要求キュー
14、14a、14b、15、15a、15b、16 DB処理部
17 構成管理DB
18、19 テーブル
100 現トランザクションリスト

【特許請求の範囲】
【請求項1】
構成管理データベースを備え、他装置からのデータ更新またはデータ参照の処理要求であるアクセス要求に基づいて、当該構成管理データベースへのアクセス処理を行う通信装置管理システムであって、
同一テーブルの同一レコードにアクセスするアクセス要求に対してハッシュ計算を行うと同一のハッシュ計算値を得るハッシュ関数を適用する場合において、他装置からのアクセス要求を受信し、当該アクセス要求に記載されている前記構成管理データベースのアクセス先を特定するテーブル識別子およびレコード識別子に基づいてハッシュ計算を行い、ハッシュ計算値に基づいて、受信したアクセス要求の振り分け先を決定する振分処理手段と、
複数のキューを備え、ハッシュ計算値ごとに、同一のハッシュ計算値のアクセス要求を同一キューに格納する格納手段と、
前記キューごとに、格納されたアクセス要求を取り出して前記構成管理データベースに対するアクセス処理を行うデータベース処理手段と、
を備えることを特徴とする通信装置管理システム。
【請求項2】
前記振分処理手段は、前記格納手段が備えるキューの数の範囲内の種類のハッシュ計算値を算出する、
ことを特徴とする請求項1に記載の通信装置管理システム。
【請求項3】
前記各装置からのアクセス要求が、複数のアクセス要求を含むトランザクションで送信された場合、
前記振分処理手段は、受信したトランザクションを個々のアクセス要求の単位に分解し、分解したアクセス要求についてハッシュ関数の計算値を算出し、
前記データベース処理手段は、前記格納手段が備える各キューに格納されたアクセス要求を、当該アクセス要求が含まれていたトランザクションの優先順位に基づいて並べ替え、優先順位の高いアクセス要求から前記構成管理データベースに対するアクセス処理を行う、
ことを特徴とする請求項1または2に記載の通信装置管理システム。
【請求項4】
前記振分処理手段は、トランザクションの受信順に基づいて優先順位を決定する、
ことを特徴とする請求項3に記載の通信装置管理システム。
【請求項5】
前記データベース処理手段は、トランザクションの処理の開始順に基づいて優先順位を決定する、
ことを特徴とする請求項3に記載の通信装置管理システム。
【請求項6】
さらに、
前記他装置が前記振分処理手段において受信できない通信形式でアクセス要求を送信した場合に、当該アクセス要求を前記振分処理手段が受信可能な通信形式のアクセス要求に変換する変換手段、
を備えることを特徴とする請求項1〜5のいずれか1つに記載の通信装置管理システム。
【請求項7】
構成管理データベースを備え、他装置からのデータ更新またはデータ参照の処理要求であるアクセス要求に基づいて、当該構成管理データベースへのアクセス処理を行う通信装置管理システム、が採用するデータベースアクセス処理方法であって、
他装置からのアクセス要求を受信する受信ステップと、
同一テーブルの同一レコードにアクセスするアクセス要求に対してハッシュ計算を行うと同一のハッシュ計算値を得るハッシュ関数を適用する場合において、前記アクセス要求に記載されている前記構成管理データベースのアクセス先を特定するテーブル識別子およびレコード識別子に基づいてハッシュ計算を行うハッシュ計算ステップと、
前記ハッシュ計算値に基づいて受信したアクセス要求の振り分け先を決定する振り分けステップと、
同一のハッシュ計算値のアクセス要求を同一キューに格納する格納ステップと、
前記キューに格納されたアクセス要求を取り出して前記構成管理データベースに対するアクセス処理を行うデータベース処理ステップと、
を含むことを特徴とするデータベースアクセス処理方法。
【請求項8】
前記各装置からのアクセス要求が、複数のアクセス要求を含むトランザクションで送信された場合、
前記受信ステップでは、受信したトランザクションを個々のアクセス要求の単位に分解し、
前記ハッシュ計算ステップでは、分解された個々のアクセス要求についてハッシュ計算値を算出し、
さらに、
所定の規則に基づいて前記トランザクションに優先順位を付ける優先順位付与ステップと、
前記キューに格納されたアクセス要求を優先順位に基づいて並べ替える並べ替えステップと、
を含むことを特徴とする請求項7に記載のデータベースアクセス処理方法。
【請求項9】
さらに、
前記他装置が前記受信ステップにおいて受信できない通信形式でアクセス要求を送信した場合に、当該アクセス要求を前記受信ステップで受信可能な通信形式のアクセス要求に変換する変換ステップ、
を含むことを特徴とする請求項7または8に記載のデータベースアクセス処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate