(57)【特許請求の範囲】
【請求項１】
データベースに入力されるデータを保持する第１バッファと、
前記データベースとは異なるモジュールに入力されるデータを保持する第２バッファと、
特定形式の電文を受信する受信部と、
前記受信部により受信された前記特定形式の電文を、前記特定形式を維持して前記第２バッファに入力されるデータと、別の形式に変換して前記第１バッファに入力されるデータと、に分離する分離部と
を有する電文振分装置。
【請求項２】
前記受信部により受信される電文を記録する記録部を備える請求項１に記載の電文振分装置。
【請求項３】
前記データベースが障害を起こした場合に、前記記録部に記録された電文を用いて前記データベースを復旧する復旧部を備える請求項２に記載の電文振分装置。
【請求項４】
前記分離部は、前記受信部により受信された前記特定形式の電文を前記第１バッファに入力されるデータとして分離するときに、前記電文を前記データベースのスキーマに対応する形式に変更することを特徴とする請求項１から３のいずれかに記載の電文振分装置。
【請求項５】
前記第２バッファは入力されたデータを前記電文振分装置と通信を行うサーバ装置に送信するためのバッファであることを特徴とする請求項１から４のいずれかに記載の電文振分装置。
【請求項６】
前記電文は、構造化文書を表わす情報である請求項１から５のいずれかに記載の電文振分装置。
【請求項７】
前記分離部は、前記電文の特定のタグ情報に基づいて、他のサーバを決定して前記受信部により受信された電文を振り分けることを特徴とする請求項６に記載の電文振分装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電文を受信し複数のバッファに電文を振り分ける装置に関する。特に、本発明は、受信した電文をデータベースに格納するとともに１または複数のモジュールに電文を送信する装置に関する。
【背景技術】
【０００２】
コンピュータが通信の中心的位置を占めるようになってきた。例えば、銀行業務や証券業務などの金融業務においては、同業他社や利用者などの外部より電文をコンピュータネットワークを用いて受信し、電文を受信したコンピュータが電文を必要な部門のコンピュータに振り分けることが行われている。
【０００３】
外部より電文を受信したコンピュータは、データベース管理システムを備えていたりデータベースサーバに接続されていたりしており、受信した電文をデータベースに格納した後にそのデータベースから電文が必要な部門に振り分けられる。このように一旦データベースに電文を格納する理由は、受信した電文の形式と各部門に振り分ける際の電文の形式とが異なるために、形式の変換が必要であり、また、データベースには、障害が発生してもデータが喪失などしないように、強力なリカバリ機能が備わっているからである。
【０００４】
一方、ＩＳＯ２００２２が制定され、金融業務においては従来の固定長の電文形式からＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）に基づく構造化文書を表わす情報としての電文形式への移行が予定されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願公開第2011/0137791号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述のような電文形式の移行に伴い、電文のサイズが大きくなることが予想される。このため、受信した電文をデータベースに格納し、電文が必要な部門に振り分ける処理をより高速に行うことが求められる。
【０００７】
本発明は、このような状況に対応するために、受信した電文をデータベースに格納し、そのデータベースから電文が必要な部門に振り分ける処理を高速化することを目的の一つとする。
【課題を解決するための手段】
【０００８】
本発明の一実施形態として、データベースに入力されるデータを保持する第１バッファと、そのデータベースとは異なるモジュールに入力されるデータを保持する第２バッファと、特定形式の電文を受信する受信部と、その受信部により受信されたその特定形式の電文を、その特定形式を維持してその第２バッファに入力されるデータと、別の形式に変換して第１バッファに入力されるデータとに分離する分離部とを有する電文振分装置が提供される。
【発明の効果】
【０００９】
本発明によれば、受信した電文をデータベース管理システムに格納し、電文が必要な部門に振り分ける処理をより高速に行うことができる。また、データベースに障害が発生しても、電文が必要な部門に振り分ける処理を続行することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施形態に係る電文振分装置を含むシステムの機能ブロック図
【図２】本発明の一実施形態に係る電文振分装置の処理のフローチャート
【図３】本発明の一実施形態に係る電文振分装置の電文の構造等の一例図
【図４】本発明の一実施形態に係る電文振分装置の処理に用いられるデータ構造の一例図
【図５】本発明の一実施形態に係る電文振分装置を含むシステムの機能ブロック図
【図６】本発明の一実施形態に係る電文振分装置の処理のフローチャート
【図７】本発明の一実施形態に係る電文振分装置の記録部により電文が記録されるデータ構造の一例図
【図８】本発明の一実施形態に係る電文振分装置を含むシステムの機能ブロック図
【図９】本発明の一実施形態に係る電文振分装置の処理のフローチャート
【発明を実施するための形態】
【００１１】
本発明を実施するための形態について、以下、複数の実施形態として説明を行う。なお、本発明は、以下の実施形態に限定して解釈されることはなく、以下の実施形態を変形して実施することも可能である。
【００１２】
（実施形態１）
図１は、本実施形態に係る電文振分装置を含むシステムの機能ブロック図である。システム１００は、電文振分装置１０１と、送信サーバ１０６と、通信網１０７と、データベース１０８と、モジュール１０９とを備える。
【００１３】
電文振分装置１０１と送信サーバ１０６とは通信網１０７を介して接続される。送信サーバ１０６は電文を通信網１０７を介して電文振分装置１０１に送信する。例えば、金融業においては、送信サーバ１０６は日本銀行に設置されたサーバであり、電文振分装置１０１は金融機関のいずれかに設置されたサーバである。日本銀行は金融機関同士の間の資金決済を行い、送信サーバ１０６は資金決済の結果などを表わす電文を金融機関の電文振分装置１０１に対して通信網１０７を介して送信する。このときの電文の形式は、ＩＳＯ２００２２により標準化された特定形式となっていてもよい。
【００１４】
電文振分装置１０１は、受信部１０２と、分離部１０３と、第１バッファ１０４と、第２バッファ１０５とを有する。
【００１５】
受信部１０２は、通信網１０７を介して送信サーバ１０６に接続されており、送信サーバ１０６から送信される電文を受信する。また、受信部１０２は、受信した電文を分離部１０３へ伝達する。受信した電文は、例えば上述したＩＳＯ２００２２により標準化された形式となっていてもよい。また、受信部１０２が受信した電文を分離部１０３へ伝達する際には、電文の形式は受信されたときの形式のそのまま維持されて伝達されてよい。ただし、通信および伝達の物理的媒体に応じて物理的な面における形式は変換され、ＩＳＯ２００２２の規格などによる論理的な面における電文の形式はそのままであってもよい。
【００１６】
分離部１０３は、受信部１０２により受信された電文を、その電文の形式を維持して第２バッファ１０５に入力されるデータと、別の形式に変換して第１バッファ１０４に入力されるデータとに分離する。例えば、分離部１０３は、電文の形式がＩＳＯ２００２２により標準化された形式に保たれたまま第２バッファ１０５に入力されるデータとして電文
を分離し、分離した電文の形式を保ったまま第２バッファ１０５に入力する。また、分離部１０３は、電文を別の形式に変換して第１バッファに入力されるデータを分離し、第１バッファに入力する。別の形式としては、データベース１０８のスキーマに適した形式を挙げることができる。例えば、データベース１０８の特定のテーブルに入力するためのＩＮＳＥＲＴ文の形式が挙げられる。
【００１７】
なお、分離部１０３が電文を分離する際、第１バッファ１０４に入力される電文と第２バッファ１０５に入力される電文とに重複があってもよい。例えば、分離部１０３は、受信部１０２により受信された電文の全てを第１バッファ１０４に入力し、受信部１０２により受信された電文の一部を第２バッファ１０５に入力してもよい。この場合は、第２バッファ１０５に入力される電文の集合が、第１バッファ１０４に入力される電文と第２バッファ１０５に入力される電文との重複となる。また、分離部１０３は、受信部１０２により受信された電文の全てを、第１バッファ１０４と第２バッファ１０５との両方に入力してもよい。この場合は、受信部１０２により受信された電文の全てが、第１バッファ１０４に入力される電文と第２バッファ１０５に入力される電文との重複となる。
【００１８】
第１バッファ１０４は、データベース１０８に入力されるデータを保持する。データベース１０８は、例えばリレーショナルデータベースである。第１バッファ１０４に入力されたデータは、少なくともデータベース１０８に入力されるまで第１バッファ１０４により保持される。これにより、受信され第１バッファ１０４に入力されたデータを確実にデータベース１０８に入力することができる。第１バッファ１０４は、例えば、先入れ先出し（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）形式のキュー構造により実現することができる。
【００１９】
第２バッファ１０５は、データベース１０８とは異なるモジュール１０９に入力されるデータを保持する。モジュール１０９は、他のコンピュータ（サーバ装置）へ電文を送信するための通信インタフェースを備えていてもよい。また、モジュール１０９は、電文振分装置１０１を構成するモジュールの一つとなっていてもよい。第２バッファ１０５も、第１バッファ１０４と同様に先入れ先出し（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）形式のキュー構造により実現することができる。これにより、他のコンピュータへ電文を送信する際、送信先のコンピュータの受信待ちが発生したとしても第２バッファ１０５を送信のためのバッファとして用いることができ、電文振分装置１０１と送信先とのコンピュータとの通信の帯域を効率よく使用することができる。
【００２０】
なお、モジュール１０９は複数存在していてもよい。この場合には、モジュール１０９の数に応じてさらに第３バッファ、第４バッファなどを電文振分装置１０１が有していてもよい。この場合には、分離部１０３は、受信部１０２により受信された電文を、形式を維持して、第２バッファ、第３バッファ、第４バッファなどに入力されるデータに分離してもよい。
【００２１】
図２は、本実施形態に係る電文振分装置１０１の動作を説明するフローチャートである。電文振分装置１０１は、送信サーバ１０６が通信網１０７を介して送信する電文が受信可能になる都度、図２に示すフローチャートの処理を行う。例えば、電文振分装置１０１がコンピュータを用いて実現される場合には、通信網１０７を介して電文が通信インタフェースにより受信されると割り込みが発生して実行されるプログラムの処理が図２に示される処理となっていてもよい。
【００２２】
ステップＳ２０１の処理として電文を受信する。例えば、通信インタフェースのキューに蓄積された電文を読み取ることにより、電文を受信する。ステップＳ２０２の処理として、電文を解析する。電文は特定形式を有する。例えば、電文の形式はＸＭＬの形式であってもよい。電文が特定形式を有するので、その形式に従って解析を行うことが可能である。
【００２３】
図３（Ａ）は、電文の一例を示す。この例では、電文は、ＸＭＬによる構造化文書の形式を有しており、「＜電文＞」のタグとこれに対応する「＜／電文＞」のタグ、「＜種類＞」のタグとこれに対応する「＜／種類＞」のタグ、「＜あて先＞」のタグとこれに対応する「＜／あて先＞」のタグ、「＜送信日＞」のタグとこれに対応する「＜／送信日＞」のタグを有する形式となっている。このようなＸＭＬの形式を有する場合には、タグの対応関係を考慮して解析を行うことが可能である。
【００２４】
例えば、図３（Ａ）に示す電文の一例を解析することにより、図３（Ｂ）に示すパース木を得ることができる。ノード３０１（ルートノード）は、「＜電文＞」のタグとこれに対応する「＜／電文＞」のタグで囲まれた部分に対応する。ノード３０２は、「＜種類＞」のタグとこれに対応する「＜／種類＞」のタグで囲まれた部分に対応する。そして、ノード３１２が、「電文１」に対応する。ノード３０３は、「＜あて先＞」のタグとこれに対応する「＜／あて先＞」のタグで囲まれた部分に対応する。そして、ノード３１３が、「あて先１」に対応する。ノード３０４は、「＜送信日＞」のタグとこれに対応する「＜／送信日＞」のタグで囲まれた部分に対応する。そして、ノード３１４が、「２０１２年６月７日」に対応する。
【００２５】
ステップＳ２０２においては、例えば、図３（Ｂ）に示すパース木を生成し、ルートノードであるノード３０１から末端のノードにいたる経路を選択し、解析を行うことができる。
【００２６】
ステップＳ２０３においては、ステップＳ２０２の解析に基づいて、電文を第２バッファに入力するべきかどうかについて判断する。もし、第２バッファ１０５に入力するべきと判断されれば、ステップＳ２０４に処理を移行させて、電文を第２バッファ１０５に入力する。もし、第２バッファ１０５に入力するべきでないと判断されれば、ステップＳ２０４をスキップする。
【００２７】
ステップＳ２０３の判断は、例えば図３に示すテーブルを参照し、ノード３０２に接続されるノード３１２が対応する値に応じて行うことができる。すなわち、「＜種類＞」のタグとこれに対応する「＜／種類＞」のタグで囲まれた部分が「電文１」であれば、分離先の列の値が２となっているので、第２バッファに入力するべきと判断を行う。また、「電文２」であれば、分離先の列の値が１であり、２ではないので、第２バッファに入力するべきではないと判断を行う。
【００２８】
ステップＳ２０５において、別の形式に変換する。例えば、データベース１０８のスキーマに対応する形式に変更する。すなわち、データベース１０８に、図３（Ｃ）に示すテーブルが定義されているとする。そのテーブルの列としては、「種類」の列３２２、「あて先」の列３２３、…、「送信日」の列３２４が定義されており、これらがそれぞれ「＜種類＞」、「＜あて先＞」、…、「＜送信日＞」のタグに対応しているとすると、
ＩＮＳＥＲＴ  ＩＮＴＯ  テーブル（種類、あて先、…、送信日）  ＶＡＬＵＥＳ  （"電文１"、"あて先１"、…、"２０１２年６月７日"）;
というＳＱＬのＩＮＳＥＲＴ文の形式に変換する。
【００２９】
ステップＳ２０６の処理として、ステップＳ２０５により変換された電文を、第１バッファ１０４に入力する。
【００３０】
なお、上述したように、モジュールが複数存在しその数に応じて、第３バッファ、第４バッファなどを電文振分装置１０１が有している場合には、ステップＳ２０２の解析に基づいて、ステップＳ２０３においては、第２バッファに入力するべきかどうかに加えて、第３バッファ、第４バッファなどにも入力するべきかどうかを判断し、ステップＳ２０４にいては、入力するべきと判断されたバッファに電文を入力する。
【００３１】
また、ステップＳ２０５およびＳ２０６の処理は、ステップＳ２０１の後の任意の時点で実行するようにすることもできる。
【００３２】
以上のように、本実施形態によれば、受信した電文をデータベースに格納し、電文が必要な部門に対応するモジュールに分離し入力を行って振り分ける処理を行うことができる。この場合、モジュールには、データベースを経由しないで入力を行って振り分けることができるので、高速に処理を行うことができる。また、データベース管理システムに障害が発生しても、電文が必要な部門に振り分ける処理を続行することが可能となる。
【００３３】
（実施形態２）
本発明の実施形態２として、受信した電文をデータベースとは別に記録することが可能な形態について説明する。
【００３４】
図５は、本発明の実施形態２に係るシステムの機能ブロック図である。システム５００は、電文振分装置５０１と、送信サーバ１０６と、通信網１０７と、データベース１０８と、モジュール１０９とを備える。なお、実施形態１と同じまたは同様の機能を有する部分には、同じ符号を用いているので、同じ符号を有する部分の説明は以下では省略する。
【００３５】
電文振分装置５０１は、受信部１０２と、分離部１０３と、第１バッファ１０４と、第２バッファ１０５と、記録部５０２とを有する。
【００３６】
記録部５０２は、受信部１０２により受信される電文を記録する。例えば、受信部１０２により電文が受信されるときのパケットの構造をそのまま記録してもよい。あるいは、受信部１０２が、受信した電文を分離部１０３に伝達するときの情報の形式として記録を行ってもよい。また、必要に応じて、受信日時などの情報を付加したり、電文のヘッダやフッタなどの情報を削除したり、形式を変更して記録を行ってもよい。
【００３７】
記録部５０２は、電文を永続的に記録するのが好ましい。このため、記録部５０２は揮発性メモリのみを用いて記録するのではなく、ハードディスクなどを用いて電磁気的あるいは光学的などの手段により電文を記録するのが好ましい。
【００３８】
図６は、本実施形態に係る電文振分装置５０１の処理の流れを説明するフローチャートである。図２に示したフローチャートの処理と同様に、ステップＳ２０１の処理として、電文を受信する。次に、ステップＳ６０１の処理として、記録部５０２に受信した電文を記録する。例えば、記録部５０２に、受信した電文を伝達し、記録部５０２に電文を記録させる。
【００３９】
図７は、記録部５０２が電文を記録するデータ構造の一例を示す。例えば、電文が受信された順序を示す「番号」の列と、受信した電文が格納される「電文」の列を有するテーブルを用いることができる。「番号」の列の代わりに、受信日時や記録日時が格納される列が用いられてもよい。
【００４０】
次のステップＳ２０２以降は図２のフローチャートと同様なので説明を省略する。
【００４１】
なお、モジュールが複数存在しその数に応じて、第３バッファ、第４バッファなどを電文振分装置５０１が有している場合には、ステップＳ２０２の解析に基づいて、ステップＳ２０３においては、第２バッファに入力するべきかどうかに加えて、第３バッファ、第４バッファなどにも入力するべきかどうかを判断し、ステップＳ２０４においては、入力するべきと判断されたバッファに電文を入力してもよいことなどは、実施形態１と同様である。
【００４２】
同様に、ステップＳ２０５およびＳ２０６は、ステップＳ２０１の後の任意の時点で実行するようにすることができることも実施形態１と同様である。
【００４３】
本実施形態においては、受信した電文をデータベース１０８に加えて記録部５０２にも記録を行うので、データの喪失にさらに備えることが可能となる。
【００４４】
（実施形態３）
本発明の実施形態３として、記録部により記録された電文を用いてデータベースを復旧することができる形態について説明する。
【００４５】
図８は、本発明の実施形態３に係るシステムの機能ブロック図である。システム８００は、電文振分装置８０１と、送信サーバ１０６と、通信網１０７と、データベース１０８と、モジュール１０９とを備える。
【００４６】
電文振分装置８０１は、受信部１０２と、分離部１０３と、第１バッファ１０４と、第２バッファ１０５と、記録部５０２と、復旧部８０２とを有する。
【００４７】
復旧部８０２は、データベース１０８が障害を起こした場合に、記録部５０２に記録された電文を用いてデータベース１０８を復旧するための部である。
【００４８】
復旧部８０２によるデータベース１０８の復旧の具体的手順の一例は、図９に示すフローチャートに示す通りである。すなわち、ステップ９０１の処理として、データベース１０８のトランザクションログなどを参照し、障害が発生したときに存在していたトランザクションのロールバックを行う。ステップＳ９０２の処理として、ロールバックされた時点以降に記録部５０２に記録された電文を求める。電文が受信された順に記録部５０２に記録されているのであれば、障害の発生以降の最初に受信され記録された電文を求め、その電文以降に記録された電文を求める。
【００４９】
ステップＳ９０３の処理として、ステップＳ９０２で求められた電文をデータベースに入力する。このとき、復旧部９０３は、分離部１０３のように、ステップＳ９０２で求められた電文を、別の形式に変換して第１バッファ１０４に電文を入力してもよい。また、復旧部８０２は、ステップＳ９０２で求められた電文を、分離部１０３が第１バッファ１０４に入力するように指定をして伝達してもよい。また、データベースに障害が発生した時点以降に、電文が第２バッファ１０５に入力されていなければ、受信部１０２が分離部１０３に電文を伝達するように、復旧部８０２は電文を分離部１０３に伝達してもよい。
【００５０】
本実施形態では、図９の処理を行っている間も、受信部１０２は電文を受信し、記録部５０２は、受信された電文を記録するようになっていてもよい。これにより、電文振分装置８０１を常時動作させることが可能となり、２４時間３６５日の金融取引などが可能となる。
【図１】
0005947622.tif 000002
【図２】
0005947622.tif 000003
【図３】
0005947622.tif 000004
【図４】
0005947622.tif 000005
【図５】
0005947622.tif 000006
【図６】
0005947622.tif 000007
【図７】
0005947622.tif 000008
【図８】
0005947622.tif 000009
【図９】
0005947622.tif 000010