(57)【要約】【課題】  記憶するファイル数が増加しても、発見が容易となるようファイルを組織化する。【解決手段】  記憶装置においてデータを受け取り、受け取られたデータを第１のデータオブジェクトに変換して、複数レベルのデータオブジェクトを含む階層データ構造に第１のデータオブジェクトを格納して、記憶装置におけるデータを組織化する方法。また、複数レベルのデータオブジェクトを含む階層データ構造１１６を格納する記憶部１１０と、データを受け取るモジュールと、受け取られたデータを第１のデータオブジェクトに変換し第１のデータオブジェクトを階層データ構造に格納するコントローラ１０８とを備えてなるシステム。【選択図】  図１
2005158072.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置においてデータを受け取るステップと、
前記受け取られたデータを第１のデータオブジェクトに変換するステップと、
複数レベルのデータオブジェクトを含む階層データ構造に前記第１のデータオブジェクトを格納するステップと
を含んでなる、記憶装置におけるデータ組織化方法。
【請求項２】
前記受け取られたデータは、前記受け取られたデータを記述する情報に関連付けされており、
前記階層データ構造は、複数レベルの相互接続されたノードを含み、
各ノードはそれぞれのデータオブジェクトを表し、
前記第１のデータオブジェクトを前記階層データ構造に格納するステップは、前記受け取られたデータを記述する前記情報に基づいて前記第１のデータオブジェクトを前記ノードのうちの１つとして格納するステップを含む、請求項１に記載のデータ組織化方法。
【請求項３】
前記データを受け取るステップは、前記受け取られたデータを記述する前記情報を含むヘッダ部を有するファイルを受け取るステップを含む、請求項２に記載のデータ組織化方法。
【請求項４】
前記受け取られたデータは、前記受け取られたデータを記述する情報に関連付けされており、
前記階層データ構造の異なる部分はデータの異なるカテゴリーを表しており、
前記第１のデータオブジェクトを格納するステップは、前記受け取られたデータを記述する前記情報に基づいて前記異なる部分のうちの１つに前記第１のデータオブジェクトを格納するステップを含む、請求項１に記載のデータ組織化方法。
【請求項５】
前記記憶装置において追加データを受け取るステップと、
前記追加データを第２のデータオブジェクトに変換するステップと、
前記第２のデータオブジェクトを第２の階層データ構造に格納するステップと
をさらに含む、請求項４に記載のデータ組織化方法。
【請求項６】
前記複数の階層データ構造は、それぞれ異なるいくつかのデータグループを格納しており、
前記階層データ構造のそれぞれにデータオブジェクトを格納するステップは、該データオブジェクトに含まれるデータのそれぞれのタイプに基づくものである、請求項５に記載のデータ組織化方法。
【請求項７】
前記データを受け取るステップは、第１のファイルを受け取るステップを含み、前記階層データ構造は、第１の階層データ構造を含み、
前記記憶装置において第２のファイルを受け取るステップと、
前記第２のファイルを第２のデータオブジェクトに変換するステップと、
前記第２のデータオブジェクトを第２の階層データ構造に格納するステップと
をさらに含む、請求項１に記載のデータ組織化方法。
【請求項８】
前記第１および第２のファイルの各々は、前記第１および第２のファイルのそれぞれに含まれるデータを記述するメタデータを含み、
前記第１および第２の階層データ構造のそれぞれに前記第１および第２のデータオブジェクトの各々を格納するステップは、前記第１および第２のファイルのそれぞれに関連付けされたメタデータに基づくものである、請求項７に記載のデータ組織化方法。
【請求項９】
記憶装置の記憶コントローラに、
前記記憶装置に格納するデータを受け取るステップであって、受け取られたデータはメタデータに関連付けされている、受け取りステップと、
前記受け取られたデータを第１のデータオブジェクトに変換するステップと、
複数のデータオブジェクトそれぞれのカテゴリーを格納する複数の部分を有するデータ構造に前記第１のデータオブジェクトを格納するステップと
を実行時に行わせる命令を含み、
前記第１のデータオブジェクトは、前記メタデータに基づいて前記複数の部分のうちの１つに格納されるものである、コンピュータプログラム。
【請求項１０】
前記データ構造は、複数の相互接続されたノードを有する階層データ構造を含むものであり、
各ノードは対応するデータオブジェクトを表すものであり、
前記第１のデータオブジェクトを格納するステップは、前記メタデータに基づき前記第１のデータオブジェクトを前記階層データ構造の前記ノードのうちの１つとして格納するステップを含むものである、請求項９に記載のコンピュータプログラム。
【請求項１１】
前記データを受け取るステップは、第１のファイルを受け取るステップを含み、
前記データ構造は第１のデータ構造を含み、
前記命令は、前記システムに、
前記記憶装置において第２のファイルを受け取るステップと、
前記第２のファイルを第２のデータオブジェクトに変換するステップと、
前記第２のデータオブジェクトを、前記第１のデータ構造とは異なるカテゴリーのデータオブジェクトを格納する第２のデータ構造に格納するステップと
を実行時にさらに行なわせるものである、請求項９に記載のコンピュータプログラム。
【請求項１２】
前記第１のファイルは、前記第１のファイルのデータのカテゴリーを示すメタデータに関連付けされており、
前記第２のファイルは、前記第２のファイルのデータのカテゴリーを示すメタデータに関連付けされており、
前記第１および第２のデータオブジェクトをそれぞれ第１および第２のデータ構造に格納するステップは、前記それぞれのメタデータに基づくものである、請求項１１に記載のコンピュータプログラム。
【請求項１３】
複数レベルのデータオブジェクトを含む階層データ構造を格納する記憶部と、
データを受け取るモジュールと、
前記受け取られたデータを第１のデータオブジェクトに変換し該第１のデータオブジェクトを前記階層データ構造に格納するコントローラと
を備えてなるシステム。
【請求項１４】
前記記憶部は、複数の階層データ構造を格納し、
前記コントローラは、前記受け取られたデータに関連付けされたメタデータに基づいて前記複数の階層データ構造のうちの１つに前記第１のデータオブジェクトを格納するものである、請求項１３に記載のシステム。
【請求項１５】
前記受け取られたデータは、該受け取られたデータを記述する情報に関連付けされており、
前記階層データ構造は、異なるカテゴリーのデータを格納する複数の部分を有しており、
前記コントローラは、前記受け取られたデータのカテゴリーを示す前記受け取られたデータに関連付けされた前記情報に基づいて、前記複数の部分のうちの１つに前記第１のデータオブジェクトを格納する、請求項１３に記載のシステム。
【請求項１６】
前記受け取られたデータは、前記受け取られたデータのカテゴリーを示す情報に関連付けされており、
前記階層データ構造は、相互接続されたノードのツリーを含むものであり、
前記コントローラは、前記受け取られたデータの前記カテゴリーを示す前記情報に基づいて、前記相互接続されたノードの前記ツリーのノードとして、前記階層データ構造に前記データオブジェクトを格納するものである、請求項１３に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータの組織化方法および装置に関する。
【背景技術】
【０００２】
最近のコンピュータシステムでは、記憶装置を使用してデータおよびプログラム命令を格納する。記憶装置の例には、集積回路（ＩＣ）記憶デバイス（ダイナミックまたはスタティックランダムアクセスメモリ、フラッシュメモリおよび電気的消去可能なプログラマブルリードオンリメモリ等）と、ハードディスクドライブと、フロッピー（登録商標）ディスクドライブと、光ドライブと、他のタイプの記憶装置とがある。
【０００３】
技術および生産効率の進歩により、記憶部のビット当たりのコストは劇的に減少した。消費者は、比較的大容量（たとえば、何１０ギガバイト）の記憶装置を比較的低価格で広く入手可能である。その結果、コンピュータ、個人情報端末（ＰＤＡ）、カメラ、音楽プレイヤー等を含む多くのタイプのシステムにおいて、大容量記憶装置を含めることができる。システムに大容量記憶装置が存在することは、多数のファイルを格納することができることを意味する。たとえば、システムがカメラである場合、多数の画像またはビデオクリップを取り込み格納することができる。システムが音楽プレイヤーである場合、ユーザが多数の曲ファイルをプレイヤーにロードすることができる。コンピュータおよびＰＤＡもまた、多数のユーザファイルを格納することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
記憶ファイルの数が増加するに従い、記憶装置に格納される特定のファイルを見つけることがより困難となる可能性がある。ユーザは、異なるタイプのファイルを格納するディレクトリを作成することによって格納されたファイルを手動で組織化することができる。しかしながら、ユーザによるこのような手動での組織化は、時間がかかり、ユーザがファイルを間違ったディレクトリに移動させる可能性があり、またはユーザが単純に新たに受け取ったファイルを分類するのを忘れる可能性があるため、しばしば一貫性がない。本発明は、係る課題の少なくともいくつかを解決することを課題とする。
【課題を解決するための手段】
【０００５】
本発明のある側面においては、記憶装置においてデータを受け取るステップと、受け取られたデータを第１のデータオブジェクトに変換するステップと、複数レベルのデータオブジェクトを含む階層データ構造（hierarchical data structure）に第１のデータオブジェクトを格納するステップとを含んでなる、記憶装置におけるデータ組織化方法が提供される。
【０００６】
また、本発明の他の側面においては、記憶装置の記憶コントローラに、記憶装置に格納するデータを受け取るステップであって、受け取られたデータはメタデータに関連付けされている、受け取りステップと、受け取られたデータを第１のデータオブジェクトに変換するステップと、複数のデータオブジェクトそれぞれのカテゴリーを格納する複数の部分を有するデータ構造に第１のデータオブジェクトを格納するステップとを実行時に行わせる命令を含み、第１のデータオブジェクトは、メタデータに基づいて複数の部分のうちの１つに格納されるものである、コンピュータプログラムまたは少なくとも１つの記憶媒体を備える製品が提供される。
【０００７】
さらに本発明のさらに他の側面によれば、複数レベルのデータオブジェクトを含む階層データ構造を格納する記憶部と、データを受け取るモジュールと、受け取られたデータを第１のデータオブジェクトに変換し第１のデータオブジェクトを階層データ構造に格納するコントローラとを備えてなるシステムが提供される。
【発明を実施するための最良の形態】
【０００８】
図１は、ホストシステム１００と記憶システム１０２とを有するコンピューティングシステムの例を示す。たとえば、コンピューティングシステムは、コンピュータ（たとえば、デスクトップコンピュータ、ノートブックコンピュータ）、デジタルカメラ（静止画カメラまたはビデオカメラ）、音楽プレイヤー装置または他のタイプのシステムであってもよい。ホストシステム１００は、中央処理装置（ＣＰＵ）１１６で実行可能なアプリケーションクライアント１０４（図示しない他のソフトウェアモジュールと同様に）を有する。ＣＰＵ１１６は、メモリ１１８と周辺装置１２０とに連結される。
【０００９】
記憶システム１０２は、ホストシステム１００の一部であってもよく、あるいは、リンク（たとえば、ポート、ネットワーク等）を介してホストシステム１００に取り付けまたは連結されてもよい。ホストシステム１００のアプリケーションクライアント１０４は、オブジェクトベースインタフェース１０６を介して記憶システム１０２にアクセスする。
【００１０】
アプリケーションクライアント１０４は、オブジェクトベースの要求（読出し要求、書込み要求および他の要求）を、オブジェクトベースインタフェース１０６により記憶システム１０２のデバイスコントローラ１０８に送出する。各オブジェクトベースの要求により、デバイスコントローラ１０８は、記憶システム１０２に格納されたデータオブジェクトへのアクセスを実行する。図１の構成は、クライアント・サーバモデルを示し、そこでは、アプリケーションクライアント１０４からの要求は、デバイスコントローラ１０８のデバイスサーバ１０９によって処理される。
【００１１】
データは、記憶システム１０２の記憶媒体１１０に格納される。記憶媒体１１０は、磁気媒体（たとえば、ハードディスク、フロッピー（登録商標）ディスク等）、光媒体（たとえば、ＣＤまたはＤＶＤ）もしくは半導体記憶媒体であってもよい。記憶媒体１１０は、データを記憶するために予め定義されたブロックに分割される。記憶媒体１１０のブロックは、物理ブロックアドレスによってアドレス指定され、それらアドレスは、デバイスコントローラ１０８によって使用されるために論理ブロックアドレスにマッピングされる。
【００１２】
ホストシステム１００が生成しまたは受け取る大部分のファイルは、記憶媒体１１０の単一ブロック内に格納するには大きすぎる。かかるファイルの例には、フォーマット済み文書を含むファイル、オーディオデータを含むファイル、画像データを含むファイル、ビデオデータを含むファイル、マルチメディアデータを含むファイル等がある。大きいファイルは、記憶媒体１１０の複数のブロックに格納するために細分化される。記憶媒体１１０上の細分化されたデータのブロックは、元のファイル（フォーマット済み文書ファイル、画像ファイル、ビデオファイル、オーディオファイル等）の特性を保持していない。記憶媒体１１０上のデータの各ブロックは、単なるビットの集まりであり、ブロックは、かかるビットがフォーマット済み文書ファイル、ビデオファイル、オーディオファイルまたは他のものの一部であるか否かの指標（indication）を含まない。
【００１３】
本発明のいくつかの実施形態によれば、記憶システム１０２はまた、記憶媒体１１０に格納されたデータのタイプおよび特性を認識することができる。この認識は、デバイスコントローラ１０８が記憶媒体１１０に格納されたデータのオブジェクトレベル表現（object-level representation）を提供することにより達成される。
【００１４】
オブジェクトレベル表現には、複数のレベルのデータオブジェクトを有する階層データ構造がある。各階層データ構造（「オブジェクト階層」とも呼ぶ）のデータオブジェクトは、何らかの共通の特性（たとえば、フォーマット済み文書データ、画像データ、音楽データ、ビデオデータ等）によって関連付けられる。データの異なるグループを表現する複数のオブジェクト階層１１６が記憶媒体１１０に格納される。オブジェクト階層１１６の各データオブジェクトは、ディレクトリ、ファイルまたは他のデータ構造のうちの１つを表す。オブジェクト階層１１６は、記憶媒体１１０のブロックのそれぞれのセットに格納される。
【００１５】
オブジェクト階層における各データオブジェクトと同様に各オブジェクト階層１１６に、属性（attributes）および関数（または機能；functions）を関連付けることができる。属性には、オブジェクト階層１１６におけるデータオブジェクトに関連付けされた特徴を記述する情報がある。たとえば、データオブジェクトが音楽ファイルを含む場合、データオブジェクトに関連付けされた属性によって、音楽ファイルの作者と、音楽ファイルが公開された日付と、重要であり得る他の情報とを特定することができる。関数は、データアクセスに応じて特定のタスクを実行するために呼び出すことができる任意の実行可能ソフトウェアルーチンまたはモジュールを含む。たとえば、所与のデータオブジェクトが映画ファイルを含む場合、関連付けされた関数は、映画を再生するルーチンと、映画を巻き戻すルーチンと、映画を早送りするルーチンとを含んでもよい。属性および関数を各データオブジェクトに関連付けることにより、データの格納、アクセスおよび操作の柔軟性が向上する。
【００１６】
記憶システム１０２におけるオブジェクト階層の構造は、格納されたデータを組織化する固有の能力を提供する。たとえば、第１のオブジェクト階層を使用して、音楽データを格納することができ、第２のオブジェクト階層を使用して、デジタル画像（デジタル写真等）を格納することができ、第３のオブジェクト階層を使用して、ビデオデータを格納することができる等である。各オブジェクト階層内では、オブジェクト階層にレベルを追加することにより、さらにカテゴリー化（categorization）を実行することができる。したがって、音楽データを格納するオブジェクト階層において、音楽ファイルを、音楽のタイプ（たとえば、ブルース、ジャズ、ロック）により、アーティストによりかつ／またはアルバムによりカテゴリー化することができる。
【００１７】
それぞれのオブジェクト階層にデータを格納することにより、デバイスコントローラ１０８は、ユーザによる手動の介入なしに記憶システム１０２においてデータを自動的に組織化することができる。このため、データを組織化するためのディレクトリをユーザが手動で作成する必要があり、その後にそれらのディレクトリにユーザーがファイルを移動させる代わりに、いくつかの実施形態による記憶システム１０２は、オブジェクト階層になるようデータを自動的に分類し組織化する。
【００１８】
図１にさらに示すように、記憶システム１０２は、デバイスコントローラ１０８で実行可能な、「通常の」ファイルをオブジェクト階層に格納するためにデータオブジェクトに変換する変換ルーチン１２０を有する。「通常の」ファイルは、特定のソフトウェアアプリケーション（たとえば、ワードプロセッシングアプリケーション、画像表示アプリケーション等）のフォーマットのファイルである。通常のファイルは、記憶装置（たとえば、フロッピー（登録商標）ディスクドライブ、ＣＤまたはＤＶＤドライブ、メモリカード等）、ネットワーク（たとえば、ローカルエリアネットワーク、インターネット等）によってファイルを受け取るネットワークインターフェースカード（ＮＩＣ）または他のソースであってもよいファイルソース１２２によって提供される。ファイルソース１２２とデバイスコントローラ１０８との間でファイルを通信するインタフェース１２４が設けられる。
【００１９】
変換ルーチン１２０は、デバイスコントローラ１０８のプロセッシングコアによって実行可能なファームウェアまたはソフトウェアであってもよい。プロセッシングコアは、マイクロコントローラ、プロセッサ等の形態であってもよい。代替実施形態では、変換ルーチン１２０は、記憶システム１０２ではなくホストシステム１００に配置される。しかしながら、記憶システム１０２のデバイスコントローラ１０８において変換ルーチン１２０を実行することの利益は、ホストシステムにおけるＣＰＵ１１６の資源が消費されない、ということである。
【００２０】
記憶システム１０２に変換ルーチン１２０を設けることにより、変換ルーチン１２０は、ファイル変換を実行するためにデバイスコントローラ１０８の余分な容量を利用することができる。本来デバイスコントローラ１０８のアイドル期間（記憶システム１０２が使用されていない期間）であった期間中に、変換ルーチン１２０はデバイスコントローラ１０８においてタスクを実行するために実行可能である。たとえば、コンピューティングシステム（ホストシステム１００および記憶システム１０２を含む）がデジタルカメラである場合、変換ルーチン１２０は、デジタルカメラが画像を取り込むために使用されていない期間中に、画像またはビデオファイルの、オブジェクト階層１１６に格納するためのデータオブジェクトへの変換を実行することができる。同様に、コンピューティングシステムが、ファイル（たとえば、音楽ファイル、画像ファイル、ビデオファイル、刊行物等）をネットワークから（インターネット上のウェブサイトから等）ダウンロードすることができるコンピュータである場合、変換ルーチン１２０は、コンピュータが使用されていない期間中にファイル変換を実行する。
【００２１】
ファイルは、ホストシステム１００においてファイルソース１２２によって受け取られると記憶システム１０２の変換ルーチン１２０に転送され、変換ルーチン１２０は、そのファイルを、オブジェクト階層１１６に格納するために適当なデータオブジェクトに変換する。その結果、有効かつ信頼性の高いファイル組織化メカニズムが提供される。
【００２２】
オブジェクト階層１１６にアクセスする（読み出すまたは書き込む）ために、アプリケーションクライアント１０４または変換ルーチン１２０は、デバイスサーバ１０９に対してオブジェクトベースの要求を発行する。オブジェクトベースの要求は、オブジェクト階層１１６に関連付けされた一意のオブジェクト階層識別子（ＯＨＩＤ；object hieralchy identifier）を指定する。オブジェクトベースの要求に含まれるＯＨＩＤは、ホストシステム１００において、オブジェクトベースインタフェース１０６によって、記憶媒体１１０のブロックに関連付けされたブロックアドレスへと翻訳（transfer）されない。その代りに、ＯＨＩＤとブロックアドレスとの間の翻訳は、デバイスコントローラ１０８のデバイスサーバ１０９によって実行される。デバイスサーバ１０９は、デバイスコントローラ１０８のプロセッシングコアで実行可能なファームウェアまたはソフトウェアであってもよい。
【００２３】
デバイスコントローラ１０８はまた、ＯＨＩＤ−ＬＢＡ（logical block address）（論理ブロックアドレス）テーブル１１４を格納するメモリ１１２も有する。ＯＨＩＤ−ＬＢＡテーブル１１４は、ＯＨＩＤとＯＨＩＤに対応する論理ブロックアドレスの範囲（または他のグループ）との間の翻訳を可能にする変換テーブルである。図１に示す例では、テーブル１１４の第１の行は、ＩＤ０の値を有するＯＨＩＤを含み、それは、ＩＤ０によって識別されるオブジェクト階層を含むブロックを識別する論理ブロックアドレスの範囲に関連付けされている。同様に、テーブル１１４の第２の行は、ＩＤ１の値のＯＨＩＤを有し、それは、ＩＤ１によって識別されるオブジェクト階層を含む記憶媒体１１０の記憶位置を表す論理ブロックアドレスの別の範囲に関連付けされている。他の実施形態では、ＯＨＩＤは、論理ブロックアドレスの代わりに物理ブロックアドレスに翻訳される。より一般的には、ＯＨＩＤは、記憶媒体１１０のブロックを識別する１つまたは複数のアドレスの何らかのグループに翻訳される。
【００２４】
一実施態様では、ＯＨＩＤ−ＬＢＡテーブル１１４を格納するメモリ１１２は、デバイスコントローラ１０８の一部である。メモリ１１２は、不揮発性メモリ（フラッシュメモリまたは電気的消去可能なプログラマブルリードオンリメモリ）、ダイナミックメモリ（ダイナミックランダムアクセスメモリ、スタティックランダムアクセスメモリ等）、もしくは他の任意のタイプの記憶装置であってもよい。代替的に、メモリ１１２は、デバイスコントローラ１０８から分離した記憶媒体１１０の事前定義された領域であってもよい。
【００２５】
一実施態様によるオブジェクトベースインタフェース１０６は、オペレーティングシステムと、ホストシステム１００のソフトウェアモジュール（たとえば、アプリケーションクライアント１０４）と記憶システム１０２のデバイスコントローラ１０８との間で通信を可能にするホストアダプタとを有する。代替的に、デバイスコントローラ１０８は、ホストアダプタを省略することができるようにホストシステム１００の一部であってもよい。デバイスコントローラ１０８においてＯＨＩＤから論理ブロックアドレスへ（およびその逆）の翻訳を実行することにより、ＣＰＵ１１６等のホストシステム資源を、記憶アクセス処理を実行するために割り付ける必要がない。オブジェクト階層にデータを格納することによって提供される別の利益は、記憶システム１０２に格納されたデータの特性が維持される、ということである。たとえば、記憶システム１０２は、オブジェクト階層１１６が音楽データ、ビデオデータ、フォーマット済み文書データまたは他のタイプのデータを含むか等、各オブジェクト階層１１６に含まれるデータのタイプを知る。
【００２６】
図２は、図１の記憶媒体１１０に格納することができるオブジェクト階層１１６例を示す。オブジェクト階層１１６は、ＯＨＩＤに関連付けされたルートデータオブジェクト２００を有する。アプリケーションクライアント１０４からのアクセス要求に含まれるＯＨＩＤは、オブジェクト階層１１６のルートデータオブジェクト２００を指す。ルートデータオブジェクト２００は、オブジェクト階層１１６の最高レベルにある。オブジェクト階層１１６は、さらに、データオブジェクトの１つまたは複数の追加のレベルを含むことができる。図２に示す例のオブジェクト階層は、データオブジェクトの３つの追加のレベルを含む。それより下のレベルのデータオブジェクトが接続されていないデータオブジェクトを、リーフデータオブジェクト２０２と呼ぶ。リーフデータオブジェクト２０２は、中間データオブジェクト２０４によりルートデータオブジェクト２００に連結される。図２の例に示すように、属性および関数もまたデータオブジェクト２００、２０２および２０４の少なくともいくつかに関連付けられる。
【００２７】
効果的には、オブジェクト階層１１６は、相互接続されたノードのツリーであり、各ノードはデータオブジェクトを表す。ノードのツリーの異なる部分またはブランチを使用して、データの異なるカテゴリーを表すことができる。
【００２８】
図３は、オブジェクト階層１１６Ａのより特定の例を示し、オブジェクト階層１１６Ａに格納されるデータが音楽データであることを示すルートデータオブジェクト２１０を含む。オブジェクト階層１１６Ａは、以下の中間データオブジェクトを含む。すなわち、ブルース音楽の格納を示すデータオブジェクト２１２と、ジャズ音楽の格納を示すデータオブジェクト２１４と、ロック音楽の格納を示すデータオブジェクト２１６と、である。中間データオブジェクト２１２、２１４および２１６は、ディレクトリに類似する。オブジェクト階層１１６Ａのリーフデータオブジェクト２２０は、音楽の各カテゴリー（ブルース、ジャズおよびロック）に関連付けされた実際の音楽ファイルを含む。さらに、オブジェクト階層１１６Ａには、別の中間データオブジェクト２１８が存在する。データオブジェクト２１８は、ブルースデータオブジェクト２１２の下に接続される。データオブジェクト２１８は、特定のアーティストに関連付けされたアルバムを表す。アルバムデータオブジェクト２１８には、その特定のアルバムの音楽ファイルを含むリーフデータオブジェクト２２２が連結される。
【００２９】
図４は、音楽ファイル（「MUSIC1#FILE」）４００をオブジェクト階層１１６Ａに格納するためにデータオブジェクト４０８に変換することを示す。音楽ファイル４００は、ヘッダ部４０２とペイロード部４０４とを有する。ヘッダ部４０２は、アーティスト（例ではジョー・Ｍ）、アルバム（例では「カントリー・ロード」と題する）、ジャンル（たとえばブルース）および時間等の、音楽ファイル４００に関するさまざまな情報を含む。ペイロード部４０４は、音楽データを含む。ヘッダ部４０２に含まれる情報をメタデータと呼び、それは、他の情報を記述する情報（この場合、ペイロード部４０４に含まれるデータ）である。
【００３０】
音楽ファイル４００は、変換ルーチン１２０（図１）によってデータオブジェクト４０８に変換される。データオブジェクト４０８が作成されると、変換ルーチン１２０は、データオブジェクト４０８をオブジェクト階層１１６Ａにおけるリーフオブジェクトとして格納するオブジェクトベースアクセス要求を発行する。データオブジェクト４０８は、アーティストのジョー・Ｍによるアルバムである「カントリー・ロード」とラベル付けされた中間オブジェクト４０６の下に接続される。このため、中間オブジェクト４０６の下のレベルの中間オブジェクト４０６に接続されるデータオブジェクトは、アルバム「カントリー・ロード」の曲を含む。
【００３１】
データオブジェクト４０８がオブジェクト階層１１６Ａに格納される位置は、音楽ファイル４００のヘッダ部４０２に含まれるメタデータに基づく。メタデータは、この例では、音楽のジャンル（ブルース）とアルバム（「カントリー・ロード」）とを識別する。このため、データオブジェクト４０８は、中間データオブジェクト４０６に対応するノードの１つ下に接続されるノードとして格納される。
【００３２】
別の例では、図５に示すように、写真ファイル４５０がヘッダ部４５２とペイロード部４５４とを含む。ヘッダ部４５２は、以下のメタデータを含む。すなわち、写真が撮影された日付および時刻、写真の場所等である。ペイロード部４０４は、画像データを含む。
【００３３】
写真ファイル４５０は、変換ルーチン１２０によりデータオブジェクト４６６に変換され、オブジェクト階層４５６に格納される。オブジェクト階層４５６は、オブジェクト階層４５６が２００３年の夏期休暇に関連付けされたデータを含むことを示すルートオブジェクト４５８を有する。ルートオブジェクト４５８の下には、デンバー、ソルトレークシティおよびボイシ等の異なる場所を表す中間データオブジェクト４６０、４６２および４６４がある。写真ファイル４５０の画像データを含むデータオブジェクト４６６は、写真ファイル４５０のヘッダ部４５２におけるメタデータに基づき中間オブジェクト４６０の下に格納される。
【００３４】
図６は、一実施形態による、ファイルを組織化するプロセスのフローチャートである。ソース１２２（図１）からファイルを受け取る（５０２）ことに応じて、変換ルーチン１２４（図１）は、そのファイルをデータオブジェクトに変換する（５０４）。変換されているファイルに関連付けされたメタデータに基づいて、変換ルーチン１２０は、データオブジェクトのカテゴリー化を実行する（５０６）（新たに作成されたデータオブジェクトはいずれのオブジェクト階層に格納されるべきかと、新たに作成されたデータオブジェクトがオブジェクト階層においてどこに格納されるべきかとを決定するため）。
【００３５】
そして、データオブジェクトは、変換ルーチン１２０により、デバイスサーバ１０９への書込み要求（図７に示す）を発行することによってオブジェクト階層に書き込まれる（５０８）。任意に、変換ルーチン１２０（またはデバイスサーバ１０９）は、属性および関数を格納されたデータオブジェクトに関連付ける（５１０）。たとえば、属性は、変換されたファイルに関連付けされたメタデータを含んでもよい。データオブジェクトに関連付けてもよい関数の例には、セキュリティを提供する関数（データオブジェクトの後続するアクセスにおいてパスワードの入力を促す関数）、データオブジェクトを表示しまたは別の方法で提示する関数（たとえば、画像またはビデオ表示関数、音声再生関数等）等がある。
【００３６】
図７および図８は、記憶システム１０２に格納されたオブジェクト階層にアクセスするために使用される、それぞれオブジェクトベース書込み要求３００とオブジェクトベース読出し要求３５０とのフォーマット例を示す。書込みおよび読出し要求の特定のフォーマットは例を示すものである。他の実施態様では、書込みおよび読出し要求は他のフォーマットを有することができる。
【００３７】
書込み要求３００は、演算コード（１６進値００または書込みを指示する他の何らかの所定値を有する）を含む複数バイトの情報を含む。可変指示子（variable indicator）３０４は、書込み要求の長さが可変であることを示す。ＯＨＩＤフィールド３０６は、書込みを実行する書込み要求によってアクセスされるべきオブジェクト階層のオブジェクト階層識別子を含む。副階層識別子（ＳＯＨＩＤ；sub-hierarchy identifier ）３０８は、より詳細には、オブジェクト階層１１６におけるデータオブジェクトを識別する。ＳＯＨＩＤ３０８は、オブジェクト階層１１６のデータオブジェクトのうちの１つを識別する。書込み要求において、複数のＳＯＨＩＤを指定することができる。
【００３８】
一実施形態では、オブジェクト階層１１６は固定の階層を有し、深さ（レベルの数）と幅（各レベルにおけるデータオブジェクトの数）とが固定である。固定の階層の場合、階層における選択されたデータオブジェクトを識別するためにマトリクスを使用することができる。マトリクスにおける各位置（ＳＯＨＩＤ）は、特定のデータオブジェクトに対応する。データオブジェクトの選択を、マトリクス位置の値を所与の値（２進「１」値等）に設定することにより実行する。
【００３９】
別の実施態様では、オブジェクト階層１１６は動的階層（dynamic hierarchy）であり、深さおよび幅は事前に定義されずむしろ変化することが可能である。動的階層の場合、対応するデータオブジェクトを識別するためにＳＯＨＩＤの連結リストを使用する。ＯＨＩＤとＳＯＨＩＤとを含む書込み要求を受け取ることに応じて、デバイスサーバ１０９（図１）は、ＯＨＩＤに対応する連結リストを全面的に検討することにより、指定されたＳＯＨＩＤとそのＳＯＨＩＤに対応するデータオブジェクトとを見つける。
【００４０】
書込み要求３００はまた、最上位バイト（ＭＳＢ）階層ポインタ３１０と最下位バイト（ＬＳＢ）階層ポインタ３１２とを含む。階層ポインタは、効果的には、書込みが実行されるべきデータオブジェクト内の特定の部分を指すためのオフセットである。書込み要求３００はまた、データオブジェクトに関連付けされた属性および関数にアクセスするフィールドを含む。書込み要求３００の残りのフィールドは、ＭＳＢ階層ポインタ３１０とＬＳＢ階層ポインタ３１２とが指す部分に書き込まれるべきデータを含む。
【００４１】
図８に示す読出し要求３５０は、この場合は１６進値０１または他の何らかの事前定義された値を有する、読出しを指示する演算コード３５２を含む。可変指示子３５４は、読出しコマンド構造３５０が可変長を有することを示し、ＯＨＩＤフィールド３５６は、読出し要求によって目標とされたオブジェクト階層を示す。
【００４２】
読出し要求３５０はまた、目標オブジェクト階層において読み出されるデータオブジェクト（複数可）を識別する１つまたは複数の副階層識別子を含むフィールド３５８を含む。フィールド３６０および３６２のＭＳＢおよびＬＳＢポインタは、検索されるべき選択されたデータオブジェクト（複数可）の部分のポインタ（複数可）を指定する。任意に、データオブジェクト全体を検索してもよく（データオブジェクトの単なる部分ではなく）、その場合、ＭＳＢおよびＬＳＢ階層ポインタを省略することができる。読出し要求はまた、オブジェクト階層のデータオブジェクトに関連付けされた属性および関数のアクセスを可能にするフィールド３６４を含む。
【００４３】
上述した書込み要求および読出し要求に加えて、アプリケーションクライアント１０４（図１）によって他の要求を発行することも可能である。かかる他の要求の１つは、各オブジェクト階層に関連付けされた所定の情報を検索するためにデバイスサーバ１０９に提出される問合せ要求である。たとえば、問合せ要求は、上述したマトリクスおよび連結リスト等の副階層識別子情報の検索をもたらすことができる。
【００４４】
上述したように、変換ルーチン１２０およびデバイスサーバ１０９（図１）等のさまざまなソフトウェアモジュールは、ファームウェアまたはソフトウェアもしくはファームウェアおよびソフトウェアの組合せで実施される。ソフトウェアまたはファームウェアは、記憶システム１０２またはホストシステム１００（図１）の制御ユニットまたはプロセッサで実行される。制御ユニットまたはプロセッサは、マイクロプロセッサ、マイクロコントローラ、プロセッサモジュールまたはサブシステム（１つまたは複数のマイクロプロセッサまたはマイクロコントローラを含む）、もしくは他の制御またはコンピューティングデバイスを含む。本明細書で使用する「コントローラ」は、ハードウェア、ファームウェア、ソフトウェアまたはそれらの組合せを指す。「コントローラ」は、単一コンポーネントを指しても複数のコンポーネントを指してもよい（ソフトウェアであってもファームウェアであってもハードウェアであっても）。
【００４５】
（ソフトウェアまたはファームウェアの）データおよび命令は、１つまたは複数の機械読取可能記憶媒体に格納される。記憶媒体には、ダイナミックまたはスタティックランダムアクセスメモリ（ＤＲＡＭまたはＳＲＡＭ）、消去可能なプログラマブルリードオンリメモリ（ＥＰＲＯＭ）、電気的消去可能なプログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）およびフラッシュメモリ等の半導体メモリデバイスと、固定、フロッピー（登録商標）およびリムーバブルディスク等の磁気ディスクと、テープを含む他の磁気媒体と、コンパクトディスク（ＣＤ）またはデジタルビデオディスク（ＤＶＤ）等の光媒体と、を含む、さまざまな形態のメモリがある。
【００４６】
上述した説明では、本発明の理解を提供するために多数の詳細を示している。しかしながら、当業者には、本発明をこれらの詳細なしに実施してもよい、ということが理解されよう。本発明を限定した数の実施形態に関して開示したが、当業者は、そこから多数の変更形態および変形形態を認識するであろう。添付の特許請求項は、本発明の真の精神および範囲内にあるかかる変更形態および変形形態を包含することが意図されている。
【図面の簡単な説明】
【００４７】
【図１】コンピューティングシステムの構成例のブロック図である。
【図２】実施形態による、オブジェクトベース階層データ構造の概略図である。
【図３】実施形態による、オブジェクトベース階層データ構造の概略図である。
【図４】実施態様例による、従来のファイルの、オブジェクトベース階層データ構造に格納するためにデータオブジェクトへの変換を示す図である。
【図５】実施態様例による、従来のファイルの、オブジェクトベース階層データ構造に格納するためにデータオブジェクトへの変換を示す図である。
【図６】実施形態による、データを組織化するプロセスのフローチャートである。
【図７】オブジェクトベース階層データ構造にアクセスする（書き込む）本発明の実施形態による書込みコマンドを示す図である。
【図８】オブジェクトベース階層データ構造にアクセスする（読み出す）本発明の実施形態による読出しコマンドを示す図である。
【図１】
2005158072.tif 000003
【図２】
2005158072.tif 000004
【図３】
2005158072.tif 000005
【図４】
2005158072.tif 000006
【図５】
2005158072.tif 000007
【図６】
2005158072.tif 000008
【図７】
2005158072.tif 000009
【図８】
2005158072.tif 000010