(57)【要約】  相互変換可能である第１のデータモデル及び第２のデータモデルを選択的に利用できるハイブリッド型データベースシステムである。ハイブリッド型データベースシステムは、第１のデータモデルを処理する第１のデータ処理部と、第２のデータモデルを処理する第２のデータ処理部と、第１のデータモデルを第２のデータモデルに変換する第１のデータモデル変換部と、第２のデータモデルを第１のデータモデルに変換する第２のデータモデル変換部とを備え、ランダムアクセスに適したデータを第１のデータモデルによって記述し、シーケンシャルアクセスに適したデータを第２のデータモデルによって記述するように構成されている。
2011099114.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサとメモリとハードディスクとを含むコンピュータを備え、１つ以上のデータ項目に対応した項目値を含む１つ以上のレコードの配列からなる表形式データを、表形式データ中でのレコードのレコード番号を格納する第１の配列と、項目毎に、項目に属する一意の項目値が所定の順序に並べられた第２の配列と、項目毎に、各レコードの項目に属する項目値が第２の配列に格納されている項目値位置をレコード番号の順番に格納する第３の配列とによって表現される第１のデータモデルとして記述し、第１のデータモデルによって記述されたデータを処理するデータベースシステムであって、
第１のデータモデルによって記述されたデータを、第１の配列と、項目毎の第２の配列と、項目毎に、第２の配列に格納された項目値の順番にこの項目値を保持するレコードのレコード番号を格納する第４の配列とによって表形式データを表現する第２のデータモデルによって記述されたデータに変換する第１のデータモデル変換部と、
第２のデータモデルによって記述されたデータを処理するデータ処理部と、
第２のデータモデルによって記述されたデータを第１のデータモデルによって記述されたデータに変換する第２のデータモデル変換部と、
を備え、
相互変換可能である第１のデータモデル及び第２のデータモデルを選択的に利用できるように構成されている、データベースシステム。
【請求項２】
第１のデータモデル変換部が、最初に、項目値番号毎にその項目値番号が第３の配列において出現する回数をカウントし、次に、カウントされた回数に基づいて、第４の配列中でレコード番号が分類されて格納される項目値番号毎の領域の範囲を決定し、最後に、第３の配列から項目値番号を読み出し、第４の配列中の項目値番号毎の領域に、この項目値番号が第３の配列中に格納されている位置を順番に格納することにより、第４の配列を生成し、
第２のデータモデル変換部が、第４の配列から各項目値番号の領域に格納されているレコード番号を読み出し、読み出されたレコード番号に対応する項目値番号を、読み出されたレコード番号に対応する位置で第３の配列に格納することにより、第３の配列を生成する、
請求項１に記載のデータベースシステム。
【請求項３】
データ処理部が第２のデータモデルによって記述されたデータのうちの少なくとも一部分をハードディスクに保存し、残りの部分をメモリに保存する、請求項１又は２に記載のデータベースシステム。
【請求項４】
データ処理部がメモリ中に保存されている第２のデータモデルによって記述されたデータをハードディスクに書き込む、請求項１又は２に記載のデータベースシステム。
【請求項５】
データ処理部がハードディスクに保存されている第２のデータモデルによって記述されたデータをメモリに読み込む、請求項１又は２に記載のデータベースシステム。
【請求項６】
データ処理部が、所定の項目に属する項目値が所定の条件を満たすレコードを検索するため、第２の配列の中で所定の条件を満たす項目値を探し、所定の条件を満たす項目値が存在するならば、第４の配列から、所定の条件を満たす項目値に対応する項目値番号の領域に格納されているレコード番号を取り出し、取り出されたレコード番号をメモリ内の検索結果配列に書き込む、請求項１又は２に記載のデータベースシステム。
【請求項７】
データ処理部が、所定の項目に属する項目値によってレコードをソートするため、ソート順が所定の項目の第２の配列中の項目値の所定の順序と同じであるならば、第４の配列をそのままメモリ内のソート結果配列に書き込み、ソート順が所定の項目の第２の配列中の項目値の所定の順序と逆であるならば、第４の配列から、第２の配列中の項目値の所定の順序と逆の順序に、この項目値に対応する項目値番号の領域を特定し、この領域に格納されているレコード番号を格納されている順序で取り出し、メモリ内のソート結果配列に書き込む、請求項１又は２に記載のデータベースシステム。
【請求項８】
プロセッサとメモリとハードディスクとを含むコンピュータを備え、１つ以上のデータ項目に対応した項目値を含む１つ以上のレコードの配列からなる表形式データを、表形式データ中でのレコードのレコード番号を格納する第１の配列と、項目毎に、項目に属する一意の項目値が所定の順序に並べられた第２の配列と、項目毎に、各レコードの項目に属する項目値が第２の配列に格納されている項目値位置をレコード番号の順番に格納する第３の配列とによって表現される第１のデータモデルとして記述し、第１のデータモデルによって記述されたデータを処理するデータベースシステムを動作させる方法であって、
表形式データが第１のデータモデルによって記述されているとき、第１のデータモデルによって記述されたデータを、第１の配列と、項目毎の第２の配列と、項目毎に、第２の配列に格納された項目値の順番にこの項目値を保持するレコードのレコード番号を格納する第４の配列とによって表形式データを表現する第２のデータモデルによって記述されたデータに変換するため、
コンピュータが、項目値番号毎にその項目値番号が第３の配列において出現する回数をカウントするステップと、
コンピュータが、カウントされた回数に基づいて、第４の配列中でレコード番号が分類されて格納される項目値番号毎の領域の範囲を決定するステップと、
コンピュータが、第３の配列から項目値番号を読み出し、第４の配列中の項目値番号毎の領域に、この項目値番号が第３の配列中に格納されている位置を順番に格納するステップと、
を備え、
表形式データが第２のデータモデルによって記述されているとき、第２のデータモデルによって記述されたデータを第１のデータモデルによって記述されたデータに変換するため、
コンピュータが、第４の配列から各項目値番号の領域に格納されているレコード番号を読み出すステップと、
コンピュータが、読み出されたレコード番号に対応する項目値番号を、読み出されたレコード番号に対応する位置で第３の配列に格納するステップと、
を備える、
データベースシステムを動作させる方法。
【請求項９】
コンピュータが、予め定められたルールに従って、又は、外部からの指示に従って、処理されるべきデータが第１のデータモデルと第２のデータモデルのいずれのデータモデルによって記述されるべきであるかを決定し、
処理されるべきデータのデータモデルと記述されるべきデータモデルとが一致しない場合に、コンピュータが、処理されるべきデータのデータモデルを記述されるべきデータモデルに変換するステップと、
コンピュータが、データモデルが変換されたデータを処理するステップと、
をさらに備える、請求項８に記載のデータベースシステムを動作させる方法。
【請求項１０】
表形式データが第２のデータモデルによって記述された後に、コンピュータが、第２のデータモデルによって記述されたデータを処理するステップをさらに備える、請求項８又は９に記載のデータベースシステムを動作させる方法。
【請求項１１】
コンピュータが、第２のデータモデルによって記述されたデータのうちの少なくとも一部分をハードディスクに保存し、残りの部分をメモリに保存する、請求項８又は９に記載のデータベースシステムを動作させる方法。
【請求項１２】
コンピュータが、メモリ中に保存されている第２のデータモデルによって記述されたデータをハードディスクに書き込む、請求項８又は９に記載のデータベースシステムを動作させる方法。
【請求項１３】
コンピュータがハードディスクに保存されている第２のデータモデルによって記述されたデータをメモリに読み込む、請求項８又は９に記載のデータベースシステムを動作させる方法。
【請求項１４】
所定の項目に属する項目値が所定の条件を満たすレコードを検索するため、
コンピュータが、第２の配列の中で所定の条件を満たす項目値を探すステップと、
所定の条件を満たす項目値が存在するならば、コンピュータが、第４の配列から、所定の条件を満たす項目値に対応する項目値番号の領域に格納されているレコード番号を取り出し、取り出されたレコード番号をメモリ内の検索結果配列に書き込むステップと、
をさらに備える、請求項８又は９に記載のデータベースシステムを動作させる方法。
【請求項１５】
所定の項目に属する項目値によってレコードをソートするため、
ソート順が所定の項目の第２の配列中の項目値の所定の順序と同じであるならば、コンピュータが、第１の配列をそのままメモリ内のソート結果配列に書き込むステップと、
ソート順が所定の項目の第２の配列中の項目値の所定の順序と逆であるならば、コンピュータが、第４の配列から、第２の配列中の項目値の所定の順序と逆の順序に、この項目値に対応する項目値番号の領域を特定するステップと、
コンピュータが、この領域に格納されているレコード番号を格納されている順序で取り出し、メモリ内のソート結果配列に書き込むステップと、
をさらに備える、請求項８又は９に記載のデータベースシステムを動作させる方法。
【請求項１６】
プロセッサとメモリとハードディスクとを含むコンピュータにロードされ、１つ以上のデータ項目に対応した項目値を含む１つ以上のレコードの配列からなる表形式データを、表形式データ中でのレコードのレコード番号を格納する第１の配列と、項目毎に、項目に属する一意の項目値が所定の順序に並べられた第２の配列と、項目毎に、各レコードの項目に属する項目値が第２の配列に格納されている項目値位置をレコード番号の順番に格納する第３の配列とによって表現される第１のデータモデルとして記述し、第１のデータモデルによって記述されたデータを処理するデータベースシステムを動作させる方法をコンピュータに実行させるコンピュータ読み取り可能なプログラムであって、
表形式データが第１のデータモデルによって記述されているとき、第１のデータモデルによって記述されたデータを、第１の配列と、項目毎の第２の配列と、項目毎に、第２の配列に格納された項目値の順番にこの項目値を保持するレコードのレコード番号を格納する第４の配列とによって表形式データを表現する第２のデータモデルによって記述されたデータに変換するため、
コンピュータが、項目値番号毎にその項目値番号が第３の配列において出現する回数をカウントするコードと、
コンピュータが、カウントされた回数に基づいて、第４の配列中でレコード番号が分類されて格納される項目値番号毎の領域の範囲を決定するコードと、
コンピュータが、第３の配列から項目値番号を読み出し、第４の配列中の項目値番号毎の領域に、この項目値番号が第３の配列中に格納されている位置を順番に格納するコードと、
を備え、
表形式データが第２のデータモデルによって記述されているとき、第２のデータモデルによって記述されたデータを第１のデータモデルによって記述されたデータに変換するため、
コンピュータが、第４の配列から各項目値番号の領域に格納されているレコード番号を読み出すコードと、
コンピュータが、読み出されたレコード番号に対応する項目値番号を、読み出されたレコード番号に対応する位置で第３の配列に格納するコードと、
を備える、コンピュータ読み取り可能なプログラム。
【請求項１７】
プロセッサとメモリとハードディスクとを含むコンピュータにロードされ、１つ以上のデータ項目に対応した項目値を含む１つ以上のレコードの配列からなる表形式データを、表形式データ中でのレコードのレコード番号を格納する第１の配列と、項目毎に、項目に属する一意の項目値が所定の順序に並べられた第２の配列と、項目毎に、各レコードの項目に属する項目値が第２の配列に格納されている項目値位置をレコード番号の順番に格納する第３の配列とによって表現される第１のデータモデルとして記述し、第１のデータモデルによって記述されたデータを処理する、請求項８又は９に記載のデータベースシステムを動作させる方法をコンピュータに実行させるためのコンピュータプログラムプロダクト。
【請求項１８】
プロセッサとメモリとハードディスクとを含むコンピュータにロードされ、１つ以上のデータ項目に対応した項目値を含む１つ以上のレコードの配列からなる表形式データを、表形式データ中でのレコードのレコード番号を格納する第１の配列と、項目毎に、項目に属する一意の項目値が所定の順序に並べられた第２の配列と、項目毎に、各レコードの項目に属する項目値が第２の配列に格納されている項目値位置をレコード番号の順番に格納する第３の配列とによって表現される第１のデータモデルとして記述し、第１のデータモデルによって記述されたデータを処理する、請求項８又は９に記載のデータベースシステムを動作させる方法をコンピュータに実行させるためのコンピュータプログラムが記録された記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本願開示は、データベースシステムに係わり、特に、処理目的に適した２種類のデータモデルによって表現されたデータを処理するハイブリッド型データベースシステムとこのハイブリッド型データシステムの動作方法に関係する。
【背景技術】
【０００２】
近年、一般的なリレーショナル・データベースシステムのようなオンディスク・データベースシステムと比較して、大規模データをより高速に処理することができるインメモリ・データベースシステムが提案されている。たとえば、本出願人による特許文献１には、高速インメモリ処理に適したデータ構造とデータ処理装置及びデータ処理方法が提案されている。特に、特許文献１には、大規模な表形式データを高速に検索、集計、ソートするために適したデータ管理機構が開示されている。このデータ管理機構は、表形式データの項目の各項目値を表すための情報ブロックを有する。この情報ブロックでは、表形式データの項目に属する項目値は、各項目値に付与された項目値番号と、項目値番号の順番に並べられた実際の項目値の値配列とによって表される。各レコードの項目値に対応した項目値番号をレコード番号順に並べたポインタ配列が準備され、各レコードの項目値は、当該レコードの項目値番号に対応した値を項目値の値配列から見つけることによって特定される。よって、所与のレコード番号に対し、所定の項目に関するポインタ配列からこの所与のレコード番号に対応して格納された項目値番号を取り出し、次に、値配列から、この取り出された項目値番号に対応して格納されている項目値を取り出すことにより、所与のレコード番号から項目値を得ることが可能である。【０００３】
一般に、表形式データは、レコードに対応した行と、項目に対応した列とによって構成されるが、この特許文献１に記載されたデータ管理機構では、表形式データの列毎に、即ち、項目毎にデータが完全に分離されている。したがって、このデータ管理機構によれば、表形式データのうち、検索・集計等に必要な項目に関するデータのみをメモリ等の高速にアクセスできる記憶装置に取り込むことができ、その結果として、データへのアクセス時間が短縮される。【０００４】
しかし、一般に、メモリデータベース、より厳密には、インメモリ・データベースと呼ばれるデータベースは、一方で、上記のように高速性能を実現するが、他方で、メモリの揮発性に起因した永続性の問題、及び、ビットコストに関連した大容量性の問題がある。これに対し、ハードディスクのような記憶媒体は永続性及び大容量性を容易に実現できる。さらに、ハードディスク上にファイルの形式で保存されたデータは、複数のプロセスがファイルの形式で共有することも可能である。そこで、メモリのアクセス性能に起因したインメモリ・データベースシステムの高速性と、ディスクの永続性、大容量性、低ビットコスト性及び共有性とを組み合わせたデータベースシステム、すなわち、ハイブリッド型データベースシステムが提案されている。【０００５】
たとえば、特許文献２に記載されたデータベースシステムにおけるトランザクション・ロギングを実施する方法及び仕組みは、インメモリ・データベースとオンディスク・データベースとを組み合わせて、トランザクションのｕｎｄｏ、すなわち、取消に関連した永続性の問題を解決している。また、特許文献３は、インメモリ・データベースからリレーショナル・データベースのようなオンディスク・データベースへのデータ転送のラグタイムを短縮し、インメモリ・データベースとリレーショナル・データベース・マネージメント・システムとを同期させるシステムを開示している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第ＷＯ００／１０１０３号公報
【特許文献２】米国特許第６，９８１，００４号明細書
【特許文献３】米国特許第７，１１３，９５３号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来提案されているハイブリッド型データベースシステムは、上述のようにメモリのもつ高速性と、ハードディスクのもつ永続性、大容量性、低ビットコスト性、及び、共有性とを組み合わせるという観点から構築されている。しかし、高速性、すなわち、アクセス速度に関して、メモリとハードディスクとを比較すると、同一条件では、メモリの方がハードディスクより高性能であるが、ハードディスクに対するシーケンシャルアクセスと、メモリに対するランダムアクセスとの間では、必ずしもメモリが有利であるとは限らない。また、永続性という観点から、ハードディスクの代わりにフラッシュメモリを採用するという選択肢もある。さらに、大容量性は、ビットコストによって左右されることがある。【０００８】
このように従来のハイブリッド型データベースシステムは、メモリ対ハードディスクのある時点での特定の評価に基づいて構築されているため、システムの柔軟性に乏しく、利用可能なハードウェア資源に適応できない可能性がある。その上、従来のデータ構造自体は、インメモリ・データベースシステム又はオンディスク・データベースシステムの何れかに適合するように設計された単一のデータ構造に依存している。そのため、インメモリ・データベースとオンディスク・データベースとを融合するハイブリッド型データベースシステムの性能が、インメモリ・データベースシステムとオンディスク・データベースシステムのいずれか一方に適合したものになり、両方の利点を十分に引き出せないという問題点がある。【０００９】
したがって、インメモリ・データベースとオンディスク・データベースとを融合するデータベースシステムにおいて、このデータベースシステムの性能をより高めることができるデータ構造をもつハイブリッド型データベースシステムを提供できることが好ましい。【００１０】
また、インメモリ・データベースとオンディスク・データベースとを融合するデータベースシステムにおいて、このデータベースシステムの性能をより高めることができるデータ構造をもつハイブリッド型データベースシステムを動作させる方法を提供できることが好ましい。【００１１】
さらに、インメモリ・データベースとオンディスク・データベースとを融合するデータベースシステムにおいて、このデータベースシステムの性能をより高めることができるデータ構造をもつハイブリッド型データベースシステムを動作させるプログラム、コンピュータプログラムプロダクト、及び、コンピュータプログラムが記録された記録媒体を提供できることが好ましい。
【課題を解決するための手段】
【００１２】
本発明の少なくとも１つの実施例によれば、ハイブリッド型データベースシステムは、処理対象である表形式データを表現するために相互変換可能である２つのデータモデルを利用する。以下では、表形式データは、１つ以上のデータ項目（列）に対応した項目値を含む１つ以上のレコード（行）の配列を指す。第１のデータモデルは、この表形式データを、表形式データ中でのレコードのレコード番号を格納する第１の配列（レコード番号配列とも呼ばれる）と、項目毎に、項目に属する一意の項目値が所定の順序に並べられた第２の配列（値リストとも呼ばれる）と、項目毎に、各レコードの項目に属する項目値が第２の配列に格納されている位置（項目値番号とも呼ばれる）をレコード番号の順番に格納する第３の配列（項目値番号配列とも呼ばれる）とによって表現するデータモデルである。この第１のデータモデルは、本出願人が大規模データを高速に処理するインメモリ・データベースシステムのために提案したデータモデルである。【００１３】
これに対し、第２のデータモデルは、この表形式データを、第１の配列と、項目毎の第２の配列と、項目毎に、第２の配列に格納された項目値の順番にこの項目値を保持するレコードのレコード番号を格納する第４の配列（レコード番号分類配列とも呼ばれる）とによって表現するデータモデルである。この第２のデータモデルによれば、第４の配列は、項目値毎にレコード番号が分類されて格納されている配列であるので、項目値をキーとして用いるレコード番号の検索及びソートが第１のデータモデルを用いる場合より高速化される。また、第４の配列は、項目値に対応するレコード番号をシーケンシャルアクセスで取り出すことができるように構成されているので、第２のデータモデルはオンディスク・データベースシステムに適したデータモデルである。【００１４】
なお、第１の配列に表形式データ中のすべてのレコードのレコード番号が格納されている場合、第１のデータモデル及び第２のデータモデルは表形式データと等価である。【００１５】
本発明の少なくとも１つの実施例によれば、第１のデータモデルから第２のデータモデルへの変換が行われる。この変換は第２の配列と第３の配列を使って第４の配列を生成する。そのため、この変換は、最初に、項目値番号毎にその項目値番号が第３の配列において出現する回数をカウントする。次に、この変換は、カウントされた回数に基づいて、第４の配列中でレコード番号が分類されて格納される項目値番号毎の領域の範囲を決定する。最後に、この変換は、第３の配列から項目値番号を読み出し、第４の配列中の項目値番号毎の領域に、この項目値番号が第３の配列中に格納されている位置を順番に格納する。これによって、この変換は、第２の配列に格納された項目値の順番にこの項目値を保持するレコードのレコード番号を格納する第４の配列を生成する。【００１６】
本発明の少なくとも１つの実施例によれば、第２のデータモデルから第１のデータモデルへの変換が行われる。この変換は第２の配列と第４の配列を使って第３の配列を生成する。そのため、この変換は、第４の配列から各項目値番号の領域に格納されているレコード番号を読み出し、読み出されたレコード番号に対応する項目値番号を、読み出されたレコード番号に対応する位置で第３の配列に格納する。これにより、この変換は、項目毎に、各レコードの項目に属する項目値が第２の配列に格納されている位置をレコード番号の順番に格納する第３の配列を生成する。【００１７】
本発明の一実施例によれば、プロセッサとメモリとハードディスクとを含むコンピュータを備え、１つ以上のデータ項目に対応した項目値を含む１つ以上のレコードの配列からなる表形式データを、表形式データ中でのレコードのレコード番号を格納する第１の配列と、項目毎に、項目に属する一意の項目値が所定の順序に並べられた第２の配列と、項目毎に、各レコードの項目に属する項目値が第２の配列に格納されている項目値位置をレコード番号の順番に格納する第３の配列とによって表現される第１のデータモデルとして記述し、第１のデータモデルによって記述されたデータを処理するデータベースシステムが提供される。このデータベースシステムは、
第１のデータモデルによって記述されたデータを、第１の配列と、項目毎の第２の配列と、項目毎に、第２の配列に格納された項目値の順番にこの項目値を保持するレコードのレコード番号を格納する第４の配列とによって表形式データを表現する第２のデータモデルによって記述されたデータに変換する第１のデータモデル変換部と、
第２のデータモデルによって記述されたデータを処理するデータ処理部と、
第２のデータモデルによって記述されたデータを第１のデータモデルによって記述されたデータに変換する第２のデータモデル変換部と、
を備え、
相互変換可能である第１のデータモデル及び第２のデータモデルを選択的に利用できるように構成されている。【００１８】
本発明の少なくとも１つの実施例によれば、第１のデータモデル変換部は、最初に、項目値番号毎にその項目値番号が第３の配列において出現する回数をカウントし、次に、カウントされた回数に基づいて、第４の配列中でレコード番号が分類されて格納される項目値番号毎の領域の範囲を決定し、最後に、第３の配列から項目値番号を読み出し、第４の配列中の項目値番号毎の領域に、この項目値番号が第３の配列中に格納されている位置を順番に格納することにより、第４の配列を生成し、
第２のデータモデル変換部は、第４の配列から各項目値番号の領域に格納されているレコード番号を読み出し、読み出されたレコード番号に対応する項目値番号を、読み出されたレコード番号に対応する位置で第３の配列に格納することにより、第３の配列を生成する。【００１９】
本発明の少なくとも１つの実施例によれば、データ処理部は第２のデータモデルによるデータのうちの少なくとも一部分をハードディスクに保存し、残りの部分をメモリに保存する。【００２０】
本発明の少なくとも１つの実施例によれば、データ処理部はメモリ中に保存されている第２のデータモデルによって記述されたデータをハードディスクに書き込む。【００２１】
本発明の少なくとも１つの実施例によれば、データ処理部はハードディスクに保存されている第２のデータモデルによって記述されたデータをメモリに読み込む。【００２２】
本発明の少なくとも１つの実施例によれば、データ処理部は、所定の項目に属する項目値が所定の条件を満たすレコードを検索するため、第２の配列の中で所定の条件を満たす項目値を探し、所定の条件を満たす項目値が存在するならば、第４の配列から、所定の条件を満たす項目値に対応する項目値番号の領域に格納されているレコード番号を取り出し、取り出されたレコード番号をメモリ内の検索結果配列に書き込む。【００２３】
本発明の少なくとも１つの実施例によれば、データ処理部は、所定の項目に属する項目値によってレコードをソートするため、ソート順が所定の項目の第２の配列中の項目値の所定の順序と同じであるならば、第４の配列をそのままメモリ内のソート結果配列に書き込み、ソート順が所定の項目の第２の配列中の項目値の所定の順序と逆であるならば、第４の配列から、第２の配列中の項目値の所定の順序と逆の順序に、この項目値に対応する項目値番号の領域を特定し、この領域に格納されているレコード番号を格納されている順序で取り出し、メモリ内のソート結果配列に書き込む。【００２４】
本発明の一実施例によれば、プロセッサとメモリとハードディスクとを含むコンピュータを備え、１つ以上のデータ項目に対応した項目値を含む１つ以上のレコードの配列からなる表形式データを、表形式データ中でのレコードのレコード番号を格納する第１の配列と、項目毎に、項目に属する一意の項目値が所定の順序に並べられた第２の配列と、項目毎に、各レコードの項目に属する項目値が第２の配列に格納されている項目値位置をレコード番号の順番に格納する第３の配列とによって表現される第１のデータモデルとして記述し、第１のデータモデルによって記述されたデータを処理するデータベースシステムを動作させる方法が提供される。このデータベースシステムを動作させる方法は、
表形式データが第１のデータモデルによって記述されているとき、第１のデータモデルによって記述されたデータを、第１の配列と、項目毎の第２の配列と、項目毎に、第２の配列に格納された項目値の順番にこの項目値を保持するレコードのレコード番号を格納する第４の配列とによって表形式データを表現する第２のデータモデルによって記述されたデータに変換するため、
コンピュータが、項目値番号毎にその項目値番号が第３の配列において出現する回数をカウントするステップと、
コンピュータが、カウントされた回数に基づいて、第４の配列中でレコード番号が分類されて格納される項目値番号毎の領域の範囲を決定するステップと、
コンピュータが、第３の配列から項目値番号を読み出し、第４の配列中の項目値番号毎の領域に、この項目値番号が第３の配列中に格納されている位置を順番に格納するステップと、
を備え、
表形式データが第２のデータモデルによって記述されているとき、第２のデータモデルによって記述されたデータを第１のデータモデルによって記述されたデータに変換するため、
コンピュータが、第４の配列から各項目値番号の領域に格納されているレコード番号を読み出すステップと、
コンピュータが、読み出されたレコード番号に対応する項目値番号を、読み出されたレコード番号に対応する位置で第３の配列に格納するステップと、
を備える。【００２５】
本発明の少なくとも１つの実施例によれば、データベースシステムを動作させる方法は、
コンピュータが、予め定められたルールに従って、又は、外部からの指示に従って、処理されるべきデータが第１のデータモデルと第２のデータモデルのいずれのデータモデルによって記述されるべきであるかを決定するステップと、
処理されるべきデータのデータモデルと記述されるべきデータモデルとが一致しない場合に、コンピュータが、処理されるべきデータのデータモデルを記述されるべきデータモデルに変換するステップと、
コンピュータが、データモデルが変換されたデータを処理するステップと、
をさらに備える。【００２６】
本発明の少なくとも１つの実施例によれば、データベースシステムを動作させる方法は、表形式データが第２のデータモデルによって記述された後に、コンピュータが、第２のデータモデルによって記述されたデータを処理するステップをさらに備える。【００２７】
本発明の少なくとも１つの実施例によれば、コンピュータは、第２のデータモデルによるデータのうちの少なくとも一部分をハードディスクに保存し、残りの部分をメモリに保存する。【００２８】
本発明の少なくとも１つの実施例によれば、コンピュータはメモリ中に保存されている第２のデータモデルによって記述されたデータをハードディスクに書き込む。【００２９】
本発明の少なくとも１つの実施例によれば、コンピュータはハードディスクに保存されている第２のデータモデルによって記述されたデータをメモリに読み込む。【００３０】
本発明の少なくとも１つの実施例によれば、データベースシステムを動作させる方法は、所定の項目に属する項目値が所定の条件を満たすレコードを検索するため、
コンピュータが、第２の配列の中で所定の条件を満たす項目値を探すステップと、
所定の条件を満たす項目値が存在するならば、コンピュータが、第４の配列から、所定の条件を満たす項目値に対応する項目値番号の領域に格納されているレコード番号を取り出し、取り出されたレコード番号をメモリ内の検索結果配列に書き込むステップと、
をさらに備える。【００３１】
本発明の少なくとも１つの実施例によれば、データベースシステムを動作させる方法は、所定の項目に属する項目値によってレコードをソートするため、
ソート順が所定の項目の第２の配列中の項目値の所定の順序と同じであるならば、コンピュータが、第１の配列をそのままメモリ内のソート結果配列に書き込むステップと、
ソート順が所定の項目の第２の配列中の項目値の所定の順序と逆であるならば、コンピュータが、第４の配列から、第２の配列中の項目値の所定の順序と逆の順序に、この項目値に対応する項目値番号の領域を特定するステップと、
コンピュータが、この領域に格納されているレコード番号を格納されている順序で取り出し、メモリ内のソート結果配列に書き込むステップと、
をさらに備える。【００３２】
本発明の一実施例によれば、プロセッサとメモリとハードディスクとを含むコンピュータにロードされ、１つ以上のデータ項目に対応した項目値を含む１つ以上のレコードの配列からなる表形式データを、表形式データ中でのレコードのレコード番号を格納する第１の配列と、項目毎に、項目に属する一意の項目値が所定の順序に並べられた第２の配列と、項目毎に、各レコードの項目に属する項目値が第２の配列に格納されている項目値位置をレコード番号の順番に格納する第３の配列とによって表現される第１のデータモデルとして記述し、第１のデータモデルによって記述されたデータを処理するデータベースシステムを動作させる方法を上記コンピュータに実行させるコンピュータ読み取り可能なプログラムが提供される。このプログラムは、
表形式データが第１のデータモデルによって記述されているとき、第１のデータモデルによって記述されたデータを、第１の配列と、項目毎の第２の配列と、項目毎に、第２の配列に格納された項目値の順番にこの項目値を保持するレコードのレコード番号を格納する第４の配列とによって表形式データを表現する第２のデータモデルによって記述されたデータに変換するため、
コンピュータが、項目値番号毎にその項目値番号が第３の配列において出現する回数をカウントするコードと、
コンピュータが、カウントされた回数に基づいて、第４の配列中でレコード番号が分類されて格納される項目値番号毎の領域の範囲を決定するコードと、
コンピュータが、第３の配列から項目値番号を読み出し、第４の配列中の項目値番号毎の領域に、この項目値番号が第３の配列中に格納されている位置を順番に格納するコードと、
を備え、
表形式データが第２のデータモデルによって記述されているとき、第２のデータモデルによって記述されたデータを第１のデータモデルによって記述されたデータに変換するため、
コンピュータが、第４の配列から各項目値番号の領域に格納されているレコード番号を読み出すコードと、
コンピュータが、読み出されたレコード番号に対応する項目値番号を、読み出されたレコード番号に対応する位置で第３の配列に格納するコードと、
を備える。【００３３】
さらに、本発明の一実施例によれば、プロセッサとメモリとハードディスクとを含むコンピュータにロードされ、１つ以上のデータ項目に対応した項目値を含む１つ以上のレコードの配列からなる表形式データを、表形式データ中でのレコードのレコード番号を格納する第１の配列と、項目毎に、項目に属する一意の項目値が所定の順序に並べられた第２の配列と、項目毎に、各レコードの項目に属する項目値が第２の配列に格納されている項目値位置をレコード番号の順番に格納する第３の配列とによって表現される第１のデータモデルとして記述し、第１のデータモデルによって記述されたデータを処理するデータベースシステムを動作させる方法を上記コンピュータに実行させるためのコンピュータプログラムプロダクトが提供される。【００３４】
さらに、本発明の一実施例によれば、プロセッサとメモリとハードディスクとを含むコンピュータにロードされ、１つ以上のデータ項目に対応した項目値を含む１つ以上のレコードの配列からなる表形式データを、表形式データ中でのレコードのレコード番号を格納する第１の配列と、項目毎に、項目に属する一意の項目値が所定の順序に並べられた第２の配列と、項目毎に、各レコードの項目に属する項目値が第２の配列に格納されている項目値位置をレコード番号の順番に格納する第３の配列とによって表現される第１のデータモデルとして記述し、第１のデータモデルによって記述されたデータを処理するデータベースシステムを動作させる方法を上記コンピュータに実行させるためのコンピュータプログラムが記録された記録媒体が提供される。
【発明の効果】
【００３５】
本発明の少なくとも１つの実施例によれば、相互変換可能な２つのデータモデルが利用されるので、プロセス間での共有性、データの永続性、大容量性、及び、高速性を達成すると共に、メモリとハードディスクの役割分担に柔軟性を持たせることができる、ハイブリッド型データベースシステムを実現することが可能になる。
【図面の簡単な説明】
【００３６】
【図１】本発明の１つの実施形態によるコンピュータシステムの概略図である。
【図２】本発明の１つの実施形態によるハイブリッド型データベースシステムの基礎となるデータ管理機構を説明するための表形式データの一例を表す図である。
【図３】本発明の１つの実施形態によるハイブリッド型データベースシステムにおけるインメモリ向きの第１のデータモデルの説明図である。
【図４】本発明の１つの実施形態によるハイブリッド型データベースシステムにおけるオンディスク向きの第２のデータモデルの説明図である。
【図５】本発明の１つの実施形態による値リストとレコード番号分類配列とを関連付けるエントリ配列の説明図である。
【図６】本発明の１つの実施形態による第１のデータモデル変換処理を説明するための概略図である。
【図７】本発明の１つの実施形態による第２のデータモデル変換処理を説明するための概略図である。
【図８】本発明の１つの実施形態によるデータベースシステムにおける第２のデータモデルに基づく検索処理の説明図である。
【図９】本発明の１つの実施形態によるデータベースシステムにおける第２のデータモデルに基づくソート処理の説明図である。
【図１０】本発明の１つの実施形態によるデータベースシステムにおける第２のデータモデルに基づくソート処理の説明図である。
【図１１】本発明の１つの実施形態によるデータベースシステムの機能ブロック図である。
【発明を実施するための形態】
【００３７】
以下、本発明を実施するための種々の形態を図面と共に詳細に説明する。
【００３８】
［コンピュータシステム構成］
図１は大規模データを処理するデータベースシステムを情報処理方法を実施するコンピュータシステムの１つの実施形態の概略図である。図１に示すように、このコンピュータシステム１０は、プログラムを実行することによりシステム全体および個々の構成部分を制御する少なくとも１台のＣＰＵ  １２−１、１２−２、．．．、１２−ｐと、ワークデータ等を記憶する、たとえば、高速アクセス可能なＲＡＭのようなメモリ１４と、プログラム等を記憶するＲＯＭ  １６と、ハードディスク、不揮発性メモリ、ハードディスクと不揮発性メモリとの組み合わせ等の不揮発性記憶装置１８と、ＣＤ−ＲＯＭ  １９をアクセスするためのＣＤ−ＲＯＭドライバ２０と、ＣＤ−ＲＯＭドライバ２２及び外部ネットワーク等（図示せず）へ繋がれた外部端子に接続されているインタフェース（Ｉ／Ｆ）２２と、キーボード及びマウス等のような入力装置２４と、コンピュータモニターのような表示装置２６とを備えている。全体として参照符号１２によって表されるＣＰＵ  １２と、メモリ１４と、ＲＯＭ  １６と、不揮発性記憶装置１８と、インタフェース２２と、入力装置２４と、表示装置２２６とは、バス２８を介して相互に接続されている。図示されていないが、各ＣＰＵは固有のローカルメモリを備えていてもよい。
【００３９】
コンピュータシステム１０のＣＰＵ  １２に実行させるプログラムは、ＣＤ−ＲＯＭ  １９に収容され、ＣＤ−ＲＯＭドライバ２０に読取られても良いし、ＲＯＭ  １６に予め記憶されていても良い。また、いったんＣＤ−ＲＯＭ  １９から読み出したものを、不揮発性記憶装置１８の所定の領域に記憶しておいても良い。或いは、上記プログラムは、ネットワーク（図示せず）、外部端子、及び、インタフェース２２を介して、外部から供給されるものであっても良い。ＣＤ−ＲＯＭ  １９及びＣＤ−ＲＯＭドライバ２０は、代替的な実施形態では、ＵＳＢメモリ及びＵＳＢメモリドライバによって置き換えられてもよい。
【００４０】
また、本発明の１つの実施形態によるハイブリッド型データベースシステムは、コンピュータシステム１０にハイブリッド型データシステムを動作させるプログラムを実行させることにより実現される。
【００４１】
［ハイブリッド型データシステムのための第１のデータモデル］
図２は本発明の１つの実施形態によるハイブリッド型データシステムの基礎となるデータ管理機構（すなわち、第１のデータモデル）を説明するための表形式データの一例を表す図である。図３は本発明の１つの実施形態によるハイブリッド型データベースシステムにおけるインメモリ向きの第１のデータモデルの説明図である。図２に示された表形式データは、レコード番号０からレコード番号９までの９個のレコード（行）により構成され、各レコードは、年齢という項目（列）及び体重という項目（列）の２個の項目を含んでいる。たとえば、レコード番号０のレコードの項目：年齢の項目値は１８であり、項目：体重の項目値は５５である。この表形式データは、上述の国際公開第ＷＯ００／１０１０３号に提案したデータ管理機構を用いることにより、コンピュータシステム内では図３に示されるようなデータ構造として記憶される。このデータ構造は、市販されているコンピュータ、たとえば、パーソナルコンピュータのハードウェア資源、特に、プロセッサ及びメモリを使用して大規模な表形式データの検索、ソート、集計等を実現するために提案された、コンピュータのメモリ上に置かれる、インメモリ・データベースシステムに適した表形式データのデータ構造であることに注意すべきである。本発明の少なくとも１つの実施形態において、２つのデータモデルのうちの一方は、このデータ構造によって実現される。
【００４２】
なお、レコード番号は、「元の表形式データ中でレコードが収容されている位置を表す情報（すなわち、原始レコード位置番号）」と「レコードの並び順を表す情報（すなわち、レコード順序番号）」の両方の意味で用いられることがある。本文書中では、両者を明確に区別すべき場合に、原始レコード位置番号と、レコード順序番号という用語を用いることに注意を要する。すべてのレコードには原始レコード位置番号が関連付けられている。この原始レコード位置番号は、データ項目に対応した項目値を含む個々のレコードを特定するために利用される仮想的な情報である。一般に、表形式データは、レコードが常に原始レコード位置番号の順番に配列されているとは限らない。たとえば、元の表形式データをある項目の項目値に関して昇順にソートすると、得られる表形式データのレコードの並び順は元の表形式データのレコードの並び順とは異なる。但し、元々の表形式データ中のレコードは、レコードが原始レコード位置番号の順番に並べられていることがあり、この場合には、原始レコード位置番号とレコード順序番号とが初期的に一致している。
【００４３】
図３に示すように、表形式データの各レコードの並び順の番号（レコード順序番号）と、原始レコード位置番号は、レコード番号配列３０１（以下、この配列を「ＯｒｄＳｅｔ」のように略記する。）によって対応付けられる。レコード番号配列３０１は、レコード順序番号の順に原始レコード位置番号を格納している。図３の例では、レコードは原始レコード位置番号の順番に並べられている。
【００４４】
ここで、本明細書中での配列の記法について説明する。一般に、配列Ａは、添字をｉとすると、配列の要素がＡ［ｉ］のように表記できるが、図面中では、配列は、配列の要素Ａ［ｉ］は、実線で囲まれた領域内に示され、要素Ａ［ｉ］と要素Ａ［ｉ＋１］の境界は点線で示されている。また、要素Ａ［ｉ］の添字ｉが要素Ａ［ｉ］の左側に示されている。また、配列の添字ｉは０から始まる整数で表されている。
【００４５】
もう一度図３に戻ると、年齢に関しては、表形式データのレコード順序番号＝０に対応する原始レコード位置番号は、配列ＯｒｄＳｅｔ［０］から「０」であることがわかる。原始レコード位置番号が「０」であるレコードに関する実際の年齢の値は、実際の値が所定の順序（たとえば、昇順又は降順）に従ってソートされた値リストである項目値配列３０３（以下、項目値配列、すなわち、値リストを「ＶＬ」のように略記する。）へのポインタ配列である項目値番号配列３０２（以下、項目値番号配列、すなわち、ポインタ配列を「ＶＮｏ」のように略記する。）を参照することによって取得できる。項目値番号配列３０２は、配列ＯｒｄＳｅｔ３０１に格納されている原始レコード位置番号の順番に従って、実際の値リスト３０３中の要素を指し示すポインタを格納している。これにより、表形式データのレコード「０」に対応する年齢の項目値は、（１）配列ＯｒｄＳｅｔ３０１からレコード順序番号＝０に対応する原始レコード位置番号＝０を取り出し、（２）値リストへのポインタ配列３０２から原始レコード位置番号＝０に対応する要素「１」を取り出し、（３）値リスト３０３から、項目値番号配列３０２から取り出された要素「１」によって指し示される要素「１８」を取り出すことにより取得できる。
【００４６】
他のレコードに対しても、また、体重に関しても同様に項目値を取得することができる。よって、レコード毎に項目値を取り出して、項目値に対する操作を行うような処理、たとえば、集計、ジョイン、データ更新、データ変換などの処理を行う場合、第１のデータモデルを選択することが好ましい。
【００４７】
このように表形式データは、値リストＶＬと、項目値番号配列ＶＮｏの組合せにより表現され、この組合せを、特に、「情報ブロック」と称する。図３には、年齢及び体重に関する情報ブロックがそれぞれ情報ブロック３０６及び３０７として示されている。
【００４８】
以上の説明からわかるように、第１のデータモデルはランダムアクセス性を活用できるデータ構造である。
【００４９】
［ハイブリッド型データベースシステムのための第２のデータモデル］
図４は本発明の１つの実施形態によるハイブリッド型データベースシステムにおけるオンディスク向きの第２のデータモデルの説明図である。図２に示された表形式データは、オンディスク向きの第２のデータモデルを利用すると、コンピュータシステム内では図４に示されるようなデータ構造として記憶される。このデータ構造は、市販されているコンピュータ、たとえば、パーソナルコンピュータのハードウェア資源、特に、プロセッサ及びメモリを使用して大規模な表形式データの検索、ソート、集計等を実現するために提案された、コンピュータのメモリに置かれてもよいが、このデータ構造はオンディスク・データベースシステムに適した表形式データのデータ構造であるため、不揮発性記憶装置、たとえば、ハードディスクに置かれてもよいことに注意すべきである。本発明の１つの実施形態において、２つのデータモデルのうちのもう一方は、このデータ構造によって実現される。
【００５０】
図４を参照して、第２のデータモデルについて説明する。第２のデータモデルは、図２に示された表形式データを、表形式データ中でのレコードのレコード番号を格納するレコード番号配列４０１と、項目毎に、項目に属する一意の項目値が所定の順序に並べられた値リスト４０２及び４０４と、項目毎に、値リスト４０２及び４０４に格納された項目値の順番にこの項目値を保持するレコードのレコード番号を格納するレコード番号分類配列４０３及び４０５とによって表現するデータモデルである。このように表形式データは、値リストＶＬと、レコード番号分類配列ＲｅｃＮｏの組合せにより表現され、この組合せを、特に、「情報ブロック」と称する。図４には、年齢及び体重に関する情報ブロックがそれぞれ情報ブロック４０６及び４０７として示されている。
【００５１】
レコード番号分類配列ＲｅｃＮｏには、所定の順序、たとえば、昇順に並べられた値リストＶＬ中の要素である項目値を項目の属性値として保持しているレコードのレコード番号が、値リストＶＬの添え字である項目値番号を参照して取り出せるように格納されている。すなわち、値リストＶＬとレコード番号分類配列ＲｅｃＮｏとは、項目値番号を指定すると、この項目値番号に対応するレコード番号が格納されているレコード番号分類配列の範囲が特定できるように関連付けられている。図５は、本発明の１つの実施形態による値リストとレコード番号分類配列とを関連付けるエントリ配列Ｅｎｔｒｙの説明図である。たとえば、項目：年齢に関するエントリ配列５０１は、値リスト４０２と同じサイズをもつ。そして、Ｅｎｔｒｙ［ｉ］は、ＶＬ［ｉ］と一致する項目値を属性として保持するレコードのレコード番号がレコード分類配列４０３に格納されている先頭位置を表している。よって、ＶＬ［ｉ］と一致する項目値を属性として保持するレコードのレコード番号が格納されている範囲は、一般に、レコード番号分類配列ＲｅｃＮｏ［ＶＬ［ｉ］］からレコード番号分類配列ＲｅｃＮｏ［ＶＬ［ｉ＋１］−１］までである。勿論、ｉが最大値をとるとき、この範囲は、レコード番号分類配列ＲｅｃＮｏ［ＶＬ［ｉ］］からレコード番号分類配列ＲｅｃＮｏの末尾までである。
【００５２】
或いは、値リストとレコード番号との関連付けは、項目値番号毎にレコード番号分類配列を参照するポインタを設けることによっても実現できる。
【００５３】
この第２のデータモデルによれば、レコード番号分類配列４０３及び４０５は、項目値毎にレコード番号が分類されて格納されている配列であるので、項目値をキーとして用いるレコード番号の検索及びソートが第１のデータモデルを用いる場合より高速化される。したがって、項目値をキーとしてレコード番号を検索・ソートするとき、第２のデータモデルを選択することが好ましい。また、レコード番号分類配列は、項目値に対応するレコード番号をシーケンシャルアクセスで取り出すことができるように構成されているので、第２のデータモデルはオンディスク・データベースシステムに適したデータモデルである。したがって、データの永続性やユーザ間での共有が要求されるとき、第２のデータモデルを選択することが好ましい。
【００５４】
以上の説明からわかるように、第２のデータモデルはシーケンシャルアクセスの頻度が高くなるほどに性能が引き出されるデータ構造である。
【００５５】
［ハイブリッド型データベースシステム］
本発明の１つの実施形態によるハイブリッド型データベースシステムは、ランダムアクセス性を活用できる第１のデータモデルと、シーケンシャルアクセスを増加させることによって性能を発揮させることができる第２のデータモデルとを備えている。第１のデータモデルと第２のデータモデルは、記憶媒体の特性に応じて選択されることが好ましい。ランダムアクセス向きの記憶媒体は、したがって、第１のデータモデルは、検索、集計、ソート、ジョイン、データ更新、データ変換などのデータベース処理に用いられることが好ましい。シーケンシャルアクセス向きの記録媒体は、したがって、第２のデータモデルは、検索やソートなどのデータベース処理に用いられることが好ましい。なぜならば、検索やソートは、第２のデータモデルを用いることによって、ハードディスクのようなシーケンシャルアクセス向きの記憶媒体においても高速に実現できるからである。勿論、シーケンシャルアクセス向きの記録媒体は、データの永続化、及び、ユーザ間のデータ共有のためにも用いられる。
【００５６】
さらに、ランダムアクセス向きの記憶媒体とシーケンシャルアクセス向きの記憶媒体とを組み合わせることにより、コスト削減が実現される。すなわち、処理対象のデータはランダムアクセス向きの記憶媒体に保存し、そうでないデータは、より安価なシーケンシャルアクセス向きの記憶媒体に保存することにより、高価なランダムアクセス向きの記憶媒体の容量を増加させずに済む。勿論、上述の通り、第２のデータモデルを利用することによって、頻度の高い検索を、シーケンシャルアクセス向きの記憶媒体で処理することが可能になる。
【００５７】
また、ＵＮＤＯは、ランダムアクセス向きの記憶媒体であるメモリ内のデータを放棄し、シーケンシャルアクセス向きの記憶媒体であるディスク上のデータを再読み込みすることによって実現することが可能になる。
【００５８】
その上、本発明の１つの実施形態によるデータベースシステムによれば、第１のデータモデルと第２のデータモデルを相互に高速に変換可能であり、したがって、ランダムアクセス向きの記憶媒体とシーケンシャルアクセス向きの記憶媒体との間でデータを相互に高速に交換可能である。
【００５９】
なお、第１のデータモデルで記述されたデータはランダムアクセス向きの記憶媒体であるメモリに記憶されることが好ましいが、第２のデータモデルで記述されたデータは、データの永続化及びユーザ間のデータの共有のためには、不揮発性の記憶媒体、たとえば、ハードディスクに記憶されるが、そうではない場合、第２のデータモデルで記述されたデータがランダムアクセス向きの記憶媒体、たとえば、メモリに保存されることがある。
【００６０】
［第１のデータモデル変換処理］
本発明の１つの実施形態によるデータベースシステムにおいて、コンピュータシステム１０は、第１のデータモデルによって記述され、メモリ１４に格納されている表形式データを、第２のデータモデルによって記述された表形式データに変換し、不揮発性記憶装置１８又はメモリ１４に格納する。以下では、一例として、図３に記載された第１のデータモデルによって記述された年齢の情報ブロック３０６を、図４又は図５に記載された第２のデータモデルによって記述された年齢の情報ブロック４０６に変換する第１のデータモデル変換処理を説明する。図６は、本発明の１つの実施形態による第１のデータモデル変換処理を説明するための、第１のデータモデルによって記述されたデータ及び第２のデータモデルによって記述されたデータの説明図である。この第１のデータモデル変換処理は、メモリ１４に格納された項目値番号配列３０２及び値リスト３０３から、レコード番号分類配列４０３を生成し、生成されたレコード番号分類配列４０３を不揮発性記憶装置１８又はメモリ１４に書き込む。
【００６１】
最初に、コンピュータシステム１０は、メモリ１４に格納されている項目値番号配列３０２を走査し、項目値番号配列３０２に格納されている項目値番号毎に、この項目値番号が項目値番号配列３０２中に出現する回数をカウントし、メモリ１４にカウント配列Ｃｏｕｎｔを生成する。本例では、カウント配列Ｃｏｕｎｔは、
Ｃｏｕｎｔ［０］＝３
Ｃｏｕｎｔ［１］＝３
Ｃｏｕｎｔ［２］＝４
となる。
【００６２】
次に、コンピュータシステム１０は、カウント配列に格納されたカウント値を累計数化することにより、累計数配列Ａｇｇｒをメモリ１４に生成する。本例では、累計数配列Ａｇｇｒは、
Ａｇｇｒ［０］＝０
Ａｇｇｒ［１］＝Ａｇｇｒ［０］＋Ｃｏｕｎｔ［０］＝０＋３＝３
Ａｇｇｒ［２］＝Ａｇｇｒ［１］＋Ｃｏｕｎｔ［１］＝３＋３＝６
となる。
【００６３】
これにより、コンピュータシステム１０は、レコード番号分類配列において、項目値番号ｉに対応する項目値を項目の属性として保持するレコードのレコード番号が格納されるべき領域の範囲を決定することができる。項目値番号ｉに対応する領域の範囲をＲａｎｇｅ（ｉ）とすると、Ｒａｎｇｅ（ｉ）の先頭は、Ａｇｇｒ［ｉ］であり、Ｒａｎｇｅ（ｉ）の末尾は、Ａｇｇｒ［ｉ＋１］−１である。勿論、ｉが最大値をとるとき、この範囲は、Ａｇｇｒ［ｉ］からレコード番号分類配列ＲｅｃＮｏの末尾までである。
【００６４】
本実施例によれば、コンピュータシステム１０は、この時点での累計数配列Ａｇｇｒの複製をエントリ配列５０１として不揮発性記憶装置１８又はメモリ１４に生成する。或いは、コンピュータシステム１０は、エントリ配列を生成する代わりに、レコード番号分類配列における項目値番号ｉの先頭の位置を示すポインタのポインタ値として累計数配列Ａｇｇｒの要素Ａｇｇｒ［ｉ］の値を設定してもよい。
【００６５】
次に、コンピュータシステム１０は、レコード番号分類配列の領域を不揮発性記憶装置１８又はメモリ１４に確保し、或いは、予め確保されている領域を利用して、レコード番号分類配列４０３にレコード番号を設定する。より具体的には、コンピュータシステム１０は、レコード番号ｉに対応する項目値番号配列３０２の値ＶＮｏ［ｉ］を読み出し、次に、累計数配列Ａｇｇｒの要素Ａｇｇｒ［ＶＮｏ［ｉ］］を読み出し、レコード番号分類配列４０３のうちのＡｇｇｒ［ＶＮｏ［ｉ］］によって指示される位置にレコード番号ｉを格納する。この処理は、
ＲｅｃＮｏ［Ａｇｇｒ［ＶＮｏ［ｉ］］］＝ｉ
によって表すことができる。
【００６６】
コンピュータシステム１０が複数台のプロセッサを有する場合、この第１のデータモデル変換処理は並列処理可能である。特に、本出願人による国際公開第ＷＯ２００６／１２６４６７号公報に記載された共有メモリ型マルチプロセッサシステムにおける並列ソートの手法を適用することによって、第１のデータモデル変換処理を並列処理で実現できる。具体的には、この並列ソートの手法を適用すると、最初に、コンピュータシステム１０は、処理対象の項目値番号配列３０２を分割して複数台のプロセッサへ割り当てる。次に、各プロセッサが処理対象の項目値番号配列中の項目値番号のローカルな出現回数をカウントする。次に、コンピュータシステム１０は、各プロセッサでカウントされた項目値番号のローカルな出現回数を、この項目値番号の出現回数のグローバルな累計数、すなわち、複数台のプロセッサ間で共通に用いられる累計数に変換する。最後に、各プロセッサは、このグローバルな累計数をポインタとして利用することにより、レコード番号分類配列４０３にレコード番号を格納する。
【００６７】
［第２のデータモデル変換処理］
本発明の１つの実施形態によるデータベースシステムにおいて、コンピュータシステム１０は、第２のデータモデルによって記述され、メモリ１４又は不揮発性記憶装置１８に格納されている表形式データを、第１のデータモデルによって記述された表形式データに変換し、メモリ１４に格納する。以下では、一例として、図４又は図５に記載された第２のデータモデルによって記述された年齢の情報ブロック４０６を、図３に記載された第１のデータモデルによって記述された年齢の情報ブロック３０６に変換する第２のデータモデル変換処理を説明する。図７は、本発明の１つの実施形態による第２のデータモデル変換処理を説明するための、第２のデータモデルによって記述されたデータ及び第１のデータモデルによって記述されたデータの説明図である。この第２のデータモデル変換処理は、メモリ１４又は不揮発性記憶装置１８に格納された値リスト４０２及びレコード番号分類配列４０３から、項目値番号配列３０２を生成し、生成された項目値番号配列３０２をメモリ１４に書き込む。
【００６８】
最初に、コンピュータシステム１０は、メモリ１４又は不揮発性記憶装置１８に格納されている項目値番号ｉに対応するエントリ配列Ｅｎｔｒｙの要素Ｅｎｔｒｙ［ｉ］及び次の項目値番号ｉ＋１に対応するエントリ配列Ｅｎｔｒｙの要素Ｅｎｔｒｙ［ｉ＋１］を読み出し、項目値番号ｉに対応する項目値を属性として保持しているレコードのレコード番号が格納されているレコード分類番号配列ＲｅｃＮｏ中の領域を特定する。より詳細には、この領域は、項目値番号ｉに対応する領域の範囲をＲａｎｇｅ（ｉ）とすると、Ｒａｎｇｅ（ｉ）の先頭は、Ｅｎｔｒｙ［ｉ］であり、Ｒａｎｇｅ（ｉ）の末尾は、Ｅｎｔｒｙ［ｉ＋１］−１である。勿論、ｉが最大値をとるとき、この範囲は、Ｅｎｔｒｙ［ｉ］からレコード番号分類配列ＲｅｃＮｏの末尾までである。コンピュータシステム１０は、項目値番号ｉに関して、レコード番号分類配列ＲｅｃＮｏのＲｅｃＮｏ［Ｅｎｔｒｙ［ｉ］］からＲｅｃＮｏ［Ｅｎｔｒｙ［ｉ＋１］−１］までの範囲内の要素ｊを順次に読み出し、メモリ１４に確保された項目値番号配列ＶＮｏの要素ＶＮｏ［ｊ］に項目値番号ｉを設定する。
【００６９】
この第２のデータモデル変換処理では、プロセッサ１２は、値リストＶＬ、エントリ配列Ｅｎｔｒｙ、及び、レコード番号分類配列ＲｅｃＮｏをシーケンシャルにアクセスするので、値リストＶＬ、エントリ配列Ｅｎｔｒｙ、及び、レコード番号分類配列ＲｅｃＮｏは、メモリ１４に置かれていても、ハードディスクのような不揮発性記憶装置１８に置かれていても構わないことがわかる。これに対し、項目値番号配列ＶＮｏへの要素の設定は、ランダムアクセスになるが、項目値番号配列ＶＮｏはメモリ１４に確保されているので、高速なアクセスが可能である。
【００７０】
コンピュータシステム１０が複数台のプロセッサを有する場合、この第２のデータモデル変換処理は第１のデータモデル変換処理と同様に並列処理可能である。
【００７１】
［第２のデータモデルに基づく検索処理］
図８は本発明の１つの実施形態によるデータベースシステムにおける第２のデータモデルに基づく検索処理の説明図である。本発明の１つの実施例によれば、コンピュータシステム１０は、所定の項目に属する項目値が所定の条件を満たすレコードを検索するため、メモリ１４又は不揮発性記憶装置１８に格納された値リスト４０４の中で所定の条件を満たす項目値を探し、所定の条件を満たす項目値が存在するならば、メモリ又は不揮発性記憶装置１８に格納されたレコード番号分類配列４０５から、所定の条件を満たす項目値に対応する項目値番号の領域に格納されているレコード番号を取り出し、取り出されたレコード番号をメモリ内の検索結果配列ＯｒｄＳｅｔ  ８０２に書き込む。
【００７２】
たとえば、図８に示された例において、体重が５３ｋｇから５７ｋｇという検索条件が与えられたとする。コンピュータシステム１０は、最初に、値リスト４０４から、検索条件を満たす項目値が格納されている範囲を特定する。そのため、コンピュータシステム１０は、二分割法のような周知の技術を使って、値リスト４０４の中で、項目値５４、５５及び５６が格納されている範囲を特定する。二分割法は値リスト４０４に対しランダムアクセスを行うが、アクセス量が少ない限り、値リスト４０４はハードディスクに格納されていても構わない。同図の例では、特定された範囲は、項目値番号１、２及び３に対応している。
【００７３】
次に、コンピュータシステム１０は、レコード番号分類配列４０５から項目値番号１、２及び３に対応する領域に格納されているレコード番号を取り出す。コンピュータシステム１０は、上述のように、項目値番号に対応するレコード番号分類配列４０５の領域を、エントリ配列５０２を参照することによって特定する。また、ある項目値番号に対応するレコード番号が格納されている領域は連続領域であるため、コンピュータシステム１０は、レコード番号分類配列４０５から条件を満たすレコード番号をシーケンシャルアクセスで読み出すことが可能である。
【００７４】
コンピュータシステム１０が複数台のプロセッサを有する場合、この検索処理は第１のデータモデル変換処理と同様に並列処理可能である。
【００７５】
［第２のデータモデルに基づくソート処理］
図９及び図１０は本発明の１つの実施形態によるデータベースシステムにおける第２のデータモデルに基づくソート処理の説明図である。本発明の１つの実施例によれば、コンピュータシステム１０は、所定の項目に属する項目値によってレコードをソートするため、ソート順が所定の項目の値リスト４０４中の項目値の所定の順序と同じであるならば、レコード番号分類配列４０５をそのままメモリ１４内のソート結果配列９０２に書き込み（図９）、ソート順が所定の項目の値リスト４０４中の項目値の所定の順序と逆であるならば、レコード番号分類配列４０５から、値リスト４０４中の項目値の所定の順序と逆の順序に、この項目値に対応する項目値番号の領域を特定し、この領域に格納されているレコード番号を格納されている順序で取り出し、メモリ１４内のソート結果配列１００２に書き込む。
【００７６】
コンピュータシステム１０が複数台のプロセッサを有する場合、この検索処理は第１のデータモデル変換処理と同様に並列処理可能である。
【００７７】
［データベースシステムの機能ブロック］
図１１は、本発明の１つの実施形態によるデータベースシステムの機能ブロック図である。データベースシステム１１００は、プロセッサ１２とメモリ１４とハードディスク１８とを含むコンピュータ１０を備え、１つ以上のデータ項目に対応した項目値を含む１つ以上のレコードの配列からなる表形式データを、表形式データ中でのレコードのレコード番号を格納する第１の配列と、項目毎に、項目に属する一意の項目値が所定の順序に並べられた第２の配列と、項目毎に、各レコードの項目に属する項目値が第２の配列に格納されている項目値位置をレコード番号の順番に格納する第３の配列とによって表現される第１のデータモデル１１０１として記述し、第１のデータモデル１１０１によって記述されたデータを処理する第１のデータ処理部１１０２を含む。第１のデータ処理部は、国際公開第００／１０１０３号公報に記載されているような検索・集計・ソート、国際公開第００／７３９３９号公報に記載されているようなジョイン、国際公開第０１／０９７６４号公報に記載されているようなデータ更新、特開２００１−２９１０４８号公報に記載されているようなデータ集計、国際公開第ＷＯ０２／１０９７６号公報に記載されているようなコンパイル、国際公開第ＷＯ０３／０４０９６０号公報に記載されているようなジョインなどを実行するように構成されている。
【００７８】
このデータベースシステム１１００は、第１のデータモデル１１０１によって記述されたデータを、第１の配列と、項目毎の第２の配列と、項目毎に、第２の配列に格納された項目値の順番にこの項目値を保持するレコードのレコード番号を格納する第４の配列とによって表形式データを表現する第２のデータモデル１１０３によって記述されたデータに変換する第１のデータモデル変換部１１０４を含む。データベースシステム１１００は、第２のデータモデル１１０３によって記述されたデータを処理する第２のデータ処理部１１０５と、第２のデータモデル１１０３によって記述されたデータを第１のデータモデル１１０１によって記述されたデータに変換する第２のデータモデル変換部１１０６をさらに含む。
【００７９】
第２のデータ処理部１１０５は、上述されているような第２のデータモデルに基づく検索、第２のデータモデルに基づくソートなどを実行するように構成されている。
【００８０】
これにより、データベースシステム１１００は、予め定められたルールに従って、又は、データベースシステムのオペレータからの指示に従って、ランダムアクセスに適したデータを第１のデータモデル１１０１によって記述し、シーケンシャルアクセスに適したデータを第２のデータモデル１１０３によって記述することが可能である。さらに、データベースシステム１１００は、予め定められたルールに従って、又は、データベースシステムのオペレータからの指示に従って、ランダムアクセスを用いる処理の対象データを第１のデータモデル１１０１によって記述し、第１のデータ処理部１１０２によって処理し、シーケンシャルアクセスを用いる処理の対象データを第２のデータモデル１１０３によって記述し、第２のデータ処理部１１０５によって処理することが可能である。
【００８１】
このため、データベースシステム１１００は、相互変換可能である第１のデータモデル１１０１及び第２のデータモデル１１０３を選択的に利用できるようにデータベースシステム１１００を動作させる制御部１１０７をさらに備えることがある。制御部１１０７は、予め定められたルール、又は、外部からの指示に従って、処理されるべきデータを記述すべきデータモデルと、処理されるべきデータを処理すべきデータ処理部とを決定する。より具体的には、制御部１１０７は、予め定められたルールに従って、又は、外部からの指示に従って、処理されるべきデータが第１のデータモデル１１０１と第２のデータモデル１１０３のいずれのデータモデルによって記述されるべきであるかを決定し、処理されるべきデータのデータモデルと記述されるべきデータモデルとが一致しない場合に、第１のデータ変換部１１０４又は第２のデータ変換部１１０６に、処理されるべきデータのデータモデルを記述されるべきデータモデルに変換させ、第１のデータ処理部１１０２又は第２のデータ処理部１１０５にデータモデルが変換されたデータを処理させる。
【００８２】
このように、データベースシステム１１００は、相互変換可能である第１のデータモデル１１０１及び第２のデータモデル１１０３を選択的に利用できるように構成されている。
【００８３】
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【符号の説明】
【００８４】
１０        コンピュータシステム
１２−１，１２−２，・・・，１２−ｐ        ＣＰＵ
１４        メモリ
１６        ＲＯＭ
１８        不揮発性記憶装置
２０        ＣＤ−ＲＯＭドライバ
２２        Ｉ／Ｆ
２４        入力装置
２６        表示装置
２８        バス
３０１，４０１      レコード番号配列
３０２，３０４      項目値番号配列
３０３，３０５，４０２，４０４      値リスト
３０６，３０７，４０６，４０７      情報ブロック
４０３，４０５      レコード番号分類配列
１１００    データベースシステム
１１０１    第１のデータモデル
１１０２    第１のデータ処理部
１１０３    第２のデータモデル
１１０４    第１のデータ変換部
１１０５    第２のデータ処理部
１１０６    第２のデータ変換部
１１０７    制御部
【図１】
2011099114.tif 000003
【図２】
2011099114.tif 000004
【図３】
2011099114.tif 000005
【図４】
2011099114.tif 000006
【図５】
2011099114.tif 000007
【図６】
2011099114.tif 000008
【図７】
2011099114.tif 000009
【図８】
2011099114.tif 000010
【図９】
2011099114.tif 000011
【図１０】
2011099114.tif 000012
【図１１】
2011099114.tif 000013
【国際調査報告】
2011099114.tif 000014
2011099114.tif 000015
2011099114.tif 000016
2011099114.tif 000017