(57)【要約】【課題】  登録済データベースクエリからの後続のクエリの結果がデータベース変更により変更する場合に、通知を提供するためのシステムおよび方法を提供する。【解決手段】  システムおよび方法はサービスブローカを使用して、登録済データベースクエリに関連付けられたデータベースクエリ登録情報をキューに格納すること、および、通知配信サービスを活動化することを実施する。活動化期間中に、通知配信サービスはキューにアクセスして、データベースクエリ登録情報を得る。次いで、通知配信サービスは、変更メッセージを構築および送信する。【選択図】  図１
2004303214.tif 000002
【特許請求の範囲】
【請求項１】
データベースクエリ登録情報を受信するためのサービスブローカと、
前記データベースクエリ登録情報の少なくとも一部を格納するための１つまたは複数のキューと、
変更メッセージを送信するための１つまたは複数の通知配信サービスと
を備えることを特徴とするデータベース変更通知システム。
【請求項２】
ＳＱＬ環境内で使用されることを特徴とする請求項１に記載のシステム。
【請求項３】
前記サービスブローカは、クライアントおよびサーバーのうち一方において存在することを特徴とする請求項１に記載のシステム。
【請求項４】
前記データベースクエリ登録情報は、一意の識別子、配信アドレス、キュー名、タイムアウト期間、通信オプション、プロトコル、ポート、認証情報、セキュリティオプションおよび暗号化情報のうち少なくとも１つを備えることを特徴とする請求項１に記載のシステム。
【請求項５】
前記１つまたは複数のキューは前記サービスブローカ内に位置することを特徴とする請求項１に記載のシステム。
【請求項６】
前記サービスブローカはデータベースであることを特徴とする請求項１に記載のシステム。
【請求項７】
前記１つまたは複数のキューに格納された前記データベースクエリ登録情報の前記少なくとも一部は、一意の識別子および配信アドレスを備えることを特徴とする請求項１に記載のシステム。
【請求項８】
前記通知配信サービスが、前記サービスブローカ、システム起動、検出メカニズムおよびユーザーうち１つによって活動化されることを特徴とする請求項１に記載のシステム。
【請求項９】
前記タイムアウト期間が、クエリ登録満了期間を決定するために使用されることを特徴とする請求項４に記載のシステム。
【請求項１０】
前記キューが、前記データベースクエリ登録情報の前記少なくとも一部を格納するために、デフォルト、前記データベースクエリ登録情報、確率、統計、ニューラルネットワークおよび適応技術のうち１つに基づいて選択されることを特徴とする請求項４に記載のシステム。
【請求項１１】
前記配信アドレスが、前記変更メッセージの宛先を決定するために使用されることを特徴とする請求項４に記載のシステム。
【請求項１２】
前記一意の識別子が、データベース変更通知を関連付けられたクライアントコンポーネント（１つまたは複数）に配信するために使用されることを特徴とする請求項４に記載のシステム。
【請求項１３】
前記データベース変更通知は、イベント、および、イベントを引き起こすためのフラグのうち少なくとも１つを備えることを特徴とする請求項１２に記載のシステム。
【請求項１４】
前記変更メッセージは一意の識別子を含むことを特徴とする請求項１に記載のシステム。
【請求項１５】
前記データベースクエリ登録情報が、生の変換された問い合わせ可能な結果に関連付けられることを特徴とする請求項４に記載のシステム。
【請求項１６】
前記１つまたは複数のキューは、１つまたは複数の宛先に位置する１つまたは複数のコンポーネントからの１つまたは複数のクエリに関連付けられた、データベースクエリ登録情報を格納することを特徴とする請求項１に記載のシステム。
【請求項１７】
前記１つまたは複数のキューが、類似のキューの中の類似の結果を戻すための登録済クエリについてのデータベースクエリ登録情報を格納すること、ならびに、類似のキューにおける類似のコンポーネントまたは宛先に関連付けられた登録済クエリについてのデータベースクエリ登録情報を格納することのうち、１つを介した同質の格納のために利用されることを特徴とする請求項１に記載のシステム。
【請求項１８】
前記１つまたは複数の通知配信サービスは類似のキューにアクセスすることを特徴とする請求項１に記載のシステム。
【請求項１９】
少なくとも１つの通知配信サービスは、データベースクエリ登録情報を有する１つまたは複数のキューに、複数のクライアントからアクセスし、前記少なくとも１つの通知配信サービスは、変更メッセージを前記複数のクライアントにルーティングすることができることを特徴とする請求項１に記載のシステム。
【請求項２０】
データベースクエリ登録およびメッセージ配信システムであって、
データベースクエリ登録メッセージおよびデータベース変更要求を受信するためのサーバーと、
データベースクエリ登録情報利用を実施するためのサービスブローカと、
前記データベースクエリ登録情報の少なくとも一部を格納するためのキューと、
前記サービスブローカに対して動作し、前記キューに格納された前記データベースクエリ登録情報の前記少なくとも一部にアクセスして、変更メッセージを構築することができる、通知配信サービスと
を備えることを特徴とするシステム。
【請求項２１】
前記サーバーはＳＱＬベースのサーバーであることを特徴とする請求項２０に記載のシステム。
【請求項２２】
前記１つまたは複数のデータベースクエリ登録メッセージは、マークアップ言語ベースのファイルを備えることを特徴とする請求項２１に記載のシステム。
【請求項２３】
前記データベースクエリ登録情報は、少なくとも一意の識別子および配信アドレスを備えることを特徴とする請求項２０に記載のシステム。
【請求項２４】
前記データベースクエリ登録情報は、キュー名、タイムアウト期間、認証情報、暗号化オプション、配信サービスがアクティブなまま残る時間の長さ、変更が発生した後に前記登録を保持するか除去するかのオプション、および、前記メッセージを前記変更に同期に配信するか非同期に配信するかのオプションのうち、１つまたは複数を備えることを特徴とする請求項２０に記載のシステム。
【請求項２５】
データベース変更検出メカニズムをさらに備えることを特徴とする請求項２０に記載のシステム。
【請求項２６】
前記キューが、前記データベースクエリ登録情報から抽出されたキュー名の使用、デフォルトキュー名、ユーザー定義のキュー名、およびオプショナルで選択されたキュー名のうち、１つによって決定されることを特徴とする請求項２０に記載のシステム。
【請求項２７】
前記データベースクエリ登録情報の前記少なくとも一部を前記キューから格納し、続いて前記データベースクエリ登録情報の前記少なくとも一部を前記通知配信サービスに提供するための、中間コンポーネントをさらに備えることを特徴とする請求項２０に記載のシステム。
【請求項２８】
前記中間コンポーネントはログファイルおよびバッファを備えることを特徴とする請求項２７に記載のシステム。
【請求項２９】
前記サーバーから外部の、クエリ結果のためのストレージをさらに備えることを特徴とする請求項２０に記載のシステム。
【請求項３０】
前記外部ストレージはキャッシュを備えることを特徴とする請求項２９に記載のシステム。
【請求項３１】
１つまたは複数の登録済データベースに関連付けることができ、１つまたは複数のキューにアクセスすることができる、複数の通知配信サービスをさらに備えることを特徴とする請求項２０に記載のシステム。
【請求項３２】
前記通知配信サービスは前記変更メッセージを、前記データベースの変更要求をコミットするのに先立って、および前記データベース変更要求をコミットすると同時に、および前記データベース変更要求をコミットした後のうち少なくとも１つにおいて送信し、選択される前記送信の技術は、デフォルト、前記データベースクエリ登録情報、および使用情報のうち１つに基づくことを特徴とする請求項２０に記載のシステム。
【請求項３３】
前記通知配信サービスは、時間の絶対長さ、サービスへのキューエントリの数、および非アクティブ性の期間に基づいた期間に渡ってアクティブであることを特徴とする請求項２０に記載のシステム。
【請求項３４】
前記期間は、デフォルト、データベースクエリ登録情報、サーバーの負荷、および適応技術のうち１つに基づくことを特徴とする請求項３３に記載のシステム。
【請求項３５】
データベースクエリ登録および通知システムであって、
データベースクエリの登録を、データベースクエリ登録情報を提供することによって実施するための登録コンポーネントと、
１つまたは複数の変更メッセージを受信し、データベース変更通知のルーティングを実施するための、通知ランタイムサービスと
を備えることを特徴とするシステム。
【請求項３６】
前記登録コンポーネントは、前記データベースクエリ登録情報を利用して、ＸＭＬベースのメッセージを構築することを特徴とする請求項３５に記載のシステム。
【請求項３７】
前記通知ランタイムサービスは一意の識別子を前記変更メッセージから抽出し、前記一意の識別子を利用して、前記データベース変更通知を関連付けられたコンポーネント（１つまたは複数）に配信することを特徴とする請求項３５に記載のシステム。
【請求項３８】
前記１つまたは複数のデータベース変更通知は、イベント、および、変更が発生したことを信号で送るためのフラグのうち、少なくとも１つを備えることを特徴とする請求項３５に記載のシステム。
【請求項３９】
データベースクエリ登録、変更メッセージングおよび通知システムであって、
データベースクエリの登録を実施するための依存性コンポーネントと、
データベースクエリ登録情報を搬送するためのサービスブローカと、
前記データベースクエリ登録情報の一部を格納するためのキューと、
データベース変更が後続のクエリの結果に影響を及ぼすであろう場合に、変更メッセージを提供するための通知配信サービスと
を備えることを特徴とするシステム。
【請求項４０】
前記依存性コンポーネントは、少なくとも１つの登録済クエリに関連付けられたグローバル一意識別子（ＧＵＩＤ）を備える登録識別子をさらに提供し、関連付けられた無効化は結果として実質的に類似のクライアントアクション（１つまたは複数）となることを特徴とする請求項３９に記載のシステム。
【請求項４１】
配信アドレスを前記依存性コンポーネントに提供するための通知ランタイムサービスをさらに含むことを特徴とする請求項３９に記載のシステム。
【請求項４２】
配信アドレスを前記依存性コンポーネントに提供するためのユニバーサルリスナをさらに含むことを特徴とする請求項４１に記載のシステム。
【請求項４３】
前記データベースクエリ登録情報は、キュー名、配信アドレス、タイムアウト期間および一意の識別子を備えることを特徴とする請求項３９に記載のシステム。
【請求項４４】
前記ユニバーサルリスナおよび前記通知ランタイムサービスのうち１つを、部分的にはデフォルト、クライアント機能、データベースクエリ登録情報、構成、統計および適応技術に基づいて選択することを特徴とする請求項４２に記載のシステム。
【請求項４５】
前記通知ランタイムサービスが前記通知配信サービスに、通信プロトコルを通じて動作可能に結合されることを特徴とする請求項４１に記載のシステム。
【請求項４６】
前記ユニバーサルリスナが前記通知配信サービスに、通信プロトコルを通じて動作可能に結合されることを特徴とする請求項４２に記載のシステム。
【請求項４７】
認証証明書を使用して安全なメッセージ送信を提供することをさらに備えることを特徴とする請求項３９に記載のシステム。
【請求項４８】
前記依存性コンポーネントを前記通知ランタイムサービスに登録することを実施するための、依存性スイッチをさらに備えることを特徴とする請求項４１に記載のシステム。
【請求項４９】
前記依存性コンポーネントを前記ユニバーサルリスナに登録することを実施するための、依存性リスナをさらに備えることを特徴とする請求項４２に記載のシステム。
【請求項５０】
前記依存性スイッチがアクティブでなく、データベースクエリを登録するための要求が受信される場合、前記依存性コンポーネントは前記依存性スイッチを開始して、前記通知ランタイムサービスに登録することを特徴とする請求項４８に記載のシステム。
【請求項５１】
非同期および同期データベース変更コミットメントおよびデータベース変更メッセージ配信を備える技術を使用して、スケーラビリティおよびデータ一貫性を向上させることを特徴とする請求項３９に記載のシステム。
【請求項５２】
データベースに変更がある場合に通知を受信するための方法であって、
データベースクエリ登録情報をサーバーに提供するステップと、
前記データベースクエリ登録情報の少なくとも一部をキューに格納するステップと、
前記データベースクエリ登録情報の前記少なくとも一部を利用して、変更メッセージを構築および送信するステップと
を備えることを特徴とする方法。
【請求項５３】
前記データベースクエリ登録情報は、キュー名、配信アドレス、タイムアウト期間および一意の識別子を備えることを特徴とする請求項５２に記載の方法。
【請求項５４】
登録済クエリの結果を変更するデータベース変更を検出するステップをさらに備えることを特徴とする請求項５２に記載の方法。
【請求項５５】
サービスブローカを使用して、データベースクエリ登録情報を前記キューに格納するステップ、および通知配信コンポーネントを活動化して前記メッセージを前記キューから処理するステップを実行するステップをさらに備えることを特徴とする請求項５２に記載の方法。
【請求項５６】
通知配信サービスを使用するステップをさらに備え、前記通知配信サービスは前記データベースクエリ登録情報の少なくとも一部を変更メッセージ内で利用し、前記データベースクエリ登録情報の少なくとも一部を利用して前記変更メッセージを配信することを特徴とする請求項５２に記載の方法。
【請求項５７】
２つ以上のコンピュータコンポーネントの間で送信されるデータパケットであり、データベースクエリ登録、データベース変更検出およびデータベース変更通知を実施するデータパケットであって、
データベースクエリ登録情報であって、登録済データベースクエリに関連付けられ、キューに格納され、データベース変更通知をルーティングするために利用される変更メッセージを構築および送信するために使用されるデータベースクエリ登録情報と
を備えることを特徴とするデータパケット。
【請求項５８】
データベースクエリ登録、検出および通知システムのコンピュータ実行可能コンポーネントを格納するコンピュータ可読媒体であって、
データベースクエリ登録情報を格納するためのキューと、
通知を受信するために登録されたクライアントに通知するために利用される、変更メッセージを送信するための通知配信サービスと、
前記キューおよび前記通知配信サービスに動作可能に結合されたサービスブローカであって、前記キューにデータベースクエリ登録情報を提供し、前記通知配信サービスを活動化するためのサービスブローカと
を備えることを特徴とするコンピュータ可読媒体。
【請求項５９】
データベースクエリを登録するためのシステムであって、
データベースクエリを登録する手段と、
登録済クエリの結果を変更するデータベース変更を検出する手段と、
後続のクエリの結果が以前のクエリからの結果とは異なる可能性があることを示す、変更メッセージを提供する手段と
を備えることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にデータベースに関し、より詳細には、データベース変更通知を受信するためにデータベースクエリを登録し、変更された登録済データベースクエリの結果を示すデータベース変更メッセージを配信するためのシステムおよび方法に関する。
【背景技術】
【０００２】
コンピューティング技術およびネットワーキング技術は、日常生活の多くの重要な面を変えてきた。コンピュータは、豪華な教材および／またはエンターテインメントセンターの代わりに家庭の主要品となり、資金を管理および予測し、暖房、冷房、照明およびセキュリティのような家庭運営をコントロールし、記録およびイメージを持続的で信頼性のある媒体に記憶するためのツールをユーザーに提供する。インターネットのようなネットワーキング技術はユーザーに、リモートのシステム、情報および関連アプリケーションへの実質的に無制限のアクセスを提供する。
【０００３】
従来のビジネス慣例は、コンピューティングおよびネットワーキング技術と共に進化しつつある。例えば、従来の銀行取引には、銀行口座番号、通帳および識別などの情報を収集すること、銀行に行くために時間を割くこと、交通手段を調達すること、列に並んで待つこと、および、窓口係を利用して銀行取引を実施することが含まれる可能性がある。今日、消費者は自分の口座にインターネットを介してアクセスし、残高照会、資金振替、および請求書の支払いなど、ますます増加する使用可能な取引を、マウスボタンをクリックすることによって行なうことができる。
【０００４】
コンピューティングおよびネットワーキング技術が頑強に、安全になり、信頼性が高まるにつれて、より多くの消費者、卸売業者、小売業者、企業家、教育機関、権利擁護団体などがパラダイムをシフトし、ビジネスを行なうために従来の手段の代わりにインターネットを使用しつつある。例えば、多くの会社および消費者は、（例えば、食料および衣類の購入、情報の探索、電子メールの送信およびインタラクティブゲームのプレイのための）ウェブサイトおよび／またはオンラインサービスを提供している。もう１つの例では、株式市場ウェブサイトはユーザーに、株価を検索して株式を購入するためのツールを提供することができる。
【０００５】
通常、ユーザーは、クライアントアプリケーション（例えば、ウェブページ）とインターフェースを取り、クライアントアプリケーションからアクセス可能であるデータベースに情報を格納するサーバーと対話する。データベースは、データのための持続的で永続性のあるストアを提供し、このデータを多数のユーザーおよびアプリケーション中で共有することができる。クライアントアプリケーションは一般にデータをデータベースから、クエリを通じて検索し、クエリは、アプリケーションにとって関心のあるデータのサブセットを含む結果を戻す。次いで、アプリケーションは、これらの結果を消費し、表示し、変換し、格納し、あるいはこれらに作用し、検索された結果に基づいて変更を提出することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
結果が検索された後、変更がデータベース内のデータに行なわれ、この変更が、以前に検索された結果をデータベース内の状態と矛盾してレンダリングする可能性がある。このような変更は一般に、以前の検索結果を保持するクライアントにとって、クライアントが要求をデータベースに再提出するまで明らかではない。
【０００７】
以下で、本発明のいくつかの態様の基本的理解を提供するために、本発明の簡単な概要を提示する。この概要は本発明の広範な概要ではない。本発明の主要／重要な要素を識別すること、または本発明の範囲を線引きすることは意図されない。その唯一の目的は、本発明のいくつかの概念を簡単な形態で、後に提示するより詳細な説明への前置きとして提示することである。
【０００８】
本発明は、登録時のクエリの結果をデータベースの現在の状態と矛盾してレンダリングするデータベース変更が発生する場合に通知を受信するために、データベースクエリを登録するためのシステムおよび方法に関する。
【課題を解決するための手段】
【０００９】
従来、ユーザー要求はデータベースクエリを開始して、要求を履行するデータをデータベースから検索することができる。多くの場合、データベースはリソース競合の一般的な原因となる可能性がある。例えば、複数のユーザーが、同時にデータベースに類似の結果について問い合わせる要求を送信する可能性がある。次いで、データベースは、これらのユーザーの間で共有される状態を表す。共有状態競合は、システムおよび／またはアーキテクチャのスケーラビリティを制限する可能性がある。他の場合では、ユーザーは頻繁な類似の要求をデータベース上で行なう可能性がある。例えば、ユーザーはアプリケーションおよび／またはウェブページによって表示されたデータを定期的にリフレッシュするために、マウスクリックを連続して実行して、類似の要求をデータベース上で開始する可能性があり、および／または、アプリケーションはクエリをデータベースに対して定期的に発行して、データベースの状態が変化しているかどうかを判断する可能性がある。連続データベースクエリは、例えば、時間がかかり、帯域幅を低減し、パフォーマンスを低下させ、リソースを消費する可能性がある。
【００１０】
（例えば、１つまたは複数のユーザーを介した）クエリの数を減らすために使用される従来の技術は、頻繁に利用されるデータをデータベース外部で保存することを備える。次いで、ユーザーは、連続クエリを実行する代わりに保存データを利用することができる。しかし、保存データの一貫性および正確さは損なわれ、これは、後続のデータベース変更が発生して、保存データを、ユーザーに知られていない（変更されたデータベース内の）現在のデータと矛盾してレンダリングする可能性があるからである。
【００１１】
一態様によれば、本発明のシステムおよび方法は、データベースの負荷を軽減し（例えば、クエリを軽減し）、スケーラビリティを増大させ、データの一貫性を保証する。例えば、１つまたは複数のユーザーはデータベースクエリを提出し、データベース変更が登録済データベースクエリの結果を変更する（あるいは変更するであろう）場合に通知を受信するために、データベースクエリを登録することができる。
【００１２】
実際には、クエリの結果をデータベース外部（例えば、キャッシュ内またはウェブサーバー上）に保存し、ユーザーによって利用することができ、これにおいてユーザーは、類似の結果を戻す追加のクエリを実行するのではなく、保存結果を複数回使用することができる。後続のクエリの結果を保存結果に矛盾してレンダリングするデータベース変更が発生する場合、保存結果が矛盾するようになったことを示す通知をユーザーに送信することができる。次いで、ユーザーはこの通知を利用して、例えば、保存データを無効化し、クエリを実行して保存データをリフレッシュし、および／または通知を無視することができる。
【００１３】
本発明は、データベースクエリを登録し、クエリ登録情報を維持し、登録済データベースクエリに影響を及ぼすデータベース変更を検出し、登録済データベースクエリが影響を受けていることを示すメッセージを提供するためのシステムおよび方法を含む。例えば、データベース変更通知を受信するための登録は一般に、データベースクエリ登録情報を組み立て、サーバーに提供することを備える。データベース状態を以前の結果に矛盾してレンダリングするデータベース変更が発生する場合、関連付けられたデータベースクエリ登録情報は、メッセージ配信サービスでアクセス可能となる。配信サービスはデータベースクエリ登録情報を利用して、変更メッセージを構築および送信する。変更メッセージが使用されて、以前の結果が無効になっていることをコンポーネントに通知するために、変更通知を、登録済クエリの結果に関連付けられたコンポーネントにルーティングすることが実施される。
【００１４】
このシステムおよび方法を様々な環境内で実施することができ、これにはクライアント−サーバー環境（例えば、ＳＱＬベース）およびウェブ環境が含まれる。したがって、本発明は、データベースクエリを変更について監視し、登録済クエリの結果が変更する場合に通知されるようにする手段を提供する。前述は、ユーザーがデータベースから検索された保存データを利用中であり、また、保存データが矛盾するようになる場合、ユーザーに表示されているデータをリフレッシュする必要がある場合、および／または、変更された結果に基づいてアクションが取られるべきである場合、通知されることを望む場合に有利となる可能性がある。加えて、本発明を既存のアーキテクチャと共に使用して、セキュリティ、信頼性およびスケーラビリティを活用し、よく知られているプログラミング環境を提供することができる。
【００１５】
前述および関係する目的の実施のために、本発明は、以下で十分に説明し、特許請求の範囲で特に示す特徴を備える。以下の説明および添付の図面はより詳細に、本発明のある例示的態様および実施態様を示す。しかし、これらは、本発明の原理を実施することができる様々な方法の少数を示す。本発明の他の目的、利点および新規な特徴は、以下の本発明の詳細な説明を図面と共に考慮する場合に明らかになるであろう。
【発明を実施するための最良の形態】
【００１６】
本発明をここで、図面を参照して説明し、図面においては類似の参照番号を使用して、全体に渡って類似の要素を指す。以下の説明では、説明のため、本発明の十分な理解を提供するために多数の具体的な詳細を示す。しかし、本発明をこれらの具体的な詳細なしに実施できることは、明らかになるであろう。他の場合、周知の構造およびデバイスを、本発明の説明を実施するためにブロック図の形式で示す。
【００１７】
本出願で使用される場合、「コンポーネント」という用語は、コンピュータ関係のエンティティで、ハードウェア、ハードウェアおよびソフトウェアの組み合わせ、ソフトウェアまたは実行中のソフトウェアのどれを指すようにも意図されている。例えば、コンポーネントは、それだけに限定されないが、プロセッサ上で実行するプロセス、プロセッサ、オブジェクト、実行可能物、実行のスレッド、プログラムおよび／またはコンピュータとすることができる。例として、サーバー上で実行中のアプリケーションおよびサーバーをコンピュータコンポーネントとすることができる。１つまたは複数のコンポーネントは、プロセスおよび／または実行のスレッド内に存在することができ、コンポーネントを１つのコンピュータ上でローカライズし、および／または、２つ以上のコンピュータの間で分散させることができる。「スレッド」は、プロセス内で、オペレーティングシステムカーネルが実行のためにスケジュールするエンティティである。当技術分野で周知のように、各スレッドは関連付けられた「コンテキスト」を有し、これはスレッドの実行に関連付けられた揮発性データである。スレッドのコンテキストには、システムレジスタの内容、およびスレッドのプロセスに属する仮想アドレスが含まれる。したがって、スレッドのコンテキストを備える実際のデータは、実行時に変わる。
【００１８】
本発明は、データベース変更が登録済データベースクエリの結果に影響を及ぼすであろう場合に通知を提供するための、システムおよび方法に関する。このシステムおよび方法は通常、サービスブローカを使用して、データベースクエリ登録情報の搬送およびデータベース変更メッセージの送信を実施し、キューを使用して、サービスブローカからのデータベースクエリ登録情報を格納し、通知配信サービスを使用してデータベース変更メッセージを送信する。このシステムおよび方法はオプショナルで、登録要求を受信するため、登録メッセージを組み立てるため、登録メッセージを送信するため、データベース変更を検出するため、データベース変更メッセージを受信するため、およびデータベース変更通知を提供するための様々なメカニズムを使用する。
【００１９】
図１を参照して、本発明の一態様による例示的データベース変更メッセージ配信システム１００（以下、システム１００）を例示する。システム１００は、データベースクエリ登録情報の転送を実施するためのサービスブローカ１１０と、サービスブローカ１１０に提供されたデータベースクエリ登録情報を格納するための第１のキュー１２０１からＮ番目のキュー１２０Ｎとを備え、ただしＮは１以上の整数であり、さらに、変更メッセージを少なくとも部分的にはデータベースクエリ登録情報に基づいて送信するための通知配信サービス１３０を備える。第１のキュー１２０１からＮ番目のキュー１２０Ｎを総称して、キュー１２０と称することができる。
【００２０】
一般に、コンポーネント（例えば、クライアント、ユーザーおよびアプリケーション）は、データベースクエリを、システム１００を使用するシステムに登録（例えば、サブスクライブ）することができる。クエリ登録は通常、データベースクエリ登録情報をクエリ結果についての要求と共に、および／またはそれとは別に提供することを含む。データベースクエリ登録情報は、例えば、一意の識別子、配信アドレス、キュー名、タイムアウト期間および様々な通信およびセキュリティオプションを含むことができる。クエリ登録を、登録済クエリの後続の実行で異なる結果が戻される場合に変更メッセージ（例えば、無効化メッセージ）を受信するために、使用することができる。例えば、クエリを登録した後、クエリによって戻された結果を変更するであろうデータベース変更は、変更メッセージを呼び出す。変更メッセージを呼び出す通常のデータベース変更の例には、挿入、更新および削除、ならびにスキーマ変更が含まれる。満了期間（例えば、登録情報に含まれたタイムアウト期間のようなタイムアウト期間）および／または他の基準を追加で使用できることを理解されたい。例えば、データベースクエリの登録は、登録から「Ｘ」秒後に変更メッセージが呼び出されるような、満了期間を提供することを含むことができる。
【００２１】
データベース変更が発生し、登録済クエリを利用する後続の要求が異なる結果を戻す場合、データベースクエリ登録情報がサービスブローカ１１０に提供される。加えて、他の情報、例えば、通知の原因を説明する情報を逐次および／または同時にサービスブローカ１１０に提供することができる。サービスブローカ１１０は逐次および／または同時に、データベースクエリ登録情報の少なくとも一部をキュー１２０の１つに提供し、サービスブローカ１１０および／またはキュー１２０は通知配信サービス１３０を呼び出す。通知配信サービス１３０の呼び出しは、通知配信サービス１３０がすでにアクティブでない場合にこれを活動化することを含む。活動化された通知配信サービス１３０はキュー１２０にアクセスし、その中に格納されたデータベースクエリ登録情報を利用して変更メッセージを構築し、データベースクエリを登録したコンポーネントに送信することができる。上述のように、変更メッセージは通常、後続のクエリが矛盾する結果を戻すことを示す。
【００２２】
後述のように、１つまたは複数のコンポーネントが１つまたは複数のデータベースクエリを登録する可能性があり、１つまたは複数のデータベースクエリが類似の結果を戻す可能性があることを理解されたい。さらに、いかなるキュー１２０も、１つまたは複数のコンポーネントおよび／または１つまたは複数のクエリについてのデータベースクエリ登録情報を格納できることを理解されたい。前述はキュー１２０の間の同質の格納を可能にする。例えば、本発明の一態様では、類似の結果を戻すクエリについてのデータベースクエリ登録情報を、類似のキューに格納することができる。したがって、類似の結果を戻すクエリに関連付けられた変更メッセージを受信するために登録されたコンポーネントについてのデータベースクエリ登録情報を、キューによってグループ化することができる。本発明のもう１つの態様では、類似のコンポーネントに関連付けられたデータベースクエリ登録情報（例えば、１つまたは複数のクエリについての情報）を、類似のキューに格納することができる。したがって、データベースクエリ登録情報を、コンポーネントを介してグループ化することもできる。しかし、同質でない格納も利用できることを理解されたい。加えて、データベースクエリ登録情報を格納するために利用されるキューを、例えば、データベースクエリ登録情報に基づいてデフォルトにすること、および／または、他の技術を通じて選択することができる。
【００２３】
さらに、複数の通知配信サービスを活動化することができることを理解されたい。例えば、本発明の一態様では、複数の通知配信サービスを活動化して類似のキューにアクセスし、キュー内のデータベースクエリ登録情報の増加を軽減することができる。本発明のもう１つの態様では、通知配信サービス１３０は複数のキュー１２０にアクセスすることができ、変更メッセージを１つまたは複数のコンポーネントにルーティングすることができる。本発明のさらにもう１つの態様では、複数の通知配信サービスを活動化して、複数のキュー１２０にアクセスすることができる。
【００２４】
図１は、データベース変更メッセージ配信システム１００のためのコンポーネントを例示するブロック図であるが、サービスブローカ１１０、第１のキュー１２０１からＮ番目のキュー１２０Ｎ、および通知配信サービス１３０を１つまたは複数のコンピュータコンポーントとして、その用語が本明細書で定義されるように実施することができることを理解されたい。したがって、本発明によれば、データベース変更メッセージ配信システム１００、サービスブローカ１１０、第１のキュー１２０１からＮ番目のキュー１２０Ｎ、および／または通知配信サービス１３０を実施するように動作可能なコンピュータ実行可能コンポーネントを、コンピュータ可読媒体上に格納することができ、これには、それだけに限定されないが、ＡＳＩＣ（特定用途向け集積回路）、ＣＤ（コンパクトディスク）、ＤＶＤ（デジタルビデオディスク）、ＲＯＭ（読み取り専用メモリ）、フロッピー（登録商標）ディスク、ハードディスク、ＥＥＰＲＯＭ（電気的消去可能プログラマブル読み取り専用メモリ）およびメモリスティックが含まれることを理解されたい。
【００２５】
次に図２で、本発明の一態様による例示的サーバー２００を例示する。サーバー２００は、データベースクエリ登録情報の格納および搬送を実施するためのサービスブローカ２１０、データベースクエリ登録情報を格納するためのキュー２２０、および、登録済データベースクエリ結果が変更していることを示す変更メッセージを送信するための通知配信サービス２３０を備える。
【００２６】
サービスブローカ２１０は、データベースクエリ登録情報の格納および搬送を実施する。上述のように、データベースクエリ登録情報は、データベースクエリを登録またはサブスクライブするための要求の後で組み立てられる。次いで、データベースクエリ登録情報をサーバー２００に、例えばメッセージとして送信することができる。通常のデータベース登録メッセージは、ＸＭＬベースのファイル（例えば、「クッキー」）として構築され、これは一般に、一意の識別子、配信アドレス、キュー名およびタイムアウト期間のうち少なくとも１つを含む。
【００２７】
サーバー２００が、登録済データベースクエリを介して、後続のクエリの結果を変更するであろうデータベース変更要求を受信した後、データベースクエリ登録情報がサービスブローカ２１０に提供される。様々な技術を使用して、データベース変更が発生したかどうか、および、この変更が登録済データベースクエリの結果に影響を及ぼすかどうかを判断することができることを理解されたい。
【００２８】
サービスブローカ２１０は、データベースクエリ登録情報の少なくとも一部（例えば、配信アドレスおよび一意の識別子）をキュー２２０に格納し、通知配信サービス２３０を呼び出す。使用されるキュー２２０は通常、キュー名をデータベースクエリ登録情報から抽出することによって決定される。
【００２９】
実際には、デフォルトのキュー名またはオプショナルで選択されたキュー（例えば、部分的には確率、統計、学習モデル（例えば、ニューラルネットワーク）および／または適応技術に基づく）が使用される。クエリ登録情報が有効なキュー名を含まないか、および／またはキューがアクセス可能でない（例えば、存在しない）場合、関連付けられたクエリは失敗する可能性があり、関連付けられたデータへの後続の更新は失敗する可能性があり、および／または、例えば、クエリ登録が失敗したことを示す警告が（クエリ登録情報がクエリと同時に提出された場合、結果と共に）戻される可能性がある。
【００３０】
通知配信サービス２３０の呼び出しは、通知配信サービス２３０がすでにアクティブでない場合にこれを活動化することを含む。活動化メカニズムを提供することにより、登録済クエリの結果に影響を与えるであろうデータベース変更に先立って、通知配信サービス２３０を構成すること、および／または手動で開始することに関連するオーバーヘッドが軽減される。しかし、通知配信サービス２３０およびキュー２２０を、望むなら事前に構成することができる。加えて、活動化メカニズムは「ハンドシェーキング」を提供して通信を検証し、通知配信サービス２３０が活動化されない場合に失われる可能性のある情報の送信を軽減する。加えて、通知配信サービス２３０を別のコンポーネントによって、例えばシステムの起動（例えば、ハードブートおよびソフトブート）において、外部刺激および／またはユーザーによって活動化することができることを理解されたい。
【００３１】
活動化された通知配信サービス２３０はキュー２２０にアクセスすることができる。活動化期間は通常、例えば、データベースクエリ登録情報と追加の情報を介して提供することができるパラメータによって、および／またはデフォルトとして決定され、この追加の情報は、データベースクエリ登録情報と同時に、および／またはその後に続いて、通知配信サービス２３０のセットアップ（例えば、構成）中に、通知配信サービス２３０が活動化される間に動的に送信される。パラメータは、例えば、時間の絶対長さ（例えば、活動化された後の「Ｘ」秒）、サービスへのキューエントリの数（例えば、キュー２２０内の「Ｙ」個のエントリについて）、および／または非アクティブ性の期間（例えば、新しいデータベースクエリ登録情報がキュー２２０に、指定の期間に渡って配信されない場合）を指定することができる。この期間を、例えば、デフォルト値、データベースクエリ登録情報、サーバーの負荷および／または適応技術などの情報に基づかせることができることを理解されたい。活動化期間が満了した後、通知配信サービス１３０を受動的状態に非活動化することができる。
【００３２】
加えて、活動化期間を最適化技術として使用することができる。例えば、活動化期間を利用して、登録されるデータベースが頻繁に変更される場合に通知配信サービス２３０とキュー２２０の間の接続を維持することができる。接続を維持することにより、頻繁に通知配信サービス２３０を活動化するコストが軽減される。さらに、活動化期間を「常にオン」に設定して通信を支持することができる。また、デフォルト活動化期間、および／または、部分的にはヒューリスティックに基づいた活動化期間を使用することができる。
【００３３】
アクティブになった後、通知配信サービス２３０は、キュー２２０に格納されたデータベースクエリ登録情報にアクセスする。データベースクエリ登録情報が利用されて、登録済キューの後続の実行が異なる結果を戻すであろうことを示す変更メッセージが構築され、送信される。データベースクエリ登録情報は通常、配信アドレスを含み、これは変更メッセージを送信するべき場所を示す。配信アドレスを抽出および使用して、変更メッセージを送信することができる。加えて、データベースクエリ登録情報は通常、一意の識別子を含み、これを変更メッセージ内で利用して通知ランタイムサービス（後述）を実施し、これは無効化通知（例えば、イベントを引き起こし、フラグを設定する）を、その通知を受信するために登録したコンポーネントに配信することによって行なう。
【００３４】
上述のデータベース変更要求をコミットし、および／または抑えることができる。１つの場合では、非同期モデルを使用することができ、これにおいてデータベース変更を、通知配信サービス２３０がキュー２２０内のデータベースクエリ登録情報を処理したかどうかにかかわらず、コミットすることができる。非同期モデルの利点は、通知配信サービス２３０がデータベースクエリ登録情報に後でアクセスすることができ、キュー２２０において複数のエントリを可能にすることによってスケーラビリティを生じることであり、これにおいて１つまたは複数の通知配信サービスはキュー２２０に逐次および／または同時にアクセスすることができる。
【００３５】
もう１つの場合では、同期モデルを使用することができ、これにおいてデータベース変更は、関連するデータベースクエリ登録情報が通知配信サービス２３０によってアクセスされるか、および／または、変更メッセージが送信および／または受信される（例えば、後述の通知ランタイムサービスによって）まで、ブロックされる。同期モデルは信頼性、および、頑強または一貫性のあるデータを生じ、これは、データベース変更をコミットすることに先立って変更メッセージが送信および／または受信されることを保証することによって行なう。
【００３６】
様々な技術を使用して、データベース変更メッセージが配信および／または受信されるかどうかを判断することができる。第１の技術は、受信側デバイスからの肯定応答（例えば、ＡＣＫ）を含む。ＡＣＫは、変更メッセージの成功した（例えば、破損されていない）送信を示すことができ、データベース変更のコミットメントを呼び出すことができる。第２の技術は、否定応答（ＮＡＫ）を受信すること、および／または、不成功の送信を示す可能性のある、受信側デバイスからの肯定応答を受信しないことを含み、これにおいてデータベース変更は、変更メッセージがその所期のレシーバおよび／または受信者に成功して送信されるまで、抑えられ、延期され、および／または遅延される。第３の技術では、Ｐａｃｋｅｔ  Ｉｎｔｅｒｎｅｔ  Ｇｒｏｕｐｅｒ（ＰＩＮＧ）を使用して、通信が通知配信サービス２３０と受信側デバイスの間に存在するかどうかを判断することができる。通知配信サービス２３０はデータパケットを受信側デバイスに送信し（例えば、通知ランタイムサービス）、応答を待機することができる。このデータパケットを変更メッセージに先立って、それと同時に、あるいはその後に続いて送信することができる。受信側デバイスからの応答は、通信が存在することを検証することができる。
【００３７】
サービスブローカ２１０をサーバー２００内に例示するが、サービスブローカ２１０はクライアント内または別のサーバー内に存在できることを理解されたい。加えて、サービスブローカ２１０をデータベース（例えば、ＳＱＬベース）とすることができ、これは複数の２２０キューおよび／または通知配信サービス２３０を含むことができる。さらに、複数の通知配信サービスを上述のように使用できることを理解されたい。例えば、複数の通知配信サービスがキュー２２０にアクセスすることができる。加えて、複数の通知配信サービスは、実質的に類似のキュー（例えば、キュー２２０）を含む複数のキュー（例えば、キュー１２０）に、逐次および／または同時にアクセスすることができる。
【００３８】
さらに、中間コンポーネント（図示せず）を、データベースクエリ登録情報をキュー２２０から通知配信サービス２３０に送信する間に利用できることを理解されたい。例えば、データベースクエリ登録情報を、通知配信サービス２３０によってアクセスされることに先立って、別の媒体上に格納することができる。本発明の一態様では、データベースクエリ登録情報をログファイルに保存することができる。続いて、通知配信サービス２３０はデータベースクエリ登録情報をログファイルから利用する。本発明のもう１つの態様では、バッファを利用して、データベースクエリ登録情報の通知配信サービス２３０への配信を促進させることができる。本発明のさらにもう１つの態様では、例えばパフォーマンスを向上させるために、データベースクエリ登録情報を中間コンポーネントなどにオフロードして、データベースおよび／またはサービスブローカ２１０に関連付けられたリソースを解放することができる。中間コンポーネントに備えることがシステムの柔軟性を増すことを理解されたい。
【００３９】
ここで図３を参照して、本発明の一態様による例示的データ無効化システム３００を例示する。データ無効化システム３００は、クライアント３１０、サーバー３２０、メモリ３３０、サービスブローカ３４０、キュー３５０および通知配信サービス３６０を備える。
【００４０】
クラアント３１０は、本明細書で前述のように、データベースクエリをサーバー３２０に登録し、関連付けられた変更メッセージを通知配信サービスから受信するためのメカニズム（図示せず）を含むことができる。登録は通常、データベース登録メッセージを構築することを備え、このメッセージは、データベースクエリ登録情報、配信アドレス、一意の識別子（例えば、グローバル一意識別子、またはＧＵＩＤ）、キュー名、タイムアウト期間、ならびに例えば、通信（例えば、プロトコルおよびポート）およびセキュリティ（例えば、暗号化および認証）オプションなど、オプショナルで追加の情報を含む。次いで、データベース登録メッセージをサーバー３２０に送信することができる。本発明の一態様によれば、複数のクライアント（例えば、複数のクライアント３１０）および／または他のコンポーネントは、１つまたは複数のデータベースクエリを逐次および／または同時に登録できることを理解されたい。さらに、複数のクライアントは、実質的に類似の結果を戻すクエリを登録することができる。
【００４１】
本発明の一態様では、データベース登録メッセージをサーバー３２０に、クエリ（例えば、データベース登録メッセージに含まれたデータベースクエリ登録情報に関連付けられたクエリ）と共に送信することができる。クエリ結果をメモリ３３０に、および／または、ウェブサーバー上のストレージを含む他のストレージデバイスに格納することができる。結果をメモリ３３０に格納することにより、クライアント３１０ならびに他のいかなるクライアントにも、後続のクエリが実質的に類似の結果を戻すであろう場合に後続のクエリを実行するのではなく格納済の結果を利用する能力が提供される。本発明のもう１つの態様では、データベース登録メッセージをサーバー３２０に、結果を要求することなく送信することができる。例えば、クライアントは、先に実行されたクエリに実質的に類似であるクエリを登録することができ、これにおいて、先に実行されたクエリの結果がメモリ３３０に保存されており、クライアントによって利用することができる。もう１つの例では、クライアントは、そのクライアントに関連付けられる、異なるクエリの結果に影響を及ぼすクエリを登録することができる。さらにもう１つの例では、クライアントは、望むなら、データベースへのいかなる変更についての無効化通知をも受信するために登録することができる。
【００４２】
格納済クエリ結果が、例えば、生のデータ、変換済データおよび／または問合せ可能データを含む可能性があることを理解されたい。生のデータは柔軟性があり、様々な変換技術を利用して、生のデータの代替表現を提供することができる。例えば、生のデータを英数字テキストとして記号的に、グラフ、表およびチャートにおいて、他の知られている形式および／またはフォーマットを利用して表現することができる。変換済データまたはオブジェクトを格納することにより変換時間が節約され、既存のサポート（例えば、応答キャッシュ）を活用することができる。問合せ可能データを、問合せ可能データセットまたは問合せ可能データセットのサブセットを使用する後続の要求を介して利用することができる。例えば、問合せ可能データセットは複数のカテゴリを備えることができ、後続の要求は、複数のカテゴリのためのデータセットおよび／または複数のカテゴリのサブセットを問い合わせることができる。
【００４３】
サーバー３２０がデータベース変更要求を受信した後、データベース登録メッセージ内のデータベースクエリ登録情報がサービスブローカ３４０に提供される。サービスブローカ３４０はデータベースクエリ登録情報の少なくとも一部をキュー３５０に入れて、通知配信サービス３６０を活動化する。前述のように、データベース変更要求を非同期的または同期的にコミットすることができる。
【００４４】
次いで、通知配信サービス３６０はデータベースクエリ登録情報を利用して変更メッセージを構築し、クライアント３１０に配信する。例えば、通知配信サービス３６０は配信アドレスおよび一意の識別子（例えば、ＧＵＩＤ）をデータベースクエリ登録情報から抽出および利用することができる。一意の識別子は通常、変更メッセージ内に含まれ、変更メッセージは一般に配信アドレスに配信される（例えば、クライアント３１０に関連付けられた通知ランタイムサービス）。
【００４５】
変更メッセージを受信した後、一意の識別子を抽出および使用してクライアント３１０に通知することができる。その後、クライアント３１０は後続のアクションを決定することができる。例えば、本発明の一態様では、クライアント３１０は別のクエリを実行して表示をリフレッシュし、および／またはリフレッシュされた結果を格納することができる。本発明のもう１つの態様では、クライアント３１０は、結果が、後続のクエリによって戻されるであろう結果と矛盾するとしても、メモリ３３０内の結果を表示または使用し続けることを決定することができる。本発明のさらにもう１つの態様では、クライアント３１０はデータベースクエリを再度登録し、および／または、別の変更（例えば、クエリ結果を変更するであろう変更）が発生する場合に通知を受信するために自動再登録を使用することができる。本発明のさらにもう１つの態様では、変更通知は他の処理をトリガすることができ、これは例えば、変更情報のロギング、および／または、変更されたデータに基づいてアクションを取ることなどである。
【００４６】
図４は、本発明の一態様による例示的登録システム４００を例示する。登録システム４００を使用して、データベースクエリの（例えば、サーバー２００および３２０、ならびにいずれかのＳＱＬベースのサーバーへの）登録を実施することができる。登録システム４００は、メッセージアセンブラ４１０、名前プロバイダ４２０、時間プロバイダ４３０、ＩＤプロバイダ４４０およびアドレスプロバイダ４５０を備える。
【００４７】
メッセージアセンブラ４１０はデータベースクエリ登録要求（例えば、サブスクリプション）を受け入れ、データベースクエリ登録情報のパッケージングを調整し、システム１００〜３００のようなシステムによって使用することができるデータベースクエリ登録情報を送信する。前述のように、データベースクエリ登録情報は通常、キュー名、タイムアウト期間、一意の識別子および配信アドレスを含む。しかし、前述のデータベースクエリ登録情報は本発明を限定するように意図されないことを理解されたい。他の適切な情報を、本発明によれば使用することができる。さらに、データベースクエリ登録情報の様々な順序付けを、本発明の一態様によれば使用することができる。
【００４８】
メッセージアセンブラ４１０はデータベースクエリ登録情報を、プロバイダ４２０〜４５０および／または他のコンポーネント（例えば、本明細書で前述の通知ランタイムサービスおよび／またはユニバーサルリスナ）の１つまたは複数から得ることができる。名前プロバイダ４２０を使用して、戻された以前の結果に矛盾してデータベースの状態をレンダリングするであろうデータベース変更が発生した後で、登録済データベースクエリに関連付けられたデータベースクエリ登録情報を格納するためのキューの名前（例えば、キュー１２０の１つの名前）を提供することができる。例えば、名前プロバイダ４２０はランダムにキュー名を１つまたは複数の使用可能なキューから選択し、ユーザー定義のキュー名を提供し、および／またはデフォルトキュー名を提供することができる。本発明のもう１つの態様では、キュー名をデータベースクエリ登録要求に含めて、名前プロバイダ４２０が使用されないようとすることができる。
【００４９】
時間プロバイダ４４０は、登録済データベースクエリのためのタイムアウト期間を提供することができる。タイムアウト期間は持続時間または満了期間を指定することができ、これにおいて、タイムアウト期間が切れる場合、データベースクエリ登録情報は、データベース変更が発生していない場合でも変更メッセージを呼び出して、タイムアウト期間が切れていることを示す。これによりユーザーに、登録済データベースクエリに対応するいかなる格納済結果ももはや信頼性がなく、および／または正確でない可能性があることを通知することができ、サーバーは長期に渡って、もはやユーザーにとって関心のない可能性のあるデータベースクエリについての登録情報を保持する必要はない。
【００５０】
ＩＤプロバイダ４４０は、一意の識別子（例えば、グローバル一意識別子、またはＧＵＩＤ）をサブスクリプションのために割り当てるために使用される。一般に、一意の識別子は、登録中であるデータベースクエリを、サブスクリプションを要求中であるコンポーネント（例えば、クライアント、オブジェクトインスタンスおよび依存性）に関連付けるためのメカニズムを提供する。この関連付けを、例えば、コマンド、ビュー、テーブルおよび／またはリソースにより行なうことができる。一意の識別子を使用して、無効化通知を要求側コンポーネントにルーティングすることができる。
【００５１】
アドレスプロバイダ４５０は、配信アドレスを提供するために使用される。配信アドレスは、登録済クエリの結果に影響を及ぼすであろうデータベース変更に応答して変更メッセージを送信する場合、通知配信サービスによって利用される。配信アドレスは、変更メッセージのための宛先アドレスを示す。例えば、配信アドレスは、通知ランタイムサービス、および／または、サブスクリプションに登録されるユニバーサルリスナ（例えば、ＨＴＴＰ．ｓｙｓ）に関連付けられる。代替コンポーネントおよびシステムを利用して配信アドレスを得ることができることを理解されたい。例えば、通知ランタイムサービスおよび／またはユニバーサルリスナを使用して、配信アドレスを、アドレスプロバイダ４５０を介して、および／または他の技術を通じて、例えば中間コンポーネントなしに、提供することができる。
【００５２】
データベースクエリ登録情報を得た後、メッセージアセンブラ４１０はデータベースクエリ登録メッセージを構築する。一般に、データベースクエリ登録メッセージは、一意の識別子、配信アドレス、キュー名およびタイムアウト期間を含む。データベースクエリ登録情報をメッセージ内で様々に位置付けおよびフォーマットできることを理解されたい。例えば、本発明の一態様では、データベースクエリ登録情報は、構文解析することができる区切り文字列である。本発明のもう１つの態様では、データベースクエリ登録情報のバイナリ表現が使用される。本発明のさらにもう１つの態様では、データベースクエリ登録情報の少なくとも一部が利用されて「クッキー」が形成される。例えば、配信アドレスおよび一意の識別子を、「クッキー」および／またはマークアップ言語（例えば、ＸＭＬ）ベースのメッセージとして提供することができる。
【００５３】
次いで、メッセージアセンブラ４１０はデータベースクエリ登録メッセージを送信する。メッセージを、クエリに先立って、それと同時に、および／またはその後に続いて送信できることを理解されたい。加えて、メッセージをコマンド（例えば、実行コマンド）内で、および／またはストアドプロシージャにより送信することができる。登録済データベースクエリの結果を変更するデータベース変更が発生する場合、データベースクエリ登録情報を利用して、通知を受信するために登録したコンポーネントに無効化通知を配信することを実施することができる。
【００５４】
登録システム４００、メッセージアセンブラ４１０、名前プロバイダ４２０、時間プロバイダ４３０、ＩＤプロバイダ４４０およびアドレスプロバイダ４５０を、その用語が本明細書で定義されるように、コンピュータコンポーネントとすることができることを理解されたい。
【００５５】
図５は、本発明の一態様による例示的通知システム５００を例示する。通知システム５００は、アドレスディストリビュータ５１０、出力コンポーネント５２０、メッセージレシーバ５３０およびＩＤエクストラクタ５４０を備える。
【００５６】
通知システム５００は一般に、データベースクエリ登録要求が受信された後に活動化される。例えば、データベースクエリ登録要求を受信した後、登録コンポーネント（例えば、登録システム４００）は通知システム５００を活動化することができる。
【００５７】
活動化後、通知システム５００を使用してデータベースクエリ登録メッセージのための配信アドレスを得ることができ、および／または、通知システム５００を利用して無効化通知の提供を実施することができる。アドレスディストリビュータ５１０を利用して、配信アドレスを得ることができる。アドレスディストリビュータ５１０が配信アドレス要求を受信した（例えば、後述のように、通知ランタイムサービスおよび／またはユニバーサルリスナへの登録を通じて）後、配信アドレスが得られ、出力コンポーネント５２０に提供される。次いで、配信アドレスが要求側コンポーネント（例えば、登録システム４００）にルーティングされる。
【００５８】
通知システム５００は追加で変更メッセージを受け入れることができる。例えば、通知配信サービス（本明細書で上述）を使用して、変更メッセージを通知システム５００に送信することができる。メッセージレシーバ５３０は変更メッセージを受け入れる。メッセージレシーバ５３０は様々なセキュリティおよび妥当性検査技術を使用して、エラーのある変更メッセージの転送を軽減することができる。例えば、認証証明書および／または一意の識別子の検証を、本明細書の一態様により使用することができる。次いで、メッセージレシーバ５３０は変更メッセージをＩＤエクストラクタ５４０に提供する。ＩＤエクストラクタ５４０は一意の識別子を、データベースクエリ登録メッセージ内から得る。
【００５９】
次いで、一意の識別子が出力デバイス５２０によって利用されて、無効化通知が、通知を受信するために登録したコンポーネントにルーティングされる。例えば、本発明の一態様では、一意の識別子に関連付けられた登録インスタンスに関連付けられるいかなるクライアントにも通知（例えば、イベント）が提供される。本発明のもう１つの態様では、フラグおよび／または他の記述子が使用されて、以前に戻されたクエリ結果を利用しようと試みるいかなるクライアントにも、結果が無効になっていることが通知される。
【００６０】
図６は、本発明の一態様による例示的クライアント−サーバーシステム７００を例示する。クライアント−サーバーシステム６００をＳＱＬベースのクライアント−サーバーとすることができることを理解されたい。クライアント−サーバーシステム６００は、依存性インスタンス６１０、オプショナルの依存性スイッチ６２０、通知ランタイムサービス６３０および依存性関連付け６４０を含むクライアント６０５、ならびに、検出ユニット６５０、データベース６６０、サービスブローカ６７０、キュー６８０および通知配信サービス６９０を含むサーバー６４５を備える。
【００６１】
クライアント６０５は、登録を、データベースクエリ登録要求を介して開始する。通常、データベースクエリ登録要求は、キュー名および／またはタイムアウト期間を含む。しかし、デフォルト値を前述ならびに他のオプションのために利用できることを理解されたい。依存性インスタンス６１０が作成されて登録要求が表現され、１つまたは複数の登録済クエリと通知されるクライアント６０５の間の関連付けが提供される。作成すると、依存性コンポーネント６１０は、要求についての一意の識別子を得る。単一の依存性インスタンス６１０を１つまたは複数の登録済クエリに関連付けることができ、クエリのいずれか１つの結果に影響を及ぼすであろう変更が通知を生成する（例えば、変更がクエリのいずれかの結果に発生する場合、いくつかのデータベースクエリから生成された結果が無効化される）ことを理解されたい。識別子の一意性は登録済クエリのグループ化に対応することができ、１つまたは複数のクエリは、データベース変更において、集約された結果を無効化することができる。例えば、異なる一意の識別子を、登録済クエリの異なるセットによって影響を受ける結果について得ることができる。
【００６２】
一意の識別子は、通知ランタイムサービスに、オプショナルの依存性スイッチ６２０を通じて登録するために利用され、依存性インスタンス６１０は一意の識別子を提供して依存性スイッチ６２０に登録し、次いで依存性スイッチ６２０は一意の識別子を提供し、通知ランタイムサービス６３０に登録する。依存性スイッチ６２０および／または通知ランタイムサービス６３０がアクティブでない場合、依存性スイッチ６２０および／または通知ランタイムサービス６３０が、登録に先立って起動される。登録後、通知ランタイムサービス６３０は配信アドレスを依存性インスタンス６１０に提供する。オプショナルの依存性スイッチ６２０は最適化技術として使用され、利用されない場合、依存性インスタンス６１０は、先立ってオプショナルの依存性スイッチ６２０などの中間コンポーネントに登録することなく、通知ランタイムサービス６３０に登録できることを理解されたい。加えて、使用される通知ランタイムサービスを、デフォルト、クライアント機能、データベースクエリ登録情報、構成、統計および／または適応技術のうち１つによって選択することができる。
【００６３】
前述の登録技術は、プロセス内の１つまたは複数の依存性インスタンス（例えば、依存性インスタンス６１０）に、プロセス内の依存性スイッチ（例えば、依存性スイッチ６２０）に登録するための手段を提供することを介して、複数の処理の間の相互参照を軽減することができ、依存性スイッチ、および／または、複数のプロセスからの他の依存性スイッチ（例えば、依存性スイッチ６２０など）は、相互プロセス参照を通知ランタイムサービス６３０に登録することができる。
【００６４】
次いで、配信アドレス、一意の識別子、キュー名、タイムアウト期間および／または追加の情報が依存性関連付け６４０に提供され、その後に続いて登録メッセージにおいてサーバー６４５に送信される。依存性インスタンス６１０（ならびに他の依存性インスタンス）を１つまたは複数のクライアントコンポーネントに関連付け、複数のクエリ登録に含めることができ、これにおいて登録済クエリのいずれかの結果への変更が結果として実質的に類似のクライアントアクションとなることを理解されたい。上述のように、サーバー６４５は、検出ユニット６５０、データベース６６０、サービスブローカ６７０、キュー６８０および通知配信サービス６９０を備える。
【００６５】
検出ユニット６５０を使用して、データベースクエリ登録情報を維持し、いつ登録済クエリについての無効化を呼び出すかを決定することができる。例えば、データベース６６０を変更するための要求が受信される場合、データベースクエリ登録情報を利用して、登録済クエリがこの変更に関連付けられるかどうかを判断することができる。登録済クエリの結果に変更があるであろう場合、少なくともデータベースクエリ登録情報をサービスブローカ６７０に提供することができる。判断（検出）ユニット６５０は、無効化の理由（例えば、データベース変更（上述）、タイムアウト期間が満了した、メモリ制限、クエリの複雑さ、サーバーのリブートおよびシステムエラー）、データベース変更の性質の指示（例えば、挿入、削除、更新およびスキーマ変更）、および／または変更の内容（例えば、元のおよび／または現在の値）など、追加の情報を送信できることを理解されたい。
【００６６】
データベースクエリ登録情報をサービスブローカ６７０に送信した後、検出ユニット６５０はデータベースクエリ登録情報を廃棄（例えば、自動的に再登録）または保持することができる。データベースクエリ登録情報の廃棄は、後続の変更がクエリについての別の無効化を導き出さないことを保証する（例えば、クエリを登録するコンポーネントがもはや通知の受信に関心を有していない場合）。データベースクエリ登録情報を廃棄するための適切な技術には、静的な廃棄（例えば、無効化を呼び出した後の廃棄）、少なくとも部分的にはデータベースクエリ登録情報に基づいた廃棄（例えば、フィールドまたはパラメータの廃棄）、少なくとも部分的には通知ランタイムサービスからの応答に基づいた廃棄（例えば、なお無効化についてリッスンする関連コンポーネントがある場合、データベースクエリ登録情報を保持し、そうでない場合は廃棄する）、および、先立った登録メッセージに取って代わる後続の登録メッセージに基づいた廃棄が含まれる。データベースクエリ登録情報を保持することにより、後続のデータベース変更に関連付けられた追加の無効化を受信するための能力が提供される。
【００６７】
データベースクエリ登録情報を検出ユニット６５０から受信した後、サービスブローカ６７０は、データベースクエリ登録情報を格納して通知配信サービスに送信することを実施する。サービスブローカ６７０はデータベースクエリ登録情報をキュー６８０に入れ、サービスブローカ６７０は、そのように構成される場合、通知配信サービス６９０を呼び出す。アクティブである間、通知配信サービス６９０はキュー６８０内のデータベースクエリ登録情報を利用して、登録済クエリの結果がデータベース変更により変更している（例えば、後続の結果が無効となっている、および／または以前に検索された結果と矛盾している）ことを示す変更メッセージを構築することができる。検出ユニット６５０はまたデータベースクエリ登録情報を通知配信サービス６９０に提供して、登録済クエリのための変更メッセージを呼び出すこともできることを理解されたい。
【００６８】
通知配信サービス６９０は、データベースクエリ登録情報の少なくとも一部を使用して、変更メッセージをクライアント６０５の通知ランタイムサービス６３０にルーティングする。通知ランタイムサービス６３０は変更メッセージ内の依存性の一意の識別子を利用して、この通知を対応する依存性インスタンス６１０に（オプショナルで依存性スイッチ６２０を通じて）ルーティングする。次いで、依存性インスタンス６１０はクライアント６０５に変更を通知する。例えば、依存性６１０が通知を受信した後、依存性インスタンスに登録しようとする後続の試みが発生する場合、依存性イベントを引き起こすことができ、および／または、イベントを引き起こすようにフラグを設定することができる。複数のクライアントが通知を受信するために登録することができ、依存性インスタンス６１０は逐次および／または同時に、クライアント６０５、ならびに、類似のおよび／または異なるマシン上に存在する別のクライアントに通知することができることを理解されたい。さらに、クライアント６０５（または、依存性インスタンス６１０をインスタンス化する他のクライアント）はもはや、変更が発生する場合に存在しない可能性がある。しかし、通知を受信するために登録された他のクライアントがある場合、これに依存性インスタンス６１０によって通知することができる。
【００６９】
様々な技術を使用して、通知ランタイムサービス６３０と通知配信サービス６９０の間の通信が失われることによる矛盾するクエリ結果の使用を軽減できることを理解されたい。例えば、ＡＣＫ／ＮＡＫ通信コードを使用して、エラーのない送信を肯定応答し、破損された送信および／または送信がないことを示すことができる。本発明のもう１つの態様では、通知ランタイムサービス６３０は通知配信サービス６９０をポールすることができる。成功した場合、通信が検証される。さらにもう１つの例では、通知ランタイムサービス６３０を「シャットダウン」することができる。通知ランタイムサービス６３０は通知（例えば、データベース状態が未知である）を、シャットダウンを完了することに先立って提供することができる。通知配信サービス６９０を類似の方法で使用することができる。例えば、通知配信サービス６９０は通知ランタイムサービス６４０をポールすることができる。成功した場合、通信が妥当性検査される。成功しない場合、通知配信サービス６９０が変更メッセージを配信できるようになるまで、データベース変更を抑えることができ、あるいはコミットしないことができる。
【００７０】
図７は、本発明の一態様によるもう１つの例示的クライアント−サーバーシステム７００を例示する。クライアント−サーバーシステム６００のように、クライアント−サーバーシステム６００は、依存性インスタンス６１０および依存性関連付け６４０を含むクライアント６０５、ならびに、検出ユニット６５０、データベース６６０、サービスブローカ６７０、キュー６８０および通知配信サービス６９０を含むサーバー６４５を備える。加えて、クライアント６０５は依存性リスナ７１０をさらに含み、クライアント−サーバーシステム７００は、クライアント６０５およびサーバー６４５に作用するユニバーサルリスナ７２０をさらに含む。
【００７１】
上述のように、クライアント６０５は登録を、データベースクエリ登録要求を介して開始し、これは依存性インスタンス６１０の作成を含むことができる。依存性インスタンス６１０の作成により一意の識別子（例えば、ＧＵＩＤ）が生成され、これが次いで、依存性リスナ７１０に登録するために使用される。依存性リスナ７１０（ならびに他の依存性リスナ）は一意のＵＲＩを生成して、ユニバーサルリスナ７２０に登録する（例えば、ＨＴＴＰ要求をユーザーモードのアプリケーションにルーティングする、ＨＴＴＰ．ｓｙｓまたはカーネルモードのデバイスドライバ）。ＧＵＩＤおよびＵＲＩは一意の識別子および配信アドレスとして、依存性インスタンス６１０を通じてエクスポーズされ、クエリ登録メッセージにおいてサーバー６４５に送信される。一意のＵＲＩの生成を、相対的ＵＲＩの一部として第２の一意の識別子を介して実施できることを理解されたい。加えて、使用されるユニバーサルリスナを、デフォルト、クライアント機能、データベースクエリ登録情報、構成、統計および／または適応技術のうち１つによって選択することができる。
【００７２】
クエリ登録メッセージは検出ユニット６５０によって受信および管理され、検出ユニット６５０は、登録済データベースクエリに関連付けられたデータベース変更を検出し、登録済クエリの後続の実行が異なる結果を戻すであろうデータベース変更が発生する場合、データベースクエリ登録情報をサービスブローカ６７０に提供する。上述のように、検出ユニット６５０は他の情報を送信することができ、データベースクエリ登録情報を後続のデータベース変更のために維持し、あるいはクエリ登録をキャンセル（例えば、登録解除）することができる。
【００７３】
サービスブローカ６７０は、データベースクエリ登録情報を格納し、通知配信サービス６９０に送信することを実施する。サービスブローカ６７０は、データベースクエリ登録情報をキュー６８０に入れ、サービスブローカ６７０は通知配信サービス６９０を呼び出す。活動化された通知配信サービス６９０は、データベースクエリ登録情報を利用して、変更メッセージを構築および送信することができる。
【００７４】
通知配信サービス６９０は、変更メッセージ内のデータベースクエリ登録情報の少なくとも一部を使用し、変更メッセージを、例えばＨＴＴＰ要求としてユニバーサルリスナ７２０に提供する。ユニバーサルリスナ７２０はＵＲＩ内で相対パスを利用して、要求を依存性リスナ７１０にルーティングする。依存性リスナ７１０はデータベースクエリ登録情報（例えば、依存性の一意の識別子）を利用して、変更メッセージを依存性インスタンス６１０にルーティングして、クライアント６０５を含む、無効化通知を受信するために登録されたいかなるクライアントにも通知することができる。クライアント−サーバーシステム６００と同様に、様々な技術（例えば、ＡＣＫ／ＮＡＫ、Ｐｉｎｇおよび自動無効化）を使用して、ユニバーサルリスナ７２０と通知配信サービス６９０の間の通信が失われることによる矛盾したクエリ結果の使用を軽減することができる。
【００７５】
依存性リスナ７１０およびユニバーサルリスナ７２０の使用により、通知ランタイムサービスなどのサービスをクライアント６０５上でインストールおよび活動化（例えば、起動）することが軽減されることを理解されたい。加えて、変更メッセージおよび／または無効化通知を、ファイアウォールを通じて送信することができ、これはポート８０を使用できるからである。しかし、このポートを構成可能とすることができ、いかなるポートも利用できることを理解されたい。
【００７６】
図８は、本発明の一態様による例示的セキュリティ技術を例示する。システム８００は、クライアント８１０、サーバー８２０、登録要求チャネル８３０および変更メッセージチャネル８４０を備える。
【００７７】
前述のように、クライアントはデータベースクエリ登録またはサブスクリプションを開始する。例えば、クライアント８１０は、データベースクエリのサブスクリプションを要求し、これはオプショナルでキュー名およびタイムアウト期間を含む。続いて、追加のデータベースクエリ登録情報が得られ、データベースクエリ登録メッセージが構築される。データベースクエリ登録メッセージは通常、配信アドレス、一意の識別子、キュー名およびタイムアウト期間を含むが、追加および／または他の情報を含むことができる。組み立てられた後、データベースクエリ登録情報はサーバー８２０に、登録チャネル８３０を介して送信される。その後、サーバー８２０がデータベース変更要求を受信した後、サーバー８２０内の検出メカニズムなどが使用されて、いつデータベース変更が登録済クエリの後続のクエリ結果を変更するかが決定される。次いで、変更メッセージを、変更メッセージチャネル８４０を介してクライアント８１０にディスパッチすることができる。
【００７８】
データベースクエリ登録メッセージに含まれた一意の識別子（例えば、ＧＵＩＤ）は、データベースクエリ登録メッセージのためのセキュリティメカニズムを提供することができる。例えば、本発明の一態様では、データベースクエリ登録要求が受信される場合にＧＵＩＤがランタイムで作成され、それによりＧＵＩＤを「推測」または模倣する機会が軽減される。次いで、一意の識別子がサーバー８２０を通じて伝播され、変更メッセージに含まれる。登録済データベースに変更があったことをクライアントに偽って通知しようとして、シミュレートされたデータベース変更メッセージを変更メッセージチャネル８４０に差し挟もうと試みる不当なソースは、一意の識別子が有効な登録を表さない場合、無視される。加えて、本発明の一態様によれば、他のセキュリティ情報を使用することができる（例えば、認証証明書）。
【００７９】
図９に進み、本発明の一態様による例示的クライアント−サーバーシステム９００を例示する。クライアント−サーバー９００は、コマンドコンポーネント９２０、依存性９３０、通知ランタイムサービス９４０およびオプショナルの依存性スイッチ９５０を備えるクライアントマシン９１０、ならびに、サービスブローカ９７０、キュー９８０および通知配信サービス９９０を備えるサーバー９６０を備える。
【００８０】
一般に、クライアントは依存性９３０（例えば、オブジェクト）をインスタンス化し、これは一意の識別子を生成する。クライアントは通常、キュー名およびタイムアウト期間を、コンストラクタおよび／またはメソッドを介して提供するが、デフォルトおよび／または他のキュー名およびタイムアウト期間を使用することができる。続いて、依存性スイッチ９５０が使用される場合、依存性９３０は通知ランタイムサービス９４０に、オプシナルの依存性スイッチ９５０を通じて登録する。オプショナルの依存性スイッチ９５０が利用されない場合、登録が依存性９３０と通知ランタイムサービス９４０の間で、いかなる中間コンポーネントもなしに発生する。次いで、通知ランタイムサービス９４０は配信アドレスを依存性９３０に提供する。次いで、クライアントは一般にコマンドコンポーネント９２０（例えば、導出されたオブジェクト）をインスタンス化し、これを依存性９３０に関連付ける。キュー名、タイムアウト期間、配信アドレスおよび一意の識別子がコマンドコンポーネント９２０に提供される。次いで、コマンドコンポーネント９２０はデータベースクエリをサーバーマシン９６０に登録し、これは例えば、キュー名、タイムアウト期間、配信アドレスおよび一意の識別子が例えばデータベースクエリ登録メッセージ（例えば、マークアップ言語（例えば、ＸＭＬ）ファイル）として送信されるメソッドを呼び出すことを介して行なわれる。依存性９３０を複数のコマンドコンポーネント９２０（ならびに、他のコマンドコンポーネント）に関連付けることができ、コマンドコンポーネントは類似および／または異なるデータベースクエリを、実質的に類似のデータベースクエリ登録メッセージに登録できることを理解されたい。
【００８１】
上述のように、サーバーマシン９６０は、サービスブローカ９７０、キュー９８０および通知配信サービス９９０を備える。サーバーマシン９６０は、データベース変更を検出するための様々な技術を使用することができる。例えば、データベース変更要求が受信される場合、登録済クエリについての探索が初期化されて、後続のクエリの結果に変更があるかどうかが判断される。変更されたデータベースに関連付けられたデータベースクエリ登録情報を、サービスブローカ９７０に提供することができる。サービスブローカ９７０はデータベースクエリ登録情報をキュー９８０に格納し、通知配信サービス９９０を活動化することができる。
【００８２】
通知配信サービス９９０はデータベースクエリ登録情報を利用して、変更メッセージを構築し、通知ランタイムサービス９４０に送信する。続いて、通知ランタイムサービス９４０は一意の識別子を抽出し、一意の識別子を利用してメッセージを対応する依存性９３０にルーティングする。次いで、依存性９３０は、変更されたデータベースに関連付けられたクライアントに通知する。例えば、依存性は、変更されたデータテーブルに関連付けられたアプリケーションについてイベントを引き起こし、および／または、アプリケーションが、変更されたデータテーブルと関連付けようと試みる場合に、イベントを引き起こすためのフラグを設定することができる。
【００８３】
本発明の一態様によれば、クライアント−サーバーシステム７００に類似して、依存性リスナ（図示せず）およびユニバーサルリスナ（図示せず）を、クライアントサーバーシステム９００と共に使用できることを理解されたい。例えば、依存性リスナは一意のＵＲＩをユニバーサルリスナに登録し、一意の識別子と依存性インスタンスの間の対応を維持することができる。一意の識別子およびＵＲＩを、サーバーに送信されるデータベースクエリ登録メッセージに含めることができる。後続のクエリの結果に影響を及ぼすであろうデータベース変更が発生した後、通知配信サービス９９０は、例えばＨＴＴＰ要求を構築および送信して、変更メッセージをユニバーサルリスナに配信することができる。ユニバーサルリスナは一意のＵＲＩを利用して、要求を依存性リスナにルーティングすることができる。依存性リスナは変更メッセージ内で一意の識別子を使用して、対応する依存性に、無効化通知を受信するために登録されたいかなるクライアントにも通知させることができる。
【００８４】
上述のように、依存性リスナよびユニバーサルリスナの使用により、サービス（例えば、通知ランタイムサービス）をクライアント上でインストールおよび活動化することが軽減される。加えて、ポートを構成可能にして、ポート８０の選択を、例えば、送信がファイアウォールを通じて発生できるように可能とすることができる。
【００８５】
図１０〜１２は、本発明による方法を例示する。説明を簡単にするため、これらの方法を一連の動作として示し、説明する。本発明が例示の動作によって、および／または動作の順序によって限定されず、例えば、動作は様々な順序で、および／または同時に、ならびに、本明細書で提示および説明しない他の動作と共に発生する可能性があることを理解されたい。さらに、例示しないすべての動作は、本発明による方法を実施するために必要とされる可能性がある。
【００８６】
加えて、方法を代替として一連の相関状態（例えば、状態図）またはイベントとして表現できることは、当業者には理解されよう。また、本発明を一般に、プログラムモジュールなど、１つまたは複数のコンポーネントによって実行されるコンピュータ実行可能命令に関連して説明することができる。一般に、プログラムモジュールには、ルーチン、プログラム、オブジェクト、データ構造などが含まれ、これらは特定のタスクを実行するか、あるいは特定の抽象データ型を実施する。通常、プログラムモジュールの機能性を、様々な実施形態で望まれるように結合または分散させることができる。
【００８７】
図１０は、本発明の一態様による登録および配信方法１０００を例示する。登録および配信方法１０００を使用して、変更が登録済クエリの結果を変更するであろうデータベース変更要求が受信された後、変更メッセージを配信することができる。１０１０で開始して、コンポーネント（例えば、クライアント、エージェント、アプリケーションおよびユーザー）が、登録済クエリの結果に影響を及ぼすであろうデータベース変更が発生する場合に通知を受信するために、データベースクエリを登録する。登録は一般に、変更通知の配信を実施するデータベースクエリ登録情報（例えば、図１〜９で上述）を提供することを含む。
【００８８】
１０２０で、データベース変更要求が受信される。要求は、登録済クエリの結果を変更するであろう変更を含む可能性がある。要求はメカニズムを開始して、データベース変更が登録済データベースクエリに関連付けられるかどうかを判断する。登録済クエリの結果が影響を受ける場合、データベースクエリ登録情報の少なくとも一部がサービスブローカに提供される。
【００８９】
１０３０で、サービスブローカが登録情報をキューに格納し、通知配信サービスを活動化する。次いで、データベースクエリ登録情報を通知配信サービスでアクセス可能とすることができる。様々な技術を使用して、データベースクエリ登録情報を提供できることを理解されたい。例えば、データベースクエリ登録情報をキューから「プッシュ」し、および／または、通知配信サービスに「プル」することができる。さらに、中間ストレージエリアを使用して、データベースクエリ登録情報の転送を実施することができ、これは例えば、一時ストレージ位置を提供することによって行なわれる。
【００９０】
データベースクエリ登録情報が利用されて、配信アドレス、および、変更メッセージを構築および送信するために使用される一意の識別子が得られる。１０４０で、通知配信サービスがデータベース変更メッセージを送信する。このメッセージは、登録情報の少なくとも一部を含み、通常は一意の識別子を備える。例えば、オブジェクトＩＤを送信することができ、これにおいてイベントが引き起こされ、および／または、フラグがアプリケーションオブジェクトインスタンスについて設定される。本明細書で前述のように、通知配信サービスは、変更メッセージをユニバーサルリスナおよび／または通知ランタイムサービスに送信できることを理解されたい。
【００９１】
図１１および１２は、本発明の一態様による登録、配信および通知方法１１００を例示する。図１１に進むと、参照番号１１１０で、データベースクエリを登録するための要求が受信される。オプショナルで、この要求はキュー名および／またはタイムアウト期間を含むことができる。
【００９２】
１１２０で、一意の識別子および配信アドレスが（例えば、上述のように、依存性リスナおよびユニバーサルリスナ、および／または依存性スイッチ、および／または通知ランタイムサービスを介して）得られる。加えて、キュー名および／またはタイムアウト期間を含む他の情報を得ることができる。次いで、データベースクエリ登録情報が利用されて、データベースクエリ登録メッセージが構築され、データベースクエリ登録メッセージがサーバーに送信される。
【００９３】
１１３０で、サーバーが、データベースクエリ登録メッセージに含まれたデータベースクエリ登録情報を受信および格納する。サーバーがデータベース変更要求を受信した後、変更が登録済クエリの後続の結果を変更するかどうかを検出することを実施するメカニズムが呼び出される。登録済データベースクエリがデータベース変更に関連付けられない場合、方法１１００はアイドル状態に移行し、例えば、次のデータベース変更を待機することができる。データベース変更が登録済クエリの結果に影響を及ぼす場合、データベースクエリ登録情報をサービスブローカに提供することができる。サービスブローカはデータベースクエリ登録情報をキュー（例えば、データベースクエリ登録情報メッセージに含まれたキュー名に関連付けられたキュー）に格納する。加えて、サービスブローカは通知配信サービスを活動化することができる。
【００９４】
図１２に移動して、本発明の一態様による図１１の続きを例示する。参照番号１２１０で、キューに格納されたデータベースクエリ登録情報が通知配信サービスに提供される。通常、一意の識別子および配信アドレスがキューに格納される。
【００９５】
１２２０で、通知配信サービスが、通常は一意の識別子を含む変更メッセージを送信し、これを（例えば、通知ランタイムサービスおよび／またはユニバーサルリスナの）配信アドレスに配信する。変更メッセージが受信され、１２３０で、変更メッセージ内の一意の識別子を抽出および使用して、登録済コンポーネント、および、後に登録済クエリへの変更について登録しようと試みるコンポーネントに通知することができる。
【００９６】
本発明の様々な態様についての追加のコンテキストを提供するために、図１３および以下の考察は、本発明の様々な態様を実施することができる、適切なオペレーティング環境１３１０の簡単な全体的説明を提供するように意図される。本発明を一般に、プログラムモジュールなど、１つまたは複数のコンピュータまたは他のデバイスによって実行されるコンピュータ実行可能命令に関連して説明するが、本発明をまた、他のプログラムモジュールと組み合わせて、および／または、ハードウェアおよびソフトウェアの組み合わせとしても実施できることは、当業者には理解されよう。しかし、一般に、プログラムモジュールには、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれ、これらは特定のタスクを実行するか、あるいは特定の抽象データ型を実施する。オペレーティング環境１３１０は、適切なオペレーティング環境の一例でしかなく、本発明の用途または機能性の範囲についてのいかなる限定も示唆するように意図されない。本発明と共に使用するために適切な可能性のある他の周知のコンピュータシステム、環境および／または構成には、それだけに限定されないが、パーソナルコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラマブルコンシューマエレクトロニクス、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上述のシステムまたはデバイスを含む分散コンピューティング環境などが含まれる。
【００９７】
図１３を参照すると、本発明の様々な態様を実施するための例示的環境１３１０は、コンピュータ１３１２を含む。コンピュータ１３１２は、処理装置１３１４、システムメモリ１３１６、およびシステムバス１３１８を含む。システムバス１３１８は、それだけに限定されないが、システムメモリ１３１６を含むシステムコンポーネントを処理装置１３１４に結合する。処理装置１３１４を様々な使用可能などのプロセッサとすることもできる。デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャも、処理装置１３１４として使用することができる。
【００９８】
システムバス１３１８を、いくつかのタイプのバス構造のいずれかとすることができ、これには、様々な使用可能なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バスまたは外部バス、および／またはローカルバスが含まれ、このようなバスアーキテクチャには、それだけに限定されないが、８ビットバス、業界標準アーキテクチャ（ＩＳＡ）、マイクロチャネルアーキテクチャ（ＭＳＡ）、拡張ＩＳＡ（ＥＩＳＡ）、Ｉｎｔｅｌｌｉｇｅｎｔ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ（ＩＤＥ）、ＶＥＳＡローカルバス（ＶＬＢ）、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）、ユニバーサルシリアルバス（ＵＳＢ）、Ａｄｖａｎｃｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ（ＡＧＰ）、Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｏｎバス（ＰＣＭＣＩＡ）およびＳｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｆａｃｅ（ＳＣＳＩ）が含まれる。
【００９９】
システムメモリ１３１６は、揮発性メモリ１３２０および不揮発性メモリ１３２２を含む。基本入出力システム（ＢＩＯＳ）は、起動中など、コンピュータ１３１２内の複数の要素の間で情報を転送するための基本ルーチンを含み、不揮発性メモリ１３２２に格納される。例示のため、限定ではなく、不揮発性メモリ１３２２は、読み取り専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＲＯＭ（ＥＥＰＲＯＭ）、またはフラッシュメモリを含むことができる。揮発性メモリ１３２０はランダムアクセスメモリ（ＲＡＭ）を含み、これは外部キャッシュメモリとしての機能を果たす。例として、限定ではなく、ＲＡＭは多数の形態で使用可能であり、これは、シンクロナスＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、拡張ＳＤＲＡＭ（ＥＳＤＲＡＭ）、シンクリンクＤＲＡＭ（ＳＬＤＲＡＭ）、および直接Ｒａｍｂｕｓ  ＲＡＭ（ＤＲＲＡＭ）などである。
【０１００】
コンピュータ１３１２はまた、リムーバブル／非リムーバブル、揮発性／不揮発性のコンピュータストレージメディアも含む。図１３は、例えば、ディスクストレージ１３２４を例示する。ディスクストレージ１３２４は、それだけに限定されないが、磁気ディスクドライブ、フロッピー（登録商標）ディスクドライブ、テープドライブ、Ｊａｚドライブ、Ｚｉｐドライブ、ＬＳ−１００ドライブ、フラッシュメモリカードまたはメモリスティックを含む。加えて、ディスクストレージ１３２４はストレージメディアを別々に、あるいは、他のストレージメディアと組み合わせて含むことができ、これには、それだけに限定されないが、コンパクトディスクＲＯＭデバイス（ＣＤ−ＲＯＭ）、ＣＤレコーダブルドライブ（ＣＤ−Ｒドライブ）、ＣＤ書き換え可能ドライブ（ＣＤ−ＲＷドライブ）またはデジタル多用途ディスクＲＯＭドライブ（ＤＶＤ−ＲＯＭ）など、光ディスクドライブが含まれる。ディスクストレージデバイス１３２４をシステムバス１３１８に接続することを実施するために、通常はリムーバブルまたは非リムーバブルインターフェースが使用され、これはインターフェース１３２６などである。
【０１０１】
図１３は、ユーザーと、適切なオペレーティング環境１３１０で説明した基本コンピュータリソースの間の、媒介物の機能を果たすソフトウェアを説明することを理解されたい。このようなソフトウェアはオペレーティングシステム１３２８を含む。オペレーティングシステム１３２８をディスクストレージ１３２４上に格納することができ、オペレーティングシステム１３２８は、コンピュータシステム１３１２のリソースを制御し、割り振るように動作する。システムアプリケーション１３３０は、オペレーティングシステム１３２８によって、システムメモリ１３１６内またはディスクストレージ１３２４上に格納されたプログラムモジュール１３３２およびプログラムデータ１３３４を通じて、リソースの管理を利用する。本発明を様々なオペレーティングシステムまたはオペレーティングシステムの組み合わせにより実施できることを理解されたい。
【０１０２】
ユーザーはコマンドまたは情報をコンピュータ１３１２へ、入力デバイス１３３６を通じて入力する。入力デバイス１３３６には、それだけに限定されないが、マウスなどのポインティングデバイス、トラックボール、スタイラス、タッチパッド、キーボード、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナ、ＴＶチューナカード、デジタルカメラ、デジタルビデオカメラ、ウェブカメラなどが含まれる。これらおよび他の入力デバイスは処理装置１３１４へ、システムバス１３１８を通じて、インターフェースポート１３３８を介して接続する。インターフェースポート１３３８には、例えば、シリアルポート、パラレルポート、ゲームポートおよびユニバーサルシリアルバス（ＵＳＢ）が含まれる。出力デバイス１３４０は、入力デバイス１３３６と同じタイプのポートのいくつかを使用する。したがって、例えば、ＵＳＢポートを使用して入力をコンピュータ１３１２に提供し、情報をコンピュータ１３１２から出力デバイス１３４０に出力することができる。出力アダプタ１３４２が提供されて、特殊なアダプタを必要とする他の出力デバイス１３４０の中でも、モニタ、スピーカおよびプリンタのようないくつかの出力デバイス１３４０があることが例示される。出力アダプタ１３４２には、例示として、限定ではなく、ビデオおよびサウンドカードが含まれ、これらは出力デバイス１３４０とシステムバス１３１８の間の接続の手段を提供する。リモートコンピュータ１３４４など、他のデバイスおよび／またはデバイスのシステムが入力および出力機能を提供することに留意されたい。
【０１０３】
コンピュータ１３１２はネットワーク環境において、リモートコンピュータ１３４４など、１つまたは複数のリモートコンピュータへの論理接続を使用して動作することができる。リモートコンピュータ１３４４は、パーソナルコンピュータ、サーバー、ルーター、ネットワークＰＣ、ワークステーション、マイクロプロセッサベースのアプライアンス、ピアデバイスまたは他の共通ネットワークノードなどとすることができ、通常は、コンピュータ１３１２に関連して上述した要素の多数またはすべてが含まれる。簡潔にするため、メモリストレージデバイス１３４６のみをリモートコンピュータ１３４４と共に例示する。リモートコンピュータ１３４４はコンピュータ１３１２に、ネットワークインターフェース１３４８を通じて論理的に接続され、次いで通信接続１３５０を介して物理的に接続される。ネットワークインターフェース１３４８は、ローカルエリアネットワーク（ＬＡＮ）およびワイドエリアネットワーク（ＷＡＮ）など、通信ネットワークを包含する。ＬＡＮ技術には、ファイバー分散データインターフェース（ＦＤＤＩ）、銅線分散データインターフェース（ＣＤＤＩ）、イーサネット（登録商標）／ＩＥＥＥ  ８０２．３、トークンリング／ＩＥＥＥ  ８０２．５などが含まれる。ＷＡＮ技術には、それだけに限定されないが、ポイントツーポイントリンク、統合デジタルサービス通信網（ＩＳＤＮ）およびそれにおける変形形態のような回線交換網、パケット交換網およびデジタル加入者線（ＤＳＬ）が含まれる。
【０１０４】
通信接続１３５０は、ネットワークインターフェース１３４８をバス１３１８に接続するために使用されるハードウェア／ソフトウェアを指す。通信接続１３５０を、例示的に明瞭にするためにコンピュータ１３１２内に示すが、これをコンピュータ１３１２の外部とすることもできる。ネットワークインターフェース１３４８への接続のために必要なハードウェア／ソフトウェアには、例示のためにのみ、内部および外部技術が含まれ、これは、通常の電話のグレードのモデム、ケーブルモデムおよびＤＳＬモデム、ＩＳＤＮアダプタおよびイーサネット（登録商標）カードを含むモデムなどである。
【０１０５】
上述には本発明の例が含まれる。言うまでもなく、本発明を説明するために、コンポーネントまたは方法の考えられるあらゆる組み合わせを説明することは可能ではなく、本発明の多数のさらなる組み合わせおよび並べ換えが可能であることは、当業者には理解されよう。したがって、本発明は、添付の特許請求の範囲の精神および範囲内に入るこのようなすべての変更、修正および変形形態を包含するように意図される。さらに、「含む」という用語が詳細な説明または特許請求の範囲で使用される範囲で、このような用語は、「備える」という用語が請求項において転換句として使用される場合に解釈されるように「備える」に類似の方法で、包含的であるものとする。
【図面の簡単な説明】
【０１０６】
【図１】本発明の一態様による例示的データベース変更メッセージ配信システムを例示する図である。
【図２】本発明の一態様による例示的サーバーを例示する図である。
【図３】本発明の一態様による例示的データ無効化システムを例示する図である。
【図４】本発明の一態様による例示的登録システムを例示する図である。
【図５】本発明の一態様による例示的通知システムを例示する図である。
【図６】本発明の一態様による例示的クライアント−サーバーシステムを例示する図である。
【図７】本発明の一態様によるもう１つの例示的クライアント−サーバーシステムを例示する図である。
【図８】本発明の一態様による例示的セキュリティ技術を例示する図である。
【図９】本発明の一態様による例示的クライアント−サーバーシステムを例示する図である。
【図１０】本発明の一態様による登録および配信方法を例示する図である。
【図１１】本発明の一態様による第１の登録、配信および通知方法を例示する図である。
【図１２】本発明の一態様による、図１１の続きの図である。
【図１３】本発明の一態様による例示的オペレーティングシステムを例示する図である。
【符号の説明】
【０１０７】
１００  データベース変更メッセージ配信システム
１１０、２１０、３４０、６７０、９７０  サービスブローカ
１２０、２２０、３５０、６８０、９８０  キュー
１３０、２３０、３６０、６９０、９９０  通知配信サービス
２００、３２０、６４５、８２０、９６０  サーバー
３００  データ無効化システム
３１０、６０５、８１０  クライアント
３３０  メモリ
４００  登録システム
４１０  メッセージアセンブラ
４２０  名前プロバイダ
４３０  時間プロバイダ
４４０  ＩＤプロバイダ
４５０  アドレスプロバイダ
５００  通知システム
５１０  アドレスディストリビュータ
５２０  出力コンポーネント
５３０  メッセージレシーバ
５４０  ＩＤエクストラクタ
６００、７００、９００  クライアント−サーバーシステム
６１０  依存性インスタンス
６２０  オプショナルの依存性スイッチ
６３０  通知ランタイムサービス
６４０  依存性関連付け
６５０  検出ユニット
６６０  データベース
７１０  依存性リスナ
７２０  ユニバーサルリスナ
９１０  クライアントマシン
９２０  コマンドコンポーネント
９３０  依存性
９４０  通知ランタイムサービス
９５０  オプショナルの依存性スイッチ
【図１】
2004303214.tif 000003
【図２】
2004303214.tif 000004
【図３】
2004303214.tif 000005
【図４】
2004303214.tif 000006
【図５】
2004303214.tif 000007
【図６】
2004303214.tif 000008
【図７】
2004303214.tif 000009
【図８】
2004303214.tif 000010
【図９】
2004303214.tif 000011
【図１０】
2004303214.tif 000012
【図１１】
2004303214.tif 000013
【図１２】
2004303214.tif 000014
【図１３】
2004303214.tif 000015
【外国語明細書】
2004303214.tif 000016
2004303214.tif 000017
2004303214.tif 000018
2004303214.tif 000019
2004303214.tif 000020
2004303214.tif 000021
2004303214.tif 000022
2004303214.tif 000023
2004303214.tif 000024
2004303214.tif 000025
2004303214.tif 000026
2004303214.tif 000027
2004303214.tif 000028
2004303214.tif 000029
2004303214.tif 000030
2004303214.tif 000031
2004303214.tif 000032
2004303214.tif 000033
2004303214.tif 000034
2004303214.tif 000035
2004303214.tif 000036
2004303214.tif 000037
2004303214.tif 000038
2004303214.tif 000039
2004303214.tif 000040
2004303214.tif 000041
2004303214.tif 000042
2004303214.tif 000043
2004303214.tif 000044
2004303214.tif 000045
2004303214.tif 000046
2004303214.tif 000047
2004303214.tif 000048
2004303214.tif 000049
2004303214.tif 000050
2004303214.tif 000051
2004303214.tif 000052
2004303214.tif 000053
2004303214.tif 000054
2004303214.tif 000055
2004303214.tif 000056
2004303214.tif 000057
2004303214.tif 000058
2004303214.tif 000059
2004303214.tif 000060
2004303214.tif 000061
2004303214.tif 000062
2004303214.tif 000063
2004303214.tif 000064
2004303214.tif 000065
2004303214.tif 000066
2004303214.tif 000067
2004303214.tif 000068
2004303214.tif 000069