JP2012194602A - データストア制御装置、データストア制御プログラムおよびデータストア制御方法 - Google Patents

データストア制御装置、データストア制御プログラムおよびデータストア制御方法 Download PDF

Info

Publication number
JP2012194602A
JP2012194602A JP2011055965A JP2011055965A JP2012194602A JP 2012194602 A JP2012194602 A JP 2012194602A JP 2011055965 A JP2011055965 A JP 2011055965A JP 2011055965 A JP2011055965 A JP 2011055965A JP 2012194602 A JP2012194602 A JP 2012194602A
Authority
JP
Japan
Prior art keywords
data store
attribute
program
unit
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2011055965A
Other languages
English (en)
Other versions
JP5673246B2 (ja
Inventor
Yuji Mizobuchi
裕司 溝渕
Satoshi Munakata
聡 宗像
Toshihiro Odaka
敏裕 小高
Tomohiro Otake
智裕 大嶽
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2011055965A priority Critical patent/JP5673246B2/ja
Publication of JP2012194602A publication Critical patent/JP2012194602A/ja
Application granted granted Critical
Publication of JP5673246B2 publication Critical patent/JP5673246B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】データストアの保守作業を効率化することを課題とする。
【解決手段】データストア制御装置は、第1データストアに対する処理を記述したプログラムで定義される永続化対象のうち、第1データストアが管理方式の異なる第2データストアを参照することを示す第1属性を永続化対象から除外する。データストア制御装置は、プログラムの参照先を識別する第2属性を永続化対象として、プログラムに追加する追加部を有する。データストア制御装置は、追加された第2属性に対応する定義情報として、参照先を特定する特定情報を前記プログラムに定義する定義部を有する。データストア制御装置は、プログラムに定義される第1属性に対応した定義情報を、特定情報を用いて第2のデータストアから取得する処理の実行を示す情報に変更する。
【選択図】図3

Description

本発明は、データストア制御装置、データストア制御プログラムおよびデータストア制御方法に関する。
従来より、テーブル単位でデータを格納し、SQL(Structured Query Language)文を用いてデータ操作が実行されるRDB(Relational Database)が利用されている。例えば、Java(登録商標)では、RDBを扱うフレームワークとしてJPA(Java(登録商標) Persistence Application Programming Interface)が提供されている。
図17は、Java(登録商標)によるテーブル作成を説明する図である。図17に示すように、Java(登録商標)プログラム上で永続化対象のクラスはRDB上の1テーブルに相当し、各オブジェクトはRDB上のテーブルの各行に相当し、各フィールドはRDB上のテーブルの項目に相当する。つまり、図17に示したEmployeeクラスは、RDB上で社員テーブルを定義するものである。また、Employeeクラス内で定義される「id」、「name」、「position」各々は、社員テーブル上のカラム「社員ID」、「名前」、「役職」に対応する。
続いて、RDBの性質を利用してテーブル間で関係付ける例を説明する。図18は、参照関係を有するテーブル作成例を示す図である。図18に示すように、Java(登録商標)プログラム上で、「社員ID」と「名前」と「役職」を定義するEmployeeクラスと、「部署ID」と「部署名」を定義するDepartmentクラスとが参照関係にあるクラス図を実行する。この場合、データストアアクセッサは、「社員ID」、「名前」、「役職」、「部署ID<FK(foreign key)>」から形成される社員テーブルと、「部署ID」および「部署名」を有する部署テーブルをRDB上に生成する。つまり、社員テーブルの「部署ID<FK>」は、部署テーブルの「部署ID」を参照することが定義され、社員テーブルと部署テーブルとは参照関係にあることが定義される。このように、Java(登録商標)では、JPAを用いてRDBで管理可能な各種テーブルが作成されている。
近年では、クラウドコンピューティングの普及に伴って、従来から広く利用されているRDBの他に、分散KVS(Key-Value Store)等の新しいデータストアの利用が普及している。分散KVSは、サーバ間でのデータの一貫性保証を即時に実行する機能を有しないものの、複数のサーバでのデータ管理によるスケーラビリティや一部のサーバがダウンしてもサービスを継続できる高可用性を有し、RDBに比べてコストが安い。このようなことから、データの一貫性保証を即時にできるがコストが高いRDBと、コストが安く高可用性を有する分散KVSとの両方を用いてシステムを構築することが行われている。
このように、管理方式の異なるデータストアを利用したシステムでは、データストアを連携する技術やデータストアの参照アクセスを最適化する技術などが利用されている。例えば、管理方式の異なるデータストアを連携する技術として、各データストアに共通する基本操作を共通SQLと定義し、各データストア固有の操作については固有の言語を用いて操作する技術が利用されている。また、参照アクセスを最適化する技術として、Java(登録商標)におけるfinderメソッドのアクセスキーの依存関係と、getterメソッドやsetterメソッドによるアクセス状況とに基づいて、データストアへのアクセス回数を減らしたりすることが実施されている。
特開2002−297418号公報 特開2001−51879号公報 特開2007−66017号公報
しかしながら、従来の技術では、管理方式が異なるデータストアに跨ってデータを登録する場合に、外部キーを用いてデータストア間が関連付けられるので、データの配置を変更するなどのデータストアの保守作業を効率的に実行できないという問題があった。
上述したJPAを例にして説明すると、JPAでは、RDBにテーブルを作成するプログラム内に、RDBのデータが分散KVSを参照していることを外部キーで定義する。すなわち、JPAで複数のデータストアを扱う場合、データストアを跨るリレーションを有するテーブル間での外部参照は、アプリ側で実装することになる。このため、データの配置変更に伴ってアプリを修正するなどデータベース以外の保守を行うことになり、保守を行う範囲が広くなるので、データベースの保守作業を容易に行うことができず、効率的であるとは言い難い。
第1の側面では、データストアの保守作業を効率化するデータストア制御装置、データストア制御プログラムおよびデータストア制御方法を提供することを目的とする。
第1の案では、データストア制御装置は、第1データストアに対する処理を記述したプログラムで定義される永続化対象のうち、前記第1データストアが管理方式の異なる第2データストアを参照することを示す第1属性を永続化対象から除外する除外部を有する。データストア制御装置は、前記プログラムの参照先を識別する第2属性を永続化対象として、前記プログラムに追加する追加部を有する。データストア制御装置は、前記追加された第2属性に対応する定義情報として、前記参照先を特定する特定情報を前記プログラムに定義する定義部を有する。データストア制御装置は、前記プログラムに定義される前記第1属性に対応した定義情報を、前記特定情報を用いて前記第2のデータストアから取得する処理の実行を示す情報に変更する変更部を有する。
データストアの保守作業を効率化できる。
図1は、実施例1に係るアプリケーションサーバを含むシステムの全体構成を示す図である。 図2は、テーブルの参照関係を示す図である。 図3は、実施例2に係るアプリケーションサーバの構成を示すブロック図である。 図4は、設定ファイルテーブルに記憶される設定ファイルの例を示す図である。 図5は、識別属性およびリレーションが共に設定されている例を示す図である。 図6は、識別属性には値が設定されているがリレーションが設定されていない例を示す図である。 図7は、識別属性には値が設定されていないがリレーションが設定されている例を示す図である。 図8は、識別属性およびリレーションが共に設定されていない例を示す図である。 図9は、データアクセス部が実行するプログラムの例を示す図である。 図10は、図9に示したトランザクションインスタンスの取得の実装例を示す図である。 図11は、変換前のEmployeeクラスの例を示す図である。 図12は、リレーションを永続化対象から除外して識別属性を記述した例を示す図である。 図13は、変換後のEmployeeクラスの例を示す図である。 図14は、アプリケーション変換処理の流れを示すフローチャートである。 図15は、クラス変換後のプログラムの実行によって作成されるテーブルの例を示す図である。 図16は、データストア制御プログラムを実行するコンピュータのハードウェア構成例を示す図である。 図17は、Java(登録商標)によるテーブル作成を説明する図である。 図18は、参照関係を有するテーブル作成例を示す図である。
以下に、本願の開示するデータストア制御装置、データストア制御プログラムおよびデータストア制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
図1は、実施例1に係るアプリケーションサーバを含むシステムの全体構成を示す図である。図1に示すように、このシステムは、データストアマシン1およびデータストアマシン2各々とアプリケーションサーバ3とがネットワークを介して接続される。このシステムは、アプリケーションサーバ3がデータストアマシン1またはデータストアマシン2に記憶されるデータを用いて各処理を実行するクラウドコンピューティングを実現する。
データストアマシン1は、RDB(Relational Database)を用いてデータを記憶するサーバである。データストアマシン2は、KVS(Key-Value Store)を用いてデータを記憶するサーバである。
アプリケーションサーバ3は、除外部3a、追加部3b、定義部3c、変更部3dを有し、データストアマシン1またはデータストアマシン2に対して、テーブル作成、データ登録、データ更新、データ削除等を実行するサーバである。
例えば、アプリケーションサーバ3がJPA(Java(登録商標) Persistence Application Programming Interface)を用いて、データストアマシン1とデータストアマシン2とが参照関係にあるテーブルを作成する例について説明する。
ここで、はじめに、データストアマシン1とデータストアマシン2にあるテーブルが参照関係にある例を説明する。図2は、テーブルの参照関係を示す図である。図2に示すように、RDBは、「社員ID、役職、名前、部署ID」から形成されるレコードを有する社員テーブルを有し、KVSは、「部署ID、部署名」から形成されるレコードを有する社員テーブルを有する。このような状況において、RDBの社員テーブルとKVSの部署テーブルは「部署ID」で関連付けられており、社員テーブルから関連する部署テーブルのレコードを取得することが出来る。このような関係を参照関係にあるという。
次に、アプリケーションサーバ3がJPAを用いて、データストアマシン1にデータストアマシン2を参照するテーブルを生成する第1プログラムを実行したとする。この場合、除外部3aは、データストアマシン1に作成するテーブルに関して定義した永続化対象のうち、データストアマシン1のテーブルが他のテーブルを参照することを示す第1属性をプログラムの永続化対象から除外する。続いて、追加部3bは、データストア1のテーブルからデータストア2のテーブルを識別する第2属性を永続化対象としてプログラムに追加する。そして、定義部3cは、追加された第2属性に対応する定義情報として参照先を特定する特定情報をプログラムに含めるようにする。さらに、変更部3dは、プログラムに定義される第1属性に対応した定義情報を、特定情報を用いてデータストアマシン2から取得する処理の実行を示す情報に変更する。
このように、アプリケーションサーバ3は、外部キーが定義されたプログラムが実行された場合でも、外部キーを使わずに、管理方式が異なるデータベース間が結びつくように、プログラム内容を書き換えることができる。したがって、データストアマシン1やデータストアマシン2のデータ配置を変更した場合でも、プログラムを修正しなくて済むので、管理方式が異なるデータストアに跨ってデータが登録されている状況でも、データストアの保守作業を効率的に実行できる。
次に、実施例2に係るアプリケーションサーバについて説明する。ここでは、アプリケーションサーバの構成、具体例、処理の流れ、実施例2による効果を説明する。なお、システム構成は図1と同様とするので、システム構成およびアプリケーションサーバ以外は省略する。また、実施例2では、JPAを用いたプログラムで記述されるアプリケーションを例にして説明する。
[アプリケーションサーバの構成]
図3は、実施例2に係るアプリケーションサーバの構成を示すブロック図である。図3に示すように、アプリケーションサーバ10は、変換前アプリテーブル11、変換後アプリテーブル12、設定ファイルテーブル13、変換前実行部14、永続化クラス変換部15、変換後実行部16、データアクセス部17、データアクセッサ18を有する。
なお、変換前アプリテーブル11、変換後アプリテーブル12、設定ファイルテーブル13は、半導体メモリ素子やハードディスクなどに設けられる。また、上記テーブル以外の各制御部は、CPU(Central Processing Unit)などによって実行される。
変換前アプリテーブル11は、開発者が生成したアプリケーションを記憶する。例えば、変換前アプリテーブル11は、RDBでデータを管理するデータストアマシン1に対して、テーブル作成、データ登録、データ更新、データ削除等の処理を実行するアプリケーションを記憶する。また、変換前アプリテーブル11は、KVSでデータを管理するデータストアマシン2に対して、テーブル作成、データ登録、データ更新、データ削除等の処理を実行するアプリケーションを記憶する。
別例としては、変換前アプリテーブル11は、データストアマシン1に対するデータ処理であって、データストアマシン2のテーブルを参照する外部キーが設定されたアプリケーションを記憶する。同様に、変換前アプリテーブル11は、データストアマシン2に対するデータ処理であって、データストアマシン1のテーブルを参照する外部キーが設定されたアプリケーソンを記憶する。なお、ここで記憶されるアプリケーションは、アプリケーション開発者やアプリケーションサーバ10の管理者等によって格納される。変換前のアプリケーション11は、変換前アプリケーションに対応付けて、生成された日時や更新回数などを記憶することもできる。
変換後アプリテーブル12は、永続化クラス変換部15によって変換されたアプリケーションを記憶する。なお、ここで記憶されるアプリケーションは、後述する永続化クラス変換部15の変更部15dによって格納および更新される。また、変換後アプリテーブル12は、変換後のアプリケーションに対応付けて、変換された日時や変換回数などを記憶することもできる。
設定ファイルテーブル13は、データストアごとに配置されるクラスの設定ファイルを記憶する。図4は、設定ファイルテーブル13に記憶される設定ファイルの例を示す図である。図4に示すように、データストアとして、URL(Uniform Resource Locator)が「http//localdomain/RDB」であり、「RDB」で管理するデータストア名「RDB4Update」が設定されている。そして、このデータストアのクラスとして「Entity Class=Department」が設定されている。同様に、データストアとして、URLが「http//localdomain/KVS」であり、「KVS」で管理するデータストア名「KVS」が設定されている。そして、このデータストアのクラスとして「Entity Class=Employee」が設定されている。つまり、図4では、DepartmentクラスがRDBに配置され、EmployeeクラスがKVSに配置されることを、マップで管理することが示されている。
変換前実行部14は、管理者等の指示操作を受け付けると、指定されたアプリケーションを変換前アプリテーブル11から読み出して実行する。なお、変換前実行部14は、マウスなどの入力装置やタッチパネルなどの出力装置等から指示操作を受け付けることができ、さらに、ネットワークを介して他のサーバから指示操作を受け付けることもできる。実施例2では、変換前実行部14が、データストアマシン1に対するデータ処理であって、データストアマシン2のテーブルを参照する外部キーが設定されたアプリケーションAを実行したとする。
永続化クラス変換部15は、除外部15a、追加部15b、定義部15c、変更部15dを有し、これらによって、変換前実行部14によって実行されたアプリケーションを変換して、変換後アプリテーブル12に格納する。
除外部15aは、永続化クラスのクラス間の参照関係を表すリレーション属性を永続化対象から除外する。例えば、除外部15aは、データストアマシン1にテーブルを作成するアプリケーションAにおいて、アプリケーションAがデータストアマシン1と管理方式が異なるデータストアマシン2を参照することを示すリレーション属性を永続化対象から除外する。
つまり、除外部15aは、アプリケーションA内のクラス1においてリレーションを表すアノテーションで記述された参照先オブジェクトをリレーション属性として特定し、特定したオブジェクトを永続化対象から除外する。言い換えると、除外部15aは、リレーション属性をデータストアマシン1の管理対象から除外する。
追加部15bは、クラス1の参照先を識別する識別属性を永続化対象としてアプリケーションAのクラス1に追加する。上記例を用いて説明すると、追加部15bは、除外部15aによってリレーションが管理対象から除外されたアプリケーションAに対して、除外されたリレーションによって指定されていた参照先を識別する識別属性をアプリケーションAに新たに追加する。
定義部15cは、追加された識別属性に対応する定義情報として、参照先を特定する特定情報をアプリケーションAに定義する。上記例を用いて説明すると、定義部15cは、識別属性が新たに記述されたアプリケーションAに対して、識別属性のsetterメソッドとgetterメソッドを新たに記述する。
変更部15dは、アプリケーションAのクラス1に定義されているリレーション属性の定義内容を、定義部15cによって定義されたプライマリキーを用いてデータストアマシン2から参照先のオブジェクトを取得する処理に変更する。上記例を用いて説明すると、変更部15dは、識別属性が新たに記述されたアプリケーションAに対して、外部キーとして設定されていたリレーション属性に対して定義されるsetterメソッドとgetterメソッドを修正する。そして、変更部15dは、変換した変換後のアプリケーションAを変換後アプリテーブル12に格納する。
ここで、定義部15cおよび変更部15dは、図5〜図8に示したいずれの条件であっても整合性が取れるように、setterメソッドとgetterメソッドの定義または修正を実行する。図5は、識別属性およびリレーションが共に設定されている例を示す図である。図6は、識別属性には値が設定されているがリレーションが設定されていない例を示す図である。図7は、識別属性には値が設定されていないがリレーションが設定されている例を示す図である。図8は、識別属性およびリレーション共に設定されていない例を示す図である。
具体的には、図5は、データストアマシン1のEmployeeテーブルを定義するアプリケーションAに、「社員ID=003、役職=一般社員、名前=山田、識別属性(dep_id)=B001」が設定されている。さらに、Employeeテーブルの参照先であるデータストアマシン2のDepartmentテーブルを定義するアプリケーションBに、「部署ID=B001、部署名=購買」が設定されている状況である。
図6は、データストアマシン1のEmployeeテーブルを定義するアプリケーションAに、「社員ID=003、役職=一般社員、名前=山田、識別属性(dep_id)=B001」が設定されている。一方、データストアマシン2のDepartmentテーブルを定義するアプリケーションBには何も設定されていない状況である。
図7は、データストアマシン1のEmployeeテーブルを定義するアプリケーションAに、「社員ID=003、役職=一般社員、名前=山田、識別属性(dep_id)=NULL」が設定されている。さらに、Employeeテーブルの参照先であるデータストアマシン2のDepartmentテーブルを定義するアプリケーションBに、「部署ID=B001、部署名=購買」が設定されている状況である。
図8は、データストアマシン1のEmployeeテーブルを定義するアプリケーションAに、「社員ID=003、役職=一般社員、名前=山田、識別属性(dep_id)=NULL」が設定されている。さらに、データストアマシン2のDepartmentテーブルを定義するアプリケーションBに、「部署ID=B001、部署名=購買」が設定されているが、EmployeeテーブルとDepartmentテーブルとは参照関係にない状況である。
したがって、定義部15cおよび変更部15dは、アプリケーションAの変換前と変換後とでテーブル構成等が変わらないように、様々な状況に対応可能なsetterメソッドとgetterメソッドを生成する。なお、具体例を挙げた説明は後述するので、ここでは省略する。
図3に戻り、変換後実行部16は、変換後アプリテーブル12から変換後のアプリケーションを読み出して実行する。変換後実行部16は、変換後のアプリケーションAを実行した場合、データストアマシン1に対するテーブル作成要求をデータアクセス部17に出力する。
データアクセス部17は、設定ファイルテーブル13に記憶されるクラスごとの設定ファイルに基づいて、クラスごとにアクセスするデータストアを定義するMetaEntityManagerを生成する。例えば、データアクセス部17は、永続化クラスと配置先データストアに対応するアクセッサをマップで保持する。続いて、データアクセス部17は、データストアと配置されるクラスの一覧ファイルとを設定ファイルテーブル13から取り込み、マップ内に、クラスをキーにして配置先データストアのデータアクセッサであるEntityManagerを設定する。そして、データアクセス部17は、作成部17a、更新部17b、参照部17c、トランザクション管理部17dを有し、これらと図9に示したプログラムとにしたがって処理を実行する。図9は、データアクセス部が実行するプログラムの例を示す図である。
作成部17aは、変換後実行部16によって実行されたアプリケーションからCreateメッセージを受信した場合、当該アプリケーションのクラスに対応するデータアクセッサを特定する。そして、作成部17aは、特定したデータアクセッサを実行するデータアクセッサ18にCreateメッセージを送信する。例えば、作成部17aは、データストアマシン1へのCreateメッセージを受信した場合に、rdb_EntityManagerにCreateメッセージを送信する。また、作成部17aは、データストアマシン2へのCreateメッセージを受信した場合に、kvs_EntityManagerにCreateメッセージを送信する。
更新部17bは、JPAのpersist関数を複数データストアに対応付けたものであり、図9に示した更新用メソッドを実行する。例えば、更新部17bは、変換後実行部16によって実行されたアプリケーションがpersist関数を実行した場合、当該persist関数の実行先アプリケーションのクラスに対応するデータアクセッサを特定する。そして、更新部17bは、特定したデータアクセッサを実行するデータアクセッサ18に処理実行依頼を送信する。
一例を挙げると、更新部17bは、persist関数におけるEntityの配置先がデータストアマシン1である場合に、rdb_EntityManagerに更新処理の実行を指示する。また、更新部17bは、persist関数におけるEntityの配置先がデータストアマシン2である場合に、kvs_EntityManagerに更新処理の実行を指示する。
参照部17cは、JPAのfind関数を複数データストアに対応付けたものであり、図9に示した参照用メソッドを実行する。例えば、参照部17cは、変換後実行部16によって実行されたアプリケーションがfind関数を実行した場合、当該find関数の実行先アプリケーションのクラスに対応するデータアクセッサを特定する。そして、参照部17cは、特定したデータアクセッサを実行するデータアクセッサ18に処理実行依頼を送信する。
一例を挙げると、参照部17cは、find関数におけるクラスの配置先がデータストアマシン1である場合に、rdb_EntityManagerに参照処理の実行を指示する。また、参照部17cは、find関数におけるクラスの配置先がデータストアマシン2である場合に、kvs_EntityManagerに参照処理の実行を指示する。
トランザクション管理部17dは、JPAにおけるgetTransactionを複数データストアに対応付けたものであり、図9に示したトランザクションインスタンスの取得を実行する。このトランザクション管理部17dは、図10に例示した複数のトランザクションを管理するMetaTransactionクラスを実装し、各データストアマシンへのトランザクションを同時に実行して終了させるように、各トランザクションを管理する。図10は、図9に示したトランザクションインスタンスの取得の実装例を示す図である。
データアクセッサ18は、各データストアマシンに対応したアクセッサを保持し、データアクセス部17から入力された各種処理を対応するアクセッサに振り分ける。そして、データアクセッサ18は、各アクセッサを用いてデータストアに処理を実行する。例えば、データアクセッサ18は、データストアマシン1へのテーブル作成処理、言い換えると、Employeeクラスの実行要求を受信した場合に、データストアマシン1に対応したアクセッサを用いて、テーブル作成処理をデータストアマシン1に実行する。同様に、データアクセッサ18は、データストアマシン2へのテーブル作成処理、言い換えると、Departmentクラスの実行要求を受信した場合に、データストアマシン2に対応したアクセッサを用いて、テーブル作成処理をデータストアマシン2に実行する。
[具体例]
次に、図11〜図13を用いて、プログラム変換の具体例を説明する。図11は、変換前のEmployeeクラスの例を示す図であり、図12は、リレーションを永続化対象から除外して識別属性を記述した例を示す図であり、図13は、変換後のEmployeeクラスの例を示す図である。ここでは、JPAで記述されるプログラムを例にして説明する。
変換前実行部14は、図11に示したプログラムを有するアプリケーションを実行する。すると、除外部15aは、図11の(A)に示したアノテーション「@OneToOne」に記述される「private Department dep;」を、図12に示すように「private transient Department dep;」に変更する。この結果、「Department dep」が永続化対象から除外され、各データストアマシンの管理対象外となる。
追加部15bは、図12に示すように、図11の状態では記述されていなかった「private String dep_id」をプログラム内に新たに記述する。この結果、識別属性としてString型の「dep_id」が永続化対象として新たに定義される。
そして、定義部15cは、図13の(B)に示すように、識別属性「dep_id」のgetterメソッドをプログラム内に新たに定義する。具体的には、定義部15cは、Employeeクラス内のリレーション属性「this.dep」に値が設定されていれば、リレーション先の識別属性の値を返し、クラス内のリレーション属性「this.dep」に値が設定されていなければ、識別属性の値を返す。つまり、定義部15cは、リレーション先であるDepatmentクラスに値が設定されている場合には、Depatmentクラスで設定されている識別属性の値、言い換えると、参照先のオブジェクトのプライマリキーを返す。また、定義部15cは、リレーション先であるDepatmentクラスに値が設定されている場合には、Employeeクラスの識別属性の値を返す。
また、定義部15cは、図13の(C)に示すように、識別属性「dep_id」のsetterメソッドをプログラム内に新たに定義する。具体的には、定義部15cは、識別属性「dep_id」に「this.dep_id」の値を設定する。
続いて、変更部15dは、図13の(D)に示すように、Employeeクラス内に既に定義されているリレーション属性「dep」のgettrメソッドを変更する。具体的には、変更部15dは、Employeeクラス内のリレーション属性「this.dep」にnullが設定され、かつ、Employeeクラス内の識別属性「this.dep_id」にnullが設定されていなければ、識別属性を用いてデータストアからオブジェクトを取得して応答する。また、変更部15dは、Employeeクラス内のリレーション属性「this.dep」にnullが設定されていない、または、Employeeクラス内の識別属性「this.dep_id」にnullが設定されている場合、リレーション属性「dep」の値を応答する。
つまり、変更部15dは、クラス内のリレーション属性がnullで、かつ、クラス内の識別属性がnullでなければ、データアクセス部17やデータストアクセッサ18を介して、参照先のオブジェクトを取得するように、getterメソッドを変更する。
また、変更部15dは、図13の(E)に示すように、Employeeクラス内に既に定義されているリレーション属性「dep」のsettrメソッドを変更する。具体的には、変更部15dは、Employeeクラス内のリレーション属性「this.dep」にリレーション属性「dep」の値を設定する。そして、変更部15dは、設定された値がnullであれば、識別属性「dep_id」にnullを設定する。また、変更部15dは、設定された値がnullでなければ、リレーション属性のIDを識別属性「dep_id」に設定する。
つまり、変更部15dは、リレーション属性に参照先のオブジェクトを設定した結果、nullでなければ、識別属性に参照先のオブジェクトのプライマリキーを設定し、nullであれば、識別属性にnullを設定するように、setterメソッドを変更する
このようにして変換された変換後のアプリケーションは、変換後実行部16によって実行される。すると、データアクセス部17の作成部17aは、実行された変換後のアプリケーションを解析して、データストアマシン1へのテーブル作成処理をデータアクセッサ18に出力する。データアクセッサ18は、データストアマシン1に対応したデータアクセッサを介して、データストマシン1にテーブル作成を実行する。
[処理の流れ]
次に、アプリケーションプログラムの変換処理の流れを説明する。図14は、アプリケーション変換処理の流れを示すフローチャートである。
図14に示すように、変換前実行部14が変換前のアプリケーションを実行すると(S101肯定)、追加部15bは、実行された変換前のアプリケーションのリレーションを切断し、当該変換前のアプリケーションに識別属性を追加する(S102)。
続いて、定義部15cは、変換前のアプリケーションに追加した識別属性に対して、図5〜図8に示したどの条件でも整合性が取れるように、getterメソッドおよびsetterメソッドを定義した定義内容を変換前のアプリケーションに追加する(S103)。さらに、変更部15dは、変換前のアプリケーションに既に記述されているリレーション属性のgetterメソッドおよびsetterメソッドを、図5〜図8に示したどの条件でも整合性が取れるように修正する(S104)。
ここまでの処理を実行することで、アプリケーションサーバ10は、図11に示した変換前のEmployeeクラスを図13に示した変換後のEmployeeクラスに変換できる。
その後、データアクセス部17は、設定ファイルテーブル13に記憶されるクラスごとの設定ファイルに基づいて、クラスごとにアクセスするデータストアを定義するMetaEntityManagerを生成する(S105)。このとき、データアクセス部17は、トランザクション管理部17dが実行するトランザクションインスタンスも生成する。この処理によって、アプリケーションサーバ10は、図4に示した設定ファイル等を基に、図9に示したMetaEntityManagerおよび図10に示したトランザクションインスタンスを生成する。
そして、変換後実行部16は、S101〜S104の処理によって変換された変換後のアプリケーションを実行する(S106)。このとき、データアクセッサ18は、各データストアマシンに対応したアクセッサに、データアクセス部17から入力された各種処理を振り分け、各アクセッサを用いてデータストアに処理を実行する。また、トランザクション管理部17dは、MetaTransactionクラスに基づいて、実行されたトランザクションが同時に実行されて同時に終了するように制御する。
[実施例2による効果]
実施例2によれば、データストアを跨ぐ参照関係があってもデータ登録が可能になり、ソースコードを修正することなくデータの配置を変更可能になる。各データストアにおけるテーブル作成時にリレーションを外部キー(Foreign key)として設定しなくなり、テーブル作成が可能になる。
図15は、クラス変換後のプログラムの実行によって作成されるテーブルの例を示す図である。図15の左図に示すように、アプリケーションサーバ10は、Departmentクラスへのリレーションを有するEmployeeクラスが実行された場合に、Employeeクラスが有するリレーションを永続化対象外として、新たな属性である識別属性「dep_id」を定義する。
アプリケーションサーバ10は、図15の左図にように変換したクラスを実行することで、データストアマシン1に「社員ID、役職、名前、dep_id」の社員テーブルを生成する。このとき、アプリケーションサーバ10は、社員テーブルの「dep_id」に、別のクラスによってデータストアマシン2に生成された部署テーブル「部署ID、部署名」の部署IDを取得して格納する。この結果、アプリケーションサーバ10は、社員テーブルが部署テーブルを参照する関係にある場合でも、社員テーブルに外部キーを設定することなく、参照関係を維持することができる。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
(データストアの種別)
実施例1や2では、RDBで管理される社員テーブルがKVSで管理される部署テーブルを参照する例について説明したが、これに限定されるものではない。例えば、対象となるDBの種別や参照関係は任意に設定変更できる。また、テーブルの名称等もあくまで例示であり、これに限定されるものではない。
(処理種別)
実施例1や2では、テーブル作成を実行するアプリケーションを例にして説明したが、これに限定されるものではない。例えば、テーブルにデータを登録するアプリケーション、テーブルのデータを更新するアプリケーション、テーブルからデータを削除するアプリケーションなどについても、実施例1や2と同様の処理を実行することができる。また、データアクセス部17は、任意によって実行させないように設定し、予め定めたデータアクセス部を用いることもできる。
(プログラム言語)
実施例2等では、Java(登録商標)においてJPAを利用するプログラムを例にして説明したが、これに限定されるものではなく、C言語など任意にプログラムを用いることができる。その場合でも、実施例2等で説明した処理と同様の処理を実行することで、実施例2等と同様の効果を得ることができる。
(変換例)
実施例2等では、実行されたアプリケーションAに対して、識別属性や識別属性のsetterメソッド等を追加し、元々あるリレーション属性のsetterメソッドを変更することで、変換後にアプリケーションを生成する例を説明したが、これに限定されるものではない。例えば、変換前のアプリケーションAを複製した複製後のアプリケーションAに対して実施例2等の変換処理を実行してもよく、実施例2等の変換処理によって別ファイルのアプリケーションを生成するようにしてもよい。
(システム)
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、例えば追加部15bと定義部15cとを統合するなど各装置の分散・統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPU(Central Processing Unit)および当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
(プログラム)
ところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することができる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。
図16は、データストア制御プログラムを実行するコンピュータのハードウェア構成例を示す図である。図16に示すように、コンピュータシステム100は、バス101に、CPU102、入力装置103、出力装置104、通信インタフェース105、HDD(Hard Disk Drive)106、RAM(Random Access Memory)107が接続される。
入力装置103は、マウスやキーボードであり、出力装置104は、ディスプレイなどであり、通信インタフェース105は、NIC(Network Interface Card)などのインタフェースである。HDD106には、データストア制御プログラム106aととともに、図3に示した各テーブルに記憶される情報が記憶される。記録媒体の例としてROM104を例に挙げたが、HDD、RAM、CD−ROM等の他のコンピュータ読み取り可能な記録媒体に各種プログラムを格納しておき、コンピュータに読み取らせることとしてもよい。なお、記憶媒体を遠隔地に配置し、コンピュータが、その記憶媒体にアクセスすることでプログラムを取得して利用してもよい。また、その際、取得したプログラムをそのコンピュータ自身の記録媒体に格納して用いてもよい。
CPU102は、データストア制御プログラム106aを読み出してRAM107に展開することで、図1や図3で説明した各機能を実行するデータストア制御プロセス107aを動作させる。すなわち、データストア制御プロセス107aは、除外部3a、追加部3b、定義部3c、変更部3dと同様の機能を実行する。また、データストア制御プロセス107aは、永続化クラス変換部15、データアクセス部17と同様の機能も実行することもできる。このようにコンピュータシステム100は、プログラムを読み出して実行することでアドレス学習方法を実行する情報処理装置として動作する。
1 データストア(RDB)
2 データストア(KVS)
3、10 アプリケーションサーバ
3a、15a 除外部
3b、15b 追加部
3c、15c 定義部
3d、15d 変更部
11 変換前アプリテーブル
12 変換後アプリテーブル
13 設定ファイルテーブル
14 変換前実行部
15 永続化クラス変換部
16 変換後実行部
17 データアクセス部
17a 作成部
17b 更新部
17c 参照部
17d トランザクション管理部
18 データアクセッサ

Claims (7)

  1. 第1データストアに対する処理を記述したプログラムで定義される永続化対象のうち、前記第1データストアが管理方式の異なる第2データストアを参照することを示す第1属性を、前記プログラムの永続化対象から除外する除外部と、
    前記プログラムの参照先を識別する第2属性を永続化対象として、前記プログラムに追加する追加部と、
    前記追加された第2属性に対応する定義情報として、前記参照先を特定する特定情報を前記プログラムに定義する定義部と、
    前記プログラムに定義される前記第1属性に対応した定義情報を、前記特定情報を用いて前記第2のデータストアから取得する処理の実行を示す情報に変更する変更部と
    を有することを特徴とするデータストア制御装置。
  2. 前記定義部は、前記定義情報として、前記第2属性に所定値を設定する設定関数と、前記第1属性に値が設定されている場合には、前記第2のデータストアに対する処理を記述した別プログラムに定義される第2属性の値を応答し、前記第1属性に値が設定されていない場合には、前記設定関数によって設定された所定値を応答する応答関数とを定義することを特徴とする請求項1に記載のデータストア制御装置。
  3. 前記変更部は、前前記第1属性に所定値を設定し、設定された所定値がNULLであれば前記第2属性の値をNULLに設定し、設定された所定値がNULLでなければ前記第1属性の識別子を前記第2属性に設定する処理の実行を示す情報に、前記プログラムに定義される前記第1属性に対応した設定関数に定義される情報を変更するとともに、前記第1属性の値がNULLでありかつ前記第2属性の値がNULLでなければ前記プライマリキーを用いて取得したオブジェクトを応答し、前記第1属性の値がNULLでない又は前記第2属性の値がNULLであれば前記第1属性に設定されている値を応答する処理の実行を示す情報に、前記プログラムに定義される前記第1属性に対応した応答関数に定義される情報を変更することを特徴とする請求項1に記載のデータストア制御装置。
  4. 前記第1データストアに配置されるテーブルと、前記第2データストアに配置されるテーブルとを定義した設定ファイルに基づいて、前記各テーブルごとにアクセスするデータストアのアクセッサを生成する生成部と、
    前記生成されたデータストアごとのアクセッサを用いて、前記第1データストアまたは前記第2データストアに対してアクセスを実行するアクセス実行部と
    をさらに有することを特徴とする請求項1〜3のいずれか一つに記載のデータストア制御装置。
  5. 前記アクセス実行部は、前記第1データストアまたは前記第2データストアに対する複数のアクセスを同時に開始して同時に終了させることを特徴とする請求項4に記載のデータストア制御装置。
  6. コンピュータに、
    第1データストアに対する処理を記述したプログラムで定義される永続化対象のうち、前記第1データストアが管理方式の異なる第2データストアを参照することを示す第1属性を、前記プログラムの永続化対象から除外し、
    前記プログラムの参照先を識別する第2属性を永続化対象として、前記プログラムに追加し、
    前記追加した第2属性に対応する定義情報として、前記参照先を特定する特定情報を前記プログラムに定義し、
    前記プログラムに定義される前記第1属性に対応した定義情報を、前記特定情報を用いて前記第2のデータストアから取得する処理の実行を示す情報に変更する
    処理を実行させることを特徴とするデータストア制御プログラム。
  7. コンピュータが実行する制御方法であって、
    第1データストアに対する処理を記述したプログラムで定義される永続化対象のうち、前記第1データストアが管理方式の異なる第2データストアを参照することを示す第1属性を、前記プログラムの永続化対象から除外し、
    前記プログラムの参照先を識別する第2属性を永続化対象として、前記プログラムに追加し、
    前記追加した第2属性に対応する定義情報として、前記参照先を特定する特定情報を前記プログラムに定義し、
    前記プログラムに定義される前記第1属性に対応した定義情報を、前記特定情報を用いて前記第2のデータストアから取得する処理の実行を示す情報に変更する
    ことを特徴とするデータストア制御方法。
JP2011055965A 2011-03-14 2011-03-14 データストア制御装置、データストア制御プログラムおよびデータストア制御方法 Expired - Fee Related JP5673246B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011055965A JP5673246B2 (ja) 2011-03-14 2011-03-14 データストア制御装置、データストア制御プログラムおよびデータストア制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011055965A JP5673246B2 (ja) 2011-03-14 2011-03-14 データストア制御装置、データストア制御プログラムおよびデータストア制御方法

Publications (2)

Publication Number Publication Date
JP2012194602A true JP2012194602A (ja) 2012-10-11
JP5673246B2 JP5673246B2 (ja) 2015-02-18

Family

ID=47086480

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011055965A Expired - Fee Related JP5673246B2 (ja) 2011-03-14 2011-03-14 データストア制御装置、データストア制御プログラムおよびデータストア制御方法

Country Status (1)

Country Link
JP (1) JP5673246B2 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07295868A (ja) * 1994-04-27 1995-11-10 Hitachi Ltd データベースの整合性制約管理方法
JPH1091494A (ja) * 1996-09-19 1998-04-10 Hitachi Ltd データベース操作プログラムの変換方法および変換装置
JP2009544064A (ja) * 2006-03-23 2009-12-10 マイクロソフト コーポレーション 増分ビューの保守を用いたマッピングアーキテクチャ
JP2010123060A (ja) * 2008-11-21 2010-06-03 Internatl Business Mach Corp <Ibm> 未知のオブジェクトにアクセスする方法
US20100211939A1 (en) * 2009-02-18 2010-08-19 International Business Machines Corporation Processing an object-oriented query to retrieve data from a data source

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07295868A (ja) * 1994-04-27 1995-11-10 Hitachi Ltd データベースの整合性制約管理方法
JPH1091494A (ja) * 1996-09-19 1998-04-10 Hitachi Ltd データベース操作プログラムの変換方法および変換装置
JP2009544064A (ja) * 2006-03-23 2009-12-10 マイクロソフト コーポレーション 増分ビューの保守を用いたマッピングアーキテクチャ
JP2010123060A (ja) * 2008-11-21 2010-06-03 Internatl Business Mach Corp <Ibm> 未知のオブジェクトにアクセスする方法
US20100211939A1 (en) * 2009-02-18 2010-08-19 International Business Machines Corporation Processing an object-oriented query to retrieve data from a data source

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
溝渕 裕司: "クラウド時代のデータ自動最適配置技術の開発・評価", 情報処理学会研究報告, vol. 平成22年度 4 [CD−ROM], JPN6014037406, 4 January 2011 (2011-01-04), JP, pages 2010 - 170, ISSN: 0002956188 *

Also Published As

Publication number Publication date
JP5673246B2 (ja) 2015-02-18

Similar Documents

Publication Publication Date Title
US11782892B2 (en) Method and system for migrating content between enterprise content management systems
US11138220B2 (en) Generating data transformation workflows
JP6113693B2 (ja) Hadoopにおける強化されたSQLライクなクエリのためのバックグラウンドフォーマット最適化
US9081837B2 (en) Scoped database connections
US8751437B2 (en) Single persistence implementation of business objects
US9208212B2 (en) Field extensibility in a multi-tenant environment with columnar database support
US9280568B2 (en) Zero downtime schema evolution
US10394805B2 (en) Database management for mobile devices
JP5454201B2 (ja) データストア切替装置、データストア切替方法およびデータストア切替プログラム
US20150363435A1 (en) Declarative Virtual Data Model Management
US11853314B2 (en) Systems and methods for generating, deploying, and managing data infrastructure stacks
JP2018060570A (ja) 単一テーブルから複数テーブルへの参照データセグメント化
US10944814B1 (en) Independent resource scheduling for distributed data processing programs
US11789971B1 (en) Adding replicas to a multi-leader replica group for a data set
Shabani et al. Possibilities offered by Google App Engine for developing distributed applications using datastore
JP5673246B2 (ja) データストア制御装置、データストア制御プログラムおよびデータストア制御方法
US11468101B2 (en) Context-rich key framework implementations for global concept management
JP6680897B2 (ja) 計算機システム及び分析ソースデータ管理方法
Singh NoSQL: A new horizon in big data
US20230281339A1 (en) Centralized data transformation in a multi-tenant computing environment
US11803568B1 (en) Replicating changes from a database to a destination and modifying replication capacity
Eisa Parallel Processing for Data Retrieval in Odoo Enterprise Resource Planning Reporting System
CN118043800A (zh) 用于提供跨微服务查询优化的系统和方法
CN117009327A (zh) 一种数据处理方法、装置及计算机设备、介质
Gannouni et al. A Critical Comparison for Data Sharing Approaches.

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131129

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140620

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140902

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141104

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141202

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141215

R150 Certificate of patent or registration of utility model

Ref document number: 5673246

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees