説明

アプリケーションプログラム作成支援装置、データベースシステム、アプリケーションプログラム作成支援方法およびそのプログラム

【課題】複雑なSQL文が作成されてしまうことを回避し、パフォーマンスおよび保守性の高いデータベースシステムを作成可能なアプリケーションプログラム作成支援装置、アプリケーションプログラム作成支援方法およびそのプログラム、ならびにそれにより作成されたデータベースシステムを提供する。
【解決手段】登録対象のSQL文411に文字列操作関数や型変換演算子や演算子などの特定のコードが含まれるか否かを判断し、特定のコードが含まれていないと判定されたSQL文411が作成対象のアプリケーションプログラムに組み込まれる適正なSQL文であるとして所定の記憶領域に保持されるように構成する。これにより、アプリケーションプログラム作成時に、適正なSQL文のみがデータベースシステムの論理アーキテクチャにおけるデータアクセス領域400にデプロイされるように構成することが可能となる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アプリケーションプログラム作成支援装置、データベースシステム、アプリケーションプログラム作成支援方法およびそのプログラムに関し、特にJava(登録商標)開発環境を利用したデータベース管理システム(DataBase Management System:DBMS)を使用したアプリケーションプログラムを作成するためのアプリケーションプログラム作成支援装置、データベースシステム、アプリケーションプログラム作成支援方法およびそのプログラムに関する。
【背景技術】
【0002】
従来、Java(登録商標)言語やCOBOL言語等の汎用プログラム言語を用いたソフトウエア開発では、Structured Query Language(以下、SQLという)文がアプリケーションプログラムにおけるビジネスロジックの中に組み込まれた、いわゆる埋め込みSQLの形式でアプリケーションプログラムを作成することが一般的であった。また、作成されたアプリケーションプログラムは、通常、階層構造におけるビジネスロジック層(ビジネスロジック領域ともいう)に配置されていた。
【0003】
しかしながら、上記のようなIT(Information Technology)アーキテクチャの配置設計方法には、以下のような問題点が存在した。
【0004】
まず1つ目は、ビジネスロジックの変更が直接データベースに影響するため、システムを再構成する際の柔軟性が確保できない点である。2つ目は、データベースの設計変更に伴ってSQL文を変更する際、ビジネスロジックへの影響範囲を特定することが困難であり、変更作業に時間を要する点である。そして3つ目は、悪化したレスポンスを改善するために行うパフォーマンスチューニングの際、チューニング対象のSQL文を特定することが困難であり、作業に時間を要する点である。
【0005】
上記のような問題点の解決策として、従来では、以下のような方法が提案されている。
【0006】
1つ目は、埋め込みSQLの形式で作成されたアプリケーションプログラムにおけるSQL文を含むビジネスロジックを、SQL文を含まないビジネスロジックとSQL文とに手作業で分割し、これらをビジネスロジック領域に再配置する方法である(例えば特許文献1参照)。
【0007】
2つ目は、埋め込みSQLの形式で作成されたアプリケーションプログラムにおけるSQL文を含むビジネスロジックを、SQL文を含まないビジネスロジックとSQL文とに自動的に分割して管理する方法である(例えば特許文献2参照)。
【0008】
3つ目は、本来ビジネスロジック領域である領域を新たなビジネスロジック領域とデータベース領域(データベース層ともいう)とに分割し、新たなビジネスロジック領域にSQL文を含まないビジネスロジックを配置し、データベース領域にSQL文を配置して管理する方法である(例えば非特許文献1参照)。
【0009】
【特許文献1】特開2000−347910号公報
【特許文献2】特開2007−4503号公報
【非特許文献1】“Macromedia JRun パフォーマンス管理ソリューション Precise/Indepth for J2EE, その他製品群の紹介”、日揮情報ソフトウエア株式会社個別カタログ、[online]、[平成20年3月25日検索]、インターネット<URL:http://sirius.itfrontier.co.jp/jrun/pdf/jrw2/jrw_s5.pdf>
【発明の開示】
【発明が解決しようとする課題】
【0010】
ここで、アプリケーションプログラムによる処理には、Java(登録商標)言語やCOBOL言語等で作成されたビジネスロジックでしかできない処理と、SQL文でしかできない処理と、これらの内いずれでもできる処理とが存在する。
【0011】
上記処理のうち、いずれでもできる処理をいずれで処理するように構成するかは、アプリケーションプログラムを作成する者(以下、単に作成者という)の嗜好によって異なる。このため、往々にして構造が複雑なSQL文が作成され、保守性の低下やパフォーマンスの劣化などの問題がもたらされてしまう。
【0012】
上記した特許文献1、2および非特許文献1は、SQL文を含むビジネスロジックとSQL文とを分離する構成は開示しているものの、SQL文の処理内容については触れられていない。したがって、いずれでもできる処理をいずれで処理するように構成するかは、未だに作成者の判断に依存したままであり、複雑なSQL文が作成されてしまうことに起因する保守性の低下やパフォーマンスの劣化などの問題はそのまま温存されてしまっている。
【0013】
そこで本発明は、上記の問題に鑑みてなされたものであり、パフォーマンスおよび保守性の高いデータベースシステムを作成可能なアプリケーションプログラム作成支援装置、アプリケーションプログラム作成支援方法およびそのプログラム、ならびにそれにより作成されたデータベースシステムを提供することを目的とする。
【課題を解決するための手段】
【0014】
かかる目的を達成するために、本発明によるアプリケーションプログラム作成支援装置は、SQL文に特定のコードが含まれるか否かを判定する特定コード判定手段と、前記特定コード判定手段によって前記特定のコードが含まれていないと判定された場合、前記特定のコードが含まれていないSQL文を作成対象のアプリケーションプログラムに組み込まれる適正なSQL文であるとして第1記憶領域に保持する適正SQL文保持手段と、を備えたことを特徴とする。
【0015】
また、本発明によるアプリケーションプログラム作成支援装置は、SQL文に特定のコードが含まれるか否かを判定する特定コード判定手段と、前記特定コード判定手段によって前記特定のコードが含まれていると判定された場合、前記特定のコードが含まれているSQL文を作成対象のアプリケーションプログラムに組み込まれる適正なSQL文であるとして第1記憶領域に保持する適正SQL文保持手段と、を備えたことを特徴とする。
【0016】
上記発明において、前記特定のコードは、所定のカテゴリに属する処理を実現するためのコードであることを特徴とする。
【0017】
上記発明において、前記特定のコードは、条件式、文字列操作関数、および型変換演算子を含む演算子のうち少なくともいずれか1つであることを特徴とする。
【0018】
上記した本発明によるアプリケーションプログラム作成支援装置は、あらかじめ前記SQL文の第1作成者に割り当てられた第1識別情報と該第1作成者がSQL文の登録権限を有するか否かを表す第1登録権限とを管理する第1登録権限管理手段と、前記第1作成者に前記SQL文を入力させるSQL文入力手段と、前記第1作成者に前記第1識別情報を入力させる第1識別情報入力手段と、前記第1作成者が入力した前記第1識別情報を用いて前記第1登録権限を参照することで、前記第1作成者が前記SQL文の登録権限を有するか否かを判定する第1登録権限判定手段と、を備え、前記適正SQL文保持手段が、前記第1登録権限判定手段によって前記第1作成者が前記SQL文の登録権限を有すると判定された場合、前記適正なSQL文を前記第1記憶領域に保持することを特徴とする。
【0019】
上記した本発明によるアプリケーションプログラム作成支援装置は、前記SQL文に対して第1鍵コードを生成する鍵生成手段と、前記鍵生成手段で生成された第1鍵コードと前記適正なSQL文とを用いてデジタル署名を生成するデジタル署名生成手段と、前記デジタル署名を前記適正なSQL文に添付するデジタル署名添付手段と、を備えたことを特徴とする。
【0020】
上記した本発明によるアプリケーションプログラム作成支援装置は、あらかじめビジネスロジックの第2作成者に割り当てられた第2識別情報と該第2作成者がビジネスロジックの登録権限を有するか否かを表す第2登録権限とを管理する第2登録権限管理手段と、前記第2作成者にビジネスロジックを入力させるビジネスロジック入力手段と、前記第2作成者に前記第2識別情報を入力させる第2識別情報入力手段と、前記第2作成者が入力した前記第2識別情報を用いて前記第2登録権限を参照することで、前記第2作成者が前記ビジネスロジックの登録権限を有するか否かを判定する第2登録権限判定手段と、前記第2登録権限判定手段によって前記第2作成者が前記ビジネスロジックの登録権限を有すると判定された場合、前記ビジネスロジックを前記アプリケーションプログラムに組み込まれる適正なビジネスロジックであるとして第2記憶領域に保持する適正ビジネスロジック保持手段と、を備えたことを特徴とする。
【0021】
上記した本発明によるアプリケーションプログラム作成支援装置は、前記第1記憶領域に保持された適正なSQL文と前記第2記憶領域に保持された適正なビジネスロジックとを含むアプリケーションプログラムを生成するアプリケーションプログラム生成手段と、前記生成したアプリケーションプログラムをデータベースシステムの論理アーキテクチャに組み込むアプリケーションプログラム組込み手段と、を有することを特徴とする。
【0022】
上記発明において、前記アプリケーションプログラム組込み手段は、前記適正なSQL文を前記論理アーキテクチャにおけるデータアクセス領域に配置し、前記適正なビジネスロジックを前記論理アーキテクチャにおけるビジネスロジック領域に配置することを特徴とする。
【0023】
上記発明において、前記適正SQL文保持手段は、前記適正なSQL文を圧縮したファイル形式で前記第1記憶領域に保持し、前記適正ビジネスロジック保持手段は、前記適正なSQL文を圧縮したファイル形式で前記第2記憶領域に保持し、前記アプリケーションプログラム生成手段は、前記圧縮された適正なSQL文と前記圧縮された適正なビジネスロジックとを統合して前記アプリケーションプログラムを生成することを特徴とする。
【0024】
上記発明において、前記アプリケーションプログラム生成手段は、あらかじめアーカイブされているフレームワークおよびライブラリのうち少なくとも1つを含めて統合することで前記アプリケーションプログラムを生成することを特徴とする。
【0025】
上記発明において、前記適正SQL文保持手段は、Java(登録商標)開発環境を利用して前記SQL文を前記第1記憶領域に保存することを特徴とする。
【0026】
また、本発明によるデータベースシステムは、上記した本発明によるアプリケーションプログラム作成支援装置を用いて作成された前記SQL文が組み込まれたアプリケーションプログラムを用いて作成されたことを特徴とする。
【0027】
また、本発明によるデータベースシステムは、上記した本発明によるアプリケーションプログラム作成支援装置を用いて作成された前記SQL文が組み込まれたアプリケーションプログラムを用いて作成されたことを特徴とするデータベースシステムであって、前記鍵生成手段により前記第1鍵コードとペアになる鍵コードとして生成された第2鍵コードと、あらかじめ前記適正なSQL文から算出した所定値とを用いて前記デジタル署名が正規のものであるか否かを判定する署名検証手段と、前記署名検証手段により前記デジタル署名が正規のものであると判定された場合、前記適正なSQL文を実行するSQL文実行手段と、を備え、前記鍵生成手段が、前記第1鍵コードと共に前記第2鍵コードを生成することを特徴とする。
【0028】
また、本発明によるアプリケーションプログラム作成支援方法は、SQL文に特定のコードが含まれるか否かを判定する特定コード判定ステップと、前記特定コード判定ステップによって前記特定のコードが含まれていないと判定された場合、前記特定のコードが含まれていないSQL文を作成対象のアプリケーションプログラムに組み込まれる適正なSQL文であるとして第1記憶領域に保持する適正SQL文保持ステップと、を含むことを特徴とする。
【0029】
また、本発明によるアプリケーションプログラム作成支援方法は、SQL文に特定のコードが含まれるか否かを判定する特定コード判定ステップと、前記特定コード判定ステップによって前記特定のコードが含まれていると判定された場合、前記特定のコードが含まれているSQL文を作成対象のアプリケーションプログラムに組み込まれる適正なSQL文であるとして第1記憶領域に保持する適正SQL文保持ステップと、を含むことを特徴とする。
【0030】
また、本発明によるアプリケーションプログラム作成支援プログラムは、所定のアプリケーションプログラム開発環境が組み込まれた情報処理装置において実行されるアプリケーションプログラム作成支援プログラムであって、SQL文に特定のコードが含まれるか否かを判定する特定コード判定処理と、前記特定コード判定処理によって前記特定のコードが含まれていないと判定された場合、前記特定のコードが含まれていないSQL文を作成対象のアプリケーションプログラムに組み込まれる適正なSQL文であるとして第1記憶領域に保持する適正SQL文保持処理と、を前記情報処理装置に実行させることを特徴とする。
【0031】
また、本発明によるアプリケーションプログラム作成支援プログラムは、所定のアプリケーションプログラム開発環境が組み込まれた情報処理装置において実行されるアプリケーションプログラム作成支援プログラムであって、SQL文に特定のコードが含まれるか否かを判定する特定コード判定処理と、前記特定コード判定処理によって前記特定のコードが含まれていると判定された場合、前記特定のコードが含まれているSQL文を作成対象のアプリケーションプログラムに組み込まれる適正なSQL文であるとして第1記憶領域に保持する適正SQL文保持処理と、を前記情報処理装置に実行させることを特徴とする。
【発明の効果】
【0032】
本発明によれば、特定のコードが記述されたSQL文がアプリケーションプログラムに組み込まれることを回避すること、あるいは、特定のコードが記述されたSQL文を積極的にアプリケーションプログラムに組み込むことが可能となるため、例えば文字列操作関数や型変換演算子を含む各種演算子などを有するSQL文のような複雑なSQL文が作成されてしまうことで保守性が低下したりパフォーマンスが劣化したりなどの問題が発生することを回避でき、結果として、パフォーマンスおよび保守性の高いデータベースシステムを作成可能なアプリケーションプログラム作成支援装置、アプリケーションプログラム作成支援方法およびそのプログラム、ならびにそれにより作成されたデータベースシステムを実現することが可能となる。
【発明を実施するための最良の形態】
【0033】
以下、本発明を実施するための最良の形態を図面と共に詳細に説明する。
【0034】
図1は、データベース管理システム(DataBase Management System:DBMS)における各種処理をデータアクセスに着目して複数の処理区分に分類した場合の構成を示す概略模式図である。図1に示すように、各種処理は、『a.画面等との入出力』、『b.処理の制御』、『c.データの加工』、『d.データの連携』、『e.データの集計』、『f.データの高速な取り出し』、および、『g.データの入出力』に分類できる。各処理区分には、それぞれに1〜7の参照符号を付す。また、図面中、左側に配置されるほど汎用プログラム言語で書かれたビジネスロジックでの処理(以下、単にプログラム処理という)が得意とする区分であり、反対に右側に配置されるほどSQL文での処理(以下、単にSQL処理という)が得意とする区分である。したがって、図1上部に示すように、図面中、左側に配置された区分の処理であるほど、SQL処理で実行しようとするとSQL文の構造が複雑化する。なお、ここでいう「得意」とは、処理速度の優位性や保守および管理の容易さなどを意味する。
【0035】
上記分類後の処理区分において、a.画面等との入出力1には、画面への出力や帳票の出力や他システムとの情報のやり取り等の処理が含まれる。この処理区分aに分類される処理は、ビジネスロジックでのプログラム処理でしか実現することができない。
【0036】
b.処理の制御2には、条件分岐などを伴う制御処理が含まれる。この処理区分に分類される処理は、プログラム処理で実現されることが一般的である。ただし、SQL言語がサポートする外部結合(“outer join”)機能を駆使してデータの在る場合と無い場合との条件分岐を記述したり、条件文の述部に“LIKE”演算子を用いることで検索条件が入力されなかった際には条件文として成り立たない構造にしたりなど、ある程度はSQL処理でも実現することができる。
【0037】
c.データの加工3には、取り出したデータの演算処理が含まれる。この処理区分に分類される処理も、プログラム処理で実現されることが一般的である。ただし、SQL言語も一般的な演算子をサポートしており、さらに、市販されている関係データベース管理システム(Relational DBMS)、例えばDB(DataBase)2(登録商標)で言うところの“CASE”文やOracle(登録商標) Databaseがサポートする“DECODE”関数などを使用することで条件分岐も含めたデータ加工処理が可能となるなど、SQL処理でも実現することができる。
【0038】
d.データの連携4には、SQL処理で言うところの表結合(“join”)が含まれる。表結合は、一般的にSQL処理で実現した方が効果的であるが、場合によってはプログラム処理で実現した方が高速性に優れることがある。また、“join”構文に頼りすぎて多くのテーブルを連携させるSQL文を記述してしまうと、パフォーマンス劣化の温床となり易く且つ可読性の悪いものになり易いという欠点もある。
【0039】
e.データの集計5には、“SUM”関数などを使用したデータの集計処理が含まれ、一般的にはセット型の関係データベース(RDB)が得意とする分野である。この処理区分に分類される処理は、例えば1行(row)ずつ値を読み込んで集計するようにプログラム言語で記述することも可能であるが、一般的にはSQL処理として実現した方が生産性、保守性、および高速性に優れたデータベースシステム(DataBase System:DBS)を構築できる。
【0040】
f.データの高速な取り出し6には、蓄積したデータから目的のデータを取り出す検索処理が含まれる。この処理区分に分類される処理は、SQL言語におけるインデックスを使用することで高速化が可能である。ただし、数件〜数百件程度のデータであれば、プログラム処理だけでも速度が気にならない程度に実現することが可能である。
【0041】
g.データの入出力7には、蓄積したデータに対する検索、挿入、変更、および削除などの処理が含まれる。この処理区分に分類される処理は、SQL処理でしか実現することができない。
【0042】
以上のように、DBMSにおける各種処理には、プログラム処理でしか実現できないもの(図1における区分群A1)、SQL処理でしか実現できないもの(図1における区分群A3)、および、いずれの処理でも実現できるもの(図1における区分群A2)が存在する。
【0043】
これらの内、区分群A1およびA3に属する処理区分aおよびgは、役割分担が明確であるため、DBMSを設計する際に特に問題とならない。また、区分群A2に属する処理区分であっても、処理区分bおよびfについては得意とする処理言語が概ね明確である。このため、処理区分aおよびbについてはプログラム処理で実現し、処理区分gおよびfについてはSQL処理で実現することが好ましい。
【0044】
また、上記した処理区分以外の処理区分c、dおよびeに関しては、プログラム処理とSQL処理とのいずれで処理するかが従来において明確に判断されていない。このため、往々にして構造が複雑なSQL文が作成されがちである。
【0045】
ここで、SQL文の構造は、上述したように、図1の図面中左側(プログラム処理側)に近づくほど複雑化する。SQL文の構造が複雑化すると、以下のような欠点が生じる場合がある。
【0046】
まず1つ目は、パフォーマンス劣化の原因になり易いことである。経験上、パフォーマンスに問題のあるDBMSは、データアクセスにその原因があることが多く、そのほとんどのケースで複雑なSQL処理が原因となっている。単純なSQL処理であればインデックスによる高速化が可能であるが、複雑なSQL処理ではチューニングに時間を要し、解決に至らない場合がある。
【0047】
2つ目は、保守性が低下することである。複雑なSQL処理には多くの要件が含まれているため、処理速度を低下させるだけでなく、システム再構成時の柔軟性も損なわれてしまう。この結果、パフォーマンスだけでなく、保守性も低いDBMSとなってしまう。
【0048】
3つ目は、設計書の作成が困難なことである。例えば“join”構文を多用しているなど、難解な表結合をしているSQL処理は可読性が悪い。このため、E−R図などの設計書を作成することが非常に困難となる。
【0049】
4つ目は、テストコードの作成が困難なことである。プログラム処理では全処理を複数のステップに分割して記述しているため、各ステップでの処理に関してそれぞれテストコードを書くことは容易である。一方、SQL処理では全処理を一つの処理として記述するため、想定されるケース分、テストコードを用意する必要がある。用意するテストコードの数は、SQL処理が複雑であればあるほど増加する。このため、難解なSQL処理のテストコードを作成することは事実上不可能である。また、仮に用意できたとしても、このテストコードに不備が含まれていることが多く、本番稼働後に不具合や速度劣化などが生じ易いという欠点も存在する。
【0050】
5つ目は、複雑なSQL処理が増殖してしまうことである。複雑なSQL処理を作成するには高いスキルが必要となるため、誰もが作成できるわけではない。このため、高いスキルを持つ者により記述されたSQL処理は他の者にコピーされて利用される傾向があるが、コピー元のSQL処理が複雑なものであると、結果的に複雑なSQL処理が増殖してしまうことになる。このように増殖した複雑なSQL処理は、コピー元のSQL処理に原因があると分かっていても、どこにコピーされたかを追跡することが現実的に不可能であるため、チューニング担当者によるインデックスの変更が事実上不可能である。また、チューニング担当者がコピー元のSQL処理を修正したとしても、コピー先の担当者がSQL処理の内容を理解していないことが多く、このために同様の修正をどのSQL処理に対して行えば良いかが判断できず、そのまま放置されてしまうケースも多い。
【0051】
6つ目は、アクセスパスが不安定になることである。SQL処理が複雑になるとアクセスパスも複雑になる。アクセスパスとは、オプティマイザがSQL処理を解釈して、一番速いと想定したデータアクセスの順番である。アクセスパスでは、どのテーブルを最初に参照するか、どのインデックスを使用するかがチューニングポイントとなる。しかしながら、多くのテーブルを表結合するような複雑なSQL処理では、オプティマイザが適切なアクセスパスを選択できず、使ってほしいインデックスを使わない場合がある。これは、アクセスパスの決定が、オプティマイザの性能と、オプティマイザの判断材料になるテーブルごとの統計情報の精度とに依存するためである。
【0052】
以上のような欠点を生じさせないためには、複雑なSQL処理が組み込まれることを如何にして排除するかがポイントとなる。そこで本実施の形態では、得意とされる言語が明らかな処理区分a、b、fおよびg以外の処理区分、すなわち、従来では得意とされる言語が明らかでなかった処理区分c、dおよびeに関し、以下のテスト計測に基づいて、いずれで処理するかを決定する。これにより、アプリケーションプログラム作成者の嗜好に依存して複雑なSQL文が作成されてしまうことを回避することが可能となり、結果的にパフォーマンスおよび保守性の高いデータベースシステムを作成可能なアプリケーションプログラム作成支援装置、アプリケーションプログラム作成支援方法およびそのプログラム、ならびにそれにより作成されたDBMSおよびDBSを実現することが可能となる。
【0053】
処理区分c、dおよびeのうち、まず、処理区分c.データの加工3についてのテスト計測結果を説明する。図2は、本テスト計測の際に使用したプログラム処理の処理内容記述文p01およびSQL処理の処理内容記述文p11と、それぞれについての測定結果s01およびs11とを示す図である。なお、測定結果は、SQL処理での処理速度s11を‘1’とした相対値である。また、本テスト計測では、2万件のデータを用意し、これを無作為に全件検索した際の処理速度を計測した。
【0054】
図2に示すように、SQL処理の処理速度s11とプログラム処理の処理速度s01とは、概ね同じである。すなわち、処理速度の点では、プログラム処理とSQL処理とに差が無い。このことから、処理区分c.データの加工1については、生産性と保守性の観点からプログラム処理を採用した方が良いことが導き出せる。これは、実際のアプリケーションで用いられるような複雑な計算式では、処理を複数のステップに分割して記述できるプログラム処理の方が、一つの処理で記述しなければならないSQL処理よりも可読性などに優れているためである。
【0055】
次に、処理区分d.データの連携4についてのテスト計測結果を説明する。図3は、本テスト計測の際に使用したプログラム処理(1)10、プログラム処理(2)20、およびSQL処理30の処理内容を示す図である。また、図4は、プログラム処理(1)10、プログラム処理(2)20、およびSQL処理30それぞれについて、データのヒット率ごとの測定結果をまとめた表である。なお、図4では、各ヒット率でのSQL処理30の処理速度を‘1’とした相対値で、各プログラム処理(1)10、(2)20の処理速度を示す。
【0056】
本テスト計測では、2万件の注文データと200万件の注文明細データとを用意し、これに対する処理速度の計測を行なった。また、プログラム処理(1)10では、これの処理内容記述文p02および参照符号11で示す処理内容の概念図にあるように、まず注文データについて検索し、次いで注文明細データについて検索した。プログラム処理(2)20では、これの処理内容記述文p03および参照符号21で示す処理内容の概念図にあるように、まず注文明細データについて検索し、次いで注文データについて検索した。SQL処理30では、これの処理内容記述文p12および参照符号31で示す処理内容の概念図にあるように、注文データと注文明細データとを表結合(“join”)して検索した。
【0057】
図4に示すように、25%程度までの比較的少ないヒット率である場合、「注文明細データ」→「注文データ」の順に処理するプログラム処理(2)20が最も処理速度が速いという結果が得られた。しかし、ヒット率が27%程度を超えると、この結果は逆転し、プログラム処理(1)10やSQL処理30の方が速いという結果が得られた。特に、ヒット率が100%に近づけば近づくほど、SQL処理30の方が他のプログラム処理(10、20)よりも速く、その差が広がるという結果が得られた。
【0058】
以上のことから、処理区分d.データの連携4については、ヒット率や最初に参照するテーブルに依存してSQL処理とプログラム処理との処理速度が変化することが分かる。このため、一概にプログラム処理とSQL処理とのどちらが望ましいかを判断することはできない。よって、本実施の形態では、処理区分d.データの連携4をどちらの処理として作成するかに自由度を持たせるように構成する。
【0059】
次に、処理区分e.データの集計5についてのテスト計測結果を説明する。図5は、本テスト計測の際に使用したプログラム処理の処理内容記述文p04およびSQL処理の処理内容記述文p14と、それぞれについて測定結果s04およびs14を示す図である。なお、測定結果は、SQL処理での処理速度s14を‘1’とした相対値である。また、本テスト計測では、平均レコード長が1,951バイトのデータを約180万件用意し、その中からインデックスが付いているカラム(Key)を検索条件として18万件ヒットさせ、得られたデータから‘部署’と‘年月’とのそれぞれについて合計金額を算出した際の処理速度を計測した。なお、集計された結果のデータ件数は約171万件になった。
【0060】
図5に示すように、SQL処理の処理速度s14とプログラム処理の処理速度s04との速度差は顕著であった。すなわち、SQL処理の処理速度s14の方がプログラム処理の処理速度s04よりも非常に速いという結果が得られた。これは、レコード型であるプログラム処理で約171万件のデータを集計する場合、約171万回のSQLが実行されることになるのに対し、セット型であるSQL処理では1回の処理で済むためである。
【0061】
また、この処理区分eについては、プログラム処理として作成した方が保守性の低下に繋がる。これは、‘部署’と‘年月’とをループさせるためには、その値を求める際に前処理が必要となるが、この前処理の条件が変更された場合の保守範囲がSQL処理の保守範囲よりも広いためである。したがって、処理区分e.データの集計5については、SQL処理を採用した方が良いことが導き出せる。
【0062】
以上で説明したように、本実施の形態による考察によって、処理区分a、bおよびcについてはプログラム処理を採用することが望ましく、処理区分d、fおよびgについてはSQL処理を採用することが望ましいことが導き出せた。また、処理区分eについては、状況に応じて変更できるように自由度を持たせることが望ましいことが判明した。
【0063】
なお、以下の説明では、処理区分『e.データの集計処理5』に分類される処理をいずれの言語で作成するかを作成者の判断に委ねる構成とするが、本発明はこれに限定されず、SQL処理またはプログラム処理で実現する場合の条件を設定し、この条件を満たすか否かを自動的に判定し、この判定結果に応じてSQL文の登録の可否を判断するように構成しても良い。
【0064】
そこで本実施の形態では、処理区分b.処理の制御2に分類される処理および処理区分c.データの加工3に分類される処理がSQL文で作成されないように制限することを可能とするアプリケーションプログラム作成支援装置(以下、APP作成支援装置という)、アプリケーションプログラム作成支援方法(以下、APP作成支援方法という)およびそれを実現するためのプログラムを例に挙げて説明する。
【0065】
次に、本実施の形態によるAPP作成支援装置、APP作成支援装置およびそのプログラムを説明するにあたり、まず、これらを用いて作成されたDBS(後述におけるRDBS2000(図7参照)に対応)の論理アプリケーション・アーキテクチャ(以下、単に論理アーキテクチャという)を説明する。図6は、本実施の形態により構築されるDBSの論理アーキテクチャを示す模式図である。
【0066】
図6に示すように、本実施の形態により構築されるDBSの論理アーキテクチャは、クライアント領域100とプレゼンテーション領域200とビジネスロジック領域300とデータアクセス領域400とリソース領域500とから構成された階層構造を有する。この階層構造において、本実施の形態によるAPP作成支援装置、APP作成支援方法またはそのプログラムで作成されたアプリケーションプログラムのうち、汎用プログラム言語で作成されたビジネスロジックはビジネスロジック領域300に配置され、SQL言語で作成されたSQL文はデータアクセス領域400に配置される。本説明では、図6に示すように、アプリケーションプログラム(1)310とアプリケーションプログラム(2)320とを例示する。また、アプリケーションプログラム(1)310は、例えばビジネスロジック(1)311とSQL文(X)411および(Y)412とを含んで構成され、アプリケーションプログラム(2)320は、例えばビジネスロジック(2)321とSQL文(Z)421および(X)422とを含んで構成されている。
【0067】
各アプリケーションプログラム((1)310、(2)320)におけるビジネスロジック(1)311および(2)321は、上述したように汎用プログラム言語で記述されており、上記説明におけるプログラム処理に該当する。したがって本実施の形態においては、図6の記述内容311aおよび321aに示すように、図1で説明した処理区分a〜cおよびeのいずれかに分類される処理が少なくとも1つ記述され、それぞれビジネスロジック領域300に配置される。なお、本実施の形態では、ビジネスロジック(1)311および(2)321がJava(登録商標)言語で記述されている場合を例に挙げる。
【0068】
また、各アプリケーションプログラム((1)310、(2)320)におけるSQL文(X)411および(Y)412、ならびに、SQL文(Z)421および(X)422は、上述したようにSQL言語で記述されており、上記説明におけるSQL処理に該当する。したがって本実施の形態においては、図6の記述内容411aおよび412a、ならびに、421aおよび422aに示すように、図1で説明した処理区分d〜gのいずれかに分類される処理が記述され、それぞれデータアクセス領域400に配置される。なお、図6に示す例では、SQL文(X)がリソース領域500に配置されたRDB501に対する処理を実行し、SQL文(Y)がリソース領域500に配置されたRDB502に対する処理を実行し、SQL文(Z)がリソース領域500に配置されたRDB503に対する処理を実行する。
【0069】
この他、図6において、クライアント領域100にはフロントエンドとしてのアプリケーションソフトウエア101などが配置され、リソース領域500にはバックエンドとしての関係データベース(RDB)501〜503などが配置され、プレゼンテーション領域200にはクライアント領域100とビジネスロジック領域300とを結ぶ種々のインターフェース201が配置される。
【0070】
次に、以上で説明した本実施の形態によるアプリケーションプログラムの開発環境および実行環境について図面を用いて詳細に説明する。なお、以下の説明では、アプリケーションプログラムの開発および実行環境としてJava(登録商標)プラットフォームを採用した場合を例に挙げる。図7は、開発環境であるAPP作成支援装置(APP作成支援装置システムともいう)1000および実行環境である関係データベースシステム(RDBS)2000の構成を示すシステム概略図である。
【0071】
まず、本実施の形態によるアプリケーションプログラムの開発環境を実現するAPP作成支援システム1000について説明する。図7に示すように、APP作成支援システム1000は、SQL文作成用サーバ1010とビジネスロジック作成用サーバ(以下、BL作成用サーバという)1020とアプリケーションプログラム作成用サーバ(以下、APP作成用サーバという)1030とを有して構成される。
【0072】
SQL文作成用サーバ1010は、アプリケーションプログラムにおけるSQL文の作成を支援するサーバシステムであり、Java(登録商標) EEのような少なくともJava(登録商標)言語とSQL言語との両方をサポートする開発環境が組み込まれたサーバマシン1011より構成される。また、サーバマシン1011には、SQL文のソースファイル1012とSQL文のjar(Java(登録商標) ARchive)ファイル1013と登録権限管理ファイル1014とを格納する記憶領域が内部もしくは外部に設けられている。なお、SQL文のソースファイル1012およびjarファイル1013と登録権限管理ファイル1014とについては、後述の本実施の形態によるAPP作成支援方法の説明において詳細に説明する。
【0073】
また、SQL文作成用サーバ1010には、所定のネットワークを介してSQL文作成者用端末1001が接続される。アプリケーションプログラムにおけるSQL文の作成者(以下、SQL文作成者という)は、SQL文作成者用端末1001を用いてSQL文作成用サーバ1010にログインしてSQL文を作成し、これをjarファイルに変換する。なお、jarファイルとは、Java(登録商標)のクラスファイル等をまとめた圧縮アーカイブファイルであり、Java(登録商標)言語がサポートする“jar”コマンドで作成される。また、所定のネットワークとは、LAN(Local Area Network)やWAN(Wide Area Network)やインターネットなどである。さらに、SQL文作成者用端末1001には、ディスクトップ型やノート型などの一般的なパーソナルコンピュータ(以下、PCという)を用いることができる。
【0074】
BL作成用サーバ1020は、アプリケーションプログラムにおけるビジネスロジックの作成を支援するサーバシステムであり、少なくともJava(登録商標)開発環境が組み込まれたサーバマシン1021より構成される。また、サーバマシン1021には、ビジネスロジックのソースファイル1022とビジネスロジックのjarファイル1023と登録権限管理ファイル1024とを格納する記憶領域が内部もしくは外部に設けられている。なお、ビジネスロジックのソースファイル1022およびjarファイル1023と登録権限管理ファイル1024とについては、後述のAPP作成支援方法の説明において詳細に説明する。
【0075】
また、BL作成用サーバ1020には、所定のネットワークを介してビジネスロジック作成者用端末(以下、BL作成者用端末という)1002が接続される。アプリケーションプログラムにおけるビジネスロジックの作成者(以下、BL作成者という)は、BL作成者用端末1002を用いてBL作成用サーバ1020にログインしてビジネスロジックを作成し、これをjarファイルに変換する。なお、上記と同様に、所定のネットワークとはLANやWANやインターネットなどであり、BL作成者用端末1002には一般的なPCなどを用いることができる。
【0076】
APP作成用サーバ1030は、上記2つのサーバ(1010および1020)で作成された各種jarファイル(1013および1023)と、アーカイブしておいたフレームワークや各種ライブラリなどとを用いて、アプリケーションプログラムのear(Enterprise ARchive)ファイルを生成するためのサーバシステムであり、少なくともJava(登録商標)開発環境が組み込まれたサーバマシン1031より構成される。また、サーバマシン1031には、上記フレームワークや各種ライブラリなどのアーカイブファイル1032を格納する記憶領域が内部もしくは外部に設けられている。
【0077】
また、APP作成用サーバ1030には、所定のネットワークを介してアプリケーションプログラム作成者用端末(以下、APP作成者用端末という)1003が接続される。アプリケーションプログラムの作成者(以下、APP作成者という)は、APP作成者用端末1003を用いてAPP作成用サーバ1030にログインし、目的のファイルを1つ以上指定してearファイルを作成する。なお、earファイルとは、jarファイルとwar(Web ARchive)ファイルとが圧縮統合された、いわゆるエンタープライズアプリケーションの圧縮統合アーカイブファイルであり、同じくJava(登録商標)言語がサポートする“jar”コマンドで作成される。また、上記と同様に、所定のネットワークとは、LANやWANやインターネットなどであり、APP作成者用端末1003には一般的なPCなどを用いることができる。
【0078】
次に、上記のAPP作成支援システム1000で実現される本実施の形態によるAPP作成支援方法について図面を用いて詳細に説明する。図8から図11は、本実施の形態によるAPP作成支援方法を示すフローチャートである。
【0079】
本実施の形態によるAPP作成支援方法は、図8に示すように、アプリケーションプログラムにおけるSQL文の作成を支援するSQL文作成支援ステップS101と、アプリケーションプログラムにおけるビジネスロジックの作成を支援するビジネスロジック作成支援ステップS102と、上記各ステップで作成したSQL文のjarファイルおよびビジネスロジックのjarファイルとアーカイブしておいたフレームワークや各種ライブラリとを用いてアプリケーションプログラムを生成するアプリケーションプログラム生成支援ステップS103とを含む。以下に、各ステップの詳細な動作を、図面を用いて説明する。なお、図8では、SQL文作成支援ステップS101の後にビジネスロジック作成支援ステップS102を行なうように構成しているが、本発明はこれに限定されず、ステップS101とステップS102との順序は適宜入れ替わるものである。
【0080】
図9に示すように、本実施の形態によるSQL文作成支援ステップS101(図8参照)では、まず、アプリケーションプログラムにおけるSQL文作成者(第1作成者)が、SQL文作成者用端末1001(図7参照)を用いてSQL文作成用サーバ1010へログインし、SQL文作成用サーバ1010が提供するSQL開発環境を利用してSQL文のソースファイルを作成する(ステップS111:SQL文入力手段/ステップ/処理)。続いて、SQL文作成者は、SQL文作成者用端末1001よりSQL文作成用サーバ1010へ、作成したSQL文の登録指示を入力する(ステップS112)。
【0081】
以上のようにSQL文の登録指示が入力されると、SQL文作成用サーバ1010は、まず、登録対象のSQL文に、処理区分b(図1参照:所定のカテゴリ)に分類される処理の条件式(特定のコード)が含まれているか否かを判定する(ステップS113:特定コード判定手段/ステップ/処理)。なお、処理区分『b.処理の制御』2に分類される処理の条件式としては、例えば“DECODE”関数や“CASE”式などが挙げられる。
【0082】
ステップS113の判定の結果、処理区分bに分類される処理の条件式が含まれている場合(ステップS113のYes)、SQL文作成用サーバ1010は、登録要求のあったSQL文を登録せずに処理を終了する。
【0083】
一方、ステップS113の判定の結果、処理区分bに分類される処理の条件式が含まれていない場合(ステップS113のNo)、SQL文作成用サーバ1010は、次に、処理区分c(図1参照:所定のカテゴリ)に分類される処理の文字列操作関数または型変換演算子を含む演算子(特定のコード)が含まれているか否かを判定する(ステップS114:特定コード判定手段/ステップ/処理)。なお、処理区分『c.データの加工』3に分類される処理のうち、文字列操作関数としては例えば“SUBSTR”関数や“LEFT”関数や“RIGHT”関数や“ABS(絶対値)”関数などが挙げられ、型変換演算子としては例えばキャスト演算子などが挙げられ、その他の演算子としては“+”演算子や“−”演算子や“×”演算子や“÷”演算子などが挙げられる。
【0084】
ステップS114の判定の結果、処理区分cに分類される処理の文字列操作関数または型変換演算子を含む演算子が含まれている場合(ステップS114のYes)、SQL文作成用サーバ1010は、登録要求のあったSQL文を登録せずに処理を終了する。
【0085】
一方、ステップS114の判定の結果、処理区分cに分類される処理の文字列操作関数および型変換演算子を含む演算子のいずれも含まれていない場合(ステップS114のNo)、SQL文作成用サーバ1010は、SQL文作成者に対し、当該SQL文作成者の識別用に配布しておいたID(Identification Data)およびパスワード(第1識別情報)を要求する(ステップS115)。
【0086】
ステップS115の要求に対し、SQL文作成者用端末1001よりSQL文作成者のIDおよびパスワードが入力されると(ステップS116:第1識別情報入力手段/ステップ/処理)、SQL文作成用サーバ1010は、入力されたIDおよびパスワードを用いてあらかじめ登録権限管理ファイル1014(第1登録権限管理手段/ステップ/処理)に登録しておいた登録権限(第1登録権限)を参照し、当該SQL文作成者がSQL文を登録する権限を持っているか否かを判定する(ステップS117:第1登録権限判定手段/ステップ/処理)。この判定の結果、SQL文作成者が登録権限を有していない場合(ステップS117のNo)、SQL文作成用サーバ1010は、登録要求のあったSQL文を登録せずに処理を終了する。
【0087】
一方、ステップS117の判定の結果、SQL文作成者が登録権限を有している場合(ステップS117のYes)、SQL文作成用サーバ1010は、例えばJava(登録商標) EE開発環境においてサポートされている機能を用いてデジタル署名を生成する(ステップS118:デジタル署名生成手段/ステップ/処理)。このステップS118には、例えば、一般的なデジタル署名体系を構成する3つのアルゴリズムのうち、公開鍵PK(Public Key:第2鍵コード)と秘密鍵SK(Secret Key:第1鍵コード)との鍵ペアをランダム生成する鍵生成アルゴリズムG(鍵生成手段/ステップ/処理)と、あらかじめ所定のハッシュ関数を用いて算出しておいた登録対象SQL文のハッシュ値(プログラムハッシュ値)と鍵生成アルゴリズムVで生成した秘密鍵SKとを用いてデジタル署名を生成する署名アルゴリズムSとが組み込まれる。なお、登録対象SQL文のプログラムハッシュ値と、生成した鍵ペアのうち公開鍵PKとは、実行環境に置かれた運用サーバ2010に組み込まれた検査モジュール(図12の参照符号2013)に内蔵され、当該デジタル署名が付されたアプリケーションプログラム(図12の参照符号2012)を実行する際の署名検証アルゴリズムVにおいて使用される。
【0088】
次に、ステップS118で生成したデジタル署名とステップS111で入力されたSQL文のソースファイルとを用いてデジタル署名付きのjarファイル1013(図7参照)を生成する(ステップS119:デジタル署名添付手段/ステップ/処理)。その後、SQL文作成用サーバ1010は、生成したjarファイル1013をサーバマシン1011の内部もしくは外部に接続された記憶領域(第1記憶領域)に格納する(ステップS120:適正SQL文保持手段/ステップ/処理)。
【0089】
以上のように、本実施の形態によるSQL文作成支援ステップS101(図8参照)は、図9のステップS113およびS114において処理区分bに分類される処理の条件式や処理区分cに分類される処理の文字列操作関数や型変換演算子を含む各種演算子などを処理区分判定のための指標として利用し、これらのうちいずれかを含むSQL文が作成された場合(ステップS113のYes、および、ステップS114のYes)、当該SQL文がアプリケーションプログラムに組み込まれるjarファイルとして登録されないように構成されている。これにより、SQL文作成者の嗜好によって処理区分d、fまたはgに分類される処理が複雑なSQL処理として作成されてしまうことを回避できる。この結果、複雑なSQL文が作成されてしまうことに起因する保守性の低下やパフォーマンスの劣化などの問題の発生を回避でき、パフォーマンスおよび保守性の高いデータベースシステムを作成可能なアプリケーションプログラム作成支援装置、アプリケーションプログラム作成支援方法およびそのプログラム、ならびにそれにより作成されたデータベースシステムを実現することができる。
【0090】
また、本実施の形態によるSQL文作成支援ステップS101(図8参照)で作成されたSQL文にはデジタル署名が添付されているため、実行環境において不適切なSQL文が実行されることを、デジタル署名を利用して回避するように構成することが可能となる。
【0091】
次に、本実施の形態によるビジネスロジック作成支援ステップS102(図8参照)では、図10に示すように、まず、アプリケーションプログラムにおけるビジネスロジック作成者(第2作成者)がBL作成者用端末1002(図7参照)を用いてBL作成用サーバ1020へログインし、BL作成用サーバ1020が提供するJava(登録商標)開発環境を利用してビジネスロジックのソースファイルを作成する(ステップS131:ビジネスロジック入力手段/ステップ/処理)。続いて、ビジネスロジック作成者は、BL作成者用端末1002よりBL作成用サーバ1020へ、作成したビジネスロジックの登録指示を入力する(ステップS132)。
【0092】
以上のようにビジネスロジックの登録指示が入力されると、BL作成用サーバ1020は、ビジネスロジック作成者に対し、当該ビジネスロジック作成者の識別用に配布しておいたIDおよびパスワード(第2識別情報)を要求する(ステップS133)。
【0093】
ステップS133の要求に対し、BL作成者用端末1002よりビジネスロジック作成者のIDおよびパスワードが入力されると(ステップS134:第2識別情報入力手段/ステップ/処理)、BL作成用サーバ1020は、入力されたIDおよびパスワードを用いてあらかじめ登録権限管理ファイル1024(第2登録権限管理手段/ステップ/処理)に登録しておいた登録権限(第2登録権限)を参照し、当該ビジネスロジック作成者がビジネスロジックを登録する権限を持っているか否かを判定する(ステップS135:第2登録権限判定手段/ステップ/処理)。この判定の結果、ビジネスロジック作成者が登録権限を有していない場合(ステップS135のNo)、BL作成用サーバ1020は、登録要求のあったビジネスロジックを登録せずに処理を終了する。
【0094】
一方、ステップS135の判定の結果、ビジネスロジック作成者が登録権限を有している場合(ステップS135のYes)、BL作成用サーバ1020は、ステップS131で入力されたビジネスロジックを用いてjarファイル1023(図7参照)を生成する(ステップS136)。その後、BL作成用サーバ1020は、生成したjarファイル1023をサーバマシン1021の内部もしくは外部に接続された記憶領域(第2記憶領域)に格納する(ステップS137:適正ビジネスロジック保持手段/ステップ/処理)。
【0095】
以上のように、本実施の形態によるビジネスロジック作成支援ステップS102(図8参照)は、ビジネスロジック作成者にあらかじめ割り当てておいたIDおよびパスワードを入力させ(図10のステップS133〜S134)、これを用いて当該ビジネスロジックを登録できる作成者を制限している(図10のステップS135)。この構成により、不特定の作成者がBL作成用サーバ1020(図7参照)を用いて無闇にSQL文を作成して登録することを防止することが可能となる。また、上記のSQL文作成支援ステップS101(図8参照)においても、SQL文作成者にあらかじめ割り当てておいたIDおよびパスワードを入力させ(図9のステップS114〜S115)、これを用いて当該SQL文を登録できる作成者を制限している(図9のステップS117)ことから、これらを用いてSQL文作成者とビジネスロジック作成者とを一元管理することも可能である。この結果、SQL文作成者とビジネスロジック作成者とを的確に制限することが可能となるため、より確実に複雑なSQL文がアプリケーションプログラムに組み込まれてしまうことを回避することが可能となる。
【0096】
次に、本実施の形態によるアプリケーションプログラム生成支援ステップS103(図8参照)では、図11に示すように、まず、アプリケーションプログラム作成者がAPP作成者用端末1003(図7参照)を用いてAPP作成用サーバ1030へログインし、アプリケーションプログラムに組み込むSQL文のjarファイルおよびビジネスロジックのjarファイルと、同じくアプリケーションプログラムに組み込むその他のフレームワークや各種ライブラリなどのファイルとを指定する(ステップS151〜S153)。続いて、アプリケーションプログラム作成者は、APP作成者用端末1003よりAPP作成用サーバ1030が提供するJava(登録商標)開発環境を利用して、指定したファイルよりearファイルを作成する指示を入力する(ステップS154)。これに対し、APP作成用サーバ1030は、指定されたファイルを用いてearファイルを作成し(ステップS155:アプリケーションプログラム生成手段/ステップ/処理)、これを実行環境である運用サーバ2010(図7参照)へデプロイする(ステップS156:アプリケーションプログラム組込み手段/ステップ/処理)。なお、運用サーバ2010は、APP作成用サーバ1030から受け取ったアプリケーションプログラムのうち、ビジネスロジックのjarファイル1023をビジネスロジック領域300(図6参照)に配置し、SQL文のjarファイル1013をデータアクセス領域400(図6参照)に配置する。
【0097】
以上の動作により、上記したSQL文作成支援ステップS101(図8参照)により作成されたSQL文が実行環境の論理アーキテクチャにおけるデータアクセス領域400(図6参照)に配置され、ビジネスロジック作成支援ステップS102(図8参照)により作成されたビジネスロジックが同じく実行環境の論理アーキテクチャにおけるビジネスロジック領域300(図6参照)に配置される。
【0098】
次に、上記で作成されたアプリケーションプログラムの実行環境であるRDBS2000について説明する。図7に示すように、RDBS2000は、運用サーバ2010と関係データベース(RDB)2020とを有して構成される。
【0099】
運用サーバ2010は、上記APP作成支援システム1000により作成されたアプリケーションプログラムを用いて構築されたDBMSを実現するアプリケーションサーバであり、ユーザに対して実際に運用されるものである。この運用サーバ2010は、上記で作成されたearファイルを実行するためのJava(登録商標) VM(Java(登録商標) Virtual Machine)が組み込まれたサーバマシン2011より構成される。また、サーバマシン2011には、APP作成支援システム1000で作成されたearファイル2012を格納する記憶領域が内部もしくは外部に設けられている。
【0100】
また、運用サーバ2010には、所定のネットワークを介してユーザ端末2001とRDB2020とが接続されており、ユーザはユーザ端末2001より運用サーバ2010へアクセスし、運用サーバ2010が提供するサービスを用いてRDB2020より必要な情報を取得する。なお、上記と同様に、所定のネットワークとはLANやWANやインターネットであり、ユーザ端末2001は例えば一般的なPCなどで構成できる。また、本実施の形態では、RDB2020を適用するが、本発明はこれに限定されず、種々のデータベースを適用することができる。
【0101】
次に、上記のRDBS2000における本実施の形態によるアプリケーションプログラムの実行制御方法(以下、APP実行制御方法という)について図面を用いて詳細に説明する。図12は、本実施の形態によるAPP実行制御方法の概要とデータフローとを説明するための概略図である。なお、このAPP実行制御方法は、試験運用としても使用できるものである。
【0102】
本実施の形態によるAPP実行制御方法では、まず、運用サーバ2010のサーバマシン2011に組み込まれたJava(登録商標) VMを用いて、earファイル2012を、サーバマシン2011のプラットフォームに固有の形式であるネイティブコードに変換し、図示しないメモリ上における所定の作業領域に展開する。図12に、展開されたearファイル2012Aのデータ構造を示す。図12に示すように、展開されたearファイル2012Aは、デジタル署名2012aとアプリケーションプログラム2012bとより構成される。また、アプリケーションプログラム2012bは、ビジネスロジック領域(図6における参照符号300)に配置されるビジネスロジック2012cと、データアクセス領域(図6における参照符号400)に配置されるSQL文2012dとを含む。
【0103】
RDB2020に蓄積されているデータに対して例えば処理区分d、fまたはgのいずれかに分類されるSQL処理を実行したいユーザは、ユーザ端末2001より運用サーバ2010へログインし、所定の操作画面より上記SQL処理の実行を要求する。この要求に対し、運用サーバ2010におけるサーバマシン2011は、上記アプリケーションプログラム2012bからSQL文2012dを読み出し、これを自身に組み込まれた検査モジュール2013へ発行する(図12におけるSQL発行S1参照)。
【0104】
SQL文2012dが入力された検査モジュール2013は、earファイル2012Aに付されたデジタル署名2012aを参照し、あらかじめ内蔵されている公開鍵PK(第2鍵コード)および登録対象SQL文2012dのプログラムハッシュ値(所定値)と参照したデジタル署名2012aとを用いた署名検証アルゴリズムV(署名検証手段)により、発行されたSQL文2012dが正規のものであるか否かを判定する(デジタル署名チェックS2)。
【0105】
なお、本実施の形態による検査モジュール2013は、デジタル署名生成の際(図9のステップS118参照)に生成された公開鍵PKと、あらかじめ算出しておいた処理対象SQL文のプログラムハッシュ値とを用いて、RDBS2000の設計者により作成されたものであり、あらかじめサーバマシン2011に組み込まれている。また、本実施の形態では、SQL文2012dを作成した者のみが検査モジュール2013を変更することができるように構成される。これは、第3者により検査モジュール2013が改竄されることで、不適切なSQL文が実行されることを回避するためである。検査モジュール2013の更新者を制限する構成は、例えば検査モジュール2013およびSQL文2012dを作成した者のIDおよびパスワードを用いて検査モジュール2013の変更者を管理することで実現することができる。
【0106】
図12に戻り説明する。上記デジタル署名チェックS2の結果、SQL文2012dが正規のプログラムでない場合、検査モジュール2013は、SQL文2012dの発行をせずに、処理を終了する。これにより、正当な権限を有しない者により作成されたSQL文や、正当な権限を有する者により作成されたがその後正当な権限を有しない者に改竄されたSQL文が実行されることを排除することが可能となり、RDBS2000のパフォーマンスが低下したり保守性が劣化したりなどの問題が発生することを回避できる。
【0107】
また、上記デジタル署名チェックS2の結果、SQL文2012dが正規のプログラムである場合、検査モジュール2013は、SQL文2012dをJava(登録商標)実行環境である運用サーバ2010とRDB2020とを接続するAPI(Application Program Interface)であるJDBCドライバ2014へ発行する(図12におけるSQL発行S3参照:SQL文実行手段)。
【0108】
SQL文2012dが入力されたJDBCドライバ2014は、RDB2020へアクセスする(図12におけるDB接続S4−1参照:SQL文実行手段)と共に、SQL文2012dを実行し(図12におけるSQ実行S4−2参照:SQL文実行手段)、RDB2020から対象のデータを抽出する(図12におけるデータ抽出S5参照:SQL文実行手段)。
【0109】
上記のように抽出されたデータは、JDBCドライバ2014を介してアプリケーションプログラム2012bに入力され(図12におけるデータ抽出S6参照:SQL文実行手段)、当該アプリケーションプログラム2012bにより所定の処理に用いられる。
【0110】
以上の動作により、不適切なSQL文が実行されることを防止できるRDBS2000が構築されるため、保守性の低下やパフォーマンスの劣化などの問題の発生を回避することができ、結果として、パフォーマンスおよび保守性の高いデータベースシステムを作成することが達成される。
【0111】
なお、上記において図8〜図11を用いて説明した本実施の形態によるAPP作成支援方法における各ステップは、所定のプログラミング言語で記述されたプログラムを、図7に示す各サーバマシン1011、1021および1031が読み出して所定メモリ上における作業領域に展開することで実現される。また、当該プログラムでは、例えば上記各ステップが1つ又は複数の処理として記述されている。
【0112】
また、上記実施の形態は本発明を実施するための例にすぎず、本発明はこれらに限定されるものではなく、仕様等に応じて種々変形することは本発明の範囲内であり、更に本発明の範囲内において、他の様々な実施の形態が可能であることは上記記載から自明である。
【0113】
例えば、上記した実施の形態では、図1の処理区分bまたはcに分類される処理を実行するための特定のコード(条件式、文字列操作関数、および型変換演算子を含む各種演算子)が含まれていないSQL文を、作成対象のアプリケーションプログラムに組み込むための適正なSQL文であると判定して図9のステップS115以降の処理を実行するように構成したが、本発明はこれに限定されず、例えば図1の処理区分dまたはfに分類される処理を実行するための特定のコードが含まれているSQLを、作成対象のアプリケーションプログラムに組み込むための適正なSQL文であるとして図9のステップS115以降の処理を実行するように構成しても良い。
【図面の簡単な説明】
【0114】
【図1】データベース管理システムにおける各種処理をデータアクセスに着目して複数の処理区分に分類した場合の構成を示す概略模式図である。
【図2】本発明の実施の形態において処理区分c.データの加工に分類される処理のテスト計測の際に使用したプログラム処理の処理内容記述文およびSQL処理の処理内容記述文とそれぞれについての測定結果とを示す図である。
【図3】本発明の実施の形態において処理区分d.データの連携に分類される処理のテスト計測の際に使用したプログラム処理の処理内容およびSQL処理の処理内容を示す図である。
【図4】本発明の実施の形態において処理区分d.データの連携に分類される処理のテスト計測の測定結果を示す図である。
【図5】本発明の実施の形態において処理区分e.データの集計に分類される処理のテスト計測の際に使用したプログラム処理の処理内容記述文およびSQL処理の処理内容記述文とそれぞれについての測定結果とを示す図である。
【図6】本発明の実施の形態により構築されるデータベースシステムの論理アーキテクチャを示す模式図である。
【図7】本発明の実施の形態による開発環境であるアプリケーションプログラム作成支援システム1000および実行環境である関係データベースシステム2000の構成を示すシステム概略図である。
【図8】本発明の実施の形態によるアプリケーションプログラム作成支援方法を示すフローチャートである。
【図9】本発明の実施の形態によるアプリケーションプログラム作成支援方法におけるSQL文作成支援ステップを示すフローチャートである。
【図10】本発明の実施の形態によるアプリケーションプログラム作成支援方法におけるビジネスロジック作成支援ステップを示すフローチャートである。
【図11】本発明の実施の形態によるアプリケーションプログラム作成支援方法におけるアプリケーションプログラム生成支援ステップを示すフローチャートである。
【図12】本発明の実施の形態によるアプリケーションプログラム実行制御方法の概要とデータフローとを説明するための概略図である。
【符号の説明】
【0115】
1 a.画面等との入出力
2 b.処理の制御
3 c.データの加工
4 d.データの連携
5 e.データの集計
6 f.データの高速な取り出し
7 g.データの入出力
10、20 プログラム処理
11、21 プログラム処理の処理内容
30 SQL処理
31 SQL処理の処理内容
100 クライアント領域
101 アプリケーションソフトウエア
200 プレゼンテーション領域
201 インターフェース
300 ビジネスロジック領域
310 アプリケーションプログラム(1)
311 ビジネスロジック(1)
311a ビジネスロジック(1)の記述内容
320 アプリケーションプログラム(2)
321 ビジネスロジック(2)
321a ビジネスロジック(2)の記述内容
400 データアクセス領域
411、422 SQL文(X)
411a、422a SQL文(X)の記述内容
412 SQL文(Y)
412a SQL文(Y)の記述内容
421 SQL文(Z)
421a SQL文(Z)の記述内容
500 リソース領域
501、502、503、2020 関係データベース
1000 APP作成支援システム
1001 SQL文作成者用端末
1002 BL作成者用端末
1003 APP作成者用端末
1010 SQL文作成用サーバ
1011 サーバマシン
1012 SQL文のソースファイル
1013 SQL文のjarファイル
1014 登録権限管理ファイル
1020 BL作成用サーバ
1021 サーバマシン
1022 ビジネスロジックのソースファイル
1023 ビジジネスロジックのjarファイル
1024 登録権限管理ファイル
1030 APP作成用サーバ
1031 サーバマシン
1032 アーカイブファイル
2000 関係データベースシステム
2001 ユーザ端末
2010 運用サーバ
2011 サーバマシン
2012 earファイル
2012A 展開されたearファイル
2012a デジタル署名
2012b アプリケーションプログラム
2012c ビジネスロジック
2012d SQL文
2013 検査モジュール
2014 JDBCドライバ
A1、A2、A3 区分群
p01、p02、p03、p04 プログラム処理の処理内容記述文
p11、p12、p14 SQL処理の処理内容記述文
s01、s04 プログラム処理の処理速度
s11、s14 SQL処理の処理速度

【特許請求の範囲】
【請求項1】
SQL文に特定のコードが含まれるか否かを判定する特定コード判定手段と、
前記特定コード判定手段によって前記特定のコードが含まれていないと判定された場合、前記特定のコードが含まれていないSQL文を作成対象のアプリケーションプログラムに組み込まれる適正なSQL文であるとして第1記憶領域に保持する適正SQL文保持手段と、
を備えたことを特徴とするアプリケーションプログラム作成支援装置。
【請求項2】
SQL文に特定のコードが含まれるか否かを判定する特定コード判定手段と、
前記特定コード判定手段によって前記特定のコードが含まれていると判定された場合、前記特定のコードが含まれているSQL文を作成対象のアプリケーションプログラムに組み込まれる適正なSQL文であるとして第1記憶領域に保持する適正SQL文保持手段と、
を備えたことを特徴とするアプリケーションプログラム作成支援装置。
【請求項3】
前記特定のコードは、所定のカテゴリに属する処理を実現するためのコードであることを特徴とする請求項1または2記載のアプリケーションプログラム作成支援装置。
【請求項4】
前記特定のコードは、条件式、文字列操作関数、および型変換演算子を含む演算子のうち少なくともいずれか1つであることを特徴とする請求項1〜3のいずれか一つに記載のアプリケーションプログラム作成支援装置。
【請求項5】
あらかじめ前記SQL文の第1作成者に割り当てられた第1識別情報と該第1作成者がSQL文の登録権限を有するか否かを表す第1登録権限とを管理する第1登録権限管理手段と、
前記第1作成者に前記SQL文を入力させるSQL文入力手段と、
前記第1作成者に前記第1識別情報を入力させる第1識別情報入力手段と、
前記第1作成者が入力した前記第1識別情報を用いて前記第1登録権限を参照することで、前記第1作成者が前記SQL文の登録権限を有するか否かを判定する第1登録権限判定手段と、
を備え、前記適正SQL文保持手段は、前記第1登録権限判定手段によって前記第1作成者が前記SQL文の登録権限を有すると判定された場合、前記適正なSQL文を前記第1記憶領域に保持することを特徴とする請求項1〜4のいずれか一つに記載のアプリケーションプログラム作成支援装置。
【請求項6】
前記SQL文に対して第1鍵コードを生成する鍵生成手段と、
前記鍵生成手段で生成された第1鍵コードと前記適正なSQL文とを用いてデジタル署名を生成するデジタル署名生成手段と、
前記デジタル署名を前記適正なSQL文に添付するデジタル署名添付手段と、
を備えたことを特徴とする請求項5記載のアプリケーションプログラム作成支援装置。
【請求項7】
あらかじめビジネスロジックの第2作成者に割り当てられた第2識別情報と該第2作成者がビジネスロジックの登録権限を有するか否かを表す第2登録権限とを管理する第2登録権限管理手段と、
前記第2作成者にビジネスロジックを入力させるビジネスロジック入力手段と、
前記第2作成者に前記第2識別情報を入力させる第2識別情報入力手段と、
前記第2作成者が入力した前記第2識別情報を用いて前記第2登録権限を参照することで、前記第2作成者が前記ビジネスロジックの登録権限を有するか否かを判定する第2登録権限判定手段と、
前記第2登録権限判定手段によって前記第2作成者が前記ビジネスロジックの登録権限を有すると判定された場合、前記ビジネスロジックを前記アプリケーションプログラムに組み込まれる適正なビジネスロジックであるとして第2記憶領域に保持する適正ビジネスロジック保持手段と、
を備えたことを特徴とする請求項1〜6のいずれか一つに記載のアプリケーションプログラム作成支援装置。
【請求項8】
前記第1記憶領域に保持された適正なSQL文と前記第2記憶領域に保持された適正なビジネスロジックとを含むアプリケーションプログラムを生成するアプリケーションプログラム生成手段と、
前記生成したアプリケーションプログラムをデータベースシステムの論理アーキテクチャに組み込むアプリケーションプログラム組込み手段と、
を備えたことを特徴とする請求項1〜7のいずれか一つに記載のアプリケーションプログラム作成支援装置。
【請求項9】
前記アプリケーションプログラム組込み手段は、前記適正なSQL文を前記論理アーキテクチャにおけるデータアクセス領域に配置し、前記適正なビジネスロジックを前記論理アーキテクチャにおけるビジネスロジック領域に配置することを特徴とする請求項8記載のアプリケーションプログラム作成支援装置。
【請求項10】
前記適正SQL文保持手段は、前記適正なSQL文を圧縮したファイル形式で前記第1記憶領域に保持し、
前記適正ビジネスロジック保持手段は、前記適正なSQL文を圧縮したファイル形式で前記第2記憶領域に保持し、
前記アプリケーションプログラム生成手段は、前記圧縮された適正なSQL文と前記圧縮された適正なビジネスロジックとを統合して前記アプリケーションプログラムを生成することを特徴とする請求項8または9記載のアプリケーションプログラム作成支援装置。
【請求項11】
前記アプリケーションプログラム生成手段は、あらかじめアーカイブされているフレームワークおよびライブラリのうち少なくとも1つを含めて統合することで前記アプリケーションプログラムを生成することを特徴とする請求項10記載のアプリケーションプログラム作成支援装置。
【請求項12】
前記適正SQL文保持手段は、Java(登録商標)開発環境を利用して前記SQL文を前記第1記憶領域に保存することを特徴とする請求項1〜11のいずれか一つに記載のアプリケーションプログラム作成支援装置。
【請求項13】
請求項1〜12のいずれか一つに記載のアプリケーションプログラム作成支援装置を用いて作成された前記SQL文が組み込まれたアプリケーションプログラムを用いて作成されたことを特徴とするデータベースシステム。
【請求項14】
請求項6記載のアプリケーションプログラム作成支援装置を用いて作成された前記SQL文が組み込まれたアプリケーションプログラムを用いて作成されたことを特徴とするデータベースシステムであって、
前記鍵生成手段により前記第1鍵コードとペアになる鍵コードとして生成された第2鍵コードと、あらかじめ前記適正なSQL文から算出した所定値とを用いて前記デジタル署名が正規のものであるか否かを判定する署名検証手段と、
前記署名検証手段により前記デジタル署名が正規のものであると判定された場合、前記適正なSQL文を実行するSQL文実行手段と、
を備え、前記鍵生成手段は、前記第1鍵コードと共に前記第2鍵コードを生成することを特徴とするデータベースシステム。
【請求項15】
SQL文に特定のコードが含まれるか否かを判定する特定コード判定ステップと、
前記特定コード判定ステップによって前記特定のコードが含まれていないと判定された場合、前記特定のコードが含まれていないSQL文を作成対象のアプリケーションプログラムに組み込まれる適正なSQL文であるとして第1記憶領域に保持する適正SQL文保持ステップと、
を含むことを特徴とするアプリケーションプログラム作成支援方法。
【請求項16】
SQL文に特定のコードが含まれるか否かを判定する特定コード判定ステップと、
前記特定コード判定ステップによって前記特定のコードが含まれていると判定された場合、前記特定のコードが含まれているSQL文を作成対象のアプリケーションプログラムに組み込まれる適正なSQL文であるとして第1記憶領域に保持する適正SQL文保持ステップと、
を含むことを特徴とするアプリケーションプログラム作成支援方法。
【請求項17】
所定のアプリケーションプログラム開発環境が組み込まれた情報処理装置において実行されるアプリケーションプログラム作成支援プログラムであって、
SQL文に特定のコードが含まれるか否かを判定する特定コード判定処理と、
前記特定コード判定処理によって前記特定のコードが含まれていないと判定された場合、前記特定のコードが含まれていないSQL文を作成対象のアプリケーションプログラムに組み込まれる適正なSQL文であるとして第1記憶領域に保持する適正SQL文保持処理と、
を前記情報処理装置に実行させることを特徴とするアプリケーションプログラム作成支援プログラム。
【請求項18】
所定のアプリケーションプログラム開発環境が組み込まれた情報処理装置において実行されるアプリケーションプログラム作成支援プログラムであって、
SQL文に特定のコードが含まれるか否かを判定する特定コード判定処理と、
前記特定コード判定処理によって前記特定のコードが含まれていると判定された場合、前記特定のコードが含まれているSQL文を作成対象のアプリケーションプログラムに組み込まれる適正なSQL文であるとして第1記憶領域に保持する適正SQL文保持処理と、
を前記情報処理装置に実行させることを特徴とするアプリケーションプログラム作成支援プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2009−259141(P2009−259141A)
【公開日】平成21年11月5日(2009.11.5)
【国際特許分類】
【出願番号】特願2008−110000(P2008−110000)
【出願日】平成20年4月21日(2008.4.21)
【新規性喪失の例外の表示】特許法第30条第1項適用申請有り 株式会社エクサ exa review編集室 exa review(2007.10 NO.8) 発行日 2007年10月22日
【出願人】(000001258)JFEスチール株式会社 (8,589)
【出願人】(591057256)株式会社エクサ (36)
【出願人】(000200253)JFEシステムズ株式会社 (38)
【Fターム(参考)】