(57)【要約】【課題】データベースの更新処理に時間がかかること。【解決手段】本発明のデータ処理装置１００は、表形式データを列ごとの成分に分解した列形式データに変換する形式変換部１０１と、列形式データに対する操作を行うデータ操作部１０２と、を備える。形式変換部１０１は、表形式データを列形式データに変換する際に、当該列形式データを構成する各データの間に空き領域を形成して、当該列形式データに変換し、データ操作部１０２は、列形式データを構成する各データ間に他のデータを挿入する際に、当該各データ間に形成された空き領域に前記他のデータを挿入する。【選択図】図１４
2015179353.tif 000002
【特許請求の範囲】
【請求項１】
表形式データを列ごとの成分に分解した列形式データに変換する形式変換部と、
前記列形式データに対する操作を行うデータ操作部と、を備え、
前記形式変換部は、前記表形式データを前記列形式データに変換する際に、当該列形式データを構成する各データの間に空き領域を形成して、当該列形式データに変換し、
前記データ操作部は、前記列形式データを構成する各データ間に他のデータを挿入する際に、当該各データ間に形成された前記空き領域に前記他のデータを挿入する、
データ処理装置。
【請求項２】
請求項１に記載のデータ処理装置であって、
前記データ操作部は、前記列形式データを形成する各データ間毎に、当該各データ間に対する前記他のデータの挿入状況を表す挿入状況情報を記憶して管理する、
データ処理装置。
【請求項３】
請求項２に記載のデータ処理装置であって、
前記挿入状況情報に応じて、前記列形式データを形成する各データ間に形成している空き領域の大きさを変化させる空き領域調整部を備えた、
データ処理装置。
【請求項４】
請求項３に記載のデータ処理装置であって、
前記データ操作部は、前記挿入状況情報として、前記列形式データを形成する各データ間に対する前記他のデータの挿入度合いを管理し、
前記空き領域調整部は、前記挿入度合いが高いほど、対応する各データ間に形成している空き領域の大きさが大きくなるよう変化させる、
データ処理装置。
【請求項５】
請求項３又は４に記載のデータ処理装置であって、
前記データ操作部は、前記挿入状況情報として、前記列形式データを形成する各データ間に対する前記他のデータの挿入度合いを管理し、
前記空き領域調整部は、前記挿入度合いが低いほど、対応する各データ間に形成している空き領域の大きさが小さくなるよう変化させる、
データ処理装置。
【請求項６】
請求項４又は５に記載のデータ処理装置であって、
前記データ操作部は、前記空き領域調整部にて空き領域の大きさを変化させた各データ間に対する前記挿入度合いを変化させて設定する、
データ処理装置。
【請求項７】
請求項１乃至６のいずれかに記載のデータ処理装置であって、
前記形式変換部は、前記列形式データを構成する各データのうち、先頭と後端とに位置する各データの両端に、それぞれ空き領域を形成する、
データ処理装置。
【請求項８】
請求項１乃至７のいずれかに記載のデータ処理装置であって、
前記形式変換部は、表形式データを、列ごとに、前記データである値、順序、位置、の成分に分解したFAST（Filter Array Structure）構造の列形式データに変換する、
データ処理装置。
【請求項９】
情報処理装置に、
表形式データを列ごとの成分に分解した列形式データに変換する形式変換部と、
前記列形式データに対する操作を行うデータ操作部と、
を実現させるプログラムであって、
前記形式変換部は、前記表形式データを前記列形式データに変換する際に、当該列形式データを構成する各データの間に空き領域を形成して、当該列形式データに変換し、
前記データ操作部は、前記列形式データを構成する各データ間に他のデータを挿入する際に、当該各データ間に形成された前記空き領域に前記他のデータを挿入する、
プログラム。
【請求項１０】
表形式データを列ごとの成分に分解した列形式データに変換し、
前記列形式データに対する操作を行う、データ処理方法であって、
前記表形式データを前記列形式データに変換する際に、当該列形式データを構成する各データの間に空き領域を形成して、当該列形式データに変換し、
前記列形式データを構成する各データ間に他のデータを挿入する際に、当該各データ間に形成された前記空き領域に前記他のデータを挿入する、
データ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置にかかり、特に、データベースを処理するデータ処理装置に関する。
【背景技術】
【０００２】
データベース管理システム（DBMS : database management system）の内部構造として、複数のデータを表形式で表し、その複数の表に互いに関連付けを持たせて運用するリレーショナルデータベース（RDB : relational database）が広く用いられている。RDBは、トランザクションなどの更新処理は得意であるが、1つ1つの行（レコード）をデータの参照や操作の単位としているため、列単位の集計や検索が遅いという欠点がある。
【０００３】
この欠点を克服するために、表形式のデータを、列ごとにそのデータの並びを加工し、重複排除して保持することによって、高速な集計や行うことを可能としたFAST（Filter Array Structure）構造というデータ構造が考案されている。図１は、図１（Ａ）に示す1つの表形式データを、図１（Ｂ）に示すFAST構造データに変換した一例を表している。図１（Ｂ）に示すように、FAST構造は、表形式のデータを、行番号を表す「順序集合」、ユニークでソートされたデータ群である「値リスト」（以後、「VL」と呼ぶ。）、列にどのデータが入っているかを示す「値番号」（以後、「VNo」と呼ぶ。）の3つの成分に分解して表現する。このFAST構造のように、データをレコード単位ではなく、列単位で考え、列の処理を効率的に行えるよう設計された内部構造を持つDBMSをカラムストアDBと呼ぶ。
【０００４】
FAST構造では、データがメモリに乗っている場合、VNo、VLのデータが配列で配置されるため、データへのアドレス計算にコストがかからないことと、データが配列で連続に配置されていることで、キャッシュヒット率が高くなることにより、集計や検索を高速に行うことが可能となっている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−１０８６６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述したFAST構造では、新規データの挿入などの更新処理に時間がかかってしまう、という問題が生じる。具体的に、まず、FAST構造において、VLは、重複データを排除し、かつソートされているデータを配列に格納している。ところが、VLに無い新規データの挿入処理が行う場合、VL配列のデータの配置換えが必要になり、かつ、それに伴い、VLのデータの格納先を指し示すVNoの値も更新し直す「VNo、VLの作り変え」処理を行う必要がある。
【０００７】
VNo、VLの作り変え処理の一例を、図２に示す。ここでは、図２（Ａ）に示すように、FAST構造において「生年月日」列に新規データ「1997/07/22」を挿入する例を考える。「1997/07/22」は、VLのデータのソート性を保つために、図２（Ｂ）の斜線で示すように、VLの配列番号3に格納されることになる。ところが、その際に、図２（Ａ）の矢印Ａ２に示すように、これまで配列番号3から8に入っていたデータは、それぞれ一つ後ろに移動することとなる（VLの作り変え）。次に、このデータ移動に伴い、それまでVLの配列番号3から8のデータの格納先を示していたVNoの値を、図２（Ｂ）に示すように1ずつ増やす必要がある（VNoの作り変え）。
【０００８】
上述した作り変え処理は、ある程度の時間コストがかかり、一般的にVNo、VLサイズが大きいほど時間がかかる。そのため、この時間が大きいほど、作り変え中にユーザからデータへの参照や操作の問い合わせが来た場合のTAT（Turn Around Time）が大きくなる。このように、FAST構造では、新規データの挿入などの更新処理に時間がかかってしまう、という問題が生じる。
【０００９】
ここで、本発明に関連する技術として、特許文献１に開示の技術がある。かかる技術では、新たなデータをデータベースに追加する際に、かかるデータを追加する箇所に空きがなければ、前後のデータを移動して空きを作り、その空きに新たなデータを格納する、とうものである。しかしながら、特許文献１に開示の技術であっても、データ格納時にデータベースに空きを作ると言った処理が必要となり、上述同様に更新処理に時間がかかってしまう、という問題が生じる。
【００１０】
このため、本発明の目的は、上述した課題である、データベースの更新処理に時間がかかる、という問題を解決することにある。
【課題を解決するための手段】
【００１１】
本発明の一形態であるデータ処理装置は、
表形式データを列ごとの成分に分解した列形式データに変換する形式変換部と、
前記列形式データに対する操作を行うデータ操作部と、を備え、
前記形式変換部は、前記表形式データを前記列形式データに変換する際に、当該列形式データを構成する各データの間に空き領域を形成して、当該列形式データに変換し、
前記データ操作部は、前記列形式データを構成する各データ間に他のデータを挿入する際に、当該各データ間に形成された前記空き領域に前記他のデータを挿入する、
という構成をとる。
【００１２】
また、本発明の他の形態であるプログラムは、
情報処理装置に、
表形式データを列ごとの成分に分解した列形式データに変換する形式変換部と、
前記列形式データに対する操作を行うデータ操作部と、
を実現させるプログラムであって、
前記形式変換部は、前記表形式データを前記列形式データに変換する際に、当該列形式データを構成する各データの間に空き領域を形成して、当該列形式データに変換し、
前記データ操作部は、前記列形式データを構成する各データ間に他のデータを挿入する際に、当該各データ間に形成された前記空き領域に前記他のデータを挿入する、
という構成をとる。
【００１３】
また、本発明の他の形態であるデータ処理方法は、
表形式データを列ごとの成分に分解した列形式データに変換し、
前記列形式データに対する操作を行う、データ処理方法であって、
前記表形式データを前記列形式データに変換する際に、当該列形式データを構成する各データの間に空き領域を形成して、当該列形式データに変換し、
前記列形式データを構成する各データ間に他のデータを挿入する際に、当該各データ間に形成された前記空き領域に前記他のデータを挿入する、
という構成をとる。
【発明の効果】
【００１４】
本発明は、以上のように構成されることにより、データベースの更新処理にかかる時間を抑制することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明に関連する技術において、表形式データをFAST構造データに変換した一例を示す図である。
【図２】本発明に関連する技術において、FAST構造データに新規データを挿入するときの様子を示す図である。
【図３】本発明におけるデータベース管理システムの構成を示すブロック図である。
【図４】本発明におけるデータベース管理システムの動作を示すフローチャートである。
【図５】本発明におけるデータベース管理システムの動作を示すフローチャートである。
【図６】本発明におけるデータベース管理システムの動作を示すシーケンス図である。
【図７】本発明におけるデータベース管理システムにて、表形式データをFAST構造データに変換した一例を示す図である。
【図８】本発明に関連する技術において変換したFAST構造データと、本発明におけるデータベース管理システムにて変換したFAST構造データと、を比較した図である。
【図９】本発明におけるデータベース管理システムにて、FAST構造データに新規データを追加するときの処理の様子を示す図である。
【図１０】本発明におけるデータベース管理システムにて、FAST構造データに新規データを追加するときの処理の様子を示す図である。
【図１１】本発明におけるデータベース管理システムにて、FAST構造データに新規データを追加するときの処理の様子を示す図である。
【図１２】本発明におけるデータベース管理システムにて、FAST構造データの空きサイズを調整するときの様子を示す図である。
【図１３】本発明におけるデータベース管理システムにて、FAST構造データに対する新規データの挿入レベルを判定する一例を示す図である。
【図１４】本発明の付記１におけるデータ処理装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１６】
本発明の第１の実施形態を、図１乃至図１３を参照して説明する。図１は、データベース管理システムの構成を示すブロック図である。図２乃至図６は、データベース管理システムの動作を説明するための図である。図７乃至図１３は、データベース管理システムにてデータを操作する時の様子を示す図である。
【００１７】
［構成］
本発明におけるデータベース管理システム１は、演算装置と記憶装置とを備えた一般的な情報処理装置である。そして、データベース管理システム１は、図３に示すように、ユーザ２にて操作され、当該ユーザ２が操作する情報処理端末であるクライアント３が接続されている。
【００１８】
データベース管理システム１は、図３に示すように、装備された演算装置にプログラムが組み込まれることで構築された、インポート部１０、データベース操作部２０、空きサイズ調整部３０、を備える。インポート部１０は、データ変換部１１を備える。データベース操作部２０は、データ挿入処理部２１を備えており、さらにデータ挿入部２１は、データ挿入確認部２２、VNo,VL作り変え部２３、データ挿入部２４、挿入レベル更新部２５、を備えている。また、データ管理システム１は、装備された記憶装置に、取り扱うFAST構造データＤ１を記憶するデータベース４０を備えている。
【００１９】
上記インポート部１０は、システム１を利用するユーザ２によってインポートされた、CSVファイルなどの表形式で表されるデータの集合である表形式データＤ１を受け付ける。そして、インポート部１０が有するデータ変換部１１（形式変換部）は、上述した図１に示すように、表形式データＤ１を、列ごとの成分に分解した列形式データであるFAST構造データＤ２に変換して、データベース４０に記憶する。なお、FAST構造データＤ２は、上述したように、表形式のデータを、行番号を表す「順序集合」、ユニークでソートされたデータ群である「値リスト」（「VL」）、列にどのデータが入っているかを示す「値番号」（「VNo」）の3つの成分に分解して表現したものである。但し、データ変換部１１は、表形式データＤ１をFAST構造データＤ２とは異なる他の列形式データに変換してもよい。
【００２０】
そして、データ変換部１１は、図７（Ａ）に示す表形式データＤ１をFAST構造データＤ２に変換する際に、後述する図７（Ｂ）の「NULL」に示すように、各VLに格納されるデータの間に所定容量の空き領域を挿入する。さらに、データ変換部１１は、後述する図７（Ｂ）に示すように、各VLのデータの間毎に対する新規データの挿入度合いを記憶するための新たな領域である、挿入レベル配列（ＩＬ）を追加した、FAST構造データを作成して、データベースに格納する。
【００２１】
また、データベース操作部２０は、クライアント３から発行された問い合わせを受け付け、当該問い合わせに対して、データベース４０を操作して、問い合わせの結果をクライアント３に返す。特に、データベース操作部２０が有するデータ挿入処理部２１（データ操作部）は、各問い合わせに応じた処理をFAST構造データＤ２に対して行う。また、空きサイズ調整部３０（空き領域調整部）も、FAST構造データＤ２に対する処理を行う。
【００２２】
上記データ挿入処理部２１は、FAST構造データに対して新規データの挿入があった際には、以下のように新規データの照入処理を行う。まず最初に、データ挿入確認部２２で、挿入する範囲に空き領域が存在するか否かを確認する。空き領域がある場合には、データ挿入部２４で、新規データを挿入して、挿入レベル更新部２５で挿入があった範囲の挿入レベル配列「IL」を更新する。空き領域が無い場合は、VNo,VL作り変え部２３でVNo, VLの作り変えを行い、併せて挿入レベル配列「IL」も作り変える。
【００２３】
また、空きサイズ調整部３０は、FAST構造データの空き領域を定期的に調整する。これに伴い、空きサイズ調整部３０は、挿入レベル配列「IL」も作り変える。なお、空きサイズ調整部３０は、必要に応じて上記データ挿入処理部２１と協働して作動し、上述した新規データの挿入時にも、FAST構造データの空き領域を定期的に調整する。
【００２４】
次に、上述したデータ管理システム１の構成の具体例とその動作を、図４乃至図１３を参照して説明する。以下では、特に、＜１．表形式データからFAST構造データへの変換動作＞、＜２．FAST構造データへの新規データの挿入動作＞のうち＜２−ａ．空き領域があるVLへの新規データの挿入動作＞及び＜２−ｂ．VNo,VL作り変え時の動作＞、＜３．空き領域のサイズの調整動作＞、に分けて説明する。
【００２５】
＜１．表形式データからFAST構造データへの変換動作＞
ここでは、図７（Ａ）に示す表形式データである「ふりがな」の列を、FAST構造データに変換する場合を一例に挙げて説明する。
【００２６】
まず、本発明に関連する技術では、通常、「ふりがな」列をFAST構造に変換すると、図８（Ａ）に示す形式となる。この例では、「VL」には、「ふりがな」列データの重複を排除し、ソートされたデータが格納されている。また、「VNo」には、各レコードの「ふりがな」列にどのデータが入っているか分かるように、「VL」のデータの格納先配列番号が格納されている。
【００２７】
これに対して、本発明におけるデータベース管理装置１のデータ変換部１１は、「VL」を作成する際に、当該「VL」を構成する各データ間に、空き領域を入れてデータを格納する。この処理の具体例を、図４のフローチャート及び図８（Ｂ）を参照して説明する。
【００２８】
まず、図７（Ａ）に示す表形式データでは、「ふりがな」列の重複排除したデータの数は、番号2,4の「たかはし」が重複しているため、図８（Ａ）に示すように全部で「9」となる。ここで、空き領域の数（サイズ）「S」を「3」とした場合には、「9×(3 + 1) + 3 = 39」になり、「VL」の配列のサイズは、「39」となる。このように、「VL」の配列領域を確保する（図４のステップＳ１）。
【００２９】
次に、図８（Ａ）に示すようにソートされた「ふりがな」データ9個を、図８（Ｂ）に示すように、各データ間に空き領域が3個、さらに、データの両端に空き領域がそれぞれ3個入るよう、配列番号3, 7, 11, 15, 19, 23, 27, 31, 35に順に格納する（図４のステップＳ２）。このとき、要素が何も入っていない箇所である空き領域には、空きを示す「NULL」を入れる（図４のステップＳ３）。なお、空き領域には「NULL」を入れることに限定されず、空きを示す特別な値など、他の値を入れても構わない。
【００３０】
その後、データ変換部１１は、図８（Ｂ）に示すように、「VL」とは別の新たな配列「IL」（Insert Level）を、「VL」のサイズと同じサイズ「39」で作成する（図４のステップＳ４）。そして、各要素すべてに「0」を格納する（図４のステップＳ５）。このIL配列は、対応するデータの範囲内に対する新規データの挿入度合い（挿入状況情報）を記録するための配列である。そして、後述するように、この「挿入度合い」から判断されるデータ間の「挿入レベル」に応じて、「VL」のデータ間の空きサイズが調整されることとなる。
【００３１】
＜２．FAST構造データへの新規データの挿入動作＞
次に、FAST構造データに、新規データを挿入するときの動作を、図５のフローチャート、図６のシーケンス図、図９乃至図１１を参照して説明する。まず、上述したように作成した図８（Ｂ）に示すFAST構造データの「ふりがな」列に、新規データ「しみず」を挿入する例、つまり、空き領域がある「VL」への新規データの挿入動作を説明する。
【００３２】
＜２−ａ．空き領域があるVLへの新規データの挿入動作＞
図８（Ｂ）に示すFAST構造データの「VL」において、「しみず」がどの範囲にあるかスキャンする（図５のステップＳ１１，図６のステップＳ２１）。配列のスキャン方法は、二分探索で行うことが可能である。すると、「しみず」は、「VL」にはまだ存在せず（図５のステップＳ１２：Ｎｏ）、「さとう」と「すずき」の間にあることが分かる。さらに、図８（Ｂ）に示すように、「さとう」と「すずき」の真ん中の配列番号25の要素は「NULL」で空いているため（図５のステップＳ１３：Ｙｅｓ、図６のステップＳ２２）、図９に斜線で示すように、その空き領域に「しみず」を挿入する（図５のステップＳ１５、図６のステップＳ２３，Ｓ２４）。
【００３３】
その後、新規データを挿入した範囲に位置する「IL」配列の要素の値である「挿入度合い」を「1」増やす。ここでは、「さとう」と「すずき」の間に「しみず」を挿入したため、図９の斜線で示すように、「さとう」と「すずき」の間の範囲に位置する「IL」配列の全ての要素の値を、「0」から「1」にする（図５のステップＳ１６、図６のステップＳ２５，Ｓ２６）。
【００３４】
そして最後に、「VNo」の一番最後に、「VL」の「しみず」を指し示すように要素「25」を追加する（図５のステップＳ１７）（図９の斜線を参考）。なお、新規データが挿入される範囲内の空きが偶数の場合、挿入する箇所として決定する真ん中の場所は、配列番号の小さい方とする。例えば、「すずき」が要素「27」ではなく、「26」だった場合、「しみず」が入る場所は「24」か「25」の2通り考えられるが、小さい方の「24」に入れるとする。
【００３５】
以上の処理により、図８（Ｂ）に示すFAST構造データに新規データである「しみず」が挿入されると、FAST構造データの「VNo」、「VL」は、図９に示すようになる。なお、新規データである「しみず」が、FAST構造データ内のどの範囲にあるかスキャンした結果（図５のステップＳ１１）、既に同じデータが入っていた場合には（図５のステップＳ１２：Ｙｅｓ）、「VL」へのデータ挿入は行わない。
【００３６】
次に、新規データを挿入する箇所に空きがない場合を考える。まず、FAST構造データが図９の場合であり、さらに「しもやなぎ」、「しょうない」の新規データを挿入することを考える。図９において、「しもやなぎ」は、「しみず」と「すずき」の間にあり、その真ん中の配列番号26の要素が「NULL」で空いているため、挿入可能と判断して、図１０に示すように挿入する。続いて、「しょうない」は、「しもやなぎ」と「すずき」の間に位置するが、その間には「ULL」の空きが無い。この場合、下記のように、VNo,VLの作り変えを行う。
【００３７】
＜２−ｂ．VNo,VL作り変え時の動作＞
VNo,VL作り変え処理では、上述したデータ変換部１１にて、表形式データをFAST構造データに変換したときと同様に、「VL」の各データの間に空きを入れるようにする（図６のステップＳ２７，Ｓ２８）。ただし、配列「IL」から判定される「挿入レベル」に応じて、データの範囲ごとに空き領域のサイズ（個数）を変えるようにする。具体的には、新たな空きサイズを、(S + (挿入レベルに応じた個数))、とする。データの範囲の挿入レベルが高ければ高いほど、その後もその範囲にデータが挿入される可能性が高いと推測されるため、空きサイズを大きく取るようにする。
【００３８】
ここで、「VL」の各データ間に対応する「IL」配列に基づく「挿入レベル」の判定方法を、図１３を参照して説明する。図１３（Ａ），（Ｂ），（Ｃ）の各パターンでは、「VL」の範囲内の空き領域（NULL）に設定されている「IL」要素の値である「挿入度合い」が、すべて一致する場合にはその値に対応する「挿入レベル」となり、すべてが一致しない場合には、低い値の「挿入レベル」となる。これらの例では、「VL」のデータ「156」から「162」の範囲の「挿入レベル」は、それぞれ、（Ａ）：レベル1、（Ｂ）：レベル0、（Ｃ）：レベル0となる。また、図１３（Ｄ），（Ｅ）のパターンのように、「VL」範囲内に空きがない場合は、隣あったデータの「IL」要素の値を比較し、同値ならその値、異なるなら小さい方の値が「挿入レベル」となる。よって、これらの例では、（Ｄ）：レベル1、（Ｅ）：レベル0となる。
【００３９】
次に、上述したVNo,VL作り変え処理の一例を、図１１を参照して説明する。ここでは、図１１（Ａ）のFAST構造データに対して、新規データ「さとう」を挿入することとする。すると、「さとう」は、「きむら」から「たかはし」の範囲にあるが、その間に空きがないため、VNo,VLの作り変えを行う。
【００４０】
具体的に、VNo,VLの作り変え処理は、まず、「VL」のデータ間に、当該データ間に対応する「挿入レベル」の値に応じて、いくつかの新たな空き領域を挿入して行う。ここでは、一例として、データ間に、「元の空き領域数＋（挿入レベル×３）」個の空き領域を新たに挿入している。つまり、挿入レベルが高ければ高いほど、その範囲に多くの空き領域が挿入される。但し、挿入する空き領域の数は、上述した数であることに限定されない。
【００４１】
例えば、図１１（Ａ）において「IL」に基づく「挿入レベル」が「０」ではない斜線で示す範囲については、図１１（Ｂ）の斜線で示す「NULL」の空き領域が追加されている。特に、「きむら」と「たかはし」の間には、「挿入レベル＝２」に相当する６個の空き領域「NULL」が追加される。そして、「きむら」と「たかはし」の間に追加された空き領域に、「さとう」が挿入される。これに伴い、「さとう」が挿入された「きむら」から「たかはし」の範囲は、図１１（Ｂ）の斜線に示すように、「IL」の値である「挿入度合い」が、「1」加算され、「3」となる。
【００４２】
＜３．空き領域のサイズの調整動作＞
ここで、新規データの挿入があまり起こっていない範囲、つまり、「挿入レベル」が低い範囲は、そのままだと長い間データが挿入されず利用されないまま、初期の空き領域のサイズ分のメモリ量を消費することになる。これの対策として、「挿入レベル」が低い範囲の空き領域を、空きサイズ調整部３０で定期的に調整する処理を行う。また、このとき、上述したVNo,VLの作り変えで行った「挿入レベル」に応じて空き領域を広げる処理も行う。なお、この処理は、データベースのシステム負荷が低いとき（例えば、夜間）を見計らい、定期的に自動で実行されるものとする。
【００４３】
空き領域のサイズの調整では、上述したVNo,VLの作り変え処理に加えて、以下の処理を行う。
【００４４】
まず、「挿入レベル」が「0」の範囲は、空き領域のサイズつまり空き領域の個数Sを、「S/2（小数点以下切り捨て）」にする。ただし、後に新規データの挿入が起こることもあり、その際に空き領域のサイズが「0」であるということが無いように、最低空き領域サイズは「1」とする。例えば、図１２（Ａ）の斜線で示す「挿入レベル」が「0」の範囲の空き領域が「3」個ある場合には、図１２（Ｂ）の網掛けで示すように、空き領域が「1」個（3/2：小数点以下切り捨て）となる。
【００４５】
これに加え、「挿入レベル」が「0」より大きい範囲については、上述同様に、図１２（Ｂ）に示すように、「挿入レベル」の値に応じた個数の空き領域「NULL」を挿入する。
【００４６】
以上のようにして、VNo,VLの作り変えを行った後に、図１２（Ｂ）の斜線に示すように、各「IL」の「挿入度合い」をそれぞれ「1」下げる。このとき、「挿入度合い」が「0」の箇所は、「0」のままとする。
【００４７】
なお、実際のデータベースの運用では、使用可能なリソースが限られている。空きサイズを余分に取るVNo,VLの作り変えや空きサイズの調整により、必要メモリ使用量が使用可能なリソース限度を超えないよう、配列サイズに最大値を設定してもよい。この場合、配列サイズが最大値を超えたら、空きサイズの調整を複数回行って配列サイズを縮めるようにするという運用も可能である。また、上記では、「挿入レベル」が「0」の範囲の空き領域を小さくする場合を説明したが、「挿入レベル」が「0」よりも大きい範囲においても、空き領域を小さくしてもよい。その場合には、「挿入レベル」が低いほど後に新規データが挿入される可能性も低くなるため、「挿入レベル」が低いほど空き領域の大きさ（個数）が小さく（少なく）なるよう調整してもよい。
【００４８】
なお、上述した空きサイズ調整部３０に、調整を非同期実行するためのコマンドまたはAPI I/Fを用意し、それをユーザ２またはユーザが利用するクライアント３から都合がいいタイミングで実行できるようにすることも可能である。これにより、データベースの運用者が、調整を明示的なタイミングで行うことができる。
【００４９】
以上のように、本発明によると、VNo,VLの作り変え回数が減少することにより、当該作り変えにかかる時間を抑制でき、その結果、装置の性能向上を図ることができる。特に、本発明は、ソートされた列データに、ランダムかつ一様に新規データが挿入されるような列に対して有益である。
【００５０】
なお、上記では、新規データの挿入操作について説明したが、データの更新処理についても本発明は適用可能である。例えば、これまでのシステムでは、「VL」に無い新しいデータで上書きすると、新しいデータの挿入処理と同様の処理を行うことになり、VNo,VLの作り変えが必要となる。この場合であっても、本発明の手法により、作り変え発生回数の軽減が可能である。
【００５１】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるデータ処理装置（図１４参照）、プログラム、データ処理方法の構成の概略を説明する。但し、本発明は、以下の構成に限定されない。
【００５２】
（付記１）
表形式データを列ごとの成分に分解した列形式データに変換する形式変換部１０１と、
前記列形式データに対する操作を行うデータ操作部１０２と、を備え、
前記形式変換部１０１は、前記表形式データを前記列形式データに変換する際に、当該列形式データを構成する各データの間に空き領域を形成して、当該列形式データに変換し、
前記データ操作部１０２は、前記列形式データを構成する各データ間に他のデータを挿入する際に、当該各データ間に形成された前記空き領域に前記他のデータを挿入する、
データ処理装置１００。
【００５３】
上記発明によると、まず、表形式データを列形式データに変換する際に、列形式データを構成する各データ間に予め空き領域を形成して列形式のデータを生成する。そして、列形式データを操作して当該列形式データを構成する各データの間に他のデータを挿入する際には、上述したように形成された空き領域に他のデータを挿入する。これにより、列形式データに対して他のデータを挿入した際に、その順序の更新を行うことがないため、更新かかる時間を抑制して、データ処理装置の性能の向上を図ることができる。
【００５４】
（付記２）
付記１に記載のデータ処理装置であって、
前記データ操作部は、前記列形式データを形成する各データ間毎に、当該各データ間に対する前記他のデータの挿入状況を表す挿入状況情報を記憶して管理する、
データ処理装置。
【００５５】
（付記３）
付記２に記載のデータ処理装置であって、
前記挿入状況情報に応じて、前記列形式データを形成する各データ間に形成している空き領域の大きさを変化させる空き領域調整部を備えた、
データ処理装置。
【００５６】
（付記４）
付記３に記載のデータ処理装置であって、
前記データ操作部は、前記挿入状況情報として、前記列形式データを形成する各データ間に対する前記他のデータの挿入度合いを管理し、
前記空き領域調整部は、前記挿入度合いが高いほど、対応する各データ間に形成している空き領域の大きさが大きくなるよう変化させる、
データ処理装置。
【００５７】
（付記５）
付記３又は４に記載のデータ処理装置であって、
前記データ操作部は、前記挿入状況情報として、前記列形式データを形成する各データ間に対する前記他のデータの挿入度合いを管理し、
前記空き領域調整部は、前記挿入度合いが低いほど、対応する各データ間に形成している空き領域の大きさが小さくなるよう変化させる、
データ処理装置。
【００５８】
（付記６）
付記４又は５に記載のデータ処理装置であって、
前記データ操作部は、前記空き領域調整部にて空き領域の大きさを変化させた各データ間に対する前記挿入度合いを変化させて設定する、
データ処理装置。
【００５９】
このように、過去のデータの挿入状況に応じて空き領域の大きさを変化させることにより、その後のデータの挿入に対して適切に対応することができる。その結果、他のデータを挿入することによる列形式データの順序の更新が必要となることをさらに抑制できると共に、容量の節約を図ることができ、データ処理装置の性能のさらなる向上を図ることができる。
【００６０】
（付記７）
付記１乃至６のいずれかに記載のデータ処理装置であって、
前記形式変換部は、前記列形式データを構成する各データのうち、先頭と後端とに位置する各データの両端に、それぞれ空き領域を形成する、
データ処理装置。
【００６１】
（付記８）
付記１乃至７のいずれかに記載のデータ処理装置であって、
前記形式変換部は、表形式データを、列ごとに、前記データである値、順序、位置、の成分に分解したFAST（Filter Array Structure）構造の列形式データに変換する、
データ処理装置。
【００６２】
（付記９）
情報処理装置に、
表形式データを列ごとの成分に分解した列形式データに変換する形式変換部と、
前記列形式データに対する操作を行うデータ操作部と、
を実現させるプログラムであって、
前記形式変換部は、前記表形式データを前記列形式データに変換する際に、当該列形式データを構成する各データの間に空き領域を形成して、当該列形式データに変換し、
前記データ操作部は、前記列形式データを構成する各データ間に他のデータを挿入する際に、当該各データ間に形成された前記空き領域に前記他のデータを挿入する、
プログラム。
【００６３】
（付記９．１）
付記９に記載のプログラムであって、
前記データ操作部は、前記列形式データを形成する各データ間毎に、当該各データ間に対する前記他のデータの挿入状況を表す挿入状況情報を記憶して管理する、
プログラム。
【００６４】
（付記９．２）
付記９．１に記載のプログラムであって、
前記情報処理装置に、さらに、
前記挿入状況情報に応じて、前記列形式データを形成する各データ間に形成している空き領域の大きさを変化させる空き領域調整部、
を実現させるためのプログラム。
【００６５】
（付記１０）
表形式データを列ごとの成分に分解した列形式データに変換し、
前記列形式データに対する操作を行う、データ処理方法であって、
前記表形式データを前記列形式データに変換する際に、当該列形式データを構成する各データの間に空き領域を形成して、当該列形式データに変換し、
前記列形式データを構成する各データ間に他のデータを挿入する際に、当該各データ間に形成された前記空き領域に前記他のデータを挿入する、
データ処理方法。
【００６６】
（付記１０．１）
付記１０に記載のデータ処理方法であって、
前記列形式データを構成する各データ間に他のデータを挿入する際に、前記列形式データを形成する各データ間毎に、当該各データ間に対する前記他のデータの挿入状況を表す挿入状況情報を記憶して管理する、
データ処理方法。
【００６７】
（付記１０．２）
付記１０．１に記載のデータ処理方法であって、
前記挿入状況情報に応じて、前記列形式データを形成する各データ間に形成している空き領域の大きさを変化させる、
データ処理方法。
【００６８】
なお、上述したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されている。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【００６９】
以上、上記実施形態等を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることができる。
【符号の説明】
【００７０】
１  データベース管理システム
２  ユーザ
３  クライアント
１０  インポート部
１１  データ変換部
２０  データベース操作部
２１  データ挿入処理部
２２  データ挿入確認部
２３  VNo,VL作り変え部
２４  データ挿入部
２５  挿入レベル更新部
３０  空きサイズ調整部
４０  データベース
Ｄ１  表形式データ
Ｄ２  FAST構造データ
１００  データ処理装置
１０１  形式変換部
１０２  データ操作部
【図１】
2015179353.tif 000003
【図２】
2015179353.tif 000004
【図３】
2015179353.tif 000005
【図４】
2015179353.tif 000006
【図５】
2015179353.tif 000007
【図６】
2015179353.tif 000008
【図７】
2015179353.tif 000009
【図８】
2015179353.tif 000010
【図９】
2015179353.tif 000011
【図１０】
2015179353.tif 000012
【図１１】
2015179353.tif 000013
【図１２】
2015179353.tif 000014
【図１３】
2015179353.tif 000015
【図１４】
2015179353.tif 000016