JP2016115223A - データベース管理システム、データベース管理方法、およびプログラム。 - Google Patents

データベース管理システム、データベース管理方法、およびプログラム。 Download PDF

Info

Publication number
JP2016115223A
JP2016115223A JP2014254670A JP2014254670A JP2016115223A JP 2016115223 A JP2016115223 A JP 2016115223A JP 2014254670 A JP2014254670 A JP 2014254670A JP 2014254670 A JP2014254670 A JP 2014254670A JP 2016115223 A JP2016115223 A JP 2016115223A
Authority
JP
Japan
Prior art keywords
database
schema
customer
sql
information
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.)
Pending
Application number
JP2014254670A
Other languages
English (en)
Inventor
信一郎 遠藤
Shinichiro Endo
信一郎 遠藤
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.)
Canon Marketing Japan Inc
Canon IT Solutions Inc
Original Assignee
Canon Marketing Japan Inc
Canon IT Solutions Inc
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 Canon Marketing Japan Inc, Canon IT Solutions Inc filed Critical Canon Marketing Japan Inc
Priority to JP2014254670A priority Critical patent/JP2016115223A/ja
Publication of JP2016115223A publication Critical patent/JP2016115223A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

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

Abstract

【課題】スキーマの修正履歴情報が記憶されていない個別に管理されているデータベースを、マスタデータベースに対応するように統一して更新する。【解決手段】マスタデータベースと、マスタデータベースを基準とする顧客毎データベースを有し、顧客毎データベースはマスタデータベースの管理外で変更されうる。顧客毎データベースは、テーブル毎のバージョン情報と更新日時情報とを有し、顧客毎データベースのスキーマとマスタデータベースのスキーマの違いを抽出し、顧客毎データベースのスキーマをマスタデータベースのスキーマに統一する差分SQLを抽出する。抽出された差分SQLを適用させる顧客毎データベース内のテーブル情報を特定し、顧客毎データベースの有するバージョン情報もしくは更新日時情報がマスタデータベースのバージョン情報もしくは更新日時情報と異なる場合、顧客毎データベースで特定されたテーブルに対して差分SQLを発行する。【選択図】図1

Description

本発明は、複数のデータベースを管理するマスタデータベースの運用技術に関する。
複数の顧客(テナント)のデータを格納するマスタデータベースと、各顧客(テナント)毎にデータが管理されているデータベース(スレーブデータベース)とがネットワークでは接続されているシステムが存在する。このシステムでは、マスタデータベースの定期的な更新に伴い、各顧客(テナント)毎に個別で管理されているデータベースも統一して更新することがある。
特許文献1では、複数のユーザがいる場合に、データベース定義の修正を比較しながら、プログラム開発者側のデータベース定義文に適切に反映させ、プログラム開発の支援をすることができるデータベース管理システムが開示されている。
特開2006−260512
しかしながら、特許文献1のデータベース管理システムでは、複数のユーザのデータベース定義の修正を記憶していることが前提になっており、各顧客(テナント)が個別にデータベーススキーマを修正した情報を管理していない場合は、各顧客(テナント)の独自のスキーマ修正に対しては、データベース管理システムが自動的に対応することができない。
本発明は、スキーマの修正履歴情報が記憶されていない個別に管理されているデータベースを、マスタデータベースに対応するように統一して更新することを目的とする。
本発明は、マスタデータベースと、該マスタデータベースを基準とする顧客毎データベースを有し、該顧客毎データベースは該マスタデータベースの管理外で変更されうるデータベース管理システムであって、前記顧客毎データベースは、該顧客毎データベース内のテーブル毎のバージョン情報と更新日時情報とを有し、前記顧客毎データベースのスキーマと前記マスタデータベースのスキーマの違いを抽出し、該顧客毎データベースのスキーマを該マスタデータベースのスキーマに統一する差分SQLを抽出する差分SQL抽出手段と、前記差分SQL抽出手段により抽出された差分SQLを適用させる前記顧客毎データベース内のテーブル情報を特定するテーブル特定手段と、前記顧客毎データベースの有するバージョン情報が前記マスタデータベースのバージョン情報と異なるか、もしくは該顧客毎データベースの有する更新日時情報が該マスタデータベースの更新日時情報と異なることを判定する差分SQL発行判定手段と、前記差分SQL発行判定手段により、バージョン情報もしくは更新日時情報が異なると判定された顧客毎データベースの前記テーブル特定手段で特定されたテーブルに対して、前記差分SQL抽出手段により抽出された差分SQLを発行する差分SQL発行手段と、を有する。
本発明によれば、スキーマの修正履歴情報が記憶されていない個別に管理されているデータベースを、マスタデータベースに対応するように統一して更新できる効果を有する。
本発明の実施形態のデータベース管理システム(情報処理システム)の構成を示すシステム構成図である。 本発明の実施形態の各種端末のハードウエア構成を示す図である。 本発明の実施形態のデータベース管理システムにおける第1の制御処理手段の一例を示すフローチャートである。 本発明の実施形態のデータベース管理システムにおける第2の制御処理手段の一例を示すフローチャートである。 本発明の実施形態のデータベース管理システムにおける第3の制御処理手段の一例を示すフローチャートである。 本発明の実施形態のデータベース管理システムにおける第4の制御処理手段の一例を示すフローチャートである。 本発明の実施形態のデータベース管理システムにおける第5の制御処理手段の一例を示すフローチャートである。 本発明の実施形態のデータベース管理システムにおける第6の制御処理手段の一例を示すフローチャートである。 本発明の実施形態のデータベース管理システムにおけるデータベースのスキーマのバージョン情報並びにスキーマ情報の一例を示す模式図である。 本発明の実施形態のデータベース管理システムにおけるデータベースのスキーマのバージョン情報並びにスキーマ情報の一例を示す模式図である。 本発明の実施形態のデータベース管理システムにおけるデータベースのスキーマのバージョン情報並びにスキーマ情報の一例を示す模式図である。 本発明の実施形態のデータベース管理システムにおけるデータベースのスキーマのバージョン情報並びにスキーマ情報の一例を示す模式図である。
以下、本発明の好ましい実施の形態について図面を参照しながら詳細に説明する。
図1は、本発明に係るデータベース管理システム(情報処理システム)の構成を示すシステム構成図である。
図1において、データベース管理システムは、マスタデータベース101を有するデータベース管理サーバ100と、少なくとも1つ以上の各顧客(テナント)に対するテナントデータベース(更新対象データベース)201を有するデータベースサーバ200とからなる。テナントデータベース201はそれぞれの顧客(テナント)毎にテナント毎データベース210、220等を有しており、それらのサーバはネットワークを介して接続されている。
データベース管理サーバ100は、保持しているマスタデータベース101のスキーマの変更をユーザから受け付け、スキーマが変更されたデータベーステーブルを比較対象テーブル郡103として記憶する。同時に、マスタデータベース102のバージョン情報をバージョン管理テーブル104に記憶する。
データベースサーバ200のテナント毎データベース210や220等に記憶された各スキーマは、顧客(テナント)毎に管理されている。そのため、マスタデータベース101のバージョン管理とは別に各顧客(テナント)がテナント毎データベース210や220等のスキーマを変更することがある。本発明は、各顧客(テナント)がスキーマを変更していたとしても、マスタデータベース101の更新に伴い統一的にテナント毎データベース210や220等のスキーマを更新することを目的とする。
また、マスタデータベース101の更新に伴い統一的にテナント毎データベース210や220等のスキーマを更新する際に、検証性チェックを行う。検証性チェックの結果、マスタデータベース101と、テナント毎データベース210や220等のスキーマと、が一致しない場合は、更新エラーとしてユーザに、エラーとなったテナント毎データベースのスキーマを再度マスタデータベースのスキーマで更新させる。それでも更新できない場合は、エラーとなったテナント毎データベースの全てのテーブルのスキーマを元に戻す処理を行う。この処理により、何らかのエラーでスキーマが変更できなかったテナント毎データベースのテーブルは少なくとも、マスタデータベース101を更新する前の状態に戻すことができ、マスタデータベース101更新前の正常状態までに戻すことができるという効果を有する。
図2は、本発明の実施形態の各種端末のハードウエア構成を示す図である。
図2において、CPU201は、システムバス204に接続される各デバイスを統括的に制御する。
また、ROM203あるいは外部メモリ211には、CPU201の制御プログラムであるオペレーティングシステム(OS)や、各サーバあるいは各クライアントの後述する各種機能を実現するためのプログラムが記憶されている。
RAM202は、CPU201の主メモリ、ワークエリア、一時待避領域等として機能する。
入力コントローラ205は、入力部209からの入力を制御する。この入力部209としては、特に、サーバやクライアント等の端末では、キーボード、マウス等のポインティングデバイスが挙げられる。また、印刷装置等では、タッチパネル、ボタン、スイッチ等が挙げられる。
出力コントローラ206は、出力部210の表示を制御する。この出力部210としては、例えば、CRTや液晶等が挙げられる。
外部メモリコントローラ207は、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザーファイル、編集ファイル、プリンタドライバ等を記憶する外部メモリ211へのアクセスを制御する。加えて、各サーバあるいは各クライアントの各種機能を実現するための各種テーブル、パラメータが記憶されている。この外部メモリ211としては、ハードディスク(HD)やフロッピー(登録商標)ディスク(FD)、PCMCIAカードスロットにアダプタを介して接続されるコンパクトフラッシュ(登録商標)、スマートメディア等が挙げられる。
通信I/Fコントローラ208は、ネットワーク214を介して外部機器との通信制御処理を実行する。
本発明を実現するためのプログラム212は外部メモリ211に記録されており、必要に応じてRAM202にロードされることによりCPU201によって実行されるものである。
以下、図3〜図8を参照して、本発明における実施形態の流れを説明する。
図3は、本発明の実施形態のデータベース管理システムにおける第1の制御処理手段の一例を示すフローチャートであり、図1に示したデータベース管理サーバ100及びデータベースサーバ200それぞれのCPU201により処理が実行される。なお、図中のS11〜S20は各ステップを示す。
図3のフローチャートは、マスタデータベース101のスキーマが変更された後で、テナント毎データベース210や220等のスキーマをマスタデータベース101のスキーマに揃える際に開始されるフローチャートである。
まず、図3のステップS11において、データベース管理サーバ100のCPU201は、データベースサーバ200から、各テナントのデータベース一覧情報を取得する。
次に、ステップS12において、データベース管理サーバ100のCPU201は、データベースサーバ200のテナントデータベース201から各テナントのデータベース情報が取得できたかを判断する。テナント毎データベース210や220等の情報(スキーマ)を取得できない場合は本発明の処理を終了する。一方、テナント毎データベース210や220等の情報(スキーマ)を取得できる場合、取得したテナント毎データベース210や220等の内、一つ(例えば、テナントAデータベースである210)のデータベースのスキーマについて、ステップS13以下の処理を行う。
ステップS13において、データベース管理サーバ100のCPU201は、マスタデータベース101のスキーマと、テナント毎データベース210のスキーマの差分を抽出する処理を行う。詳細を図4を参照して説明する。
図4は、本発明の実施形態のデータベース管理システムにおける第2の制御処理手段の一例を示すフローチャートであり、図1に示したデータベース管理サーバ100のCPU201により処理が実行される。なお、図中のS31〜S33は各ステップを示す。
まず、図4のステップS31において、データベース管理サーバ100のCPU201は、マスタデータベース101のスキーマとステップS12で取得したテナント毎データベース210のスキーマとから、差分SQLを取得する。ステップS31で取得する差分SQLは、テナント毎データベース210等のスキーマをマスタデータベース101のスキーマに揃えようとした際に、何らかの原因でエラーとなった際にマスタデータベース101のスキーマに揃えようとしたテナント毎データベース210等のスキーマを元のスキーマに復元するための差分SQLである。
差分SQLの取得方法としては、例えば、SQLServerの場合、SqlPackage.exeというツールを利用し、以下の2行のスクリプトで取得することができる。
<スクリプト例>
SqlPackage.exe /a:Extract /scs:”<マスタデータベースのDB接続文字列>” /tf:”<マスタデータベースのDBスナップショットファイル出力パス>”
SqlPackage.exe /a:Script /sf:”<マスタデータベースのDBスナップショットファイル出力パス>” /tcs:”<テナント毎データベースのDB接続文字列>” /op:”<差分SQLファイルパス>”
1行目でマスタデータベースのスキーマを<マスタデータベースのDBスナップショットファイル>に変換し、2行目で<マスタデータベースのDBスナップショットファイル>とテナント毎データベースとを比較し、<差分SQLファイル>を作成する。
以上の処理により、図9の903の様な差分SQLを取得する。図9を参照して、マスタデータベース101内の比較対象テーブル102内のスキーマ901と、テナント毎データベース210内の更新対象テーブル211内のスキーマ902とから、差分SQLを取得する例を説明する。
図9は、本発明の実施形態のデータベース管理システムにおけるデータベースのスキーマのバージョン情報並びにスキーマ情報の一例を示す模式図である。
図9の901は、データベース管理サーバ100が有する比較対象テーブル群102とバージョン管理テーブル104であり、902は、データベースサーバはテナント毎データベース210が有する更新対象テーブル群211と定義更新日付管理テーブル212である。定義更新日付管理テーブル212とは、更新対象テーブル211の有するバージョン情報と、過去に比較対象テーブルから更新された更新日時等が記憶されている。
図9の例では、更新対象テーブル211内のテーブル1は、項目Bの文字列が8桁であるのに対し、比較対象テーブル102内のテーブル1では項目Bの文字列のように10桁に変更する(907)。また、更新対象テーブル211内のテーブル2は、項目Kの50桁の文字列を有するが、比較対象テーブル102内のテーブル2では項目Kのコラムは無い。そのため、項目Kは本発明の処理で削除する(908)。
図9のような状況で、比較対象テーブル102から更新対象テーブル211へ復元する際に取得される差分SQLとしては、903に記載されているSQLが該当する。903の2行目がテーブル1の項目Bの文字列数を8桁に修正する(戻す)SQL(907に対応)であり、3行目が文字列数50桁の項目Kを加える(戻す)SQL(908に対応)である。
これらの復元用SQLを作成しておくことにより、データベーススキーマの変更に失敗した場合でも、データベーススキーマの復旧が容易になるという効果を有する。図4のフローチャートの説明に戻る。
次に、ステップS32において、データベース管理サーバ100のCPU201は、復元処理用にテナント毎データベース更新対象が有する定義更新日付管理テーブルから、最新のテーブル名と更新対象のテーブル毎のバージョン情報、比較対象テーブルからの更新日時情報、及びテナント毎データベース210の更新対象テーブル211が各テナントの管理者などにより更新された実更新日時を取得する。取得した情報の一例が904の例である。904は、データベースサーバ200の有する各テナントの定義更新日付管理テーブル212の内容と、各テーブルの実更新日時情報とを有している。
次に、ステップS33において、データベース管理サーバ100のCPU201は、マスタデータベース101のスキーマとステップS12で取得したテナント毎データベース210のスキーマとから、テナント毎データベース210等のスキーマをマスタデータベース101のスキーマに揃えるために実行される差分SQLである。
差分SQLの取得方法としては、前述と同じように、例えば、SQLServerの場合、SqlPackage.exeというツールを利用し、以下の2行のスクリプトで取得することができる。
<スクリプト例>
SqlPackage.exe /a:Extract /scs:”<テナント毎データベースのDB接続文字列>” /tf:”<テナント毎データベースのDBスナップショットファイル出力パス>”
SqlPackage.exe /a:Script /sf:”<テナント毎データベースのDBスナップショットファイル出力パス>” /tcs:”<マスタデータベースのDB接続文字列>” /op:”<差分SQLファイルパス>”
2行目の<差分SQLファイルパス>で作成される<差分SQLファイル>の例として、図9の905を参照して説明する。
905の2行目がテーブル1の項目Bの文字列数を10桁に修正するSQL(907に対応)であり、3行目が項目Kを削除するSQL(908に対応)である。
以上の処理により、テナント毎データベース210のスキーマをマスタデータベース101のスキーマに揃えるためのテナント毎データベース210毎に更新用SQLを抽出する。図3のフローチャートの説明に戻る。
図3のステップS13において、マスタデータベース101のスキーマと、テナント毎データベース210のスキーマの差分を抽出する処理を行うと、次のステップS14へと処理を移行する。ステップS14において、データベース管理サーバ100のCPU201は、マスタデータベース101から検証用スキーマ定義情報を抽出する。検証用スキーマ定義情報とはマスタデータベース101の比較対象テーブル群102のスキーマ情報である。
次に、ステップS15において、データベース管理サーバ100のCPU201は、マスタデータベース101内のバージョン管理テーブル104から、テーブル名とテーブル毎の更新後バージョンを取得し、データベースサーバ200へと処理を移行する。
次に、ステップS16において、データベースサーバ200のCPU201は、テナント毎データベース210から復元検証用スキーマ定義情報を抽出する。この復元時検証用スキーマ定義情報とはテナント毎データベース210の更新対象テーブル群211のスキーマ情報である。
次に、ステップS17において、データベースサーバ200のCPU201は、ステップS13で抽出されたマスタデータベース101に揃えるための差分SQLと、ステップS15で取得したテーブルバージョン情報ファイル104とをデータベース管理サーバ100から取得し、差分SQLを発行する処理を実行する。ステップS17の詳細を図5を参照して説明する。
図5は、本発明の実施形態のデータベース管理システムにおける第3の制御処理手段の一例を示すフローチャートであり、図1に示したデータベースサーバ200のCPU201により処理が実行される。なお、図中のS41〜S49は各ステップを示す。
まず、図5のステップS41において、データベースサーバ200のCPU201は、ステップS13により抽出された差分SQLから、該当するテナント毎データベース210内から差分SQL発行対象のテーブル名を検索し、最初に見つかったテーブル名を保持する。
次に、ステップS42において、データベースサーバ200のCPU201は、差分SQL発行対象のテーブル名を検索し、取得できるかを判断する。差分SQL発行対象のテーブル名を取得できない場合は、図5のフローチャートを終える。一方、差分SQL発行対象のテーブル名を取得できる場合は、該当するテーブルを保持して、次のステップS43へと処理を移行する。
次に、ステップS43において、データベースサーバ200のCPU201は、データベースサーバ200が有する定義更新日付管理テーブル212内の、該当するテーブルのバージョンと更新日時を取得する。
次に、ステップS44において、データベースサーバ200のCPU201は、データベースサーバ200が有する定義更新日付管理テーブル212内の該当するテーブルのバージョンと、ステップS15で取得したテーブルバージョン情報ファイル104内の該当テーブルのバージョンが異なるかを判断する。定義更新日付管理テーブル212内の該当するテーブルのバージョンと、テーブルバージョン情報ファイル104内の該当テーブルのバージョンとが異なれば、ステップS46へと処理を移行する。一方、定義更新日付管理テーブル212内の該当するテーブルのバージョンと、テーブルバージョン情報ファイル104内の該当テーブルのバージョンとが同じであれば、ステップS45へと処理を移行する。
ステップS45へと遷移すると、データベースサーバ200のCPU201は、データベースサーバ200の更新対象テーブル211が有する実更新日時情報を取得し、その実更新日時と、定義更新日付管理テーブル212内の該当テーブルの更新日時が異なるかを判断する。実更新日時と定義更新日付管理テーブル212内の該当テーブルの更新日時が異なる場合はステップS46へと処理を移行する。一方、実更新日時と定義更新日付管理テーブル212内の該当テーブルの更新日時が同じであれば、ステップS42へと処理へと戻り、次の該当する差分SQL発行対象のテーブル名を取得できるかの判断へと移行する。
以上、ステップS44とステップS45により、該当する更新対象テーブルのバージョンが比較対象テーブルのバージョンと異なっているか、もしくは更新対象テーブルの実更新日時が定義更新日付管理テーブル212の更新日時と異なっていれば、差分SQLを発行する処理ステップS46へと処理を移行する。ステップS44によりステップS46へと処理を移行させるパターンが図9の906の例に該当し、ステップS45によりステップS46へと処理を移行させるパターンが図9の909と910の例に該当する。
ステップS45において、更新対象テーブルの実更新日時が定義更新日付管理テーブル212の更新日時と異なる場合とは、たとえば、テナント毎データベースのスキーマを本ツールを使用せずに変更した場合などに生じることがある。その際は次に説明するステップS46において、該当する統一したスキーマに変更する。
次に、ステップS46において、データベースサーバ200のCPU201は、ステップS13で抽出した差分SQL処理を該当する更新対象テーブルに対して実行する。実行された更新対象テーブルは、正常に機能すれば、図10の1002の更新対象テーブル群211のように、比較対象テーブル群と同じスキーマに変更される。
次に、ステップS47において、データベースサーバ200のCPU201は、ステップS46が正常に処理されたかを判断する。ステップS46が正常に処理されていれば、ステップS48へと処理を移行し、ステップS46が正常に処理されなかった場合は、ステップS42へと遷移し、次の差分SQL発行対象テーブルを検索する。
ステップS48へと処理を移行すると、データベースサーバ200のCPU201は、定義更新日付管理テーブルの更新日時を更新し、ステップS49において、次の差分SQL発行対象テーブルを検索、取得して、ステップS42へと処理を戻す。図10を参照して、正常に完了した場合のデータベースのスキーマ情報を説明する。
図10は、本発明の実施形態のデータベース管理システムにおけるデータベースのスキーマのバージョン情報並びにスキーマ情報の一例を示す模式図である。
図10の1001と1002はそれぞれ図9の901と902に対応している。テナント毎データベース210のスキーマ情報は、1003から1006のように更新されている。
以上の処理によりテナント毎データベース内の差分SQL発行対象テーブルのスキーマをマスタデータベース101の比較対象テーブルのスキーマに揃えることができ、個別に変更されうるテナント毎データベースのスキーマをマスタデータベースに対応するように統一して更新することができる。以上、図5を参照して、差分SQLを発行する処理について説明した。図3のフローチャートの説明に戻る。
図3のステップS17において、差分SQLを発行する処理を実行すると、次にステップS18において、ステップS17で発行した差分SQLが正常に実行されたかを確認する。ステップS18の処理を図6を参照して説明する。
図6は、本発明の実施形態のデータベース管理システムにおける第4の制御処理手段の一例を示すフローチャートであり、図1に示したデータベースサーバ200のCPU201により処理が実行される。なお、図中のS51〜S54は各ステップを示す。
まず、図6のステップS51において、データベースサーバ200のCPU201は、テナント毎データベースのスキーマからスキーマ定義情報をSQLにより取得し、ファイル出力する。
次に、ステップS52において、データベースサーバ200のCPU201は、ステップS14で抽出したマスタデータベース101の検証用スキーマ定義情報をデータベース管理サーバ100から受信し、受信した検証用スキーマ定義情報とステップS51で取得したスキーマ定義情報とを比較する。
ステップS53で、比較結果が一致している場合は、図6のフローチャートの処理を終了するが、比較結果が異なる場合は、ステップS54へと処理を移行する。
ステップS54へと処理を移行すると、データベースサーバ200のCPU201は、不一致だったスキーマ名/テーブル名/差分SQL/更新後バージョンをリトライ用ログとして出力する。リトライ用ログファイルの出力例として、図11を参照して説明する。
図11は、本発明の実施形態のデータベース管理システムにおけるデータベースのスキーマのバージョン情報並びにスキーマ情報の一例を示す模式図である。
図11において、1102の更新対象テーブルのスキーマを1101の比較対象テーブルのスキーマへ更新する時、1103の項目Bの文字列が8桁から10桁に更新できない場合、リトライログとしては、例えば、1108のようなリトライ用ログファイルが作成される。具体的には、1108のリトライログファイルは、1105部分のスキーマ名のテーブル名に対して、1106部分の差分SQLを再実行(リトライ)させるファイルである。図6のフローチャートの説明に戻る。
ステップS54において、リトライ用ログとして出力すると図6のフローチャートの処理を終え、図3のフローチャートのしょりに戻る。
図3のステップS18において、ステップS17で発行した差分SQLが正常に実行されたかを確認すると、次の処理をデータベース管理サーバ100へと移行し、ステップS19において、データベース管理サーバ100のCPU201は、データベースサーバ200からリトライ用ログファイルを取得し、記憶しておく。
次に、ステップS20において、データベース管理サーバ100のCPU201は、次のテナント毎データベース(たとえば、220)を検索、取得し、ステップS12へと処理を戻す。
以上の処理を繰り返すことにより、スキーマの修正履歴情報が記憶されていない個別に管理されているテナント毎データベースを、マスタデータベースに対応するように統一して更新でき、また、テナント毎データベースの更新ができなかった場合のリトライ用ログファイルを作成することができる。
次に、図7を参照して、テナント毎データベースが更新されなかった場合の処理の流れを説明する。
図7は、本発明の実施形態のデータベース管理システムにおける第5の制御処理手段の一例を示すフローチャートであり、図1に示したデータベース管理サーバ100及びデータベースサーバ200それぞれのCPU201により処理が実行される。なお、図中のS61〜S66は各ステップを示す。
図7のフローチャートは、テナント毎データベース210や220等の更新がされなかった場合に、開始されるフローチャートである。
まず、図7のステップS61において、データベース管理サーバ100のCPU201は、図3のステップS19でデータベースサーバ200より取得したリトライ用ログファイルから、リトライ(再実行)する処理対象のスキーマ名/テーブル名/差分SQL/更新後バージョンの一行分を取得する。
次に、ステップS62において、データベース管理サーバ100のCPU201は、ステップS61でリトライ用ログファイルの一行分を取得できたかを判断する。リトライ用ログファイルを取得できない場合は、図7のフローチャートの処理を終え、リトライ用ログファイルを取得できる場合は、ステップS63へと処理を移行する。
ステップS63において、データベースサーバ200のCPU201は、ステップS61で指定されたスキーマ/テーブルに対して、ステップS61で取得した差分SQLを発行し、差分SQLを実行する。実行される差分SQLの例としては、例えば、図11の1106等である。
次に、ステップS64において、データベースサーバ200のCPU201は、定義更新日付管理テーブル212の情報を更新する。更新内容は、図10の定義更新日付管理テーブル212の内容と同じように、更新日時と図11の1107のバージョン情報で更新する。
次に、ステップS65において、データベースサーバ200のCPU201は、ステップS63で発行した差分SQLが正常に実行されたかを確認する。ステップS65の処理はステップS18と同様であり、図6の記載内容と同様なので説明を省略する。
次に、処理をデータベース管理サーバ100へと戻し、ステップS66において、データベース管理サーバ100のCPU201は、ステップS65で更に出力されたリトライ用ログファイルをデータベースサーバ200から取得する。その後、リトライ用ログファイルの残りの行を取得し、ステップS62へと処理を戻し、ステップS62以降の処理を繰り返す。
このように、図7のフローチャートではリトライ用ログファイルに出力された再実行すべき差分SQLを再実行させる処理を実現している。
次に図8を参照して、テナント毎データベースが更新されなかった場合にテナント毎データベース内のテーブルを全て元に戻す処理の流れを説明する。
図8は、本発明の実施形態のデータベース管理システムにおける第6の制御処理手段の一例を示すフローチャートであり、図1に示したデータベース管理サーバ100及びデータベースサーバ200それぞれのCPU201により処理が実行される。なお、図中のS71〜S78は各ステップを示す。
図8のフローチャートは、テナント毎データベース210や220等の更新がされず、ユーザによりテナント毎データベースを元に戻す命令が発行された際に開始されるフローチャートである。
まず、図8のステップS71において、データベース管理サーバ100のCPU201は、図3のステップS19でデータベースサーバ200より取得したリトライ用ログファイルから、復元する処理対象のスキーマ名を一件取得する。
次に、ステップS72において、データベース管理サーバ100のCPU201は、ステップS71でリトライ用ログファイルの一件分のスキーマ名を取得できたかを判断する。スキーマ名を取得できない場合は、図7のフローチャートの処理を終え、スキーマ名を取得できる場合は、ステップS73へと処理を移行する。
ステップS73において、データベースサーバ200のCPU201は、データベース管理サーバ100のステップS13(図4のステップS31)で抽出した復元するための差分SQLを取得し、復元用差分SQLを発行する。発行する復元用差分SQLとして、図9の903を例に挙げる。図8の処理で用いられるデータの例を図12を参照して説明する。
図12は、本発明の実施形態のデータベース管理システムにおけるデータベースのスキーマのバージョン情報並びにスキーマ情報の一例を示す模式図である。
図12の1201は、データベースサーバ200のテナント毎データベース210が有する更新対象テーブル群211と定義更新日付管理テーブル212である。1201は、図8のフローチャートの処理を終えた段階での値が反映されており、ステップS72の段階では、テナント毎データベース210の内容は、たとえば、図9の定義更新日付管理テーブル212の値と、図11の更新対象テーブル群211を有する。図8のフローチャートの説明に戻る。
図8のステップS73において、たとえば、図12の復元用差分SQL903を発行すると、マスタデータベース101のスキーマに更新されていたテナント毎データベース210は、元の更新前の更新対象テーブル状態に戻される。元の更新前の更新対象テーブルに戻った状態が図12の1202や1203である。
次に、ステップS74において、復元テーブルバージョン情報ファイル内の定義更新日付管理テーブルの更新日時部分と、実更新日時部分とが一致するかにより、定義更新日付管理テーブルの更新日時の設定値を変える処理分岐を行う。ステップS74において、復元テーブルバージョン情報ファイル内の定義更新日付管理テーブルの更新日時部分と、実更新日時部分とが一致していれば、ステップS75へと遷移し、復元テーブルバージョン情報ファイル内の定義更新日付管理テーブルの更新日時部分と、実更新日時部分とが異なれば、ステップS76へと遷移する。
ステップS75へと処理を遷移すると、定義更新日付管理テーブルの更新日時は、更新対象テーブル211の実更新日時と同じ日時を登録する。図12を参照して、図8のフローチャートによる定義更新日付管理テーブルの更新日時の設定値を説明する。
図12の復元用テーブルバージョン情報ファイル(図9の904と同じ)内の定義更新日付管理テーブルの更新日時部分と、実更新日時部分とが一致している1204と1205のようなテーブル1の例であれば、1208のようにテーブル1の実更新日時を定義更新日付管理テーブル212の更新日時の欄に登録する(1209)。図8のフローチャートの説明に戻る。
一方、ステップS76へと処理を遷移すると、定義更新日付管理テーブルの更新日時は、復元用テーブルバージョン情報ファイルの実更新日時の部分の値を登録する。図12を参照して、図8のフローチャートによる定義更新日付管理テーブルの更新日時の設定値を説明する。
図12の復元用テーブルバージョン情報ファイル(図9の904と同じ)内の定義更新日付管理テーブルの更新日時部分と、実更新日時部分とが異なっている1206と1207のようなテーブル2の例であれば、復元用テーブルバージョン情報ファイルの実更新日時の部分の値である1207の値を定義更新日付管理テーブル212の更新日時の欄に登録する(1210)。
以上の処理により、復元用テーブルバージョン情報ファイル内の更新日時同士が一致しているかいないかをマスタデータベース101の更新の度に確認することで、更新対象テーブル211の実更新日時が自動的に更新されても、定義更新日付管理テーブルの更新日時と実更新日時とを比較できるので、データベーススキーマを復元するかしないかを判断できる効果を有する。図8のフローチャートの説明に戻る。
次に、図8のステップS77の処理へと遷移し、ステップS77において、データベースサーバ200のCPU201は、ステップS73で発行した差分SQLが正常に実行されたかを確認する。ステップS77の処理はステップS18と同様であり、図6の記載内容と同様なので説明を省略する。
次に、処理をデータベース管理サーバ100へと戻し、ステップS78において、データベース管理サーバ100のCPU201は、ステップS77で更に出力されたリトライ用ログファイルをデータベースサーバ200から取得する。その後、リトライ用ログファイルの残りの復元処理対象のスキーマ名を取得し、ステップS72へと処理を移行し、ステップS72以降の処理を行う。
ステップS72において、復元処理対象のスキーマ名が取得できなくなれば、図8の処理を終了する。
以上の処理により、更新対象テーブル211の実更新日時が自動的に更新されるデータベースでも、定義更新日付管理テーブルを有することにより、テナント側の管理者がスキーマを更新したことを把握可能にし、マスタデータベース101のバージョンアップに伴うスキーマのバージョンアップの際に、バージョン更新ができない場合でも、テナント毎データベースの全てのデータのバックアップを参照することなしに、スキーマのバージョンアップを取り止め、元のスキーマに容易に戻すことができるという効果を有する。
このように、本発明のデータベース管理システムにおいて、スキーマの修正履歴情報が記憶されていない個別に管理されているデータベースを、マスタデータベースに対応するように統一して更新できる効果を有する。
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
なお、本実施形態中に示した各変形例を組み合わせた構成も全て本発明に含まれるものである。
以上説明したように、本実施形態によれば、ワークフローシステムにおいて、閲覧権限が無いユーザに対して、起票者や承認者が閲覧権限を与えることにより、閲覧権限の無いユーザが電子伝票を確認可能になり、また、ユーザや電子伝票の閲覧権限を期限もしくは、アクティビティ毎に閲覧権限を削除することを可能とする。
従って、システム管理者ではなく一般のユーザが電子伝票(案件)ごとに閲覧権限を追加でき、電子伝票を処理中のユーザが閲覧権限の無いユーザに電子伝票の内容を確認してもらう場合などでも、容易に閲覧権限の無いユーザに確認してもらうことが可能になる等の効果を奏する。
なお、特に図示しないが、記録媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報,作成者等も記憶され、かつ、プログラム読み出し側のOS等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、インストールするプログラムやデータが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
本実施形態における図3〜図8に示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、CD−ROMやフラッシュメモリやFD等の記録媒体により、あるいはネットワークを介して外部の記録媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
以上のように、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
この場合、記録媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
プログラムコードを供給するための記録媒体としては、例えば、フレキシブルディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,DVD−ROM,磁気テープ,不揮発性のメモリカード,ROM,EEPROM,シリコンディスク等を用いることができる。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
また、本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのソフトウェアによって表されるプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
さらに、本発明を達成するためのソフトウェアによって表されるプログラムをネットワーク上のサーバ,データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
100 データベース管理サーバ
101 マスタデータベース
102 比較対象テーブル群
104 バージョン管理テーブル
200 データベースサーバ
201 テナントデータベース201
210 テナントAデータベース
211 更新対象テーブル群
212 定義更新日付管理テーブル
220 テナントBデータベース
221 更新対象テーブル群
222 定義更新日付管理テーブル
600 ネットワーク

Claims (5)

  1. マスタデータベースと、該マスタデータベースを基準とする顧客毎データベースを有し、該顧客毎データベースは該マスタデータベースの管理外で変更されうるデータベース管理システムであって、
    前記顧客毎データベースは、該顧客毎データベース内のテーブル毎のバージョン情報と更新日時情報とを有し、
    前記顧客毎データベースのスキーマと前記マスタデータベースのスキーマの違いを抽出し、該顧客毎データベースのスキーマを該マスタデータベースのスキーマに統一する差分SQLを抽出する差分SQL抽出手段と、
    前記差分SQL抽出手段により抽出された差分SQLを適用させる前記顧客毎データベース内のテーブル情報を特定するテーブル特定手段と、
    前記顧客毎データベースの有するバージョン情報が前記マスタデータベースのバージョン情報と異なるか、もしくは該顧客毎データベースの有する更新日時情報が該マスタデータベースの更新日時情報と異なることを判定する差分SQL発行判定手段と、
    前記差分SQL発行判定手段により、バージョン情報もしくは更新日時情報が異なると判定された顧客毎データベースの前記テーブル特定手段で特定されたテーブルに対して、前記差分SQL抽出手段により抽出された差分SQLを発行する差分SQL発行手段と、
    を有することを特徴とするデータベース管理システム。
  2. 前記顧客毎データベースのスキーマが、前記マスタデータベースのスキーマに変更されたことを検証するために、該マスタデータベースのスキーマ定義情報を抽出する検証用スキーマ定義情報抽出手段と、
    前記差分SQL発行手段により発行された前記顧客毎データベースのスキーマ定義情報と、前記検証用スキーマ定義情報抽出手段により抽出された前記マスタデータベースのスキーマ定義情報とを比較し、一致しない場合に該マスタデータベースのスキーマ定義情報と一致させるSQLを抽出する再実行SQL抽出手段と、
    を有することを特徴とする請求項1に記載のデータベース管理システム。
  3. 前記顧客毎データベースのスキーマと前記マスタデータベースのスキーマの違いを抽出し、該マスタデータベースのスキーマから該顧客毎データベースのスキーマに戻すための差分SQLを抽出する復元差分SQL抽出手段と、
    前記顧客毎データベースのスキーマが、前記マスタデータベースのスキーマに変更されたことを検証するために、該マスタデータベースのスキーマ定義情報を抽出する検証用スキーマ定義情報抽出手段と、
    前記差分SQL発行手段により発行された前記顧客毎データベースのスキーマ定義情報と、前記検証用スキーマ定義情報抽出手段により抽出された前記マスタデータベースのスキーマ定義情報とを比較し、一致しない場合に、前記復元差分SQL抽出手段で抽出された差分SQLにより、元の該顧客毎データベースのスキーマに戻す復元差分SQL発行手段と、
    を有することを特徴とする請求項1又は2に記載のデータベース管理システム。
  4. マスタデータベースと、該マスタデータベースを基準とする顧客毎データベースを有し、該顧客毎データベースは該マスタデータベースの管理外で変更されうるデータベース管理システムにおけるデータベース管理方法であって、
    前記顧客毎データベースは、該顧客毎データベース内のテーブル毎のバージョン情報と更新日時情報とを有し、
    前記顧客毎データベースのスキーマと前記マスタデータベースのスキーマの違いを抽出し、該顧客毎データベースのスキーマを該マスタデータベースのスキーマに統一する差分SQLを抽出する差分SQL抽出ステップと、
    前記差分SQL抽出ステップにより抽出された差分SQLを適用させる前記顧客毎データベース内のテーブル情報を特定するテーブル特定ステップと、
    前記顧客毎データベースの有するバージョン情報が前記マスタデータベースのバージョン情報と異なるか、もしくは該顧客毎データベースの有する更新日時情報が該マスタデータベースの更新日時情報と異なることを判定する差分SQL発行判定ステップと、
    前記差分SQL発行判定ステップにより、バージョン情報もしくは更新日時情報が異なると判定された顧客毎データベースの前記テーブル特定ステップで特定されたテーブルに対して、前記差分SQL抽出ステップにより抽出された差分SQLを発行する差分SQL発行ステップと、
    を有することを特徴とするデータベース管理方法。
  5. 請求項1乃至3に記載のデータベース管理システムとして、コンピュータを機能させるためのプログラム。
JP2014254670A 2014-12-17 2014-12-17 データベース管理システム、データベース管理方法、およびプログラム。 Pending JP2016115223A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014254670A JP2016115223A (ja) 2014-12-17 2014-12-17 データベース管理システム、データベース管理方法、およびプログラム。

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014254670A JP2016115223A (ja) 2014-12-17 2014-12-17 データベース管理システム、データベース管理方法、およびプログラム。

Publications (1)

Publication Number Publication Date
JP2016115223A true JP2016115223A (ja) 2016-06-23

Family

ID=56141777

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014254670A Pending JP2016115223A (ja) 2014-12-17 2014-12-17 データベース管理システム、データベース管理方法、およびプログラム。

Country Status (1)

Country Link
JP (1) JP2016115223A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019040294A (ja) * 2017-08-23 2019-03-14 アズビル株式会社 データベースの管理装置、および、データベースの管理方法
CN111078273A (zh) * 2019-12-09 2020-04-28 京东数字科技控股有限公司 一种信息获取方法及装置、存储介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019040294A (ja) * 2017-08-23 2019-03-14 アズビル株式会社 データベースの管理装置、および、データベースの管理方法
CN111078273A (zh) * 2019-12-09 2020-04-28 京东数字科技控股有限公司 一种信息获取方法及装置、存储介质
CN111078273B (zh) * 2019-12-09 2022-08-12 京东科技控股股份有限公司 一种信息获取方法及装置、存储介质

Similar Documents

Publication Publication Date Title
US10437795B2 (en) Upgrading systems with changing constraints
US7676492B2 (en) Migration of database using serialized objects
JP5039891B2 (ja) データベースの複製を生成する装置及び方法
CN110209735B (zh) 数据库备份方法、数据库备份装置、计算设备和存储介质
CN104199750B (zh) 一种linux系统的文件恢复方法及装置
EP1630674A1 (en) Generating an optimized database restore plan
US20170060560A1 (en) Software and associated hardware regression and compatiblity testing system
US10496401B2 (en) Managing rename of tables and table fields
US20150127613A1 (en) Method, apparatus, and application platform for updating application object attribute
US20110321012A1 (en) Non-Intrusive Measurement of Content Quality Using Dry Runs with Roll-back
EP3417371A1 (en) Model based upgrade campaign generation
WO2017045491A1 (zh) 一种对 sqlite3 型嵌入式数据库进行升级的方法及系统
CN106445529A (zh) 持续集成服务器的配置信息的备份方法及系统
CN102193841B (zh) 一种Subversion配置库的备份方法及装置
US20060136471A1 (en) Differential management of database schema changes
CN116134420A (zh) 使用多个区块链以将事务应用于持久存储系统中的持久数据对象集
JP2016115223A (ja) データベース管理システム、データベース管理方法、およびプログラム。
KR101071484B1 (ko) 데이터베이스의 논리적 데이터 오류 복구방법
CN111338751B (zh) 同ceph集群中数据跨pool迁移方法及装置
JP5109676B2 (ja) データ整合性を確保するためのプログラム、方法及びコンピュータ・システム
US20150033213A1 (en) Compiling method, storage medium and compiling apparatus
CN104199689A (zh) 综合前端系统的安装方法及装置
CN114816470A (zh) 元数据库的管理方法、装置、电子设备和介质
Le et al. Developing Modern Database Applications with PostgreSQL: Use the highly available and object-relational PostgreSQL to build scalable and reliable apps
JP2006350411A (ja) 分散データベースリカバリ方法及び同リカバリシステム及び同リカバリプログラム

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20161101

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20161101