特許第5892937号(P5892937)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ファキーフ,アドナンの特許一覧

特許5892937データベース及びデータベースからのデータ評価方法
<>
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5892937
(24)【登録日】2016年3月4日
(45)【発行日】2016年3月23日
(54)【発明の名称】データベース及びデータベースからのデータ評価方法
(51)【国際特許分類】
   G06F 17/18 20060101AFI20160310BHJP
【FI】
   G06F17/18 Z
【請求項の数】11
【全頁数】38
(21)【出願番号】特願2012-530329(P2012-530329)
(86)(22)【出願日】2010年9月22日
(65)【公表番号】特表2013-506180(P2013-506180A)
(43)【公表日】2013年2月21日
(86)【国際出願番号】GB2010001784
(87)【国際公開番号】WO2011036448
(87)【国際公開日】20110331
【審査請求日】2013年6月27日
(31)【優先権主張番号】0916920.2
(32)【優先日】2009年9月25日
(33)【優先権主張国】GB
(31)【優先権主張番号】0916921.0
(32)【優先日】2009年9月25日
(33)【優先権主張国】GB
【前置審査】
(73)【特許権者】
【識別番号】512076298
【氏名又は名称】ファキーフ,アドナン
【氏名又は名称原語表記】FAKEIH,Adnan
(74)【代理人】
【識別番号】110000176
【氏名又は名称】一色国際特許業務法人
(72)【発明者】
【氏名】ファキーフ,アドナン
【審査官】 田中 幸雄
(56)【参考文献】
【文献】 特開2007−271239(JP,A)
【文献】 特開2007−150484(JP,A)
【文献】 森有一ほか,情報爆発時代の到来に向けた大量高速データ処理技術への取り組み,日立評論,日本,日立評論社,2008年 7月,第90巻 第7号,66−69頁
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/18
(57)【特許請求の範囲】
【請求項1】
入力値の組から数量を算出するコンピュータシステムであり、
n=1,2,...iである第1入力値xの値列を保存するデータベースを含み、
任意の値nに対して、xは、上記値列においてxn+1とxn−1との間にあり、
は、
第2入力値yと、
変換アルゴリズムによりyから計算される変換値pと、
=zn−1+pである出力値zとに関連付けられており、
上記データベースは、複数の前記出力値zを更に保存するように構成されており、
任意の値nに対して、xはさらに別の入力値y´、及び、p=y・y´と関連付けられている、
コンピュータシステム。
【請求項2】
が時間値である、請求項1に記載のコンピュータシステム。
【請求項3】
が数値である、請求項1又は2に記載のコンピュータシステム。
【請求項4】
n+1−x=x−xn−1である、請求項3に記載のコンピュータシステム。
【請求項5】
が時間値であり、x−xn−1が0.5秒未満、より好ましくは0.1秒未満、最も好ましくは0.05秒未満である、請求項4に記載のコンピュータシステム。
【請求項6】
i>1000である、請求項1乃至5のいずれか1項に記載のコンピュータシステム。
【請求項7】
前記第2入力値yは、金融取引を示す変数である、請求項1乃至6のいずれか1項に記載のコンピュータシステム。
【請求項8】
コンピュータ処理により、n=aからn=bにわたる第1入力値xの値列の一部に対応する第2入力値yの組から数量を算出する方法であって、
請求項1に記載のデータベースから、n=aである出力値zと、n=bである出力値zを抽出することを含み、
前記算出される数量は、
前記第1入力値xの値列の一部に対応する前記第2入力値yと前記別の入力値y´との積の平均、
もしくは、
前記第1入力値xの値列の一部に対応する前記第2入力値yと前記別の入力値y´との相関係数である、
方法。
【請求項9】
算出される数量は、
前記第1入力値xの値列の前記一部に対応する前記第2入力値yの和、
前記第1入力値xの値列の前記一部に対応する前記第2入力値yの平均、
前記第1入力値xの値列の前記一部に対応する前記第2入力値yの分散、
前記第1入力値xの値列の前記一部と、前記第1入力値xの値列の前記一部に対応する前記第2入力値yの値列との間の距離、
もしくは、
前記第2入力値yと、前記第1入力値xの値列の前記一部に対応する前記第1入力
値xとの相関係数、
である、請求項8に記載の方法。
【請求項10】
前記出力値をさらに抽出する工程と同時に実施される、前記データベースから追加値を抽出する工程をさらに含み、前記追加値は後の計算に使用されるキャッシュ内に保存される、請求項8又は9に記載の方法。
【請求項11】
前記更なる出力値と前記追加値とで出力値zの値列の部分列が形成される、請求項10に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、例えば、財務データを保存するデータベースに関し、特に、コンピュータ処理によるデータベース作成方法、データベースへのデータ保存方法、及び/又はデータベースに保存されたデータの操作方法に関する。
【0002】
さらに、本発明は、データベースからデータを取得し、及び/又はそれを評価するためのコンピュータ処理によるクエリ・メカニズムに関し、特に、データベースに保存された一連の数値から最小値や最大値を取得するためのクエリ・メカニズムに関する。
【背景技術】
【0003】
データベースとは、例えば、コンピュータシステム内においてデータを関連付けて保存するための構造であり、その用途に応じて様々なデータベース・アーキテクチャが存在する。汎用データベースは主に、対応するアプリケーションに関するデータ入力やデータ検索を管理・支援するために利用される。近年の傾向としては、特定のアプリケーションドメインと連動するために最適化された専門データベース・アーキテクチャが出現している。
【0004】
複合イベント処理(Complex Event Processing:CEP)とは、例えば、財務データなどの現実のイベントデータに対して低遅延フィルタリング、関連付け、集計、及び/又は演算を行うための技術である。上記データは、通常、高頻度で生成されるため、リアルタイム及び後の段階の何れに関わらず、データの評価を可能とするために適切なデータベースに保存する必要がある。汎用データベースが扱える量をはるかに上回る膨大な量の上記データを保存するための特殊なデータベース製品がいくつか出現している。
【0005】
CEPアプリケーションにおいて利用可能であって、CEPデータを操作する様々な機能を提供する製品を表1に示す。
【表1】
【0006】
これらの製品は、その基礎となるデータベース技術と処理能力の両方を向上させることを目的としているが、データ保存やデータのクエリ・検索はまだ従来の処理により行われている。これらのデータベースは、従来のトランザクション指向動作を実行するのに適してはいるが、標準的なクエリ方法以外で、それぞれ大容量である隣接データにアクセスし、及び/又はそれを評価可能とする効率的手段を提供するものではない。
【0007】
上述したそれぞれ大容量の隣接データに対する要求は、個別レコードの重要性が全体的な記述より低い記述統計の提供に関係している。今や記述統計は、特に高頻度・大容量データ・アプリケーションに対してますます重要になってきている。
【0008】
複数の大容量の隣接データセットの評価処理は、統計的記述データの要求へ対応する際の核心である。
【0009】
金融サービスコミュニティは、データ提供者と顧客から構成される。データ提供者は、大口法人顧客(例えば、銀行)と小口顧客(例えば、一般投資家)の両方と取引する。大口顧客との取引は、直接又は第三者ベンダー(例えば、Vhayu)を介して行われ、高度かつ正確な統計的変数の構築を可能とするために、あらゆる市場データを顧客に提供する。しかしながら、これを小口顧客に対して行うことは、市場への全量供給に必要な大伝送容量や演算要件に関連するコストにより、現時点では不可能である。従って、小口顧客は市場のスナップショットや概要しか与えられないため、変数の概算しか可能とはならない。
【0010】
さらに、データベースに保存された一連の値において最小値又は最大値を決める場合、その最小/最大値の位置及び/又は度合いを判定するには、一般的に、そのデータ列におけるすべてのレコードを検索し評価しなければならない。
【0011】
そのため、上記処理では、データセット検索の際のI/Oバスの使用及び/又はネットワーク帯域の使用、及び、データセットの評価に必要な演算に関する費用がかさむ。これら費用は、要求されたデータ列の数値が増えるにつれて増大する。
【0012】
特に、比較実験は、多くのデータ列を検索・評価するのに費用がかかるため、非常に高額となることもある。
【発明の概要】
【0013】
第1の態様において、本発明は、保存データのより効率的な操作を可能とするため、保存データの中間記述を作成するよう構成されたデータ保存用データベースを提供する。
【0014】
つまり、本発明の第1の態様によると、n=1,2,...iである第1入力値xの値列を保存するように構成されているデータベースであって、任意の値nに対して、xは、上記値列においてxn+1とxn−1との間にあり、xは、
第2入力値yと、
変換アルゴリズムによりyから計算される変換値pと、
=zn−1+pである出力値zとに関連付けられており、
さらに、複数の出力値zを保存するように構成されたデータベースが提供される。
【0015】
上記データベースは、入力値群から数量を計算するコンピュータシステムの一部である。
【0016】
第1入力値xは、一般的には数値であり、通常は時間値である。
【0017】
第2入力値yは、金融取引を記述する変数、例えば、取引の価格や数量であってよい。
【0018】
変換値pは、yに等しい値であってもよい。この場合、データベースに保存された出力値zは、1からnまでのすべての第2入力値yの累計値となる。あるいは、出力値zは、例えば、
もしくは、第2入力値yの異なる関数pの累計値であってもよい。
【0019】
第2入力値y(例えば、株価)が出力値z内に累積的に保存されたデータベースを提供することで、データベースは、第2入力値を中間的に、すなわち、事前に計算した又は部分的に処理された形で保存する。これは、本発明の第1態様のデータベースから記述データを生成するのに必要となる処理量は、データがそのまま未処理の形で保存される従来のデータベースの場合と比べて少ないことを意味する。
【0020】
第2の態様において、本発明は、コンピュータ処理による、n=aからn=bにわたる第1入力値xの値列の一部に対応する第2入力値yの組から数量を算出する方法を提供する。上記算出方法には、本発明の第1の態様に係るデータベースから、少なくともn=bである出力値zを抽出する工程が含まれる。
【0021】
一般的に、本発明の第2の態様の方法には、データベースから、n=aである出力値zをさらに抽出する工程も含まれる。
【0022】
本発明の第2の態様の方法を本発明の第1の態様に係るデータベースと共に用いることで、通常、データベースから注目するデータ列の終わりに対応する出力値zを検索し、また、任意で注目するデータ列の始まりに対応する出力値zを検索することで、表2に示す数量を算出することが可能となる。
【表2】
【0023】
従って、本発明の第2の態様の方法によると、本発明の第1の態様に係るデータベースからわずか2つの出力値を検索するだけで隣接データ列に関連するある範囲の記述統計を生成することができる。これにより、通常、注目するデータ列内のすべてのデータ値を検索しなければならない従来のデータベースを使用する場合と比べて、検索にかかる費用が削減される。故に、I/Oバスの使用及び/又はネットワーク帯域の利用に関連するコストは、従来のデータ評価方法に比べて、本発明の第2の態様の方法の方が低くなる傾向がある。本発明の第2の態様の方法に関連する計算コストも、従来の方法に比べて低くなる傾向がある。
【0024】
本発明の第2の態様の方法に関連する計算コストの削減は、特に金融分野に関係する。本発明の第2の態様の方法は、市場データのすべてのエンドユーザ(大口法人顧客、一般投資家などの小口顧客にかかわらず)が、たとえ市場供給全体にアクセスできなくても、必要に応じて高精度かつ複雑な記述変数を生成することを可能にする。これは、顧客にはごく少量のデータを送信すればよく、顧客は最低限の計算を行えばよいからである。
【0025】
同じデータ系列に関連する複数の要求がなされた場合、本発明の第1の態様に係るデータベースのセットアップコストは迅速に償却されることとなる。本発明の第1の態様に係るデータベースは、効果的にデータ記述の大部分を保存データ自体に埋め込むことを可能にし、それにより、本発明の第2の態様の方法を用いてデータベースに対する問い合わせを行った場合の要求単位の全体コストが削減される。
【0026】
本発明の第1の態様に係るデータベースにより記述統計を行うのにかかるコストは、一般的に、注目するデータ列のサイズへの依存度が低い。これは、記述統計を行うのにかかるコストが注目するデータ列のサイズに概ね比例する従来のデータベースとは対照的である。
【0027】
本発明の第1の態様に係るデータベースでは、記述統計を行うのにかかるコストが削減されることで、比較実験、例えば、2つの異なる期間にわたる株価の変動など、2つの注目するデータ列の比較にかかるコストも削減されている。
【0028】
本発明の第1の態様に係るデータベースと本発明の第2の態様の方法を併用することで、効果的に埋め込み総和演算子を有する任意の記述統計を実現することが可能となる。
【0029】
本発明の第1の態様における変換値pは、複数の生データ値から算出される非常に複雑な変数であってもよい。例えば、変換値pは、ユーザの要求に応じて計算に用いられる出力値zに含まれる、部分的に処理された入力変数を提供する専用指数であってもよい。
【0030】
このように非常に複雑な変数または専用指数を事前に計算することで、ユーザクエリに応じてデータベースから検索されるデータ量を低減し、各クエリに応じて実施する計算の工程数を減らすことが可能となる。特に、事前に算出された変数は、他のユーザクエリに応答するのに再利用することができ、それによって全体効率が向上する。
【0031】
事前に算出された変数の計算に用いられる生データ値には、静的又は動的に重み付けが行われてもよい。つまり、各生データ値は、事前に算出された変数を構築する際にある特定の重みを割り当ててもよいし(静的重み付け)、その重みは時間によって変化してもよい(すなわち、各レコードに対して更新されてもよい)。
【0032】
動的重み付けの場合、各重み付け変数(又は指数)は、その生成コストが高いため、ユーザクエリに応じて数回再利用可能な事前に作成された指数を提供することにより特に大きくコストが削減される。
【0033】
金融分野での利用を例にとった場合、複数の測定値の複素関数である変換値pを提供するという概念は、株価の市場資本化重み付け指数を構築するのに用いることができ、その指数における各株式の重みは、その変化する市場資本化に基づいて変化し得る。このような指数の利用によっては、各個別要求に対する指数構築にかかるデータコストと計算コストの双方において、劇的なコスト削減をもたらすこともある。
【0034】
データを事前計算することで(複素変数である変換値pを得るため)、記述の記述であると考えられるより複雑でマルチレベルな作業を実行することも可能となる。更なる金融分野での利用の例としては、それぞれ市場資本化に応じて重み付けされた株式群に基づいて、複数の指数(例えば、事業会社指数や電気通信会社指数)を構築することが挙げられる。こうすることで、指数(もしくは個々の企業や指数さえも)異なるサブセットへと一体化し、それらの動向を監視することが可能となる。
【0035】
一般に、本発明の第1の態様に係るデータベースは、第1入力値の値列に沿って、xn+1−x=x−xn−1となるような等間隔であるx値(第1入力変数)を保存するよう構成されている。
【0036】
通常、xが時間値の場合、連続する時間値同士の間隔は、0.5秒未満、より好ましくは0.1秒未満、最も好ましくは0.05秒未満である。
【0037】
また、概して、データベースは、例えば、1000以上のレコード、より好ましくは10000以上のレコードを含む第1値列を保存するよう構成されている。
【0038】
本発明の第1の態様に係るデータベースは、従来のデータベースを適合させたものであってもよい。
【0039】
多くのアプリケーション(例えば、金融データの分析)では、絶え間なく増え続ける時系列データが利用されている。この場合、最新の部分列に最も一致するデータ部分列を履歴から見つけ出すことを目的とすることもある。多くの場合、このような検索処理は、異なる部分列の長さ及び/又は位置に対して繰り返し行う必要がある。データが従来のデータベースに保存されると、各検索処理を、そのデータベースに入力された生データから、また新たに開始しなければならない。
【0040】
しかしながら、一致する部分列を照合する処理には、多くの場合、2つの個別部分列の対応するレコード間の距離を測定する工程と、その後これらの距離の測定値を合計して最終的な照合結果を得る工程とが含まれることが分かっている。この演算には埋め込み総和演算子を用いるので、本発明の第2の態様の方法と共に、本発明の第1の態様に係る適切に構成されたデータベースにより実行してもよい。
【0041】
すなわち、場合によっては、関数pが、yと他の第2入力値間の距離の関数であることもある。その距離は、通常、ユークリッド距離であるが、マハラノビス距離などの別の距離測度であってもよい。
【0042】
従って、本発明の第1の態様に係るデータベースは、例えば、最近のデータ列と過去のデータ列との間の距離の累積測定値を算出・保存するよう構成されていてもよい。このように、最近のデータ列の部分列と、過去のデータ列の対応する部分列との間の距離は、部分列の始まりと終わりにおける累積距離測定値から算出してもよい。
【0043】
上記応用例に本発明を利用する利点は、データベース内の対応するすべての部分列ではなく、部分列の始まりと終わりとの差のみを用いて、要求されたすべての部分列のサイズのマッチングが容易に行うことができるということである。これにより、すべての要求に対する個々のレコード間の距離測定にかかる費用が大幅に削減されることとなる。
【0044】
距離の累積値をデータベースに保存するのに相当な数の作業を実行しなければならないかもしれないが、事前計算されたデータからはたった2つのレコードを検索すればいいだけなので、各要求当たりの検索・計算コストは低い。よって、データベースの構築に係るコストは、処理された要求数と共に迅速に償却されることとなる。
【0045】
また、場合によっては、変換値pは、第1入力値xに関連する第2入力値yと別の入力値y´の両方の値の関数である場合もある。例えば、p=(y´・y)である場合もある。この場合、本発明の第2の態様の方法と本発明の第1の態様に係るデータベースとを併用して、ユーザが注目している第1入力値xの値列の一部に対応する第2入力値yと上記別の入力値y´との相関関係を判定してもよい。
【0046】
本発明の第2の態様の方法によれば、本発明の第1の態様に係るデータベースからのデータ要求は、要求されたデータの期間の始点と終点をフェッチすることで構成されている。待ち時間のためにフェッチ/検索処理を行うのに費用がかかる場合(例えば、データベースへのアクセスが要求されなければならない場合、又は、データがネットワークを介してフェッチされなければならない場合)、更なるフェッチ作業に対する待ち時間オーバーヘッドを解消するために、データを事前にフェッチし、キャッシング時の時間局所性を利用することは有益である。
【0047】
従って、本発明の第2の態様の方法は、注目する値に隣接している値をさらにデータベースから抽出する工程をさらに含むよう構成されてもよい。そして、これらの値は、後の計算で使用されてもよい。
【0048】
複数のデータ値検索にかかる待ち時間コストは、単一の値検索にかかるコストとほぼ同等であるため、複数の値検索にかかる全体コストは、各値を一つずつ検索するのにかかるコストよりも低くなる。通常、上記さらに抽出された値は、必要に応じて、それらが抽出され得るキャッシュに、低待ち時間コストで保存される。
【0049】
都合の良いことに、一回のフェッチ作業で検索された複数のデータ値は、連続したデータ部分列である。このことは、本発明の第2の態様の方法を適用することに関連する削減効率を向上させる。
【0050】
本発明の第2の態様の方法は、本発明の第1の態様に係るデータベースと併用することで、送金などの銀行業務の監視や、特に、異常行為の発見に有利になることもある。
【0051】
不正行為として顕著なものは、普通の行動の中に紛れるために、規模は小さいが期間的に長い行動が長期間にわたって行われることがある。本発明の第1の態様に係るデータベースと共に本発明の第2の態様の方法を用いることで、複数の平均値を監視し、不正行為の証拠となり得る相対的変化を発見することが可能となる。
【0052】
例えば、直近の1時間の平均値に相当する過去5時間での送金の平均値は、正常なアクティビティを示す一方、直近の1時間の平均値の上昇は、不正行為の可能性を示唆している。事前に監視すべき平均値の正確なパラメータや組み合わせが分からないため、幅広い範囲の値を調べなければならない。様々な要求に速やかにかつ容易に対応することができれば、この処理を非常に円滑に行うことができる。この手法は、異常アクティビティを過去の正常アクティビティの判別に基づき検索する、様々な検出アプリケーション、例えば、取引監視などにも適用可能である。
【0053】
このアプリケーションの延長として、複数の異なる大きさの平均値を並行してリアルタイムに監視することもできる。このように、別の平均サイズに対しても、過去の実験に基づく評価を容易かつ効率的に行うことも可能である。これらはいずれも、本発明の第1の態様に係るデータベースと共に本発明の第2の態様の方法を用いた費用効率が高い処理が直接もたらした結果である。
【0054】
一般的に、大量のデータ(1000以上のレコード、通常は10,000以上のレコード)を保存するデータベースでは、ユーザが個別のレコードにアクセスすることは困難である。
【0055】
また、データベースのユーザは、通常、主にデータベースの最新のレコードに注目している。
【0056】
従って、第3の態様において、本発明は、コンピュータ処理により、時間依存変数の過去値を保存するため、時間tにおいてデータベースをコンパイルする方法であって、時間tから遡って測定された一連の所定時間間隔に対応する時間依存変数の値の組を選択する工程を含む方法を提供してもよい。
【0057】
上記データベースは、本発明の第1の態様に係るデータベースであってもよいが、それは必須ではない。
【0058】
通常、最近入力されたレコードの時間間隔は、それより古いレコードの時間間隔よりも接近した間隔で配置されている。その結果、データベースには、最新データが高粒度で、もっと以前のデータが低粒度で保存される。
【0059】
例えば、1秒当たりのデータスループットが高く、流動性が高い金融市場の場合、本発明の第3の態様のデータベースを用いることで、保存され、後にユーザに送られるデータ量を削減することができる。このデータをユーザが直感的に1/1000秒単位で使っているなら、主な関心は最新データにあるが、より長い時間間隔(つまり、毎分や毎時)に関心のあるユーザなら、通常、1/1000秒といったデータ精度は必要ない。このように、本発明の第3の態様によれば、様々な顧客の要求を、そのニーズ(及び/又は制約)に応じてより効率的に処理することができる。これにより、ユーザが要求するものを送るだけで送信された全データ量が低減され、その結果、必要なネットワーク帯域や保存コストが削減される。
【0060】
相互に関連付けられた複数のデータ列(本発明の第1の態様に係るデータベースなど、ただしこれに限定されるものではない)を保存するデータベースでは、一般的に、ソート処理が行われ、保存データ内の相対的変化が監視されている。例えば、データベースには、一連の金融商品に対して特定の市場指標が保存されてもよく、その市場指標の相対値によりデータソートを行ってもよい。市場指標値の変化に伴い、さらにソート処理を実行してデータベースの更新を行う必要がある。
【0061】
同様に、データベースを用いて、例えば、最新データ列と過去データ列とのパターンマッチングの範囲を決定する場合、異なるマッチング結果に対して、例えば、最新データ列に完全に一致する過去データ列を求めるソートを行ってもよい(このようなパターンマッチングは、本発明の第2の態様の方法と本発明の第1の態様のデータベースを併用することで実行されてもよいが、従来のデータベース及び方法を利用してもよい)。
【0062】
しかしながら、上記ソート処理は、計算コストの観点から費用がかかることもある。従って、第4の態様において、本発明は、コンピュータ処理により、所定のソート基準によりデータセットをソートする方法であって、データセットをトラバースして、データセットの値の中で、所定ソート基準に従う順序通りとなっていない値があるかどうかを判定する工程と、もし順序通りとなっていない値がある場合、必要に応じて前記所定ソート基準によりデータセットをソートする工程とを含む方法を提供してもよい。
【0063】
これにより、データベースのソートにかかる計算コストは、データセットの値が順序通りとなっていない場合にのみ発生することとなる。データセットの値が順序正しく並んでいる場合、発生するコストは、これを決定するデータをトラバースするのにかかるコストのみとなる。
【0064】
上記方法は、データ(例えば、金融商品の市場指標)の変動が少ない場合などに特に効果を奏する。この場合、ソート処理が必要とされることはほとんどなく、上記方法によって、不要なソート処理が行われるのを回避することができ、総計算コストを削減することができる。
【0065】
上記方法は、特に、ソート順を決定するデータセットの値が、複数の測定データ値の関数として決定される計算値である場合に効果を奏する。そのような計算値は、通常、1つの測定データ値の変化にあまり影響を受けないため、変動性が低い。これは、特に、上記値が長期間にわたって蓄積されたデータから算出される場合に言えることである。
【0066】
上記計算値は、以下のいずれかの値であってもよい。
a)測定データ値の平均値、
b)測定データ値の和、
c)測定データ値の最大値又は最小値、
d)測定データ値の標準偏差
【0067】
また、本願には、ユーザが特に注目している特定のデータ列の最大値及び/又は最小値をより効率よく特定することを可能とするため、保存データの中間記述を作成するよう構成されたデータ保存用データベースが開示されている。
【0068】
データ列の最小値及び/又は最大値の特定は、例えば、ある一定期間の株価の範囲(すなわち、最大値と最小値の差)が、一般の株価や市場の変動を示唆するものである、例えば、金融分野での利用において有用となることがある。従って、低計算コストで、効率的かつ効果的な処理により、例えば、異なる期間の株価の最大値及び/又は最小値を特定可能なことは有益である。
【0069】
また、データ列の最小値及び/又は最大値の特定は、データ列の異常値の特定においても有用である。これは、例えば、不正行為の発見に特に重要である。例えば、株価の最大値及び/又は最小値と、その株価の正常価格変動とを比較することで、異常な挙動が見つかる場合がある。そのような処理には、評価(例えば、株価の正常挙動の状況を確立する、又は、実際の不正行為の発見)に長い期間を費やさなければならず、計算コストを許容範囲に抑えるためには、最大値及び/又は最小値を効率的に特定しなければならない。
【0070】
そのため、第5の態様において、本発明は、
(i)値列を保存し、
(ii)値列の最小値及び/又は最大値を特定し、
(iii)少なくとも第1部分列の値と該第1部分列の値の直後に追随する第2部分列の値を決定するように構成されたデータベースを提供する。このデータベースにおいて、第1部分列と第2部分列の境界は、値列の最小値又は最大値の位置に配置されている。
【0071】
上記データベースは、値列のある特定の部分列の最小値及び/又は最大値を決定するのに用いられるコンピュータシステムに備えられている。
【0072】
上記「追随する」という用語は、データベースに保存されたデータ列の方向性を示すためのものである。データ列の方向性は、通常、データ列の各値がデータベースに入力される順序により定められている。そのため、新しく入力された値は、通常、前に入力された値に「追随する」ものと考えられる。そして、第2部分列の値は、第1部分列の値よりも最近にデータベースに入力されたものである。
【0073】
そのようなデータベースの応用例の多くでは、保存されたデータ列によって、パラメータの経時変化が示されている。従って、この場合、パラメータの最新値は、その値列に沿った古い値に「追随する」こととなる。
【0074】
本発明の第5の態様のデータベースは、保存データセット内の値からなる少なくとも2つの部分列を決定するよう構成されており、その2つの部分列の境界は、上記値列の最大値又は最小値の位置に置かれている。
【0075】
このように、データベースのユーザは、自身が決定する特定のデータ列の最大値又は最小値を特定しようとする場合、少なくとも最初のステップとして、その特定のデータ列が上記2つの部分列の境界に延びているかどうかを判定し、それにより、データベース全体の最大値又は最小値がその特定データ列に含まれているかどうかを判別することができる。これにより、ユーザはデータ列全体を検索・評価すつ必要がなくなり、クエリに関連する検索・計算コストの削減が図られる。
【0076】
従って、第6の態様において、本発明は、コンピュータ処理により、ユーザが決定する特定のデータ列の最小値及び/又は最大値を決定する方法であって、
(i)本発明の第5の態様に係るデータベースを提供する工程と、
(ii)特定のデータ列が、第1、第2部分列まで及ぶものかどうかを判定する工程と、
(iii)特定のデータ列が、第1、第2部分列まで及ぶものである場合に、第1、第2部分列の境界にある値を抽出する工程とを具備する方法を提供する。
【0077】
通常、データベースに保存されているデータは、さらに部分列へと分けられ、隣接する部分列の境界には、極大値又は極小値が存在する。そのため、本発明の第5の態様のデータベースが保存データ列の最小値を特定する場合、このデータベースは、
(i)第1部分列に追随する値の最小値に対応する極小値を特定し、
(ii)第2部分列の値の直後に追随する値からなる第3部分列(第2、第3部分列の境界は前記極小値の位置に配置される)を決定し、
(iii)n=2である第n部分列に追随する値の最小値に対応する更なる極小値を特定し、
(iv)第(n+1)部分列の値の直後に追随する値からなる第(n+2)部分列(第(n+1)、第(n+2)部分列の境界は更なる極小値の位置に配置される)を決定し、
(v)n=kまでのnのすべての整数値(n=kでは、隣接する部分列の境界を決める極小値はもはや存在しない)に対して工程(iii)と(iv)を繰り返すように構成されている。
【0078】
本発明の第5の態様のデータベースが保存データ列の最大値を特定するよう構成されている場合、データベースは、同様の方法で、極小値によって境界される部分列へとさらに分割される。
【0079】
通常、第3部分列のデータ値はそれぞれ、第1、第2部分列の境界にある最小値又は最大値に対応するラベルを備えている。
【0080】
上記分割された部分列のいずれかのデータ値にも、同様に、部分列とそれに追随する部分列の境界にある極小値又は極大値に対応するラベルが付与されていてもよい。このように、直近の境界値(最小値又は最大値)までのすべての部分列に対してラベル付けが行われる。この場合、最終部分列のデータ値(すなわち、直近の境界値の後に来るデータ値)にもラベル付けが行われることが好ましい。また、最終部分列のデータ値には、それぞれ、そのレコードの値に対応するラベルが付与されていることが好ましい。
【0081】
上記「直近」や「最終」といった用語は、データベースの方向性をあらわすものであって、「最後の」境界値とは、最も新しく入力されたデータと関連付けられた境界値、例えば、通常、k番目と(k+1)番目の部分列の境界値を指すものである。同様に、「最終」部分列とは、データベースに保存されたデータ列に最も新しく入力されたデータを含む部分列を指すものである。
【0082】
このようにしてデータベースのレコードにラベル付けがなされた後、本発明の第6の態様の方法により、特定のデータ列の最大値又は最小値が決定されてもよい。この場合、特定のデータ列は、通常、データベースの値列の終点に対応する終点を有し、特定データ列の最小値又は最大値が、データ列の始点の位置にある値のラベルを読み出すことで決定される。
【0083】
このように、本発明の第6の態様の方法によれば、1つのデータ値を読み出すことで、特定データ列の最小値又は最大値を決定することができる。そして、ユーザがこの分析を行うのにかかるコストは、そのデータ値を読み出すコストのみとなる。
【0084】
従来のデータベースでは、最小値又は最大値が決定されるまで、データ列のすべての値を読み出し、分析する必要があり、ユーザが負担する読出し・計算コストが高くなってしまう。
【0085】
一方、本発明の第6の態様の方法を本発明の第5の態様のデータベースと共に用いることで、ユーザがデータベースに保存されたデータ列の分析に必要とするI/Oバスの使用及び/又はネットワーク帯域の大幅な削減が図られる。
【0086】
従って、本発明によれば、データベースに保存されたデータの中間記述を生成し、ユーザがこの中間記述にアクセス可能とすることで、ユーザが、計算コストをあまりかけずに、データベースに対してクエリを実行したり、データベースに保存されたデータを評価したりすることが可能となる。
【0087】
上記「始点」と「終点」は、データベースの方向性と関連し、通常、「終点」はデータ列の最新入力レコードを指し、「始点」は前回入力されたレコードを指す。
【0088】
本発明の第6の態様の方法は、思考のみを駆使してデータ列の最大値及び/又は最小値を特定するような人にとっては容易に利用できないという点で、やや直感的でない方法であると言える。そのような、作業支援にコンピュータを利用しない人は、データ列のデータ値をスキャンするだけで最大値又は最小値を特定しようとしがちで、本発明の第6の態様の方法のような複雑で直感的でない方法を使いたがらない。
【0089】
しかしながら、データ列をスキャンして(思考プロセスのみ、又は、コンピュータ処理方法の一部を介して)最大値又は最小値を特定する従来の方法は、大量のデータを評価するのに適していない。このような場合、本発明の第6の態様の方法による、より複雑で直感的でない工程によって、上記処理が記述手段を用いた実施に容易に適用でき、大量のデータを素早く効率的に評価することが可能となる。
【0090】
本発明の特定の実施形態において、本発明の第5の態様のデータベースは、保存データ列に関して、ある特定のデータ列の最小値の特定を容易にする第1中間記述と、ある特定のデータ列の最大値の特定を容易にする第2中間記述との2つの中間記述を生成するように構成されていてもよい。
【0091】
また、データベースは、パラメータの経時変化を示すデータを保存するよう構成されていてもよい。このパラメータは、例えば、金融取引を示すパラメータであってもよい。パラメータは、通常、0.5秒未満、より好ましくは0.1秒未満、最も好ましくは0.05秒未満の時間間隔で測定される。
【0092】
さらに、データベースは、通常、1000個以上の値を有するデータ列を保存するよう構成されている。
【0093】
[利用分野]
本発明は、時間的に変化する予測不能な長さで高速で次々と入ってくるデータストリームを含むアプリケーションにおいて有用である。従来のDBMSの手法は、そのメモリが限られているため、連続的なクエリや処理に加えて、高速の連続的なデータの取り込みが求められる場合には不向きである[M. Kontaki, A. N. Papadopoulos, Y. Manolopoulos, スライディングウィンドウによる時系列ストリーミングにおける適応類似性検索、Data & Knowledge Engineering、第63巻2号(2007年11月)、第478〜502頁]。また、そのようなデータに対して標準的な解析的分析を試みる際に生じる更なる問題としては、1度又は限られた回数でのみ読み込むことができるデータストリームの連続的かつ予測不能な動作のために、ランダム・アクセスを実現することができないということがある[P. Tsai、スライディングウィンドウモデルを使った、データストリームに対するトップK個の頻出閉アイテムセットのマイニング、アプリケーションを有するエキスパートシステム:国際ジャーナル、第37巻10号(2010年10月)、第6968〜6973頁]。これには、複数回データスキャンをする必要のないレンジクエリに対して迅速に回答できるよう改良された解析方法が必要となる。
【0094】
[クエリタイプ]
本発明のメカニズムは、連続するデータ・アプリケーションに必要な以下のクエリタイプを実行可能である。[F. Buccafurri, G. Lax、効率的レンジクエリのための巡回的ツリー状ヒストグラムによるスライディングウィンドウの近似、Data & Knowledge Engineering、第69巻9号(2010年9月)、第979〜997頁]
1.ポイントクエリ:データストリームのk番目のデータポイントを返す。
2.レンジクエリ:集合データを所定時間間隔内に返す。
3.類似クエリ:類似パターンがデータストリーム内に生じるかどうかに関して、真値を返す。[P. Capitani, P. Ciaccia、データストリームに対するタイムワーピング、Data & Knowledge Engineering、第62巻3号(2007年9月)、第438〜458頁]
【0095】
[利用例]
[金融]
[市場の透明性]
金融市場当局がその参加者に対して公平で透明性のある市場を確保することへの要求が高まっている。取引量が増加するにつれ(市場によっては1日当たり何百ギガバイトにも上る)、すべての参加者へのデータ発信がますます難しくなる。そのようなデータへのフルアクセスを得る経済的余裕があるのは、機関投資家や大口投資家に限られている。このこと自体、膨大なデータを受け取る余裕のない小口投資家からすれば、透明性の大きな問題となっている。取引データのみならず、オーダー動向や従来とは異なる実行情報などの、より精度の高いデータの必要となると、問題は一層深刻となる。本発明は、すべての参加者に正確な集合データを提示可能とするため、カスタマイズ可能なウィンドウサイズのメカニズムにより参加者が所望のデータを選択可能とする。これはいくつかの利点をもたらす。まず、計算は、累積データ保存時に一度しか行われない。その後ユーザは必要なデータ範囲を要求し、開始及び終端データのみを受領するが、これにより要求は満たされる。従って計算量が大幅に抑えられる。特に計算量の上限がデータ生成時に制限されるため、ユーザ数や要求が多くなった場合有効である。また、要求されたデータ範囲の境界のみをユーザに送ることで帯域が大幅に縮小し、データ領域要求に係わらず効果的に通信コストが制限される。第3に、顕著な計算または帯域のオーバーヘッドがなくカスタムデータ範囲を抽出可能なため、大量のリアルタイム分析及び実験を同時進行させることができる。第4に、参加者がデータクエリの全てを、全データを送ることなく実行できるため、当局のデータがより不正に使用、移転されにくくなる。最後に、本発明は、通常高値で売られるティックデータを個別に全て開示することなく、全体的に全ての参加者にとって市場を透明化する手段を提供する。
【0096】
[電気通信]
[ネットワークトラフィックモニタリング]
ネットワーク利用の最適化は、ルーターやスイッチキューの管理に依存する[E. Hernandez-Orallo, J. Vila-Carbo、ヒストグラムに基づくトラフィックモデルを使ったネットワークキューやロスの解析、Computer Communications、第33巻2号(2010年2月)、第190〜201頁]、[S.K.Tanbeer、C.F.Ahmed、B.Jeong、Y.Lee、データストリームに対するスライディングウィンドウに基づく頻出パターンマイニング、Information Sciences、第179巻227号、2009年11月、第3843〜3865頁]。一般的には、ネットワークのモデリングでは、キューの利用に関する情報の決定を目的として、トラフィックを所定のサービスレートで限られたサイズのキューへと入力する。そして、平均値や変動値を連続的に決定する必要がある上記トラフィックをカスタム分布やモデルによりモデリングする。ネットワークサイズの増大に伴い、生成されるデータ量やその結果生じる計算量が増大し、個別のユーザニーズに合わせたレポートを作成することがますます難しくなっている。本発明は、この問題に対し、以下の3つの点で貢献することができる。
1.現時点での一定期間監視レポート(例えば、24時間ごとに更新)をユーザに送る。これは、各ユーザに対し、それぞれ個別の要求に基づいてカスタムレポートを作成するのが困難なためである。本発明は、データの事前計算や保存を可能にし、そのようなデータはその後ユーザがカスタムレポートを作成するのに利用される。これにより、各ユーザにかかるカスタム計算の必要性が削減される。
2.統計的計算は、累計的計算へと容易に変形可能であり、これによって、求められる範囲の終点データアイテムを送ればいいので、ユーザ1人当たりのデータ量や帯域使用を最小限に抑えることができる。
3.全データセットではなく、ユーザ要求に関するデータのみを送ればいいので、プロバイダーに対するデータセキュリティーが向上する。
【0097】
[侵入検出]
データサーバー内の情報は、ネットワークを介した攻撃から保護されなければならない[H. Li, S. Lee、効率的なウィンドウスライディング方法を使った、データストリームに対する頻出アイテムセットのマイニング、Expert Systems with Applications、第36巻2号、第1部、2009年3月、第1466〜1477頁]、[W. Wang, X. Guan, X. Zhang、異常な侵入をリアルタイムで検出するための、膨大な監査ストリームの処理、Computer Communications、第31巻1号(2008年1月)、第58〜72ページ]。基本的な2つの手法としては、事前に保存された原型的攻撃との照合により不当な挙動を検出するシグネチャベース検出と、一般ユーザのプロフィールを保存し、許容できない逸脱を攻撃の可能性として特定する異常検出とが挙げられる。シグネチャベースの方法は、所定のシグネチャ一式に対する距離をリアルタイムで記録する本発明の距離測定メカニズムを利用する場合に利用可能である。本発明独自の利点としては、完全なシグネチャに対する距離だけでなく、シグネチャのサブセットに対する距離を求めることも可能である。これにより、時間のかかる距離の再計算を必要とせずに、実験やテストを速やかに行うことが可能となる。また、異常検出には、データサブセットに対する計算が可能という点でも有効である。これは、従来の方法と比較して、更なる計算を必要とせず、帯域コストを大幅に削減しながら、複数の期間の同時測定が可能な自動校正方法に特に適している。
【0098】
[エンジニアリング]
[コンクリート構造体]
高いコンクリート構造体のための質量ダンピングシステムの性能をトラックし、そのダンピングの向上や安全性維持を図るため、監視技術が使用される[J. M. W. Brownjohn, E. P. Carden, C. R. Goddard, G. Oudin、183mの強化コンクリート製煙突のための同調質量ダンパーシステムのリアルタイム性能モニタリング、Journal of Wind Engineering and Industrial Aerodynamics、第8巻3号、2010年3月、第169〜179頁]。加速度計が構造体に接続され、遠隔監視されることで、構造体の変位が臨界閾値を超えているかどうかを判別するためのリアルタイムな情報が得られる。この監視技術を何百や何千といった構造体に対して大規模に使用するには、すべてのユーザが必要な監視タスクを同時に行うことができるよう、本発明のような統一されたデータ管理システムが必要となる。一度計算すれば何度も使える方法では、複数の自動システムにより、様々なサイズのウィンドウとデータの組み合わせを介して、様々な現象を効率的に監視できる。また、累積データ保存構造が必要とするのは低帯域であるため、オーバーヘッド通信コストをほとんど必要とせずに、遠く離れた場所を監視することができる。
【0099】
[掘削の最適化]
作業の安全性基準を維持しながら、掘削処理を最適化し、コストを最小限に抑えることを目的とする。これは、採掘された累積フィート長に基づき、全体の貫通率が最大となるように、作業の間中掘削処理を検査し続けることで実現される。ドリルヘッドの利用を最大限に引き上げるか、ドリルヘッドの損傷によるプロジェクト停止時間や、新しい部品の交換・発注に関連するリードタイムを最小限に抑えるか、という根本的な判断が必要となる。ビット重量や回転速度などの複数の変数を分析し続け、そのようなデータを数学モデルに適用し、掘削プロジェクトの進行を妨げずにビットヘッド利用を最大化することができるよう、可能な限り判断は引き伸ばされる。これは、作業進行にしたがって、異なる地質の層を掘削したり、掘削速度を変更したり、モデルのリアルタイムキャリブレーションを行う場合に重要であり、当初の方針にかかわらず総合的解析を確実に行うことを可能にする。また、最初のデータを用いていくつかの異なるモデルを同時に評価することが可能となる。さらに、必要となるのが低帯域であることは、アナリストを送ることが難しく、また大規模帯域通信チャネルを得るにはあまりにもコストがかかるような、遠く、厳しい環境にて掘削を行う場合に特に重要である。
【0100】
[科学的データ解析]
[地震予知]
早期警戒装置は、様々な振動の異なる伝搬速度に基づいて、大規模な地震が到達する前に、直前警報を発することができる。この応用の特徴としては、値を得るためほぼ瞬間的処理を必要とする大量な連続データを使うという点である。測定センターは、地震到達前の検出時間を延ばすため、近隣センターからの測定値も利用することができる。これは、各測定装置により得られるデータ量が膨大なため、最大のセンター以外の他のセンターにとってはあまりに費用がかかりすぎる。しかしながら、本発明をデータ保存のバックボーンとして利用することで、何百、何千の近隣センターが、本発明の低帯域を活用して、データを共有できる。また、スライディングウィンドウの異なるサイズに対して計算オーバーヘッドが極わずかであることは、様々なサイズの偏差を検出するために、あらゆるレベルの検出が同時に実行可能であることを意味している。このことは、多数の候補となるモデルが同時に機械テストされ応用されうるため、実験において重要である。
【0101】
[熱帯大気海洋]
現場環境センサーは、監視する環境に物理的に位置し、その時系列データは単一のデータリポジトリに連続的に送信される[D. J. Hill, B. S. Minsker、環境センサーのデータストリームにおける異常検出:データ駆動モデリング手法、Environmental Modeling & Software、第25巻9号、2010年9月、第1014〜1022頁]。過去のパターンから大きく逸脱する異常データの検出及び特定には、自動的なデータ品質の保証と管理が必要である。このような異常検出は、異常データが更なる調査を必要とすることもある現象を示す適応モニタリングの分野においても利用することができる。本発明は、カスタム可能なスライディングウィンドウメカニズムによりデータ保証テストを同時に行うことができる主要なデータ保管場所として利用することができ、それにより品質モニタリングをさらに高度化することができる。また、計算コストを増やさずに、同じメカニズムで複数の異常な現象を同時に検出したり、検出方法に直接変更を加えたりすることができる。他の利点としては、低帯域データ送信メカニズムにより、通信にわずかに投資したのみの他の遠距離のユーザのデータ要求にも応じることが可能となる。
【発明を実施するための形態】
【0102】
以下の説明及び実施例1〜8において、本発明の第1の態様に係るデータベースが、データ保存やユーザクエリに応じた情報提供を行うために、どのように構成され、利用されているのかを示す。
【0103】
第1実施形態では、時間値列を保存するデータベースが提供される。各時間値は、それと関連する変数yの値列の1つの値を有する。変数yは、例えば、価格や出来高などの金融取引を示す変数であってもよい。
【0104】
上記時間値は、最も古い値から最も新しい値までが順番にかつ等間隔に並べられている。例えば、連続する時間値同士の差は、0.5秒、0.1秒、又は、0.05秒であってもよい。
【0105】
データベースは、そのような時間値を1000個以上保存するよう構成されている。
【0106】
第1実施形態において、データベースには、上記y変数の累積値、すなわち、第1時間値から第n時間値までの期間に対応するy変数の和
も保存されている。従って、各時間値nは、それと関連付けられた、最も古い時間値からもっと新しい時間値まで記録されたy変数の和を有する。
【0107】
これにより、時間aから時間bまでの期間に対応する変数yの総量(すなわち、
)が、時間(b)におけるsigma(y)から時間(a)におけるsigma(y)を引くことで算出できる。
【0108】
そのため、ユーザは、データベースから2つのデータ点sigma(y(a))、sigma(y(b))を検索し、一方の値から他方の値を減算する処理を一回行うことで、ある一定期間にデータベースに追加された変数yの累計を計算することが可能である。
【0109】
時間aから時間bまでの期間における変数yの平均を計算するには、sigma(y(b))からsigma(y(a))を減算し、その計算結果を、時間aから時間bにわたる部分列の値の数で除算する必要がある。そのため、ユーザは、減算処理と除算処理を各一回ずつ行わなければならない。
【0110】
比較例では、従来のデータベースを使って、ある一定期間にそのデータベースに追加された変数yの累計を計算するには、その期間内にデータベースに追加された変数yのすべての値をデータベースから検索し、それらの値の合計を出す必要がある。
【0111】
同様に、別の比較例では、従来のデータベースに保存された値の平均は、それらの値をすべて検索し、加算し、全値数で割ることで得られる。
【0112】
本発明の第1の態様のその他の実施形態では、1からnまでの各期間に対する変数yの関数の累計値がデータベースに保存されてもよい。例えば、データベースには、yの累計値が保存されてもよい。これにより、例えば、変数yの分散を以下の式から求めることができる。
【0113】
従って、データベースから4つの値、すなわち、時間=aに対してsigma(y)とsigma(y)、時間=bに対してsigma(y)とsigma(y)を読み出すことで、時間aから時間bまでの期間における変数yの分散を求められる。
【0114】
本発明の別の実施形態では、データベースには、更なる入力変数y´の列が保存されており、各y´値は、時間値列内の1つの時間値と関連付けられている。
【0115】
この場合、データベースにおいて、上記更なる入力変数y´は、[y´・y]の累計値の形で保存されてもよい。つまり、データベースには、最も古い時間値から第n時間値までの各時間値に対して、[y´・y]の累計値
が保存されている。こうして、時間aから時間bまでの注目する期間にわたる変数y、y´の相関係数を以下の式から求めることができる。
【0116】

【0117】
[実施例1]データ保存
変数yの累計値が保存されている、本発明の第1の態様の第1実施形態に係るデータベースを例にとって考えてみると、データベースの構築コストは、(従来のデータベースの比較例と比べて)以下のように設定されている。

新しいレコードの追加コスト=新しいレコードを過去のすべてのレコードの合計に追加するのにかかる計算コスト+新しい累積レコードの保存にかかる保存コスト

従来のデータベースの場合、新しいレコードの追加コスト=追加の1レコードを保存するのにかかる保存コスト(計算コストなし)

保存コストとは、レコードをネットワークメモリ(ネットワーク帯域の使用も含む)に送信するのにかかるコストのことである。
計算コストとは、所望のフォーマットへと数学的に操作するのにかかるコストのことである。
【0118】
従って、本発明の第1実施形態におけるデータ保存には、(従来のデータベースの比較例と比べて)新しいレコードを過去のすべてのレコードの合計に追加するのにかかる計算コストがさらにかかる。累計値のサイズが生データよりも大きいため、第1実施形態の保存コストは、従来のデータベースにかかるコストよりもわずかに高くなる。例えば、2桁の数字(例えば、生データ値)が一定の状態で100秒間累積された場合、結果として、4桁の数字がデータベースに保存されることとなる。
【0119】
[実施例2]データ操作
本実施例では、本発明の第1の態様の第1実施形態に係るデータベースから、データレコード列の平均が求められる。
【0120】
それには以下の工程が必要となる。
1.列の始まりと終わりからデータレコードを読み出す工程(読み出しコスト=2回のフェッチ処理)
2.終了レコード値から開始レコード値を減算する工程(計算コスト=1回の減算処理)
3.データサイズによる除算を行う工程(計算コスト=1回の除算処理)
【0121】
従来のデータベースの場合、上記処理を行うには以下の工程が必要となる。
1.注目する列のすべてのデータレコードを読み出す工程(読み出しコスト=n回のフェッチ処理)
2.読み出されたすべてのレコードの総和を求める工程(計算コスト=(n−1)回の加算工程)
3.データサイズによる除算を行う工程(計算コスト=1回の除算処理)
【0122】
従って、本発明の第1の態様の第1実施形態に係るデータベースでは、保存データの平均を求める際の読み出しコスト、及び、計算を行う際の計算コストが大幅に低減されることとなる。一般的には、このようなデータ操作にかかるコストの低減によって、データ保存に関連する若干高めの単発コストが相殺される傾向がある。これは、要求が連続的に繰り返されている場合に顕著である。例えば、直近の100個のデータレコードの平均を求め、新しいレコードの入力毎にこの値を更新するために、本発明の第1実施形態に係るデータベースに対してクエリが行われた場合、従来の方法と比較して、計算コストや読み出しコストの節約を実現することで、第1平均値計算後の事前計算オーバーヘッドコストが克服されることとなる。また、直近の200個のデータレコードの平均をカバーするために要求が変更された場合、コストは増加しない。
【0123】
[実施例3]出来高加重平均価格の計算
株式の出来高加重平均価格(vwap)は、全取引金額を全取引高で割ることで求められる。取引の金額は、取引高と価格の積である。
【0124】
本発明の第1の態様の第2実施形態に係るデータベースでは、累計出来高と金額(出来高と価格の積)が時間関数として保存されている。この場合、以下の工程によりvwapを算出できる。
1.注目する列の始まりと終わりから金額レコードを読み出す工程(読み出しコスト=2回のフェッチ処理)
2.終了レコードから開始レコードを減算する工程(計算コスト=1回の減算処理)
3.注目する列の始まりと終わりから出来高レコードを読み出す工程(読み出しコスト=2回のフェッチ処理)
4.終了レコードから開始レコードを減算する工程(計算コスト=1回の減算処理)
5.工程2で得られた値を工程4で得られた値で除算する工程(計算コスト=1回の除算処理)
従って、vwapの総計算コストは、4回のフェッチ処理と、2回の減算処理と、1回の除算処理となる。
【0125】
従来のデータベースの場合、上記処理を行うには以下の工程が必要となる。
1.注目する列のすべての金額レコードを読み出す工程
2.工程1で得られたすべてのレコードの総和を求める工程
3.注目する列のすべての出来高データレコードを読み出す工程
4.工程3で得られたすべてのレコードの総和を求める工程
5.工程2で得られた値を工程4で得られた値で除算する工程
従って、比較例としては、従来のデータベースによりvwapを算出するのにかかる総データコストは、2×n回のフェッチ処理(nは注目するデータ列の値数)と、2×(n−1)回の加算処理と、1回の除算処理となる。
【0126】
[実施例4]パターンマッチング
第3実施形態では、本発明の第1の態様のデータベースは6つの期間を有し、各期間は1〜5のラベルが付された5つのレコード列で構成されている。このデータベースは、異なる期間から対応するレコード間のユークリッド距離を保存するよう構成されている。ユークリッド距離は、以下の式により累積された形で保存されている。
ここで、rはレコードの数、TAは第1期間、TBは第2期間である。
【0127】
このように、データベースには、期間TAと期間TBそれぞれの第1レコード間のユークリッド距離が保存されている。また、データベースには、期間TAとTBそれぞれの第1レコード間とそれらの期間それぞれの第2レコード間のユークリッド距離の和も保存されている。同様に、データベースには、上記期間の第1〜第3レコード、第1〜第4レコード、第1〜第5レコードを対象とする累積値がさらに保存されている。
【0128】
さらに同様に、データベースには、他の期間の対応するレコード間の距離に対応する累積距離値も保存されている。
【0129】
異なる期間の対応するレコード部分列間のユークリッド距離は、以下の式により求められる。
ここで、部分列はレコードpからqまでにわたる。
【0130】
このように、異なる期間における2つの対応する部分列間のユークリッド距離は、保存された累積距離値から速やかに算出することもできる。
【0131】
累積距離値は、データベースに保存され、後続の要求に対して再利用されてもよい。
【0132】
従って、異なる期間における2つの対応する部分列間の距離を求める要求があった場合に行わなければならない処理は以下の通りである。
1.注目する部分列の開始と終了、2つの注目する期間に対応する累積距離値をフェッチする処理
2.部分列の終了における累積値から部分列の開始における累積値を減算する処理
3.2つの累積値間の差の平方根を計算する処理
【0133】
一方、従来のデータベースを用いた比較例では、2つの部分列間の距離は、ユーザの要求に応じて、データベースに保存された生データから直接計算される。よって、ユーザの要求があった場合に行わなければならない処理は以下の通りである。
1.2n個(nは部分列の長さ)のレコードをフェッチする処理
2.n回の減算処理(異なる期間の部分列から対応するレコードを用いて行われる)
3.n回の乗算処理(差の2乗を求めるため)
4.(n−1)回の加算処理
5.1回の平方根処理
【0134】
このように、本実施例では、ユーザ要求によって生じるデータ検索・計算コストを、従来のデータベースを使った比較例に比べて、大幅に削減することができる。注目する部分列が長いほどコストは削減される。
【0135】
本発明の第1の態様の実施形態によれば、注目する期間(通常、最近の期間)と、他の少し離れた期間との間で、注目する期間とぴったり一致する過去の期間を見つけ出すためのパターンマッチングを行うこともできる。
【0136】
この場合、注目する部分列と、各注目する過去期間の対応部分列との間のユークリッド距離が計算される。その後、ソート処理により、注目する期間の部分列からのユークリッド距離が最短の過去データ部分列を特定する。
【0137】
本発明の第1の態様の本実施形態では、データベースへのデータ入力の際、累積ユークリッド距離を計算・保存するのに相当な数の処理を行わなければならないことが分かる。しかしながら、ここで保存されたデータの再利用が可能なため、要求当たりのオーバーヘッドは、要求数の増加と共に減少する。
【0138】
[実施例5]データのプリフェッチング
通常、本発明の第2の態様に係る方法により行われるデータ要求は、要求されたデータ期間の始点と終点をフェッチする処理から構成されている。待ち時間のためにフェッチ処理に費用がかかる場合(データベースへのアクセス時、ネットワークを介したフェッチング時など)、更なるフェッチ作業に対する待ち時間オーバーヘッドを解消し、キャッシング時の時間局所性を利用するために、データをプリフェッチすることは有益である。
【0139】
本実施例では、以下の場合を通じてプリフェッチングの概念を説明する。現在、連続的なリアルタイム要求の最中で、現時刻は時間105であるとする。この要求には、データベースの更新時に10個の最新の累積値の開始と終わりをフェッチする処理が含まれ、例えば、その10個の最新の測定値を求めることができる。
【0140】
本発明の第2の態様に係る方法の実施形態では、データベースAから第1終了累積値をフェッチする時(時間96に対応する)、例えば、時間100に対応する累積値までのすべての累積値もフェッチされ、ローカルキャッシュBに保存される。それらの累積値は、時間106や107などの累積値でデータベースが更新される際、必要に応じてキャッシュから読み出され、後続の要求に応じて利用される。
【0141】
データベースAからの累積値の読み出しコストがα、キャッシュBからの累積値の読み出しコストがβである。
【0142】
ここで、表3に、データベースの更新毎に連続的な要求に対するフェッチ/読み出し処理にかかるコストを示す。
【表3】
【0143】
表3には、第1要求の受領時に、時間96〜100の累積値が、データベースAからコストαでフェッチされ、キャッシュBに保存される様子が示されている。その後、累積値96はキャッシュBからコストβでフェッチされ、累積値105はデータベースAからコストαでフェッチされる。これらの2つの累積値は、この場合、時間96から105までの測定レコードの平均を計算するのに利用される。
【0144】
そして、データベース更新後、時間106の最新の累積値を求めるため次の計算がおこなわれる。この値は、データベースAからコストαで読み出され、終了値97はキャッシュBからコストβで読み出される。
【0145】
この処理を、キャッシュに保存された値がなくなるまで、もしくは、ユーザからの計算要求がなくなるまで繰り返す。
【0146】
この実施例では、データベース更新時の列の開始値と終了値を求めるためにかかる総読み出し/フェッチングコストは、6α+5βとなる。
【0147】
一方で、本発明の第2の態様の方法が上記のようなやり方で適用されない場合、5つの列の開始・終了値をフェッチするのにかかる総読出コストは、10αとなる(つまり、10個の開始・終了値をそれぞれデータベースAからフェッチしなければならない)。
【0148】
データベースからのデータフェッチにかかる待ち時間コストαが、キャッシュからのデータフェッチにかかる待ち時間コストβよりもはるかに大きいと仮定すると、上記のようなプリフェッチングによって連続的な要求に対する全待ち時間コストが大幅に削減されることとなる。
【0149】
[実施例6]様々な粒度を有するデータベースの構築
本発明の第3の態様に係る本実施形態では、受け取ったデータはすべて一次データベースに保存される。また、以下の(i)又は(ii)の時刻から遡って測定された所定の時間間隔に対応するレコードを保存する二次データベースも構築される。
(i)データベースの最新更新時刻
(ii)現在時刻
【0150】
時間間隔が最新更新時刻から遡って測定されたものである場合、二次データベースは、新しいレコードが入力されるたびに更新される。一方、時間間隔が現在時刻から遡って測定されたものである場合、二次データベースは、例えば、毎秒更新される。
【0151】
一例を挙げれば、二次データベースには、最新の更新より5秒、30秒、5分、30分、2時間遡ったレコードが保存される。このようにして、二次データベースには、最新データに関連する多数のレコードと、過去データに関連する少数のレコードが保存される。つまり、最新データの方が、過去データよりもデータベースの粒度が大きいということになる。
【0152】
考え得る二次データベースの構造としては、所定の割合のデータが高粒度で与えられ、その残りが低粒度で与えられる。例えば、合計600分(10時間)の期間に得られたデータを例にとった場合、その期間にレコードされたデータは、以下の表4に示すように保存されてもよい。
【表4】
【0153】
この例では、二次データベースに必要な保存領域は、すべてのデータが1/1000秒の粒度で保存される一次データベースに必要な保存領域の約5%にすぎない。
【0154】
[実施例7]条件付きソート
本実施例では、データベースには、金融商品に関連するデータ、例えば、各金融商品の市場指標が保存され、データは市場指標の値によってソートされる。市場指標が更新されると、データ値の順序がバラバラになってしまうため、データベースの再ソートを行う必要がある。
【0155】
本発明の第4の態様に係る本実施形態によれば、データソートは以下のアルゴリズムによって実行される。
for i= 2 to n
if x[i] < x[i-1]
sort_instruments
return
ここで、iは金融商品、x[i]はその金融商品の市場指標である。
【0156】
このようなデータベースの再ソートは、市場指標による金融商品の順序が狂っている場合にのみ実行される。そのため、再ソート処理にかかる計算コストは、データの順序が狂っている場合に限られ、それ以外の場合では、データのトラバースにかかるコストのみが発生する。
【0157】
例えば、データベースは、10個の金融商品に関連する市場指標を保存するよう構成されてもよい。その場合、市場指標は毎秒更新されるが、データは市場指標の5分平均に基づいてソートされる。この場合、データベースを1秒ごと(市場指標の更新時)にトラバースして、値がまだ順番通りに並んでいるかどうかを判定し、値の順番が狂っている場合にのみデータの再ソートを行う。5分平均は変動が小さいため、データの再ソートはほとんど必要なく、それによりソート処理にかかる計算コストが削減されることとなる。
【0158】
データベースの操作にかかる全計算コストは、条件付きソートアルゴリズムを用いた場合、データベースの値が更新されるたびにソートがおこなわれる従来のソート処理と比較して、最大50%の削減が可能であることが、これまでの実験から分かっている。
【0159】
[実施例8]市場指標
本発明の第1の態様に係るデータベースは、一般に入手可能な生データから完全なオーダーブックを作り上げることで得られる記述金融指標を生成するのに利用されてもよい。
【0160】
本実施例では、データベースは、一般的な金融指標の生成に用いられる金額、出来高、売買、価格、利益、利益の二乗、利益×指標などのデータの種類を提供するためのものである。本実施例のデータベースの利点としては、あまりに大量で重要ではないため、これまであまり関心を持たれなかった取引やオーダーブック更新から抽出されたその他の非典型的な変数を提供するのに用いられ得ることである。これら変数が一定期間にまたがる統計的尺度で表されるデータベースの集合的性質から、変数を個別に見たのでは得られないような意義深い知見を得ることができる。典型的な変数は詳細に分解され、例えば実行された取引は以下のように分解される。売り/買い取引により実行された正常/非公開/例外である。オーダーブック変更により保留中のオーダーを以下のように分解できる。それぞれのオーダーブック価格レベルに係わるビッド側/アスク側の追加/削除、またはそれらの任意の組み合わせである。取引/オーダーはその後典型的でない金融指標の特定に用いられてもよい。
【0161】
オーダーブック合成の処理を以下に示す。
【0162】
[レベルII更新によるレベルIII(完全オーダーブック)の合成]
通常、レベルIIIは、マーケットメーカーや専門家だけが入手可能なデータであるが、以下の手法により、より一般的に入手可能なレベルIIデータメッセージを用いて合成することができる。
【0163】
メッセージ・フォーマット
表5のデータフィールドは、合成処理への入力として入手可能で、本書に含まれる金融指標を生成するのに必要な最低限の情報量を示すものとする。
【表5】
【表6】
【0164】
表6のすべての表(inputTR_tableを除く)及びリストは、ビッド側とアスク側の両方に存在する。
【0165】
上記処理には、市場のメッセージを用いて記入された入力オーダーブックの合成結果として、完全オーダーブックに対して一連の表及びリストを維持する工程が含まれる。
【0166】
【0167】
処理1
本処理は、オーダーブックの動きとして、入力メッセージの分類が行われた際に開始され、メッセージを最新inputOB_table(レベルII)に組み込む工程と、最新fullOB_table(レベルIII)と比較する工程と、新tempOB_table(レベルIII)とchange_listを生成する工程とから構成されている。その後tempOB_tableが最新のfullOB_tableとなり、change_listは取引メッセージに利用可能となる。
【0168】
以下の4ステップアルゴリズムを実行することで、inputOB_tableとfullOB_tableとの比較と、必要な変更とが行われる。なお、アルゴリズムのすべての工程は、初期の価格マッチに応じてアスク/ビッドの表やリストに適用可能である。表/リスト/ポインタへのその後の変更は、一致する側に対して行われる。
【0169】
削除された価格
最新メッセージは、古い価格レベルがオーダーブックから削除されていることを示す。
[状態]
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
【0170】
追加された価格
最新メッセージは、新しい価格レベルがオーダーブックに追加されていることを示す。
[状態]
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
【0171】
同じ価格
最新メッセージは、オーダーブックの現価格レベルに影響を与えない。
[状態]
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
両ポインタがオーダーブック表の最高価格を指している場合、市場状態を「オープン」に更新。
【0172】
価格下落
現在level2_sizeより低い価格レベル
[状態]
inputOB_pointer > level2_size
[更新]
追加 tempOB_listへ[price(fullOB_table, fullOB_pointer), vol(fullOB_table, fullOB_pointer)]
増分 fullOB_pointer
価格レベルは、レベル2サイズの限界を超えた場合に変更される可能性があり、戻ってきたときに完全に正確なものではないこともある。
【0173】
処理2
本処理は、取引として、入力メッセージの分類が行われた際に開始される。本処理では、入力メッセージがinputTR_tableに変換され、最新change_listに対する一致や変更処理が行われる。change_listは、すべての取引やオーダーブックの動向の要約であり、金融指標生成のための主な入力ソースである。
【0174】
アルゴリズムは、inputTR_tableのマッチングを行うことで、以下に示すその他の状態要件の他に、シーケンス番号が最も近いマッチをchange_listから探し出す。なお、アルゴリズムのすべての工程は、初期の価格マッチに応じてアスク/ビッドリストに適用可能である。リストへのその後の変更は、一致する側に対して行われる。
【0175】
正常
[状態]
vol(inputTR_table) = vol(change_list)
price(inputTR_table) = price(change_list)
又は
市場状態=オープン
[更新]
正常取引として、change_listに(price, vol)をマーク
市場状態がオープンの場合、最高レベルでの最小ビッド/アスク数量を決定し、取引総数がその最小数量に等しくなるまですべての取引に対するループとマークを行う。
【0176】
非公開
[状態]
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)をマーク
なお、取引メッセージを受信しないとオーダーブックの動向状態が判別できないため、その動向が取引であるかどうかの判定には遅延が存在する。これは、上記情報の交換処理の方法が直接の原因となっている。
【0177】
[記述的金融指標]
金融指標は、{データ種類、動作、動作種類}の3個の要素から構成されている。表7、表8には、各要素が示すものが簡単に説明されている。なお、オーダーとは、取引済みオーダー(実行済み)や未決オーダー(オーダーブックに待機中)を示してもよい。
【表7】
【表8】
【表9】
【0178】
データ種類には、所望の動作や動作種類に応じて、表10に示す選択基準を満たす特定の期間内の単一商品に対する全オーダーが含まれている。
【表10】
【0179】
一例を挙げれば、{金額、保留、ビッド}は、価格合計×ある特定の商品に対してまだオーダーブックのビッド側で保留中の全オーダー量を示し、待機中購入オーダーを示している。
【0180】
ある期間中(例えば、1秒間)に生じた変化を蓄積し、前述の金融指標によってそれらを要約することは有利である。なぜなら、そのようなデータを閲覧する一般ユーザは、いかなる場合にも、実際に1秒以下で生じる変化をモニタすることはできないからである。その結果、ユーザへの配信の際、データコストが大幅に削減されることとなる(そのようなコストは、帯域幅コスト以外にI/Oコストであることがある)。
【0181】
以下の説明及び実施例には、本発明の第5、第6の態様に関し、特定データ列の最小値をより簡単に特定できるよう、データベースをどのように適応させることができるかが示されている。特定データ列の最大値も同様に特定可能である。データベースの構築やクエリに用いられるアルゴリズムを以下に示す。
【0182】
簡潔にするために、以下に示す実施例は、最大でも20個までの値を有する、比較的短いデータ列に関するものである。しかしながら、技術手段の使用により特に効果的なデータ列評価を可能とする以下の処理の原則は、非常に大きなデータ列にも容易に適用可能なことは明らかである。
【0183】
コンピュータシステムのデータベース形成部に保存されたサンプルデータ列をはじめ、データ列のレコードの中間記述を生成し、注目する部分列の最小値の特定・抽出を単純化することを目的とする。この中間記述によって、列が極小値によって境界される一連の部分列に分けられる。中間記述や一連の部分列は、カバレッジマッピングとして知られる技術によって生成される。
【0184】
[実施例9]
カバレッジマッピング技術の例を、表11に示すサンプルデータセットを用いて説明する。表11のサンプルデータセットには、それぞれ位置に割り当てられた10個のレコードが含まれている。位置番号は、データベースの「方向」を定めている。すなわち、位置番号は、データベースの順方向に増加し、その逆方向に減少する。データレコードは、通常、データベースに時系列的に入力される。つまり、第1位置には一番古いレコードが、最大位置番号には最新のレコードが含まれることになる。
【表11】
【0185】
中間記述の生成には、データ列の各データレコードrに対して、以下の操作を一番古いレコードから最新のレコードへと順に行う必要がある。
【0186】
[操作1]
現在位置を起点として、対象となる最古値の位置を調べる。つまり、現在のレコード(r)以下の値を有するレコード(r)に遭遇するまで、古いレコードに向かってデータベースを遡る。そして、レコード(r)の位置により、現在位置の範囲値を決定する。範囲値は、(位置(r)+1)により求められる。検索基準に該当するレコードがない場合、位置(r)=0、範囲値は1となる。
【0187】
表12に、各レコードに対する範囲値を示すよう更新された、表1のデータセットを示す。
【表12】
【0188】
範囲値とは、データセット内の局所傾向を示す識別子である。レコード値が一定に保たれる又は時間と共に増加する局所傾向の場合(例えば、位置4から位置6までの部分列の場合)、範囲値と位置値は同じ値となる。一方、レコード値が時間と共に減少する局所傾向の場合(例えば、レコード7からレコード8までの部分列の場合)、範囲値は位置値よりも低い値となる。
【0189】
[操作2]
範囲値がレコード(r)の位置未満である場合、範囲位置(r)(ただし、これを含まない位置)から現在位置(r)(を含む位置)までの過去の全レコードに、現在位置のレコード値を付与する。これは、本作業がデータ列の過去のレコードに対して実行される際に割り当てられたラベルの上書きを意味する場合もある。表13には、10個のレコードすべてに対して操作1、2を順に行った結果得られる、表11のデータベースの修正版を示す。
【表13】
【0190】
データ列の各レコードに対して操作1、2が順に実行されると、この修正データベースは、入力データ列の最小値の特定に利用することができる。
【0191】
最新レコードから遡る特定のデータ列の最小値を特定するためには、その特定データ列の始まりを示す位置のラベルを特定する必要がある。本実施例では、最新データ値が位置10に含まれる場合、最近の5個のレコードの最小値が、5番目の最新レコードのラベル、すなわち、位置6のラベルにより求められる。同様に、最近の9個のレコードの最小値が、9番目の最新レコードのラベル、すなわち、位置2のラベルにより求められる。
【0192】
本実施例では、最小値の特定方法は、注目するデータ列が最新レコードから遡る場合にのみ有効である。このデータベース(各レコードの範囲値やラベル値を含む)は、データベースに新しいレコードが追加されるたびに更新する必要がある。
【0193】
[実施例10]
表14に、データベースに新しいレコードが入力されるたびに行われる一連の段階におけるデータベースの構築を説明する具体例を示す。データベースには、段階1において、位置1に1個のレコードが含まれ、段階nにおいて、n個のレコードが含まれ、n番目のレコードは位置nにある。データベースに新しいレコードが挿入されるたびに、「アルゴリズム工程」の行に示されるように、範囲値及びラベル値が更新される。
【表14】
【0194】
各段階において、データベースにより、最新レコードから遡る特定のデータ列の最小値を決定してもよい。そのため、ステージnでは、第n番目のレコードから遡る特定のデータ列の最小値を特定することもできる。
【0195】
例えば、段階4では、最後の2個のレコードの最小値が、この場合3に相当する2番目に新しいレコードのラベル、すなわち、位置3のラベルにより与えられる。
【0196】
段階5では、最後の2個のレコードの最小値が、この場合5に相当する2番目に新しいレコードのラベル、すなわち、位置4のラベルにより与えられる。
【0197】
[実施例11]
表15〜18に、長いデータ列に対する中間記述の生成方法を示す。この表では、最近入力されたレコード値に対して、範囲やラベルが更新されている。段階5、10、15、20に対する(すなわち、5個、10個、15個、20個それぞれのレコード入力後の)データベースのスナップショットを表に示す。各特定の段階で、最新のレコードから遡る注目するデータ列に対して、サンプルクエリが示されている。
【表15】
【表16】
【表17】
【表18】
【0198】
[部分列における最大値の決定]
データベースの構築及びクエリを行うための実施例9〜11に示す方法及びアルゴリズムは、データベースの部分列の最大値が特定可能なように改良が加えられてもよい。
【0199】
ここでも同様に、各データベースのレコードは、「位置」に割り当てられている。レコードは、通常、最も古いレコードが位置1に、n番目のレコードが位置nに割り当てられるよう、データベースへと時系列で入力される。そのため、位置番号は、データベースの順方向に、例えば、レコードが新しくなるにつれて増加し、その逆方向に、例えば、レコードが古くなるにつれて減少する。
【0200】
データ列の各データレコードrに対して、以下の操作を最も古いレコードから最も新しいレコードへと順に行うことで、データの中間記述が生成される。この中間記述は、新しいレコードが追加されるたびに更新する必要がある。
【0201】
操作1:
現在位置を起点として、カバーされている最古値の位置を調べる。つまり、現在のレコード(r)以上の値を有するレコード(r)に遭遇するまで、古いレコードに向かってデータベースを遡る。そして、レコード(r)の位置により、現在位置の範囲値を決定する。範囲値は、(位置(r)+1)により求められる。検索基準に該当するレコードがない場合、位置(r)=0、範囲値は1となる。
【0202】
操作2:
範囲値がレコード(r)の位置未満である場合、範囲位置(r)(ただし、これを含まない位置)から現在位置(r)までの過去の全レコードに、現在位置のレコード値を付与する。これには、本操作がデータ列の過去のレコードに対して実行される際に割り当てられたラベルの上書きが必要となる場合もある。
【0203】
[実施例12]
表19に、データベースに新しいレコードが入力されるたびに、最大値の決定に用いられるデータベースが一連の段階においてどのように構築されるかを示す。データベースには、段階1において、位置1に1個のレコードが含まれ、段階nにおいて、n個のレコードが含まれ、n番目のレコードは位置nにある。データベースに新しいレコードが挿入されるたびに、「アルゴリズム工程」の行に示されるように、範囲値及びラベル値が更新される。
【表19】
【0204】
このデータベースにより、任意の段階における最新のレコードから遡る特定のデータ列に対して、最大値を決定することができる。そして、例えば、段階5では、直近4個のレコード内の最大値は、この場合、17の値を有する、位置2のラベルにより与えられる。
【0205】
本実施例では、注目する部分列の最大値を特定するクエリは、データ列がデータベースに追加された最新レコードから遡る場合にのみ有効である。
【0206】
以上、上述の例示的実施形態を用いて本発明を説明したが、当業者には、本開示に照らして他の多くの改良や変更が明らかとなるであろう。従って、上述の本発明の例示的実施形態は、例示説明を目的とするものであり、本発明に対して何ら制限的な意味を有するものではない。また、上記実施形態には本発明の精神と範囲を逸脱することなく種々の変更が可能である。
【0207】
上記参照文献はいずれも参照により本書に含まれる。