(57)【要約】  本発明における情報処理装置は、複数の属性データからなる一群のタプルデータが行方向に位置し、属性が列方向に位置して構成された表形式のデータを、タプルデータを属性データごとにまとめて記憶装置に格納するデータ管理手段と、データベースに対する所定の処理を実行するデータ処理手段と、を備え、データ管理手段は、タプルデータを構成する各属性データを、当該属性データごとにそれぞれ設定された所定容量の記憶領域を有する複数のチャンクに、表形式においてタプルデータが位置する順番で格納するとともに、データ処理手段にて属性ごとに設定されたチャンク内から削除された属性データが含まれるタプルデータの表形式における順番を特定する情報を表す削除データ情報を属性ごとに取得し、当該削除データ情報に基づいてチャンクを解放する。
2014057616.tif 000002
【特許請求の範囲】
【請求項１】
複数の属性データからなる一群のタプルデータが行方向に位置し、前記属性が列方向に位置して構成された表形式のデータを、前記タプルデータを前記属性データごとにまとめて記憶装置に格納するデータ管理手段と、
前記データベースに対する所定の処理を実行するデータ処理手段と、
を備え、
前記データ管理手段は、前記タプルデータを構成する各属性データを、当該属性データごとにそれぞれ設定された所定容量の記憶領域を有する複数のチャンクに、前記表形式において前記タプルデータが位置する順番で格納するとともに、前記データ処理手段にて前記属性ごとに設定された前記チャンク内から削除された前記属性データが含まれる前記タプルデータの前記表形式における順番を特定する情報を表す削除データ情報を前記属性ごとに取得し、当該削除データ情報に基づいて前記チャンクを解放する、
情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記データ管理手段は、前記データ処理手段にて前記チャンク内から前記属性データが削除された場合に、当該属性データが含まれる前記タプルデータの前記表形式における順番を特定する前記削除データ情報を前記属性ごとに前記記憶装置に記憶し、当該記憶されている前記属性ごとに前記削除データ情報を取得して当該削除データ情報に基づいて前記チャンクを解放する、
情報処理装置。
【請求項３】
請求項１又は２に記載の情報処理装置であって、
前記データ管理手段は、所定の前記チャンクについて当該チャンク内に格納された全ての前記属性データが削除された場合に、当該チャンク内から削除された前記属性データが含まれる前記タプルデータの前記表形式における順番を特定する前記削除データ情報を前記属性ごとに前記記憶装置に記憶し、前記チャンクを解放する、
情報処理装置。
【請求項４】
請求項１乃至３のいずれかに記載の情報処理装置であって、
前記データ管理手段は、前記属性ごとに取得した前記削除データ情報のそれぞれに、共通する前記削除データ情報が含まれる場合に、当該共通する前記削除データ情報を削除することにより、削除した当該共通する前記削除データ情報に対応する、解放された前記チャンクより後に前記属性データを格納したチャンク内の当該属性データの前記表形式における順番を繰り上げる、
情報処理装置。
【請求項５】
請求項１乃至４のいずれかに記載の情報処理装置であって、
前記データ管理手段は、前記属性ごとに取得した前記削除データ情報として、前記チャンクの先頭に格納した前記属性データの前記表形式における順番を特定する開始データ情報と、前記チャンク内に格納した前記属性データの数である属性データ数と、を取得するとともに、前記属性ごとの前記削除データ情報のそれぞれに、当該共通する前記開始データ情報と前記属性データ数とが含まれる場合に、当該共通する前記開始データ情報と前記属性データ数とを削除することにより、当該共通する前記削除データ情報に対応する、解放された前記チャンクより後に前記属性データを格納したチャンク内の当該属性データの前記表形式における順番を前記属性データ数だけ繰り上げる、
情報処理装置。
【請求項６】
請求項１乃至４に記載の情報処理装置であって、
前記データ管理手段は、前記属性ごとに前記各チャンクに対して、前記チャンクの先頭に格納した前記属性データの前記表形式における順番を特定する開始データ情報と、前記チャンクの末尾に格納した前記属性データの前記表形式における順番を特定する終了データ情報と、を取得し、前記開始データ情報と前記終了データ情報が連続していない場合に、不連続な範囲の前記属性データの前記表形式における順番を特定する情報を、前記削除データ情報として取得し、前記属性ごとの前記削除データ情報のそれぞれに、共通する前記開始データ情報と前記終了データ情報とが含まれる場合に、当該共通する前記開始データ情報と前記終了データ情報とを削除して、前記属性ごとの前記開始データ情報と前記終了データ情報とを繰り上げることにより、解放された前記チャンクより後に前記属性データを格納したチャンク内の当該属性データの前記表形式における順番を繰り上げる、
情報処理装置。
【請求項７】
請求項１に記載の情報処理装置であって、
前記データ管理手段は、前記属性ごとに取得した前記削除データ情報のそれぞれに、共通する前記削除データ情報が含まれており、当該共通する前記削除データ情報が、所定の前記チャンクについて当該チャンク内に格納された全ての前記属性データが削除されていることを表している場合に、当該共通する前記削除データ情報に対応する前記チャンクを解放するとともに、当該解放した前記チャンクより後に前記属性データを格納したチャンク内の当該属性データの前記表形式における順番を繰り上げる、
情報処理装置。
【請求項８】
情報処理装置に、
複数の属性データからなる一群のタプルデータが行方向に位置し、前記属性が列方向に位置して構成された表形式のデータを、前記タプルデータを前記属性データごとにまとめて記憶装置に格納するデータ管理手段と、
前記データベースに対する所定の処理を実行するデータ処理手段と、
を実現させるとともに、
前記データ管理手段は、前記タプルデータを構成する各属性データを、当該属性データごとにそれぞれ設定された所定容量の記憶領域を有する複数のチャンクに、前記表形式において前記タプルデータが位置する順番で格納するとともに、前記データ処理手段にて前記属性ごとに設定された前記チャンク内から削除された前記属性データが含まれる前記タプルデータの前記表形式における順番を特定する情報を表す削除データ情報を前記属性ごとに取得し、当該削除データ情報に基づいて前記チャンクを解放する、ことを実現させるためのプログラム。
【請求項９】
情報処理装置にて、
複数の属性データからなる一群のタプルデータが行方向に位置し、前記属性が列方向に位置して構成された表形式のデータを、前記タプルデータを前記属性データごとにまとめて記憶装置に格納する際に、前記タプルデータを構成する各属性データを、当該属性データごとにそれぞれ設定された所定容量の記憶領域を有する複数のチャンクに、前記表形式において前記タプルデータが位置する順番で格納し、
前記属性ごとに設定された前記チャンク内から削除された前記属性データが含まれる前記タプルデータの前記表形式における順番を特定する情報を表す削除データ情報を前記属性ごとに取得し、当該削除データ情報に基づいて前記チャンクを解放する、
情報処理方法。
【請求項１０】
請求項９に記載の情報処理方法であって、
前記チャンク内から前記属性データが削除された場合に、当該属性データが含まれる前記タプルデータの前記表形式における順番を特定する前記削除データ情報を前記属性ごとに前記記憶装置に記憶し、当該記憶されている前記属性ごとに前記削除データ情報を取得して当該削除データ情報に基づいて前記チャンクを解放する、
情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置にかかり、特に、カラム単位でデータを管理する情報処理装置に関する。
【背景技術】
【０００２】
近年、位置情報などの刻々と変化する大量のデータに対して、できるだけリアルタイムに分析を行う技術が必要とされている。このため、データベースには、高速なクエリ実行性能に加えて、高速なデータの挿入、削除、更新の性能が求められている。【０００３】
例えば、データ分析などの読み取り性能が求められるデータベースにおいて、ＩＯ（Input/Output）効率がよく高速にクエリが実行できるデータベースとして、データをカラム（列）毎に分割して保持するカラムストアデータベースの技術が知られている（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１２３６８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、システムを長時間運用するためには、データの削除によって不要になった記憶領域を解放することや、大量データの追加、削除に対応できることが求められる。以下に、カラムストアデータベースにおけるデータの管理方法の例について説明する。【０００６】
まず、図１を参照して、表形式のデータ１００１について説明する。図１のデータ１００１は、カラムａとカラムｂの２つのカラムを有している。そして、図１のデータ１００１は、５００件のタプルデータを有している。また、図１のデータ１００１には、タプル（行）を一意に特定するためにタプル識別情報（TID）が設定されている。TIDは、タプルの物理的な格納順に０から順に割り当てられた自然数である。【０００７】
ここでは、データ格納のために新たな記憶領域が必要になった場合に新しい記憶領域（ページ）を確保し、ページ内のすべてのデータが不要になった場合にはページを削除（解放）するページング方式を利用した管理方法について説明する。ページング方式を用いてタプルデータを格納する場合、カラムストアデータベースは、所定の大きさの複数の記憶領域（以下、チャンクと記載する）を取得し、カラム（例えばカラムａとカラムｂ）毎に管理する。図２を参照して、タプルをカラム毎に分解し、データを記憶（格納）する例について説明する。【０００８】
例えば、カラムａの１つのデータサイズが４バイトであり、チャンクサイズとして例えば４００バイトの固定長が設定されている場合について説明する。この場合、カラムａのデータの全体の記憶容量として２０００（＝４バイト×５００件）バイトが必要になる。従って、カラムストアデータベースは、図２に示すようにカラムａでは５個のチャンクＣａ０乃至Ｃａ４を取得し、管理する。具体的には、チャンクＣａ０には、TIDが０〜９９の（カラムａの）データが格納される。また、チャンクＣａ１には、TIDが１００〜１９９のデータが格納される。以下同様に、チャンクＣａ２には、TIDが２００〜２９９のデータが格納され、チャンクＣａ３には、TIDが３００〜３９９のデータが格納され、チャンクＣａ４には、TIDが４００〜４９９のデータが格納される。【０００９】
また例えば、カラムｂの１つのデータサイズが２バイトである場合、カラムｂのデータの全体の記憶容量として１０００（＝２バイト×５００件）バイトが必要となる。従って、カラムストアデータベースは、図２に示すように３個のチャンクＣｂ０乃至Ｃｂ２を取得し、管理する。具体的には、チャンクＣｂ０には、TIDが０〜１９９の（カラムｂの）データが格納される。また、チャンクＣｂ１には、TIDが２００〜３９９のデータが格納される。同様に、チャンクＣｂ２には、TIDが４００〜４９９のデータが格納される。【００１０】
上記のようにカラム毎にデータを格納している場合に、チャンク内に含まれる全てのデータを削除した場合、そのチャンクは解放することができる。そして、チャンクを解放した場合、そのチャンクより後にデータを格納したチャンクのTIDを、解放したチャンクに含まれていたデータ数分だけ繰り上げることでTIDを再利用する。【００１１】
しかしながら、上記のように、カラムストアデータベースがカラムａとカラムｂの複数のカラムから構成されている場合、各カラムで１つのチャンクに格納可能なデータ数が異なると、各カラムのTIDに不整合が生じてしまうことがあった。例えば、TIDが１００〜１９９のデータを削除した場合に、図３に示すようにカラムａの２番目のチャンクＣａ１に含まれるデータは全て削除されるので、チャンクＣａ１を解放する。そして、解放したチャンクＣａ１より後にデータを格納したチャンクＣａ２乃至Ｃａ４に含まれるTIDを繰り上げる。【００１２】
一方、TIDが１００〜１９９のデータを削除した場合に、図３に示すようにカラムｂの１番目のチャンクＣｂ０に含まれるデータは一部が削除されるので、チャンクＣｂ０を解放することができず、TIDは繰り上がらない。この結果、カラムａのTID（タプルの情報）とカラムｂのTIDとの間で不整合が生じてしまうという問題があった。【００１３】
このため、本発明の目的は、チャンクを解放した時にタプルの情報に不整合が生じてしまうという問題を解決することができる情報処理装置を提供することにある。
【課題を解決するための手段】
【００１４】
上記目的を達成すべく、本発明の一形態である情報処理装置は、
複数の属性データからなる一群のタプルデータが行方向に位置し、前記属性が列方向に位置して構成された表形式のデータを、前記タプルデータを前記属性データごとにまとめて記憶装置に格納するデータ管理手段と、
前記データベースに対する所定の処理を実行するデータ処理手段と、
を備え、
前記データ管理手段は、前記タプルデータを構成する各属性データを、当該属性データごとにそれぞれ設定された所定容量の記憶領域を有する複数のチャンクに、前記表形式において前記タプルデータが位置する順番で格納するとともに、前記データ処理手段にて前記属性ごとに設定された前記チャンク内から削除された前記属性データが含まれる前記タプルデータの前記表形式における順番を特定する情報を表す削除データ情報を前記属性ごとに取得し、当該削除データ情報に基づいて前記チャンクを解放する、
という構成を取る。【００１５】
また、本発明の他の形態であるプログラムは、
情報処理装置に、
複数の属性データからなる一群のタプルデータが行方向に位置し、前記属性が列方向に位置して構成された表形式のデータを、前記タプルデータを前記属性データごとにまとめて記憶装置に格納するデータ管理手段と、
前記データベースに対する所定の処理を実行するデータ処理手段と、
を実現させるとともに、
前記データ管理手段は、前記タプルデータを構成する各属性データを、当該属性データごとにそれぞれ設定された所定容量の記憶領域を有する複数のチャンクに、前記表形式において前記タプルデータが位置する順番で格納するとともに、前記データ処理手段にて前記属性ごとに設定された前記チャンク内から削除された前記属性データが含まれる前記タプルデータの前記表形式における順番を特定する情報を表す削除データ情報を前記属性ごとに取得し、当該削除データ情報に基づいて前記チャンクを解放する、ことを実現させるためのプログラムである。【００１６】
また、本発明の他の形態である情報処理方法は、
情報処理装置にて、
複数の属性データからなる一群のタプルデータが行方向に位置し、前記属性が列方向に位置して構成された表形式のデータを、前記タプルデータを前記属性データごとにまとめて記憶装置に格納する際に、前記タプルデータを構成する各属性データを、当該属性データごとにそれぞれ設定された所定容量の記憶領域を有する複数のチャンクに、前記表形式において前記タプルデータが位置する順番で格納し、
前記属性ごとに設定された前記チャンク内から削除された前記属性データが含まれる前記タプルデータの前記表形式における順番を特定する情報を表す削除データ情報を前記属性ごとに取得し、当該削除データ情報に基づいて前記チャンクを解放する、
という構成を取る。
【発明の効果】
【００１７】
本発明は、以上のように構成されることによりチャンクを解放した時にカラム毎のデータの整合性を維持することができるという優れた効果を有する。
【図面の簡単な説明】
【００１８】
【図１】データベースの例を説明するための図である。
【図２】カラムごとにデータを記憶する例を説明するための図である。
【図３】記憶したデータを解放する例を説明するための図である。
【図４】本発明における情報処理装置の構成の概略を示すブロック図である。
【図５】本発明における情報処理装置の演算部の構成を示す機能ブロック図である。
【図６】データベースの例を説明するための図である。
【図７】記憶部の例を説明するための図である。
【図８】記憶部の例を説明するための図である。
【図９】記憶部の例を説明するための図である。
【図１０】オフセット管理テーブルの例を説明するための図である。
【図１１】記憶部の例を説明するための図である。
【図１２】記憶部の例を説明するための図である。
【図１３】オフセット管理テーブルに記憶されたデータの概要を説明するための図である。
【図１４】オフセット管理テーブルに記憶されたデータの概要を説明するための図である。
【図１５】データ削除処理を説明するためのフローチャートである。
【図１６】データ検索処理を説明するためのフローチャートである。
【図１７】データ取得処理を説明するためのフローチャートである。
【図１８】本発明における情報処理装置の構成の概略を示すブロック図である。
【図１９】カテゴリ管理テーブルの更新の例を示す図である。
【図２０】記憶部の例を説明するための図である。
【図２１】記憶部の例を説明するための図である。
【図２２】オフセット管理テーブルの例を説明するための図である。
【図２３】オフセット管理テーブルの例を説明するための図である。
【図２４】記憶部の例を説明するための図である。
【図２５】本発明における情報処理装置の構成の概略を示すブロック図である。
【図２６】本発明における情報処理装置の演算部の構成を示す機能ブロック図である。
【図２７】記憶部の例を説明するための図である。
【図２８】記憶部の例を説明するための図である。
【発明を実施するための形態】
【００１９】
＜第１実施形態＞
本発明の第１実施形態を、図４乃至図１７を参照して説明する。図４乃至図１４は、情報処理装置の構成を説明するための図である。図１５乃至図１７は、情報処理装置の動作を説明するための図である。
【００２０】
［構成］
まず、図４を参照して、表形式のデータをカラム（列）単位で記憶し、処理を行う情報処理装置１について説明する。図４は、本実施形態における情報処理装置１の構成例を示すブロック図である。図４に示すように、情報処理装置１は、演算部１１と、記憶部１２と、を備えている。
【００２１】
記憶部１２は、例えば、ハードディスクドライブ、不揮発性メモリ、揮発性メモリ、および、SSD（Solid State Drive）等を備えている。そして、記憶部１２は、カラムデータ２１と、チャンクリスト２２と、オフセット管理テーブル２３と、を記憶する。カラムデータ２１は、データベースのタプルデータをカラム（列）単位でまとめたデータである。カラムデータ２１と、チャンクリスト２２と、オフセット管理テーブル２３との詳細については後述する。
【００２２】
演算部１１は、例えば、CPU（Central Processing Unit）により構成される。演算部１１は、記憶部１２に含まれるROM（Read Only Memory）に格納されたプログラムを読み込み、記憶部１２に含まれるRAM（Random Access Memory）を作業領域としてプログラムを実行する。これにより、演算部１１は、情報処理装置１を制御するための各種機能を実行する。図５は、演算部１１の機能的構成例を示すブロック図である。図５の演算部１１は、プログラムを実行することにより、クエリ処理部４１（データ処理手段）と、カラムデータ管理部４２（データ管理手段）と、チャンク削除判定部４３（データ管理手段）と、オフセット調整部４４（データ管理手段）と、の機能ブロックを有する。
【００２３】
クエリ処理部４１は、ユーザからの処理要求（クエリ）に応じて、表形式のデータ（例えばデータベース）に対する所定の処理を実行する。クエリは例えばＳＱＬ（Structured Query Language）等である。カラムデータ管理部４２は、表形式のデータを構成するタプルデータの各属性データをカラム（属性）ごとにまとめて記憶部１２のカラムデータ２１に格納する。また、カラムデータ管理部４２は、クエリ処理部４１の処理に応じて所定の属性データを抽出し、出力する。
【００２４】
ここで、図６を参照して、表形式のデータについて説明する。図６のデータ６１は、カラムＡとカラムＢの２つのカラムを有している。そして、図６のデータ６１は、５００件のタプルデータを有している。また、図６のデータ６１には、データ６１におけるタプル（行）を一意に特定するためにタプル識別情報（TID）が設定されている。TIDは、タプルデータの物理的な格納順に０から順に割り当てられた自然数である。図６のデータ６１では、TIDとしてTID＝０からTID＝４９９が割り当てられる。
【００２５】
カラムデータ管理部４２は、例えば図６に示す、複数のカラム（属性）の属性データからなる一群のタプルデータが行方向に位置し、カラムが列方向に位置して構成されている表形式のデータ６１を、タプルデータの各属性データをカラム（属性）ごとにまとめて記憶部１２のカラムデータ２１に格納（記憶）する。図７は、記憶部１２の例を示す図である。カラムデータ管理部４２は、図７に示すように、タプルデータを構成する各属性データを、属性データごと（例えばカラムＡの属性データとカラムＢの属性データ）にそれぞれ設定された所定容量の記憶領域を有する複数のチャンクに、表形式においてタプルデータが位置する順番でカラムデータ２１に格納する。
【００２６】
例えば、チャンクサイズが４００バイトの固定長であり、カラムＡの１つの属性データのサイズが４バイトであるとする。この場合、カラムＡの属性データの全体の記憶容量は２０００（４バイト×５００件）バイトになる。そして、１つのチャンクには１００件の属性データが格納可能である。そこで、カラムデータ管理部４２は、図７に示すように５個のチャンクＣＡ０乃至ＣＡ４を取得し、データ６１のカラムＡの各属性データを順番に格納する。なお、図７のカラムデータ２１に記載されたTIDは、説明のために記載したものであり、実際のカラムデータ２１には格納されない。
【００２７】
また、カラムデータ管理部４２は、カラムデータ２１に記憶した複数のチャンクのそれぞれを特定可能なアドレスや識別情報などのポインタ情報をチャンクリスト２２に記憶する。例えば、カラムデータ管理部４２は、チャンクＣＡ０乃至ＣＡ４のそれぞれの先頭アドレスをチャンクリスト２２に記憶する。なお、以下では、チャンクリスト２２に、チャンクの識別情報が記憶されている場合について説明する。すなわち、カラムデータ管理部４２は、カラムＡのチャンクリスト２２Ａにチャンク識別情報ＣＡ０乃至ＣＡ４を記憶する。
【００２８】
一方、例えばカラムＢの１つの属性データのサイズは２バイトであるとする。この場合、カラムＢの属性データの全体の記憶容量は１０００（２バイト×５００件）バイトになる。そして、１つのチャンクには２００件の属性データが格納可能である。そこで、カラムデータ管理部４２は、図７に示すように３個のチャンクＣＢ０乃至ＣＢ２を取得し、データ６１のカラムＢの各属性データを順番に格納する。また、カラムデータ管理部４２は、カラムＢのチャンクリスト２２Ｂにチャンク識別情報ＣＢ０乃至ＣＢ２を記憶する。
【００２９】
これにより、カラムデータ管理部４２は、クエリ処理部４１がデータ６１に対する所定の処理（後述するデータ削除処理とデータ検索処理とデータ取得処理）を実行する場合に、カラム毎に記憶（格納）された各属性データを読み出す。そのため、カラムデータ管理部４２は、クエリ処理部４１により要求された所定のカラムの属性データをより迅速に抽出することができる。
【００３０】
次に、クエリ処理部４１がデータ６１に対して実行するデータ削除処理と、データ検索処理と、データ取得処理と、のそれぞれについて説明する。まず、図８を参照して、データ削除処理について説明する。以下では、クエリ処理部４１が、入力装置（図示せず）を介してユーザからTID＝２００からTID＝２９９の１００件のタプルデータの削除の要求を受け付けた場合について説明する。この場合、クエリ処理部４１は、データ６１のTID＝２００からTID＝２９９のタプルデータを削除する。具体的には、クエリ処理部４１は、カラムデータ２１Ａ，２１Ｂに記憶されたTID＝２００からTID＝２９９の属性データのそれぞれをチャンク内から削除する。例えば、クエリ処理部４１は、チャンクＣＡ２に格納された属性データを削除するとともに、チャンクＣＢ１に格納された属性データを削除する。
【００３１】
そして、チャンク削除判定部４３は、クエリ処理部４１のデータ削除処理によりチャンクが削除可能であるか否かを判定する。具体的には、チャンク削除判定部４３は、クエリ処理部４１にてカラムごとに設定されたチャンク内から削除された属性データが含まれるタプルデータの表形式における順番を特定する情報（TID）を表す削除データ情報をカラムごとに取得する。例えば、カラムＡにおいてクエリ処理部４１によりTID＝２００からTID＝２９９の属性データが削除された場合、チャンク削除判定部４３は、削除データ情報としてTID＝２００からTID＝２９９を取得する。このとき、チャンク削除判定部４３は、取得した削除データ情報に基づいて、チャンクＣＡ２に格納された属性データは全て削除されたと判定する。従って、チャンク削除判定部４３は、チャンクＣＡ２が削除可能であると判定し、カラムデータ２１内のチャンクＣＡ２を解放する。
【００３２】
また、チャンク削除判定部４３は、カラムＡのチャンクリスト２２Ａに記憶されたチャンク識別情報「ＣＡ２」を削除して、チャンクリスト２２Ａを更新（削除データ情報を記憶）する。そして、カラムデータ管理部４２は、チャンク削除判定部４３によりチャンクＣＡ２が解放されると、チャンクＣＡ２に格納していた最初の属性データのTIDである開始TID（開始データ情報）「２００」と、チャンクＣＡ２内に格納していた属性データの数であるオフセット値（属性データ数）「１００」と（削除データ情報）、をオフセット管理テーブル２３Ａに記憶する。
【００３３】
一方、カラムＢにおいてクエリ処理部４１によりTID＝２００からTID＝２９９の属性データが削除された場合、チャンクＣＢ１に格納された属性データは一部が削除されるが、チャンクＣＢ１にはまだ属性データTID＝３００からTID＝３９９が格納されている。従って、チャンク削除判定部４３は、チャンクＣＢ１が削除可能でないと判定し、チャンクＣＢ１の解放を行わない。
【００３４】
次に、クエリ処理部４１がTID＝２００からTID＝２９９の属性データのデータ削除処理を行った後に、データ検索処理を行う場合の処理について以下に説明する。この例では、図６のデータ６１から、カラムＡの属性データが「ＸＸ−４０」であり、カラムＢの属性データが「２０００」であるTID（タプル）を検索する場合の処理について説明する。
【００３５】
クエリ処理部４１は、図８のカラムＡのチャンクリスト２２Ａを参照して、ＣＡ０，ＣＡ１，ＣＡ３，ＣＡ４の順番でチャンクを取り出す。そして、クエリ処理部４１は、マッチング処理を行う。具体的には、クエリ処理部４１は、取り出したチャンク内の属性データが「ＸＸ−４０」と一致するか否かを判定する処理を行う。例えば、クエリ処理部４１は、取り出したチャンクＣＡ０内のTID「０」の属性データが「ＸＸ−４０」と一致するか否かを判定する。以降、クエリ処理部４１は、チャンク内の各属性データを取り出すごとにTIDの値を１インクリメントし、１インクリメントしたTIDに対応する属性データが「ＸＸ−４０」と一致するか否かを判定する。
【００３６】
また、クエリ処理部４１は、TIDの値を１インクリメントしていくことにより、TIDの値と、オフセット管理テーブル２３Ａに記憶された開始TIDの値と、が一致した場合に、TIDの値にオフセット値を加算する。例えば、クエリ処理部４１は、TIDの値を１インクリメントして、TIDの値が「２００」になった場合に、オフセット管理テーブル２３Ａに記憶された開始TID「２００」と一致すると判定する。この場合、クエリ処理部４１は、TIDの値「２００」にオフセット値「１００」を加算して、新たなTIDの値「３００」を取得する。そして、クエリ処理部４１は、TID「３００」の属性データが「ＸＸ−４０」と一致するか否かを判定する。以下、クエリ処理部４１は、上述したデータ検索処理を繰り返す。この結果、例えば属性データ「ＸＸ−４０」が格納されたTID「３５０」を検索することができる。
【００３７】
これにより、クエリ処理部４１は、削除されたチャンクＣＡ２内の属性データを参照することなく、チャンクＣＡ２の後に属性データが格納されたチャンクＣＡ３についてデータ検索処理を実行する。このように、クエリ処理部４１は、チャンクＣＡ２が削除されているにも関わらず、仮想的にカラムデータ２１Ａに記憶されたTID＝０からTID＝４９９の属性データのデータ検索処理を実行することができる。
【００３８】
また、クエリ処理部４１は、カラムＢのチャンクリスト２２Ｂを参照して、ＣＢ０，ＣＢ１，ＣＢ２の順番でチャンクを取り出す。そして、クエリ処理部４１は、取り出したチャンク内の属性データが「２０００」と一致するか否かを判定する。例えば、クエリ処理部４１は、取り出したチャンクＣＢ０内のTID「０」の属性データが「２０００」と一致するか否かを判定する。以降、クエリ処理部４１は、チャンク内の各属性データを取り出すごとにTIDの値を１インクリメントし、１インクリメントしたTIDに対応する属性データが「２０００」と一致するか否かを判定する。
【００３９】
カラムＢのオフセット管理テーブル２３Ｂには、開始TIDとオフセット値とが記憶されていないので、クエリ処理部４１は、TID＝０からTID＝４９９の各属性データに対して順番にデータ検索処理を実行する。
【００４０】
このように、カラムＡのチャンクが１つ解放された場合でも、カラムＡのTIDとカラムＢのTIDとの間に不整合が生じることがなく、クエリ処理部４１は、確実にデータ検索処理を実行することができる。
【００４１】
次に、クエリ処理部４１がTID＝２００からTID＝２９９の属性データのデータ削除処理を行った後に、データ取得処理を行う場合の処理について以下に説明する。この例では、図６のデータ６１から、取得対象のTID「３５０」に対応する属性データを取得する場合の処理について説明する。
【００４２】
クエリ処理部４１は、カラムＡのチャンクリスト２２Ａを参照して、ＣＡ０，ＣＡ１，ＣＡ３，ＣＡ４の順番でチャンクを取り出す。そして、クエリ処理部４１は、取り出したチャンク内の属性データ数をTID（初期値０）に加算する。続いて、クエリ処理部４１は、加算したTIDの値が「３５０」を超えたか否かを判定する。例えば、クエリ処理部４１は、取り出したチャンクＣＡ０内の属性データ数１００（＝TID）が「３５０」を超えたか否かを判定する。クエリ処理部４１は、TID＝１００が「３５０」を超えていないと判定すると、チャンクＣＡ１を取り出し、チャンクＣＡ１内の属性データ数１００をTID（＝１００）に加算する。すなわち、クエリ処理部４１は、TID＝２００を算出する。
【００４３】
このとき、クエリ処理部４１は、TIDの値（＝２００）と、オフセット管理テーブル２３Ａに記憶された開始TIDの値と、が一致すると判定するので、TIDの値にオフセット値「１００」を加算する。すなわち、クエリ処理部４１は、TID＝３００を算出する。そして、クエリ処理部４１は、同様に、TID＝３００が「３５０」を超えていないと判定し、次のチャンクＣＡ３を取り出し、チャンクＣＡ３内の属性データ数１００をTID（＝３００）に加算する。すなわち、クエリ処理部４１は、TID＝４００を算出する。このとき、クエリ処理部４１は、TID＝４００が「３５０」を超えると判定することで、TID「３５０」に対応する属性データが、チャンクＣＡ３の属性データ数を加算する前のチャンクＣＡ３内に格納されていることがわかる。従って、クエリ処理部４１は、チャンクＣＡ３内からTID「３５０」に対応する属性データを取得する。例えば、TID「３５０」に対応する属性データ「ＸＸ−４０」を取得することができる。このように、クエリ処理部４１は、チャンクＣＡ２が削除されているにも関わらず、TID「３５０」に対応する属性データを取得するデータ取得処理を実行することができる。
【００４４】
また、クエリ処理部４１は、カラムＢのチャンクリスト２２Ｂを参照して、ＣＢ０，ＣＢ１，ＣＢ２の順番でチャンクを取り出す。そして、クエリ処理部４１は、取り出したチャンク内の属性データ数をTID（初期値０）に加算する。クエリ処理部４１は、加算したTIDの値が「３５０」を超えたか否かを判定する。カラムＢでは、クエリ処理部４１が、チャンクＣＢ１を取り出すことにより、TID＝４００となり、TID＝４００が「３５０」を超えると判定する。従って、クエリ処理部４１は、チャンクＣＢ１内からTID「３５０」に対応する属性データを取得する。例えば、TID「３５０」に対応する属性データ「２０００」を取得することができる。
【００４５】
このように、カラムＡのチャンクが１つ解放された場合でも、カラムＡのTIDとカラムＢのTIDとの間に不整合が生じることがなく、クエリ処理部４１は、確実にデータ取得処理を実行することができる。
【００４６】
次に、図９を参照して、クエリ処理部４１がTID＝２００からTID＝２９９の属性データのデータ削除処理を行った後に、さらに入力装置（図示せず）を介してユーザからTID＝０からTID＝９９に相当する１００件のタプルデータと、TID＝３００からTID＝３９９に相当する１００件のタプルデータと、の削除の要求を受け付けた場合について説明する。この場合、クエリ処理部４１は、TID＝０からTID＝９９のタプルデータと、TID＝３００からTID＝３９９のタプルデータを削除する。具体的には、クエリ処理部４１は、カラムデータ２１の各カラムに記憶されたTID＝０からTID＝９９の属性データのそれぞれと、TID＝３００からTID＝３９９の属性データのそれぞれと、を削除する。
【００４７】
また、チャンク削除判定部４３は、クエリ処理部４１のデータ削除処理によりチャンクが削除可能であるか否かを判定する。カラムＡにおいてクエリ処理部４１によりTID＝０からTID＝９９の属性データが削除された場合、チャンクＣＡ０に格納された属性データは全て削除される。従って、チャンク削除判定部４３は、チャンクＣＡ０が削除可能であると判定し、カラムデータ２１内のチャンクＣＡ０を解放する。また、同様に、カラムＡにおいてクエリ処理部４１によりTID＝３００からTID＝３９９の属性データが削除された場合、チャンクＣＡ３に格納された属性データは全て削除される。従って、チャンク削除判定部４３は、チャンクＣＡ３が削除可能であると判定し、カラムデータ２１内のチャンクＣＡ３を解放する。
【００４８】
さらに、チャンク削除判定部４３は、カラムＡのチャンクリスト２２Ａに記憶されたチャンク識別情報「ＣＡ０」と「ＣＡ３」とを削除する。そして、カラムデータ管理部４２は、チャンク削除判定部４３によりチャンクＣＡ０，ＣＡ３が解放されると、チャンクＣＡ０，ＣＡ３のそれぞれの開始TID「０」と開始TID「３００」と、チャンクＣＡ０，ＣＡ３内のそれぞれに格納していた属性データの数であるオフセット値「１００」と、をオフセット管理テーブル２３Ａに記憶する。なお、開始TID「２００」とオフセット値「１００」との情報は、TID＝２００からTID＝２９９の属性データが削除されたことを表しているので、クエリ処理部４１によりTID＝３００からTID＝３９９の属性データが削除された場合に、TID＝２００からTID＝３９９の属性データが削除されたことになる。従って、カラムデータ管理部４２は、図１０に示すように、開始TID「２００」とオフセット値「２００」とをオフセット管理テーブル２３Ａに記憶することができる。
【００４９】
一方、カラムＢにおいてクエリ処理部４１によりTID＝０からTID＝９９の属性データが削除された場合、チャンクＣＢ０に格納された属性データは一部が削除されるが、チャンクＣＢ０にはまだ属性データが格納されている。従って、チャンク削除判定部４３は、チャンクＣＢ０が削除可能でないと判定し、チャンクＣＢ０の解放を行わない。また、カラムＢにおいてクエリ処理部４１によりTID＝３００からTID＝３９９の属性データが削除された場合、チャンクＣＢ１に格納された属性データは全て削除される。従って、チャンク削除判定部４３は、チャンクＣＢ１が削除可能であると判定し、カラムデータ２１内のチャンクＣＢ１を解放する。そして、チャンク削除判定部４３は、カラムＢのチャンクリスト２２Ｂに記憶されたチャンク識別情報「ＣＢ１」を削除する。続いて、カラムデータ管理部４２は、チャンク削除判定部４３によりチャンクＣＢ１が解放されると、チャンクＣＢ１の開始TID「２００」、チャンクＣＢ１内に格納していた属性データの数であるオフセット値「２００」と、をオフセット管理テーブル２３Ｂに記憶する。
【００５０】
上記のように、データ削除処理を実行すると、図９のオフセット管理テーブル２３Ａとオフセット管理テーブル２３Ｂとのそれぞれに記憶された情報が一致することがある。ここで、オフセット管理テーブル２３を最適化（調整）する処理について説明する。なお、オフセット調整部４４は、オフセット管理テーブル２３を最適化する処理を任意のタイミングにて実行することができる。例えば、オフセット調整部４４は、予め設定された時間が経過した場合、または、カラムデータ２１の各チャンク内に格納された属性データの数が予め設定された件数だけ削除された場合に、オフセット管理テーブル２３を最適化する。オフセット調整部４４は、図９（または図１０）のオフセット管理テーブル２３Ａと図９のオフセット管理テーブル２３Ｂとをそれぞれ参照し、共通するTIDの範囲（削除データ情報）があるか否かを判定する。
【００５１】
図９と図１０の例では、カラムＡとカラムＢとで開始TID「２００」、オフセット値「２００」が一致する（共通である）。そのため、オフセット調整部４４が共通する開始TID「２００」、オフセット値「２００」の情報を削除しても、クエリ処理部４１により所定の処理を実行するときにTIDの不整合は生じない。従って、オフセット調整部４４は、図１１に示すように、オフセット管理テーブル２３Ａとオフセット管理テーブル２３Ｂとのそれぞれに記憶された開始TID「２００」、オフセット値「２００」を削除する。これにより、冗長する情報を削除して、オフセット管理テーブル２３の記憶容量を小さくすることができる。
【００５２】
また、オフセット管理テーブル２３を参照し、共通するTIDの範囲がある場合に、そのTIDの範囲を削除することによって、カラムデータ管理部４２は、共通するTIDの範囲（削除データ情報）に対応する、解放されたチャンクより後に属性データを格納したチャンク内のTIDの値（属性データの表形式における順番）を繰り上げることができる。具体的には、共通するTIDの範囲がTID＝２００からTID＝３９９である場合に（図９）、オフセット調整部４４は、その共通するTIDの範囲の属性データをオフセット管理テーブル２３から削除する（図１１）。そして、オフセット調整部４４は、削除した属性データ以降にオフセット管理テーブル２３内に格納された属性データのTIDの範囲（値）を調整する（繰り上げる）。これにより、クエリ処理部４１がカラム毎に属性データを読み出す（例えばデータ検索処理またはデータ取得処理）時に、カラムデータ管理部４２は、共通するTIDの範囲に対応する、解放されたチャンク（例えばチャンクＣＡ２，ＣＡ３）より後に属性データを格納したチャンク（例えばチャンクＣＡ４）内のTID＝４００からTID＝４９９の値（属性データの表形式における順番）を２００（属性データ数）ずつ順次繰り上げて、TID＝２００からTID＝２９９として属性データを取得（例えば図１２参照）する。そして、カラムデータ管理部４２は、取得した属性データをクエリ処理部４１に出力する。このように、TIDの値を小さな値に保つことができ、TIDの値の桁あふれを防ぐことができる。従って、長期間のデータベースの運用が可能になる。
【００５３】
次に、図１３と図１４とを参照して、３つのカラム（カラムＡとカラムＢとカラムＣ）を有するデータベースに対するオフセット調整処理の概要について説明する。図１３は、オフセット管理テーブル２３に記憶した削除データ情報をイメージ化した図を示している。図１３の例では、TID＝０からTID=Ｎ（Ｎは自然数）までの（Ｎ＋１）件のタプルデータを有するデータベースに対して、所定のタプルデータの削除が行われて、カラムごとのチャンクの解放が数回行われているものとする。図１３の例では、オフセット管理テーブル２３に、カラムＡにおいて解放された４つのチャンクのTIDの範囲８１Ａ−１乃至８１Ａ−４が記憶され、カラムＢにおいて解放された２つのチャンクのTIDの範囲８１Ｂ−１乃至８１Ｂ−２が記憶され、カラムＣにおいて解放された４つのチャンク８１Ｃ−１乃至８１Ｃ−４のTIDの範囲が記憶されている。
【００５４】
そして、オフセット調整部４４は、これらの解放されたチャンクのTIDの範囲（削除データ情報）のうち、共通する削除データ情報を検出し、検出した削除データ情報に対応する解放されたチャンクより後に属性データを格納したチャンクのTIDを繰り上げる。すなわち、オフセット調整部４４は、TIDの範囲８１Ａ−１乃至８１Ａ−４と、TIDの範囲８１Ｂ−１乃至８１Ｂ−２と、TIDの範囲８１Ｃ−１乃至８１Ｃ−４と、のうち共通するTIDの範囲を切り詰める処理を行う。
【００５５】
図１３の例では、共通削除データ情報９１−１，９１−２により示されるTIDの範囲が、削除可能な共通するTIDの範囲になる。ここで、共通削除データ情報９１−１に含まれる属性データの数をＸ個（Ｘは自然数，Ｘ＜Ｎ）とし、共通削除データ情報９１−２に含まれる属性データの数をＹ個（Ｙは自然数，Ｙ＜Ｎ）とする。この場合に、オフセット調整部４４が、共通削除データ情報９１−１，９１−２のそれぞれを削除して、TIDの繰り上げを行った結果を図１４に示す。
【００５６】
図１４は、オフセット調整処理を行った後のオフセット管理テーブル２３に記憶した削除データ情報をイメージ化した図を示している。図１４に示すように、オフセット調整部４４が、図１３の共通削除データ情報９１−１，９１−２により示されるTIDの範囲を削除し、TIDを繰り上げることにより、TIDの範囲が切り詰められている。これにより、TIDの最大値がＮから（Ｎ−（Ｘ＋Ｙ））に減少する。具体的には、オフセット調整部４４が共通する削除データ情報を削除することにより、オフセット管理テーブル２３に、カラムＡにおいて解放されたチャンクのTIDの範囲８１Ａ−１’，８１Ａ−２’，８１Ａ−３，８１Ａ−４が記憶される。また、オフセット管理テーブル２３に、カラムＢにおいて解放されたチャンクのTIDの範囲８１Ｂ−１’，８１Ｂ−２’が記憶される。さらに、オフセット管理テーブル２３に、カラムＣにおいて解放されたチャンクのTIDの範囲８１Ｃ−１’，８１Ａ−２，８１Ａ−３’，８１Ａ−４が記憶される。
【００５７】
このように、３つのカラムを有するデータベースに対してオフセット調整処理を実行する場合にも、TIDの値の桁あふれを防ぐことができる。これにより、長期間のデータベースの運用が可能になる。勿論、カラムの数は、３つに限られず、４つ以上の複数であってもよい。また、図１３と図１４に示すように、カラムごとのオフセット管理テーブル２３に記憶された開始TIDとオフセット値が一致しない場合でも、共通する削除データ情報（TIDの範囲）が存在する場合に、オフセット調整部４４は、当該共通する削除データ情報に対応する解放されたチャンクの情報を削除し、当該チャンクより後に属性データを格納したチャンクのTIDを繰り上げることができる。
【００５８】
［動作］
次に、図１５乃至図１７を参照して、上述した情報処理装置１の動作について詳細に説明する。図１５は、データ削除処理を説明するためのフローチャートである。図１６は、データ検索処理を説明するためのフローチャートである。図１７は、データ取得処理を説明するためのフローチャートである。
【００５９】
まず、図１５を参照してデータ削除処理について説明する。データ削除処理では、クエリ処理部４１は、削除情報を受け付ける（ステップＳ１）。削除情報は、削除の対象となるタプルデータを表す情報である。例えば、クエリ処理部４１は、削除情報としてデータ６１のTID＝２００からTID＝２９９のタプルデータを受け付ける。続いて、クエリ処理部４１は、チャンク内の属性データを削除する（ステップＳ２）。例えば、クエリ処理部４１は、カラムデータ２１Ａ，２１Ｂに記憶されたTID＝２００からTID＝２９９の属性データのそれぞれを削除する。
【００６０】
そして、チャンク削除判定部４３は、所定のチャンク内の全ての属性データが削除されたか否かを判定する（ステップＳ３）。チャンク削除判定部４３が、所定のチャンク内の全ての属性データが削除されたと判定した場合（ステップＳ３：Ｙｅｓ）、チャンク削除判定部４３は、全ての属性データが削除されたチャンクを解放する（ステップＳ４）。例えば、カラムＡにおいてクエリ処理部４１によりTID＝２００からTID＝２９９の属性データが削除された場合、チャンクＣＡ２に格納された属性データは全て削除される。従って、チャンク削除判定部４３は、チャンクＣＡ２が削除可能であると判定し、カラムデータ２１内のチャンクＣＡ２を解放する。
【００６１】
次に、チャンク削除判定部４３は、チャンクリスト２２から解放したチャンクの情報を削除する（ステップＳ５）。例えば、チャンク削除判定部４３は、カラムＡのチャンクリスト２２Ａに記憶されたチャンク識別情報「ＣＡ２」を削除する。そして、カラムデータ管理部４２は、解放したチャンクの情報をオフセット管理テーブル２３に記憶する（ステップＳ６）。例えば、チャンク削除判定部４３によりチャンクＣＡ２が解放されると、カラムデータ管理部４２は、チャンクＣＡ２に格納していた最初の属性データのTIDである開始TID（開始データ情報）「２００」と、チャンクＣＡ２内に格納していた属性データの数であるオフセット値（属性データ数）「１００」と、をオフセット管理テーブル２３Ａに記憶する。
【００６２】
次に、カラムデータ管理部４２は、カラム毎のオフセット管理テーブル２３に共通するチャンクの情報が記憶されているか否かを判定する（ステップＳ７）。カラムデータ管理部４２が、カラム毎のオフセット管理テーブル２３に共通するチャンクの情報が記憶されていると判定した場合（ステップＳ７：Ｙｅｓ）、共通するチャンクの情報に基づいてＴＩＤを繰り上げる（ステップＳ８）。その結果、例えば、共通するTIDの範囲がTID＝２００からTID＝３９９である場合に、クエリ処理部４１がデータ処理（例えばデータ検索処理またはデータ取得処理）を実行する時、カラムデータ管理部４２は、オフセット調整処理（ステップＳ７，Ｓ８）以前はTID＝４００からTID＝４９９として処理していた属性データに対して、TIDの値を２００ずつ順次繰り上げて、TID＝２００からTID＝２９９にする。ステップＳ８の処理の後、および、ステップＳ３，Ｓ７の処理にてＮｏと判定された場合に、データ削除処理は終了する。これにより、TIDの値を小さな値に保つことができ、TIDの値の桁あふれを防ぐことができる。従って、長期間のデータベースの運用が可能になる。なお、オフセット管理テーブル２３を最適化する処理（ステップＳ７，Ｓ８）は、ステップＳ６の処理の後に実行されることに限られず、任意のタイミングにて実行することができる。
【００６３】
次に、図１６を参照してデータ検索処理について説明する。データ検索処理では、クエリ処理部４１が、検索情報を受け付ける（ステップＳ２１）。検索情報は、検索の対象となる属性データを表す情報である。例えば、クエリ処理部４１は、検索情報としてカラムＡの属性データが「ＸＸ−４０」である情報を受け付ける。続いて、クエリ処理部４１は、TIDを初期化する（ステップＳ２２）。すなわち、クエリ処理部４１は、TID＝０を設定する。
【００６４】
次に、クエリ処理部４１は、次のチャンクがあるか否かを判定する（ステップＳ２３）。なお、ステップＳ２２の処理にてTIDが初期化された場合（例えばTID＝０である場合）には、クエリ処理部４１は、チャンクがあるか否かを判定する。次のチャンクがあると判定された場合（ステップＳ２３：Ｙｅｓ）、クエリ処理部４１は、TIDの値がオフセット管理テーブル２３に記憶された開始TIDの値と一致するか否かを判定する（ステップＳ２４）。例えば図９のオフセット管理テーブル２３Ａを参照すると、クエリ処理部４１は、開始TIDの値が「０」であり、TIDの値と一致すると判定する（ステップＳ２４：Ｙｅｓ）。この場合、クエリ処理部４１は、TIDの値にオフセット値を加算する（ステップＳ２５）。例えば、図９のオフセット管理テーブル２３を参照すると、オフセット値は「１００」であるので、クエリ処理部４１は、TIDの値「０」にオフセット値「１００」を加算する。
【００６５】
続いて、クエリ処理部４１は、チャンクを取得する（ステップＳ２６）。具体的には、クエリ処理部４１は、TIDの値「１００」を格納したチャンクＣＡ１を取得する。そして、クエリ処理部４１は、マッチング処理を行う（ステップＳ２７）。具体的には、クエリ処理部４１は、TIDに対応する属性データが検索情報と一致するか否かを判定する処理を行う。例えば、クエリ処理部４１は、TIDの値「１００」に対応する属性データが、検索情報として取得した「ＸＸ−４０」であるか否かを判定する。クエリ処理部４１は、TIDに対応する属性データが検索情報と一致すると判定した場合、検索情報と一致したTIDの値を取得し、保持する。次に、クエリ処理部４１は、TIDの値を１インクリメントする（ステップＳ２８）。続いて、クエリ処理部４１は、チャンク内に属性データがあるか否かを判定する（ステップＳ２９）。そして、クエリ処理部４１がまだチャンク内に属性データがあると判定した場合（ステップＳ２９：Ｙｅｓ）、処理はステップＳ２７に戻り、それ以降の処理を繰り返す。すなわち、クエリ処理部４１は、１インクリメントしたTIDの値に対応する属性データが検索情報と一致するか否かを判定する（マッチング処理を行う）。
【００６６】
一方、クエリ処理部４１がチャンク内に属性データがないと判定した場合（ステップＳ２９：Ｎｏ）、処理はステップＳ２３に戻り、それ以降の処理を繰り返す。そして、ステップＳ２３の処理にて次のチャンクがないと判定された場合（ステップＳ２３：Ｎｏ）属性、データ検索処理は終了する。これにより、例えば、カラムＡの属性データが「ＸＸ−４０」であるTIDの値を検索することができる。
【００６７】
このように、クエリ処理部４１は、全ての属性データが削除されたチャンクが解放（削除）されているにも関わらず、仮想的にカラムデータ２１に記憶された属性データのデータ検索処理を実行することができる。
【００６８】
次に、図１７を参照してデータ取得処理について説明する。データ取得処理では、クエリ処理部４１が、取得情報を受け付ける（ステップＳ４１）。取得情報は、取得の対象となるTIDの値を表す情報である。例えば、クエリ処理部４１は、取得情報としてTID「３５０」を受け付ける。続いて、クエリ処理部４１は、TIDを初期化する（ステップＳ４２）。すなわち、クエリ処理部４１は、TID＝０を設定する。
【００６９】
そして、クエリ処理部４１は、TIDの値がオフセット管理テーブル２３に記憶された開始TIDの値と一致するか否かを判定する（ステップＳ４３）。例えば図９のオフセット管理テーブル２３Ａを参照すると、クエリ処理部４１は、開始TIDの値が「０」であり、TIDの値と一致すると判定する（ステップＳ４３：Ｙｅｓ）。この場合、クエリ処理部４１は、TIDの値にオフセット値を加算する（ステップＳ４４）。例えば、図９のオフセット管理テーブル２３を参照すると、オフセット値は「１００」であるので、クエリ処理部４１は、TIDの値「０」にオフセット値「１００」を加算する。ステップＳ４４の処理の後、および、ステップＳ４３の処理にてＮｏと判定された場合、クエリ処理部４１は、チャンクを取得する（ステップＳ４５）。具体的には、クエリ処理部４１は、TIDの値「１００」を格納したチャンクＣＡ１を取得する。
【００７０】
続いて、クエリ処理部４１は、TIDの値にチャンクの属性データ数を加算する（ステップＳ４６）。例えば、クエリ処理部４１は、TIDの値「１００」に属性データ数「１００」を加算する。そして、クエリ処理部４１は、TIDの値が取得対象のTIDの値より大きいか否かを判定する（ステップＳ４７）。例えば、属性データ数を加算したTIDの値「２００」は、取得対象のTIDの値「３５０」より小さくなるので、クエリ処理部４１は、ステップＳ４７の処理にてＮｏと判定し、次のチャンクがあるか否かを判定する（ステップＳ４８）。クエリ処理部４１が次のチャンクがあると判定した場合（ステップＳ４８：Ｙｅｓ）、処理はステップＳ４３に戻り、それ以降の処理を繰り返す。すなわち、クエリ処理部４１は、ステップＳ４６にて属性データ数が加算されたTIDの値に基づいて、ステップＳ４３以降の処理を実行する。
【００７１】
一方、ステップＳ４７にて、クエリ処理部４１が、TIDの値が取得対象のTIDの値より大きいと判定した場合（ステップＳ４７：Ｙｅｓ）、取得対象のチャンクを特定する（ステップＳ４９）。例えば、クエリ処理部４１は、TIDの値「４００」が取得対象のTIDの値「３５０」を超えると判定する。従って、クエリ処理部４１は、TID「３５０」に対応する属性データがチャンクＣＡ３内に格納されていることを特定する。そして、クエリ処理部４１は、特定したチャンクから取得対象の属性データを取得する（ステップＳ５０）。すなわち、クエリ処理部４１は、チャンクＣＡ３内からTID「３５０」に対応する属性データを取得する。ステップＳ５０の処理の後、および、ステップＳ４８においてＮｏと判定された場合、データ取得処理は終了する。このように、クエリ処理部４１は、チャンクＣＡ２が削除されているにも関わらず、TID「３５０」に対応する属性データを取得するデータ取得処理を実行することができる。
【００７２】
＜第２実施形態＞
次に、本発明の第２実施形態を、図１８乃至図２３を参照して説明する。図１８乃至図２３は、情報処理装置１０１の構成を説明するための図である。
【００７３】
［構成］
まず、図１８を参照して、情報処理装置１０１について説明する。図１８は、本実施形態における情報処理装置１０１の構成例を示すブロック図である。図１８に示すように、情報処理装置１０１は、演算部１１と、記憶部１１２と、を備えている。なお、第２実施形態において、第１実施形態における情報処理装置１と対応する要素には同じ符号が付されている。
【００７４】
演算部１１は、図４と図５を参照して説明した演算部１１と同様の構成を有している。記憶部１１２は、図４の記憶部１２と同様の構成を有し、カラムデータ２１と、チャンクリスト１２２と、を記憶する。カラムデータ２１は、第１実施形態と同様の構成を有している。カラムデータ２１と、チャンクリスト１２２の詳細については後述する。
【００７５】
カラムデータ管理部４２は、例えば図６の表形式のデータ６１を、タプルデータの各属性データをカラム（属性）ごとにまとめて記憶部１２のカラムデータ２１に格納（記憶）する。図１９は、記憶部１１２の例を示す図である。図１９に示すように、カラムデータ２１には、カラムＡの属性データと、カラムＢの属性データと、のそれぞれが所定の大きさの複数の記憶領域であるチャンクに記憶される。
【００７６】
例えば、チャンクサイズが４００バイトの固定長であり、カラムＡの１つの属性データのサイズが４バイトであるとする。この場合、カラムＡの属性データの全体の記憶容量は２０００（４バイト×５００件）バイトになる。そして、１つのチャンクには１００件の属性データが格納可能であるので、カラムデータ管理部４２は、図１９に示すように５個のチャンクＣＡ０乃至ＣＡ４を取得し、データ６１のカラムＡの各属性データを順番に格納する。
【００７７】
また、カラムデータ管理部４２は、カラムデータ２１に記憶した複数のチャンクのそれぞれを特定可能なアドレスや識別情報などのポインタ情報と、当該チャンクの先頭に格納した属性データのTIDである開始TID（開始データ情報）と、当該チャンクの末尾に格納した属性データのTIDである終了TID（終了データ情報）と、をチャンクリスト１２２に記憶する。例えば、カラムデータ管理部４２は、カラムＡのチャンクリスト１２２Ａにチャンク識別情報ＣＡ０乃至ＣＡ４のそれぞれと、当該チャンク識別情報ＣＡ０乃至ＣＡ４のそれぞれに対応するチャンクの開始TIDと終了TIDとを対応付けて記憶する。
【００７８】
一方、例えばカラムＢの１つの属性データのサイズは２バイトであるとする。この場合、カラムＢの属性データの全体の記憶容量は１０００（２バイト×５００件）バイトになる。そして、１つのチャンクには２００件の属性データが格納可能であるので、カラムデータ管理部４２は、図１９に示すように３個のチャンクＣＢ０乃至ＣＢ２を取得し、データ６１のカラムＢの各属性データを順番に格納する。また、カラムデータ管理部４２は、カラムＢのチャンクリスト１２２Ｂにチャンク識別情報ＣＢ０乃至ＣＢ２のそれぞれと、当該チャンク識別情報ＣＢ０乃至ＣＢ２のそれぞれに対応するチャンクの開始TIDと終了TIDとを対応付けて記憶する。
【００７９】
これにより、カラムデータ管理部４２は、クエリ処理部４１がデータ６１に対する所定の処理（後述するデータ削除処理とデータ検索処理とデータ取得処理）を実行する場合に、任意のチャンクから属性データを読み出し可能であるので、チャンクの数が多い場合でも、クエリ処理部４１により要求された所定のカラムの属性データをより迅速に抽出することができる。
【００８０】
次に、クエリ処理部４１がデータ６１に対して実行するデータ削除処理と、データ検索処理と、データ取得処理と、のそれぞれについて説明する。まず、図２０を参照して、データ削除処理について説明する。以下では、クエリ処理部４１が、入力装置（図示せず）を介してユーザからTID＝２００からTID＝２９９の１００件のタプルデータの削除の要求を受け付けた場合について説明する。この場合、クエリ処理部４１は、データ６１のTID＝２００からTID＝２９９のタプルデータを削除する。具体的には、クエリ処理部４１は、カラムデータ２１Ａ，２１Ｂに記憶されたTID＝２００からTID＝２９９の属性データのそれぞれを削除する。
【００８１】
そして、チャンク削除判定部４３は、クエリ処理部４１のデータ削除処理によりチャンクが削除可能であるか否かを判定する。具体的には、チャンク削除判定部４３は、クエリ処理部４１にてカラムごとに設定されたチャンク内から削除された属性データが含まれるタプルデータの表形式における順番（TID）を特定する情報を表す削除データ情報をカラムごとに取得する。例えば、カラムＡにおいてクエリ処理部４１によりTID＝２００からTID＝２９９の属性データが削除された場合、チャンク削除判定部４３は、削除データ情報としてTID＝２００からTID＝２９９を取得する。このとき、チャンク削除判定部４３は、取得した削除データ情報に基づいて、チャンクＣＡ２に格納された属性データは全て削除されたと判定する。従って、チャンク削除判定部４３は、チャンクＣＡ２が削除可能であると判定し、カラムデータ２１内のチャンクＣＡ２を解放する。
【００８２】
また、チャンク削除判定部４３は、図２０のカラムＡのチャンクリスト１２２Ａに記憶されたチャンク識別情報「ＣＡ２」と開始TID「２００」と終了TID「２９９」とを削除して、チャンクリスト１２２Ａを更新（削除データ情報を記憶）する。
【００８３】
一方、カラムＢにおいてクエリ処理部４１によりTID＝２００からTID＝２９９の属性データが削除された場合、チャンクＣＢ１に格納された属性データは一部が削除されるが、チャンクＣＢ１にはまだ属性データTID＝３００からTID＝３９９が格納されている。従って、チャンク削除判定部４３は、チャンクＣＢ１が削除可能でないと判定し、チャンクＣＢ１の解放を行わない。
【００８４】
このような場合、カラムデータ管理部４２は、カラムＡのチャンクＣＡ２より後のチャンクＣＡ３，ＣＡ４に格納されたTIDを繰り上げないので、チャンクを解放しても、タプルの情報の整合性を維持することができる。
【００８５】
次に、クエリ処理部４１がTID＝２００からTID＝２９９の属性データのデータ削除処理を行った後に、データ検索処理を行う場合の処理について以下に説明する。この例では、図６のデータ６１から、カラムＡの属性データが「ＸＸ−４０」であり、カラムＢの属性データが「２０００」であるTID（タプル）を検索する場合の処理について説明する。
【００８６】
クエリ処理部４１は、図２０のカラムＡのチャンクリスト１２２Ａを参照して、ＣＡ０，ＣＡ１，ＣＡ３，ＣＡ４の順番でチャンクを取り出す。そして、クエリ処理部４１は、取り出したチャンク内の属性データが「ＸＸ−４０」と一致するか否かを判定する。例えば、クエリ処理部４１は、取り出したチャンクＣＡ０内のTID「０」の属性データが「ＸＸ−４０」と一致するか否かを判定する。以降、クエリ処理部４１は、チャンク内の各属性データを取り出すごとにTIDの値を１インクリメントし、１インクリメントしたTIDに対応する属性データが「ＸＸ−４０」と一致するか否かを判定する。そして、新たなチャンク内の属性データを参照する場合（TIDの値が参照するチャンクの終了TIDになった場合）に、クエリ処理部４１は、チャンクリスト１２２Ａを参照してTIDの値を当該チャンクの開始TIDに設定（初期化）する。
【００８７】
ここで、チャンクＣＡ２は、既に削除済みであるため処理はされない。従って、例えば、TIDの値が「１９９」になった場合に、クエリ処理部４１は、チャンクリスト１２２Ａを参照して、TIDの値をＣＡ３の開始TID「３００」に設定する。そして、クエリ処理部４１は、TID「３００」の属性データが「ＸＸ−４０」と一致するか否かを判定する。以下、クエリ処理部４１は、上述したデータ検索処理を繰り返す。
【００８８】
この結果、クエリ処理部４１は、削除されたチャンクＣＡ２を参照することなく、チャンクＣＡ２の後に属性データが格納されたチャンクＣＡ３についてデータ検索処理を実行する。このように、クエリ処理部４１は、チャンクＣＡ２が削除されているにも関わらず、仮想的にカラムデータ２１Ａに記憶されたTID＝０からTID＝４９９の属性データのデータ検索処理を実行することができる。
【００８９】
また、クエリ処理部４１は、カラムＢのチャンクリスト１２２Ｂを参照して、ＣＢ０，ＣＢ１，ＣＢ２の順番でチャンクを取り出す。そして、クエリ処理部４１は、取り出したチャンク内の属性データが「２０００」と一致するか否かを判定する。例えば、クエリ処理部４１は、取り出したチャンクＣＢ０内のTID「０」の属性データが「２０００」と一致するか否かを判定する。以降、クエリ処理部４１は、チャンク内の各属性データを取り出すごとにTIDの値を１インクリメントし、１インクリメントしたTIDに対応する属性データが「２０００」と一致するか否かを判定する。
【００９０】
また、クエリ処理部４１は、TIDの値が参照するチャンクの終了TIDになった場合に、チャンクリスト１２２Ｂを参照してTIDの値を、次に取り出したチャンクの開始TIDに設定（初期化）する。そして、クエリ処理部４１は、カラムＢのTID＝０からTID＝４９９の各属性データに対して順番にデータ検索処理を実行する。
【００９１】
このように、カラムＡのチャンクが１つ解放された場合でも、カラムＡのTIDとカラムＢのTIDとの間に不整合が生じることがなく、クエリ処理部４１は、確実にデータ検索処理を実行することができる。
【００９２】
次に、クエリ処理部４１がTID＝２００からTID＝２９９の属性データのデータ削除処理を行った後に、データ取得処理を行う場合の処理について以下に説明する。この例では、例えば、取得対象のTID「３５０」に対応する属性データを取得する場合の処理について説明する。
【００９３】
クエリ処理部４１は、カラムＡのチャンクリスト１２２Ａを参照して、ＣＡ０，ＣＡ１，ＣＡ３，ＣＡ４の順番でチャンクを取り出す。そして、クエリ処理部４１は、取り出したチャンクの開始TIDをTIDの値に設定（初期化）する。続いて、クエリ処理部４１は、加算したTIDの値が「３５０」を超えたか否かを判定する。例えば、クエリ処理部４１は、取り出したチャンクＣＡ０の開始TID「０」が「３５０」を超えたか否かを判定する。クエリ処理部４１は、開始TID「０」が「３５０」を超えていないと判定すると、チャンクＣＡ１を取り出し、チャンクＣＡ１の開始TID「１００」を設定する。
【００９４】
そして、同様の処理を行うことにより、クエリ処理部４１は、チャンクＣＡ４の開始TID「４００」が「３５０」を超えると判定することで、TID「３５０」に対応する属性データがチャンクＣＡ３内に格納されていることがわかる。従って、クエリ処理部４１は、チャンクＣＡ３内からTID「３５０」に対応する属性データを取得する。このように、クエリ処理部４１は、チャンクＣＡ２が削除されているにも関わらず、TID「３５０」に対応する属性データを取得するデータ取得処理を実行することができる。
【００９５】
また、クエリ処理部４１は、カラムＢのチャンクリスト１２２Ｂを参照して、ＣＢ０，ＣＢ１，ＣＢ２の順番でチャンクを取り出す。そして、クエリ処理部４１は、取り出したチャンクの開始TIDをTIDの値に設定（初期化）する。そして、クエリ処理部４１は、加算したTIDの値が「３５０」を超えたか否かを判定する。カラムＢでは、クエリ処理部４１が、チャンクＣＢ２を取り出すことにより、チャンクＣＢ２の開始TID「４００」が「３５０」を超えると判定する。従って、クエリ処理部４１は、チャンクＣＢ１内からTID「３５０」に対応する属性データを取得する。
【００９６】
このように、カラムＡのチャンクが１つ解放された場合でも、カラムＡのTIDとカラムＢのTIDとの間に不整合が生じることがなく、クエリ処理部４１は、確実にデータ取得処理を実行することができる。また、チャンクリスト１２２を参照することにより、チャンクの開始TIDがチャンクごとにわかる。そのため、クエリ処理部４１は、任意のチャンクからデータ取得処理を開始することができる。その結果、第１実施形態のようにチャンクリストの先頭から順番にTIDの値を１インクリメントする場合に比べて、クエリ処理部４１は、迅速にデータ取得処理を実行することができる。また、任意のチャンクからデータ取得処理を実行可能であるので、クエリ処理部４１は、並列処理により迅速かつ効率的にデータ取得処理を実行することができる。さらに、TIDを指定して属性データを取得するので、チャンク内の先頭からTIDを計算する必要がなく、例えば２分探索等の処理が実行可能である。そのため、クエリ処理部４１は、より迅速に所望する属性データを取得することができる。
【００９７】
次に、図２１を参照して、クエリ処理部４１がTID＝２００からTID＝２９９の属性データのデータ削除処理を行った後に、さらに入力装置（図示せず）を介してユーザからTID＝０からTID＝９９に相当する１００件のタプルデータと、TID＝３００からTID＝３９９に相当する１００件のタプルデータと、の削除の要求を受け付けた場合について説明する。この場合、クエリ処理部４１は、TID＝０からTID＝９９のタプルデータと、TID＝３００からTID＝３９９のタプルデータを削除する。具体的には、クエリ処理部４１は、カラムデータ２１の各カラムに記憶されたTID＝０からTID＝９９の属性データのそれぞれと、TID＝３００からTID＝３９９の属性データのそれぞれと、を削除する。
【００９８】
また、チャンク削除判定部４３は、クエリ処理部４１のデータ削除処理によりチャンクが削除可能であるか否かを判定する。カラムＡにおいてクエリ処理部４１によりTID＝０からTID＝９９の属性データが削除された場合、チャンクＣＡ０に格納された属性データは全て削除される。従って、チャンク削除判定部４３は、チャンクＣＡ０が削除可能であると判定し、カラムデータ２１内のチャンクＣＡ０を解放する。また、同様に、カラムＡにおいてクエリ処理部４１によりTID＝３００からTID＝３９９の属性データが削除された場合、チャンクＣＡ３に格納された属性データは全て削除される。従って、チャンク削除判定部４３は、チャンクＣＡ３が削除可能であると判定し、カラムデータ２１内のチャンクＣＡ３を解放する。
【００９９】
そして、チャンク削除判定部４３は、図２０のカラムＡのチャンクリスト１２２Ａに記憶されたチャンク識別情報「ＣＡ０」と開始TID「０」と終了TID「９９」、および、チャンク識別情報「ＣＡ３」と開始TID「３００」と終了TID「３９９」を削除する。
【０１００】
一方、カラムＢにおいてクエリ処理部４１によりTID＝０からTID＝９９の属性データが削除された場合、チャンクＣＢ０に格納された属性データは一部が削除されるが、チャンクＣＢ０にはまだ属性データが格納されている。従って、チャンク削除判定部４３は、チャンクＣＢ０が削除可能でないと判定し、チャンクＣＢ０の解放を行わない。また、カラムＢにおいてクエリ処理部４１によりTID＝３００からTID＝３９９の属性データが削除された場合、チャンクＣＢ１に格納された属性データは全て削除される。従って、チャンク削除判定部４３は、チャンクＣＢ１が削除可能であると判定し、カラムデータ２１内のチャンクＣＢ１を解放する。
【０１０１】
そして、チャンク削除判定部４３は、図２０のカラムＢのチャンクリスト１２２Ｂに記憶されたチャンク識別情報「ＣＢ１」と開始TID「２００」と終了TID「３９９」を削除する。これにより、クエリ処理部４１によりデータ検索処理とデータ取得処理とが実行される場合に、各チャンクの開始TIDと終了TIDとが記憶されているので、カラム間でTIDの整合性を保つことができる。
【０１０２】
次に、TIDの値の桁あふれを防止するための処理について説明する。オフセット調整部４４（またはカラムデータ管理部４２）は、任意のタイミングにて、チャンクリスト１２２を参照してオフセット管理テーブル２３を生成する。任意のタイミングは、例えば、予め設定された時間が経過した時や、チャンク削除判定部４３によりチャンクが解放された時、チャンク内に格納された属性データの数が予め設定された件数だけ削除された時等である。具体的には、オフセット調整部４４は、チャンクリスト１２２を参照して、所定のチャンクの終了TIDの値と、所定のチャンクの次のチャンクの開始TIDの値と、が連続しているか否かを判定する。そして、オフセット調整部４４は、所定のチャンクの終了TIDの値と、次のチャンクの開始TIDの値と、が連続していないと判定した場合に、削除されたチャンクが存在するとみなす。なお、一番目のチャンクの開始TIDの初期値は「０」であり、チャンクリスト１２２に記憶された一番目のチャンクの開始TIDが「０」でない場合、オフセット調整部４４は、一番目のチャンクが削除されたとみなす。続いて、オフセット調整部４４は、削除されたチャンクの開始TIDと、当該チャンクの属性データ数（オフセット値）と、を格納したオフセット管理テーブル２３（図２２）を生成する。
【０１０３】
例えば、オフセット調整部４４は、カラムＡのチャンクリスト１２２Ａを参照することにより、チャンク識別情報「ＣＡ０」と「ＣＡ２」と「ＣＡ３」とが削除されたとみなす。従って、オフセット調整部４４は、削除されたチャンクの開始TIDと、当該チャンクの属性データ数と、を格納したオフセット管理テーブル２３Ａ（図２２Ａ）を生成する。また、同様に、オフセット調整部４４は、カラムＢのチャンクリスト１２２Ｂを参照することにより、チャンク識別情報「ＣＢ１」が削除されたとみなす。従って、オフセット調整部４４は、削除されたチャンクの開始TIDと、当該チャンクの属性データ数と、を格納したオフセット管理テーブル２３Ｂ（図２２Ｂ）を生成する。
【０１０４】
そして、オフセット調整部４４は、第１実施形態と同様に、図２２のオフセット管理テーブル２３Ａとオフセット管理テーブル２３Ｂとをそれぞれ参照し、共通するTIDの範囲（削除データ情報）があるか否かを判定する。図２２の例では、カラムＡとカラムＢとで開始TID「２００」、オフセット値「２００」が一致する（共通である）ので、開始TID「２００」、オフセット値「２００」の情報を削除しても、クエリ処理部４１により所定の処理を実行するときにTIDの不整合は生じない。従って、オフセット調整部４４は、図２３Ａと図２３Ｂのそれぞれに示すように、オフセット管理テーブル２３Ａとオフセット管理テーブル２３Ｂとのそれぞれに記憶された開始TID「２００」、オフセット値「２００」を削除する。
【０１０５】
また同時に、カラムデータ管理部４２は、チャンクリスト１２２を参照し、共通するTIDの範囲（削除データ情報）に対応する、解放されたチャンクより後に属性データが格納されたチャンクの開始TIDの値（属性データの表形式における順番）、および、終了TIDの値を繰り上げる。具体的には、共通するTIDの範囲がTID＝２００からTID＝３９９である場合に、カラムデータ管理部４２は、図２４に示すように、TID＝４００からTID＝４９９の値をオフセット値「２００」（属性データ数）ずつ順次繰り上げて、TID＝２００からTID＝２９９にすることができる。これにより、TIDの値を小さな値に保つことができ、TIDの値の桁あふれを防ぐことができる。従って、長期間のデータベースの運用が可能になる。なお、上記の説明では、共通部分の特定とチャンクリスト１２２の更新を順次行ったが、全ての共通部分を特定した後に、繰り上げるべきTIDの累計値を計算し、チャンクリスト１２２の更新を行ってもよい。
【０１０６】
なお、オフセット調整部４４は、オフセット管理テーブル２３を生成することなく、チャンクリスト１２２を参照して、共通するTIDの範囲に基づいてTIDの値を繰り上げることもできる。例えば、オフセット調整部４４は、カラムごとに取得したチャンクリスト１２２のそれぞれに共通する開始TIDと終了TIDとが含まれているか否かを判定する。図２１の例では、オフセット調整部４４は、チャンクリスト１２２Ａを参照することにより、TID＝０からTID＝９９と、TID＝２００からTID＝３９９と、を含むチャンクのそれぞれが削除（解放）されたことを特定する。また、オフセット調整部４４は、チャンクリスト１２２Ｂを参照することにより、TID＝２００からTID＝３９９と、を含むチャンクが削除されたことを特定する。従って、オフセット調整部４４は、共通する開始TID「２００」と終了TID「３９９」とに対応するチャンクより後に属性データを格納したチャンク内のTIDの値を繰り上げる。なお、オフセット調整部４４は、例えば、（終了TIDの値）−（開始TIDの値）＋１を計算してTIDを繰り上げる値を算出する。
【０１０７】
＜第３実施形態＞
次に、本発明の第３実施形態を、図２５乃至図２８を参照して説明する。図２５乃至図２８は、情報処理装置２０１の構成を説明するための図である。
【０１０８】
［構成］
まず、図２５を参照して、情報処理装置２０１について説明する。図２５は、本実施形態における情報処理装置２０１の構成例を示すブロック図である。図２５に示すように、情報処理装置２０１は、演算部２１１と、記憶部２１２と、を備えている。なお、第３実施形態において、第１実施形態における情報処理装置１、または、第２実施形態における情報処理装置１０１と対応する要素には同じ符号が付されている。
【０１０９】
演算部２１１は、図２６に示すように、クエリ処理部４１と、カラムデータ管理部４２と、チャンク削除判定部４３と、共通チャンク解放部２４４（データ管理手段）と、の機能ブロックを備えている。記憶部２１２は、図４の記憶部１２と同様の構成を有し、カラムデータ２１と、チャンクリスト２２と、を記憶する。カラムデータ２１とチャンクリスト２２とチャンク削除判定部４３とは、第１実施形態と同様の構成を有している。
【０１１０】
ここで図２７を参照して、データ削除処理について説明する。以下では、クエリ処理部４１が、入力装置（図示せず）を介してユーザからTID＝２００からTID＝２９９の１００件のタプルデータの削除の要求を受け付けた場合について説明する。この場合、クエリ処理部４１は、データ６１のTID＝２００からTID＝２９９のタプルデータを削除する。具体的には、クエリ処理部４１は、カラムデータ２１Ａ，２１Ｂに記憶されたチャンク内のTID＝２００からTID＝２９９の属性データのそれぞれを削除する。
【０１１１】
そして、チャンク削除判定部４３は、クエリ処理部４１のデータ削除処理によりチャンクが削除可能であるか否かを判定する。例えば、カラムＡにおいてクエリ処理部４１によりTID＝２００からTID＝２９９の属性データが削除された場合、チャンク削除判定部４３は、削除データ情報としてTID＝２００からTID＝２９９を取得する。このとき、チャンクＣＡ２に格納された属性データは全て削除されている。このように、チャンク内の全ての属性データが削除された場合に、チャンク削除判定部２４３は、チャンクＣＡ２が削除可能であると判定する。なお、チャンク削除判定部４３は、取得した削除データ情報を記憶部２１２に記憶することができる。
【０１１２】
一方、カラムＢにおいてクエリ処理部４１によりTID＝２００からTID＝２９９の属性データが削除された場合、チャンク削除判定部４３は、削除データ情報としてTID＝２００からTID＝２９９を取得する。このとき、チャンクＣＢ１に格納された属性データは一部が削除されるが、チャンクＣＢ１にはまだ属性データTID＝３００からTID＝３９９が格納されている。このように、チャンク内の全ての属性データが削除されていない場合に、チャンク削除判定部４３は、チャンクＣＢ１が削除可能でないと判定する。
【０１１３】
従って、共通チャンク解放部２４４は、チャンク削除判定部４３の判定結果として、カラムＡにて削除可能なチャンクのTID＝２００からTID＝２９９の削除データ情報と、カラムＢにて削除可能なチャンクがないという情報と、を取得する。その結果、共通チャンク解放部２４４は、共通する削除データ情報が存在しないと判定し、カラムＡのチャンクＣＡ２の解放を行わない。
【０１１４】
ここで、図２８を参照して、クエリ処理部４１が、入力装置（図示せず）を介してユーザからTID＝３００からTID＝３９９の１００件のタプルデータの削除の要求を受け付けた場合について説明する。この場合、クエリ処理部４１は、データ６１のTID＝３００からTID＝３９９のタプルデータを削除する。具体的には、クエリ処理部４１は、カラムデータ２１Ａ，２１Ｂに記憶されたチャンク内のTID＝３００からTID＝３９９の属性データのそれぞれを削除する。
【０１１５】
そして、チャンク削除判定部４３は、クエリ処理部４１のデータ削除処理によりチャンクが削除可能であるか否かを判定する。カラムＡにおいてクエリ処理部４１によりTID＝３００からTID＝３９９の属性データが削除された場合、チャンク削除判定部４３は、記憶された削除データ情報としてTID＝２００からTID＝２９９を取得するとともに、新たに追加された削除データ情報としてTID＝３００からTID＝３９９を取得する。なお、チャンク削除判定部４３は、削除データ情報を記憶部２１２に記憶していなかった場合に、記憶部２１２に記憶されたカラムデータ２１を参照して、チャンク内の属性データが全て削除されたチャンクを検索し、当該チャンクの開始TIDと終了TIDとの情報を削除データ情報として取得することができる。
【０１１６】
クエリ処理部４１によりTID＝３００からTID＝３９９の属性データが削除されると、チャンクＣＡ２，ＣＡ３に格納された属性データは全て削除される。この場合、チャンク削除判定部２４３は、チャンクＣＡ２，ＣＡ３が削除可能であると判定する。
【０１１７】
また、カラムＢにおいてクエリ処理部４１によりTID＝３００からTID＝３９９の属性データが削除された場合、チャンク削除判定部４３は、記憶された削除データ情報としてTID＝２００からTID＝２９９を取得する。そして、チャンク削除判定部４３は、新たに追加された削除データ情報としてTID＝３００からTID＝３９９を取得する。このとき、チャンクＣＢ１に格納された属性データは全て削除される。この場合、チャンク削除判定部４３は、チャンクＣＢ１が削除可能であると判定する。
【０１１８】
次に、共通チャンク解放部２４４は、チャンク削除判定部４３の判定結果として、カラムＡにて削除可能なチャンクのTID＝２００からTID＝３９９の削除データ情報と、カラムＢにて削除可能なチャンクのTID＝２００からTID＝３９９の削除データ情報と、を取得する。この結果、共通チャンク解放部２４４は、共通する削除データ情報としてTID＝２００からTID＝３９９が存在すると判定する。このように共通する削除データ情報が存在する場合に、共通チャンク解放部２４４は、共通する削除データ情報に対応するチャンク（例えばカラムＡのチャンクＣＡ２，ＣＡ３と、カラムＢのチャンクＣＢ１）を解放する。そして、共通チャンク解放部２４４は、解放したチャンクより後に属性データを格納したチャンク内のTIDを繰り上げる。なお、共通チャンク解放部２４４は、例えば、（終了TIDの値（例えばTID＝３９９））−（開始TIDの値（例えばTID＝２００））＋１を計算してTIDを繰り上げる値を算出する。また、共通チャンク解放部２４４は、チャンクを解放した場合に、解放したチャンクに対応する情報をチャンクリスト１２２から削除する。
【０１１９】
このように、情報処理装置２０１は、チャンクの解放とTIDの値の繰り上げを同じタイミングにて実行するので、クエリ処理部４１がデータ検索処理またはデータ取得処理を実行する場合に、オフセット管理テーブル２３等を参照する必要がない。そのため、情報処理装置２０１は、データ検索処理およびデータ取得処理を簡単かつ迅速に実行することができる。
【０１２０】
以上、上記実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成及び詳細に、本願発明の範囲内において当業者が理解し得る様々な変更をすることができる。
【０１２１】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における情報処理装置等の構成の概略を説明する。但し、本発明は、以下の構成に限定されない。
【０１２２】
（付記１）
複数の属性データからなる一群のタプルデータが行方向に位置し、前記属性が列方向に位置して構成された表形式のデータを、前記タプルデータを前記属性データごとにまとめて記憶装置に格納するデータ管理手段と、
前記データベースに対する所定の処理を実行するデータ処理手段と、
を備え、
前記データ管理手段は、前記タプルデータを構成する各属性データを、当該属性データごとにそれぞれ設定された所定容量の記憶領域を有する複数のチャンクに、前記表形式において前記タプルデータが位置する順番で格納するとともに、前記データ処理手段にて前記属性ごとに設定された前記チャンク内から削除された前記属性データが含まれる前記タプルデータの前記表形式における順番を特定する情報を表す削除データ情報を前記属性ごとに取得し、当該削除データ情報に基づいて前記チャンクを解放する、
情報処理装置。
【０１２３】
これによれば、データベースのタプルデータを各属性ごとに管理する場合に、チャンク内に格納した属性データが削除されたとき、削除された属性データが含まれるタプルデータの表形式における順番を特定する削除データ情報を取得し、削除データ情報に基づいてチャンクを解放するので、複数の属性にまたがったタプルデータの整合性を維持したまま、記憶領域を小さくすることができる。
【０１２４】
（付記２）
付記１に記載の情報処理装置であって、
前記データ管理手段は、前記データ処理手段にて前記チャンク内から前記属性データが削除された場合に、当該属性データが含まれる前記タプルデータの前記表形式における順番を特定する前記削除データ情報を前記属性ごとに前記記憶装置に記憶し、当該記憶されている前記属性ごとに前記削除データ情報を取得して当該削除データ情報に基づいて前記チャンクを解放する、
情報処理装置。
【０１２５】
これによれば、属性ごとに削除データ情報を記憶し、記憶した削除データ情報に基づいてチャンクを解放するので、複数の属性にまたがったタプルデータの整合性を維持したまま、記憶領域を小さくすることができる。
【０１２６】
（付記３）
付記１又は２に記載の情報処理装置であって、
前記データ管理手段は、所定の前記チャンクについて当該チャンク内に格納された全ての前記属性データが削除された場合に、当該チャンク内から削除された前記属性データが含まれる前記タプルデータの前記表形式における順番を特定する前記削除データ情報を前記属性ごとに前記記憶装置に記憶し、前記チャンクを解放する、
情報処理装置。
【０１２７】
これによれば、チャンク内の全ての属性データが削除された場合に、当該チャンクに対応する削除データ情報を記憶し、記憶した削除データ情報に基づいてチャンクを解放するので、チャンクの管理が容易になるとともに、複数の属性にまたがったタプルデータの整合性を維持したまま、記憶領域を小さくすることができる。
【０１２８】
（付記４）
付記１乃至３のいずれかに記載の情報処理装置であって、
前記データ管理手段は、前記属性ごとに取得した前記削除データ情報のそれぞれに、共通する前記削除データ情報が含まれる場合に、当該共通する前記削除データ情報を削除することにより、削除した当該共通する前記削除データ情報に対応する、解放された前記チャンクより後に前記属性データを格納したチャンク内の当該属性データの前記表形式における順番を繰り上げる、
情報処理装置。
【０１２９】
これによれば、属性ごとに取得した削除データ情報のそれぞれに、共通する削除データ情報が含まれる場合に、属性データの表形式における順番を繰り上げるので、当該順番の桁があふれを防止することができる。
【０１３０】
（付記５）
付記１乃至４のいずれかに記載の情報処理装置であって、
前記データ管理手段は、前記属性ごとに取得した前記削除データ情報として、前記チャンクの先頭に格納した前記属性データの前記表形式における順番を特定する開始データ情報と、前記チャンク内に格納した前記属性データの数である属性データ数と、を取得するとともに、前記属性ごとの前記削除データ情報のそれぞれに、当該共通する前記開始データ情報と前記属性データ数とが含まれる場合に、当該共通する前記開始データ情報と前記属性データ数とを削除することにより、当該共通する前記削除データ情報に対応する、解放された前記チャンクより後に前記属性データを格納したチャンク内の当該属性データの前記表形式における順番を前記属性データ数だけ繰り上げる、
情報処理装置。
【０１３１】
これによれば、削除されたチャンクの開始データ情報と属性データ数とを取得し、取得した開始データ情報と属性データ数とに基づいて、属性データの表形式における順番を繰り上げるので、複数の属性にまたがったタプルデータの整合性を維持することができるとともに、当該順番の桁があふれを防止することができる。
【０１３２】
（付記６）
付記１乃至４に記載の情報処理装置であって、
前記データ管理手段は、前記属性ごとに前記各チャンクに対して、前記チャンクの先頭に格納した前記属性データの前記表形式における順番を特定する開始データ情報と、前記チャンクの末尾に格納した前記属性データの前記表形式における順番を特定する終了データ情報と、を取得し、前記開始データ情報と前記終了データ情報が連続していない場合に、不連続な範囲の前記属性データの前記表形式における順番を特定する情報を、前記削除データ情報として取得し、前記属性ごとの前記削除データ情報のそれぞれに、共通する前記開始データ情報と前記終了データ情報とが含まれる場合に、当該共通する前記開始データ情報と前記終了データ情報とを削除して、前記属性ごとの前記開始データ情報と前記終了データ情報とを繰り上げることにより、解放された前記チャンクより後に前記属性データを格納したチャンク内の当該属性データの前記表形式における順番を繰り上げる、
情報処理装置。
【０１３３】
これによれば、削除されたチャンクの開始データ情報と終了データ情報とを取得し、取得した開始データ情報と終了データ情報とに基づいて、属性データの表形式における順番を繰り上げるので、複数の属性にまたがったタプルデータの整合性を維持することができるとともに、当該順番の桁があふれを防止することができる。
【０１３４】
（付記７）
付記１に記載の情報処理装置であって、
前記データ管理手段は、前記属性ごとに取得した前記削除データ情報のそれぞれに、共通する前記削除データ情報が含まれており、当該共通する前記削除データ情報が、所定の前記チャンクについて当該チャンク内に格納された全ての前記属性データが削除されていることを表している場合に、当該共通する前記削除データ情報に対応する前記チャンクを解放するとともに、当該解放した前記チャンクより後に前記属性データを格納したチャンク内の当該属性データの前記表形式における順番を繰り上げる、
情報処理装置。
【０１３５】
これによれば、チャンクの解放と、順番の繰り上げを同じタイミングにて実行するので、データ処理手段により処理が実行される場合に、削除データ情報を参照する必要がなく、迅速に処理を実行することができる。
【０１３６】
（付記８）
情報処理装置に、
複数の属性データからなる一群のタプルデータが行方向に位置し、前記属性が列方向に位置して構成された表形式のデータを、前記タプルデータを前記属性データごとにまとめて記憶装置に格納するデータ管理手段と、
前記データベースに対する所定の処理を実行するデータ処理手段と、
を実現させるとともに、
前記データ管理手段は、前記タプルデータを構成する各属性データを、当該属性データごとにそれぞれ設定された所定容量の記憶領域を有する複数のチャンクに、前記表形式において前記タプルデータが位置する順番で格納するとともに、前記データ処理手段にて前記属性ごとに設定された前記チャンク内から削除された前記属性データが含まれる前記タプルデータの前記表形式における順番を特定する情報を表す削除データ情報を前記属性ごとに取得し、当該削除データ情報に基づいて前記チャンクを解放する、ことを実現させるためのプログラム。
【０１３７】
（付記９）
情報処理装置にて、
複数の属性データからなる一群のタプルデータが行方向に位置し、前記属性が列方向に位置して構成された表形式のデータを、前記タプルデータを前記属性データごとにまとめて記憶装置に格納する際に、前記タプルデータを構成する各属性データを、当該属性データごとにそれぞれ設定された所定容量の記憶領域を有する複数のチャンクに、前記表形式において前記タプルデータが位置する順番で格納し、
前記属性ごとに設定された前記チャンク内から削除された前記属性データが含まれる前記タプルデータの前記表形式における順番を特定する情報を表す削除データ情報を前記属性ごとに取得し、当該削除データ情報に基づいて前記チャンクを解放する、
情報処理方法。
【０１３８】
（付記１０）
付記９に記載の情報処理方法であって、
前記チャンク内から前記属性データが削除された場合に、当該属性データが含まれる前記タプルデータの前記表形式における順番を特定する前記削除データ情報を前記属性ごとに前記記憶装置に記憶し、当該記憶されている前記属性ごとに前記削除データ情報を取得して当該削除データ情報に基づいて前記チャンクを解放する、
情報処理方法。
【０１３９】
なお、上記各実施形態及び付記において記載したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されている。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【０１４０】
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることが出来る。
【０１４１】
なお、本発明は、日本国にて２０１２年１０月１１日に特許出願された特願２０１２−２２６２３８の特許出願に基づく優先権主張の利益を享受するものであり、当該特許出願に記載された内容は、全て本明細書に含まれるものとする。
【符号の説明】
【０１４２】
１  情報処理装置
１１  演算部
１２  記憶部
２１  カラムデータ
２２  チャンクリスト
２３  オフセット管理テーブル
４１  クエリ処理部
４２  カラムデータ管理部
４３  チャンク削除判定部
４４  オフセット調整部
４５  テーブル更新部
１０１  情報処理装置
１２２  チャンクリスト
２０１  情報処理装置
２１１  演算部
２４４  共通チャンク解放部
【図１】
2014057616.tif 000003
【図２】
2014057616.tif 000004
【図３】
2014057616.tif 000005
【図４】
2014057616.tif 000006
【図５】
2014057616.tif 000007
【図６】
2014057616.tif 000008
【図７】
2014057616.tif 000009
【図８】
2014057616.tif 000010
【図９】
2014057616.tif 000011
【図１０】
2014057616.tif 000012
【図１１】
2014057616.tif 000013
【図１２】
2014057616.tif 000014
【図１３】
2014057616.tif 000015
【図１４】
2014057616.tif 000016
【図１５】
2014057616.tif 000017
【図１６】
2014057616.tif 000018
【図１７】
2014057616.tif 000019
【図１８】
2014057616.tif 000020
【図１９】
2014057616.tif 000021
【図２０】
2014057616.tif 000022
【図２１】
2014057616.tif 000023
【図２２】
2014057616.tif 000024
【図２３】
2014057616.tif 000025
【図２４】
2014057616.tif 000026
【図２５】
2014057616.tif 000027
【図２６】
2014057616.tif 000028
【図２７】
2014057616.tif 000029
【図２８】
2014057616.tif 000030
【国際調査報告】
2014057616.tif 000031
2014057616.tif 000032
2014057616.tif 000033
2014057616.tif 000034