(57)【要約】  データベース管理システムは、データベースに対する新規のデータテーブルの入力を受け付け、その新規のデータテーブルのうちの対象カラムに登録されている各値である各比較元値が、データベースに格納済みのデータテーブルのうちの対象カラムに登録されている各値である各比較先値と異なっている否かを判定するユニーク制約判定処理を行い、ユニーク制約判定処理における判定の結果が真の場合に、データベースにおける、格納済みのデータテーブルが格納されている第１のデータベース領域とは異なる第２のデータベース領域に、新規のデータテーブルを格納する。
2015025401.tif 000002
【特許請求の範囲】
【請求項１】
データベースに対する新規のデータテーブルの入力を受け付ける受付部と、
前記新規のデータテーブルのうちの対象カラムに登録されている各値である各比較元値が、前記データベースに格納済みのデータテーブルのうちの対象カラムに登録されている各値である各比較先値と異なっている否かを判定するユニーク制約判定処理を行い、前記ユニーク制約判定処理における判定の結果が真の場合に、前記データベースにおける、前記格納済みのデータテーブルが格納されている第１のデータベース領域とは異なる第２のデータベース領域に、前記新規のテータテーブルを格納する挿入部と
を有するデータベース管理システム。
【請求項２】
前記ユニーク制約判定処理は、１段階目の判定処理と、前記１段階目の判定処理における判定結果が真の場合に行われる２段階目の判定処理とを含み、
前記１段階目の判定処理は、前記新規データテーブルの何れかの比較元値が前記格納済みデータテーブルのカラム値範囲に含まれるか否かを判定する処理であり、前記カラム値範囲の最大値が、比較先値の最大値であり、前記カラム値範囲の最小値が、比較先値の最小値であり、
前記２段階目の判定処理は、前記新規データテーブルのうちの全ての範囲内比較元値が前記格納済みデータテーブルにおける全ての比較先値と異なっているか否かを判定する処理であり、前記範囲内比較元値は、前記カラム値範囲に含まれる比較元値であり、
前記２段階目の判定処理における判定結果が真の場合が、前記ユニーク制約判定処理における判定結果が真の場合である、
請求項１に記載のデータベース処理システム。
【請求項３】
前記１段階目の判定処理は、前記格納済みデータテーブル毎のカラム値範囲を示す第１判定用情報を用いて行われ、
前記挿入部は、前記第２のデータベース領域に格納される前記新規データテーブルのカラム値範囲を前記第１判定用情報に登録する、
請求項２に記載のデータベース処理システム。
【請求項４】
前記第２段階目の判定処理は、前記新規データテーブルにおける全ての範囲内比較元値をそれぞれ情報量を削減することにより得られた全ての比較元削減値が、前記格納済みデータテーブルの全ての比較先値をそれぞれ情報量を削減することにより得られた全ての比較先削減値と異なっているか否かを判定する処理である、
請求項１に記載のデータベース処理システム。
【請求項５】
前記２段階目の判定処理は、前記格納済みデータテーブルの比較先値に対応した比較削減値を有する第２判定用情報を用いて行われ、
前記挿入部は、前記第２のデータベース領域に格納される前記新規データテーブルの範囲内比較元値に対応した比較元削減値を前記第２判定用情報に登録する、
請求項４に記載のデータベース処理システム。
【請求項６】
前記比較元削減値は、前記比較元値を二進数で表現した値の所定の上位Ｎビット（Ｎは２以上の整数）であり、
前記比較先削減値は、前記比較先値を二進数で表現した値の所定の上位Ｎビットである、
請求項４に記載のデータベース処理システム。
【請求項７】
前記比較元削減値は、前記比較元値のハッシュ値であり、
前記比較先削減値は、前記比較先値のハッシュ値である、
請求項４に記載のデータベース処理システム。
【請求項８】
データベースに対する新規のデータテーブルを入力する入力デバイスと、
前記新規のデータテーブルのうちの対象カラムに登録されている各値である各比較元値が、前記データベースに格納済みのデータテーブルのうちの対象カラムに登録されている各値である各比較先値と異なっているか否かを判定するユニーク制約判定処理を行い、前記ユニーク制約判定処理における判定の結果が真の場合に、前記データベースにおける、前記格納済みのデータテーブルが格納されている第１のデータベース領域とは異なる第２のデータベース領域に、前記新規のテータテーブルを格納するプロセッサと
を有する計算機。
【請求項９】
前記ユニーク制約判定処理は、１段階目の判定処理と、前記１段階目の判定処理における判定結果が真の場合に行われる２段階目の判定処理とを含み、
前記１段階目の判定処理は、前記新規データテーブルの何れかの比較元値が前記格納済みデータテーブルのカラム値範囲に含まれるか否かを判定する処理であり、前記カラム値範囲の最大値が、比較先値の最大値であり、前記カラム値範囲の最小値が、比較先値の最小値であり、
前記２段階目の判定処理は、前記新規データテーブルのうちの全ての範囲内比較元値が前記格納済みデータテーブルにおける全ての比較先値と異なっているか否かを判定する処理であり、前記範囲内比較元値は、前記カラム値範囲に含まれる比較元値であり、
前記２段階目の判定処理における判定結果が真の場合が、前記ユニーク制約判定処理における判定結果が真の場合である、
請求項８に記載の計算機。
【請求項１０】
前記１段階目の判定処理は、前記格納済みデータテーブル毎のカラム値範囲を示す第１判定用情報を用いて行われ、
前記挿入部は、前記第２のデータベース領域に格納される前記新規データテーブルのカラム値範囲を前記第１判定用情報に登録する、
請求項９に記載の計算機。
【請求項１１】
前記第２段階目の判定処理は、前記新規データテーブルにおける全ての範囲内比較元値をそれぞれ情報量を削減することにより得られた全ての比較元削減値が、前記格納済みデータテーブルの全ての比較先値をそれぞれ情報量を削減することにより得られた全ての比較先削減値と異なっているか否かを判定する処理である、
請求項８に記載の計算機。
【請求項１２】
前記２段階目の判定処理は、前記格納済みデータテーブルの比較先値に対応した比較削減値を有する第２判定用情報を用いて行われ、
前記挿入部は、前記第２のデータベース領域に格納される前記新規データテーブルの範囲内比較元値に対応した比較元削減値を前記第２判定用情報に登録する、
請求項９に記載の計算機。
【請求項１３】
前記比較元削減値は、前記比較元値を二進数で表現した値の所定の上位Ｎビット（Ｎは２以上の整数）であり、
前記比較先削減値は、前記比較先値を二進数で表現した値の所定の上位Ｎビットである、
請求項１２に記載の計算機。
【請求項１４】
前記比較元削減値は、前記比較元値のハッシュ値であり、
前記比較先削減値は、前記比較先値のハッシュ値である、
請求項１２に記載の計算機。
【請求項１５】
データベースに対する新規のデータテーブルの入力を受け付け、
前記新規のデータテーブルのうちの対象カラムに登録されている各値である各比較元値が、前記データベースに格納済みのデータテーブルのうちの対象カラムに登録されている各値である各比較先値と異なっている否かを判定するユニーク制約判定処理を行い、前記ユニーク制約判定処理における判定の結果が真の場合に、前記データベースにおける、前記格納済みのデータテーブルが格納されている第１のデータベース領域とは異なる第２のデータベース領域に、前記新規のテータテーブルを格納する
データベース管理方法。
【請求項１６】
前記ユニーク制約判定処理は、前記１段階目の判定処理と前記２段階目の判定処理に加えて、３段階目の判定処理を含み、
前記３段階目の判定処理は、前記２段階目の判定処理における判定結果が真であったカラム値の数とそのカラム値が属するデータベース領域によって、判定対象カラム値を含むレコードが格納されているテーブルを全て読み込んで各比較元値と一致するか確認することと、判定対象カラム値を含む索引を読み込んで各比較元値と一致するか確認することのどちらかが選択される、
請求項２に記載のデータベース処理システム。
【請求項１７】
前記ユニーク制約判定処理は、前記１段階目の判定処理と前記２段階目の判定処理に加えて、３段階目の判定処理を含み、
前記３段階目の判定処理は、前記２段階目の判定処理における判定結果が真であったカラム値の数とそのカラム値が属するデータベース領域によって、判定対象カラム値を含むレコードが格納されているテーブルを全て読み込んで各比較元値と一致するか確認することと、判定対象カラム値を含む索引を読み込んで各比較元値と一致するか確認することのどちらかが、確認を行うデータベース領域毎に選択される、
請求項２に記載のデータベース処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、データベース管理技術に関する。
【背景技術】
【０００２】
近年、ペタバイト（以下「ＰＢｙｔｅ」という）単位の大量のデータを管理するデータベースを用いてビックデータを解析するニーズが高まりつつある。このようなビックデータの解析においては、データの鮮度が重要であるため、数ギガ・バイト（以下、ＧＢｙｔｅ）単位のデータを追加しながら検索処理を行いたいという要求がある。ここで、新たに追加されるデータテーブル（以下、「新規データテーブル」という）の格納先領域を、既存領域（格納済みデータテーブルの領域）と区別して構成する方法が知られている（例えば、特許文献１）。【０００３】
特許文献１によれば、新規データテーブルが入力される都度に、新規データテーブルの格納先として既存領域とは別の領域が確保され、確保された領域に新規データテーブルが格納される。【０００４】
この方法において、領域に格納された新規データテーブルの対象カラムがユニーク制約条件（ユニーク性を保証するための条件）を満たすか否かを判定するためには、新規データテーブルの対象カラムを、全ての既存領域内の格納済みデータテーブルの対象カラムと比較する必要がある（例えば、特許文献２）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−１５０５４７号公報
【特許文献２】米国特許公開第５５５１０２７号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１及び２によれば、新規データテーブルが入力される都度に格納済みデータテーブルを記憶した既存データベース領域とは別のデータベース領域を確保してその確保されたデータベース領域に新規データテーブルを格納し、その後に、データベース領域に格納された新規データテーブルの対象カラムがユニーク制約条件を満たすか否かを、新規データテーブルのデータを格納済みの全てのデータと比較して判定する処理を行うことで、新規データテーブルの対象カラムのユニーク性を保証することが考えられる。しかし、そのような処理は、処理コストが大きい。【０００７】
そこで、本発明の目的は、新規データテーブルが既存データベース領域とは別のデータベース領域に格納されるようになっている環境において新規データテーブルの対象カラムのユニーク性を保証することの処理コストを削減することにある。
【課題を解決するための手段】
【０００８】
データベース管理システムは、データベースに対する新規のデータテーブルの入力を受け付け、その新規のデータテーブルのうちの対象カラムに登録されている各値である各比較元値が、データベースに格納済みのデータテーブルのうちの対象カラムに登録されている各値である各比較先値と異なっている否かを判定するユニーク制約判定処理を行い、ユニーク制約判定処理における判定の結果が真の場合に、データベースにおける、格納済みのデータテーブルが格納されている第１のデータベース領域とは異なる第２のデータベース領域に、新規のテータテーブルを格納する。
【発明の効果】
【０００９】
本発明によれば、新規データテーブルが既存データベース領域とは別のデータベース領域に格納されるようになっている環境において新規データテーブルの対象カラムのユニーク性を保証することの処理コストを削減することができる。
【図面の簡単な説明】
【００１０】
【図１】実施形態に係る計算機システムの一例を示すブロック図である。
【図２】データベースに格納済みのデータリストが存在しない場合におけるデータテーブル挿入処理の概要を示すフローチャートである。
【図３】データベースに格納済みのデータテーブルが存在する場合におけるデータテーブル挿入処理の概要を示すフローチャートである。
【図４】管理点管理テーブルの構成例を示す図である。
【図５】セグメント情報管理テーブルの構成例を示す図である。
【図６】表情報管理テーブルの構成例を示す図である。
【図７】カラム値範囲リストの構成例を示す図である。
【図８】比較用値リストの構成例を示す図である。
【図９】データベースに格納済みのデータテーブルが存在しない場合におけるデータテーブル挿入処理の一例を示すフローチャートである。
【図１０】カラム値範囲リストの設定処理の詳細を示すフローチャートの一例である。
【図１１】比較用値リストの設定処理の詳細を示すフローチャートの一例である。
【図１２】データベースに格納済みのデータリストが存在する場合におけるデータテーブル挿入処理の一例を示すフローチャートである。
【図１３】挿入用データテーブルのユニーク制約判定処理の一例を示すフローチャートである。
【図１４】実施形態の概要を説明する模式図である。
【図１５】挿入用データテーブルのユニーク制約判定処理の一例を示すフローチャートである。
【図１６】挿入用データテーブルのユニーク制約判定処理の一例を示すフローチャートである。
【図１７】比較対象ＬＤ一覧の構成例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照しながら実施形態を説明する。なお、図面では、同種の要素の参照符号は、同一の親番号を含んでおり、同種の要素を区別しないで説明する場合には、参照符号のうちの親番号のみを用いて説明し、同種の要素を区別して説明する場合には、参照符号全体を用いて説明する。
【００１２】
図１４は、本実施形態の概要を説明する模式図である。
【００１３】
サーバ１０は、計算機の一例であり、プロセッサ２１を有する。サーバ１０に、外部ストレージ装置１２が接続されている。
【００１４】
外部ストレージ装置１２は、データベース１０００を記憶し、データベース１０００が、複数のデータベース領域１０１を有する。データベース領域１０１は、所定のサイズの１又は２以上のセグメントによって構成される。
【００１５】
プロセッサ２１は、データテーブル２１０が入力されると、その入力されたデータテーブル２１０のサイズに基づいてデータベース領域１０１を確保する（つまり、割り当てるセグメント数を決定する）。そして、プロセッサ２１は、その入力されたデータテーブル２１０をその確保したデータベース領域１０１に格納する。この処理は、データテーブル２１０が入力される毎に実行される。サーバ１０が、図示しない入力デバイス（例えば、Ｉ／Ｆ（通信インターフェースデバイス））を有していて、データテーブル２１０は、その入力デバイスから入力されてよい。データテーブル２１０は、例えば、図示しないクライアントから入力されてもよいし、外部ストレージ装置１２から入力されてよい（読み出されてよい）。
【００１６】
以下、図１４を参照して、一具体例を説明する。なお、データテーブル２１０が有する複数のカラムのうちの対象カラム１１１について、ユニーク制約条件が設定されているとする。ここで、「対象カラム」とは、データテーブル２１０が有する１以上の属性（項目）のうちの対象属性のカラムである。複数のデータテーブル２１０にそれぞれ対応した複数の対象カラムは、対象属性は同じである。また、以下、対象カラムに登録される値を「対象カラム値」という。データテーブル２１０が複数のレコードを有していれば、通常、対象カラムには、複数の対象カラム値が登録されている。また、「ユニーク制約条件」とは、対象カラム値が相互に重複しないという制約の条件である。また、データベース領域１０１−１及び１０１−２に、それぞれデータテーブル２１０−１及び１１０−２が既に格納されているとする。ここで、サーバ１０に、新たにデータテーブル２１０−３が入力されたとする。データテーブル２１０−１及び２１０−２で１つの表が構成されている。
【００１７】
プロセッサ２１は、入力されたデータテーブル２１０−３の対象カラム１１１−３における対象カラム値（以下「比較元値」という）が、格納済みのデータテーブル２１０−１及び２１０−２の各々の対象カラム値に対してユニーク制約条件を満たしているか否か（すなわち、比較元値が、格納済みのデータテーブル２１０−１及び２１０−２の対象カラム１１１−１及び１１１−２における何れの対象カラム値とも異なっているか否か）を判定する。データテーブル２１０−３がユニーク制約条件を満たすと判定された場合に、データテーブル２１０−３が表の構成要素として追加される。データテーブル２１０−３がユニーク制約条件を満たすか否かの判定は、例えば、下記の１段階目の判定処理と２段階目の判定処理を含む。
【００１８】
（１段階目の判定処理）プロセッサ２１は、比較元値毎に、比較元値と同じ対象カラム値が、格納済みのデータテーブル２１０−１及び２１０−２のそれぞれ対応したカラム値範囲１２０−１及び１２０−２に含まれているか否かを判定する。カラム値範囲１２０とは、対応する格納済みのデータテーブル２１０に登録されている対象カラム値（以下「比較先値」という）のうちの最小値と最大値との間の範囲である。カラム値範囲１２０は、比較先値の最小値と比較先値の最大値を含む。プロセッサ２１は、何れのカラム値範囲１２０にも含まれない比較元値を、ユニーク制約条件を満たすと判定する。具体的には、比較元値「１」は、カラム値範囲１２０−１（「８」〜「１５」）とカラム値範囲１２０−２（「５」〜「１０」）の何れにも含まれないので、ユニーク制約条件を満たす。一方、比較元値「６」は、データカラム値範囲１２０−２（「５」〜「１０」）に含まれるので、次の２段階目の判定処理の判定が行われる（Ｓ２０−１）。同様に、比較元値「１４」は、カラム値範囲（「８」〜「１５」）１２０−１に含まれるので、次の２段階目の判定処理が行われる（Ｓ２０−２）。
【００１９】
（２段階目の判定処理）プロセッサ２１は、１段階目の判定処理でカラム値範囲に含まれると判定された比較元値（以下「範囲内比較元値」という）が、そのカラム値範囲を構成するデータテーブルの比較先値の何れかと一致するか否かを判定する。何れの比較先値とも一致しない範囲内比較元値は、ユニーク制約条件を満たすと判定される。何れかの比較先値と一致する範囲内比較元値は、ユニーク制約条件を満たさないと判定される。図１４において、範囲内比較元値「１４」は、格納済みのデータテーブル２１０−１の比較先値「８」、「１２」及び「１５」の何れとも一致しないので、ユニーク制約条件を満たす。同様に、範囲内比較元値「６」は、データベース領域１０１−１に格納済みのデータテーブル２１０−２の比較先値「５」、「７」及び「１０」の何れとも一致しないので、ユニーク制約条件を満たす。
【００２０】
プロセッサ２１は、入力されたデータテーブル２１０−３の全ての比較元値についてユニーク制約条件を満たすと判定した場合、その入力されたデータテーブル２１０−３を、データテーブル２１０−３用のデータベース領域（何れの格納済みデータテーブルを記憶していないデータベース領域）１０１−３に格納する。図１４において、全ての比較元値「１」、「６」及び「１４」が、何れもユニーク制約条件を満たすので、プロセッサ２１は、そのデータテーブル２１０−３をデータベース領域１０１−３に格納する（Ｓ４０）。これにより、データテーブル２１０−１及び２１０−２で構成されていた表に、新たにデータテーブル２１０−３が挿入されたことになる。一方、プロセッサ２１は、いずれか１つの比較元値がユニーク制約条件を満たさないと判定した場合（例えば、ユニーク制約条件を満たさない範囲内比較元値が１つでも存在する場合）、入力されたデータテーブル２１０−３をデータベース領域に格納しない。
【００２１】
以上の処理により、複数の記憶領域１０１に格納されているデータテーブルにおいて、対象カラム１１１のユニーク性を保証することができる。また、プロセッサ２１は、１段階目の判定処理で、ユニーク制約条件を満たす比較元値をおおまかに見つけ、ユニーク制約条件を満たす比較元値と判定されなかった比較元値についてのみ、１段階目の判定処理の後の２段階目の判定処理で詳細に判定を行うことで、対象カラム１１１−３のユニーク性を短時間で判定することができる。
【００２２】
なお、プロセッサ２１は、上記２段階目の判定処理における範囲内比較元値と比較先値との一致可否判定を、次のように行ってもよい。
【００２３】
プロセッサ２１は、比較元値及び比較先値のそれぞれについて、二進数の上位Ｎビット（Ｎは自然数）を比較用テーブル１３０に格納しておく。プロセッサ２１は、範囲内比較元値の上位ビットと、比較先値の上位Ｎビットの何れかと一致するか否かを判定する。何れの比較先値の上位Ｎビットとも一致しない範囲内比較元値は、ユニーク制約条件を満たすと判定される。なお、図１４では、対象カラム値を二進数で表した４ビット全てが記載されているが、実際に比較用テーブル１３０に格納されるビットは、下線が引かれた上位３ビット（Ｎ＝３）であるとする。
【００２４】
範囲内比較元値の上位３ビットと一致する比較先値の上位３ビットが存在する場合、プロセッサ２１は、その範囲内比較元値と、上位３ビットの一致する比較先値とが一致するか否かを判定する。それらの何れの比較先値とも一致しない場合、その範囲内比較元値は、ユニーク制約条件を満たすとプロセッサ２１により判定される。範囲内比較元値が何れかの比較先値と一致する場合、範囲内比較元値は、ユニーク制約要件を満たさないと判定される。ユニーク制約条件を満たさない範囲内比較元値が存在した場合、プロセッサ２１は、上記２段階目の判定処理と同様、入力されたデータテーブル２１０−３を記憶領域１０１に格納しないとしてもよい。
【００２５】
例えば、プロセッサ２１は、比較元値「１」、「６」、「１４」の上位３ビット「０００」、「０１１」、「１１１」をそれぞれ格納した比較用テーブル１３０−３を用意しておく。比較元値「１」は、１段階目の判定処理においてカラム値範囲１２０−１及び１２０−２の何れにも含まれなかったので、比較用値を使用した判定は行われない。比較元値「６」は、１段階目の判定処理においてカラム値範囲１２０−２に含まれたので、プロセッサ２１は、その範囲内比較元値「６」の上位３ビット「０１１」と一致する上位３ビットが、カラム値範囲１２０−２に対応する比較用テーブル１３０−２に存在するか否かを判定する。比較用テーブル１３０−２には、一致する上位３ビット「０１１」が存在するので、プロセッサ２１は、範囲内比較元値「６」と、上位３ビットが「０１１」である比較先値とを比較する。ここで、上位３ビットが「０１１」である比較先値はデータテーブル２１０−２において「７」のみであり、範囲内比較元値「６」と一致する比較先値がデータテーブル２１０−２に存在しないことがわかる。このため、範囲内比較元値「６」は、ユニーク制約条件を満たすと判定される（Ｓ３０−１）。一方、もう１つの範囲内比較元値「１４」についても同様に処理され、範囲内比較元値「１４」がデータテーブル２１０−１の何れの比較先値とも不一致であることがわかる。このため、範囲内比較元値「１４」も、ユニーク制約条件を満たすと判定される（Ｓ３０−２）。
【００２６】
変形例において、まず上位Ｎビット同士を比較しているのは、一致可否判定を高速化するためである。これは、比較元値及び比較先値が大きい場合により効果的である。したがって、２段階目の判定処理の変形例は、上述の上位Ｎビット同士を比較する以外の方法であってもよい。例えば、２段階目の判定処理の変形例は、比較元値及び比較先値のハッシュ値同士を比較するとしてもよい。つまり、上位Ｎビット又はハッシュ値は、対象カラムの属性値の情報量を削減した情報量削減値ということができ、２段階目の判定処理の変形例は、比較元値の情報量削減値と、比較先値の情報量削減値とを比較する処理ということもできる。
【００２７】
以上が、本実施形態の概要である。なお、複数の記憶領域１０１に格納される複数のデータテーブルは、それぞれ、データベースの一要素であり、例えば、データベーススキーマの一種の表の一要素である。データベースは、外部ストレージ装置１２に代えて、サーバ１０内の記憶デバイス（例えばメモリ又は補助記憶デバイス）に格納されてよい。
【００２８】
以下、本実施形態を詳細に説明する。
【００２９】
図１は、本実施形態に係る計算機システム１の一例を示すブロック図である。
【００３０】
計算機システム１は、サーバ１０と、外部ストレージ装置１２と、クライアント１１とを含む。サーバ１０と、外部ストレージ装置１２と、クライアント１１とは、通信ネットワーク１３を通じて双方向にデータを送受信できる。計算機システム１において、クライアント１１がサーバ１０に情報を入力する入力デバイス及びサーバ１０が出力した情報を表示する表示デバイスのような役割を担うが、サーバ１０が入出力デバイスを有し、サーバ１０が、その入出力デバイスを介して、情報を入力したり、情報を出力（表示）したりしてよい。
【００３１】
サーバ１０は、前述したように、Ｉ／Ｆ（例えばＮＩＣ（Network  Interface  Card））１４０１、メモリ２０及びそれらに接続されたプロセッサ２１を有する。メモリ２０に代えて又は加えて他種の記憶デバイスが採用されてもよい。
【００３２】
メモリ２０が、データベース管理システム３０を記憶する。データベース管理システム３０は、図示しない補助記憶デバイスからロードされてもよいし、外部ストレージ装置１２のような遠隔の装置からロードされてもよい。プロセッサ２１が、メモリ２０に記憶されたデータベース管理システム３０を実行する。以下、データベース管理システム３０（又はデータベース管理システム３０内の要素）を主語にして処理等を説明することがあるが、データベース管理システム３０により行われる処理の主語は、プロセッサ２１又はサーバ１０とすることもできる。
【００３３】
データベース管理システム３０は、外部ストレージ装置１２に格納されているデータベース１０００を制御する。クライアント１１は、データベース管理システム３０を通じて、データベース１０００にアクセスすることができる。
【００３４】
外部ストレージ装置１２は、Ｉ／Ｆ（例えばＮＩＣ）１５０１、メモリ１５０３、記憶デバイス群１５０４及びそれらに接続されたプロセッサ１５０２を有する。Ｉ／Ｆ１５０１を通じて、サーバ１０及びクライアント１１と通信可能である。記憶デバイス群１５０４は、１又は複数の記憶デバイスで構成されており、データベース１０００を記憶する。メモリ１５０３は、挿入用データテーブル２１０と、管理点管理テーブル５００と、セグメント情報管理テーブル６００と、表情報管理テーブル７００と、第１中間テーブル８００と、第２中間テーブル９００とを記憶する。
【００３５】
データベース１０００は、１以上の表３２２０を含み、更に、１以上の索引３２３０を含んでよい。表３２２０は、１以上のレコードの集合であり、レコードは１以上のカラムから構成される。索引３２３０は、表３２２０の１以上のカラム等を対象として作成されるデータ構造であり、当該索引３２３０が対象とするカラム等を含む選択条件による表３２２０へのアクセスを高速化するためのものである。例えば、索引３２３０は、対象とするカラムの値の毎に、表の中で当該値を含むレコードを特定するための情報を保持するデータ構造である。データ構造としては、例えばＢ木等が用いられる。レコードを特定するための情報としては、物理アドレスや論理的な行ＩＤ等が用いられることがある。更に、データベース１０００はデータベース統計を含んでよい。データベース統計は、例えば、索引３２３０のエントリ数を表す情報、表３２２０のレコード数を表す情報、カラム毎の値の最大値、平均値、最小値、カラム毎の値分布等、データベース１０００が含むデータに関する情報を含んでよい。
【００３６】
挿入用データテーブル２１０は、表３２２０へ挿入されるデータを有する。管理点管理テーブル５００は、データベース１０００に対する操作を管理する。セグメント情報管理テーブル６００及び表情報管理テーブル７００は、データベース１０００を操作するときに利用される。データベース関連情報とは、挿入用データテーブル２１０と、管理点管理テーブル５００と、セグメント情報管理テーブル６００と、表情報管理テーブル７００とを含む情報である
【００３７】
セグメントとは、データベース１０００におけるデータ格納領域の単位である。データベース１０００は、複数のセグメントを有し、各セグメント内にデータテーブルを格納する。各セグメントには、データベース管理システム３０が付与したＩＤが関連付けられる。
【００３８】
セグメント情報管理テーブル６００は、セグメントに関する情報を管理する。データベース管理システム３０は、表情報管理テーブル７００及びセグメント情報管理テーブル６００を用いて、データの格納位置を管理する。挿入用データテーブル２１０は、例えば、データベース１０００のユーザ（例えば、管理者）からクライアント１１を通じて、外部ストレージ装置１２に格納される。
【００３９】
第１中間テーブル８００及び第２中間テーブル９００は、後述するユニーク制約判定処理において用いられる。第１中間データテーブル８００には、ユニーク制約判定処理における第一段階の判定処理の結果が格納される。第２中間データテーブル９００には、第一段階の判定処理の後に実行される第二段階の判定処理の結果が格納される。
【００４０】
管理点管理テーブル５００は、後述するデータテーブル挿入処理において挿入用データテーブル２１０を挿入したセグメントの範囲と、その挿入用データテーブル２１０の挿入対象の表と、そのデータテーブル挿入処理の開始時刻及び終了時刻と、に関する情報を管理する。管理点管理テーブル５００は、データベース管理システム３０の管理テーブル処理部３４によって制御される。データテーブル挿入処理が一回実行されると、管理点管理テーブル５００に１つのレコード（管理点レコード）が追加される。
【００４１】
セグメント情報管理テーブル６００は、データベース１０００のセグメントの状態を管理する。セグメント情報管理テーブル６００は、データベース管理システム３０によって管理される。
【００４２】
表情報管理テーブル７００は、データベース１０００の表３２２０の状態を管理する。表情報管理テーブル７００は、データベース管理システム３０によって管理される。
【００４３】
データベース管理システム３０は、クライアント１１から挿入処理要求又はデータテーブル削除処理要求などを受けると、その要求に対応する処理を実行する。
【００４４】
データベース管理システム３０は、クライアント１１からアクセス要求を受けると、外部ストレージ装置１２のデータベース１０００にアクセスする。データベース管理システム３０は、データ操作要求受付部３１と、情報管理テーブル管理部３２と、表データ挿入部３３と、管理テーブル処理部３４とを含む。
【００４５】
データ操作要求受付部３１は、クライアント１１から挿入処理要求又はデータテーブル削除処理要求を受け付ける。情報管理テーブル管理部３２は、外部ストレージ装置１２の各情報管理テーブルのデータを管理する。表データ挿入部３３は、データテーブル挿入処理の際に表３２２０へのデータの挿入処理を行う。
【００４６】
管理テーブル処理部３４は、管理点管理テーブル５００に対する処理を管理する。管理テーブル処理部３４は、後述するように管理点レコード検索処理３５と、管理点レコード生成処理３６と、管理点レコード削除処理３７と、管理点レコード更新処理３８とを含む。
【００４７】
メモリ２０には、データベース管理システム３０に加えて、データテーブル挿入処理又はデータテーブル削除処理の際に使用されるデータが格納される。メモリ２０は、そのようなデータとして、例えば、総セグメント数４０と、セグメント範囲５０と、表名６０と、カレントタイムスタンプ７０と、保持セグメント８０と、対象カラム名リスト９０と、カラム値範囲リスト３００と、比較用値リスト４００と、を記憶する。
【００４８】
総セグメント数４０は、データテーブル挿入処理の際に全データ（挿入用データテーブル）の格納に必要なセグメントの個数を有する。セグメント範囲５０は、データテーブル挿入処理の際にデータが格納されるセグメントの範囲又はデータテーブル削除処理の際に削除対象のデータが格納されているセグメントの範囲を有する。また、セグメント範囲５０は、先頭セグメントのＩＤを示す開始セグメントＩＤ５１と、最終セグメントのＩＤを示す終了セグメントＩＤ５２とを有する。
【００４９】
表名６０は、データテーブル挿入処理の際にデータ挿入の対象となる表３２２０を特定するための情報を有する。カレントタイムスタンプ７０は、現在の日時の情報を有する。保持セグメント８０は、最後にデータを格納したセグメントＩＤを保持する。
【００５０】
対象カラム名リスト９０は、表３２２０におけるユニーク制約条件の対象となるカラム（対象カラム）の名称のリストを有する。対象カラム名リスト９０９に登録されている対象カラムにおける値が、本実施形態でいう対象カラム値である。
【００５１】
カラム値範囲リスト３００は、各々のセグメントに格納済みのデータテーブルについてのカラム値範囲を保持する。カラム値範囲とは、データテーブルの対象カラム値の最小値と最大値との間の範囲である。
【００５２】
比較用値リスト４００は、格納済みの各データテーブル（又はデータテーブルを格納済の各セグメント）について、対象カラム値から算出した比較用値（情報量削減値）を保持する。比較対象ＬＤ一覧４１０と索引確認閾値４２０は、後述するユニーク制約判定処理において用いられる。第一段階の判定処理の後に実行される第二段階の判定処理の結果情報が格納される。索引確認閾値４２０は、前記第二段階の判定処理の後の処理において、第２中間テーブルに格納されているレコードの処理方法の選択に使用される。なお、「ＬＤ」は、ロードデータの略である。
【００５３】
図２は、データベース１０００に格納済みのデータリストが存在しない場合におけるデータテーブル挿入処理の概要を示すフローチャートである。なお、図２（及び図３）において、対象属性（対象カラム）は、「ＯＲＤＥＲ＿ＩＤ」である。
【００５４】
データ操作要求受付部３１は、クライアント１１から挿入処理要求１１００を受け付ける。この挿入処理要求１１００には、外部ストレージ装置１２に格納された挿入用データテーブル２１０を特定する情報（例えば、ファイル名）が含まれる。データ操作要求受付部３１は、挿入処理要求１１００を受け付けた場合、表データ挿入部３３を起動する。
【００５５】
表データ挿入部３３は、データテーブル挿入処理が開始されると、現在の日時をカレントタイムスタンプ７０から取得して開始日時とする（Ｓ９０１）。
【００５６】
次に、表データ挿入部３３は、挿入用データテーブル２１０を読み込んで、挿入するデータの格納に必要なセグメント数を算出し（Ｓ９０２）、算出されたセグメント数を総セグメント数３１４０に格納する。
【００５７】
表データ挿入部３３は、総セグメント数４０に基づいて挿入用のセグメントをデータベース１０００に確保し、メモリ２０上のセグメント範囲５０に、データ挿入の開始セグメントＩＤ３１と終了セグメントＩＤ３２とを格納する（Ｓ９０３）。
【００５８】
次に、管理テーブル処理部３４が、管理点レコード生成処理３６により、カラム値範囲リスト３００及び比較用値リスト４００のための格納領域を確保する（Ｓ９０４）。
【００５９】
次に、表データ挿入部３３は、挿入処理要求１１００で指定された挿入用データテーブル２１０における対象カラム値の範囲を、カラム値範囲リスト３００に格納する（Ｓ９０５）。
【００６０】
そして、表データ挿入部３３は、挿入処理要求１１００で指定された挿入用データテーブル２１０における対象カラム値の比較用値（情報量削減値）を、比較用値リスト４００に格納する（Ｓ９０６）。
【００６１】
管理テーブル処理部３４は、管理点レコード生成処理３６により、管理点管理テーブル５００に新たなレコード（管理点レコード）を生成する。そして、管理テーブル処理部３４は、管理点レコード生成処理３６により、Ｓ９０４で生成したレコード（管理点レコード）の開始日時を管理点管理テーブル５００のＳ＿ＴＩＭＥ５１１（図４参照）に格納し、データ一括挿入の開始セグメントＩＤ５１をＳ＿ＳＥＧ５１３に格納し、終了セグメントＩＤ５２をＦ＿ＳＥＧ５１４に格納し、データ一括挿入を実施した表３２２０の名称をＴＡＢＬＥ５１５に格納する（Ｓ９０７）。
【００６２】
そして、表データ挿入部３３は、挿入処理要求１１００で指定された挿入用データテーブル２１０を、データベース１０００の表３２２０に確保した開始セグメントＩＤ５１から終了セグメントＩＤ５２へ加える（Ｓ９０８）。
【００６３】
データテーブル挿入処理が完了すると、表データ挿入部３３は、カレントタイムスタンプ７０から現在の日時を取得して終了日時とする（Ｓ９０９）。
【００６４】
最後に、管理テーブル処理部３４は、管理点レコード更新部３８により、Ｓ９０５で生成したレコード（管理点レコード）の終了日時をＦ＿ＴＩＭＥ５１２へ格納して、管理点管理テーブル５００の新たなレコードを更新する（Ｓ９１０）。
【００６５】
以上のように、データテーブル挿入処理では、データテーブル挿入処理の開始日時（Ｓ＿ＴＩＭＥ５１１）及び終了日時（Ｆ＿ＴＩＭＥ５１２）と、挿入用データテーブルの開始セグメント（Ｓ＿ＳＥＧ５１３）及び終了セグメント（Ｆ＿ＳＥＧ５１４）と、表の名称（ＴＡＢＬＥ５１５）とが格納された新たな管理点レコードが、管理点管理テーブル５００に追加される。
【００６６】
つまり、管理点管理テーブル５００は、表名（ＴＡＢＬＥ５１５）と、データテーブル挿入処理の開始日時（Ｓ＿ＴＩＭＥ５１１）及び終了日時（Ｆ＿ＴＩＭＥ５１２）と、挿入用データテーブルの挿入位置を示す開始セグメント（Ｓ＿ＳＥＧ５１３）及び終了セグメント（Ｆ＿ＳＥＧ５１４）と、を一意で対応付けて管理する。これにより、後日、ユーザがデータテーブルを一括で削除する際に、データテーブル挿入処理の開始日時及び終了日時を検索条件として指定することで、そのデータテーブルの格納位置を容易に知ることができる。
【００６７】
図３は、データベース１０００に格納済みのデータリストが存在する場合におけるデータテーブル挿入処理の概要を示すフローチャートである。
【００６８】
データ操作要求受付部３１は、クライアント１１から挿入処理要求１１００を受け付ける。この挿入処理要求１１００には、外部ストレージ装置１２に格納された挿入用データテーブル２１０を特定する情報（例えば、ファイル名）が含まれる。データ操作要求受付部３１は、挿入処理要求１１００を受け付た場合、表データ挿入部３３を起動する。
【００６９】
表データ挿入部３３は、データテーブル挿入処理が開始されると、現在の日時をカレントタイムスタンプ７０から取得して開始日時とする（Ｓ１２０１）。
【００７０】
次に、表データ挿入部３３は、挿入用データテーブル２１０を読み込んで、挿入するデータの格納に必要なセグメント数を算出し（Ｓ１２０２）、算出されたセグメント数を総セグメント数４０に格納する。
【００７１】
表データ挿入部３３は、総セグメント数４０の値となるセグメントをデータベース１０００に確保して、メモリ２０上のセグメント範囲５０に、データ挿入の開始セグメントＩＤ５１と終了セグメントＩＤ５２とを格納する（Ｓ１２０３）。
【００７２】
次に、管理テーブル処理部３４が、管理点レコード生成処理３６により、カラム値範囲リスト３００及び比較用値リスト４００のための格納領域を確保する（Ｓ１２０４）。
【００７３】
次に、表データ挿入部３３は、挿入処理要求１１００で指定された挿入用データテーブル２１０のデータの対象カラム値の範囲を、カラム値範囲リスト３００に格納する（Ｓ１２０５）。
【００７４】
そして、表データ挿入部３３は、挿入処理要求１１００で指定された挿入用データテーブル２１０におけるデータの対象カラム値の比較用値（情報量削減値）を、比較用値リスト４００に格納する（Ｓ１２０６）。
【００７５】
そして、表データ挿入部３３は、挿入処理要求１１００で指定された挿入用データテーブル２１０における対象カラム値と、カラム値範囲リスト３００に登録されているカラム値範囲とを比較し、その対象カラム値がカラム値範囲に含まれているか否かを判定する。対象カラム値がカラム値範囲に含まれている場合、表データ挿入部３３は、対象カラム値と、その対象カラム値を含む対象カラム値範囲の属するＬＤ＿ＩＤとを、第１中間テーブル８００に登録する（Ｓ１２０７）。ＬＤ＿ＩＤは、挿入用データテーブルのＩＤ（識別子）であり、ＬＤは、ロードデータの略である。
【００７６】
さらに、表データ挿入部３３は、第１中間テーブル８００から、対象カラム値とその対象カラム値に対応するＬＤ＿ＩＤとを取得する。そして、表データ挿入部３３は、その対象カラム値に対応する比較用値と、そのＬＤ＿ＩＤに対応する比較用値リスト４００に含まれる複数の比較用値とを比較する。そして、表データ挿入部３３は、その比較において一致した対象カラム値と、その対象カラム値と一致した比較用値リスト４００が属するＬＤ＿ＩＤとを、第２中間テーブル９００に登録する（Ｓ１２０７）。
【００７７】
さらに、表データ挿入部３３は、第２中間テーブル９００から、対象カラム値とその対象カラム値に対応するＬＤ＿ＩＤとを取得する。そして、表データ挿入部３３は、その対象カラム値が、そのＬＤ＿ＩＤに属する対象カラム値の何れかと一致するか否かを判定する。何れかと一致した場合、表データ挿入部３３は、このデータテーブル挿入処理を中止し、ユニーク制約条件を満たさなかった旨を当該処理要求の発行元プログラムに伝える。何れとも一致しなかった場合、表データ挿入部３３は、次の処理を実行する。
【００７８】
次に、管理テーブル処理部３４は、管理点レコード生成処理３６により、管理点管理テーブル５００に新たなレコード（管理点レコード）を生成する。そして、管理テーブル処理部３４は、管理点レコード生成処理３６により、Ｓ１２０４で生成したレコード（管理点レコード）の開始日時を管理点管理テーブル５００のＳ＿ＴＩＭＥ５１１（図４参照）に格納し、挿入用データテーブル２１０を格納する開始セグメントＩＤ５１及び終了セグメントＩＤ５２を、それぞれをＳ＿ＳＥＧ５１３及びＦ＿ＳＥＧ５１４に格納し、挿入用データテーブルを挿入した表３２２０の名称をＴＡＢＬＥ５１５に格納する（Ｓ１２０８）。
【００７９】
表データ挿入部３３は、挿入処理要求１１００で指定された挿入用データテーブル２１０を、データベース１０００の表３２２０に確保した開始セグメントＩＤ５１から終了セグメントＩＤ５２に格納する（Ｓ１２０９）。
【００８０】
挿入用データテーブル２１０の挿入が完了すると、表データ挿入部３３は、カレントタイムスタンプ７０から現在の日時を取得して終了日時とする（Ｓ１２１０）。
【００８１】
最後に、管理テーブル処理部３４は、管理点レコード更新部３８により、Ｓ１２０５で生成したレコード（管理点レコード）の終了日時をＦ＿ＴＩＭＥ５１２へ格納して、管理点管理テーブル５００の新たなレコードを更新する（Ｓ１２１１）。
【００８２】
以上のように、データテーブル挿入処理では、データテーブル挿入処理の開始日時（Ｓ＿ＴＩＭＥ５１１）及び終了日時（Ｆ＿ＴＩＭＥ５１２）と、挿入用データテーブルの開始セグメント（Ｓ＿ＳＥＧ５１３）及び終了セグメント（Ｆ＿ＳＥＧ５１４）と、表の名称（ＴＡＢＬＥ５１５）とが格納された新たな管理点レコードが、管理点管理テーブル５１０に追加される。
【００８３】
つまり、管理点管理テーブル５００は、表名（ＴＡＢＬＥ５１５と）と、データテーブル挿入処理の開始日時（Ｓ＿ＴＩＭＥ５１１）及び終了日時（Ｆ＿ＴＩＭＥ５１２）と、データの挿入位置を示す開始セグメント（Ｓ＿ＳＥＧ５１３）及び終了セグメント（Ｆ＿ＳＥＧ５１４）と、を対応付けて管理する。これにより、後日、ユーザがデータテーブルを一括で削除する際に、データテーブル挿入処理の開始日時及び終了日時を検索条件として指定することで、ユーザはデータの格納位置を容易に知ることができる。
【００８４】
また、挿入用データテーブル２１０の何れかの対象カラム値が格納済みのデータテーブルの何れかの対象カラム値と一致する場合、その挿入用データテーブル２１０の格納は中止される。言い換えると、格納済みデータテーブルにおける全ての対象カラム値がユニーク制約条件を満たす場合に、挿入用データテーブル２１０が格納される。これにより、挿入用データテーブル２１０の対象カラム値のユニーク性を保証することができる。
【００８５】
図４は、管理点管理テーブル５００の構成例を示す図である。
【００８６】
管理テーブル処理部３４は、データベース１０００上に、管理点管理テーブル５００を生成して管理する。
【００８７】
管理点管理テーブル５００は、複数のレコードを有する。このレコードは、データ属性として、Ｓ＿ＴＩＭＥ５１１と、Ｆ＿ＴＩＭＥ５１２と、Ｓ＿ＳＥＧ５１３と、Ｆ＿ＳＥＧ５１４と、ＴＡＢＬＥ５１５と、ＬＤ＿ＩＤ５１６とを有する。
【００８８】
Ｓ＿ＴＩＭＥ５１１は、挿入用データテーブル２１０の挿入処理を開始した日時（開始日時）を表す。Ｆ＿ＴＩＭＥ５１２は、データテーブル挿入処理が終了した日時（終了日時）を表す。Ｓ＿ＳＥＧ５１３は、挿入用データテーブル２１０の挿入が開始されたセグメントのＩＤ（開始セグメントＩＤ）を表す。Ｅ＿ＳＥＧ５１４は、挿入用データテーブル２１０の挿入が終了したセグメントのＩＤ（終了セグメントＩＤ）を表す。ＴＡＢＬＥ５１５は、挿入用データテーブル２１０の挿入処理の対象となった表の名称又は識別子（表名）を表す。ＬＤ＿ＩＤ５１６は、データテーブル挿入処理で登録された挿入用データテーブルを一意に識別し得るＩＤを表す。Ｓ＿ＳＥＧ５１３及びＦ＿ＳＥＧ５１４は、１レコードに対して複数の要素（繰り返し列）を有してもよい。
【００８９】
例えば、図４のレコード５１７は、データテーブル挿入処理の開始日時（Ｓ＿ＴＩＭＥ５１１）が「２００９年０１月０２日０６時００分１６秒」で、データテーブル挿入処理の終了日時（Ｆ＿ＴＩＭＥ５１２）が「２００９年０１月０２日０８時０５分１６秒」で、挿入用データテーブルの開始セグメントＩＤ（Ｓ＿ＳＥＧ５１３）が「４５０１」で、挿入用データテーブルの終了セグメントＩＤ（Ｆ＿ＳＥＧ５１４）が「５０００」で、対象となった表の名称（ＴＡＢＬＥ５１５）が「Ｔ１」で、ＬＤ＿ＩＤが「２」であることを示す。
【００９０】
図５は、セグメント情報管理テーブル６００の構成例を示す図である。
【００９１】
セグメント情報管理テーブル６００は、セグメント毎に生成される。セグメント情報管理テーブル６００は、データ属性として、ＳＥＧＭＥＮＴ＿ＩＤ６１１と、ＴＡＢＬＥ＿ＮＡＭＥ６１２と、ＮＥＸＴＳＥＧ＿ＩＤ６１３と、ＰＲＥＶＳＥＧ＿ＩＤ６１４と、ＲＥＳＴ６１５とを有する。
【００９２】
ＳＥＧＭＥＮＴ＿ＩＤ６１１は、セグメントの識別子であるＳＥＧＭＥＮＴ＿ＩＤを表す。ＴＡＢＬＥ＿ＮＡＭＥ６１２は、ＳＥＧＭＥＮＴ＿ＩＤ６１１の示すセグメントを有する表の名称を表す。ＮＥＸＴＳＥＧ＿ＩＤ６１３は、ＳＥＧＭＥＮＴ＿ＩＤ６１１の示すセグメントの次のセグメントの識別子（ＳＥＧＭＥＮＴ＿ＩＤ）を表す。ＰＲＥＶＳＥＧ＿ＩＤ６１４は、ＳＥＧＭＥＮＴ＿ＩＤ６１１の示すセグメントの前のセグメントの識別子（ＳＥＧＭＥＮＴ＿ＩＤ）を表す。ＲＥＳＴ６１５は、ＳＥＧＭＥＮＴ＿ＩＤ６１１の示すセグメントに格納可能なデータ量（ページ数）を表す。
【００９３】
図６は、表情報管理テーブル７００の構成例を示す図である。
【００９４】
表情報管理テーブル７００は、データベース１０００に格納される表毎に生成される。表情報管理テーブル７００は、データ属性として、ＴＡＢＬＥ＿ＮＡＭＥ７１１と、ＴＡＢＬＥ＿ＩＤ７１２と、ＳＥＧＭＥＮＴ７１３とを有する。
【００９５】
ＴＡＢＬＥ＿ＮＡＭＥ７１１は、表の名称であるテーブル名を表す。ＴＡＢＬＥ＿ＩＤ７１２は、当該表の識別子を表す。ＳＥＧＭＥＮＴ７１３は、当該表の使用するセグメントの範囲を表す。ＳＥＧＭＥＮＴ７１３は、複数のセグメントの範囲を表してもよい。例えば、図６に示す表情報管理テーブル７００は、ＴＡＢＬＥ＿ＩＤ７１２の示す表が、セグメントＩＤ「１〜２０００」の範囲と、セグメントＩＤ「４５０１〜５０００」の範囲とを使用していることを示す。
【００９６】
図７は、カラム値範囲リスト３００の構成例を示す図である。
【００９７】
カラム値範囲リスト３００は、ＬＤ＿ＩＤ毎に、そのＬＤ＿ＩＤに対応するデータテーブルにおけるカラム値範囲（最小値及び最大値）をレコードとして有する。カラム値範囲リスト３００は、データ属性として、ＬＤ＿ＩＤ３０１と、ＵＣ＿ＩＤ３０２と、ＭＩＮ３０３と、ＭＡＸ３０４とを有する。
【００９８】
ＬＤ＿ＩＤ３０１は、上述のとおり、挿入用データテーブル２１０を一意に識別するためのＩＤを表す。ＵＣ＿ＩＤ３０２は、対象カラムを一意に識別するためのＩＤを表す。ＭＩＮ３０３は、ＬＤ＿ＩＤ３０１に対応する挿入用データテーブルにおける対象リスト（ＵＣ＿ＩＤ３０２）の対象リスト値の内の最小値を表す。ＭＡＸ３０４は、同じく対象リスト（ＵＣ＿ＩＤ３０２）の対象リスト値の内の最大値を表す。
【００９９】
例えば、図７は、ＬＤ＿ＩＤ３０１「０」の挿入用データテーブル２１０において、ＵＣ＿ＩＤ３０２「０」に対応する複数の対象カラム値の内、最小値が「１」で最大値が「１０」であることを示す。
【０１００】
図８は、比較用値リスト４００の構成例を示す図である。
【０１０１】
比較用値リスト４００は、ＬＤ＿ＩＤ毎に、データ属性として、ＬＤ＿ＩＤ４０１と、比較用値を示すＨＡＳＨ＿Ｖ４０２とを有する。
【０１０２】
ＬＤ＿ＩＤ４０１は、上述のとおり、挿入用データテーブル２１０を一意に識別するためのＩＤを表す。ＨＡＳＨ＿Ｖ４０２は、ＬＤ＿ＩＤ４０１に対応するデータテーブルに含まれる各対象カラム値の比較用値を表す。比較用値は、例えばハッシュビットマップ値であって、対象カラム値を二進数で表現した値（ビット列）のうちの上位３ビットの値であってもよい。
【０１０３】
図１７は、比較対象ＬＤ一覧４１０の構成例を示す図である。
【０１０４】
比較対象ＬＤ一覧４１０は、ＬＤ＿ＩＤ毎に、そのＬＤ＿ＩＤに対応するデータテーブルにおける第２中間テーブルに格納されたカラム値数をレコードとして有する。比較対象ＬＤ一覧４１０は、データ属性として、ＬＤ＿ＩＤ４１１と、ＵＣ＿ＩＤ４１２と、比較対象数４１３を有する。
【０１０５】
ＬＤ＿ＩＤ４１１は、上述のとおり、挿入用データテーブル２１０を一意に識別するためのＩＤを表す。ＵＣ＿ＩＤ４１２は、対象カラムを一意に識別するためのＩＤを表す。比較対象数４１３は、ＬＤ＿ＩＤ４１１に対応する挿入用データテーブルにおける対象リスト（ＵＣ＿ＩＤ４１２）の対象リスト値の内の第２中間テーブルに格納された数を表す。
【０１０６】
例えば、図１７は、ＬＤ＿ＩＤ４１１「０」の挿入用データテーブル２１０において、ＵＣ＿ＩＤ４１２「０」に対応する複数の対象カラム値の内、１つのカラム値が第２中間テーブルに格納されていることを示す。
【０１０７】
例えば、図８は、ＬＤ＿ＩＤ４０１「０」のデータテーブルにおいて、各対象カラム値の比較用値は「０」、「２」、「５」であることを示す。
【０１０８】
図９は、データベース１０００に格納済みのデータテーブルが存在しない場合におけるデータテーブル挿入処理の一例を示すフローチャートである。この図９は、図２の処理の詳細な説明にあたる。
【０１０９】
この処理は、例えば、データ操作要求受付部３１がクライアント１１から挿入対象のテーブル名と、挿入対象の挿入用データテーブル２１０の名称とを受信したとき開始される。
【０１１０】
表データ挿入部３３は、データテーブル挿入処理が開始されると、カレントタイムスタンプ７０から現在の日時を取得する（Ｓ１０１）。
【０１１１】
表データ挿入部３３は、指定された挿入用データテーブル２１０のレコード数及び容量を参照して、指定された表３２２０に挿入用データテーブル２１０を追加するのに必要なセグメント数を算出する（Ｓ１０２）。そして、表データ挿入部３３は、算出されたセグメント数をメモリ２０上の総セグメント数４０へ格納する。
【０１１２】
そして、表データ挿入部３３は、外部ストレージ装置１２のデータベース１０００の領域において、挿入用データテーブル２１０を格納するためのセグメントを確保する（Ｓ１０３）。表データ挿入部３３は、確保したセグメントについて、先頭のセグメントＩＤをセグメント範囲５０の開始セグメントＩＤ５１に、最後のセグメントＩＤを終了セグメントＩＤ５２に格納する。
【０１１３】
管理テーブル処理部３４が、管理点レコード生成処理３６により、カラム値範囲リスト３００及び比較用値リスト４００のための格納領域を確保する（Ｓ１０４）。
【０１１４】
表データ挿入部３３は、挿入用データテーブル２１０における対象カラム値の最小値及び最大値をカラム値範囲リスト３００に格納する（Ｓ１０５）。当該処理の詳細については後述する。なお、挿入用データテーブル２１０は、外部ストレージ装置１２から読み出されたデータテーブルでもよいしクライアント１１から入力されたデータテーブルでもよい。
【０１１５】
表データ挿入部３３は、その挿入用データテーブル２１０における対象カラム値の比較用値を比較用対象カラム値リスト４００に格納する（Ｓ１０６）。当該処理の詳細については後述する。
【０１１６】
管理テーブル処理部３４は、管理点レコード生成処理３６により、新たな管理点レコードを生成して管理点管理テーブル５００に追加する。ここで、管理点レコード生成処理３６は、この新たに生成した管理点レコードについて、Ｓ＿ＴＩＭＥ５１１にＳ１０１で取得したカレントタイムスタンプ７０の値を格納し、Ｓ＿ＳＥＧ５１３にＳ１０３で取得した開始セグメントＩＤ５１の値を格納し、Ｆ＿ＳＥＧ５１４にＳ１０３で取得した終了セグメントＩＤ５２の値を格納する（Ｓ１０７）。
【０１１７】
表データ挿入部３３は、Ｓ１０３で確保したセグメントに挿入用データテーブル２１０を格納する（Ｓ１０８）。そして、表データ挿入部３３は、カレントタイムスタンプ７０を取得する（Ｓ１０９）。
【０１１８】
管理テーブル処理部３４は、管理点レコード更新処理３８により、Ｆ＿ＴＩＭＥ５１２にその取得したカレントタイムスタンプの値を格納して、上記Ｓ１０７で追加した管理点管理テーブル５００におけるレコードを更新する（Ｓ１１０）。
【０１１９】
上記の処理によって、サーバ１０は、ユーザが用意した挿入用データテーブル２１０を表３２２０に一括して追加すると共に、ユーザが追加したレコードを識別する情報としてデータ一括挿入の開始日時及び終了日時を管理点管理テーブル５００に登録する。
【０１２０】
図１０は、対象カラム値範囲リスト３００の設定処理の詳細を示すフローチャートの一例である。この図１０は、図９のＳ１０５における処理の詳細を示す。
【０１２１】
表データ挿入部３３は、挿入用データテーブル２１０から対象カラム名リスト９０に登録されている対象カラムの最小値及び最大値を取得する（Ｓ２０１）。
【０１２２】
表データ挿入部３３は、カラム値範囲リスト３００に、その挿入用データテーブル２１０に対応するＬＤ＿ＩＤと、その取得した最小値及び最大値とを登録し（Ｓ２０２）、Ｓ１０５に戻る。
【０１２３】
図１１は、比較用対象カラム値リスト４００の設定処理の詳細を示すフローチャートの一例である。この図１１は、図９のＳ１０６における処理の詳細を示す。
【０１２４】
表データ挿入部３３は、挿入用データテーブル２１０から、未選択レコードの１つ（最初は先頭レコード）を選択する（Ｓ３０１）。
【０１２５】
表データ挿入部３３は、Ｓ３０１で選択したレコードに対して対象カラム名リスト９０に登録されている対象カラム値からハッシュビットマップ値を作成し、そのハッシュビットマップ値を比較用値リストに登録する（Ｓ３０２）。
【０１２６】
表データ挿入部３３は、挿入用データテーブル２１０に未選択レコードが存在するか否かを判定する（Ｓ３０３）。
【０１２７】
未選択レコードが存在する場合（Ｓ３０３：ＹＥＳ）、表データ挿入部３３は、Ｓ３０１に戻り、残りの未選択レコードについてＳ３０１〜Ｓ３０３を実行する。
【０１２８】
未選択レコードが存在しない場合（Ｓ３０３：ＮＯ）、表データ挿入部３３は、当該処理を終了する。全てのレコードが、比較用対象カラム値リストに登録されたためである。
【０１２９】
上記図９〜図１１の処理により、サーバ１０は、挿入用データテーブル２１０のレコードがユニーク制約条件を満たすことを確認した後、対象の表３２２０に一括して挿入用データテーブルを挿入すると共に、管理点管理テーブル５００に、挿入用データテーブルに係る開始日時、終了日時及び格納位置（セグメントＩＤ）を登録する。
【０１３０】
図１２は、データベース１０００に格納済みのデータテーブルが存在する場合におけるデータテーブル挿入処理の一例を示すフローチャートである。この図１２は、図３の処理の詳細な説明にあたる。
【０１３１】
この処理は、例えば、データ操作要求受付部３１が、クライアント１１から挿入対象のテーブル名と、挿入対象の挿入用データテーブル２１０の名称とを受信したときに開始される。
【０１３２】
図１２のＳ４０１〜Ｓ４０６の処理は、図９のＳ１０１〜Ｓ１０６の処理と同様であるので説明を省略する。
【０１３３】
表データ挿入部３３は、挿入用データテーブル２１０に対して、ユニーク制約判定処理を行う（Ｓ４０７）。当該処理の詳細については後述するが、このユニーク制約判定処理によってユニーク制約条件が満たされた場合に、表データ挿入部３３は、次のＳ４０８に進む。
【０１３４】
図１２のＳ４０８〜Ｓ４１１の処理は、図９のＳ１０７〜Ｓ１１０の処理と同様であるので説明を省略する。
【０１３５】
上記の処理によって、サーバ１０は、管理者などが用意した挿入用データテーブル２１０を表３２２０で一括して追加し、管理者が追加したレコードを識別する情報としてデータテーブル挿入処理の開始日時及び終了日時を管理点管理テーブル５００に登録する。
【０１３６】
また、挿入用データテーブル２１０の対象カラム値が格納済みのデータテーブルの対象カラム値の何れかと一致する場合、その挿入用データテーブル２１０の格納は中止される。言い換えると、格納済みデータテーブルにおける対象カラム値に対してユニーク制約条件を満たす場合に、挿入用データテーブル２１０が格納される。これにより、挿入用データテーブル２１０の対象カラム値のユニーク性を保証することができる。
【０１３７】
図１３は、挿入用データテーブルのユニーク制約判定処理の一例を示すフローチャートである。この図１３は、図１２のＳ４０７の処理の詳細にあたる。
【０１３８】
表データ挿入部３３は、挿入用データテーブル２１０から、未選択レコードの内の１つ（最初は先頭レコード）を選択する（Ｓ１３０１）。
【０１３９】
表データ挿入部３３は、対象カラム名リスト９０に対応する対象カラム値（比較元値）が、カラム値範囲リスト３００に登録されている何れかのカラム値範囲に含まれるか否かを判定する（Ｓ１３０２）。比較元値が何れのカラム値範囲にも含まれない場合（Ｓ１３０２：ＮＯ）、表データ挿入部３３は、Ｓ１３０５へ進む。
【０１４０】
比較元値が何れかのカラム値範囲に含まれる場合（Ｓ１３０２：ＹＥＳ）、表データ挿入部３３は、その比較元値と、その比較元値を含むカラム値範囲の属するＬＤ＿ＩＤとを第１中間データテーブル８００に登録し、Ｓ１３０５へ進む。
【０１４１】
表データ挿入部３３は、挿入用データテーブル２１０に未選択レコードが存在するか否かを判定する（Ｓ１３０５）。挿入用データテーブルに未選択レコードが存在する場合（Ｓ１３０５：ＹＥＳ）、表データ挿入部３３は、Ｓ１３０１へ戻る。
【０１４２】
挿入用データテーブルに未選択レコードが存在しない場合（Ｓ１３０５：ＮＯ）、表データ挿入部３３は、Ｓ１３０７へ進む。挿入用データテーブルの全てのレコードに対して、Ｓ１３０２の判定が完了したからである。
【０１４３】
表データ挿入部３３は、第１中間テーブル８００に未選択レコードが存在するか否かを判定する（Ｓ１３０７）。まず、第１中間テーブル８００に未選択レコードが存在する場合（Ｓ１３０７：ＹＥＳ）について説明する。
【０１４４】
表データ挿入部３３は、第１中間テーブル８００から未選択レコードの１つを選択し、その選択レコードの対象カラム値（比較元値）から比較用値であるハッシュビットマップ値（ＨＡＳＨ＿Ｖ）を作成する（Ｓ１３０８）。そして、表データ挿入部３３は、その選択レコードに係るＬＤ＿ＩＤを特定し、その比較元値のＨＡＳＨ＿Ｖが、比較用対象カラム値リスト４００におけるその特定したＬＤ＿ＩＤに対応する複数のＨＡＳＨ＿Ｖの何れかと一致するか否かを判定する。（Ｓ１３０９）。
【０１４５】
比較元値のＨＡＳＨ＿Ｖがその特定したＬＤ＿ＩＤに対応する複数のＨＡＳＨ＿Ｖの何れとも一致しない場合（Ｓ１３０９：ＮＯ）、表データ挿入部３３は、Ｓ１３０７に戻る。
【０１４６】
比較元値のＨＡＳＨ＿Ｖがその特定したＬＤ＿ＩＤに対応する複数のＨＡＳＨ＿Ｖの何れかと一致した場合（Ｓ１３０９：ＹＥＳ）、表データ挿入部３３は、その比較元値と、その特定したＬＤ＿ＩＤとを第２中間テーブル９００に登録し（Ｓ１３１０）、Ｓ１３０７に戻る。
【０１４７】
次に、Ｓ１３０７において、第１中間テーブル８００に未選択レコードが存在しない場合（Ｓ１３０７：ＮＯ）について説明する。
【０１４８】
表データ挿入部３３は、第２中間テーブル９００に未選択レコードが存在するか否かを判定する（Ｓ１３１１）。未選択レコードが存在しない場合（Ｓ１３１１：ＮＯ）、挿入用データテーブルの対象カラム値は全てユニーク制約条件を満たすと判定し（Ｓ１３１５）、図１２のＳ４０８へ進む（Ｓ４０８へ進む）。
【０１４９】
第２中間テーブル９００に未選択レコードが存在する場合（Ｓ１３１１：ＹＥＳ）、表データ挿入部３３は、第２中間テーブル９００から未選択レコードの内の１つを選択し、その選択レコードに係る比較元値と、その選択レコードに係るＬＤ＿ＩＤに含まれる複数の比較先値とを比較する（Ｓ１３１２）。
【０１５０】
そして、表データ挿入部３３は、その比較元値が、そのＬＤ＿ＩＤに含まれる複数の比較先値の内の何れかと一致するか否かを判定する（Ｓ１３１３）。比較元値が何れの比較先値とも一致しない場合（Ｓ１３１３：ＮＯ）、表データ挿入部３３は、Ｓ１３１１へ戻る。
【０１５１】
比較元値が比較先値の何れかと一致する場合（Ｓ１３１３：ＹＥＳ）、表データ挿入部３３は、ユニーク制約条件を満たさないとして（Ｓ１３１４）、挿入用データテーブルの登録を中止する（ＥＮＤ）。
【０１５２】
図１５は、挿入用データテーブルのユニーク制約判定処理の一例を示すフローチャートである。この図１５は、図１２のＳ４０７の処理の詳細にあたる。
【０１５３】
表データ挿入部３３は、挿入用データテーブル２１０から、未選択レコードの内の１つ（最初は先頭レコード）を選択する（Ｓ１５０１）。
【０１５４】
表データ挿入部３３は、対象カラム名リスト９０に対応する対象カラム値（比較元値）が、カラム値範囲リスト３００に登録されている何れかのカラム値範囲に含まれるか否かを判定する（Ｓ１５０２）。比較元値が何れのカラム値範囲にも含まれない場合（Ｓ１５０２：ＮＯ）、表データ挿入部３３は、Ｓ１５０５へ進む。
【０１５５】
比較元値が何れかのカラム値範囲に含まれる場合（Ｓ１５０２：ＹＥＳ）、表データ挿入部３３は、その比較元値と、その比較元値を含むカラム値範囲の属するＬＤ＿ＩＤとを第１中間データテーブル８００に登録し、Ｓ１５０５へ進む。
【０１５６】
表データ挿入部３３は、挿入用データテーブル２１０に未選択レコードが存在するか否かを判定する（Ｓ１５０５）。挿入用データテーブルに未選択レコードが存在する場合（Ｓ１５０５：ＹＥＳ）、表データ挿入部３３は、Ｓ１５０１へ戻る。
【０１５７】
挿入用データテーブルに未選択レコードが存在しない場合（Ｓ１５０５：ＮＯ）、表データ挿入部３３は、Ｓ１５０７へ進む。挿入用データテーブルの全てのレコードに対して、Ｓ１５０２の判定が完了したからである。
【０１５８】
表データ挿入部３３は、第１中間テーブル８００に未選択レコードが存在するか否かを判定する（Ｓ１５０７）。まず、第１中間テーブル８００に未選択レコードが存在する場合（Ｓ１５０７：ＹＥＳ）について説明する。
【０１５９】
表データ挿入部３３は、第１中間テーブル８００から未選択レコードの１つを選択し、その選択レコードの対象カラム値（比較元値）から比較用値であるハッシュビットマップ値（ＨＡＳＨ＿Ｖ）を作成する（Ｓ１５０８）。そして、表データ挿入部３３は、その選択レコードに係るＬＤ＿ＩＤを特定し、その比較元値のＨＡＳＨ＿Ｖが、比較用対象カラム値リスト４００におけるその特定したＬＤ＿ＩＤに対応する複数のＨＡＳＨ＿Ｖの何れかと一致するか否かを判定する。（Ｓ１５０９）。
【０１６０】
比較元値のＨＡＳＨ＿Ｖがその特定したＬＤ＿ＩＤに対応する複数のＨＡＳＨ＿Ｖの何れとも一致しない場合（Ｓ１５０９：ＮＯ）、表データ挿入部３３は、Ｓ１５０７に戻る。
【０１６１】
比較元値のＨＡＳＨ＿Ｖがその特定したＬＤ＿ＩＤに対応する複数のＨＡＳＨ＿Ｖの何れかと一致した場合（Ｓ１５０９：ＹＥＳ）、表データ挿入部３３は、その比較元値と、その特定したＬＤ＿ＩＤとを第２中間テーブル９００に登録し、比較対象ＬＤ一覧４１０の対応する比較対象数を１増加させ（Ｓ１５１０）、Ｓ１５０７に戻る。
【０１６２】
次に、Ｓ１５０７において、第１中間テーブル８００に未選択レコードが存在しない場合（Ｓ１５０７：ＮＯ）について説明する。
【０１６３】
表データ挿入部３３は、第２中間テーブル９００に未選択レコードが存在するか否かを判定する（Ｓ１５１１）。未選択レコードが存在しない場合（Ｓ１５１１：ＮＯ）、挿入用データテーブルの対象カラム値は全てユニーク制約条件を満たすと判定し（Ｓ１５１５）、図１２のＳ４０８へ進む（Ｓ４０８へ進む）。
【０１６４】
第２中間テーブル９００に未選択レコードが存在する場合（Ｓ１５１１：ＹＥＳ）、表データ挿入部３３は、第２中間テーブル９００のレコード全てについて、レコードごとに係る比較元値と、そのレコードに係るＬＤ＿ＩＤに含まれる複数の比較先値とを比較する（Ｓ１５１２）。
【０１６５】
そして、表データ挿入部３３は、その比較元値が、そのＬＤ＿ＩＤに含まれる複数の比較先値の内の何れかと一致するか否かを判定する（Ｓ１５１３）。比較元値が何れの比較先値とも一致しない場合（Ｓ１５１３：ＮＯ）、表データ挿入部３３は、Ｓ１５１１へ戻る。
【０１６６】
比較元値が比較先値の何れかと一致する場合（Ｓ１５１３：ＹＥＳ）、表データ挿入部３３は、ユニーク制約条件を満たさないとして（Ｓ１５１４）、挿入用データテーブルの登録を中止する（ＥＮＤ）。
【０１６７】
図１６は、挿入用データテーブルのユニーク制約判定処理の一例を示すフローチャートである。この図１６は、図１５のＳ１５１２の処理の詳細にあたる。
【０１６８】
表データ挿入部３３は、比較対象ＬＤ一覧４１０に未選択レコードが存在するか否かを判定する（Ｓ１６０１）。未選択レコードが存在しない場合（Ｓ１６０１：ＮＯ）、挿入用データテーブルの対象カラム値は全てユニーク制約条件を満たすと判定し（Ｓ１６０３）、図１５のＳ１５１３へ進む（Ｓ１５１３へ進む）。
【０１６９】
比較対象ＬＤ一覧４１０に未選択レコードが存在する場合（Ｓ１６０１：ＹＥＳ）、表データ挿入部３３は、比較対象ＬＤ一覧４１０から未選択レコードの内の１つを選択し、その選択レコードの比較対象数４１３が検索確認閾値４２０より大きいか比較する（Ｓ１６０４）。比較対象数４１３が検索確認閾値４２０以下の場合（Ｓ１６０４：ＮＯ）、比較対象ＬＤ一覧４１０から選択したレコードのＬＤ＿ＩＤ４１１に対応するデータベース領域に未選択のレコードが存在するか否かを判定する（Ｓ１６０６）。
【０１７０】
未選択レコードが存在しない場合（Ｓ１６０６：ＮＯ）、現在確認しているＬＤ＿ＩＤ４１１に対応するデータベース領域のカラム値と比較するカラム値は全てユニーク制約条件を満たすと判定し（Ｓ１６０７）、Ｓ１６０１へ進む。未選択レコードが存在する場合（Ｓ１６０６：ＹＥＳ）、比較対象ＬＤ一覧４１０から選択したレコードのＬＤ＿ＩＤ４１１に対応するデータベース領域のユニーク制約確認対象カラムの索引３２３０に、未選択レコードの対象カラムのカラム値を持つレコードが存在するか否かを判定する（Ｓ１６０８）。レコードが存在しない場合（Ｓ１６０８：ＮＯ）、Ｓ１６０６へ進む。レコードが存在した場合（Ｓ１６０８：ＹＥＳ）、ユニーク制約条件を満たさないと判定し（Ｓ１６１０）、挿入用データテーブルの登録を中止する（ＥＮＤ）。
【０１７１】
比較対象数４１３が検索確認閾値４２０より大きい場合（Ｓ１６０４：ＹＥＳ）、比較対象ＬＤ一覧４１０から選択したレコードのＬＤ＿ＩＤ４１１と一致するＬＤ＿ＩＤを持つレコードを第２中間テーブル９００から全て取得する（Ｓ１６１１）。次に、比較対象ＬＤ一覧４１０から選択したレコードのＬＤ＿ＩＤに対応するデータベース領域のレコードを全て取得する（Ｓ１６１２）。Ｓ１６１０で取得したレコードと、Ｓ１６１１で取得したレコードを一括で比較し、対象カラムについてカラム値が一致するレコードが存在するか判定する（Ｓ１６１３）。一致するレコードが存在しない場合（Ｓ１６１３：ＮＯ）、Ｓ１６０１へ進む。一致するレコードが存在する場合（Ｓ１６１３：ＹＥＳ）、ユニーク制約条件を満たさないと判定し（Ｓ１６１０）、挿入用データテーブルの登録を中止する（ＥＮＤ）。
【０１７２】
以上の処理によれば、ユニーク制約条件を満たさない挿入用データテーブルはセグメントに格納されない。言い換えると、格納済みデータテーブルにおける対象カラム値に対してユニーク制約条件を満たす場合に、挿入用データテーブル２１０はセグメントに格納される。これにより、挿入用データテーブル２１０の対象カラム値のユニーク性を保証することができる。
【０１７３】
上述した実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。例えば、属性の種類が異なる複数の対象カラムが存在する場合には、対象カラムの種類毎に、データベース領域が確保されてよい。例えば、図３において、複数種類の対象カラムが、「ＯＲＤＥＲ＿ＩＤ」と「ＩＴＥＭ＿ＩＤ」である場合、挿入用データテーブル２１０の対象カラム「ＯＲＤＥＲ＿ＩＤ」がユニーク制約条件を満たす場合に、第１のデータベース領域に挿入用データテーブル２１０が格納され、挿入用データテーブル２１０の対象カラム「ＩＴＥＭ＿ＩＤ」もユニーク制約条件を満たす場合には、第２のデータベース領域に挿入用データテーブル２１０が格納されてよい。つまり、同じ挿入用データテーブル２１０が異なる複数のデータベース領域（例えば、カラム値範囲リスト３００、比較用値リスト４００、第１中間テーブル８００及び第２中間テーブル９００のうちの少なくとも１つを含む）に格納されてよい。或いは、複数種類の対象カラムがそれぞれユニーク制約条件を満たしても共通のデータベース領域に挿入用データテーブル２１０が格納されてもよい。
【符号の説明】
【０１７４】
１０…サーバ  １１…クライアントサーバ  １２…外部ストレージ装置
【図１】
2015025401.tif 000003
【図２】
2015025401.tif 000004
【図３】
2015025401.tif 000005
【図４】
2015025401.tif 000006
【図５】
2015025401.tif 000007
【図６】
2015025401.tif 000008
【図７】
2015025401.tif 000009
【図８】
2015025401.tif 000010
【図９】
2015025401.tif 000011
【図１０】
2015025401.tif 000012
【図１１】
2015025401.tif 000013
【図１２】
2015025401.tif 000014
【図１３】
2015025401.tif 000015
【図１４】
2015025401.tif 000016
【図１５】
2015025401.tif 000017
【図１６】
2015025401.tif 000018
【図１７】
2015025401.tif 000019
【手続補正書】
【提出日】平成28年11月25日(2016.11.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データベースに対する新規のデータテーブルの入力を受け付ける受付部と、
前記新規のデータテーブルのうちの対象カラムに登録されている各値である各比較元値が、前記データベースに格納済みのデータテーブルのうちの対象カラムに登録されている各値である各比較先値と異なっている否かを判定するユニーク制約判定処理を行い、前記ユニーク制約判定処理における判定の結果が真の場合に、前記データベースにおける、前記格納済みのデータテーブルが格納されている第１のデータベース領域とは異なる第２のデータベース領域に、前記新規のテータテーブルを格納する挿入部と
を有するデータベース管理システム。
【請求項２】
前記ユニーク制約判定処理は、１段階目の判定処理と、前記１段階目の判定処理における判定結果が真の場合に行われる２段階目の判定処理とを含み、
前記１段階目の判定処理は、前記新規のデータテーブルの何れかの比較元値が前記格納済みデータテーブルのカラム値範囲に含まれるか否かを判定する処理であり、前記カラム値範囲の最大値が、比較先値の最大値であり、前記カラム値範囲の最小値が、比較先値の最小値であり、
前記２段階目の判定処理は、前記新規のデータテーブルのうちの全ての範囲内比較元値が前記格納済みデータテーブルにおける全ての比較先値と異なっているか否かを判定する処理であり、前記範囲内比較元値は、前記カラム値範囲に含まれる比較元値であり、
前記２段階目の判定処理における判定結果が真の場合が、前記ユニーク制約判定処理における判定結果が真の場合である、
請求項１に記載のデータベース処理システム。
【請求項３】
前記１段階目の判定処理は、前記格納済みデータテーブル毎のカラム値範囲を示す第１判定用情報を用いて行われ、
前記挿入部は、前記第２のデータベース領域に格納される前記新規のデータテーブルのカラム値範囲を前記第１判定用情報に登録する、
請求項２に記載のデータベース処理システム。
【請求項４】
前記第２段階目の判定処理は、前記新規のデータテーブルにおける全ての範囲内比較元値をそれぞれ情報量を削減することにより得られた全ての比較元削減値が、前記格納済みデータテーブルの全ての比較先値をそれぞれ情報量を削減することにより得られた全ての比較先削減値と異なっているか否かを判定する処理である、
請求項２に記載のデータベース処理システム。
【請求項５】
前記２段階目の判定処理は、前記格納済みデータテーブルの比較先値に対応した比較削減値を有する第２判定用情報を用いて行われ、
前記挿入部は、前記第２のデータベース領域に格納される前記新規のデータテーブルの範囲内比較元値に対応した比較元削減値を前記第２判定用情報に登録する、
請求項４に記載のデータベース処理システム。
【請求項６】
前記比較元削減値は、前記比較元値を二進数で表現した値の所定の上位Ｎビット（Ｎは２以上の整数）であり、
前記比較先削減値は、前記比較先値を二進数で表現した値の所定の上位Ｎビットである、
請求項４に記載のデータベース処理システム。
【請求項７】
前記比較元削減値は、前記比較元値のハッシュ値であり、
前記比較先削減値は、前記比較先値のハッシュ値である、
請求項４に記載のデータベース処理システム。
【請求項８】
データベースに対する新規のデータテーブルを入力する入力デバイスと、
前記新規のデータテーブルのうちの対象カラムに登録されている各値である各比較元値が、前記データベースに格納済みのデータテーブルのうちの対象カラムに登録されている各値である各比較先値と異なっているか否かを判定するユニーク制約判定処理を行い、前記ユニーク制約判定処理における判定の結果が真の場合に、前記データベースにおける、前記格納済みのデータテーブルが格納されている第１のデータベース領域とは異なる第２のデータベース領域に、前記新規のテータテーブルを格納するプロセッサと
を有する計算機。
【請求項９】
前記ユニーク制約判定処理は、１段階目の判定処理と、前記１段階目の判定処理における判定結果が真の場合に行われる２段階目の判定処理とを含み、
前記１段階目の判定処理は、前記新規のデータテーブルの何れかの比較元値が前記格納済みデータテーブルのカラム値範囲に含まれるか否かを判定する処理であり、前記カラム値範囲の最大値が、比較先値の最大値であり、前記カラム値範囲の最小値が、比較先値の最小値であり、
前記２段階目の判定処理は、前記新規のデータテーブルのうちの全ての範囲内比較元値が前記格納済みデータテーブルにおける全ての比較先値と異なっているか否かを判定する処理であり、前記範囲内比較元値は、前記カラム値範囲に含まれる比較元値であり、
前記２段階目の判定処理における判定結果が真の場合が、前記ユニーク制約判定処理における判定結果が真の場合である、
請求項８に記載の計算機。
【請求項１０】
前記１段階目の判定処理は、前記格納済みデータテーブル毎のカラム値範囲を示す第１判定用情報を用いて行われ、
前記プロセッサは、前記第２のデータベース領域に格納される前記新規のデータテーブルのカラム値範囲を前記第１判定用情報に登録する、
請求項９に記載の計算機。
【請求項１１】
前記第２段階目の判定処理は、前記新規のデータテーブルにおける全ての範囲内比較元値をそれぞれ情報量を削減することにより得られた全ての比較元削減値が、前記格納済みデータテーブルの全ての比較先値をそれぞれ情報量を削減することにより得られた全ての比較先削減値と異なっているか否かを判定する処理である、
請求項９に記載の計算機。
【請求項１２】
前記２段階目の判定処理は、前記格納済みデータテーブルの比較先値に対応した比較削減値を有する第２判定用情報を用いて行われ、
前記プロセッサは、前記第２のデータベース領域に格納される前記新規のデータテーブルの範囲内比較元値に対応した比較元削減値を前記第２判定用情報に登録する、
請求項９に記載の計算機。
【請求項１３】
前記比較元削減値は、前記比較元値を二進数で表現した値の所定の上位Ｎビット（Ｎは２以上の整数）であり、
前記比較先削減値は、前記比較先値を二進数で表現した値の所定の上位Ｎビットである、
請求項１２に記載の計算機。
【請求項１４】
前記比較元削減値は、前記比較元値のハッシュ値であり、
前記比較先削減値は、前記比較先値のハッシュ値である、
請求項１２に記載の計算機。
【請求項１５】
コンピュータが、データベースに対する新規のデータテーブルの入力を受け付け、
コンピュータが、前記新規のデータテーブルのうちの対象カラムに登録されている各値である各比較元値が、前記データベースに格納済みのデータテーブルのうちの対象カラムに登録されている各値である各比較先値と異なっている否かを判定するユニーク制約判定処理を行い、前記ユニーク制約判定処理における判定の結果が真の場合に、前記データベースにおける、前記格納済みのデータテーブルが格納されている第１のデータベース領域とは異なる第２のデータベース領域に、前記新規のテータテーブルを格納する
データベース管理方法。
【請求項１６】
前記ユニーク制約判定処理は、前記１段階目の判定処理と前記２段階目の判定処理に加えて、３段階目の判定処理を含み、
前記３段階目の判定処理は、前記２段階目の判定処理における判定結果が真であったカラム値の数とそのカラム値が属するデータベース領域によって、判定対象カラム値を含むレコードが格納されているテーブルを全て読み込んで各比較元値と一致するか確認することと、判定対象カラム値を含む索引を読み込んで各比較元値と一致するか確認することのどちらかが選択される、
請求項２に記載のデータベース処理システム。
【請求項１７】
前記ユニーク制約判定処理は、前記１段階目の判定処理と前記２段階目の判定処理に加えて、３段階目の判定処理を含み、
前記３段階目の判定処理は、前記２段階目の判定処理における判定結果が真であったカラム値の数とそのカラム値が属するデータベース領域によって、判定対象カラム値を含むレコードが格納されているテーブルを全て読み込んで各比較元値と一致するか確認することと、判定対象カラム値を含む索引を読み込んで各比較元値と一致するか確認することのどちらかが、確認を行うデータベース領域毎に選択される、
請求項２に記載のデータベース処理システム。
【国際調査報告】
2015025401.tif 000020
2015025401.tif 000021
2015025401.tif 000022