データを処理するための方法であって、a.データを記憶するためのいくつかの順次的な論理アドレスを含む記憶ユニットを提供するステップと、b.前記記憶ユニット内に記憶される、いくつかの固定長または可変長のデータオブジェクトを提供するステップと、c.前記記憶ユニット内の前記データを修正するステップであって、前記データの修正はi.前記記憶ユニット内の所定の論理アドレスに追加の記憶空間を挿入することと、ii.前記所定の論理アドレス以降に記憶されるいくつかのデータオブジェクトを、前記記憶ユニット内の新たな論理アドレスに再配置することと、iii.必要な場合、前記記憶ユニット内に追加のデータを記憶することと、iv.1つまたは複数のデータオブジェクトの前記新たなアドレスまたは新たな長さを追跡することとによって特徴付けられる、ステップとを含む、方法。前記データの修正が、a.前記記憶ユニット内への追加のデータオブジェクトの挿入、またはb.データオブジェクト内へのデータ要素の挿入、またはc.前記記憶ユニットからのデータオブジェクトの除去、またはd.ネストされたデータオブジェクトの、その親データオブジェクトからの除去、またはe.データオブジェクトの前記長さの修正、またはf.ネストされたデータオブジェクトの前記長さ、およびその親データオブジェクトの前記長さの修正、またはg.データオブジェクトのデータタイプの修正、またはh.データオブジェクトの再命名の性質を帯びる、請求項1に記載の方法。親データオブジェクトのその子データオブジェクトとの関係に加え、データオブジェクトの、前記記憶ユニット内の1つまたは複数の他のデータオブジェクトとの関係が表される、請求項1に記載の方法。前記記憶ユニットが、仮想メモリ領域、またはファイル、またはアレイ、またはカウントツリー、または他のデータ構造である、請求項1に記載の方法。前記所定の論理アドレス以降に記憶される一部のまたは全てのデータが、a.前記データをコピーすることなしに、またはb.前記データにアクセスすることなしに前記記憶ユニット内の新たな論理アドレスに再配置される、請求項1に記載の方法。a.前記記憶ユニットが、いくつかの物理アドレスをさらに含み、b.前記物理アドレスの1つまたは複数が、前記記憶ユニット内の前記論理アドレスのうちの1つまたは複数に関連し、c.前記所定の論理アドレス以降に記憶される一部のまたは全てのデータを、前記記憶ユニット内の新たな論理アドレスに再配置することが、i.1つまたは複数の物理アドレスを、前記記憶ユニット内の1つまたは複数の論理アドレスから切り離し、ii.前記1つまたは複数の物理アドレスを、前記記憶ユニット内の1つまたは複数の新たな論理アドレスに再び関連させることによって行われる、請求項1に記載の方法。a.前記記憶ユニットが、1つまたは複数の記憶ブロックをさらに含み、b.前記物理アドレスが、前記記憶ユニット内の1つまたは複数の記憶ブロック内に含まれる請求項6に記載の方法。データを処理するための装置であって、a.データを記憶するためのいくつかの順次的な論理アドレスを含む記憶ユニットと、b.前記記憶ユニット内に記憶される、いくつかの固定長または可変長のデータオブジェクトと、c.前記記憶ユニット内の前記データを修正するための装置であって、前記データの修正はi.前記記憶ユニット内の所定の論理アドレスへの追加の記憶空間の挿入、ii.前記所定の論理アドレス以降に記憶されるいくつかのデータオブジェクトの、前記記憶ユニット内の新たな論理アドレスへの再配置、iii.必要な場合、前記記憶ユニット内への追加のデータの記憶、およびiv.1つまたは複数のデータオブジェクトの前記新たなアドレスまたは新たな長さの追跡によって特徴付けられる、装置とを含む、装置。前記データの修正が、a.前記記憶ユニット内への追加のデータオブジェクトの挿入、またはb.データオブジェクト内へのデータ要素の挿入、またはc.前記記憶ユニットからのデータオブジェクトの除去、またはd.ネストされたデータオブジェクトの、その親データオブジェクトからの除去、またはe.データオブジェクトの前記長さの修正、またはf.ネストされたデータオブジェクトの前記長さ、およびその親データオブジェクトの前記長さの修正、またはg.データオブジェクトのデータタイプの修正、またはh.データオブジェクトの再命名の性質を帯びる、請求項8に記載の装置。親データオブジェクトのその子データオブジェクトとの関係に加え、データオブジェクトの、前記記憶ユニット内の1つまたは複数の他のデータオブジェクトとの関係が維持される、請求項8に記載の装置。前記記憶ユニットが、仮想メモリ領域、またはファイル、またはアレイ、またはカウントツリー、または他のデータ構造である、請求項8に記載の装置。前記所定の論理アドレス以降に記憶される一部のまたは全てのデータが、a.前記データをコピーすることなしに、またはb.前記データにアクセスすることなしに前記記憶ユニット内の新たな論理アドレスに再配置される、請求項8に記載の装置。a.前記記憶ユニットが、いくつかの物理アドレスをさらに含み、b.前記物理アドレスの1つまたは複数が、前記記憶ユニット内の前記論理アドレスのうちの1つまたは複数に関連し、c.前記所定の論理アドレス以降に記憶される一部のまたは全てのデータを、前記記憶ユニット内の新たな論理アドレスに再配置することが、i.1つまたは複数の物理アドレスを、前記記憶ユニット内の1つまたは複数の論理アドレスから切り離し、ii.前記1つまたは複数の物理アドレスを、前記記憶ユニット内の1つまたは複数の新たな論理アドレスに再び関連させることによって行われる、請求項8に記載の装置。a.前記記憶ユニットが、1つまたは複数の記憶ブロックをさらに含み、b.前記物理アドレスが、前記記憶ユニット内の1つまたは複数の記憶ブロック内に含まれる請求項13に記載の装置。本発明の目的は、以下で論じるようにいくつかのデータオブジェクトを記憶し、いくつかの操作をその中で実行できるデータ処理システムを提供することである。データ処理システム内のデータオブジェクトは、いくつかの固定長または可変長のデータ要素を含む。データオブジェクトはネストすることができる。データオブジェクト内のデータ要素への直接アクセスが提供される。データオブジェクト内のデータ要素は、そのインデックスまたは名前によってアクセスすることができる。本発明によれば、データオブジェクトを構成し、データオブジェクト内に記憶空間を挿入しまたは除去することにより、実行時にデータオブジェクトを修正するための方法が提供される。この方法はヒープを必要としない。この方法は、予備の記憶空間を確保することも必要としない。この方法は、論理的かつ効率的な順序で、データオブジェクト内のデータ要素を配置できるようにする。いくつかのデータ要素を挿入しまたは除去した後でさえ、参照の局所性が保たれる。データオブジェクトの長さ、データタイプ、名前、または値は、随時修正することができる。いくつかのデータ要素を、データオブジェクト内で挿入しまたは除去することもできる。修正は、ネストされたデータオブジェクト内でも行うことができる。この方法は、データオブジェクトと、1つまたは複数の他のデータオブジェクトとの間の関係を表し、維持する能力を提供する。本発明にはいくつかの利点がある。i.この方法は、ポインタを使用する必要なしに可変長データを記憶する能力を提供する。データオブジェクトは、可変数のデータ要素を含むことができる。データオブジェクトの長さは、都度異なり得る。データ要素のサイズは、固定される必要も等しい必要もない。ii.この方法は、ネストされたデータオブジェクト内のデータの挿入および除去をサポートする。追加データの挿入をサポートするために、予備空間を確保する必要はない。iii.この方法は、データ要素を、その最適な位置に記憶することをサポートする。iv.この方法は、システムがより効率的に実行されることを可能にする。v.この方法は、データを挿入しまたは除去した後でさえ、データ要素の直接アクセスを可能にする。vi.この方法は、データ要素の名前またはインデックスにより、そのデータ要素にアクセスできるようにするのに有用である。vii.断片化、ページフォルト、およびキャッシュミスが減る。データを挿入しまたは除去した後でさえ、参照の局所性が維持される。viii.動的に割り当てられる記憶空間を維持し、または管理する必要がない。ix.ヒープ内の使用できない記憶領域の問題が低減する。x.この方法は、データ要素のデータタイプを修正するのに有用である。xi.この方法は、欠落したデータ要素のデフォルト値を維持するのに有用である。図面では、密接に関係した図面は、同じ番号だが異なる英字の添え字を有する。本発明の好ましい実施形態によれば、いくつかのデータオブジェクトを記憶するためのデータ処理システムが提供される。実行時にデータオブジェクトを修正するための方法を提供する。データオブジェクト内に追加のデータを挿入することができ、それにより、1つまたは複数の追加のデータ要素が挿入され、かつ/またはデータオブジェクトの長さが増加する。同様に、データオブジェクト内の既存のデータを除去することができ、それにより、データ処理システム内の1つまたは複数のデータオブジェクトが除去され、かつ/またはデータオブジェクトの長さが縮小される。データを挿入するために、以下のステップを実行する。i.追加のデータを記憶するための、記憶ユニット内の論理アドレスを識別する。ii.そのように識別した論理アドレスに追加のデータを記憶するために、記憶ユニット内に追加の記憶空間を挿入する。それにより、前述の論理アドレスを越えて記憶された1つまたは複数の既存のデータオブジェクトが、その既存の論理アドレスから、より高位の論理アドレスに移され得る。iii.挿入した記憶空間の中に追加のデータを記憶し、それにより、追加のデータオブジェクトをシステム内に挿入し、またはデータオブジェクトの長さを増加させる。iv.追加のデータオブジェクトは、他のデータオブジェクトの子オブジェクトとして挿入することもできる。データオブジェクトを子データオブジェクトとして挿入する場合、結果として親データオブジェクトの長さも増加する。データ要素を除去するプロセスは上記の逆である。データを挿入しまたは除去する間、挿入点または除去点を越えて親データオブジェクトの記憶空間内に記憶されるいくつかのデータ要素を、記憶ユニット内の新たな論理アドレスに再配置することができる。記憶ユニット内のいくつかの他のデータオブジェクトも、新たな論理アドレスに再配置することができる。データオブジェクトマネージャは、データオブジェクトのアドレスを追跡するために、データオブジェクト内のデータ要素に関する相対アドレス、長さ、データタイプ、または他の情報を必要に応じて記憶する。したがって、データオブジェクトへの直接アクセスが提供される。データオブジェクトマネージャは、データを挿入しまたは除去する間に更新される。データオブジェクトマネージャは、システム内の、またはデータオブジェクト内のいくつかのデータオブジェクトの名前を記憶する。この方法は、データ要素に名前でアクセスできるようにする。データオブジェクトの名前も随時修正することができる。データオブジェクトマネージャは、データオブジェクトのデータタイプを記憶する。データオブジェクトのデータタイプも、随時修正することができる。データオブジェクトのデータタイプまたはデータテンプレートは、そのデータオブジェクトの構造を規定するために使用することができる。データオブジェクトのデータタイプは、データオブジェクト内の欠落したデータ要素のデフォルト値を定めるために使用することもできる。いくつかのデータ要素を階層状に記憶する方法も示す。他の実施形態は、この方法を使用することを示し、データを仮想メモリ領域内に記憶する。データ処理システムは、データオブジェクトを記憶ユニット内に記憶し、以下で論じるようにデータは効率的に挿入しまたは除去することができる。データオブジェクトの構成における記憶ユニット最も一般に使用される、使用される記憶ユニットは、データを効率的に挿入しまたは除去する能力を提供しない。概して、記憶ユニット内でデータを挿入しまたは除去するのにかかる時間は、挿入点または除去点より先の記憶ユニット内のデータの量に依存する。したがって、挿入点より先の記憶ユニット内のデータの量が多い場合、データを挿入するのにその分だけ多くの時間がかかる。このことは、データの挿入および除去を非実用的にする。これらの記憶ユニット内での挿入および除去操作は、On程度であると言われ、ただしnは記憶ユニット内のデータ量である。ただし、他の一部の記憶ユニットは、データを効率的に挿入しまたは除去する。これらの記憶ユニットでは、挿入または除去を実行するのにかかる時間は、挿入点または除去点より先のデータの量に依存しない。これらの記憶ユニットの一部の例には以下のものがある。i.本出願人の発明特許出願第PCT/IN2010/000259号明細書では、ファイルシステムやメモリシステムなど、記憶ユニット内でデータを効率的に挿入し除去する記憶システムについて記載している。ii.本出願人の発明特許出願第PCT/IN2010/000641号明細書では、可変サイズのページを使用し、仮想メモリシステム内でデータを効率的に挿入し除去する仮想メモリシステムについて記載している。iii.Sinclair、AlanWelshによって記載された、フラッシュにより最適化されたファイルシステム特許出願第PCT/UD2007/088165号明細書は、フラッシュベースのファイルシステム内でデータを効率的に挿入しまたは除去する、ファイルシステムである。iv.SimonTathamによって記載されたカウントbツリーcountedb-treeは、指定のインデックスにおいて、ソートされていないbツリー内で項目を挿入しまたは除去することをサポートする、bツリーデータ構造の一形態であるhttp://www.chiark.greenend.org.uk/~sgtatham/algorithms/cbtree.html。これらの他の記憶ユニットは、挿入点または除去点より先のデータを、そのデータにアクセスしまたはそのデータをコピーすることなしに新たなアドレスに再配置する。代わりにこれらの記憶ユニットは、データの物理アドレスをデータの論理アドレスから切り離し、物理アドレスを新たな論理アドレスに再び関連させることによりデータを再配置する。その結果、これらの記憶ユニットは、データの挿入または除去に関してより優れた効率をもたらす。したがって、i.本出願人の発明上記の番号i.の記憶ユニットファイルやメモリ領域などは、データを記憶するためのいくつかの論理アドレスを提供する。この記憶ユニットは、データをその中に物理的に記憶する可変サイズの記憶ブロックのリストも含む。記憶ブロックは、予備容量も含むことができる。記憶ブロック内のアドレスは、論理アドレス空間にマップされる。記憶ブロック内のデータの論理アドレスは、先行する記憶ブロック内の使用済み容量によって決まる。したがって、この記憶ユニットは、その記憶ブロック内に予備容量を維持する。リスト内に追加の記憶ブロックを挿入することにより、記憶ユニット内にさらなる予備容量を挿入することができる。ファイル内にデータが挿入されるとき、この予備容量が使用される。挿入の結果として、挿入点より先の記憶ユニット内のデータが、より高位の論理アドレスに再配置される。したがってこの再配置は、データを、その物理アドレスから新たな物理アドレスにコピーすることも移すことも必要としない。再配置されるデータの記憶ブロックおよび物理アドレスは、変わらないままである。本出願人の発明上記の番号ii.で記載した仮想メモリシステムでは、ページテーブルや変換索引バッファすなわちTLBなどのマッピング装置を使用し、いくつかの可変サイズのページを仮想アドレス領域にマップすることができる。システムが提供する仮想メモリ領域では、仮想アドレス空間からいくつかのページをマップ解除し、それらを新たな仮想アドレス空間に再マップすることにより、所定の挿入点に追加のデータを挿入することができる。したがって、ページ内のデータをその物理アドレスから移動させることなしに、それらのデータは新たな論理アドレスに再配置される。挿入されるデータに記憶空間を与えるために、1つまたは複数の追加のページが挿入点においてマップされる。したがって、その物理アドレスから大量のデータをコピーすることも移動することもなしに、データをメモリ領域から挿入しまたは除去することができる。フラッシュにより最適化されたファイルシステム上記の番号iii.では、いくつかの物理アドレスをいくつかの新たなファイルアドレスに再マップすることにより、フラッシュベースの記憶媒体内のファイル内にデータを挿入する方法について記載している。挿入点より先に記憶されるいくつかのデータオブジェクトを、挿入中に物理媒体内の新たなアドレスに物理的に再配置する必要はない。カウントbツリー上記の番号iv.は、いくつかのノード内にいくつかのエントリを記憶する。エントリは、キーを使用することなしにカウントbツリー内のインデックスにおいて記憶し、取得し、挿入し、除去することができる。bツリー内でエントリとして1バイト記憶することにより、論理アドレス空間を作成することができる。各エントリのインデックスを、データの論理アドレスとみなすことができる。カウントbツリーは、データを構成するための記憶ユニットとして使用することができる。bツリー内の各ノードは、エントリが記憶されるいくつかの物理アドレスを提供する記憶ブロックとみなすことができる。エントリが記憶されるノード内の各物理アドレスは、bツリー内の論理アドレスまたはインデックスに関連する。bツリー内に新たなエントリが挿入されると、いくつかのノード内の少数のエントリが再構成される。これにより、挿入点より先のインデックスにおける多数のエントリが、より高位のインデックスに移される。したがって、物理アドレスの論理アドレスとの関連付けを変えることにより、カウントbツリー内のいくつかのエントリが、より高位のアドレスに再配置される。多数のエントリは、挿入中にアクセスされることも物理的にコピーされることもない。これらの他の記憶ユニット内でデータを挿入し除去する効率性は、Onよりもよく、ただしnは記憶ユニット内のデータ量である。例えば、bツリーしたがってカウントbツリー内でデータを挿入し除去する効率は、Ologn程度であると言われる。既存のデータオブジェクト構成法は、これらの他の記憶ユニットの能力を活用しない。本出願人の発明は、これらの記憶ユニットが提供する、データを速く挿入し除去する能力を活用することを提案する。本発明では、データオブジェクトを記憶するために使用する記憶ユニットは、上記で論じた効率の悪さに見舞われない他の任意の記憶ユニットとすることもできる。次に、本発明を図面と併せて説明する。図1に、データ処理システムの好ましい一実施形態を示す。データ処理システム101は、記憶ユニット102、および記憶ユニット内の順次的な論理アドレス104に記憶されるいくつかのデータオブジェクト103を含む。記憶ユニット102は、前の節で論じたようにデータを効率的に挿入し除去するファイル、メモリ領域、データ構造、または他の記憶ユニットである。データ処理システム内のデータオブジェクト103は、既存のデータオブジェクトまたは実行時に作成されるデータオブジェクトとすることができる。データ処理システム内のデータオブジェクトは、構造体、アレイ、長さに基づくデータオブジェクト、データ構造、ファイル構造、または先に記載した他の任意のデータタイプ、もしくは以下に記載するデータオブジェクトのうちの1つのインスタンス等とすることができる。データオブジェクトは、他のデータオブジェクトの子データオブジェクトとすることもできる。データ処理システムに対して行われるいくつかの操作について、図面と併せて以下に説明する。図2は、可変長アレイVA201のデータテンプレートを示す。VA201は、複合データオブジェクトであり、その記憶空間の中にいくつかの固定サイズのデータ要素を記憶するために使用する。VA201は、i.Lenフィールド202、およびii.データ空間フィールド203を含む。データ空間フィールド203は、VA201内のいくつかの要素を記憶するために確保される空間を表す。Lenフィールド202は、整数フィールドであり、データ空間フィールド203の長さを記憶するために使用する。ただし、データ空間フィールド203は、予備空間を一切確保しない。VAのインスタンスが作成されると、所定数の固定サイズレコードを記憶するのに十分大きいようにデータ空間フィールドが作成される。データ空間フィールドの長さは、Lenフィールド内に記憶される。VAに割り当てられる総記憶空間は、データ空間フィールドの長さ、およびLenフィールドの長さの和に等しい。データ要素は、データ空間フィールド内に記憶される。追加のデータ要素をVA内に随時挿入することができる。図3は、VA内にデータ要素を挿入する方法を示すフローチャートである。したがって、i.ステップ301で、新たなレコードのサイズに等しい追加の記憶空間を記憶ユニット102内に挿入し、それにより、a.挿入点以降にあるデータ処理システム102内の1つまたは複数の既存のデータオブジェクトがより高位のアドレスに移され、b.データ空間フィールド303の長さが増加され、ii.ステップ302で、Lenフィールドの値を更新し、iii.ステップ303で、新たなデータ要素をデータ空間フィールド内に記憶する。VA内のデータ要素を除去するプロセスは、挿入プロセスの逆である。データ空間フィールド内に追加の記憶空間が挿入される場合、記憶ユニット内の挿入点以降において記憶ユニット102内に記憶される、1つまたは複数のデータオブジェクトがより高位のアドレスに移され、VAのサイズが増加される。同様に、VA内の記憶空間が除去される場合、点または除去より先の1つまたは複数のデータオブジェクトがより低位のアドレスに移され、VAのサイズが減らされる。こうしてVAの長さが修正されると、VA内の既存のデータ要素の1つまたは複数が新たなアドレスに移される。したがって、VA自体が他のデータオブジェクトの子である場合、VA内でデータ要素が挿入されまたは除去されるとき、親オブジェクト内の1つまたは複数のデータ要素が再配置される可能性がある。図4は、可変タイプデータオブジェクトVTDO401を示す。VTDO401は、単一のデータ要素を記憶するために使用する。VTDO401内に記憶されるデータ要素のデータタイプは、以下に説明するように随時変わり得る。図4に示すように、VTDO401は、i.データタイプフィールド402、ii.データ空間フィールド403、およびiii.データ要素404を含む。データタイプフィールド402は、データ要素404のデータタイプを記憶するために使用する。データ空間フィールド403は、データタイプフィールド402内に記憶されるデータタイプに応じて、データ要素404を記憶するために確保される空間を表す。データ要素404は、データ空間フィールド403内に記憶される。VTDOのインスタンスが作成されると、データタイプフィールドを使用して所定のデータタイプを記憶し、データ空間フィールドには、所定のデータタイプのインスタンスを記憶するのに十分な記憶空間が与えられる。VTDOに割り当てられる総記憶空間は、データタイプフィールドに割り当てられる記憶空間の和、およびデータ要素のサイズに等しい。データ要素404のデータタイプは、随時修正することができる。図5は、データ要素のデータタイプを修正する方法を示すフローチャートである。したがって、i.ステップ501で、新たなデータタイプをデータタイプフィールド内に記憶する。ii.ステップ502で、新たなデータタイプの記憶要件を、データ空間フィールドに既に割り当てられた記憶空間の量と比較する。iii.ステップ503で、新たなデータタイプの記憶要件がデータ空間フィールドの既存の長さを上回る場合、追加の記憶空間をデータ空間フィールド内に挿入し、それによりVTDOのサイズを増加させる。iv.ステップ504で、新たなデータタイプの記憶要件がデータ空間フィールドの既存の長さを下回る場合、データ空間フィールド内の余分な記憶空間を除去し、それによりVTDOのサイズを減らす。v.ステップ505で、新たなデータタイプに応じたデータ要素の値をデータ空間フィールド内に記憶する。記憶空間を挿入しまたは除去する結果として、データ処理システム101内でVTDOを越えて記憶されるいくつかのデータオブジェクトを、記憶ユニット内の新たな論理アドレスに移すことができる。図6Aおよび図6Bは、データオブジェクトを挿入する前および挿入した後それぞれの、記憶ユニット内における、例示的データ処理システム内のデータオブジェクトの配置を示す。図6Aは、挿入前のいくつかのデータオブジェクトのアドレスを示す。したがって、データオブジェクト601、602、603、604、および605が、記憶ユニット内のアドレス611から622、623から630、631から635、636から643、および644から650のそれぞれに記憶される。データオブジェクト603は、可変長アレイVAであり、データ要素603A、603B、603C、および603Dの親オブジェクトである。VAのLenフィールドは、アドレス631に記憶される。データ要素603A、603B、603C、および603Dは、アドレス632、633、634、および635のそれぞれに記憶される。図6Bは、データオブジェクト603内に追加のデータ要素を挿入した後の、データオブジェクトのアドレスを示す。データオブジェクト603内で、データ要素603Cの後に追加のデータ要素603Eが挿入されている。データオブジェクト601、602、603、604、および605は、今ではアドレス611から622、623から630、631から636、637から644、および645から651のそれぞれに記憶されている。VAのLenフィールドは、アドレス631に記憶される。データオブジェクト603内のデータ要素603A、603B、603C、603E、および603Dは、アドレス632、633、634、635、および636のそれぞれに記憶される。図7は、いくつかの可変長データ要素がその中に記憶されるデータオブジェクトである、複合オブジェクトCO701を示す。CO内のデータ要素の数は固定されていない。いくつかのデータ要素を、CO内で随時挿入しまたは除去することができる。CO内のデータ要素のサイズは可変である。あるデータ要素のサイズが、別のデータ要素のサイズと等しい必要はない。データ要素のサイズは、随時修正することができる。図7に示すように、CO701は、i.要素数フィールド702、ii.データオブジェクトマネージャ703、iii.データ空間フィールド707を含む。データオブジェクトマネージャ703は、i.要素サイズフィールド704、ii.データタイプフィールド705、およびiii.要素名フィールド706を含む。要素数フィールド702は、整数フィールドであり、CO内の要素数を記憶するために使用する。このフィールド内の値は、CO内で要素が挿入されまたは除去されるときに更新される。データオブジェクトマネージャ703は、CO内に記憶されるデータ要素の長さ、データタイプ、および要素名を追跡するために使用する。要素サイズフィールド704は、VA201のインスタンスであり、整数のリストを記憶するために使用する。このアレイ内の各エントリは、CO内に記憶される対応するデータ要素のサイズを表す。データタイプフィールド705は、VA201のインスタンスであり、データタイプのリストを記憶するために使用する。このアレイ内の各エントリは、CO内の対応するデータ要素のサイズを表す。要素名フィールド706は、VA101のインスタンスであり、名前のリストを記憶するために使用する。このアレイ内の各エントリは、CO内の対応するデータ要素の名前を表す。データ空間フィールド707は、CO内のいくつかの要素を記憶するために確保される空間を表す。データ空間フィールド707は、予備空間を一切確保しない。CO内に記憶されるデータ要素は、そのインデックスまたは位置によってアクセスすることができる。データ要素の相対アドレスは、先行するデータ要素のサイズを合計することで求めることができる。データ要素は、データ空間フィールド内の相対アドレスにおいてアクセスすることができる。CO内に記憶されるデータ要素は、その名前によってもアクセスすることができる。各データ要素の名前は、要素名フィールド内で見つけることができる。空のCOのインスタンスは、i.要素数フィールド内の値をゼロに設定すること、ii.空の要素サイズフィールドを作成すること、iii.空のデータタイプフィールドを作成すること、iv.空の要素名フィールドを作成すること、およびv.空のデータ空間フィールドを作成することによって作成される。いくつかのデータ要素を、CO内に随時挿入することができる。図8は、所定のインデックスにおいてCO内に追加のデータ要素を挿入する方法を示す、フローチャートを示す。したがって、i.ステップ801で、要素数フィールドの値をインクリメントし、ii.ステップ802で、新たなデータ要素のサイズを示すために、所定のインデックスにおいて要素サイズフィールド内に整数値を挿入し、iii.ステップ803で、新たなデータ要素のデータタイプを示すために、所定のインデックスにおいてデータタイプフィールド内にデータタイプ値を挿入し、iv.ステップ804で、新たなデータ要素の名前を示すために、所定のインデックスにおいて要素名フィールド内に名前値を挿入し、v.ステップ805で、新たなデータ要素のサイズに等しい記憶空間を、データ空間フィールド内の適切な位置に挿入し、それにより、a.データ空間フィールドの長さが増加され、b.挿入点以降にある既存のデータ要素がより高位のアドレスに移され、iv.ステップ806で、ステップ805で挿入した記憶空間内に新たなデータ要素を記憶する。CO内のデータ要素を除去するプロセスは、挿入プロセスの逆である。CO内に追加の記憶空間が挿入されると、データオブジェクトの境界以降の1つまたは複数のデータがより高位のアドレスに移される。VA1内の余分な記憶空間が除去されると、データオブジェクトの境界以降の1つまたは複数のデータがより低位のアドレスに移される。したがって、1つまたは複数の他のデータ要素のアドレスが修正され得る。同様に、データオブジェクト自体が他のデータオブジェクトの子である場合、CO内に記憶空間が挿入されるとき、親オブジェクト内の1つまたは複数のデータ要素のアドレスが修正され得る。ネストされたデータオブジェクトのサイズも、随時修正することができる。例えば、VTDOは、CO内の所定のインデックスに記憶されるネストされたデータ要素である。データ要素のサイズが修正されると、要素サイズフィールド内の対応するエントリが更新される。この方法は、データが挿入されまたは除去された後、全てのデータオブジェクトがその既存のまたは新たなアドレスにおいてアクセス可能であることを確実にする。したがって、ネストされたデータオブジェクトを含め、データオブジェクト内でデータを随時挿入しまたは除去することができる。図9は、CO内にネストされる、ネストされたデータオブジェクト内に追加のデータ要素を挿入するためのフローチャートを示す。したがって、i.ステップ901で、ネストされたデータオブジェクト内に追加のデータ要素を挿入することにより、ネストされたデータオブジェクトの長さを増加させる。その結果、ネストされたデータオブジェクトより先の、記憶ユニット内の1つまたは複数のデータオブジェクトが新たなアドレスに移される。次のステップは、ステップ902である。ii.ステップ902で、データオブジェクトの長さをCO内の要素サイズフィールド内で更新する。次のステップは、ステップ903である。iii.ステップ901および902の結果として、親データオブジェクトCOのサイズも修正される。ステップ903で、COが他のデータオブジェクト内にネストされている場合、ステップ902を実行することにより、COの新たな長さを、その親データオブジェクトの要素サイズフィールド内で更新する。さもなければ、次のステップは、ステップ904である。iv.ステップ904で、ネストされたオブジェクト内にデータを挿入するプロセスは完全である。いくつかの改変形態があり得る。例えば、i.CO内のデータオブジェクトマネージャでは、要素サイズフィールドの代わりに、要素アドレスフィールドを置き換えることができる。要素アドレスフィールドは、CO内に記憶されるデータ要素の相対アドレスを追跡する。ii.データタイプフィールドを使用してデータタイプを追跡することができ、それによりデータ要素の長さを追跡することができる。そのような場合、要素サイズフィールドは必要でないことがある。iii.各データ要素のデータタイプが同じであり、またさもなければ求めることができる場合、データタイプフィールドは必要でないことがある。iv.データ要素に名前でアクセスする必要がない場合、要素名フィールドは必要でないことがある。v.この方法は、欠落したデータ要素のデフォルト値を提供するよう、容易に向上させることができる。例えば、データオブジェクト内の欠落した要素のデフォルト値は、データオブジェクトのデータテンプレート内に規定することができる。図10Aおよび図10Bは、本発明による階層型データ構造HDS1001を示す。階層型データ構造HDS1001は、いくつかのデータ要素が階層状に配置されるデータオブジェクトである。階層内の各データ要素はノードであり、このノードはサブノードを有する場合もある。図10Aは、HDS内のノード間の関係の概略図を示す。図10Aによれば、ノード1002がこの階層のルートノードである。ノード1002は、3つのサブノード、すなわちノード1003、1004、および1005を有する。ノード1003は2つのサブノード、すなわちノード1006および1007を有する。ノード1004は、3つのサブノード、すなわちノード1008、ノード1009、およびノード1010を有する。ノード1005は2つのサブノード、すなわちノード1011およびノード1012を有する。各ノードは10バイトの長さを有する。各ノードはインデックスを有する。ノードのインデックスは、レベル順走査または幅優先走査を用いて走査したときの、階層内の他のノードに対するそのノードの位置である。したがって、ノード1002、1003、1004、1005、1006、1007、1008、1009、1010、1011、および1012のインデックスは、それぞれ1、2、3、4、5、6、7、8、9、10、および11である。データオブジェクト内のノードのアドレスは、そのノードのインデックスによって決まる。図10Bは、記憶ユニット内のノードのアドレスを示す。したがって、ノード1002、1003、1004、1005、1006、1007、1008、1009、1010、1011、および1012は、それぞれアドレス10、20、30、40、50、60、70、80、90、100、および110に記憶される。図10Cおよび図10Dは、階層内に追加のノードを挿入した後の階層型データ構造HDS1001を示す。図10Cは、階層型データ構造HDS1001の概略図を示す。したがって追加のノード、すなわちノード1013が、ノード1004内で、サブノード1008の後にサブノードとして挿入されている。図10Dは、追加のノードを挿入した後の各ノードのアドレスを示す。追加のノードを挿入した後のノード1002、1003、1004、1005、1006、1007、1008、1013、1009、1010、1011、および1012のインデックスは、それぞれ1、2、3、4、5、6、7、8、9、10、11、および11である。ノード1002、1003、1004、1005、1006、1011、1007、1008、1009、および1010は、それぞれアドレス10、20、30、40、50、60、70、80、90、および100に記憶される。データ要素のサイズが固定されておらず、可変である場合、データオブジェクト間の関係はさらに柔軟に表すことができる。可変サイズのデータオブジェクトを使用することについては、上記で既に詳しく示している。図11は、本発明の別の好ましい実施形態を示す。したがって、データ処理システム1001は、i.いくつかのデータオブジェクト1102、およびii.仮想メモリ領域1103を含む。仮想メモリ領域1103は、i.論理アドレス空間1104、ii.ページのリスト1105、およびiii.メモリ管理ユニット1106を含む。仮想メモリシステム内のページのリスト1105はいくつかのページを含み、各ページは、仮想メモリ領域内にデータを記憶するためのいくつかの物理アドレスを提供する。ページのサイズは固定されておらず、あるページのサイズが、リスト内の他のページのサイズと異なってもよい。メモリ管理ユニット1106は、ページテーブルTLB、またはページ内のいくつかの物理アドレスを仮想メモリ領域内のいくつかの論理アドレスにマップするための他の装置を含む。メモリ管理ユニットは、いくつかの可変サイズのページを論理アドレス空間にマップすることができる。例えば、本出願人の発明特許出願第PCT/IN2010/000641号明細書の中で記載したメモリ管理ユニットを使用してもよい。ページテーブルエントリ内の各可変サイズのページは、論理アドレスに関連する。メモリ管理ユニットを使用して、ページをその関連する論理アドレスにマップする。ページの論理アドレスは、リスト内の先行するページ内のバイト数によって決まる。いくつかの追加のバイトを、仮想メモリ領域内に随時挿入することができる。図12は、いくつかの追加のバイトを仮想メモリ領域内に挿入するためのフローチャートを示す。したがって、i.ステップ1201で、対応するページテーブルエントリを不存在値で印付けすることにより、メモリ管理ユニット内のいくつかのページをマップ解除する。ii.ステップ1202で、ページのリスト内に、適切なサイズの1つまたは複数の追加のページを挿入する。このことは以下の効果を有する。a.リスト内の1つまたは複数の他のページをより高位の論理アドレスに移すこと、およびb.追加のデータを仮想メモリ領域内に挿入すること。iii.ステップ1203で、対応するページテーブルエントリを存在値で印付けすることにより、リスト内の1つまたは複数のページを仮想メモリ領域にマップする。仮想メモリ領域内のデータを除去する方法は上記の逆である。この方法は、データ処理ユニット内でいくつかの追加のデータオブジェクトを挿入しまたは除去するために使用する。データ処理ユニット内にデータを挿入することの他の詳細については、既に前に説明した。いくつかの改変形態があり得る。例えば、図13はデータ処理システム1301を示す。したがって、データ処理システム1301は、i.いくつかのデータオブジェクト1302、およびii.仮想メモリ領域1303を含む。仮想メモリ領域1303は、i.論理アドレス空間1304、ii.ページのリスト1305、iii.メモリ管理ユニット1306、およびiv.ページスワッピング装置1307を含む。ページのリスト1305は、いくつかの固定サイズのページを含む。メモリ管理ユニット1306は、固定サイズのページを仮想メモリ領域にマップするどんなメモリ管理ユニットでもよい。このメモリシステムは、ページスワッピング装置1307も含む。ページスワッピング装置1307は、本出願人の発明PCT/IN2010/0000259号明細書の中で記載したファイルである。このファイルは、先に論じたようにデータを効率的に挿入し除去することを支援する。ページスワッピング装置は、ディスク空間を使用することにより、論理アドレス空間を拡張するために使用する。ページは、物理メモリ内に、またはページスワッピング装置内に随時位置することができる。i.メモリ管理ユニット内の1つまたは複数のページテーブルエントリを無効化し、1つまたは複数のページを論理アドレス空間からマップ解除し、ii.a.記憶ブロック内の予備容量を使用すること、またはb.1つまたは複数の追加の記憶ブロックを挿入することにより、ファイル内に追加の予備容量を挿入することにより、ファイル内に追加の記憶空間を挿入し、iii.1つまたは複数のページを論理アドレス空間にマップすることにより、仮想メモリ領域内にいくつかの追加のバイトを挿入することができる。データオブジェクトを修正することに関する他の詳細については、先に記載した。結論、効果、および範囲したがって、様々な実施形態のデータ処理システムを使用して、大きく複雑なデータオブジェクトを効率的に作成し、操作することができる。このデータ処理システムは、データおよびデータオブジェクトを操作する任意のシステムとすることができる。このデータ処理システムは、アプリケーションプログラム、ならびにシステムプログラムで使用することができる。この方法は、多岐にわたるシステムで使用することができる。この方法は、コンパイル済みプログラムまたはインタプリタ型プログラムで使用することができる。この方法は、コンパイラ、データベースシステム、文書処理システム、ファイルシステム、仮想メモリシステム、ネットワーキングシステムおよび装置等で使用することができる。この方法は、データ構造、ファイル構造、およびデータベースを実装するのにも有用である。この方法は、プロセススタック内に追加のデータを挿入するために使用することもできる。この方法は、xmlデータを効率的な形式で記憶するのにも有用であり、データは直接操作することができる。データは、コンピュータまたは他のコンピューティングデバイス上のメモリ領域、ファイル、アレイ、および他のデータ構造が含まれる任意の適切な記憶ユニット内に、または分散環境内に記憶することができる。