JP2015207026A - 情報処理装置、レコード位置情報特定方法および情報処理プログラム - Google Patents
情報処理装置、レコード位置情報特定方法および情報処理プログラム Download PDFInfo
- Publication number
- JP2015207026A JP2015207026A JP2012189041A JP2012189041A JP2015207026A JP 2015207026 A JP2015207026 A JP 2015207026A JP 2012189041 A JP2012189041 A JP 2012189041A JP 2012189041 A JP2012189041 A JP 2012189041A JP 2015207026 A JP2015207026 A JP 2015207026A
- Authority
- JP
- Japan
- Prior art keywords
- item
- record
- database
- value
- position information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】大規模データベースを、低コストで使用環境の制約なく管理し、使い勝手のよい環境を提供する技術を提供する。
【解決手段】それぞれ一意のレコード番号を有する複数のレコードが格納されるデータベースから所望のレコードの位置情報を特定するためのインデックスであって、指定された値のレコード番号を返すとともに、所定の項目でソート後の順位に応じたレコード番号を返すインデックスを用いたレコードの位置情報を特定する位置情報特定部を備える情報処理装置を提供する。また、このインデックスのサイズは、元のデータベースサイズに比例的とする。
【選択図】図7
【解決手段】それぞれ一意のレコード番号を有する複数のレコードが格納されるデータベースから所望のレコードの位置情報を特定するためのインデックスであって、指定された値のレコード番号を返すとともに、所定の項目でソート後の順位に応じたレコード番号を返すインデックスを用いたレコードの位置情報を特定する位置情報特定部を備える情報処理装置を提供する。また、このインデックスのサイズは、元のデータベースサイズに比例的とする。
【選択図】図7
Description
本発明は、データベース管理技術に係り、特に、分散記憶される大規模データの管理技術に関する。
データを蓄積し、必要なデータをそこから取り出して提示する「検索」はデータベース管理装置の基本的な役割である。この検索を高速化するためにはインデックスが必須である。既存のインデックスには、例えば、B−Tree、ハッシュなどがある(例えば、非特許文献1参照)。
近年、データ量が急激に増加し、必然的にデータベースは大規模化している。また、大規模なデータベースは、データが各地で分散収集されることが多い。例えば、各店舗で発生するPOSデータ、各地の天文台や気象台などで取得される観測データなどである。
非特許文献1: Douglas Comer ”The Ubiquitous B−Tree”, Computing Surveys, June 1979, Vol 11, No.2, p121−p137
従来のインデックスでは、大規模なデータ、分散して取得されるデータには対応しきれていない。
まず、大規模化に伴って切実に要求されるようになる処理速度が十分ではない。例えば、従来のインデックスを用いると、100万行分のデータの検索に約1秒かかるシステムがあるとしよう。1秒なら満足できる。ところが、データが1億行になると、同じ処理速度を維持したとしても100秒かかり、使用に耐えない。また、従来最も頻繁に使用されてきたインデックスであるB−Treeは、動作機構が複雑で、キャッシュにヒットしにくく、大規模データでの速度が出にくい。このため、データ規模が大きくなると、専用のシステムなどを構築し、対応せざるを得ない。
また、既存技術ではサーバレス化、データベースの分散化ができない。大規模なデータベースは、上述のように、データが各地で分散収集されることが多いが、従来の検索システムでは、データをサーバに集め、その後、検索等の処理を行う。このような手順となるのは、従来のインデックスが、データベース内のデータに、一意のレコード番号を付与することができないためである。一意のレコード番号はスキーマが異なるデータベース間でも通用する指標であるが、従来のインデックスはこの性質を有しないためにデータを分散管理することが困難となる。従って、検索時は、データを集積したサーバ側で、サーバのCPUばかりを使いながら検索処理を行うこととなり、同時アクセス数の増加につれ、早い段階で検索遅延が発生する。
このサーバ側での処理は、高コスト化と使用環境の制約とをもたらす。通常、1台のサーバでは、せいぜい100万行分のデータしか管理できない。このため、取扱いデータが1億行になると100台のサーバが必要となり、導入費用、管理費用が膨大なものとなるとともに、これらのサーバを設置管理する施設が必要となる。上述のように、専用システムを構築する場合は、尚更である。また、このとき、インデックスそのものの容量も問題となる。例えば、B−Treeは、データベースの格納データ数をnとすると、O(n*log(n))の格納領域を必要とする。インデックスの容量の肥大化は、パフォーマンスの低下にもつながる。
従って、大規模データベースでのインデックスは、データベースが大規模になっても、必要な記憶容量が急激に増大しない性質を有することが望ましい。例えば、データベースの格納データ数をnとすると、そのサイズはO(n)が望ましい。また、サーバレス化し、各地で取得されたデータを、そのまま各地で分散管理し、ネットワークを介して、自在にアクセスできることが望ましい。これらは現状のインデックスでは実現できない。
本発明は、上記事情に鑑みてなされたもので、大規模データベースを、低コストで使用環境の制約なく管理でき、使い勝手のよい環境を提供する技術を提供することを目的とする。
本発明は、それぞれ一意のレコード番号を有する複数のレコードが格納されるデータベースから所望のレコードの位置情報を特定するためのインデックスであって、指定された値のレコード番号を返すとともに、所定の項目でソート後の順位に応じたレコード番号を返すインデックスを用いたレコードの位置情報を特定する位置情報特定部を備える情報処理装置を提供する。また、このインデックスのサイズは、元のデータベースサイズに比例的とする。
具体的には、予め定めたデータ項目毎の項目値を格納するレコードからなるデータベースを管理する情報処理装置であって、検索対象となり得る前記データ項目毎のインデックスファイルと、前記インデックスファイルを用いて、所望のレコードの位置情報を特定する位置情報特定部と、を備え、前記各レコードには、予め一意にレコード番号が付与され、前記位置情報特定部は、前記位置情報として前記レコード番号を特定し、前記データ項目毎のインデックスファイルは、当該データ項目の前記項目値から前記レコード番号を取得でき、かつ、当該データ項目をキー項目としてソートしたソートデータベースの順位から前記レコード番号を取得できるものであることを特徴とする情報処理装置を提供する。
また、所望のレコードの位置情報を特定する位置情報特定部を備える情報処理装置において、記憶装置に格納された、予め定めたデータ項目毎の項目値を格納するレコードからなるデータベースであって、各レコードには予め一意にレコード番号が付与されているデータベースにおける、予め定めたデータ項目であるターゲット項目の所定の項目値であるターゲット値を有するレコードの位置情報を特定するレコード位置情報特定方法であって、前記記憶装置には、検索対象となり得る前記データ項目毎のインデックスファイルがさらに格納され、前記インデックスファイルは、当該データ項目に属する一意の項目値を所定順に格納する値リストと、前記値リストの格納順に、前記項目値毎に当該データベース中の累積レコード数を格納する累積数リストと、前記データベースを、当該データ項目をキー項目として前記所定順でソート後の前記レコード番号の並び順を格納するソートリストと、を備え、前記ターゲット項目の前記値リストにアクセスし、当該データベースの当該ターゲット項目が、前記ターゲット値を有しているか否かを判別する有無判別ステップと、前記有無判別ステップで有りと判別された場合、前記累積数リストと前記ソートリストとを用い、当該ターゲット値の前記レコード番号を特定し、前記位置情報とするレコード番号特定ステップと、を備えることを特徴とするレコード位置情報特定方法を提供する。
さらに、所望のレコードの位置情報を特定する位置情報特定部を備える情報処理装置において、記憶装置に格納された、予め定めたデータ項目毎の項目値を格納するレコードからなる複数のデータベースであって、各レコードには予め一意にレコード番号が付与されている複数のデータベースにおける、前記複数のデータベースを仮想的に統合して予め定めたデータ項目をキー項目としてソートした仮想統合ソートデータベース内の仮想的な位置であるターゲット位置のレコードの位置情報を特定するレコード位置情報特定方法であって、前記記憶装置には、前記データベース毎の、検索対象となり得る前記データ項目毎のインデックスファイルがさらに格納され、前記インデックスファイルは、当該データ項目に属する一意の項目値を所定順に格納する値リストと、前記値リストの格納順に、前記項目値毎に当該データベース中の累積レコード数を格納する累積数リストと、前記データベースを、当該データ項目をキー項目として前記所定順でソート後の前記レコード番号の並び順を格納するソートリストと、を備え、前記キー項目の前記値リストと前記累積数リストと前記ソートリストとを用い、前記仮想統合ソートデータベースにおける格納範囲に、前記ターゲット位置を含む探索値を決定する探索値決定ステップと、前記キー項目の前記値リストと前記累積数リストと前記ソートリストとを用い、前記決定した探索値内で前記ターゲット位置に相当する探索値が属するテーブルと、当該テーブル内での順位とを前記位置情報として特定する位置情報特定ステップと、を備えることを特徴とするレコード位置情報特定方法を提供する。
また、コンピュータを、それぞれ、予め定めたデータ項目毎の値を格納するレコードからなる複数のデータベースであって、各データベースの各レコードには予め一意にレコード番号が付与されているデータベースから、各データベースが備えるインデックスファイルを用いて、所望のレコードの位置情報を特定する位置情報特定手段として機能させる情報処理プログラムであって、前記インデックスファイルは、前記データベースそれぞれから生成され、前記データ項目毎に、当該データ項目の前記項目値から前記レコード番号を取得し、かつ、当該データ項目をキー項目としてソートしたソートデータベースの順位から前記レコード番号を取得するものであることを特徴とする情報処理プログラムを提供する。
また、ネットワークで接続された、予め定めたデータ項目毎の項目値を格納するレコードからなるデータベースを管理する第一の情報処理装置と、所望の前記レコードの位置情報を特定する第二の情報処理装置と、を備えるデータベースシステムであって、前記第一の情報処理装置は、検索対象となり得る前記データ項目毎のインデックスファイルを備え、前記各レコードには、予め一意にレコード番号が付与され、前記データ項目毎のインデックスファイルは、当該データ項目の前記項目値から前記レコード番号を取得でき、かつ、当該データ項目をキー項目としてソートしたソートデータベースの順位から前記レコード番号を取得できるものであり、前記第二の情報処理装置は、前記位置情報として前記レコード番号を特定することを特徴とするデータベースシステムを提供する。
このデータベースシステムにおいて、管理対象の前記データベースは複数であり、前記各データベースには、予め一意にデータベースIDが付与され、前記インデックスファイルは、前記データベース毎に生成され、前記ソートデータベースは、前記複数のデータベースを仮想的に統合した仮想統合データベースを、当該データ項目をキー項目としてソートしたデータベースであり、前記第二の情報処理装置は、前記位置情報として、所望のレコードが属するデータベースの前記データベースIDをさらに特定するよう構成してもよい。このとき、前記管理対象の複数のデータベースのうち、少なくとも1以上のデータベースが、それぞれ前記ネットワークに接続された異なる第一の情報処理装置上に格納されていてもよい。
大規模データベースを、低コストで使用環境の制約なく管理でき、使い勝手のよいデータベース管理環境を提供できる。
<<第一の実施形態>>
以下、本発明を適用する実施形態を、図面を用いて説明する。まず、本実施形態のシステム構成を説明する。
以下、本発明を適用する実施形態を、図面を用いて説明する。まず、本実施形態のシステム構成を説明する。
図1は、本発明の実施形態のデータベースシステム100の概略およびデータベースシステム100が備える情報処理装置の機能ブロックを説明するための図である。本図に示すように、本実施形態では、複数の情報処理装置110−0、110−1、110−2がネットワーク120を介して接続される。以下、各情報処理装置を区別する必要が無い場合は、情報処理装置110で代表する。なお、ここでは、一例として、ネットワーク120に接続される情報処理装置110が3台の場合を示すが、接続される情報処理装置110の数はこれに限られない。
各情報処理装置110は、後述するデータベースを保持するとともに、各情報処理装置110が保持するデータベースを管理するデータ管理装置として機能する。データ管理装置として、例えば、データベースの閲覧機能、検索機能なども提供する。各情報処理装置110は、CPU111とメモリ112と記憶装置113とを備える。また、ネットワーク120を介して、各情報処理装置110間でデータの送受信を可能とするネットワークインタフェース(NWIF)114を備える。また、各情報処理装置110には、情報処理装置110のユーザインタフェースである入力装置115および表示装置116が接続される。さらに、外部記憶装置117が接続されていてもよい。
本実施形態では、各情報処理装置110−0、110−1、110−2が、それぞれ、データベース200−0、200−1、200−2を蓄積する。データベースについても、特に区別する必要が無い場合は、表形式データ201で代表する。データベース200は、各情報処理装置110の記憶装置113または外部記憶装置117に蓄積される。
さらに、本実施形態では、各情報処理装置110−0、110−1、110−2は、それぞれ、データベース200−0、200−1、200−2のインデックスファイル300−0、300−1、300−2を備える。インデックスファイルについても、特に区別する必要が無い場合は、インデックスファイル300で代表する。インデックスファイル300は、各情報処理装置110の記憶装置113またはメモリ112に蓄積される。また、インデックスファイル300は、任意の時間間隔で作成される。例えば、所定量のデータが収集される毎に作成される。
次に、各情報処理装置110が蓄積するデータベース200について説明する。本実施形態のデータベースは、構造化された表形式データ、半構造化データ、非構造化データ、いずれであってもよい。
構造化された表形式データ201の例を図2(a)に示す。構造化された表形式データ201は、本図に示すように、1つ以上のデータ項目(列)211に対応した項目値212を含む1つ以上のレコード(行)213の配列である。
各レコード213には、レコード番号(RecNo.)214が付与される。このレコード番号は、表形式データ201の中の、レコードが収容されている位置を表す情報である。このレコード番号は、表形式データ201に、所定のタイミングで付与される。所定のタイミングは、例えば、表形式データ201が作成された時点などとする。本実施形態のデータベース200では、レコード番号を指定することにより、各レコードにアクセスできる。
一般に、表形式データ201は、レコードが常にレコード番号(RecNo.)214の順番に配列されているとは限らない。たとえば、作成時の表形式データ201(元の表形式データ201と呼ぶ。)を、所定のデータ項目211をキー項目として、その項目値212が昇順に並ぶようにソートすると、ソート後の表形式データ201sのレコードの並び順は、元の表形式データ201のレコードの並び順とは異なる。このような例を図2(b)に示す。図2(b)は、データ項目211「Name」をキー項目として、表形式データ201を昇順にソートした場合のソート結果である。本明細書では、各態様のデータベース200のレコードの並び順を表す情報を、レコード順序番号(順位)215と呼ぶ。元の表形式データ201では、レコード順序番号215は、レコード番号(RecNo.)214に一致する。
なお、図2(a)では、データ項目211として、<Gender>、<Name>、<Age>の3つを備える5つのレコード213を例示する。ここでは、例えば、レコード番号214が0のレコード213の、データ項目211が<Gender>の項目値212は「female」、データ項目211が<Name>の項目値212は「Jemi」、データ項目211が<Age>の項目値212は、「2」である。ただし、本実施形態では、データ項目211の数、レコード213の数はこれに限られない。
なお、項目値212は、数値データ、テキストデータのいずれであってもよいが一意に順序を付与できるものとする。例えば、データ項目211が<Age>の項目値212として2、1・・といった数値データが格納され、データ項目211が<Name>の項目値212としてJemi、Griza、・・・・といったテキストデータが格納される。
なお、図2(c)および図2(d)に示すように、本実施形態の表形式データ201のデータ項目211は、各レコード213に複数の項目値212を格納可能な繰り返し項目であってもよい。ここでは、<Name>のデータ項目211が、繰り返し項目である場合を例示する。なお、繰り返し項目の中に格納される複数の項目値212は、通常順序を問わない。すなわち、図2(c)の表形式データ201と図2(d)に示す表形式データ201とは、論理的に同じとみなされる。
半構造化データ202の例を、図3(a)に示す。半構造化データ202は、基本的に表形式データ201と同様の構成を有する。すなわち、1つ以上のデータ項目211に対応した項目値212を含む1つ以上のレコードの配列である。ただし、半構造化データ202では、データ項目211には、必ず値があることが保証されるデータ項目211と、保証されていないデータ項目211とがある。
図3(a)の例では、<ID>が、必ず値があることが保証されるデータ項目211であり、その他の<name>、<address>、<gender>、<age>、<food>は、保証されていないデータ項目211である。
非構造化データ203の例を図3(b)に示す。非構造化データ203も、基本的に表形式データ201と同様の構成を有する。すなわち、1つ以上のデータ項目211に対応した項目値212を含む1つ以上のレコード213の配列である。ただし、非構造化データ203では、データが存在することを保証されるデータ項目はない。
なお、本実施形態では、半構造化データ203および非構造化データ204は、それぞれ図3(c)および図3(d)に示すように、表形式データ201と同様の構造にマッピングし、処理を行う。なお、値のない項目値212(NULL項目)の取り扱いは、予め定めておく。以下、本実施形態では、NULL項目は、各データ項目211の最小値として取り扱うものとして説明する。
以下、本実施形態では、データベース200として、NULL項目を有する場合も含め、構造化された表形式データ201が登録されている場合を例にあげて説明する。他の形式のデータであっても、処理は同様である。
また、本実施形態では、表形式データ201は、分散管理されているものとする。以下、本明細書では、各情報処理装置110が備える表形式データ201を、それぞれテーブル(Table)と呼ぶ。各テーブルは、予め一意に識別番号iが付与されるものとする。本実施形態では、表形式データ201−0、201−1、201−2を、それぞれ、識別番号0、1、2が付与された、Table0,Table1,Table2と呼ぶ。なお、本実施形態では、テーブルは、1の情報処理装置110が複数備えていてもよい。また、各テーブルの識別番号iを、テーブルIDと呼ぶ。
本実施形態の情報処理装置110は、分散管理されているテーブル群から、所望のレコードの位置情報を特定する。分散管理されているテーブル群を、テーブルID順に仮想的に統合したデータベースを、仮想統合データベース(仮想統合DB)と呼ぶ。また、仮想統合DBを、所定のデータ項目をキー項目としてソートしたデータベースを、仮想統合ソートデータベース(仮想統合ソートDB)と呼ぶ。仮想統合ソートDBのレコード順序番号を、仮想行(Vrec)と呼ぶ。
図4は、仮想統合DBと仮想統合ソートDBを説明するための図である。ここでは、検索対象テーブル群を、テーブル0(Table0)とテーブル1(Table1)とする場合を例示する。本図に示すように、仮想統合DB500は、テーブル0と、テーブル1とをテーブルID順に仮想的に統合したものである。また、仮想統合ソートDB510は、仮想統合DB500を、所定のデータ項目(ここでは、<Name>)をキーとしてソートしたものである。ここで、項目501は、テーブルIDとレコード番号とを示すものである。
本例では、テーブル0は、図2(a)に示す表形式データ201であり、レコード数5つの構造化された表形式データである。一方、テーブル1は、レコード数6つで、NULL項目を有する非構造化データである。
本実施形態の情報処理装置110は、ユーザからデータ項目211と所定の項目値212とを指定されると、テーブル群を探索し、当該データ項目211で指定された項目値212を有するレコード213を特定し、位置情報を返す。位置情報は、当該項目値212に等しいレコード213が所属するテーブル(所属テーブル)のテーブルIDと、レコード番号とする。また、ユーザから、仮想統合ソートDB510を生成する際のキー項目とするデータ項目211と、仮想行(Vrec)とを指定されると、当該仮想行(Vrec)のレコード213の位置情報を返す。
これを実現する情報処理装置110の機能を以下に説明する。図5に、上記機能を実現する情報処理装置110の機能ブロック図を示す。本図に示すように、本実施形態の情報処理装置110は、インデックス作成部410と、位置情報特定部420とを備える。これらの各機能は、情報処理装置110が備えるCPU111が、予め記憶装置113に保持するプログラムを、メモリ112にロードして実行することにより実現される。以下、各部の詳細について説明する。
インデックス作成部410は、任意の時間間隔で、表形式データ201からインデックスファイル300を作成する。
ここで、本実施形態のインデックス作成部410が作成するインデックスファイル300について説明する。本実施形態のインデックスファイル300は、各情報処理装置110上で管理される表形式データ201から、所望のレコード213の位置を特定する処理を高速化するために設けられる、1以上の要素を備える配列形式の1以上のリストである。
図6は、本実施形態のインデックスファイル300を説明するための図である。本実施形態のインデックス作成部410は、分散管理される全てのテーブルについて、それぞれ以下のインデックスファイル300を作成する。ここでは、図2(a)に示す表形式データ201から作成されるインデックスファイル300を例にあげて説明する。
インデックスファイル300は、表形式データ201のデータ項目211毎に生成される。インデックスファイル300を作成するデータ項目211を着目項目と呼ぶ。図6(a)は、着目項目が<Gender>の、図6(b)は、着目項目が<Name>の、図6(c)は、着目項目が<Age>の例である。これらの図に示すように、本実施形態のインデックスファイル300は、値リスト(VL)310と、蓄積数リスト(CAGR)320と、ソートリスト(SOS)330と、を備える。各リストは、要素とその位置であるレコード順序番号を示す順位(Ord)とから構成される。各リストは、順位(Ord)を指定することにより、各要素を抽出することができる。また、リストABCの、0から始まる順位jの要素をABC[j]と示す。
VL310は、着目項目に表れる一意の項目値212を、予め定めた順(例えば、昇順または降順)にソートし、要素として格納したリストである。具体的には、VL310は、表形式データ201を、着目項目をキーとして、予め定めた順にソートし、その結果(ソート後の表形式データ201s)の同一値をサプレスすることにより生成する。
SOS330は、表形式データ201を、着目項目をキーとしてソートした際のレコード番号214の並び順を要素として格納したものである。ソートは、VL310と同じ同順とする。SOS330を備えることにより、ソート後の項目値212に対応するレコード番号214を自由に取り出すことができる。
CAGR320は、各項目値212のレコード数の累積値を要素として格納したものである。レコード数の累積は、VL310の順になされる。これは、VL310とSOS330とを関連付けるリストでもある。CAGR320により、VL310の各要素の、SOS330の格納範囲を知ることができる。すなわち、iが0より大きい場合、VL310の要素VL[j]は、SOS330の、[CAGR[j−1],CAGR[j])の区間、すなわち、CAGR[j−1]からCAGR[j]−1の順位に格納される。なお、VL310の要素VL[0]は、SOS330の、[0,CAGR[0])の区間の順位に格納される。以下、本明細書では、区間、範囲を説明する際、閉区間を[]で示し、開区間を()で示す。
例えば、図6(b)の例では、VLの順位1の要素「Grizza」について説明する。CAGR320の順位0の要素は「1」であり、CAGR320の順位1の要素は「3」である。従って、「Grizza」は、SOS330の順位[1、3)の範囲、すなわち、順位[1,2]の範囲に格納される。
また、インデックスファイル300の各リストは、テーブル毎に作成される。図7(a)および図7(b)に、着目項目が<Name>の場合のインデックスファイル300例を示す。図7(a)がテーブル0のインデックスファイル300であり、図7(b)がテーブル1のインデックスファイル300である。
次に、位置情報特定部420について説明する。位置情報特定部420は、ユーザからの指示に従って、インデックスファイル300を用い、テーブル群を探索し、所定のレコードの位置情報を特定する。これを実現するため、本実施形態の位置情報特定部420は、データ項目211と所定の項目値212とが指定されたことを受け、当該データ項目211の項目値212を有するレコードを探索し、位置情報を特定する第一探索部421と、ソートキー項目とするデータ項目211と仮想行(Vrec)とが指定されたことを受け、当該仮想行(Vrec)のレコードを探索し、位置情報を特定する第二探索部422と、指定されたレコード数を計算するレコード数計算部423と、を備える。
本実施形態のレコード数計算部423は、以下の式(1)および式(2)で示す2つの関数を用意し、第一探索部421および第二探索部422が位置情報を探索する際、以下の式(3)および式(6)で示すレコード数を計算する。算出は、指定されたデータ項目211の、VL310、CAGR320、SOS330を用いて行う。以下、テーブル(i)の各リストを、それぞれ、VL(i)、CAGR(i)、SOS(i)と呼ぶ。
次に、本実施形態の第一探索部421の処理を説明する。上述のように、第一探索部421は、ユーザからデータ項目211と項目値とが与えられると、分散管理対象のテーブル内の位置情報を返す。すなわち、値から、当該値を有するレコードの、テーブルIDとレコード番号とを特定する。
具体的には、各テーブルiについて、テーブルID順に、当該データ項目211を着目項目とするインデックスファイル300の中のVL(i)を探索し、指定された項目値の有無、および、有りの場合はその位置を特定する。VL(i)の探索は、2分割法などを用いて行う。そして、VL(i)内で指定された項目値が有る場合は、CAGR(i)、SOS(i)を用い、上記手法で、そのレコード番号を特定する。
図8は、本実施形態の第一探索部421による第一探索処理の処理フロー例である。なお、ここでは、探索対象とするテーブル数をM(Mは1以上の整数)とする。探索対象とするテーブル群は、予め定められているものとする。また、このとき、探索結果は、記憶装置113内の第一探索結果格納領域に格納されるものとする。
本図に示すように、ユーザから、探索対象のデータ項目211(Target Item:TI)と項目値212(Target Value:TV)とが与えられると、まず、探索するテーブルIDを初期化する(i=0)とともに、第一探索結果格納領域を初期化する(ステップS1101)。そして、テーブルiのデータ項目TIのインデックスファイル300にアクセスする。
まず、VL(i)にアクセスし、項目値TVを探索する(ステップS1102)。ここでは、2分割法などを用い、探索する。VL(i)に項目値TVが存在する場合、その順位を抽出し、CAGR(i)にアクセスし、上述の手法で、項目値TVのSOS(i)での格納範囲を特定する(ステップS1103)。得られた格納範囲に従ってSOS(i)にアクセスし、項目値TVのレコード番号214を得る(ステップS1104)。得られたレコード番号214を、探索中のテーブルのテーブルIDに対応づけて、第一探索結果格納領域に追加保存する(ステップS1105)。
その後、全てのテーブルの処理を終えるまで、次のテーブルのインデックスファイル(i)にアクセスし、ステップS1102からの処理を繰り返す(ステップS1106、1107)。
一方、ステップS1102において、VL(i)に項目値TVが存在しない場合、そのままステップS1106に移行し、処理を繰り返す。
全てのテーブルの処理を終えると、第一探索結果格納領域に保存されるテーブルIDとレコード番号との組を、位置情報として出力する(ステップS1108)。
以上の第一探索部421による第一探索処理を、図7を用い、具体例で説明する。例えば、データ項目211として<Name>が、項目値として「Sillabub」が指定されたものとする。まず、テーブル0のVL(0)にアクセスし、「Sillabub」の有無を判別する。テーブル0には、この項目値はないため、次にテーブル1に移る。そして、テーブル1で、同様にVL(1)にアクセスし、順位として4を得る。CAGR(0)にアクセスし、その格納範囲として[4,5]を得る。そして、SOS(0)にアクセスし、レコード番号1、2を得る。最終的に探索結果として、テーブル1のレコード番号1、2を出力する。
次に、本実施形態の第二探索部422の処理を説明する。上述のように、第二探索部422は、ユーザからキー項目と仮想統合ソートDB510の仮想行(Vrec)とを指定されると、該当レコードの位置情報を返す。すなわち、仮想統合ソートDB510の指定仮想行TPのレコードの、テーブルIDとレコード番号214とを特定する。
具体的には、テーブルID順に、VL310にアクセスし、所定の位置(例えば、中央付近)の値を抽出し、仮の探索値(仮探索値)とし、仮探索値の、仮想統合ソートDB510における仮想行(仮仮想行)を得る。得られた仮仮想行と指定仮想行とを比較し、両者が一致するまで、探索を繰り返す。そして、一致した仮探索値の位置情報を算出する。
なお、仮探索値の仮仮想行は、上記レコード数計算部423による式(5)および式(6)で算出する。すなわち、仮仮想行(順位)の範囲は、[CALTV<仮探索値>、CALTV<仮探索値>+CAEQV<仮探索値>)である。すなわち、CALTV<仮探索値>からCALTV<仮探索値>+CAEQV<仮探索値>−1である。
図9は、本実施形態の第二探索部422による第二探索処理の処理フロー例である。なお、ここでは、探索対象とするテーブル数をM(Mは1以上の整数)とする。また、このとき、記憶装置113内の、探索結果を格納する領域を第二探索結果格納領域とする。また、仮探索値として抽出した値を保持する領域を、仮探索値格納領域とする。
ユーザから指定仮想行としてTPが与えられると、まず、探索するテーブル番号および第二探索結果格納領域を初期化する(ステップS1201)。そして、テーブルiの、仮想統合ソートDB510作成時のキー項目TIの、インデックスファイル300にアクセスする。
まず、VL(i)にアクセスし、予め定めた規則に従って仮探索値vpを決定する(ステップS1202)。ここでは、上述のように、例えば、中央値を抽出する。このとき、仮探索値vpの、当該VL(i)における順位をjとする。また、決定した仮探索値vpおよび順位jを、仮探索値格納領域に追加登録する(ステップS1203)。そして、レコード数計算部423に、仮探索値vpの仮想行(仮仮想行)の範囲を算出させる(ステップS1204)。
指定仮想行TPと仮仮想行の範囲とを比較する(ステップS1205)。指定仮想行TPが、仮仮想行の範囲内であれば、仮探索値vpが、仮想行の値VTPであると決定する(ステップS1209)。そして、値VTPの中の、仮想行TPのテーブルIDとレコード番号とを特定する位置情報特定処理を行い(ステップS1210)、処理を終了する。
一方、指定仮想行TPが仮仮想行の範囲外である場合、予め定めた規則に従って、テーブルi内で新たな仮探索値を決定可能か判断する(ステップS1206)。ここでは、例えば、指定仮想行TPが、仮仮想行の最小値より小さい場合、VL(i)内の仮探索値vpと、仮探索値格納領域に既に格納されている仮探索値で、仮探索値vpより小さい値の中の最大値と、の間で決定する。一方、指定仮想行TPが仮仮想行の最大値より大きい場合、VL(i)内の仮探索値vpと、仮探索値格納領域に格納されている仮探索値で、仮探索値vpより大きい値の中の最小値との間で決定する。
決定可能な場合、新たな仮探索値vpを決定し(ステップS1207)、ステップS1203へ移行し、処理を繰り返す。
一方、新たな仮探索値vpを、上記範囲で決定できない場合、次のテーブルに移行し(ステップS1208)、ステップS1202から処理を繰り返す。
次に、本実施形態の第二探索部422による、上記位置情報特定処理の流れを説明する。ここでは、テーブルID順に、仮想行TPに相当するレコードが、当該テーブルに属するか否かを判別し、属する場合、その中のレコード番号を決定する。これらの判別および決定には、レコード数計算部423による計算結果を用いる。図10は、第二探索部422による本実施形態の位置情報特定処理の処理フロー例である。
まず、所属するテーブルのテーブルIDを決定する所属テーブル決定処理を行う。ここでは、テーブルID順に(ステップS1301)、i以下のテーブルが有する、値VTPに等しい値のレコードの総数AC(i)<VTP>を算出する(ステップS1302)。AC(i)は、以下の式(7)で算出する。
そして、当該テーブルiの項目値VTPに等しい値を有するレコードの中の順位が最大のレコードの、仮想統合ソートDB510内の順位POS(i)<VTP>(算出仮想行)を決定する。このPOS(i)<VTP>は、項目値VTPより小さい値のレコード総数CALTV<VTP>に、AC(i)<VTP>を加算する、以下の式(8)により得られる(ステップS1303)。
その後、算出された仮想行POS(i)<VTP>と指定された仮想行TPとの大小を比較する(ステップS1304)。その結果、POS(i)<VTP>が仮想行TP以上の場合、仮想行TPに対応するレコードの所属テーブルは、テーブルiと決定する(ステップS1305)。
ステップS1304で、算出された仮想行が指定された仮想行TPより小さい場合、次のテーブルに移り(ステップS1310)、ステップS1302に戻り、処理を繰り返す。
一方、所属テーブルiが決定すると、以下の式を用い、仮想行TPに相当するレコードの、テーブルi内のレコード番号(RecNo.)を算出するレコード番号算出処理を行う。
レコード番号算出処理では、まず、仮想統合ソートDB510の、テーブルiの項目値VTPに等しい値に属するレコードの、直前のレコードの位置を算出する(ステップS1306)。これは、POS(i−1)<VTP>である。なお、i=0のときは、CALTV<VTP>とする。
そして、テーブルi内の項目値VTPに等しい値に属するレコードの中で、仮想行TPに相当するレコードのレコード順位AAを算出する(ステップS1307)。これは、仮想行TPから、POS(i−1)<VTP>(または、CALTV<VTP>)を減算した値から、さらに1を減算したものとして得られる。
そして、SOS(i)内での順位Ordを算出する(ステップS1308)。テーブルi内の項目値VTPより小さい値に属するレコード数CLTV(i)<VTP>に、レコード順AAを加算した値が、SOS(i)の位置(順位Ord)を示す。すなわち、BB=CLTV(i)<VTP>+AAとすると、仮想行TPに相当するレコードの、SOS(i)内の位置(順位Ord)は、BBで表される。
そして、SOS(i)[BB]の要素を、レコード番号(RecNo.)として決定し(ステップS1309)、処理を終了する。
以下、本実施形態の第二探索処理を、図4および図7を用い、具体例で説明する。キー項目として<Name>、仮想行(Vrec)TPとして、5が指定されたものとする。
第二探索部422は、図7に示す着目項目がNameのインデックスファイル300にアクセスする。まず、テーブル0のVL(0)にアクセスし、例えば、順位が2の「Jemi」を仮探索値vpに抽出する。そして、レコード数計算部423により、仮想統合ソートDB510での「Jemi」の順位の範囲を得る。ここでは、[6,7]と得る。
指定された仮想行TPはこの範囲外で、より小さい値であるため、VL(0)において、仮探索値vpとして、より小さい値を抽出し直す。例えば、「Grizza」をvpとする。「Grizza」の仮想統合ソートDB510での順位の範囲として、同様に、[3、5]を得る。仮想行TPが範囲内であるため、仮仮想値vp「Grizza」を、仮想行の値VTPとする。
次に、テーブルを決定する。ここでは、まず、テーブル0までの、「Grizza」の数を算出し、2を得る。また、仮想統合ソートDB510の「Grizza」より小さい値の総数(CALTV<Grizza>)は3である。よって、テーブル0の「Grizza」の最大順位のものの、仮想統合ソートDB510における仮想行は、4となる。
仮想行TPと比較すると、算出された仮想行の方が小さいため、次のテーブル1に移行し、同様の処理を行う。テーブル1の「Grizza」の最大順位のものの、仮想統合ソートDB510における仮想行として、5を得る。これは、仮想行TP以下の値であるため、仮想行TPのレコードの所属テーブルは1と決定する。
最後に、レコード番号を決定する。仮想統合ソートDB510において、テーブル1の「Grizza」の直前のレコードの順位として、4を得る。テーブル1内の、指定仮想行TPに相当する「Grizza」の順位AAは0となる。テーブル1内で、「Grizza」より小さい値のレコード数(CLTV<Grizza>)は2であるため、SOS(1)の順位2の要素が、指定仮想行TPの「Grizza」のレコード番号となる。
なお、本実施形態では、位置情報として、所属するテーブルのテーブルIDと、レコード番号とを出力するよう構成しているが、これに限られない。例えば、各テーブルのレコード数を用い、テーブルID順に全テーブルの全レコードに、連番のレコード番号(統合レコード番号)を付与し、統合レコード番号を返すよう構成してもよい。統合レコード番号は、自身のテーブルよりテーブルIDの小さいテーブルの総レコード数を、自身のテーブルのレコード番号に加算したものとなる。
なお、上記実施形態では、複数のデータベースを探索対象とする場合を例にあげて説明したが、探索対象とするデータベース数は1つであってもよい。ただし、データベース数が1つの場合、第一探索部421および第二探索部422は、当該データベースのインデックスファイル300内のみを検索し、位置情報としてレコード番号のみを返す。
すなわち、単一データベースに対し、本実施形態のインデックスファイル300を用い、所定のデータ項目と項目値とを指定することにより当該項目値を有するレコードのレコード番号を得ることができる。また、所定のデータ項目をキー項目としてソート後のデータベースの所定の行を指定することにより、当該レコードのレコード番号を得ることができる。
また、上記実施形態では、各情報処理装置110が、インデックス作成部110および位置情報特定部420を備える場合を例にあげて説明したが、これに限られない。位置情報特定部420は、データベースを保持する情報処理装置110とは独立した情報処理装置であって、データベースを保持する各情報処理装置110とデータの送受信が可能な情報処理装置が備えていてもよい。インデックス作成部110についても同様である。この場合、位置情報特定部420を備える情報処理装置110から、所望のデータベース200およびそのインデックスファイル300を備える情報処理装置110にアクセスし、上記位置情報特定部420による処理を実行する。
また、統合し、データを探索する対象のデータベースを、ユーザが選択するよう構成してもよい。ユーザが選択する場合、ユーザに選択可能なデータベースの一覧を表示し、その中から受け付けるよう構成してもよい。
また、本実施形態において、第一探索処理を行う対象のデータ項目211および項目値212の指定は、ユーザが行うよう構成してもよい。この場合、ユーザからデータ項目211および項目値212の指定を受け付けるユーザインタフェース画面を提供するよう構成してもよい。第二探索処理も同様に、第二探索処理を行う指定仮想行TPの指示をユーザが行うよう構成してもよい。この場合、ユーザから仮想行TPの指示を受け付けるユーザインタフェース画面を提供するよう構成してもよい。
また、本実施形態の情報処理装置110は、さらに、表示制御部を備えていてもよい。表示制御部は、第一探索部421または第二探索部422が特定した位置情報に従って、当該テーブルにアクセスしてレコードを抽出し、表示装置116の表示領域に表示する。すなわち、表示制御部は、レコード抽出機能と表示機能とを実現する。
これにより、例えば、特定の項目値を指定した検索処理を実現できる。検索処理は、以下のように実現される。ユーザが指定したデータ項目211において、ユーザが指定した項目値212を有するレコードの位置情報を第一探索部421が特定する。第一探索部421が特定した位置情報に従って、表示制御部が、当該レコードを各テーブルから抽出し、表示装置116の表示領域に表示する。
また、仮想統合ソートDB510の閲覧処理を実現できる。閲覧処理は、以下のように実現される。ユーザが指定した仮想行TPを含む所定数の仮想行それぞれのレコードの位置情報を第二探索部422が特定する。ここでは、図11に示すように、表示装置116の表示領域に表示可能な行数(ここでは、L行)の仮想行の位置情報を特定する。第二探索部422が特定した位置情報に従って、表示制御部がこれらのレコードを各テーブルiから抽出し、仮想行順に表示装置116の表示領域に表示させる。例えば、スクロール操作などにより、ユーザが指定する仮想行TPが変更される毎にこの一連の処理を行い、表示を更新する。
以上説明したように、本実施形態のデータベース200は、特定のデータ項目211において項目値212が指定されると当該項目値212に属するレコードの位置情報を返し、また、仮想統合ソートDB510の仮想行TPが指定されると、当該仮想行TPの位置情報を返すインデックスファイル300を備える。そして、位置情報特定部420は、このインデックスファイル300を用いてユーザが指定するレコードを探索し、その位置情報を特定する。特に、データベース200が分散管理されていたとしても、仮想的に統合し、ソートした状態の、指定された順位のレコードの、位置情報を返すことができる。
従って、本実施形態によれば、ユーザは、データベースが単一であっても、複数のデータベースに分散管理されていても、本実施形態のインデックスファイル300により、容易に、所望のレコードを探索し、その位置情報を特定することができる。
これにより、上述のように、分散管理されているデータベースであっても、容易に、全データベースの中から、所望の値を抽出する検索処理を実現できる。さらに、容易に、全データベースを仮想的に統合し、ソートした状態での閲覧処理を実現できる。また、検索処理、閲覧処理時に仮想的な統合で済み、実際に統合する必要がないため、実際に全てのデータベースをコピーし、一元管理する必要がない。このため、コピーのための時間も不要となり、かつ、一元管理のための巨大なメモリ領域を用意する必要もない。
また、従来、大量データベースの検索に用いられていたB木等のインデックスの使用領域は、元となるデータベースのデータ量が大きくなるに従って、加速度的に増加(O(nlog(n))する。これに比べ、本実施形態のインデックスファイル300のサイズは、元のデータベースのサイズに比例的(O(n))である。このため、元のデータベースのサイズが膨大であっても、記憶領域を大幅に圧迫することがない。
また、本実施形態のインデックスファイル300を構成する各リスト内の要素には、いずれも順位(Ord)でアクセスできる。また、上記探索をインデックスファイル300の検索のみにより実現している。このため、探索のために事前分散管理されているサイト間の通信量も抑えられる。従って、レコードの探索、抽出時に通信量が増大することがない。
従って、大規模データベースであっても、また、そのデータベースが分散管理されていたとしても、大容量のデータの送受信がないため、専用の通信網を用意しなくてもよい。このため、本実施形態によれば、インターネットなどの既存のネットワークを用いて、データベースシステムを構築可能である。
また、本実施形態のインデックスファイル300は、上述のような簡易な構成であるため、データベース種を問わず、作成が可能である。このため、管理対象のデータベース種を問わず、容易に所望のデータの位置の特定および抽出が可能となる。また、検索のための事前設計も不要である。
従って、本実施形態によれば、大規模なデータベースであっても、分散管理されていても、容易に、高速に、使用環境の制約もなく、汎用のハードウェア、汎用の通信網上で、小規模サイズ、ミドルサイズのデータベースと同様に取り扱うことができる。
すなわち、本実施形態のインデックスファイル300は、非常に高速な検索を実現でき、1兆レコードに及ぶデータベースを現実的に構築できる、といった大規模性を有する。さらに、本実施形態のインデックスファイル300は、スキーマが異なるデータベース間でも通用する指標である一意のレコード番号を有するため、広域分散性を有し、互いに地球の裏側にあるようなデータベース間の連携も可能である。また、本実施形態によれば、サーバを必要としない。すなわち、クライアントのCPUを用いて検索が行われる。このため、クライアント数の増加に連れて投入されるCPU数が増え、多数のクライアントを無理なく接続することができる。また、サーバレスであるため、サーバ装置及びサーバソフトが不要で低コストでデータベースシステムを構築できる。
<<第二の実施形態>>
次に、本発明を適用する第二の実施形態を説明する。第一の実施形態とは、同機能ではあるが、異なるインデックスを用いる。
次に、本発明を適用する第二の実施形態を説明する。第一の実施形態とは、同機能ではあるが、異なるインデックスを用いる。
本実施形態のデータベースシステムは、基本的に図1に示す、第一の実施形態のデータベースシステム100と同様である。また、データベースシステム100の各装置も同様である。ただし、上述のように、インデックスファイル300が異なる。従って、情報処理装置110内の、インデックスファイル300の構成が異なるとともに、インデックス作成部410および位置情報特定部420の処理が異なる。また、適用可能なデータベース種も異なる。以下、本実施形態について、第一の実施形態と異なる構成に主眼をおいて説明する。
本実施形態の情報処理装置110の機能構成は、基本的に図5に示す第一の実施形態と同様に、インデックス作成部410と、位置情報特定部420とを備える。そして、位置情報特定部420は、第一の実施形態同様、第一探索部421と、第二探索部422と、レコード数計算部423とを備える。
本実施形態のインデックス作成部410は、第一の実施形態同様、任意の時間間隔で、表形式データ201からインデックスファイル300を作成する。例えば、所定量のデータが収集される毎に作成する。ただし、作成するインデックスファイル300が異なる。
本実施形態のインデックス作成部410が作成するインデックスファイル300について説明する。図12は、本実施形態のインデックスファイル300を説明するための図である。本実施形態のインデックス作成部410は、分散管理される全てのテーブルについて、それぞれ、以下のインデックスファイル300を作成する。また、本実施形態のインデックスファイル300も、第一の実施形態同様、表形式データ201の各データ項目211に対して作成される、1以上の要素を備える配列形式の1以上のリストである。第一の実施形態同様、インデックスファイル300を作成するデータ項目211を、着目項目と呼ぶ。
ここでは、第一の実施形態の図2(a)に示す表形式データ201から作成されるインデックスファイル300を例にあげて説明する。図12(a)は、着目項目が<Gender>の、図12(b)は、着目項目が<Name>の、図12(c)は、着目項目が<Age>の例である。これらの図に示すように、インデックスファイル300は、ソートリスト(SOS)330と、元となるテーブルの着目項目のデータにより構成されるリスト(元データリスト:ORG)340と、を備える。各リストは、要素とその位置を示す順位(Ord)とから構成される。各リストは、順位(Ord)を指定することにより、各要素を抽出することができる。また、また、リストABCの、0から始まる順位jの要素をABC[j]と示す。なお、SOS330の構成および作成手法は第一の実施形態と同様である。
また、本実施形態においても、インデックスファイル300の各リストは、テーブル毎に作成される。図13(a)および図13(b)に、着目項目が<Name>の場合の、インデックスファイル300例を示す。図13(a)がテーブル0のインデックスファイル300であり、図13(b)がテーブル1のインデックスファイル300である。
次に、本実施形態で適用可能なデータベースについて説明する。本実施形態では、インデックスファイル300として、SOS330と、ORG340とを用いる。このため、本実施形態では、第一の実施形態同様、構造化データ、半構造化データおよび非構造化データのいずれであってもよい。ただし、いずれの形式のデータベースであっても、各データ項目に格納する項目値は1つとする。
次に、本実施形態の位置情報特定部420について説明する。本実施形態の位置情報特定部420も、第一の実施形態同様、ユーザからの指示に従って、位置情報を特定する。第一探索部421は、データ項目211と所定の項目値212とが指定されたことを受け、当該データ項目211の項目値212を有するレコードを探索し、位置情報を特定する。また、第二探索部422は、ソートキー項目とするデータ項目211と仮想行(Vrec)とが指定されたことを受け、仮想統合ソートDB510の、当該仮想行(Vrec)のレコードを探索し、位置情報を返す。
まず、第一探索部421による第一探索処理を説明する。本実施形態の第一探索処理も、第一の実施形態同様、指定された値を有するレコードの位置情報を探索し、特定する。本実施形態の第一探索部421は、探索対象のデータ項目211(Target Item:TI)と項目値212(Target Value:TV)とを指定されると、テーブルID順にORG340を探索する。探索は、2分割法等の従来の探索法を用いる。
本実施形態の第一探索部421は、ヒットする毎に、第一探索結果格納領域に、当該レコードの順位(Ord)をレコード番号として、レコード番号とテーブルIDとを追加保存する。
以下、本実施形態の第一探索処理を、図13を用い、具体例で説明する。例えば、データ項目211として<Name>が、項目値212として「Sillabub」が指定されたものとする。まず、テーブル0のORG340にアクセスし、2分割法で「Sillabub」の有無を判別する。テーブル0には、この値はないため、次にテーブル1に移る。そして、テーブル1で、同様にORG340にアクセスし、順位として、1と2とを得る。これをレコード番号として、テーブルIDに対応づけて第一探索結果格納領域に格納し、最終的に出力する。
次に、本実施形態の第二探索部422の第二探索処理を説明する。本実施形態の第二探索処理も、第一の実施形態同様、ユーザからキー項目とユーザからキー項目と仮想統合ソートDB510の仮想行(Vrec)とを指定されると、該当レコードの位置情報を返す。すなわち、仮想統合ソートDB510の指定仮想行TPのレコードの、テーブルIDとレコード番号214とを特定する。
このとき、本実施形態では、テーブルID順に、ORG340にアクセスし、所定の位置(例えば、中央付近)の値を抽出し、仮の探索値(仮探索値)とし、仮探索値の、仮想統合ソートDB510における仮想行(仮仮想行)を得る。得られた仮仮想行と指定仮想行とを比較し、両者が一致するまで、探索を繰り返す。そして、一致した仮探索値の位置情報を算出する。
従って、本実施形態の第二探索処理の流れは、基本的に第一の実施形態の図9および図10に示す第二探索処理と同様である。ただし、ステップS1202における最初の仮探索値vpの決定手法、ステップS1203で仮探索値格納領域に格納する情報、および、ステップS1206における新たな仮探索値vpの決定手法が異なる。
また、本実施形態では、レコード数計算部423による、上記第二探索処理において用いる、テーブル(i)内の値xより小さい値に属するレコード数を示すCLTV(i)<x>と、同xに等しい値に属するレコード数を示すCEQV(i)<x>との算出法が第一の実施形態と異なる。本実施形態の第二探索処理の説明に先立ち、本実施形態のレコード数計算部423による上記各レコード数算出処理について説明する。
本実施形態のレコード数計算部423は、値xが指定されると、ORG(i)を探索し、テーブル(i)内の順位(Ord)を取得する。ここでは、2分割法などを用いて算出し、1つの順位(Ord)が指定されるまで、探索を行う。
ここで、値xがORG(i)内で検出されない場合、当該テーブルiのCLTV(i)<x>およびCEQV(i)<x>を、ともに0とする。
一方、1つの順位(Ord)が検出されると、SOS(i)を探索し、値xのSOS(i)内での格納範囲[e1、e2]を特定する。ここでは、検出された順位Ordxを要素に持つレコードの前後のレコードのORG(i)の要素を判別することにより決定する。
このとき、CLTV(i)<x>は、格納範囲の最小順位の値e1で得られ、CEQV(i)<x>は、格納範囲内の個数、すなわち、最大順位e2から最小順位e1を減算した値に1を足した値として得られる。
なお、第二探索処理において用いる、仮想統合DB500における、値xより小さい値に属するレコード数CALTV<x>、および、値xに等しい値に属するレコード数CAEQV<x>の算出法は、第一の実施形態と同様である。
次に、本実施形態の第二探索処理の詳細を説明する。ここでは、図9に示す、第一の実施形態の第二探索処理の処理フロー例に従って、第一の実施形態と異なる処理に主眼をおいて説明する。
ステップS1202において、本実施形態では、各テーブルiにおいて、最初の仮探索値vpを以下の手順で決定する。すなわち、まず、SOS(i)にアクセスし、所定の位置(例えば、中央付近)の要素(ElementA)を抽出する。そして、ORG340にアクセスし、要素(ElementA)を順位(Ord)に持つレコードの要素(ValueB)を抽出し、仮探索値vpとする。
また、ステップS1203において、本実施形態では、仮探索値vpと、ORG(i)における順位(Ord)と、当該仮探索値vpのSOS(i)での順位(Ord)も併せて保存する。
さらに、ステップS1206において、新たな仮探索値vpは、SOS(i)内で2分割法を行い、順次決定する。このとき、指定仮想行TPが、仮仮想行の最小値より小さい場合、現在の仮探索値vpのSOS(i)での順位と、仮探索値格納領域に既に格納されている仮探索値で、現在の仮探索値vpより小さい値の中の最大値のSOS(i)での順位と、の間で決定する。一方、指定仮想行TPが、仮仮想行の最大値より大きい場合、現在の仮探索値vpのSOS(i)での順位と、仮探索値格納領域に既に格納されている仮探索値で、現在の仮探索値vpより大きい値の中の最小値のSOS(i)での順位と、の間で決定する。
以下、本実施形態の第二探索処理の具体例を、図4および図13(a)、(b)を用いて説明する。ここでは、キー項目として<Name>、仮想行(Vrec)TPとして、5が指定されたものとする。
第二探索部422は、まず、図13(a)に示す、テーブル0の、着目項目がNameのインデックスファイル300にアクセスする。そして、SOS(0)にアクセスし、例えば、順位が3の要素0を抽出する。そして、ORG(0)にアクセスし、順位が0の要素「Jemi」を仮探索値vpとして抽出する。
そして、仮想統合ソートDB510での「Jemi」の順位の範囲を得る。ここでは、[6,7]と得る。仮想行TPはこの範囲外で、より小さい値であるため、SOS(0)において、仮探索値vpとして、より小さい順位の値を抽出し直す。例えば、順位が1の要素1を抽出し、ORG(0)にアクセスし、順位が1の要素「Grizza」を新たな仮探索値vpとする。
同様に、仮想統合ソートDB510での「Grizza」の順位の範囲として、[3、5]を得る。仮想行TPが範囲内であるため、「Grizza」を、仮想行の値VTPとする。
次に、テーブルを決定する。ここでは、まず、テーブル0までの、「Grizza」の数を算出し(CALTV<Grizza>)、2を得る。また、仮想統合ソートDB510の「Grizza」より小さい値の総数(CALTV<Grizza>)は3である。よって、テーブル0の「Grizza」の最大順位のものの、仮想統合ソートDB510における仮想行は、4となる。
仮想行TPと比較すると、算出された仮想行の方が小さいため、次のテーブル1に移行し、同様の処理を行う。テーブル1の「Grizza」の最大順位のものの、仮想統合ソートDB510における仮想行として、5を得る。これは、仮想行TP以下の値であるため、仮想行TPのレコードの所属テーブルは1と決定する。
最後に、レコード番号を決定する。仮想統合ソートDB510において、テーブル1の「Grizza」の直前のレコードの順位として、4を得る。テーブル1内の、指定仮想行TPに相当する「Grizza」の順位AAとして、0を得る。テーブル1内で、「Grizza」より小さい値のレコード数(CLTV<Grizza>)は2であるため、SOS(1)の順位2の要素が、指定仮想行TPの「Grizza」のレコード番号となる。
なお、本実施形態においても、上記実施形態では、複数のデータベースを探索対象とする場合を例にあげて説明したが、探索対象とするデータベース数は1つであってもよい。また、位置情報特定部420が、データベースを保持する情報処理装置110とは独立した情報処理装置に構築されていてもよい。さらに、第一の実施形態と同様の表示制御部を備え、検索処理、閲覧処理等を実現可能なよう構成してもよい。また、ユーザが特定対象、抽出対象とする項目値、仮想行を指定可能なインタフェース、ユーザが検索対象とするデータベースを選択可能なインタフェースを備えていてもよい。
以上説明したように、本実施形態においても、第一の実施形態と同様の効果を得ることができる。
なお、上記インデックスファイル300の構成は、上記各実施形態の構成に限られない。すなわち、元のデータベースから作成され、元のデータベースのサイズとサイズが比例的であり、かつ、所定のデータ項目と値とが与えられると、それを満たすレコードの位置情報を返すことができ、かつ、仮想的に統合し、所定のデータ項目でソートされた状態の指定された順位のレコードの、位置情報を返すことができるインデックスファイルであれば、その構成は問わない。例えば、所定の項目値の個数(0も含む)を判別可能な第一のリストと、所定のデータ項目でソート後の各レコードの順位を把握可能な第二のリストの組合せであってもよい。
100:データベースシステム、110:インデックス作成部、110:情報処理装置、111:CPU、112:メモリ、113:記憶装置、114:NWIF、115:入力装置、116:表示装置、117:外部記憶装置、120:ネットワーク、200:データベース、201:表形式データ、201s:ソート後の表形式データ、202:半構造化データ、203:半構造化データ、203:非構造化データ、204:非構造化データ、211:データ項目、212:項目値、213:レコード、214:レコード番号、215:レコード順序番号、300:インデックスファイル、310:VL、320:CAGR、330:SOS、340:ORG、410:インデックス作成部、420:位置情報特定部、421:第一探索部、422:第二探索部、423:レコード数計算部、500:仮想統合DB、501:テーブルIDとレコード番号、510:仮想統合ソートDB
Claims (13)
- 予め定めたデータ項目毎の項目値を格納するレコードからなるデータベースを管理する情報処理装置であって、
検索対象となり得る前記データ項目毎のインデックスファイルと、
前記インデックスファイルを用いて、所望の前記レコードの位置情報を特定する位置情報特定部と、を備え、
前記各レコードには、予め一意にレコード番号が付与され、
前記位置情報特定部は、前記位置情報として前記レコード番号を特定し、
前記データ項目毎のインデックスファイルは、当該データ項目の前記項目値から前記レコード番号を取得でき、かつ、当該データ項目をキー項目として前記データベースをソートしたソートデータベースの順位から前記レコード番号を取得できるものであること
を特徴とする情報処理装置。 - 請求項1記載の情報処理装置であって、
管理対象の前記データベースは複数であり、
前記各データベースには、予め一意にデータベースIDが付与され、
前記インデックスファイルは、前記データベース毎に生成され、
前記ソートデータベースは、前記複数のデータベースを仮想的に統合した仮想統合データベースを、当該データ項目をキー項目としてソートしたものであり、
前記位置情報特定部は、前記位置情報として、所望の前記レコードが属する前記データベースの前記データベースIDをさらに特定すること、
を特徴とする情報処理装置。 - 請求項1または2記載の情報処理装置であって、
前記データ項目毎のインデックスファイルは、
当該データ項目に属する一意の項目値を所定順に格納する値リストと、
前記値リストの格納順に、前記項目値毎に当該データベース中の累積レコード数を格納する累積数リストと、
前記データベースを、当該データ項目をキー項目として前記所定順にソート後の前記レコード番号の並び順を格納するソートリストと、を備えること
を特徴とする情報処理装置。 - 請求項1または2記載の情報処理装置であって、
前記データ項目毎のインデックスファイルは、
当該データベースを、当該データ項目をキー項目として所定順にソート後の前記レコード番号の並び順を格納するソートリストと、
前記データベースの、当該データ項目が備える前記項目値を、当初の並び順で格納する元データリストと、を備えること
を特徴とする情報処理装置。 - 請求項1から4いずれか1項記載の情報処理装置であって、
前記位置情報特定部は、前記データ項目毎のインデックスファイルを用い、当該データ項目の指定された項目値の位置情報を特定する第一探索部を備えること
を特徴とする情報処理装置。 - 請求項1から4いずれか1項記載の情報処理装置であって、
前記位置情報特定部は、前記データ項目毎のインデックスファイルを用い、前記ソートデータベースの、指定された位置の、前記位置情報を特定する第二探索部を備えること
を特徴とする情報処理装置。 - 請求項6記載の情報処理装置であって、
前記位置情報特定部は、前記データ項目毎の各項目値について、当該項目値より小さいレコード数および当該項目値に等しいレコード数を、前記データベース毎に算出するレコード数計算部をさらに備えること
を特徴とする情報処理装置。 - 請求項1から7いずれか1項記載の情報処理装置であって、
前記位置情報特定部が特定した位置情報に従って、前記データベースから前記所望のレコードを抽出するレコード抽出部をさらに備えること
を特徴とする情報処理装置。 - 所望のレコードの位置情報を特定する位置情報特定部を備える情報処理装置において、記憶装置に格納された、予め定めたデータ項目毎の項目値を格納するレコードからなり、前記各レコードには予め一意にレコード番号が付与されているデータベースにおける、予め定めたデータ項目であるターゲット項目の所定の項目値であるターゲット値を有するレコードの位置情報を特定するレコード位置情報特定方法であって、
前記記憶装置には、検索対象となり得る前記データ項目毎のインデックスファイルがさらに格納され、
前記インデックスファイルは、
当該データ項目に属する一意の項目値を所定順に格納する値リストと、
前記値リストの格納順に、前記項目値毎に当該データベース中の累積レコード数を格納する累積数リストと、
前記データベースを、当該データ項目をキー項目として前記所定順でソート後の前記レコード番号の並び順を格納するソートリストと、を備え、
前記ターゲット項目の前記値リストにアクセスし、当該データベースの当該ターゲット項目が、前記ターゲット値を有しているか否かを判別する有無判別ステップと、
前記有無判別ステップで有りと判別された場合、前記累積数リストと前記ソートリストとを用い、当該ターゲット値の前記レコード番号を特定し、前記位置情報とするレコード番号特定ステップと、を含むこと
を特徴とするレコード位置情報特定方法。 - 所望のレコードの位置情報を特定する位置情報特定部を備える情報処理装置において、記憶装置に格納された、予め定めたデータ項目毎の項目値を格納するレコードからなり、前記各レコードには予め一意にレコード番号が付与されているデータベースにおける、予め定めたデータ項目であるターゲット項目の所定の項目値であるターゲット値を有するレコードの位置情報を特定するレコード位置情報特定方法であって、
前記記憶装置には、検索対象となり得る前記データ項目毎のインデックスファイルがさらに格納され、
前記インデックスファイルは、
当該データベースを、当該データ項目をキー項目として所定順にソート後の前記レコード番号の並び順を格納するソートリストと、
前記データベースの、当該データ項目の前記値を、当初の並び順で格納する元データリストと、を備え、
前記ターゲット項目の前記元データリストにアクセスし、当該データベースの当該ターゲット項目が、前記ターゲット値を有しているか否かおよび有している場合、その順位を判別する有無順位判別ステップと、
前記有無順位判別ステップで有りと判別された場合、当該元データリストの前記順位を、当該ターゲット値の前記レコード番号として特定し、前記位置情報とするレコード番号特定ステップと、を含むこと
を特徴とするレコード位置情報特定方法。 - 所望のレコードの位置情報を特定する位置情報特定部を備える情報処理装置において、記憶装置に格納された、予め定めたデータ項目毎の項目値を格納するレコードからなり、前記各レコードには予め一意にレコード番号が付与されている複数のデータベースにおける、前記複数のデータベースを仮想的に統合して予め定めたデータ項目をキー項目としてソートした仮想統合ソートデータベース内の仮想的な位置であるターゲット位置のレコードの位置情報を特定するレコード位置情報特定方法であって、
前記記憶装置には、前記データベース毎の、検索対象となり得る前記データ項目毎のインデックスファイルがさらに格納され、
前記インデックスファイルは、
当該データ項目に属する一意の項目値を所定順に格納する値リストと、
前記値リストの格納順に、前記項目値毎に当該データベース中の累積レコード数を格納する累積数リストと、
前記データベースを、当該データ項目をキー項目として前記所定順でソート後の前記レコード番号の並び順を格納するソートリストと、を備え、
前記キー項目の前記値リストと前記累積数リストと前記ソートリストとを用い、前記仮想統合ソートデータベースにおける格納範囲に、前記ターゲット位置を含む探索値を決定する探索値決定ステップと、
前記キー項目の前記値リストと前記累積数リストと前記ソートリストとを用い、前記決定した探索値内で前記ターゲット位置に相当する探索値が属するテーブルと、当該テーブル内での順位とを前記位置情報として特定する位置情報特定ステップと、を含むこと
を特徴とするレコード位置情報特定方法。 - 所望のレコードの位置情報を特定する位置情報特定部を備える情報処理装置において、記憶装置に格納された、予め定めたデータ項目毎の項目値を格納するレコードからなり、前記各レコードには予め一意にレコード番号が付与されている複数のデータベースにおける、前記複数のデータベースを仮想的に統合して予め定めたデータ項目をキー項目としてソートした仮想統合ソートデータベース内の仮想的な位置であるターゲット位置のレコードの位置情報を特定するレコード位置情報特定方法であって、
前記記憶装置には、前記データベース毎の、検索対象となり得る前記データ項目毎のインデックスファイルがさらに格納され、
前記インデックスファイルは、
当該データベースを、当該データ項目をキー項目として所定順にソート後の前記レコード番号の並び順を格納するソートリストと、
前記データベースの、当該データ項目の前記値を、当初の並び順で格納する元データリストと、を備え、
前記キー項目の前記ソートリストと前記元データリストとを用い、前記仮想統合ソートデータベースにおける格納範囲に、前記ターゲット位置を含む探索値を決定する探索値決定ステップと、
前記キー項目の前記ソートリストと前記元データリストを用い、前記決定した探索値内で前記ターゲット位置に相当する探索値が属するテーブルと、当該テーブル内での順位とを前記位置情報として特定する位置情報特定ステップと、を含むこと
を特徴とするレコード位置情報特定方法。 - コンピュータを、
それぞれ、予め定めたデータ項目毎の値を格納するレコードからなり、前記各データベースの各レコードには予め一意にレコード番号が付与されている複数のデータベースから、前記各データベースが備えるインデックスファイルを用いて、所望のレコードの位置情報を特定する位置情報特定手段として機能させる情報処理プログラムであって、
前記インデックスファイルは、前記データベースそれぞれから生成され、前記データ項目毎に、当該データ項目の前記項目値から前記レコード番号を取得し、かつ、ソートデータベースの順位から前記レコード番号を取得するものであり、
前記ソートデータベースは、前記複数のデータベースを仮想的に統合した仮想統合データベースを、当該データ項目をキー項目としてソートしたものであること
を特徴とする情報処理プログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012189041A JP2015207026A (ja) | 2012-08-29 | 2012-08-29 | 情報処理装置、レコード位置情報特定方法および情報処理プログラム |
PCT/JP2013/071127 WO2014034383A1 (ja) | 2012-08-29 | 2013-08-05 | 情報処理装置、レコード位置情報特定方法および情報処理プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012189041A JP2015207026A (ja) | 2012-08-29 | 2012-08-29 | 情報処理装置、レコード位置情報特定方法および情報処理プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015207026A true JP2015207026A (ja) | 2015-11-19 |
Family
ID=50183201
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012189041A Pending JP2015207026A (ja) | 2012-08-29 | 2012-08-29 | 情報処理装置、レコード位置情報特定方法および情報処理プログラム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2015207026A (ja) |
WO (1) | WO2014034383A1 (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018051697A1 (ja) * | 2016-09-14 | 2018-03-22 | 株式会社ターボデータラボラトリー | データ統合方法、データ統合装置、データ処理システム及びコンピュータプログラム |
WO2019163610A1 (ja) * | 2018-02-21 | 2019-08-29 | 株式会社ターボデータラボラトリー | 情報処理システム及び情報処理方法 |
JP6970867B1 (ja) * | 2021-06-30 | 2021-11-24 | 株式会社インフォメックス | 検索装置、検索方法、およびプログラム |
JP6974666B1 (ja) * | 2021-08-05 | 2021-12-01 | 株式会社インフォメックス | 検索装置、検索方法、およびプログラム |
WO2023276168A1 (ja) * | 2021-06-30 | 2023-01-05 | 株式会社インフォメックス | 検索装置、検索方法、および記録媒体 |
WO2023152965A1 (ja) * | 2022-02-14 | 2023-08-17 | 晋二 古庄 | データ提供装置、データ提供方法及びプログラム |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0362239A (ja) * | 1989-07-31 | 1991-03-18 | Mitsubishi Electric Corp | ファイル入出力装置 |
JP2697559B2 (ja) * | 1993-06-25 | 1998-01-14 | 松下電器産業株式会社 | 情報検索装置 |
JPH1091644A (ja) * | 1996-09-10 | 1998-04-10 | Oki Electric Ind Co Ltd | データベース問い合わせ処理方法及び装置 |
JP4881435B2 (ja) * | 2007-06-21 | 2012-02-22 | 株式会社ターボデータラボラトリー | メモリ共有型並列処理システムにおいて表形式データを集計する方法及び装置 |
-
2012
- 2012-08-29 JP JP2012189041A patent/JP2015207026A/ja active Pending
-
2013
- 2013-08-05 WO PCT/JP2013/071127 patent/WO2014034383A1/ja active Application Filing
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018051697A1 (ja) * | 2016-09-14 | 2018-03-22 | 株式会社ターボデータラボラトリー | データ統合方法、データ統合装置、データ処理システム及びコンピュータプログラム |
JP2018045441A (ja) * | 2016-09-14 | 2018-03-22 | 株式会社ターボデータラボラトリー | データ統合方法、データ統合装置、データ処理システム及びコンピュータプログラム |
WO2019163610A1 (ja) * | 2018-02-21 | 2019-08-29 | 株式会社ターボデータラボラトリー | 情報処理システム及び情報処理方法 |
JP6970867B1 (ja) * | 2021-06-30 | 2021-11-24 | 株式会社インフォメックス | 検索装置、検索方法、およびプログラム |
WO2023276168A1 (ja) * | 2021-06-30 | 2023-01-05 | 株式会社インフォメックス | 検索装置、検索方法、および記録媒体 |
JP6974666B1 (ja) * | 2021-08-05 | 2021-12-01 | 株式会社インフォメックス | 検索装置、検索方法、およびプログラム |
WO2023152965A1 (ja) * | 2022-02-14 | 2023-08-17 | 晋二 古庄 | データ提供装置、データ提供方法及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
WO2014034383A1 (ja) | 2014-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5873935B2 (ja) | データベースの管理方法、管理計算機及び記憶媒体 | |
CN108304444B (zh) | 信息查询方法及装置 | |
WO2014034383A1 (ja) | 情報処理装置、レコード位置情報特定方法および情報処理プログラム | |
KR101443475B1 (ko) | 검색 제안 클러스터링 및 프리젠테이션 | |
JP6047017B2 (ja) | パターン抽出装置および制御方法 | |
WO2015065776A1 (en) | Enhancing search results with social labels | |
JP6390139B2 (ja) | 文書検索装置、文書検索方法、プログラム、及び、文書検索システム | |
US20110082803A1 (en) | Business flow retrieval system, business flow retrieval method and business flow retrieval program | |
US20150302036A1 (en) | Method, system and computer program for information retrieval using content algebra | |
WO2011134141A1 (en) | Method of extracting named entity | |
JP2016157290A (ja) | 文書検索装置、文書検索方法、および文書検索プログラム | |
US20180123995A1 (en) | Shared comments for visualized data | |
JPWO2007088576A1 (ja) | ファイル検索プログラム、方法及び装置 | |
JP2006178599A (ja) | 文書検索装置および方法 | |
US10275497B2 (en) | Electronic whiteboard system, search result display method of electronic whiteboard, and non-transitory computer readable medium storing program thereof | |
JP5743938B2 (ja) | 連想検索システム、連想検索サーバ及びプログラム | |
US20160092459A1 (en) | Translating a keyword search into a structured query | |
KR101823463B1 (ko) | 연구자 검색 서비스 제공 장치 및 그 방법 | |
JP6186476B2 (ja) | 情報提示装置、方法、及びプログラム | |
US20170255691A1 (en) | Information processing system, information processing method, and program | |
JP5127553B2 (ja) | 情報処理装置、情報処理方法、プログラム及び記録媒体 | |
JP5899587B2 (ja) | ファイルの検索方法、ファイル検索装置及びプログラム | |
JP2004259083A (ja) | 情報検索方法、情報検索サーバ、及び情報検索プログラム | |
JP2017072964A (ja) | 情報分析装置及び情報分析方法 | |
JP2018072873A (ja) | 情報処理装置、情報処理方法、およびプログラム |