(57)【要約】【課題】データベースを用いて情報の蓄積を行いつつ、データの配信のタイムラグを低減すること。【解決手段】本発明のデータベースドライバは、データベースへの操作を表すデータベースコマンドを、前記データベースの管理を行うデータベースサーバプロセスに送信するデータベースドライバであって、前記データベースサーバプロセスに送信する前記データベースコマンドを解析して、前記データベースコマンドが前記データベースサーバプロセスに送信された場合に、前記データベースサーバプロセスにより前記データベースの特定エリアに格納されるデータの変更操作が実行されるかどうかを判定する手段と、前記変更操作が実行されると判定した場合には、前記変更操作に基づくデータを前記データベースサーバプロセスとは異なるプロセスに転送する手段とを備える。【選択図】図２
2014026392.tif 000002
【特許請求の範囲】
【請求項１】
データベースへの操作を表すデータベースコマンドを、前記データベースの管理を行うデータベースサーバプロセスに送信するデータベースドライバであって、
前記データベースサーバプロセスに送信する前記データベースコマンドを解析して、前記データベースコマンドが前記データベースサーバプロセスに送信された場合に、前記データベースサーバプロセスにより前記データベースの特定エリアに格納されるデータの変更操作が実行されるかどうかを判定する手段と、
前記変更操作が実行されると判定した場合には、前記変更操作に基づくデータを前記データベースサーバプロセスとは異なるプロセスに転送する手段と
を備えるデータベースドライバ。
【請求項２】
前記変更操作が実行されるかどうかを判定するときには、前記データベースコマンドが前記データベースの特定のテーブルに対するデータの追加によるものであるかどうかを判定し、
前記変更操作に基づくデータは、前記特定のテーブルに対して追加される前記データの全てまたは一部である請求項１に記載のデータベースドライバ。
【請求項３】
前記特定のテーブルに対して追加された主キーの値を記憶し、
前記変更操作が実行されるかどうかを判定するときには、記憶された前記主キーにより特定される前記特定のテーブルのデータの変更操作が実行されるかどうかを判定し、
前記変更操作に基づくデータは、前記変更操作が実行された後の値である請求項２に記載のデータベースドライバ。
【請求項４】
データベースへの操作を表すデータベースコマンドを、前記データベースの管理を行うデータベースサーバプロセスに送信するコンピュータを、
前記データベースサーバプロセスに送信する前記データベースコマンドを解析して、前記データベースコマンドが前記データベースサーバプロセスに送信された場合に、前記データベースサーバプロセスにより前記データベースの特定エリアに格納されるデータの変更操作が実行されるかどうかを判定する手段と、
前記変更操作が実行されると判定した場合には、前記変更操作に基づくデータを前記データベースサーバプロセスとは異なるプロセスに転送する手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース管理システムと他のシステムとを連携させる技術に関する。
【背景技術】
【０００２】
様々なデータがコンピュータシステムにより扱われるようになってきた。多くの場合、コンピュータシステムに入力されるデータは、データベース管理システムが管理するデータベースに一旦格納され、その後に、データを必要とする機器や他のシステムに送信される。データがこのようにデータベースに一旦格納される理由の一つとしては、データベースには強力なリカバリ機能が備わっていることである。これにより、障害が発生してもデータが喪失などしないようにできる。リカバリ機能が備わっているために、データベースを介してデータの配信などを確実に行うことができる。
【０００３】
また、リカバリ機能に加えて、データベースには、アクセスコントロール機能も備わっており、権限の無い者に対するデータアクセスの制限の設定を柔軟に行うことが可能である。これにより、データベースを介することにより、特定の種類のデータを特定の者にだけ提供することが可能となる。また、不正なアクセスがあったかどうかの監査業務も比較的容易に遂行できる（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第７，４２６，５１２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一方、証券取引業務や外国為替業務において、株価や外国為替レートなどの情報の蓄積が行われる一方、アルゴリズム取引に代表されるように、株価や外国為替レートなどの変化に応じて速やかに売買注文を行う必要も生じてきている。この場合、データベースを介して株価や外国為替レートなどの情報を配信すると、情報の配信にタイムラグが発生することがある。
【０００６】
そこで、本発明の一実施形態においては、データベースを用いて情報の蓄積を行いつつ、データの配信のタイムラグをより低減することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一実施形態によると、データベースへの操作を表すデータベースコマンドを、前記データベースの管理を行うデータベースサーバプロセスに送信するデータベースドライバであって、前記データベースサーバプロセスに送信する前記データベースコマンドを解析して、前記データベースコマンドが前記データベースサーバプロセスに送信された場合に、前記データベースサーバプロセスにより前記データベースの特定エリアに格納されるデータの変更操作が実行されるかどうかを判定する手段と、前記変更操作が実行されると判定した場合には、前記変更操作に基づくデータを前記データベースサーバプロセスとは異なるプロセスに転送する手段とを備えるデータベースドライバが提供される。
【０００８】
本発明の一実施形態によると、データベースへの操作を表すデータベースコマンドを、前記データベースの管理を行うデータベースサーバプロセスに送信するコンピュータを、前記データベースサーバプロセスに送信する前記データベースコマンドを解析して、前記データベースコマンドが前記データベースサーバプロセスに送信された場合に、前記データベースサーバプロセスにより前記データベースの特定エリアに格納されるデータの変更操作が実行されるかどうかを判定する手段と、前記変更操作が実行されると判定した場合には、前記変更操作に基づくデータを前記データベースサーバプロセスとは異なるプロセスに転送する手段として機能させるためのプログラムが提供される。
【発明の効果】
【０００９】
本発明によれば、データベースを用いて情報の蓄積を行いつつ、データの配信のタイムラグを低減することが可能となる。また、特定の形式またはモデルを有するデータベースから他の形式またはモデルのデータベースなどとのデータ更新の同期を確保することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施形態に係るデータベースサーバ１００の機能ブロック図である。
【図２】本発明の一実施形態に係るデータベースコマンドを送信するときのデータベースドライバ１０７の処理のフローチャートである。
【図３】本発明の一実施形態に係るデータベースサーバプロセス１０４から実行の結果を受信するときのデータベースドライバ１０７の処理のフローチャートである。
【図４】本発明の変形例１に係るシステムの機能ブロック図である。
【発明を実施するための形態】
【００１１】
以下、本発明の一実施形態に係るデータベースサーバについて、図面を参照しながら詳細に説明する。なお、以下に示す実施形態は本発明の実施形態の一例であって、本発明はこれらの実施形態に限定されるものではない。
【００１２】
＜実施形態＞
［全体構成］
図１は、本発明の一実施形態に係るデータベースサーバ１００の機能ブロック図を示す。本実施形態に係るデータベースサーバ１００は、コンピュータを動作させて提供することができる。コンピュータは、ハードウェア１０１とカーネル空間１０２とユーザ空間１０３とを有する。
【００１３】
ハードウェア１０１は、コンピュータの物理的実体である。ハードウェア１０１は、例えば、ＣＰＵ、ＲＯＭ、ＲＡＭ、二次記憶装置、入出力インターフェースなどを備える。ＣＰＵは、プログラムを構成する命令を実行する。ＲＯＭは、読出し専用のメモリであり、コンピュータの起動時に最初に実行されるプログラムなどを格納する。コンピュータが起動すると、最初に実行されるプログラムがＲＯＭより読み出され、そのプログラムを構成する命令がＣＰＵにより実行されることにより、コンピュータがブートする作業が開始する。ＲＡＭは、読み書きが可能なメモリであり、ＣＰＵにより実行される命令により構成されるプログラムを一時的に格納したり、プログラムの実行に必要な一時的なデータを格納したりする。二次記憶装置は、プログラムやデータを永続的に記憶するための装置である。入出力インターフェースは、プログラムなどの入出力を行ったり、プログラムの実行に伴う表示やデータの入力を行ったりするための、コンピュータ外部とのインターフェースである。
【００１４】
カーネル空間１０２は、オペレーティングシステムが動作する記憶空間である。オペレーティングシステムは、プログラムの一種であり、ユーザ空間１０３に存在するプロセスにハードウェア１０１を抽象化して提供する機能を有する。また、オペレーティングシステムは、プロセスの管理やコンピュータの有する資源の管理も行う。
【００１５】
カーネル空間１０２にて動作するオペレーティングシステムの提供する機能の一つとして、プロセス間通信の機能がある。プロセス間通信は、複数のプロセスが通信を行い、情報の送受信を行うための機能である。例えば、パイプ、ソケット、共有メモリ、メッセージキューなどがプロセス間通信を実装するために用いられる。
【００１６】
ユーザ空間１０３は、カーネル空間１０２にて動作するオペレーティングシステムのプロセス管理の機能を用いて生成されるプロセスが存在するアドレス空間である。プロセスは、ＣＰＵモードをユーザモードにしてプログラムを実行するための単位である。これに対して、カーネル空間１０２は、ＣＰＵのモードをカーネルモードなどにしてプログラムを実行するためのアドレス空間である。
【００１７】
プロセスは、ハードウェア１０１を使用する処理が生じたり、カーネル空間１０２の機能を使用する処理の必要が生じたりした場合には、システムコールを発行し、カーネル空間１０２にて動作するオペレーティングシステムに処理を依頼する。
【００１８】
図１においては、ユーザ空間１０３に、データベースサーバプロセス１０４、クライアントプロセス１０５および受信プロセス１０９が示されている。クライアントプロセス１０５には、データベースドライバ１０７が組み込まれている。なお、ユーザ空間１０３には、これ以外のプロセスが存在していてもよい。受信プロセス１０９は複数存在していてもよい。
【００１９】
［データベースサーバプロセス１０４］
データベースサーバプロセス１０４は、データベース管理システムを実現するためのプログラムを実行するプロセスである。すなわち、データベースに対する操作を行うプログラムを実行し、具体的には、データを所定のスキーマに従ってＲＡＭや二次記憶装置に格納し、読出し、変更または削除を行うプログラムを実行するプロセスである。スキーマとはデータベースの構造である。例えば、リレーショナルデータベース管理システムにおいては、スキーマは、テーブルの構造を表わす情報を含む。例えば、このような情報にはテーブルの名前、テーブルを構成するフィールドの名前、データ型、索引の有無などの情報がある。また、このような情報には、テーブルなどに対するアクセス権限の状態などを表わす情報が含まれていてもよい。
【００２０】
なお、本発明の実施形態においては、データベースとしては、リレーショナルデータベースに限らず、ＸＭＬデータベース、オブジェクト指向データベース、ネットワーク型データモデルを用いるデータベース、階層型データモデルを用いるデータベースなど種々のデータベースを使用することができる。
【００２１】
データベースサーバプロセス１０４は、クライアントプロセス１０５から、カーネル空間１０２にて動作するオペレーティングシステムの提供するプロセス間通信の機能を用いて、データベースに対する操作の要求を受信し、その操作を実行した結果を返信する。例えば、クライアントプロセス１０５からテーブルの作成の要求を受信すると、データベースサーバプロセス１０４は、テーブルの作成の処理を実行しその実行の結果を返信する。その他にも、データベースサーバプロセス１０４は、データの追加の要求を受信するとデータをテーブルに格納する処理を実行し、検索の要求を受信するとテーブルに格納されたデータから検索の条件を満たすデータを検索する処理を実行し、データの変更の要求を受信するとテーブルに格納されたデータの変更の処理を実行し、データの削除の要求を受信するとデータの削除の処理を実行する。そして、データベースサーバプロセス１０４は、それぞれの処理の実行の結果を返信する。
【００２２】
「実行の結果」とは、処理の実行が成功したかどうかを示す情報を含む。例えば、データの削除の要求が受信された場合、「データの削除の処理の実行の結果」は、データの削除の処理の実行が成功したかどうか、また、成功した場合には何個のデータが削除されたかを示す情報が含まれる。
【００２３】
データベースサーバプロセス１０４は、上述したようにデータベース管理システムを実現するためのプログラムを実行するプロセスであるため、データベースに対する操作に先だって起動される。データベースサーバプロセス１０４は、起動の後、必要な初期化を行う。必要な初期化には、カーネル空間１０２にて動作するオペレーティングシステムに対して、必要なプロセス間通信を実現する要求が含まれる。また、初期化の後、データベースサーバプロセス１０４は、プロセス間通信によって他のプロセスからのデータベースに対する操作の要求を受信するシステムコールを発行し、待ち状態に入る。
【００２４】
データベースサーバプロセス１０４が、クライアントプロセス１０５からデータベースコマンドを受信し、受信したデータベースコマンドを実行するときには、データベースコマンドの内容を二次記憶装置などのハードウェアに記録するためにシステムコールを発行する。この目的の一つは、ログを取るためである。例えば、トランザクション中においてデータベースサーバプロセス１０４がデータベースに対する操作を行うときに、トランザクションをロールバック可能とするためである。また、別の目的としては、障害が発生した時点以降に行われたデータベースに対する操作をデータベースに反映するために用いられる。
【００２５】
［受信プロセス１０９］
受信プロセス１０９は、システムコールを発行することによりクライアントプロセス１０５が送信するデータを受信する。このデータは、クライアントプロセス１０５の一部であり、後述する転送モジュール１０８から送信される。受信プロセス１０９の一般的な例としては、データベースサーバプロセス１０４が管理するデータベースとはデータの格納の形式やデータモデルが異なるシステムに受信したデータを送信するプロセスを挙げることができる。
【００２６】
このようなデータの格納の形式やデータモデルが異なるシステムとしては、例えば、Ｈａｄｏｏｐ、Ｋｅｙ  Ｖａｌｕｅ  Ｓｔｏｒｅなどを挙げることができる。また、このようなデータの格納の形式やデータモデルが異なるシステムは、データベースサーバ１００にて動作していてもよいし、データベースサーバ１００と異なるサーバにて動作していてもよい。このとき、受信プロセス１０９は、クライアントプロセス１０５より送信されたデータを、Ｈａｄｏｏｐ、Ｋｅｙ  Ｖａｌｕｅ  Ｓｔｏｒｅなどの送信先のシステムのデータの形式に適合するように変換を行ってから、送信先に送信してもよい。変換のルールが、データベースサーバ１００の記憶装置などに記憶されている場合には、受信プロセス１０９は、そのルールを読み取り、読み取られたルールに従って変換を行ってデータを送信してもよい。
【００２７】
なお、具体的な一例としては、クライアントプロセス１０５が外国為替のレート情報を受信したり、株価の情報を受信したりし、この受信した情報をデータベースサーバプロセス１０４へ送信する場合において、受信プロセス１０９がレート情報や株価の情報を用いて取引を行うプロセスにレート情報や株価の情報を配信する。また、受信プロセス１０９が、レート情報や株価の情報を用いて取引を行うプロセスそのものであってもよい。
【００２８】
［クライアントプロセス１０５］
クライアントプロセス１０５は、クライアントモジュール１０６とデータベースドライバ１０７とを有する。クライアントモジュール１０６は、クライアントプロセス１０５のうち、データベースに対する操作を実行するためのモジュールである。クライアントモジュール１０６に、データベースに対する操作を行う必要が生じると、クライアントモジュール１０６からデータベースドライバ１０７の関数が呼び出されたり、メソッドが呼び出されたりする。クライアントプロセス１０５はデータベース操作の要求を送信する。このデータベース操作の要求は、プロセス間通信を介して、データベースドライバ１０７からデータベースサーバプロセス１０４に送信される。また、データベース操作の要求に対する処理の実行の結果がデータベースサーバプロセス１０４からプロセス間通信を介して送信されると、クライアントプロセス１０５はデータベースドライバ１０７を用いて受信する。
【００２９】
なお、データベースドライバ１０７は、通常、ライブラリとして提供される。すなわち、クライアントプロセス１０５のプログラムがコンパイルやビルドがされるときに、組み込まれる。また、データベースドライバ１０７は、動的ライブラリとして提供されてもよい。この場合、クライアントプロセス１０５のプログラムがコンパイルやビルドがされるときに、データベースドライバ１０７の関数やメソッドなどの情報が組み込まれ、関数やメソッドの実体はクライアントプロセス１０５の実行時にユーザ空間などに展開されるようになっていてもよい。
【００３０】
また、データベースドライバ１０７には転送モジュール１０８が含まれる。転送モジュール１０８は、データベース操作の要求に基づくデータを受信プロセス１０９に送信する。
【００３１】
データベースサーバプロセス１０４がリレーショナルデータベースを管理する構成であれば、クライアントプロセス１０５は、ＳＱＬなどのデータベース言語を用いたデータベース操作の要求、または、データベース言語に対応する関数呼び出しなどを行うためのシステムコールを発行する。これにより、クライアントプロセス１０５は、プロセス間通信を介して、データベースサーバプロセス１０４との間で定められた通信プロトコルに基づきデータベース操作の要求を送信し、その要求に対する処理の実行の結果を受信する。
【００３２】
より具体的には、クライアントプロセス１０５が、データベースドライバ１０７において、データベースに対する操作の要求を表すデータベースコマンドをデータベースサーバプロセス１０４に送信するためのシステムコールを発行する。これにより、カーネル空間１０２のプロセス間通信のモジュールが処理を開始し、データベースサーバプロセス１０４がデータベースコマンドを受信可能な状態となって待ち状態から走行可能な状態となる。また、クライアントプロセス１０５は、データベースサーバプロセス１０４からの返信を受信するために待ち状態に入る。
【００３３】
データベースサーバプロセス１０４が、データベースコマンドが表わす要求を実行する処理を行うと、その処理の実行の結果を送信するためのシステムコールを発行する。これにより、カーネル空間１０２のプロセス間通信のモジュールが処理を開始し、クライアントプロセス１０５が処理の実行の結果を受信可能な状態となって待ち状態から走行可能な状態となる。
【００３４】
本実施形態においては、データベースドライバ１０７は、上述の動作に加え、データベース操作の要求であるデータベースコマンドを解析する。この解析は、データベースサーバプロセス１０４によるデータベースコマンドの実行により、データベースの特定のエリアに格納されるデータの変更操作が行われるかどうかをデータベースドライバ１０７が予測して判定する処理である。なお、データベースドライバ１０７が、データベースコマンドの実行により、データベースの特定のエリアに格納されるデータの変更操作が行われるかどうかをデータベースサーバプロセス１０４に問い合わせ、その結果に基づいて、この判定を行ってもよい。例えば、動的ＳＱＬのＰＲＥＰＡＲＥ文のように、データベースサーバプロセス１０４によってデータ操作が行われないようなＳＱＬ文などを実行して、このような問い合わせが行われてもよい。
【００３５】
データベースドライバ１０７は、データベースの特定のエリアに格納されるデータの変更操作が行われたと判定した場合には、データベースコマンドに基づいて変更後のデータを求め、変更後のデータを転送モジュール１０８に渡す。転送モジュール１０８は、データベースドライバ１０７から渡された変更後のデータを受信プロセス１０９に転送する。
【００３６】
なお、データベースドライバ１０７によってデータベースの特定のエリアに格納されるデータの変更操作が行われたと判定される場合として、予め定められた条件を満たす場合としてもよい。例えば、データベースがリレーショナルデータベースであれば、この「予め定められた条件」を満たす場合として、特定のテーブルに対して変更の操作が行われること、また、特定の行データの特定のカラムに対して変更の操作が行われることなどとすればよい。具体的には、前者としては特定のテーブルに行データが追加されることや特定のテーブルの行データが削除されることなどが挙げられ、後者としては特定のテーブルに格納されている行データの一部が変更されることなどが挙げられる。
【００３７】
また、この「予め定められた条件」は、受信プロセス１０９またはデータベースサーバプロセス１０４により設定されてもよい。
【００３８】
［データの送信例］
以下では、ＩＮＳＥＲＴ文とＵＰＤＡＴＥ文とがデータベースサーバ１００において実行される場合について説明する。例えば、列としてＣ１、Ｃ２およびＣ３を有するテーブルＲにデータ（Ｖ１，Ｖ２，Ｖ３）が追加される場合に、クライアントプロセス１０５は、
ＩＮＳＥＲＴ  ＩＮＴＯ  Ｒ（Ｃ１，Ｃ２，Ｃ３）  ＶＡＬＵＥＳ  （Ｖ１，Ｖ２，Ｖ３）；
というＳＱＬ文あるいはそれに相当する関数を実行することになる。この場合、このＳＱＬ文を表わすデータベースコマンドが、クライアントモジュール１０６から送信され、データベースドライバ１０７およびプロセス間通信を介して、データベースサーバプロセス１０４へ送信される。
【００３９】
データベースサーバプロセス１０４は、上記のＩＮＳＥＲＴ文を表わすデータベースコマンドを受信すると、テーブルＲにデータ（Ｖ１，Ｖ２，Ｖ３）を追加するとともに、テーブルＲにデータ（Ｖ１，Ｖ２，Ｖ３）が追加されるという変更の内容を書き込むためのシステムコールを発行する。
【００４０】
一方、「データベースの特定エリアに格納されるデータ」が、テーブルＲに追加されたデータとして設定されている場合には、データベースドライバ１０７は、クライアントモジュール１０６から送信されたデータベースコマンドが、テーブルＲに対するデータの追加を表していると判定し、（Ｖ１，Ｖ２，Ｖ３）というデータを転送モジュール１０８に渡す。転送モジュール１０８は、渡された（Ｖ１，Ｖ２，Ｖ３）というデータを受信プロセス１０９に転送する。このとき、ＩＮＳＥＲＴ文により追加されたデータを特定できるようにするために、主キーの値が含まれていてもよい。
【００４１】
なお、データベースドライバ１０７は、（Ｖ１，Ｖ２，Ｖ３）というデータを転送モジュール１０８に渡す代わりに、Ｖ１、Ｖ２およびＶ３の一部を転送モジュール１０８に渡してもよい。この場合には、Ｖ１、Ｖ２およびＶ３の一部が受信プロセス１０９に転送される。また、データベースドライバ１０７は、判定を行った時刻などの時刻データなどの付加データを、上記のようにして送信するデータに付加してもよい。
【００４２】
また、テーブルＲの列Ｃ１が主キーの列であれば、データベースドライバ１０７は、主キーの列の値であるＶ１を記憶することもできる。このようにすることにより、テーブルＲのもっとも最近にテーブルに追加されたデータは、Ｃ１の値がＶ１であることにより特定される。このとき、クライアントプロセス１０５が、
ＵＰＤＡＴＥ  Ｒ  ＳＥＴ  Ｃ２＝Ｖ４，Ｃ３＝Ｖ５  ＷＨＥＲＥ  Ｃ１＝Ｖ１；
というＳＱＬ文あるいはそれに相当する関数を実行したとすると、データベースサーバプロセス１０４は、これに対応するＳＱＬコマンドを実行するとともに、データの変更後のデータを表わす（Ｖ１，Ｖ４，Ｖ５）の値を書き込むためのシステムコールを発行する。
【００４３】
一方、データベースドライバ１０７は、テーブルＲのデータのうち列の値がＶ１である行に対する変更を表わしていると判定し、変更後のデータである（Ｖ１、Ｖ４、Ｖ５）を求め、（Ｖ１、Ｖ４、Ｖ５）というデータを転送モジュール１０８に渡す。転送モジュール１０８は、渡された（Ｖ１，Ｖ４，Ｖ５）というデータを受信プロセス１０９に転送する。このとき、ＩＮＳＥＲＴ文により追加されたデータを特定できるようにするために、主キーの値が含まれていてもよい。
【００４４】
なお、データベースドライバ１０７は、（Ｖ１，Ｖ４，Ｖ５）というデータを転送モジュール１０８に渡す代わりに、Ｖ４およびＶ５の一部またはすべてを転送モジュール１０８に渡してもよい。この場合には、Ｖ４およびＶ５の一部またはすべてが受信プロセス１０９に転送される。また、データベースドライバ１０７は、判断を行った時刻などの時刻データなどの付加データを、上記のようにして送信するデータに付加してもよい。
【００４５】
［データベースドライバ１０７の動作］
続いて、データベースドライバ１０７の処理について、データベースサーバプロセス１０４へデータベースコマンドを送信する場合と、データベースサーバプロセス１０４から実行の結果を受信する場合とに分けて説明する。まず、データベースサーバプロセス１０４へデータベースコマンドを送信する場合のデータベースドライバ１０７の処理について説明する。
【００４６】
図２は、本発明の一実施形態に係るデータベースコマンドを送信するときのデータベースドライバ１０７の処理のフローチャートである。まず、データベースドライバ１０７は、クライアントモジュール１０６からデータベースコマンドが送信されるのを待つ（ステップＳ１１０；Ｎｏ）。クライアントモジュール１０６からデータベースコマンドが送信されると（ステップＳ１１０；Ｙｅｓ）、データベースドライバ１０７は、データベースコマンドを解析し、特定のテーブルに対するデータ操作を表わしているかどうかを判定する（ステップＳ１２０）。なお、ここでは、「データベースの特定エリアに格納されるデータ」であるかどうかの判定をする例として「特定のテーブルに対するデータ操作が行われる」かの判定として説明している。
【００４７】
解析したデータベースコマンドが特定のテーブルに対するデータ操作を表している場合（ステップＳ１２０；Ｙｅｓ）には、データベースドライバ１０７は、データ操作後のデータを求める（ステップＳ１３０）。転送モジュール１０８は、データベースドライバ１０７が求めたデータが渡され、渡されたデータを受信プロセス１０９に転送する（ステップＳ１４０）。
【００４８】
続いて、ステップＳ１４０の処理の後、または、ステップＳ１２０において解析したデータベースコマンドが特定のテーブルに対するデータ操作を表していない場合（ステップＳ１２０；Ｎｏ）には、データベースドライバ１０７は、データベースサーバプロセス１０５へデータベースコマンドを送信する（ステップＳ１５０）。データベースドライバ１０７は、図２に示す処理を終了する指示がない場合（ステップＳ１６０；Ｎｏ）には、ステップＳ１１０に戻って処理を続け、図２に示す処理を終了する指示があった場合（ステップＳ１６０；Ｙｅｓ）には、処理を終了する。
【００４９】
続いて、データベースサーバプロセス１０４から実行の結果を受信する場合のデータベースドライバ１０７の処理について説明する。
【００５０】
図３は、本発明の一実施形態に係るデータベースサーバプロセス１０４から実行の結果を受信するときのデータベースドライバ１０７の処理のフローチャートである。まず、データベースドライバ１０７は、データベースサーバプロセス１０４からデータベースコマンドの処理の実行の結果が送信されるのを待つ（ステップＳ２１０；Ｎｏ）。実行の結果が送信されると（ステップＳ２１０；Ｙｅｓ）、データベースドライバ１０７は、データベースコマンドの処理の実行の結果をクライアントモジュール１０６へ送信する（ステップＳ２２０）。データベースドライバ１０７は、図３に示す処理を終了する指示がない場合（ステップＳ２３０；Ｎｏ）には、ステップＳ２１０に戻って処理を続け、図３に示す処理を終了する指示があった場合（ステップＳ２３０；Ｙｅｓ）には、処理を終了する。
【００５１】
このように、本実施形態に係るデータベースサーバ１００においては、クライアントプロセス１０５におけるデータベースドライバ１０７がクライアントモジュール１０６から送信されたデータベースコマンドを解析し、データベースの特定のエリアに格納されるデータが変更されると判定した場合には、変更後のデータを求め、変更後のデータを転送モジュール１０９に渡し、受信プロセス１０９において受信できるように構成している。これにより、受信プロセス１０９は、データベースサーバプロセス１０４がデータをデータベースに格納するのを待たなくてもデータを得ることができ、データ配信のタイムラグを低減することができる。また、配信されるデータを受信プロセス１０９またはデータベースドライバ１０７により変換することも可能である。
【００５２】
＜変形例＞
以上、本発明の実施形態およびその実施例について説明したが、本発明は以下のように、様々な態様で実施可能である。
【００５３】
［変形例１］
上述した実施形態においては、データベースサーバ１００は、１台のコンピュータにより実現されていたが、複数台のコンピュータにより実現されてもよい。例えば、図４に示すように２台のコンピュータにより実現されてもよい。
【００５４】
図４は、本発明の変形例１に係るシステムの機能ブロック図である。図４に示す例では、ハードウェア７０１とカーネル空間７０２とユーザ空間７０３とを有する第１のコンピュータ７００Ａと、ハードウェア７１１とカーネル空間７１２とユーザ空間７１３とを有する第２のコンピュータ７００Ｂとを用いて本発明を実施することができる。この場合、第１のコンピュータ７００Ａのユーザ空間７０３においてデータベースサーバプロセス７０４が動作し、第２のコンピュータ７００Ｂのユーザ空間７１３においてクライアントプロセス７０５および受信プロセス７０９が動作してもよい。変形例１における各プロセスの機能は、実施形態における各プロセスの機能と同様である。
【００５５】
クライアントプロセス７０５からデータベースサーバプロセス７０４に送信されるデータベースコマンドは、第２のコンピュータ７００Ｂのカーネル空間７１２、ハードウェア７１１、通信網８００、第１のコンピュータ７００Ａのハードウェア７０１、カーネル空間７０２を介してクライアントプロセス７０５からデータベースサーバプロセス７０４に送信される。
【００５６】
データベースサーバプロセス７０４からクライアントプロセス７０５に送信されるデータベースコマンドの処理の実行の結果は、データベースコマンドとは逆に、第１のコンピュータ７００Ａのカーネル空間７０２、ハードウェア７０１、通信網８００、第２のコンピュータ７００Ｂのハードウェア７１１、カーネル空間７１２を介してデータベースサーバプロセス７０４からクライアントプロセス７０５に送信される。
【符号の説明】
【００５７】
１００…データベースサーバ、１０１，７０１，７１１…ハードウェア、１０２，７０２，７１２…カーネル空間、１０３，７０３，７１３…ユーザ空間、１０４，７０４…データベースサーバ、１０５，７０５…クライアントプロセス、１０６，７０６…クライアントモジュール、１０７，７０７…データベースドライバ、１０８，７０８…転送モジュール、１０９，７０９…受信プロセス、７００Ａ…第１のコンピュータ、７００Ｂ…第２のコンピュータ、８００…通信網
【図１】
2014026392.tif 000003
【図２】
2014026392.tif 000004
【図３】
2014026392.tif 000005
【図４】
2014026392.tif 000006