(57)【要約】【課題】  組み込みソフトウェア開発では、利用できるリソースを厳しく制限される。その組み込みソフトウェアにRDBMSを適用するため、以下の問題を解決すること。  一つは、従来のRDBMSは保持している情報が大きいこと。また、それら多くの情報を処理するための、オーバーヘッドが大きい。【解決手段】  アプリケーション開発中のRDBMSと出荷後のRDBMSとで、ディクショナリの管理方法を異なるものとする。アプリケーション開発中は、従来と同様のディクショナリ表を用いる。アプリケーション開発終了後、出荷後のRDBMSに対して最適化されたディクショナリを適用する。これにより、RDBMSは保持している情報が大きいこと、多くの情報を処理するための、オーバーヘッドが大きいことを改善する。【選択図】  図１
2007265319.tif 000002
【特許請求の範囲】
【請求項１】
データベースを管理するための第１のディクショナリ情報と前記データベースとを格納した記憶装置を備えたデータ処理装置におけるデータ処理方法において、
前記第１のディクショナリの更新可および更新不可のいずれかの状態を前記記憶装置に格納し、
前記状態が更新可の場合は、前記第１のディクショナリ情報から前記データベースの処理に必要な情報を取得して入力した問合せ要求に基づいた処理を前記データベースに行い、
前記状態が更新不可の場合は、前記記憶装置に第２のディクショナリ情報が存在しない場合は、前記第１のディクショナリ情報から前記データベースの処理に必要な情報を取得して第２のディクショナリ情報を生成して前記記憶装置に格納し前記第２のディクショナリ情報を参照して入力した問合せ要求に基づいた処理を前記データベースに行い、前記記憶装置に第２のディクショナリ情報が存在する場合は、前記第２のディクショナリ情報を参照して入力した問合せ要求に基づいた処理を前記データベースに行うことを特徴とするデータ処理方法。
【請求項２】
データベースを管理するための第１のディクショナリ情報と前記データベースとを格納した記憶装置を備えたデータ処理装置において、
前記第１のディクショナリの更新可および更新不可のいずれかの状態を前記記憶装置に格納する手段と、
前記状態が更新可の場合は、前記第１のディクショナリ情報から前記データベースの処理に必要な情報を取得して入力した問合せ要求に基づいた処理を前記データベースに行う手段と、
前記状態が更新不可の場合は、前記記憶装置に第２のディクショナリ情報が存在しない場合は、前記第１のディクショナリ情報から前記データベースの処理に必要な情報を取得して第２のディクショナリ情報を生成して前記記憶装置に格納し前記第２のディクショナリ情報を参照して入力した問合せ要求に基づいた処理を前記データベースに行い、前記記憶装置に第２のディクショナリ情報が存在する場合は、前記第２のディクショナリ情報を参照して入力した問合せ要求に基づいた処理を前記データベースに行う手段とをことを特徴とするデータ処理装置。
【請求項３】
アプリケーション開発中のRDBMSと出荷後のRDBMSとで、ディクショナリの管理方法を異なるものにすることとし、出荷後のRDBMSの実装プログラムが参照するために最適化された形式で定義情報を持つディクショナリを出荷後の組み込みソフトウェアに適用することで、組み込みソフトウェアにおけるアプリケーションにRDBMSを適用し易くすることを特徴とするデータ処理方法。
【請求項４】
RDBMSを出荷後の組み込みソフトウェアに適用し易くすることを目的とし、ディクショナリ情報のスキーマ、表、列、インデックスの名称情報を物理的に一箇所に格納し、その名称格納領域のアドレス参照によって名称情報を取得できるようにRDBMSの実装プログラムを作成し、名称情報によって使用する記憶装置の容量を削減することで、組み込みソフトウェアにおけるアプリケーションにRDBMSを適用し易くすることを特徴とするデータ処理方法。
【請求項５】
RDBMSを出荷後の組み込みソフトウェアに適用し易くすることを目的とし、ディクショナリの持つ情報をRDBMSの実装プログラムが直接参照できる形式に変化し、その変換した情報を効率良く検索するためのインデックスを作成することで、ディクショナリの内容を表形式から変換するオーバーヘッドを削減し、組み込みソフトウェアにおけるアプリケーションにRDBMSを適用し易くすることを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースマネジメントシステム（以下DBMS）におけるディクショナリを用いたデータ処理技術に関するものである。
【背景技術】
【０００２】
以下、２つの技術的背景がある。
【０００３】
一つは、RDBMS（リレーショナル・データベースマネジメントシステム）におけるデータディクショナリである。通常のRDBMSは、データカタログ、またはデータディクショナリ(Data Dictionary)などと呼ばれる機能を備えている(以下ディクショナリ)。ディクショナリは、RDBMSに関する全てのメタデータ(RDBMSが必要とする情報を意味付けしたデータ)、あるいは、RDBMSが自分自身を管理するための情報、あるいは、表、列、インデックスなどの定義情報を含む定義情報を保持する。
【０００４】
これは、情報資源を管理するためのデータベースとして、国際標準規格(ISO)のIS 10027(IRDSフレームワーク：Information Resource Dictionary System)に示される、情報資源辞書(IRD)の概念に包含されるものである。ディクショナリ（ディクショナリ情報ともいう）とは、RDBMSを支援するツール、あるいはRDBMSの機能の一部としてのものを指す。
【０００５】
もう一つは、組み込みソフトウェアである。組み込みソフトウェア開発は、「2005年版組込みソフトウェア産業実態調査報告書(経済産業省)」にも示されるように、一般的な分野である。一般的なソフトウェアは、一度出荷された後でも、そのプログラムを変更して
機能の追加や、不良の削除などが行なわれる。しかし、組み込みソフトウェアにおいては、一度出荷されると、その機器（ハードウェア）の一部として扱われ、機器に含まれるソフトウェアのプログラムを直接変更することは少ない。
【０００６】
【非特許文献１】2005年版組込みソフトウェア産業実態調査報告書(経済産業省)
【発明の開示】
【発明が解決しようとする課題】
【０００７】
一般的なパソコンなどと異なり、携帯電話などの小型の計算機は、その容積が小さいことが原因で、一般的な大きさの装置よりも小さいものを使用する必要がある。そのため、それら小型の機器に組み込まれるソフトウェア（プログラム）では利用できるリソース（記憶装置の容量、演算装置の性能など）が制限される。
【０００８】
一方、従来のRDBMSは、データの定義情報、自分自身の持つ機能を実装するための情報、ユーザによるシステムの設定情報、運用を実施する上で取得する統計情報など、多くの情報を持っている。このため、RDBMSを実装するためには、操作の対象となるデータを除いても、大きな容量の記憶装置が必要である。また、RDBMSの持つ多くの情報を扱うため、実装プログラムを実行するための演算装置のオーバーヘッドや、記憶装置の入出力のオーバーヘッドは大きい。
【０００９】
これらのことから、組み込みソフトウェア（組み込みプログラムともいう）にRDBMSを適用することが難しいという課題があった。本発明の目的は、これらの課題を改善し、組み込みソフトウェアへRDBMSを適用することを容易にすることにある。
【課題を解決するための手段】
【００１０】
上記課題を改善し、組み込みソフトウェアへRDBMSを適用することを容易にするため、以下に示す簡易ディクショナリを用いることを手段とする。
【００１１】
出荷後の組み込み機器に含まれるRDBMSは、その機器の一部品として扱われ、一般的なソフトウェアのようにプログラムの変更をおこなって使用されることは無い。そのため、RDBMSの実装プログラムが参照する情報があればよく、定義情報の追加、変更を行なうための情報は使用しない。
【００１２】
このことから、定義情報を持つディクショナリ表を基とし、組み込み機器に組み込まれたRDBMSの実装プログラムが参照する情報へと最適化し、簡易ディクショナリとする。これにより、上記課題の一つである、RDBMSが使用する記憶装置の容量が大きいという問題を改善する。しかし、組み込む対象によっては、これだけの改善で対応できない程リソースを制限されるものもあり、十分な改善とは言えない。そのため、さらに、定義情報の中で大きな情報であるスキーマ、表、列、インデックスの名称情報を圧縮する。名称情報の圧縮とは、名称情報を物理的に一箇所に格納することである。RDBMSの実装プログラム中に、一つの名称情報を参照する箇所は複数存在する。その参照箇所をポインタによるアドレス参照によって名称情報を取得できるようにRDBMSの実装プログラムを作成する。
【００１３】
これらの特長によって、RDBMSが必要とする記憶装置の容量の削減はできた。しかし、これだけでは、表形式で保持されているRDBMSの情報を参照する処理のオーバーヘッドが大きいという問題が解決できない。この問題を解決することを目的とし、簡易ディクョナリは、RDBMSの実装プログラムが直接参照できる形式として変換し、必要に応じて主記憶装置へロードするように実装する。このようにすることで、ディクショナリの定義情報を参照する時に、表形式から変換するために発生するオーバーヘッドが削減できる。
【００１４】
上記のような簡易ディクショナリは、実装することによって、目的を達成するために有効な効果を得ることができる。そのような簡易ディクショナリには次のような２つの課題がある。
【００１５】
第１の課題は、従来のディクショナリを簡易ディクショナリへ変換すると、表形式のデータに有効であるディクショナリインデックスが無効となることである。インデックスは表形式のデータを効率よく参照するための索引情報で、RDBMSでは一般的に実装されているものである。一般的にインデックスを使用することで、データの検索性能に非常に大きな効果得ることが可能になる。このディクショナリインデックスが無効となるため、従来の方法よりも簡易ディクショナリから必要な定義情報を得る方が、性能劣化する場合がある。
【００１６】
この課題を改善するために、簡易ディクショナリへ変換後のRDBMSの実装プログラムから直接参照できる形式に対応したインデックスを新たに作成する。さらに、各表定義情報から列およびインデックスの定義情報を取得するためのポインタを付加する。この簡易ディクショナリ用インデックスは、アプリケーションがRDBMSへの接続をおこなった時に主記憶装置にロードする。簡易ディクショナリ中から必要な定義情報を取得するには、この簡易ディクショナリ用インデックスを使用して、対象の表定義情報を取得すればよい。このように、対象データの検索を高速化することにより上記の課題を改善する。
【００１７】
第２の課題は、一度、簡易ディクショナリへ変換してしまうと、定義情報の変更がおこなえないという点にある。必要に応じてユーザが定義を変更できないということは、様々な用途に応じたデータを扱えるようにRDBMSを使用したアプリケーション開発を行なえないということであり、実用性の面で致命的である。
【００１８】
前記課題を解決するため、アプリケーション開発中と、出荷後の機器に組み込まれるRDBMSとでは、必要とする定義情報が異なることに着目し、アプリケーション開発中のRDBMSと出荷後のRDBMSとで、ディクショナリの管理方法を変える。つまり、アプリケーション開発中は、従来と同様に、表形式によるディクショナリの管理方法を用いる。ディクショナリの更新可の状態である。アプリケーションの開発終了後、RDBMSとそれを使用するアプリケーションを組み込み機器へ移行する時に、簡易ディクショナリを適用する。ディクショナリの更新不可の状態である。このようにすることによって、アプリケーション開発における定義情報の変更（ディクショナリの更新可）と、簡易ディクショナリ（ディクショナリの更新不可）の適用とを、両立することが実現できる。このようなRDBMSの運用方法によって、簡易ディクショナリの実用性を向上させることができる。
【００１９】
また、前記課題を解決するため、データ処理装置にデータベースを管理するための第１のディクショナリ情報と前記データベースとを格納した記憶装置を備える。さらに、前記第１のディクショナリの更新可および更新不可のいずれかの状態を前記記憶装置に格納し、前記状態が更新可の場合は、前記第１のディクショナリ情報から前記データベースの処理に必要な情報を取得して入力した問合せ要求に基づいた処理を前記データベースに行い、前記状態が更新不可の場合は、前記記憶装置に第２のディクショナリ情報が存在しない場合は、前記第１のディクショナリ情報から前記データベースの処理に必要な情報を取得して第２のディクショナリ情報を生成して前記記憶装置に格納し前記第２のディクショナリ情報を参照して入力した問合せ要求に基づいた処理を前記データベースに行い、前記記憶装置に第２のディクショナリ情報が存在する場合は、前記第２のディクショナリ情報を参照して入力した問合せ要求に基づいた処理を前記データベースに行うようにする。
【発明の効果】
【００２０】
本発明によれば、RDBMSを、組み込みソフトウェアに適用し易くすることができる。
【発明を実施するための最良の形態】
【００２１】
本発明を実施するための最良の形態を図面に基づいて、詳細に説明する。
図１は本発明における第１実施例であるRDBMSを使用したアプリケーションの開発を開発環境103でおこない、出荷時に組み込み機器へRDBMSとアプリケーションを移行処理104して運用する例を示すものである。本実施例を説明するために、簡易ディクショナリを適応する機能をもったRDBMSを使用するアプリケーション101、RDBMSの機能の一つとしてのSQLコンパイラ105、ディクショナリ処理部106、DBアクセス処理部107、およびディクショナリ表108、ディクショナリインデックス109を用いる。
【００２２】
まず、アプリケーション開発者は、開発環境102を用いて、RDBMSを使用したアプリケーション101を開発する。開発環境102では、定義情報を変更できなければアプリケーションを開発する上で実用性が無いため、表形式で管理する従来のディクショナリ表108を使用する必要がある。従来のディクショナリ表108において、RDBMSの表形式である各ディクショナリ表201、202、203の関係図と、それら表に格納されているデータを効率的に参照するためのインデックス（索引情報）204、205、206を図２に示す。
【００２３】
開発環境102（従来のディクショナリを使用する場合）では、SQLを実行するために、SQLコンパイラ105は、定義情報110が必要となる度に、ディクショナリ処理部106を使用して、対象となる表、列、インデックスの定義情報を、２次記憶装置112上の各ディクショナリインデックス109を使用して検索する。検索結果を取得後、ディクショナリ処理部106は、検索結果を主記憶111へ読込み、RDBMSの実装プログラムが直接参照できる形式に変換121してから、SQLコンパイラ105に対象となるデータを渡す。このように、従来のディクショナリ表108を使用する場合における、SQLコンパイラ105が定義情報110を取得するまでのデータの流れを図３に示す。また、図４にはディクショナリ処理部106によって、RDBMSの表形式で２次記憶装置112に格納されているディクショナリ表108から、RDBMSの実装プログラムが直接参照するための形式の定義情報110に変換121するために読込むデータの内容401と、データの読込み回数402を示す。
【００２４】
開発環境102では、簡易ディクショナリ113の適用はせず（ディクショナリ情報の更新可の場合）、アプリケーション101の開発が終了すると、組み込み機器103へアプリケーション101を移行104する。一般的に、組み込み機器に移行後のディクショナリは変更されることが少ない、従来のディクショナリのように、表形式でなくともよい。そのため、移行時、ディクショナリ表108を簡易ディクショナリ113へ変換する。簡易ディクショナリ113は、RDBMSの実装プログラムが直接参照できる形式の定義情報114として２次記憶装置116に保持する。ディクショナリ表108を簡易ディクショナリ113に変換する手順を図６から図９に示す。「ディクショナリ情報の更新可もしくは開発中や組込み中、開発装置」や「ディクショナリ情報の更新不可もしくは開発済み、開発完了、組込み済み、組込み機器」などの状態を主記憶装置や２次記憶装置に記憶しても良い。
【００２５】
簡易ディクショナリ113に変換後、開発環境102で使用したディクショナリ表108は不用となるため、削除する。さらに、ディクショナリ表108を参照するために作成されているディクショナリインデックス109も削除する。
【００２６】
スキーマ、表、列、インデックスの名称情報は、定義情報110の中で最も大きなデータであるため、圧縮して２次記憶装置116に格納する。
【００２７】
組み込み機器103中（簡易ディクショナリを使用する場合：ディクショナリ情報の更新不可）では、ディクショナリ表108が持っていた情報はRDBMSの実装プログラムが直接参照できる形式に変換され、さらに変換後のデータを効率良く検索するためのインデックス115が付加された状態で２次記憶装置116に格納されている。これを、主記憶装置117上のアプリケーションがRDBMSへ接続をおこなった時に主記憶装置117にロード124する。これらの処理の流れを図５に示す。
【００２８】
従来のディクショナリ表108を使用した場合での２次記憶装置112と主記憶装111置間で発生するデータの読み込み回数は、図４で示す分402だけ必要となる。しかし、簡易ディクショナリ113を使用した場合での２次記憶装置116と主記憶装置117間で発生するデータを読み込む回数は、定義情報114の読込み１回とインデックス115の読込み１回である。また、対象となるデータを検索するために、主記憶上のインデックス119を使用する。このことから、簡易ディクショナリ113を使用した場合の方が、高速にSQLをコンパイルおよび実行できることが分かる。
【００２９】
以上より、簡易ディクショナリは、出荷後のRDBMSの実装プログラムが参照する形式に最適化された情報を持つことと、名称情報を圧縮して保持しているため、従来のRDBMSよりも必要とする記憶装置の容量が小さく実現できる。
【００３０】
また、ディクショナリを使用する処理が、従来に比べて高速になることであり、RDBMSを組み込みソフトウェアにおけるアプリケーションに適用し易くなるという効果がある。簡易ディクショナリは、RDBMSの実装プログラムが直接参照できる形式で保持されている。そのため、表形式からRDBMSの実装プログラムが直接参照できる形式に変換する必要がない。これにより、従来と比べ、ディクショナリの内容を参照するための手順を実行しない分、高速化を可能とする。また、ディクショナリを使用する処理の高速化は、SQLのコンパイルや実行の高速化に繋がる。
【００３１】
また、従来に比べて高性能な演算装置や記憶装置は必要なくなることである。簡易ディクショナリを使用すると、従来のディクショナリ表を使用することと比べて、２次記憶装置からデータを読込む回数が減少する。また、読込む度に RDBMSの実装プログラムが直接参照できる形式に変換する処理がなくなる。そのため、演算装置のオーバーヘッドと、記憶装置の入出力に発生するオーバーヘッドが減少する。
【図面の簡単な説明】
【００３２】
【図１】本発明における第１実施例であるRDBMSを使用したアプリケーションの開発を開発環境でおこない、出荷時に組み込み機器へRDBMSとアプリケーションを移行して運用する例を示すものである。
【図２】従来のディクショナリにおいて、RDBMSの表形式である各ディクショナリ表の関係図と、それら表に格納されているデータを効率的に参照するためのインデックス（索引情報）を示すものである。
【図３】通常のディクショナリを用いて、SQLコンパイラが定義情報を取得するまでのデータの流れを示すものである。
【図４】ディクショナリ処理部によって、RDBMSの表形式で２次記憶装置に格納されているディクショナリ表から、 RDBMSの実装プログラムが直接参照するための形式の定義情報に変換するために読込むデータの内容と、データの読込み回数を示すものである。
【図５】簡易ディクショナリを用いて、SQLコンパイラが定義情報を取得するまでのデータの流れを示すものである。
【図６】ディクショナリ表を簡易ディクショナリに変換する手順を示すものである。
【図７】簡易ディクショナリ用インデックスを作成する手順を示すものである。
【図８】定義情報を作成する手順を示すものである。
【図９】名称情報の圧縮をする手順を示すものである。
【符号の説明】
【００３３】
101  アプリケーション、
102  アプリケーションの開発環境、
103  組み込む機器、
104  RDBMSとアプリケーションの移行処理、
105  SQLコンパイラ、
106  ディクショナリ処理部、
107  DBアクセス処理部、
108  表形式のディクショナリ表、
109  従来のディクショナリ表に対応したインデックス、
110  直接参照できる形式に変換された定義情報、
111  主記憶装置、
112  ２次記憶装置、
113  簡易ディクショナリ、
114  直接参照できる形式の定義情報、
115  定義情報に対応したインデックス、
116  組み込み機器103の２次記憶装置、
117  組み込み機器103の主記憶装置、
118  RDBMSの実装プログラムが直接参照できる形式の定義情報、
【図１】
2007265319.tif 000003
【図２】
2007265319.tif 000004
【図３】
2007265319.tif 000005
【図４】
2007265319.tif 000006
【図５】
2007265319.tif 000007
【図６】
2007265319.tif 000008
【図７】
2007265319.tif 000009
【図８】
2007265319.tif 000010
【図９】
2007265319.tif 000011