(57)【要約】【課題】  小型ディスクドライブを用いた能動型データベースに好適なデータ入出力方法、さらにそのデータ入出力方法を用いたデータ入出力装置を提供する【解決手段】  モバイル機器１から通知された検索情報は、小型ディスクドライブ２内のインタフェース３を介して制御部４に送られる。そして、ディスクアクセスを行う前に、インデクス最適化部４１により、インデクス記憶部５１に記憶されたインデクスにおいて、インデクスの最適化、つまり検索対象レコードの物理的な位置の並べ替え（ソート）が行われる。ヘッド制御部４５は、データ読み取り部６２を制御し、最適化されたインデクスが指し示すレコードの物理的な位置に順次アクセスさせ、データ記憶部６３に記憶されているレコードの読み取りを行わせる。【選択図】      図１
2006059502.tif 000002
【特許請求の範囲】
【請求項１】
磁気ディスクからなり、データを記憶するためのデータ記憶手段と、
前記データ記憶手段からデータの読み取りを行うヘッドの位置を監視するヘッド位置監視手段と、
前記データ記憶手段に記憶されたデータのアドレスを指定するインデクスを記憶するインデクス記憶手段を備える半導体記憶装置と、
前記データ記憶手段から読み取り対象とされるデータである対象データを読み取る際、前記ヘッド位置監視手段から得られる前記ヘッドの位置に基づき、前記インデクス記憶手段に記憶された前記対象データのアドレスを指定するインデクスを最適化し、前記インデクス記憶手段に記憶させるインデクス最適化手段と、
前記インデクス記憶手段に記憶されたインデクスに基づいて前記ヘッドを制御し、前記対象データの読み取りを行うデータ読み取り手段と、
を備えることを特徴とするデータ入出力装置。
【請求項２】
前記磁気ディスクの直径が１インチ以下の小型ディスクドライブである請求項１記載のデータ入出力装置。
【請求項３】
前記インデクス最適化手段は、前記ヘッド位置監視手段から得られるヘッドの位置に基づき、データ読み取り時に前記ヘッドのアクセス待ち時間が最も短くなるようにインデクスを最適化することを特徴とする請求項１または２に記載のデータ入出力装置。
【請求項４】
前記データ記憶手段にデータの書き込みを行うデータ書き込み手段をさらに備えることを特徴とする請求項１乃至３のいずれかに記載のデータ入出力装置。
【請求項５】
前記データ書き込み手段は、すべてのログをデータ記憶手段に書き込むことを特徴とする請求項４記載のデータ入出力装置。
【請求項６】
前記データ書き込み手段は、前記データ記憶手段に記憶されているデータの終端アドレスの次のアドレスにデータを書き込むことを特徴とする請求項４または５に記載のデータ入出力装置。
【請求項７】
前記データ書き込み手段により、インデクスを前記データ記憶手段に定期的に記憶させるインデクス再記憶手段をさらに備えることを特徴とする請求項４乃至６のいずれかに記載のデータ入出力装置。
【請求項８】
コマンドと共に受け取った入力データを特定するためのレコードＩＤを、前記コマンドに基づいて発行するレコードＩＤ制御手段をさらに備えることを特徴とする請求項４乃至７のいずれかに記載のデータ入出力装置。
【請求項９】
入力データおよび第１のコマンドに基づいて、前記入力データを特定する新たなレコードＩＤを前記レコードＩＤ制御手段から受け取り、前記レコードＩＤおよび前記入力データを前記データ書き込み手段により前記データ記憶手段に連続データとして書き込む第１の処理手段と、
前記連続データのアドレスを指定するインデクスを作成し、該インデクスを前記インデクス記憶手段に記憶させるインデクス付与手段と、
をさらに備えることを特徴とする請求項８記載のデータ入出力装置。
【請求項１０】
入力データおよび第２のコマンドに基づいて、前記入力データを特定するレコードＩＤを前記レコードＩＤ制御手段から受け取り、前記レコードＩＤおよび前記入力データを前記データ書き込み手段により前記データ記憶手段に連続データとして書き込む第２の処理手段と、
インデクス記憶手段において、前記入力データを特定するレコードＩＤと同じレコードＩＤを有するデータのインデクスを消去し、前記連続データのアドレスを指定するインデクスを作成し、該インデクスを前記インデクス記憶手段に記憶させるインデクス変更手段と、
をさらに備えることを特徴とする請求項８または９に記載のデータ入出力装置。
【請求項１１】
入力データおよび第３のコマンドに基づいて、前記入力データを特定するレコードＩＤを前記レコードＩＤ制御手段から受け取り、前記データ記憶手段に記憶され、前記入力データと同じレコードＩＤを有するデータと前記入力データとを比較し、前記入力データにおいて更新されているデータ部分を求め、前記レコードＩＤおよび前記更新されているデータ部分を前記データ書き込み手段により前記データ記憶手段に連続データとして書き込む第３の処理手段と、
インデクス記憶手段において、前記入力データを特定するレコードＩＤと同じレコードＩＤを有するデータのインデクスに、前記連続データのアドレスをリストとして追加し、前記インデクス記憶手段に記憶させるインデクス追加手段と、
をさらに備えることを特徴とする請求項８または９に記載のデータ入出力装置。
【請求項１２】
少なくとも削除対象のデータを指定する情報を含む削除情報および第４のコマンドに基づいて、前記削除対象のデータを特定するレコードＩＤを前記レコードＩＤ制御手段から受け取り、前記レコードＩＤおよび削除対象のデータであることを示すマークを前記データ書き込み手段により前記データ記憶手段に連続データとして書き込む第４の処理手段と、
インデクス記憶手段において、前記入力データを特定するレコードＩＤと同じレコードＩＤを有するデータのインデクスを消去するインデクス消去手段と、
をさらに備えることを特徴とする請求項８乃至１１のいずれかに記載のデータ入出力装置。
【請求項１３】
少なくとも検索対象のデータを指定する情報を含む検索情報および第５のコマンドに基づいて、前記検索対象のデータを特定するレコードＩＤを前記レコードＩＤ制御手段から受け取り、前記レコードＩＤを有するデータのインデクスを前記インデクス記憶手段において特定し、前記インデクス記憶手段に記憶されたインデクスに基づいて、前記データ読み取り手段により前記データ記憶手段から前記検索対象のデータを読み取る第５の処理手段をさらに備えることを特徴とする請求項８乃至１２のいずれかに記載のデータ入出力装置。
【請求項１４】
前記半導体記憶装置はバッファ手段をさらに備え、
前記データ入出力装置は、入力データを前記バッファ手段に記憶するバッファ書き込み手段と、
前記バッファ手段の記憶領域を監視するバッファ監視手段と、
前記バッファ監視手段により、前記バッファ手段の記憶領域が満たされたことが検出されたとき、前記バッファ手段に記憶されているデータを前記データ書き込み手段により前記データ記憶手段に書き込ませる第１のフラッシュ制御手段とをさらに備えることを特徴とする請求項４乃至１３のいずれかに記載のデータ入出力装置。
【請求項１５】
前記半導体記憶装置はバッファ手段をさらに備え、
前記データ入出力装置は、入力データを前記バッファ手段に記憶するバッファ書き込み手段と、
前記バッファ手段に記憶されているデータの属性を監視するバッファ属性監視手段と、
前記バッファ属性監視手段により、前記入力データにおいて所定の属性が検出されると直ちに、前記バッファ手段に記憶されているデータを前記データ書き込み手段により前記データ記憶手段に書き込ませる第２のフラッシュ制御手段とをさらに備えることを特徴とする請求項４乃至１３のいずれかに記載のデータ入出力装置。
【請求項１６】
前記データ記憶手段である前記磁気ディスクは、前記データ入出力装置に電源が投入されている間は常に回転していることを特徴とする請求項１乃至１５のいずれかに記載のデータ入出力装置。
【請求項１７】
前記データ入出力装置は、モバイル機器に着脱自在であることを特徴とする請求項１乃至１６のいずれかに記載のデータ入出力装置。
【請求項１８】
磁気ディスクからデータの読み取りを行うヘッドの位置を監視するヘッド位置監視工程と、
前記磁気ディスクに記憶されたデータのアドレスを指定するインデクスを半導体記憶装置に記憶させるインデクス記憶工程と、
前記磁気ディスクから読み取り対象とされるデータである対象データを読み取る際、前記ヘッド位置監視工程から得られる前記ヘッドの位置に基づき、前記インデクス記憶工程により前記半導体記憶装置に記憶された前記対象データのアドレスを指定するインデクスを最適化し、前記半導体記憶装置に記憶させるインデクス最適化工程と、
前記半導体記憶装置に記憶されたインデクスに基づいて前記ヘッドを制御し、前記対象データの読み取りを行うデータ読み取り工程と、
を備えることを特徴とするデータ入出力方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、小型ディスクドライブに好適なデータ入出力方法、特に小型ディスクドライブを用いた能動型データベースに好適なデータ入出力方法に関し、さらにそのデータ入出力方法を用いたデータ入出力装置に関するものである。
【背景技術】
【０００２】
近年、小型のノートパソコンやＰＤＡ（Personal Digital Assistant）、携帯電話など（以下、これらをモバイル機器と呼ぶ）の登場により、日常的にモバイル機器を携帯することが可能となってきている。モバイル機器は、小型化、高機能化が進んでおり、将来的にはＧＰＳ（Global Positioning System）やカメラを内蔵したウェアラブルコンピュータとして利用されると予想される。そして、同時にモバイル機器が、利用者のアシスタントとして動作することへの要求が高まりつつあるため、利用者が求めている情報を状況に応じて判断し、モバイル機器が能動的に情報を提示することが望まれる。
【０００３】
モバイル機器が利用者をアシストする場面は、日常生活の場から災害救助現場など幅広く求められており、ネットワークが利用できない環境においてはモバイル機器単体で動作することが求められる。機器単体で動作するためには、必要なデータをすべて蓄えることが可能な大容量ストレージを備えていることが必要であり、低価格の小型ディスクドライブを利用することが適当である。
【０００４】
また、利用者が必要とする情報を能動的に提示するには、あらかじめ登録したルールに基づき動作し、提示する情報のカスタマイズが可能な能動型データベースの利用が有効である（例えば、非特許文献１参照）。
【非特許文献１】Sharma Chakravarthy, Barbara Blaustein, Alejandoro P. Buchmann, Michael Carey, Umeshwar Dayal, David Goldhirsch, Meichun Hsu, Rajiv Jauhari, Rivka Ladin, Miron Livny, and Dennis McCarthy: "HiPAC: A RESEARCH PROJECT IN ACTIVE TIME-CONSTRAINED DATABASE MANAGEMENT", Xerox Advanced Information Technology, XAIT-89-02 (1989.7).
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、能動型データベースは通常のデータベースに比べ、イベント処理、コンディションの評価およびアクションがシステムにより自動的に実行されるため、データの参照、イベントの監視など、ディスクアクセスが頻繁に発生し、処理コストが高くなる。
【０００６】
また一般に、小型ディスクドライブは、現状の構成では、消費電力や耐衝撃性などの問題からディスクの回転速度やヘッドのシークを高速にできないため、ディスクアクセスが低速である。したがって、ヘッドが目的のレコード位置に移動するためのアクセス待ち時間（平均シーク時間＋平均回転待ち時間）は数十ｍｓと、システム側からみると長時間を要している。一方で、年々記憶密度が上がり、同一回転数でもシーケンシャルアクセス速度は改善されてきている。つまり、小型ディスクドライブを効率よく利用するには、いかにヘッドシーク時間を減少させるかが重要な鍵となる。
【０００７】
したがって、小型ディスクドライブを用いた能動型データベースを実現するためには、小型ディスクドライブの特性に見合った、ヘッドシーク時間の短いファイルシステム（データ入出力方法）が必要となる。
【０００８】
本発明は、上記課題に鑑みてなされたものであり、ディスク回転速度が低速な小型ディスクドライブにおいても、ヘッドが目的のレコード位置に移動するためのアクセス待ち時間を短縮することが可能で、能動型データベースに好適なデータ入出力方法、およびそれを用いたデータ入出力装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
請求項１記載の発明は、磁気ディスクからなり、データを記憶するためのデータ記憶手段と、前記データ記憶手段からデータの読み取りを行うヘッドの位置を監視するヘッド位置監視手段と、前記データ記憶手段に記憶されたデータのアドレスを指定するインデクスを記憶するインデクス記憶手段を備える半導体記憶装置と、前記データ記憶手段から読み取り対象とされるデータである対象データを読み取る際、前記ヘッド位置監視手段から得られる前記ヘッドの位置に基づき、前記インデクス記憶手段に記憶された前記対象データのアドレスを指定するインデクスを最適化し、前記インデクス記憶手段に記憶させるインデクス最適化手段と、前記インデクス記憶手段に記憶されたインデクスに基づいて前記ヘッドを制御し、前記対象データの読み取りを行うデータ読み取り手段と、を備えることを特徴とする。
【００１０】
この構成によれば、データ記憶手段としての磁気ディスクにデータを記憶し、そのデータを格納したアドレスを指定するインデクスを、半導体記憶装置に備えられたインデクス記憶手段に記憶する。磁気ディスクから読み取り対象とされるデータである対象データを読み取る際には、ヘッド位置監視手段から得られるヘッドの位置に基づき、インデクス最適化手段は、インデクス記憶手段に記憶された対象データに対応するインデクスを最適化し、インデクス記憶手段に記憶させる。そして、データ読み取り手段により、インデクス記憶手段に記憶されたインデクスに基づいてヘッドが駆動され、対象データが読み取られる。
【００１１】
請求項２記載の発明は、請求項１記載のデータ入出力装置において、前記磁気ディスクの直径が１インチ以下の小型ディスクドライブである。
【００１２】
この構成によれば、直径が１インチ以下の磁気ディスクと半導体記憶装置とを備える小型ディスクドライブをデータ入出力装置として用いる。まず、磁気ディスクにデータを記憶し、そのデータを格納したアドレスを指定するインデクスを半導体記憶装置に記憶する。磁気ディスクから対象データを読み取る際には、ヘッド位置監視手段から得られるヘッドの位置に基づき、半導体記憶装置における対象データに対応するインデクスを最適化し、半導体記憶装置に記憶する。そして、半導体記憶装置に記憶されたインデクスに基づいてヘッドを駆動し、対象データを読み取る。
【００１３】
請求項３記載の発明は、請求項１または２に記載のデータ入出力装置において、前記インデクス最適化手段は、前記ヘッド位置監視手段から得られるヘッドの位置に基づき、データ読み取り時に前記ヘッドのアクセス待ち時間が最も短くなるようにインデクスを最適化することを特徴とする。
【００１４】
この構成によれば、インデクス最適化手段は、ヘッド位置監視手段からヘッドの現在の位置を受け取る。そして、そのヘッド位置からどう移動させたら所定のデータへの移動時間（アクセス待ち時間）が最も短くなるかを計算し、そのようにインデクスを並び替える。
【００１５】
請求項４記載の発明は、請求項１乃至３のいずれかに記載のデータ入出力装置において、前記データ記憶手段にデータの書き込みを行うデータ書き込み手段をさらに備えることを特徴とする。
【００１６】
この構成によれば、データ書き込み手段によりデータ記憶手段にデータの書き込みが行われる。
【００１７】
請求項５記載の発明は、請求項４記載のデータ入出力装置において、前記データ書き込み手段は、すべてのログをデータ記憶手段に書き込むことを特徴とする。
【００１８】
この構成によれば、すべてのログがデータ記憶手段に書き込まれる。
【００１９】
請求項６記載の発明は、請求項４または５に記載のデータ入出力装置において、前記データ書き込み手段は、前記データ記憶手段に記憶されているデータの終端アドレスの次のアドレスにデータを書き込むことを特徴とする。
【００２０】
この構成によれば、データ記憶手段においてすでに記憶されているデータの終端アドレスの次のアドレスに、順次データが追記される。
【００２１】
請求項７記載の発明は、請求項１乃至６のいずれかに記載のデータ入出力装置において、前記データ書き込み手段により、インデクスを前記データ記憶手段に定期的に記憶させるインデクス再記憶手段をさらに備えることを特徴とする。
【００２２】
この構成によれば、インデクス再記憶手段により、定期的にインデクスがデータ記憶手段に記憶される。
【００２３】
請求項８記載の発明は、請求項４乃至７のいずれかに記載のデータ入出力装置において、コマンドと共に受け取った入力データを特定するためのレコードＩＤを、前記コマンドに基づいて発行するレコードＩＤ制御手段をさらに備えることを特徴とする。
【００２４】
この構成によれば、コマンドと入力データを受け取ると、レコードＩＤ制御手段は、入力されたコマンドに応じて入力データを特定するためのレコードＩＤを発行する。
【００２５】
請求項９記載の発明は、請求項８記載のデータ入出力装置において、入力データおよび第１のコマンドに基づいて、前記入力データを特定する新たなレコードＩＤを前記レコードＩＤ制御手段から受け取り、前記レコードＩＤおよび前記入力データを前記データ書き込み手段により前記データ記憶手段に連続データとして書き込む第１の処理手段と、前記連続データのアドレスを指定するインデクスを作成し、該インデクスを前記インデクス記憶手段に記憶させるインデクス付与手段と、をさらに備えることを特徴とする。
【００２６】
この構成によれば、まず、第１の処理手段は、入力データおよび第１のコマンドに基づいて、入力データを特定する新たなレコードＩＤをレコードＩＤ制御手段から受け取る。そして、前記レコードＩＤおよび前記入力データを前記データ書き込み手段により前記データ記憶手段に連続データとして書き込む。続いてインデクス付与手段は、連続データのアドレスを指定するインデクスを作成し、そのインデクスをインデクス記憶手段に記憶する。
【００２７】
請求項１０記載の発明は、請求項８または９に記載のデータ入出力装置において、入力データおよび第２のコマンドに基づいて、前記入力データを特定するレコードＩＤを前記レコードＩＤ制御手段から受け取り、前記レコードＩＤおよび前記入力データを前記データ書き込み手段により前記データ記憶手段に連続データとして書き込む第２の処理手段と、インデクス記憶手段において、前記入力データを特定するレコードＩＤと同じレコードＩＤを有するデータのインデクスを消去し、前記連続データのアドレスを指定するインデクスを作成し、そのインデクスを前記インデクス記憶手段に記憶させるインデクス変更手段と、をさらに備えることを特徴とする。
【００２８】
この構成によれば、まず、第２の処理手段は、入力データおよび第２のコマンドに基づいて、入力データを特定するレコードＩＤをレコードＩＤ制御手段から受け取る。そして、レコードＩＤおよび入力データを前記データ書き込み手段により前記データ記憶手段に連続データとして書き込む。続いてインデクス変更手段は、インデクス記憶手段において、入力データを特定するレコードＩＤと同じレコードＩＤを有するデータのインデクスを消去し、連続データのアドレスを指定するインデクスを作成し、そのインデクスをインデクス記憶手段に記憶する。
【００２９】
請求項１１記載の発明は、請求項８または９に記載のデータ入出力装置において、入力データおよび第３のコマンドに基づいて、前記入力データを特定するレコードＩＤを前記レコードＩＤ制御手段から受け取り、前記データ記憶手段に記憶され、前記入力データと同じレコードＩＤを有するデータと前記入力データとを比較し、前記入力データにおいて更新されているデータ部分を求め、前記レコードＩＤおよび前記更新されているデータ部分を前記データ書き込み手段により前記データ記憶手段に連続データとして書き込む第３の処理手段と、インデクス記憶手段において、前記入力データを特定するレコードＩＤと同じレコードＩＤを有するデータのインデクスに、前記連続データのアドレスをリストとして追加し、前記インデクス記憶手段に記憶させるインデクス追加手段と、をさらに備えることを特徴とする。
【００３０】
この構成によれば、まず、第３の処理手段は、入力データおよび第３のコマンドに基づいて、入力データを特定するレコードＩＤをレコードＩＤ制御手段から受け取る。そして、データ記憶手段にすでに記憶されているデータと同じレコードＩＤを持つ入力データがデータ記憶手段に記憶される際、入力データの内、すでに記憶されているデータから更新されているデータ部分とレコードＩＤをデータ書き込み手段によりデータ記憶手段に連続データとして書き込む。続いて、インデクス記憶手段において、入力データを特定するレコードＩＤと同じレコードＩＤを有するデータのインデクスに、連続データのアドレスをリストとして追加し、インデクス記憶手段に記憶させる。
【００３１】
請求項１２記載の発明は、請求項８乃至１１のいずれかに記載のデータ入出力装置において、少なくとも削除対象のデータを指定する情報を含む削除情報および第４のコマンドに基づいて、前記削除対象のデータを特定するレコードＩＤを前記レコードＩＤ制御手段から受け取り、前記レコードＩＤおよび削除対象のデータであることを示すマークを前記データ書き込み手段により前記データ記憶手段に連続データとして書き込む第４の処理手段と、インデクス記憶手段において、前記入力データを特定するレコードＩＤと同じレコードＩＤを有するデータのインデクスを消去するインデクス消去手段と、をさらに備えることを特徴とする。
【００３２】
この構成によれば、まず、第４の処理手段は、少なくとも削除対象のデータを指定する情報を含む削除情報および第４のコマンドに基づいて、削除対象のデータを特定するレコードＩＤをレコードＩＤ制御手段から受け取る。そして、レコードＩＤおよび削除対象のデータであることを示すマークをデータ書き込み手段により前記データ記憶手段に連続データとして書き込む。続いてインデクス消去手段は、インデクス記憶手段において、入力データを特定するレコードＩＤと同じレコードＩＤを有するデータのインデクスを消去する。
【００３３】
請求項１３記載の発明は、請求項８乃至１２のいずれかに記載のデータ入出力装置において、少なくとも検索対象のデータを指定する情報を含む検索情報および第５のコマンドに基づいて、前記検索対象のデータを特定するレコードＩＤを前記レコードＩＤ制御手段から受け取り、前記レコードＩＤを有するデータのインデクスを前記インデクス記憶手段において特定し、前記インデクス記憶手段に記憶されたインデクスに基づいて、前記データ読み取り手段により前記データ記憶手段から前記検索対象のデータを読み取る第５の処理手段をさらに備えることを特徴とする。
【００３４】
この構成によれば、まず、第５の処理手段は、少なくとも検索対象のデータを指定する情報を含む検索情報および第５のコマンドに基づいて、検索対象のデータを特定するレコードＩＤをレコードＩＤ制御手段から受け取る。続いて、そのレコードＩＤを有するデータのインデクスをインデクス記憶手段において特定する。そして、データ読み取り手段は、インデクス記憶手段に記憶されたインデクスに基づいて、データ記憶手段から検索対象のデータを読み取る。
【００３５】
請求項１４記載の発明は、請求項４乃至１３のいずれかに記載のデータ入出力装置において、前記半導体記憶装置はバッファ手段をさらに備え、前記データ入出力装置は、入力データを前記バッファ手段に記憶するバッファ書き込み手段と、前記バッファ手段の記憶領域を監視するバッファ監視手段と、前記バッファ監視手段により、前記バッファ手段の記憶領域が満たされたことが検出されたとき、前記バッファ手段に記憶されているデータを前記データ書き込み手段により前記データ記憶手段に書き込ませる第１のフラッシュ制御手段とをさらに備えることを特徴とする。
【００３６】
この構成によれば、入力データをデータ記憶手段に直接書き込むのではなく、バッファ書き込み手段により、一旦バッファ手段に記憶する。そして、バッファ監視手段により、バッファ手段の記憶領域が満たされたことが検出されると、第１のフラッシュ制御手段により、バッファ手段に記憶されているすべての入力データがデータ記憶手段に記憶される。
【００３７】
請求項１５記載の発明は、請求項４乃至１３のいずれかに記載のデータ入出力装置において、前記半導体記憶装置はバッファ手段をさらに備え、前記データ入出力装置は、入力データを前記バッファ手段に記憶するバッファ書き込み手段と、前記バッファ手段に記憶されているデータの属性を監視するバッファ属性監視手段と、前記バッファ属性監視手段により、前記入力データにおいて所定の属性が検出されると直ちに、前記バッファ手段に記憶されているデータを前記データ書き込み手段により前記データ記憶手段に書き込ませる第２のフラッシュ制御手段とをさらに備えることを特徴とする。
【００３８】
この構成によれば、入力データをデータ記憶手段に直接書き込むのではなく、バッファ書き込み手段により、一旦バッファ手段に記憶する。そして、バッファ属性監視手段により、所定の属性を有する入力データ、例えば、障害により消失しては問題があるような重要度の高いデータが検出されると直ちに、第２のフラッシュ制御手段により、バッファ手段に記憶されているすべての入力データがデータ記憶手段に記憶される。
【００３９】
請求項１６記載の発明は、請求項１乃至１５のいずれかに記載のデータ入出力装置において、前記データ記憶手段である前記磁気ディスクは、前記データ入出力装置に電源が投入されている間は常に回転していることを特徴とする。
【００４０】
この構成によれば、ディスクアクセスが行われるか否かに関わらず、データ入出力装置に電源が投入されている間は常に磁気ディスクが回転している。
【００４１】
請求項１７記載の発明は、請求項１乃至１６のいずれかに記載のデータ入出力装置において、前記データ入出力装置は、モバイル機器に着脱自在であることを特徴とする。
【００４２】
この構成によれば、本発明に係るデータ入出力装置を備えたモバイル機器を実現し得る。
【００４３】
請求項１８記載の発明は、データ入出力方法において、磁気ディスクからデータの読み取りを行うヘッドの位置を監視するヘッド位置監視工程と、前記磁気ディスクに記憶されたデータのアドレスを指定するインデクスを半導体記憶装置に記憶させるインデクス記憶工程と、前記磁気ディスクから読み取り対象とされるデータである対象データを読み取る際、前記ヘッド位置監視工程から得られる前記ヘッドの位置に基づき、前記インデクス記憶工程により前記半導体記憶装置に記憶された前記対象データのアドレスを指定するインデクスを最適化し、前記半導体記憶装置に記憶させるインデクス最適化工程と、前記半導体記憶装置に記憶されたインデクスに基づいて前記ヘッドを制御し、前記対象データの読み取りを行うデータ読み取り工程と、を備えることを特徴とする。
【００４４】
この構成によれば、磁気ディスクに記憶されたデータのアドレスを指定するインデクスがインデクス記憶工程により半導体記憶装置に記憶される。磁気ディスクから対象データを読み取る際には、ヘッド位置監視工程から得られるヘッドの位置に基づき、インデクス最適化工程により半導体記憶装置における対象データに対応するインデクスを最適化し、半導体記憶装置に記憶させる。そして、データ読み取り工程により、半導体記憶装置に記憶されたインデクスに基づいてヘッドを駆動し、対象データを読み取る。
【発明の効果】
【００４５】
請求項１記載の発明によれば、データを磁気ディスクに記憶し、インデクスをデータとは別に半導体記憶装置に記憶する。半導体記憶装置は、磁気ディスクに比べてアクセス速度が速いため、磁気ディスクから対象データを読み取る際の、対象データに対応するインデクスの最適化処理が高速に行える。その結果、ヘッドが目的のレコード位置に移動するためのアクセス待ち時間を短縮することが可能であり、対象データの読み取り速度が向上する。
【００４６】
請求項２記載の発明によれば、データを直径が１インチ以下の磁気ディスクに記憶し、インデクスをデータとは別に半導体記憶装置に記憶する。半導体記憶装置は、磁気ディスクに比べてアクセス速度が速いため、磁気ディスクから対象データを読み取る際の、対象データに対応するインデクスの最適化処理が高速に行える。その結果、ディスク回転速度が低速な小型ディスクドライブにおいても、ヘッドが目的のレコード位置に移動するためのアクセス待ち時間を短縮することが可能であり、対象データの読み取り速度が向上する。
【００４７】
請求項３記載の発明によれば、ヘッドのアクセス待ち時間が最も短くなるようにインデクスが最適化されているので、シーケンシャルアクセスが可能となり、データ読み取りが高速に行える。
【００４８】
請求項４記載の発明によれば、データ書き込み手段をさらに備えているので、任意の形式での書き込みが可能となる。
【００４９】
請求項５記載の発明によれば、すべてのログが記憶されているので、システムがクラッシュした場合でも、すべてのデータを一貫した状態に回復できる。さらに、データを時系列順に並べることで、テンポラルクエリが実現できる。
【００５０】
請求項６記載の発明によれば、データ記憶手段においてデータを追記する領域が決まっており、格納可能な空き領域を検索する必要がない。そのため、効率よく、かつ高速にデータを追記できる。
【００５１】
請求項７記載の発明によれば、システム障害により、インデクス記憶手段からインデクスが消失しても、インデクスをデータ記憶手段から読み込むことができる。そして、それらのタイムスタンプを調べることで、最新のインデクスを復元できる。
【００５２】
請求項８記載の発明によれば、レコードＩＤ制御手段は、入力されたコマンドに応じて入力データを特定するためのレコードＩＤを発行するので、入力データとそれ以外の記憶されているデータ間の関係が明確になる。
【００５３】
請求項９記載の発明によれば、処理が単純なうえ、インデクスはデータのレコード数以上に増えないため、メモリの節約が行える。また、すべての入力データがデータ記憶手段に記憶されているので、システムがクラッシュした場合でも、すべてのデータを一貫した状態に回復できる。さらに、データを時系列順に並べることで、テンポラルクエリが実現できる。
【００５４】
請求項１０記載の発明によれば、インデクスはデータのレコード数以上に増えないため、メモリの節約が行える。また、実際にデータを更新するのではなく、インデクスを変更することでデータの書き換えを行っているため、処理が単純である。さらに、すべての入力データがデータ記憶手段に記憶されているので、システムがクラッシュした場合でも、すべてのデータを一貫した状態に回復できる。さらに、データを時系列順に並べることで、テンポラルクエリが実現できる。
【００５５】
請求項１１記載の発明によれば、データの変更部分のみがデータ記憶手段に記憶されるため、ディスク領域の節約が可能である。また、すべての入力データがデータ記憶手段に記憶されているので、システムがクラッシュした場合でも、すべてのデータを一貫した状態に回復できる。さらに、データを時系列順に並べることで、テンポラルクエリが実現できる。
【００５６】
請求項１２記載の発明によれば、データをデータ記憶手段から削除することなく、インデクスのみを削除することで、システム側にはデータが削除されたように見せることができる。実際は、すべての入力データがデータ記憶手段に記憶されているので、システムがクラッシュした場合でも、すべてのデータを一貫した状態に回復できる。さらに、データを時系列順に並べることで、テンポラルクエリが実現できる。
【００５７】
請求項１３記載の発明によれば、対象データを検索する速度が向上する。また、請求項９、１０、１２、および１３、または請求項９、１１、１２、および１３との組み合わせの場合には、特にデータの入出力処理をデータ入出力装置上で閉じて処理できるため、接続されるモバイル機器に依存しない高レベルのインタフェースを有するデータ入出力装置を提供できる。
【００５８】
請求項１４記載の発明によれば、データ記憶手段に頻繁にアクセスする必要がなくなり、アクセス時間を短く抑えることができる。
【００５９】
請求項１５記載の発明によれば、データ記憶手段に頻繁にアクセスする必要がなくなり、アクセス時間を短く抑えられることに加え、重要なデータを障害で消失することを防ぐことも可能となる。
【００６０】
請求項１６記載の発明によれば、ディスク停止の状態から起動するまで待つ必要がなく、頻繁に到着するデータを記憶できる。さらに、ディスクの起動や停止に必要な電力がいらなくなるため、消費電力を低く抑えることができる。
【００６１】
請求項１７記載の発明によれば、本発明に係るデータ入出力装置を備えたモバイル機器が実現できる。
【００６２】
請求項１８記載の発明によれば、データを磁気ディスクに記憶し、インデクスをデータとは別に半導体記憶装置に記憶する。半導体記憶装置は、磁気ディスクに比べてアクセス速度が速いため、磁気ディスクから対象データを読み取る際の、対象データに対応するインデクスの最適化処理が高速に行える。その結果、ヘッドが目的のレコード位置に移動するためのアクセス待ち時間を短縮することが可能であり、対象データの読み取り速度が向上する。
【発明を実施するための最良の形態】
【００６３】
以下、本発明に係る実施形態について、図面を参照しながら説明する。
【００６４】
［本実施形態の概略］
本実施形態においては、ウェアラブルコンピュータ向けの高速なデータベースを実現するために、ログファイルシステムを利用し、すべての変更データをログとしてシーケンシャルに追記するファイルシステムを採用する。つまり、ログとは、データベース操作により、データベースに変更が生じた際に記憶する変更データのことである。
【００６５】
本実施形態においては、データ更新はシーケンシャルアクセスで行われるため、ディスクＩ／Ｏの高速化が図られる。しかしながら、データは頻繁に更新されるため、対象となるデータ集合が必ずしも連続して存在しているとは限らず、データの検索がシーケンシャルに行われるとは限らない。本実施形態においては、小型ディスクドライブ内のディスク制御プロセッサと（バッファ）メモリを利用し、データ検索時のディスクアクセスの最適化を小型ディスクドライブ内で処理させることでこの問題を解決する。
【００６６】
本実施形態においては、小型ディスクドライブ内のディスク制御プロセッサをデータベース管理システム（ＤＢＭＳ）の処理を行うプロセッサとしても利用する。そして、メモリ（半導体記憶装置）上にはディスク（磁気ディスク）に格納（記憶）したデータの物理的な格納位置（アドレス）を示すインデクスを展開する。一般にインデクスはディスク上のデータを検索する際、高速に処理を行うために利用する。しかし、インデクスは頻繁に更新されるため、ディスク上にインデクスを作成するとインデクスの読み込み、更新、または変更の際、ディスクアクセスが必要となり、ランダムアクセスが発生し処理速度が低下してしまう。
【００６７】
本実施形態においては、インデクスを小型ディスクドライブ上のメモリに展開することでこの問題に対処し、シーケンシャルアクセスを十分に利用することを可能とする。
【００６８】
実際にウェアラブル機器に小型ディスクドライブを装着して利用する場合を想定する。図１５は、本発明に係るデータ入出力装置と接続された携帯電話機の操作面側を示す外観構成図である。  図１５では、ウェアラブル機器としての携帯電話機のディスク装着部９４に、磁気ディスクの直径が１インチ以下であるマイクロドライブなどの小型ディスクドライブ９５（データ入出力装置）を装着した例を示している。
【００６９】
図１５に示した携帯電話機は、携帯電話本体９０、使用者に通話情報等を知らせる表示部９１、使用者が電話番号の入力やデータベースの動作指示を入力操作するキー入力部９２、送受信のためのアンテナ９３、および携帯電話本体９０内部の各種処理回路（図示せず）により構成される。また、本携帯電話機は、小型ディスクドライブ９５を装着する装着部９４が携帯電話本体９０の側面部に設けられている。このため、使用者が装着部９４に小型ディスクドライブ９５を装着することにより、携帯電話本体９０と小型ディスクドライブ９５との間でデータのやり取りを行わせる使用形態が可能となる。
【００７０】
例えば、使用者がスケジュール機能を利用する場合を考える。使用者のある日の予定は、事前に携帯電話本体９０のキー入力部９２を操作することで小型ディスクドライブ９５に記憶されている。使用者が新しい予定を挿入（追加）する場合には、キー入力部９２を操作することで小型ディスクドライブ９５に新しい予定が記憶される。また、記憶されている予定を更新（変更）する、あるいはすでに存在する予定を削除する、さらには予定を問い合わせる（検索）場合にも同様に、キー入力部９２を操作することで小型ディスクドライブ９５に記憶されているレコードを更新、削除、または検索することが可能である。
【００７１】
ここでレコードとは、属性（フィールド）が集まってできた１件分のデータのことである。例えば、住所録なら氏名、住所、電話番号などの属性が集まって１件のレコードになる。
【００７２】
このように、ウェアラブルコンピュータとしての携帯電話を使用する者が、主体的に情報を取捨選択し、キー入力部９２を操作することで小型ディスクドライブ９５のデータベース機能を利用することができる。また、これは携帯電話に備わったスケジュール機能を利用する場合だけではなく、例えばカメラ付きの携帯電話であれば、撮像された静止画や動画など、携帯電話により獲得されるデータであれば、小型ディスクドライブ９５に記憶することが可能である。
【００７３】
また、携帯電話を使用する者が主体的に情報を取捨選択するだけでなく、携帯電話本体が能動的（自動的）に小型ディスクドライブ９５へデータを出力したり、それとは逆に、小型ディスクドライブ９５からデータを入力したりするように構成することもできる。例えば、ＧＰＳ機能を備えた携帯電話機であれば、定期的に所有者の位置（携帯電話機の位置）を携帯電話本体９０から小型ディスクドライブ９５へ、所有者の操作を必要とすることなく自動的に出力させることなどが考えられる。これにより、その日の行動を時系列順に再現することも可能となる。
【００７４】
また、今後、物体に無線ＩＣタグ（ＲＦＩＤタグ）を備える構成が一般化していくと想定される。例えば、食品を買ってきて冷蔵庫に入れると自動的に識別し、保持している食品のリストを作ったり消費期限を知らせたりするインテリジェント冷蔵庫などのＩＴ家電が構想されている。本発明に係るデータ入出力装置を備えたモバイル機器をウェアラブルコンピュータとして用いれば、それら無線ＩＣタグを備えた物体から送出されたデータを順次記憶し、データベースとして構成することが可能となる。このとき、後述するようにＤＢＭＳを小型ディスクドライブ上で閉じた処理を行わせることが可能であるので、モバイル機器に依存しないＤＢＭＳが実現する。
【００７５】
本発明に係るデータ入出力装置を適用し得るのは携帯電話機に制限されることなく、それ以外のモバイル機器、例えばノートパソコンなどのモバイルコンピュータやＰＤＡでも構わない。また、携帯電話に備わった機能を利用して得たデータだけではなく、有線あるいは無線によりほかのデジタル機器から受け取ったデータを、使用者が主体的に、あるいはモバイル機器が能動的に小型ディスクドライブ９５に記憶させることも可能である。
【００７６】
ここで、一例としてＧＰＳ情報を小型ディスクドライブに記憶させることを考え、必要なメモリ容量を見積もってみる。現在、ＧＰＳにより計測できる精度は水平方向でおよそ１０ｃｍとされている。利用者が外出先でモバイル機器を利用した場合を想定すると、１０ｃｍの精度は必要ではなく、１０ｍ程度で問題ないと考えられる。したがって、歩行時で約１０秒に一度のデータの追加が行われることになる。
【００７７】
また、外出時に利用するデータテーブルは、例えば、位置情報テーブル、店舗情報テーブル、利用者の動作を記憶するプロファイルテーブルなどが挙げられる。上記３テーブルに１０秒おきにデータの追加が行われると仮定すると、２４時間で約２６，０００レコードが蓄えられる。このレコードに対するインデクスサイズは１０５ＫＢとなり、小型ディスクドライブ内のメモリに収めることが可能である。また、自宅から持ち出す初期レコードは、利用者の個人データであると考えられるため、全レコード数が著しく増加することは考えにくい。
【００７８】
さらに、本発明に係るデータ入出力装置を備えたモバイル機器内のデータテーブルに、数日間に渡るデータを追加し使用し続ける必要はなく、その日１日のデータを他の機器、例えばＰＣ（パーソナルコンピュータ）に出力するような使い方も可能である。このような使い方として、モバイル機器の充電時に、その日のデータを自動的にＰＣに出力するような構成が例示される。そして、例えば、ＰＣにデータを出力した後、ユーザが指定したデータ以外は消去するような構成であれば、必要なメモリ量が増大することが抑えられ、全インデクスをメモリ上に構築することが可能となる。
【００７９】
図１は、本発明に係るデータ入出力装置の一実施形態における機能ブロック図である。モバイル機器１は小型ディスクドライブ２と接続され、これらの間で各種データのやり取りが行われる。本実施形態においては、小型ディスクドライブ２がデータ入出力装置に相当する。
【００８０】
モバイル機器１は、ＰＤＡや携帯電話、さらに小型のノートパソコンのような小型コンピュータなどである。
【００８１】
小型ディスクドライブ２は、例えば、日立ＧＳＴ（ＨＧＳＴ）製のマイクロドライブであり、モバイル機器１との通信のためのインタフェース３、小型ディスクドライブ２内の各種制御や計算処理などを行う制御部４、半導体メモリからなるメモリ５、データを記憶するためのディスク部６、およびＤＢＭＳ機能を実行するためのコード（プログラム）を記憶するコード記憶部７を備える。
【００８２】
インタフェース３は、モバイル機器１との通信を行うためのものであるが、後述するように本発明に係る実施形態によれば、モバイル機器１に依存しない、統一的な機能を持たせることが可能である。
【００８３】
制御部４は、例えばＣＰＵ（中央処理装置）を備える構成であり、ディスク制御およびデータベース管理システム（ＤＢＭＳ）の機能を有する機能部である。制御部４は、インデクス最適化部４１（インデクス最適化手段）、ヘッド位置監視部４２（ヘッド位置監視手段）、レコードＩＤ制御部４３（レコードＩＤ制御手段）、記憶データ生成部４４、ヘッド制御部４５、終端アドレス記憶部４６、データベース処理部４７、インデクス再記憶部４８（インデクス再記憶手段）、インデクス消去部４９、インデクス追加部（図略）、インデクス付与部８１（インデクス付与手段）および差分データ算出部８２を備える構成である。
【００８４】
ヘッド位置監視部４２は、データ記憶部６３（データ記憶手段）にデータを書き込む書き込みヘッド、およびデータ記憶部６３からデータを読み取る読み取りヘッドが、データ記憶部６３において、現在どのアドレスに位置しているかを監視する機能部である。
【００８５】
インデクス最適化部４１は、データ記憶部６３からデータを読み取る際、ヘッド位置監視部４２から得られるヘッドの位置に基づき、インデクス記憶部５１（インデクス記憶手段）においてデータに対応するインデクスを最適化し、インデクス記憶部５１に記憶する機能部である。
【００８６】
ここでインデクスの最適化とは、例えば、インデクスに含まれるポインタ、つまりインデクスが指し示すレコードの物理的な位置（アドレス）を、所定の処理が最適に行えるように並べ替えることである。
【００８７】
レコードＩＤ制御部４３は、受け取ったコマンドにより、データベースに要求された処理を判断し、それに応じてレコードＩＤ（ＲＩＤ）を発行する機能部である。例えば、データベースに要求された処理がレコード挿入である場合には新しいＲＩＤを発行し、要求された処理がレコード更新、削除および検索である場合には、インデクス記憶部５１から対応するＲＩＤを取得する機能部である。また、ＲＩＤとは、データを特定する符号である。
【００８８】
記憶データ生成部４４は、ＲＩＤ、新規レコードおよびそのレコード長を一つの連続レコードとしてまとめ、データ記憶部６３に記憶する形式に整える機能部である。また、記憶データ生成部４４は、レコード更新の際には、レコードの変更・修正などの更新処理も行う。
【００８９】
ヘッド制御部４５は、ヘッド位置監視部４２から通知されたヘッド位置情報、終端アドレス記憶部４６から通知された記憶部６３に記憶されているレコードの終端アドレス情報、またはインデクス記憶部５１に記憶されたインデクス情報に基づき、データ書き込み部６１（データ書き込み手段）またはデータ読み取り部６２（データ読み取り手段）を制御し、データ記憶部６３へのアクセスを行わせる機能部である。
【００９０】
終端アドレス記憶部４６は、データ記憶部６３に記憶されているレコードの終端アドレスを記憶する機能部である。
【００９１】
データベース処理部４７は、モバイル機器１の入力部（例えば、携帯電話であれば図１５におけるキー入力部９２など）を介して小型ディスクドライブ２に要求された処理内容を判別し、制御部４内の所定の機能部に通知する機能部である。例えば、データベース処理言語としてＳＱＬ（Structured Query Language）を用いる場合であれば、レコードの挿入、更新、削除、あるいは検索は、それぞれＩＮＳＥＲＴ、ＵＰＤＡＴＥ、ＤＥＬＥＴＥ、ＳＥＬＥＣＴというコマンドで制御されるが、データベース処理部４７はこれらのコマンドの識別を行う機能部である。
【００９２】
また、データベース処理部４７は、モバイル機器から受け取った新規データおよび挿入コマンドに基づいて、新たなレコードＩＤをレコードＩＤ制御部４３から受け取り、そのレコードＩＤおよび新規データをデータ記憶部６３に記憶させる挿入処理を行う。
【００９３】
さらに、データベース処理部４７は、モバイル機器から受け取った更新データおよび更新コマンドに基づいて、データ記憶部６３に記憶されたデータの内、更新データに対応するレコードＩＤをレコードＩＤ制御部４３から受け取り、そのレコードＩＤおよび更新データをデータ記憶部６３に記憶させる更新処理を行う機能部である。
【００９４】
さらに、データベース処理部４７は、モバイル機器から受け取った、少なくとも削除対象のレコードを指定する情報を含む削除情報および削除コマンドに基づいて、データ記憶部６３に記憶されたデータの内、削除対象のレコードに対応するレコードＩＤをレコードＩＤ制御部４３から受け取り、少なくともそのレコードＩＤをデータ記憶部６３に記憶させる削除処理を行う機能部である。
【００９５】
さらに、データベース処理部４７は、モバイル機器から受け取った、少なくとも検索対象のレコードを指定する情報を含む検索情報および検索コマンドに基づいて、データ記憶部６３に記憶されたデータの内、検索対象のレコードに対応するレコードＩＤをレコードＩＤ制御部４２から受け取り、そのレコードＩＤを有するデータをデータ記憶部６３から読み取らせる検索処理を行う機能部である。
【００９６】
本実施形態においては、データモデルの中から一例としてリレーショナル型を取り上げて説明するが、本発明がこれに限られる訳ではない。
【００９７】
インデクス再記憶部４８は、所定の時間が経過するごとに、インデクス記憶部５１に記憶されているインデクスをデータ記憶部６３に記憶させる機能部である。
【００９８】
インデクス消去部４９は、データ記憶部６３にすでに記憶されているデータと同じレコードＩＤを持つ入力（更新）データがデータ記憶部６３に記憶される際、インデクス記憶部５１において記憶されているデータのインデクスを消去し、新しいレコードＩＤを持つ入力データのインデクスをインデクス記憶部５１に記憶する機能部である。
【００９９】
インデクス追加部（図略）は、データ記憶部６３にすでに記憶されているデータと同じレコードＩＤを持つ入力データがデータ記憶部６３に記憶される際、入力データにおいて、記憶されているデータから更新されているデータ部分のみをデータ記憶部６３に記憶し、新しいレコードＩＤを持つ入力データのインデクスをインデクス記憶部５１にさらに追加して記憶する機能部である。
【０１００】
インデクス付与部８１は、データ記憶部６３において格納されたアドレスの先頭を示すインデクスを張り、そのインデクスをメモリ５内のインデクス記憶部５１に記憶する機能部である。
【０１０１】
差分データ算出部８２は、データ記憶部６３に記憶されているデータと入力データとを比較し、入力データにおいて更新されているデータ部分（更新属性値）を求める機能部である。
【０１０２】
また、インデクス消去部４９およびインデクス付与部８１は、インデクス変更手段としての機能を有する。また、インデクス追加部（図略）およびインデクス付与部８１は、インデクス追加手段としての機能を有する。さらに、インデクス消去部４９は、インデクス消去手段としての機能を有する。
【０１０３】
メモリ（半導体記憶装置）５は、インデクス記憶部５１およびバッファ部５２（バッファ手段）を備える構成である。インデクス記憶部５１は、データ記憶部６３に格納されたデータのアドレスを指定するインデクスを記憶する機能部である。バッファ部５２は、インデクス以外のデータを一時記憶するための機能部である。
【０１０４】
ディスク部６は、データ書き込み部６１、データ読み取り部６２およびデータ記憶部（磁気ディスク）６３を備える構成である。データ書き込み部６１は、書き込みヘッドを用いてデータ記憶部６３にデータの書き込みを行う機能部である。このデータ書き込み部６１は、すべてのログをデータ記憶部６３に書き込む機能を有する。また、データ読み取り部６２は、読み取りヘッドを用いてデータ記憶部６３からデータの読み取りを行う機能部である。以下、簡単のために、書き込みヘッドおよび読み取りヘッドをともに、ヘッドと呼ぶことにする。
【０１０５】
そして、データ記憶部６３は、データを記憶する機能部であり、例えば、磁性体を塗布したアルミニウムやガラスのディスクを一定の間隔で何枚も重ね合わせた構造になっている。また、本実施形態に係るデータ入出力装置は、携帯電話機などのモバイル機器に着脱自在であることを想定しているため、磁気ディスクであるデータ記憶部６３の直径は１インチ以下であることが好ましい。
【０１０６】
コード記憶部７は、例えばフラッシュメモリなどから構成され、ＤＢＭＳ機能を実行するためのコードを記憶する機能部である。
【０１０７】
従来の小型ディスクドライブ２では、ＤＢＭＳの機能は主にモバイル機器１が担っており、小型ディスクドライブ２内の制御部（ＣＰＵ）４は、主にディスク制御を行っていた。その小型ディスクドライブ２に、本発明に係るデータ入出力方法を用い、制御部４にＤＢＭＳの機能を持たせることにより、小型ディスクドライブ２上で閉じた処理を行わせることが可能となる。
【０１０８】
これは、例えば、モバイル機器の電源が入れられたとき、コード記憶部７に記憶されたコードが制御部４のデータベース処理部４７にロードされることにより実現される。これにより、ＤＢＭＳ機能をモバイル機器１に持たせる必要がなくなり、その結果、モバイル機器１のＯＳ（オペレーティングシステム）に依存しないＤＢＭＳが実現する。
【０１０９】
したがって、モバイル機器１から小型ディスクドライブ２への動作指示は抽象度の高いもので良くなる。そのため、本発明に係る後述の実施形態によれば、高レベルのインタフェースを提供でき、さらに、小型ディスクドライブ２の高いポータビリティーが実現される。これにより、例えば、小型ディスクドライブ２を用い、Ｗｉｎｄｏｗｓ（登録商標）マシンで作成したデータベースを、特別の処理を施すことなく別のＵＮＩＸ（登録商標）マシンで利用することなどが可能となる。
【０１１０】
また、ＤＢＭＳを実行するためのコードが、フラッシュメモリなどから構成されるコード記憶部７ではなく、データ記憶部６３などに記憶されて、小型ディスクドライブ２内に配置される構成であってもよい。
【０１１１】
データ格納方式として以下に２種類の例を示すが、これらはインデクスの作成方法がそれぞれ異なる方式である。インデクスはディスクに格納されたレコード位置をキーとしている。
【０１１２】
１つ目のデータ格納方式は、データ更新時、レコード全体を複製し、追記する方式で、インデクスの指し示すアドレス（ポインタ）は追記されたレコードの先頭アドレスである。これを複製方式と呼ぶ。この複製方式では、データ記憶部６３に記憶されているデータと同じレコードＩＤを持つ入力データがデータ書き込み部６１によりデータ記憶部６３に書き込まれる際、インデクス記憶部５１において記憶されているデータのアドレスを指定するインデクスを消去し、入力データのアドレスを指定するインデクスをインデクス記憶部５１に記憶する。
【０１１３】
２つ目のデータ格納方式は、データ更新時に更新された属性情報のみを追記する方式で、もともとのレコードへのポインタは保持したまま、更新された属性へのポインタを新たに作成し、元レコードへのポインタにリストとして追加する。元データへのポインタと更新データの格納先へのポインタによりレコードの作成が可能である。これを差分方式と呼ぶ。この差分方式では、データ記憶部６３に記憶されているデータと同じレコードＩＤを持つ入力データにおいて、記憶されているデータから更新されているデータ部分のみがデータ書き込み部６１によりデータ記憶部６３に書き込まれる際、入力データのアドレスを指定するインデクスをインデクス記憶部５１にさらに追加して記憶する。
【０１１４】
以下、モバイル機器の一例として、本発明に係る小型ディスクドライブ（データ入出力装置）を備えた携帯電話機を考える。そして、その携帯電話機を携帯している利用者を甲と呼ぶことにする。甲が、定められたスケジュールに新しい予定を追加したり、予定を変更したりする度に、その内容がデータおよび付加情報として携帯電話機から小型ディスクドライブに出力されるとする。また、携帯電話機はＧＰＳ機能も備えており、上記のデータと共に位置情報データなどを、小型ディスクドライブに追加する機能を備えるものとして説明を行う。
【０１１５】
［第１の実施形態］
まず、第１の実施形態として、前述の複製方式について説明する。本方式は、データの変更が発生した場合、変更の対象となるレコード全体を複製し、変更データ（入力データ）を反映させた後、ディスクに追記する方式である。
【０１１６】
図２は、本発明に係るデータ入出力装置の一実施形態である複製方式のデータ格納とインデクスの対応を示す模式図である。（Ａ）はレコードの挿入や更新が行われる前の初期状態、（Ｂ）はレコード挿入時、（Ｃ）はレコード更新時、そして（Ｄ）はレコード削除時のインデクスとデータ記憶部６３に記憶されたレコードとの対応を、それぞれ示している。
【０１１７】
また、図３は、本発明に係るデータ入出力装置の一実施形態である複製方式の処理の流れを示すフローチャートである。
【０１１８】
［初期状態］
まず、（Ａ）の初期状態について説明する。この日、甲は、例えば、自宅で８時にデータＡを、１０時にデータＢを作成し、それぞれ小型ディスクドライブ２に記憶させたとする。そのため、ディスク部６のデータ記憶部６３には、レコードＩＤ（ＲＩＤ）−００１として、甲が８時に作成したデータＡがそのデータだけでなく、時刻・位置情報と共に記憶されている。同様に、ＲＩＤ−００２として、甲が１０時に作成したデータＢがそのデータだけでなく、時刻・位置情報と共に記憶されている。また、データ以外の細かな情報は、付加情報として記憶されている。
【０１１９】
そして、ＲＩＤ−００１および００２のレコードが記憶されているアドレスの先頭を示すインデクスが、メモリ５内のインデクス記憶部５１に記憶されている。これを、図２（Ａ）の最上段のインデクスからＲＩＤ−００１へ、上から２段目のインデクスからＲＩＤ−００２への矢印で示す。また、ＲＩＤ−００２のデータの終端アドレスは、終端アドレス記憶部４６に記憶されている。
【０１２０】
［レコード挿入］
まず、この（Ａ）の初期状態に、レコードが挿入（追加）される場合（（Ｂ））について説明する（第１の処理）。甲は自宅から移動し、１１時に難波にいたとする。そして、難波で１１時にデータＣを作成し、それを小型ディスクドライブ２に新規レコード（入力データ）として挿入させるとする（Ｓ１０）。携帯電話機のアプリケーションソフトは、甲の操作に応じたＳＱＬコマンドを発行するので、今の場合、その新規レコードは、挿入処理に対応する［ＩＮＳＥＲＴ］というコマンド（第１のコマンド）と共に、小型ディスクドライブ２内のインタフェース３を介して制御部４に送られる。
【０１２１】
制御部４は、コマンドおよび新規レコードを受け取ると、データベース処理部４７においてデータベース処理の内容を判別する。今の場合は、［ＩＮＳＥＲＴ］というコマンドを受け、レコードの挿入をすることが判断される（Ｓ１１およびＳ１２）。そして、新規レコードであるため、レコードＩＤ制御部４３において新しいＲＩＤが発行される（Ｓ１３１）。今の場合は、データ記憶部６３にＲＩＤ−００２まで記憶されているので、新しく発行されるＲＩＤは００３である。このＲＩＤ、新規レコードおよびそのレコード長は、記憶データ生成部４４において、一つの新規な連続レコードとしてまとめられる（Ｓ１３２）。
【０１２２】
続いて、ヘッド位置監視部４２は、現在のヘッド位置をヘッド制御部４５に通知する。また、終端アドレス記憶部４６は、データ記憶部６３に記憶されているレコードの終端アドレスをヘッド制御部４５に通知する。ヘッド制御部４５は、ヘッド位置監視部４２および終端アドレス記憶部４６から通知されたこれらの情報に基づき、ヘッドをデータ記憶部６３に記憶されている全レコードの終端アドレス、言い換えると、ＲＩＤ−００２のレコードの終端アドレスの次のアドレスに移動させる。
【０１２３】
そして、記憶データ生成部４４において生成された新規な連続レコード、すなわちＲＩＤ−００３のレコードがディスク部６に送られ、データ書き込み部６１によりデータ記憶部６３に書き込まれる（Ｓ１３３）。このとき、ヘッドは、記憶されている全レコードの終端アドレスの次のアドレスに位置しているため、新規な連続レコードは、データ記憶部６３において前のレコードに追記される。
【０１２４】
新規レコード格納後、インデクス付与部８１により、データ記憶部６３において格納されたアドレスの先頭を示すインデクスが張られ、そのインデクスはメモリ５内のインデクス記憶部５１に記憶される（Ｓ１３４）。そして、ＲＩＤ−００３のデータの終端アドレスが、終端アドレス記憶部４６に記憶される。これにより、新規レコードの挿入が完了する（Ｓ１３５）。
【０１２５】
従来のＤＢＭＳでは、新規レコードを挿入する際、格納可能な空き領域を検索するためランダムアクセスが発生し、格納に時間を要していた。本実施形態によれば、レコードを格納する追記場所があらかじめ決まっているため、ランダムアクセスは発生しない。そのため、効率よくデータを追記することが可能となる。
【０１２６】
［レコード更新］
続いて、このレコード挿入（（Ｂ））後の状態で、レコードが更新される場合（（Ｃ））について説明する（第２の処理）。甲は１３時にデータＡ（ＲＩＤ−００１）を書き換え、付加情報をＡ−１からＡ−２に更新させるとする（Ｓ１０）。モバイル機器１は、書き換えられたデータＡおよび位置情報などを含むレコード（入力データ）を小型ディスクドライブ２に出力する。そのレコード（更新レコード）は、更新処理に対応する［ＵＰＤＡＴＥ］というコマンド（第２のコマンド）と共に、小型ディスクドライブ２内のインタフェース３を介して制御部４に送られる。
【０１２７】
制御部４は、コマンドおよび更新レコードを受け取ると、データベース処理部４７においてデータベース処理の内容を判別する。今の場合は、［ＵＰＤＡＴＥ］というコマンドを受け、レコードの更新をすることが判断される（Ｓ１１およびＳ１２）。
【０１２８】
レコードＩＤ制御部４３は、要求された処理がレコード更新であることを受け、インデクス記憶部５１に記憶されているインデクスを利用して更新されるデータを特定し、そのＲＩＤ（今の場合はＲＩＤ−００１）を取得する（Ｓ１４１）。このＲＩＤ、更新レコードおよびそのレコード長は、記憶データ生成部４４において、一つの変更された連続レコードとしてまとめられる（Ｓ１４２）。
【０１２９】
続いて、前述のレコード挿入時と同様にして、ヘッド制御部４５は、ヘッドをデータ記憶部６３に記憶されている全レコードの終端アドレス、言い換えると、ＲＩＤ−００３のレコードの終端アドレスの次のアドレスに移動させる。
【０１３０】
そして、記憶データ生成部４４において生成された更新後の連続レコード、すなわちＲＩＤ−００１がディスク部６に送られ、データ書き込み部６１によりデータ記憶部６３に書き込まれる（Ｓ１４３）。このとき、ヘッドは、記憶されている全レコードの終端アドレスの次のアドレスに位置しているため、更新後の連続レコードは、データ記憶部６３において前のレコードに追記される。
【０１３１】
更新レコード格納後、インデクス付与部８１により、データ記憶部６３において格納されたアドレスの先頭を示すインデクスが張られ、そのインデクスはメモリ５内のインデクス記憶部５１に記憶される。このとき、インデクス消去部４９により、インデクス記憶部５１にすでに記憶されているＲＩＤ−００１（付加情報Ａ−１）に対するインデクスは消去され、更新後のＲＩＤ−００１（付加情報Ａ−２）に対するインデクスのみが記憶される（Ｓ１４４）。
【０１３２】
さらに、更新前レコードは消去されることなく、データ記憶部６３に記憶されたままである。また、ＲＩＤ−００１（付加情報Ａ−２）のデータの終端アドレスは、終端アドレス記憶部４６に記憶される。これにより、レコードの更新処理が完了する（Ｓ１４５）。
【０１３３】
［レコード削除］
次に、このレコード更新（（Ｃ））後の状態で、レコードが削除される場合（（Ｄ））について説明する（第４の処理）。甲がデータ記憶部６３に記憶されたデータＢ（ＲＩＤ−００２）の情報を削除するために、モバイル機器１に対して所定の操作を行う（Ｓ１０）。モバイル機器１は、少なくとも削除対象のレコードを指定する情報を含む削除情報（入力データ）を小型ディスクドライブ２に出力する。その削除情報は、削除処理に対応する［ＤＥＬＥＴＥ］というコマンド（第４のコマンド）と共に、小型ディスクドライブ２内のインタフェース３を介して制御部４に送られる。
【０１３４】
制御部４は、削除情報を受け取ると、データベース処理部４７においてデータベース処理の内容を判別する。今の場合は、［ＤＥＬＥＴＥ］というコマンドを受け、レコードの削除をすることが判断される（Ｓ１１およびＳ１２）。
【０１３５】
レコードＩＤ制御部４３は、要求された処理がレコード削除であることを受け、インデクス記憶部５１から削除するレコードのＲＩＤ（今の場合はＲＩＤ−００２）を取得する（Ｓ１５１）。このＲＩＤおよび削除対象のデータであることを示すマーク（例えば、［ＤＥＬＥＴＥ］）は、記憶データ生成部４４において、一つの連続レコードとしてまとめられる（Ｓ１５２）。
【０１３６】
続いて、前述のレコード挿入時およびレコード更新時と同様にして、ヘッド制御部４５は、ヘッドをデータ記憶部６３に記憶されている全レコードの終端アドレス、言い換えると、ＲＩＤ−００１のレコードの終端アドレスの次のアドレスに移動させる。
【０１３７】
そして、記憶データ生成部４４において生成された連続レコード、すなわちＲＩＤ−００２がディスク部６に送られ、データ書き込み部６１によりデータ記憶部６３に書き込まれる（Ｓ１５３）。このとき、ヘッドは、記憶されているレコードの終端アドレスの次のアドレスに位置しているため、連続レコードは、データ記憶部６３において前のレコードに追記される。
【０１３８】
連続レコード格納後、インデクス消去部４９により、削除するレコードのＲＩＤに対応するインデクスのみが消去される（Ｓ１５４）。このとき、削除対象のレコード、すなわち、ＲＩＤ−００２のレコードは実際に消去されることなく、データ記憶部６３に記憶されたままである。これにより、レコードの削除処理が完了する（Ｓ１５５）。
【０１３９】
従来のＤＢＭＳは、削除の実行時、実際にデータ記憶部６３上からレコードを削除するが、本実施形態においては削除処理もレコードの追記として取り扱う。つまり、本実施形態においては、実際にレコードをディスク上から削除することはなく、削除情報のみをディスクに追記する。レコード検索時には、インデクスを利用してレコード位置を求めるため、インデクスを削除することでシステム側からはレコードが削除されたように見える。
【０１４０】
［レコード検索］
最後に、このレコード更新（（Ｃ））後の状態で、レコードが検索される場合について説明する（第５の処理）。甲がデータ記憶部６３に記憶されたデータＡ（ＲＩＤ−００１）の情報を検索するために、モバイル機器１に対して所定の操作を行う（Ｓ１０）。モバイル機器１は、少なくとも検索対象のレコードを指定する情報を含む検索情報（入力データ）を小型ディスクドライブ２に出力する。その検索情報は、検索処理に対応する［ＳＥＬＥＣＴ］というコマンド（第５のコマンド）と共に、小型ディスクドライブ２内のインタフェース３を介して制御部４に送られる。
【０１４１】
制御部４は、検索情報を受け取ると、データベース処理部４７においてデータベース処理の内容を判別する。今の場合は、［ＳＥＬＥＣＴ］というコマンドを受け、レコードの検索をすることが判断される（Ｓ１１）。
【０１４２】
そして、ディスクアクセスを行う前に、インデクス最適化部４１は、インデクス記憶部５１に記憶されたインデクスにおいて、インデクスの最適化、つまり検索対象レコードの物理的な位置の並べ替え（ソート）を行う（Ｓ１６１）。このとき、インデクス最適化部４１は、ヘッド位置監視部４２から得られるヘッドの位置に基づき、例えばアクセス待ち時間（ヘッドが現在の位置からディスクアクセスを開始するまでに要する時間）が最短になるようにインデクス記憶部５１においてインデクスを最適化する。つまり、本実施形態におけるインデクスの最適化とは、例えばアクセス待ち時間が最短になるように、インデクスが指し示すレコードの物理的な位置（アドレス）、つまりポインタを並べ替えることである。そして、最適化されたインデクスは、インデクス記憶部５１に記憶される。
【０１４３】
このポインタの並び替えによるインデクス最適化を、図４を用いて説明する。図４は、本発明に係るデータ入出力装置の一実施形態である複製方式の検索処理の動作説明図である。図４（ａ）はインデクス最適化前であり、図４（ｂ）はインデクス最適化後の状態を表している。
【０１４４】
ディスク領域には、ＲＩＤによって指定されたレコードが記憶されている。この例では、ＲＩＤ−００１、００２、１０２、１０１および１０３のみを示している。そして、メモリ領域には、各ＲＩＤに対応するインデクスが記憶されている。
【０１４５】
幾度かのレコード更新や挿入により、ディスク領域に記憶されているＲＩＤに対応するインデクスは図４（ａ）に示したようになっているとする。つまり、例えば、１番目のインデクスのポインタは、ディスクにおけるＲＩＤ−１０１の先頭アドレスを示す３０００番地であり、２番目のインデクスのポインタは、ＲＩＤ−００２の先頭アドレスを示す２８００番地である。このように、レコード更新や挿入が幾度か行われると、メモリ領域に記憶されたインデクスのポインタ順と、ディスク領域に記憶されたレコードの順とが複雑に絡み合ってしまう。
【０１４６】
したがって、この図４（ａ）に示した状態のままで読み取りを行うと、インデクスのポインタが３０００、２８００、３３００・・・と不規則に並んでいるために、ディスクアクセスの際、ヘッドのランダムアクセスが発生し、読み取り速度が低下してしまう。本発明においては、インデクスのポインタ並び替えを行い、シーケンシャルアクセスを行わせる。
【０１４７】
今は、ヘッドが１８００番地よりも先頭に近いアドレスに位置していると仮定する。そのため、インデクス最適化部４１はインデクス記憶部５１において、図４（ａ）のインデクスのポインタを図４（ｂ）に示したように、ディスク上の番地の小さいものから大きいものへと並び替える。このとき、インデクスに記載されている番地とＲＩＤの対応はそのままである。つまり、図４（ａ）と図４（ｂ）における矢印の始点に対する終点のＲＩＤは同じである。この図４（ｂ）に示した状態で読み取りを行うと、ランダムアクセスは発生せず、シーケンシャルアクセスが行われる。これにより、ディスクからのデータ読み取りが高速に行える。
【０１４８】
本実施形態においては、インデクスのポインタをディスク上の番地の小さいものから大きいものへと並び替えるとして説明したが、本発明はそれに限られることなく、読み取りを始める時点でのヘッド位置を基準として、例えば、アクセス待ち時間が最も短くなるようにインデクスを最適化することも可能である。
【０１４９】
また、例えば、重要度の高いデータの書き込みと、重要度の低いデータの検索とが同時に処理される場合、書き込み処理を優先的に行い、その後で検索処理を行うようにインデクスを最適化することも可能である。さらに、例えば、重要度の高い順に処理を行うことを基本にしながらも、ヘッドの移動途中にある重要度の低いデータを読み取り、アクセス時間の短縮も実現するように、重要度順と最短アクセス順とを組み合わせるようにすることも可能である。
【０１５０】
このインデクス最適化後、続いて、ヘッド位置監視部４２は、現在のヘッド位置をヘッド制御部４５に通知する。また、最適化されたインデクスが、インデクス記憶部５１からヘッド制御部４５に出力される。ヘッド制御部４５は、ヘッド位置監視部４２およびインデクス記憶部５１から通知されたこれらの情報に基づき、データ読み取り部６２を制御し、最適化されたインデクスが指し示すレコードの物理的な位置にアクセスさせ、データ記憶部６３に記憶されているレコードの読み取りを行わせる（Ｓ１６２）。この読み取りはデータ読み取りが終了するまで続けられ（Ｓ１６３）、データ読み取りが終了した時点でレコードの検索処理が完了する（Ｓ１６４）。
【０１５１】
また、この複製方式では、処理が単純なうえ、インデクスはレコード数以上に増えないため、メモリの節約が行える。
【０１５２】
［第２の実施形態］
続いて、第２の実施形態として、前述の差分方式について説明する。本方式は、データの変更が発生した場合、変更の対象となるレコードの差分のみを追記する方式である。
【０１５３】
図５は、本発明に係るデータ入出力装置の一実施形態である差分方式のデータ格納とインデクスの対応を示す模式図である。（Ａ）はレコードの挿入や更新が行われる前の初期状態、（Ｂ）はレコード挿入時、（Ｃ）はレコード更新時、そして（Ｄ）はレコード削除時のインデクスとデータ記憶部６３に記憶されたレコードとの対応を、それぞれ示している。
【０１５４】
また、図６は、本発明に係るデータ入出力装置の一実施形態である複製方式の処理の流れを示すフローチャートである。
【０１５５】
この図５に示した差分方式において、（Ａ）初期状態、（Ｂ）レコード挿入（Ｓ１３１〜Ｓ１３５）および（Ｄ）レコード削除（Ｓ１５１〜Ｓ１５５）は、図２に示した複製方式と同じであるため説明を省略し、（Ｃ）レコード更新と検索処理についてのみ説明を行う。
【０１５６】
［レコード更新］
まず、レコード挿入（（Ｂ））後の状態で、レコードが更新される場合（（Ｃ））について説明する（第３の処理）。甲は１３時にデータＡ（ＲＩＤ−００１）を書き換え、付加情報をＡ−１からＡ−２に更新させるとする（Ｓ２０）。モバイル機器１は、書き換えられたデータＡおよび位置情報などを含むレコード（入力データ）を小型ディスクドライブ２に出力する。そのレコード（更新レコード）は、更新処理に対応する［ＵＰＤＡＴＥ］というコマンド（第３のコマンド）と共に、小型ディスクドライブ２内のインタフェース３を介して制御部４に送られる。
【０１５７】
制御部４は、コマンドおよび更新レコードを受け取ると、データベース処理部４７においてデータベース処理の内容を判別する。今の場合は、［ＵＰＤＡＴＥ］というコマンドを受け、レコードの更新をすることが判断される（Ｓ２１およびＳ２２）。
【０１５８】
レコードＩＤ制御部４３は、要求された処理がレコード更新であることを受け、インデクス記憶部５１から更新するレコードのＲＩＤ（今の場合はＲＩＤ−００１）を取得する（Ｓ２４１）。そして、差分データ算出部８２は、データ記憶部６３に記憶されているＲＩＤ−００１のデータと入力データとを比較し、入力データにおいて更新されているデータ部分（更新属性値）を求める。このＲＩＤ、更新属性値は、記憶データ生成部４４において、一つの変更された連続レコードとしてまとめられる（Ｓ２４２）。つまり、この差分方式においては、変更されていない属性（データＡ）は、データ記憶部６３に記憶されるレコードには含められない。
【０１５９】
続いて、前述のレコード挿入時と同様にして、ヘッド制御部４５は、ヘッドをデータ記憶部６３に記憶されている全レコードの終端アドレス、言い換えると、ＲＩＤ−００３のレコードの次のアドレスに移動させる。
【０１６０】
そして、記憶データ生成部４４において生成された更新後の連続レコード、すなわちＲＩＤ−００１のレコードがディスク部６に送られ、データ書き込み部６１によりデータ記憶部６３に書き込まれる（Ｓ２４３）。このとき、ヘッドは、記憶されている全レコードの終端アドレスの次のアドレスに位置しているため、更新後の連続レコードは、データ記憶部６３において前のレコードに追記される。
【０１６１】
更新レコード格納後、インデクス付与部８１により、データ記憶部６３において格納されたアドレスの先頭を示すインデクスが張られ、そのインデクスはメモリ５内のインデクス記憶部５１に記憶される。このとき、制御部４内のインデクス追加部（図略）により、インデクス記憶部５１にすでに記憶されているＲＩＤ−００１（付加情報Ａ−１）に対するインデクスのポインタはそのままで、更新後のＲＩＤ−００１（付加情報Ａ−２）に対するインデクスのポインタが、リストとしてさらに付け加えられて記憶される（Ｓ２４４）。つまり、本実施形態においては、インデクス記憶部５１においてインデクスに付加されたリストをたどることで、更新属性値の格納位置を知ることができる。また、ＲＩＤ−００１（付加情報Ａ−２）のデータの終端アドレスは、終端アドレス記憶部４６に記憶される。これにより、レコードの更新処理が完了する（Ｓ２４５）。
【０１６２】
前述のインデクス消去部４９は、第１の実施形態である複製方式に必要な機能を有する機能部であったが、インデクス追加部を、このインデクス消去部４９の代わりに用いることにより、本実施形態に係る差分方式を実行することができる。
【０１６３】
このように、差分方式では、変更（更新）データのみがディスクに追記されるため、使用するディスク容量が少なくて済む。
【０１６４】
［レコード検索］
次に、このレコード更新（（Ｃ））後の状態で、レコードが検索される場合について説明する（第５の処理）。甲がデータ記憶部６３に記憶されたデータＡ（ＲＩＤ−００１）の情報を検索するために、モバイル機器１に対して所定の操作を行う。モバイル機器１は、少なくとも検索対象のレコードを指定する情報を含む検索情報（入力データ）を小型ディスクドライブ２に出力する。その検索情報は、検索処理に対応する［ＳＥＬＥＣＴ］というコマンド（第５のコマンド）と共に、小型ディスクドライブ２内のインタフェース３を介して制御部４に送られる。
【０１６５】
制御部４は、検索情報を受け取ると、データベース処理部４７においてデータベース処理の内容を判別する。今の場合は、［ＳＥＬＥＣＴ］というコマンドを受け、レコードの検索をすることが判断される（Ｓ２１）。
【０１６６】
そして、ディスクアクセスを行う前に、インデクス最適化部４１は、インデクス記憶部５１に記憶されたインデクスにおいて、インデクスの最適化、つまり検索対象レコードの物理的な位置の並べ替え（ソート）を行う（Ｓ２６１）。このとき、インデクス最適化部４１は、ヘッド位置監視部４２から得られるヘッドの位置に基づき、例えばアクセス待ち時間が最短になるようにインデクス記憶部５１においてインデクスを最適化する。そして、最適化されたインデクスは、インデクス記憶部５１に記憶される。
【０１６７】
ただし、この差分方式（本実施形態）においては、前述の複製方式（第１の実施形態）とは異なり、更新された属性のみが追記され、インデクスにはその更新属性値の物理的な位置を示すリストが付加されている。したがって、インデクスにおいて、検索対象レコードの物理的な位置の並べ替えを行う際には、このリストに付加された分も検索対象レコードに含め、インデクスの最適化を行う必要がある。
【０１６８】
続いて、ヘッド位置監視部４２は、現在のヘッド位置をヘッド制御部４５に通知する。また、最適化されたインデクスが、インデクス記憶部５１からヘッド制御部４５に出力される。ヘッド制御部４５は、ヘッド位置監視部４２およびインデクス記憶部５１から通知されたこれらの情報に基づき、データ読み取り部６２を制御し、最適化されたインデクスが指し示すレコードの物理的な位置に順次アクセスさせ、データ記憶部６３に記憶されているレコードの読み取りを行わせる（Ｓ２６２）。この読み取りはデータ読み取りが終了するまで続けられ（Ｓ２６３）、データ読み取りが終了した時点でレコードの検索処理が完了する（Ｓ２６４）。
【０１６９】
差分方式では、ディスクに記憶するデータは更新された属性値のみなので、ディスク領域の節約が可能である。
【０１７０】
以上説明した第１および第２いずれの実施形態においても、インデクスを用いて検索対象レコードの物理的な位置順に並べ替え（ソート）を行っている。インデクスはメモリ５上に記憶されているため、この並べ替えはディスクへのアクセス時間に比べて短時間で行える。さらに、この並べ替えによりランダムアクセスをシーケンシャルアクセスに変換することができるため、レコード間隔が広くない場合には高速な検索が行える。
【０１７１】
以上説明したように、本発明に係る上記実施形態によれば、ディスク回転速度が低速な小型ディスクドライブにおいても、ヘッドが目的のレコード位置に移動するためのアクセス待ち時間を短縮することが可能で、能動型データベースに好適なデータ入出力方法、およびそれを用いたデータ入出力装置を提供できる。
【０１７２】
［他の好ましい実施形態］
（１）サイズの小さいデータを頻繁にデータ記憶部６３（磁気ディスク）に書き込む場合、ディスクアクセスのオーバヘッドが高くなるため、シーケンシャルアクセスの利点が十分に得られない可能性がある。このため、メモリ５上にバッファ部５２（ログバッファ）を設け、バッファ書き込み部８３（バッファ書き込み手段）により、入力データを一旦このバッファ部５２に記憶させる。その後、まとめてデータ記憶部６３に書き込むグループコミットの手法を採用し、効率的なデータ処理を実現することが望ましい。
【０１７３】
ウェアラブル機器で扱うデータには、位置情報など、たとえデータが消失しても、前後のレコードから推測が可能なデータがある。これらのデータは重要度が低いため、データの消失が発生しても問題がない。一方、例えば、所持金情報など重要度の高いデータをメモリ５上に蓄えると、障害によりデータが消失する危険性があるので、データ記憶部６３に強制的にフラッシュする。このようにデータにプライオリティー（重要度）を持たせることで、ディスクフラッシュの制御を行うことが可能である。
【０１７４】
図７は、本発明に係るデータ入出力装置の一実施形態におけるグループコミットを説明するための模式図である。グループコミットを実現するための１つの形態は、図７に「データ記録１」として示したものである。この形態では、バッファ書き込み部８３により入力データがバッファ部５２に書き込まれるとき、バッファ監視部８４（バッファ監視手段）がバッファ部５２の記憶領域を監視している。そして、バッファ監視部８４によりバッファ部５２の記憶領域が満たされたことが検出されると、フラッシュ制御部８６（第１のフラッシュ制御手段）がデータ書き込み部６１を制御し、バッファ部５２に記憶されているデータをデータ記憶部６３に書き込ませる。
【０１７５】
また、グループコミットを実現するための別の形態は、図７に「データ記録２」として示したものである。この形態では、バッファ書き込み部８３により入力データがバッファ部５２に書き込まれるとき、バッファ属性監視部８５（バッファ属性監視手段）が入力データの属性を監視している。そして、バッファ属性監視部８５により、入力データのプライオリティーが高いこと（所定の属性）が検出されると、フラッシュ制御部８６（第２のフラッシュ制御手段）がデータ書き込み部６１を制御し、バッファ部５２に記憶されているデータを直ちにデータ記憶部６３に書き込ませる。
【０１７６】
このプライオリティーは、例えば、モバイル機器１を介して小型ディスクドライブ２にデータを記憶させる際、所定のボタンを押下げることなどにより実現させることができる。つまり、所定のボタンを押下げることなどにより、プライオリティーをデータの属性という形で与えるように構成すればよい。
【０１７７】
（２）本発明の上記実施形態においては、個人で利用するシステムを想定しているため、全体レコード数は少ない。そのため、例えば小型ディスクドライブのメモリ上にインデクスを展開することができ、検索性能を高めることが可能である。しかし、メモリ上のデータは、電源障害時や、プロセスの異常終了時に消失する可能性がある。本発明の別の実施形態においては、定期的にインデクスを小型ディスクドライブ上に記憶する。
【０１７８】
これは、例えば、所定の時間が経過すると、インデクス再起億部４８がインデクス記憶部５１からインデクス一式を読み取り、それらをデータ書き込み部６１を介し、タイムスタンプを付してデータ記憶部６３に記憶させることで実現される。
【０１７９】
システム障害時には、まず、記憶されているすべてのインデクスをデータ読み取り部６２を介してデータ記憶部６３から読み込む。そして、読み込んだインデクスのタイムスタンプを調べ、最新のインデクスのまとまりを特定する。続いて、その最新のインデクスが記憶された後のログデータをデータ記憶部６３上から読み込むことで、データを復元する。これにより、耐障害性について解決することができる。
【０１８０】
（３）本発明の上記実施形態においては、過去から現在までの情報を検索するテンポラルクエリの実行を想定しているため、データの削除を行わず、変更データはすべてディスクに記憶されているデータの次のアドレスに追記される。そのため、未使用空間が分散的に発生することはなく、ディスクを効率的に使用できる。
【０１８１】
（４）本発明の上記実施形態においては、リレーショナル型のデータモデルを取り上げて説明したが、本発明はこれに限られることなく、カード型やオブジェクト型など、それ以外のデータモデルにも適用できる。
【実施例１】
【０１８２】
本実施例においては、小型ディスクドライブを接続されたＰＣ（パーソナルコンピュータ）を用い、Ｌｉｎｕｘ上でシステム構築、およびテストを行った。なお、Ｌｉｎｕｘとして、ｇｅｎｔｏｏ 1. 4. 1（Kernel Version 2.6）、ＰＣとしてＩＢＭ  ＴｈｉｎｋＰａｄ （ＣＰＵ：Ｐｅｎｔｉｕｍ（登録商標）３、Ｍｅｍｏｒｙ：３８４ＭＢ）、小型ディスクドライブ２としてＨＧＳＴ製のマイクロドライブＤＳＣＭ−１１０００を使用した。このマイクロドライブの性能を表１に示す。
【０１８３】
【表１】
2006059502.tif 000003
【０１８４】
本実施例におけるＤＢＭＳの処理は、ＰＣ内部のＣＰＵ（制御部４）およびメモリ５を使用して処理を行い、データは小型ディスクドライブ２に格納した。
【０１８５】
本発明に係る追記型ファイルシステムを構築するため、Ｃ言語の低水準入出力を利用してディスクにアクセスを行う。低水準入出力では、ディスクをシーケンシャルにアクセスすることが可能であり、ＯＳがあらかじめ備えるバッファリング機能を利用せず、直接ディスクとデータ転送を行うことが可能となる。一方、高水準入出力を利用すると、ＯＳのバッファリング機能を利用し、ディスクの読み込み場所からバッファ容量に余裕がある限りデータ蓄積を行う。これにより、バッファ内のレコードを利用する際、ディスクアアクセスが必要なく高速に処理を行うことができる利点があるが、バッファに蓄えるためのデータを読み込むため、ヘッドがバッファ容量分だけ移動する。問い合わせに不要な領域が１１５ＫＢを境にシーケンシャルアクセスとランダムアクセスを使い分けるが、ヘッドがバッファ容量分移動しているため、最適なディスクアクセスを行うことができない。
【０１８６】
本実施例においては、ディスクを直接制御しているため、ヘッドは最終アクセスを行ったディスクトラック上にあり、レコード追記場所へのアクセスを平均待ち時間（８．３３ｍｓ）で行うことが可能となる。
【０１８７】
本実施例においては、ウイスコンシンベンチマークで利用されるレコードセットを用いてディスクアクセス性能について検証する。ウイスコンシンベンチマークは、２０８バイトのデータを１レコードとしてデータの読み書きを行うテスト方式である。１レコードは、整数型変数（４バイト）１３個と５２文字からなる文字型配列（５２バイト）３個から構成されている。レコードサイズが２０８バイトの場合、ＨＧＳＴ製マイクロドライブでは、アクセス待ち時間（２０．３３ｍｓ：平均シーク時間１２ｍｓ＋平均待ち時間８．３３ｍｓ）内にシーケンシャルアクセスでは、約４５０〜７００レコードの読み込みあるいは書き込み処理を実行することが可能である。
【０１８８】
図８は、本発明に係るデータ入出力装置の一実施例において、１０ＭＢ単位のデータのディスク読み書き時間を表す図であり、実線は書き込み（ｗｒｉｔｅ）、一点鎖線は読み込み（ｒｅａｄ）、そして、太い実線でそれらの４区間（レコード数）平均を示す。この図からわかるように、書き込み（ｗｒｉｔｅ）と読み込み（ｒｅａｄ）双方でほぼ同様な結果が得られている。
【０１８９】
データ処理初期段階では、小型ディスク内のバッファが利用されるため、高速に処理が行われている。また、ディスク容量が１ＧＢのため、１０８レコード（１０ＭＢ×１０８〜１ＧＢ）で処理が終了している。ディスク内バッファを利用しない状態で、平均して約５秒で１０ＭＢのデータを読み書きしているため、読み書き速度は約２．０ＭＢ／ｓｅｃとなる。これを表１に示した連続読み書き速度（２．５−４．１ＭＢ／ｓｅｃ）と比較すると、５０％〜８０％の性能が出ていることがわかる。２．０ＭＢ／ｓｅｃでの記憶が行えると、映像などの蓄積を行うモバイル機器で、ＭＰＥＧ４の規格である３８４ｋｂｐｓのビットレートで記憶を行うことが可能である。また、映像を記憶させながら、問い合わせを行うことも可能であると考えられる。
【０１９０】
次に、ランダムアクセスとシーケンシャルアクセスで書き込んだ場合の処理時間についての比較を行う。図９（ａ）はランダムアクセス、図９（ｂ）はシーケンシャルアクセスにおけるデータの格納状態を示す模式図である。
【０１９１】
図９（ａ）に示すように、ランダムアクセスの場合、ポインタから次レコード位置を特定し、ヘッドを移動させ次レコードの読み込みを行う。すなわち、レコードを読み込むたびにヘッドの移動が起こる。ランダムアクセスでは、レコードＩＤ、データ、次レコードへのポインタを１レコードとして取り扱う。
【０１９２】
それに対して図９（ｂ）に示すように、シーケンシャルアクセスの場合、データは連続的に書かれているため、ヘッドの移動が起こらず、連続的にデータを読み込んでいく。シーケンシャルアクセスでは、レコードＩＤ、データを１レコードとして取り扱う。
【０１９３】
本実施例においては、ランダムアクセスにおけるデータアクセス速度が、シーケンシャルアクセスに比べ著しく劣るため、両者の処理速度の差分からアクセス待ち時間を求めることができる。
【０１９４】
図１０は、２０８バイト（１レコード）のレコード処理による、ランダムアクセスおよびシーケンシャルアクセスでのレコード数とアクセス（応答）時間（アクセス待ち時間＋ディスクアクセス）との関係を示すグラフである。この図からわかるように、シーケンシャルアクセスはランダムアクセスに比べアクセス時間が非常に速い。しかしながらこの図から、シーケンシャルアクセスとランダムアクセスにおけるアクセス時間の比較を行うことはできない。
【０１９５】
そのため、図１１に、シーケンシャルアクセスを１０，０００レコード分行ったときの、レコード数とアクセス（応答）時間との関係を示す。図１０からわかるように、ランダムアクセスでは１秒間に約５５レコードの処理を行っている。つまり、ランダムアクセスで１００レコードを書き込むのに要する時間は、１，９９８．４ｍｓとなる。一方、図１１からわかるように、シーケンシャルアクセスでは１秒間に約９，０００レコードの処理を行っている。つまり、シーケンシャルアクセスで１００レコードを書き込むのに要する時間は１４．４１ｍｓとなる。これから求められたアクセス待ち時間（１００レコードを書き込むのに要する時間の差分をレコード数１００で割った値）は１９．８４ｍｓであり、表１から求められたアクセス待ち時間（２０．３３ｍｓ：理論値）と比較して妥当な値である。また、この結果から、アクセス待ち時間がディスクアクセスに比べ多大な時間を要していることがわかる。
【０１９６】
続いて、ページ単位とレコード単位でのディスクアクセスの処理時間の比較を行う。任意のサイズの単一データを示すレコードに対して、ページとは特定サイズのデータ集合であり、一般に数レコードのデータが含まれる。
【０１９７】
頻繁にディスクアクセスを繰り返すと、ディスクアクセスのオーバヘッドが生じる。このため、ページ単位アクセスを利用し、一括してデータを書き込むことで、ディスクアクセス頻度を減らすことができ、効率よくデータ処理を行うことが可能となる。なお、ページ単位のサイズは、９レコードを一括して書き込む２ＫＢ、１９レコードを一括して書き込む４ＫＢ、３９レコードを一括して書き込む８ＫＢのページサイズでアクセス速度を比較する。
【０１９８】
図１２は、４ＫＢをページサイズとした場合の、バッファを利用したディスクアクセスと、バッファを利用しないディスクアクセスとにおけるレコード数とアクセス（応答）時間との関係を示すグラフである。４，０００レコードを書き込む際、ページ単位アクセスでは６８．９ｍｓ、レコード単位アクセスでは２２７．７ｍｓの時間を要している。この結果から、バッファを用いる方がディスクアクセスのオーバヘッドを大幅に抑えることが可能となることがわかる。
【０１９９】
次に、図１３は、バッファ容量を２ＫＢ、４ＫＢ、８ＫＢに変化させた場合の、レコード数とアクセス（応答）時間との関係を示すグラフである。２ＫＢのバッファを用いた場合、ディスクアクセスのオーバヘッドが発生していると思われる結果が得られた。バッファ容量を４ＫＢと８ＫＢに換えた場合、この両者の間ではアクセス時間に違いは見られない。したがって、メモリ上に蓄えるデータ量が少ない４ＫＢのバッファを用いる方が適当である。
【０２００】
以上より、４ＫＢのページ単位のシーケンシャルアクセスが最も効率のよい処理方法であることがわかる。
【０２０１】
本実施例においては、インデクスはディスクに格納されたレコード位置をキーとして張られているため、レコード位置をあらかじめ特定することができる。そして、各レコードの格納場所をアドレス順にソートすることでディスクアクセスを行う。このため、ヘッドの移動を最小限に抑えて検索を行うことが可能である。また、読み込みレコード間隔はインデクスをもとに求めることができるため、レコードの間隔が広く、シーケンシャルアクセスによる読み飛ばしに要する時間がランダムアクセスによるヘッド移動時間を上回る場合には、ランダムアクセスを採用する。表１から求めた理論上のアクセス待ち時間は２０．３３ｍｓであるが、前述したように本実施例におけるアクセス待ち時間は１９．８４ｍｓということがわかっている。１９．８４ｍｓ内にシーケンシャルアクセスにより読み取ることのできるデータ量は約１１２ＫＢで、２０８バイトのレコードでは約６００レコードに相当する。すなわち、読み飛ばし領域が１１２ＫＢ以上の場合、シーケンシャルアクセスよりもランダムアクセスを利用する方がアクセス時間を短縮できるため、有効である。
【０２０２】
十分な数のレコードを用意し、３００回の検索処理におけるアクセス時間の測定を行った。第ｎ回目の施行ではｎ個のレコードを検索する。このとき、各レコードの間隔は、｛１、３、５、・・・、２ｎ＋１｝を重複なくランダムに選択するように人工的に与えた。つまり、ｎが小さいときは、検索されるレコードが密に存在する。そのため、シーケンシャルアクセスによる読み飛ばしが利用される。一方、ｎが大きいときは、レコード間隔が密な部分ではシーケンシャルアクセスが選択されるが、疎な部分ではランダムアクセスが選択されるように構成した。
【０２０３】
具体的には、前述したディスクの特性を考慮し、レコード間隔が約１１２ＫＢ、すなわち２０８バイトのレコードで約２８ページ以上あればランダムアクセスに切り替わるように設定した。
【０２０４】
図１４は、アクセス方法を変化させた場合のレコード数とアクセス（応答）時間との関係を示すグラフである。横軸は検索するレコード数ｎを、縦軸はその検索に要するアクセス時間を示している。この図において、実線が本実施例による結果である。また、比較のため、すべてシーケンシャルアクセスの場合（粗点線）、およびすべてランダムアクセスの場合（細点線）の結果も示してある。
【０２０５】
図１４からわかるように、検索レコード数ｎが小さいとき、すなわちレコード間隔が密のときはシーケンシャルアクセスが選択されている。検索レコード数ｎが増加するに従い、レコード間隔が疎である部分が増加し、シーケンシャルな読み飛ばしによるアクセス時間が二次関数的に増加する。そして、レコード間隔が１１２ＫＢを超えるとシーケンシャルアクセスに比べランダムアクセスによりヘッドを移動させた方が目的レコードに到達する時間が早くなる。その分岐点よりさらに検索レコード数が増加した場合、ランダムアクセスを利用する方がより高速である。この図１４から明らかなように、本実施例によりディスクアクセスが最適化されていることがわかる。
【０２０６】
以上説明したように、ランダムアクセスとシーケンシャルアクセスとを使い分けることで、常に高速なディスクアクセスを実現することが可能となる。本実施例は、読み飛ばし領域の広い検索処理が発生する機会が少ないと考えられる、個人利用のシステムにおいて特に有効である。
【０２０７】
また、モバイル機器で小型ディスクドライブを利用するにあたっては、消費電力の問題を考慮する必要がある。ディスクドライブが主に電力を消費するのは、ヘッドの移動時やディスクの起動時である。本実施例においては、ヘッドの動きをスケジュールし、ディスクに対して可能な限りシーケンシャルにアクセスするため、データアクセスを高速化すると共に、ヘッドの移動を最小限に抑えることが実現されている。
【０２０８】
また、通常、小型ディスクドライブは、ディスクアクセスが行われないとき、ディスクの回転を停止する。しかしながら、モバイル機器に小型ディスクドライブを装着した場合、数秒おきにＧＰＳデータなどが追加されるため、ディスクの停止と起動を繰り返すことはディスクにトルクを与えることになる。その結果、余計な電力を消費することになる。したがって、頻繁に到着するデータを記憶できるようにディスクは、小型ディスクドライブの電源が投入されている間は常に回転しており、停止や起動が起こらない構成とすることが望ましい。これにより、消費電力を低く抑えることが可能となる。さらに、ディスク停止の状態から起動するまで待つ必要がなく、頻繁に到着するデータを記憶できる。
【図面の簡単な説明】
【０２０９】
【図１】本発明に係るデータ入出力装置の一実施形態における機能ブロック図である。
【図２】本発明に係るデータ入出力装置の一実施形態である複製方式のデータ格納とインデクスの対応を示す模式図である。
【図３】本発明に係るデータ入出力装置の一実施形態である複製方式の処理の流れを示すフローチャートである。
【図４】本発明に係るデータ入出力装置の一実施形態である複製方式の検索処理の動作説明図である。（ａ）はインデクス最適化前であり、（ｂ）はインデクス最適化後である。
【図５】本発明に係るデータ入出力装置の一実施形態である差分方式のデータ格納とインデクスの対応を示す模式図である。
【図６】本発明に係るデータ入出力装置の一実施形態である差分方式の処理の流れを示すフローチャートである。
【図７】本発明に係るデータ入出力装置の一実施形態におけるグループコミットを説明するための模式図である。
【図８】本発明に係るデータ入出力装置の一実施例において、１０ＭＢ単位のデータのディスク読み書き時間を表す図である。
【図９】（ａ）はランダムアクセス、（ｂ）はシーケンシャルアクセスにおけるデータの格納状態を示す模式図である。
【図１０】本発明に係るデータ入出力装置の一実施例において、１レコード処理による、ランダムアクセスおよびシーケンシャルアクセスでのレコード数とアクセス時間との関係を示すグラフである。
【図１１】本発明に係るデータ入出力装置の一実施例において、１レコード処理によるシーケンシャルアクセスでのレコード数とアクセス時間との関係を示すグラフである。
【図１２】本発明に係るデータ入出力装置の一実施例において、バッファがある場合とない場合におけるシーケンシャルアクセスでのレコード数とアクセス時間との関係を示すグラフである。
【図１３】本発明に係るデータ入出力装置の一実施例において、バッファ容量を変化させた場合のシーケンシャルアクセスでのレコード数とアクセス時間との関係を示すグラフである。
【図１４】本発明に係るデータ入出力装置の一実施例において、アクセス方法を変化させた場合のレコード数とアクセス時間との関係を示すグラフである。
【図１５】本発明に係るデータ入出力装置と接続された携帯電話機の操作面側を示す外観構成図である。
【符号の説明】
【０２１０】
１    モバイル機器
２    小型ディスクドライブ
３    インタフェース
４    制御部
５    メモリ
６    ディスク部
４１    インデクス最適化部
４２    ヘッド位置監視部
４３    レコードＩＤ発行部
４４    記憶データ生成部
４５    ヘッド制御部
４６    終端アドレス記憶部
４７    データベース処理部
４８    インデクス再記憶部
４９    インデクス消去部
８１    インデクス付与部
８２    差分データ算出部
５１    インデクス記憶部
５２    バッファ部
６１    データ書き込み部
６２    データ読み取り部
６３    データ記憶部
【図１】
2006059502.tif 000004
【図２】
2006059502.tif 000005
【図３】
2006059502.tif 000006
【図４】
2006059502.tif 000007
【図５】
2006059502.tif 000008
【図６】
2006059502.tif 000009
【図７】
2006059502.tif 000010
【図８】
2006059502.tif 000011
【図９】
2006059502.tif 000012
【図１０】
2006059502.tif 000013
【図１１】
2006059502.tif 000014
【図１２】
2006059502.tif 000015
【図１３】
2006059502.tif 000016
【図１４】
2006059502.tif 000017
【図１５】
2006059502.tif 000018