(57)【特許請求の範囲】
【請求項１】
複数のデータベースサーバに分散配置された複数のテーブルについて、各テーブルが実際に存在するデータベースサーバ名および各テーブルの所有者名を示す位置情報を保持する位置情報保持部と、
所定の操作を命じる文字列である複数種類の操作指定文字列に対して、前記データベースサーバ名または前記所有者名のいずれかの種別を対応づける対応規則を保持する対応規則保持部と、
テーブル名により操作対象を指定する第１のスクリプトプログラムであって、かつ、前記操作対象の位置情報を未指定の第１のスクリプトプログラムを取得するプログラム取得部と、
前記第１のスクリプトプログラムに記述された前記操作指定文字列およびその操作の対象を示す文字列である操作対象文字列を抽出する文字列抽出部と、
前記対応規則を参照して、前記抽出された操作指定文字列に対応づけられた位置情報の種別を判定する種別判定部と、
前記第１のスクリプトプログラムにより指定されたテーブルの位置情報のうち前記種別に対応するデータを前記位置情報保持部から取得する位置情報取得部と、
前記操作対象文字列に前記取得されたデータを付加することにより、前記操作対象文字列に前記位置情報を補完した文字列を生成し、前記第１のスクリプトプログラムに記述された操作対象文字列を、前記位置情報を補完した文字列に置き換えることで、テーブルの位置情報が指定された第２のスクリプトプログラムを生成するプログラム生成部と、
を備え、
前記第１のスクリプトプログラムの操作対象文字列にはユーザの識別情報が含まれ、
前記第１のスクリプトプログラムにより指定されたテーブルに対する前記ユーザの操作権限を示す権限情報を外部装置から取得する権限情報取得部と、
前記取得された権限情報を参照して、前記指定されたテーブルに対する前記ユーザの操作権限の有無を判定するユーザ認証部と、
をさらに備え、
前記プログラム生成部は、前記指定されたテーブルに対する操作権限を前記ユーザが有することを条件として、前記第２のスクリプトプログラムを生成することを特徴とするデータ処理装置。
【請求項２】
前記第１のスクリプトプログラムの操作対象文字列により指定されるユーザの識別情報と、前記第１のスクリプトプログラムにより指定されるテーブルを操作可能な権限者の識別情報とを対応づける認証情報を保持する認証情報保持部と、
前記認証情報を参照して、前記ユーザの識別情報に対応づけられた権限者の識別情報を前記認証情報保持部から取得する認証情報取得部と、
をさらに備え、
前記プログラム生成部は、前記ユーザが前記指定されたテーブルに対する操作権限を有することを条件として、前記第１のスクリプトプログラムに記述されたユーザの識別情報を前記取得された権限者の識別情報にさらに置き換えて前記第２のスクリプトプログラムを生成することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
複数のデータベースサーバに分散配置された複数のテーブルについて、各テーブルが実際に存在するデータベースサーバ名および各テーブルの所有者名を示す位置情報を保持する位置情報保持機能と、
所定の操作を命じる文字列である複数種類の操作指定文字列に対して、前記データベースサーバ名または前記所有者名のいずれかの種別を対応づける対応規則を保持する対応規則保持機能と、
テーブル名により操作対象を指定する第１のスクリプトプログラムであって、かつ、前記操作対象の位置情報を未指定の第１のスクリプトプログラムを取得するプログラム取得機能と、
前記第１のスクリプトプログラムに記述された前記操作指定文字列およびその操作の対象を示す文字列である操作対象文字列を抽出する文字列抽出機能と、
前記対応規則を参照して、前記抽出された操作指定文字列に対応づけられた位置情報の種別を判定する種別判定機能と、
前記第１のスクリプトプログラムにより指定されたテーブルの位置情報のうち前記種別に対応するデータを取得する位置情報取得機能と、
前記操作対象文字列に前記取得されたデータを付加することにより、前記操作対象文字列に前記位置情報を補完した文字列を生成し、前記第１のスクリプトプログラムに記述された操作対象文字列を、前記位置情報を補完した文字列に置き換えることで、テーブルの位置情報が指定された第２のスクリプトプログラムを生成するプログラム生成機能と、
をコンピュータに実現させ、
前記第１のスクリプトプログラムの操作対象文字列にはユーザの識別情報が含まれ、
前記第１のスクリプトプログラムにより指定されたテーブルに対する前記ユーザの操作権限を示す権限情報を外部装置から取得する権限情報取得機能と、
前記取得された権限情報を参照して、前記指定されたテーブルに対する前記ユーザの操作権限の有無を判定するユーザ認証機能と、
を前記コンピュータにさらに実現させ、
前記プログラム生成機能は、前記指定されたテーブルに対する操作権限を前記ユーザが有することを条件として、前記第２のスクリプトプログラムを生成することを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理技術に関し、特に、複数のデータベースを使用してデータを処理する技術に関する。
【背景技術】
【０００２】
現在、多くのＩＴシステムは、複数のテーブルを有するデータベースの中に処理の対象となる情報を記録している。ＩＴシステムが処理すべき情報量は増加の一途をたどっており、情報を格納するテーブルは異なるデータベースに分散配置されることがある。
【０００３】
他方、テーブルに格納された情報を利用するユーザにとっては、テーブルが実際に存在する物理的な位置を意識せずに、各テーブルにアクセスできることが望ましい。この課題に対処するために、各テーブルを参照する仮想的なテーブル（以下、「参照オブジェクト」と呼ぶ。）が用意されることがある。ユーザは、参照オブジェクトにアクセスすることで、テーブルの物理的な位置を意識せずに、必要な情報にアクセスできる（例えば、特許文献１参照）。
【特許文献１】特開２００６−２２７８２０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ユーザがテーブルを操作する際に利用するアプリケーションによっては、参照オブジェクトを介してテーブルを操作できないことがある。この場合、ユーザはテーブルの物理的な位置を指定する必要があり、テーブルが多数のデータベースサーバに分散配置された場合、ユーザの負担が増大する。ユーザが参照オブジェクトに対応しないアプリケーションを利用する場合であっても、ユーザにテーブルの物理的な位置を意識させない仕組みを実現することで、ユーザの利便性を向上できると本発明者は考えた。
【０００５】
本発明は、本発明者による上記着目に基づいて完成された発明であり、その主たる目的は、ユーザにテーブルが実際に存在する物理的な位置を意識させることなくテーブルを操作させる技術を提供することである。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のある態様のデータ処理装置は、複数のデータベースサーバに分散配置された複数のテーブルについて、各テーブルが実際に存在するデータベースサーバ名および各テーブルの所有者名を示す位置情報を保持する位置情報保持部と、所定の操作を命じる文字列である複数種類の操作指定文字列に対して、データベースサーバ名または所有者名のいずれかの種別を対応づける対応規則を保持する対応規則保持部と、テーブル名により操作対象を指定する第１のスクリプトプログラムを取得するプログラム取得部と、第１のスクリプトプログラムに記述された操作指定文字列およびその操作の対象を示す文字列である操作対象文字列を抽出する文字列抽出部と、対応規則を参照して、抽出された操作指定文字列に対応づけられた位置情報の種別を判定する種別判定部と、第１のスクリプトプログラムにより指定されたテーブルの位置情報のうち種別に対応するデータを位置情報保持部から取得する位置情報取得部と、操作対象文字列に取得されたデータを付加した文字列を生成し、第１のスクリプトプログラムに記述された操作対象文字列を生成した文字列に置き換えることで、テーブルの位置情報が指定された第２のスクリプトプログラムを生成するプログラム生成部とを備える。
【０００７】
なお、以上の構成要素の任意の組合せ、本発明の表現を装置、方法、システム、プログラム、プログラムを格納した記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【０００８】
本発明によれば、ユーザに、テーブルが実際に存在する物理的な位置を意識させることなくテーブルを操作させやすくなる。
【発明を実施するための最良の形態】
【０００９】
本発明の実施の形態について説明する前に、前提技術として、参照オブジェクトを介してデータベースの各テーブルにアクセスさせるデータ処理装置について説明する。
【００１０】
図１は、前提技術におけるデータ処理装置の構成を示す。データ処理装置１００は、データベース３０で総称される第１のデータベース３０ａおよび第２のデータベース３０ｂと、仮想テーブル保持部２０とを備える。データベース３０は、テーブル３２で総称される第１のテーブル３２ａから第４のテーブル３２ｄを有する。各テーブル３２は、識別情報により特定される記憶領域である。仮想テーブル保持部２０は、シノニム２２で総称される第１のシノニム２２ａから第４のシノニム２２ｄを有する。各シノニム２２は、識別情報により特定される参照オブジェクトであり、各テーブル３２を参照する。
【００１１】
図１において、第１のシノニム２２ａは第１のテーブル３２ａを参照しており、他のシノニム２２も同様に各テーブル３２を参照している。つまり、各シノニム２２と各テーブル３２とは対応づけられ、参照関係が結ばれている。第１のユーザ１０ａは、第１のシノニム２２ａにアクセスすることで、第１のテーブル３２ａにアクセスしている。第２のユーザ１０ｂは、第３のシノニム２２ｃにアクセスすることで、第３のテーブル３２ｃにアクセスしている。
【００１２】
このように、シノニム２２はテーブル３２の位置を抽象化して仮想的なテーブルとして機能している。ユーザはテーブル３２がどのデータベース３０にあるかを知らなくても、シノニム２２にアクセスすることで目的のテーブル３２にアクセスできる。言い換えれば、ユーザは、テーブル３２が実際に存在するデータベースサーバ名、テーブルの所有者名等の物理的な位置を意識することなく、シノニム２２を介して各テーブル３２にアクセスできる。さらに言い換えれば、データ処理装置１００は、シノニム２２を用意することで、テーブル３２の物理的な位置をユーザに対し隠蔽してユーザインタフェイスを提供できる。
【００１３】
ユーザがＳＱＬ（Structured Query Language）を使用する場合には、ユーザはシノニム２２を介してテーブルにアクセスできる。しかし、データベースマネジメントシステムソフトウェア（以下、「ＤＢＭＳソフトウェア」と呼ぶ。）が提供するユーティリティ機能（以下単に、「ユーティリティ」と呼ぶ。）を使用する場合にはシノニムを利用できないことがある。この場合、テーブル３２の位置が抽象化されないため、ユーザは、テーブル３２の物理的な位置を意識する必要がある。
【００１４】
以下、本実施の形態の説明では、ＤＢＭＳソフトウェアの一つOracle（登録商標）におけるSQL*Loaderユーティリティを例に説明する。SQL*Loaderユーティリティは、データベースサーバのテーブルに大量データを挿入しやすくするために、Oracle（登録商標）により提供される機能である。なお、ExportユーティリティやImportユーティリティをはじめ、他のＤＢＭＳソフトウェアおよび他のユーティリティを使用する際にも本実施の形態を利用できる。
【００１５】
図２は、図１のテーブルに対し、ユーティリティを使用してデータを挿入させる場合の構成を示す。第３のユーザ１０ｃは、SQL*Loaderユーティリティのコマンドを使用して、第４のテーブル３２ｄにデータを挿入する。この場合、第４のシノニム２２ｄを介することはできず、第３のユーザ１０ｃは、第４のテーブル３２ｄを直接指定する必要がある。そのため、第３のユーザ１０ｃは、SQL*Loaderユーティリティのコマンドを使用するスクリプトプログラムを作成するときには、第４のテーブル３２ｄの物理的な位置を意識してスクリプトプログラムを作成する必要がある。
【００１６】
図３（ａ）および図３（ｂ）は、図２の構成においてユーザにより作成されるスクリプトプログラムの一部を示す。図３（ａ）は、SQL*Loaderユーティリティのコマンドを起動するシェルスクリプトである。１行目で、ユーザ名、パスワード、およびデータベースサーバ名を引数として「sqlldr」コマンドを起動している。２行目で、実際の処理内容を記述したコントロールファイルを指定している。図３（ｂ）は、図３（ａ）のシェルスクリプトにおいて指定されるコントロールファイルである。２行目には、挿入するデータを記録したファイルが指定されている。３行目には、データを挿入する対象となるテーブルの所有者名およびテーブル名が記述されている。
【００１７】
ユーザは、図３（ａ）および図３（ｂ）で示したスクリプトプログラムを実行することで、「tbl4.dat」ファイルのデータを第４のテーブル３２ｄに挿入できる。しかし、図３（ａ）および図３（ｂ）において下線で示したように、データベースサーバ名である「第２のデータベース」や、テーブルの所有者名である「第６のユーザ」といったテーブルの物理的な位置を示す情報をユーザが記述しなければならない。
【００１８】
多数のデータベースサーバにテーブルが分散配置され、または、多数のテーブル所有者にテーブルが分散保持された場合、テーブルの物理的な位置をユーザが意識することは困難になりやすい。したがって、ＳＱＬ以外のユーティリティを使用する場合であっても、シノニムを使う場合と同様にテーブルの物理的な位置をユーザに意識させない仕組みを実現すれば、ユーザの利便性が向上すると本発明者は考えた。以下、実施の形態を説明するとともに、この課題が解決されていることを説明する。
【００１９】
図４は、本発明の実施の形態にかかるデータ処理装置の構成を示す。データ処理装置２００は、データ処理装置１００の構成に加えて、プログラム変換部４０を備える。プログラム変換部４０は、変換制御部５０と記憶部７０とを有する。これらの構成は、ハードウェアコンポーネントでいえば、任意のコンピュータのＣＰＵ、メモリ、メモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。後述する図７、図１０および図１２においても同様である。
【００２０】
記憶部７０は、位置情報テーブル７２と対応規則テーブル７４とを含む。位置情報テーブル７２は、複数のデータベースサーバに分散配置された複数のテーブルについて、各テーブルが実際に存在するデータベースサーバ名および各テーブルの所有者名を示す位置情報を保持する。図５は、位置情報テーブル７２のデータ構造を示す。同図は、例えば、第４のテーブルは、第２のデータベース３０ｂに保持され、その所有者は第６のユーザであることを示している。なお、位置情報テーブル７２は、シノニム２２の定義情報を保持する図示しないシノニム定義情報テーブルであってもよい。
【００２１】
対応規則テーブル７４は、所定の操作を命じる文字列である複数種類の操作指定文字列に対して、データベースサーバ名または所有者名のいずれかの種別を対応づける対応規則を保持する。操作指定文字列は、例えば図３（ａ）および図３（ｂ）のスクリプトファイルにおいては、ユーザのログイン情報を指定する文字列である「USERID」や、データを挿入するテーブルを指定する文字列である「APPEND INTO TABLE」が該当する。
【００２２】
対応規則は、言い換えれば、所定の操作指定文字列が指定する操作の対象を示す文字列（以下、「操作対象文字列」と呼ぶ。）において、データベースサーバ名を付加するか、所有者名を付加するかを規定する。操作対象文字列は、例えば図３（ａ）および図３（ｂ）のスクリプトファイルにおいては、操作指定文字列「USERID」により指定される「第３のユーザ/pass」や、操作指定文字列「APPEND INTO TABLE」により指定される「第４のテーブル」が該当する。
【００２３】
図６は、対応規則テーブル７４のデータ構造を示す。同図は、例えば、操作指定文字列「USERID」が指定する操作対象文字列にはデータベースサーバ名を付加することを規定している。また、操作指定文字列「APPEND INTO TABLE」が指定する操作対象文字列には所有者名を付加することを規定している。この対応規則は、ユーティリティの仕様に基づいて、あらかじめ定めておく。
【００２４】
変換制御部５０は、操作対象のテーブルの物理的な位置情報を指定しない第１のスクリプトプログラムを第３のユーザ１０ｃから取得し、取得したスクリプトプログラムから操作指定文字列と操作対象文字列とを抽出する。次に、位置情報テーブル７２および対応規則テーブル７４を参照して、操作指定文字列に対応する位置情報を取得し、その位置情報をもとに操作対象文字列を変換する。これにより、位置情報が指定された第２のスクリプトプログラムを生成する。
【００２５】
図７は、プログラム変換部４０の詳細な機能構成を示すブロック図である。変換制御部５０は、プログラム取得部５２と、文字列抽出部５４と、種別判定部５６と、位置情報取得部５８と、プログラム生成部６０と、プログラム実行部６２とを含む。
【００２６】
プログラム取得部５２は、テーブル名により操作対象を指定する第１のスクリプトプログラムを取得する。図８（ａ）および図８（ｂ）は、第１のスクリプトプログラムの一部を示す。図８（ａ）は、図３（ａ）と対応するシェルスクリプトを示し、図８（ｂ）は、図３（ｂ）と対応するコントロールファイルを示す。第１のスクリプトプログラムが図３（ａ）および図３（ｂ）のスクリプトプログラムと異なるのは、操作対象のテーブルが実際に存在するデータベースサーバ名、およびそのテーブルの所有者名等の位置情報が指定されていない点である。しかし、スクリプトプログラムを有効に機能させるためには、これらの位置情報が指定される必要があるため、後述する機能部材によりスクリプトプログラムが変換される。
【００２７】
文字列抽出部５４は、第１のスクリプトプログラムに記述された操作指定文字列および操作対象文字列を抽出する。操作指定文字列は、「SQL*Loader」「Export」「Import」といったユーティリティの仕様ごとに固定文字列としてあらかじめ定めておく。文字列抽出部５４は、その固定文字列を第１のスクリプトプログラムからサーチすることにより操作指定文字列を抽出する。例えば図８（ａ）および図８（ｂ）のスクリプトプログラムの場合、文字列抽出部５４は、SQL*Loaderユーティリティであらかじめ定められた文字列である「USERID」や「APPEND INTO TABLE」を操作指定文字列として抽出する。
【００２８】
操作対象文字列は、操作指定文字列の後の文字列から所定の規則で抽出される。例えば、文字列抽出部５４は、操作指定文字列「USERID」に対応する操作対象文字列として、「=」の後に続く文字列を抽出することで、ユーザ名およびパスワードを示す文字列「第３のユーザ/pass3」を取得できる。また、操作指定文字列「APPEND INTO TABLE」に対応する操作対象文字列として、半角スペースの後に続く文字列を抽出することで、操作対象のテーブルを示す文字列「第４のテーブル」を取得できる。
【００２９】
種別判定部５６は、前述した対応規則テーブル７４を参照して、抽出された操作指定文字列に対応づけられた位置情報の種別を判定する。以下、種別判定部５６により判定された種別のことを、「判定種別」と呼ぶことにする。位置情報取得部５８は、第１のスクリプトプログラムにより指定されたテーブルに対応づけられた位置情報のうち、判定種別に対応するデータを位置情報テーブル７２から取得する。
【００３０】
例として、図８（ａ）および図８（ｂ）の第１のスクリプトプログラムに対する処理を説明する。このプログラムでは、操作対象のテーブルとして第４のテーブルを指定している。種別判定部５６は、対応規則テーブル７４を参照して、操作指定文字列「USERID」に対応する位置情報の種別は「データベースサーバ名」と判定する。位置情報取得部５８は、位置情報テーブル７２を参照して、第４のテーブルのデータベースサーバ名である「第２のデータベース」を取得する。同様に、操作指定文字列が「APPEND INTO TABLE」の場合には、位置情報取得部５８は、第４のテーブルの所有者名である「第６のユーザ」を位置情報のデータとして取得する。
【００３１】
プログラム生成部６０は、まず、位置情報取得部５８により取得された位置情報のデータを操作対象文字列に付加した文字列を作成する。例えば、操作指定文字列「USERID」に対応する操作対象文字列は「第３のユーザ/pass3」であり、位置情報取得部５８により取得された位置情報のデータは「第２のデータベース」であるため、プログラム生成部６０は、文字列「第３のユーザ/pass3@第２のデータベース」を作成する。同様に、操作指定文字列「APPEND INTO TABLE」の場合には、プログラム生成部６０は、文字列「第６のユーザ.第４のテーブル」を作成する。
【００３２】
プログラム生成部６０は、次に、第１のスクリプトプログラムに記述された操作対象文字列を、位置情報のデータを付加して作成した文字列に置き換えることで、第２のスクリプトプログラムを生成する。つまり、図８（ａ）および図８（ｂ）の第１のスクリプトプログラムにおける、操作対象文字列「第３のユーザ/pass3」を文字列「第３のユーザ/pass3@第２のデータベース」に置き換え、操作対象文字列「第４のテーブル」を文字列「第６のユーザ.第４のテーブル」に置き換える。この例において生成される第２のスクリプトプログラムは、図３（ａ）および図３（ｂ）のスクリプトプログラムと同様である。つまり、第１のスクリプトプログラムに位置情報の指定が付加されることで、実際に第４のテーブル３２ｄにアクセス可能な第２のスクリプトプログラムが生成される。
【００３３】
プログラム実行部６２は、プログラム生成部６０により生成された第２のスクリプトプログラムを実行する。これにより、第４のテーブル３２ｄに対しスクリプトプログラムにより指定されたデータが挿入される。なお、変換制御部５０は、第２のスクリプトプログラムを生成した時点で処理を終了してもよい。この場合、変換制御部５０はプログラム実行部６２を含まなくてもよく、生成された第２のスクリプトプログラムは、例えばユーザが実行することとしてもよい。
【００３４】
図９は、変換制御部５０における処理の流れを示すフローチャートである。プログラム取得部５２は、テーブルの位置情報が指定されていない第１のスクリプトプログラムを取得する（Ｓ２）。文字列抽出部５４は、第１のスクリプトプログラムから操作指定文字列および操作対象文字列を抽出する（Ｓ４）。種別判定部５６は、対応規則テーブル７４を参照して、操作指定文字列に対応づけられた位置情報の種別を判定する（Ｓ６）。
【００３５】
位置情報取得部５８は、位置情報テーブル７２における操作対象テーブルのレコードを参照して、判定種別に対応する位置情報のデータを取得する（Ｓ８）。プログラム生成部６０は、位置情報取得部５８により取得された位置情報のデータを第１のスクリプトプログラムの操作対象文字列に付加することで第２のスクリプトプログラムを生成する（Ｓ１０）。プログラム実行部６２は、生成された第２のスクリプトプログラムを実行する（Ｓ１２）。
【００３６】
本実施の形態によれば、ユーティリティを使用してテーブル３２を操作するユーザは、そのテーブルが実際に存在するデータベースサーバ名やそのテーブルの所有者名等の位置情報を意識することなく所望のテーブルを操作できる。言い換えれば、ユーザは、シノニム２２を介してＳＱＬによりテーブルを操作する場合と同じ感覚で、ユーティリティを使用してテーブルを操作できる。
【００３７】
また、本実施の形態によれば、データベース３０側のシステム構成の変更が容易になる。例えば、データベース３０側で記憶されるデータの増減に伴い、データベースサーバの分割または統合、テーブルの再配置、テーブルの所有者名の変更等が必要になる場合がある。本実施の形態では、プログラム変換部４０において、データベース３０側の変更に合わせて位置情報テーブル７２を変更することで、その影響を吸収できる。これにより、ユーザ側への影響を小さくでき、データベース３０側は必要に応じてシステム構成を変更できる。
【００３８】
前述したいずれの効果も、テーブルを操作すべき多数のユーザが存在し、多数のデータベースまたは多数のテーブル所有者にテーブルが分散配置された環境であるほど、その効果は大きい。多数のユーザが存在する場合、テーブルの位置情報を知らないユーザも多く、また各ユーザにテーブルの位置情報を知らしめることは困難だからである。多数のデータベースまたは多数のテーブル所有者にテーブルが分散配置されている場合も、個々のテーブルの位置情報をユーザが認識するのは困難だからである。本実施の形態によれば、これらの問題を解決し、ユーザによるテーブル操作を容易にすることで、ユーザ間の迅速な情報共有を実現し、また、システム構成の変更を容易にすることで、最適なシステム構成の実現を支援する。
【００３９】
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００４０】
第１の変形例について説明する。本変形例では、第１のスクリプトプログラムの操作対象文字列により指定されるユーザ識別情報を操作対象のテーブルに対する操作が可能な権限者を示す権限者識別情報にさらに置き換えて、第２のスクリプトプログラムを生成する。ユーザ識別情報とは、典型的にはユーザ名およびパスワードであり、権限者識別情報についても同様である。
【００４１】
図１０は、第１の変形例におけるプログラム変換部４０の機能構成を示すブロック図である。図７で示したプログラム変換部４０の構成に加えて、本変形例の変換制御部５０は、認証情報取得部６４をさらに含む。また、本変形例の記憶部７０は、認証情報テーブル７６をさらに含む。
【００４２】
認証情報テーブル７６は、ユーザ識別情報と権限者識別情報とを対応づける認証情報を保持する。図１１（ａ）および図１１（ｂ）は、認証情報テーブル７６のデータ構造を示す。図１１（ａ）では、各ユーザのユーザ名およびパスワードが共通の権限者のユーザ名パスワードに対応づけられている。また、図１１（ｂ）では、各ユーザが権限者となっているが、そのパスワードは異なっている。
【００４３】
認証情報取得部６４は、認証情報テーブル７６を参照して、操作対象文字列により指定されたユーザ名およびパスワードに対応づけられた、権限者のユーザ名およびパスワードを取得する。なお、ユーザ名およびパスワード等のユーザ認証情報は、第１のスクリプトプログラムで指定されるユーティリティの仕様に応じて固定的に定まる位置に存在する操作対象文字列から取得できる。プログラム生成部６０は、第２のスクリプトプログラムを生成する際に、ユーザ名およびパスワードが指定された操作対象文字列を権限者のユーザ名およびパスワードで置き換える。
【００４４】
本変形例によれば、ユーザにデータベース３０側の権限者識別情報を知らせることなく、必要なテーブルを操作させることができる。言い換えれば、ユーザに対して権限者識別情報を秘匿できる。これにより、ユーザは、プログラム変換部４０を介さずに、ユーティリティのコマンドを使ってテーブル３２を直接操作できなくなり、データベース３０およびテーブル３２の安全性を高められる。
【００４５】
また、本変形例によれば、ユーザは権限者識別情報を意識しなくてよくなる。複数のデータベースで異なる権限者識別情報が設定される場合であっても、ユーザは操作したいテーブルに応じて複数の権限者識別情報を使い分ける必要はないため、ユーザの利便性が向上する。また、データベース３０側のセキュリティポリシーの変更に伴い権限者識別情報が変更された場合にも、その影響をプログラム変換部４０で吸収でき、ユーザ側への影響を小さくできる。
【００４６】
本変形例は、実施の形態におけるデータ処理装置２００との組み合わせに好適である。実施の形態におけるデータ処理装置２００により、ユーザに操作対象テーブルの位置を意識させない仕組みを実現できた。本変形例により、ユーザにさらに権限者識別情報を意識させない仕組みを実現できる。
【００４７】
第２の変形例について説明する。本変形例では、第１のスクリプトプログラムの操作対象文字列により指定されるユーザ名に基づいて、操作対象のテーブルに対する操作権限の有無を判断して、第２のスクリプトプログラムを生成する。
【００４８】
図１２は、第２の変形例におけるプログラム変換部４０の機能構成を示すブロック図である。図７で示したプログラム変換部４０の構成に加えて、本変形例の変換制御部５０は、権限情報取得部６６とユーザ認証部６８とをさらに含む。
【００４９】
権限情報取得部６６は、まず、第１のスクリプトプログラムにより指定されたテーブルが実際に存在するデータベースサーバ名を位置情報テーブル７２から取得する。第１のスクリプトプログラムが指定するユーティリティの仕様に応じてテーブルを指定する箇所は固定的に定まるため、権限情報取得部６６はその箇所の文字列をテーブル名と判断できる。例えば、「SQL*Loader」ユーティリティの場合には、コントロールファイルの「APPEND INTO TABLE」文字列から半角スペース後の文字列をテーブル名として取得する。権限情報取得部６６は、取得したテーブル名をもとに位置情報テーブル７２を参照してデータベースサーバ名を取得する。
【００５０】
権限情報取得部６６は、次に、データベースサーバ名で特定されるデータベースサーバから権限情報を取得する。権限情報とは、操作対象のテーブルに対するユーザの操作権限を示す情報であり、具体的には、接続権限、参照権限、更新権限、削除権限等の有無を示す。データベースサーバは、ユーザの権限情報をデータディクショナリに保持しているため、権限情報取得部６６はデータディクショナリからユーザの権限情報を取得できる。なお、権限情報取得部６６は、ユーザの権限情報を管理する他の外部装置から権限情報を取得してもよい。この場合、権限情報取得部６６は、データベースサーバ名をキーとして、その外部装置から権限情報を取得する。
【００５１】
ユーザ認証部６８は、権限情報取得部６６が取得した権限情報をもとに、操作対象文字列により指定されたユーザ名で特定されるユーザの権限情報を参照する。なお、ユーザ名についても、テーブル名と同様に、ユーティリティの仕様に応じて固定的に定まる位置に存在する操作対象文字列から取得できる。ユーザ認証部６８は、次に、当該ユーザに操作対象テーブルを操作する権限が付与されているか、典型的には更新権限が付与されているかを判定する。プログラム生成部６０は、ユーザに操作対象テーブルを操作する権限が設定されていることを条件として、第２のスクリプトプログラムを生成する。
【００５２】
本変形例によれば、十分な権限を持たないユーザが、テーブルを不正に操作することを排除でき、データベース３０およびテーブル３２の安全性を高められる。また、第２のスクリプトプログラムを生成しないことで、データベース３０へのアクセス自体を発生させない。これにより、大量の不正アクセスによって、データベース３０の負荷が増大することを防止できる。
【００５３】
本変形例は、実施の形態におけるデータ処理装置２００および第１の変形例との組み合わせに好適である。実施の形態におけるデータ処理装置２００および第１の変形例により、ユーザにテーブルの物理的な位置および権限者識別情報を意識させない仕組みが実現され、ユーザはテーブル３２を操作しやすくなった。本変形例により、ユーザの権限をチェックして権限あるユーザにのみ操作を許可することで、テーブル操作の容易化に加えて、テーブルの安全性のさらなる向上を実現する。
【図面の簡単な説明】
【００５４】
【図１】前提技術におけるデータ処理装置の構成を示す図である。
【図２】図１のテーブルに対し、ユーティリティを使用してデータを挿入させる場合の構成を示す図である。
【図３】（ａ）図２の構成においてユーザにより作成されるスクリプトプログラムの一部を示す図である。（ｂ）図２の構成においてユーザにより作成されるスクリプトプログラムの一部を示す図である。
【図４】本発明の実施の形態にかかるデータ処理装置の構成を示す図である。
【図５】位置情報テーブルのデータ構造を示す図である。
【図６】対応規則テーブルのデータ構造を示す図である。
【図７】プログラム変換部の詳細な機能構成を示すブロック図である。
【図８】（ａ）第１のスクリプトプログラムの一部を示す図である。（ｂ）第１のスクリプトプログラムの一部を示す図である。
【図９】変換制御部における処理の流れを示すフローチャートである。
【図１０】第１の変形例におけるプログラム変換部の機能構成を示すブロック図である。
【図１１】（ａ）認証情報テーブルのデータ構造を示す図である。（ｂ）認証情報テーブルのデータ構造を示す図である。
【図１２】第２の変形例におけるプログラム変換部の機能構成を示すブロック図である。
【符号の説明】
【００５５】
２０  仮想テーブル保持部、２２  シノニム、３０  データベース、３２  テーブル、４０  プログラム変換部、５０  変換制御部、５２  プログラム取得部、５４  文字列抽出部、５６  種別判定部、５８  位置情報取得部、６０  プログラム生成部、６２  プログラム実行部、６４  認証情報取得部、６６  権限情報取得部、６８  ユーザ認証部、７０  記憶部、７２  位置情報テーブル、７４  対応規則テーブル、７６  認証情報テーブル、１００，２００  データ処理装置。
【図１】
0005154859.tif 000002
【図２】
0005154859.tif 000003
【図３】
0005154859.tif 000004
【図４】
0005154859.tif 000005
【図５】
0005154859.tif 000006
【図６】
0005154859.tif 000007
【図７】
0005154859.tif 000008
【図８】
0005154859.tif 000009
【図９】
0005154859.tif 000010
【図１０】
0005154859.tif 000011
【図１１】
0005154859.tif 000012
【図１２】
0005154859.tif 000013