(57)【要約】  コンピュータが、データベースリポジトリ及びデータベースリポジトリのためのキャッシュメモリを含むデータ処理システムにおいて、キャッシュメモリ上に第１のキャッシュ領域及び第２のキャッシュ領域を提供する。コンピュータは、第１の時間窓において、ストリーミングデータを受信し、ストリーミングデータを第１のキャッシュ領域上に書き込む。コンピュータは、第１の時間窓において、第１のキャッシュ領域とデータベースリポジトリとの間の同期の実行を禁止する。コンピュータは、第１の時間窓の少なくとも一部において、データベースリポジトリと第２のキャッシュ領域との間の同期を有効化する。コンピュータは、第１の時間窓の経過時に、第１のキャッシュ領域とデータベースリポジトリとの間の同期を有効化する。
2021526252.tif 000002
【特許請求の範囲】
【請求項１】
ストリーミングデータを処理するためのコンピュータ実施方法であって、
データベースリポジトリ及び前記データベースリポジトリのためのキャッシュメモリを含むデータ処理システムにおいて、キャッシュメモリ上に第１のキャッシュ領域及び第２のキャッシュ領域を提供することと、
第１の時間窓において、ストリーミングデータを受信し、前記ストリーミングデータを前記第１のキャッシュ領域上に書き込むことと、
前記第１の時間窓において、前記第１のキャッシュ領域と前記データベースリポジトリとの間の同期を行うことを禁止することと、
前記第１の時間窓の少なくとも一部において、前記データベースリポジトリと前記第２のキャッシュ領域との間の同期を有効化することと、
前記第１の時間窓の経過時に、前記第１のキャッシュ領域と前記データベースリポジトリとの間の同期を有効化することと、
を含む、方法。
【請求項２】
前記データ処理システムは、アプリケーションとのインターフェースをさらに含み、かつ、
着信するストリーミングデータのリアルタイム処理のために、前記アプリケーションが前記キャッシュメモリにアクセスすることを有効化すること
をさらに含む、請求項１に記載の方法。
【請求項３】
前記方法は、
前記第１の時間窓の経過時に、前記データベースリポジトリと前記第２のキャッシュ領域との間の同期を阻止すること
をさらに含む、前記請求項のいずれかに記載の方法。
【請求項４】
前記方法は、
前記第１の時間窓の経過時に、新しく着信するストリーミングデータを前記第２のキャッシュ領域上に書き込むこと
をさらに含む、請求項３に記載の方法。
【請求項５】
前記方法は、
前記第１の時間窓の経過時に、前記第１のキャッシュ領域の役割を前記第２のキャッシュ領域の役割と交換することと、
第２の時間窓において、前記交換後の前記第１のキャッシュ領域と前記データベースリポジトリとの間の同期を行うことと、
前記第２の時間窓において、新しく着信するストリーミングデータを前記第２のキャッシュ領域上に書き込むことと、
前記第２の時間窓において、前記第２のキャッシュ領域と前記データベースリポジトリとの間の同期を禁止することと
さらに含む、前記請求項のいずれかに記載の方法。
【請求項６】
前記方法は、
前記第１の時間窓の経過時に、前記交換後の前記第１のキャッシュ領域の役割を前記交換後の前記第２のキャッシュ領域の役割と再交換することと、
第３の時間窓において、前記受信すること、前記書き込むこと、及び前記有効化することを繰り返すことと
をさらに含む、請求項５に記載の方法。
【請求項７】
前記方法は、
前記第１の時間窓において、前記第１のキャッシュ領域の全体で前記第１のキャッシュ領域へのアクセスをロックすることと、
前記第１の時間窓において、前記第２のキャッシュ領域の全体で前記第２のキャッシュ領域へのアクセスをロックすることと
をさらに含む、前記請求項のいずれかに記載の方法。
【請求項８】
前記方法は、
前記第１の時間窓において、ハッシュインデックスに基づいて前記第１のキャッシュ領域へのアクセスをロックすることと、
前記第１の時間窓において、前記第２のキャッシュ領域の全体で前記第２のキャッシュ領域へのアクセスをロックすることと
をさらに含む、請求項１〜請求項６のいずれかに記載の方法。
【請求項９】
前記方法は、
前記第１の時間窓の経過時に、前記第１のキャッシュ領域の役割を前記第２のキャッシュ領域の役割と交換することと、
前記第２の時間窓において、前記第１のキャッシュ領域の全体で前記第１のキャッシュ領域へのアクセスをロックすることと、
前記第２の時間窓において、前記第２のキャッシュ領域の全体で前記第２のキャッシュ領域へのアクセスをロックすることと
をさらに含む、請求項８に記載の方法。
【請求項１０】
前記キャッシュメモリ上に第１のキャッシュ領域及び第２のキャッシュ領域を提供することは、前記キャッシュメモリ上に第１のキャッシュ領域と第２のキャッシュ領域との複数の対を提供することを含む、前記請求項のいずれかに記載の方法。
【請求項１１】
前記複数の対は、同じ時間窓において同時に使用されるか、又は異なる時間窓の各々において使用される、請求項１０に記載の方法。
【請求項１２】
それぞれの時間窓の長さは、前記ストリーミングデータを処理するために前記アプリケーションによって更新され、前記更新された長さは、後の時間窓に使用される、請求項５に記載の方法。
【請求項１３】
それぞれの時間窓の長さは、受信した前記ストリーミングデータの量、前記ストリーミングデータの処理時間、前記データベースリポジトリとの同期に要する時間、又はそれらの組み合わせに応じて定められる、請求項５に記載の方法。
【請求項１４】
データ処理システムであって、
１つ又は複数のプロセッサと、
前記プロセッサ上で実行されたとき、ストリーミングデータを処理するための動作を実行するプログラムを格納するメモリと、
データベースリポジトリと、
前記データベースリポジトリのためのキャッシュメモリと、
を含み、前記キャッシュメモリは、
第１の時間窓において、ストリーミングデータを受信し、第１のキャッシュ領域と前記データベースリポジトリとの間の同期を行うことなく、前記ストリーミングデータを第１のキャッシュ領域上に書き込む役割を実行するのに使用される第１のキャッシュ領域と、
前記第１の時間窓の少なくとも一部において、前記データベースリポジトリとの同期を行う役割を実行するのに使用される第２のキャッシュ領域と
を含み、
前記データ処理システムは、前記第１の時間窓の経過時に、前記第１のキャッシュ領域と前記データベースリポジトリとの間の同期を行う、データ処理システム。
【請求項１５】
前記データ処理システムは、前記第１の時間窓の経過時に、前記データベースリポジトリと前記第２のキャッシュ領域との間の同期を阻止する、請求項１４に記載のデータ処理システム。
【請求項１６】
前記データ処理システムは、前記第１の時間窓の経過時に、新しく着信するストリーミングデータを前記第２のキャッシュ領域上に書き込む、請求項１４又は請求項１５のいずれかに記載のデータ処理システム。
【請求項１７】
前記データ処理システムは、前記第１の時間窓の経過時に、前記第１のキャッシュ領域の役割を前記第２のキャッシュ領域の役割と交換し、
前記交換後に生じる第２の時間窓において、前記データベースリポジトリと前記第１のキャッシュ領域との間の同期を行い、前記第２のキャッシュ領域と前記データベースリポジトリとの間の同期を行うことなく、新しく着信するストリーミングデータを前記第２のキャッシュ領域上に書き込む、請求項１４〜請求項１６のいずれかに記載のデータ処理システム。
【請求項１８】
ストリーミングデータを処理するためのコンピュータプログラム製品であって、前記コンピュータプログラム製品は、処理回路により読み取り可能であり、請求項１〜請求項１３のいずれかに記載の方法を実行するための、前記処理回路により実行される命令を格納するコンピュータ可読ストレージ媒体を含む、コンピュータプログラム製品。
【請求項１９】
コンピュータ可読媒体上に格納され、デジタルコンピュータの内部メモリにロード可能なコンピュータプログラムであって、前記プログラムがコンピュータ上で実行されるとき、請求項１〜請求項１３のいずれかに記載の方法を実行するためのソフトウェアコード部分を含む、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストリーミングコンピューティングに関し、より具体的には、ストリーミングデータの処理に関する。
【背景技術】
【０００２】
ストリーミングコンピューティングは、ソフトウェア又はハードウェアのセンサなど、潜在的に何千ものデータソースから連続的に取得したデータをストリーム形式で読み取り、次に、ストリーミングデータを計算して計算の分析結果を提供するコンピューティングパラダイムである。
【０００３】
ストリーミングデータは、次のような種々のデータ、例えば、金融取引データ、モノのインターネット（Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ、ＩｏＴ）デバイス、電力量計、ガス量計、水量計、ゲーム内プレイヤの活動、モバイルもしくはウェブアプリケーション、ＲＦＩＤタグ、定期券もしくはクレジットカードを含むＩＣカード、又はマイクロブログから取得したテキスト情報のような、任意のセンサによって生成されたログファイルデータであり得る。ストリーミングデータは、これに限定されるものではないが、（例えば、キロバイトのオーダーの）小さいサイズを有することができる。
【０００４】
多くの場合、ストリーミングデータは、記録ごとに又は移動する時間窓（time window）にわたって、連続的かつインクリメンタルに処理する必要があり、相関、集約、フィルタリング、サンプリングなど、種々の分析に使用することができる。
【０００５】
ストリーミングデータの処理は、新しい動的データが連続的に生成されるシナリオにおいて利益をもたらし得る。従って、ストリーミングデータの処理は、ストリーミングデータをリアルタイムで取り込み、キャッシュメモリを用いてデータベースリポジトリを更新することを必要とする。
【０００６】
ストリーミングデータを処理するための幾つかの既知の技術があり、それぞれが欠点を有する。１つの従来の解決法は、データベースキャッシュ及びインメモリデータベースをデータベースキャッシュとして使用する。しかしながら、この従来の解決法には、リアルタイム性能が不十分であるという欠点がある。この従来の解決法は、データベースキャッシュとの間で読み／書きを行うことができるアプリケーションと、データをデータベースキャッシュと定期的に同期させるデータベースとを提供する。データベースキャッシュは、データベースとの同期中ロックされ、従って、同期中、アプリケーションからのアクセス（読み取りもしくは書き込み又はその両方）は停止される。従って、リアルタイム性能を、前述の従来の解決法に従って達成することはできない。本明細書では、この従来の解決法をＴＳ１と呼ぶ。
【０００７】
別の既知の技術は、ストリームベースのデータベースキャッシュを使用する。しかしながら、この解決法には、新しく着信するデータの不整合（inconsistency）が生じるという欠点がある。この技術は、データベースに書き込むことができるアプリケーションを含み、データベースはデータベースキャッシュと定期的に同期し、アプリケーションは、データベースキャッシュからデータを読み取ることができる。着信するデータはまず、直接データベースに書き込まれ、次に、同期が、データベースとデータベースキャッシュとの間で行われる。従って、同期が完了する前に、アプリケーションが新しく着信するデータを読み取ろうと試みた場合、データが見つからない場合がある。言い換えれば、アプリケーションは、同期が完了した後のみ、新しく着信するデータを読み取ることができる。従って、前述の解決法に従って、新しく着信するデータの整合性を達成することはできない。
【０００８】
第３の既知の技術は、メインデータベースから取り出したデータが、最初にグローバルＲｅｄｉｓデータストア（低速グローバルキャッシュ）にキャッシュされ、同じくローカルＡＰＣキャッシュ（高速ローカルキャッシュ）にもキャッシュされることを意味する多層キャッシングシステムを含む。しかしながら、多層キャッシングシステムは、新しく着信するデータを読み取るために余分な時間を必要とする。この技術では、書き込み動作は、着信するデータをグローバルキャッシュ及びデータベースの両方に書き込むことによって行われる。読み取り動作は、最初に、ローカルキャッシュからデータを読み取り、データがローカルキャッシュ上で見つからなかった場合、データを、まずデータベースからグローバルキャッシュにコピーし、その後、グローバルキャッシュからローカルキャッシュにコピーして、ローカルキャッシュからデータを読み取る。従って、新しく着信するデータの整合性を達成することができるが、新しく着信するデータをデータベースからグローバルキャッシュにコピーし、その後、グローバルキャッシュからローカルキャッシュにコピーする又は新しく着信するデータをグローバルキャッシュからローカルキャッシュにコピーするため、新しく着信するデータを読み取るのに余分な時間が必要である。従って、多層キャッシングシステムに従って、リアルタイム性能を実現することはできない。
【０００９】
従って、全ての既知の技術と比較して、新しく着信するデータの整合性、及びストリーミングデータを処理する際のリアルタイム性能を満足させるとう、以前に満たされていない必要性が存在し得る。
【００１０】
従って、当技術分野において、前述の問題に対処する必要性がある。
【発明の概要】
【００１１】
本発明の態様は、ストリーミングデータを処理するための方法、データ処理システム、及びコンピュータプログラム製品に向けられる。
【００１２】
第１の態様から見ると、本発明は、ストリーミングデータを処理するためのコンピュータ実施方法であって、データベースリポジトリ及びデータベースリポジトリのためのキャッシュメモリを含むデータ処理システムにおいて、キャッシュメモリ上に第１のキャッシュ領域及び第２のキャッシュ領域を提供することと、第１の時間窓において、ストリーミングデータを受信し、ストリーミングデータを第１のキャッシュ領域上に書き込むことと、第１の時間窓において、第１のキャッシュ領域とデータベースリポジトリとの間の同期を行うことを禁止することと、第１の時間窓の少なくとも一部において、データベースリポジトリと第２のキャッシュ領域との間の同期を有効化することと、第１の時間窓の経過時に、第１のキャッシュ領域とデータベースリポジトリとの間の同期を有効化することと、を含む方法を提供する。
【００１３】
更に別の態様から見ると、本発明は、データ処理システムであって、１つ又は複数のプロセッサと、プロセッサ上で実行されたとき、ストリーミングデータを処理するための動作を実行するプログラムを格納するメモリと、データベースリポジトリと、データベースリポジトリのためのキャッシュメモリとを含み、キャッシュメモリは、第１の時間窓において、ストリーミングデータを受信し、第１のキャッシュ領域と前記データベースリポジトリとの間の同期を行うことなく、ストリーミングデータを第１のキャッシュ領域上に書き込む役割を実行するのに使用される第１のキャッシュ領域と、第１の時間窓の少なくとも一部において、データベースリポジトリとの同期を行う役割を実行するのに使用される第２のキャッシュ領域とを含み、データ処理システムは、第１の時間窓の経過時に、第１のキャッシュ領域とデータベースリポジトリとの間の同期を行う、データ処理システムを提供する。
【００１４】
更に別の態様から見ると、本発明は、ストリーミングデータを処理するためのコンピュータプログラム製品を提供し、このコンピュータプログラム製品は、処理回路により読み取り可能であり、本発明のステップを実行する方法を実行するための、処理回路により実行される命令を格納するコンピュータ可読ストレージ媒体を含む。
【００１５】
更に別の態様から見ると、本発明は、コンピュータ可読媒体上に格納され、デジタルコンピュータの内部メモリにロード可能なコンピュータプログラムであって、プログラムがコンピュータ上で実行されるとき、本発明のステップを実行するためのソフトウェアコード部分を含むコンピュータプログラムを提供する。
【００１６】
コンピュータは、データベースリポジトリ及びデータベースリポジトリのためのキャッシュメモリを含むデータ処理システムにおいて、キャッシュメモリ上に第１のキャッシュ領域及び第２のキャッシュ領域を提供する。コンピュータは、第１の時間窓において、ストリーミングデータを受信し、ストリーミングデータを第１のキャッシュ領域上に書き込む。コンピュータは、第１の時間窓において、第１のキャッシュ領域とデータベースリポジトリとの間の同期を行うことを禁止する。コンピュータは、第１の時間窓の少なくとも一部において、データベースリポジトリと第２のキャッシュ領域との間の同期を有効化する。コンピュータは、第１の時間窓の経過時に、第１のキャッシュ領域とデータベースリポジトリとの間の同期を有効化する。
【００１７】
上記の要約は、本開示の示される実施形態の各々又は全ての実装を説明することを意図したものではない。
【図面の簡単な説明】
【００１８】
ここで、本発明を、以下の図に示されるように、好ましい実施形態を参照して単なる例として説明する。
【００１９】
【図１】本開示の実施形態による、データ処理システムとして使用されるコンピュータシステムを示すブロック図である。
【図２Ａ】本開示の実施形態による、ストリーミングデータを処理する方法を示すブロック図である。
【図２Ｂ】本開示の実施形態による、ストリーミングデータを処理する方法を示すブロック図である。
【図３Ａ】本開示の実施形態による、ストリーミングデータを処理する方法を示すブロック図である。
【図３Ｂ】本開示の実施形態による、ストリーミングデータを処理する方法を示すブロック図である。
【図４】本開示の実施形態による、ストリーミングデータを処理するプロセスを示すフローチャートである。
【図５Ａ】本開示の実施形態による、ストリーミングデータを処理するプロセスを示すフローチャートである。
【図５Ｂ】本開示の実施形態による、ストリーミングデータを処理するプロセスを示すフローチャートである。
【図６】本開示の実施形態に従って取得した結果の例を示す。
【図７】図４に説明されるプロセスに関連してコンピュータシステムのハードウェアを示す全体的な機能ブロック図である。
【００２０】
本発明は、種々の修正及び代替的形態に従うが、その特定のものが例示として図面に示され、詳細に説明される。しかしながら、その意図は、本発明を説明される特定の実施形態に限定するものではないことを理解されたい。反対に、その意図は、本発明の趣旨及び範囲内に入る全ての修正、均等物、及び代替物をカバーすることである。
【発明を実施するための形態】
【００２１】
本発明の種々の実施形態の説明は、例示を目的として提示されたが、網羅的であること又は開示された実施形態に限定されることを意図したものではない。説明される実施形態の範囲及び趣旨から逸脱することなく、当業者には、多くの修正及び変形が明らかであろう。本明細書で使用される用語は、実施形態の原理、実際の適用、又は市場で見出された技術に優る技術的改良を最もよく説明するため、又は当業者が本明細書に開示される実施形態を理解することを可能にするために、選択された。
【００２２】
当業者には理解されるように、本発明の実施形態は、コンピュータ実施方法、コンピュータシステム、又はコンピュータプログラム製品として具体化することができる。従って、本発明の実施形態は、完全にハードウェアベースの実施形態、例えばファームウェア、常駐ソフトウェア、マイクロコードなどを含む完全にソフトウェアベースの実施形態、又はソフトウェアベースの態様とハードウェアベースの態様とを組み合わせた実施形態の形を取ることができ、本明細書では、これらをまとめて「回路」、「モジュール」、又は「システム」と呼ぶことができる。
【００２３】
本明細書で使用される場合、「１つ（a/one）」という表現は、「少なくとも１つ」と理解すべきである。「１つを含む／含んでいる（comprise/comprising a/one）」という表現は、「少なくとも１つを含む／含んでいる（comprise/comprising at least one）」と理解すべきである。「含む／含んでいる（comprise/comprising）」という表現は、「少なくとも含む／含んでいる（comprise/comprising at least）」と理解すべきである。表現「／」は、「及び／又は（and/or）」と理解すべきである。
【００２４】
本明細書で使用される用語をより明確に定義するために、用語の例示的な定義を以下に提供するが、これは、本発明が属する技術又は技術分野の当業者に周知のものとして広く解釈されるべきである。
【００２５】
本明細書で使用される場合、用語「ストリーミングデータ」は、連続的に生成される任意のデータを指すことができる。ストリーミングデータは、例えば、これらに限定されるものではないが、金融取引、モノのインターネット（ＩｏＴ）デバイス、電力量計、ガス量計、水量計、ゲーム内プレイヤの活動、モバイルもしくはウェブアプリケーション、ＲＦＩＤタグ、定期券もしくはクレジットカードを含むＩＣカード、又はマイクロブログから取得したテキスト情報のような任意のセンサなど、同じソース又は異なるソースから取得することができる。
【００２６】
本明細書で使用される場合、用語「データベースリポジトリ」は、ストリーミングデータを格納するための任意のストレージを指すことができる。データベースリポジトリは、１つ又は複数のデータベースとすることができる。データベースリポジトリは、メタデータを含む任意のデータを格納することができる。
【００２７】
本明細書で使用される場合、用語「キャッシュメモリ」は、ストリーミングデータを一時的に格納し、データベースリポジトリのためのキャッシュとして使用できるメモリを指すことができる。ストリーミングデータは、データベースリポジトリとキャッシュメモリとの間で同期させることができる。
【００２８】
本明細書で使用される場合、用語「アプリケーション」は、キャッシュメモリからデータを読み取ること、もしくはキャッシュメモリ上にデータを書き込むこと、又はその両方ができる任意のアプリケーションを指すことができる。本開示の実施形態で使用されるアプリケーションは、時間窓がもともと設定されているアプリケーションとすることができる。時間窓がもともと設定されているアプリケーションは、例えば、これらに限定されるものではないが、以下のデータ、すなわち定期的クロールデータなどのクロールデータ、バッチ処理データ、又は電気量計データ、ガス量計データ、もしくは水量計データなどのセンサデータを扱うことができる。本開示の幾つかの実施形態で使用されるアプリケーションは、データ記録が互いに依存しないアプリケーションとすることができる。
【００２９】
ここで図１を参照すると、本開示の実施形態による、データ処理システムとして使用されるコンピュータシステムを示すブロック図が示される。
【００３０】
コンピュータシステム（１０１）は、例えば、これらに限定されるものではないが、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、又はサーバコンピュータとすることができる。サーバコンピュータは、例えば、これらに限定されるものではないが、ワークステーション、ラックマウント型サーバ、ブレード型サーバ、メインフレームサーバ、又はクラウドサーバとすることができ、例えば、１つ又は複数の仮想マシンを作成し実行するためのハイパーバイザを実行することができる。コンピュータシステム（１０１）は、１つ又は複数のＣＰＵ（１０２）と、バス（１０４）に接続されたメインメモリ（１０３）とを含むことができる。ＣＰＵ（１０２）は、例えば、これらに限定されるものではないが、３２ビットアーキテクチャ又は６４ビットアーキテクチャに基づくものとすることができる。ＣＰＵ（１０２）は、例えば、これらに限定されるものではないが、インターナショナルビジネスマシーンズコーポレーションのＩＢＭ（登録商標）Ｐｏｗｅｒ（登録商標）シリーズ、Ｉｎｔｅｌ  ＣｏｒｐｏｒａｔｉｏｎのＣｏｒｅ  ｉ（商標）シリーズ、Ｃｏｒｅ  ２（商標）シリーズ、Ａｔｏｍ（商標）シリーズ、Ｘｅｏｎ（商標）シリーズ、Ｐｅｎｔｉｕｍ（登録商標）シリーズ、又はＣｅｌｅｒｏｎ（登録商標）シリーズ、又はＡｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ，Ｉｎｃ．のＰｈｅｎｏｍ（商標）シリーズ、Ａｔｈｌｏｎ（商標）シリーズ、Ｔｕｒｉｏｎ（商標）シリーズ、又はＳｅｍｐｒｏｎ（商標）とすることができる。ＩＢＭ及びＰｏｗｅｒは、世界中の多数の管轄区域において登録されているインターナショナルビジネスマシーンズコーポレーションの商標である。Ｉｎｔｅｌ、Ｃｏｒｅ  Ｉ、Ｃｏｒｅ  ２、Ａｔｏｍ、Ｘｅｏｎ、Ｐｅｎｔｉｕｍ、及びＣｅｌｅｒｏｎは、米国及び他の国におけるＩｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ又はその子会社の商標又は登録商標である。「Ｐｈｅｎｏｍ」、「Ａｔｈｌｏｎ」、「Ｔｕｒｉｏｎ」及び「Ｓｅｍｐｒｏｎ」は、米国、他の国、又はその両方におけるＡｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ，Ｉｎｃ．の商標である。
【００３１】
液晶ディスプレイ（ＬＣＤ）などのディスプレイ（１０６）は、ディスプレイコントローラ（１０５）を介して、バス（１０４）に接続することができる。ディスプレイ（１０６）は、コンピュータの管理のために、通信回線を介してネットワークに接続されたコンピュータ上の情報、及び適切なグラフィックスインターフェースを用いてコンピュータ上で実行されているソフトウェアの情報を表示するために使用することができる。ディスプレイは、タッチスクリーン又は非タッチスクリーンを有することができる。ディスプレイは、例えば、これらに限定されるものではないが、ＬＣＤ、プラズマディスプレイパネル（ＰＤＰ）、有機エレクトロルミネッセンス（ＯＥＬ）、又は投影型ディスプレイとすることができる。ハードディスク又はソリッドステートドライブ（ＳＳＤ）などのディスク（１０８）、及びＣＤ、ＤＶＤ、又はＢＤ（ブルーレイディスク）ドライブなどのドライブ（１０９）を、ＳＡＴＡ又はＩＤＥコントローラ（１０７）を介してバス（１０４）に接続することができる。さらに、キーボード（１１１）及びマウス（１１２）を、キーボード・マウスコントローラ（１１０）又はＵＳＢバス（図示せず）を介して、バス（１０４）に接続することができる。
【００３２】
Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）、ＵＮＩＸ（登録商標）、Ｍａｃ  ＯＳ（登録商標）、Ｌｉｎｕｘ（登録商標）を提供するプログラムであるオペレーティングシステム、又はＪ２ＥＥ（登録商標）などの、Ｊａｖａ（登録商標）処理環境、Ｊａｖａ（登録商標）アプリケーション、Ｊａｖａ（登録商標）仮想マシン（ＶＭ）及びＪａｖａ（登録商標）ジャストインタイム（ＪＩＴ）コンパイラ、他のプログラム、並びに任意のデータを、メインメモリにロード可能なようにディスク（１０８）内に格納することができる。Ｍｉｃｒｏｓｏｆｔ及びＷｉｎｄｏｗｓは、米国、他の国、又はその両方におけるＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎの商標である。「ＵＮＩＸ」は、米国、他の国又はその両方におけるＯｐｅｎ  Ｇｒｏｕｐの登録商標であり、「Ｍａｃ  ＯＳ」は、米国、他の国又はその両方におけるＡｐｐｌｅ  Ｉｎｃ．の登録商標であり、「Ｌｉｎｕｘ」は、米国、他の国又はその両方におけるＬｉｎｕｓ  Ｔｏｒｖａｌｄｓの登録商標であり、「Ｊａｖａ」及び「Ｊ２ＥＥ」は、米国、他の国又はその両方におけるＯｒａｃｌｅ  Ａｍｅｒｉｃａ，  Ｉｎｃ．の登録商標である。
【００３３】
ドライブ（１０９）は、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、又はＢＤから読み取り可能な、本開示の実施形態のコンピュータプログラムなどの１つ又は複数のプログラムをディスク（１０８）にインストールするために、又はＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、又はＢＤから読み取り可能な任意のデータを、必要に応じて、メインメモリ（１０３）又はディスク（１０８）にロードするために使用することができる。
【００３４】
通信インターフェース（１１４）は、例えば、これに限定されるものではないが、イーサネットプロトコルに基づくことができる。通信インタフェース（１１４）は、通信コントローラ（１１３）を介してバス（１０４）に接続することができ、コンピュータシステム（１０１）を通信回線（１１５）に物理的に接続することができ、ネットワークインターフェース層をコンピュータシステム（１０１）のオペレーティングシステムの通信機能のＴＣＰ／ＩＰ通信プロトコルに提供することができる。この場合、通信回線（１１５）は、有線ＬＡＮ環境、又は、例えば、これに限定されるものではないが、ＩＥＥＥ（登録商標）８０２．１１ａ／ｂ／ｇ／ｎなどの無線ＬＡＮ接続規格に基づく無線ＬＡＮ環境とすることができる（「ＩＥＥＥ」は、米国、他の国、又はその両方におけるＩｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ，Ｉｎｃ．の登録商標である）。
【００３５】
図２Ａ、図２Ｂ、図３Ａ、及び図３Ｂは、それぞれ、本開示の実施形態による、ストリーミングデータを処理する方法を示す異なるブロック図を示す。
【００３６】
ここで図２Ａ及び図２Ｂを参照すると、図２Ａ及び図２Ｂは、キャッシュメモリが、第１のキャッシュ領域と第２のキャッシュ領域との１つの対を有する実施形態を示す。
【００３７】
データ処理システム（２０１）は、図１に説明されるコンピュータシステム（１０１）に対応することができる。データ処理システム（２０１）は、１つ又は複数のプロセッサ（図示せず）と、プロセッサ上で実行されるとき、本開示の実施形態に従って動作を実行するプログラムを格納するメモリ（図示せず）とを有することができる。さらに、データ処理システム（２０１）は、キャッシュメモリ（２１１）、アプリケーションとのインターフェース（２２１）及びデータベースリポジトリ（２９１）、並びに任意にアプリケーション（２４１）を有することができる。
【００３８】
キャッシュメモリ（２１１）は、ストリーミングデータをデータベースリポジトリ（２９１）に格納する前に、ストリーミングデータを一時的に格納するために使用することができ、インターフェース（２２１）を介してアプリケーション（２４１）からアクセスすることができる。
【００３９】
インターフェース（２２１）は、キャッシュメモリ（２１１）上にデータを書き込む命令、キャッシュメモリ（２１１）からデータを読み取る命令、又はそれらの組み合わせを受信するために使用することができる。
【００４０】
アプリケーション（２４１）は、着信ストリーミングデータのリアルタイム処理のために、キャッシュメモリ（２１１）にアクセスすることができる。アプリケーション（２４１）は、データ処理システム（２０１）に、キャッシュメモリ（２１１）上にデータを書き込む命令、キャッシュメモリ（２１１）からデータを読み取る命令、又はそれらの組み合わせを送ることができる。アプリケーション（２４１）は、データ処理システム（２０１）内に備えられたメモリに格納することができ、又はデータ処理システム（２０１）とは異なるシステム内に格納し、インターフェース（２２１）を介してキャッシュメモリ（２１１）にアクセスすることができる。
【００４１】
データベースリポジトリ（２９１）は、ストリーミングデータを格納するために使用することができる。
【００４２】
ここで図２Ａを参照すると、データ処理システム（２０１）は、まず、キャッシュメモリ（２１１）上に第１のキャッシュ領域（２３１）及び第２のキャッシュ領域（２３２）を提供する。第１のキャッシュ領域（２３１）及び第２のキャッシュ領域（２３２）を提供するために、データ処理システム（２０１）は、キャッシュメモリ（２１１）上で、第１のキャッシュ領域（２３1）に使用されるアドレスと、同じく第２のキャッシュ領域（２３２）に使用されるアドレスとを指定することができる。
【００４３】
第１のキャッシュ領域（２３１）及び第２のキャッシュ領域（２３２）は、それぞれ、次の役割のいずれかを有する、すなわち、一方は、所定の時間窓において、そのキャッシュ領域とデータベースリポジトリ（２９１）との間の同期を行うことなく、着信するストリーミングデータをそのキャッシュ領域上に書き込み、他方は、前述の所定の時間窓において、データベースリポジトリと第２のキャッシュ領域との間のデータを同期させる。前述の所定の時間ウィンドウの経過時に、第１のキャッシュ領域の役割を第２のキャッシュ領域の役割と交換する。この交換は、次の時間窓（第２、第３、第４の時間窓など）の経過時に繰り返し行われる。
【００４４】
図２Ａに示されるように、第１のキャッシュ領域（２３１）は、まず、第１のキャッシュ領域（２３１）とデータベースリポジトリ（２９１）との間の同期を行うことなく、所定の時間窓（以下、「第１の時間窓」ともいう）において着信するストリーミングデータを第１のキャッシュ領域（２３１）上に書き込む役割を有し、第２のキャッシュ領域（２３２）は、まず、第１の時間窓においてデータベースリポジトリ（２９１）と第２のキャッシュ領域（２３２）との間のデータを同期させる役割を有する。
【００４５】
データ処理システム（２０１）は、第１の時間窓において着信するストリーミングデータを受信する。データ処理システム（２０１）は、第１のキャッシュ領域（２３１）とデータベースリポジトリ（２９１）との間の同期を行うことなく、第１の時間窓において、第１のキャッシュ領域（２３１）上にストリーミングデータを書き込む。従って、第１の時間窓において、第１のキャッシュ領域（２３１）とデータベースリポジトリ（２９１）との間の同期は許可されない（図２Ａに点線と囲み「Ｘ」で示されるように）。一方、第１の時間窓の少なくとも一部において、データベースリポジトリ（２９１）と第２のキャッシュ領域（２３２）との間の同期は許容される。例えば、データベースリポジトリ（２９１）と第２のキャッシュ領域（２３２）との間の同期が完了するまで、同期は許容される。
【００４６】
幾つかの実施形態において、第１の時間窓において、第１のキャッシュ領域（２３１）上にストリーミングデータを書き込む動作が終了するまで、例えば、テーブルロック（table lock）を用いて、第１のキャッシュ領域（２３１）をロックすることができ、第２のキャッシュ領域（２３２）上へのストリーミングデータの書き込みを禁止するために、第２のキャッシュ領域（２３２）とデータベースリポジトリ（２９１）との間の同期が終了するまで、例えば、テーブルロックを用いて、第２のキャッシュ領域（２３２）をロックすることができる。テーブルロックを用いた第１のキャッシュ領域（２３１）のロックは、アプリケーション（２４１）から第１のキャッシュ領域（２３１）へのアクセスに対して、第１のキャッシュ領域（２３１）の全体をロックすることによって行うことができる。同様に、テーブルロックを用いた第２のキャッシュ領域（２３２）のロックは、アプリケーション（２４１）から第２のキャッシュ領域（２３２）へのアクセスに対して、第２のキャッシュ領域（２３２）の全体をロックすることによって行うことができる。
【００４７】
幾つかの実施形態において、第１の時間窓において、第１のキャッシュ領域（２３１）上にストリーミングデータを書き込む動作が終了するまで、例えば、ハッシュインデックスに基づいて、第１のキャッシュ領域（２３１）をロックすることができ、第２のキャッシュ領域（２３２）上へのストリーミングデータの書き込みことを禁止するために、第２のキャッシュ領域（２３２）とデータベースリポジトリ（２９１）との間の同期が終了するまで、例えば、テーブルロックを用いて、第２のキャッシュ領域（２３２）をロックすることができる。ハッシュインデックスに基づく第１のキャッシュ領域（２３１）のロックは、アプリケーション（２４１）から第１のキャッシュ領域（２３１）へのアクセスに対して、ハッシュインデックスに基づいて第１のキャッシュ領域（２３１）をロックすることによって行うことができる。テーブルロックを用いた第２のキャッシュ領域（２３２）のロックは、アプリケーション（２４１）から第２のキャッシュ領域（２３２）へのアクセスに対して、第２のキャッシュ領域（２３２）の全体をロックすることによって行うことができる。
【００４８】
第１の時間窓において、アプリケーション（２４１）は、第２のキャッシュ領域（２３２）上のデータを読み取ることができるが、第２のキャッシュ領域（２３２）に行われた前述のロックのために、第２のキャッシュ領域（２３２）上にデータを書き込むことは許可されない（図２Ａに点線と囲み「Ｘ」で示されるように）。
【００４９】
ここで図２Ｂを参照すると、現在第１の時間窓が経過した同じ環境が示される。第１の時間窓の経過時に、データ処理システム（２０１）は、第１のキャッシュ領域の役割を第２のキャッシュ領域の役割と交換する。データ処理システム（２０１）は、第１の時間窓の経過時に、第１のキャッシュ領域（２３１）とデータベースリポジトリ（２９１）との間の同期を有効化する（図２Ｂに実線で、囲み「Ｘ」なしで示されるように）。一方、データ処理システム（２０１）は、第１の時間窓の経過時に、データベースリポジトリ（２９１）と第２のキャッシュ領域（２３２）との間の同期を阻止する（図２Ｂに点線と囲み「Ｘ」で示されるように）。
【００５０】
第１の時間窓の経過後、新しい時間窓（すなわち、第２の時間窓）が開始する。データ処理システム（２０１）は、データベースリポジトリ（２９１）と第２のキャッシュ領域（２３２）との間の同期を行うことなく、第２の時間窓において、新しく着信するストリーミングデータを第２のキャッシュ領域（２３２）上に書き込む。このように、第２の時間窓において、データベースリポジトリ（２９１）と第２のキャッシュ領域（２３２）との間の同期は許可されない。一方、第２の時間窓の少なくとも一部においては、第１のキャッシュ領域（２３１）とデータベースリポジトリ（２９１）との間の同期は許容される。
【００５１】
幾つかの実施形態において、第２の時間窓において、第２のキャッシュ領域（２３２）上に新しく着信するストリーミングデータを書き込む動作が終了するまで、例えば、テーブルロックを用いて、第２のキャッシュ領域（２３２）をロックすることができ、第１のキャッシュ領域（２３１）上へのストリーミングデータの書き込みを禁止するために、データベースリポジトリ（２９１）と第１のキャッシュ領域（２３１）との間の同期が終了するまで、例えば、テーブルロックを用いて、第１のキャッシュ領域（２３１）をロックすることができる。テーブルロックを用いた第２のキャッシュ領域（２３２）のロックは、アプリケーション（２４１）から第２のキャッシュ領域（２３２）へのアクセスに対して、第２のキャッシュ領域（２３２）の全体をロックすることによって行うことができる。同様に、テーブルロックを用いた第１のキャッシュ領域（２３１）のロックは、アプリケーション（２４１）から第１のキャッシュ領域（２３１）へのアクセスに対して、第１のキャッシュ領域（２３１）の全体をロックすることによって行うことができる。
【００５２】
幾つかの実施形態において、第２の時間窓において、第２のキャッシュ領域（２３２）上に新しく着信するストリーミングデータを書き込む動作が終了するまで、例えば、ハッシュインデックスに基づいて、第２のキャッシュ領域（２３２）をロックすることができ、第１のキャッシュ領域（２３１）上に新しく着信するストリーミングデータの書き込みを禁止するために、データベースリポジトリ（２９１）と第１のキャッシュ領域（２３１）との間の同期が終了するまで、例えば、テーブルロックを用いて、第１のキャッシュ領域（２３１）をロックすることができる。ハッシュインデックスに基づく第２のキャッシュ領域（２３２）のロックは、アプリケーション（２４１）から第２のキャッシュ領域（２３２）へのアクセスに対して、ハッシュインデックスに基づいて、第２のキャッシュ領域（２３２）をロックすることによって行うことができる。テーブルロックを用いた第１のキャッシュ領域（２３１）のロックは、アプリケーション（２４１）から第１のキャッシュ領域（２３１）へのアクセスに対して、第１のキャッシュ領域（２３１）の全体をロックすることによって行うことができる。
【００５３】
第２の時間窓において、アプリケーション（２４１）は、第１のキャッシュ領域（２３１）に対して行われた前述のロックのために、第１のキャッシュ領域（２３１）上のデータを読み取ることができるが、第１のキャッシュ領域（２３１）上へのデータの書き込みは許可されない（図２Ｂに点線と囲み「Ｘ」で示されるように）。
【００５４】
ここで図２Ａを参照すると、第２の時間窓の経過時に、データ処理システム（２０１）は、第１のキャッシュ領域の役割を第２のキャッシュ領域の役割と再び交換する。従って、データ処理システム（２０１）は、図２Ａに説明されるブロック図に従って、第３の時間窓において新しく着信するデータを処理する。
【００５５】
上述したように、所定の時間窓の経過時に、データ処理システム（２０１）は、第１のキャッシュ領域の役割を第２のキャッシュ領域の役割と交換して、ストリーミングデータを処理する。この交換は、図２Ａに示される役割を用いる奇数番目（例えば、第１、第３、第５）の時間窓と、図２Ｂに示される役割を用いる偶数番目（例えば、第２、第４、第６）の時間窓とによって無限に継続することができる。
【００５６】
図２Ａ及び図２Ｂに説明される実施形態は、新しく着信するストリーミングデータの一貫性とともに、リアルタイム性能を可能にする。
【００５７】
ここで図３Ａ及び図３Ｂを参照すると、キャッシュメモリが、第１のキャッシュ領域と第２のキャッシュ領域との複数の対を有する実施形態が示される。
【００５８】
データ処理システム（３０１）は、図１に説明されるコンピュータシステム（１０１）に対応することができる。データ処理システム（３０１）は、１つ又は複数のプロセッサ（図示せず）と、プロセッサ上で実行されたとき、本開示の実施形態に従った動作を実行するプログラムを格納するメモリ（図示せず）とを有することができる。さらに、データ処理システム（３０１）は、キャッシュメモリ（３１１）、アプリケーションとの複数のインターフェース（３２１、３２２及び３２３）及びデータベースリポジトリ（３９１）、並びに任意に複数のアプリケーション（３４１、３４２及び３４３）を有することができる。
【００５９】
図３Ａ及び図３Ｂは、３つのインターフェース（３２１、３２２及び３２３）、並びに３つのアプリケーション（３４１、３４２及び３４３）を示す。しかしながら、インターフェース及びアプリケーションの数は、本開示の実施形態の実施に応じて変化し得る。
【００６０】
さらに、図３Ａ及び図３Ｂは、アプリケーションとインターフェースとの対として、１つのアプリケーションが１つのインターフェースに関連付けられ（対としての３４１と３２１、３４２と３２２、及び３４３と３２３）、さらに、１つのインターフェースが、第１のキャッシュ領域と第２のキャッシュ領域との１つの対に関連付けられることを示す。しかしながら、１つのアプリケーションを、１つ又は複数のインターフェースに関連付けることができ、又はその逆も同様であり、１つのインターフェースを、第１のキャッシュ領域と第２のキャッシュ領域との１つ又は複数の対に関連付けることもでき、又はその逆も同様である。
【００６１】
キャッシュメモリ（３１１）は、図２Ａ及び図２Ｂに説明されるキャッシュメモリ（２１１）に対応する。キャッシュメモリ（３１１）は、以下の第１のキャッシュ領域と第２のキャッシュ領域との３つの対、すなわち、第１のキャッシュ領域−１（３３１）と第２のキャッシュ領域−１（３３２）との第１の対、第１のキャッシュ領域−２（３３３）と第２のキャッシュ領域−２（３３４）との第２の対、及び第１のキャッシュ領域−３（３３５）と第２のキャッシュ領域−３（３３６）との第３の対を含む。
【００６２】
インターフェース（３２１、３２２及び３２３）は、図２Ａ及び図２Ｂに説明されるインターフェース（２２１）に対応する。インターフェース−１（３２１）は、アプリケーション−１（３４１）から、第１のキャッシュ領域−１（３３１）又は第２のキャッシュ領域−１（３３２）上にデータを書き込む命令、第１のキャッシュ領域−１（３３１）又は第２のキャッシュ領域−１（３３２）からデータを読み取る命令、又はそれらの組み合わせを、インターフェース１（３２１）を介して受信するために使用することができる。同様に、インターフェース−２（３２２）は、アプリケーション−２（３４２）から、第１のキャッシュ領域−２（３３３）又は第２のキャッシュ領域−２（３３４）上にデータを書き込む命令、第１のキャッシュ領域−２（３３３）又は第２のキャッシュ領域−２（３３４）からデータを読み取る命令、又はそれらの組み合わせを、インターフェース−２（３２２）を介して受信するために使用することができる。同様に、インターフェース−３（３２３）は、アプリケーション−３（３４３）から、第１のキャッシュ領域−３（３３５）又は第２のキャッシュ領域−３（３３６）上にデータを書き込む命令、第１のキャッシュ領域−３（３３５）又は第２のキャッシュ領域−３（３３６）からデータを読み取る命令、又はそれらの組み合わせを、インターフェース−３（３２３）を介して受信するために使用することができる。
【００６３】
アプリケーション（３４１、３４２及び３４３）は、図２Ａ及び図２Ｂに説明されるアプリケーション（２４１）に対応する。アプリケーション（３４１）は、第１のキャッシュ領域−１（３３１）又は第２のキャッシュ領域−１（３３２）上にデータを書き込む命令、第１のキャッシュ領域−１（３３１）又は第２のキャッシュ領域−１（３３２）からデータを読み取る命令、又はそれらの組み合わせを、データ処理システム（３０１）に送ることができる。同様に、アプリケーション（３４２）は、第１のキャッシュ領域−２（３３３）又は第２のキャッシュ領域−２（３３４）上にデータを書き込む命令、第１のキャッシュ領域−２（３３３）又は第２のキャッシュ領域−２（３３４）からデータを読み取る命令、又はそれらの組み合わせを、データ処理システム（３０１）に送ることができる。同様に、アプリケーション（３４３）は、第１のキャッシュ領域−３（３３５）又は第２のキャッシュ領域−３（３３６）上にデータを書き込む命令、第１のキャッシュ領域−３（３３５）又は第２のキャッシュ領域−３（３３６）からデータを読み取る命令、又はそれらの組み合わせを、データ処理システム（３０３）に送ることができる。アプリケーション（３４１、３４２及び３４３）は、データ処理システム（３０１）に備えられたメモリ内に格納することができ、又はデータ処理システム（３０１）とは異なるシステム内に格納し、インターフェース（３２１、３２２及び３２３）を介してキャッシュメモリ（３１１）にアクセスすることができる。
【００６４】
データベースリポジトリ（３９１）は、図２Ａ及び図２Ｂに説明されるデータベースリポジトリ（２９１）に対応する。
【００６５】
ここで図３Ａを参照すると、データ処理システム（３０１）は、まず、キャッシュメモリ（３１１）上に、第１のキャッシュ領域と第２のキャッシュ領域との前述の第１、第２及び第３の対を提供する。前述の第１、第２及び第３の対を提供するために、データ処理システム（３０１）は、キャッシュメモリ（３１１）上で、第１のキャッシュ領域（３３１、３３３及び３３５）の各々に使用されるアドレス、並びに第２のキャッシュ領域（３３２、３３４及び３３６）の各々に使用されるアドレスを指定することができる。
【００６６】
第１のキャッシュ領域（３３１、３３３及び３３５）並びに第２のキャッシュ領域（３３２、３３４及び３３６）は、それぞれ図２Ａ及び図２Ｂに説明される第１のキャッシュ領域（２３１）及び第２のキャッシュ領域（２３２）と同じ役割を有する。
【００６７】
図３Ａに示されるように、第１のキャッシュ領域（３３１、３３３及び３３５）は、まず、第１のキャッシュ領域（３３１、３３３、３３５）の各々とデータベースリポジトリ（３９１）との間で同期を行うことなく、所定の時間窓（以下、「第１の時間窓」とも呼ばれる）において着信するストリーミングデータを第１のキャッシュ領域（３３１、３３３及び３３５）上に書き込む役割を有し、第２のキャッシュ領域（３３２、３３４及び３３６）は、まず、第１の時間窓において、データベースリポジトリ（３９１）と第２のキャッシュ領域（３３２、３３４及び３３６）との間でデータを同期させる役割を有する。
【００６８】
データ処理システム（３０１）は、第１の時間窓において着信するストリーミングデータを受信する。データ処理システム（２０１）は、第１のキャッシュ領域（３３１、３３３及び３３５）の各々とデータベースリポジトリ（３９１）との間で同期を行うことなく、第１の時間窓において、ストリーミングデータを第１のキャッシュ領域（３３１、３３３、３３５）上に書き込む。このように、第１の時間窓において、第１のキャッシュ領域（３３１、３３３及び３３５）の各々とデータベースリポジトリ（３９１）との間の同期は許可されない（図３Ａにおいて、第１のキャッシュ領域（３３１、３３３及び３３５）とデータベースリポジトリ（３９１）との間に接続がないことによって示されるように）。一方、データベースリポジトリ（３９１）と第２キャッシュ領域（３３２、３３４及び３３６）との間の同期は、第１の時間窓の少なくとも一部において許容される。例えば、データベースリポジトリ（３９１）と第２のキャッシュ領域（３３２、３３４、３３６）の各々との間の同期が完了するまでは、同期は許容される。
【００６９】
幾つかの実施形態において、第１の時間窓において、ストリーミングデータを第１のキャッシュ領域（３３１、３３３及び３３５）の各々に書き込む動作が終了するまで、例えば、テーブルロックを用いて、第１のキャッシュ領域（３３１、３３３及び３３５）の各々をロックすることができ、第２のキャッシュ領域（３３２、３３４及び３３６）上へのストリーミングデータの書き込みを禁止するために、第２のキャッシュ領域（３３２、３３４及び３３６）の各々とデータベースリポジトリ（３９１）との間の同期が終了するまで、例えば、テーブルロックを用いて、第２のキャッシュ領域（３３２、３３４及び３３６）の各々をロックすることができる。テーブルロックを用いた第１のキャッシュ領域（３３１、３３３及び３３５）のロックは、アプリケーション（３４１、３４２及び３４３）から第１のキャッシュ領域（３３１、３３３及び３３５）へのアクセスに対して、第１のキャッシュ領域（３３１、３３３及び３３５）の全体をロックすることによって行うことができる。同様に、テーブルロックを用いた第２のキャッシュ領域（３３２、３３４及び３３６）のロックは、アプリケーション（３４１、３４２、３４３）から第２のキャッシュ領域（３３２、３３４及び３３６）へのアクセスに対して、第２のキャッシュ領域（３３２、３３４、３３６）の全体をロックすることによって行うことができる。
【００７０】
幾つかの実施形態において、第１の時間窓において、第１のキャッシュ領域（３３１、３３３、及び３３５）上にストリーミングデータを書き込む動作が終了するまで、例えば、ハッシュインデックスに基づいて、第１のキャッシュ領域（３３１、３３３、及び３３５）をロックすることができ、第２のキャッシュ領域（３３２、３３４及び３３６）上へのストリーミングデータの書き込みを禁止するために、第２のキャッシュ領域（３３２、３３４及び３３６）とデータベースリポジトリ（３９１）との間の同期が終了するまで、例えば、テーブルロックを用いて、第２のキャッシュ領域（３３２、３３４及び３３６）をロックすることができる。ハッシュインデックスに基づく第１のキャッシュ領域（３３１、３３３及び３３５）のロックは、アプリケーション（３４１、３４２及び３４３）から第１のキャッシュ領域（３３１、３３３及び３３５）へのアクセスに対して、ハッシュインデックスに基づいて第１のキャッシュ領域（３３１、３３３及び３３５）をロックすることによって行うことができる。テーブルロックを用いた第２のキャッシュ領域（３３２、３３４及び３３６）のロックは、アプリケーション（３４１、３４２及び３４３）から第２のキャッシュ領域（３３２、３３４及び３３６）へのアクセスに対して、第２のキャッシュ領域（３３２、３３４及び３３６）の全体をロックすることによって行うことができる。
【００７１】
第１の時間窓において、アプリケーション（３４１、３４２及び３４３）は、第２のキャッシュ領域（３３２、３３４及び３３６）上のデータを読み取ることができるが、第２のキャッシュ領域（３３２、３３４及び３３６）に対して行われた前述のロックのために、第２のキャッシュ領域（３３２、３３４及び３３６）上へのデータの書き込みは許可されない（図３Ａにおいて、第１のキャッシュ領域（３３１、３３３及び３３５）とアプリケーション（３４１、３４２及び３４３）との間に接続がないことによって示されるように）。
【００７２】
ここで図３Ｂを参照すると、現在第１の時間窓が経過した同じ環境が示される。第１の時間窓の経過時に、データ処理システム（３０１）は、前述の第１、第２及び第３の対のそれぞれにおいて、第１のキャッシュ領域の役割を第２のキャッシュ領域の役割と交換する。データ処理システム（３０１）は、第１の時間窓の経過時に、第１のキャッシュ領域（３３１、３３３及び３３５）の各々とデータベースリポジトリ（３９１）との間の同期を有効化する。一方、データ処理システム（３０１）は、第１の時間窓の経過時に、データベースリポジトリ（３９１）と第２のキャッシュ領域（３３２、３３４及び３３６）の各々との間の同期を阻止する（図３Ｂにおいて、第２のキャッシュ領域（３３２、３３４及び３３６）とデータベースリポジトリ（３９１）との間が接続されていないことによって示されるように）。
【００７３】
第１の時間窓の経過後、新しい時間窓（すなわち第２の時間窓）が開始する。データ処理システム（３０１）は、データベースリポジトリ（３９１）と第２のキャッシュ領域（３３２、３３４及び３３６）の各々との間の同期を行うことなく、第２の時間窓において、新しく着信するストリーミングデータを第２のキャッシュ領域（３３２、３３４及び３３６）上に書き込む。このように、第２の時間窓において、データベースリポジトリ（３９１）と第２のキャッシュ領域（３３２、３３４及び３３６）の各々との間の同期は許可されない。一方、第２の時間窓の少なくとも一部においては、第１のキャッシュ領域（３３１、３３３及び３３５）の各々とデータベースリポジトリ（３９１）との間の同期は許容される。例えば、第１のキャッシュ領域（３３１、３３３及び３３５）の各々とデータベースリポジトリ（３９１）との間の同期が完了するまで、同期は許容される。
【００７４】
幾つかの実施形態においては、第２の時間窓において、第２のキャッシュ領域（３３２、３３４、及び３３６）上に新しく着信するストリーミングデータを書き込む動作が終了するまで、例えば、テーブルロックを用いて、第２のキャッシュ領域（３３２、３３４、及び３３６）をロックすることができ、第１のキャッシュ領域（３３１、３３３及び３３５）上へのストリーミングデータの書き込みを禁止するために、データベースリポジトリ（３９１）と第１のキャッシュ領域（３３１、３３３及び３３５）との間の同期が終了するまで、例えば、テーブルロックを用いて、第１のキャッシュ領域（３３１、３３３及び３３５）をロックすることができる。テーブルロックを用いた第２のキャッシュ領域（３３２、３３４、３３６）のロックは、アプリケーション（３４１、３４２及び３４３）から第２のキャッシュ領域（３３２、３３４、３３６）へのアクセスに対して、第２のキャッシュ領域（３３２、３３４及び３３６）の全体をロックすることによって行うことができる。同様に、テーブルロックを用いた第１のキャッシュ領域（３３１、３３３及び３３５）のロックは、アプリケーション（３４１、３４２及び３４３）から第１のキャッシュ領域（３３１、３３３及び３３５）へのアクセスに対して、第１のキャッシュ領域（３３１、３３３及び３３５）の全体をロックすることによって行うことができる。
【００７５】
幾つかの実施形態においては、第２の時間窓において、第２のキャッシュ領域（３３２、３３４、及び３３６）に新しく着信するストリーミングデータを書き込む動作が終了するまで、例えば、ハッシュインデックスに基づいて、第２のキャッシュ領域（３３２、３３４、及び３３６）をロックすることができ、データベースリポジトリ（３９１）と第１のキャッシュ領域（３３１、３３３及び３３５）との間の同期が終了するまで、例えば、第１のキャッシュ領域（３３１、３３３及び３３５）上への新しく着信するストリーミングデータの書き込みを禁止するために、例えば、テーブルロックを用いて、第１のキャッシュ領域（３３１、３３３、及び３３５）をロックすることができる。ハッシュインデックスに基づく第２のキャッシュ領域（３３２、３３４、３３６）のロックは、アプリケーション（３４１、３４２、３４３）から第２のキャッシュ領域（３３２、３３４、３３６）へのアクセスに対して、ハッシュインデックスに基づいて第２のキャッシュ領域（３３２、３３４及び３３６）をロックすることによって行うことができる。テーブルロックを用いた第１のキャッシュ領域（３３１、３３３、３３５）のロックは、アプリケーション（３４１、３４２及び３４３）から第１のキャッシュ領域（３３１、３３３及び３３５）へのアクセスに対して、第１のキャッシュ領域（３３１、３３３及び３３５）の全体をロックすることによって行うことができる。
【００７６】
第２の時間窓において、アプリケーション（３４１、３４２及び３４３）は、第１のキャッシュ領域（３３１、３３３及び３３５）上のデータを読み取ることができるが、第１のキャッシュ領域（３３１、３３３及び３３５）に対して行われた前述のロックのために、第１のキャッシュ領域（３３１、３３３及び３３５）上へのデータの書き込みは許可されない（図３Ｂにおいて、第１のキャッシュ領域（３３１、３３３及び３３５）とアプリケーション（３４１、３４２及び３４３）との間に接続がないことによって示されるように）。
【００７７】
再び図３Ａを参照すると、第２の時間窓の経過時に、データ処理システム（３０１）は、前述の第１、第２及び第３の対のそれぞれにおいて、第１のキャッシュ領域の役割を第２のキャッシュ領域の役割と再び交換する。従って、データ処理システム（３０１）は、図３Ａに説明されるブロック図に従って、新しく着信するデータを処理する。
【００７８】
上述したように、所定の時間窓の経過時に、データ処理システム（３０１）は、前述の第１、第２及び第３の対のそれぞれにおいて、第１のキャッシュ領域の役割を第２のキャッシュ領域の役割と交換して、ストリーミングデータを処理する。この交換は、図３Ａに示される役割を用いる奇数番目（例えば、第１、第３、第５）の時間窓と、図３Ｂに示される役割を用いる偶数番目（例えば、第２、第４、第６）の時間窓とによって無期限に継続することができる。
【００７９】
図３Ａ及び図３Ｂに説明される実施形態は、新しく着信するストリーミングデータの一貫性とともに、リアルタイム性能を可能にする。
【００８０】
図３Ａ及び図３Ｂに説明される実施形態において、第１、第２、及び第３の対は、同じ時間窓において同時に使用することができる。
【００８１】
別の実施形態において、第１、第２、及び第３の対は、異なる時間窓のそれぞれにおいて使用することができる。例えば、第１、第２、及び第３の対は、時間窓の順序に従った順番で使用することができる。これは、例えば、アプリケーション-１（３４１）及びインターフェース−１（３２１）のみが使用され、第１、第２、第３の対がインターフェース−１（３２１）のみによって使用されるという状況下で行われる。
【００８２】
当業者であれば、図３Ａ及び図３Ｂに説明されるブロック図を用いて、種々の変形を適用することができる。
【００８３】
図４並びに図５Ａ及び図５Ｂは、それぞれ、ストリーミングデータを処理するプロセスを示す異なるフローチャートを示す。
【００８４】
ここで図４を参照すると、本開示の実施形態による、ストリーミングデータを処理するプロセスを示すフローチャートが示される。
【００８５】
各々の動作の対象は、図１に説明されるコンピュータシステム（１０１）に対応することができるデータ処理システムとすることができる。
【００８６】
４０１において、データ処理システムは、プロセスを開始する。所定の時間窓の長さは、予め手動で又は自動的に定義することができ、プロセスの過去の事例から取得された次のデータ、例えば、受信したストリーミングデータ、ストリーミングデータの処理時間、データをデータベースリポジトリと同期させるのに要する時間、又はそれらの組み合わせから導出されるデータに依存し得る。
【００８７】
４０２において、データ処理システムは、データ処理システムにおいて、キャッシュメモリ上に第１のキャッシュ領域及び第２のキャッシュ領域の１つ又は複数の対を提供する。データ処理システムは、キャッシュメモリ上で、第１のキャッシュ領域に使用されるアドレスと、同じく第２のキャッシュ領域に使用されるアドレスとを指定し、第１のキャッシュ領域及び第２のキャッシュ領域の１つ又は複数の対の各々を提供することができる。
【００８８】
４０３において、所定の時間窓（第１の時間窓）において、データ処理システムは、第１のキャッシュ領域とデータベースリポジトリとの間の同期を行うことなく、ストリーミングデータを受信し、ストリーミングデータを第１のキャッシュ領域上に書き込む。第１の時間窓の少なくとも一部において、データベースリポジトリと第２のキャッシュ領域との間の同期は許容される。従って、データ処理システムは、データベースリポジトリと第２のキャッシュ領域との間の同期を行うことができる。
【００８９】
第１の時間窓において、データ処理システムは、アプリケーションから第１のキャッシュ領域へのアクセスに対して、第１のキャッシュ領域の全体をロックすることができ、さらに、アプリケーションから第２のキャッシュ領域へのアクセスに対して、第２のキャッシュ領域の全体をロックすることができる。代替的に、第１の時間窓において、データ処理システムは、アプリケーションから第１のキャッシュ領域へのアクセスに対して、ハッシュインデックスベースに基づいて、第１のキャッシュ領域をロックすることができ、さらに、アプリケーションから第２のキャッシュ領域へのアクセスに対して、第２のキャッシュ領域の全体をロックすることができる。
【００９０】
４０４において、データ処理システムは、第１の時間窓が経過したかどうかを判断する。第１の時間窓が経過した場合、データ処理システムはステップ４０５に進む。そうでなければ、データ処理システムはステップ４０３に戻り、ステップ４０３を繰り返す。
【００９１】
４０５において、第１の時間窓の経過時に、データ処理システムは、第１のキャッシュ領域の役割を第２のキャッシュ領域の役割と交換する。
【００９２】
４０６において、データ処理システムは、４０５における交換後の第１のキャッシュ領域とデータベースリポジトリとの間の同期を可能にするが、４０５における交換後のデータベースリポジトリと第２のキャッシュ領域との間の同期を阻止する。さらに、データ処理システムは、４０５における交換後、新しく着信するストリーミングデータを第２のキャッシュ領域上に書き込む。
【００９３】
従って、所定の時間窓（第２の時間窓）において、データ処理システムは、データベースリポジトリと交換後の第２のキャッシュ領域との間の同期を行うことなく、新しく着信するストリーミングデータを受信し、新しく着信するストリーミングデータを交換後の第２のキャッシュ領域上に書き込む。第２の時間窓の少なくとも一部において、交換後の第１のキャッシュ領域とデータベースリポジトリとの間の同期は許容される。従って、データ処理システムは、交換後の第１のキャッシュ領域とデータベースリポジトリとの間の同期を行うことができる。
【００９４】
第２の時間窓の長さは、第１の時間窓の長さと同じであっても、又は異なっていてもよい。第２の時間窓の長さは、過去の事例又は第１の時間窓において取得された次のデータから導出されたデータ、例えば、受信したストリーミングデータ、ストリーミングデータの処理時間、データベースリポジトリとの同期に要する時間、又はそれらの組み合わせに応じて、アプリケーションによって自動的に更新することができる。所定の時間窓の長さが更新された場合、更新された長さは、後の時間窓（例えば、次の第２の時間窓）に使用することができる。
【００９５】
第２の時間窓において、データ処理システムは、アプリケーションから、交換後の第１のキャッシュ領域へのアクセスに対して、第１のキャッシュ領域の全体をロックすることができ、さらに、アプリケーションから、交換後の第２のキャッシュ領域へのアクセスに対しても、第２のキャッシュ領域の全体をロックすることができる。代替的に、第２の時間窓において、データ処理システムは、アプリケーションから第１のキャッシュ領域へのアクセスに対して、第１のキャッシュ領域の全体をロックすることができ、さらに、アプリケーションから第２のキャッシュ領域へのアクセスに対して、ハッシュインデックスに基づいて、第２のキャッシュ領域をロックすることもできる。
【００９６】
ステップ４０７において、データ処理システムは、第２の時間窓が経過したかどうかを判断する。第２の時間窓が経過した場合、データ処理システムはステップ４０８に進む。そうでなければ、データ処理システムはステップ４０６に戻り、ステップ４０６を繰り返す。
【００９７】
４０８において、第２の時間窓の経過時に、データ処理システムは、交換後の第１のキャッシュ領域の役割を第２のキャッシュ領域の役割と再交換する。従って、第３の時間窓において、４０３において説明される同じ処理が再び実行され、プロセスは４０３に戻る。
【００９８】
ユーザが前述のプロセスの終了を選択した場合、データ処理システムは、プロセスを終了させることができる。
【００９９】
ここで図５Ａ及び図５Ｂを参照すると、図５Ａ及び図５Ｂは、本開示の実施形態による、ストリーミングデータを処理するプロセスを示すフローチャートである。
【０１００】
図５Ａにおいて、各動作の対象は、図１に説明されるコンピュータシステム（１０１）に対応することができるデータ処理システムとすることができる。
【０１０１】
５０１において、データ処理システムは、プロセスの一部を開始する。上述のように、所定の時間窓の長さは、手動で又は自動的に予め定めることができる。
【０１０２】
５０２において、データ処理システムは、データ処理システムにおいて、キャッシュメモリ上に２つのキャッシュ領域、すなわちフロントテーブル（Ｆ）とバックテーブル（Ｂ）との１つ又は複数の対を提供する。データ処理システムは、キャッシュメモリ上で、フロントテーブルに使用されるアドレスと、バックテーブルに使用されるアドレスとを指定し、フロントテーブルとバックテーブルとの１つ又は複数の対の各々を提供することができる。フロントテーブル及びバックテーブルは、それぞれ図４に説明される第１のキャッシュ領域及び第２のキャッシュ領域に対応することができる。
【０１０３】
５０３において、データ処理システムは、所定の時間窓が経過したかどうかを判断する。所定の時間窓が経過した場合、データ処理システムは５０４に進む。そうでなければ、データ処理システムは、所定の時間窓が経過するまで５０３に戻る。
【０１０４】
５０４において、データ処理システムは、フロントテーブルのアドレスをバックテーブルのアドレスと交換する。
【０１０５】
５０５において、所定の時間窓（第２の時間窓）において、データ処理システムは、アプリケーションからバックテーブルへのアクセスに対して、バックテーブルの全体をロックし、スナップショットに使用されたメモリとバックテーブルとの間、又はデータベースリポジトリとバックテーブルとの間に、スナップショット（例えば、同期）を動作させ、次いで、バックテーブルをロック解除する。幾つかの実施形態において、さらに、データを、スナップショットに使用されたメモリからデータベースに書き込まれる。バックテーブルは、スナップショットの動作専用のものとすることができる。従って、このロックは、テーブル全体に対して行われる。
【０１０６】
５０６において、データ処理システムは、アプリケーションからバックテーブルへのアクセスに対して、バックテーブルの全体をロックし、バックテーブルを消去し、次いで、バックテーブルをロック解除する。
【０１０７】
ロック解除後、データ処理システムは５０３に戻る。
【０１０８】
ユーザが前述のプロセスの終了を選択した場合、データ処理システムは、プロセスを終了させることができる。
【０１０９】
図５Ｂにおいて、各ステップの対象は、アプリケーションを実施するシステム、又はアプリケーションを実施するデータ処理システムとすることができる。以下、図５Ｂにおける各ステップの対象を単にコンピュータシステムと呼ぶ場合があるが、コンピュータシステムは、アプリケーションを実施するシステム、又はアプリケーションを実施するデータ処理システムを含む。
【０１１０】
５１１において、コンピュータシステムは、プロセスの残りの部分を開始する。残りの部分は、アプリケーションの動作によって実行することができる。
【０１１１】
５１２において、コンピュータシステムは、フロントテーブルの現アドレスを取得する。
【０１１２】
５１３において、コンピュータシステムは、フロントテーブル上に書き込まれたストリーミングデータに基づいて、ハッシュインデックスを計算する。
【０１１３】
５１４において、コンピュータシステムは、ハッシュインデックスベースを用いてフロントテーブルをロックし、フロントテーブル上に着信するストリーミングデータを書き込み、書き込み後にフロントテーブルをロック解除する。ロック解除までの待ち時間を最小に減らすために、ハッシュインデックスに基づいて、フロントテーブルのロックが行われる。
【０１１４】
ロック解除後、コンピュータシステムは、ステップ５１２に戻る。
【０１１５】
ユーザが前述のプロセスの終了を選択した場合、コンピュータシステムは、プロセスを終了させることができる。
【０１１６】
図６を参照すると、本開示の実施形態に従って取得した結果の例が示される。
【０１１７】
以下のような実験シナリオを準備した：すなわち、ＰＵＴ動作を行う４つのスレッド、ＧＥＴ動作を行う４つのスレッド、及びデータベース書き込み動作を行う１つのスレッドを、１０秒の時間窓においてそれぞれ５回実行し、合計５０秒で完了したＰＵＴ動作及びＧＥＴ動作をカウントした。データベース書込み動作の各々において、スナップショットに使用されるメモリ内にその時点のキャッシュデータベース画像のコピーを作成する間、ロックを行い、次に、ロックを解除してスナップショットに使用されたメモリ内のコピーされたデータが、データベースリポジトリに書き込まれる。スナップショットに使用されたメモリは、キャッシュデータベースとデータベースリポジトリの間に準備することができる。
【０１１８】
実験のために以下が、次の３つの環境において実施された：すなわち、
−シナリオ＿１：データベースキャッシュから読み取り／書き込みすることができるアプリケーションと、テーブルロックを用いてデータをデータベースキャッシュと定期的に同期させるデータベースとを有する、ＴＳ１として上述された従来の解決法、
−シナリオ＿２ａ：本開示の実施形態による、各々がテーブルロックを用いる２つのデータベースキャッシュ、及び
−シナリオ＿２ｂ：本開示の実施形態による、２つのデータベースキャッシュ、ハッシュインデックスに基づいてロックされるフロントテーブル、及びバックテーブルの全体がロックされるバックテーブル。
【０１１９】
テーブル（６０１）及びグラフ（６０２）は、シナリオ＿１、シナリオ＿２ａ及びシナリオ＿２ｂの各々において、５０秒で完了した動作の数を比較したものである。テーブル（６０１）における結果は、本開示の実施形態、すなわち、シナリオ＿２ａ及びシナリオ＿２ｂが、上述した従来の解決法、すなわち、シナリオ＿１のものと比較して、約４〜６倍速い処理速度の改善を達成したことを示す。
【０１２０】
ここで図７を参照すると、図４に説明されるプロセスに関連してコンピュータシステムのハードウェアを示す全体的な機能ブロック図が示される。
【０１２１】
データ処理システム（７０１）は、図１に説明されるコンピュータシステム（１０１）に対応することができる。
【０１２２】
データ処理システム（７０１）は、キャッシュメモリ（７１１）、提供セクション（７４１）、ロックセクション（７４２）、受信セクション（７４３）、書き込みセクション（７４４）、同期セクション（７４５）及び交換セクション（７４６）、並びに任意に時間窓セクション（７４７）を含むことができる。
【０１２３】
キャッシュメモリ（７１１）は、第１のキャッシュ領域（７３１）と第２のキャッシュ領域（７３２）との１つ又は複数の対を有することができる。
【０１２４】
提供セクション（７４１）は、キャッシュメモリ（７１１）上に第１のキャッシュ領域（７３１）と第２のキャッシュ領域（７３２）との対を提供する。
【０１２５】
ロックセクション（７４２）は、第１のキャッシュ領域（７３１）の全体で第１のキャッシュ領域（７３１）へのアクセスをロックし、第１の時間窓において、第２のキャッシュ領域（７３２）の全体で第２のキャッシュ領域（７３２）へのアクセスをさらにロックするか、又はハッシュインデックスベースで第１のキャッシュ領域（７３１）へのアクセスをロックし、第１の時間窓において、第２のキャッシュ領域（７３２）の全体で第２のキャッシュ領域（７３２）へのアクセスをさらにロックし、第１のキャッシュ領域（７３１）の全体で第１のキャッシュ領域（７３１）へのアクセスをロックし、第２のキャッシュ領域（７３２）の全体で第２のキャッシュ領域（７３２）へのアクセスをさらにロックし、又は第２の時間窓において、交換後の第１のキャッシュ領域（７３１）の全体で交換後の第１のキャッシュ領域（７３１）へのアクセスをロックし、第２の時間窓において、ハッシュインデックスベースでの交換後の第２のキャッシュ領域（７３２）へのアクセスをさらにロックする。
【０１２６】
受信セクション（７４３）は、所定の時間窓の各々において、ストリーミングデータを受信する。
【０１２７】
書き込みセクション（７４４）は、第１の時間窓において、第１のキャッシュ領域（７３１）とデータベースリポジトリ（７９１）との間の同期を行うことなく、第１のキャッシュ領域（７３１）上にストリーミングデータを書き込み、第１の時間窓の経過後に、データベースリポジトリ（７９１）と第２の時間窓における交換後の第２のキャッシュ領域（７３２）との間の同期を行うことなく、第２の時間窓における交換後の第２のキャッシュ領域（７３２）上に新しく着信するストリーミングデータを書き込む。
【０１２８】
同期セクション（７４５）は、第１のキャッシュ領域（７３１）とデータベースリポジトリ（７９１）との間の同期を阻止し、第１の時間窓において、データベースリポジトリ（７９１）と第２のキャッシュ領域（７３２）との間の同期を行い、第１の時間窓の経過時に、交換後のデータベースリポジトリ（７９１）と第２のキャッシュ領域（７３２）との間の同期を阻止し、交換後の第１のキャッシュ領域（７３１）とデータベースリポジトリ（７９１）との間の同期を行う。
【０１２９】
交換セクション（７４６）は、第１の時間窓の経過時に、第１のキャッシュ領域（７３１）の役割を第２のキャッシュ領域（７３２）の役割と交換し、第２の時間窓の経過時に、交換後の第１のキャッシュ領域（７３１）の役割を交換後の第２のキャッシュ領域（７３２）の役割と再交換する。
【０１３０】
時間窓セクション（７４７）は、所定の時間窓を設定し、所定の時間窓を測定することができる。時間窓セクション（７４７）はさらに、過去の事例又は１つ又は複数の前の時間窓から取得した次のデータから導出されたデータ、例えば、受信したストリーミングデータ、ストリーミングデータの処理時間、データベースリポジトリとの同期に要する時間、又はそれらの組み合わせに応じて、時間窓の長さを定義することができる。
【０１３１】
本発明は、システム、方法もしくはコンピュータプログラム製品又はその組み合わせを任意の可能な技術的詳細レベルで統合したものとすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体（単数又は複数）を含むことができる。
【０１３２】
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの、すなわち、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュメモリ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ポータブルコンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリスティック、パンチカード若しくは命令がそこに記録された溝内の隆起構造のような機械的にエンコードされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を通じて伝搬する電磁波（例えば、光ファイバケーブルを通る光パルス）、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。
【０１３３】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング／処理デバイスに、又は、例えばインターネット、ローカルエリアネットワーク、広域ネットワークもしくは無線ネットワークもしくはその組み合わせのネットワークを介して外部コンピュータ又は外部ストレージデバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータもしくはエッジサーバ又はその組み合わせを含むことができる。各コンピューティング／処理デバイスにおけるネットワーク・アダプタ・カード又はネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング／処理デバイス内のコンピュータ可読ストレージ媒体に格納する。
【０１３４】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、又は、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語、及び、「Ｃ」プログラミング言語若しくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む１つ又は複数のプログラミング言語の任意の組み合わせで記述されるソース・コード又はオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいて、遠隔コンピュータは、ローカルエリアネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある（例えば、インターネットサービスプロバイダを用いたインターネットを通じて）。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、又はプログラム可能論理アレイ（ＰＬＡ）を含む電子回路は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行して、電子回路を個別化することができる。
【０１３５】
本発明の態様は、本発明の実施形態による方法、装置（システム）及びコンピュータプログラム製品のフローチャート図及び／又はブロック図を参照して説明される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
【０１３６】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えて機械を製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実施するための手段を作り出すようにすることができる。これらのコンピュータプログラム命令を、コンピュータ、他のプログラム可能データ処理装置もしくは他のデバイス又はその組み合わせを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作の態様を実施する命令を含む製品を含むようにすることもできる。
【０１３７】
コンピュータプログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生産し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実行するためのプロセスを提供するようにすることもできる。
【０１３８】
図面内のフローチャート及びブロック図は、本発明の様々な実施形態による、システム、方法、及びコンピュータプログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート内の各ブロックは、指定された論理機能を実装するための１つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される２つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び／又はフローチャート図の各ブロック、並びにブロック図及び／又はフローチャート図におけるブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェアベースのシステムによって実装できることにも留意されたい。
【図１】
2021526252.tif 000003
【図２Ａ】
2021526252.tif 000004
【図２Ｂ】
2021526252.tif 000005
【図３Ａ】
2021526252.tif 000006
【図３Ｂ】
2021526252.tif 000007
【図４】
2021526252.tif 000008
【図５Ａ】
2021526252.tif 000009
【図５Ｂ】
2021526252.tif 000010
【図６】
2021526252.tif 000011
【図７】
2021526252.tif 000012
【手続補正書】
【提出日】令和2年12月9日(2020.12.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ストリーミングデータを処理するためのコンピュータ実施方法であって、
データベースリポジトリ及び前記データベースリポジトリのためのキャッシュメモリを含むデータ処理システムにおいて、キャッシュメモリ上に第１のキャッシュ領域及び第２のキャッシュ領域を提供することと、
第１の時間窓において、ストリーミングデータを受信し、前記ストリーミングデータを前記第１のキャッシュ領域上に書き込むことと、
前記第１の時間窓において、前記第１のキャッシュ領域と前記データベースリポジトリとの間の同期を行うことを禁止することと、
前記第１の時間窓の少なくとも一部において、前記データベースリポジトリと前記第２のキャッシュ領域との間の同期を有効化することと、
前記第１の時間窓の経過時に、前記第１のキャッシュ領域と前記データベースリポジトリとの間の同期を有効化することと、
を含む、方法。
【請求項２】
前記データ処理システムは、アプリケーションとのインターフェースをさらに含み、
前記方法は、着信するストリーミングデータのリアルタイム処理のために、前記アプリケーションが前記キャッシュメモリにアクセスすることを有効化することをさらに含む、
請求項１に記載の方法。
【請求項３】
前記方法は、
前記第１の時間窓の経過時に、前記データベースリポジトリと前記第２のキャッシュ領域との間の同期を阻止すること
をさらに含む、請求項１又は請求項２に記載の方法。
【請求項４】
前記方法は、
前記第１の時間窓の経過時に、新しく着信するストリーミングデータを前記第２のキャッシュ領域上に書き込むこと
をさらに含む、請求項３に記載の方法。
【請求項５】
前記方法は、
前記第１の時間窓の経過時に、前記第１のキャッシュ領域の役割を第２のキャッシュ領域の役割と交換することと、
前記第２の時間窓において、前記交換後の前記第１のキャッシュ領域と前記データベースリポジトリとの間の同期を行うことと、
前記第２の時間窓において、新しく着信するストリーミングデータを前記第２のキャッシュ領域上に書き込むことと、
前記第２の時間窓において、前記第２のキャッシュ領域と前記データベースリポジトリとの間の同期を禁止することと
さらに含む、請求項１〜請求項４のいずれかに記載の方法。
【請求項６】
前記方法は、
前記第１の時間窓の経過時に、前記交換後の前記第１のキャッシュ領域の役割を前記交換後の前記第２のキャッシュ領域の役割と再交換することと、
第３の時間窓において、前記受信すること、前記書き込むこと、及び前記有効化することを繰り返すことと
をさらに含む、請求項５に記載の方法。
【請求項７】
前記方法は、
前記第１の時間窓において、前記第１のキャッシュ領域の全体を前記第１のキャッシュ領域へのアクセスに対してロックすることと、
前記第１の時間窓において、前記第２のキャッシュ領域の全体を前記第２のキャッシュ領域へのアクセスに対してロックすることと
をさらに含む、請求項１〜請求項６のいずれかに記載の方法。
【請求項８】
前記方法は、
前記第１の時間窓において、ハッシュインデックスに基づいて前記第１のキャッシュ領域を前記第１のキャッシュ領域へのアクセスに対してロックすることと、
前記第１の時間窓において、前記第２のキャッシュ領域の全体を前記第２のキャッシュ領域へのアクセスに対してロックすることと
をさらに含む、請求項１〜請求項６のいずれかに記載の方法。
【請求項９】
前記方法は、
前記第１の時間窓の経過時に、前記第１のキャッシュ領域の役割を前記第２のキャッシュ領域の役割と交換することと、
前記第２の時間窓において、前記第１のキャッシュ領域の全体を前記第１のキャッシュ領域へのアクセスに対してロックすることと、
前記第２の時間窓において、前記第２のキャッシュ領域の全体を前記第２のキャッシュ領域へのアクセスに対してロックすることと
をさらに含む、請求項８に記載の方法。
【請求項１０】
前記キャッシュメモリ上に第１のキャッシュ領域及び第２のキャッシュ領域を提供することは、前記キャッシュメモリ上に第１のキャッシュ領域と第２のキャッシュ領域との複数の対を提供することを含む、請求項１〜請求項９のいずれかに記載の方法。
【請求項１１】
前記複数の対は、同じ時間窓において同時に使用されるか、又は異なる時間窓の各々において使用される、請求項１０に記載の方法。
【請求項１２】
それぞれの時間窓の長さは、前記ストリーミングデータを処理するために前記アプリケーションによって更新され、前記更新された長さは、後の時間窓に使用される、請求項５に記載の方法。
【請求項１３】
それぞれの時間窓の長さは、受信した前記ストリーミングデータの量、前記ストリーミングデータの処理時間、前記データベースリポジトリとの同期に要する時間、又はそれらの組み合わせに応じて定められる、請求項５に記載の方法。
【請求項１４】
データ処理システムであって、
１つ又は複数のプロセッサと、
前記プロセッサ上で実行されたとき、ストリーミングデータを処理するための動作を実行するプログラムを格納するメモリと、
データベースリポジトリと、
前記データベースリポジトリのためのキャッシュメモリと、
を含み、前記キャッシュメモリは、
第１の時間窓において、ストリーミングデータを受信し、第１のキャッシュ領域と前記データベースリポジトリとの間の同期を行うことなく、前記ストリーミングデータを第１のキャッシュ領域上に書き込む役割を実行するのに使用される第１のキャッシュ領域と、
前記第１の時間窓の少なくとも一部において、前記データベースリポジトリとの同期を行う役割を実行するのに使用される第２のキャッシュ領域と
を含み、
前記データ処理システムは、前記第１の時間窓の経過時に、前記第１のキャッシュ領域と前記データベースリポジトリとの間の同期を行う、データ処理システム。
【請求項１５】
前記データ処理システムは、前記第１の時間窓の経過時に、前記データベースリポジトリと前記第２のキャッシュ領域との間の同期を阻止する、請求項１４に記載のデータ処理システム。
【請求項１６】
前記データ処理システムは、前記第１の時間窓の経過時に、新しく着信するストリーミングデータを前記第２のキャッシュ領域上に書き込む、請求項１４又は請求項１５に記載のデータ処理システム。
【請求項１７】
前記データ処理システムは、前記第１の時間窓の経過時に、前記第１のキャッシュ領域の役割を前記第２のキャッシュ領域の役割と交換し、
前記交換後に生じる第２の時間窓において、前記データベースリポジトリと前記第１のキャッシュ領域との間の同期を行い、前記第２のキャッシュ領域と前記データベースリポジトリとの間の同期を行うことなく、新しく着信するストリーミングデータを前記第２のキャッシュ領域上に書き込む、請求項１４〜請求項１６のいずれかに記載のデータ処理システム。
【請求項１８】
請求項１〜請求項１３のいずれかに記載の方法をコンピュータに実行させる、コンピュータプログラム。
【請求項１９】
請求項１８に記載のコンピュータプログラムを格納した、コンピュータ可読ストレージ媒体。
【国際調査報告】
2021526252.tif 000013
2021526252.tif 000014