JP2008077329A - データベースアクセス設計情報解析システム - Google Patents

データベースアクセス設計情報解析システム Download PDF

Info

Publication number
JP2008077329A
JP2008077329A JP2006254633A JP2006254633A JP2008077329A JP 2008077329 A JP2008077329 A JP 2008077329A JP 2006254633 A JP2006254633 A JP 2006254633A JP 2006254633 A JP2006254633 A JP 2006254633A JP 2008077329 A JP2008077329 A JP 2008077329A
Authority
JP
Japan
Prior art keywords
sql
source code
database
database access
storage unit
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
JP2006254633A
Other languages
English (en)
Inventor
Yumio Suga
弓郎 須賀
Masato Nishiguchi
真人 西口
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.)
Hitachi Software Engineering Co Ltd
Original Assignee
Hitachi Software Engineering Co 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 Hitachi Software Engineering Co Ltd filed Critical Hitachi Software Engineering Co Ltd
Priority to JP2006254633A priority Critical patent/JP2008077329A/ja
Publication of JP2008077329A publication Critical patent/JP2008077329A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】既存のシステムを動作させることなく、データベーストレースログから既存のシステムで必要なソースコードを選別することで、効率よく他のプログラミング言語のソースコードを再構築することが可能となるデータベースアクセス設計情報解析システムを提供する。
【解決手段】SQL解析部103では、DBトレースログ記憶部101から読み込まれたDBトレースログ、及びテーブル定義情報記憶部102から読み込まれた各種テーブル定義情報に基づいて既存システムで利用されていたSQL文が解析される。そして、当該SQL文の解析結果に基づいて既存のシステムで用いられていたソースコードとは異なる他のプログラミング言語のソースコードが再構築される。
【選択図】図1

Description

本発明は、既存のデータベースアクセスコンポーネントのソースコードの内容を他のプログラミング言語に再構築する機能を有するデータベースアクセス設計情報解析システムに関するものである。
ソフトウェア開発において、既存のシステムを新しいプラットフォームや、新しいプログラミング言語で再構築することがある。その際には、画面表示処理や通信処理、データベースアクセス処理などの各コンポーネントについて作成しなおす必要がある。
コンピュータ等における画面表示や通信処理は、プラットフォームの変更や言語の変更に伴い大幅に改修する必要があるが、データベースアクセスに関しては、既存システムがRDBMS(Relational Data Base Management System)を利用している。したがって、新しいシステムも当該RDBMSを利用する限り、既存のシステムで使用しているデータベースアクセスコンポーネントと同様の仕様で新しいデータベースアクセスコンポーネントを作成することが可能となる。
現在では、特許文献1に記載された発明のように、既存のデータベースアクセスコンポーネントのソースコードから仕様書を作成して、当該作成された仕様書を基にした新しいデータベースアクセスコンポーネントのソースコードを作成することや、既存のデータベースアクセスコンポーネントのソースコードの内容をそのまま他のプログラミング言語で再構築することが主流となっている。
特開2000−181697
しかしながら、上記の従来技術にあっては、次のような問題点がある。
既存のデータベースアクセスコンポーネントのソースコードを利用して仕様書を作成する場合や、既存のデータベースアクセスコンポーネントのソースコードをそのまま他のプログラミング言語に書きなおす場合には、既存のデータベースアクセスコンポーネント中に含まれるSQL文(Structured Query Language)を参照する必要がある。
ここで、当該SQL文のすべてが既存のシステムで使用されているとは限らず、仕様書を作成する場合等において無駄な変換作業をしなければならない場合がある。また、前記SQL文の中から既存のシステムで必要とされているSQL文がどのSQL文であるのかを判別させるためには、既存のシステムを動作させることで必要なSQL文を選別する必要がある。
上記目的を達成するために、本発明のデータベースアクセス設計情報解析システムは既存システムのデータベーストレースログが記憶されているデータベーストレースログ記憶部と、前記既存システムで利用されているデータベース内のテーブル定義情報が記憶されているテーブル定義情報記憶部と、前記データベーストレースログ及びテーブル定義情報を解析してデータベースアクセス設計情報を作成する解析部と、前記データベースアクセス設計情報に基づいてソースコードを生成するソースコード生成部とを備えたことを特徴とする。
また、前記データベーストレースログには、前記既存システムで実際に実行されたSQL文が含まれていることを特徴とする。
また、前記テーブル定義情報には、前記SQL文で参照されるテーブルに関する情報が含まれていることを特徴とする
本発明のデータベースアクセス設計情報解析システムによれば、既存のシステムを動作させることなく、データベーストレースログから既存のシステムで必要なソースコードを選別することによって、効率よく他のプログラミング言語のソースコードを再構築することができる。
以下、本発明を適用したデータベースアクセス設計情報解析システムの一実施の形態について説明する。
図1に示すように、本データベースアクセス設計情報解析システムは、データベーストレースログ記憶部101(以下、「DBトレースログ記憶部101」ともいう。)と、テーブル定義情報記憶部102と、解析部としてのSQL解析部103と、解析結果格納部104と、ソースコード生成部105と、ソースコード記憶部106とから構成されている。
DBトレースログ記憶部101には、既存システムで利用されているデータベーストレースログ(以下、「DBトレースログ201」ともいう。)が記憶されている(図2参照)。このDBトレースログ201には、実行日の日付202と実際に実行されたSQL文203とが含まれている。また、テーブル定義情報記憶部102には、既存システムで利用されていたデータベースに含まれているテーブル定義情報が記憶されている。このテーブル定義情報には、SQL文203で参照されるテーブルに関する情報が含まれている。具体的に、テーブル定義情報は、SQL文203で参照されているテーブルT1,T2等の情報である(図2参照)。
SQL解析部103では、前記DBトレースログ及びテーブル定義情報に基づいて既存システムで利用されていたSQL文203が解析される。解析結果格納部104には、SQL解析部103において解析された解析結果が格納される。また、ソースコード生成部105では、解析結果格納部104に格納されている解析結果に基づいてデータベースアクセス用のソースコードが生成される。そして、ソースコード記憶部106には、ソースコード生成部105で生成されたソースコードが記憶される。
次に、解析結果格納部104に格納される解析結果の具体的な内容について説明する。図3aに示すように、SQL解析部103において解析されたSQL文304の解析結果は、SQLテーブル301の形式で解析結果格納部104に格納される。このSQLテーブル301には、SQL解析部103において解析されたSQL文304のIDであるSQLID302、解析されたSQL文304が対象とするテーブルである対象テーブル303、解析されたSQL文304、当該解析されたSQL文304のSQLタイプ305の各情報が含まれている。
SQLテーブル301におけるSQLID302の欄には、SQL解析部103において解析された順に連続する番号が記述される。また、対象テーブル303の欄には、SQL解析部103において解析されたSQL文304によって検索、挿入、更新、削除の対象となるテーブルであって解析対象となるSQL文304から抽出された情報が記述される。SQLタイプ305は、SQL解析部103において解析されたSQL文304のタイプに対応している。すなわち、このSQLタイプ305の欄には、SQL解析部103において解析されたSQL文304が検索であればSELECTが、挿入であればINSERTが、更新であればUPDATEが、そして削除であればDELETEがそれぞれ記述される。
さらに、解析結果格納部104には、SQL解析部103においてSQL文304が解析されることで得られるパラメータ情報が、パラメータテーブル306の形式で格納される。図3bに示すように、パラメータテーブル306には、SQLテーブル301のSQLID302に対応するSQLID307、サブIDであるORDER308、パラメータのタイプであるパラメータタイプ309、パラメータ名310、パラメータの型である型311の各情報が含まれている。
ORDER308の欄には、1つのSQLID307に対して複数のパラメータが存在する場合にテーブルレコードを一意に識別するためのサブIDが記述される。パラメータタイプ309の欄には、パラメータが外部からの入力データとして必要なデータの場合にはINが、SQL実行の結果に出力される値の場合にはOUTがそれぞれ記述される。図3bに示す例では、SQLID307が3で、かつORDER308が1のSQLデータについては、パラメータタイプ309がOUTとなっている。これは、当該SQLデータが、SQLテーブル301におけるSQLID307のSQLデータのパラメータであることを表しており、当該SQLデータのSQL文は検索のSQL文となっているので、SQL実行の結果に出力される値であることを表している。
次に、テーブル定義情報記憶部102に記憶されるテーブル定義情報401について説明する。図4に示すように、テーブル定義情報401には、連続する番号402、列の名前を表す項目名403、列の型を表す型404、列の長さを表す長さ405、列が必須であるか否かを表す必須情報406、列が主キーであるか否かを表す主キー情報407の各情報が含まれている。このテーブル定義情報401は、既存システムで利用されているデータベース内に存在するすべてのテーブルの数量だけ存在する。
次に、このように構成される本データベースアクセス設計情報解析システムを用いてSQL文を解析するための方法について説明する。なお、以下の処理は図示しないコンピュータのROM(Read Only Memory)等に記憶されているプログラムに基づいて、MPU(MicroProcessing Unit)等の制御手段による制御のもとで実行される。
まず、本システムによってDBトレースログ201が解析されてからソースコードが生成されるまでの流れを説明する。図5に示すように、SQL解析部103にDBトレースログ記憶部101からSQLデータが読み込まれるとともに、テーブル定義情報記憶部102から各種のテーブル定義情報401が読み込まれる(ステップ501)。
次に、SQL解析部103において、SQLデータ及び各種のテーブル定義情報401に基づいて作成されたデータベースアクセス設計情報が解析結果として解析結果格納部104に格納される(ステップ502)。そして、ソースコード生成部105に、解析結果格納部104から解析結果に関する情報が読み込まれてソースコードが生成される(ステップ503)。なお、当該ソースコードはソースコード記憶部106に記憶される。
次に、図5におけるステップ501、502の処理を詳述する。
図6に示すように、まず、SQL解析部103では、DBトレースログ記憶部101からすべてのSQLデータが読み込まれる(ステップ601)。次に、SQL解析部103では、読み込まれたすべてのSQLデータのSQLタイプ305がそれぞれ判別されて解析結果格納部104のSQLテーブル301へと格納される(ステップ602)。次に、SQL解析部103では、読み込まれたSQLデータから当該SQLデータが対象とする対象テーブル303に関する情報が検出されるとともに、当該対象テーブル303に関する情報が解析結果格納部104のSQLテーブル301へと格納される(ステップ603)。
次に、解析結果格納部104に格納されているSQLテーブル301内において、重複しているSQLデータがある場合には、当該重複しているSQLデータのうち、何れか1つのみが残されて、他はすべて削除される(ステップ604)。次に、後述するパラメータ抽出処理(ステップ605)が実行されるとともに、包含関係解析処理(ステップ606)が実行される。具体的には、ステップ605におけるパラメータ抽出処理でパラメータ抽出されたSQLデータ(図8a参照)と、パラメータ抽出されていないSQLデータ(図8b参照)との比較が行われ、パラメータ部分が包含関係となっているSQLデータを見つけてパラメータ抽出されていないSQLデータの削除が実行される。そして、最後に後述するSELECT文の処理が実行される(ステップ607)。
次に、図6におけるステップ605の処理を詳述する。
図7に示すように、解析結果格納部104のSQLテーブル301に格納されているすべてのSQLデータの比較が完了するまで以降の処理が繰り返される(ステップ701)。まず、任意の2つのSQLデータが比較される(ステップ702)。そして、これら2つのSQLデータにおいて、定数値のみ異なる場合には(ステップ703)、当該定数値の部分の型が検査される(ステップ704)。ここで、定数値とは、SQL文に記述される「列名='XX'」のXX部分を意味する。一方、比較された2つのSQLデータにおいて、定数値以外の情報も異なる場合には、ステップ704からステップ709までの処理は実行されず、ステップ702へと処理が戻されて次のSQLデータの比較が開始される。
ステップ704において、検査された定数値の部分の型が文字列である場合、解析結果格納部104に格納されているパラメータテーブル306の型311の欄に「文字列」が記述される(ステップ705)。一方、ステップ704において、検査された定数値部分の型が数値である場合、解析結果格納部104に格納されているパラメータテーブル306の型311の欄に「数値」が記述される(ステップ706)。
その後、解析結果格納部104に格納されているパラメータテーブル306のSQLID307の欄に比較元であるSQLデータのSQLIDが記述されるとともに、パラメータタイプ309の欄に「IN」が記述される(ステップ707)。次に、解析結果格納部104に格納されているパラメータテーブル306のパラメータ名310の欄にパラメータとして認識された値の列名の部分が記述されるとともに(ステップ708)、比較元であるSQLデータがパラメータの含まれるSQL文として修正されて(図8c参照)、解析結果格納部104に格納されているSQLテーブル301に記述される(ステップ709)。
次に、図6におけるステップ607の処理を詳述する。
図9に示すように、解析結果格納部104に格納されているSQLテーブル301に記述されているSQLデータのうち、SQLタイプ305がSELECTであるSQLデータについての比較が完了するまで以降の処理が繰り返される(ステップ901)。まず、解析結果格納部104に格納されているSQLテーブル301から対象テーブル303とSQL文304とが抽出されるとともに(ステップ902)、抽出されたSQL文304におけるSELECT句に含まれている列がすべて取得される(ステップ903)。
次に、テーブル定義情報記憶部102に記憶されているテーブル定義情報401に含まれており、ステップ902で抽出された対象テーブル303に一致するテーブルのテーブル情報と、ステップ903で取得された列の情報とが比較されることにより、各列の定義情報が取得される(ステップ904)。次に、ステップ904で取得された各列の定義情報に記述されている列の型が解析結果格納部104に格納されているパラメータテーブル306の型311の欄に記述されるとともに、ステップ903で取得された各列が解析結果格納部104に格納されているパラメータテーブル306におけるパラメータ名310の欄に記述される(ステップ905)。
次に、解析結果格納部104に格納されているパラメータテーブル306におけるパラメータタイプ309の欄に「OUT」が記述されるとともに(ステップ906)、SQLID307の欄にステップ902で抽出されたSQL文304のSQLIDが記述される。また、パラメータテーブル306におけるORDER308の欄には、ステップ905で記述される列に対応した連続する番号が記述される(ステップ907)。
次に、図5におけるステップ503の処理を詳述する。
ソースコード生成部105においては、図10に示すように、解析結果格納部104に格納されているSQLテーブル301における対象テーブル303の欄に記述されている情報が同一である間は、以降の処理が繰り返される(ステップ1001)。まず、SQLテーブル301から1つのSQLデータが取得される(ステップ1002)。このとき、パラメータテーブル306のSQLID307の欄に記述されているIDの数値が同一である間は、ステップ1004からステップ1007までの処理が繰り返される(ステップ1003)。
次に、ステップ1002で取得されたSQLデータと同一のSQLID307を有するSQLデータがパラメータテーブル306から取得される(ステップ1004)。次に、パラメータテーブル306におけるパラメータタイプ309の欄に「IN」が記述されている場合には、InDTO作成処理が実行される(ステップ1006)。一方、パラメータテーブル306におけるパラメータタイプ309の欄に「OUT」が記述されている場合には、OutDTO作成処理が実行される(ステップ1007)。ここで、DTOとは、Data Transfer Objectの略である。InDTOは、SQL実行のために必要なパラメータが格納されるDTOのことであり、OutDTOは、SQL実行の結果、データベースから取得されたデータが格納されるDTOのことである。
そして、パラメータテーブル306におけるSQLID307の欄に記述されているIDの数値が同一である間処理が繰り返されたら、ソースコード生成部105においてDAO作成処理が実行される(ステップ1008)。ここで、DAOとは、Data Access Objectの略であり、データベースに対してSQL実行のためのメソッドを所有するオブジェクトのことである。
ソースコード生成部105において生成されたDAO1101は、図11に示すように、クラス名1102に対象テーブル303の欄に記述された情報が反映されるとともに、メソッド名1103にSQLテーブル301におけるSQLタイプ305が反映されている。また、引数1104にはInDTOが反映されるとともに、SQL1105にはSQLテーブル301に記述されているSQL文305が反映されている。そして、戻り値1106にはOutDTOが反映されている。
ソースコード生成部105において生成されたInDTO1201は、図12に示すように、クラス名1202には、連続する番号が記載されている。また、属性の型1203、getメソッドの戻り値1205、setメソッドの引数の型1209にはパラメータテーブル306の型311が反映されている。また、属性名1204、getメソッドの名前1206、getメソッドの戻り値1207、setメソッドの名前1208、及び引数名1210にはパラメータテーブル306に記述されているパラメータ名310が反映されている。
ソースコード生成部105において生成されたOutDTO1301は、図13に示すように、クラス名1302には、連続する番号が記載されている。また、属性の型1303、getメソッドの戻り値1305、setメソッドの引数の型1309にはパラメータテーブル306の型311が反映されている。また、属性名1304、getメソッドの名前1306、getメソッドの戻り値1307、setメソッドの名前1308、及び引数名1310にはパラメータテーブル306に記述されているパラメータ名310が反映されている。
以上のように、本実施の形態のデータベースアクセス設計情報解析システムによれば、次のような効果がある。
・本実施の形態では、既存のデータベースアクセスコンポーネントのソースコードをそのまま他のプログラミング言語に再構築するのではなく、DBトレースログ201をSQL解析部103で解析し、その解析結果に基づいて他のプログラミング言語のソースコードを再構築するようにした。したがって、既存のシステムで必要とされているSQL文がどのSQL文であるのかを判別させるために当該既存のシステムを動作させることなく、DBトレースログ201から既存のシステムで必要なSQL文を選別して効率よく他のプログラミング言語のソースコードを再構築することができる。
なお、上記実施の形態は、以下のように変更して実施してもよい。
・上記実施の形態においては、再構築する他のプログラミング言語としてC++を例に説明したが、当該プログラミング言語は、C言語やVisual系の他の言語等であってもよい。
データベースアクセス設計情報解析システムのブロック図。 DBトレースログの概要図。 (a)はSQLテーブル、(b)はパラメータテーブル。 テーブル定義情報の例。 ソース生成までの作業フローチャート。 データベースアクセス設計情報を作成する処理のフローチャート。 パラメータ抽出処理フローチャート。 (a)はパラメータ抽出されたSQLデータの概要図、(b)はパラメータ抽出されていないSQLデータの概要図、(c)はパラメータを含むSQLとして修正されたSQLデータの概要図。 SELECT文処理フローチャート。 ソースコード生成処理フローチャート。 生成されたDAOの概要図。 生成されたInDTOの概要図。 生成されたOutDTOの概要図。
符号の説明
101・・・データベーストレースログ記憶部、102・・・テーブル定義情報記憶部、103・・・解析部としてのSQL解析部、107・・・ソースコード生成部、201・・・データベーストレースログ、401・・・テーブル定義情報。

Claims (3)

  1. 既存システムのデータベーストレースログが記憶されているデータベーストレースログ記憶部と、
    前記既存システムで利用されているデータベース内のテーブル定義情報が記憶されているテーブル定義情報記憶部と、
    前記データベーストレースログ及びテーブル定義情報を解析してデータベースアクセス設計情報を作成する解析部と、
    前記データベースアクセス設計情報に基づいてソースコードを生成するソースコード生成部と
    を備えたことを特徴とするデータベースアクセス設計情報解析システム。
  2. 前記データベーストレースログには、前記既存システムで実際に実行されたSQL文が含まれていることを特徴とする請求項1に記載のデータベースアクセス設計情報解析システム。
  3. 前記テーブル定義情報には、前記SQL文で参照されるテーブルに関する情報が含まれていることを特徴とする請求項2に記載のデータベースアクセス設計情報解析システム。
JP2006254633A 2006-09-20 2006-09-20 データベースアクセス設計情報解析システム Pending JP2008077329A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006254633A JP2008077329A (ja) 2006-09-20 2006-09-20 データベースアクセス設計情報解析システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006254633A JP2008077329A (ja) 2006-09-20 2006-09-20 データベースアクセス設計情報解析システム

Publications (1)

Publication Number Publication Date
JP2008077329A true JP2008077329A (ja) 2008-04-03

Family

ID=39349326

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006254633A Pending JP2008077329A (ja) 2006-09-20 2006-09-20 データベースアクセス設計情報解析システム

Country Status (1)

Country Link
JP (1) JP2008077329A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114168622A (zh) * 2020-09-10 2022-03-11 北京达佳互联信息技术有限公司 一种基于领域特定语言的数据查询方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114168622A (zh) * 2020-09-10 2022-03-11 北京达佳互联信息技术有限公司 一种基于领域特定语言的数据查询方法及装置

Similar Documents

Publication Publication Date Title
US9633010B2 (en) Converting data into natural language form
CN101727320B (zh) 用于识别数据库更改对应用的影响的方法和系统
KR101707369B1 (ko) 이벤트 저장소의 구축 방법 및 장치
US9383973B2 (en) Code suggestions
US7822710B1 (en) System and method for data collection
US10437574B2 (en) System and method for providing code completion features for code modules
JP5791149B2 (ja) データベース・クエリ最適化のためのコンピュータで実装される方法、コンピュータ・プログラム、およびデータ処理システム
WO2021253641A1 (zh) 着色语言翻译方法
US6873935B2 (en) System and method for statically checking source code
CN107851003A (zh) 用于改进程序性能的字段专业化系统和方法
Fagin et al. Cleaning inconsistencies in information extraction via prioritized repairs
JP2007537515A (ja) 情報を取り出すためのシステムと方法および情報を保存するためのシステムと方法
CN100527131C (zh) 一种ims数据库互动式访问方法和工具
US8433729B2 (en) Method and system for automatically generating a communication interface
JP2006285707A (ja) 業務仕様作成支援システム及び方法
CN111752549A (zh) Sql函数生成方法及装置
Anderson et al. Supporting analysis of SQL queries in PHP AiR
JP2008077329A (ja) データベースアクセス設計情報解析システム
US20060048094A1 (en) Systems and methods for decoupling inputs and outputs in a workflow process
CN115098365A (zh) Sql代码的调试方法、装置、电子设备及可读存储介质
US6925630B1 (en) Method for generating code for processing a database
JP5076700B2 (ja) データベース検証方法及び装置
JP5359446B2 (ja) 情報処理システム、アクセスパス決定方法及びアクセスパス決定プログラム
Silva et al. Assisting Data Warehousing Populating Processes Design through Modelling using Coloured Petri Nets.
JP2011113298A (ja) 流用ソースコード解析システム及びプログラム並びに記録媒体