以下、本発明に係るデータ処理装置、データ処理方法、及びデータ処理プログラムの各実施の形態について図面を参照しつつ詳細に説明する。ただし、各実施の形態によって本発明が限定されるものではない。なお、本発明に係るデータ処理装置、データ処理方法、及びデータ処理プログラムの適用対象は任意であるが、例えば、地図データを処理するナビゲーション装置に適用することが考えられる。以下の各実施の形態では、データ処理装置がナビゲーション装置として構成された場合を例に挙げて説明する。
〔実施の形態1〕
最初に、実施の形態1について説明する。この実施の形態1は、データ処理の対象になるデータ自身のデータサイズに基づいて、データの位置を特定する形態である。
(構成)
まず、実施の形態1に係るデータ処理装置としてのナビゲーション装置を用いたナビゲーションシステムの構成を説明する。図1は、実施の形態1に係るナビゲーションシステムを例示するブロック図である。図1に示すように、ナビゲーションシステム1は、現在位置取得部2、タッチパネル3、ディスプレイ4、スピーカ5、及びデータ処理装置としてのナビゲーション装置6を備えている。
(構成−現在位置取得部)
現在位置取得部2は、ナビゲーション装置6が取り付けられた車両(以下、自車両)の現在地点を検出する現在地点検出手段である。具体的には、現在位置取得部2は、GPS、地磁気センサ、距離センサ、又はジャイロセンサ(いずれも図示省略)の少なくとも一つを有し、現在の自車両の位置(座標)及び方位等を公知の方法にて検出する。
(構成−タッチパネル)
タッチパネル3は、ユーザの指等で押圧されることにより、当該ユーザから各種手動入力を受け付けるものである。このタッチパネル3は、透明又は半透明状に形成され、ディスプレイ4の前面において当該ディスプレイ4の表示面と重畳するように設けられている。このタッチパネル3としては、例えば抵抗膜方式や静電容量方式等による操作位置検出手段を備えた公知のタッチパネルを使用することができる。
(構成−ディスプレイ)
ディスプレイ4は、ナビゲーション装置6によって案内された画像を表示する表示手段である。ディスプレイ4の具体的な構成は任意であり、公知の液晶ディスプレイや有機ELディスプレイの如きフラットパネルディスプレイを使用することができる。
(構成−スピーカ)
スピーカ5は、ナビゲーション装置6の制御に基づいて各種の音声を出力する出力手段である。スピーカ5より出力される音声の具体的な態様は任意であり、必要に応じて生成された合成音声や、予め録音された音声を出力することができる。
(構成−ナビゲーション装置)
ナビゲーション装置6は、車両の走行経路を案内する案内装置であると共に、データ処理を行うデータ処理装置であり、制御部7及びデータ記録部8を備えている。
(構成−データ処理装置−制御部)
制御部7は、ナビゲーション装置6を制御する制御手段であり、具体的には、CPU、当該CPU上で解釈実行される各種のプログラム(OSなどの基本制御プログラムや、OS上で起動され特定機能を実現するアプリケーションプログラムを含む)、及びプログラムや各種のデータを格納するためのRAMの如き内部メモリを備えて構成されるコンピュータである。特に、実施の形態に係るデータ処理プログラムは、任意の記録媒体又はネットワークを介してナビゲーション装置6にインストールされることで、制御部7の各部を実質的に構成する。
この制御部7は、機能概念的に、特定部9と更新部10を備える。特定部9は、後述する検索情報DB12にて格納された複数のデータテーブルの中から、参照対象のデータテーブルの先頭位置を特定する特定手段である。更新部10は、複数のデータレコードの一部のデータレコードが更新された場合、当該更新されたデータレコードが属するデータテーブルと同一系統に属するデータテーブルであって、当該データテーブルより上位階層の全てのデータテーブルの次段サイズと配下サイズとを、当該更新されたデータレコードのデータサイズに基づいて更新する更新手段である。これらの制御部7の各部によって実行される処理の詳細や、データレコード、データテーブル、次段サイズ、及び配下サイズの詳細については、後述する。
(構成−データ処理装置−データ記録部)
データ記録部8は、ナビゲーション装置6の動作に必要なプログラム及び各種のデータを格納するデータ格納手段であり、例えば、外部記録装置としてのハードディスク(図示省略)を用いて構成されている。ただし、ハードディスクに代えてあるいはハードディスクと共に、磁気ディスクの如き磁気的記録媒体、又はDVDやブルーレイディスクの如き光学的記録媒体を含む、その他の任意の記録媒体を用いることができる。
このデータ記録部8は、地図情報データベース(以下、データベースを「DB」と表記する)11と、検索情報DB12を格納する。
地図情報DB11は、地図データを格納するデータ格納手段である。「地図データ」とは、地図をディスプレイ4に表示したり、走行経路の探索や案内を行うために必要なデータであり、例えば、ノードデータ(ノード番号、座標)や、リンクデータ(リンク番号、接続ノード番号、道路座標、道路種別、車線数、走行規制等)、地物データ(信号機、道路標識、ガードレール、建物等)、地形データ、地図をディスプレイ4に表示するための地図表示データ等を含んで構成されている。
検索情報DB12は、検索データを格納するデータ格納手段である。実施の形態1における「検索データ」とは、場所(番地)を検索するためのデータであって、少なくとも一つのデータレコードを含む複数のデータテーブルを階層構造化して構成されており、検索情報DB12の検索データファイル13に格納されている。
図2は、検索データの階層構造を示す図である。この図2に示すように、検索データは、一つの最上位階層(第1階層)のデータテーブルDT1と、このデータテーブルDT1に対して一つだけ下位階層(第2階層)に位置付けられたデータテーブルDT2、DT5と、このデータテーブルDT2、DT5に対してさらに一つだけ下位階層(第3階層)に位置付けられたデータテーブルDT3、DT4、DT6、DT7とを含んでいる。これらデータテーブルDT1〜DT7は、検索データが示す場所の地理的階層に対応した階層で構造化されたものであって、検索データが示す場所の地理的階層に対応したデータを含むものである。すなわち、第1階層のデータテーブルDT1は、日本の都道府県を検索するためのデータを含む。第2階層のデータテーブルDT2、DT5は、市区町村を検索するためのデータを含む。第3階層のデータテーブルDT3、DT4、DT6、DT7は、市区町村より一つ下の下位の地理的階層を検索するためのデータを含む(以下、データテーブルの符号DT1〜DT7を省略する)。
各データテーブルのデータレコードは、具体的には、一つの親のデータレコード(以下、親レコード)と、一つ以上の子のデータレコード(以下、子レコード)とを含んで構成されている。例えば、第1階層のデータテーブルは、親レコード「root」と、子レコード「北海道」及び子レコード「青森県」を含む。また、第2階層のデータテーブル「北海道」は、親レコード「北海道」と、子レコード「札幌市」及び子レコード「旭川市」を含む。また、第3階層のデータテーブル「札幌市」は、親レコード「札幌市」と、子レコード「中央区」及び子レコード「西区」を含む。
各データテーブルの親レコードは、当該親レコードが属するデータテーブルの参照用データを含むレコードである。「参照用データ」とは、各データテーブルや各データレコードを参照するために使用されるデータであり、例えば、当該親レコードと同じデータテーブルに含まれる子レコードのレコード数を含んでおり、この子レコードのレコード数を用いて、後述する各処理において子レコードを取得する際における当該子レコードの読み込み終了位置を管理している。
各データテーブルの子レコードは、検索用テキストデータ、識別コード、次段サイズ、及び配下サイズを含む。「検索用テキストデータ」とは、場所(番地)を検索するためにディスプレイ4等に表示されるテキストデータであり、例えば、データテーブル「root」の子レコード「北海道」は、検索用テキストデータ「北海道」を含む。「識別コード」とは、各データテーブル(具体的には、各子レコード)を一意に識別するための識別情報である。「次段サイズ」とは、当該子レコードと同一系統に属するデータテーブルであって、当該子レコードが属するデータテーブルより一つだけ下位階層のデータテーブルのデータサイズである。「配下サイズ」とは、当該子レコードと同一系統に属するデータテーブルであって、当該データテーブルより下位階層の全てのデータテーブルのデータサイズの合計値である。
ここで、「同一系統」とは、上位階層のデータテーブルの子レコードと、当該データテーブルより一つだけ下位階層のデータテーブルの親レコードとが、直接的な階層関係を有する系統(図2では矢印で直接的に結ばれた系統)である。例えば、データテーブル「root」−データテーブル「北海道」−データテーブル「札幌市」は相互に同一系統に属し、データテーブル「root」−データテーブル「北海道」−データテーブル「旭川市」は相互に同一系統に属するが、データテーブル「札幌市」とデータテーブル「旭川市」は同一系統には属していない。
この次段サイズに関して、例えば、図2の例では、データテーブル「root」の子レコード「北海道」は、データテーブル「北海道」のデータサイズ=8200Byteを次段サイズとして有し、データテーブル「北海道」の子レコード「札幌市」は、データテーブル「札幌市」のデータサイズ=500Byteを次段サイズとして有する。なお、データテーブル「札幌市」の子レコード「中央区」は、それより下位階層のデータテーブルが存在しないことから、データサイズ=0Byteを次段サイズとして有する。
また、この配下サイズに関して、例えば、図2の例では、データテーブル「root」の子レコード「北海道」は、データテーブル「北海道」のデータサイズ=8200Byte、データテーブル「札幌市」のデータサイズ=500Byte、及びデータテーブル「旭川市」のデータサイズ=22000Byte、の合計値=30700Byteを配下サイズとして有する。あるいは、データテーブル「北海道」の子レコード「札幌市」は、データテーブル「札幌市」のデータサイズ=500Byteを配下サイズとして有する。なお、最上位階層のデータテーブル「root」の親レコード「root」は、当該データテーブル「root」のデータサイズ=250Byteを含む。
このように階層構造化された検索データは、一つの検索データファイル13に格納されている。図3は、検索データファイル13における検索データの格納順序を示す図である。この図3に示すように、検索データファイル13には、複数のデータテーブルが、最上位階層のデータテーブルを先頭として、同一系統のデータテーブルを上位階層から下位階層に至る順に格納されている。より具体的には、検索データファイル13の先頭位置には、最上位階層のデータテーブル「root」が格納されている。また、検索データファイル13の次の位置には、同一系統のデータテーブル「北海道」−データテーブル「札幌市」が、当該階層順に格納されている。また、次の位置には、同一系統のデータテーブル「北海道」−データテーブル「旭川市」が、当該階層順に格納されるが、データテーブル「北海道」は既に格納されているためにデータテーブル「旭川市」のみが格納されている。また、次の位置には、同一系統のデータテーブル「青森県」−データテーブル「青森市」が、当該階層順に格納されている。また、次の位置には、同一系統のデータテーブル「青森県」−データテーブル「むつ市」が、当該階層順に格納されるが、データテーブル「青森県」は既に格納されているためにデータテーブル「むつ市」のみが格納される。
なお、図2、3には検索データの一部のみを例示しており、実際の検索データには、例えば、データテーブル「秋田県」等のその他の都道府県に対応するデータテーブルや、これら都道府県の市区町村に対応するデータテーブルのデータテーブルが格納される。また、各データテーブルの子レコードにも、実際にはさらに多くの子レコードが含まれ、例えば、データテーブル「むつ市」には、子レコード「旭町」、子レコード「大曲」、子レコード「大湊」以外にも、「むつ市」に属する地理的階層に対応する子レコードが含まれる。このように構成される検索データは、地図作成業者等によって構成されデータ記録部8に格納される。
(処理)
次に、このように構成されるナビゲーション装置6によって実行されるデータ処理について説明する。この処理は、参照対象となるデータレコードを特定するための特定処理と、データレコードを更新するための更新処理に大別される。以下の処理の説明において、制御主体を特記しない処理については、ナビゲーション装置6の制御部7にて実行されるものとし、情報の取得元や取得経路を特記しない場合については、公知のタイミング及び公知の方法にて、ナビゲーション装置6のデータ記録部8に予め格納されており、あるいは、ナビゲーション装置6のタッチパネル3を介してユーザ等によって入力されるものとする。また、ステップを「S」と略記する。
(処理−特定処理)
最初に、特定処理について説明する。図4は、特定処理のフローチャートである。この特定処理は、ナビゲーションシステム1のユーザによって地名検索の操作が所定方法で行われた場合に起動される。以下の説明では、ユーザが検索したい地名が「青森県むつ市」である場合を、具体例に交えて説明する。
この処理において、特定部9は、現在参照しているデータテーブル(以下、カレントデータテーブル)の親レコードを取得する(SA1)。最初のカレントデータテーブルは、検索データファイル13に格納されている最上位階層のデータテーブルとする。例えば、カレントデータテーブル「root」の親レコード「root」を取得する。
次いで、特定部9は、カレントデータテーブルの全ての子レコードを取得し、当該子レコードに基づいて選択用画面を生成してディスプレイ4に表示する(SA2)。例えば、カレントデータテーブル「root」の子レコード「北海道」と子レコード「青森県」を取得して、これら子レコードから検索用テキストデータである「北海道」と「青森県」をそれぞれ取得し、当該取得した検索用テキストデータ「北海道」と「青森県」をリスト形式で含んだ選択用画面を生成してディスプレイ4に表示する。また、選択用画面には、地名の検索の終了を指示するためのボタンを表示する。このようなボタンとしては、例えば、地名の検索を終了すると共に、その時点で最終的に検索されている地名に対する操作を行うための操作ボタン(例えば、検索された地名に対応する地図データを地図情報DB11から取得してディスプレイ4に表示するための表示ボタン)を表示する。
次いで、特定部9は、ユーザにより検索したい地名が選択されたか否かを判定する(SA3)。そして、検索したい地名が選択された場合には(SA3、Yes)、SA4に移行する。例えば、検索したい地名が「青森県むつ市」である場合、ユーザは、ディスプレイ4に表示された検索用テキストデータ「青森県」を、タッチパネル3を介して選択する。この場合には、検索したい地名が選択されたと判定される。
検索したい地名が選択されたと判定した場合(SA3、Yes)、特定部9は、ユーザによって選択された検索用テキストデータに対応する子レコードから、当該子レコードの識別コードを取得する(SA4)。例えば、検索用テキストデータ「青森県」が選択された場合には、当該検索用テキストデータ「青森県」に対応する子レコード「青森県」から、当該子レコード「青森県」の識別コードを取得する。
次いで、特定部9は、カレントデータテーブルのデータサイズをオフセット値に加算する(SA5)。オフセット値とは、ユーザが検索したい地名に対応するデータテーブルの位置を特定するための情報であり、具体的には、検索データファイル13に格納されている最上位階層のデータテーブルの先頭位置を基準とする、ユーザが検索したい地名に対応するデータテーブルの先頭位置までの、相対的な位置である。なお、オフセット値の初期値は0とする。また、最上位階層のデータテーブルのデータサイズは、最上位階層のデータテーブルの親レコードから取得する。例えば、データテーブル「root」の親レコード「root」に含まれているデータサイズ=250Byteをオフセット値に加算し、オフセット値=0+250=250Byteとする。
次いで、特定部9は、目的の子レコード(つまり、SA3でユーザによって選択された検索用テキストデータに対応する子レコード)に辿り付くまで、SA6〜SA10のループ処理を繰り返す。具体的には、特定部9は、カレントデータテーブルの子レコードの中から、収納順序の上位順に一つの子レコードを取得し、当該取得した子レコードをカレント子レコードに設定する(SA7)。例えば、最初に、カレントデータテーブル「root」の子レコード「北海道」をカレント子レコードに設定する。
そして、当該設定したカレント子レコードが目的の子レコードであるか否かを判定する(SA8)。この判定は、SA4で取得した識別コードが、SA7で設定したカレント子レコードに含まれる識別コードに一致するか否かに基づいて行われる。例えば、SA4で取得した子レコード「青森県」の識別コードが、SA7で設定したカレント子レコード「北海道」の識別コードに一致するか否かを判定する。この例の場合には、一致しないことから、カレント子レコードが目的の子レコードではないと判定する。
カレント子レコードが目的の子レコードではないと判定した場合(SA8、No)、特定部9は、カレント子レコードの配下サイズをオフセット値に加算する(SA9)。例えば、SA4で取得した子レコード「青森県」の識別コードが、SA7で設定したカレント子レコード「北海道」の識別コードに一致しないために、目的の子レコードではないと判定した場合には、カレント子レコード「北海道」の配下サイズ=30700Byteを加算して、オフセット値=250+30700=30950Byteとする。
一方、カレント子レコードが目的の子レコードであると判定した場合(SA8、Yes)、特定部9は、SA6〜SA10のループ処理を抜けて、その時点におけるオフセット値の位置へ、カレントデータテーブルの位置を移動する(SA11)。例えば、上述のように、カレント子レコード「北海道」が目的の子レコードではないと判定した場合、次のループ処理において、SA4で取得した子レコード「青森県」の識別コードが、カレントデータテーブル「root」の子レコードの中で、収納順序が二番目であるカレント子レコード「青森県」の識別コードに一致するために、目的の子レコードであると判定した場合には、検索データファイル13に格納されている最上位階層のデータテーブルの先頭位置から、その時点におけるオフセット値=30950Byteの位置を先頭位置とするデータテーブル「青森県」を、カレントデータテーブルとする。
次いで、SA1に戻り、特定部9は、カレントデータテーブルの親レコードを取得する(SA1)。例えば、カレントデータテーブル「青森県」の親レコード「青森県」を取得する。
また、特定部9は、カレントデータテーブルの全ての子レコードを取得し、当該子レコードに基づいて選択用画面を生成してディスプレイ4に表示する(SA2)。例えば、カレントデータテーブル「青森県」の子レコード「青森市」と子レコード「むつ市」を取得して、これら子レコードから検索用テキストデータである「青森市」と「むつ市」をそれぞれ取得し、当該取得した検索用テキストデータ「青森市」と「むつ市」をリスト形式で含んだ選択用画面を生成してディスプレイ4に表示する。また、選択用画面には、地名の検索の終了を指示するためのボタンを表示する。
次いで、特定部9は、ユーザにより、検索したい地名が選択されたか否かを判定する(SA3)。そして、検索したい地名が選択された場合には(SA3、Yes)、SA4に移行する。例えば、検索したい地名が「青森県むつ市」である場合、ユーザは、ディスプレイ4に表示された検索用テキストデータ「むつ市」を、タッチパネル3を介して選択する。この場合には、検索したい地名が選択されたと判定される。
検索したい地名が選択されたと判定した場合(SA3、Yes)、特定部9は、ユーザによって選択された検索用テキストデータに対応する子レコードから、当該子レコードの識別コードを取得する(SA4)。例えば、検索用テキストデータ「むつ市」が選択された場合には、当該検索用テキストデータ「むつ市」に対応する子レコード「むつ市」から、当該子レコード「むつ市」の識別コードを取得する。
次いで、特定部9は、カレントデータテーブルのデータサイズをオフセット値に加算する(SA5)。2回目及びそれ以降のSA5の処理においては、データサイズは、その時点のカレント子レコードの次段サイズから取得する。例えば、カレントデータテーブル「青森県」のデータサイズ=2000Byteを、その時点のカレント子レコード「青森県」から取得してオフセット値に加算し、オフセット値=30950+2000=32950Byteとする。
その後、特定部9は、目的の子レコード(つまり、SA3でユーザによって選択された検索用テキストデータに対応する子レコード)に辿り付くまで、SA6〜SA10のループ処理を繰り返す。具体的には、特定部9は、カレントデータテーブルの子レコードの中から、収納順序の上位順に一つの子レコードを取得し、当該取得した子レコードをカレント子レコードに設定する(SA7)。例えば、最初に、カレントデータテーブル「青森県」の子レコード「青森市」を取得する。
そして、当該取得したカレント子レコードが目的の子レコードであるか否かを判定する(SA8)。例えば、SA4で取得した子レコード「むつ市」の識別コードが、SA7で設定したカレント子レコード「青森市」の識別コードに一致するか否かを判定する。この例の場合には、一致しないことから、カレント子レコードが目的の子レコードではないと判定する。
カレント子レコードが目的の子レコードではないと判定した場合(SA8、No)、特定部9は、カレント子レコードの配下サイズをオフセット値に加算する(SA9)。例えば、SA4で取得した子レコード「むつ市」の識別コードが、SA7で設定したカレント子レコード「青森市」の識別コードに一致しないために、目的の子レコードではないと判定した場合には、カレント子レコード「青森市」の配下サイズ=1500Byteを加算して、オフセット値=32950+1500=34450Byteとする。
一方、カレント子レコードが目的の子レコードであると判定した場合(SA8、Yes)、特定部9は、SA6〜SA10のループ処理を抜けて、その時点におけるオフセット値の位置へ、カレントデータテーブルの位置を移動する(SA11)。例えば、上述のように、カレント子レコード「青森市」が目的の子レコードではないと判定した場合、次のループ処理において、SA4で取得した子レコード「むつ市」の識別コードが、カレントデータテーブル「root」の子レコードの中で、収納順序が二番目であるカレント子レコード「むつ市」の識別コードに一致するために、目的の子レコードであると判定した場合には、検索データファイル13に格納されている最上位階層のデータテーブルの先頭位置から、その時点におけるオフセット値=34450Byteの位置を先頭位置とするデータテーブル「むつ市」を、カレントデータテーブルとする。
次いで、特定部9は、カレントデータテーブルの親レコードを取得する(SA1)。例えば、カレントデータテーブル「むつ市」の親レコード「むつ市」を取得する。
次いで、特定部9は、カレントデータテーブルの全ての子レコードを取得し、当該子レコードに基づいて選択用画面を生成してディスプレイ4に表示する(SA2)。例えば、カレントデータテーブル「むつ市」の子レコード「旭町」、子レコード「大曲」、及び子レコード「大湊」等を取得して、これら子レコードから検索用テキストデータである「旭町」、「大曲」、及び「大湊」等をそれぞれ取得し、当該取得した検索用テキストデータ「旭町」、「大曲」、及び「大湊」等をリスト形式で含んだ選択用画面を生成してディスプレイ4に表示する。また、選択用画面には、地名の検索の終了を指示するためのボタンを表示する。
次いで、特定部9は、ユーザにより、検索したい地名が選択されたかを判定する(SA3)。例えば、検索したい地名が「青森県むつ市」である場合、ユーザは、ディスプレイ4に、「むつ市」に属する「旭町」、「大曲」、及び「大湊」等が既に表示されていることから、それ以上の検索を行う必要はないと判断し、地名の検索の終了を指示するためのボタンを選択する。この場合には、検索したい地名が選択されなかった(検索の終了が指示された)と判定される。このように選択が行われると、特定処理を終了する。
このように特定処理が終了した時点において設定されているオフセット値により、検索データの最上位階層のデータテーブルの先頭位置から参照対象のデータテーブルの先頭位置までの相対的な位置が特定されるので、制御部7は、この参照対象のデータテーブルの親レコードや子レコードを取得して、所定の処理に利用することが可能になる。例えば、最上位階層のデータテーブル「root」の先頭位置から、オフセット値=34450Byteの位置のデータテーブルを取得することで、データテーブル「むつ市」を取得することができる。このため、検索データの検索を効率よく行うことが可能になる。
(処理−更新処理)
次に、更新処理について説明する。図5は、更新処理のフローチャートである。この更新処理は、更新情報(更新対象となるデータレコードの内容、更新の種類(追加、書き換え、又は削除)、及び更新対象となるデータレコードの位置を含む情報)が指定された場合に起動される。例えば、ナビゲーションシステム1のユーザが公知の通信手段を介して検索データの更新操作をタッチパネル3を介して行った場合、図示しないセンター装置から更新情報が送信され、この更新情報に基づいて更新を行うために更新処理が起動される。以下の説明では、データテーブル「むつ市」における子データレコード「大曲」の次の位置に、子データレコード「大湊」を追加する場合を、具体例に交えて説明する。
最初に、更新部10は、更新情報に基づいてデータレコードを更新する(SB1)。すなわち、更新対象となるデータレコードを、更新対象となるデータレコードの位置において、更新の種類に応じて追加、書き換え、又は削除する。
次いで、更新部10は、追加や書き換えが行われたデータレコードに対して、配下のデータテーブルが存在する場合には、配下のデータテーブルを参照して、次段サイズと配下サイズを算定して当該更新対象となるデータレコードに記録する(SB2)。
次いで、更新部10は、当該更新されたデータレコードが属するデータテーブルのデータサイズを更新する(SB3)。つまり、データレコードが追加された場合には、当該データレコードのサイズを当該データテーブルのデータサイズに加算し、データレコードが書き換えられた場合には、当該データレコードの書き換えによるサイズの増減に応じて、当該データテーブルのデータサイズを増減させ、データレコードが削除された場合には、当該データレコードのサイズを当該データテーブルのサイズから減算する(以下、次段サイズと配下サイズの更新も同様)。例えば、子データレコード「大湊」のサイズ=300Byteであり、データテーブル「むつ市」のデータサイズ=1000Byteである場合、当該データテーブル「むつ市」のデータサイズ=1000+300=1300Byteに更新する。
次いで、更新部10は、当該更新されたデータレコードが属するデータテーブルと同一系統に属するデータテーブルであって、当該データテーブルより上位階層の全てのデータテーブルの子データレコードの次段サイズと配下サイズを更新する(SB4)。例えば、子データレコード「大湊」のサイズ=300Byteであり、データテーブル「青森県」の子データレコード「むつ市」の次段サイズと配下サイズ=1000Byteである場合、子データレコード「むつ市」の次段サイズ=1000+300=1300Byteに更新し、子データレコード「むつ市」の配下サイズ=1000+300=1300Byteに更新する。また、データテーブル「root」の子データレコード「青森県」の次段サイズ=2000Byteで配下サイズ=4500Byteである場合、子データレコード「青森県」の次段サイズ=2000+300=2300Byteに更新し、子データレコード「青森県」の配下サイズ=4500+300=4800Byteに更新する。これにて更新処理を終了する。
この更新処理の終了後、必要に応じて、上述した特定処理を行うことで、更新されたデータテーブルのデータサイズ、次段サイズ、及び配下サイズに基づいて、参照対象のデータテーブルの位置を正しく特定することが可能になる。
(効果)
このように実施の形態1によれば、同一のファイルの内部に格納されたデータであって、少なくとも一つのデータレコードを含む複数のデータテーブルを階層構造化して構成されたデータを用いて、ファイルにおける最上位階層のデータテーブルの先頭位置から特定対象のデータテーブルの先頭位置までの相対的な位置を特定することができるので、データを構成するファイルの数を一つに抑制することができると共に、データの検索を容易に行うことが可能になる。
また、複数のデータレコードの一部のデータレコードが更新された場合、上位階層の全てのデータテーブルの次段サイズと配下サイズとを更新することで、データの更新が完了するので、データの更新を容易に行うことが可能になる。
〔実施の形態2〕
次に、実施の形態2について説明する。この実施の形態2は、データ処理の対象になるデータとは別に、データ処理の対象になるデータの位置を特定するためのインデックスデータを設け、このインデックスデータに基づいて、データ処理の対象になるデータの位置を特定する形態である。ただし、実施の形態2の構成と処理の中で、実施の形態1の構成と処理と同じ部分については、必要に応じて実施の形態1で使用したものと同じ符号を付し、その説明を省略する。
(構成)
まず、実施の形態2に係るデータ処理装置としてのナビゲーション装置を用いたナビゲーションシステムの構成を説明する。図6は、実施の形態2に係るナビゲーションシステムを例示するブロック図である。図6に示すように、ナビゲーションシステム20は、現在位置取得部2、タッチパネル3、ディスプレイ4、スピーカ5、及びデータ処理装置としてのナビゲーション装置21を備えている。ナビゲーション装置21は、制御部22とデータ記録部25を備えている。
(構成−データ処理装置−制御部)
制御部22は、ナビゲーション装置21を制御する制御手段である。この制御部22は、機能概念的に、特定部23と更新部24を備える。特定部23は、後述する検索情報DB26にて格納された複数のデータテーブルの中から、参照対象のデータテーブルの先頭位置を特定する特定手段である。更新部24は、複数の実データレコードの一部の実データレコードが更新された場合、当該更新された実データレコードに対応するインデックステーブルの実サイズと、当該インデックステーブルと同一系統に属するインデックステーブルであって、当該インデックステーブルより上位階層の全てのインデックステーブルの実サイズとを、当該更新された実データレコードのデータサイズに基づいて更新する更新手段である。これらの制御部22の各部によって実行される処理の詳細や、実データレコード、インデックステーブル、実サイズの詳細については、後述する。
(構成−データ処理装置−データ記録部)
データ記録部25は、地図情報DB11と検索情報DB26を格納する。検索情報DB26は、検索データを格納するデータ格納手段である。実施の形態2における「検索データ」とは、施設を検索するためのデータであって、実データとインデックスデータを含んで構成されている。より具体的には、検索情報DB26において、実データは実データファイル27に格納され、インデックスデータはインデックスデータファイル28に格納されている。
「実データ」とは、データ処理の対象になるデータであり、例えば、施設の名称を含んで構成されている。この実データは、文字データを含む複数の実データレコードを当該文字データにおける文字位置及び文字語順に基づいた整列順序で整列して構成されている。図7は、実データの階層構造を示す図である。この図7に示すように、実データは、第1階層の実データテーブルを含んで構成されている。各第1階層の実データテーブルは、実データに含まれる施設の名称であってひらがなで表記された名称における第1文字目に対応する実データテーブルであり、これら複数の第1階層の実データテーブルは五十音順に整列されている。例えば、実データは、第1階層の実データテーブルとして、実データテーブル「あ」、実データテーブル「い」、及び実データテーブル「う」を含んでおり、これらの第1階層の実データテーブルは、「あ」「い」「う」の五十音順に整列されている。
また、各第1階層の実データテーブルは、第2階層の実データテーブルを含んで構成されている。各第2階層の実データテーブルは、実データに含まれる施設の名称であってひらがなで表記された名称における第2文字目に対応する実データテーブルであり、これら複数の第2階層の実データテーブルは、五十音順に整列されている。例えば、実データは、第1階層の実データテーブル「い」の第2階層の実データテーブルとして、実データテーブル「あ」、実データテーブル「い」、実データテーブル「う」、実データテーブル「え」、及び実データテーブル「お」を含んでおり、これらの第2階層の実データテーブルは、「あ」「い」「う」「え」「お」の五十音順に整列されている。
また、各第2階層の実データテーブルは、実データレコードを含んで構成されている。各実データレコードは、実データに含まれる施設の名称であってひらがなで表記された名称に対応する実データテーブルであり、これら複数の実データレコードは、五十音順に整列されている。例えば、実データは、第1階層の実データテーブル「い」の第2階層の実データテーブル「あ」の実データレコードとして、実データレコード「いあ」及び実データレコード「いあつ」を含んでおり、これらの実データレコードは、「いあ」、「いあつ」の五十音順に整列されている。
このように階層構造化された複数の実データテーブルは、インデックスデータファイル28とは異なる一つの実データファイル27に格納されている。図8は、実データファイル27における実データの格納順序を示す図である。この図8に示すように、実データファイル27には、その先頭位置に第1階層の実データテーブル「あ」が格納されている。より具体的には、この第1階層の実データテーブル「あ」の下位の第2階層の実データテーブル「あ」に含まれる実データレコード「あ」と実データレコード「ああ」が順次格納され、次いで、第1階層の実データテーブル「あ」の下位の第2階層の実データテーブル「い」に含まれる実データレコード「あい」と実データレコード「あいかわ」が順次格納され、以下同様に、第1階層の実データテーブル「あ」の下位の第2階層の実データテーブル「う」に含まれる実データレコード等が格納される。そして、第1階層の実データテーブル「あ」の次の位置に、第2階層の実データテーブル「い」と、第1階層の実データテーブル「う」が、第1階層の実データテーブル「あ」の格納と同じ規則により、順次格納される。
また、図6のインデックスデータファイル28は、インデックスデータを格納するファイルである。「インデックスデータ」とは、実データの位置を特定するためのデータである。
特に、実施の形態2におけるインデックスデータは、実施の形態1の検索データと同様の構造で構成されている。すなわち、インデックスデータは、少なくとも一つのデータレコードを含む複数のデータテーブルを階層構造化して構成されている。図9は、インデックスデータの階層構造を示す図である。この図9に示すように、インデックスデータは、一つの最上位階層(第1階層)のデータテーブルDT10と、このデータテーブルDT10に対して一つだけ下位階層(第2階層)に位置付けられたデータテーブルDT11、DT12とを含んでいる。これらデータテーブルDT10〜DT12は、インデックスデータが示す実データの階層に対応した階層で構造化されたものであって、インデックスデータが示す実データの階層に対応したデータを含むものである。すなわち、第1階層のデータテーブルDT10は、施設の名称のひらがな表記の第1文字目に対応した階層のデータであり、第2階層のデータテーブルDT11、DT12は、施設のひらがな表記の第2文字目に対応した階層のデータである(以下、データテーブルの符号DT10〜DT12を省略する)。
各データテーブルのデータレコードは、具体的には、一つの親レコードと、一つ以上の子レコードとを含んで構成されている。例えば、第1階層のデータテーブルは、親レコード「root」と、子レコード「あ」、子レコード「い」、及び子レコード「う」を含む。また、第2階層のデータテーブル「い」は、親レコード「い」と、子レコード「あ」、子レコード「い」、子レコード「う」、子レコード「え」、及び子レコード「お」を含む。なお、実際には、第1階層のデータテーブルは、第2階層のデータテーブル「あ」を含んでいるが、以下の説明では、第2階層のデータテーブル「あ」を省略する。
各データテーブルの親レコードは、当該親レコードが属するデータテーブルの参照用データを含むレコードである。「参照用データ」とは、各データテーブルや各データレコードを参照するために使用されるデータであり、例えば、当該親レコードと同じデータテーブルに含まれる子レコードのレコード数を含んでおり、この子レコードのレコード数を用いて、後述する各処理において子レコードを取得する際における当該子レコードの読み込み終了位置を管理している。
各データテーブルの子レコードは、検索用テキストデータ、識別コード、次段サイズ、配下サイズ、及び実サイズを含む。「検索用テキストデータ」とは、施設を検索するためにディスプレイ4等に表示されるテキストデータであり、例えば、データテーブル「root」の子レコード「あ」は、検索用テキストデータ「あ」を含む。「識別コード」、「次段サイズ」、及び「配下サイズ」は、実施の形態1と同じである。「実サイズ」とは、各子レコードに対応する実データ(各子レコードによって位置が特定される実データ)のサイズである。すなわち、第1階層のデータテーブルの各子レコードは、図7の実データの第1階層の実データテーブルに対応しており、第2階層のデータテーブルの各子レコードは、図7の実データの第2階層の実データテーブルに対応している。具体的には、第1階層のデータテーブル「root」の各子レコード「あ」は、実データの第1階層の実データテーブル「あ」、第1階層のデータテーブル「root」の各子レコード「い」は、実データの第1階層の実データテーブル「い」、第1階層のデータテーブル「root」の各子レコード「う」は、実データの第1階層の実データテーブル「う」に対応している。また、第2階層のデータテーブル「root」の各子レコード「あ」は、実データの第1階層の実データテーブル「あ」、第1階層のデータテーブル「い」の各子レコード「あ」〜「お」は、実データの第1階層の実データテーブル「い」の第2階層の実データテーブル「あ」〜「お」に対応している。そして、例えば、第1階層のデータテーブル「root」の各子レコード「あ」は、実サイズとして、実データの第1階層の実データテーブル「あ」のデータサイズである100KByteを含んでいる。
このように階層構造化されたインデックスデータは、実データの実データファイル27とは異なる一つのインデックスデータファイル28に格納されている。図10は、インデックスデータファイル28におけるインデックスデータの格納順序を示す図である。この図10に示すように、インデックスデータファイル28には、複数のデータテーブルが、最上位階層のデータテーブルを先頭として、同一系統のデータテーブルを上位階層から下位階層に至る順に格納されている。より具体的には、検索データファイルの先頭位置には、最上位階層のデータテーブル「root」が格納されている。また、検索データファイルの次の位置には、同一系統の第2階層のデータテーブル「い」が格納されている。また、次の位置には、同一系統の第2階層のデータテーブル「う」が格納されている。
なお、図9、10には検索データの一部のみを例示しており、実際の検索データには、例えば、第1階層のデータテーブルとして、「え」及びそれ以降の各ひらがなに対応する第1階層のデータテーブルや、これら第1階層のデータテーブルに含まれる第2階層のデータテーブルとして、「か」及びそれ以降の各ひらがなに対応する第2階層のデータテーブルが含まれる。このように構成される検索データは、地図作成業者等によって構成されデータ記録部25に格納される。
(処理)
次に、このように構成されるナビゲーション装置21によって実行されるデータ処理について説明する。この処理は、参照対象となるデータレコードを特定するための特定処理と、データレコードを更新するための更新処理に大別される。
(処理−特定処理)
最初に、特定処理について説明する。図11、12は、特定処理のフローチャートである。以下の説明では、ユーザが検索したい施設の名称のひらがな表記が「いう」で始まる名称である場合を、具体例に交えて説明する。
この処理において、特定部23は、現在参照しているデータテーブル(以下、カレントデータテーブル)の親レコードを取得する(SC1)。最初のカレントデータテーブルは、検索データファイルに格納されている最上位階層のデータテーブルとする。例えば、カレントデータテーブル「root」の親レコード「あ」を取得する。
次いで、特定部23は、カレントデータテーブルの全ての子レコードを取得し、当該子レコードに基づいて選択用画面を生成してディスプレイ4に表示する(SC2)。例えば、カレントデータテーブル「root」の子レコード「あ」と、子レコード「い」、及び子レコード「う」を取得して、これら子レコードから検索用テキストデータである「あ」、「い」、及び「う」をそれぞれ取得し、当該取得した検索用テキストデータ「あ」、「い」、及び「う」をリスト形式で含んだ選択用画面を生成してディスプレイ4に表示する。
次いで、特定部23は、ユーザにより、検索したい施設の名称のひらがな表記のN文字目が選択されたかを判定する(SC3)。ここで、「N」は、SC3が実行された回数に対応する正の整数であり、SC3が最初に実行された場合にはN=1、SC3が2回目に実行された場合にはN=2となる。そして、検索したい施設の名称のひらがな表記のN文字目が選択された場合には(SC3、Yes)、SC4に移行する。例えば、検索したい施設の名称がひらがな表記が「いう」で始まる名称である場合、ユーザは、ディスプレイ4に表示された検索用テキストデータ「い」を、タッチパネル3を介して選択する。この場合には、検索したい施設の名称のひらがな表記のN文字目が選択されたと判定される。
検索したい施設の名称のひらがな表記のN文字目が選択されたと判定した場合(SC3、Yes)、特定部23は、ユーザによって選択された検索用テキストデータに対応する子レコードから、当該子レコードの識別コードを取得する(SC4)。例えば、検索用テキストデータ「い」が選択された場合には、当該検索用テキストデータ「い」に対応する子レコード「い」から、当該子レコード「い」の識別コードを取得する。
次いで、特定部23は、カレントデータテーブルのデータサイズをインデックス用オフセット値に加算する(SC5)。インデックス用オフセット値とは、ユーザが検索したい施設の名称に対応するデータテーブルの位置を特定するための情報であり、具体的には、インデックスデータファイル28に格納されている最上位階層のデータテーブルの先頭位置を基準とする、ユーザが検索したい施設の名称に対応するデータテーブルの先頭位置までの、相対的な位置である。なお、インデックス用オフセット値の初期値は0とする。また、最上位階層のデータテーブルのデータサイズは、最上位階層のデータテーブルの親レコードから取得する。例えば、データテーブル「root」の親レコード「root」に含まれているデータサイズ=600Byteをオフセット値に加算し、オフセット値=0+600=600Byteとする。
次いで、特定部23は、目的の子レコード(つまり、SC3でユーザによって選択された検索用テキストデータに対応する子レコード)に辿り付くまで、SC6〜SC11を繰り返す。具体的には、特定部23は、カレントデータテーブルの子レコードの中から、収納順序の上位順に一つの子レコードを取得し、当該取得した子レコードをカレント子レコードに設定する(SC7)。例えば、最初に、カレントデータテーブル「root」の子レコード「あ」をカレント子レコードに設定する。
そして、当該設定したカレント子レコードが目的の子レコードであるか否かを判定する(SC8)。この判定は、SC4で取得した識別コードが、SC7で取得したカレント子レコードに含まれる識別コードに一致するか否かに基づいて行われる。例えば、SC4で取得した子レコード「い」の識別コードが、SC7で設定したカレント子レコード「あ」の識別コードに一致するか否かを判定する。この例の場合には、一致しないことから、カレント子レコードが目的の子レコードではないと判定する。
カレント子レコードが目的の子レコードではないと判定した場合(SC8、No)、特定部23は、カレント子レコードの配下サイズをインデックス用オフセット値に加算する(SC9)。例えば、SC4で取得した子レコード「い」の識別コードが、SC7で設定したカレント子レコード「あ」の識別コードに一致しないために、目的の子レコードではないと判定した場合には、カレント子レコード「あ」の配下サイズ=0Byteを加算して、オフセット値=600+0=600Byteとする。
また、特定部23は、当該カレント子レコードの実サイズを、実データ取得用オフセット値に加算する(SC10)。ここで「実データ取得用オフセット値」とは、ユーザが検索したい施設の名称のひらがな表記に対応する実データテーブルの位置を特定するための情報であり、具体的には、実データファイル27に格納されている最上位階層の実データテーブルの先頭位置を基準とする、ユーザが検索したい施設の名称のひらがな表記に対応する実データテーブルの先頭位置までの、相対的な位置である。この実データ取得用オフセット値の初期値は0とする。例えば、カレント子レコード「あ」の実サイズ=100KByteを実データ取得用オフセット値に加算し、実データ取得用オフセット値=0+100K=100KByteとする。
一方、カレント子レコードが目的の子レコードであると判定した場合(SC8、Yes)、特定部23は、SC6〜SC11のループを抜けて、その時点におけるオフセット値の位置へ、カレントデータテーブルの位置を移動する(SC12)。例えば、上述のように、カレント子レコード「あ」が目的の子レコードではないと判定した場合、次のループ処理において、SC4で取得した子レコード「い」の識別コードが、カレントデータテーブル「root」の子レコードの中で、収納順序が二番目であるカレント子レコード「い」の識別コードに一致するために、目的の子レコードであると判定した場合には、検索データファイルに格納されている最上位階層のデータテーブルの先頭位置から、その時点におけるインデックス用オフセット値=600Byteの位置を先頭位置とするデータテーブル「い」を、カレントデータテーブルとする。
次いで、SC1に戻り、特定部23は、カレントデータテーブルの親レコードを取得する(SC1)。例えば、カレントデータテーブル「い」の親レコード「い」を取得する。
また、特定部23は、カレントデータテーブルの全ての子レコードを取得し、当該子レコードに基づいて選択用画面を生成してディスプレイ4に表示する(SC2)。例えば、カレントデータテーブル「い」の子レコード「あ」、子レコード「い」、子レコード「う」、子レコード「え」、及び子レコード「お」を取得して、これら子レコードから検索用テキストデータである「あ」、「い」、「う」、「え」、「お」をそれぞれ取得し、当該取得した検索用テキストデータ「あ」、「い」、「う」、「え」、「お」をリスト形式で含んだ選択用画面を生成してディスプレイ4に表示する。
次いで、特定部23は、ユーザにより、検索したい施設の名称のひらがな表記のN文字目が選択されたかを判定する(SC3)。そして、検索したい施設の名称のひらがな表記のN文字目が選択された場合には(SC3、Yes)、SC4に移行する。例えば、検索したい施設の名称がひらがな表記が「いう」で始まる名称である場合、ユーザは、ディスプレイ4に表示された検索用テキストデータ「う」を、タッチパネル3を介して選択する。この場合には、検索したい施設の名称のひらがな表記のN文字目が選択されたと判定される。
検索したい施設の名称のひらがな表記のN文字目が選択されたと判定した場合(SC3、Yes)、特定部23は、ユーザによって選択された検索用テキストデータに対応する子レコードから、当該子レコードの識別コードを取得する(SC4)。例えば、検索用テキストデータ「う」が選択された場合には、当該検索用テキストデータ「う」に対応する子レコード「う」から、当該子レコード「う」の識別コードを取得する。
次いで、特定部23は、カレントデータテーブルのデータサイズをインデックス用オフセット値に加算する(SC5)。2回目及びそれ以降のSC5の処理においては、データサイズは、その時点のカレント子レコードの次段サイズから取得する。例えば、カレントデータテーブル「い」のデータサイズ=650Byteを、その時点のカレント子レコード「い」から取得してインデックス用オフセット値に加算し、インデックス用オフセット値=600+650=1250Byteとする。
その後、特定部23は、目的の子レコード(つまり、SC3でユーザによって選択された検索用テキストデータに対応する子レコード)に辿り付くまで、SC6〜SC11のループ処理を繰り返す。具体的には、特定部23は、カレントデータテーブルの子レコードの中から、収納順序の上位順に一つの子レコードを取得し、当該取得した子レコードをカレント子レコードに設定する(SC7)。例えば、最初に、カレントデータテーブル「い」の子レコード「あ」を取得する。
そして、当該取得したカレント子レコードが目的の子レコードであるか否かを判定する(SC8)。例えば、SC4で取得した子レコード「う」の識別コードが、SC7で設定したカレント子レコード「い」の識別コードに一致するか否かを判定する。この例の場合には、一致しないことから、カレント子レコードが目的の子レコードではないと判定する。
カレント子レコードが目的の子レコードではないと判定した場合(SC8、No)、特定部23は、カレント子レコードの配下サイズをインデックス用オフセット値に加算する(SC9)。例えば、SC4で取得した子レコード「う」の識別コードが、SC7で設定したカレント子レコード「い」の識別コードに一致しないために、目的の子レコードではないと判定した場合には、カレント子レコード「い」の配下サイズ=0Byteを加算して、オフセット値=1250+0=1250Byteとする。
また、特定部23は、当該カレント子レコードの実サイズを、実データ取得用オフセット値に加算する(SC10)。例えば、カレント子レコード「あ」の実サイズ=20KByteを実データ取得用オフセット値に加算し、実データ取得用のオフセット値=100+20K=100KByteとする。
一方、カレント子レコードが目的の子レコードであると判定した場合(SC8、Yes)、特定部23は、SC6〜SC11のループ処理を抜けて、その時点におけるインデックス用オフセット値の位置へ、カレントデータテーブルの位置を移動する(SC12)。例えば、上述のように、カレント子レコード「い」が目的の子レコードではないと判定した場合、次のループ処理において、SC4で取得した子レコード「う」の識別コードが、SC7で設定したカレント子レコード「う」の識別コードに一致するために、目的の子レコードであると判定した場合には、検索データファイルに格納されている最上位階層のデータテーブルの先頭位置から、その時点におけるインデックス用オフセット値=1250Byteの位置を先頭位置とするデータテーブル「う」を、カレントデータテーブルとする。
次いで、特定部23は、カレントデータテーブルの親レコードを取得する(SC1)。例えば、カレントデータテーブル「う」の親レコード「う」を取得する。
次いで、特定部23は、カレントデータテーブルの全ての子レコードを取得し、当該子レコードに基づいて選択用画面を生成してディスプレイ4に表示する(SC2)。例えば、カレントデータテーブル「う」の子レコードを取得して、これら子レコードから検索用テキストデータをそれぞれ取得し、当該取得した検索用テキストデータをリスト形式で含んだ選択用画面を生成してディスプレイ4に表示する。ここで、カレントデータテーブル「う」の子レコードは存在しないために、特定部23は、施設の検索が終了したものと判定する(SC3、No)。
そして、この時点において設定されている実データ取得用オフセット値に基づいて、参照対象のデータテーブルの位置を決定する(SC13)。すなわち、この時点において設定されている実データ取得用オフセット値により、例えば、実データの最初のデータテーブルの先頭位置から参照対象のデータテーブルの先頭位置までの相対的な位置が特定されるので、制御部22は、この参照対象のデータテーブルの親レコードや子レコードを取得して、所定の処理に利用することが可能になる。例えば、実データの最初のデータテーブル「あ」の先頭位置から、実データ取得用オフセット値=150KByteの位置のデータテーブルを取得することで、実データテーブル「いう」を取得することができ、このデータテーブル「いう」の親レコードや子レコードに基づいて「いう」にて始まる名称の施設をディスプレイ4に表示等することができる。これにて特定処理を終了する。
(処理−更新処理)
次に、更新処理について説明する。図13は、更新処理のフローチャートである。以下の説明では、実データテーブル「い」−実データテーブル「い」における子データレコード「いいかわ」の次の位置に子データレコード「いう」を追加する場合を、具体例に交えて説明する。
最初に、更新部24は、更新情報に基づいて実データレコードを更新する(SD1)。すなわち、更新対象となる実データレコードを、更新対象となる実データレコードの位置において、更新の種類に応じて追加、書き換え、又は削除する。
次いで、更新部24は、当該更新された実データレコードに対応するインデックスレコードの実サイズを更新する(SD2)。つまり、実データレコードが追加された場合には、当該実データレコードに対応するインデックスレコードの実サイズに当該更新された実データレコードのデータサイズを加算し、実データレコードが書き換えられた場合には、当該実データレコードの書き換えによるサイズの増減に応じて、当該実データレコードに対応するインデックスレコードの実サイズを増減させ、実データレコードが削除された場合には、当該実データレコードのサイズを当該実データレコードに対応するインデックスレコードの実サイズから減算する。例えば、子データレコード「いう」のサイズ=15KByteであり、インデックスデータテーブル「う」の子レコード「う」の実サイズ=15KByteである場合、当該子レコード「う」の実サイズ=15K+15K=30KByteに更新する。
次いで、更新部24は、当該更新されたインデックスデータレコードが属するデータテーブルと同一系統に属するデータテーブルであって、当該データテーブルより上位階層の全てのデータテーブルの子データレコードの実サイズを更新する(SD3)。例えば、子データレコード「いう」のサイズ=15KByteであり、インデックスデータテーブル「あ」の子レコード「い」の実サイズ=105KByteである場合、当該子レコード「い」の実サイズ=15K+105K=120KByteに更新する。これにて更新処理を終了する。この更新処理の終了後、必要に応じて上記特定処理を行うことで、更新されたデータテーブルの実サイズに基づいて、参照対象のデータテーブルの位置を正しく特定することが可能になる。
(効果)
このように実施の形態2によれば、データ格納手段は、データ処理の対象になる実データと、データ処理の対象になる実データの位置を特定するためのインデックスデータとを格納し、実データファイル27における最初の実データの先頭位置から、参照対象となる実データの先頭位置までの相対的な位置を特定することができるので、データを構成するファイルの数を二つに抑制することができると共に、データの検索を容易に行うことが可能になる。
また、複数の実データレコードの一部の実データレコードが更新された場合、インデックステーブルの実サイズと、上位階層の全てのインデックステーブルの前記実サイズとを更新することで、データの更新が完了するので、データの更新を容易に行うことが可能になる。
〔実施の形態に対する変形例〕
以上、本発明に係る実施の形態について説明したが、本発明の具体的な構成及び手段は、特許請求の範囲に記載した各発明の技術的思想の範囲内において、任意に改変及び改良することができる。以下、このような変形例について説明する。
(解決しようとする課題や発明の効果について)
まず、発明が解決しようとする課題や発明の効果は、上述の内容に限定されるものではなく、発明の実施環境や構成の細部に応じて異なる可能性があり、上述した課題の一部のみを解決したり、上述した効果の一部のみを奏することがある。例えば、データの検索や更新に関する所定の判定を従来より正確にできない場合であっても、データの検索や更新を従来とは異なる技術により達成できている場合には、本願発明の課題が解決されている。
(分散や統合について)
また、上述した各電気的構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散や統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散や統合して構成できる。例えば、データ処理装置の各構成要素を、複数の装置に分散して構成したり、センター装置に組み込んでも良い。
(データの種類や内容について)
上記各実施の形態では、検索データとして、地名や施設名称を検索するデータを例示したが、このデータの種類や内容は任意に変更することができる。また、ナビゲーション装置に関するデータに限定されず、任意の装置における任意の目的のために使用するデータを対象とすることができる。