(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024051955
(43)【公開日】2024-04-11
(54)【発明の名称】データ同期プログラム及びデータ同期方法、並びに情報処理装置
(51)【国際特許分類】
G06F 16/27 20190101AFI20240404BHJP
【FI】
G06F16/27
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022158359
(22)【出願日】2022-09-30
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100087480
【弁理士】
【氏名又は名称】片山 修平
(72)【発明者】
【氏名】川嵜 美波
(72)【発明者】
【氏名】中山 貴祥
(72)【発明者】
【氏名】高 健二
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175AA01
5B175CA07
5B175EA03
(57)【要約】
【課題】複数の情報処理装置それぞれがデータを管理するリレーショナルデータベース間において同期をとる。
【解決手段】リレーショナルデータベースにおいてデータを管理する複数の情報処理装置のうちの第1の情報処理装置の制御部は、関連性を持つ複数のテーブルのデータを、前記第1の情報処理装置がデータを管理する第1のリレーショナルデータベースに格納し、第2の情報処理装置がデータを管理する第2のリレーショナルデータベースに対し、前記第1のリレーショナルデータベースに格納されたテーブルのデータを送信する際に、送信するテーブルのデータと関連性を持つテーブルのデータも合わせて送信する、処理を実行する。
【選択図】
図11
【特許請求の範囲】
【請求項1】
リレーショナルデータベースにおいてデータを管理する複数の情報処理装置のうちの第1の情報処理装置の制御部に、
関連性を持つ複数のテーブルのデータを、前記第1の情報処理装置がデータを管理する第1のリレーショナルデータベースに格納し、
第2の情報処理装置がデータを管理する第2のリレーショナルデータベースに対し、前記第1のリレーショナルデータベースに格納されたテーブルのデータを送信する際に、送信するテーブルのデータと関連性を持つテーブルのデータも合わせて送信する、
処理を実行させることを特徴とするデータ同期プログラム。
【請求項2】
前記関連性を持つ複数のテーブルのデータを、前記第1のリレーショナルデータベースに格納する際に、前記複数のテーブルそれぞれの関連性を示す情報を第1の記憶部に記憶する処理を前記制御部に実行させ、
前記送信する処理において、前記第1の記憶部を参照して、前記第2のリレーショナルデータベースに送信するテーブルのデータと関連性を持つテーブルのデータを特定する、ことを特徴とする請求項1に記載のデータ同期プログラム。
【請求項3】
前記第1のリレーショナルデータベースに格納されたテーブルのデータと、該データと関連性を持つテーブルのデータと、を前記第2のリレーショナルデータベースに送信する際に、同一トランザクション内で処理することを特徴とする請求項1に記載のデータ同期プログラム。
【請求項4】
前記第1のリレーショナルデータベースに格納されたテーブルのデータを前記第2のリレーショナルデータベースに送信したことを示す情報を第2の記憶部に記憶し、
前記第1のリレーショナルデータベースに格納されたテーブルのデータを更新する際に、前記第2の記憶部を参照して、更新するデータが前記第2のリレーショナルデータベースに送信されていれば、当該データも更新する、
処理を前記制御部に実行させることを特徴とする請求項1~3のいずれか一項に記載のデータ同期プログラム。
【請求項5】
リレーショナルデータベースにおいてデータを管理する複数の情報処理装置のうちの第1の情報処理装置の制御部が、
関連性を持つ複数のテーブルのデータを、前記第1の情報処理装置がデータを管理する第1のリレーショナルデータベースに格納し、
第2の情報処理装置がデータを管理する第2のリレーショナルデータベースに対し、前記第1のリレーショナルデータベースに格納されたテーブルのデータを送信する際に、送信するテーブルのデータと関連性を持つテーブルのデータも合わせて送信する、
処理を実行することを特徴とするデータ同期方法。
【請求項6】
リレーショナルデータベースにおいてデータを管理する情報処理装置であって、
関連性を持つ複数のテーブルのデータを、前記情報処理装置がデータを管理する第1のリレーショナルデータベースに格納し、
他の情報処理装置がデータを管理する第2のリレーショナルデータベースに対し、前記第1のリレーショナルデータベースに格納されたテーブルのデータを送信する際に、送信するテーブルのデータと関連性を持つテーブルのデータも合わせて送信する、
処理を実行する制御部を備える情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ同期プログラム及びデータ同期方法、並びに情報処理装置に関する。
【背景技術】
【0002】
データベースのうち、現在最も広く利用されているリレーショナルデータベースは、厳密なトランザクション機能を備えており、更新処理と読み出し処理を高性能に行うことができる。そのため、アクセス対象のデータの一貫性、整合性を保証する必要のある業務アプリケーションには、リレーショナルデータベースの利用が適している。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平11-249943号公報
【特許文献2】特開2002-7441号公報
【特許文献3】特開平8-305714号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、現状では、複数の企業がリレーショナルデータベースを利用する状況下において、各企業のリレーショナルデータベース間でデータを同期(連携)させることができていない。
【0005】
1つの側面では、本発明は、複数の情報処理装置それぞれがデータを管理するリレーショナルデータベース間において同期をとることが可能なデータ同期プログラム及びデータ同期方法、並びに情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0006】
一つの態様では、データ同期プログラムは、リレーショナルデータベースにおいてデータを管理する複数の情報処理装置のうちの第1の情報処理装置の制御部に、関連性を持つ複数のテーブルのデータを、前記第1の情報処理装置がデータを管理する第1のリレーショナルデータベースに格納し、第2の情報処理装置がデータを管理する第2のリレーショナルデータベースに対し、前記第1のリレーショナルデータベースに格納されたテーブルのデータを送信する際に、送信するテーブルのデータと関連性を持つテーブルのデータも合わせて送信する、処理を実行させるプログラムである。
【発明の効果】
【0007】
複数の情報処理装置それぞれがデータを管理するリレーショナルデータベース間において同期をとることができる。
【図面の簡単な説明】
【0008】
【
図1】一実施形態に係る組織間連携システムの構成を概略的に示す図である。
【
図2】
図2(a)は、企業A用クライアントのハードウェア構成の一例を示す図であり、
図2(b)は、企業A用サーバのハードウェア構成の一例を示す図である。
【
図3】企業A用サーバの機能を示すブロック図である。
【
図4】企業A用DBサーバに格納される複数のテーブルのテーブル構造の一例を示す図である。
【
図5】関連情報管理テーブルの一例を示す図である。
【
図6】企業A用DBサーバ上の複数のテーブルに格納されるデータの一例を示す図である。
【
図7】同期情報管理テーブルの一例を示す図である。
【
図8】企業A用サーバ及び企業B用サーバの処理を示すフローチャート(その1)である。
【
図9】企業A用サーバ及び企業B用サーバの処理を示すフローチャート(その2)である。
【
図10】テーブル定義情報の登録及びデータ登録の処理を説明するためのシーケンス図である。
【
図11】データ送信処理を説明するためのシーケンス図である。
【
図12】
図12(a)は、
図11の処理において企業B用DBサーバに送信されるテーブルのデータを示す図であり、
図12(b)は、
図11の処理において同期情報管理テーブルに登録される情報を示す図である。
【
図13】データ更新処理を説明するためのシーケンス図(その1)である。
【
図14】データ更新処理を説明するためのシーケンス図(その2)である。
【
図15】データ更新処理において更新するデータに下線を付して示す図である。
【
図16】
図16(a)、
図16(b)は、
図14の処理において企業B用DBサーバに格納されたデータの更新前後を示す図である。
【
図17】変形例を説明するための図(その1)である。
【
図18】変形例を説明するための図(その2)である。
【発明を実施するための形態】
【0009】
以下、組織間連携システムの一実施形態について、
図1~
図16に基づいて詳細に説明する。
【0010】
図1には、一実施形態に係る組織間連携システム100の構成が概略的に示されている。組織間連携システム100は、一例として、複数の組織(例えば企業A,B)が利用可能なクライアント(企業A用クライアント12A、企業B用クライアント12B)と、分散型リレーショナルデータベース(RDB)管理システム10と、を有する。分散型RDB管理システム10が有する各装置と、企業A用クライアント12Aと、企業B用クライアント12Bは、インターネットなどのネットワーク80に接続されている。本実施形態の組織間連携システム100は、複数の組織間においてデータを連携し、一括管理するためのシステムである。
【0011】
(企業A用クライアント12A)
企業A用クライアント12Aは、企業A配下のユーザ(例えば管理者や一般の従業員)によって利用される端末である。ユーザは、企業A用クライアント12Aを操作してAPI(Application Programming Interface)を通じて企業A用クライアント12Aと企業A用サーバ14Aとを連携させる。そして、ユーザは、企業A用クライアント12A上から、企業A用DBサーバ16Aへのテーブル定義や、データ登録、データ更新、データ削除等を行うことができる。また、ユーザは、企業A用クライアント12A上から、企業A用DBサーバ16Aに格納されているテーブルのデータを、他の企業のDBサーバと同期させることができるようになっている。
【0012】
図2(a)には、企業A用クライアント12Aのハードウェア構成の一例が示されている。
図2(a)に示すように、企業A用クライアント12Aは、CPU(Central Processing Unit)90、ROM(Read Only Memory)92、RAM(Random Access Memory)94、ストレージ(SSD(Solid State Drive)やHDD(Hard Disk Drive))96、ネットワークインタフェース97、表示部93、入力部95、及び可搬型記憶媒体用ドライブ99等を備えている。表示部93は、液晶ディスプレイや有機ELディスプレイ等を含み、入力部95は、キーボードやマウス、タッチパネル等を含む。可搬型記憶媒体用ドライブ99は、可搬型記憶媒体91に記憶されたデータやプログラムを読み取り可能である。これら企業A用クライアント12Aの構成各部は、バス98に接続されている。
【0013】
(企業B用クライアント12B)
企業B用クライアント12Bは、企業B配下のユーザ(例えば管理者や一般の従業員)によって利用される端末である。企業B用クライアント12Bのハードウェア構成及び機能等は企業A用クライアント12Aと同様である。
【0014】
(分散型RDB管理システム10)
図1に戻り、分散型RDB管理システム10は、情報処理装置としての企業A用サーバ(エージェント)14Aと、リレーショナルデータベースとしての企業A用DBサーバ16Aと、管理用DB50と、企業B用サーバ(エージェント)14Bと、企業B用DBサーバ16Bと、を有する。
【0015】
(企業A用サーバ14A)
企業A用サーバ14Aは、企業A用クライアント12Aからの指示や要求に応じて、企業Aが管理する分散DBである企業A用DBサーバ16Aにおいてテーブル定義を行ったり、データ登録、データ更新、データ削除等を行う。また、企業A用サーバ14Aは、企業A用クライアント12Aからの指示や要求に応じて、企業A用DBサーバ16Aに格納されているテーブルのデータを、他の企業のDBサーバに送信する(同期させる)。すなわち、企業A用サーバ14Aは、企業A用DBサーバ16Aに格納されているデータのうち、必要なデータのみを他の企業のDBサーバにおいて同期させることが可能な、自己主権型のデータ管理を実行する。更に、企業A用サーバ14Aは、企業A用クライアント12Aからの指示や要求に応じて、企業A用DBサーバ16Aに格納されているテーブルのデータを更新したり削除したりする。また、企業A用サーバ14Aは、更新・削除したデータと同一のデータが他の企業のDBサーバに存在する場合には、そのデータの更新・削除も行う。
【0016】
図2(b)には、企業A用サーバ14Aのハードウェア構成の一例が示されている。
図2(b)に示すように、企業A用サーバ14Aは、CPU190、ROM192、RAM194、ストレージ196、ネットワークインタフェース197、及び可搬型記憶媒体用ドライブ199等を備えている。これら企業A用サーバ14Aの構成各部は、バス198に接続されている。企業A用サーバ14Aでは、ROM192あるいはストレージ196に格納されているプログラム(データ同期プログラムを含む)、或いは可搬型記憶媒体用ドライブ199が可搬型記憶媒体191から読み取ったプログラムをCPU190が実行することにより、
図3に示す、各部の機能が実現される。なお、
図3の各部の機能は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現されてもよい。
【0017】
(企業A用DBサーバ16A)
企業A用DBサーバ16Aは、NonSQLではなく、リレーショナルデータベースとしての機能を有し、関連を持つ複数のテーブルを、関連性を維持した状態で管理する。なお、企業A用DBサーバ16Aのハードウェア構成は、企業A用サーバ14Aと同様となっている。なお、リレーショナルデータベースは、企業A用サーバ14Aが保持していてもよく、この場合には、企業A用DBサーバ16Aを省略してもよい。
【0018】
(企業A用サーバ14Aの機能について)
企業A用サーバ14Aは、CPU190がプログラムを実行することにより、
図3に示すように、テーブル定義登録部30、データ登録部32、データ送信部34、データ更新部36として機能する。
【0019】
テーブル定義登録部30は、ユーザが、企業A用クライアント12Aにおいてテーブル定義APIを用い、登録したいテーブル構造を定義すると、定義されたテーブル構造の情報(テーブル定義情報)を取得する。また、テーブル定義登録部30は、取得したテーブル定義情報を用いて、企業A用DBサーバ16A上でテーブルを定義する。更に、テーブル定義登録部30は、取得したテーブル定義情報を、管理用DB50に格納されている第1の記憶部としての関連情報管理テーブル52に登録する。
【0020】
例えば、テーブル定義登録部30が、テーブル定義情報として、
図4に示すような、従業員テーブル、部署テーブル、及び研修テーブルの定義情報を取得したとする。ここで、従業員テーブルは、「社員番号」、「氏名」、「部署コード」のカラムを有し、部署テーブルは、「部署コード」、「部署名」のカラムを有し、研修テーブルは、「社員番号」、「氏名」、「部署名」、「成績」のカラムを有するものとする。また、従業員テーブル、部署テーブル、及び研修テーブルそれぞれが関連を持っているものとする。
【0021】
この場合、テーブル定義登録部30は、関連情報管理テーブル52に、
図5に示すようなテーブルの定義情報を登録する。具体的には、関連情報管理テーブル52には、各テーブルが有するカラムの名称(カラム名)が登録される。また、関連情報管理テーブル52には、研修テーブルの各カラムがどのテーブルのどのカラムと関連しているかが登録される。
【0022】
図3に戻り、データ登録部32は、ユーザが企業A用クライアント12Aにおいてデータ登録APIを用い、テーブルに登録したいデータを登録すると、その登録したいデータを取得する。そして、データ登録部32は、取得したテーブルのデータを、企業A用DBサーバ16A上のテーブルに登録する。例えば、データ登録部32が、
図6に示すようなデータを取得すると、
図6のデータを企業A用DBサーバ16A上のテーブル(
図4)に登録する。
【0023】
データ送信部34は、ユーザが企業A用クライアント12Aにおいてデータ送信APIを用い、企業A用DBサーバ16Aに格納されているテーブルのデータを他の企業のDBサーバに送信する要求を入力すると、その送信要求を取得する。そして、データ送信部34は、送信対象のテーブルに関連するテーブルの情報を関連情報管理テーブル52から取得する。例えば、
図6の研修テーブルのデータが送信対象であった場合、データ送信部34は、
図5の関連情報管理テーブル52から、研修テーブルに関連するテーブルが従業員テーブルと部署テーブルであるという情報を取得する。
【0024】
また、データ送信部34は、企業A用DBサーバ16Aから、送信対象のテーブルのデータと、送信対象のテーブルのデータに関連するテーブルのデータと、を取得し、他の企業のDBサーバに送信し、登録する。
【0025】
更に、データ送信部34は、管理用DB50に格納されている第2の記憶部としての同期情報管理テーブル54に対し、どの企業のDBサーバにおいて、どのテーブルのどのデータが同期されたかの情報を登録する。同期情報管理テーブル54には、
図7に示すように、同期IDと、送信先経路と、直接送信先と、同期内容の情報が登録可能となっている。「同期ID」には、同期処理毎に割り振られる識別情報が格納され、「送信先経路」には、例えば、企業Aが企業Bにデータを送信し、その後に企業Bから企業Cにデータが送信された場合には、「{企業B,企業C}」という情報が格納される。また、「直接送信先」には、企業Aが企業Bにデータを直接送信した場合には、「企業B」という情報が格納される。更に、「同期内容」には、同期されたテーブル及びカラムの詳細情報が格納される。
【0026】
図3に戻り、データ更新部36は、ユーザが企業A用クライアント12Aにおいてデータ更新APIを用い、企業A用DBサーバ16Aに格納されているテーブルのデータの更新要求を入力すると、その更新要求を取得する。そして、データ更新部36は、企業A用DBサーバ16Aに格納されている更新対象のテーブルのデータを更新する。
【0027】
また、データ更新部36は、更新要求を取得すると、同期情報管理テーブル54を参照して、更新要求のあったテーブルのデータが他の企業のDBサーバにおいて同期されているか否かを確認する。そして、データ更新部36は、他の企業のDBサーバにおいて同期済みであった場合には、当該他の企業のDBサーバの同期済みのデータも更新する。
【0028】
(管理用DB50)
管理用DB50には、
図3に示すように、関連情報管理テーブル52と、同期情報管理テーブル54と、が格納されている。
【0029】
(企業B用サーバ14B、企業B用DBサーバ16B)
企業B用サーバ14Bは、企業A用サーバ14Aと同様のハードウェア構成及び機能等を有する。また、企業B用DBサーバ16Bは、企業A用DBサーバ16Aと同様のハードウェア構成及び機能等を有する。すなわち、企業B用サーバ14Bは、企業B用クライアント12Bを介したユーザからの要求に応じて、リレーショナルデータベースである企業B用DBサーバ16Bにおいてテーブル定義を実行したり、データ登録、更新、削除の処理を実行する。また、企業B用サーバ14Bは、企業B用DBサーバ16Bに格納されているデータを企業B以外の企業のDBサーバにおいて同期させる処理を実行する。
【0030】
なお、
図1の組織間連携システム100は、企業A、Bのサーバ、DBサーバ、クライアントを有するものとしているが、これに限らず、組織間連携システム100は、その他の企業のサーバ、DBサーバ、クライアントを更に有していてもよい。すなわち、組織間連携システム100は、2以上の企業のサーバ、DBサーバ、クライアントを有していればよい。
【0031】
(企業A用サーバ14A,企業B用サーバ14Bの処理)
次に、企業A用サーバ14A,企業B用サーバ14Bの処理について、
図8のフローチャートに沿って、その他図面を適宜参照しつつ詳細に説明する。
【0032】
図8の処理が開始されると、まず、ステップS10において、テーブル定義登録部30が、テーブル定義APIを用いて、自企業のクライアント12A(又は12B)からテーブル構造の定義要求が送信されてきたか否かを判断する。このステップS10の判断が肯定された場合には、ステップS12に移行し、テーブル定義登録部30が、テーブルの定義情報を関連情報管理テーブル52に登録する。また、ステップS14において、テーブル定義登録部30は、自企業のDBサーバ16A(又は16B)にテーブルの定義情報を登録する。その後は、ステップS16に移行する。なお、ステップS10の判断が否定された場合には、ステップS12、S14を経ずに、ステップS16に移行する。
【0033】
ステップS16に移行すると、データ登録部32は、データ登録APIを用いて、自企業のクライアント12A(又は12B)からデータ登録要求が送信されてきたかを判断する。このステップS16の判断が肯定されると、ステップS18に移行し、データ登録部32は、自企業のDBサーバ16A(又は16B)上のテーブルにデータを登録する。その後は、ステップS20に移行する。なお、ステップS16の判断が否定された場合には、ステップS18を経ずに、ステップS20に移行する。
【0034】
ステップS20に移行すると、データ送信部34は、データ送信APIを用いて、自企業のクライアント12A(又は12B)から他の企業のDBサーバへのデータ送信要求が送信されてきたかを判断する。このステップS20の判断が肯定されると、ステップS22に移行し、データ送信部34は、送信対象のデータのテーブルに関連するテーブルの情報を関連情報管理テーブル52から取得する。
【0035】
次いで、ステップS24において、データ送信部34は、送信対象のデータに関連するデータを自企業のDBサーバ16A(又は16B)から取得する。
【0036】
次いで、ステップS26において、データ送信部34は、送信対象のデータと、これに関連するデータを同一トランザクション内で他企業のDBサーバに送信する(同期させる)。なお、他企業のDBサーバに、送信対象のデータを格納するテーブルが存在していない場合には、テーブルを作成した後に、データを登録する。
【0037】
次いで、ステップS28において、データ送信部34は、同期情報管理テーブル54に同期したデータの情報を登録する。その後は、
図9のステップS30に移行する。なお、ステップS20の判断が否定された場合には、ステップS22~S28を経ずに、
図9のステップS30に移行する。
【0038】
図9のステップS30に移行すると、データ更新部36は、データ更新APIを用いて、自企業のクライアント12A(又は12B)からデータ更新要求が送信されてきたかを判断する。このステップS30の判断が肯定されると、ステップS32に移行し、データ更新部36は、同期情報管理テーブル54を参照して、更新対象のデータの同期有無を確認する。そして、ステップS34において、データ更新部36は、更新対象のデータが他の企業のDBサーバにおいて同期されているか否かを判断する。
【0039】
このステップS34の判断が肯定された場合には、ステップS36に移行し、データ更新部36は、更新対象のデータのテーブルに関連するテーブルの情報を関連情報管理テーブル52から取得する。次いで、ステップS38において、データ更新部36は、自企業のDBサーバ16A(又は16B)の更新対象のデータを更新する。そして、次のステップS40において、データ更新部36は、同期している他企業のDBサーバの更新対象のデータを更新するとともに、関連するテーブルのデータを更新する。その後は、ステップS10に戻る。
【0040】
一方、ステップS34の判断が否定された場合、すなわち他の企業のDBサーバで更新対象のデータが同期されていなかった場合には、ステップS42に移行する。ステップS42に移行すると、データ更新部36は、自企業のDBサーバ16A(又は16B)の更新対象のデータを更新し、ステップS10に戻る。
【0041】
なお、ステップS30の判断が否定された場合には、ステップS32~S42を経ずに、ステップS10に戻る。そして、これ以降は、上述した処理・判断を繰り返し実行する。
【0042】
(具体例について)
次に、具体例について、
図10、
図11、
図13、
図14のシーケンス図に沿って、その他図面を適宜参照しつつ詳細に説明する。
【0043】
(テーブル定義情報の登録及びデータ登録)
企業Aのユーザが、
図4に示すような従業員テーブル、部署テーブル、研修テーブルのテーブル構造と、
図6に示すような各テーブルのデータと、を企業A用DBサーバ16Aに登録する場合について、
図10に基づいて説明する。
【0044】
(1)ユーザが、企業A用クライアント12Aにおいてテーブル定義APIを用い、登録したいテーブル構造(
図4)を定義すると、(2)企業A用サーバ14Aは、テーブルの定義情報を管理用DB50の関連情報管理テーブル52に登録する。
図4のテーブル構造の場合、
図5に示すような情報が関連情報管理テーブル52に登録される。
【0045】
次いで、(3)企業A用サーバ14Aは、企業A用DBサーバ16A上でテーブル定義を実行する。その後は、(4)企業A用サーバ14Aは、企業A用クライアント12Aに対し、テーブル定義APIの終了を通知する。
【0046】
また、(5)ユーザが、企業A用クライアント12Aにおいてデータ登録APIを用い、登録したいデータ(
図6)を登録すると、(6)企業A用サーバ14Aは、企業A用DBサーバ16A上のテーブルに対し、データを登録する。その後は、(7)企業A用サーバ14Aは、企業A用クライアント12Aに対し、データ登録APIの終了を通知する。
【0047】
(データ送信)
次に、企業Aのユーザが、企業A用DBサーバ16Aに格納されている
図6の研修テーブルの「山田太郎」のデータ(レコード)を企業B用DBサーバ16Bに送信する(同期する)場合について、
図11に基づいて説明する。
【0048】
(1)まず、ユーザが、企業A用クライアント12Aにおいてデータ送信APIを用いて送信したいデータ(レコード)を特定する。ここでは、
図6の研修テーブルの「山田太郎」のデータ(レコード)が特定されたものとする。このように送信対象のデータが特定されると、(2)企業A用サーバ14Aは、関連情報管理テーブル52(
図5)を参照して、送信対象のテーブル(研修テーブル)に関連するテーブルの情報を取得する。この場合、(3)企業A用サーバ14Aは、
図5の関連情報管理テーブル52から、研修テーブルに関連するテーブルとして、従業員テーブルと、部署テーブルが存在するという情報を取得する。
【0049】
次いで、(4)企業A用サーバ14Aは、企業A用DBサーバ16A上の研修テーブル、従業員テーブル、部署テーブルから送信する必要のあるデータを取得する。具体的には、研修テーブル、従業員テーブル、部署テーブルから「山田太郎」に関連するレコード(
図12(a)参照)を取得する。
【0050】
次いで、(5)企業A用サーバ14Aは、(4)で取得した各テーブルのレコード(
図12(a))を同一トランザクション内(1トランザクション内)で企業B用DBサーバ16Bに送信し、登録する。なお、企業B用DBサーバ16Bに、送信したデータを格納するテーブルが存在していない場合には、テーブルを作成した後に、データを登録する。これにより、研修テーブルの「山田太郎」のデータが企業A用DBサーバ16Aと企業B用DBサーバ16Bにおいて同期されることになる。このとき、企業B用DBサーバ16Bには、送信対象のデータだけでなく、関連性を持つデータも同一トランザクション内で送信されることから、企業B用DBサーバ16Bにおいてデータの不整合が生じるのを防止することができる。
【0051】
次いで、(6)企業A用サーバ14Aは、管理用DB50に格納されている同期情報管理テーブル54に、企業A用DBサーバ16Aから企業B用DBサーバ16Bに対して各テーブルを同期した旨を登録する。具体的には、
図12(b)に示すようなデータが同期情報管理テーブル54に登録される。
【0052】
その後は、(7)企業A用サーバ14Aは、企業A用クライアント12Aに対し、データ送信APIの終了を通知する。
【0053】
(データ更新)
次に、企業Aのユーザが、企業A用DBサーバ16Aに格納されている
図6の従業員テーブルの「山田太郎」の部署のデータを、
図15において下線を付して示すように更新する場合について、
図13、
図14に基づいて説明する。
【0054】
図13に示すように、(1)まず、ユーザが、企業A用クライアント12Aにおいてデータ更新APIを用い、更新したいデータ(ここでは、従業員テーブルの「山田太郎」の部署コード)を特定する。このように更新対象のデータが特定されると、(2)企業A用サーバ14Aは、管理用DB50に格納されている同期情報管理テーブル54を参照して、従業員テーブルの山田太郎のレコードの同期状況を確認する。
【0055】
(3)この確認により、従業員テーブルの山田太郎のレコードが同期されている他の企業のDBサーバが無いことが分かった場合には、(4)企業A用サーバ14Aは、企業A用DBサーバ16Aに格納されている従業員テーブルの山田太郎の部署コードを更新する。これにより、従業員テーブル及び研修テーブルが
図6から
図15に示すように更新される。
【0056】
その後は、(5)企業A用サーバ14Aは、企業A用クライアント12Aに対し、データ更新APIの終了を通知する。
【0057】
一方、
図14に示すように、
図13と同様、(1)、(2)が行われ、(2)の確認により、(3)企業A用サーバ14Aが、山田太郎のレコードが同期されている他の企業(企業Bとする)のDBサーバがあることを確認したとする。例えば、
図16(a)に示すようなテーブルが企業B用DBサーバ16Bに格納されていたとする。この場合、(4)企業A用サーバ14Aは、関連情報管理テーブル52を参照して、従業員テーブルに関連するテーブルの情報を取得する。
【0058】
この結果、(5)企業A用サーバ14Aは、従業員テーブルと、研修テーブル及び部署テーブルとの間に関連性があるという情報を取得したとする。この場合、(6)企業A用サーバ14Aは、まず、企業A用DBサーバ16A内の従業員テーブルを更新する(
図15参照)。そして、(7)企業A用サーバ14Aは、従業員テーブルの山田太郎の更新後のレコードと、これに関連する研修テーブル及び部署テーブルのレコードを同一トランザクション内(1トランザクション内)で企業B用DBサーバ16Bに送信し、更新する。すなわち、
図16(a)に示す各テーブルのデータは、
図16(b)に示すように更新される。このようにすることで、企業A用DBサーバ16Aのデータを更新する際に、同期先の企業B用DBサーバ16Bが有する同期済みのデータも合わせて更新されるため、DBサーバ間におけるデータの不整合を防止することができる。
【0059】
その後は、(8)企業A用サーバ14Aは、企業A用クライアント12Aに対し、データ更新APIの終了を通知する。
【0060】
以上、詳細に説明したように、本実施形態によると、企業A用サーバ14Aは、企業A用DBサーバ16Aに関連性を持つ複数のテーブルのデータを格納する(
図8のS14、S18)。そして、企業A用サーバ14Aは、他の企業のDBサーバに対し、企業A用DBサーバ16Aに格納されているテーブルのデータを送信する際に、そのテーブルのデータと関連性を持つテーブルのデータも合わせて送信する(
図8のS22~S26)。これにより、複数の企業のリレーショナルデータベースおいてデータを同期させる場合に、送信対象のテーブルのデータと関連性を持つテーブルのデータも送信するため、送信先においてデータの不整合が発生するのを防止することができる。例えば、企業A用DBサーバ16Aに
図6の各テーブルのデータが格納されている場合において、研修テーブルを企業B用DBサーバ16Bに送信するとする。この場合に、研修テーブルのみを企業B用DBサーバ16Bに送信してしまうと、氏名や部署名の参照先が無いため、参照エラーが生じてしまうことになる。一方、本実施形態のように、送信するテーブルと関連性を有するテーブルも送信するようにすることで、参照エラーが生じないようにすることができる。このように、本実施形態では、分散DBである企業A用DBサーバ16Aや企業B用DBサーバ16Bが、リレーショナルデータベースとしての機能を維持したまま、データ連携をすることができる。また、組織間連携システム100を構築する際に、各企業が有するリレーショナルデータベースを流用することができるため、システム構築のコストを低減することができる。
【0061】
また、本実施形態では、企業A用サーバ14Aが企業A用DBサーバ16Aに複数の関連性を有するテーブルのデータを格納したときに、各テーブルの関連性についての情報を関連情報管理テーブル52に格納する。そして、企業A用サーバ14Aは、他の企業のDBサーバ16Bに企業A用DBサーバ16Aに格納されているテーブルのデータを送信する際に、関連情報管理テーブル52を参照し、送信すべきテーブルのデータを特定する。これにより、簡易に他の企業のDBサーバに送信すべきテーブルのデータを特定することができる。
【0062】
また、本実施形態では、企業A用サーバ14Aは、関連性を持つテーブルのデータを他の企業のDBサーバに送信する際に、同一トランザクション内で処理するようにしている。これにより、他の企業のDBサーバにおけるデータの不整合を確実に防止することができる。
【0063】
また、本実施形態では、企業A用サーバ14Aは、他の企業のDBサーバにおいてデータを同期した場合に、その内容を同期情報管理テーブル54に登録する。そして、企業A用サーバ14Aは、企業A用DBサーバ16Aに格納されているデータを更新する場合に、同期情報管理テーブル54を参照して、更新対象のデータが他の企業のDBサーバで同期されていれば、そのデータも更新する。このようにすることで、各企業のDBサーバにおけるデータの不整合を抑制することができる。例えば、
図16(b)の例において、従業員テーブルの更新対象のデータ(レコード)のみを企業B用DBサーバ16Bに送った場合、部署コード「HR001」が部署テーブルに存在しないため、不整合が生じてしまう。これに対し、従業員テーブルの更新対象のデータ(レコード)に対応する部署テーブルのデータも送信することで、上記のような不整合の発生を防止することができる。
【0064】
(変形例)
なお、上記実施形態では、関連情報管理テーブル52を用いる場合について説明したが、これに限られるものではない。すなわち、関連情報管理テーブル52は用いなくてもよい。以下、関連情報管理テーブル52は用いない例(変形例)について説明する。
【0065】
図17には、変形例に係るテーブル送信処理のシーケンス図(上記実施形態の
図11に対応するシーケンス図)が示されている。本変形例では、例えば、
図17の(2)において研修テーブルに関連するテーブルの情報を取得する際に、企業A用DBサーバ16Aに格納されているテーブル構造から当該情報を取得する。
【0066】
また、本変形例では、
図17の(5)において各テーブルのレコードを企業B用DBサーバ16Bに登録する際には、登録するテーブルのテーブル構造と、企業B用DBサーバ16Bのテーブル構造と、の間に差分が無いことを確認する。
【0067】
図18には、変形例に係るデータ更新処理のシーケンス図(上記実施形態の
図14に対応するシーケンス図)が示されている。本変形例では、例えば、
図18の(4)において従業員テーブルに関連するテーブルの情報を取得する際に、企業A用DBサーバ16Aに格納されているテーブル構造から当該情報を取得する。
【0068】
また、本変形例では、
図18の(7)において各テーブルのレコードを企業B用DBサーバ16Bに登録する際には、登録するテーブルのテーブル構造と、企業B用DBサーバ16Bのテーブル構造と、の間に差分が無いことを確認する。
【0069】
このように、関連情報管理テーブル52を用いないこととしても、上記実施形態と同様の処理を行うことが可能である。
【0070】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、処理装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記憶媒体(ただし、搬送波は除く)に記録しておくことができる。
【0071】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD(Digital Versatile Disc)、CD-ROM(Compact Disc Read Only Memory)などの可搬型記憶媒体の形態で販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0072】
プログラムを実行するコンピュータは、例えば、可搬型記憶媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記憶媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【0073】
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
【0074】
なお、以上の実施形態の説明に関して、更に以下の付記を開示する。
(付記1) リレーショナルデータベースにおいてデータを管理する複数の情報処理装置のうちの第1の情報処理装置の制御部に、
関連性を持つ複数のテーブルのデータを、前記第1の情報処理装置がデータを管理する第1のリレーショナルデータベースに格納し、
第2の情報処理装置がデータを管理する第2のリレーショナルデータベースに対し、前記第1のリレーショナルデータベースに格納されたテーブルのデータを送信する際に、送信するテーブルのデータと関連性を持つテーブルのデータも合わせて送信する、
処理を実行させることを特徴とするデータ同期プログラム。
(付記2) 前記関連性を持つ複数のテーブルのデータを、前記第1のリレーショナルデータベースに格納する際に、前記複数のテーブルそれぞれの関連性を示す情報を第1の記憶部に記憶する処理を前記制御部に実行させ、
前記送信する処理において、前記第1の記憶部を参照して、前記第2のリレーショナルデータベースに送信するテーブルのデータと関連性を持つテーブルのデータを特定する、ことを特徴とする付記1に記載のデータ同期プログラム。
(付記3) 前記第1のリレーショナルデータベースに格納されたテーブルのデータと、該データと関連性を持つテーブルのデータと、を前記第2のリレーショナルデータベースに送信する際に、同一トランザクション内で処理することを特徴とする付記1又は2に記載のデータ同期プログラム。
(付記4) 前記第1のリレーショナルデータベースに格納されたテーブルのデータを前記第2のリレーショナルデータベースに送信したことを示す情報を第2の記憶部に記憶し、
前記第1のリレーショナルデータベースに格納されたテーブルのデータを更新する際に、前記第2の記憶部を参照して、更新するデータが前記第2のリレーショナルデータベースに送信されていれば、当該データも更新する、
処理を前記制御部に実行させることを特徴とする付記1~3のいずれかに記載のデータ同期プログラム。
(付記5) リレーショナルデータベースにおいてデータを管理する複数の情報処理装置のうちの第1の情報処理装置の制御部が、
関連性を持つ複数のテーブルのデータを、前記第1の情報処理装置がデータを管理する第1のリレーショナルデータベースに格納し、
第2の情報処理装置がデータを管理する第2のリレーショナルデータベースに対し、前記第1のリレーショナルデータベースに格納されたテーブルのデータを送信する際に、送信するテーブルのデータと関連性を持つテーブルのデータも合わせて送信する、
処理を実行することを特徴とするデータ同期方法。
(付記6) リレーショナルデータベースにおいてデータを管理する情報処理装置であって、
関連性を持つ複数のテーブルのデータを、前記情報処理装置がデータを管理する第1のリレーショナルデータベースに格納し、
他の情報処理装置がデータを管理する第2のリレーショナルデータベースに対し、前記第1のリレーショナルデータベースに格納されたテーブルのデータを送信する際に、送信するテーブルのデータと関連性を持つテーブルのデータも合わせて送信する、
処理を実行する制御部を備える情報処理装置。
(付記7) 前記制御部は、前記関連性を持つ複数のテーブルのデータを、前記第1のリレーショナルデータベースに格納する際に、前記複数のテーブルそれぞれの関連性を示す情報を第1の記憶部に記憶し、
前記送信する処理において、前記第1の記憶部を参照して、前記第2のリレーショナルデータベースに送信するテーブルのデータと関連性を持つテーブルのデータを特定する、ことを特徴とする付記6に記載の情報処理装置。
(付記8) 前記制御部は、前記第1のリレーショナルデータベースに格納されたテーブルのデータと、該データと関連性を持つテーブルのデータと、を前記第2のリレーショナルデータベースに送信する際に、同一トランザクション内で処理することを特徴とする付記6又は7に記載の情報処理装置。
(付記9) 前記制御部は、前記第1のリレーショナルデータベースに格納されたテーブルのデータを前記第2のリレーショナルデータベースに送信したことを示す情報を第2の記憶部に記憶し、
前記第1のリレーショナルデータベースに格納されたテーブルのデータを更新する際に、前記第2の記憶部を参照して、更新するデータが前記第2のリレーショナルデータベースに送信されていれば、当該データも更新する、
ことを特徴とする付記6~8のいずれかに記載の情報処理装置。
【符号の説明】
【0075】
14A 企業A用サーバ(情報処理装置)
14B 企業B用サーバ(情報処理装置)
16A 企業A用DBサーバ(リレーショナルデータベース)
16B 企業B用DBサーバ(リレーショナルデータベース)
52 関連情報管理テーブル(第1の記憶部)
54 同期情報管理テーブル(第2の記憶部)
190 CPU(制御部)