JP2004303214A - データベース変更通知を要求および受信するためのシステムおよび方法 - Google Patents

データベース変更通知を要求および受信するためのシステムおよび方法 Download PDF

Info

Publication number
JP2004303214A
JP2004303214A JP2004058210A JP2004058210A JP2004303214A JP 2004303214 A JP2004303214 A JP 2004303214A JP 2004058210 A JP2004058210 A JP 2004058210A JP 2004058210 A JP2004058210 A JP 2004058210A JP 2004303214 A JP2004303214 A JP 2004303214A
Authority
JP
Japan
Prior art keywords
database
database query
registration information
notification
change
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.)
Ceased
Application number
JP2004058210A
Other languages
English (en)
Other versions
JP2004303214A5 (ja
Inventor
Michael J Pizzo
ジェイ.ピゾ マイケル
Sharad Sundaresan
サンダレサン シャラド
Ramakrishna P Pamulapati
ピー.パムラパティ ラマクリシュナ
Christian Kleinerman
クレイナーマン クリスチャン
Pablo Castro
カストロ パブロ
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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2004303214A publication Critical patent/JP2004303214A/ja
Publication of JP2004303214A5 publication Critical patent/JP2004303214A5/ja
Ceased legal-status Critical Current

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/23Updating
    • G06F16/2358Change logging, detection, and notification
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B65CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
    • B65BMACHINES, APPARATUS OR DEVICES FOR, OR METHODS OF, PACKAGING ARTICLES OR MATERIALS; UNPACKING
    • B65B15/00Attaching articles to cards, sheets, strings, webs, or other carriers
    • B65B15/04Attaching a series of articles, e.g. small electrical components, to a continuous web
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B65CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
    • B65BMACHINES, APPARATUS OR DEVICES FOR, OR METHODS OF, PACKAGING ARTICLES OR MATERIALS; UNPACKING
    • B65B51/00Devices for, or methods of, sealing or securing package folds or closures; Devices for gathering or twisting wrappers, or necks of bags
    • B65B51/10Applying or generating heat or pressure or combinations thereof
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B65CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
    • B65BMACHINES, APPARATUS OR DEVICES FOR, OR METHODS OF, PACKAGING ARTICLES OR MATERIALS; UNPACKING
    • B65B59/00Arrangements to enable machines to handle articles of different sizes, to produce packages of different sizes, to vary the contents of packages, to handle different types of packaging material, or to give access for cleaning or maintenance purposes
    • B65B59/003Arrangements to enable adjustments related to the packaging material
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B65CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
    • B65BMACHINES, APPARATUS OR DEVICES FOR, OR METHODS OF, PACKAGING ARTICLES OR MATERIALS; UNPACKING
    • B65B9/00Enclosing successive articles, or quantities of material, e.g. liquids or semiliquids, in flat, folded, or tubular webs of flexible sheet material; Subdividing filled flexible tubes to form packages
    • B65B9/02Enclosing successive articles, or quantities of material between opposed webs
    • B65B9/04Enclosing successive articles, or quantities of material between opposed webs one or both webs being formed with pockets for the reception of the articles, or of the quantities of material
    • B65B9/045Enclosing successive articles, or quantities of material between opposed webs one or both webs being formed with pockets for the reception of the articles, or of the quantities of material for single articles, e.g. tablets

Abstract

【課題】 登録済データベースクエリからの後続のクエリの結果がデータベース変更により変更する場合に、通知を提供するためのシステムおよび方法を提供する。
【解決手段】 システムおよび方法はサービスブローカを使用して、登録済データベースクエリに関連付けられたデータベースクエリ登録情報をキューに格納すること、および、通知配信サービスを活動化することを実施する。活動化期間中に、通知配信サービスはキューにアクセスして、データベースクエリ登録情報を得る。次いで、通知配信サービスは、変更メッセージを構築および送信する。
【選択図】 図1

Description

本発明は一般にデータベースに関し、より詳細には、データベース変更通知を受信するためにデータベースクエリを登録し、変更された登録済データベースクエリの結果を示すデータベース変更メッセージを配信するためのシステムおよび方法に関する。
コンピューティング技術およびネットワーキング技術は、日常生活の多くの重要な面を変えてきた。コンピュータは、豪華な教材および/またはエンターテインメントセンターの代わりに家庭の主要品となり、資金を管理および予測し、暖房、冷房、照明およびセキュリティのような家庭運営をコントロールし、記録およびイメージを持続的で信頼性のある媒体に記憶するためのツールをユーザーに提供する。インターネットのようなネットワーキング技術はユーザーに、リモートのシステム、情報および関連アプリケーションへの実質的に無制限のアクセスを提供する。
従来のビジネス慣例は、コンピューティングおよびネットワーキング技術と共に進化しつつある。例えば、従来の銀行取引には、銀行口座番号、通帳および識別などの情報を収集すること、銀行に行くために時間を割くこと、交通手段を調達すること、列に並んで待つこと、および、窓口係を利用して銀行取引を実施することが含まれる可能性がある。今日、消費者は自分の口座にインターネットを介してアクセスし、残高照会、資金振替、および請求書の支払いなど、ますます増加する使用可能な取引を、マウスボタンをクリックすることによって行なうことができる。
コンピューティングおよびネットワーキング技術が頑強に、安全になり、信頼性が高まるにつれて、より多くの消費者、卸売業者、小売業者、企業家、教育機関、権利擁護団体などがパラダイムをシフトし、ビジネスを行なうために従来の手段の代わりにインターネットを使用しつつある。例えば、多くの会社および消費者は、(例えば、食料および衣類の購入、情報の探索、電子メールの送信およびインタラクティブゲームのプレイのための)ウェブサイトおよび/またはオンラインサービスを提供している。もう1つの例では、株式市場ウェブサイトはユーザーに、株価を検索して株式を購入するためのツールを提供することができる。
通常、ユーザーは、クライアントアプリケーション(例えば、ウェブページ)とインターフェースを取り、クライアントアプリケーションからアクセス可能であるデータベースに情報を格納するサーバーと対話する。データベースは、データのための持続的で永続性のあるストアを提供し、このデータを多数のユーザーおよびアプリケーション中で共有することができる。クライアントアプリケーションは一般にデータをデータベースから、クエリを通じて検索し、クエリは、アプリケーションにとって関心のあるデータのサブセットを含む結果を戻す。次いで、アプリケーションは、これらの結果を消費し、表示し、変換し、格納し、あるいはこれらに作用し、検索された結果に基づいて変更を提出することができる。
結果が検索された後、変更がデータベース内のデータに行なわれ、この変更が、以前に検索された結果をデータベース内の状態と矛盾してレンダリングする可能性がある。このような変更は一般に、以前の検索結果を保持するクライアントにとって、クライアントが要求をデータベースに再提出するまで明らかではない。
以下で、本発明のいくつかの態様の基本的理解を提供するために、本発明の簡単な概要を提示する。この概要は本発明の広範な概要ではない。本発明の主要/重要な要素を識別すること、または本発明の範囲を線引きすることは意図されない。その唯一の目的は、本発明のいくつかの概念を簡単な形態で、後に提示するより詳細な説明への前置きとして提示することである。
本発明は、登録時のクエリの結果をデータベースの現在の状態と矛盾してレンダリングするデータベース変更が発生する場合に通知を受信するために、データベースクエリを登録するためのシステムおよび方法に関する。
従来、ユーザー要求はデータベースクエリを開始して、要求を履行するデータをデータベースから検索することができる。多くの場合、データベースはリソース競合の一般的な原因となる可能性がある。例えば、複数のユーザーが、同時にデータベースに類似の結果について問い合わせる要求を送信する可能性がある。次いで、データベースは、これらのユーザーの間で共有される状態を表す。共有状態競合は、システムおよび/またはアーキテクチャのスケーラビリティを制限する可能性がある。他の場合では、ユーザーは頻繁な類似の要求をデータベース上で行なう可能性がある。例えば、ユーザーはアプリケーションおよび/またはウェブページによって表示されたデータを定期的にリフレッシュするために、マウスクリックを連続して実行して、類似の要求をデータベース上で開始する可能性があり、および/または、アプリケーションはクエリをデータベースに対して定期的に発行して、データベースの状態が変化しているかどうかを判断する可能性がある。連続データベースクエリは、例えば、時間がかかり、帯域幅を低減し、パフォーマンスを低下させ、リソースを消費する可能性がある。
(例えば、1つまたは複数のユーザーを介した)クエリの数を減らすために使用される従来の技術は、頻繁に利用されるデータをデータベース外部で保存することを備える。次いで、ユーザーは、連続クエリを実行する代わりに保存データを利用することができる。しかし、保存データの一貫性および正確さは損なわれ、これは、後続のデータベース変更が発生して、保存データを、ユーザーに知られていない(変更されたデータベース内の)現在のデータと矛盾してレンダリングする可能性があるからである。
一態様によれば、本発明のシステムおよび方法は、データベースの負荷を軽減し(例えば、クエリを軽減し)、スケーラビリティを増大させ、データの一貫性を保証する。例えば、1つまたは複数のユーザーはデータベースクエリを提出し、データベース変更が登録済データベースクエリの結果を変更する(あるいは変更するであろう)場合に通知を受信するために、データベースクエリを登録することができる。
実際には、クエリの結果をデータベース外部(例えば、キャッシュ内またはウェブサーバー上)に保存し、ユーザーによって利用することができ、これにおいてユーザーは、類似の結果を戻す追加のクエリを実行するのではなく、保存結果を複数回使用することができる。後続のクエリの結果を保存結果に矛盾してレンダリングするデータベース変更が発生する場合、保存結果が矛盾するようになったことを示す通知をユーザーに送信することができる。次いで、ユーザーはこの通知を利用して、例えば、保存データを無効化し、クエリを実行して保存データをリフレッシュし、および/または通知を無視することができる。
本発明は、データベースクエリを登録し、クエリ登録情報を維持し、登録済データベースクエリに影響を及ぼすデータベース変更を検出し、登録済データベースクエリが影響を受けていることを示すメッセージを提供するためのシステムおよび方法を含む。例えば、データベース変更通知を受信するための登録は一般に、データベースクエリ登録情報を組み立て、サーバーに提供することを備える。データベース状態を以前の結果に矛盾してレンダリングするデータベース変更が発生する場合、関連付けられたデータベースクエリ登録情報は、メッセージ配信サービスでアクセス可能となる。配信サービスはデータベースクエリ登録情報を利用して、変更メッセージを構築および送信する。変更メッセージが使用されて、以前の結果が無効になっていることをコンポーネントに通知するために、変更通知を、登録済クエリの結果に関連付けられたコンポーネントにルーティングすることが実施される。
このシステムおよび方法を様々な環境内で実施することができ、これにはクライアント−サーバー環境(例えば、SQLベース)およびウェブ環境が含まれる。したがって、本発明は、データベースクエリを変更について監視し、登録済クエリの結果が変更する場合に通知されるようにする手段を提供する。前述は、ユーザーがデータベースから検索された保存データを利用中であり、また、保存データが矛盾するようになる場合、ユーザーに表示されているデータをリフレッシュする必要がある場合、および/または、変更された結果に基づいてアクションが取られるべきである場合、通知されることを望む場合に有利となる可能性がある。加えて、本発明を既存のアーキテクチャと共に使用して、セキュリティ、信頼性およびスケーラビリティを活用し、よく知られているプログラミング環境を提供することができる。
前述および関係する目的の実施のために、本発明は、以下で十分に説明し、特許請求の範囲で特に示す特徴を備える。以下の説明および添付の図面はより詳細に、本発明のある例示的態様および実施態様を示す。しかし、これらは、本発明の原理を実施することができる様々な方法の少数を示す。本発明の他の目的、利点および新規な特徴は、以下の本発明の詳細な説明を図面と共に考慮する場合に明らかになるであろう。
本発明をここで、図面を参照して説明し、図面においては類似の参照番号を使用して、全体に渡って類似の要素を指す。以下の説明では、説明のため、本発明の十分な理解を提供するために多数の具体的な詳細を示す。しかし、本発明をこれらの具体的な詳細なしに実施できることは、明らかになるであろう。他の場合、周知の構造およびデバイスを、本発明の説明を実施するためにブロック図の形式で示す。
本出願で使用される場合、「コンポーネント」という用語は、コンピュータ関係のエンティティで、ハードウェア、ハードウェアおよびソフトウェアの組み合わせ、ソフトウェアまたは実行中のソフトウェアのどれを指すようにも意図されている。例えば、コンポーネントは、それだけに限定されないが、プロセッサ上で実行するプロセス、プロセッサ、オブジェクト、実行可能物、実行のスレッド、プログラムおよび/またはコンピュータとすることができる。例として、サーバー上で実行中のアプリケーションおよびサーバーをコンピュータコンポーネントとすることができる。1つまたは複数のコンポーネントは、プロセスおよび/または実行のスレッド内に存在することができ、コンポーネントを1つのコンピュータ上でローカライズし、および/または、2つ以上のコンピュータの間で分散させることができる。「スレッド」は、プロセス内で、オペレーティングシステムカーネルが実行のためにスケジュールするエンティティである。当技術分野で周知のように、各スレッドは関連付けられた「コンテキスト」を有し、これはスレッドの実行に関連付けられた揮発性データである。スレッドのコンテキストには、システムレジスタの内容、およびスレッドのプロセスに属する仮想アドレスが含まれる。したがって、スレッドのコンテキストを備える実際のデータは、実行時に変わる。
本発明は、データベース変更が登録済データベースクエリの結果に影響を及ぼすであろう場合に通知を提供するための、システムおよび方法に関する。このシステムおよび方法は通常、サービスブローカを使用して、データベースクエリ登録情報の搬送およびデータベース変更メッセージの送信を実施し、キューを使用して、サービスブローカからのデータベースクエリ登録情報を格納し、通知配信サービスを使用してデータベース変更メッセージを送信する。このシステムおよび方法はオプショナルで、登録要求を受信するため、登録メッセージを組み立てるため、登録メッセージを送信するため、データベース変更を検出するため、データベース変更メッセージを受信するため、およびデータベース変更通知を提供するための様々なメカニズムを使用する。
図1を参照して、本発明の一態様による例示的データベース変更メッセージ配信システム100(以下、システム100)を例示する。システム100は、データベースクエリ登録情報の転送を実施するためのサービスブローカ110と、サービスブローカ110に提供されたデータベースクエリ登録情報を格納するための第1のキュー120からN番目のキュー120とを備え、ただしNは1以上の整数であり、さらに、変更メッセージを少なくとも部分的にはデータベースクエリ登録情報に基づいて送信するための通知配信サービス130を備える。第1のキュー120からN番目のキュー120を総称して、キュー120と称することができる。
一般に、コンポーネント(例えば、クライアント、ユーザーおよびアプリケーション)は、データベースクエリを、システム100を使用するシステムに登録(例えば、サブスクライブ)することができる。クエリ登録は通常、データベースクエリ登録情報をクエリ結果についての要求と共に、および/またはそれとは別に提供することを含む。データベースクエリ登録情報は、例えば、一意の識別子、配信アドレス、キュー名、タイムアウト期間および様々な通信およびセキュリティオプションを含むことができる。クエリ登録を、登録済クエリの後続の実行で異なる結果が戻される場合に変更メッセージ(例えば、無効化メッセージ)を受信するために、使用することができる。例えば、クエリを登録した後、クエリによって戻された結果を変更するであろうデータベース変更は、変更メッセージを呼び出す。変更メッセージを呼び出す通常のデータベース変更の例には、挿入、更新および削除、ならびにスキーマ変更が含まれる。満了期間(例えば、登録情報に含まれたタイムアウト期間のようなタイムアウト期間)および/または他の基準を追加で使用できることを理解されたい。例えば、データベースクエリの登録は、登録から「X」秒後に変更メッセージが呼び出されるような、満了期間を提供することを含むことができる。
データベース変更が発生し、登録済クエリを利用する後続の要求が異なる結果を戻す場合、データベースクエリ登録情報がサービスブローカ110に提供される。加えて、他の情報、例えば、通知の原因を説明する情報を逐次および/または同時にサービスブローカ110に提供することができる。サービスブローカ110は逐次および/または同時に、データベースクエリ登録情報の少なくとも一部をキュー120の1つに提供し、サービスブローカ110および/またはキュー120は通知配信サービス130を呼び出す。通知配信サービス130の呼び出しは、通知配信サービス130がすでにアクティブでない場合にこれを活動化することを含む。活動化された通知配信サービス130はキュー120にアクセスし、その中に格納されたデータベースクエリ登録情報を利用して変更メッセージを構築し、データベースクエリを登録したコンポーネントに送信することができる。上述のように、変更メッセージは通常、後続のクエリが矛盾する結果を戻すことを示す。
後述のように、1つまたは複数のコンポーネントが1つまたは複数のデータベースクエリを登録する可能性があり、1つまたは複数のデータベースクエリが類似の結果を戻す可能性があることを理解されたい。さらに、いかなるキュー120も、1つまたは複数のコンポーネントおよび/または1つまたは複数のクエリについてのデータベースクエリ登録情報を格納できることを理解されたい。前述はキュー120の間の同質の格納を可能にする。例えば、本発明の一態様では、類似の結果を戻すクエリについてのデータベースクエリ登録情報を、類似のキューに格納することができる。したがって、類似の結果を戻すクエリに関連付けられた変更メッセージを受信するために登録されたコンポーネントについてのデータベースクエリ登録情報を、キューによってグループ化することができる。本発明のもう1つの態様では、類似のコンポーネントに関連付けられたデータベースクエリ登録情報(例えば、1つまたは複数のクエリについての情報)を、類似のキューに格納することができる。したがって、データベースクエリ登録情報を、コンポーネントを介してグループ化することもできる。しかし、同質でない格納も利用できることを理解されたい。加えて、データベースクエリ登録情報を格納するために利用されるキューを、例えば、データベースクエリ登録情報に基づいてデフォルトにすること、および/または、他の技術を通じて選択することができる。
さらに、複数の通知配信サービスを活動化することができることを理解されたい。例えば、本発明の一態様では、複数の通知配信サービスを活動化して類似のキューにアクセスし、キュー内のデータベースクエリ登録情報の増加を軽減することができる。本発明のもう1つの態様では、通知配信サービス130は複数のキュー120にアクセスすることができ、変更メッセージを1つまたは複数のコンポーネントにルーティングすることができる。本発明のさらにもう1つの態様では、複数の通知配信サービスを活動化して、複数のキュー120にアクセスすることができる。
図1は、データベース変更メッセージ配信システム100のためのコンポーネントを例示するブロック図であるが、サービスブローカ110、第1のキュー120からN番目のキュー120、および通知配信サービス130を1つまたは複数のコンピュータコンポーントとして、その用語が本明細書で定義されるように実施することができることを理解されたい。したがって、本発明によれば、データベース変更メッセージ配信システム100、サービスブローカ110、第1のキュー120からN番目のキュー120、および/または通知配信サービス130を実施するように動作可能なコンピュータ実行可能コンポーネントを、コンピュータ可読媒体上に格納することができ、これには、それだけに限定されないが、ASIC(特定用途向け集積回路)、CD(コンパクトディスク)、DVD(デジタルビデオディスク)、ROM(読み取り専用メモリ)、フロッピー(登録商標)ディスク、ハードディスク、EEPROM(電気的消去可能プログラマブル読み取り専用メモリ)およびメモリスティックが含まれることを理解されたい。
次に図2で、本発明の一態様による例示的サーバー200を例示する。サーバー200は、データベースクエリ登録情報の格納および搬送を実施するためのサービスブローカ210、データベースクエリ登録情報を格納するためのキュー220、および、登録済データベースクエリ結果が変更していることを示す変更メッセージを送信するための通知配信サービス230を備える。
サービスブローカ210は、データベースクエリ登録情報の格納および搬送を実施する。上述のように、データベースクエリ登録情報は、データベースクエリを登録またはサブスクライブするための要求の後で組み立てられる。次いで、データベースクエリ登録情報をサーバー200に、例えばメッセージとして送信することができる。通常のデータベース登録メッセージは、XMLベースのファイル(例えば、「クッキー」)として構築され、これは一般に、一意の識別子、配信アドレス、キュー名およびタイムアウト期間のうち少なくとも1つを含む。
サーバー200が、登録済データベースクエリを介して、後続のクエリの結果を変更するであろうデータベース変更要求を受信した後、データベースクエリ登録情報がサービスブローカ210に提供される。様々な技術を使用して、データベース変更が発生したかどうか、および、この変更が登録済データベースクエリの結果に影響を及ぼすかどうかを判断することができることを理解されたい。
サービスブローカ210は、データベースクエリ登録情報の少なくとも一部(例えば、配信アドレスおよび一意の識別子)をキュー220に格納し、通知配信サービス230を呼び出す。使用されるキュー220は通常、キュー名をデータベースクエリ登録情報から抽出することによって決定される。
実際には、デフォルトのキュー名またはオプショナルで選択されたキュー(例えば、部分的には確率、統計、学習モデル(例えば、ニューラルネットワーク)および/または適応技術に基づく)が使用される。クエリ登録情報が有効なキュー名を含まないか、および/またはキューがアクセス可能でない(例えば、存在しない)場合、関連付けられたクエリは失敗する可能性があり、関連付けられたデータへの後続の更新は失敗する可能性があり、および/または、例えば、クエリ登録が失敗したことを示す警告が(クエリ登録情報がクエリと同時に提出された場合、結果と共に)戻される可能性がある。
通知配信サービス230の呼び出しは、通知配信サービス230がすでにアクティブでない場合にこれを活動化することを含む。活動化メカニズムを提供することにより、登録済クエリの結果に影響を与えるであろうデータベース変更に先立って、通知配信サービス230を構成すること、および/または手動で開始することに関連するオーバーヘッドが軽減される。しかし、通知配信サービス230およびキュー220を、望むなら事前に構成することができる。加えて、活動化メカニズムは「ハンドシェーキング」を提供して通信を検証し、通知配信サービス230が活動化されない場合に失われる可能性のある情報の送信を軽減する。加えて、通知配信サービス230を別のコンポーネントによって、例えばシステムの起動(例えば、ハードブートおよびソフトブート)において、外部刺激および/またはユーザーによって活動化することができることを理解されたい。
活動化された通知配信サービス230はキュー220にアクセスすることができる。活動化期間は通常、例えば、データベースクエリ登録情報と追加の情報を介して提供することができるパラメータによって、および/またはデフォルトとして決定され、この追加の情報は、データベースクエリ登録情報と同時に、および/またはその後に続いて、通知配信サービス230のセットアップ(例えば、構成)中に、通知配信サービス230が活動化される間に動的に送信される。パラメータは、例えば、時間の絶対長さ(例えば、活動化された後の「X」秒)、サービスへのキューエントリの数(例えば、キュー220内の「Y」個のエントリについて)、および/または非アクティブ性の期間(例えば、新しいデータベースクエリ登録情報がキュー220に、指定の期間に渡って配信されない場合)を指定することができる。この期間を、例えば、デフォルト値、データベースクエリ登録情報、サーバーの負荷および/または適応技術などの情報に基づかせることができることを理解されたい。活動化期間が満了した後、通知配信サービス130を受動的状態に非活動化することができる。
加えて、活動化期間を最適化技術として使用することができる。例えば、活動化期間を利用して、登録されるデータベースが頻繁に変更される場合に通知配信サービス230とキュー220の間の接続を維持することができる。接続を維持することにより、頻繁に通知配信サービス230を活動化するコストが軽減される。さらに、活動化期間を「常にオン」に設定して通信を支持することができる。また、デフォルト活動化期間、および/または、部分的にはヒューリスティックに基づいた活動化期間を使用することができる。
アクティブになった後、通知配信サービス230は、キュー220に格納されたデータベースクエリ登録情報にアクセスする。データベースクエリ登録情報が利用されて、登録済キューの後続の実行が異なる結果を戻すであろうことを示す変更メッセージが構築され、送信される。データベースクエリ登録情報は通常、配信アドレスを含み、これは変更メッセージを送信するべき場所を示す。配信アドレスを抽出および使用して、変更メッセージを送信することができる。加えて、データベースクエリ登録情報は通常、一意の識別子を含み、これを変更メッセージ内で利用して通知ランタイムサービス(後述)を実施し、これは無効化通知(例えば、イベントを引き起こし、フラグを設定する)を、その通知を受信するために登録したコンポーネントに配信することによって行なう。
上述のデータベース変更要求をコミットし、および/または抑えることができる。1つの場合では、非同期モデルを使用することができ、これにおいてデータベース変更を、通知配信サービス230がキュー220内のデータベースクエリ登録情報を処理したかどうかにかかわらず、コミットすることができる。非同期モデルの利点は、通知配信サービス230がデータベースクエリ登録情報に後でアクセスすることができ、キュー220において複数のエントリを可能にすることによってスケーラビリティを生じることであり、これにおいて1つまたは複数の通知配信サービスはキュー220に逐次および/または同時にアクセスすることができる。
もう1つの場合では、同期モデルを使用することができ、これにおいてデータベース変更は、関連するデータベースクエリ登録情報が通知配信サービス230によってアクセスされるか、および/または、変更メッセージが送信および/または受信される(例えば、後述の通知ランタイムサービスによって)まで、ブロックされる。同期モデルは信頼性、および、頑強または一貫性のあるデータを生じ、これは、データベース変更をコミットすることに先立って変更メッセージが送信および/または受信されることを保証することによって行なう。
様々な技術を使用して、データベース変更メッセージが配信および/または受信されるかどうかを判断することができる。第1の技術は、受信側デバイスからの肯定応答(例えば、ACK)を含む。ACKは、変更メッセージの成功した(例えば、破損されていない)送信を示すことができ、データベース変更のコミットメントを呼び出すことができる。第2の技術は、否定応答(NAK)を受信すること、および/または、不成功の送信を示す可能性のある、受信側デバイスからの肯定応答を受信しないことを含み、これにおいてデータベース変更は、変更メッセージがその所期のレシーバおよび/または受信者に成功して送信されるまで、抑えられ、延期され、および/または遅延される。第3の技術では、Packet Internet Grouper(PING)を使用して、通信が通知配信サービス230と受信側デバイスの間に存在するかどうかを判断することができる。通知配信サービス230はデータパケットを受信側デバイスに送信し(例えば、通知ランタイムサービス)、応答を待機することができる。このデータパケットを変更メッセージに先立って、それと同時に、あるいはその後に続いて送信することができる。受信側デバイスからの応答は、通信が存在することを検証することができる。
サービスブローカ210をサーバー200内に例示するが、サービスブローカ210はクライアント内または別のサーバー内に存在できることを理解されたい。加えて、サービスブローカ210をデータベース(例えば、SQLベース)とすることができ、これは複数の220キューおよび/または通知配信サービス230を含むことができる。さらに、複数の通知配信サービスを上述のように使用できることを理解されたい。例えば、複数の通知配信サービスがキュー220にアクセスすることができる。加えて、複数の通知配信サービスは、実質的に類似のキュー(例えば、キュー220)を含む複数のキュー(例えば、キュー120)に、逐次および/または同時にアクセスすることができる。
さらに、中間コンポーネント(図示せず)を、データベースクエリ登録情報をキュー220から通知配信サービス230に送信する間に利用できることを理解されたい。例えば、データベースクエリ登録情報を、通知配信サービス230によってアクセスされることに先立って、別の媒体上に格納することができる。本発明の一態様では、データベースクエリ登録情報をログファイルに保存することができる。続いて、通知配信サービス230はデータベースクエリ登録情報をログファイルから利用する。本発明のもう1つの態様では、バッファを利用して、データベースクエリ登録情報の通知配信サービス230への配信を促進させることができる。本発明のさらにもう1つの態様では、例えばパフォーマンスを向上させるために、データベースクエリ登録情報を中間コンポーネントなどにオフロードして、データベースおよび/またはサービスブローカ210に関連付けられたリソースを解放することができる。中間コンポーネントに備えることがシステムの柔軟性を増すことを理解されたい。
ここで図3を参照して、本発明の一態様による例示的データ無効化システム300を例示する。データ無効化システム300は、クライアント310、サーバー320、メモリ330、サービスブローカ340、キュー350および通知配信サービス360を備える。
クラアント310は、本明細書で前述のように、データベースクエリをサーバー320に登録し、関連付けられた変更メッセージを通知配信サービスから受信するためのメカニズム(図示せず)を含むことができる。登録は通常、データベース登録メッセージを構築することを備え、このメッセージは、データベースクエリ登録情報、配信アドレス、一意の識別子(例えば、グローバル一意識別子、またはGUID)、キュー名、タイムアウト期間、ならびに例えば、通信(例えば、プロトコルおよびポート)およびセキュリティ(例えば、暗号化および認証)オプションなど、オプショナルで追加の情報を含む。次いで、データベース登録メッセージをサーバー320に送信することができる。本発明の一態様によれば、複数のクライアント(例えば、複数のクライアント310)および/または他のコンポーネントは、1つまたは複数のデータベースクエリを逐次および/または同時に登録できることを理解されたい。さらに、複数のクライアントは、実質的に類似の結果を戻すクエリを登録することができる。
本発明の一態様では、データベース登録メッセージをサーバー320に、クエリ(例えば、データベース登録メッセージに含まれたデータベースクエリ登録情報に関連付けられたクエリ)と共に送信することができる。クエリ結果をメモリ330に、および/または、ウェブサーバー上のストレージを含む他のストレージデバイスに格納することができる。結果をメモリ330に格納することにより、クライアント310ならびに他のいかなるクライアントにも、後続のクエリが実質的に類似の結果を戻すであろう場合に後続のクエリを実行するのではなく格納済の結果を利用する能力が提供される。本発明のもう1つの態様では、データベース登録メッセージをサーバー320に、結果を要求することなく送信することができる。例えば、クライアントは、先に実行されたクエリに実質的に類似であるクエリを登録することができ、これにおいて、先に実行されたクエリの結果がメモリ330に保存されており、クライアントによって利用することができる。もう1つの例では、クライアントは、そのクライアントに関連付けられる、異なるクエリの結果に影響を及ぼすクエリを登録することができる。さらにもう1つの例では、クライアントは、望むなら、データベースへのいかなる変更についての無効化通知をも受信するために登録することができる。
格納済クエリ結果が、例えば、生のデータ、変換済データおよび/または問合せ可能データを含む可能性があることを理解されたい。生のデータは柔軟性があり、様々な変換技術を利用して、生のデータの代替表現を提供することができる。例えば、生のデータを英数字テキストとして記号的に、グラフ、表およびチャートにおいて、他の知られている形式および/またはフォーマットを利用して表現することができる。変換済データまたはオブジェクトを格納することにより変換時間が節約され、既存のサポート(例えば、応答キャッシュ)を活用することができる。問合せ可能データを、問合せ可能データセットまたは問合せ可能データセットのサブセットを使用する後続の要求を介して利用することができる。例えば、問合せ可能データセットは複数のカテゴリを備えることができ、後続の要求は、複数のカテゴリのためのデータセットおよび/または複数のカテゴリのサブセットを問い合わせることができる。
サーバー320がデータベース変更要求を受信した後、データベース登録メッセージ内のデータベースクエリ登録情報がサービスブローカ340に提供される。サービスブローカ340はデータベースクエリ登録情報の少なくとも一部をキュー350に入れて、通知配信サービス360を活動化する。前述のように、データベース変更要求を非同期的または同期的にコミットすることができる。
次いで、通知配信サービス360はデータベースクエリ登録情報を利用して変更メッセージを構築し、クライアント310に配信する。例えば、通知配信サービス360は配信アドレスおよび一意の識別子(例えば、GUID)をデータベースクエリ登録情報から抽出および利用することができる。一意の識別子は通常、変更メッセージ内に含まれ、変更メッセージは一般に配信アドレスに配信される(例えば、クライアント310に関連付けられた通知ランタイムサービス)。
変更メッセージを受信した後、一意の識別子を抽出および使用してクライアント310に通知することができる。その後、クライアント310は後続のアクションを決定することができる。例えば、本発明の一態様では、クライアント310は別のクエリを実行して表示をリフレッシュし、および/またはリフレッシュされた結果を格納することができる。本発明のもう1つの態様では、クライアント310は、結果が、後続のクエリによって戻されるであろう結果と矛盾するとしても、メモリ330内の結果を表示または使用し続けることを決定することができる。本発明のさらにもう1つの態様では、クライアント310はデータベースクエリを再度登録し、および/または、別の変更(例えば、クエリ結果を変更するであろう変更)が発生する場合に通知を受信するために自動再登録を使用することができる。本発明のさらにもう1つの態様では、変更通知は他の処理をトリガすることができ、これは例えば、変更情報のロギング、および/または、変更されたデータに基づいてアクションを取ることなどである。
図4は、本発明の一態様による例示的登録システム400を例示する。登録システム400を使用して、データベースクエリの(例えば、サーバー200および320、ならびにいずれかのSQLベースのサーバーへの)登録を実施することができる。登録システム400は、メッセージアセンブラ410、名前プロバイダ420、時間プロバイダ430、IDプロバイダ440およびアドレスプロバイダ450を備える。
メッセージアセンブラ410はデータベースクエリ登録要求(例えば、サブスクリプション)を受け入れ、データベースクエリ登録情報のパッケージングを調整し、システム100〜300のようなシステムによって使用することができるデータベースクエリ登録情報を送信する。前述のように、データベースクエリ登録情報は通常、キュー名、タイムアウト期間、一意の識別子および配信アドレスを含む。しかし、前述のデータベースクエリ登録情報は本発明を限定するように意図されないことを理解されたい。他の適切な情報を、本発明によれば使用することができる。さらに、データベースクエリ登録情報の様々な順序付けを、本発明の一態様によれば使用することができる。
メッセージアセンブラ410はデータベースクエリ登録情報を、プロバイダ420〜450および/または他のコンポーネント(例えば、本明細書で前述の通知ランタイムサービスおよび/またはユニバーサルリスナ)の1つまたは複数から得ることができる。名前プロバイダ420を使用して、戻された以前の結果に矛盾してデータベースの状態をレンダリングするであろうデータベース変更が発生した後で、登録済データベースクエリに関連付けられたデータベースクエリ登録情報を格納するためのキューの名前(例えば、キュー120の1つの名前)を提供することができる。例えば、名前プロバイダ420はランダムにキュー名を1つまたは複数の使用可能なキューから選択し、ユーザー定義のキュー名を提供し、および/またはデフォルトキュー名を提供することができる。本発明のもう1つの態様では、キュー名をデータベースクエリ登録要求に含めて、名前プロバイダ420が使用されないようとすることができる。
時間プロバイダ440は、登録済データベースクエリのためのタイムアウト期間を提供することができる。タイムアウト期間は持続時間または満了期間を指定することができ、これにおいて、タイムアウト期間が切れる場合、データベースクエリ登録情報は、データベース変更が発生していない場合でも変更メッセージを呼び出して、タイムアウト期間が切れていることを示す。これによりユーザーに、登録済データベースクエリに対応するいかなる格納済結果ももはや信頼性がなく、および/または正確でない可能性があることを通知することができ、サーバーは長期に渡って、もはやユーザーにとって関心のない可能性のあるデータベースクエリについての登録情報を保持する必要はない。
IDプロバイダ440は、一意の識別子(例えば、グローバル一意識別子、またはGUID)をサブスクリプションのために割り当てるために使用される。一般に、一意の識別子は、登録中であるデータベースクエリを、サブスクリプションを要求中であるコンポーネント(例えば、クライアント、オブジェクトインスタンスおよび依存性)に関連付けるためのメカニズムを提供する。この関連付けを、例えば、コマンド、ビュー、テーブルおよび/またはリソースにより行なうことができる。一意の識別子を使用して、無効化通知を要求側コンポーネントにルーティングすることができる。
アドレスプロバイダ450は、配信アドレスを提供するために使用される。配信アドレスは、登録済クエリの結果に影響を及ぼすであろうデータベース変更に応答して変更メッセージを送信する場合、通知配信サービスによって利用される。配信アドレスは、変更メッセージのための宛先アドレスを示す。例えば、配信アドレスは、通知ランタイムサービス、および/または、サブスクリプションに登録されるユニバーサルリスナ(例えば、HTTP.sys)に関連付けられる。代替コンポーネントおよびシステムを利用して配信アドレスを得ることができることを理解されたい。例えば、通知ランタイムサービスおよび/またはユニバーサルリスナを使用して、配信アドレスを、アドレスプロバイダ450を介して、および/または他の技術を通じて、例えば中間コンポーネントなしに、提供することができる。
データベースクエリ登録情報を得た後、メッセージアセンブラ410はデータベースクエリ登録メッセージを構築する。一般に、データベースクエリ登録メッセージは、一意の識別子、配信アドレス、キュー名およびタイムアウト期間を含む。データベースクエリ登録情報をメッセージ内で様々に位置付けおよびフォーマットできることを理解されたい。例えば、本発明の一態様では、データベースクエリ登録情報は、構文解析することができる区切り文字列である。本発明のもう1つの態様では、データベースクエリ登録情報のバイナリ表現が使用される。本発明のさらにもう1つの態様では、データベースクエリ登録情報の少なくとも一部が利用されて「クッキー」が形成される。例えば、配信アドレスおよび一意の識別子を、「クッキー」および/またはマークアップ言語(例えば、XML)ベースのメッセージとして提供することができる。
次いで、メッセージアセンブラ410はデータベースクエリ登録メッセージを送信する。メッセージを、クエリに先立って、それと同時に、および/またはその後に続いて送信できることを理解されたい。加えて、メッセージをコマンド(例えば、実行コマンド)内で、および/またはストアドプロシージャにより送信することができる。登録済データベースクエリの結果を変更するデータベース変更が発生する場合、データベースクエリ登録情報を利用して、通知を受信するために登録したコンポーネントに無効化通知を配信することを実施することができる。
登録システム400、メッセージアセンブラ410、名前プロバイダ420、時間プロバイダ430、IDプロバイダ440およびアドレスプロバイダ450を、その用語が本明細書で定義されるように、コンピュータコンポーネントとすることができることを理解されたい。
図5は、本発明の一態様による例示的通知システム500を例示する。通知システム500は、アドレスディストリビュータ510、出力コンポーネント520、メッセージレシーバ530およびIDエクストラクタ540を備える。
通知システム500は一般に、データベースクエリ登録要求が受信された後に活動化される。例えば、データベースクエリ登録要求を受信した後、登録コンポーネント(例えば、登録システム400)は通知システム500を活動化することができる。
活動化後、通知システム500を使用してデータベースクエリ登録メッセージのための配信アドレスを得ることができ、および/または、通知システム500を利用して無効化通知の提供を実施することができる。アドレスディストリビュータ510を利用して、配信アドレスを得ることができる。アドレスディストリビュータ510が配信アドレス要求を受信した(例えば、後述のように、通知ランタイムサービスおよび/またはユニバーサルリスナへの登録を通じて)後、配信アドレスが得られ、出力コンポーネント520に提供される。次いで、配信アドレスが要求側コンポーネント(例えば、登録システム400)にルーティングされる。
通知システム500は追加で変更メッセージを受け入れることができる。例えば、通知配信サービス(本明細書で上述)を使用して、変更メッセージを通知システム500に送信することができる。メッセージレシーバ530は変更メッセージを受け入れる。メッセージレシーバ530は様々なセキュリティおよび妥当性検査技術を使用して、エラーのある変更メッセージの転送を軽減することができる。例えば、認証証明書および/または一意の識別子の検証を、本明細書の一態様により使用することができる。次いで、メッセージレシーバ530は変更メッセージをIDエクストラクタ540に提供する。IDエクストラクタ540は一意の識別子を、データベースクエリ登録メッセージ内から得る。
次いで、一意の識別子が出力デバイス520によって利用されて、無効化通知が、通知を受信するために登録したコンポーネントにルーティングされる。例えば、本発明の一態様では、一意の識別子に関連付けられた登録インスタンスに関連付けられるいかなるクライアントにも通知(例えば、イベント)が提供される。本発明のもう1つの態様では、フラグおよび/または他の記述子が使用されて、以前に戻されたクエリ結果を利用しようと試みるいかなるクライアントにも、結果が無効になっていることが通知される。
図6は、本発明の一態様による例示的クライアント−サーバーシステム700を例示する。クライアント−サーバーシステム600をSQLベースのクライアント−サーバーとすることができることを理解されたい。クライアント−サーバーシステム600は、依存性インスタンス610、オプショナルの依存性スイッチ620、通知ランタイムサービス630および依存性関連付け640を含むクライアント605、ならびに、検出ユニット650、データベース660、サービスブローカ670、キュー680および通知配信サービス690を含むサーバー645を備える。
クライアント605は、登録を、データベースクエリ登録要求を介して開始する。通常、データベースクエリ登録要求は、キュー名および/またはタイムアウト期間を含む。しかし、デフォルト値を前述ならびに他のオプションのために利用できることを理解されたい。依存性インスタンス610が作成されて登録要求が表現され、1つまたは複数の登録済クエリと通知されるクライアント605の間の関連付けが提供される。作成すると、依存性コンポーネント610は、要求についての一意の識別子を得る。単一の依存性インスタンス610を1つまたは複数の登録済クエリに関連付けることができ、クエリのいずれか1つの結果に影響を及ぼすであろう変更が通知を生成する(例えば、変更がクエリのいずれかの結果に発生する場合、いくつかのデータベースクエリから生成された結果が無効化される)ことを理解されたい。識別子の一意性は登録済クエリのグループ化に対応することができ、1つまたは複数のクエリは、データベース変更において、集約された結果を無効化することができる。例えば、異なる一意の識別子を、登録済クエリの異なるセットによって影響を受ける結果について得ることができる。
一意の識別子は、通知ランタイムサービスに、オプショナルの依存性スイッチ620を通じて登録するために利用され、依存性インスタンス610は一意の識別子を提供して依存性スイッチ620に登録し、次いで依存性スイッチ620は一意の識別子を提供し、通知ランタイムサービス630に登録する。依存性スイッチ620および/または通知ランタイムサービス630がアクティブでない場合、依存性スイッチ620および/または通知ランタイムサービス630が、登録に先立って起動される。登録後、通知ランタイムサービス630は配信アドレスを依存性インスタンス610に提供する。オプショナルの依存性スイッチ620は最適化技術として使用され、利用されない場合、依存性インスタンス610は、先立ってオプショナルの依存性スイッチ620などの中間コンポーネントに登録することなく、通知ランタイムサービス630に登録できることを理解されたい。加えて、使用される通知ランタイムサービスを、デフォルト、クライアント機能、データベースクエリ登録情報、構成、統計および/または適応技術のうち1つによって選択することができる。
前述の登録技術は、プロセス内の1つまたは複数の依存性インスタンス(例えば、依存性インスタンス610)に、プロセス内の依存性スイッチ(例えば、依存性スイッチ620)に登録するための手段を提供することを介して、複数の処理の間の相互参照を軽減することができ、依存性スイッチ、および/または、複数のプロセスからの他の依存性スイッチ(例えば、依存性スイッチ620など)は、相互プロセス参照を通知ランタイムサービス630に登録することができる。
次いで、配信アドレス、一意の識別子、キュー名、タイムアウト期間および/または追加の情報が依存性関連付け640に提供され、その後に続いて登録メッセージにおいてサーバー645に送信される。依存性インスタンス610(ならびに他の依存性インスタンス)を1つまたは複数のクライアントコンポーネントに関連付け、複数のクエリ登録に含めることができ、これにおいて登録済クエリのいずれかの結果への変更が結果として実質的に類似のクライアントアクションとなることを理解されたい。上述のように、サーバー645は、検出ユニット650、データベース660、サービスブローカ670、キュー680および通知配信サービス690を備える。
検出ユニット650を使用して、データベースクエリ登録情報を維持し、いつ登録済クエリについての無効化を呼び出すかを決定することができる。例えば、データベース660を変更するための要求が受信される場合、データベースクエリ登録情報を利用して、登録済クエリがこの変更に関連付けられるかどうかを判断することができる。登録済クエリの結果に変更があるであろう場合、少なくともデータベースクエリ登録情報をサービスブローカ670に提供することができる。判断(検出)ユニット650は、無効化の理由(例えば、データベース変更(上述)、タイムアウト期間が満了した、メモリ制限、クエリの複雑さ、サーバーのリブートおよびシステムエラー)、データベース変更の性質の指示(例えば、挿入、削除、更新およびスキーマ変更)、および/または変更の内容(例えば、元のおよび/または現在の値)など、追加の情報を送信できることを理解されたい。
データベースクエリ登録情報をサービスブローカ670に送信した後、検出ユニット650はデータベースクエリ登録情報を廃棄(例えば、自動的に再登録)または保持することができる。データベースクエリ登録情報の廃棄は、後続の変更がクエリについての別の無効化を導き出さないことを保証する(例えば、クエリを登録するコンポーネントがもはや通知の受信に関心を有していない場合)。データベースクエリ登録情報を廃棄するための適切な技術には、静的な廃棄(例えば、無効化を呼び出した後の廃棄)、少なくとも部分的にはデータベースクエリ登録情報に基づいた廃棄(例えば、フィールドまたはパラメータの廃棄)、少なくとも部分的には通知ランタイムサービスからの応答に基づいた廃棄(例えば、なお無効化についてリッスンする関連コンポーネントがある場合、データベースクエリ登録情報を保持し、そうでない場合は廃棄する)、および、先立った登録メッセージに取って代わる後続の登録メッセージに基づいた廃棄が含まれる。データベースクエリ登録情報を保持することにより、後続のデータベース変更に関連付けられた追加の無効化を受信するための能力が提供される。
データベースクエリ登録情報を検出ユニット650から受信した後、サービスブローカ670は、データベースクエリ登録情報を格納して通知配信サービスに送信することを実施する。サービスブローカ670はデータベースクエリ登録情報をキュー680に入れ、サービスブローカ670は、そのように構成される場合、通知配信サービス690を呼び出す。アクティブである間、通知配信サービス690はキュー680内のデータベースクエリ登録情報を利用して、登録済クエリの結果がデータベース変更により変更している(例えば、後続の結果が無効となっている、および/または以前に検索された結果と矛盾している)ことを示す変更メッセージを構築することができる。検出ユニット650はまたデータベースクエリ登録情報を通知配信サービス690に提供して、登録済クエリのための変更メッセージを呼び出すこともできることを理解されたい。
通知配信サービス690は、データベースクエリ登録情報の少なくとも一部を使用して、変更メッセージをクライアント605の通知ランタイムサービス630にルーティングする。通知ランタイムサービス630は変更メッセージ内の依存性の一意の識別子を利用して、この通知を対応する依存性インスタンス610に(オプショナルで依存性スイッチ620を通じて)ルーティングする。次いで、依存性インスタンス610はクライアント605に変更を通知する。例えば、依存性610が通知を受信した後、依存性インスタンスに登録しようとする後続の試みが発生する場合、依存性イベントを引き起こすことができ、および/または、イベントを引き起こすようにフラグを設定することができる。複数のクライアントが通知を受信するために登録することができ、依存性インスタンス610は逐次および/または同時に、クライアント605、ならびに、類似のおよび/または異なるマシン上に存在する別のクライアントに通知することができることを理解されたい。さらに、クライアント605(または、依存性インスタンス610をインスタンス化する他のクライアント)はもはや、変更が発生する場合に存在しない可能性がある。しかし、通知を受信するために登録された他のクライアントがある場合、これに依存性インスタンス610によって通知することができる。
様々な技術を使用して、通知ランタイムサービス630と通知配信サービス690の間の通信が失われることによる矛盾するクエリ結果の使用を軽減できることを理解されたい。例えば、ACK/NAK通信コードを使用して、エラーのない送信を肯定応答し、破損された送信および/または送信がないことを示すことができる。本発明のもう1つの態様では、通知ランタイムサービス630は通知配信サービス690をポールすることができる。成功した場合、通信が検証される。さらにもう1つの例では、通知ランタイムサービス630を「シャットダウン」することができる。通知ランタイムサービス630は通知(例えば、データベース状態が未知である)を、シャットダウンを完了することに先立って提供することができる。通知配信サービス690を類似の方法で使用することができる。例えば、通知配信サービス690は通知ランタイムサービス640をポールすることができる。成功した場合、通信が妥当性検査される。成功しない場合、通知配信サービス690が変更メッセージを配信できるようになるまで、データベース変更を抑えることができ、あるいはコミットしないことができる。
図7は、本発明の一態様によるもう1つの例示的クライアント−サーバーシステム700を例示する。クライアント−サーバーシステム600のように、クライアント−サーバーシステム600は、依存性インスタンス610および依存性関連付け640を含むクライアント605、ならびに、検出ユニット650、データベース660、サービスブローカ670、キュー680および通知配信サービス690を含むサーバー645を備える。加えて、クライアント605は依存性リスナ710をさらに含み、クライアント−サーバーシステム700は、クライアント605およびサーバー645に作用するユニバーサルリスナ720をさらに含む。
上述のように、クライアント605は登録を、データベースクエリ登録要求を介して開始し、これは依存性インスタンス610の作成を含むことができる。依存性インスタンス610の作成により一意の識別子(例えば、GUID)が生成され、これが次いで、依存性リスナ710に登録するために使用される。依存性リスナ710(ならびに他の依存性リスナ)は一意のURIを生成して、ユニバーサルリスナ720に登録する(例えば、HTTP要求をユーザーモードのアプリケーションにルーティングする、HTTP.sysまたはカーネルモードのデバイスドライバ)。GUIDおよびURIは一意の識別子および配信アドレスとして、依存性インスタンス610を通じてエクスポーズされ、クエリ登録メッセージにおいてサーバー645に送信される。一意のURIの生成を、相対的URIの一部として第2の一意の識別子を介して実施できることを理解されたい。加えて、使用されるユニバーサルリスナを、デフォルト、クライアント機能、データベースクエリ登録情報、構成、統計および/または適応技術のうち1つによって選択することができる。
クエリ登録メッセージは検出ユニット650によって受信および管理され、検出ユニット650は、登録済データベースクエリに関連付けられたデータベース変更を検出し、登録済クエリの後続の実行が異なる結果を戻すであろうデータベース変更が発生する場合、データベースクエリ登録情報をサービスブローカ670に提供する。上述のように、検出ユニット650は他の情報を送信することができ、データベースクエリ登録情報を後続のデータベース変更のために維持し、あるいはクエリ登録をキャンセル(例えば、登録解除)することができる。
サービスブローカ670は、データベースクエリ登録情報を格納し、通知配信サービス690に送信することを実施する。サービスブローカ670は、データベースクエリ登録情報をキュー680に入れ、サービスブローカ670は通知配信サービス690を呼び出す。活動化された通知配信サービス690は、データベースクエリ登録情報を利用して、変更メッセージを構築および送信することができる。
通知配信サービス690は、変更メッセージ内のデータベースクエリ登録情報の少なくとも一部を使用し、変更メッセージを、例えばHTTP要求としてユニバーサルリスナ720に提供する。ユニバーサルリスナ720はURI内で相対パスを利用して、要求を依存性リスナ710にルーティングする。依存性リスナ710はデータベースクエリ登録情報(例えば、依存性の一意の識別子)を利用して、変更メッセージを依存性インスタンス610にルーティングして、クライアント605を含む、無効化通知を受信するために登録されたいかなるクライアントにも通知することができる。クライアント−サーバーシステム600と同様に、様々な技術(例えば、ACK/NAK、Pingおよび自動無効化)を使用して、ユニバーサルリスナ720と通知配信サービス690の間の通信が失われることによる矛盾したクエリ結果の使用を軽減することができる。
依存性リスナ710およびユニバーサルリスナ720の使用により、通知ランタイムサービスなどのサービスをクライアント605上でインストールおよび活動化(例えば、起動)することが軽減されることを理解されたい。加えて、変更メッセージおよび/または無効化通知を、ファイアウォールを通じて送信することができ、これはポート80を使用できるからである。しかし、このポートを構成可能とすることができ、いかなるポートも利用できることを理解されたい。
図8は、本発明の一態様による例示的セキュリティ技術を例示する。システム800は、クライアント810、サーバー820、登録要求チャネル830および変更メッセージチャネル840を備える。
前述のように、クライアントはデータベースクエリ登録またはサブスクリプションを開始する。例えば、クライアント810は、データベースクエリのサブスクリプションを要求し、これはオプショナルでキュー名およびタイムアウト期間を含む。続いて、追加のデータベースクエリ登録情報が得られ、データベースクエリ登録メッセージが構築される。データベースクエリ登録メッセージは通常、配信アドレス、一意の識別子、キュー名およびタイムアウト期間を含むが、追加および/または他の情報を含むことができる。組み立てられた後、データベースクエリ登録情報はサーバー820に、登録チャネル830を介して送信される。その後、サーバー820がデータベース変更要求を受信した後、サーバー820内の検出メカニズムなどが使用されて、いつデータベース変更が登録済クエリの後続のクエリ結果を変更するかが決定される。次いで、変更メッセージを、変更メッセージチャネル840を介してクライアント810にディスパッチすることができる。
データベースクエリ登録メッセージに含まれた一意の識別子(例えば、GUID)は、データベースクエリ登録メッセージのためのセキュリティメカニズムを提供することができる。例えば、本発明の一態様では、データベースクエリ登録要求が受信される場合にGUIDがランタイムで作成され、それによりGUIDを「推測」または模倣する機会が軽減される。次いで、一意の識別子がサーバー820を通じて伝播され、変更メッセージに含まれる。登録済データベースに変更があったことをクライアントに偽って通知しようとして、シミュレートされたデータベース変更メッセージを変更メッセージチャネル840に差し挟もうと試みる不当なソースは、一意の識別子が有効な登録を表さない場合、無視される。加えて、本発明の一態様によれば、他のセキュリティ情報を使用することができる(例えば、認証証明書)。
図9に進み、本発明の一態様による例示的クライアント−サーバーシステム900を例示する。クライアント−サーバー900は、コマンドコンポーネント920、依存性930、通知ランタイムサービス940およびオプショナルの依存性スイッチ950を備えるクライアントマシン910、ならびに、サービスブローカ970、キュー980および通知配信サービス990を備えるサーバー960を備える。
一般に、クライアントは依存性930(例えば、オブジェクト)をインスタンス化し、これは一意の識別子を生成する。クライアントは通常、キュー名およびタイムアウト期間を、コンストラクタおよび/またはメソッドを介して提供するが、デフォルトおよび/または他のキュー名およびタイムアウト期間を使用することができる。続いて、依存性スイッチ950が使用される場合、依存性930は通知ランタイムサービス940に、オプシナルの依存性スイッチ950を通じて登録する。オプショナルの依存性スイッチ950が利用されない場合、登録が依存性930と通知ランタイムサービス940の間で、いかなる中間コンポーネントもなしに発生する。次いで、通知ランタイムサービス940は配信アドレスを依存性930に提供する。次いで、クライアントは一般にコマンドコンポーネント920(例えば、導出されたオブジェクト)をインスタンス化し、これを依存性930に関連付ける。キュー名、タイムアウト期間、配信アドレスおよび一意の識別子がコマンドコンポーネント920に提供される。次いで、コマンドコンポーネント920はデータベースクエリをサーバーマシン960に登録し、これは例えば、キュー名、タイムアウト期間、配信アドレスおよび一意の識別子が例えばデータベースクエリ登録メッセージ(例えば、マークアップ言語(例えば、XML)ファイル)として送信されるメソッドを呼び出すことを介して行なわれる。依存性930を複数のコマンドコンポーネント920(ならびに、他のコマンドコンポーネント)に関連付けることができ、コマンドコンポーネントは類似および/または異なるデータベースクエリを、実質的に類似のデータベースクエリ登録メッセージに登録できることを理解されたい。
上述のように、サーバーマシン960は、サービスブローカ970、キュー980および通知配信サービス990を備える。サーバーマシン960は、データベース変更を検出するための様々な技術を使用することができる。例えば、データベース変更要求が受信される場合、登録済クエリについての探索が初期化されて、後続のクエリの結果に変更があるかどうかが判断される。変更されたデータベースに関連付けられたデータベースクエリ登録情報を、サービスブローカ970に提供することができる。サービスブローカ970はデータベースクエリ登録情報をキュー980に格納し、通知配信サービス990を活動化することができる。
通知配信サービス990はデータベースクエリ登録情報を利用して、変更メッセージを構築し、通知ランタイムサービス940に送信する。続いて、通知ランタイムサービス940は一意の識別子を抽出し、一意の識別子を利用してメッセージを対応する依存性930にルーティングする。次いで、依存性930は、変更されたデータベースに関連付けられたクライアントに通知する。例えば、依存性は、変更されたデータテーブルに関連付けられたアプリケーションについてイベントを引き起こし、および/または、アプリケーションが、変更されたデータテーブルと関連付けようと試みる場合に、イベントを引き起こすためのフラグを設定することができる。
本発明の一態様によれば、クライアント−サーバーシステム700に類似して、依存性リスナ(図示せず)およびユニバーサルリスナ(図示せず)を、クライアントサーバーシステム900と共に使用できることを理解されたい。例えば、依存性リスナは一意のURIをユニバーサルリスナに登録し、一意の識別子と依存性インスタンスの間の対応を維持することができる。一意の識別子およびURIを、サーバーに送信されるデータベースクエリ登録メッセージに含めることができる。後続のクエリの結果に影響を及ぼすであろうデータベース変更が発生した後、通知配信サービス990は、例えばHTTP要求を構築および送信して、変更メッセージをユニバーサルリスナに配信することができる。ユニバーサルリスナは一意のURIを利用して、要求を依存性リスナにルーティングすることができる。依存性リスナは変更メッセージ内で一意の識別子を使用して、対応する依存性に、無効化通知を受信するために登録されたいかなるクライアントにも通知させることができる。
上述のように、依存性リスナよびユニバーサルリスナの使用により、サービス(例えば、通知ランタイムサービス)をクライアント上でインストールおよび活動化することが軽減される。加えて、ポートを構成可能にして、ポート80の選択を、例えば、送信がファイアウォールを通じて発生できるように可能とすることができる。
図10〜12は、本発明による方法を例示する。説明を簡単にするため、これらの方法を一連の動作として示し、説明する。本発明が例示の動作によって、および/または動作の順序によって限定されず、例えば、動作は様々な順序で、および/または同時に、ならびに、本明細書で提示および説明しない他の動作と共に発生する可能性があることを理解されたい。さらに、例示しないすべての動作は、本発明による方法を実施するために必要とされる可能性がある。
加えて、方法を代替として一連の相関状態(例えば、状態図)またはイベントとして表現できることは、当業者には理解されよう。また、本発明を一般に、プログラムモジュールなど、1つまたは複数のコンポーネントによって実行されるコンピュータ実行可能命令に関連して説明することができる。一般に、プログラムモジュールには、ルーチン、プログラム、オブジェクト、データ構造などが含まれ、これらは特定のタスクを実行するか、あるいは特定の抽象データ型を実施する。通常、プログラムモジュールの機能性を、様々な実施形態で望まれるように結合または分散させることができる。
図10は、本発明の一態様による登録および配信方法1000を例示する。登録および配信方法1000を使用して、変更が登録済クエリの結果を変更するであろうデータベース変更要求が受信された後、変更メッセージを配信することができる。1010で開始して、コンポーネント(例えば、クライアント、エージェント、アプリケーションおよびユーザー)が、登録済クエリの結果に影響を及ぼすであろうデータベース変更が発生する場合に通知を受信するために、データベースクエリを登録する。登録は一般に、変更通知の配信を実施するデータベースクエリ登録情報(例えば、図1〜9で上述)を提供することを含む。
1020で、データベース変更要求が受信される。要求は、登録済クエリの結果を変更するであろう変更を含む可能性がある。要求はメカニズムを開始して、データベース変更が登録済データベースクエリに関連付けられるかどうかを判断する。登録済クエリの結果が影響を受ける場合、データベースクエリ登録情報の少なくとも一部がサービスブローカに提供される。
1030で、サービスブローカが登録情報をキューに格納し、通知配信サービスを活動化する。次いで、データベースクエリ登録情報を通知配信サービスでアクセス可能とすることができる。様々な技術を使用して、データベースクエリ登録情報を提供できることを理解されたい。例えば、データベースクエリ登録情報をキューから「プッシュ」し、および/または、通知配信サービスに「プル」することができる。さらに、中間ストレージエリアを使用して、データベースクエリ登録情報の転送を実施することができ、これは例えば、一時ストレージ位置を提供することによって行なわれる。
データベースクエリ登録情報が利用されて、配信アドレス、および、変更メッセージを構築および送信するために使用される一意の識別子が得られる。1040で、通知配信サービスがデータベース変更メッセージを送信する。このメッセージは、登録情報の少なくとも一部を含み、通常は一意の識別子を備える。例えば、オブジェクトIDを送信することができ、これにおいてイベントが引き起こされ、および/または、フラグがアプリケーションオブジェクトインスタンスについて設定される。本明細書で前述のように、通知配信サービスは、変更メッセージをユニバーサルリスナおよび/または通知ランタイムサービスに送信できることを理解されたい。
図11および12は、本発明の一態様による登録、配信および通知方法1100を例示する。図11に進むと、参照番号1110で、データベースクエリを登録するための要求が受信される。オプショナルで、この要求はキュー名および/またはタイムアウト期間を含むことができる。
1120で、一意の識別子および配信アドレスが(例えば、上述のように、依存性リスナおよびユニバーサルリスナ、および/または依存性スイッチ、および/または通知ランタイムサービスを介して)得られる。加えて、キュー名および/またはタイムアウト期間を含む他の情報を得ることができる。次いで、データベースクエリ登録情報が利用されて、データベースクエリ登録メッセージが構築され、データベースクエリ登録メッセージがサーバーに送信される。
1130で、サーバーが、データベースクエリ登録メッセージに含まれたデータベースクエリ登録情報を受信および格納する。サーバーがデータベース変更要求を受信した後、変更が登録済クエリの後続の結果を変更するかどうかを検出することを実施するメカニズムが呼び出される。登録済データベースクエリがデータベース変更に関連付けられない場合、方法1100はアイドル状態に移行し、例えば、次のデータベース変更を待機することができる。データベース変更が登録済クエリの結果に影響を及ぼす場合、データベースクエリ登録情報をサービスブローカに提供することができる。サービスブローカはデータベースクエリ登録情報をキュー(例えば、データベースクエリ登録情報メッセージに含まれたキュー名に関連付けられたキュー)に格納する。加えて、サービスブローカは通知配信サービスを活動化することができる。
図12に移動して、本発明の一態様による図11の続きを例示する。参照番号1210で、キューに格納されたデータベースクエリ登録情報が通知配信サービスに提供される。通常、一意の識別子および配信アドレスがキューに格納される。
1220で、通知配信サービスが、通常は一意の識別子を含む変更メッセージを送信し、これを(例えば、通知ランタイムサービスおよび/またはユニバーサルリスナの)配信アドレスに配信する。変更メッセージが受信され、1230で、変更メッセージ内の一意の識別子を抽出および使用して、登録済コンポーネント、および、後に登録済クエリへの変更について登録しようと試みるコンポーネントに通知することができる。
本発明の様々な態様についての追加のコンテキストを提供するために、図13および以下の考察は、本発明の様々な態様を実施することができる、適切なオペレーティング環境1310の簡単な全体的説明を提供するように意図される。本発明を一般に、プログラムモジュールなど、1つまたは複数のコンピュータまたは他のデバイスによって実行されるコンピュータ実行可能命令に関連して説明するが、本発明をまた、他のプログラムモジュールと組み合わせて、および/または、ハードウェアおよびソフトウェアの組み合わせとしても実施できることは、当業者には理解されよう。しかし、一般に、プログラムモジュールには、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれ、これらは特定のタスクを実行するか、あるいは特定の抽象データ型を実施する。オペレーティング環境1310は、適切なオペレーティング環境の一例でしかなく、本発明の用途または機能性の範囲についてのいかなる限定も示唆するように意図されない。本発明と共に使用するために適切な可能性のある他の周知のコンピュータシステム、環境および/または構成には、それだけに限定されないが、パーソナルコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラマブルコンシューマエレクトロニクス、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上述のシステムまたはデバイスを含む分散コンピューティング環境などが含まれる。
図13を参照すると、本発明の様々な態様を実施するための例示的環境1310は、コンピュータ1312を含む。コンピュータ1312は、処理装置1314、システムメモリ1316、およびシステムバス1318を含む。システムバス1318は、それだけに限定されないが、システムメモリ1316を含むシステムコンポーネントを処理装置1314に結合する。処理装置1314を様々な使用可能などのプロセッサとすることもできる。デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャも、処理装置1314として使用することができる。
システムバス1318を、いくつかのタイプのバス構造のいずれかとすることができ、これには、様々な使用可能なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バスまたは外部バス、および/またはローカルバスが含まれ、このようなバスアーキテクチャには、それだけに限定されないが、8ビットバス、業界標準アーキテクチャ(ISA)、マイクロチャネルアーキテクチャ(MSA)、拡張ISA(EISA)、Intelligent Drive Electronics(IDE)、VESAローカルバス(VLB)、Peripheral Component Interconnect(PCI)、ユニバーサルシリアルバス(USB)、Advanced Graphics Port(AGP)、Personal Computer Memory Card International Associationバス(PCMCIA)およびSmall Computer Systems Interface(SCSI)が含まれる。
システムメモリ1316は、揮発性メモリ1320および不揮発性メモリ1322を含む。基本入出力システム(BIOS)は、起動中など、コンピュータ1312内の複数の要素の間で情報を転送するための基本ルーチンを含み、不揮発性メモリ1322に格納される。例示のため、限定ではなく、不揮発性メモリ1322は、読み取り専用メモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、電気的消去可能ROM(EEPROM)、またはフラッシュメモリを含むことができる。揮発性メモリ1320はランダムアクセスメモリ(RAM)を含み、これは外部キャッシュメモリとしての機能を果たす。例として、限定ではなく、RAMは多数の形態で使用可能であり、これは、シンクロナスRAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、ダブルデータレートSDRAM(DDR SDRAM)、拡張SDRAM(ESDRAM)、シンクリンクDRAM(SLDRAM)、および直接Rambus RAM(DRRAM)などである。
コンピュータ1312はまた、リムーバブル/非リムーバブル、揮発性/不揮発性のコンピュータストレージメディアも含む。図13は、例えば、ディスクストレージ1324を例示する。ディスクストレージ1324は、それだけに限定されないが、磁気ディスクドライブ、フロッピー(登録商標)ディスクドライブ、テープドライブ、Jazドライブ、Zipドライブ、LS−100ドライブ、フラッシュメモリカードまたはメモリスティックを含む。加えて、ディスクストレージ1324はストレージメディアを別々に、あるいは、他のストレージメディアと組み合わせて含むことができ、これには、それだけに限定されないが、コンパクトディスクROMデバイス(CD−ROM)、CDレコーダブルドライブ(CD−Rドライブ)、CD書き換え可能ドライブ(CD−RWドライブ)またはデジタル多用途ディスクROMドライブ(DVD−ROM)など、光ディスクドライブが含まれる。ディスクストレージデバイス1324をシステムバス1318に接続することを実施するために、通常はリムーバブルまたは非リムーバブルインターフェースが使用され、これはインターフェース1326などである。
図13は、ユーザーと、適切なオペレーティング環境1310で説明した基本コンピュータリソースの間の、媒介物の機能を果たすソフトウェアを説明することを理解されたい。このようなソフトウェアはオペレーティングシステム1328を含む。オペレーティングシステム1328をディスクストレージ1324上に格納することができ、オペレーティングシステム1328は、コンピュータシステム1312のリソースを制御し、割り振るように動作する。システムアプリケーション1330は、オペレーティングシステム1328によって、システムメモリ1316内またはディスクストレージ1324上に格納されたプログラムモジュール1332およびプログラムデータ1334を通じて、リソースの管理を利用する。本発明を様々なオペレーティングシステムまたはオペレーティングシステムの組み合わせにより実施できることを理解されたい。
ユーザーはコマンドまたは情報をコンピュータ1312へ、入力デバイス1336を通じて入力する。入力デバイス1336には、それだけに限定されないが、マウスなどのポインティングデバイス、トラックボール、スタイラス、タッチパッド、キーボード、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナ、TVチューナカード、デジタルカメラ、デジタルビデオカメラ、ウェブカメラなどが含まれる。これらおよび他の入力デバイスは処理装置1314へ、システムバス1318を通じて、インターフェースポート1338を介して接続する。インターフェースポート1338には、例えば、シリアルポート、パラレルポート、ゲームポートおよびユニバーサルシリアルバス(USB)が含まれる。出力デバイス1340は、入力デバイス1336と同じタイプのポートのいくつかを使用する。したがって、例えば、USBポートを使用して入力をコンピュータ1312に提供し、情報をコンピュータ1312から出力デバイス1340に出力することができる。出力アダプタ1342が提供されて、特殊なアダプタを必要とする他の出力デバイス1340の中でも、モニタ、スピーカおよびプリンタのようないくつかの出力デバイス1340があることが例示される。出力アダプタ1342には、例示として、限定ではなく、ビデオおよびサウンドカードが含まれ、これらは出力デバイス1340とシステムバス1318の間の接続の手段を提供する。リモートコンピュータ1344など、他のデバイスおよび/またはデバイスのシステムが入力および出力機能を提供することに留意されたい。
コンピュータ1312はネットワーク環境において、リモートコンピュータ1344など、1つまたは複数のリモートコンピュータへの論理接続を使用して動作することができる。リモートコンピュータ1344は、パーソナルコンピュータ、サーバー、ルーター、ネットワークPC、ワークステーション、マイクロプロセッサベースのアプライアンス、ピアデバイスまたは他の共通ネットワークノードなどとすることができ、通常は、コンピュータ1312に関連して上述した要素の多数またはすべてが含まれる。簡潔にするため、メモリストレージデバイス1346のみをリモートコンピュータ1344と共に例示する。リモートコンピュータ1344はコンピュータ1312に、ネットワークインターフェース1348を通じて論理的に接続され、次いで通信接続1350を介して物理的に接続される。ネットワークインターフェース1348は、ローカルエリアネットワーク(LAN)およびワイドエリアネットワーク(WAN)など、通信ネットワークを包含する。LAN技術には、ファイバー分散データインターフェース(FDDI)、銅線分散データインターフェース(CDDI)、イーサネット(登録商標)/IEEE 802.3、トークンリング/IEEE 802.5などが含まれる。WAN技術には、それだけに限定されないが、ポイントツーポイントリンク、統合デジタルサービス通信網(ISDN)およびそれにおける変形形態のような回線交換網、パケット交換網およびデジタル加入者線(DSL)が含まれる。
通信接続1350は、ネットワークインターフェース1348をバス1318に接続するために使用されるハードウェア/ソフトウェアを指す。通信接続1350を、例示的に明瞭にするためにコンピュータ1312内に示すが、これをコンピュータ1312の外部とすることもできる。ネットワークインターフェース1348への接続のために必要なハードウェア/ソフトウェアには、例示のためにのみ、内部および外部技術が含まれ、これは、通常の電話のグレードのモデム、ケーブルモデムおよびDSLモデム、ISDNアダプタおよびイーサネット(登録商標)カードを含むモデムなどである。
上述には本発明の例が含まれる。言うまでもなく、本発明を説明するために、コンポーネントまたは方法の考えられるあらゆる組み合わせを説明することは可能ではなく、本発明の多数のさらなる組み合わせおよび並べ換えが可能であることは、当業者には理解されよう。したがって、本発明は、添付の特許請求の範囲の精神および範囲内に入るこのようなすべての変更、修正および変形形態を包含するように意図される。さらに、「含む」という用語が詳細な説明または特許請求の範囲で使用される範囲で、このような用語は、「備える」という用語が請求項において転換句として使用される場合に解釈されるように「備える」に類似の方法で、包含的であるものとする。
本発明の一態様による例示的データベース変更メッセージ配信システムを例示する図である。 本発明の一態様による例示的サーバーを例示する図である。 本発明の一態様による例示的データ無効化システムを例示する図である。 本発明の一態様による例示的登録システムを例示する図である。 本発明の一態様による例示的通知システムを例示する図である。 本発明の一態様による例示的クライアント−サーバーシステムを例示する図である。 本発明の一態様によるもう1つの例示的クライアント−サーバーシステムを例示する図である。 本発明の一態様による例示的セキュリティ技術を例示する図である。 本発明の一態様による例示的クライアント−サーバーシステムを例示する図である。 本発明の一態様による登録および配信方法を例示する図である。 本発明の一態様による第1の登録、配信および通知方法を例示する図である。 本発明の一態様による、図11の続きの図である。 本発明の一態様による例示的オペレーティングシステムを例示する図である。
符号の説明
100 データベース変更メッセージ配信システム
110、210、340、670、970 サービスブローカ
120、220、350、680、980 キュー
130、230、360、690、990 通知配信サービス
200、320、645、820、960 サーバー
300 データ無効化システム
310、605、810 クライアント
330 メモリ
400 登録システム
410 メッセージアセンブラ
420 名前プロバイダ
430 時間プロバイダ
440 IDプロバイダ
450 アドレスプロバイダ
500 通知システム
510 アドレスディストリビュータ
520 出力コンポーネント
530 メッセージレシーバ
540 IDエクストラクタ
600、700、900 クライアント−サーバーシステム
610 依存性インスタンス
620 オプショナルの依存性スイッチ
630 通知ランタイムサービス
640 依存性関連付け
650 検出ユニット
660 データベース
710 依存性リスナ
720 ユニバーサルリスナ
910 クライアントマシン
920 コマンドコンポーネント
930 依存性
940 通知ランタイムサービス
950 オプショナルの依存性スイッチ

Claims (59)

  1. データベースクエリ登録情報を受信するためのサービスブローカと、
    前記データベースクエリ登録情報の少なくとも一部を格納するための1つまたは複数のキューと、
    変更メッセージを送信するための1つまたは複数の通知配信サービスと
    を備えることを特徴とするデータベース変更通知システム。
  2. SQL環境内で使用されることを特徴とする請求項1に記載のシステム。
  3. 前記サービスブローカは、クライアントおよびサーバーのうち一方において存在することを特徴とする請求項1に記載のシステム。
  4. 前記データベースクエリ登録情報は、一意の識別子、配信アドレス、キュー名、タイムアウト期間、通信オプション、プロトコル、ポート、認証情報、セキュリティオプションおよび暗号化情報のうち少なくとも1つを備えることを特徴とする請求項1に記載のシステム。
  5. 前記1つまたは複数のキューは前記サービスブローカ内に位置することを特徴とする請求項1に記載のシステム。
  6. 前記サービスブローカはデータベースであることを特徴とする請求項1に記載のシステム。
  7. 前記1つまたは複数のキューに格納された前記データベースクエリ登録情報の前記少なくとも一部は、一意の識別子および配信アドレスを備えることを特徴とする請求項1に記載のシステム。
  8. 前記通知配信サービスが、前記サービスブローカ、システム起動、検出メカニズムおよびユーザーうち1つによって活動化されることを特徴とする請求項1に記載のシステム。
  9. 前記タイムアウト期間が、クエリ登録満了期間を決定するために使用されることを特徴とする請求項4に記載のシステム。
  10. 前記キューが、前記データベースクエリ登録情報の前記少なくとも一部を格納するために、デフォルト、前記データベースクエリ登録情報、確率、統計、ニューラルネットワークおよび適応技術のうち1つに基づいて選択されることを特徴とする請求項4に記載のシステム。
  11. 前記配信アドレスが、前記変更メッセージの宛先を決定するために使用されることを特徴とする請求項4に記載のシステム。
  12. 前記一意の識別子が、データベース変更通知を関連付けられたクライアントコンポーネント(1つまたは複数)に配信するために使用されることを特徴とする請求項4に記載のシステム。
  13. 前記データベース変更通知は、イベント、および、イベントを引き起こすためのフラグのうち少なくとも1つを備えることを特徴とする請求項12に記載のシステム。
  14. 前記変更メッセージは一意の識別子を含むことを特徴とする請求項1に記載のシステム。
  15. 前記データベースクエリ登録情報が、生の変換された問い合わせ可能な結果に関連付けられることを特徴とする請求項4に記載のシステム。
  16. 前記1つまたは複数のキューは、1つまたは複数の宛先に位置する1つまたは複数のコンポーネントからの1つまたは複数のクエリに関連付けられた、データベースクエリ登録情報を格納することを特徴とする請求項1に記載のシステム。
  17. 前記1つまたは複数のキューが、類似のキューの中の類似の結果を戻すための登録済クエリについてのデータベースクエリ登録情報を格納すること、ならびに、類似のキューにおける類似のコンポーネントまたは宛先に関連付けられた登録済クエリについてのデータベースクエリ登録情報を格納することのうち、1つを介した同質の格納のために利用されることを特徴とする請求項1に記載のシステム。
  18. 前記1つまたは複数の通知配信サービスは類似のキューにアクセスすることを特徴とする請求項1に記載のシステム。
  19. 少なくとも1つの通知配信サービスは、データベースクエリ登録情報を有する1つまたは複数のキューに、複数のクライアントからアクセスし、前記少なくとも1つの通知配信サービスは、変更メッセージを前記複数のクライアントにルーティングすることができることを特徴とする請求項1に記載のシステム。
  20. データベースクエリ登録およびメッセージ配信システムであって、
    データベースクエリ登録メッセージおよびデータベース変更要求を受信するためのサーバーと、
    データベースクエリ登録情報利用を実施するためのサービスブローカと、
    前記データベースクエリ登録情報の少なくとも一部を格納するためのキューと、
    前記サービスブローカに対して動作し、前記キューに格納された前記データベースクエリ登録情報の前記少なくとも一部にアクセスして、変更メッセージを構築することができる、通知配信サービスと
    を備えることを特徴とするシステム。
  21. 前記サーバーはSQLベースのサーバーであることを特徴とする請求項20に記載のシステム。
  22. 前記1つまたは複数のデータベースクエリ登録メッセージは、マークアップ言語ベースのファイルを備えることを特徴とする請求項21に記載のシステム。
  23. 前記データベースクエリ登録情報は、少なくとも一意の識別子および配信アドレスを備えることを特徴とする請求項20に記載のシステム。
  24. 前記データベースクエリ登録情報は、キュー名、タイムアウト期間、認証情報、暗号化オプション、配信サービスがアクティブなまま残る時間の長さ、変更が発生した後に前記登録を保持するか除去するかのオプション、および、前記メッセージを前記変更に同期に配信するか非同期に配信するかのオプションのうち、1つまたは複数を備えることを特徴とする請求項20に記載のシステム。
  25. データベース変更検出メカニズムをさらに備えることを特徴とする請求項20に記載のシステム。
  26. 前記キューが、前記データベースクエリ登録情報から抽出されたキュー名の使用、デフォルトキュー名、ユーザー定義のキュー名、およびオプショナルで選択されたキュー名のうち、1つによって決定されることを特徴とする請求項20に記載のシステム。
  27. 前記データベースクエリ登録情報の前記少なくとも一部を前記キューから格納し、続いて前記データベースクエリ登録情報の前記少なくとも一部を前記通知配信サービスに提供するための、中間コンポーネントをさらに備えることを特徴とする請求項20に記載のシステム。
  28. 前記中間コンポーネントはログファイルおよびバッファを備えることを特徴とする請求項27に記載のシステム。
  29. 前記サーバーから外部の、クエリ結果のためのストレージをさらに備えることを特徴とする請求項20に記載のシステム。
  30. 前記外部ストレージはキャッシュを備えることを特徴とする請求項29に記載のシステム。
  31. 1つまたは複数の登録済データベースに関連付けることができ、1つまたは複数のキューにアクセスすることができる、複数の通知配信サービスをさらに備えることを特徴とする請求項20に記載のシステム。
  32. 前記通知配信サービスは前記変更メッセージを、前記データベースの変更要求をコミットするのに先立って、および前記データベース変更要求をコミットすると同時に、および前記データベース変更要求をコミットした後のうち少なくとも1つにおいて送信し、選択される前記送信の技術は、デフォルト、前記データベースクエリ登録情報、および使用情報のうち1つに基づくことを特徴とする請求項20に記載のシステム。
  33. 前記通知配信サービスは、時間の絶対長さ、サービスへのキューエントリの数、および非アクティブ性の期間に基づいた期間に渡ってアクティブであることを特徴とする請求項20に記載のシステム。
  34. 前記期間は、デフォルト、データベースクエリ登録情報、サーバーの負荷、および適応技術のうち1つに基づくことを特徴とする請求項33に記載のシステム。
  35. データベースクエリ登録および通知システムであって、
    データベースクエリの登録を、データベースクエリ登録情報を提供することによって実施するための登録コンポーネントと、
    1つまたは複数の変更メッセージを受信し、データベース変更通知のルーティングを実施するための、通知ランタイムサービスと
    を備えることを特徴とするシステム。
  36. 前記登録コンポーネントは、前記データベースクエリ登録情報を利用して、XMLベースのメッセージを構築することを特徴とする請求項35に記載のシステム。
  37. 前記通知ランタイムサービスは一意の識別子を前記変更メッセージから抽出し、前記一意の識別子を利用して、前記データベース変更通知を関連付けられたコンポーネント(1つまたは複数)に配信することを特徴とする請求項35に記載のシステム。
  38. 前記1つまたは複数のデータベース変更通知は、イベント、および、変更が発生したことを信号で送るためのフラグのうち、少なくとも1つを備えることを特徴とする請求項35に記載のシステム。
  39. データベースクエリ登録、変更メッセージングおよび通知システムであって、
    データベースクエリの登録を実施するための依存性コンポーネントと、
    データベースクエリ登録情報を搬送するためのサービスブローカと、
    前記データベースクエリ登録情報の一部を格納するためのキューと、
    データベース変更が後続のクエリの結果に影響を及ぼすであろう場合に、変更メッセージを提供するための通知配信サービスと
    を備えることを特徴とするシステム。
  40. 前記依存性コンポーネントは、少なくとも1つの登録済クエリに関連付けられたグローバル一意識別子(GUID)を備える登録識別子をさらに提供し、関連付けられた無効化は結果として実質的に類似のクライアントアクション(1つまたは複数)となることを特徴とする請求項39に記載のシステム。
  41. 配信アドレスを前記依存性コンポーネントに提供するための通知ランタイムサービスをさらに含むことを特徴とする請求項39に記載のシステム。
  42. 配信アドレスを前記依存性コンポーネントに提供するためのユニバーサルリスナをさらに含むことを特徴とする請求項41に記載のシステム。
  43. 前記データベースクエリ登録情報は、キュー名、配信アドレス、タイムアウト期間および一意の識別子を備えることを特徴とする請求項39に記載のシステム。
  44. 前記ユニバーサルリスナおよび前記通知ランタイムサービスのうち1つを、部分的にはデフォルト、クライアント機能、データベースクエリ登録情報、構成、統計および適応技術に基づいて選択することを特徴とする請求項42に記載のシステム。
  45. 前記通知ランタイムサービスが前記通知配信サービスに、通信プロトコルを通じて動作可能に結合されることを特徴とする請求項41に記載のシステム。
  46. 前記ユニバーサルリスナが前記通知配信サービスに、通信プロトコルを通じて動作可能に結合されることを特徴とする請求項42に記載のシステム。
  47. 認証証明書を使用して安全なメッセージ送信を提供することをさらに備えることを特徴とする請求項39に記載のシステム。
  48. 前記依存性コンポーネントを前記通知ランタイムサービスに登録することを実施するための、依存性スイッチをさらに備えることを特徴とする請求項41に記載のシステム。
  49. 前記依存性コンポーネントを前記ユニバーサルリスナに登録することを実施するための、依存性リスナをさらに備えることを特徴とする請求項42に記載のシステム。
  50. 前記依存性スイッチがアクティブでなく、データベースクエリを登録するための要求が受信される場合、前記依存性コンポーネントは前記依存性スイッチを開始して、前記通知ランタイムサービスに登録することを特徴とする請求項48に記載のシステム。
  51. 非同期および同期データベース変更コミットメントおよびデータベース変更メッセージ配信を備える技術を使用して、スケーラビリティおよびデータ一貫性を向上させることを特徴とする請求項39に記載のシステム。
  52. データベースに変更がある場合に通知を受信するための方法であって、
    データベースクエリ登録情報をサーバーに提供するステップと、
    前記データベースクエリ登録情報の少なくとも一部をキューに格納するステップと、
    前記データベースクエリ登録情報の前記少なくとも一部を利用して、変更メッセージを構築および送信するステップと
    を備えることを特徴とする方法。
  53. 前記データベースクエリ登録情報は、キュー名、配信アドレス、タイムアウト期間および一意の識別子を備えることを特徴とする請求項52に記載の方法。
  54. 登録済クエリの結果を変更するデータベース変更を検出するステップをさらに備えることを特徴とする請求項52に記載の方法。
  55. サービスブローカを使用して、データベースクエリ登録情報を前記キューに格納するステップ、および通知配信コンポーネントを活動化して前記メッセージを前記キューから処理するステップを実行するステップをさらに備えることを特徴とする請求項52に記載の方法。
  56. 通知配信サービスを使用するステップをさらに備え、前記通知配信サービスは前記データベースクエリ登録情報の少なくとも一部を変更メッセージ内で利用し、前記データベースクエリ登録情報の少なくとも一部を利用して前記変更メッセージを配信することを特徴とする請求項52に記載の方法。
  57. 2つ以上のコンピュータコンポーネントの間で送信されるデータパケットであり、データベースクエリ登録、データベース変更検出およびデータベース変更通知を実施するデータパケットであって、
    データベースクエリ登録情報であって、登録済データベースクエリに関連付けられ、キューに格納され、データベース変更通知をルーティングするために利用される変更メッセージを構築および送信するために使用されるデータベースクエリ登録情報と
    を備えることを特徴とするデータパケット。
  58. データベースクエリ登録、検出および通知システムのコンピュータ実行可能コンポーネントを格納するコンピュータ可読媒体であって、
    データベースクエリ登録情報を格納するためのキューと、
    通知を受信するために登録されたクライアントに通知するために利用される、変更メッセージを送信するための通知配信サービスと、
    前記キューおよび前記通知配信サービスに動作可能に結合されたサービスブローカであって、前記キューにデータベースクエリ登録情報を提供し、前記通知配信サービスを活動化するためのサービスブローカと
    を備えることを特徴とするコンピュータ可読媒体。
  59. データベースクエリを登録するためのシステムであって、
    データベースクエリを登録する手段と、
    登録済クエリの結果を変更するデータベース変更を検出する手段と、
    後続のクエリの結果が以前のクエリからの結果とは異なる可能性があることを示す、変更メッセージを提供する手段と
    を備えることを特徴とするシステム。
JP2004058210A 2003-03-28 2004-03-02 データベース変更通知を要求および受信するためのシステムおよび方法 Ceased JP2004303214A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/402,025 US20040205048A1 (en) 2003-03-28 2003-03-28 Systems and methods for requesting and receiving database change notifications

Publications (2)

Publication Number Publication Date
JP2004303214A true JP2004303214A (ja) 2004-10-28
JP2004303214A5 JP2004303214A5 (ja) 2007-04-19

Family

ID=32825034

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004058210A Ceased JP2004303214A (ja) 2003-03-28 2004-03-02 データベース変更通知を要求および受信するためのシステムおよび方法

Country Status (5)

Country Link
US (1) US20040205048A1 (ja)
EP (1) EP1462958A3 (ja)
JP (1) JP2004303214A (ja)
KR (1) KR20040085056A (ja)
CN (1) CN1534519B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008052542A (ja) * 2006-08-25 2008-03-06 Mitsubishi Electric Corp データベース管理システム

Families Citing this family (91)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7430738B1 (en) 2001-06-11 2008-09-30 Microsoft Corporation Methods and arrangements for routing server requests to worker processes based on URL
US7594230B2 (en) 2001-06-11 2009-09-22 Microsoft Corporation Web server architecture
US7490137B2 (en) 2002-03-22 2009-02-10 Microsoft Corporation Vector-based sending of web content
US7159025B2 (en) * 2002-03-22 2007-01-02 Microsoft Corporation System for selectively caching content data in a server based on gathered information and type of memory in the server
US7962481B2 (en) * 2003-09-04 2011-06-14 Oracle International Corporation Query based invalidation subscription
US20060004794A1 (en) * 2004-06-30 2006-01-05 Microsoft Corporation Rich application view system and method
US7418709B2 (en) * 2004-08-31 2008-08-26 Microsoft Corporation URL namespace to support multiple-protocol processing within worker processes
US7418712B2 (en) * 2004-08-31 2008-08-26 Microsoft Corporation Method and system to support multiple-protocol processing within worker processes
US7418719B2 (en) * 2004-08-31 2008-08-26 Microsoft Corporation Method and system to support a unified process model for handling messages sent in different protocols
US20060085451A1 (en) * 2004-10-15 2006-04-20 Microsoft Corporation Mapping of schema data into data structures
US7617162B2 (en) * 2005-03-04 2009-11-10 Atul Saini Real time push notification in an event driven network
US7765207B2 (en) * 2005-04-29 2010-07-27 Microsoft Corporation Fast rich application view initiation
US20070033247A1 (en) * 2005-08-02 2007-02-08 The Mathworks, Inc. Methods and system for distributing data to technical computing workers
US7543003B2 (en) * 2005-08-25 2009-06-02 Microsoft Corporation Providing change notifications to an entity-regarding a change of a specific type to data in a relational database
US20080086542A1 (en) * 2006-10-04 2008-04-10 Title Resource Group, Llc System and method for communicating document information
US7634459B1 (en) * 2006-11-16 2009-12-15 Precise Software Solutions Ltd. Apparatus, method and computer-code for detecting changes in database-statement execution paths
US8850451B2 (en) * 2006-12-12 2014-09-30 International Business Machines Corporation Subscribing for application messages in a multicast messaging environment
US7836070B2 (en) 2007-04-30 2010-11-16 Sap Ag Automatic event registration during query execution
US7778956B2 (en) * 2007-06-21 2010-08-17 Microsoft Corporation Portal and key management service database schemas
US20090043778A1 (en) * 2007-08-08 2009-02-12 Microsoft Corporation Generating etl packages from template
DE102008004658B4 (de) * 2008-01-16 2010-03-25 Siemens Aktiengesellschaft Verfahren zur zentralen Steuerung von Prozessen in erweiterbaren medizinischen Plattformen
US7979393B2 (en) * 2008-02-22 2011-07-12 Microsoft Corporation Multiphase topology-wide code modifications for peer-to-peer systems
US8185508B2 (en) * 2008-08-08 2012-05-22 Oracle International Corporation Adaptive filter index for determining queries affected by a DML operation
US8037040B2 (en) * 2008-08-08 2011-10-11 Oracle International Corporation Generating continuous query notifications
US8433296B2 (en) 2009-05-01 2013-04-30 Ryan Hardin Exclusive delivery of content within geographic areas
KR101265388B1 (ko) 2009-07-02 2013-05-20 엔에이치엔비즈니스플랫폼 주식회사 고가용성 데이터베이스 관리 시스템 및 이를 이용한 데이터베이스 관리 방법
US9471700B2 (en) * 2010-05-18 2016-10-18 Tksn Holdings, Llc System and method for monitoring changes in databases and websites
EP2596439A4 (en) * 2010-07-22 2015-01-07 Hewlett Packard Development Co SQL enumerator
US9740762B2 (en) 2011-04-01 2017-08-22 Mongodb, Inc. System and method for optimizing data migration in a partitioned database
US10713280B2 (en) 2010-12-23 2020-07-14 Mongodb, Inc. Systems and methods for managing distributed database deployments
US9881034B2 (en) * 2015-12-15 2018-01-30 Mongodb, Inc. Systems and methods for automating management of distributed databases
US11615115B2 (en) 2010-12-23 2023-03-28 Mongodb, Inc. Systems and methods for managing distributed database deployments
US10614098B2 (en) 2010-12-23 2020-04-07 Mongodb, Inc. System and method for determining consensus within a distributed database
US10262050B2 (en) 2015-09-25 2019-04-16 Mongodb, Inc. Distributed database systems and methods with pluggable storage engines
US10346430B2 (en) 2010-12-23 2019-07-09 Mongodb, Inc. System and method for determining consensus within a distributed database
US10977277B2 (en) 2010-12-23 2021-04-13 Mongodb, Inc. Systems and methods for database zone sharding and API integration
US9805108B2 (en) 2010-12-23 2017-10-31 Mongodb, Inc. Large distributed database clustering systems and methods
US8996463B2 (en) 2012-07-26 2015-03-31 Mongodb, Inc. Aggregation framework system architecture and method
US10997211B2 (en) 2010-12-23 2021-05-04 Mongodb, Inc. Systems and methods for database zone sharding and API integration
US11544288B2 (en) 2010-12-23 2023-01-03 Mongodb, Inc. Systems and methods for managing distributed database deployments
US8572031B2 (en) 2010-12-23 2013-10-29 Mongodb, Inc. Method and apparatus for maintaining replica sets
US10366100B2 (en) 2012-07-26 2019-07-30 Mongodb, Inc. Aggregation framework system architecture and method
US10740353B2 (en) 2010-12-23 2020-08-11 Mongodb, Inc. Systems and methods for managing distributed database deployments
US8954364B2 (en) 2011-09-19 2015-02-10 International Business Machines Corporation Hierarchical contexts to drive live sensor applications
US9208244B2 (en) 2011-12-16 2015-12-08 Microsoft Technology Licensing, Llc Referencing change(s) in data utilizing a network resource locator
US8332349B1 (en) * 2012-01-06 2012-12-11 Advent Software, Inc. Asynchronous acid event-driven data processing using audit trail tools for transaction systems
US10754710B1 (en) * 2012-06-20 2020-08-25 Amazon Technologies, Inc. Transactional watch mechanism
US11403317B2 (en) 2012-07-26 2022-08-02 Mongodb, Inc. Aggregation framework system architecture and method
US11544284B2 (en) 2012-07-26 2023-01-03 Mongodb, Inc. Aggregation framework system architecture and method
US10872095B2 (en) 2012-07-26 2020-12-22 Mongodb, Inc. Aggregation framework system architecture and method
WO2014051315A1 (en) * 2012-09-26 2014-04-03 Lg Electronics Inc. Method and apparatus for processing digital service signal
US9183271B2 (en) * 2012-12-04 2015-11-10 Pivotal Software, Inc. Big-fast data connector between in-memory database system and data warehouse system
US8886671B1 (en) 2013-08-14 2014-11-11 Advent Software, Inc. Multi-tenant in-memory database (MUTED) system and method
US10382549B1 (en) 2013-10-28 2019-08-13 Pivotal Software, Inc. Data management platform
US9639544B1 (en) * 2013-10-28 2017-05-02 Pivotal Software, Inc. Table data persistence
US10073904B2 (en) * 2013-11-05 2018-09-11 Verizon Patent And Licensing Inc. Event triggered service for the lightweight directory access protocol
US9852221B1 (en) 2015-03-26 2017-12-26 Amazon Technologies, Inc. Distributed state manager jury selection
US20160316038A1 (en) * 2015-04-21 2016-10-27 Masoud Aghadavoodi Jolfaei Shared memory messaging channel broker for an application server
US10353893B2 (en) 2015-05-14 2019-07-16 Deephaven Data Labs Llc Data partitioning and ordering
US10713275B2 (en) 2015-07-02 2020-07-14 Mongodb, Inc. System and method for augmenting consensus election in a distributed database
US10102239B2 (en) * 2015-07-13 2018-10-16 Sap Se Application event bridge
US10423626B2 (en) 2015-09-25 2019-09-24 Mongodb, Inc. Systems and methods for data conversion and comparison
US10394822B2 (en) 2015-09-25 2019-08-27 Mongodb, Inc. Systems and methods for data conversion and comparison
US10673623B2 (en) 2015-09-25 2020-06-02 Mongodb, Inc. Systems and methods for hierarchical key management in encrypted distributed databases
US10846411B2 (en) 2015-09-25 2020-11-24 Mongodb, Inc. Distributed database systems and methods with encrypted storage engines
US10860568B2 (en) 2016-04-01 2020-12-08 Arista Networks, Inc. External data source linking to queries in memory
US10642844B2 (en) 2016-04-01 2020-05-05 Arista Networks, Inc. Non-materialized tables with standing queries
US10783147B2 (en) * 2016-04-01 2020-09-22 Arista Networks, Inc. Query result flow control in a network switch
US10783144B2 (en) 2016-04-01 2020-09-22 Arista Networks, Inc. Use of null rows to indicate the end of a one-shot query in network switch
US10817512B2 (en) 2016-04-01 2020-10-27 Arista Networks, Inc. Standing queries in memory
US10671496B2 (en) 2016-05-31 2020-06-02 Mongodb, Inc. Method and apparatus for reading and writing committed data
US10621050B2 (en) 2016-06-27 2020-04-14 Mongodb, Inc. Method and apparatus for restoring data from snapshots
US11256572B2 (en) * 2017-01-23 2022-02-22 Honeywell International Inc. Systems and methods for processing data in security systems using parallelism, stateless queries, data slicing, or asynchronous pull mechanisms
US20180350246A1 (en) * 2017-06-05 2018-12-06 X Development Llc Methods and Systems for Sharing an Airspace Wide Unmanned Aircraft System Database Across a Plurality of Service Suppliers
US10866868B2 (en) 2017-06-20 2020-12-15 Mongodb, Inc. Systems and methods for optimization of database operations
EP3422207A1 (en) * 2017-06-27 2019-01-02 Deutsche Telekom AG Method for an enhanced management of configuration information and/or stateful information in a communication network, system, program and computer program product
US10002154B1 (en) 2017-08-24 2018-06-19 Illumon Llc Computer data system data source having an update propagation graph with feedback cyclicality
CN107678856B (zh) * 2017-09-20 2022-04-05 苏宁易购集团股份有限公司 一种处理业务实体中增量信息的方法及装置
US10379985B1 (en) * 2018-02-01 2019-08-13 EMC IP Holding Company LLC Automating and monitoring rolling cluster reboots
CN110858204B (zh) * 2018-08-16 2023-09-19 中国移动通信集团重庆有限公司 查询请求的处理方法、设备和介质
US11249857B2 (en) 2018-10-19 2022-02-15 Netapp, Inc. Methods for managing clusters of a storage system using a cloud resident orchestrator and devices thereof
CN110865845B (zh) * 2019-10-28 2022-07-26 福建天泉教育科技有限公司 提高接口访问效率的方法、存储介质
CN111163127B (zh) * 2019-12-02 2021-12-14 聚好看科技股份有限公司 一种媒资属性推送方法及服务器
CN111400053B (zh) * 2020-03-17 2023-12-15 畅捷通信息技术股份有限公司 数据库访问系统、方法、装置和计算机可读存储介质
JP2022025451A (ja) * 2020-07-29 2022-02-10 富士フイルムビジネスイノベーション株式会社 情報処理装置及びプログラム
US11966959B2 (en) 2020-09-23 2024-04-23 International Business Machines Corporation Subscription of marketplace content based on search queries
CN112865311B (zh) * 2021-01-15 2022-11-01 北京科东电力控制系统有限责任公司 一种电力系统消息总线监视方法和装置
CN112839110B (zh) * 2021-03-05 2023-03-10 紫光云技术有限公司 一种分布式系统中基于网络超时的问题处理的实现方法
CN113535782B (zh) * 2021-07-22 2024-05-07 成都数之联科技股份有限公司 一种bi报表查询响应方法、系统、电子设备及计算机可读存储介质
CN114189591A (zh) * 2021-11-29 2022-03-15 中国联合网络通信集团有限公司 无效终端设备的核查方法、装置和计算机可读介质
CN115600567B (zh) * 2022-10-14 2023-08-11 安芯网盾(北京)科技有限公司 一种报表导出方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0736763A (ja) * 1993-07-20 1995-02-07 Yokogawa Electric Corp データベース管理装置
JPH09282210A (ja) * 1996-04-15 1997-10-31 Hitachi Ltd データベース監視方法及びそのシステム
WO2001086425A2 (en) * 2000-05-09 2001-11-15 Sun Microsystems, Inc. Mechanism and apparatus for returning results of services in a distributed computing environment
JP2002175420A (ja) * 2000-09-29 2002-06-21 Fuji Ginkou:Kk 情報提供モジュール、情報提供システム、情報提供方法及び情報提供エージェントプログラム

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5592664A (en) * 1991-07-29 1997-01-07 Borland International Inc. Database server system with methods for alerting clients of occurrence of database server events of interest to the clients
US5721825A (en) * 1996-03-15 1998-02-24 Netvision, Inc. System and method for global event notification and delivery in a distributed computing environment
US5897634A (en) * 1997-05-09 1999-04-27 International Business Machines Corporation Optimized caching of SQL data in an object server system
US6026413A (en) * 1997-08-01 2000-02-15 International Business Machines Corporation Determining how changes to underlying data affect cached objects
US6073129A (en) * 1997-12-29 2000-06-06 Bull Hn Information Systems Inc. Method and apparatus for improving the performance of a database management system through a central cache mechanism
US6493720B1 (en) * 1998-01-26 2002-12-10 International Business Machines Corporation Method and system for synchronization of metadata in an information catalog
EP0959416A3 (en) * 1998-05-08 2005-08-10 International Business Machines Corporation Using database query technology for message subscriptions in messaging systems
US6167448A (en) * 1998-06-11 2000-12-26 Compaq Computer Corporation Management event notification system using event notification messages written using a markup language
US6266690B1 (en) * 1999-01-27 2001-07-24 Adc Telecommunications, Inc. Enhanced service platform with secure system and method for subscriber profile customization
US6275819B1 (en) * 1999-03-16 2001-08-14 Novell, Inc. Method and apparatus for characterizing and retrieving query results
US6339772B1 (en) * 1999-07-06 2002-01-15 Compaq Computer Corporation System and method for performing database operations on a continuous stream of tuples
US6405191B1 (en) * 1999-07-21 2002-06-11 Oracle Corporation Content based publish-and-subscribe system integrated in a relational database system
US6910070B1 (en) * 2000-01-24 2005-06-21 Oracle International Corporation Methods and systems for asynchronous notification of database events
CN1146821C (zh) * 2000-02-21 2004-04-21 国际商业机器公司 面向用户的数据库查询方法及系统
GB2361555A (en) * 2000-04-17 2001-10-24 Apama Inc Method of evaluating queries against received event information
US6799208B1 (en) * 2000-05-02 2004-09-28 Microsoft Corporation Resource manager architecture
US7228416B2 (en) * 2001-01-26 2007-06-05 Hitachi, Ltd. Database access method and system capable of concealing the contents of query
US6996584B2 (en) * 2002-05-14 2006-02-07 Pervasive Software, Inc. System and method of maintaining functional client side data cache coherence

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0736763A (ja) * 1993-07-20 1995-02-07 Yokogawa Electric Corp データベース管理装置
JPH09282210A (ja) * 1996-04-15 1997-10-31 Hitachi Ltd データベース監視方法及びそのシステム
WO2001086425A2 (en) * 2000-05-09 2001-11-15 Sun Microsystems, Inc. Mechanism and apparatus for returning results of services in a distributed computing environment
JP2002175420A (ja) * 2000-09-29 2002-06-21 Fuji Ginkou:Kk 情報提供モジュール、情報提供システム、情報提供方法及び情報提供エージェントプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008052542A (ja) * 2006-08-25 2008-03-06 Mitsubishi Electric Corp データベース管理システム

Also Published As

Publication number Publication date
CN1534519B (zh) 2011-05-25
CN1534519A (zh) 2004-10-06
US20040205048A1 (en) 2004-10-14
KR20040085056A (ko) 2004-10-07
EP1462958A3 (en) 2004-12-08
EP1462958A2 (en) 2004-09-29

Similar Documents

Publication Publication Date Title
JP2004303214A (ja) データベース変更通知を要求および受信するためのシステムおよび方法
US7836031B2 (en) Systems and methods for employing a trigger-based mechanism to detect a database table change and registering to receive notification of the change
US8452925B2 (en) System, method and computer program product for automatically updating content in a cache
US9448932B2 (en) System for caching data
US8051179B2 (en) Distributed session failover
US7472349B1 (en) Dynamic services infrastructure for allowing programmatic access to internet and other resources
US7509404B2 (en) Methods and systems for partial page caching of dynamically generated content
US7899991B2 (en) Method and system for an extensible caching framework
US20140344341A1 (en) Systems and methods for caching and serving dynamic content
US20040193656A1 (en) Systems and methods for caching and invalidating database results and derived objects
US8250032B2 (en) Optimizing publish/subscribe matching for non-wildcarded topics
US20080154940A1 (en) System and method for using xquery files as a middleware to provide web services
US20130179791A1 (en) System and method for real-time data in a graphical user interface
US7793113B2 (en) Guaranteed deployment of applications to nodes in an enterprise
US8127304B2 (en) Mapping and communicating data from a user interface to an application program
CA2845932C (en) Method and system for registering software systems in data-sharing sessions
US7328222B2 (en) Method and apparatus for preserving data coherency in a database by generating a command object that includes instructions for writing a data record to a local cache
US10673953B2 (en) Transport channel via web socket for OData
US20030115243A1 (en) Distributed process execution system and method
US10313433B2 (en) Method and system for registering software systems and data-sharing sessions
US20220300478A1 (en) Competing updates from multiple servicing instances
JPH11232294A (ja) Wwwシステムおよびwwwシステムにおけるセッション管理方法
US11704173B1 (en) Streaming machine learning platform
US20230376628A1 (en) Privacy Manager for Connected TV and Over-the-Top Applications
US11743280B1 (en) Identifying clusters with anomaly detection

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070302

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070302

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091009

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100512

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100625

A045 Written measure of dismissal of application [lapsed due to lack of payment]

Free format text: JAPANESE INTERMEDIATE CODE: A045

Effective date: 20101022