説明

OLTP環境における統計アプリケーション

本発明は、統計計算のためにSQL文を呼び出す集中的な計算負荷を低減する、OLTP環境における統計アプリケーションの方法を提供する。当該方法は、時間要素を統計レコードに導入し、当該時間要素を使用して、以前に計算した統計レコードの時間状態を判定する。当該システムは、統計レコードに対する問い合わせを受け取ると、最初に既存の統計レコードのコピーを検索し、見つかった場合に、該統計レコードの時間状態を照合する。当該システムは、記録が存在し、かつ失効していない場合に、該統計レコードを照会者に送り、記録が存在しないか、失効していた場合にだけ、SQL文を呼び出して統計レコードを計算する。統計レコードは、データベース内の統計表および/またはアプリケーションサーバのキャッシュ内に配置され得る。開示される戦略は、システムの攻撃耐性も増加させ得る。

【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2007年11月9日出願の「OLTP環境における統計アプリケーションのための方法およびシステム(METHOD AND SYSTEM FOR STATISTICAL APPLICATIONS IN OLTP ENVIRONMENT)」と題する中国特許出願第200710188104.X号の優先権を主張するものであり、この中国特許出願は、参照することによってその全体が本明細書に組み込まれる。本発明は、コンピュータネットワークアプリケーションの分野に関し、より具体的には、オンライントランザクション処理(Online Transaction Processing:OLTP)環境における統計アプリケーションの方法およびシステムに関する。
【背景技術】
【0002】
コンピュータアプリケーションは、長期間にわたって全ての分野に深く浸透している。電子商取引を処理するためのコンピュータネットワークおよび統計アプリケーションを使用することが、現代ビジネスの流れとなってきている。統計アプリケーションの一例は、実表の統計に基づく集計表である統計表を使用することである。高可用性OLTP環境において、実表は、通常、相当な量のデータを有し、かつ連続的に変化している。統計表内のレコードは、アプリケーションのアクセスの必要性を満たすように、特定のルールに従って更新される。統計表は、リアルタイムの情報に迅速かつ好都合にアクセスできるようにし、また、リアルタイムの監視を行うことができる。しかし、このような利益を受けるには、より厳しい基準が統計表アプリケーションに必要である。
【0003】
OLTP環境において、システム実表は、特定のデータベースのメタデータを実際に記憶する、基になる表である。ユーザは、通常、特定のルールに従って、比較的多数のレコードを有する基になる表に基づいて、リアルタイムの統計を計算する。当初は、この種類の統計戦略は、アプリケーションの必要性を満たし、許容可能な機能を提供することができていた。しかしながら、ユーザの数が増加するにつれて、ウェブサイトへの訪問数が指数関数的に増加し、その結果、統計SQL(Structural Query Language:構造的問い合わせ言語)文を実行する頻度が急速に増加した。さらに、各統計計算において走査されるレコードの平均数が増加するため、統計関数を実行するSQL文の各実行にかかる平均コストが増加し続けている。一例は、大きい電子商取引ウェブサイトにおける会員レビューの統計である。比較的に高評価の(例えば、他の会員によるレビュー評価が高い)ユーザに対して、この種類の統計は、非常に複雑になり得る。ユーザのレビュー数が高い場合、多数のユーザが、ウェブページ上に表示されるユーザのレビュー結果を同時に閲覧している時、またはレビュー結果を表示するウェブページが不当にリフレッシュされた時は、データベース性能の問題が生じ得る。その結果、ユーザによって要求されるウェブページが、長時間経過した後であっても表示されない場合があり、不十分なユーザエクスペリエンスをもたらす。別の例は、ユーザの異常なログオン行為数の監視である。不当なログオン攻撃の下では、ユーザのログオン操作を記録する実表内のレコード数が、短期間に数十万に達し得る。ユーザのログオンが正常であるかどうかをリアルタイムで判定する統計SQLは、ログオン攻撃の数が増加するにつれて、実行がますます遅くなる。アプリケーションサーバは、データベースから戻される結果をすぐに受け取らないので、データベースサーバの待ち行列がより長くなり、接続プールのための待ち行列も増加する。これは、アプリケーションサーバ内の故障をもたらす。
【0004】
既存の技術におけるOLTPの顕著な特徴のうちの1つは、SQL文のその頻繁な実行である。これらのSQL文のうちのいくつかは、統計関数を完了するために必要とされ、CPU(Central Processing Unit:中央処理装置)の占有率が高いこと、および論理および物理的読み取り数が特に高いことを特徴とする。これらの文の実行が一定の頻度に到達した場合、データベースシステムの機能性が悪化する場合があり、ユーザの要求に対するアプリケーションシステムの応答がより遅くなる。
【発明の概要】
【発明が解決しようとする課題】
【0005】
OLTP環境では、高いページ閲覧数が避けられない場合がある。上述のように、実表に対する直接的な統計の計算は、大量のCPU時間を費やし、比較的に高い論理および物理的読み取り数を有するので、データベースサーバの作業負荷が、常に高いままになり得る。さらに、この方法の1つの非常に深刻な不利な点は、システムが、攻撃に対する弱い耐性を有し得ることである。例えば、大きい電子商取引ウェブサイトに対して、ユーザが統計ウェブページを頻繁にリフレッシュする、または不当にログオンし続ける場合、データベースシステムの性能に影響を及ぼす恐れがあり、また、ビジネスシステム全体の信頼性および一貫性が低下する恐れがある。
【0006】
したがって、実表に対して統計を直接計算する従来の方法は、ビジネス開発の必要性を満たすことができなくなりつつあり、早急に変更することが必要となり得る。
【課題を解決するための手段】
【0007】
本発明は、統計演算のためにSQL文を呼び出す集中的な計算負荷を低減し、かつより良好なユーザエクスペリエンスのためにビジネスシステム全体の信頼性および一貫性を向上させる、OLTPにおける統計アプリケーションの方法を提供する。開示される統計アプリケーションのための戦略は、攻撃耐性を増加させ、かつシステム全体の信頼性も向上させ得る。
【0008】
本発明は、時間要素を統計レコードに導入し、該時間要素を使用して、以前に計算した統計レコードの時間状態を判定する。システムは、統計レコードに対する問い合わせを受け取ると、最初に既存の統計レコードのコピーを検索し、見つかった場合に、当該統計レコードの時間状態を照合する。システムは、レコードが存在し、かつ失効していない場合に、当該統計レコードを照会者に送り、レコードが存在しないか、失効していた場合にだけ、SQL文を呼び出して統計レコードを計算する。統計レコードは、データベース内の統計表および/またはアプリケーションサーバのキャッシュ内に配置される。
【0009】
本発明の一態様は、OLTP環境における統計アプリケーションの方法である。当該方法は、統計表を含むデータベースに問い合わせて、記録の同一性を有する統計レコードが存在するかどうかを判定する。統計レコードが存在する場合に、当該方法は、統計レコードの時間要素を照合し、統計レコードが失効しているかどうかを判定する。統計レコードが失効していない場合、当該方法は、その統計レコードを照会者に送り、また、統計レコードが存在しない、または失効していた場合には、当該方法は、統計レコードを計算するように、SQL文を呼び出す。
【0010】
一実施形態において、データベースは、データベースサーバ内に記憶される。データベースは電子商取引システムの一部であってもよく、また、統計レコードは、電子商取引システムのユーザの統計データを含んでもよい。アプリケーションサーバは、問い合わせをデータベースに送るのに使用されてもよい。本実施形態において、当該方法は、データベースに問い合わせる前に、最初に、統計レコードがアプリケーションサーバのキャッシュ内に存在しているかどうかを判定してもよい。統計レコードがキャッシュ内に存在する場合に、当該方法は、キャッシュ内の統計レコードが失効しているかどうかを判定する。キャッシュ内の統計レコードが失効していない場合に、当該方法は、キャッシュ内の統計レコードを照会者に送る。
【0011】
統計レコードの時間要素は、統計レコードが最後に更新または作成された時を示す、時間マーカーを有してもよい。統計レコードの時間要素は、統計レコードが最後に更新または作成された時の時間から現在の照会の時間までをカウントする閾値時間幅をさらに有してもよい。時間マーカーは、統計レコードのデータフィールド内に保存することができる。
【0012】
統計レコードの同一性識別子は、キーワードを有してもよく、したがって、データベースの問い合わせは、キーワードに一致する問い合わせ語によって行われてもよい。この場合、統計レコードの時間要素は、統計レコードのキーワードに対応する、予め設定された時間マーカーを有してもよい。
【0013】
一実施形態において、統計を計算するためにSQL文を呼び出すと、当該方法は、SQL文の計算結果を統計表に挿入して、統計レコードを更新または作成する。アプリケーションサーバが使用される時、当該方法は、計算結果をアプリケーションサーバ内にキャッシュして、その中の統計レコードのコピーを作成または更新してもよい。
【0014】
別の実施形態において、OLTP環境における統計アプリケーションの方法は、最初に、統計表を記憶しているキャッシュメモリを有するアプリケーションサーバに問い合わせ、失効していない要求された統計レコードのコピーが統計表内に存在するかどうかを判定する。存在する場合に、当該方法は、その統計レコードを照会者に戻し、統計レコードが存在しない、または失効していた場合には、当該方法は、統計レコードについてデータベースサーバに問い合わせる。
【0015】
本発明の別の態様は、OLTP環境における統計アプリケーションのシステムである。当該システムは、データベースサーバ内にホストされるデータベースであって、それぞれがレコードの識別子および時間要素を有する複数の統計レコードを有する統計表を含む、データベースを有する。当該システムは、複数の統計レコードの中の要求された統計レコードについて、データベースに問い合わせるための問い合わせ手段と、論理手段であって、要求された統計レコードが見つかった場合に、統計レコードの時間要素を照合して、統計レコードが失効しているかどうかを判定する決定と、統計レコードが失効していない場合に、統計レコードを照会者に送る決定と、統計レコードが存在しない、または失効していた場合に、要求された統計レコードを計算するように、SQL文を呼び出す決定と、を行うための論理手段と、を備える。当該システムは、呼び出されたSQL文を実行し、かつデータベースの統計表において要求された統計レコードを作成または更新するための計算手段を有する。一実施形態において、当該システムは、要求された統計レコードのコピーについて、アプリケーション内のキャッシュに問い合わせるための問い合わせ手段と、同様の決定を行うための論理手段と、をさらに有する。
【0016】
本開示のさらに別の態様は、複数の命令をそこに記憶させた1つ以上のコンピュータ可読媒体であって、その命令は、1つ以上のプロセッサによって実行された時に、当該命令がプロセッサに本明細書で説明されるプロセスの動作を実行させる、1つ以上のコンピュータ可読媒体に関する。
【0017】
既存の技術と比較して、本明細書で開示される方法およびシステムは、潜在的に複数の利点を有する。当該方法およびシステムは、実表にのみに基づくのではなく、統計表に基づいて構築される統計戦略に基づいている。この設計は、全体として、OLTPデータベースシステムの作業負荷を低減すること、攻撃耐性を増加させること、かつシステムの信頼性を向上させることができる。
【0018】
この要約は、詳細な説明において以下でさらに説明される概念のいくつかを選択して、簡素化された形態で紹介するために提示される。この要約は、請求される主題の主要な特徴または基本的特徴を特定することを目的としておらず、請求される主題の範囲を決定する一助として使用されるものでもない。
【図面の簡単な説明】
【0019】
詳細な説明は、添付の図面を参照して記載される。図面において、参照番号の左端の数字は、参照番号が最初に現れる図面を識別する。異なる図面における同一の参照番号の使用は、同様または同一の項目を示す。
【図1】本開示による、OLTP環境における例示的な統計アプリケーションの全体的なプロセスのフローチャートである。
【図2】例示的な統計アプリケーションにおけるアプリケーションサーバプロセスのフローチャートである。
【図3】例示的な統計アプリケーションにおけるデータベースサーバプロセスのフローチャートである。
【図4】本開示による、OLTP環境における統計アプリケーションのシステムの概略構造図である。
【図5】本開示の方法を実施するための例示的な環境を示す図である。
【発明を実施するための形態】
【0020】
開示される方法およびシステムの例示的な実施形態を、図面を参照して以下に詳細に説明する。この説明において、プロセスが説明される順序は、限定として見なされるものではなく、任意の数の説明されるプロセスブロックを任意の順序で組み合わせて、当該方法または代替方法を実施することができる。
【0021】
図1は、本開示による、OLTP環境における例示的な統計アプリケーションの全体的なプロセスのフローチャートを示している。
【0022】
ブロックS101において、統計レコードに対する要求が受け取られる。要求は、統計レコード内に含まれる特定の統計結果または統計データを要求するエンドユーザによって開始されてもよい。ユーザの要求は、通常、統計レコードを呼び出すように、アプリケーションサーバまたはデータベースサーバに送られる内部問い合わせに変換される。従来のSQLに基づく統計アプリケーションでは、問い合わせは、SQL文を呼び出すように、統計のための基本データ(例えば、作表された生データを含む実表)を含むデータベースサーバに直接送られ、データベースサーバによって実行されると、要求された統計結果を計算し、かつ計算された統計結果をユーザに戻す。しかしながら、図1の例示的なプロセスにおいて、問い合わせは、アプリケーションサーバに送られ、最初に処理される。以下にさらに示されるように、アプリケーションサーバは、以前に計算された統計結果のコピーをキャッシュ内に含む。
【0023】
ブロックS110において、アプリケーションサーバは、要求を処理して、要求された統計レコードがアプリケーションサーバのキャッシュ内に存在するかどうかを判定する。統計レコード(またはそのコピー)がアプリケーションサーバ内に見つかり、かつ失効していない場合に、アプリケーションサーバは、統計レコードを照会者(エンドユーザまたは内部照会を行う別のシステム構成要素)に送る。統計レコードが、アプリケーションサーバのキャッシュ内に存在しない、または失効している場合に、アプリケーションサーバは、データベースサーバ上のデータベース内の統計表に問い合わせる。
【0024】
本明細書に示されているように、特定の統計レコードが失効しているかどうかを示す時間状態は、統計レコードに関連する時間要素を使用して判定されてもよい。アプリケーションサーバプロセスS110において、時間マーカーが、アプリケーションサーバのキャッシュ内に設定されてもよい。
【0025】
換言すれば、図示の実施形態は、アプリケーションサーバ内にキャッシュを設定し、統計レコードがアプリケーションサーバで利用できる場合に、統計レコードを照会者に直接戻す統計戦略を使用する。この戦略は、全ての要求に応答してデータベースサーバにおいてSQLプロセスを呼び出さなければならない状態を条件付きで回避する。
【0026】
アプリケーションサーバが、統計レコードの時間状態(有効または失効状態)を照合することができるように、本開示は、時間要素を統計レコードに導入する。以下に示されるように、一実施形態において、統計レコードの時間要素は、統計レコードが最後に更新または作成されたのがいつなのかを示す、時間マーカーを含む。統計レコードが最後に更新または作成された時の時間から現在の照会の時間までをカウントする閾値時間幅も、時間マーカーとともに、統計レコードの時間状態を判定するために使用される。
【0027】
一実施形態において、時間フィールドは、複数の統計レコードを含む統計表の通常フィールドに追加される。通常フィールドは、統計のオブジェクトの属性または特性に基づく。例えば、統計のオブジェクトは、ユーザ名、取引履歴、活動履歴、および他の顧客による評価またはフィードバック等の、複数の属性または特性によって特徴付けられる顧客であってもよい。例示的な時間フィールドは、統計レコードが最終更新された時間のフィールドであり、本文書ではUpdated_Timeと称される。この追加的な時間フィールドは、統計の結果として生じるオブジェクトの最後の更新の時間を示し、また、特定の統計のオブジェクトに関連する統計レコードが有効であるか、または失効しているかどうかを判定するための時間基準である。追加的な時間フィールドを含む複数のフィールドを有する統計表の実施例を、表1に示す。
【0028】

【0029】
表1において、主キーは、統計のオブジェクト(または統計的オブジェクト)の識別子、すなわちIDであってもよく、統計のオブジェクトに関連する統計レコードの固有の同一性識別子である。主キーは、統計レコードを検索可能にするように、1つ以上のキーワードを含んでもよい。集計フィールドA、B、C、およびDは、統計のオブジェクトを特徴付ける任意の属性または特性とすることができ、ここでは、単に例示の目的のための実施例として使用される。統計および実際のビジネスが必要とするオブジェクトの特徴に従って、他の集計フィールドが追加されてもよい。
【0030】
ブロックS120において、データベースサーバは、プロセスを継続する。プロセスは、特定の状況下でだけ、例えば、要求された統計レコードが、アプリケーションサーバのキャッシュ内に見つけられなかった、または失効していることが分かった時にだけ、ブロックS120を実行するように、データベースサーバに到達する。一実施形態において、データベースサーバは、複数の統計レコードを含む統計表を記憶しているデータベースを有する。データベースサーバは、統計表内の要求された統計レコードの失効時間マーカーを事前に設定する。失効時間マーカーは、要求された統計レコードに関連付けられてもよい。例えば、失効時間マーカーは、統計レコードのキーワードに対応してもよい。データベースサーバは、統計レコードのキーワードに基づいて、統計表内の統計レコードについて問い合わせてもよい。
【0031】
統計レコードが存在し、かつ失効していない場合に、データベースサーバは、統計レコードを照会者に送る。統計レコードの時間状態は、本明細書に説明されているように、その対応する失効時間マーカーを通して判定されてもよい。統計レコードが存在しない、または失効していた場合に、データベースサーバは、SQL文を呼び出して、統計レコードを計算する。これは、統計データの実表を走査して、要求された統計レコードを取得することによって行うことができる。SQL文を実行した計算結果として統計レコードを取得した後に、データベースサーバは、該計算結果を使用して、統計表内の統計レコードを挿入または更新する。統計レコードはまた、アプリケーションサーバのキャッシュ内に配置されてもよい。データベースサーバの統計表は、表1に示されているものを使用してもよい。
【0032】
統計表は、複数の統計レコードを含んでもよく、また、各統計レコードは、それ自体の失効時間マーカーを有してもよいことに留意されたい。さらに、2つのインスタンスの統計レコードおよびその失効時間マーカーが存在し得、1つは、データベースサーバの統計表内にあり、もう1つは、アプリケーションサーバのキャッシュメモリ内にある。好ましくは、アプリケーションサーバおよびデータベースサーバ内の失効時間マーカーは、常に一定に保たれる。しかしながら、古いバージョンの統計レコードがアプリケーションサーバのキャッシュ内に保たれ、かつ新しいバージョンの同じ統計レコードがデータベースサーバの統計表内に存在する場合においても、方法およびシステムは、効率的には劣るが依然として機能する。1つの状況では、アプリケーションサーバ内の古いバージョンが失効しておらず、したがって、ユーザに戻される。したがって、ユーザは、わずかに古い統計レコードを受け取る。別の状況では、キャッシュ内の古いバージョンが失効しているので、データベースサーバによって問い合わせが処理され、その結果、新しいバージョンがユーザに戻される。これは、アプリケーションサーバのキャッシュが、適時に更新されている場合に、要求が、アプリケーションサーバレベルで成功裏に処理されており、データベースサーバには全く到達しないので、ユーザによって受け取られる統計レコードの新しさには影響を及ぼさないが、システム全体の意図する効率にはわずかに影響を及ぼし得る。
【0033】
上述したアプリケーションサーバレベルのプロセス、およびデータベースレベルのプロセスを、以下に詳述する。
【0034】
図2は、例示的な統計アプリケーションにおけるアプリケーションサーバプロセスのフローチャートを示している。
【0035】
上述のように、アプリケーションサーバのプロセスは、特定の条件が満たされる場合に、データベースサーバを呼び出さずに、要求を満たす機会を提供する。この場合、統計レコードは、データベースサーバにアクセスせずに、アプリケーションサーバからユーザに直接戻され得る。
【0036】
ブロック210は、アプリケーションサーバレベルでの問い合わせプロセスを表している。このブロックは、それぞれが問い合わせのステップを表す、2つのサブブロックS211およびS212を含む。
【0037】
ブロックS211において、アプリケーションサーバは、ユーザによって要求される統計レコードが、アプリケーションサーバのキャッシュ内にあるかどうかを判定する。統計レコードがキャッシュ内に存在する場合に、プロセスは、ブロックS212へと続く。存在しない場合に、プロセスは、ブロックS220へ進む。
【0038】
ブロックS212において、アプリケーションサーバは、要求された統計レコードが失効しているかどうかを判定する。このブロックにおける動作は、要求された統計レコードが、アプリケーションサーバのキャッシュ内に見つかった場合にだけ行われる。統計結果が失効していた場合、プロセスは、ブロックS220へと続く。データが失効していない場合、プロセスは、ブロックS230へ進む。
【0039】
一実施形態において、図1および表1を参照して上述したように、各統計レコードは、現在の統計レコードが直前に更新された時の時間を示す項目Update_Timeを含む、時間フィールドを有する。統計アプリケーションのためのシステムは、更新時間と組み合わせて、統計レコードが、依然として有効である、すなわち失効していないと認められる、更新時間から現在の時間までをカウントする最大時間幅に対する閾値を設定することができる。この失効閾値は、データベース内の統計レコードの時間状態を判定するための、データベースサーバによって使用される失効閾値と同一である必要はない。しかしながら、好ましくは、アプリケーションサーバにおける失効閾値およびデータベースサーバにおける失効閾値は、互いに矛盾する結果をもたらすように互いに食い違うべきではない。失効閾値の設定においては、多くの柔軟性がある。例えば、同じ統計表内の全ての統計レコードに適用可能な、普遍的な表現式の閾値が使用されてもよい。しかしながら、必要に応じて、異なる統計レコード、または異なる統計レコード群は、所与の異なる失効閾値であってもよい。アプリケーションサーバにおける失効閾値は、アプリケーションサーバ自体、またはデータベースサーバによって設定されるか、またはアプリケーションサーバおよびデータベースサーバの両方を制御する独立した制御装置によって設定されてもよい。アプリケーションサーバにおける失効閾値は、固定値として設定されるか、データベースサーバまたは別個の中央制御装置との通信を通して、動的に調整されてもよい。
【0040】
ブロックS220は、データベースサーバ段階での問い合わせプロセスを表す。このプロセスは、図3を参照して以下にさらに詳しく説明する。
【0041】
ブロックS230において、統計レコードは、照会者に送られる。この説明において、照会者は、システムの別の構成要素、またはシステムの実際の人間ユーザのいずれかであってもよい。
【0042】
アプリケーションサーバの上述のプロセスは、以下の擬似コードを使用して説明することができる。
【0043】
if (アプリケーションサーバのキャシュに統計レコードが存在する) then
{
if (現在のシステム時間 - Updated_Time > 閾値) then
キャッシュ内の統計レコードは失効しているので、データベースを呼ぶ;
else
キャッシュ内の統計レコードは有効なので、ユーザに送る;
end if;
}
Else
データベースを呼ぶ;
end if;
アプリケーションサーバのキャッシュ内の統計レコードが、失効している、または当該レコードがアプリケーションサーバのキャッシュ内に存在しない場合に、データベースの統計戦略が呼び出される。
【0044】
図3は、例示的なデータベースサーバプロセスのフローチャートを示している。プロセスS320は、図2のブロックS220の例示的な一実施形態である。図2において説明したように、プロセスは、アプリケーションサーバから送られる問い合わせによって開始される。代替として、このプロセスは、最初にアプリケーションサーバを通さずに、照会者から直接送られる問い合わせによって開始することができる。
【0045】
ブロックS321において、データベースサーバは、データベースサーバ内のデータベースの統計表内の要求された統計レコードについて問い合わせる。問い合わせは、表1に示されているように、統計レコードの主キーフィールドに従って行われてもよい。主キーフィールドは、統計レコードのIDとして機能する。主キーフィールドがキーワードを有する場合、問い合わせは、キーワードに基づくものであってもよい。
【0046】
統計レコードが統計表内に存在する場合に、プロセスは、ブロックS322へと続く。統計レコードが存在しない場合に、プロセスは、ブロックS327へ進み、SQL計算を呼び出す。
【0047】
ブロックS322において、データベースサーバは、統計レコードが失効しているかどうかを判定する。図2で説明されたアプリケーションサーバ内の統計レコードの時間状態を判定するために使用されるものと同様の方法を、この目的のために使用することができる。失効している場合に、プロセスは、ブロックS323へと続く。失効していない場合に、プロセスは、ブロックS325へ進む。
【0048】
ブロックS323において、データベースサーバは、要求された統計レコードの再計算のための統計SQL文を呼び出す。記録が存在しない場合に、統計SQL文は、ブロックS327において、初めてその記録を計算する。
【0049】
ブロックS324において、データベースサーバは、統計表内の統計レコードを更新する。
【0050】
ブロックS325において、データベースサーバは、キャッシュするためにアプリケーションサーバに統計レコードを送る。
【0051】
ブロックS321において、統計レコードがデータベーステーブル内に存在しないことを決定した後に、ブロックS327において、データベースサーバは、統計レコードの計算のために統計SQLを呼び出す。
【0052】
ブロックS328において、データベースサーバは、統計レコードを統計表に挿入する。プロセスは、次いで、ブロックにS325に戻る。
【0053】
上述のデータベースサーバプロセスS320の後に、プロセスは、次いで、ブロックS330へと続き、照会者に統計レコードを戻す。
【0054】
既存の技術において、統計SQL文を呼び出すステップは、プロセス全体の中で、システムリソースの大部分を消費する。開示される方法は、一度作成された統計レコードを一定の期間再利用することができるように、統計レコードの有効なライフサイクルを定めるよう失効時間フィールドを統計表内に設定することによって、この問題を解決する。これは、SQLルーチンの高頻度の呼び出しを回避する。開示される方法は、統計情報にアクセスする戦略的な方法を確立する。アプリケーションサーバは、データベースにアクセスせずに、多数の繰り返しアクセスがアプリケーションサーバ内で完了され得るように作成された統計情報をキャッシュし、したがって、データベースの作業負荷を低減する。データベースへのアクセスが必要な時であっても、当該方法は、SQL計算の無条件の呼び出しを行わない。その代わりに、統計表を、もうひとつの層のバッファとして使用することができる。統計レコードが統計表内に存在しない、または統計レコードが失効していることが分かった時にだけ、要求された統計結果を計算するために実表を走査するように、統計SQL文が呼び出される。したがって、SQL文を実行する計算負荷が低減される。
【0055】
換言すれば、システムは、2層のキャッシュまたはバッファを有し、一方の層は、アプリケーションサーバのキャッシュ内にあり、他方は、データベースの統計表内にある。両方の層が、要求された統計レコードを提供できなかった時にだけ、統計計算のための実表を走査するように、統計SQL文が呼び出される。よって、統計SQL文の実数が大幅に低減される。大部分の要求について、概して、アプリケーションサーバのキャッシュ内にヒットを見つけることができるので、データベースサーバの攻撃耐性が大幅に向上する。当該方法は、非常に高い頻度の要求に対して特に有効である。それは、この状況では、全ての要求に対して統計レコードが更新されることが必要となる可能性がほとんど無いからである。要求頻度が低い統計レコードの場合、データベースサーバのSQL文は、全ての要求に対して最も更新された統計レコードを計算することが必要となり得る可能性が高いが、そのようにしても、データベースに対して過度の負担を生じさせない。
【0056】
会員レビューの統計表について、極端な状況を考察する。会員の評価情報が全く要求されていない場合に、統計表は、この会員の評価の統計レコードを持たないことになる。同様に、ユーザの評価情報が長期間要求されていない場合は、評価の統計レコードが失効している可能性が高い。この統計レコードは、評価情報が要求されるまで更新されない。
【0057】
本開示は、OLTP環境における統計アプリケーションのシステムも提供する。当該システムは、データベースサーバ内にホストされるデータベースを有する。データベースは、それぞれが記録の同一性識別子および時間要素を有する複数の統計レコードを有する統計表を含む。当該システムは、統計レコードの中の要求された統計レコードについて、データベースに問い合わせるための問い合わせ手段と、論理手段であって、要求された統計レコードが見つかった場合に、要求された統計レコードの時間要素を照合して、統計レコードが失効しているかどうかを判定する決定と、要求された統計レコードが失効していない場合に、統計レコードを照会者に戻す決定と、要求された統計レコードが存在しない、または失効していた場合に、実表を走査して要求された統計レコードを取得するように、SQL文を呼び出す決定と、を行うための論理手段と、も有する。
【0058】
一実施形態において、システムは、要求された統計レコードのコピーについて、アプリケーション内のキャッシュに問い合わせるための問い合わせ手段と、論理手段であって、要求された統計レコードのコピーが、キャッシュ内に見つかった場合に、統計レコードのコピーの時間要素を照合して、統計レコードのコピーが失効しているかどうかを判定する決定と、統計レコードのコピーが失効していない場合に、統計レコードのコピーを照会者に送る決定と、を行うための論理手段と、をさらに有する。
【0059】
上述の問い合わせ手段、論理手段、および計算手段は、当技術分野で現在利用可能である、または将来的に利用可能になり得る種々の方法で実現することができる。問い合わせ手段、論理手段、および計算手段が実現される特定の様態は、この開示の不可欠な部分ではない。
【0060】
図4は、本開示による、OLTP環境における統計アプリケーションのシステムの概略構造図を示している。この開示において、「ユニット」は、特定のタスクまたは機能を実行するように設計されたツールまたは機械である、装置である。ユニットまたは装置は、特定のタスクまたは機能に関連する目的を遂行するための、ハードウェア、ソフトウェア、計画またはスキーム、あるいはそれらの組み合わせとすることができる。
【0061】
図4に示されているように、統計アプリケーションシステム400は、アプリケーションサーバ410と、データベースサーバ420と、を含む。アプリケーションサーバ410は、データベースサーバ420から受け取ったキャッシュされた統計レコードのコピーを記憶する、キャッシングユニット412を有する。ユーザの要求を受け取ると、問い合わせユニット416は、キャッシングユニット412を検索して、要求された統計レコードが、キャッシュされた統計レコードのコピーの中に存在するかどうかを判定する。論理ユニット414は、統計レコードが存在する場合に、統計レコードの時間要素を照合して、統計レコードが失効しているかどうかを判定する決定と、統計レコードが失効していない場合に、統計レコードを、要求を行った照会者に送る決定と、統計レコードが存在しない、または失効していた場合に、統計レコードについて、データベースサーバ420に問い合わせる決定と、を行う。
【0062】
データベースサーバ420は、それぞれが記録の同一性識別子および時間要素を有する統計レコードを含む統計表を含む、データベース421をホストする。問い合わせユニット422は、統計表内の要求された統計レコードについて、データベース421に問い合わせるのに使用される。決定を行うための論理ユニット423は、データベースサーバプロセスに関して本明細書で説明される。
【0063】
計算ユニット424は、失効していない統計レコードが見つからなかった時に、要求された統計レコードを計算するように、SQL文を実行する。計算ユニット424は、データベース421の統計表における統計レコードの作成または更新に、さらには、アプリケーションサーバ410に統計結果をキャッシュするように送るためにも使用される。計算ユニット424は、統計表内の統計レコードに対して失効時間マーカーを設定する、および要求された統計レコードの失効時間マーカーが、記録が失効していることを示しているかどうかを判定するのにも使用される。
【0064】
実施環境
以下、それらの実施およびアプリケーション環境を示すために、方法およびシステムの例示的な実施環境が提供される。開示される方法およびシステムは、ソフトウェアまたはハードウェアのいずれかだけを使用して実施することができるが、好ましくは、ソフトウェアおよびハードウェアの組み合わせを使用して実施すべきであることに留意されたい。開示される方法自体は、記憶媒体内に記憶されるソフトウェア製品の形態で実施することができる。ソフトウェアは、本開示の例示的な実施形態において説明される方法を実行するように、(スタンドアロンまたはネットワーク化された)コンピュータデバイスのための命令を含む。
【0065】
より具体的には、上述の手法は、以下に図示されるように、計算ユニットを有するサーバまたはパーソナルコンピュータ(PC)等の計算デバイスを用いて実施されてもよい。
【0066】
図5は、本開示の方法を実施するための例示的な環境を示している。図示の環境500において、いくつかの構成要素は、クライアント側に存在し、他の構成要素は、サーバ側に存在する。しかしながら、これらの構成要素は、複数の他の場所に存在してもよい。さらに、図示の構成要素のうちの2つ以上は、単一の場所で単一の構成要素を形成するように組み合わせてもよい。
【0067】
OLTP環境における統計アプリケーションのシステムは、アプリケーションサーバ510およびデータベースサーバ520を含む、サーバ側にある。アプリケーションサーバ510は、プロセッサ530と、入出力装置532と、コンピュータ可読媒体(例えば、メモリ)534と、ネットワークインターフェース(図示せず)と、を含む。データベースサーバ520は、プロセッサ524と、入出力装置534と、コンピュータ可読媒体(例えば、メモリ)536と、ネットワークインターフェース(図示せず)と、を含む。アプリケーションサーバ510およびデータベースサーバ520は、ネットワーク590(インターネット等)を通して、クライアント装置541、542、および543に接続される。クライアント装置541、542、および543は、ユーザがアプリケーションサーバ510およびデータベースサーバ520にアクセスするための、パーソナルコンピュータ、PDA、および携帯電話を含む、任意の好適な装置とすることができる。
【0068】
アプリケーションサーバ510のコンピュータ可読媒体534は、データベースサーバ520から受け取られるキャッシュされた統計レコードのコピーを記憶する、キャッシュメモリ512を含む。コンピュータ可読媒体534はまた、アプリケーションプログラム537を記憶してもよい。同様に、データベースサーバ520のコンピュータ可読媒体536は、本明細書に説明されるように、アプリケーションプログラム538およびデータベース521を記憶し、統計レコードを含む統計表を含む。
【0069】
アプリケーションプログラム537は、本明細書に説明されているように、プロセッサ530によって実行された時に、プロセッサ520に、アプリケーションサーバ510によって実行されるプロセスの動作を実行させる命令を含む。同様に、アプリケーションプログラム538は、本明細書に説明されているように、プロセッサ524によって実行された時に、プロセッサ524に、データベースサーバ520によって実行されるプロセスの動作を実行させる命令を含む。
【0070】
コンピュータ可読媒体は、コンピュータデータを記憶するための好適なメモリ装置のうちのいずれかであってもよいことを認識されたい。このようなメモリ装置には、ハードディスク、フラッシュメモリ装置、光データ記憶装置、およびフロッピーディスクが挙げられるが、これに限定されない。さらに、コンピュータ実行可能な命令を含むコンピュータ可読媒体は、ローカルシステム内の構成要素、または複数のリモートシステムのネットワークを通じて配信される構成要素で構成されてもよい。コンピュータ実行可能な命令のデータは、有形の物理メモリ装置内に提供されてもよく、または電子的に伝送されてもよい。
【0071】
コンピュータ可読媒体は、コンピュータデータを保存するための好適な記憶装置のいずれかであり得ることを理解されたい。かかる記憶装置は、ハードディスク、フラッシュメモリ装置、光学データストレージ、およびフロッピーディスクを含むが、それらに限定されない。さらに、コンピュータ実行可能な指示を含むコンピュータ可読媒体は、ローカルシステムにおける構成要素、または複数のリモートシステムのネットワーク上に分散される構成要素から成り得る。コンピュータ実行可能な指示のデータは、有形の物理メモリ装置において送達されるか、または電子的に伝送され得る。
【0072】
アプリケーションサーバ510およびデータベースサーバ520の媒体のそれぞれは、単一のサーバコンピュータ、またはサーバのクラスタであってもよいことも認識されたい。
【0073】
本明細書で論じられる可能な利益および利点は、添付の請求項の範囲に限定または制限されるものと見なされない。
【0074】
主題は構造的特徴および/または方法論的動作に対して具体的な言語で説明されているが、添付の請求項において定義される主題は、説明される特定の特徴または動作に必ずしも限定されない。むしろ、特定の特徴および動作は、請求項を実施する例示的な形態として開示される。

【特許請求の範囲】
【請求項1】
OLTP環境における統計アプリケーションの方法であって、
記録の同一性を有する統計レコードが、統計表内に存在するかどうかを判定するように、前記統計表を含むデータベースに問い合わせるステップと、
前記統計レコードが存在する場合に、前記統計レコードの時間要素を照合して、前記統計レコードが失効しているかどうかを判定するステップと、
前記統計レコードが失効していない場合に、前記統計レコードを照会者に送るステップと、
前記統計レコードが存在しない、または失効していた場合に、SQL文を呼び出して、前記統計レコードを計算するステップと
を含むことを特徴とする方法。
【請求項2】
前記データベースは、データベースサーバ内に記憶され、前記データベースに問い合わせるステップは、
前記統計レコードに対する問い合わせを、アプリケーションサーバから前記データベースサーバに送るステップを含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記統計レコードの前記時間要素は、前記統計レコードが最後に更新または作成されたのがいつなのかを示す時間マーカーを含むことを特徴とする請求項1に記載の方法。
【請求項4】
前記統計レコードの前記時間要素は、前記統計レコードが最後に更新または作成された時の時間から現在の照会の時間までをカウントする閾値時間幅をさらに含むことを特徴とする請求項3に記載の方法。
【請求項5】
前記時間マーカーは、前記統計レコードのデータフィールドに保存されることを特徴とする請求項3に記載の方法。
【請求項6】
前記データベースに問い合わせるステップは、
前記統計レコードのキーワードに一致する問い合わせ語によって前記データベースに問い合わせるステップを含み、
前記統計レコードの前記時間要素は、前記統計レコードの前記キーワードに対応する、予め設定された時間マーカーを含むことを特徴とする請求項1に記載の方法。
【請求項7】
前記統計レコードの前記記録の同一性識別子は、キーワードを含み、前記データベースに問い合わせるステップは、
前記キーワードに一致する問い合わせ語によって前記データベースに問い合わせるステップを含むことを特徴とする請求項1に記載の方法。
【請求項8】
前記データベースは、電子商取引システムの一部であり、前記統計レコードは、前記電子商取引システムのユーザの統計データを含むことを特徴とする請求項1に記載の方法。
【請求項9】
前記データベースに問い合わせる前に、前記統計レコードが、アプリケーションサーバのキャッシュ内に存在しているかどうかを判定するステップと、
前記統計レコードが前記キャッシュ内に存在する場合に、前記キャッシュ内の前記統計レコードが失効しているかどうかを判定するステップと、
前記キャッシュ内の前記統計レコードが失効していない場合に、前記キャッシュ内の前記統計レコードを照会者に送るステップと
をさらに含むことを特徴とする請求項1に記載の方法。
【請求項10】
前記キャッシュ内の前記統計レコードが失効しているかどうかを判定するステップは、
前記統計レコードに対応する前記時間要素と、前記統計レコードが最後に更新または作成された時の時間から現在の照会の時間までをカウントする閾値時間幅とを照合するステップを含むことを特徴とする請求項9に記載の方法。
【請求項11】
前記キャッシュ内の前記統計レコードが失効しているかどうかを判定するステップは、
前記キャッシュの前記統計レコードのデータフィールド内の時間マーカーを照合するステップを含むことを特徴とする請求項9に記載の方法。
【請求項12】
前記SQL文の計算結果を使用して、前記統計表内の前記統計レコードを挿入または更新するステップをさらに含むことを特徴とする請求項1に記載の方法。
【請求項13】
前記計算結果を、その中にキャッシュされるようにアプリケーションサーバに送るステップをさらに含むことを特徴とする請求項12に記載の方法。
【請求項14】
OLTP環境における統計アプリケーションの方法であって、
記録の同一性を有する統計レコードが、複数の統計レコードの中に存在するかどうかを判定するように、前記複数の統計レコードを記憶しているキャッシュメモリを有するアプリケーションサーバに問い合わせるステップと、
前記統計レコードが存在する場合に、前記統計レコードの時間要素を照合して、前記統計レコードが失効しているかどうかを判定するステップと、
前記統計レコードが失効していない場合に、前記統計レコードを照会者に送るステップと、
前記統計レコードが存在しない、または失効していた場合に、前記統計レコードについて前記データベースサーバに問い合わせるステップと
を含むことを特徴とする方法。
【請求項15】
前記統計レコードについて前記データベースサーバに問い合わせるステップは、
前記データベースサーバの前記データベースに問い合わせて、前記統計レコードが、データベース内の統計表内に存在するかどうかを判定するステップと、
前記統計レコードが存在する場合に、前記統計レコードの前記時間要素を照合して、前記統計レコードが失効しているかどうかを判定するステップと、
前記統計レコードが失効していない場合に、前記統計レコードを照会者に送るステップと、
前記統計レコードが存在しない、または失効していた場合に、前記統計レコードを計算するように、SQL文を呼び出すステップと
を含むことを特徴とする請求項14に記載の方法。
【請求項16】
OLTP環境における統計アプリケーションのシステムであって、
データベースサーバ内にホストされるデータベースであって、それぞれが記録の同一性識別子および時間要素を有する複数の統計レコードを有する統計表を含む、データベースと、
前記複数の統計レコードの中の要求された統計レコードについて、前記データベースに問い合わせるための問い合わせ手段と、
論理手段であって、
前記要求された統計レコードが見つかった場合に、前記要求された統計レコードの時間要素を照合して、前記統計レコードが失効しているかどうかを判定する決定と、
前記要求された統計レコードが失効していない場合に、前記要求された統計レコードを照会者に戻す決定と、
前記要求された統計レコードが存在しない、または失効していた場合に、SQL文を呼び出して、前記要求された統計レコードを計算する決定と、
を行うための論理手段と
を備えることを特徴とするシステム。
【請求項17】
前記要求された統計レコードのコピーについて、アプリケーション内のキャッシュに問い合わせるための問い合わせ手段と、
論理手段であって、
前記要求された統計レコードの前記コピーが、前記キャッシュ内に見つかった場合に、前記統計レコードの前記コピーの前記時間要素を照合して、前記統計レコードの前記コピーが失効しているかどうかを判定する決定と、
前記統計レコードの前記コピーが失効していない場合に、前記統計レコードの前記 コピーを照会者に送る決定と
を行うための論理手段と
をさらに備えることを特徴とする請求項16に記載のシステム。
【請求項18】
前記呼び出されたSQL文を実行し、前記要求された統計レコードを計算して、前記データベースの前記統計表において前記要求された統計レコードを作成または更新するための計算手段をさらに備えることを特徴とする請求項16に記載のシステム。
【請求項19】
複数の命令をそこに記憶させた1つ以上のコンピュータ可読媒体であって、1つ以上のプロセッサによって実行された時に、当該命令が、前記プロセッサに、
統計表を含むデータベースに問い合わせ、記録の同一性を有する統計レコードが存在するかどうかを判定させ、
前記統計レコードが存在する場合に、前記統計レコードの時間要素を照合して、前記統計レコードが失効しているかどうかを判定させ、
前記統計レコードが失効していない場合に、前記統計レコードを照会者に送らせ、かつ前記統計レコードが存在しない、または失効していた場合に、前記統計レコードを計算するように、SQL文を呼び出させる
ことを特徴とする1つ以上のコンピュータ可読媒体。
【請求項20】
1つ以上のプロセッサによって実行された時に、前記複数の命令が、前記プロセッサにさらに、
前記呼び出されたSQL文を実行させ、かつ前記データベースの前記統計表において前記統計レコードを作成または更新させる
ことを特徴とする請求項19に記載の1つ以上のコンピュータ可読媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公表番号】特表2011−505615(P2011−505615A)
【公表日】平成23年2月24日(2011.2.24)
【国際特許分類】
【出願番号】特願2010−533284(P2010−533284)
【出願日】平成20年11月7日(2008.11.7)
【国際出願番号】PCT/US2008/082845
【国際公開番号】WO2009/062067
【国際公開日】平成21年5月14日(2009.5.14)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
【出願人】(508248069)アリババ グループ ホールディング リミテッド (105)
【Fターム(参考)】