JP7316724B2 - ストリーミングデータの複数のキャッシュ処理 - Google Patents

ストリーミングデータの複数のキャッシュ処理 Download PDF

Info

Publication number
JP7316724B2
JP7316724B2 JP2020564621A JP2020564621A JP7316724B2 JP 7316724 B2 JP7316724 B2 JP 7316724B2 JP 2020564621 A JP2020564621 A JP 2020564621A JP 2020564621 A JP2020564621 A JP 2020564621A JP 7316724 B2 JP7316724 B2 JP 7316724B2
Authority
JP
Japan
Prior art keywords
cache
cache area
time window
database repository
synchronization
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020564621A
Other languages
English (en)
Other versions
JP2021526252A (ja
Inventor
基弘 川人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2021526252A publication Critical patent/JP2021526252A/ja
Application granted granted Critical
Publication of JP7316724B2 publication Critical patent/JP7316724B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/16General purpose computing application
    • G06F2212/163Server or database system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/282Partitioned cache

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、ストリーミングコンピューティングに関し、より具体的には、ストリーミングデータの処理に関する。
ストリーミングコンピューティングは、ソフトウェア又はハードウェアのセンサなど、潜在的に何千ものデータソースから連続的に取得したデータをストリーム形式で読み取り、次に、ストリーミングデータを計算して計算の分析結果を提供するコンピューティングパラダイムである。
ストリーミングデータは、次のような種々のデータ、例えば、金融取引データ、モノのインターネット(Internet of Things、IoT)デバイス、電力量計、ガス量計、水量計、ゲーム内プレイヤの活動、モバイルもしくはウェブアプリケーション、RFIDタグ、定期券もしくはクレジットカードを含むICカード、又はマイクロブログから取得したテキスト情報のような、任意のセンサによって生成されたログファイルデータであり得る。ストリーミングデータは、これに限定されるものではないが、(例えば、キロバイトのオーダーの)小さいサイズを有することができる。
多くの場合、ストリーミングデータは、記録ごとに又は移動する時間窓(time window)にわたって、連続的かつインクリメンタルに処理する必要があり、相関、集約、フィルタリング、サンプリングなど、種々の分析に使用することができる。
ストリーミングデータの処理は、新しい動的データが連続的に生成されるシナリオにおいて利益をもたらし得る。従って、ストリーミングデータの処理は、ストリーミングデータをリアルタイムで取り込み、キャッシュメモリを用いてデータベースリポジトリを更新することを必要とする。
ストリーミングデータを処理するための幾つかの既知の技術があり、それぞれが欠点を有する。1つの従来の解決法は、データベースキャッシュ及びインメモリデータベースをデータベースキャッシュとして使用する。しかしながら、この従来の解決法には、リアルタイム性能が不十分であるという欠点がある。この従来の解決法は、データベースキャッシュとの間で読み/書きを行うことができるアプリケーションと、データをデータベースキャッシュと定期的に同期させるデータベースとを提供する。データベースキャッシュは、データベースとの同期中ロックされ、従って、同期中、アプリケーションからのアクセス(読み取りもしくは書き込み又はその両方)は停止される。従って、リアルタイム性能を、前述の従来の解決法に従って達成することはできない。本明細書では、この従来の解決法をTS1と呼ぶ。
別の既知の技術は、ストリームベースのデータベースキャッシュを使用する。しかしながら、この解決法には、新しく着信するデータの不整合(inconsistency)が生じるという欠点がある。この技術は、データベースに書き込むことができるアプリケーションを含み、データベースはデータベースキャッシュと定期的に同期し、アプリケーションは、データベースキャッシュからデータを読み取ることができる。着信するデータはまず、直接データベースに書き込まれ、次に、同期が、データベースとデータベースキャッシュとの間で行われる。従って、同期が完了する前に、アプリケーションが新しく着信するデータを読み取ろうと試みた場合、データが見つからない場合がある。言い換えれば、アプリケーションは、同期が完了した後のみ、新しく着信するデータを読み取ることができる。従って、前述の解決法に従って、新しく着信するデータの整合性を達成することはできない。
第3の既知の技術は、メインデータベースから取り出したデータが、最初にグローバルRedisデータストア(低速グローバルキャッシュ)にキャッシュされ、同じくローカルAPCキャッシュ(高速ローカルキャッシュ)にもキャッシュされることを意味する多層キャッシングシステムを含む。しかしながら、多層キャッシングシステムは、新しく着信するデータを読み取るために余分な時間を必要とする。この技術では、書き込み動作は、着信するデータをグローバルキャッシュ及びデータベースの両方に書き込むことによって行われる。読み取り動作は、最初に、ローカルキャッシュからデータを読み取り、データがローカルキャッシュ上で見つからなかった場合、データを、まずデータベースからグローバルキャッシュにコピーし、その後、グローバルキャッシュからローカルキャッシュにコピーして、ローカルキャッシュからデータを読み取る。従って、新しく着信するデータの整合性を達成することができるが、新しく着信するデータをデータベースからグローバルキャッシュにコピーし、その後、グローバルキャッシュからローカルキャッシュにコピーする又は新しく着信するデータをグローバルキャッシュからローカルキャッシュにコピーするため、新しく着信するデータを読み取るのに余分な時間が必要である。従って、多層キャッシングシステムに従って、リアルタイム性能を実現することはできない。
従って、全ての既知の技術と比較して、新しく着信するデータの整合性、及びストリーミングデータを処理する際のリアルタイム性能を満足させるとう、以前に満たされていない必要性が存在し得る。
従って、当技術分野において、前述の問題に対処する必要性がある。
本発明の態様は、ストリーミングデータを処理するための方法、データ処理システム、及びコンピュータプログラム製品に向けられる。
第1の態様から見ると、本発明は、ストリーミングデータを処理するためのコンピュータ実施方法であって、データベースリポジトリ及びデータベースリポジトリのためのキャッシュメモリを含むデータ処理システムにおいて、キャッシュメモリ上に第1のキャッシュ領域及び第2のキャッシュ領域を提供することと、第1の時間窓において、ストリーミングデータを受信し、ストリーミングデータを第1のキャッシュ領域上に書き込むことと、第1の時間窓において、第1のキャッシュ領域とデータベースリポジトリとの間の同期を行うことを禁止することと、第1の時間窓の少なくとも一部において、データベースリポジトリと第2のキャッシュ領域との間の同期を有効化することと、第1の時間窓の経過時に、第1のキャッシュ領域とデータベースリポジトリとの間の同期を有効化することと、を含む方法を提供する。
更に別の態様から見ると、本発明は、データ処理システムであって、1つ又は複数のプロセッサと、プロセッサ上で実行されたとき、ストリーミングデータを処理するための動作を実行するプログラムを格納するメモリと、データベースリポジトリと、データベースリポジトリのためのキャッシュメモリとを含み、キャッシュメモリは、第1の時間窓において、ストリーミングデータを受信し、第1のキャッシュ領域と前記データベースリポジトリとの間の同期を行うことなく、ストリーミングデータを第1のキャッシュ領域上に書き込む役割を実行するのに使用される第1のキャッシュ領域と、第1の時間窓の少なくとも一部において、データベースリポジトリとの同期を行う役割を実行するのに使用される第2のキャッシュ領域とを含み、データ処理システムは、第1の時間窓の経過時に、第1のキャッシュ領域とデータベースリポジトリとの間の同期を行う、データ処理システムを提供する。
更に別の態様から見ると、本発明は、ストリーミングデータを処理するためのコンピュータプログラム製品を提供し、このコンピュータプログラム製品は、処理回路により読み取り可能であり、本発明のステップを実行する方法を実行するための、処理回路により実行される命令を格納するコンピュータ可読ストレージ媒体を含む。
更に別の態様から見ると、本発明は、コンピュータ可読媒体上に格納され、デジタルコンピュータの内部メモリにロード可能なコンピュータプログラムであって、プログラムがコンピュータ上で実行されるとき、本発明のステップを実行するためのソフトウェアコード部分を含むコンピュータプログラムを提供する。
コンピュータは、データベースリポジトリ及びデータベースリポジトリのためのキャッシュメモリを含むデータ処理システムにおいて、キャッシュメモリ上に第1のキャッシュ領域及び第2のキャッシュ領域を提供する。コンピュータは、第1の時間窓において、ストリーミングデータを受信し、ストリーミングデータを第1のキャッシュ領域上に書き込む。コンピュータは、第1の時間窓において、第1のキャッシュ領域とデータベースリポジトリとの間の同期を行うことを禁止する。コンピュータは、第1の時間窓の少なくとも一部において、データベースリポジトリと第2のキャッシュ領域との間の同期を有効化する。コンピュータは、第1の時間窓の経過時に、第1のキャッシュ領域とデータベースリポジトリとの間の同期を有効化する。
上記の要約は、本開示の示される実施形態の各々又は全ての実装を説明することを意図したものではない。
ここで、本発明を、以下の図に示されるように、好ましい実施形態を参照して単なる例として説明する。
本開示の実施形態による、データ処理システムとして使用されるコンピュータシステムを示すブロック図である。 本開示の実施形態による、ストリーミングデータを処理する方法を示すブロック図である。 本開示の実施形態による、ストリーミングデータを処理する方法を示すブロック図である。 本開示の実施形態による、ストリーミングデータを処理する方法を示すブロック図である。 本開示の実施形態による、ストリーミングデータを処理する方法を示すブロック図である。 本開示の実施形態による、ストリーミングデータを処理するプロセスを示すフローチャートである。 本開示の実施形態による、ストリーミングデータを処理するプロセスを示すフローチャートである。 本開示の実施形態による、ストリーミングデータを処理するプロセスを示すフローチャートである。 本開示の実施形態に従って取得した結果の例を示す。 図4に説明されるプロセスに関連してコンピュータシステムのハードウェアを示す全体的な機能ブロック図である。
本発明は、種々の修正及び代替的形態に従うが、その特定のものが例示として図面に示され、詳細に説明される。しかしながら、その意図は、本発明を説明される特定の実施形態に限定するものではないことを理解されたい。反対に、その意図は、本発明の趣旨及び範囲内に入る全ての修正、均等物、及び代替物をカバーすることである。
本発明の種々の実施形態の説明は、例示を目的として提示されたが、網羅的であること又は開示された実施形態に限定されることを意図したものではない。説明される実施形態の範囲及び趣旨から逸脱することなく、当業者には、多くの修正及び変形が明らかであろう。本明細書で使用される用語は、実施形態の原理、実際の適用、又は市場で見出された技術に優る技術的改良を最もよく説明するため、又は当業者が本明細書に開示される実施形態を理解することを可能にするために、選択された。
当業者には理解されるように、本発明の実施形態は、コンピュータ実施方法、コンピュータシステム、又はコンピュータプログラム製品として具体化することができる。従って、本発明の実施形態は、完全にハードウェアベースの実施形態、例えばファームウェア、常駐ソフトウェア、マイクロコードなどを含む完全にソフトウェアベースの実施形態、又はソフトウェアベースの態様とハードウェアベースの態様とを組み合わせた実施形態の形を取ることができ、本明細書では、これらをまとめて「回路」、「モジュール」、又は「システム」と呼ぶことができる。
本明細書で使用される場合、「1つ(a/one)」という表現は、「少なくとも1つ」と理解すべきである。「1つを含む/含んでいる(comprise/comprising a/one)」という表現は、「少なくとも1つを含む/含んでいる(comprise/comprising at least one)」と理解すべきである。「含む/含んでいる(comprise/comprising)」という表現は、「少なくとも含む/含んでいる(comprise/comprising at least)」と理解すべきである。表現「/」は、「及び/又は(and/or)」と理解すべきである。
本明細書で使用される用語をより明確に定義するために、用語の例示的な定義を以下に提供するが、これは、本発明が属する技術又は技術分野の当業者に周知のものとして広く解釈されるべきである。
本明細書で使用される場合、用語「ストリーミングデータ」は、連続的に生成される任意のデータを指すことができる。ストリーミングデータは、例えば、これらに限定されるものではないが、金融取引、モノのインターネット(IoT)デバイス、電力量計、ガス量計、水量計、ゲーム内プレイヤの活動、モバイルもしくはウェブアプリケーション、RFIDタグ、定期券もしくはクレジットカードを含むICカード、又はマイクロブログから取得したテキスト情報のような任意のセンサなど、同じソース又は異なるソースから取得することができる。
本明細書で使用される場合、用語「データベースリポジトリ」は、ストリーミングデータを格納するための任意のストレージを指すことができる。データベースリポジトリは、1つ又は複数のデータベースとすることができる。データベースリポジトリは、メタデータを含む任意のデータを格納することができる。
本明細書で使用される場合、用語「キャッシュメモリ」は、ストリーミングデータを一時的に格納し、データベースリポジトリのためのキャッシュとして使用できるメモリを指すことができる。ストリーミングデータは、データベースリポジトリとキャッシュメモリとの間で同期させることができる。
本明細書で使用される場合、用語「アプリケーション」は、キャッシュメモリからデータを読み取ること、もしくはキャッシュメモリ上にデータを書き込むこと、又はその両方ができる任意のアプリケーションを指すことができる。本開示の実施形態で使用されるアプリケーションは、時間窓がもともと設定されているアプリケーションとすることができる。時間窓がもともと設定されているアプリケーションは、例えば、これらに限定されるものではないが、以下のデータ、すなわち定期的クロールデータなどのクロールデータ、バッチ処理データ、又は電気量計データ、ガス量計データ、もしくは水量計データなどのセンサデータを扱うことができる。本開示の幾つかの実施形態で使用されるアプリケーションは、データ記録が互いに依存しないアプリケーションとすることができる。
ここで図1を参照すると、本開示の実施形態による、データ処理システムとして使用されるコンピュータシステムを示すブロック図が示される。
コンピュータシステム(101)は、例えば、これらに限定されるものではないが、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、又はサーバコンピュータとすることができる。サーバコンピュータは、例えば、これらに限定されるものではないが、ワークステーション、ラックマウント型サーバ、ブレード型サーバ、メインフレームサーバ、又はクラウドサーバとすることができ、例えば、1つ又は複数の仮想マシンを作成し実行するためのハイパーバイザを実行することができる。コンピュータシステム(101)は、1つ又は複数のCPU(102)と、バス(104)に接続されたメインメモリ(103)とを含むことができる。CPU(102)は、例えば、これらに限定されるものではないが、32ビットアーキテクチャ又は64ビットアーキテクチャに基づくものとすることができる。CPU(102)は、例えば、これらに限定されるものではないが、インターナショナルビジネスマシーンズコーポレーションのIBM(登録商標)Power(登録商標)シリーズ、Intel CorporationのCore i(商標)シリーズ、Core 2(商標)シリーズ、Atom(商標)シリーズ、Xeon(商標)シリーズ、Pentium(登録商標)シリーズ、又はCeleron(登録商標)シリーズ、又はAdvanced Micro Devices,Inc.のPhenom(商標)シリーズ、Athlon(商標)シリーズ、Turion(商標)シリーズ、又はSempron(商標)とすることができる。IBM及びPowerは、世界中の多数の管轄区域において登録されているインターナショナルビジネスマシーンズコーポレーションの商標である。Intel、Core I、Core 2、Atom、Xeon、Pentium、及びCeleronは、米国及び他の国におけるIntel Corporation又はその子会社の商標又は登録商標である。「Phenom」、「Athlon」、「Turion」及び「Sempron」は、米国、他の国、又はその両方におけるAdvanced Micro Devices,Inc.の商標である。
液晶ディスプレイ(LCD)などのディスプレイ(106)は、ディスプレイコントローラ(105)を介して、バス(104)に接続することができる。ディスプレイ(106)は、コンピュータの管理のために、通信回線を介してネットワークに接続されたコンピュータ上の情報、及び適切なグラフィックスインターフェースを用いてコンピュータ上で実行されているソフトウェアの情報を表示するために使用することができる。ディスプレイは、タッチスクリーン又は非タッチスクリーンを有することができる。ディスプレイは、例えば、これらに限定されるものではないが、LCD、プラズマディスプレイパネル(PDP)、有機エレクトロルミネッセンス(OEL)、又は投影型ディスプレイとすることができる。ハードディスク又はソリッドステートドライブ(SSD)などのディスク(108)、及びCD、DVD、又はBD(ブルーレイディスク)ドライブなどのドライブ(109)を、SATA又はIDEコントローラ(107)を介してバス(104)に接続することができる。さらに、キーボード(111)及びマウス(112)を、キーボード・マウスコントローラ(110)又はUSBバス(図示せず)を介して、バス(104)に接続することができる。
Microsoft(登録商標)Windows(登録商標)、UNIX(登録商標)、Mac OS(登録商標)、Linux(登録商標)を提供するプログラムであるオペレーティングシステム、又はJ2EE(登録商標)などの、Java(登録商標)処理環境、Java(登録商標)アプリケーション、Java(登録商標)仮想マシン(VM)及びJava(登録商標)ジャストインタイム(JIT)コンパイラ、他のプログラム、並びに任意のデータを、メインメモリにロード可能なようにディスク(108)内に格納することができる。Microsoft及びWindowsは、米国、他の国、又はその両方におけるMicrosoft Corporationの商標である。「UNIX」は、米国、他の国又はその両方におけるOpen Groupの登録商標であり、「Mac OS」は、米国、他の国又はその両方におけるApple Inc.の登録商標であり、「Linux」は、米国、他の国又はその両方におけるLinus Torvaldsの登録商標であり、「Java」及び「J2EE」は、米国、他の国又はその両方におけるOracle America, Inc.の登録商標である。
ドライブ(109)は、CD-ROM、DVD-ROM、又はBDから読み取り可能な、本開示の実施形態のコンピュータプログラムなどの1つ又は複数のプログラムをディスク(108)にインストールするために、又はCD-ROM、DVD-ROM、又はBDから読み取り可能な任意のデータを、必要に応じて、メインメモリ(103)又はディスク(108)にロードするために使用することができる。
通信インターフェース(114)は、例えば、これに限定されるものではないが、イーサネットプロトコルに基づくことができる。通信インタフェース(114)は、通信コントローラ(113)を介してバス(104)に接続することができ、コンピュータシステム(101)を通信回線(115)に物理的に接続することができ、ネットワークインターフェース層をコンピュータシステム(101)のオペレーティングシステムの通信機能のTCP/IP通信プロトコルに提供することができる。この場合、通信回線(115)は、有線LAN環境、又は、例えば、これに限定されるものではないが、IEEE(登録商標)802.11a/b/g/nなどの無線LAN接続規格に基づく無線LAN環境とすることができる(「IEEE」は、米国、他の国、又はその両方におけるInstitute of Electrical and Electronics Engineers,Inc.の登録商標である)。
図2A、図2B、図3A、及び図3Bは、それぞれ、本開示の実施形態による、ストリーミングデータを処理する方法を示す異なるブロック図を示す。
ここで図2A及び図2Bを参照すると、図2A及び図2Bは、キャッシュメモリが、第1のキャッシュ領域と第2のキャッシュ領域との1つの対を有する実施形態を示す。
データ処理システム(201)は、図1に説明されるコンピュータシステム(101)に対応することができる。データ処理システム(201)は、1つ又は複数のプロセッサ(図示せず)と、プロセッサ上で実行されるとき、本開示の実施形態に従って動作を実行するプログラムを格納するメモリ(図示せず)とを有することができる。さらに、データ処理システム(201)は、キャッシュメモリ(211)、アプリケーションとのインターフェース(221)及びデータベースリポジトリ(291)、並びに任意にアプリケーション(241)を有することができる。
キャッシュメモリ(211)は、ストリーミングデータをデータベースリポジトリ(291)に格納する前に、ストリーミングデータを一時的に格納するために使用することができ、インターフェース(221)を介してアプリケーション(241)からアクセスすることができる。
インターフェース(221)は、キャッシュメモリ(211)上にデータを書き込む命令、キャッシュメモリ(211)からデータを読み取る命令、又はそれらの組み合わせを受信するために使用することができる。
アプリケーション(241)は、着信ストリーミングデータのリアルタイム処理のために、キャッシュメモリ(211)にアクセスすることができる。アプリケーション(241)は、データ処理システム(201)に、キャッシュメモリ(211)上にデータを書き込む命令、キャッシュメモリ(211)からデータを読み取る命令、又はそれらの組み合わせを送ることができる。アプリケーション(241)は、データ処理システム(201)内に備えられたメモリに格納することができ、又はデータ処理システム(201)とは異なるシステム内に格納し、インターフェース(221)を介してキャッシュメモリ(211)にアクセスすることができる。
データベースリポジトリ(291)は、ストリーミングデータを格納するために使用することができる。
ここで図2Aを参照すると、データ処理システム(201)は、まず、キャッシュメモリ(211)上に第1のキャッシュ領域(231)及び第2のキャッシュ領域(232)を提供する。第1のキャッシュ領域(231)及び第2のキャッシュ領域(232)を提供するために、データ処理システム(201)は、キャッシュメモリ(211)上で、第1のキャッシュ領域(231)に使用されるアドレスと、同じく第2のキャッシュ領域(232)に使用されるアドレスとを指定することができる。
第1のキャッシュ領域(231)及び第2のキャッシュ領域(232)は、それぞれ、次の役割のいずれかを有する、すなわち、一方は、所定の時間窓において、そのキャッシュ領域とデータベースリポジトリ(291)との間の同期を行うことなく、着信するストリーミングデータをそのキャッシュ領域上に書き込み、他方は、前述の所定の時間窓において、データベースリポジトリと第2のキャッシュ領域との間のデータを同期させる。前述の所定の時間ウィンドウの経過時に、第1のキャッシュ領域の役割を第2のキャッシュ領域の役割と交換する。この交換は、次の時間窓(第2、第3、第4の時間窓など)の経過時に繰り返し行われる。
図2Aに示されるように、第1のキャッシュ領域(231)は、まず、第1のキャッシュ領域(231)とデータベースリポジトリ(291)との間の同期を行うことなく、所定の時間窓(以下、「第1の時間窓」ともいう)において着信するストリーミングデータを第1のキャッシュ領域(231)上に書き込む役割を有し、第2のキャッシュ領域(232)は、まず、第1の時間窓においてデータベースリポジトリ(291)と第2のキャッシュ領域(232)との間のデータを同期させる役割を有する。
データ処理システム(201)は、第1の時間窓において着信するストリーミングデータを受信する。データ処理システム(201)は、第1のキャッシュ領域(231)とデータベースリポジトリ(291)との間の同期を行うことなく、第1の時間窓において、第1のキャッシュ領域(231)上にストリーミングデータを書き込む。従って、第1の時間窓において、第1のキャッシュ領域(231)とデータベースリポジトリ(291)との間の同期は許可されない(図2Aに点線と囲み「X」で示されるように)。一方、第1の時間窓の少なくとも一部において、データベースリポジトリ(291)と第2のキャッシュ領域(232)との間の同期は許容される。例えば、データベースリポジトリ(291)と第2のキャッシュ領域(232)との間の同期が完了するまで、同期は許容される。
幾つかの実施形態において、第1の時間窓において、第1のキャッシュ領域(231)上にストリーミングデータを書き込む動作が終了するまで、例えば、テーブルロック(table lock)を用いて、第1のキャッシュ領域(231)をロックすることができ、第2のキャッシュ領域(232)上へのストリーミングデータの書き込みを禁止するために、第2のキャッシュ領域(232)とデータベースリポジトリ(291)との間の同期が終了するまで、例えば、テーブルロックを用いて、第2のキャッシュ領域(232)をロックすることができる。テーブルロックを用いた第1のキャッシュ領域(231)のロックは、アプリケーション(241)から第1のキャッシュ領域(231)へのアクセスに対して、第1のキャッシュ領域(231)の全体をロックすることによって行うことができる。同様に、テーブルロックを用いた第2のキャッシュ領域(232)のロックは、アプリケーション(241)から第2のキャッシュ領域(232)へのアクセスに対して、第2のキャッシュ領域(232)の全体をロックすることによって行うことができる。
幾つかの実施形態において、第1の時間窓において、第1のキャッシュ領域(231)上にストリーミングデータを書き込む動作が終了するまで、例えば、ハッシュインデックスに基づいて、第1のキャッシュ領域(231)をロックすることができ、第2のキャッシュ領域(232)上へのストリーミングデータの書き込みことを禁止するために、第2のキャッシュ領域(232)とデータベースリポジトリ(291)との間の同期が終了するまで、例えば、テーブルロックを用いて、第2のキャッシュ領域(232)をロックすることができる。ハッシュインデックスに基づく第1のキャッシュ領域(231)のロックは、アプリケーション(241)から第1のキャッシュ領域(231)へのアクセスに対して、ハッシュインデックスに基づいて第1のキャッシュ領域(231)をロックすることによって行うことができる。テーブルロックを用いた第2のキャッシュ領域(232)のロックは、アプリケーション(241)から第2のキャッシュ領域(232)へのアクセスに対して、第2のキャッシュ領域(232)の全体をロックすることによって行うことができる。
第1の時間窓において、アプリケーション(241)は、第2のキャッシュ領域(232)上のデータを読み取ることができるが、第2のキャッシュ領域(232)に行われた前述のロックのために、第2のキャッシュ領域(232)上にデータを書き込むことは許可されない(図2Aに点線と囲み「X」で示されるように)。
ここで図2Bを参照すると、現在第1の時間窓が経過した同じ環境が示される。第1の時間窓の経過時に、データ処理システム(201)は、第1のキャッシュ領域の役割を第2のキャッシュ領域の役割と交換する。データ処理システム(201)は、第1の時間窓の経過時に、第1のキャッシュ領域(231)とデータベースリポジトリ(291)との間の同期を有効化する(図2Bに実線で、囲み「X」なしで示されるように)。一方、データ処理システム(201)は、第1の時間窓の経過時に、データベースリポジトリ(291)と第2のキャッシュ領域(232)との間の同期を阻止する(図2Bに点線と囲み「X」で示されるように)。
第1の時間窓の経過後、新しい時間窓(すなわち、第2の時間窓)が開始する。データ処理システム(201)は、データベースリポジトリ(291)と第2のキャッシュ領域(232)との間の同期を行うことなく、第2の時間窓において、新しく着信するストリーミングデータを第2のキャッシュ領域(232)上に書き込む。このように、第2の時間窓において、データベースリポジトリ(291)と第2のキャッシュ領域(232)との間の同期は許可されない。一方、第2の時間窓の少なくとも一部においては、第1のキャッシュ領域(231)とデータベースリポジトリ(291)との間の同期は許容される。
幾つかの実施形態において、第2の時間窓において、第2のキャッシュ領域(232)上に新しく着信するストリーミングデータを書き込む動作が終了するまで、例えば、テーブルロックを用いて、第2のキャッシュ領域(232)をロックすることができ、第1のキャッシュ領域(231)上へのストリーミングデータの書き込みを禁止するために、データベースリポジトリ(291)と第1のキャッシュ領域(231)との間の同期が終了するまで、例えば、テーブルロックを用いて、第1のキャッシュ領域(231)をロックすることができる。テーブルロックを用いた第2のキャッシュ領域(232)のロックは、アプリケーション(241)から第2のキャッシュ領域(232)へのアクセスに対して、第2のキャッシュ領域(232)の全体をロックすることによって行うことができる。同様に、テーブルロックを用いた第1のキャッシュ領域(231)のロックは、アプリケーション(241)から第1のキャッシュ領域(231)へのアクセスに対して、第1のキャッシュ領域(231)の全体をロックすることによって行うことができる。
幾つかの実施形態において、第2の時間窓において、第2のキャッシュ領域(232)上に新しく着信するストリーミングデータを書き込む動作が終了するまで、例えば、ハッシュインデックスに基づいて、第2のキャッシュ領域(232)をロックすることができ、第1のキャッシュ領域(231)上に新しく着信するストリーミングデータの書き込みを禁止するために、データベースリポジトリ(291)と第1のキャッシュ領域(231)との間の同期が終了するまで、例えば、テーブルロックを用いて、第1のキャッシュ領域(231)をロックすることができる。ハッシュインデックスに基づく第2のキャッシュ領域(232)のロックは、アプリケーション(241)から第2のキャッシュ領域(232)へのアクセスに対して、ハッシュインデックスに基づいて、第2のキャッシュ領域(232)をロックすることによって行うことができる。テーブルロックを用いた第1のキャッシュ領域(231)のロックは、アプリケーション(241)から第1のキャッシュ領域(231)へのアクセスに対して、第1のキャッシュ領域(231)の全体をロックすることによって行うことができる。
第2の時間窓において、アプリケーション(241)は、第1のキャッシュ領域(231)に対して行われた前述のロックのために、第1のキャッシュ領域(231)上のデータを読み取ることができるが、第1のキャッシュ領域(231)上へのデータの書き込みは許可されない(図2Bに点線と囲み「X」で示されるように)。
ここで図2Aを参照すると、第2の時間窓の経過時に、データ処理システム(201)は、第1のキャッシュ領域の役割を第2のキャッシュ領域の役割と再び交換する。従って、データ処理システム(201)は、図2Aに説明されるブロック図に従って、第3の時間窓において新しく着信するデータを処理する。
上述したように、所定の時間窓の経過時に、データ処理システム(201)は、第1のキャッシュ領域の役割を第2のキャッシュ領域の役割と交換して、ストリーミングデータを処理する。この交換は、図2Aに示される役割を用いる奇数番目(例えば、第1、第3、第5)の時間窓と、図2Bに示される役割を用いる偶数番目(例えば、第2、第4、第6)の時間窓とによって無限に継続することができる。
図2A及び図2Bに説明される実施形態は、新しく着信するストリーミングデータの一貫性とともに、リアルタイム性能を可能にする。
ここで図3A及び図3Bを参照すると、キャッシュメモリが、第1のキャッシュ領域と第2のキャッシュ領域との複数の対を有する実施形態が示される。
データ処理システム(301)は、図1に説明されるコンピュータシステム(101)に対応することができる。データ処理システム(301)は、1つ又は複数のプロセッサ(図示せず)と、プロセッサ上で実行されたとき、本開示の実施形態に従った動作を実行するプログラムを格納するメモリ(図示せず)とを有することができる。さらに、データ処理システム(301)は、キャッシュメモリ(311)、アプリケーションとの複数のインターフェース(321、322及び323)及びデータベースリポジトリ(391)、並びに任意に複数のアプリケーション(341、342及び343)を有することができる。
図3A及び図3Bは、3つのインターフェース(321、322及び323)、並びに3つのアプリケーション(341、342及び343)を示す。しかしながら、インターフェース及びアプリケーションの数は、本開示の実施形態の実施に応じて変化し得る。
さらに、図3A及び図3Bは、アプリケーションとインターフェースとの対として、1つのアプリケーションが1つのインターフェースに関連付けられ(対としての341と321、342と322、及び343と323)、さらに、1つのインターフェースが、第1のキャッシュ領域と第2のキャッシュ領域との1つの対に関連付けられることを示す。しかしながら、1つのアプリケーションを、1つ又は複数のインターフェースに関連付けることができ、又はその逆も同様であり、1つのインターフェースを、第1のキャッシュ領域と第2のキャッシュ領域との1つ又は複数の対に関連付けることもでき、又はその逆も同様である。
キャッシュメモリ(311)は、図2A及び図2Bに説明されるキャッシュメモリ(211)に対応する。キャッシュメモリ(311)は、以下の第1のキャッシュ領域と第2のキャッシュ領域との3つの対、すなわち、第1のキャッシュ領域-1(331)と第2のキャッシュ領域-1(332)との第1の対、第1のキャッシュ領域-2(333)と第2のキャッシュ領域-2(334)との第2の対、及び第1のキャッシュ領域-3(335)と第2のキャッシュ領域-3(336)との第3の対を含む。
インターフェース(321、322及び323)は、図2A及び図2Bに説明されるインターフェース(221)に対応する。インターフェース-1(321)は、アプリケーション-1(341)から、第1のキャッシュ領域-1(331)又は第2のキャッシュ領域-1(332)上にデータを書き込む命令、第1のキャッシュ領域-1(331)又は第2のキャッシュ領域-1(332)からデータを読み取る命令、又はそれらの組み合わせを、インターフェース1(321)を介して受信するために使用することができる。同様に、インターフェース-2(322)は、アプリケーション-2(342)から、第1のキャッシュ領域-2(333)又は第2のキャッシュ領域-2(334)上にデータを書き込む命令、第1のキャッシュ領域-2(333)又は第2のキャッシュ領域-2(334)からデータを読み取る命令、又はそれらの組み合わせを、インターフェース-2(322)を介して受信するために使用することができる。同様に、インターフェース-3(323)は、アプリケーション-3(343)から、第1のキャッシュ領域-3(335)又は第2のキャッシュ領域-3(336)上にデータを書き込む命令、第1のキャッシュ領域-3(335)又は第2のキャッシュ領域-3(336)からデータを読み取る命令、又はそれらの組み合わせを、インターフェース-3(323)を介して受信するために使用することができる。
アプリケーション(341、342及び343)は、図2A及び図2Bに説明されるアプリケーション(241)に対応する。アプリケーション(341)は、第1のキャッシュ領域-1(331)又は第2のキャッシュ領域-1(332)上にデータを書き込む命令、第1のキャッシュ領域-1(331)又は第2のキャッシュ領域-1(332)からデータを読み取る命令、又はそれらの組み合わせを、データ処理システム(301)に送ることができる。同様に、アプリケーション(342)は、第1のキャッシュ領域-2(333)又は第2のキャッシュ領域-2(334)上にデータを書き込む命令、第1のキャッシュ領域-2(333)又は第2のキャッシュ領域-2(334)からデータを読み取る命令、又はそれらの組み合わせを、データ処理システム(301)に送ることができる。同様に、アプリケーション(343)は、第1のキャッシュ領域-3(335)又は第2のキャッシュ領域-3(336)上にデータを書き込む命令、第1のキャッシュ領域-3(335)又は第2のキャッシュ領域-3(336)からデータを読み取る命令、又はそれらの組み合わせを、データ処理システム(303)に送ることができる。アプリケーション(341、342及び343)は、データ処理システム(301)に備えられたメモリ内に格納することができ、又はデータ処理システム(301)とは異なるシステム内に格納し、インターフェース(321、322及び323)を介してキャッシュメモリ(311)にアクセスすることができる。
データベースリポジトリ(391)は、図2A及び図2Bに説明されるデータベースリポジトリ(291)に対応する。
ここで図3Aを参照すると、データ処理システム(301)は、まず、キャッシュメモリ(311)上に、第1のキャッシュ領域と第2のキャッシュ領域との前述の第1、第2及び第3の対を提供する。前述の第1、第2及び第3の対を提供するために、データ処理システム(301)は、キャッシュメモリ(311)上で、第1のキャッシュ領域(331、333及び335)の各々に使用されるアドレス、並びに第2のキャッシュ領域(332、334及び336)の各々に使用されるアドレスを指定することができる。
第1のキャッシュ領域(331、333及び335)並びに第2のキャッシュ領域(332、334及び336)は、それぞれ図2A及び図2Bに説明される第1のキャッシュ領域(231)及び第2のキャッシュ領域(232)と同じ役割を有する。
図3Aに示されるように、第1のキャッシュ領域(331、333及び335)は、まず、第1のキャッシュ領域(331、333、335)の各々とデータベースリポジトリ(391)との間で同期を行うことなく、所定の時間窓(以下、「第1の時間窓」とも呼ばれる)において着信するストリーミングデータを第1のキャッシュ領域(331、333及び335)上に書き込む役割を有し、第2のキャッシュ領域(332、334及び336)は、まず、第1の時間窓において、データベースリポジトリ(391)と第2のキャッシュ領域(332、334及び336)との間でデータを同期させる役割を有する。
データ処理システム(301)は、第1の時間窓において着信するストリーミングデータを受信する。データ処理システム(201)は、第1のキャッシュ領域(331、333及び335)の各々とデータベースリポジトリ(391)との間で同期を行うことなく、第1の時間窓において、ストリーミングデータを第1のキャッシュ領域(331、333、335)上に書き込む。このように、第1の時間窓において、第1のキャッシュ領域(331、333及び335)の各々とデータベースリポジトリ(391)との間の同期は許可されない(図3Aにおいて、第1のキャッシュ領域(331、333及び335)とデータベースリポジトリ(391)との間に接続がないことによって示されるように)。一方、データベースリポジトリ(391)と第2キャッシュ領域(332、334及び336)との間の同期は、第1の時間窓の少なくとも一部において許容される。例えば、データベースリポジトリ(391)と第2のキャッシュ領域(332、334、336)の各々との間の同期が完了するまでは、同期は許容される。
幾つかの実施形態において、第1の時間窓において、ストリーミングデータを第1のキャッシュ領域(331、333及び335)の各々に書き込む動作が終了するまで、例えば、テーブルロックを用いて、第1のキャッシュ領域(331、333及び335)の各々をロックすることができ、第2のキャッシュ領域(332、334及び336)上へのストリーミングデータの書き込みを禁止するために、第2のキャッシュ領域(332、334及び336)の各々とデータベースリポジトリ(391)との間の同期が終了するまで、例えば、テーブルロックを用いて、第2のキャッシュ領域(332、334及び336)の各々をロックすることができる。テーブルロックを用いた第1のキャッシュ領域(331、333及び335)のロックは、アプリケーション(341、342及び343)から第1のキャッシュ領域(331、333及び335)へのアクセスに対して、第1のキャッシュ領域(331、333及び335)の全体をロックすることによって行うことができる。同様に、テーブルロックを用いた第2のキャッシュ領域(332、334及び336)のロックは、アプリケーション(341、342、343)から第2のキャッシュ領域(332、334及び336)へのアクセスに対して、第2のキャッシュ領域(332、334、336)の全体をロックすることによって行うことができる。
幾つかの実施形態において、第1の時間窓において、第1のキャッシュ領域(331、333、及び335)上にストリーミングデータを書き込む動作が終了するまで、例えば、ハッシュインデックスに基づいて、第1のキャッシュ領域(331、333、及び335)をロックすることができ、第2のキャッシュ領域(332、334及び336)上へのストリーミングデータの書き込みを禁止するために、第2のキャッシュ領域(332、334及び336)とデータベースリポジトリ(391)との間の同期が終了するまで、例えば、テーブルロックを用いて、第2のキャッシュ領域(332、334及び336)をロックすることができる。ハッシュインデックスに基づく第1のキャッシュ領域(331、333及び335)のロックは、アプリケーション(341、342及び343)から第1のキャッシュ領域(331、333及び335)へのアクセスに対して、ハッシュインデックスに基づいて第1のキャッシュ領域(331、333及び335)をロックすることによって行うことができる。テーブルロックを用いた第2のキャッシュ領域(332、334及び336)のロックは、アプリケーション(341、342及び343)から第2のキャッシュ領域(332、334及び336)へのアクセスに対して、第2のキャッシュ領域(332、334及び336)の全体をロックすることによって行うことができる。
第1の時間窓において、アプリケーション(341、342及び343)は、第2のキャッシュ領域(332、334及び336)上のデータを読み取ることができるが、第2のキャッシュ領域(332、334及び336)に対して行われた前述のロックのために、第2のキャッシュ領域(332、334及び336)上へのデータの書き込みは許可されない(図3Aにおいて、第1のキャッシュ領域(331、333及び335)とアプリケーション(341、342及び343)との間に接続がないことによって示されるように)。
ここで図3Bを参照すると、現在第1の時間窓が経過した同じ環境が示される。第1の時間窓の経過時に、データ処理システム(301)は、前述の第1、第2及び第3の対のそれぞれにおいて、第1のキャッシュ領域の役割を第2のキャッシュ領域の役割と交換する。データ処理システム(301)は、第1の時間窓の経過時に、第1のキャッシュ領域(331、333及び335)の各々とデータベースリポジトリ(391)との間の同期を有効化する。一方、データ処理システム(301)は、第1の時間窓の経過時に、データベースリポジトリ(391)と第2のキャッシュ領域(332、334及び336)の各々との間の同期を阻止する(図3Bにおいて、第2のキャッシュ領域(332、334及び336)とデータベースリポジトリ(391)との間が接続されていないことによって示されるように)。
第1の時間窓の経過後、新しい時間窓(すなわち第2の時間窓)が開始する。データ処理システム(301)は、データベースリポジトリ(391)と第2のキャッシュ領域(332、334及び336)の各々との間の同期を行うことなく、第2の時間窓において、新しく着信するストリーミングデータを第2のキャッシュ領域(332、334及び336)上に書き込む。このように、第2の時間窓において、データベースリポジトリ(391)と第2のキャッシュ領域(332、334及び336)の各々との間の同期は許可されない。一方、第2の時間窓の少なくとも一部においては、第1のキャッシュ領域(331、333及び335)の各々とデータベースリポジトリ(391)との間の同期は許容される。例えば、第1のキャッシュ領域(331、333及び335)の各々とデータベースリポジトリ(391)との間の同期が完了するまで、同期は許容される。
幾つかの実施形態においては、第2の時間窓において、第2のキャッシュ領域(332、334、及び336)上に新しく着信するストリーミングデータを書き込む動作が終了するまで、例えば、テーブルロックを用いて、第2のキャッシュ領域(332、334、及び336)をロックすることができ、第1のキャッシュ領域(331、333及び335)上へのストリーミングデータの書き込みを禁止するために、データベースリポジトリ(391)と第1のキャッシュ領域(331、333及び335)との間の同期が終了するまで、例えば、テーブルロックを用いて、第1のキャッシュ領域(331、333及び335)をロックすることができる。テーブルロックを用いた第2のキャッシュ領域(332、334、336)のロックは、アプリケーション(341、342及び343)から第2のキャッシュ領域(332、334、336)へのアクセスに対して、第2のキャッシュ領域(332、334及び336)の全体をロックすることによって行うことができる。同様に、テーブルロックを用いた第1のキャッシュ領域(331、333及び335)のロックは、アプリケーション(341、342及び343)から第1のキャッシュ領域(331、333及び335)へのアクセスに対して、第1のキャッシュ領域(331、333及び335)の全体をロックすることによって行うことができる。
幾つかの実施形態においては、第2の時間窓において、第2のキャッシュ領域(332、334、及び336)に新しく着信するストリーミングデータを書き込む動作が終了するまで、例えば、ハッシュインデックスに基づいて、第2のキャッシュ領域(332、334、及び336)をロックすることができ、データベースリポジトリ(391)と第1のキャッシュ領域(331、333及び335)との間の同期が終了するまで、例えば、第1のキャッシュ領域(331、333及び335)上への新しく着信するストリーミングデータの書き込みを禁止するために、例えば、テーブルロックを用いて、第1のキャッシュ領域(331、333、及び335)をロックすることができる。ハッシュインデックスに基づく第2のキャッシュ領域(332、334、336)のロックは、アプリケーション(341、342、343)から第2のキャッシュ領域(332、334、336)へのアクセスに対して、ハッシュインデックスに基づいて第2のキャッシュ領域(332、334及び336)をロックすることによって行うことができる。テーブルロックを用いた第1のキャッシュ領域(331、333、335)のロックは、アプリケーション(341、342及び343)から第1のキャッシュ領域(331、333及び335)へのアクセスに対して、第1のキャッシュ領域(331、333及び335)の全体をロックすることによって行うことができる。
第2の時間窓において、アプリケーション(341、342及び343)は、第1のキャッシュ領域(331、333及び335)上のデータを読み取ることができるが、第1のキャッシュ領域(331、333及び335)に対して行われた前述のロックのために、第1のキャッシュ領域(331、333及び335)上へのデータの書き込みは許可されない(図3Bにおいて、第1のキャッシュ領域(331、333及び335)とアプリケーション(341、342及び343)との間に接続がないことによって示されるように)。
再び図3Aを参照すると、第2の時間窓の経過時に、データ処理システム(301)は、前述の第1、第2及び第3の対のそれぞれにおいて、第1のキャッシュ領域の役割を第2のキャッシュ領域の役割と再び交換する。従って、データ処理システム(301)は、図3Aに説明されるブロック図に従って、新しく着信するデータを処理する。
上述したように、所定の時間窓の経過時に、データ処理システム(301)は、前述の第1、第2及び第3の対のそれぞれにおいて、第1のキャッシュ領域の役割を第2のキャッシュ領域の役割と交換して、ストリーミングデータを処理する。この交換は、図3Aに示される役割を用いる奇数番目(例えば、第1、第3、第5)の時間窓と、図3Bに示される役割を用いる偶数番目(例えば、第2、第4、第6)の時間窓とによって無期限に継続することができる。
図3A及び図3Bに説明される実施形態は、新しく着信するストリーミングデータの一貫性とともに、リアルタイム性能を可能にする。
図3A及び図3Bに説明される実施形態において、第1、第2、及び第3の対は、同じ時間窓において同時に使用することができる。
別の実施形態において、第1、第2、及び第3の対は、異なる時間窓のそれぞれにおいて使用することができる。例えば、第1、第2、及び第3の対は、時間窓の順序に従った順番で使用することができる。これは、例えば、アプリケーション-1(341)及びインターフェース-1(321)のみが使用され、第1、第2、第3の対がインターフェース-1(321)のみによって使用されるという状況下で行われる。
当業者であれば、図3A及び図3Bに説明されるブロック図を用いて、種々の変形を適用することができる。
図4並びに図5A及び図5Bは、それぞれ、ストリーミングデータを処理するプロセスを示す異なるフローチャートを示す。
ここで図4を参照すると、本開示の実施形態による、ストリーミングデータを処理するプロセスを示すフローチャートが示される。
各々の動作の対象は、図1に説明されるコンピュータシステム(101)に対応することができるデータ処理システムとすることができる。
401において、データ処理システムは、プロセスを開始する。所定の時間窓の長さは、予め手動で又は自動的に定義することができ、プロセスの過去の事例から取得された次のデータ、例えば、受信したストリーミングデータ、ストリーミングデータの処理時間、データをデータベースリポジトリと同期させるのに要する時間、又はそれらの組み合わせから導出されるデータに依存し得る。
402において、データ処理システムは、データ処理システムにおいて、キャッシュメモリ上に第1のキャッシュ領域及び第2のキャッシュ領域の1つ又は複数の対を提供する。データ処理システムは、キャッシュメモリ上で、第1のキャッシュ領域に使用されるアドレスと、同じく第2のキャッシュ領域に使用されるアドレスとを指定し、第1のキャッシュ領域及び第2のキャッシュ領域の1つ又は複数の対の各々を提供することができる。
403において、所定の時間窓(第1の時間窓)において、データ処理システムは、第1のキャッシュ領域とデータベースリポジトリとの間の同期を行うことなく、ストリーミングデータを受信し、ストリーミングデータを第1のキャッシュ領域上に書き込む。第1の時間窓の少なくとも一部において、データベースリポジトリと第2のキャッシュ領域との間の同期は許容される。従って、データ処理システムは、データベースリポジトリと第2のキャッシュ領域との間の同期を行うことができる。
第1の時間窓において、データ処理システムは、アプリケーションから第1のキャッシュ領域へのアクセスに対して、第1のキャッシュ領域の全体をロックすることができ、さらに、アプリケーションから第2のキャッシュ領域へのアクセスに対して、第2のキャッシュ領域の全体をロックすることができる。代替的に、第1の時間窓において、データ処理システムは、アプリケーションから第1のキャッシュ領域へのアクセスに対して、ハッシュインデックスベースに基づいて、第1のキャッシュ領域をロックすることができ、さらに、アプリケーションから第2のキャッシュ領域へのアクセスに対して、第2のキャッシュ領域の全体をロックすることができる。
404において、データ処理システムは、第1の時間窓が経過したかどうかを判断する。第1の時間窓が経過した場合、データ処理システムはステップ405に進む。そうでなければ、データ処理システムはステップ403に戻り、ステップ403を繰り返す。
405において、第1の時間窓の経過時に、データ処理システムは、第1のキャッシュ領域の役割を第2のキャッシュ領域の役割と交換する。
406において、データ処理システムは、405における交換後の第1のキャッシュ領域とデータベースリポジトリとの間の同期を可能にするが、405における交換後のデータベースリポジトリと第2のキャッシュ領域との間の同期を阻止する。さらに、データ処理システムは、405における交換後、新しく着信するストリーミングデータを第2のキャッシュ領域上に書き込む。
従って、所定の時間窓(第2の時間窓)において、データ処理システムは、データベースリポジトリと交換後の第2のキャッシュ領域との間の同期を行うことなく、新しく着信するストリーミングデータを受信し、新しく着信するストリーミングデータを交換後の第2のキャッシュ領域上に書き込む。第2の時間窓の少なくとも一部において、交換後の第1のキャッシュ領域とデータベースリポジトリとの間の同期は許容される。従って、データ処理システムは、交換後の第1のキャッシュ領域とデータベースリポジトリとの間の同期を行うことができる。
第2の時間窓の長さは、第1の時間窓の長さと同じであっても、又は異なっていてもよい。第2の時間窓の長さは、過去の事例又は第1の時間窓において取得された次のデータから導出されたデータ、例えば、受信したストリーミングデータ、ストリーミングデータの処理時間、データベースリポジトリとの同期に要する時間、又はそれらの組み合わせに応じて、アプリケーションによって自動的に更新することができる。所定の時間窓の長さが更新された場合、更新された長さは、後の時間窓(例えば、次の第2の時間窓)に使用することができる。
第2の時間窓において、データ処理システムは、アプリケーションから、交換後の第1のキャッシュ領域へのアクセスに対して、第1のキャッシュ領域の全体をロックすることができ、さらに、アプリケーションから、交換後の第2のキャッシュ領域へのアクセスに対しても、第2のキャッシュ領域の全体をロックすることができる。代替的に、第2の時間窓において、データ処理システムは、アプリケーションから第1のキャッシュ領域へのアクセスに対して、第1のキャッシュ領域の全体をロックすることができ、さらに、アプリケーションから第2のキャッシュ領域へのアクセスに対して、ハッシュインデックスに基づいて、第2のキャッシュ領域をロックすることもできる。
ステップ407において、データ処理システムは、第2の時間窓が経過したかどうかを判断する。第2の時間窓が経過した場合、データ処理システムはステップ408に進む。そうでなければ、データ処理システムはステップ406に戻り、ステップ406を繰り返す。
408において、第2の時間窓の経過時に、データ処理システムは、交換後の第1のキャッシュ領域の役割を第2のキャッシュ領域の役割と再交換する。従って、第3の時間窓において、403において説明される同じ処理が再び実行され、プロセスは403に戻る。
ユーザが前述のプロセスの終了を選択した場合、データ処理システムは、プロセスを終了させることができる。
ここで図5A及び図5Bを参照すると、図5A及び図5Bは、本開示の実施形態による、ストリーミングデータを処理するプロセスを示すフローチャートである。
図5Aにおいて、各動作の対象は、図1に説明されるコンピュータシステム(101)に対応することができるデータ処理システムとすることができる。
501において、データ処理システムは、プロセスの一部を開始する。上述のように、所定の時間窓の長さは、手動で又は自動的に予め定めることができる。
502において、データ処理システムは、データ処理システムにおいて、キャッシュメモリ上に2つのキャッシュ領域、すなわちフロントテーブル(F)とバックテーブル(B)との1つ又は複数の対を提供する。データ処理システムは、キャッシュメモリ上で、フロントテーブルに使用されるアドレスと、バックテーブルに使用されるアドレスとを指定し、フロントテーブルとバックテーブルとの1つ又は複数の対の各々を提供することができる。フロントテーブル及びバックテーブルは、それぞれ図4に説明される第1のキャッシュ領域及び第2のキャッシュ領域に対応することができる。
503において、データ処理システムは、所定の時間窓が経過したかどうかを判断する。所定の時間窓が経過した場合、データ処理システムは504に進む。そうでなければ、データ処理システムは、所定の時間窓が経過するまで503に戻る。
504において、データ処理システムは、フロントテーブルのアドレスをバックテーブルのアドレスと交換する。
505において、所定の時間窓(第2の時間窓)において、データ処理システムは、アプリケーションからバックテーブルへのアクセスに対して、バックテーブルの全体をロックし、スナップショットに使用されたメモリとバックテーブルとの間、又はデータベースリポジトリとバックテーブルとの間に、スナップショット(例えば、同期)を動作させ、次いで、バックテーブルをロック解除する。幾つかの実施形態において、さらに、データを、スナップショットに使用されたメモリからデータベースに書き込まれる。バックテーブルは、スナップショットの動作専用のものとすることができる。従って、このロックは、テーブル全体に対して行われる。
506において、データ処理システムは、アプリケーションからバックテーブルへのアクセスに対して、バックテーブルの全体をロックし、バックテーブルを消去し、次いで、バックテーブルをロック解除する。
ロック解除後、データ処理システムは503に戻る。
ユーザが前述のプロセスの終了を選択した場合、データ処理システムは、プロセスを終了させることができる。
図5Bにおいて、各ステップの対象は、アプリケーションを実施するシステム、又はアプリケーションを実施するデータ処理システムとすることができる。以下、図5Bにおける各ステップの対象を単にコンピュータシステムと呼ぶ場合があるが、コンピュータシステムは、アプリケーションを実施するシステム、又はアプリケーションを実施するデータ処理システムを含む。
511において、コンピュータシステムは、プロセスの残りの部分を開始する。残りの部分は、アプリケーションの動作によって実行することができる。
512において、コンピュータシステムは、フロントテーブルの現アドレスを取得する。
513において、コンピュータシステムは、フロントテーブル上に書き込まれたストリーミングデータに基づいて、ハッシュインデックスを計算する。
514において、コンピュータシステムは、ハッシュインデックスベースを用いてフロントテーブルをロックし、フロントテーブル上に着信するストリーミングデータを書き込み、書き込み後にフロントテーブルをロック解除する。ロック解除までの待ち時間を最小に減らすために、ハッシュインデックスに基づいて、フロントテーブルのロックが行われる。
ロック解除後、コンピュータシステムは、ステップ512に戻る。
ユーザが前述のプロセスの終了を選択した場合、コンピュータシステムは、プロセスを終了させることができる。
図6を参照すると、本開示の実施形態に従って取得した結果の例が示される。
以下のような実験シナリオを準備した:すなわち、PUT動作を行う4つのスレッド、GET動作を行う4つのスレッド、及びデータベース書き込み動作を行う1つのスレッドを、10秒の時間窓においてそれぞれ5回実行し、合計50秒で完了したPUT動作及びGET動作をカウントした。データベース書込み動作の各々において、スナップショットに使用されるメモリ内にその時点のキャッシュデータベース画像のコピーを作成する間、ロックを行い、次に、ロックを解除してスナップショットに使用されたメモリ内のコピーされたデータが、データベースリポジトリに書き込まれる。スナップショットに使用されたメモリは、キャッシュデータベースとデータベースリポジトリの間に準備することができる。
実験のために以下が、次の3つの環境において実施された:すなわち、
-シナリオ_1:データベースキャッシュから読み取り/書き込みすることができるアプリケーションと、テーブルロックを用いてデータをデータベースキャッシュと定期的に同期させるデータベースとを有する、TS1として上述された従来の解決法、
-シナリオ_2a:本開示の実施形態による、各々がテーブルロックを用いる2つのデータベースキャッシュ、及び
-シナリオ_2b:本開示の実施形態による、2つのデータベースキャッシュ、ハッシュインデックスに基づいてロックされるフロントテーブル、及びバックテーブルの全体がロックされるバックテーブル。
テーブル(601)及びグラフ(602)は、シナリオ_1、シナリオ_2a及びシナリオ_2bの各々において、50秒で完了した動作の数を比較したものである。テーブル(601)における結果は、本開示の実施形態、すなわち、シナリオ_2a及びシナリオ_2bが、上述した従来の解決法、すなわち、シナリオ_1のものと比較して、約4~6倍速い処理速度の改善を達成したことを示す。
ここで図7を参照すると、図4に説明されるプロセスに関連してコンピュータシステムのハードウェアを示す全体的な機能ブロック図が示される。
データ処理システム(701)は、図1に説明されるコンピュータシステム(101)に対応することができる。
データ処理システム(701)は、キャッシュメモリ(711)、提供セクション(741)、ロックセクション(742)、受信セクション(743)、書き込みセクション(744)、同期セクション(745)及び交換セクション(746)、並びに任意に時間窓セクション(747)を含むことができる。
キャッシュメモリ(711)は、第1のキャッシュ領域(731)と第2のキャッシュ領域(732)との1つ又は複数の対を有することができる。
提供セクション(741)は、キャッシュメモリ(711)上に第1のキャッシュ領域(731)と第2のキャッシュ領域(732)との対を提供する。
ロックセクション(742)は、第1のキャッシュ領域(731)の全体で第1のキャッシュ領域(731)へのアクセスをロックし、第1の時間窓において、第2のキャッシュ領域(732)の全体で第2のキャッシュ領域(732)へのアクセスをさらにロックするか、又はハッシュインデックスベースで第1のキャッシュ領域(731)へのアクセスをロックし、第1の時間窓において、第2のキャッシュ領域(732)の全体で第2のキャッシュ領域(732)へのアクセスをさらにロックし、第1のキャッシュ領域(731)の全体で第1のキャッシュ領域(731)へのアクセスをロックし、第2のキャッシュ領域(732)の全体で第2のキャッシュ領域(732)へのアクセスをさらにロックし、又は第2の時間窓において、交換後の第1のキャッシュ領域(731)の全体で交換後の第1のキャッシュ領域(731)へのアクセスをロックし、第2の時間窓において、ハッシュインデックスベースでの交換後の第2のキャッシュ領域(732)へのアクセスをさらにロックする。
受信セクション(743)は、所定の時間窓の各々において、ストリーミングデータを受信する。
書き込みセクション(744)は、第1の時間窓において、第1のキャッシュ領域(731)とデータベースリポジトリ(791)との間の同期を行うことなく、第1のキャッシュ領域(731)上にストリーミングデータを書き込み、第1の時間窓の経過後に、データベースリポジトリ(791)と第2の時間窓における交換後の第2のキャッシュ領域(732)との間の同期を行うことなく、第2の時間窓における交換後の第2のキャッシュ領域(732)上に新しく着信するストリーミングデータを書き込む。
同期セクション(745)は、第1のキャッシュ領域(731)とデータベースリポジトリ(791)との間の同期を阻止し、第1の時間窓において、データベースリポジトリ(791)と第2のキャッシュ領域(732)との間の同期を行い、第1の時間窓の経過時に、交換後のデータベースリポジトリ(791)と第2のキャッシュ領域(732)との間の同期を阻止し、交換後の第1のキャッシュ領域(731)とデータベースリポジトリ(791)との間の同期を行う。
交換セクション(746)は、第1の時間窓の経過時に、第1のキャッシュ領域(731)の役割を第2のキャッシュ領域(732)の役割と交換し、第2の時間窓の経過時に、交換後の第1のキャッシュ領域(731)の役割を交換後の第2のキャッシュ領域(732)の役割と再交換する。
時間窓セクション(747)は、所定の時間窓を設定し、所定の時間窓を測定することができる。時間窓セクション(747)はさらに、過去の事例又は1つ又は複数の前の時間窓から取得した次のデータから導出されたデータ、例えば、受信したストリーミングデータ、ストリーミングデータの処理時間、データベースリポジトリとの同期に要する時間、又はそれらの組み合わせに応じて、時間窓の長さを定義することができる。
本発明は、システム、方法もしくはコンピュータプログラム製品又はその組み合わせを任意の可能な技術的詳細レベルで統合したものとすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体(単数又は複数)を含むことができる。
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの、すなわち、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスク読み出し専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、パンチカード若しくは命令がそこに記録された溝内の隆起構造のような機械的にエンコードされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバケーブルを通る光パルス)、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、又は、例えばインターネット、ローカルエリアネットワーク、広域ネットワークもしくは無線ネットワークもしくはその組み合わせのネットワークを介して外部コンピュータ又は外部ストレージデバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータもしくはエッジサーバ又はその組み合わせを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カード又はネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に格納する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、又は、Smalltalk、C++などのオブジェクト指向プログラミング言語、及び、「C」プログラミング言語若しくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組み合わせで記述されるソース・コード又はオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいて、遠隔コンピュータは、ローカルエリアネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある(例えば、インターネットサービスプロバイダを用いたインターネットを通じて)。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又はプログラム可能論理アレイ(PLA)を含む電子回路は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行して、電子回路を個別化することができる。
本発明の態様は、本発明の実施形態による方法、装置(システム)及びコンピュータプログラム製品のフローチャート図及び/又はブロック図を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えて機械を製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実施するための手段を作り出すようにすることができる。これらのコンピュータプログラム命令を、コンピュータ、他のプログラム可能データ処理装置もしくは他のデバイス又はその組み合わせを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作の態様を実施する命令を含む製品を含むようにすることもできる。
コンピュータプログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生産し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実行するためのプロセスを提供するようにすることもできる。
図面内のフローチャート及びブロック図は、本発明の様々な実施形態による、システム、方法、及びコンピュータプログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、並びにブロック図及び/又はフローチャート図におけるブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェアベースのシステムによって実装できることにも留意されたい。

Claims (9)

  1. ストリーミングデータを処理するためのコンピュータ実施方法であって、
    データベースリポジトリと、前記データベースリポジトリのためのキャッシュメモリであって、前記データベースリポジトリと前記キャッシュメモリとの間の同期を有効化すること及び同期を禁止することができるように構成され、同期が有効化されているときには前記データベースリポジトリとの間でデータの同期が行われるように構成された、前記キャッシュメモリと、アプリケーションが前記キャッシュメモリを介して前記データベースリポジトリに書き込みアクセス及び読み取りアクセスをするためのインターフェースと、を含むデータ処理システムにおいて、前記キャッシュメモリ上に第1のキャッシュ領域及び第2のキャッシュ領域を提供することと、動作を繰り返すことと、を含み、前記動作は、
    第1の時間窓において、第1のストリーミングデータを受信し、受信した前記第1のストリーミングデータを前記第1のキャッシュ領域上に書き込むことと、
    前記第1の時間窓において、前記データベースリポジトリと前記第1のキャッシュ領域との間の同期禁止することと、
    前記第1の時間窓の少なくとも一部において、前記データベースリポジトリと前記第2のキャッシュ領域との間の同期を有効化することと、
    前記第1の時間窓の経過時に、前記第1のキャッシュ領域の役割と前記第2のキャッシュ領域の役割とを交換し、第2の時間窓を開始することと、
    前記第2の時間窓において、第2のストリーミングデータを受信し、受信した前記第2のストリーミングデータを前記第2のキャッシュ領域上に書き込むことと、
    前記第2の時間窓において、前記データベースリポジトリと前記第2のキャッシュ領域との間の同期を禁止することと、
    前記第の時間窓の少なくとも一部において前記データベースリポジトリと前記第1のキャッシュ領域との間の同期を有効化することと、
    前記第2の時間窓の経過時に、前記第1のキャッシュ領域の役割と前記第2のキャッシュ領域の役割とを再交換し、前記第1の時間窓を再び開始することと、
    を含む、方法。
  2. 前記動作は、
    前記第1の時間窓において、受信した前記第1のストリーミングデータを前記第1のキャッシュ領域上に書き込む間、前記第1のキャッシュ領域の全体を前記アプリケーションからのアクセスに対してロックすることと、
    前記第1の時間窓において、前記データベースリポジトリと前記第2のキャッシュ領域との間の同期が終了するまで、前記第2のキャッシュ領域の全体を前記アプリケーションからのアクセスに対してロックすることと
    前記第2の時間窓において、受信した前記第2のストリーミングデータを前記第2のキャッシュ領域上に書き込む間、前記第2のキャッシュ領域の全体を前記アプリケーションからのアクセスに対してロックすることと、
    前記第2の時間窓において、前記データベースリポジトリと前記第1のキャッシュ領域との間の同期が終了するまで、前記第1のキャッシュ領域の全体を前記アプリケーションからのアクセスに対してロックすることと、
    をさらに含む、請求項1に記載の方法。
  3. 前記動作は、
    前記第1の時間窓において、受信した前記第1のストリーミングデータを前記第1のキャッシュ領域上に書き込む間、ハッシュインデックスに基づいて前記第1のキャッシュ領域を前記アプリケーションからのアクセスに対してロックすることと、
    前記第1の時間窓において、前記データベースリポジトリと前記第2のキャッシュ領域との間の同期が終了するまで、前記第2のキャッシュ領域の全体を前記アプリケーションからのアクセスに対してロックすることと
    前記第2の時間窓において、受信した前記第2のストリーミングデータを前記第2のキャッシュ領域上に書き込む間、ハッシュインデックスに基づいて前記第2のキャッシュ領域を前記アプリケーションからのアクセスに対してロックすることと、
    前記第2の時間窓において、前記データベースリポジトリと前記第1のキャッシュ領域との間の同期が終了するまで、前記第1のキャッシュ領域の全体を前記アプリケーションからのアクセスに対してロックすることと、
    をさらに含む、請求項1に記載の方法。
  4. 前記キャッシュメモリ上に第1のキャッシュ領域及び第2のキャッシュ領域を提供することは、前記キャッシュメモリ上に第1のキャッシュ領域と第2のキャッシュ領域との複数の対を提供することを含み、
    前記複数の対は、同じ時間窓において同時に使用されるか、又は同じ時間窓において前記複数の対の全てが使用されないように異なる時間窓のそれぞれにおいて使用される、請求項1~請求項3のいずれかに記載の方法。
  5. それぞれの時間窓の長さは、前記ストリーミングデータを処理するために前記アプリケーションによって更新され、前記更新された長さは、後の時間窓に使用される、請求項1~請求項4のいずれかに記載の方法。
  6. それぞれの時間窓の長さは、受信した前記ストリーミングデータの量、前記ストリーミングデータの処理時間、前記データベースリポジトリとの同期に要する時間、又はそれらの組み合わせに応じて定められる、請求項1~請求項4のいずれかに記載の方法。
  7. データ処理システムであって、
    1つ又は複数のプロセッサと、
    前記プロセッサ上で実行されたとき、ストリーミングデータを処理するための動作を実行するプログラムを格納するメモリと、
    データベースリポジトリと、
    前記データベースリポジトリのためのキャッシュメモリと、
    アプリケーションが前記キャッシュメモリを介して前記データベースリポジトリに書き込みアクセス及び読み取りアクセスをするためのインターフェースと、
    を含み、
    前記キャッシュメモリは、前記データベースリポジトリと前記キャッシュメモリとの間の同期を有効化すること及び同期を禁止することができるように構成され、同期が有効化されているときには前記データベースリポジトリとの間でデータの同期が行われるように構成され、第1のキャッシュ領域及び第2のキャッシュ領域を含み、
    第1の時間窓において、前記データベースリポジトリと前記第1のキャッシュ領域との間の同期が禁止され第1のストリーミングデータが第1のキャッシュ領域上に書き込まれ
    前記第1の時間窓の少なくとも一部において、前記データベースリポジトリと前記第2のキャッシュ領域との間の同期が有効化され、
    記第1の時間窓の経過時に、前記第1のキャッシュ領域の役割前記第2のキャッシュ領域の役割とが交換され、第2の時間窓が開始し、
    前記第2の時間窓において、前記データベースリポジトリと前記第2のキャッシュ領域との間の同期が禁止され、第2のストリーミングデータが第2のキャッシュ領域上に書き込まれ、
    前記第2の時間窓の少なくとも一部において、前記データベースリポジトリと前記第1のキャッシュ領域との間の同期が有効化され、
    前記第2の時間窓の経過時に、前記第1のキャッシュ領域の役割と前記第2のキャッシュ領域の役割とが再交換され、前記第1の時間窓が再び開始する、
    データ処理システム。
  8. 請求項1~請求項6のいずれかに記載の方法をコンピュータに実行させる、コンピュータプログラム。
  9. 請求項8に記載のコンピュータプログラムを格納した、コンピュータ可読ストレージ媒体。
JP2020564621A 2018-06-08 2019-06-06 ストリーミングデータの複数のキャッシュ処理 Active JP7316724B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/004,020 2018-06-08
US16/004,020 US10902020B2 (en) 2018-06-08 2018-06-08 Multiple cache processing of streaming data
PCT/IB2019/054733 WO2019234685A1 (en) 2018-06-08 2019-06-06 Multiple cache processing of streaming data

Publications (2)

Publication Number Publication Date
JP2021526252A JP2021526252A (ja) 2021-09-30
JP7316724B2 true JP7316724B2 (ja) 2023-07-28

Family

ID=68763884

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020564621A Active JP7316724B2 (ja) 2018-06-08 2019-06-06 ストリーミングデータの複数のキャッシュ処理

Country Status (6)

Country Link
US (1) US10902020B2 (ja)
JP (1) JP7316724B2 (ja)
CN (1) CN112119387A (ja)
DE (1) DE112019001744T5 (ja)
GB (1) GB2587583B (ja)
WO (1) WO2019234685A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11305194B2 (en) * 2019-01-21 2022-04-19 Tempus Ex Machina, Inc. Systems and methods for providing a real-time representation of positional information of subjects
CN112637355B (zh) * 2020-12-25 2023-05-23 新天科技股份有限公司 基于多并发单通道无线数据处理方法、装置、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004362534A (ja) 2003-06-05 2004-12-24 Carry Computer Eng Co Ltd 伝送レートを高速化可能なストレージデバイス
JP2011133947A (ja) 2009-12-22 2011-07-07 Panasonic Corp 不揮発性記憶装置、アクセス装置、及び不揮発性記憶システム
JP2014186397A (ja) 2013-03-21 2014-10-02 Fujitsu Ltd キャッシュメモリ装置、情報処理装置及びキャッシュメモリ制御方法
JP2015046164A (ja) 2013-08-28 2015-03-12 バイオセンス・ウエブスター・(イスラエル)・リミテッドBiosense Webster (Israel), Ltd. リアルタイムデータフローの永続記憶装置用のアトミックトランザクションによるダブルバッファリング

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0453389A (ja) * 1990-06-21 1992-02-20 Graphics Commun Technol:Kk 動ベクトル検出装置
US7062515B1 (en) 2001-12-28 2006-06-13 Vignette Corporation System and method for the synchronization of a file in a cache
DE602004029146D1 (de) * 2003-04-09 2010-10-28 Wyeth Llc Derivate von 2-(8,9-dioxo-2,6-diazabicyclo(5.2.0)non-1(7)-en-2-yl)alkylphosphonsäure und deren verwendung als n-methyl-d-aspartat- (nmda-) rezeptorantagonisten
US7412496B2 (en) * 2003-08-22 2008-08-12 Emc Corporation Management of the file-modification time attribute in a multi-processor file server system
US7496607B2 (en) 2003-08-29 2009-02-24 Yahoo! Inc. Method and system for maintaining synchronization between a local data cache and a data store
US7831642B1 (en) * 2004-09-30 2010-11-09 Symantec Operating Corporation Page cache management for a shared file
US8402224B2 (en) * 2005-09-20 2013-03-19 Vmware, Inc. Thread-shared software code caches
JP5092374B2 (ja) 2006-12-01 2012-12-05 富士通株式会社 データセンタ及びデータ転送方法
US7769958B2 (en) * 2007-06-22 2010-08-03 Mips Technologies, Inc. Avoiding livelock using intervention messages in multiple core processors
US7664799B2 (en) * 2007-07-30 2010-02-16 Oracle International Corporation In-memory space management for database systems
US20100174863A1 (en) * 2007-11-30 2010-07-08 Yahoo! Inc. System for providing scalable in-memory caching for a distributed database
US8302105B2 (en) * 2009-06-26 2012-10-30 Oracle America, Inc. Bulk synchronization in transactional memory systems
US8271729B2 (en) * 2009-09-18 2012-09-18 International Business Machines Corporation Read and write aware cache storing cache lines in a read-often portion and a write-often portion
US8924652B2 (en) 2009-11-23 2014-12-30 Marvell Israel (M.I.S.L.) Ltd. Simultaneous eviction and cleaning operations in a cache
CN102486753B (zh) * 2009-11-30 2015-09-16 国际商业机器公司 构建及允许访问高速缓存的方法、设备及存储系统
US9104684B2 (en) * 2012-04-04 2015-08-11 International Business Machines Corporation Cache handling in a database system
US9710510B2 (en) * 2013-03-11 2017-07-18 Mongodb, Inc. System and method for minimizing lock contention
US10049022B2 (en) * 2013-06-24 2018-08-14 Oracle International Corporation Systems and methods to retain and reclaim resource locks and client states after server failures
US9411869B2 (en) * 2013-07-09 2016-08-09 Red Hat, Inc. Replication between sites using keys associated with modified data
US9619336B2 (en) * 2014-01-05 2017-04-11 International Business Machines Corporation Managing production data
US9870410B2 (en) * 2014-09-15 2018-01-16 Microsoft Technology Licensing, Llc Constructed data stream for enhanced event processing
US10242050B2 (en) 2015-12-23 2019-03-26 Sybase, Inc. Database caching in a database system
US10262032B2 (en) 2016-02-24 2019-04-16 Salesforce.Com, Inc. Cache based efficient access scheduling for super scaled stream processing systems
US10148722B2 (en) 2016-07-04 2018-12-04 Znipe Esports AB Methods and nodes for synchronized streaming of a first and a second data stream
CN108388524A (zh) 2016-12-21 2018-08-10 伊姆西Ip控股有限责任公司 用于缓存数据的方法和设备
US11055271B2 (en) * 2017-11-13 2021-07-06 International Business Machines Corporation Funnel locking for sleepable read-copy update

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004362534A (ja) 2003-06-05 2004-12-24 Carry Computer Eng Co Ltd 伝送レートを高速化可能なストレージデバイス
JP2011133947A (ja) 2009-12-22 2011-07-07 Panasonic Corp 不揮発性記憶装置、アクセス装置、及び不揮発性記憶システム
JP2014186397A (ja) 2013-03-21 2014-10-02 Fujitsu Ltd キャッシュメモリ装置、情報処理装置及びキャッシュメモリ制御方法
JP2015046164A (ja) 2013-08-28 2015-03-12 バイオセンス・ウエブスター・(イスラエル)・リミテッドBiosense Webster (Israel), Ltd. リアルタイムデータフローの永続記憶装置用のアトミックトランザクションによるダブルバッファリング

Also Published As

Publication number Publication date
US20190377822A1 (en) 2019-12-12
GB202100032D0 (en) 2021-02-17
US10902020B2 (en) 2021-01-26
JP2021526252A (ja) 2021-09-30
GB2587583B (en) 2021-08-25
CN112119387A (zh) 2020-12-22
DE112019001744T5 (de) 2021-03-04
WO2019234685A1 (en) 2019-12-12
GB2587583A (en) 2021-03-31

Similar Documents

Publication Publication Date Title
US11163728B2 (en) Sharing container images utilizing a shared storage system
US8793528B2 (en) Dynamic hypervisor relocation
US10983913B2 (en) Securing exclusive access to a copy of a metadata track via a process while the metadata track is held in a shared mode by another process
US10838857B2 (en) Multi-section garbage collection
US20120216007A1 (en) Page protection ordering for lockless write tracking
US10241926B2 (en) Migrating buffer for direct memory access in a computer system
US10678775B2 (en) Determining integrity of database workload transactions
JP7316724B2 (ja) ストリーミングデータの複数のキャッシュ処理
US20240045870A1 (en) Methods for updating reference count and shared objects in a concurrent system
US9632818B2 (en) Identifying performance bottleneck of transaction in transaction processing system
US10769068B2 (en) Concurrent modification of shared cache line by multiple processors
US10613774B2 (en) Partitioned memory with locally aggregated copy pools
US20190258578A1 (en) Adjustment of the number of tasks for a cache storage scan and destage application based on the type of elements to be destaged from the cache storage
US20140297594A1 (en) Restarting a Batch Process From an Execution Point
US11733994B2 (en) System and method for state management
US10623487B2 (en) Moveable distributed synchronization objects
US9857979B2 (en) Optimizing page boundary crossing in system memory using a reference bit and a change bit
US11947501B2 (en) Two-hierarchy file system
US11977957B2 (en) Quantum computing program compilation using cached compiled quantum circuit files
JP2022187999A (ja) クラスタ化されたコンピューティング環境内の処理を容易にするためのコンピュータプログラム、コンピュータシステムおよびコンピュータ実装方法(クラスタ化されたコンピューティング環境にわたるリソースロック所有権の識別)
US20180210932A1 (en) Efficient Data Retrieval in Big-Data Processing Systems

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201209

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210204

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211028

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220502

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230306

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230627

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20230627

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230713

R150 Certificate of patent or registration of utility model

Ref document number: 7316724

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150