特許第5748711号(P5748711)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社三菱東京UFJ銀行の特許一覧

<>
  • 特許5748711-データベースドライバおよびプログラム 図000002
  • 特許5748711-データベースドライバおよびプログラム 図000003
  • 特許5748711-データベースドライバおよびプログラム 図000004
  • 特許5748711-データベースドライバおよびプログラム 図000005
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5748711
(24)【登録日】2015年5月22日
(45)【発行日】2015年7月15日
(54)【発明の名称】データベースドライバおよびプログラム
(51)【国際特許分類】
   G06F 12/00 20060101AFI20150625BHJP
【FI】
   G06F12/00 513Z
【請求項の数】3
【全頁数】12
(21)【出願番号】特願2012-165080(P2012-165080)
(22)【出願日】2012年7月25日
(65)【公開番号】特開2014-26392(P2014-26392A)
(43)【公開日】2014年2月6日
【審査請求日】2012年7月25日
【審判番号】不服2014-10961(P2014-10961/J1)
【審判請求日】2014年6月10日
(73)【特許権者】
【識別番号】598049322
【氏名又は名称】株式会社三菱東京UFJ銀行
(74)【代理人】
【識別番号】110000408
【氏名又は名称】特許業務法人高橋・林アンドパートナーズ
(72)【発明者】
【氏名】橋本 亨
【合議体】
【審判長】 和田 志郎
【審判官】 山田 正文
【審判官】 桜井 茂行
(56)【参考文献】
【文献】 森山 徹,オープンフロント,日経オープンシステム,日本,日経BP社,1998年2月15日,第59号,p.234−239
【文献】 矢吹 洋一,バックアップ/リカバリからレプリケーション、クラスタまで オープンソースDB障害対策マニュアル,DB Magazine,日本,株式会社翔泳社,2010年 3月 1日,第19巻 第11号(通巻260号),p.042−048
【文献】 首藤 一幸,ほんとうに知りたいあなたのための key−valueストア講座,SoftwareDesign,日本,(株)技術評論社,2010年 2月18日,No.232,pp.14−21
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/00
(57)【特許請求の範囲】
【請求項1】
データベースへの操作を表すデータベースコマンドを、前記データベースの管理を行うデータベースサーバプロセスに送信するサーバであって、
前記データベースサーバプロセスに送信する前記データベースコマンドを解析して、前記データベースコマンドが前記データベースサーバプロセスに送信された場合に、前記データベースサーバプロセスにより前記データベースの特定エリアに格納されるデータの変更操作が実行されるかどうかを判定する手段と、
前記変更操作が実行されると判定した場合には、前記変更操作に基づくデータを前記データベースサーバプロセスとは異なるプロセスであり前記データベースとは異なる形式またはモデルのデータベースの管理を行うための前記プロセスに転送する手段と
を備えるサーバ。
【請求項2】
前記変更操作が実行されるかどうかを判定するときには、前記データベースコマンドが前記データベースの特定のテーブルに対するデータの追加によるものであるかどうかを判定し、
前記変更操作に基づくデータは、前記特定のテーブルに対して追加される前記データの全てまたは一部である請求項1に記載のサーバ。
【請求項3】
データベースへの操作を表すデータベースコマンドを、前記データベースの管理を行うデータベースサーバプロセスに送信するコンピュータを、
前記データベースサーバプロセスに送信する前記データベースコマンドを解析して、前記データベースコマンドが前記データベースサーバプロセスに送信された場合に、前記データベースサーバプロセスにより前記データベースの特定エリアに格納されるデータの変更操作が実行されるかどうかを判定する手段と、
前記変更操作が実行されると判定した場合には、前記変更操作に基づくデータを前記データベースサーバプロセスとは異なるプロセスであり前記データベースとは異なる形式またはモデルのデータベースの管理を行うための前記プロセスに転送する手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データベース管理システムと他のシステムとを連携させる技術に関する。
【背景技術】
【0002】
様々なデータがコンピュータシステムにより扱われるようになってきた。多くの場合、コンピュータシステムに入力されるデータは、データベース管理システムが管理するデータベースに一旦格納され、その後に、データを必要とする機器や他のシステムに送信される。データがこのようにデータベースに一旦格納される理由の一つとしては、データベースには強力なリカバリ機能が備わっていることである。これにより、障害が発生してもデータが喪失などしないようにできる。リカバリ機能が備わっているために、データベースを介してデータの配信などを確実に行うことができる。
【0003】
また、リカバリ機能に加えて、データベースには、アクセスコントロール機能も備わっており、権限の無い者に対するデータアクセスの制限の設定を柔軟に行うことが可能である。これにより、データベースを介することにより、特定の種類のデータを特定の者にだけ提供することが可能となる。また、不正なアクセスがあったかどうかの監査業務も比較的容易に遂行できる(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許第7,426,512号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
一方、証券取引業務や外国為替業務において、株価や外国為替レートなどの情報の蓄積が行われる一方、アルゴリズム取引に代表されるように、株価や外国為替レートなどの変化に応じて速やかに売買注文を行う必要も生じてきている。この場合、データベースを介して株価や外国為替レートなどの情報を配信すると、情報の配信にタイムラグが発生することがある。
【0006】
そこで、本発明の一実施形態においては、データベースを用いて情報の蓄積を行いつつ、データの配信のタイムラグをより低減することを目的とする。
【課題を解決するための手段】
【0007】
本発明の一実施形態によると、データベースへの操作を表すデータベースコマンドを、前記データベースの管理を行うデータベースサーバプロセスに送信するデータベースドライバであって、前記データベースサーバプロセスに送信する前記データベースコマンドを解析して、前記データベースコマンドが前記データベースサーバプロセスに送信された場合に、前記データベースサーバプロセスにより前記データベースの特定エリアに格納されるデータの変更操作が実行されるかどうかを判定する手段と、前記変更操作が実行されると判定した場合には、前記変更操作に基づくデータを前記データベースサーバプロセスとは異なるプロセスに転送する手段とを備えるデータベースドライバが提供される。
【0008】
本発明の一実施形態によると、データベースへの操作を表すデータベースコマンドを、前記データベースの管理を行うデータベースサーバプロセスに送信するコンピュータを、前記データベースサーバプロセスに送信する前記データベースコマンドを解析して、前記データベースコマンドが前記データベースサーバプロセスに送信された場合に、前記データベースサーバプロセスにより前記データベースの特定エリアに格納されるデータの変更操作が実行されるかどうかを判定する手段と、前記変更操作が実行されると判定した場合には、前記変更操作に基づくデータを前記データベースサーバプロセスとは異なるプロセスに転送する手段として機能させるためのプログラムが提供される。
【発明の効果】
【0009】
本発明によれば、データベースを用いて情報の蓄積を行いつつ、データの配信のタイムラグを低減することが可能となる。また、特定の形式またはモデルを有するデータベースから他の形式またはモデルのデータベースなどとのデータ更新の同期を確保することができる。
【図面の簡単な説明】
【0010】
図1】本発明の一実施形態に係るデータベースサーバ100の機能ブロック図である。
図2】本発明の一実施形態に係るデータベースコマンドを送信するときのデータベースドライバ107の処理のフローチャートである。
図3】本発明の一実施形態に係るデータベースサーバプロセス104から実行の結果を受信するときのデータベースドライバ107の処理のフローチャートである。
図4】本発明の変形例1に係るシステムの機能ブロック図である。
【発明を実施するための形態】
【0011】
以下、本発明の一実施形態に係るデータベースサーバについて、図面を参照しながら詳細に説明する。なお、以下に示す実施形態は本発明の実施形態の一例であって、本発明はこれらの実施形態に限定されるものではない。
【0012】
<実施形態>
[全体構成]
図1は、本発明の一実施形態に係るデータベースサーバ100の機能ブロック図を示す。本実施形態に係るデータベースサーバ100は、コンピュータを動作させて提供することができる。コンピュータは、ハードウェア101とカーネル空間102とユーザ空間103とを有する。
【0013】
ハードウェア101は、コンピュータの物理的実体である。ハードウェア101は、例えば、CPU、ROM、RAM、二次記憶装置、入出力インターフェースなどを備える。CPUは、プログラムを構成する命令を実行する。ROMは、読出し専用のメモリであり、コンピュータの起動時に最初に実行されるプログラムなどを格納する。コンピュータが起動すると、最初に実行されるプログラムがROMより読み出され、そのプログラムを構成する命令がCPUにより実行されることにより、コンピュータがブートする作業が開始する。RAMは、読み書きが可能なメモリであり、CPUにより実行される命令により構成されるプログラムを一時的に格納したり、プログラムの実行に必要な一時的なデータを格納したりする。二次記憶装置は、プログラムやデータを永続的に記憶するための装置である。入出力インターフェースは、プログラムなどの入出力を行ったり、プログラムの実行に伴う表示やデータの入力を行ったりするための、コンピュータ外部とのインターフェースである。
【0014】
カーネル空間102は、オペレーティングシステムが動作する記憶空間である。オペレーティングシステムは、プログラムの一種であり、ユーザ空間103に存在するプロセスにハードウェア101を抽象化して提供する機能を有する。また、オペレーティングシステムは、プロセスの管理やコンピュータの有する資源の管理も行う。
【0015】
カーネル空間102にて動作するオペレーティングシステムの提供する機能の一つとして、プロセス間通信の機能がある。プロセス間通信は、複数のプロセスが通信を行い、情報の送受信を行うための機能である。例えば、パイプ、ソケット、共有メモリ、メッセージキューなどがプロセス間通信を実装するために用いられる。
【0016】
ユーザ空間103は、カーネル空間102にて動作するオペレーティングシステムのプロセス管理の機能を用いて生成されるプロセスが存在するアドレス空間である。プロセスは、CPUモードをユーザモードにしてプログラムを実行するための単位である。これに対して、カーネル空間102は、CPUのモードをカーネルモードなどにしてプログラムを実行するためのアドレス空間である。
【0017】
プロセスは、ハードウェア101を使用する処理が生じたり、カーネル空間102の機能を使用する処理の必要が生じたりした場合には、システムコールを発行し、カーネル空間102にて動作するオペレーティングシステムに処理を依頼する。
【0018】
図1においては、ユーザ空間103に、データベースサーバプロセス104、クライアントプロセス105および受信プロセス109が示されている。クライアントプロセス105には、データベースドライバ107が組み込まれている。なお、ユーザ空間103には、これ以外のプロセスが存在していてもよい。受信プロセス109は複数存在していてもよい。
【0019】
[データベースサーバプロセス104]
データベースサーバプロセス104は、データベース管理システムを実現するためのプログラムを実行するプロセスである。すなわち、データベースに対する操作を行うプログラムを実行し、具体的には、データを所定のスキーマに従ってRAMや二次記憶装置に格納し、読出し、変更または削除を行うプログラムを実行するプロセスである。スキーマとはデータベースの構造である。例えば、リレーショナルデータベース管理システムにおいては、スキーマは、テーブルの構造を表わす情報を含む。例えば、このような情報にはテーブルの名前、テーブルを構成するフィールドの名前、データ型、索引の有無などの情報がある。また、このような情報には、テーブルなどに対するアクセス権限の状態などを表わす情報が含まれていてもよい。
【0020】
なお、本発明の実施形態においては、データベースとしては、リレーショナルデータベースに限らず、XMLデータベース、オブジェクト指向データベース、ネットワーク型データモデルを用いるデータベース、階層型データモデルを用いるデータベースなど種々のデータベースを使用することができる。
【0021】
データベースサーバプロセス104は、クライアントプロセス105から、カーネル空間102にて動作するオペレーティングシステムの提供するプロセス間通信の機能を用いて、データベースに対する操作の要求を受信し、その操作を実行した結果を返信する。例えば、クライアントプロセス105からテーブルの作成の要求を受信すると、データベースサーバプロセス104は、テーブルの作成の処理を実行しその実行の結果を返信する。その他にも、データベースサーバプロセス104は、データの追加の要求を受信するとデータをテーブルに格納する処理を実行し、検索の要求を受信するとテーブルに格納されたデータから検索の条件を満たすデータを検索する処理を実行し、データの変更の要求を受信するとテーブルに格納されたデータの変更の処理を実行し、データの削除の要求を受信するとデータの削除の処理を実行する。そして、データベースサーバプロセス104は、それぞれの処理の実行の結果を返信する。
【0022】
「実行の結果」とは、処理の実行が成功したかどうかを示す情報を含む。例えば、データの削除の要求が受信された場合、「データの削除の処理の実行の結果」は、データの削除の処理の実行が成功したかどうか、また、成功した場合には何個のデータが削除されたかを示す情報が含まれる。
【0023】
データベースサーバプロセス104は、上述したようにデータベース管理システムを実現するためのプログラムを実行するプロセスであるため、データベースに対する操作に先だって起動される。データベースサーバプロセス104は、起動の後、必要な初期化を行う。必要な初期化には、カーネル空間102にて動作するオペレーティングシステムに対して、必要なプロセス間通信を実現する要求が含まれる。また、初期化の後、データベースサーバプロセス104は、プロセス間通信によって他のプロセスからのデータベースに対する操作の要求を受信するシステムコールを発行し、待ち状態に入る。
【0024】
データベースサーバプロセス104が、クライアントプロセス105からデータベースコマンドを受信し、受信したデータベースコマンドを実行するときには、データベースコマンドの内容を二次記憶装置などのハードウェアに記録するためにシステムコールを発行する。この目的の一つは、ログを取るためである。例えば、トランザクション中においてデータベースサーバプロセス104がデータベースに対する操作を行うときに、トランザクションをロールバック可能とするためである。また、別の目的としては、障害が発生した時点以降に行われたデータベースに対する操作をデータベースに反映するために用いられる。
【0025】
[受信プロセス109]
受信プロセス109は、システムコールを発行することによりクライアントプロセス105が送信するデータを受信する。このデータは、クライアントプロセス105の一部であり、後述する転送モジュール108から送信される。受信プロセス109の一般的な例としては、データベースサーバプロセス104が管理するデータベースとはデータの格納の形式やデータモデルが異なるシステムに受信したデータを送信するプロセスを挙げることができる。
【0026】
このようなデータの格納の形式やデータモデルが異なるシステムとしては、例えば、Hadoop、Key Value Storeなどを挙げることができる。また、このようなデータの格納の形式やデータモデルが異なるシステムは、データベースサーバ100にて動作していてもよいし、データベースサーバ100と異なるサーバにて動作していてもよい。このとき、受信プロセス109は、クライアントプロセス105より送信されたデータを、Hadoop、Key Value Storeなどの送信先のシステムのデータの形式に適合するように変換を行ってから、送信先に送信してもよい。変換のルールが、データベースサーバ100の記憶装置などに記憶されている場合には、受信プロセス109は、そのルールを読み取り、読み取られたルールに従って変換を行ってデータを送信してもよい。
【0027】
なお、具体的な一例としては、クライアントプロセス105が外国為替のレート情報を受信したり、株価の情報を受信したりし、この受信した情報をデータベースサーバプロセス104へ送信する場合において、受信プロセス109がレート情報や株価の情報を用いて取引を行うプロセスにレート情報や株価の情報を配信する。また、受信プロセス109が、レート情報や株価の情報を用いて取引を行うプロセスそのものであってもよい。
【0028】
[クライアントプロセス105]
クライアントプロセス105は、クライアントモジュール106とデータベースドライバ107とを有する。クライアントモジュール106は、クライアントプロセス105のうち、データベースに対する操作を実行するためのモジュールである。クライアントモジュール106に、データベースに対する操作を行う必要が生じると、クライアントモジュール106からデータベースドライバ107の関数が呼び出されたり、メソッドが呼び出されたりする。クライアントプロセス105はデータベース操作の要求を送信する。このデータベース操作の要求は、プロセス間通信を介して、データベースドライバ107からデータベースサーバプロセス104に送信される。また、データベース操作の要求に対する処理の実行の結果がデータベースサーバプロセス104からプロセス間通信を介して送信されると、クライアントプロセス105はデータベースドライバ107を用いて受信する。
【0029】
なお、データベースドライバ107は、通常、ライブラリとして提供される。すなわち、クライアントプロセス105のプログラムがコンパイルやビルドがされるときに、組み込まれる。また、データベースドライバ107は、動的ライブラリとして提供されてもよい。この場合、クライアントプロセス105のプログラムがコンパイルやビルドがされるときに、データベースドライバ107の関数やメソッドなどの情報が組み込まれ、関数やメソッドの実体はクライアントプロセス105の実行時にユーザ空間などに展開されるようになっていてもよい。
【0030】
また、データベースドライバ107には転送モジュール108が含まれる。転送モジュール108は、データベース操作の要求に基づくデータを受信プロセス109に送信する。
【0031】
データベースサーバプロセス104がリレーショナルデータベースを管理する構成であれば、クライアントプロセス105は、SQLなどのデータベース言語を用いたデータベース操作の要求、または、データベース言語に対応する関数呼び出しなどを行うためのシステムコールを発行する。これにより、クライアントプロセス105は、プロセス間通信を介して、データベースサーバプロセス104との間で定められた通信プロトコルに基づきデータベース操作の要求を送信し、その要求に対する処理の実行の結果を受信する。
【0032】
より具体的には、クライアントプロセス105が、データベースドライバ107において、データベースに対する操作の要求を表すデータベースコマンドをデータベースサーバプロセス104に送信するためのシステムコールを発行する。これにより、カーネル空間102のプロセス間通信のモジュールが処理を開始し、データベースサーバプロセス104がデータベースコマンドを受信可能な状態となって待ち状態から走行可能な状態となる。また、クライアントプロセス105は、データベースサーバプロセス104からの返信を受信するために待ち状態に入る。
【0033】
データベースサーバプロセス104が、データベースコマンドが表わす要求を実行する処理を行うと、その処理の実行の結果を送信するためのシステムコールを発行する。これにより、カーネル空間102のプロセス間通信のモジュールが処理を開始し、クライアントプロセス105が処理の実行の結果を受信可能な状態となって待ち状態から走行可能な状態となる。
【0034】
本実施形態においては、データベースドライバ107は、上述の動作に加え、データベース操作の要求であるデータベースコマンドを解析する。この解析は、データベースサーバプロセス104によるデータベースコマンドの実行により、データベースの特定のエリアに格納されるデータの変更操作が行われるかどうかをデータベースドライバ107が予測して判定する処理である。なお、データベースドライバ107が、データベースコマンドの実行により、データベースの特定のエリアに格納されるデータの変更操作が行われるかどうかをデータベースサーバプロセス104に問い合わせ、その結果に基づいて、この判定を行ってもよい。例えば、動的SQLのPREPARE文のように、データベースサーバプロセス104によってデータ操作が行われないようなSQL文などを実行して、このような問い合わせが行われてもよい。
【0035】
データベースドライバ107は、データベースの特定のエリアに格納されるデータの変更操作が行われたと判定した場合には、データベースコマンドに基づいて変更後のデータを求め、変更後のデータを転送モジュール108に渡す。転送モジュール108は、データベースドライバ107から渡された変更後のデータを受信プロセス109に転送する。
【0036】
なお、データベースドライバ107によってデータベースの特定のエリアに格納されるデータの変更操作が行われたと判定される場合として、予め定められた条件を満たす場合としてもよい。例えば、データベースがリレーショナルデータベースであれば、この「予め定められた条件」を満たす場合として、特定のテーブルに対して変更の操作が行われること、また、特定の行データの特定のカラムに対して変更の操作が行われることなどとすればよい。具体的には、前者としては特定のテーブルに行データが追加されることや特定のテーブルの行データが削除されることなどが挙げられ、後者としては特定のテーブルに格納されている行データの一部が変更されることなどが挙げられる。
【0037】
また、この「予め定められた条件」は、受信プロセス109またはデータベースサーバプロセス104により設定されてもよい。
【0038】
[データの送信例]
以下では、INSERT文とUPDATE文とがデータベースサーバ100において実行される場合について説明する。例えば、列としてC1、C2およびC3を有するテーブルRにデータ(V1,V2,V3)が追加される場合に、クライアントプロセス105は、
INSERT INTO R(C1,C2,C3) VALUES (V1,V2,V3);
というSQL文あるいはそれに相当する関数を実行することになる。この場合、このSQL文を表わすデータベースコマンドが、クライアントモジュール106から送信され、データベースドライバ107およびプロセス間通信を介して、データベースサーバプロセス104へ送信される。
【0039】
データベースサーバプロセス104は、上記のINSERT文を表わすデータベースコマンドを受信すると、テーブルRにデータ(V1,V2,V3)を追加するとともに、テーブルRにデータ(V1,V2,V3)が追加されるという変更の内容を書き込むためのシステムコールを発行する。
【0040】
一方、「データベースの特定エリアに格納されるデータ」が、テーブルRに追加されたデータとして設定されている場合には、データベースドライバ107は、クライアントモジュール106から送信されたデータベースコマンドが、テーブルRに対するデータの追加を表していると判定し、(V1,V2,V3)というデータを転送モジュール108に渡す。転送モジュール108は、渡された(V1,V2,V3)というデータを受信プロセス109に転送する。このとき、INSERT文により追加されたデータを特定できるようにするために、主キーの値が含まれていてもよい。
【0041】
なお、データベースドライバ107は、(V1,V2,V3)というデータを転送モジュール108に渡す代わりに、V1、V2およびV3の一部を転送モジュール108に渡してもよい。この場合には、V1、V2およびV3の一部が受信プロセス109に転送される。また、データベースドライバ107は、判定を行った時刻などの時刻データなどの付加データを、上記のようにして送信するデータに付加してもよい。
【0042】
また、テーブルRの列C1が主キーの列であれば、データベースドライバ107は、主キーの列の値であるV1を記憶することもできる。このようにすることにより、テーブルRのもっとも最近にテーブルに追加されたデータは、C1の値がV1であることにより特定される。このとき、クライアントプロセス105が、
UPDATE R SET C2=V4,C3=V5 WHERE C1=V1;
というSQL文あるいはそれに相当する関数を実行したとすると、データベースサーバプロセス104は、これに対応するSQLコマンドを実行するとともに、データの変更後のデータを表わす(V1,V4,V5)の値を書き込むためのシステムコールを発行する。
【0043】
一方、データベースドライバ107は、テーブルRのデータのうち列の値がV1である行に対する変更を表わしていると判定し、変更後のデータである(V1、V4、V5)を求め、(V1、V4、V5)というデータを転送モジュール108に渡す。転送モジュール108は、渡された(V1,V4,V5)というデータを受信プロセス109に転送する。このとき、INSERT文により追加されたデータを特定できるようにするために、主キーの値が含まれていてもよい。
【0044】
なお、データベースドライバ107は、(V1,V4,V5)というデータを転送モジュール108に渡す代わりに、V4およびV5の一部またはすべてを転送モジュール108に渡してもよい。この場合には、V4およびV5の一部またはすべてが受信プロセス109に転送される。また、データベースドライバ107は、判断を行った時刻などの時刻データなどの付加データを、上記のようにして送信するデータに付加してもよい。
【0045】
[データベースドライバ107の動作]
続いて、データベースドライバ107の処理について、データベースサーバプロセス104へデータベースコマンドを送信する場合と、データベースサーバプロセス104から実行の結果を受信する場合とに分けて説明する。まず、データベースサーバプロセス104へデータベースコマンドを送信する場合のデータベースドライバ107の処理について説明する。
【0046】
図2は、本発明の一実施形態に係るデータベースコマンドを送信するときのデータベースドライバ107の処理のフローチャートである。まず、データベースドライバ107は、クライアントモジュール106からデータベースコマンドが送信されるのを待つ(ステップS110;No)。クライアントモジュール106からデータベースコマンドが送信されると(ステップS110;Yes)、データベースドライバ107は、データベースコマンドを解析し、特定のテーブルに対するデータ操作を表わしているかどうかを判定する(ステップS120)。なお、ここでは、「データベースの特定エリアに格納されるデータ」であるかどうかの判定をする例として「特定のテーブルに対するデータ操作が行われる」かの判定として説明している。
【0047】
解析したデータベースコマンドが特定のテーブルに対するデータ操作を表している場合(ステップS120;Yes)には、データベースドライバ107は、データ操作後のデータを求める(ステップS130)。転送モジュール108は、データベースドライバ107が求めたデータが渡され、渡されたデータを受信プロセス109に転送する(ステップS140)。
【0048】
続いて、ステップS140の処理の後、または、ステップS120において解析したデータベースコマンドが特定のテーブルに対するデータ操作を表していない場合(ステップS120;No)には、データベースドライバ107は、データベースサーバプロセス105へデータベースコマンドを送信する(ステップS150)。データベースドライバ107は、図2に示す処理を終了する指示がない場合(ステップS160;No)には、ステップS110に戻って処理を続け、図2に示す処理を終了する指示があった場合(ステップS160;Yes)には、処理を終了する。
【0049】
続いて、データベースサーバプロセス104から実行の結果を受信する場合のデータベースドライバ107の処理について説明する。
【0050】
図3は、本発明の一実施形態に係るデータベースサーバプロセス104から実行の結果を受信するときのデータベースドライバ107の処理のフローチャートである。まず、データベースドライバ107は、データベースサーバプロセス104からデータベースコマンドの処理の実行の結果が送信されるのを待つ(ステップS210;No)。実行の結果が送信されると(ステップS210;Yes)、データベースドライバ107は、データベースコマンドの処理の実行の結果をクライアントモジュール106へ送信する(ステップS220)。データベースドライバ107は、図3に示す処理を終了する指示がない場合(ステップS230;No)には、ステップS210に戻って処理を続け、図3に示す処理を終了する指示があった場合(ステップS230;Yes)には、処理を終了する。
【0051】
このように、本実施形態に係るデータベースサーバ100においては、クライアントプロセス105におけるデータベースドライバ107がクライアントモジュール106から送信されたデータベースコマンドを解析し、データベースの特定のエリアに格納されるデータが変更されると判定した場合には、変更後のデータを求め、変更後のデータを転送モジュール109に渡し、受信プロセス109において受信できるように構成している。これにより、受信プロセス109は、データベースサーバプロセス104がデータをデータベースに格納するのを待たなくてもデータを得ることができ、データ配信のタイムラグを低減することができる。また、配信されるデータを受信プロセス109またはデータベースドライバ107により変換することも可能である。
【0052】
<変形例>
以上、本発明の実施形態およびその実施例について説明したが、本発明は以下のように、様々な態様で実施可能である。
【0053】
[変形例1]
上述した実施形態においては、データベースサーバ100は、1台のコンピュータにより実現されていたが、複数台のコンピュータにより実現されてもよい。例えば、図4に示すように2台のコンピュータにより実現されてもよい。
【0054】
図4は、本発明の変形例1に係るシステムの機能ブロック図である。図4に示す例では、ハードウェア701とカーネル空間702とユーザ空間703とを有する第1のコンピュータ700Aと、ハードウェア711とカーネル空間712とユーザ空間713とを有する第2のコンピュータ700Bとを用いて本発明を実施することができる。この場合、第1のコンピュータ700Aのユーザ空間703においてデータベースサーバプロセス704が動作し、第2のコンピュータ700Bのユーザ空間713においてクライアントプロセス705および受信プロセス709が動作してもよい。変形例1における各プロセスの機能は、実施形態における各プロセスの機能と同様である。
【0055】
クライアントプロセス705からデータベースサーバプロセス704に送信されるデータベースコマンドは、第2のコンピュータ700Bのカーネル空間712、ハードウェア711、通信網800、第1のコンピュータ700Aのハードウェア701、カーネル空間702を介してクライアントプロセス705からデータベースサーバプロセス704に送信される。
【0056】
データベースサーバプロセス704からクライアントプロセス705に送信されるデータベースコマンドの処理の実行の結果は、データベースコマンドとは逆に、第1のコンピュータ700Aのカーネル空間702、ハードウェア701、通信網800、第2のコンピュータ700Bのハードウェア711、カーネル空間712を介してデータベースサーバプロセス704からクライアントプロセス705に送信される。
【符号の説明】
【0057】
100…データベースサーバ、101,701,711…ハードウェア、102,702,712…カーネル空間、103,703,713…ユーザ空間、104,704…データベースサーバ、105,705…クライアントプロセス、106,706…クライアントモジュール、107,707…データベースドライバ、108,708…転送モジュール、109,709…受信プロセス、700A…第1のコンピュータ、700B…第2のコンピュータ、800…通信網
図1
図2
図3
図4