(57)【特許請求の範囲】
【請求項１】
入力値の組から数量を算出するコンピュータシステムであり、
ｎ＝１，２，．．．ｉである第１入力値ｘｎの値列を保存するデータベースを含み、
任意の値ｎに対して、ｘｎは、上記値列においてｘｎ＋１とｘｎ−１との間にあり、
ｘｎは、
第２入力値ｙｎと、
変換アルゴリズムによりｙｎから計算される変換値ｐｎと、
ｚｎ＝ｚｎ−１＋ｐｎである出力値ｚｎとに関連付けられており、
上記データベースは、複数の前記出力値ｚｎを更に保存するように構成されており、
任意の値ｎに対して、ｘｎはさらに別の入力値ｙ´ｎ、及び、ｐｎ＝ｙｎ・ｙ´ｎと関連付けられている、
コンピュータシステム。
【請求項２】
ｘｎが時間値である、請求項１に記載のコンピュータシステム。
【請求項３】
ｘｎが数値である、請求項１又は２に記載のコンピュータシステム。
【請求項４】
ｘｎ＋１−ｘｎ＝ｘｎ−ｘｎ−１である、請求項３に記載のコンピュータシステム。
【請求項５】
ｘｎが時間値であり、ｘｎ−ｘｎ−１が０．５秒未満、より好ましくは０．１秒未満、最も好ましくは０．０５秒未満である、請求項４に記載のコンピュータシステム。
【請求項６】
ｉ＞１０００である、請求項１乃至５のいずれか１項に記載のコンピュータシステム。
【請求項７】
前記第２入力値ｙｎは、金融取引を示す変数である、請求項１乃至６のいずれか１項に記載のコンピュータシステム。
【請求項８】
コンピュータ処理により、ｎ＝ａからｎ＝ｂにわたる第１入力値ｘｎの値列の一部に対応する第２入力値ｙｎの組から数量を算出する方法であって、
請求項１に記載のデータベースから、ｎ＝ａである出力値ｚｎと、ｎ＝ｂである出力値ｚｎを抽出することを含み、
前記算出される数量は、
前記第１入力値ｘｎの値列の一部に対応する前記第２入力値ｙｎと前記別の入力値ｙ´ｎとの積の平均、
もしくは、
前記第１入力値ｘｎの値列の一部に対応する前記第２入力値ｙｎと前記別の入力値ｙ´ｎとの相関係数である、
方法。
【請求項９】
算出される数量は、
前記第１入力値ｘｎの値列の前記一部に対応する前記第２入力値ｙｎの和、
前記第１入力値ｘｎの値列の前記一部に対応する前記第２入力値ｙｎの平均、
前記第１入力値ｘｎの値列の前記一部に対応する前記第２入力値ｙｎの分散、
前記第１入力値ｘｎの値列の前記一部と、前記第１入力値ｘｎの値列の前記一部に対応する前記第２入力値ｙｎの値列との間の距離、
もしくは、
前記第２入力値ｙｎと、前記第１入力値ｘｎの値列の前記一部に対応する前記第１入力
値ｘｎとの相関係数、
である、請求項８に記載の方法。
【請求項１０】
前記出力値をさらに抽出する工程と同時に実施される、前記データベースから追加値を抽出する工程をさらに含み、前記追加値は後の計算に使用されるキャッシュ内に保存される、請求項８又は９に記載の方法。
【請求項１１】
前記更なる出力値と前記追加値とで出力値ｚｎの値列の部分列が形成される、請求項１０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、財務データを保存するデータベースに関し、特に、コンピュータ処理によるデータベース作成方法、データベースへのデータ保存方法、及び／又はデータベースに保存されたデータの操作方法に関する。
【０００２】
さらに、本発明は、データベースからデータを取得し、及び／又はそれを評価するためのコンピュータ処理によるクエリ・メカニズムに関し、特に、データベースに保存された一連の数値から最小値や最大値を取得するためのクエリ・メカニズムに関する。
【背景技術】
【０００３】
データベースとは、例えば、コンピュータシステム内においてデータを関連付けて保存するための構造であり、その用途に応じて様々なデータベース・アーキテクチャが存在する。汎用データベースは主に、対応するアプリケーションに関するデータ入力やデータ検索を管理・支援するために利用される。近年の傾向としては、特定のアプリケーションドメインと連動するために最適化された専門データベース・アーキテクチャが出現している。
【０００４】
複合イベント処理（Complex Event Processing:ＣＥＰ）とは、例えば、財務データなどの現実のイベントデータに対して低遅延フィルタリング、関連付け、集計、及び／又は演算を行うための技術である。上記データは、通常、高頻度で生成されるため、リアルタイム及び後の段階の何れに関わらず、データの評価を可能とするために適切なデータベースに保存する必要がある。汎用データベースが扱える量をはるかに上回る膨大な量の上記データを保存するための特殊なデータベース製品がいくつか出現している。
【０００５】
ＣＥＰアプリケーションにおいて利用可能であって、ＣＥＰデータを操作する様々な機能を提供する製品を表１に示す。
【表１】
0005892937.tif 000002
【０００６】
これらの製品は、その基礎となるデータベース技術と処理能力の両方を向上させることを目的としているが、データ保存やデータのクエリ・検索はまだ従来の処理により行われている。これらのデータベースは、従来のトランザクション指向動作を実行するのに適してはいるが、標準的なクエリ方法以外で、それぞれ大容量である隣接データにアクセスし、及び／又はそれを評価可能とする効率的手段を提供するものではない。
【０００７】
上述したそれぞれ大容量の隣接データに対する要求は、個別レコードの重要性が全体的な記述より低い記述統計の提供に関係している。今や記述統計は、特に高頻度・大容量データ・アプリケーションに対してますます重要になってきている。
【０００８】
複数の大容量の隣接データセットの評価処理は、統計的記述データの要求へ対応する際の核心である。
【０００９】
金融サービスコミュニティは、データ提供者と顧客から構成される。データ提供者は、大口法人顧客（例えば、銀行）と小口顧客（例えば、一般投資家）の両方と取引する。大口顧客との取引は、直接又は第三者ベンダー（例えば、Ｖｈａｙｕ）を介して行われ、高度かつ正確な統計的変数の構築を可能とするために、あらゆる市場データを顧客に提供する。しかしながら、これを小口顧客に対して行うことは、市場への全量供給に必要な大伝送容量や演算要件に関連するコストにより、現時点では不可能である。従って、小口顧客は市場のスナップショットや概要しか与えられないため、変数の概算しか可能とはならない。
【００１０】
さらに、データベースに保存された一連の値において最小値又は最大値を決める場合、その最小／最大値の位置及び／又は度合いを判定するには、一般的に、そのデータ列におけるすべてのレコードを検索し評価しなければならない。
【００１１】
そのため、上記処理では、データセット検索の際のＩ／Ｏバスの使用及び／又はネットワーク帯域の使用、及び、データセットの評価に必要な演算に関する費用がかさむ。これら費用は、要求されたデータ列の数値が増えるにつれて増大する。
【００１２】
特に、比較実験は、多くのデータ列を検索・評価するのに費用がかかるため、非常に高額となることもある。
【発明の概要】
【００１３】
第１の態様において、本発明は、保存データのより効率的な操作を可能とするため、保存データの中間記述を作成するよう構成されたデータ保存用データベースを提供する。
【００１４】
つまり、本発明の第１の態様によると、ｎ＝１，２，．．．ｉである第１入力値ｘｎの値列を保存するように構成されているデータベースであって、任意の値ｎに対して、ｘｎは、上記値列においてｘｎ＋１とｘｎ−１との間にあり、ｘｎは、
第２入力値ｙｎと、
変換アルゴリズムによりｙｎから計算される変換値ｐｎと、
ｚｎ＝ｚｎ−１＋ｐｎである出力値ｚｎとに関連付けられており、
さらに、複数の出力値ｚｎを保存するように構成されたデータベースが提供される。
【００１５】
上記データベースは、入力値群から数量を計算するコンピュータシステムの一部である。
【００１６】
第１入力値ｘｎは、一般的には数値であり、通常は時間値である。
【００１７】
第２入力値ｙｎは、金融取引を記述する変数、例えば、取引の価格や数量であってよい。
【００１８】
変換値ｐｎは、ｙｎに等しい値であってもよい。この場合、データベースに保存された出力値ｚｎは、１からｎまでのすべての第２入力値ｙｎの累計値となる。あるいは、出力値ｚｎは、例えば、
0005892937.tif 000003
もしくは、第２入力値ｙｎの異なる関数ｐｎの累計値であってもよい。
【００１９】
第２入力値ｙｎ（例えば、株価）が出力値ｚｎ内に累積的に保存されたデータベースを提供することで、データベースは、第２入力値を中間的に、すなわち、事前に計算した又は部分的に処理された形で保存する。これは、本発明の第１態様のデータベースから記述データを生成するのに必要となる処理量は、データがそのまま未処理の形で保存される従来のデータベースの場合と比べて少ないことを意味する。
【００２０】
第２の態様において、本発明は、コンピュータ処理による、ｎ＝ａからｎ＝ｂにわたる第１入力値ｘｎの値列の一部に対応する第２入力値ｙｎの組から数量を算出する方法を提供する。上記算出方法には、本発明の第１の態様に係るデータベースから、少なくともｎ＝ｂである出力値ｚｎを抽出する工程が含まれる。
【００２１】
一般的に、本発明の第２の態様の方法には、データベースから、ｎ＝ａである出力値ｚｎをさらに抽出する工程も含まれる。
【００２２】
本発明の第２の態様の方法を本発明の第１の態様に係るデータベースと共に用いることで、通常、データベースから注目するデータ列の終わりに対応する出力値ｚｂを検索し、また、任意で注目するデータ列の始まりに対応する出力値ｚａを検索することで、表２に示す数量を算出することが可能となる。
【表２】
0005892937.tif 000004
【００２３】
従って、本発明の第２の態様の方法によると、本発明の第１の態様に係るデータベースからわずか２つの出力値を検索するだけで隣接データ列に関連するある範囲の記述統計を生成することができる。これにより、通常、注目するデータ列内のすべてのデータ値を検索しなければならない従来のデータベースを使用する場合と比べて、検索にかかる費用が削減される。故に、Ｉ／Ｏバスの使用及び／又はネットワーク帯域の利用に関連するコストは、従来のデータ評価方法に比べて、本発明の第２の態様の方法の方が低くなる傾向がある。本発明の第２の態様の方法に関連する計算コストも、従来の方法に比べて低くなる傾向がある。
【００２４】
本発明の第２の態様の方法に関連する計算コストの削減は、特に金融分野に関係する。本発明の第２の態様の方法は、市場データのすべてのエンドユーザ（大口法人顧客、一般投資家などの小口顧客にかかわらず）が、たとえ市場供給全体にアクセスできなくても、必要に応じて高精度かつ複雑な記述変数を生成することを可能にする。これは、顧客にはごく少量のデータを送信すればよく、顧客は最低限の計算を行えばよいからである。
【００２５】
同じデータ系列に関連する複数の要求がなされた場合、本発明の第１の態様に係るデータベースのセットアップコストは迅速に償却されることとなる。本発明の第１の態様に係るデータベースは、効果的にデータ記述の大部分を保存データ自体に埋め込むことを可能にし、それにより、本発明の第２の態様の方法を用いてデータベースに対する問い合わせを行った場合の要求単位の全体コストが削減される。
【００２６】
本発明の第１の態様に係るデータベースにより記述統計を行うのにかかるコストは、一般的に、注目するデータ列のサイズへの依存度が低い。これは、記述統計を行うのにかかるコストが注目するデータ列のサイズに概ね比例する従来のデータベースとは対照的である。
【００２７】
本発明の第１の態様に係るデータベースでは、記述統計を行うのにかかるコストが削減されることで、比較実験、例えば、２つの異なる期間にわたる株価の変動など、２つの注目するデータ列の比較にかかるコストも削減されている。
【００２８】
本発明の第１の態様に係るデータベースと本発明の第２の態様の方法を併用することで、効果的に埋め込み総和演算子を有する任意の記述統計を実現することが可能となる。
【００２９】
本発明の第１の態様における変換値ｐｎは、複数の生データ値から算出される非常に複雑な変数であってもよい。例えば、変換値ｐｎは、ユーザの要求に応じて計算に用いられる出力値ｚｎに含まれる、部分的に処理された入力変数を提供する専用指数であってもよい。
【００３０】
このように非常に複雑な変数または専用指数を事前に計算することで、ユーザクエリに応じてデータベースから検索されるデータ量を低減し、各クエリに応じて実施する計算の工程数を減らすことが可能となる。特に、事前に算出された変数は、他のユーザクエリに応答するのに再利用することができ、それによって全体効率が向上する。
【００３１】
事前に算出された変数の計算に用いられる生データ値には、静的又は動的に重み付けが行われてもよい。つまり、各生データ値は、事前に算出された変数を構築する際にある特定の重みを割り当ててもよいし（静的重み付け）、その重みは時間によって変化してもよい（すなわち、各レコードに対して更新されてもよい）。
【００３２】
動的重み付けの場合、各重み付け変数（又は指数）は、その生成コストが高いため、ユーザクエリに応じて数回再利用可能な事前に作成された指数を提供することにより特に大きくコストが削減される。
【００３３】
金融分野での利用を例にとった場合、複数の測定値の複素関数である変換値ｐｎを提供するという概念は、株価の市場資本化重み付け指数を構築するのに用いることができ、その指数における各株式の重みは、その変化する市場資本化に基づいて変化し得る。このような指数の利用によっては、各個別要求に対する指数構築にかかるデータコストと計算コストの双方において、劇的なコスト削減をもたらすこともある。
【００３４】
データを事前計算することで（複素変数である変換値ｐｎを得るため）、記述の記述であると考えられるより複雑でマルチレベルな作業を実行することも可能となる。更なる金融分野での利用の例としては、それぞれ市場資本化に応じて重み付けされた株式群に基づいて、複数の指数（例えば、事業会社指数や電気通信会社指数）を構築することが挙げられる。こうすることで、指数（もしくは個々の企業や指数さえも）異なるサブセットへと一体化し、それらの動向を監視することが可能となる。
【００３５】
一般に、本発明の第１の態様に係るデータベースは、第１入力値の値列に沿って、ｘｎ＋１−ｘｎ＝ｘｎ−ｘｎ−１となるような等間隔であるｘ値（第１入力変数）を保存するよう構成されている。
【００３６】
通常、ｘｎが時間値の場合、連続する時間値同士の間隔は、０．５秒未満、より好ましくは０．１秒未満、最も好ましくは０．０５秒未満である。
【００３７】
また、概して、データベースは、例えば、１０００以上のレコード、より好ましくは１００００以上のレコードを含む第１値列を保存するよう構成されている。
【００３８】
本発明の第１の態様に係るデータベースは、従来のデータベースを適合させたものであってもよい。
【００３９】
多くのアプリケーション（例えば、金融データの分析）では、絶え間なく増え続ける時系列データが利用されている。この場合、最新の部分列に最も一致するデータ部分列を履歴から見つけ出すことを目的とすることもある。多くの場合、このような検索処理は、異なる部分列の長さ及び／又は位置に対して繰り返し行う必要がある。データが従来のデータベースに保存されると、各検索処理を、そのデータベースに入力された生データから、また新たに開始しなければならない。
【００４０】
しかしながら、一致する部分列を照合する処理には、多くの場合、２つの個別部分列の対応するレコード間の距離を測定する工程と、その後これらの距離の測定値を合計して最終的な照合結果を得る工程とが含まれることが分かっている。この演算には埋め込み総和演算子を用いるので、本発明の第２の態様の方法と共に、本発明の第１の態様に係る適切に構成されたデータベースにより実行してもよい。
【００４１】
すなわち、場合によっては、関数ｐｎが、ｙｎと他の第２入力値間の距離の関数であることもある。その距離は、通常、ユークリッド距離であるが、マハラノビス距離などの別の距離測度であってもよい。
【００４２】
従って、本発明の第１の態様に係るデータベースは、例えば、最近のデータ列と過去のデータ列との間の距離の累積測定値を算出・保存するよう構成されていてもよい。このように、最近のデータ列の部分列と、過去のデータ列の対応する部分列との間の距離は、部分列の始まりと終わりにおける累積距離測定値から算出してもよい。
【００４３】
上記応用例に本発明を利用する利点は、データベース内の対応するすべての部分列ではなく、部分列の始まりと終わりとの差のみを用いて、要求されたすべての部分列のサイズのマッチングが容易に行うことができるということである。これにより、すべての要求に対する個々のレコード間の距離測定にかかる費用が大幅に削減されることとなる。
【００４４】
距離の累積値をデータベースに保存するのに相当な数の作業を実行しなければならないかもしれないが、事前計算されたデータからはたった２つのレコードを検索すればいいだけなので、各要求当たりの検索・計算コストは低い。よって、データベースの構築に係るコストは、処理された要求数と共に迅速に償却されることとなる。
【００４５】
また、場合によっては、変換値ｐｎは、第１入力値ｘｎに関連する第２入力値ｙｎと別の入力値ｙ´ｎの両方の値の関数である場合もある。例えば、ｐｎ＝（ｙ´ｎ・ｙｎ）である場合もある。この場合、本発明の第２の態様の方法と本発明の第１の態様に係るデータベースとを併用して、ユーザが注目している第１入力値ｘｎの値列の一部に対応する第２入力値ｙｎと上記別の入力値ｙ´ｎとの相関関係を判定してもよい。
【００４６】
本発明の第２の態様の方法によれば、本発明の第１の態様に係るデータベースからのデータ要求は、要求されたデータの期間の始点と終点をフェッチすることで構成されている。待ち時間のためにフェッチ／検索処理を行うのに費用がかかる場合（例えば、データベースへのアクセスが要求されなければならない場合、又は、データがネットワークを介してフェッチされなければならない場合）、更なるフェッチ作業に対する待ち時間オーバーヘッドを解消するために、データを事前にフェッチし、キャッシング時の時間局所性を利用することは有益である。
【００４７】
従って、本発明の第２の態様の方法は、注目する値に隣接している値をさらにデータベースから抽出する工程をさらに含むよう構成されてもよい。そして、これらの値は、後の計算で使用されてもよい。
【００４８】
複数のデータ値検索にかかる待ち時間コストは、単一の値検索にかかるコストとほぼ同等であるため、複数の値検索にかかる全体コストは、各値を一つずつ検索するのにかかるコストよりも低くなる。通常、上記さらに抽出された値は、必要に応じて、それらが抽出され得るキャッシュに、低待ち時間コストで保存される。
【００４９】
都合の良いことに、一回のフェッチ作業で検索された複数のデータ値は、連続したデータ部分列である。このことは、本発明の第２の態様の方法を適用することに関連する削減効率を向上させる。
【００５０】
本発明の第２の態様の方法は、本発明の第１の態様に係るデータベースと併用することで、送金などの銀行業務の監視や、特に、異常行為の発見に有利になることもある。
【００５１】
不正行為として顕著なものは、普通の行動の中に紛れるために、規模は小さいが期間的に長い行動が長期間にわたって行われることがある。本発明の第１の態様に係るデータベースと共に本発明の第２の態様の方法を用いることで、複数の平均値を監視し、不正行為の証拠となり得る相対的変化を発見することが可能となる。
【００５２】
例えば、直近の１時間の平均値に相当する過去５時間での送金の平均値は、正常なアクティビティを示す一方、直近の１時間の平均値の上昇は、不正行為の可能性を示唆している。事前に監視すべき平均値の正確なパラメータや組み合わせが分からないため、幅広い範囲の値を調べなければならない。様々な要求に速やかにかつ容易に対応することができれば、この処理を非常に円滑に行うことができる。この手法は、異常アクティビティを過去の正常アクティビティの判別に基づき検索する、様々な検出アプリケーション、例えば、取引監視などにも適用可能である。
【００５３】
このアプリケーションの延長として、複数の異なる大きさの平均値を並行してリアルタイムに監視することもできる。このように、別の平均サイズに対しても、過去の実験に基づく評価を容易かつ効率的に行うことも可能である。これらはいずれも、本発明の第１の態様に係るデータベースと共に本発明の第２の態様の方法を用いた費用効率が高い処理が直接もたらした結果である。
【００５４】
一般的に、大量のデータ（１０００以上のレコード、通常は１０，０００以上のレコード）を保存するデータベースでは、ユーザが個別のレコードにアクセスすることは困難である。
【００５５】
また、データベースのユーザは、通常、主にデータベースの最新のレコードに注目している。
【００５６】
従って、第３の態様において、本発明は、コンピュータ処理により、時間依存変数の過去値を保存するため、時間ｔにおいてデータベースをコンパイルする方法であって、時間ｔから遡って測定された一連の所定時間間隔に対応する時間依存変数の値の組を選択する工程を含む方法を提供してもよい。
【００５７】
上記データベースは、本発明の第１の態様に係るデータベースであってもよいが、それは必須ではない。
【００５８】
通常、最近入力されたレコードの時間間隔は、それより古いレコードの時間間隔よりも接近した間隔で配置されている。その結果、データベースには、最新データが高粒度で、もっと以前のデータが低粒度で保存される。
【００５９】
例えば、１秒当たりのデータスループットが高く、流動性が高い金融市場の場合、本発明の第３の態様のデータベースを用いることで、保存され、後にユーザに送られるデータ量を削減することができる。このデータをユーザが直感的に１／１０００秒単位で使っているなら、主な関心は最新データにあるが、より長い時間間隔（つまり、毎分や毎時）に関心のあるユーザなら、通常、１／１０００秒といったデータ精度は必要ない。このように、本発明の第３の態様によれば、様々な顧客の要求を、そのニーズ（及び／又は制約）に応じてより効率的に処理することができる。これにより、ユーザが要求するものを送るだけで送信された全データ量が低減され、その結果、必要なネットワーク帯域や保存コストが削減される。
【００６０】
相互に関連付けられた複数のデータ列（本発明の第１の態様に係るデータベースなど、ただしこれに限定されるものではない）を保存するデータベースでは、一般的に、ソート処理が行われ、保存データ内の相対的変化が監視されている。例えば、データベースには、一連の金融商品に対して特定の市場指標が保存されてもよく、その市場指標の相対値によりデータソートを行ってもよい。市場指標値の変化に伴い、さらにソート処理を実行してデータベースの更新を行う必要がある。
【００６１】
同様に、データベースを用いて、例えば、最新データ列と過去データ列とのパターンマッチングの範囲を決定する場合、異なるマッチング結果に対して、例えば、最新データ列に完全に一致する過去データ列を求めるソートを行ってもよい（このようなパターンマッチングは、本発明の第２の態様の方法と本発明の第１の態様のデータベースを併用することで実行されてもよいが、従来のデータベース及び方法を利用してもよい）。
【００６２】
しかしながら、上記ソート処理は、計算コストの観点から費用がかかることもある。従って、第４の態様において、本発明は、コンピュータ処理により、所定のソート基準によりデータセットをソートする方法であって、データセットをトラバースして、データセットの値の中で、所定ソート基準に従う順序通りとなっていない値があるかどうかを判定する工程と、もし順序通りとなっていない値がある場合、必要に応じて前記所定ソート基準によりデータセットをソートする工程とを含む方法を提供してもよい。
【００６３】
これにより、データベースのソートにかかる計算コストは、データセットの値が順序通りとなっていない場合にのみ発生することとなる。データセットの値が順序正しく並んでいる場合、発生するコストは、これを決定するデータをトラバースするのにかかるコストのみとなる。
【００６４】
上記方法は、データ（例えば、金融商品の市場指標）の変動が少ない場合などに特に効果を奏する。この場合、ソート処理が必要とされることはほとんどなく、上記方法によって、不要なソート処理が行われるのを回避することができ、総計算コストを削減することができる。
【００６５】
上記方法は、特に、ソート順を決定するデータセットの値が、複数の測定データ値の関数として決定される計算値である場合に効果を奏する。そのような計算値は、通常、１つの測定データ値の変化にあまり影響を受けないため、変動性が低い。これは、特に、上記値が長期間にわたって蓄積されたデータから算出される場合に言えることである。
【００６６】
上記計算値は、以下のいずれかの値であってもよい。  
ａ）測定データ値の平均値、
ｂ）測定データ値の和、
ｃ）測定データ値の最大値又は最小値、
ｄ）測定データ値の標準偏差
【００６７】
また、本願には、ユーザが特に注目している特定のデータ列の最大値及び／又は最小値をより効率よく特定することを可能とするため、保存データの中間記述を作成するよう構成されたデータ保存用データベースが開示されている。
【００６８】
データ列の最小値及び／又は最大値の特定は、例えば、ある一定期間の株価の範囲（すなわち、最大値と最小値の差）が、一般の株価や市場の変動を示唆するものである、例えば、金融分野での利用において有用となることがある。従って、低計算コストで、効率的かつ効果的な処理により、例えば、異なる期間の株価の最大値及び／又は最小値を特定可能なことは有益である。
【００６９】
また、データ列の最小値及び／又は最大値の特定は、データ列の異常値の特定においても有用である。これは、例えば、不正行為の発見に特に重要である。例えば、株価の最大値及び／又は最小値と、その株価の正常価格変動とを比較することで、異常な挙動が見つかる場合がある。そのような処理には、評価（例えば、株価の正常挙動の状況を確立する、又は、実際の不正行為の発見）に長い期間を費やさなければならず、計算コストを許容範囲に抑えるためには、最大値及び／又は最小値を効率的に特定しなければならない。
【００７０】
そのため、第５の態様において、本発明は、
（ｉ）値列を保存し、
（ｉｉ）値列の最小値及び／又は最大値を特定し、
（ｉｉｉ）少なくとも第１部分列の値と該第１部分列の値の直後に追随する第２部分列の値を決定するように構成されたデータベースを提供する。このデータベースにおいて、第１部分列と第２部分列の境界は、値列の最小値又は最大値の位置に配置されている。
【００７１】
上記データベースは、値列のある特定の部分列の最小値及び／又は最大値を決定するのに用いられるコンピュータシステムに備えられている。
【００７２】
上記「追随する」という用語は、データベースに保存されたデータ列の方向性を示すためのものである。データ列の方向性は、通常、データ列の各値がデータベースに入力される順序により定められている。そのため、新しく入力された値は、通常、前に入力された値に「追随する」ものと考えられる。そして、第２部分列の値は、第１部分列の値よりも最近にデータベースに入力されたものである。
【００７３】
そのようなデータベースの応用例の多くでは、保存されたデータ列によって、パラメータの経時変化が示されている。従って、この場合、パラメータの最新値は、その値列に沿った古い値に「追随する」こととなる。
【００７４】
本発明の第５の態様のデータベースは、保存データセット内の値からなる少なくとも２つの部分列を決定するよう構成されており、その２つの部分列の境界は、上記値列の最大値又は最小値の位置に置かれている。
【００７５】
このように、データベースのユーザは、自身が決定する特定のデータ列の最大値又は最小値を特定しようとする場合、少なくとも最初のステップとして、その特定のデータ列が上記２つの部分列の境界に延びているかどうかを判定し、それにより、データベース全体の最大値又は最小値がその特定データ列に含まれているかどうかを判別することができる。これにより、ユーザはデータ列全体を検索・評価すつ必要がなくなり、クエリに関連する検索・計算コストの削減が図られる。
【００７６】
従って、第６の態様において、本発明は、コンピュータ処理により、ユーザが決定する特定のデータ列の最小値及び／又は最大値を決定する方法であって、
（ｉ）本発明の第５の態様に係るデータベースを提供する工程と、
（ｉｉ）特定のデータ列が、第１、第２部分列まで及ぶものかどうかを判定する工程と、
（ｉｉｉ）特定のデータ列が、第１、第２部分列まで及ぶものである場合に、第１、第２部分列の境界にある値を抽出する工程とを具備する方法を提供する。
【００７７】
通常、データベースに保存されているデータは、さらに部分列へと分けられ、隣接する部分列の境界には、極大値又は極小値が存在する。そのため、本発明の第５の態様のデータベースが保存データ列の最小値を特定する場合、このデータベースは、
（ｉ）第１部分列に追随する値の最小値に対応する極小値を特定し、
（ｉｉ）第２部分列の値の直後に追随する値からなる第３部分列（第２、第３部分列の境界は前記極小値の位置に配置される）を決定し、
（ｉｉｉ）ｎ＝２である第ｎ部分列に追随する値の最小値に対応する更なる極小値を特定し、
（ｉｖ）第（ｎ＋１）部分列の値の直後に追随する値からなる第（ｎ＋２）部分列（第（ｎ＋１）、第（ｎ＋２）部分列の境界は更なる極小値の位置に配置される）を決定し、
（ｖ）ｎ＝ｋまでのｎのすべての整数値（ｎ＝ｋでは、隣接する部分列の境界を決める極小値はもはや存在しない）に対して工程（ｉｉｉ）と（ｉｖ）を繰り返すように構成されている。
【００７８】
本発明の第５の態様のデータベースが保存データ列の最大値を特定するよう構成されている場合、データベースは、同様の方法で、極小値によって境界される部分列へとさらに分割される。
【００７９】
通常、第３部分列のデータ値はそれぞれ、第１、第２部分列の境界にある最小値又は最大値に対応するラベルを備えている。
【００８０】
上記分割された部分列のいずれかのデータ値にも、同様に、部分列とそれに追随する部分列の境界にある極小値又は極大値に対応するラベルが付与されていてもよい。このように、直近の境界値（最小値又は最大値）までのすべての部分列に対してラベル付けが行われる。この場合、最終部分列のデータ値（すなわち、直近の境界値の後に来るデータ値）にもラベル付けが行われることが好ましい。また、最終部分列のデータ値には、それぞれ、そのレコードの値に対応するラベルが付与されていることが好ましい。
【００８１】
上記「直近」や「最終」といった用語は、データベースの方向性をあらわすものであって、「最後の」境界値とは、最も新しく入力されたデータと関連付けられた境界値、例えば、通常、ｋ番目と（ｋ＋１）番目の部分列の境界値を指すものである。同様に、「最終」部分列とは、データベースに保存されたデータ列に最も新しく入力されたデータを含む部分列を指すものである。
【００８２】
このようにしてデータベースのレコードにラベル付けがなされた後、本発明の第６の態様の方法により、特定のデータ列の最大値又は最小値が決定されてもよい。この場合、特定のデータ列は、通常、データベースの値列の終点に対応する終点を有し、特定データ列の最小値又は最大値が、データ列の始点の位置にある値のラベルを読み出すことで決定される。
【００８３】
このように、本発明の第６の態様の方法によれば、１つのデータ値を読み出すことで、特定データ列の最小値又は最大値を決定することができる。そして、ユーザがこの分析を行うのにかかるコストは、そのデータ値を読み出すコストのみとなる。
【００８４】
従来のデータベースでは、最小値又は最大値が決定されるまで、データ列のすべての値を読み出し、分析する必要があり、ユーザが負担する読出し・計算コストが高くなってしまう。
【００８５】
一方、本発明の第６の態様の方法を本発明の第５の態様のデータベースと共に用いることで、ユーザがデータベースに保存されたデータ列の分析に必要とするＩ／Ｏバスの使用及び／又はネットワーク帯域の大幅な削減が図られる。
【００８６】
従って、本発明によれば、データベースに保存されたデータの中間記述を生成し、ユーザがこの中間記述にアクセス可能とすることで、ユーザが、計算コストをあまりかけずに、データベースに対してクエリを実行したり、データベースに保存されたデータを評価したりすることが可能となる。
【００８７】
上記「始点」と「終点」は、データベースの方向性と関連し、通常、「終点」はデータ列の最新入力レコードを指し、「始点」は前回入力されたレコードを指す。
【００８８】
本発明の第６の態様の方法は、思考のみを駆使してデータ列の最大値及び／又は最小値を特定するような人にとっては容易に利用できないという点で、やや直感的でない方法であると言える。そのような、作業支援にコンピュータを利用しない人は、データ列のデータ値をスキャンするだけで最大値又は最小値を特定しようとしがちで、本発明の第６の態様の方法のような複雑で直感的でない方法を使いたがらない。
【００８９】
しかしながら、データ列をスキャンして（思考プロセスのみ、又は、コンピュータ処理方法の一部を介して）最大値又は最小値を特定する従来の方法は、大量のデータを評価するのに適していない。このような場合、本発明の第６の態様の方法による、より複雑で直感的でない工程によって、上記処理が記述手段を用いた実施に容易に適用でき、大量のデータを素早く効率的に評価することが可能となる。
【００９０】
本発明の特定の実施形態において、本発明の第５の態様のデータベースは、保存データ列に関して、ある特定のデータ列の最小値の特定を容易にする第１中間記述と、ある特定のデータ列の最大値の特定を容易にする第２中間記述との２つの中間記述を生成するように構成されていてもよい。
【００９１】
また、データベースは、パラメータの経時変化を示すデータを保存するよう構成されていてもよい。このパラメータは、例えば、金融取引を示すパラメータであってもよい。パラメータは、通常、０．５秒未満、より好ましくは０．１秒未満、最も好ましくは０．０５秒未満の時間間隔で測定される。
【００９２】
さらに、データベースは、通常、１０００個以上の値を有するデータ列を保存するよう構成されている。
【００９３】
［利用分野］
本発明は、時間的に変化する予測不能な長さで高速で次々と入ってくるデータストリームを含むアプリケーションにおいて有用である。従来のＤＢＭＳの手法は、そのメモリが限られているため、連続的なクエリや処理に加えて、高速の連続的なデータの取り込みが求められる場合には不向きである［M. Kontaki, A. N. Papadopoulos, Y. Manolopoulos, スライディングウィンドウによる時系列ストリーミングにおける適応類似性検索、Data & Knowledge Engineering、第６３巻２号（２００７年１１月）、第４７８〜５０２頁］。また、そのようなデータに対して標準的な解析的分析を試みる際に生じる更なる問題としては、１度又は限られた回数でのみ読み込むことができるデータストリームの連続的かつ予測不能な動作のために、ランダム・アクセスを実現することができないということがある［P. Tsai、スライディングウィンドウモデルを使った、データストリームに対するトップＫ個の頻出閉アイテムセットのマイニング、アプリケーションを有するエキスパートシステム：国際ジャーナル、第３７巻１０号（２０１０年１０月）、第６９６８〜６９７３頁］。これには、複数回データスキャンをする必要のないレンジクエリに対して迅速に回答できるよう改良された解析方法が必要となる。
【００９４】
［クエリタイプ］
本発明のメカニズムは、連続するデータ・アプリケーションに必要な以下のクエリタイプを実行可能である。［F. Buccafurri, G. Lax、効率的レンジクエリのための巡回的ツリー状ヒストグラムによるスライディングウィンドウの近似、Data & Knowledge Engineering、第６９巻９号（２０１０年９月）、第９７９〜９９７頁］
１．ポイントクエリ：データストリームのｋ番目のデータポイントを返す。  
２．レンジクエリ：集合データを所定時間間隔内に返す。  
３．類似クエリ：類似パターンがデータストリーム内に生じるかどうかに関して、真値を返す。［P. Capitani, P. Ciaccia、データストリームに対するタイムワーピング、Data & Knowledge Engineering、第６２巻３号（２００７年９月）、第４３８〜４５８頁］
【００９５】
［利用例］
［金融］
［市場の透明性］
金融市場当局がその参加者に対して公平で透明性のある市場を確保することへの要求が高まっている。取引量が増加するにつれ（市場によっては１日当たり何百ギガバイトにも上る）、すべての参加者へのデータ発信がますます難しくなる。そのようなデータへのフルアクセスを得る経済的余裕があるのは、機関投資家や大口投資家に限られている。このこと自体、膨大なデータを受け取る余裕のない小口投資家からすれば、透明性の大きな問題となっている。取引データのみならず、オーダー動向や従来とは異なる実行情報などの、より精度の高いデータの必要となると、問題は一層深刻となる。本発明は、すべての参加者に正確な集合データを提示可能とするため、カスタマイズ可能なウィンドウサイズのメカニズムにより参加者が所望のデータを選択可能とする。これはいくつかの利点をもたらす。まず、計算は、累積データ保存時に一度しか行われない。その後ユーザは必要なデータ範囲を要求し、開始及び終端データのみを受領するが、これにより要求は満たされる。従って計算量が大幅に抑えられる。特に計算量の上限がデータ生成時に制限されるため、ユーザ数や要求が多くなった場合有効である。また、要求されたデータ範囲の境界のみをユーザに送ることで帯域が大幅に縮小し、データ領域要求に係わらず効果的に通信コストが制限される。第３に、顕著な計算または帯域のオーバーヘッドがなくカスタムデータ範囲を抽出可能なため、大量のリアルタイム分析及び実験を同時進行させることができる。第４に、参加者がデータクエリの全てを、全データを送ることなく実行できるため、当局のデータがより不正に使用、移転されにくくなる。最後に、本発明は、通常高値で売られるティックデータを個別に全て開示することなく、全体的に全ての参加者にとって市場を透明化する手段を提供する。
【００９６】
［電気通信］
［ネットワークトラフィックモニタリング］
ネットワーク利用の最適化は、ルーターやスイッチキューの管理に依存する［E. Hernandez-Orallo, J. Vila-Carbo、ヒストグラムに基づくトラフィックモデルを使ったネットワークキューやロスの解析、Computer Communications、第３３巻２号（２０１０年２月）、第１９０〜２０１頁］、［S.K.Tanbeer、C.F.Ahmed、B.Jeong、Y.Lee、データストリームに対するスライディングウィンドウに基づく頻出パターンマイニング、Information Sciences、第１７９巻２２７号、２００９年１１月、第３８４３〜３８６５頁］。一般的には、ネットワークのモデリングでは、キューの利用に関する情報の決定を目的として、トラフィックを所定のサービスレートで限られたサイズのキューへと入力する。そして、平均値や変動値を連続的に決定する必要がある上記トラフィックをカスタム分布やモデルによりモデリングする。ネットワークサイズの増大に伴い、生成されるデータ量やその結果生じる計算量が増大し、個別のユーザニーズに合わせたレポートを作成することがますます難しくなっている。本発明は、この問題に対し、以下の３つの点で貢献することができる。  
１．現時点での一定期間監視レポート（例えば、２４時間ごとに更新）をユーザに送る。これは、各ユーザに対し、それぞれ個別の要求に基づいてカスタムレポートを作成するのが困難なためである。本発明は、データの事前計算や保存を可能にし、そのようなデータはその後ユーザがカスタムレポートを作成するのに利用される。これにより、各ユーザにかかるカスタム計算の必要性が削減される。  
２．統計的計算は、累計的計算へと容易に変形可能であり、これによって、求められる範囲の終点データアイテムを送ればいいので、ユーザ１人当たりのデータ量や帯域使用を最小限に抑えることができる。  
３．全データセットではなく、ユーザ要求に関するデータのみを送ればいいので、プロバイダーに対するデータセキュリティーが向上する。
【００９７】
［侵入検出］
データサーバー内の情報は、ネットワークを介した攻撃から保護されなければならない［H. Li, S. Lee、効率的なウィンドウスライディング方法を使った、データストリームに対する頻出アイテムセットのマイニング、Expert Systems with Applications、第３６巻２号、第１部、２００９年３月、第１４６６〜１４７７頁］、［W. Wang, X. Guan, X. Zhang、異常な侵入をリアルタイムで検出するための、膨大な監査ストリームの処理、Computer Communications、第３１巻１号（２００８年１月）、第５８〜７２ページ］。基本的な２つの手法としては、事前に保存された原型的攻撃との照合により不当な挙動を検出するシグネチャベース検出と、一般ユーザのプロフィールを保存し、許容できない逸脱を攻撃の可能性として特定する異常検出とが挙げられる。シグネチャベースの方法は、所定のシグネチャ一式に対する距離をリアルタイムで記録する本発明の距離測定メカニズムを利用する場合に利用可能である。本発明独自の利点としては、完全なシグネチャに対する距離だけでなく、シグネチャのサブセットに対する距離を求めることも可能である。これにより、時間のかかる距離の再計算を必要とせずに、実験やテストを速やかに行うことが可能となる。また、異常検出には、データサブセットに対する計算が可能という点でも有効である。これは、従来の方法と比較して、更なる計算を必要とせず、帯域コストを大幅に削減しながら、複数の期間の同時測定が可能な自動校正方法に特に適している。
【００９８】
［エンジニアリング］
［コンクリート構造体］
高いコンクリート構造体のための質量ダンピングシステムの性能をトラックし、そのダンピングの向上や安全性維持を図るため、監視技術が使用される［J. M. W. Brownjohn, E. P. Carden, C. R. Goddard, G. Oudin、１８３ｍの強化コンクリート製煙突のための同調質量ダンパーシステムのリアルタイム性能モニタリング、Journal of Wind Engineering and Industrial Aerodynamics、第８巻３号、２０１０年３月、第１６９〜１７９頁］。加速度計が構造体に接続され、遠隔監視されることで、構造体の変位が臨界閾値を超えているかどうかを判別するためのリアルタイムな情報が得られる。この監視技術を何百や何千といった構造体に対して大規模に使用するには、すべてのユーザが必要な監視タスクを同時に行うことができるよう、本発明のような統一されたデータ管理システムが必要となる。一度計算すれば何度も使える方法では、複数の自動システムにより、様々なサイズのウィンドウとデータの組み合わせを介して、様々な現象を効率的に監視できる。また、累積データ保存構造が必要とするのは低帯域であるため、オーバーヘッド通信コストをほとんど必要とせずに、遠く離れた場所を監視することができる。
【００９９】
［掘削の最適化］
作業の安全性基準を維持しながら、掘削処理を最適化し、コストを最小限に抑えることを目的とする。これは、採掘された累積フィート長に基づき、全体の貫通率が最大となるように、作業の間中掘削処理を検査し続けることで実現される。ドリルヘッドの利用を最大限に引き上げるか、ドリルヘッドの損傷によるプロジェクト停止時間や、新しい部品の交換・発注に関連するリードタイムを最小限に抑えるか、という根本的な判断が必要となる。ビット重量や回転速度などの複数の変数を分析し続け、そのようなデータを数学モデルに適用し、掘削プロジェクトの進行を妨げずにビットヘッド利用を最大化することができるよう、可能な限り判断は引き伸ばされる。これは、作業進行にしたがって、異なる地質の層を掘削したり、掘削速度を変更したり、モデルのリアルタイムキャリブレーションを行う場合に重要であり、当初の方針にかかわらず総合的解析を確実に行うことを可能にする。また、最初のデータを用いていくつかの異なるモデルを同時に評価することが可能となる。さらに、必要となるのが低帯域であることは、アナリストを送ることが難しく、また大規模帯域通信チャネルを得るにはあまりにもコストがかかるような、遠く、厳しい環境にて掘削を行う場合に特に重要である。
【０１００】
［科学的データ解析］
［地震予知］
早期警戒装置は、様々な振動の異なる伝搬速度に基づいて、大規模な地震が到達する前に、直前警報を発することができる。この応用の特徴としては、値を得るためほぼ瞬間的処理を必要とする大量な連続データを使うという点である。測定センターは、地震到達前の検出時間を延ばすため、近隣センターからの測定値も利用することができる。これは、各測定装置により得られるデータ量が膨大なため、最大のセンター以外の他のセンターにとってはあまりに費用がかかりすぎる。しかしながら、本発明をデータ保存のバックボーンとして利用することで、何百、何千の近隣センターが、本発明の低帯域を活用して、データを共有できる。また、スライディングウィンドウの異なるサイズに対して計算オーバーヘッドが極わずかであることは、様々なサイズの偏差を検出するために、あらゆるレベルの検出が同時に実行可能であることを意味している。このことは、多数の候補となるモデルが同時に機械テストされ応用されうるため、実験において重要である。
【０１０１】
［熱帯大気海洋］
現場環境センサーは、監視する環境に物理的に位置し、その時系列データは単一のデータリポジトリに連続的に送信される［D. J. Hill, B. S. Minsker、環境センサーのデータストリームにおける異常検出：データ駆動モデリング手法、Environmental Modeling & Software、第２５巻９号、２０１０年９月、第１０１４〜１０２２頁］。過去のパターンから大きく逸脱する異常データの検出及び特定には、自動的なデータ品質の保証と管理が必要である。このような異常検出は、異常データが更なる調査を必要とすることもある現象を示す適応モニタリングの分野においても利用することができる。本発明は、カスタム可能なスライディングウィンドウメカニズムによりデータ保証テストを同時に行うことができる主要なデータ保管場所として利用することができ、それにより品質モニタリングをさらに高度化することができる。また、計算コストを増やさずに、同じメカニズムで複数の異常な現象を同時に検出したり、検出方法に直接変更を加えたりすることができる。他の利点としては、低帯域データ送信メカニズムにより、通信にわずかに投資したのみの他の遠距離のユーザのデータ要求にも応じることが可能となる。
【発明を実施するための形態】
【０１０２】
以下の説明及び実施例１〜８において、本発明の第１の態様に係るデータベースが、データ保存やユーザクエリに応じた情報提供を行うために、どのように構成され、利用されているのかを示す。
【０１０３】
第１実施形態では、時間値列を保存するデータベースが提供される。各時間値は、それと関連する変数ｙの値列の１つの値を有する。変数ｙは、例えば、価格や出来高などの金融取引を示す変数であってもよい。
【０１０４】
上記時間値は、最も古い値から最も新しい値までが順番にかつ等間隔に並べられている。例えば、連続する時間値同士の差は、０．５秒、０．１秒、又は、０．０５秒であってもよい。
【０１０５】
データベースは、そのような時間値を１０００個以上保存するよう構成されている。
【０１０６】
第１実施形態において、データベースには、上記ｙ変数の累積値、すなわち、第１時間値から第ｎ時間値までの期間に対応するｙ変数の和
0005892937.tif 000005
も保存されている。従って、各時間値ｎは、それと関連付けられた、最も古い時間値からもっと新しい時間値まで記録されたｙ変数の和を有する。
【０１０７】
これにより、時間ａから時間ｂまでの期間に対応する変数ｙの総量（すなわち、
0005892937.tif 000006
）が、時間（ｂ）におけるsigma(y)から時間（ａ）におけるsigma(y)を引くことで算出できる。
【０１０８】
そのため、ユーザは、データベースから２つのデータ点sigma(y(a))、sigma(y(b))を検索し、一方の値から他方の値を減算する処理を一回行うことで、ある一定期間にデータベースに追加された変数ｙの累計を計算することが可能である。
【０１０９】
時間ａから時間ｂまでの期間における変数ｙの平均を計算するには、sigma(y(b))からsigma(y(a))を減算し、その計算結果を、時間ａから時間ｂにわたる部分列の値の数で除算する必要がある。そのため、ユーザは、減算処理と除算処理を各一回ずつ行わなければならない。
【０１１０】
比較例では、従来のデータベースを使って、ある一定期間にそのデータベースに追加された変数ｙの累計を計算するには、その期間内にデータベースに追加された変数ｙのすべての値をデータベースから検索し、それらの値の合計を出す必要がある。
【０１１１】
同様に、別の比較例では、従来のデータベースに保存された値の平均は、それらの値をすべて検索し、加算し、全値数で割ることで得られる。
【０１１２】
本発明の第１の態様のその他の実施形態では、１からｎまでの各期間に対する変数ｙｎの関数の累計値がデータベースに保存されてもよい。例えば、データベースには、ｙ２の累計値が保存されてもよい。これにより、例えば、変数ｙの分散を以下の式から求めることができる。  
0005892937.tif 000007
【０１１３】
従って、データベースから４つの値、すなわち、時間＝ａに対してsigma（ｙ２）とsigma（ｙ）、時間＝ｂに対してsigma（ｙ２）とsigma（ｙ）を読み出すことで、時間ａから時間ｂまでの期間における変数ｙの分散を求められる。
【０１１４】
本発明の別の実施形態では、データベースには、更なる入力変数ｙ´の列が保存されており、各ｙ´値は、時間値列内の１つの時間値と関連付けられている。
【０１１５】
この場合、データベースにおいて、上記更なる入力変数ｙ´は、［ｙ´・ｙ］の累計値の形で保存されてもよい。つまり、データベースには、最も古い時間値から第ｎ時間値までの各時間値に対して、［ｙ´・ｙ］の累計値
0005892937.tif 000008
が保存されている。こうして、時間ａから時間ｂまでの注目する期間にわたる変数ｙ、ｙ´の相関係数を以下の式から求めることができる。
【０１１６】
0005892937.tif 000009
【０１１７】
［実施例１］データ保存
変数ｙの累計値が保存されている、本発明の第１の態様の第１実施形態に係るデータベースを例にとって考えてみると、データベースの構築コストは、（従来のデータベースの比較例と比べて）以下のように設定されている。  
新しいレコードの追加コスト＝新しいレコードを過去のすべてのレコードの合計に追加するのにかかる計算コスト＋新しい累積レコードの保存にかかる保存コスト
従来のデータベースの場合、新しいレコードの追加コスト＝追加の１レコードを保存するのにかかる保存コスト（計算コストなし）
保存コストとは、レコードをネットワークメモリ（ネットワーク帯域の使用も含む）に送信するのにかかるコストのことである。  
計算コストとは、所望のフォーマットへと数学的に操作するのにかかるコストのことである。
【０１１８】
従って、本発明の第１実施形態におけるデータ保存には、（従来のデータベースの比較例と比べて）新しいレコードを過去のすべてのレコードの合計に追加するのにかかる計算コストがさらにかかる。累計値のサイズが生データよりも大きいため、第１実施形態の保存コストは、従来のデータベースにかかるコストよりもわずかに高くなる。例えば、２桁の数字（例えば、生データ値）が一定の状態で１００秒間累積された場合、結果として、４桁の数字がデータベースに保存されることとなる。
【０１１９】
［実施例２］データ操作
本実施例では、本発明の第１の態様の第１実施形態に係るデータベースから、データレコード列の平均が求められる。
【０１２０】
それには以下の工程が必要となる。  
１．列の始まりと終わりからデータレコードを読み出す工程（読み出しコスト＝２回のフェッチ処理）
２．終了レコード値から開始レコード値を減算する工程（計算コスト＝１回の減算処理）
３．データサイズによる除算を行う工程（計算コスト＝１回の除算処理）
【０１２１】
従来のデータベースの場合、上記処理を行うには以下の工程が必要となる。  
１．注目する列のすべてのデータレコードを読み出す工程（読み出しコスト＝ｎ回のフェッチ処理）
２．読み出されたすべてのレコードの総和を求める工程（計算コスト＝（ｎ−１）回の加算工程）
３．データサイズによる除算を行う工程（計算コスト＝１回の除算処理）
【０１２２】
従って、本発明の第１の態様の第１実施形態に係るデータベースでは、保存データの平均を求める際の読み出しコスト、及び、計算を行う際の計算コストが大幅に低減されることとなる。一般的には、このようなデータ操作にかかるコストの低減によって、データ保存に関連する若干高めの単発コストが相殺される傾向がある。これは、要求が連続的に繰り返されている場合に顕著である。例えば、直近の１００個のデータレコードの平均を求め、新しいレコードの入力毎にこの値を更新するために、本発明の第１実施形態に係るデータベースに対してクエリが行われた場合、従来の方法と比較して、計算コストや読み出しコストの節約を実現することで、第１平均値計算後の事前計算オーバーヘッドコストが克服されることとなる。また、直近の２００個のデータレコードの平均をカバーするために要求が変更された場合、コストは増加しない。
【０１２３】
［実施例３］出来高加重平均価格の計算
株式の出来高加重平均価格（vwap）は、全取引金額を全取引高で割ることで求められる。取引の金額は、取引高と価格の積である。
【０１２４】
本発明の第１の態様の第２実施形態に係るデータベースでは、累計出来高と金額（出来高と価格の積）が時間関数として保存されている。この場合、以下の工程によりvwapを算出できる。  
１．注目する列の始まりと終わりから金額レコードを読み出す工程（読み出しコスト＝２回のフェッチ処理）
２．終了レコードから開始レコードを減算する工程（計算コスト＝１回の減算処理）
３．注目する列の始まりと終わりから出来高レコードを読み出す工程（読み出しコスト＝２回のフェッチ処理）
４．終了レコードから開始レコードを減算する工程（計算コスト＝１回の減算処理）
５．工程２で得られた値を工程４で得られた値で除算する工程（計算コスト＝１回の除算処理）
従って、vwapの総計算コストは、４回のフェッチ処理と、２回の減算処理と、１回の除算処理となる。
【０１２５】
従来のデータベースの場合、上記処理を行うには以下の工程が必要となる。  
１．注目する列のすべての金額レコードを読み出す工程
２．工程１で得られたすべてのレコードの総和を求める工程
３．注目する列のすべての出来高データレコードを読み出す工程
４．工程３で得られたすべてのレコードの総和を求める工程
５．工程２で得られた値を工程４で得られた値で除算する工程
従って、比較例としては、従来のデータベースによりvwapを算出するのにかかる総データコストは、２×ｎ回のフェッチ処理（ｎは注目するデータ列の値数）と、２×（ｎ−１）回の加算処理と、１回の除算処理となる。
【０１２６】
［実施例４］パターンマッチング
第３実施形態では、本発明の第１の態様のデータベースは６つの期間を有し、各期間は１〜５のラベルが付された５つのレコード列で構成されている。このデータベースは、異なる期間から対応するレコード間のユークリッド距離を保存するよう構成されている。ユークリッド距離は、以下の式により累積された形で保存されている。  
0005892937.tif 000010
ここで、ｒはレコードの数、ＴＡは第１期間、ＴＢは第２期間である。
【０１２７】
このように、データベースには、期間ＴＡと期間ＴＢそれぞれの第１レコード間のユークリッド距離が保存されている。また、データベースには、期間ＴＡとＴＢそれぞれの第１レコード間とそれらの期間それぞれの第２レコード間のユークリッド距離の和も保存されている。同様に、データベースには、上記期間の第１〜第３レコード、第１〜第４レコード、第１〜第５レコードを対象とする累積値がさらに保存されている。
【０１２８】
さらに同様に、データベースには、他の期間の対応するレコード間の距離に対応する累積距離値も保存されている。
【０１２９】
異なる期間の対応するレコード部分列間のユークリッド距離は、以下の式により求められる。  
0005892937.tif 000011
ここで、部分列はレコードｐからｑまでにわたる。
【０１３０】
このように、異なる期間における２つの対応する部分列間のユークリッド距離は、保存された累積距離値から速やかに算出することもできる。
【０１３１】
累積距離値は、データベースに保存され、後続の要求に対して再利用されてもよい。
【０１３２】
従って、異なる期間における２つの対応する部分列間の距離を求める要求があった場合に行わなければならない処理は以下の通りである。  
１．注目する部分列の開始と終了、２つの注目する期間に対応する累積距離値をフェッチする処理
２．部分列の終了における累積値から部分列の開始における累積値を減算する処理
３．２つの累積値間の差の平方根を計算する処理
【０１３３】
一方、従来のデータベースを用いた比較例では、２つの部分列間の距離は、ユーザの要求に応じて、データベースに保存された生データから直接計算される。よって、ユーザの要求があった場合に行わなければならない処理は以下の通りである。  
１．２ｎ個（ｎは部分列の長さ）のレコードをフェッチする処理
２．ｎ回の減算処理（異なる期間の部分列から対応するレコードを用いて行われる）
３．ｎ回の乗算処理（差の２乗を求めるため）
４．（ｎ−１）回の加算処理
５．１回の平方根処理
【０１３４】
このように、本実施例では、ユーザ要求によって生じるデータ検索・計算コストを、従来のデータベースを使った比較例に比べて、大幅に削減することができる。注目する部分列が長いほどコストは削減される。
【０１３５】
本発明の第１の態様の実施形態によれば、注目する期間（通常、最近の期間）と、他の少し離れた期間との間で、注目する期間とぴったり一致する過去の期間を見つけ出すためのパターンマッチングを行うこともできる。
【０１３６】
この場合、注目する部分列と、各注目する過去期間の対応部分列との間のユークリッド距離が計算される。その後、ソート処理により、注目する期間の部分列からのユークリッド距離が最短の過去データ部分列を特定する。
【０１３７】
本発明の第１の態様の本実施形態では、データベースへのデータ入力の際、累積ユークリッド距離を計算・保存するのに相当な数の処理を行わなければならないことが分かる。しかしながら、ここで保存されたデータの再利用が可能なため、要求当たりのオーバーヘッドは、要求数の増加と共に減少する。
【０１３８】
［実施例５］データのプリフェッチング
通常、本発明の第２の態様に係る方法により行われるデータ要求は、要求されたデータ期間の始点と終点をフェッチする処理から構成されている。待ち時間のためにフェッチ処理に費用がかかる場合（データベースへのアクセス時、ネットワークを介したフェッチング時など）、更なるフェッチ作業に対する待ち時間オーバーヘッドを解消し、キャッシング時の時間局所性を利用するために、データをプリフェッチすることは有益である。
【０１３９】
本実施例では、以下の場合を通じてプリフェッチングの概念を説明する。現在、連続的なリアルタイム要求の最中で、現時刻は時間１０５であるとする。この要求には、データベースの更新時に１０個の最新の累積値の開始と終わりをフェッチする処理が含まれ、例えば、その１０個の最新の測定値を求めることができる。
【０１４０】
本発明の第２の態様に係る方法の実施形態では、データベースＡから第１終了累積値をフェッチする時（時間９６に対応する）、例えば、時間１００に対応する累積値までのすべての累積値もフェッチされ、ローカルキャッシュＢに保存される。それらの累積値は、時間１０６や１０７などの累積値でデータベースが更新される際、必要に応じてキャッシュから読み出され、後続の要求に応じて利用される。
【０１４１】
データベースＡからの累積値の読み出しコストがα、キャッシュＢからの累積値の読み出しコストがβである。
【０１４２】
ここで、表３に、データベースの更新毎に連続的な要求に対するフェッチ／読み出し処理にかかるコストを示す。
【表３】
0005892937.tif 000012
【０１４３】
表３には、第１要求の受領時に、時間９６〜１００の累積値が、データベースＡからコストαでフェッチされ、キャッシュＢに保存される様子が示されている。その後、累積値９６はキャッシュＢからコストβでフェッチされ、累積値１０５はデータベースＡからコストαでフェッチされる。これらの２つの累積値は、この場合、時間９６から１０５までの測定レコードの平均を計算するのに利用される。
【０１４４】
そして、データベース更新後、時間１０６の最新の累積値を求めるため次の計算がおこなわれる。この値は、データベースＡからコストαで読み出され、終了値９７はキャッシュＢからコストβで読み出される。
【０１４５】
この処理を、キャッシュに保存された値がなくなるまで、もしくは、ユーザからの計算要求がなくなるまで繰り返す。
【０１４６】
この実施例では、データベース更新時の列の開始値と終了値を求めるためにかかる総読み出し／フェッチングコストは、６α＋５βとなる。
【０１４７】
一方で、本発明の第２の態様の方法が上記のようなやり方で適用されない場合、５つの列の開始・終了値をフェッチするのにかかる総読出コストは、１０αとなる（つまり、１０個の開始・終了値をそれぞれデータベースＡからフェッチしなければならない）。
【０１４８】
データベースからのデータフェッチにかかる待ち時間コストαが、キャッシュからのデータフェッチにかかる待ち時間コストβよりもはるかに大きいと仮定すると、上記のようなプリフェッチングによって連続的な要求に対する全待ち時間コストが大幅に削減されることとなる。
【０１４９】
［実施例６］様々な粒度を有するデータベースの構築
本発明の第３の態様に係る本実施形態では、受け取ったデータはすべて一次データベースに保存される。また、以下の（ｉ）又は（ｉｉ）の時刻から遡って測定された所定の時間間隔に対応するレコードを保存する二次データベースも構築される。  
（ｉ）データベースの最新更新時刻
（ｉｉ）現在時刻
【０１５０】
時間間隔が最新更新時刻から遡って測定されたものである場合、二次データベースは、新しいレコードが入力されるたびに更新される。一方、時間間隔が現在時刻から遡って測定されたものである場合、二次データベースは、例えば、毎秒更新される。
【０１５１】
一例を挙げれば、二次データベースには、最新の更新より５秒、３０秒、５分、３０分、２時間遡ったレコードが保存される。このようにして、二次データベースには、最新データに関連する多数のレコードと、過去データに関連する少数のレコードが保存される。つまり、最新データの方が、過去データよりもデータベースの粒度が大きいということになる。
【０１５２】
考え得る二次データベースの構造としては、所定の割合のデータが高粒度で与えられ、その残りが低粒度で与えられる。例えば、合計６００分（１０時間）の期間に得られたデータを例にとった場合、その期間にレコードされたデータは、以下の表４に示すように保存されてもよい。
【表４】
0005892937.tif 000013
【０１５３】
この例では、二次データベースに必要な保存領域は、すべてのデータが１／１０００秒の粒度で保存される一次データベースに必要な保存領域の約５％にすぎない。
【０１５４】
［実施例７］条件付きソート
本実施例では、データベースには、金融商品に関連するデータ、例えば、各金融商品の市場指標が保存され、データは市場指標の値によってソートされる。市場指標が更新されると、データ値の順序がバラバラになってしまうため、データベースの再ソートを行う必要がある。
【０１５５】
本発明の第４の態様に係る本実施形態によれば、データソートは以下のアルゴリズムによって実行される。  
for i= 2 to n
if x[i] < x[i-1]
sort_instruments
return
ここで、ｉは金融商品、ｘ［ｉ］はその金融商品の市場指標である。
【０１５６】
このようなデータベースの再ソートは、市場指標による金融商品の順序が狂っている場合にのみ実行される。そのため、再ソート処理にかかる計算コストは、データの順序が狂っている場合に限られ、それ以外の場合では、データのトラバースにかかるコストのみが発生する。
【０１５７】
例えば、データベースは、１０個の金融商品に関連する市場指標を保存するよう構成されてもよい。その場合、市場指標は毎秒更新されるが、データは市場指標の５分平均に基づいてソートされる。この場合、データベースを１秒ごと（市場指標の更新時）にトラバースして、値がまだ順番通りに並んでいるかどうかを判定し、値の順番が狂っている場合にのみデータの再ソートを行う。５分平均は変動が小さいため、データの再ソートはほとんど必要なく、それによりソート処理にかかる計算コストが削減されることとなる。
【０１５８】
データベースの操作にかかる全計算コストは、条件付きソートアルゴリズムを用いた場合、データベースの値が更新されるたびにソートがおこなわれる従来のソート処理と比較して、最大５０％の削減が可能であることが、これまでの実験から分かっている。
【０１５９】
［実施例８］市場指標
本発明の第１の態様に係るデータベースは、一般に入手可能な生データから完全なオーダーブックを作り上げることで得られる記述金融指標を生成するのに利用されてもよい。
【０１６０】
本実施例では、データベースは、一般的な金融指標の生成に用いられる金額、出来高、売買、価格、利益、利益の二乗、利益×指標などのデータの種類を提供するためのものである。本実施例のデータベースの利点としては、あまりに大量で重要ではないため、これまであまり関心を持たれなかった取引やオーダーブック更新から抽出されたその他の非典型的な変数を提供するのに用いられ得ることである。これら変数が一定期間にまたがる統計的尺度で表されるデータベースの集合的性質から、変数を個別に見たのでは得られないような意義深い知見を得ることができる。典型的な変数は詳細に分解され、例えば実行された取引は以下のように分解される。売り／買い取引により実行された正常／非公開／例外である。オーダーブック変更により保留中のオーダーを以下のように分解できる。それぞれのオーダーブック価格レベルに係わるビッド側／アスク側の追加／削除、またはそれらの任意の組み合わせである。取引／オーダーはその後典型的でない金融指標の特定に用いられてもよい。
【０１６１】
オーダーブック合成の処理を以下に示す。
【０１６２】
［レベルＩＩ更新によるレベルＩＩＩ（完全オーダーブック）の合成］
通常、レベルＩＩＩは、マーケットメーカーや専門家だけが入手可能なデータであるが、以下の手法により、より一般的に入手可能なレベルＩＩデータメッセージを用いて合成することができる。  
0005892937.tif 000014
【０１６３】
メッセージ・フォーマット
表５のデータフィールドは、合成処理への入力として入手可能で、本書に含まれる金融指標を生成するのに必要な最低限の情報量を示すものとする。
【表５】
0005892937.tif 000015
【表６】
0005892937.tif 000016
【０１６４】
表６のすべての表（inputTR_tableを除く）及びリストは、ビッド側とアスク側の両方に存在する。
【０１６５】
上記処理には、市場のメッセージを用いて記入された入力オーダーブックの合成結果として、完全オーダーブックに対して一連の表及びリストを維持する工程が含まれる。
【０１６６】
0005892937.tif 000017
【０１６７】
処理１
本処理は、オーダーブックの動きとして、入力メッセージの分類が行われた際に開始され、メッセージを最新inputOB_table（レベルＩＩ）に組み込む工程と、最新fullOB_table（レベルＩＩＩ）と比較する工程と、新tempOB_table（レベルＩＩＩ）とchange_listを生成する工程とから構成されている。その後tempOB_tableが最新のfullOB_tableとなり、change_listは取引メッセージに利用可能となる。
【０１６８】
以下の４ステップアルゴリズムを実行することで、inputOB_tableとfullOB_tableとの比較と、必要な変更とが行われる。なお、アルゴリズムのすべての工程は、初期の価格マッチに応じてアスク／ビッドの表やリストに適用可能である。表／リスト／ポインタへのその後の変更は、一致する側に対して行われる。
【０１６９】
削除された価格
最新メッセージは、古い価格レベルがオーダーブックから削除されていることを示す。  
［状態］
price(fullOB_table, fullOB_pointer) > price(inputOB_table, inputOB_pointer)（ビッド側）
price(fullOB_table, fullOB_pointer) < price(inputOB_table, inputOB_pointer)（アスク側）
又は
inputOB_pointer → end 及びinputOB_pointer < level2_size
［更新］
追加  change_listへ[price(fullOB_table, fullOB_pointer), -vol(fullOB_table, fullOB_pointer)]
増分  fullOB_pointer
【０１７０】
追加された価格
最新メッセージは、新しい価格レベルがオーダーブックに追加されていることを示す。  
［状態］
price(fullOB_table, fullOB_pointer) < price(inputOB_table, inputOB_pointer)（ビッド側）
price(fullOB_table, fullOB_pointer) > price(inputOB_table, inputOB_pointer)（アスク側）
又は
fullOB_pointer → end（又はempty）
［更新］
追加  tempOB_listへ[price(inputOB_table, inputOB_pointer), vol(inputOB_table, inputOB_pointer)]
追加  change_listへ[price(inputOB_table, inputOB_pointer), vol(inputOB_table, inputOB_pointer)]
増分  inputOB_pointer
【０１７１】
同じ価格
最新メッセージは、オーダーブックの現価格レベルに影響を与えない。  
［状態］
price(fullOB_table, fullOB_pointer) = price(inputOB_table, inputOB_pointer)
［更新］
追加  tempOB_listへ[price(inputOB_table, inputOB_pointer), vol(inputOB_table, inputOB_pointer)]
追加  change_listへ[price(inputOB_table, inputOB_pointer), Δvol(inputOB_table, inputOB_pointer)]
増分  fullOB_pointer
増分  inputOB_pointer
両ポインタがオーダーブック表の最高価格を指している場合、市場状態を「オープン」に更新。
【０１７２】
価格下落
現在level2_sizeより低い価格レベル
［状態］
inputOB_pointer > level2_size
［更新］
追加  tempOB_listへ[price(fullOB_table, fullOB_pointer), vol(fullOB_table, fullOB_pointer)]
増分  fullOB_pointer
価格レベルは、レベル２サイズの限界を超えた場合に変更される可能性があり、戻ってきたときに完全に正確なものではないこともある。
【０１７３】
処理２
本処理は、取引として、入力メッセージの分類が行われた際に開始される。本処理では、入力メッセージがinputTR_tableに変換され、最新change_listに対する一致や変更処理が行われる。change_listは、すべての取引やオーダーブックの動向の要約であり、金融指標生成のための主な入力ソースである。
【０１７４】
アルゴリズムは、inputTR_tableのマッチングを行うことで、以下に示すその他の状態要件の他に、シーケンス番号が最も近いマッチをchange_listから探し出す。なお、アルゴリズムのすべての工程は、初期の価格マッチに応じてアスク／ビッドリストに適用可能である。リストへのその後の変更は、一致する側に対して行われる。
【０１７５】
正常
［状態］
vol(inputTR_table) = vol(change_list)
price(inputTR_table) = price(change_list)
又は
市場状態＝オープン
［更新］
正常取引として、change_listに(price, vol)をマーク
市場状態がオープンの場合、最高レベルでの最小ビッド／アスク数量を決定し、取引総数がその最小数量に等しくなるまですべての取引に対するループとマークを行う。
【０１７６】
非公開
［状態］
price(inputTR_table) = price(change_list)
vol(inputTR_table) > vol(change_list)
［更新］
非公開取引として、change_listに(price, vol)をマーク
未分類
［状態］
price(inputTR_table) = price(change_list)
vol(inputTR_table) < vol(change_list)
［更新］
非公開取引として、change_listに(price, vol)をマーク
なお、取引メッセージを受信しないとオーダーブックの動向状態が判別できないため、その動向が取引であるかどうかの判定には遅延が存在する。これは、上記情報の交換処理の方法が直接の原因となっている。
【０１７７】
［記述的金融指標］
金融指標は、｛データ種類、動作、動作種類｝の３個の要素から構成されている。表７、表８には、各要素が示すものが簡単に説明されている。なお、オーダーとは、取引済みオーダー（実行済み）や未決オーダー（オーダーブックに待機中）を示してもよい。
【表７】
0005892937.tif 000018
【表８】
0005892937.tif 000019
【表９】
0005892937.tif 000020
【０１７８】
データ種類には、所望の動作や動作種類に応じて、表１０に示す選択基準を満たす特定の期間内の単一商品に対する全オーダーが含まれている。
【表１０】
0005892937.tif 000021
【０１７９】
一例を挙げれば、｛金額、保留、ビッド｝は、価格合計×ある特定の商品に対してまだオーダーブックのビッド側で保留中の全オーダー量を示し、待機中購入オーダーを示している。
【０１８０】
ある期間中（例えば、１秒間）に生じた変化を蓄積し、前述の金融指標によってそれらを要約することは有利である。なぜなら、そのようなデータを閲覧する一般ユーザは、いかなる場合にも、実際に１秒以下で生じる変化をモニタすることはできないからである。その結果、ユーザへの配信の際、データコストが大幅に削減されることとなる（そのようなコストは、帯域幅コスト以外にＩ／Ｏコストであることがある）。
【０１８１】
以下の説明及び実施例には、本発明の第５、第６の態様に関し、特定データ列の最小値をより簡単に特定できるよう、データベースをどのように適応させることができるかが示されている。特定データ列の最大値も同様に特定可能である。データベースの構築やクエリに用いられるアルゴリズムを以下に示す。
【０１８２】
簡潔にするために、以下に示す実施例は、最大でも２０個までの値を有する、比較的短いデータ列に関するものである。しかしながら、技術手段の使用により特に効果的なデータ列評価を可能とする以下の処理の原則は、非常に大きなデータ列にも容易に適用可能なことは明らかである。
【０１８３】
コンピュータシステムのデータベース形成部に保存されたサンプルデータ列をはじめ、データ列のレコードの中間記述を生成し、注目する部分列の最小値の特定・抽出を単純化することを目的とする。この中間記述によって、列が極小値によって境界される一連の部分列に分けられる。中間記述や一連の部分列は、カバレッジマッピングとして知られる技術によって生成される。
【０１８４】
［実施例９］
カバレッジマッピング技術の例を、表１１に示すサンプルデータセットを用いて説明する。表１１のサンプルデータセットには、それぞれ位置に割り当てられた１０個のレコードが含まれている。位置番号は、データベースの「方向」を定めている。すなわち、位置番号は、データベースの順方向に増加し、その逆方向に減少する。データレコードは、通常、データベースに時系列的に入力される。つまり、第１位置には一番古いレコードが、最大位置番号には最新のレコードが含まれることになる。
【表１１】
0005892937.tif 000022
【０１８５】
中間記述の生成には、データ列の各データレコードｒｃに対して、以下の操作を一番古いレコードから最新のレコードへと順に行う必要がある。
【０１８６】
［操作１］
現在位置を起点として、対象となる最古値の位置を調べる。つまり、現在のレコード（ｒｃ）以下の値を有するレコード（ｒ１）に遭遇するまで、古いレコードに向かってデータベースを遡る。そして、レコード（ｒ１）の位置により、現在位置の範囲値を決定する。範囲値は、（位置（ｒ１）＋１）により求められる。検索基準に該当するレコードがない場合、位置（ｒ１）＝０、範囲値は１となる。
【０１８７】
表１２に、各レコードに対する範囲値を示すよう更新された、表１のデータセットを示す。
【表１２】
0005892937.tif 000023
【０１８８】
範囲値とは、データセット内の局所傾向を示す識別子である。レコード値が一定に保たれる又は時間と共に増加する局所傾向の場合（例えば、位置４から位置６までの部分列の場合）、範囲値と位置値は同じ値となる。一方、レコード値が時間と共に減少する局所傾向の場合（例えば、レコード７からレコード８までの部分列の場合）、範囲値は位置値よりも低い値となる。
【０１８９】
［操作２］
範囲値がレコード（ｒｃ）の位置未満である場合、範囲位置（ｒ１）（ただし、これを含まない位置）から現在位置（ｒｃ）（を含む位置）までの過去の全レコードに、現在位置のレコード値を付与する。これは、本作業がデータ列の過去のレコードに対して実行される際に割り当てられたラベルの上書きを意味する場合もある。表１３には、１０個のレコードすべてに対して操作１、２を順に行った結果得られる、表１１のデータベースの修正版を示す。
【表１３】
0005892937.tif 000024
【０１９０】
データ列の各レコードに対して操作１、２が順に実行されると、この修正データベースは、入力データ列の最小値の特定に利用することができる。
【０１９１】
最新レコードから遡る特定のデータ列の最小値を特定するためには、その特定データ列の始まりを示す位置のラベルを特定する必要がある。本実施例では、最新データ値が位置１０に含まれる場合、最近の５個のレコードの最小値が、５番目の最新レコードのラベル、すなわち、位置６のラベルにより求められる。同様に、最近の９個のレコードの最小値が、９番目の最新レコードのラベル、すなわち、位置２のラベルにより求められる。
【０１９２】
本実施例では、最小値の特定方法は、注目するデータ列が最新レコードから遡る場合にのみ有効である。このデータベース（各レコードの範囲値やラベル値を含む）は、データベースに新しいレコードが追加されるたびに更新する必要がある。
【０１９３】
［実施例１０］
表１４に、データベースに新しいレコードが入力されるたびに行われる一連の段階におけるデータベースの構築を説明する具体例を示す。データベースには、段階１において、位置１に１個のレコードが含まれ、段階ｎにおいて、ｎ個のレコードが含まれ、ｎ番目のレコードは位置ｎにある。データベースに新しいレコードが挿入されるたびに、「アルゴリズム工程」の行に示されるように、範囲値及びラベル値が更新される。
【表１４】
0005892937.tif 000025
【０１９４】
各段階において、データベースにより、最新レコードから遡る特定のデータ列の最小値を決定してもよい。そのため、ステージｎでは、第ｎ番目のレコードから遡る特定のデータ列の最小値を特定することもできる。
【０１９５】
例えば、段階４では、最後の２個のレコードの最小値が、この場合３に相当する２番目に新しいレコードのラベル、すなわち、位置３のラベルにより与えられる。
【０１９６】
段階５では、最後の２個のレコードの最小値が、この場合５に相当する２番目に新しいレコードのラベル、すなわち、位置４のラベルにより与えられる。
【０１９７】
［実施例１１］
表１５〜１８に、長いデータ列に対する中間記述の生成方法を示す。この表では、最近入力されたレコード値に対して、範囲やラベルが更新されている。段階５、１０、１５、２０に対する（すなわち、５個、１０個、１５個、２０個それぞれのレコード入力後の）データベースのスナップショットを表に示す。各特定の段階で、最新のレコードから遡る注目するデータ列に対して、サンプルクエリが示されている。
【表１５】
0005892937.tif 000026
【表１６】
0005892937.tif 000027
【表１７】
0005892937.tif 000028
【表１８】
0005892937.tif 000029
【０１９８】
［部分列における最大値の決定］
データベースの構築及びクエリを行うための実施例９〜１１に示す方法及びアルゴリズムは、データベースの部分列の最大値が特定可能なように改良が加えられてもよい。
【０１９９】
ここでも同様に、各データベースのレコードは、「位置」に割り当てられている。レコードは、通常、最も古いレコードが位置１に、ｎ番目のレコードが位置ｎに割り当てられるよう、データベースへと時系列で入力される。そのため、位置番号は、データベースの順方向に、例えば、レコードが新しくなるにつれて増加し、その逆方向に、例えば、レコードが古くなるにつれて減少する。
【０２００】
データ列の各データレコードｒｃに対して、以下の操作を最も古いレコードから最も新しいレコードへと順に行うことで、データの中間記述が生成される。この中間記述は、新しいレコードが追加されるたびに更新する必要がある。
【０２０１】
操作１：
現在位置を起点として、カバーされている最古値の位置を調べる。つまり、現在のレコード（ｒｃ）以上の値を有するレコード（ｒ１）に遭遇するまで、古いレコードに向かってデータベースを遡る。そして、レコード（ｒ１）の位置により、現在位置の範囲値を決定する。範囲値は、（位置（ｒ１）＋１）により求められる。検索基準に該当するレコードがない場合、位置（ｒ１）＝０、範囲値は１となる。
【０２０２】
操作２：
範囲値がレコード（ｒｃ）の位置未満である場合、範囲位置（ｒ１）（ただし、これを含まない位置）から現在位置（ｒｃ）までの過去の全レコードに、現在位置のレコード値を付与する。これには、本操作がデータ列の過去のレコードに対して実行される際に割り当てられたラベルの上書きが必要となる場合もある。
【０２０３】
［実施例１２］
表１９に、データベースに新しいレコードが入力されるたびに、最大値の決定に用いられるデータベースが一連の段階においてどのように構築されるかを示す。データベースには、段階１において、位置１に１個のレコードが含まれ、段階ｎにおいて、ｎ個のレコードが含まれ、ｎ番目のレコードは位置ｎにある。データベースに新しいレコードが挿入されるたびに、「アルゴリズム工程」の行に示されるように、範囲値及びラベル値が更新される。
【表１９】
0005892937.tif 000030
【０２０４】
このデータベースにより、任意の段階における最新のレコードから遡る特定のデータ列に対して、最大値を決定することができる。そして、例えば、段階５では、直近４個のレコード内の最大値は、この場合、１７の値を有する、位置２のラベルにより与えられる。
【０２０５】
本実施例では、注目する部分列の最大値を特定するクエリは、データ列がデータベースに追加された最新レコードから遡る場合にのみ有効である。
【０２０６】
以上、上述の例示的実施形態を用いて本発明を説明したが、当業者には、本開示に照らして他の多くの改良や変更が明らかとなるであろう。従って、上述の本発明の例示的実施形態は、例示説明を目的とするものであり、本発明に対して何ら制限的な意味を有するものではない。また、上記実施形態には本発明の精神と範囲を逸脱することなく種々の変更が可能である。
【０２０７】
上記参照文献はいずれも参照により本書に含まれる。