(57)【要約】【課題】移行元のデータベースのテーブルと移行先のデータレイクのテーブルが一対一で対応しない場合でも、データレイクに対するＳＱＬを用いた問い合わせを低工数で実現する。【解決手段】移行サーバ１０７は、第１のデータベースサーバ１０１に格納されている実行ログ１０６を取得する実行ログ取得部１１９と、実行ログ１０６から第１のデータベースサーバ１０１に格納されているテーブル１０５の変更に関わる実行ログ１０６を関係実行ログ１２３として抽出する関係実行ログ抽出部１２０と、関係実行ログ１２３を用いて第２のデータベースサーバ（データレイク１２８）に格納されたデータ間の関係を関係情報として生成する関係情報生成部１１３とを有する【選択図】図１
2019169001.tif 000002
【特許請求の範囲】
【請求項１】
第１のデータベースサーバと移行サーバと第２のデータベースサーバとがネットワークを介して接続され前記ネットワークを経由してデータの送受信を相互に行い、前記第１のデータベースサーバから前記第２のデータベースサーバに前記移行サーバを介して前記データを移行させるデータ移行システムであって、
前記第１のデータベースサーバは、
実行されたＳＱＬ文を指す実行ログと、所定のテーブルを格納し、
前記移行サーバは、
前記第１のデータベースサーバに格納されている前記実行ログを取得する実行ログ取得部と、
前記実行ログから、前記第１のデータベースサーバに格納されている前記テーブルの変更に関わる前記実行ログを関係実行ログとして抽出する関係実行ログ抽出部と、
前記関係実行ログを用いて、前記第２のデータベースサーバに格納されたデータ間の関係を関係情報として生成する関係情報生成部と、
を有することを特徴とするデータ移行システム。
【請求項２】
前記関係情報生成部は、
前記関係実行ログを解析することにより、前記第１のデータベースサーバに格納された前記テーブルに対して、１文以上の前記ＳＱＬ文の連なりから構成される操作パターンを特定できるか否かを判定し、
前記操作パターンを特定できた場合、
特定した前記操作パターン、前記テーブルのテーブル名及び前記関係実行ログを含む情報を前記関係情報として生成することを特徴とする請求項１に記載のデータ移行システム。
【請求項３】
前記関係情報生成部は、
前記操作パターンを特定できない場合、
前記操作パターンの特定失敗として、前記テーブル名及び前記関係実行ログを表示することを特徴とする請求項２に記載のデータ移行システム。
【請求項４】
前記関係情報生成部は、
前記操作パターンとして、前記テーブルの追加及び削除、前記テーブル名の変更、前記テーブルの結合及び分割に関するパターンをそれぞれ特定することを特徴とする請求項２に記載のデータ移行システム。
【請求項５】
前記関係情報生成部は、  前記テーブルに対応した前記関係実行ログと前記操作パターンとを照合し、前記ＳＱＬ文の構文の一致を判定することにより、前記テーブルに対する前記操作パターンを特定することを特徴とする請求項２に記載のデータ移行システム。
【請求項６】
前記関係実行ログ抽出部は、
前記実行ログ取得部から送信された前記実行ログを受け取り、前記実行ログの前記ＳＱＬ文を前記テーブルへの操作に関連した前記ＳＱＬ文の構文が列挙された操作リストと照合し、前記ＳＱＬ文の構文が一致する前記ＳＱＬ文を前記関係実行ログとして抽出し、抽出した前記関連実行ログを前記関係情報生成部に送信することを特徴とする請求項１に記載のデータ移行システム。
【請求項７】
前記関係実行ログ抽出部は、
前記実行ログに含まれる前記ＳＱＬ文と前記操作リストに記載された前記ＳＱＬ文の構文とが一致するかを判定し、前記ＳＱＬ文が前記ＳＱＬ文の構文のいずれかに一致した場合に、前記ＳＱＬ文が前記関係実行ログであると判定することを特徴とする請求項６に記載のデータ移行システム。
【請求項８】
前記ＳＱＬ文の構文は、
前記第１のデータベースサーバに格納された前記テーブルの変更を伴う構文であることを特徴とする請求項６に記載のデータ移行システム。
【請求項９】
前記移行サーバは、
前記関係実行ログを蓄積するストレージと、
前記関係実行ログを前記ストレージに蓄積する関係実行ログ管理部と、
を更に有すること特徴とする請求項１に記載のデータ移行システム。
【請求項１０】
前記移行サーバは、
前記関係情報を用いて、前記第２のデータベースサーバに格納されたテーブルに対し、所定のビューを生成するための前記ＳＱＬ文を生成するビュー生成式生成部を更に有すること特徴とする請求項１に記載のデータ移行システム。
【請求項１１】
実行されたＳＱＬ文を指す実行ログと所定のテーブルを格納した第１のデータベースサーバから第２のデータベースサーバにデータを移行させるデータ移行サーバであって、
前記第１のデータベースサーバに格納されている前記実行ログを取得する実行ログ取得部と、
前記実行ログから、前記第１のデータベースサーバに格納されている前記テーブルの変更に関わる前記実行ログを関係実行ログとして抽出する関係実行ログ抽出部と、
前記関係実行ログを用いて、前記第２のデータベースサーバに格納されたデータ間の関係を関係情報として生成する関係情報生成部と、
を有することを特徴とするデータ移行サーバ。
【請求項１２】
前記関係情報生成部は、
前記関係実行ログを解析することにより、前記第１のデータベースサーバに格納された前記テーブルに対して、１文以上の前記ＳＱＬ文の連なりから構成される操作パターンを特定できるか否かを判定し、
前記操作パターンを特定できた場合、
特定した前記操作パターン、前記テーブルのテーブル名及び前記関係実行ログを含む情報を前記関係情報として生成し、
前記操作パターンを特定できない場合、
前記操作パターンの特定失敗として、前記テーブル名及び前記関係実行ログを表示することを特徴とする請求項１１に記載のデータ移行サーバ。
【請求項１３】
前記関係実行ログ抽出部は、
前記実行ログ取得部から送信された前記実行ログを受け取り、前記実行ログの前記ＳＱＬ文を前記テーブルへの操作に関連した前記ＳＱＬ文の構文が列挙された操作リストと照合し、前記ＳＱＬ文の構文が一致する前記ＳＱＬ文を前記関係実行ログとして抽出し、抽出した前記関連実行ログを前記関係情報生成部に送信することを特徴とする請求項１１に記載のデータ移行サーバ。
【請求項１４】
前記関係実行ログを蓄積するストレージと、
前記関係実行ログを前記ストレージに蓄積する関係実行ログ管理部と、
前記関係情報を用いて、前記第２のデータベースサーバに格納されたテーブルに対し、所定のビューを生成するための前記ＳＱＬ文を生成するビュー生成式生成部と、
を更に有すること特徴とする請求項１１に記載のデータ移行サーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ移行システム及びデータ移行サーバに関する。
【背景技術】
【０００２】
近年、データレイクと呼ばれる複数のデータベースのデータを一元的に集約し、種々の目的に活用するデータ処理基盤が注目されている。このデータレイクにデータを移行する技術は、例えば、Ａｐａｃｈｅ  Ｓｑｏｏｐ（非特許文献１）に開示されている。
【０００３】
一部のデータレイクは、ＳＱＬと呼ばれるリレーショナルデータベースで用いられる問い合わせ言語を用いて、格納されたデータを処理する機構を備える。例えば、Ａｐａｃｈｅ  Ｈａｄｏｏｐ及びＡｐａｃｈｅ  Ｈｉｖｅを備えたデータレイクでは、ＨｉｖｅＱＬと呼ばれるＳＱＬに類似した言語を用いて、データを処理する。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Ａｐａｃｈｅ  Ｓｑｏｏｐ［Ｏｎｌｉｎｅ］、「平成３０年２月８日検索」、インターネット＜ｈｔｔｐｓ：／／ｓｑｏｏｐ．ａｐａｃｈｅ．ｏｒｇ／ｄｏｃｓ／１．４．７／ＳｑｏｏｐＵｓｅｒＧｕｉｄｅ．ｈｔｍｌ＞
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、Ａｐａｃｈｅ  Ｓｑｏｏｐによるデータベースの移行では、移行元となるデータベースのテーブル名と、移行先のデータレイクにおけるテーブル名とを明示的に指定する必要がある。
【０００６】
このため、例えば、定期的にデータベースのテーブルをデータレイクに集約する環境で、移行元のデータベースのテーブルにカラムが追加された場合、データレイクでは異なるテーブル名でデータを登録して管理する必要が生じる。
【０００７】
複数のファイルを一つにまとめるアーカイブ用途では、アーカイブ時刻を接尾辞として付加することでデータを区別することが一般に行われるため、同様にテーブルの管理が必要となる。
【０００８】
このように、移行元のデータベースのテーブルと、移行先のデータレイクのテーブルが一対一で対応しない場合が頻繁に生じる。このため、データレイクを利用するユーザは、すべてのテーブルの変更を把握した上で、各テーブルに対しＳＱＬを発行しなければならず工数を要する。
【０００９】
さらに、ＳＱＬを用いてデータレイクにアクセスするプログラムの開発においても、各テーブルの変更を考慮したＳＱＬを発行する必要があるため、プログラムの開発に工数を要するという。
【００１０】
本発明の目的は、移行元のデータベースのテーブルと移行先のデータレイクのテーブルが一対一で対応しない場合でも、データレイクに対するＳＱＬを用いた問い合わせを低工数で実現することにある。
【課題を解決するための手段】
【００１１】
本発明の一態様のデータ移行システムは、第１のデータベースサーバと移行サーバと第２のデータベースサーバとがネットワークを介して接続され前記ネットワークを経由してデータの送受信を相互に行い、前記第１のデータベースサーバから前記第２のデータベースサーバに前記移行サーバを介して前記データを移行させるデータ移行システムであって、前記第１のデータベースサーバは、実行されたＳＱＬ文を指す実行ログと所定のテーブルを格納し、前記移行サーバは、前記第１のデータベースサーバに格納されている前記実行ログを取得する実行ログ取得部と、前記実行ログから前記第１のデータベースサーバに格納されている前記テーブルの変更に関わる前記実行ログを関係実行ログとして抽出する関係実行ログ抽出部と、前記関係実行ログを用いて前記第２のデータベースサーバに格納されたデータ間の関係を関係情報として生成する関係情報生成部とを有することを特徴とする。
【００１２】
本発明の一態様のデータ移行サーバは、実行されたＳＱＬ文を指す実行ログと所定のテーブルを格納した第１のデータベースサーバから第２のデータベースサーバにデータを移行させるデータ移行サーバであって、前記第１のデータベースサーバに格納されている前記実行ログを取得する実行ログ取得部と、前記実行ログから前記第１のデータベースサーバに格納されている前記テーブルの変更に関わる前記実行ログを関係実行ログとして抽出する関係実行ログ抽出部と、前記関係実行ログを用いて前記第２のデータベースサーバに格納されたデータ間の関係を関係情報として生成する関係情報生成部とを有することを特徴とする。
【発明の効果】
【００１３】
本発明の一態様によれば、移行元のデータベースのテーブルと移行先のデータレイクのテーブルが一対一で対応しない場合でも、データレイクに対するＳＱＬを用いた問い合わせを低工数で実現することができる。
【図面の簡単な説明】
【００１４】
【図１】実施例のデータ移行システムの構成を示す図である。
【図２】実施例のハードウェア構成を示す図である。
【図３】データの移行処理を示すシーケンス図である。
【図４】関係情報生成処理およびビュー生成処理を示すシーケンス図である。
【図５】実行ログの例を示す図である。
【図６】図５のＳＱＬ文の実行により生じるテーブルの変更を示す図である。
【図７】操作リストを示す図である。
【図８】操作パターンを特定するフローチャートを示す図である。
【図９】データレイクに格納されたテーブルの例を示す図である。
【図１０】テーブルに対する操作パターンの定義を示す図である。
【図１１】生成された関係情報の例を示す図である。
【図１２】ビューを生成するためのＳＱＬ文を生成するフローチャートを示す図である。
【図１３】関係実行ログの存在するテーブルに対し、ビューを生成するＳＱＬ文を生成するためのフローチャートを示す図である。
【図１４】ビューをユーザが定義するためのディスプレイ表示の例を示す図である。
【図１５】図１３のフローチャートによりビューを生成するためのＳＱＬ文が生成される様子を示す図である。
【図１６】実施例の効果の一例を示す図である。
【発明を実施するための形態】
【００１５】
以下、実施例を図面を用いて説明する。
【００１６】
＜システム構成＞
図１を参照して、実施例のデータ移行システムの構成について説明する。
データベースサーバ（第１のデータベースサーバ）１０１は、ＳＱＬ実行部１０２とストレージ１０３を有する。ストレージ１０３には、テーブル定義１０４、テーブル１０５及びＳＱＬの実行ログ１０６が格納される。
【００１７】
移行サーバ１０７は、実行制御部１０８、テーブル取得部１０９、テーブル変換部１１０、テーブル登録部１１１、ビュー定義取得部１１２、関係情報生成部１１３、ビュー生成式生成部１１４、ビュー登録部１１５、テーブル定義取得部１１６、テーブル定義変換部１１７、テーブル定義登録部１１８、実行ログ取得部１１９、関係実行ログ抽出部１２０、関係実行ログ管理部１２１及びストレージ１２２を有する。ストレージ１２２には、関係実行ログ１２３、操作パターン１２４、操作リスト１２５、関係情報１２６及び接尾辞一覧１２７が格納される。
【００１８】
データレイク（第２のデータベースサーバ）１２８は、ＳＱＬ実行部１２９とストレージ１３０を有する。ストレージ１３０には、ビュー１３１、テーブル定義１３２及びテーブル１３３が格納される。
【００１９】
＜ハードウェア構成＞
図２を参照して、実施例のデータ移行システムのハードウェア構成について説明する。
データベースサーバ１０１、移行サーバ１０７及びデータレイク１２８は、ネットワーク２０１を介して接続され、ネットワーク２０１を経由してデータの送受信を相互に行う。
【００２０】
データベースサーバ１０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０２、メモリ２０３、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）２０４、ストレージ１０３及びバス２０５により構成される。メモリ２０３には、ＳＱＬ実行部１０２が格納されている。ＣＰＵ２０２は、メモリ２０３からバス２０５を経由してアプリケーションの実行コードを読み込み、アプリケーションを実行する。ＣＰＵ２０２は、バス２０５を経由してメモリ２０３及びストレージ１０３に対してデータの読み書きを実行することができる。
ＣＰＵ２０２は、バス２０５及びＮＩＣ２０４を経由して、ネットワーク２０１に接続された移行サーバ１０７及びデータレイク１２８とデータの送受信を行うことができる。
【００２１】
移行サーバ１０７は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０６、メモリ２０７、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）２０８、ストレージ１２２及びバス２０９により構成される。
【００２２】
さらに、移行サーバ１０７は、ユーザとのデータの入出力のため、マウス２１０、ディスプレイ２１１及びキーボード２１２を備える。メモリ２０７には、実行制御部１０８、テーブル取得部１０９、テーブル変換部１１０、テーブル登録部１１１、ビュー定義取得部１１２、関係情報生成部１１３、ビュー生成式生成部１１４、ビュー登録部１１５、テーブル定義取得部１１６、テーブル定義変換部１１７、テーブル定義登録部１１８、実行ログ取得部１１９、関係実行ログ抽出部１２０、関係実行ログ管理部１２１が格納されている。
【００２３】
ＣＰＵ２０６は、ＣＰＵ２０２と同等の機能を有する。ＣＰＵ２０６は、マウス２１０及びキーボード２１２の操作情報を受信し、バス２０９を経由してメモリ２０７及びストレージ１２２に対してデータの読み書きを実行したり、メモリ２０７に格納されたアプリケーションを制御したりすることができる。ＣＰＵ２０６は、ディスプレイ２１１を介して、ユーザに情報を表示することができる。
【００２４】
データレイク１２８は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２１５、メモリ２１４、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）２１３、ストレージ１３０及びバス２１６により構成される。メモリ２１４には、ＳＱＬ実行部１２９が格納されている。ＣＰＵ２１５は、ＣＰＵ２０２と同等の機能を有する。
【００２５】
＜データ移行処理＞
図３を参照して、データの移行処理について説明する。
初期状態では、移行サーバ１０７に配置されたメモリ２０７上で、実行制御部１０８が動作している。実行制御部１０８は、定期的な時刻を契機として、システム時刻を文字列として取得する。移行対象となるテーブルに付加する接尾辞（例えば、年に一度の実行であれば「＿２０１７」からなる文字列）３０２を生成し、テーブル定義取得部１１６に接尾辞３０２を含むテーブル定義取得要求３０１を送信し、テーブル取得部１０９に接尾辞３０２を含むテーブル取得要求３０９を送信し、ストレージ１２２に格納された接尾辞一覧１２７に接尾辞３０２を追記し、次の契機まで待機する。
【００２６】
契機は、人手による手動実行でも良いし、他のアプリケーションからの命令であっても良い。接尾辞３０２は、接頭辞あるいは移行先のデータレイク１２８において同名のテーブルが存在するなどの不整合が生じなければ任意の文字列でも良い。
【００２７】
テーブル定義取得部１１６は、実行制御部１０８から送信されたテーブル定義取得要求３０１を受信し、テーブル名の一覧を取得するＳＱＬ文を生成し、生成したＳＱＬ文を含むテーブル一覧取得命令３０３をデータベースサーバ１０１のＳＱＬ実行部１０２に送信する。テーブルの一覧は、一般に以下の様なＳＱＬ文［１］により取得することができる。
￥ｄｔ；    ［１］
【００２８】
ＳＱＬ実行部１０２は、テーブル定義取得部１１６から送信されたＳＱＬ文［１］を含むテーブル一覧取得命令３０３を受信し、受信したＳＱＬ文を実行してストレージ１０３に格納されたテーブル定義１０４からテーブル名の一覧であるテーブル一覧３０４を生成し、テーブル定義取得部１１６に送信する。
【００２９】
テーブル定義取得部１１６は、ＳＱＬ実行部１０２から送信されたテーブル一覧３０４を受信し、受信したテーブル一覧３０４に含まれる各テーブルに対して、テーブル定義を生成するＳＱＬ文を生成し、生成したＳＱＬ文を含むテーブル定義取得命令３０５をＳＱＬ実行部１０２に送信する。
【００３０】
テーブル定義は、一般に以下の様なＳＱＬ文［２］により取得することができる（ｔａｂｌｅ＿ｎａｍｅ）にテーブル定義を取得したいテーブル名を指定する）。
￥ｄ  ｔａｂｌｅ＿ｎａｍｅ；    ［２］
【００３１】
ＳＱＬ実行部１０２は、テーブル定義取得部１１６から送信されたＳＱＬ文を含むテーブル定義取得命令３０５を受信し、ＳＱＬ文を実行してストレージ１０３に格納されたテーブル１０５に対応したテーブル定義３０６を取得し、取得したテーブル定義３０６をテーブル定義取得部１１６に送信する。
【００３２】
送受信されるテーブル定義３０６には、テーブル名、テーブルが含まれるデータベース名、テーブルに含まれるカラム名及び各カラムの型の情報が含まれる。必要に応じて一部のデータが欠落していても良いし、他のデータ（例えば、所有者や作成者に関わる情報）が付加されていても良い。
【００３３】
テーブル定義取得部１１６は、ＳＱＬ実行部１０２から送信されたテーブル定義３０６を受信し、受信したテーブル定義３０６及び受信したテーブル取得要求３０１に含まれる接尾辞３０２をテーブル定義変換部１１７に送信する。
【００３４】
テーブル定義変換部１１７は、受信したテーブル定義３０６をデータレイク１２８で解釈可能なテーブル定義に変換し、テーブル名に接尾辞３０２を付加し、変換済みテーブル定義３０７としてテーブル定義登録部１１８に送信する。このテーブル定義の変換は、移行元のデータベースサーバ１０１が備えるＳＱＬ実行部１０２と移行先のデータレイク１２８が備えるＳＱＬ実行部１２９の解釈できるＳＱＬ文、特にカラムの型が異なるために必要となる。
【００３５】
この処理は、例えば、移行元のデータベースサーバ１０１において数値をＦｌｏａｔ型として扱っており、移行先のデータレイク１２８において対応する型がＮｕｍｅｒｉｃ型であるような場合に必要となる。変換処理は、対応する型を規則とて保持することにより自動変換しても良いし、ユーザに対し変換処理の入力をマウス２１０、ディスプレイ２１１及びキーボード２１２を介して求めても良い。
【００３６】
テーブル定義登録部１１８は、テーブル定義変換部１１７から送信された変換済みテーブル定義３０７を受信し、受信した変換済みテーブル定義３０７からデータレイク１２８でテーブルを定義するためのＳＱＬ文を生成し、データレイク１２８のＳＱＬ実行部１２９に対し生成したＳＱＬ文を含むテーブル定義格納命令３０８を送信する。生成されるＳＱＬ文は、多くの場合、「ＣＲＥＡＴＥ  ＴＡＢＬＥ」から始まるＳＱＬ文となる。例えば、データベースサーバ１０１から取得したテーブル定義３０６のテーブル名が「強度試験」、接尾辞３０２が「＿２０１７」である場合、データレイク１２８に格納されるテーブル名は「強度試験＿２０１７」となる。
【００３７】
ＳＱＬ実行部１２９は、テーブル定義登録部１１８から送信されたテーブル定義格納命令３０８を受信し、命令に含まれるＳＱＬ文を実行し、ストレージ１３０にテーブル定義１３２として格納する。
【００３８】
テーブル取得部１０９は、実行制御部１０８から送信されたテーブル取得要求３０９を受信し、テーブルの一覧を取得するＳＱＬ文を生成し、生成したＳＱＬ文を含むテーブル一覧取得命令３１１を、データベースサーバ１０１のＳＱＬ実行部１０２に送信する。生成されるＳＱＬ文は、例えば、テーブル一覧取得命令３０３に含まれるＳＱＬ文が挙げられる。
【００３９】
ＳＱＬ実行部１０２は、テーブル取得部１０９から送信されたテーブル一覧取得命令（３１０）を受信し、命令に含まれるＳＱＬ文を実行し、ストレージ１０３に含まれるテーブル定義１０４からテーブル名の一覧をテーブル一覧３１１として生成し、テーブル取得部１０９に送信する。
【００４０】
テーブル取得部１０９は、ＳＱＬ実行部１０２から送信されたテーブル一覧３１１を受信し、テーブル一覧３１１に含まれる各テーブルに対し、テーブルのデータ（レコードの集合）を取得するためのＳＱＬ文を生成し、ＳＱＬ実行部１０２に対し生成したＳＱＬ文を含むテーブル取得命令３１２を送信する。生成されるＳＱＬ文は、例えば、テーブルをカンマ区切りのテキスト（ＣＳＶ、Ｃｏｍｍａ−ｓｅｐａｒａｔｅｄ  Ｖａｌｕｅｓ）で出力する「ＣＯＰＹ  ＴＯ」から始まるＳＱＬ文が挙げられる。
【００４１】
ＳＱＬ実行部１０２は、テーブル取得部１０９から送信されたテーブル取得命令３１２を受信し、受信したＳＱＬ文を実行することで出力するテーブル３１３を生成し、生成したテーブル３１３をテーブル取得部１０９に送信する。
【００４２】
テーブル取得部１０９は、ＳＱＬ実行部１０２から送信されたテーブル３１３を受信し、実行制御部１０８から送信された接尾辞３０２とともに、テーブル変換部１１０に送信する。
【００４３】
テーブル変換部１１０は、テーブル取得部１０９から送信されたテーブル３１３と接尾辞３０２を受信し、受信したテーブル３１３に接尾辞３０２を付加しファイル名とし、データレイク１２８のＳＱＬ実行部１２９が解釈可能なテーブルに変換し、変換済みテーブル３１４としてテーブル登録部１１１に送信する。このテーブルの変換は、受信したテーブル３１３と移行先のデータレイク１２８の備えるＳＱＬ実行部１２９の解釈できるテーブルに相違がある場合に必要となる。もしくは、性能向上などの目的においても必要となる場合がある。この処理は、例えば、出力されたＣＳＶの改行コードの変換や、ＣＳＶの区切り文字「，」の別の文字への変換などが挙げられる。この処理は、変換規則をあらかじめ規定して自動変換しても良いし、ユーザに対し変換処理の入力をマウス２１０、ディスプレイ２１１及びキーボード２１２を介して求めても良い。
【００４４】
テーブル登録部１１１は、テーブル変換部１１０から送信された変換済みテーブル３１４を受信し、データレイク１２８のＳＱＬ実行部１２９が解釈可能なテーブルを登録するためのＳＱＬ文を生成し、生成したＳＱＬ文を含むテーブル格納命令３１５として送信する。この際、生成されるＳＱＬ文は、前述のテーブル定義格納命令３０８で格納されたテーブル定義と整合させ、テーブル定義格納命令３０８で指定されたテーブル名とデータ格納命令３１５で格納されるテーブルを一対一で対応させる。
【００４５】
また、生成されるＳＱＬ文は、例えば、テーブルをデータベースにコピーする「ＣＯＰＹ  ＦＲＯＭ」文が挙げられる。
【００４６】
ＳＱＬ実行部１２９は、テーブル登録部１１１から送信されたテーブル格納命令３１５を受信し、命令に含まれるＳＱＬ文を実行し、ストレージ１３０に変換済みテーブル３１４を格納する。変換済みテーブル３１４は、移行サーバ１０７からネットワークを経由して読み込んでも良いし、テーブル格納命令３１５に含めても良い。
【００４７】
＜関係情報生成処理＞
実施例では、データベースサーバ１０１のストレージ１０３に格納された実行ログ１０６を取得し、テーブルの変更（例えば、テーブル・カラムの追加・削除、テーブル名・カラム名の変更）に関わる実行ログを関係実行ログとして抽出し、抽出した関係実行ログを解析することで、データベースサーバ１０１のストレージ１０３に格納されたテーブル１０５に対する操作パターン（例えば、テーブルの結合・分割）を特定し、テーブル名、実行ログ及び操作パターンを含む情報を関係情報として生成する。以下、その処理の詳細について説明する。
【００４８】
図４を参照して、関係情報生成処理について説明する。
実行制御部１０８は、図３に示したデータ移行処理の終了を契機として、実行ログ取得要求４０１を生成し、実行ログ取得部１１９に対して生成した実行ログ取得要求４０１を送信する。
【００４９】
実行ログ取得部１１９は、実行制御部１０８から送信された実行ログ取得要求４０１を受信し、データベースサーバ１０１のストレージ１０３に格納された実行ログ１０６を取得し、取得した実行ログ１０６から移行サーバ１０７のストレージ１２２に格納された関係実行ログ１２３と一致する実行ログを除外し、関係実行ログ抽出部１２０に抽出された実行ログ４０２を送信する。
【００５０】
実施例では、実行ログはデータベースサーバ１０１のＳＱＬ実行部１０２において実行されたＳＱＬ文を指す。図５は、実行ログ取得部１１９から関係実行ログ抽出部１２０に送信される実行ログ４０２の例を示す。また、図６は、図５に示した実行ログ４０２により、テーブルが変更される様子を示す。この実行ログ４０２では、２つのＳＱＬ文が実行されている。「ＡＬＴＥＲ」から最初の「ｉｎｔ；」までが１つ目のＳＱＬ文（５０１）であり、「強度試験」テーブル（６０１）に対し、「圧縮強度」カラム（６０３）を追加するＳＱＬ文である。
【００５１】
「ＵＰＤＡＴＥ」から最後の「）；」までが２つ目のＳＱＬ文５０２であり、１つ目のＳＱＬ文５０１で追加した「強度試験」テーブル６０１の「圧縮強度」カラム（６０３）に、「強度試験＿圧縮強度」テーブル６０２の「圧縮強度」カラム６０６の値を挿入している。２つ目のＳＱＬ文（５０２）の「ＷＨＥＲＥ」以降の「”強度試験”．”試験ＩＤ”＝”強度試験＿圧縮強度”．”試験ＩＤ”」は挿入の条件を指定しており、この場合、「強度試験」テーブル６０１の「試験ＩＤ」カラム６０４の値と、「強度試験＿圧縮強度」テーブル６０２の「試験ＩＤ」カラム６０５の値が一致することを条件に値を挿入する。
【００５２】
関係実行ログ抽出部１２０は、実行ログ取得部１１９から送信された実行ログ４０２を受け取り、実行ログ４０２の各ＳＱＬ文を操作リスト１２５と照合し、構文が一致するＳＱＬ文を関係実行ログ４０３として抽出し、抽出された関連実行ログ４０３を関係実行ログ管理部１２１及び関係情報生成部１１３に送信する。
【００５３】
図７は、操作リスト１２５の例を示す。操作リスト１２５は、データベースサーバ１０１のストレージ１０３に格納された、テーブル１０５への操作に関連したＳＱＬ文の構文が列挙されている。関係実行ログ抽出部１２０は、実行ログ４０２に含まれるＳＱＬ文と操作リスト１２５に記載されたＳＱＬ構文の一致を判定し、判定対象のＳＱＬ文が、いずれかのＳＱＬ構文に一致していればそのＳＱＬ文が関係実行ログであると判断する。
【００５４】
例えば、１つ目のＳＱＬ文５０１は操作リスト１２５に記載された操作「カラム追加」７０１に該当するため、関係実行ログとして抽出される。また、２つ目のＳＱＬ文５０２は、操作「レコードの更新」に該当するため、同じく関係実行ログとして抽出される。操作リスト１２５における操作７０２は、図７に列挙されたものに限定されるものではなく、テーブルの変更を伴うＳＱＬの構文であれば漏れなく列挙されて良い。
【００５５】
関係実行ログ管理部１２１は、関係実行ログ抽出部１２０より送信された関係実行ログ４０３を受信し、移行サーバ１０７のストレージ１２２に受信した関係実行ログ４０３を蓄積する。本機能により、例えば、データベースサーバ１０１における実行ログ１０６のライフサイクル管理により、実行ログ１０６が削除、もしくは別システムに移動された場合においても、過去の関係実行ログを処理することが可能となる。また、関係実行ログのみを蓄積することで、テーブルの読み込みなど、テーブルの操作に関係しない実行ログを除外することが可能となり、ストレージ１２２を容量の観点で効率的に扱うことが可能となる。
【００５６】
関係情報生成部１１３は、関係実行ログ抽出部１２０から送信された関係実行ログ４０３を受信し、データ移行サーバ１０７のビュー定義取得部１１２にビュー一覧取得要求４０４を送信し、データ移行サーバ１０７のテーブル定義取得部１１６にテーブル一覧取得要求４０５を送信する。
【００５７】
ビュー定義取得部１１２は、関係情報生成部１１３から送信されたビュー一覧取得要求４０４を受信し、ビュー一覧を取得するＳＱＬ文を生成し、データレイク１２８のＳＱＬ実行部１２９に生成したＳＱＬ文を含むビュー一覧取得命令４０６を送信する。一般に、ビュー一覧は以下の様なＳＱＬ文により取得することができる。
ｄｖ；    ［３］
【００５８】
ＳＱＬ実行部１２９は、ビュー定義取得部１１２から送信されたビュー一覧取得命令４０６を受信し、ビュー一覧取得命令４０６に含まれるＳＱＬ文を実行し、データレイク１２８のストレージ１３０に格納されたビュー１３１からビュー一覧４０７を生成し、生成したビュー一覧４０７を関係情報生成部１１３に送信する。
【００５９】
送受信されるビュー一覧４０７には、ビュー名及びビューが含まれるデータベース名が含まれる。必要に応じて一部のデータが欠落していても良いし、他のデータ（例えば、所有者や作成者に関わる情報）が付加されていても良い。
【００６０】
テーブル定義取得部１１６は、関係情報生成部１１３から送信されたテーブル一覧取得要求４０５を受信し、テーブル一覧を取得するＳＱＬ文を生成し、データレイク１２８のＳＱＬ実行部１２９に生成したＳＱＬ文を含むテーブル一覧取得命令４０８を送信する。一般に、テーブル一覧は以下の様なＳＱＬ文［４］により取得することができる。
ｄｔ；    ［４］
【００６１】
ＳＱＬ実行部１２９は、テーブル定義取得部１１６から送信されたテーブル一覧取得命令４０８を受信し、受信したテーブル一覧取得命令４０８に含まれるＳＱＬ文を実行し、データレイク１２８のストレージ１３０に格納されたテーブル定義１３２からテーブル一覧４０９を生成し、生成したテーブル一覧４０９をテーブル定義取得部１１６に送信する。
【００６２】
テーブル定義取得部１１６は、ＳＱＬ実行部１２９から送信されたテーブル一覧４０９を受信し、受信したテーブル一覧４０９を関係情報生成部１１３に送信する。
【００６３】
送受信されるテーブル一覧４０９には、テーブル名及びテーブルが含まれるデータベース名が含まれる。必要に応じて一部のデータが欠落していても良いし、他のデータ（例えば、所有者や作成者に関わる情報）が付加されていても良い。
【００６４】
関係情報生成部１１３は、ビュー定義取得部１１２から送信されたビュー一覧４０７及びテーブル定義取得部１１６から送信されたテーブル一覧４０９を受信し、図８に示す操作パターン特定フローを実行する。
【００６５】
以下、図８に示す操作パターン特定フローの動作を説明する。
ステップ８０１では、テーブル定義取得部１１６から送信されたテーブル一覧４０９を受信し、受信したテーブル一覧４０９からデータ移行処理で付加した接尾辞に関して、最新の接尾辞が付加されたテーブルを抽出し、接尾辞を取り除きデータ移行処理によって移行された最新のテーブル一覧を生成する。
【００６６】
図９は、データレイク１２８のストレージ１３０に格納されたテーブル１３３の例である。これらのテーブルは、図６に示したテーブルの移行処理によって生成され、図６の「強度試験」テーブル６０１は図９の「強度試験＿２０１５」テーブル９０１に、図６の「強度試験＿圧縮強度」テーブル６０２は図９の「強度試験＿圧縮強度＿２０１５」テーブル９０２に、図６の「強度試験」テーブル６０７は図９の「強度試験＿２０１６」テーブル９０３に、図６の「強度試験＿圧縮強度」テーブル６０８は図９の「強度試験＿圧縮強度＿２０１６」テーブル９０４の移行データにそれぞれ対応する。
【００６７】
本ステップにより、最新の接尾辞が付加された「強度試験＿２０１６」テーブル９０３及び「強度試験＿圧縮強度＿２０１６」テーブル９０４が抽出され、接尾辞が取り除かれることにより、「強度試験」及び「強度試験＿圧縮強度」が生成される。
【００６８】
ステップ８０２では、関係実行ログ抽出部１２０から送信された関係実行ログ４０３に含まれる実行ログにおいて、操作リスト１２５のｔａｂｌｅ＿ｎａｍｅに該当するテーブル名と前ステップで抽出されたテーブル名との一致を判定することにより、前ステップで抽出されたテーブル名とそのテーブルに関わる関係実行ログの対応を取る。例えば、図５のＳＱＬ文（５０１、５０２）において、ｔａｂｌｅ＿ｎａｍｅに該当するテーブル名は「強度試験」であり、前ステップで抽出された「強度試験」にそれぞれ対応する。
【００６９】
ステップ８０３では、各テーブルに対応した関係実行ログとストレージ１２２に格納された操作パターン１２４とを照合し、構文の一致を判定することでテーブルに対する操作パターンを特定する。図１０に操作パターン１２４を示す。操作パターン１２４は、操作パターン１００１とＳＱＬ構文１００２の対応関係からなるテーブルである。
【００７０】
実施例において、操作パターンとは、テーブルに対して別のテーブルのカラムを加えるといった、ある目的を達成するために実行される１文以上のＳＱＬ文の連なりを指す。図７に示した操作リスト（１２５）との違いは、操作リスト１２５の操作とＳＱＬ構文が一対一で対応することに対し、各操作パターン１００１は１文以上のＳＱＬ構文の連なりに対応する点である。
【００７１】
例えば、テーブルの水平分割１００３であれば、２つの「ＣＲＥＡＴＥ  ＴＡＢＬＥ」文により、「ｏｌｄ＿ｔａｂｌｅ＿ｎａｍｅ」で指定されたテーブルから２つのテーブル「ｎｅｗ＿ｔａｂｌｅ＿ｎａｍｅ＿１」及び「ｎｅｗ＿ｔａｂｌｅ＿ｎａｍｅ＿２」を生成する。さらに、「ＤＲＯＰ  ＴＡＢＬＥ」文により、「ｏｌｄ＿ｔａｂｌｅ＿ｎａｍｅ」で指定されたテーブルを削除する。
【００７２】
また、操作パターン１００１は、複数のＳＱＬ構文の連なりにより定義されても良い。例えば、カラム追加（１００４）であれば、「ＡＬＴＥＲ  ＴＡＢＬＥ」文のみでカラムを追加し値を挿入しなかった場合１００５と、「ＡＬＴＥＲ  ＴＡＢＬＥ」文の実行後に「ＵＰＤＡＴＥ」文により「ｃｏｌｕｍｎ＿ｎａｍｅ」で指定されるカラムに値を挿入した場合１００６の２つが定義されている。操作パターン１００１の定義は、図１０に限定されるものではなく、必要に応じて自由に拡張・縮小することができる。また、正規表現を用いてより複雑なＳＱＬ構文を操作パターンとして定義しても良いし、複数の操作パターンを組み合わせて新たな操作パターンを定義しても良い。
【００７３】
ステップ８０４では、前ステップにおいて、操作パターンを特定できたか判定する。特定できた場合、ステップ８０５に移る。特定できない場合、ステップ８０６に移る。
【００７４】
ステップ８０５では、テーブル名、関係実行ログ及び特定した操作パターンを含む情報を関係情報４１０として生成し、ストレージ１２２に格納する。この関係情報には、必要に応じて生成時刻と言った付加的な情報を含んで良い。
【００７５】
図１１に、本ステップにより生成された関係情報４１０の例を示す。この例では、特定された操作パターンはカラム追加（１１０１）、関係実行ログは「ＡＬＴＥＲ  ＴＡＢＬＥ」文及び「ＵＰＤＡＴＥ」文の２つ１１０２、テーブル名は「強度試験」１１０３の組が関係情報として生成されている。
【００７６】
ステップ８０６では、操作パターンの特定失敗として、ディスプレイ２１１を通してテーブル名、対応する関係実行ログを提示する。さらに、マウス２１０及びキーボードを介してユーザに新たな操作パターン１００１の定義を求めても良い。
【００７７】
関係情報生成部１１３は、図８に示した操作パターン特定フローの実行後、生成した関係情報４１０、ビュー一覧４０７及びテーブル一覧４０９を含むビュー生成命令４１１をビュー生成式生成部１１４に送信する。
【００７８】
＜ビュー生成処理＞
ビュー生成式生成部１１４は、関係情報生成部１１３から送信されたビュー生成命令４１１を受信し、図１２に示したビュー生成式生成フローを実行する。以下、図１２のビュー生成式生成フローについて説明する。
【００７９】
ステップ１２０１では、ビュー生成命令４１１に含まれるテーブル一覧４０９から最新の接尾辞を有するテーブルを抽出し、最新のテーブルに対するビューを生成するＳＱＬ文を生成する。
【００８０】
図９を例に説明すると、最新の接尾辞を有するテーブルは「強度試験＿２０１６」テーブル９０３及び「強度試験＿圧縮強度＿２０１６」テーブル９０４の２つである。これらのテーブルに対し、ビューを生成するため、以下に示すＳＱＬ文（［５］及び［６］）を生成する。ビュー名は、テーブル名にテーブルとビュー名を区別するための接頭辞である「ｖ＿」を付加し、最新の接尾辞「＿２０１６」をさらに付加することで生成する。
【００８１】
「ＣＲＥＡＴＥ  ＶＩＥＷ」句は、テーブルとビューを区別するため、接頭辞として「ｖ＿」を付加し、最新の接頭辞をさらに付加することで生成されたビュー名を含めることで生成する。「ＳＥＬＥＣＴ」句及び「ＦＲＯＭ」句は、抽出されたテーブル名とそのテーブルに含まれるすべてのカラムを指定することで生成する。この処理により、最新の接尾辞を有するテーブルに一対一で対応し、かつ同じカラム構造を有するビューが生成される。
【００８２】
ＣＲＥＡＴＥ  ＶＩＥＷ  “ｖ＿強度試験＿２０１６＿２０１６”  ＡＳ
ＳＥＬＥＣＴ  ＊  ＦＲＯＭ  “強度試験＿２０１６”；    ［５］
ＣＲＥＡＴＥ  ＶＩＥＷ  “ｖ＿強度試験＿圧縮強度＿２０１６＿２０１６”ＡＳ
ＳＥＬＥＣＴ    ＊  ＦＲＯＭ  “強度試験＿２０１６”；    ［６］
【００８３】
なお、実施例の運用が２０１５年より開始され、図９に示したテーブルがデータレイク１２８のストレージ１３０に格納されている状況を想定すると、２０１５年のビュー生成処理おいて、本ステップが実行されることにより、「ｖ＿強度試験＿２０１５＿２０１５」及び「ｖ＿強度試験＿圧縮強度＿２０１５＿２０１５」の２つのビューが生成されていることとなる。以下、その想定にて説明を継続する。
【００８４】
ステップ１２０２では、前ステップで抽出された最新の接尾辞を有するテーブル名から、接尾辞を取り除いたテーブル名を生成し、その中から関係情報４１０に含まれるテーブル名を除いたテーブル名（すなわち、前回のデータ移行処理からテーブルに変更の生じなかったテーブル）に対し、過去のテーブルのビューを生成するためのＳＱＬ文を生成する。
【００８５】
具体的に図９の例で説明する。まず、前ステップにおいて、最新の接尾辞を有するテーブル名である「強度試験＿２０１６」９０３及び「強度試験＿圧縮強度＿２０１６」９０４が抽出され、接尾辞を取り除くことでテーブル名「強度試験」及び「強度試験＿圧縮強度」が得られる。その中から、関係情報４１０に含まれる「強度試験」を取り除き、「強度試験＿圧縮強度」を得る。この「強度試験＿圧縮強度」の過去のテーブル、すなわち、「強度試験＿圧縮強度２０１５」に対するビューを生成するためのＳＱＬ文を本ステップにて生成する。生成するＳＱＬ文は、前ステップと同様の命名規則により、接頭辞として「ｖ＿」、接尾辞として「＿２０１６」が付加された文字列をビュー名とする以下のＳＱＬ文［７］となる。
ＣＲＥＡＴＥ  ＶＩＥＷ  “ｖ＿強度試験＿圧縮強度＿２０１５＿２０１６”  ＡＳ
ＳＥＬＥＣＴ  ＊  ＦＲＯＭ  “強度試験＿２０１５”；      ［７］
【００８６】
図９の例では、２０１５年までのテーブルしかないが、それより前のテーブルが存在する場合、同様に「ｖ＿強度試験＿圧縮強度＿２０１４＿２０１６」のビューを「強度試験＿圧縮強度＿２０１４」テーブルから生成する。また、過去のテーブルが存在しなくなるまでその処理を継続する。
【００８７】
ステップ１２０３では、前ステップにて関係実行ログの存在しないテーブルに対し、ビューが生成された。本ステップでは、関係実行ログの存在する過去のテーブル（図９では、「強度試験」テーブル）に対し、ビューを生成するＳＱＬ文を生成する。このステップは、図１０で示した操作パターン１００１のＳＱＬ構文ごとに定義されている。図９および図１１で示されたテーブル構造及び関係情報の場合は、操作パターン１００１の一つであるカラム追加１００４うち、２つのＳＱＬよりなる構文１００６に対応したフローが実行される。
【００８８】
図１３は、構文１００６に対応したフローを示している。以下、本ステップで生じる処理として図１３の処理フローを説明する。また、そのときにＳＱＬ文が生成される様子を図１５に示す。
【００８９】
ステップ１３０１では、関係情報よりテーブル名を抽出し、ビューとして「ｖ＿」を接頭辞として付加し、最新の接尾辞「-＿２０１６」及び１期前の接尾辞「＿２０１５」よりビューの接尾辞「＿２０１５＿２０１６」を生成し、それぞれを連結することによりビュー名「ｖ＿強度試験＿２０１５＿２０１６」を生成し、「ＣＲＥＡＴＥ  ＶＩＥＷ」の行を生成する。
【００９０】
ステップ１３０２では、前ステップで生成されたビュー名の最新の接尾辞を１期前の接尾辞に変換することにより第一のテーブル名を生成し「．＊」を付加することで１期前のビューに含まれる全カラムを選択対象とする式を生成し、関係実行ログの１つ目のＳＱＬ式より追加されたカラム名を抽出し、それらを並べることによりＳＥＬＥＣＴ行を生成する。
【００９１】
ステップ１３０３では、前ステップで生成したビュー名、及び関係実行ログの２つ目のＳＱＬ式のＦＲＯＭ文で指定されたテーブル名に対し、ステップ１およびステップ２と同様の処理を加えることでビュー名「ｖ＿強度試験＿圧縮強度＿２０１５＿２０１５」を生成し、それらを並べることでＦＲＯＭ行を生成する。
【００９２】
ステップ１３０４では、関係実行ログ２行目に含まれるＷＨＥＲＥ文で指定された各テーブルに対し、ステップ１およびステップ２と同様の処理を加えることでＷＨＥＲＥ行を生成する。
【００９３】
ステップ１３０５では、データレイク（１２８）に格納された２期以上前のテーブルに対し、１期前のテーブルと同様にビューを生成するためのＳＱＬ文を生成する。図９の例では１期前のデータしか存在しないため、この処理はスキップされる。２期以上前のデータが存在する場合は、図１４に示したフローと同様に関係情報、接尾辞情報からビューを生成するＳＱＬ文を生成する。
【００９４】
図８におけるステップ８０４において、操作パターンが特定できなかった場合、ステップ１３０５において、操作パターンを特定できなかった関連実行ログに対するビューの生成式をマウス２１０、ディスプレイ２１１及びキーボード２１２を介してユーザに求めても良い。
【００９５】
図１４は、その際のディスプレイ２１１の表示を示している。ディスプレイ２１１には、関係実行ログから抽出されたテーブル名１４０１、関係実行ログ１４０２（関係実行ログ４０３の一部）及びユーザが対話的にビューの生成式を入力する対話的入出力ウインドウ１４０３を備えている。
【００９６】
ビュー生成式生成部１１４は、生成したＳＱＬ文を含むビュー生成式４１２をビュー登録部１１５に送信する。ビュー登録部１１５は、ビュー生成式生成部１１４から送信されたビュー生成式４１２を受信し、受信したビュー生成式４１２に含まれるＳＱＬ文を含むビュー生成命令４１５をデータレイク１２８のＳＱＬ実行部１２９に送信する。
【００９７】
ＳＱＬ実行部１２９は、ビュー登録部１１５から送信されたビュー生成命令４１５を受信し、ビュー生成命令４１５に含まれるＳＱＬ文を実行し、ＳＱＬ文の実行により生成されたビューをストレージ１３０に格納する。
【００９８】
以上の関係情報生成部１１３による関係情報４１０の生成処理及びビュー生成式生成部１１４とビュー登録部１１５によるビューの生成処理により得られる効果を図１６を用いて説明する。
【００９９】
データ移行処理により、データレイク１２８に「強度試験＿２０１５」テーブル（９０１及び「強度試験＿圧縮強度＿２０１５」テーブル９０２が生成される。ウインドウ１６０１、１６０２、１６０３における「＃」以降がテーブルやビューのデータを可視化するために実行したＳＱＬ文である。
【０１００】
図１６の例では、各テーブルに試験ＩＤが「２０１５００１」であるレコードがそれぞれ含まれている。まず、２０１５年におけるデータ移行処理およびビュー生成処理により、「ｖ＿強度試験＿２０１５＿２０１５」１６０４及び「ｖ＿強度試験＿圧縮強度＿２０１５＿２０１５」１６０５の２つのビューが生成される。その後、２０１６年のデータ移行処理により「強度試験＿２０１６」テーブル９０３及び「強度試験＿圧縮強度＿２０１６」テーブル９０４が生成される（図中では２０１５年のテーブル、及びそれに関わるビューのみ記載）。
【０１０１】
さらに、ビュー生成処理により、「ｖ＿強度試験＿２０１６＿２０１６」及び「ｖ＿強度試験＿圧縮強度＿２０１６＿２０１６」が生成される。この時、「強度試験＿２０１６」テーブルにはカラムとして「試験ＩＤ」、「計測時刻」、「引張強度」、及び「圧縮強度」が記載されている。一方で、「強度試験＿２０１５」には、カラムとして「試験ＩＤ」、「計測時刻」、「引張強度」が記載されている。このため、２０１５年のデータと２０１６年のデータから圧縮強度を取得したいユーザは、まず、データベース管理者に対しテーブルの変更に関わる情報を取得し、テーブルの構造及び変更履歴をもれなく把握する。さらに、各年のテーブルからデータを取得するために各年のテーブル構造に依存したＳＱＬを発行するアプリケーションを開発する必要が生じるため、工数を要するという課題があった。
【０１０２】
実施例によれば、ビュー生成処理により「ｖ＿強度試験＿２０１５＿２０１６」ビュー１６０６が生成される。このビューは、図１３のビュー生成式生成処理により生成されており、「ｖ＿強度試験＿２０１５＿２０１５」ビュー１６０４及び「ｖ＿強度試験＿圧縮強度＿２０１５＿２０１５」ビュー１６０５のカラムを参照している。また、「ｖ＿強度試験＿２０１５＿２０１６」ビュー１６０６のカラムは、「ｖ＿強度試験＿２０１６＿２０１６」ビューのカラムと一致する。このビュー及び「ｖ＿強度試験＿２０１６＿２０１６」を用いることで、ユーザは２０１６年に移行されたテーブルを把握するのみで、過去のデータを接尾辞を変えるだけでアクセスすることが可能となる。
【０１０３】
図１６では、「ｖ＿強度試験＿２０１５＿２０１６」ビュー１６０６に対し、「ＳＥＬＥＣＴ  ＊  ＦＲＯＭ  “ｖ＿強度試験＿２０１５＿２０１６”」というＳＱＬを発行している１６０３。「強度試験＿２０１５」９０１や「ｖ＿強度試験＿２０１５＿２０１５」１６０４には、カラムとして「圧縮強度」が含まれていないため、「強度試験＿圧縮強度＿２０１５」９０２に含まれる「圧縮強度」は取得できない。しかし、ビュー生成処理により間接的に「強度試験＿圧縮強度＿２０１５」テーブル９０２のカラムを参照するビューを生成することで「強度試験＿２０１６」テーブル９０３と同じ構造を持ったデータとして２０１５年のデータを扱うことが可能となる。
【０１０４】
このため、実施例によれば、ユーザがテーブル構造をもれなく把握する必要がなくなり、アプリケーションの開発においても対象ビューの接尾辞を機械的に変更することで過去のデータを取得・処理することが可能となる。この結果、データの理解やアプリケーションの開発に要していた工数を削減することができる。
【符号の説明】
【０１０５】
１０１  データベースサーバ
１０２  ＳＱＬ実行部
１０３  ストレージ
１０４  テーブル定義
１０５  テーブル
１０６  実行ログ
１０７  移行サーバ
１０８  実行制御部
１０９  テーブル取得部
１１０  テーブル変換部
１１１  テーブル登録部
１１２  ビュー定義取得部
１１３  関係情報生成部
１１４  ビュー生成式生成部
１１５  ビュー登録部
１１６  テーブル定義取得部
１１７  テーブル定義変換部
１１８  テーブル定義登録部
１１９  実行ログ取得部
１２０  関係実行ログ抽出部
１２１  関係実行ログ管理部
１２２  ストレージ
１２３  関係実行ログ
１２４  操作パターン
１２５  操作リスト
１２６  関係情報
１２７  接尾辞一覧
１２８  データレイク
１２９  ＳＱＬ実行部
１３０  ストレージ
１３１  ビュー
１３２  テーブル定義
１３３  テーブル
【図１】
2019169001.tif 000003
【図２】
2019169001.tif 000004
【図３】
2019169001.tif 000005
【図４】
2019169001.tif 000006
【図５】
2019169001.tif 000007
【図６】
2019169001.tif 000008
【図７】
2019169001.tif 000009
【図８】
2019169001.tif 000010
【図９】
2019169001.tif 000011
【図１０】
2019169001.tif 000012
【図１１】
2019169001.tif 000013
【図１２】
2019169001.tif 000014
【図１３】
2019169001.tif 000015
【図１４】
2019169001.tif 000016
【図１５】
2019169001.tif 000017
【図１６】
2019169001.tif 000018