JP2021523436A - 入力および出力スキーママッピング - Google Patents

入力および出力スキーママッピング Download PDF

Info

Publication number
JP2021523436A
JP2021523436A JP2020560914A JP2020560914A JP2021523436A JP 2021523436 A JP2021523436 A JP 2021523436A JP 2020560914 A JP2020560914 A JP 2020560914A JP 2020560914 A JP2020560914 A JP 2020560914A JP 2021523436 A JP2021523436 A JP 2021523436A
Authority
JP
Japan
Prior art keywords
event
service
data
event data
schema
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.)
Granted
Application number
JP2020560914A
Other languages
English (en)
Other versions
JP7360395B2 (ja
Inventor
ルイス−メラス,セサル・エム
ラビパティ,ベンカタ・ラジャゴパル
カリアナ・スンダラム,ジャヤラマン
モンジュ,ヒラリー・カイトゥイロ
ハマド,アシュラフ
バニーサドル,バーラム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 JP2021523436A publication Critical patent/JP2021523436A/ja
Application granted granted Critical
Publication of JP7360395B2 publication Critical patent/JP7360395B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • 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/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2854Wide area networks, e.g. public data networks
    • H04L12/2856Access arrangements, e.g. Internet access
    • H04L12/2858Access network architectures
    • H04L12/2859Point-to-point connection between the data network and the subscribers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/224Monitoring or handling of messages providing notification on incoming messages, e.g. pushed notifications of received messages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/562Brokering proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1859Arrangements for providing special services to substations for broadcast or conference, e.g. multicast adapted to provide push services, e.g. data channels
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Navigation (AREA)

Abstract

イベントソースおよびサブスクライバーによって使用されるネイティブフォーマット/スキーマ方法論がネイティブに修正される必要がないようにシームレスな様式でイベントソースをイベントサブスクライバーと相互接続するために最適化が提供される。イベントグリッドサービスは、ルーティングおよびマッピングサービスとして提供される。このイベントグリッドサービスは、あらゆる種類のフォーマットで整理され得るイベントデータを受信する。フォーマットを分析することによって、イベントグリッドサービスは、フォーマットが、そのイベントデータのコンシューマによって使用されるフォーマットと相関するかどうかを決定する。フォーマットが準拠する場合、イベントグリッドサービスは、イベントデータから関連データを抽出し、それをサブスクライバーにプッシュする。フォーマットが準拠しない場合、イベントグリッドサービスは、マッピングをインテリジェントに生成して、2つのフォーマットをマッピングする。

Description

本願発明の一実施例は、例えば、入力および出力スキーママッピングに関する。
[0001]コンピューティングシステムの相互接続は、いわゆる“クラウド”コンピューティングシステムなどの分散コンピューティングシステムを促進してきた。本説明において、“クラウドコンピューティング”は、管理努力またはサービスプロバイダ相互作用の低減を伴ってプロビジョニングおよびリリースされ得る構成可能なコンピューティングリソース(例えば、ネットワーク、サーバ、ストレージ、アプリケーション、サービスなど)の共有プールへのユビキタスで便利なオンデマンドのネットワークアクセスを可能にするためのシステムまたはリソースであり得る。クラウドモデルは、様々な特徴(例えば、オンデマンドセルフサービス、幅広いネットワークアクセス、リソースの共有、迅速な拡張性、サービスが計測可能など)、サービスモデル(例えば、Software as a Service(“SaaS”)、Platform as a Service(“PaaS”)、Infrastructure as a Service(“IaaS”))、および実装モデル(例えば、プライベートクラウド、コミュニティクラウド、パブリッククラウド、ハイブリッドクラウドなど)から構成され得る。
[0002]クラウドおよびリモートベースのサービスアプリケーションは、広く行き渡っている。そのようなアプリケーションは、パブリックおよびプライベートリモートシステム(クラウドなど)上でホストされ得、通常、クライアントと通信のやり取りをするためのウェブベースのサービスのセットを提供する。
[0003]コンピューティングシステム(例えば、クラウド内)を相互接続する1つの利益は、一部のエンティティが、特定のイベントが起こったときに通知され得ることである。例えば、システムは、現状では、人間のサブスクライバーがニュースなどの情報を自動的に受信することを可能にする体制を有する。いくつかの通知システムが現在利用可能であるが、これらのシステムは多くの欠点および不備を有する。例えば、サービスおよびアプリケーションは、多くの場合、独自のフォーマットまたは通信プロトコルを使用することから、複数のアプリケーションおよびサービスを相互接続することは非常に時間がかかりかつ労力を要するプロセスであり得る。したがって、これらのアプリケーションおよびサービスを結び付けるための従来の技術は、非常に厳正であり、拡張のための柔軟性、スケーラビリティ、および将来的な相互接続を提供することができない。さらには、多くの従来のイベント通知方法論は、主に人間のサブスクライバーのために構成される。その結果、任意のタイプのサブスクライバーに通知するための、およびスケーラビリティ機能を含むための柔軟かつ信頼性の高いシステムを提供する大きな必要性がある。
[0004]本明細書において特許請求される主題は、任意の不利益を解決する実施形態、または上に説明されるものなどの環境においてのみ動作する実施形態に限定されない。むしろ、この背景技術は、本明細書に説明されるいくつかの実施形態が実践され得る1つの例示的な技術を例証するためだけに提供される。
本願発明の一実施例は、例えば、入力および出力スキーママッピングに関する。
[0005]開示された実施形態は、イベントを管理するためのシステムおよび方法、ならびにさらにより詳細には、アプリケーション、サービス、およびエンティティを相互接続するためのシステムおよび方法を対象とする。いくつかの場合において、これは、準拠しないデータを準拠するようにプログラムで処理することを含む。他の場合において、これは、1つまたは複数のパブリッシングサービスからのイベントデータを1つまたは複数のサブスクライバーにプッシュすることを含む。
[0006]例えば、いくつかの実施形態において、方法およびシステムは、準拠しないデータを処理するために提供される。これらの実施形態は、イベントグリッドサービスを通じて登録情報を受信するという初期行為など、様々な行為を含む。この情報は、パブリッシングサービスとイベントグリッドサービスとの間の関係(すなわち、登録)を確立するのに有用である。登録プロセスを支援するため、登録情報は、パブリッシングサービスがそのデータをどのようにフォーマットするか(すなわち、フォーマットのためにそれが使用するスキーマ)に関する詳細を含む。この情報はまた、サブスクライバーが聞いているトピックと関連付けられる。次いで、イベントグリッドサービスは、パブリッシングサービスのイベントスキーマを分析して、そのスキーマがトピックのために使用されるデフォルトのスキーマに相関するかどうかを決定する。相関がない場合、または部分的な相関のみがある場合、イベントグリッドサービスは、パブリッシングサービスのスキーマをトピックのデフォルトのスキーマにマッピングすることを試みるマッピングを自動的に導出することができる。このマッピングが導出された後、イベントグリッドサービスは、パブリッシングサービスからイベント発行を受信する。その後、イベントグリッドサービスは、このマッピングを使用して、発行内のデータを、データがトピックのデフォルトのイベントスキーマに含まれるイベントフィールドに正しくマッピングするような様式で翻訳する。このプロセスは、パブリッシングサービスおよびサブスクライバーが結び付けられることを、パブリッシングサービスが準拠していないコンテンツをサブスクライバーフォーマットに発行するときにさえ、および、それらのエンティティのいずれかが自らのネイティブフォーマット技術を変更または修正する必要なしに、可能にする。
[0007]いくつかの実施形態において、システムおよび方法は、イベントグリッドサービスを通じて、1つまたは複数のパブリッシングサービスからのイベントデータを、そのイベントデータの1つまたは複数のサブスクライバーにプッシュするために提供される。具体的には、トピックと関連付けられたイベント発行を受信した後、そのトピックに関心のあるサブスクライバーが識別され得る。いくつかの場合において、(1)サブスクライバーは、イベントグリッドサービスとのサブスクリプションを有し、(2)サブスクリプションは、サブスクライバーが通知されることを希望するイベントデータのタイプを識別し、(3)発行に含まれるイベントデータは、サブスクライバーのための関連情報を実際に含む。いくつかの場合において、イベントデータがサブスクライバーのための準拠するスキーマにあるかどうかに関して決定がなされる。そうである場合、マッピングは実施されない。そうでない場合、マッピングプロセスがイベントデータに対して実施される。次いで、関連データが、イベントデータの他の部分からフィルタリング/抽出され、次いでそれは、サブスクライバーにプッシュされる。
[0008]いくつかの実施形態において、システムおよび方法は、パブリッシングサービスからイベント発行を受信するため、および特定の情報をその情報のサブスクライバーにプッシュするために利用可能である。最初に、イベントグリッドサービスは、確立されたトピックに対応し、かつイベントデータを含むイベント発行を(例えば、パブリッシングサービスから)受信する。マッピングの使用により、イベントグリッドサービスは、イベントデータのうちのいくつかを、それがトピックのために確立されているイベントスキーマ内のフィールドに位置対応するようにマッピングすることができる。このマッピングが完了した後、この情報のサブスクライバーは、関連イベントデータ(上に説明されるデータなど)が受信されるときに通知され得る。ここでは、サブスクライバーは、イベントグリッドサービスとのサブスクリプションを有し、このサブスクリプションが、サブスクライバーがどのタイプのデータを通知されることを望むかを識別する。マッピングされたデータは、サブスクライバーが受信することを望む情報に対応する特定のデータを含む。続いて、関連データは、非関連データから隔離され、その後サブスクライバーにプッシュされ得る。
[0009]本概要は、発明を実施するための形態において以下にさらに説明されるいくつかの概念を簡略化した形式で紹介するために提供される。本概要は、特許請求された主題の主な特徴または必須の特徴を識別することが意図されるものではなく、特許請求された主題の範囲を決定することを助けるものとして使用されることが意図されるものでもない。
[0010]追加の特徴および利点は、以下に続く説明において明記され、また部分的には説明から明白であり、または、本明細書内の教示の実践により学習され得る。本発明の特徴および利点は、添付の特許請求の範囲において具体的に指摘される機器および組み合わせを用いて実現および獲得され得る。本発明の特徴は、以下の説明および添付の特許請求の範囲からより完全に明らかになるものとし、または、以後明記されるような本発明の実践により学習され得る。
[0011]上に列挙した利点および特徴ならびに他の利点および特徴が獲得され得る様式を説明するために、上に簡単に説明される主題のより具体的な説明が、添付の図面に例証される特定の実施形態への参照により提供される。これらの図面は典型的な実施形態を描写するにすぎず、したがって範囲を限定するものと見なされるべきではないという理解で、実施形態は、添付の図面の使用を通じて追加的な具体性および詳細を伴って説明される。
[0012]クライアントがとり得る様々な形態を実証する図である。 [0013]どのようにしてクライアントがサービス(例えば、クラウドベースのサービス)と対話することができるかを例証し、さらに、サービスが独自の入力/出力スキーマを使用して動作し得ることを示す図である。 [0014]サービスの入力/出力スキーマのフォーマットに関する追加の詳細を提供する図である。 [0015]異なるクライアントがサービスを集中型イベントグリッドサービスに登録している例示的なアーキテクチャを例証する図である。 [0016]準拠しないスキーマであり得るサービスのスキーマを、準拠しており、かつイベントグリッドサービスおよび/または特定のサブスクライバーによって動作可能である新規スキーマへと翻訳/相関/マッピングするために、どのようにしてマッピングが導出され得るかを実証する図である。 [0017]サブスクライバーが、任意の数のサービスによって発行されるイベント発行を受信するために、イベントグリッドサービスとのサブスクリプションを確立することができる例示的なアーキテクチャを示す図である。 [0018]マッピングおよびトピック管理に関連したプロセスを提供するために連携して働く計算およびストレージリソースのクラスタのセットを提供することによって、ユーザーのための透過的なスケールアウトおよびフェイルオーバー能力を提供する例示的なアーキテクチャを示す図である。 [0019]サービスがイベントグリッドサービスにイベント発行を発行しており、イベント発行が、特定のトピックに特有であり、サブスクライバーが、それらのイベント発行に関する情報を受信している、例示的なアーキテクチャを示し、さらに、イベントグリッドサービスがフロントエンド翻訳/相関プロセスを実施することができることを示す図である。 [0020]サービスが、イベント発行をイベントグリッドサービスにプッシュする前に、翻訳プロセスを実施している例示的なアーキテクチャを示す図である。 [0021]イベントグリッドサービスが、イベントデータをサブスクライバーにプッシュする前に、バックエンド翻訳プロセスを実施することができる例示的なアーキテクチャを示す図である。 [0022]イベントグリッドサービスが、フロントエンド翻訳プロセスおよびバックエンド翻訳プロセスの両方を実施することができることを示す図である。 [0023]単一のサブスクライバーが、複数の異なるトピックに対応するイベントデータを受信することができることを実証する図である。 [0024]複数の異なるサービスが、同じトピックのためのイベントデータを発行することができること、および、複数の異なるサブスクライバーが、その同じトピックのためのイベントデータを受信することができることを例証する図である。 [0025]準拠しないデータスキーマでコンパイルされる受信したデータを、準拠するデータスキーマに含まれるイベントフィールドにマッピングするための例示的な方法のフローチャートを例証する図である。 [0026]1つまたは複数のパブリッシングサービスから受信されるイベントデータを、イベントデータに対応するトピックの1つまたは複数のサブスクライバーにプッシュするための例示的な方法のフローチャートを例証する図である。 [0027]1つまたは複数のパブリッシングサービスからイベント発行を受信するため、およびイベント発行内に含まれる情報を1つまたは複数のサブスクライバーにプッシュするための例示的な方法のフローチャートを例証する図である。 [0028]本明細書に説明される動作のいずれかを実施するように構成される例示的なコンピューターシステムを例証する図である。
[0029]開示された実施形態のうちのいくつかは、1つのフォーマットで整理されるイベントデータが異なるフォーマットに翻訳され得るように、イベントグリッドサービスがマッピングをインテリジェントに生成することを可能にするシステムおよび方法に関する。この点に関して、イベントグリッドサービスは、異なるタイプの入力フォーマットを識別して、多くの異なるタイプの出力フォーマットに変換することができる。これらの動作を実施することによって、任意の数の異なるアプリケーションおよびサービスは、それらのサービスおよびアプリケーションが自らのネイティブフォーマット方法論を変更または修正することを必要とせずに相互接続され得るため、かなりの利点が実現される。
[0030]いくつかの実施形態において、イベントグリッドサービスは、特定のフォーマットで整理されるイベントデータが受信されるときを検出し、次いで、そのフォーマットが既存のフォーマットに準拠するかどうかを決定する。それが既存のフォーマットに準拠する場合、イベントグリッドサービスは、導出されたマッピングを使用して翻訳プロセスを実施する必要はない。しかしながら、特定のフォーマットが、準拠しない、または部分的にしか準拠しない場合、イベントグリッドサービスは、マッピングをインテリジェントに導出し、このマッピングは次いで、イベントデータを、それが既存のフォーマット内のデータフィールドに対応するように翻訳するために使用される。後に説明されるように、このマッピングを導出し、この翻訳を実施することは共に、インテリジェントなやり方で実施され、多くの異なる因子に基づき得る。
[0031]いくつかの実施形態において、イベントデータは、そのイベントデータのサブスクライバーにプッシュされ得る。例えば、特定のトピックのためのイベントデータが受信され得る。トピックおよびデータを識別した後、適切なサブスクライバー(すなわち、登録プロセスを通じてこのトピックに関心があることを表明しているサブスクライバー)は、このイベントデータに関して通知され得る。イベントデータが、サブスクライバーに好適なスキーマで配置される場合、マッピングは実施されない。しかしながら、そうでない場合は、マッピングプロセスがイベントデータに対して実施されて、データがサブスクライバーの要件に従ってフォーマットされることを確実にする。その後、いくつか(またはすべて)の関連データは、次いでサブスクライバーにプッシュされる。
[0032]いくつかの実施形態において、システムおよび方法は、パブリッシングサービスからイベント発行を受信するため、および特定の情報をその情報のサブスクライバーにプッシュするために利用可能である。最初に、イベントグリッドサービスは、確立されたトピックに対応し、かつイベントデータを含むイベント発行を(例えば、パブリッシングサービスから)受信する。マッピングの使用により、イベントグリッドサービスは、イベントデータのうちのいくつかを、それがトピックのために確立されているイベントスキーマ内のフィールドに位置対応するようにマッピングすることができる。このマッピングが完了した後、この情報のサブスクライバーは、関連イベントデータ(上に説明されるデータなど)が受信されるときに通知され得る。ここでは、サブスクライバーは、イベントグリッドサービスとのサブスクリプションを有する。このサブスクリプションは、(後により詳細に説明されるように)サブスクライバーが、どのタイプのデータを通知されることを望むかを識別する。マッピングされたデータは、サブスクライバーが受信することを望む情報に対応する特定のデータを含む。続いて、関連データは、非関連データから隔離され、その後サブスクライバーにプッシュされ得る。
[0033]先に説明されるように、従来の通知およびマッピング技術は、それらが他のアプリケーションおよびシステムとの相互運用を促進することができない厳密なスキーマを必要とすることから、非常に厳正で柔軟性がない。対照的に、開示された実施形態は、非常に動的であり、サブスクライバーをパブリッシングサービスと相互接続するための柔軟な選択肢を提供する。その結果、任意の数のエンティティが、シームレスな様式で、およびそれらのエンティティが変更または修正される必要なしに、相互接続され得る。さらには、イベントグリッドサービスは以前のマッピングを格納することができるため、イベントグリッドサービスは、新規のマッピングを導出するときに、それらの既存のマッピングから学習することができる。この点に関して、イベントグリッドサービスは、マッピング導出プロセスを向上させるため、あるいは改善するために、マシン学習を利用し得る。
[0034]実施形態のいくつかおよび利点のいくつかを高水準で説明したが、これより、クライアントがとり得る様々な形態のうちのいくつかを例証する図1に注目する。その説明の後、パブリッシングサービスの属性のうちのいくつかを説明する図2および図3に注目する。次いで、図4〜図12が論じられる。これらの図は、どのようにしてイベントグリッドサービスが動作するかに関して、様々なアーキテクチャおよび補助的な例証を説明する。その議論の後、どのようにしてイベントグリッドがイベント発行を処理し得るかについての様々な例示的な方法を説明する図13〜図15に注目する。最後に、図16が提示される。この図は、開示された動作のいずれかを実施するように構成され得る例示的なコンピューターシステムを説明する。
クライアントおよびサービス
[0035]クラウド動作は、典型的には、複数の異なるサービスまたはアプリケーションを構成する、または相互接続することによって、構築される。例として、アプリケーションは、ファイルを格納するため、高速のキー値ルックアップを実施するため、および特定のビジネスロジックをホストするためにサービスを使用するように構成され得る。いくつかの状況では、任意の数のこれらのサービスまたはアプリケーションは、独自のカスタムアプリケーションロジック、データフォーマット技術、または通信プロトコルを有し得る。これらの異なる構成が理由で、多くの場合、これらのエンティティを相互に結び付けるのは非常に労力を要しかつ時間のかかる取り組みである。開示された実施形態は、任意の数のサービスおよびアプリケーション間の高い相互運用性を提供することが可能な柔軟かつ非常に動的なイベント駆動型アーキテクチャをもたらすことによって、これらのニーズ(ならびに他のニーズ)を満足する。
[0036]これらのサービスおよびアプリケーションが作業を実施するとき、それらは、多くの場合、イベントの作成をトリガする。イベントは、システム内で起こっている何らかのアクションまたは動作を完全に説明する最小量の情報である。イベントの例としては、限定されるものではないが、ファイル、テーブル、ディレクトリ、もしくはデータベースの作成(例えば、コンピューター上、内部ネットワーク内、またはクラウド内)、それらの構築物(すなわち、ファイル、テーブルなど)の修正、それらの構築物のいずれかの削除、またはハードウェアもしくはソフトウェアによって認識可能である任意の他の検出可能な出来事(例えば、クラウド内で実行するサービスは、イベントを実行および/または検出することができる)が挙げられる。イベントは、典型的には、限定されるものではないが、イベントを生成したソースの識別、イベントが起こった時間もしくは作成された時間、またはイベントのための固有の識別子などの情報を含む。
[0037]いくつかの実施形態において、イベントはまた、イベントを引き起こした特定のアクションまたは動作にのみ関連する特定の情報を含む。例えば、イベントが、新規ファイルがファイルディレクトリまたはストレージ内に作成されるときにトリガされる場合、そのイベントは、ファイルに関する特定の詳細事項、ファイルのメタデータ、ファイルの場所などを含み得る。イベントが、仮想マシン(VM)がリブートする(または何らかの他のタイプの動作を実施する)ときにトリガされる場合、そのイベントは、問題のVMに関する特定の情報(例えば、アドレス、ソフトウェア情報、ハードウェア情報など)、リブートの理由、および/または他の関連情報を含み得る。
[0038]クラウド・ファーストおよびサーバレスの世界では、イベントは、1つのアプリケーションまたは複数のアプリケーションの様々な異なる態様を接続する象徴的な“糊”である。イベントは、マイクロサービス、クラウドサービスから、ネットワークエッジから、またはインターネット・オブ・シングス(“IoT”)デバイスからさえも生じ得る。イベントは、インフラストラクチャ自動化から、またはアプリケーション通信からファイアする。イベントは、データプラットフォームからのトリガとして、または複雑な分析および人工知能(“AI”)サービスを接続するための手段としてファイアされ得る。イベントのソースおよびコンシューマ(すなわち、サブスクライバー)は、クラウド(例えば、パブリックおよびプライベート)およびネットワークエッジに広がっていて、非常に数多く多様である。
[0039]“イベントソース”は、典型的には、アクション、動作、または他のタイプの出来事(すなわち、“イベント”)が起こるところの、というよりも、イベントが発生するところのシステムである。後でより詳細に説明されるように、イベントは、イベントサブスクライバーが、興味のあるイベントのタイプに基づいてどのトピックをサブスクライブすべきかを適切に決めることができるように、トピックに分類され得る。トピックはまた、サブスクライバーが、イベントをコンシュームする仕方を発見することができるようにイベントスキーマを提供する。
[0040]先に説明されるように、関心のあるエンティティ(すなわち、サブスクライバーまたはコンシューマ)がイベントに関する情報を受信することを望むという状況が存在し得る。イベントサブスクライバーは、それらがイベントに関する通知を受信したときに、それらのイベントに反応することに関心のある他のアプリケーションまたはサービスである。例として、イベントサブスクライバーは、最初、それが、特定のタイプのストレージファイルが特定のエンドポイントにおいて作成されるときに発行を受信することに関心があることを示すことができる。その後、サブスクライバーは、後でより詳細に説明されるように、それがそのイベントに関する通知を受信した後に特定の様式で反応し得る。イベントは、典型的には、非同期様式で生成されることから、イベントのサブスクライバーは、イベントが正確にいつ発生するかについて知ることはできない。本明細書で使用される場合、イベントハンドラー、ハンドラー、イベントサブスクライバー、およびサブスクライバーという用語は、同義に使用されるものとする。
[0041]開示された実施形態によると、イベントグリッドは、ソースをサブスクライバーと相互接続する構成概念である。イベントグリッドの観点から、サブスクライバーは、イベントが向かっているところの、およびイベントを首尾よく処理するために何らかのさらなるアクションが発生し得るところの最終の地である。基本的な導入として、イベントグリッドは、複数のサブスクライバータイプをサポートし、(サブスクライバーに応じて)イベントグリッドは、イベントの配信を保証するために異なる機序に従う。例えば、イベントを配信することは、ハンドラーが状態コード(例えば、状態コード200−OK)を返すまで、繰り返しリトライされ得る。ストレージキューイングの場合、イベントは、キューサービスがメッセージを首尾よく処理することができるまでリトライされ得る。
[0042]そのイベントを外部の第三者に知らせるため、イベントのソースは、イベント発行を介してそのイベントと発行し得る。イベント発行は、1つまたは複数のエンティティにブロードキャスト送信される。上に論じられる例を使用すると、イベント発行は、ファイルが作成されたことを示す発行であり得る。イベント発行は、例えば、イベントがいつ発生したか、もしくは発行がいつ作成されたか、発生したイベントのタイプは何であるか、どのエンティティがイベントを開始したのか(すなわち、パブリッシングサービスの識別、またはイベント発行が関連付けられるカスタマアカウントがどれであるかの識別)、どのエンティティがイベントにより影響を受けるか、イベント発行のタイプ、および/またはイベントと関連付けられた任意の他の情報を含む、イベントに関する詳細を含み得る。イベント発行は、イベント自体、またはイベントの要約版であり得る。
[0043]この点に関して、外部エンティティは、イベントに関する詳細または細目を提供するイベント発行を受信することによって、イベントについて学習することができる。例として、クラウド内で実行するファイルサービスについて検討する。新規ファイルがファイルサービスによって作成されると、イベントが発生し(すなわち、新規ファイルの作成)、ファイルサービスは、そのイベントに関するイベント発行を生成することができる。このファイルサービスは、イベント発行を、ファイル作成について学習することに関心があり得る任意の他のサービス、アプリケーション、またはエンティティに伝送することができる。
[0044]実践的な例として、クライアントが自分の自動車が損傷したときに自分の自動車の写真をアップロードすることを可能にするように構成される自動車保険アプリケーションについて検討する。これらの写真は、支払請求の際に役に立つ。自動車保険アプリケーションは、ユーザーのモバイルデバイス上で実行可能であるフロントエンドクライアントアプリケーションを有し得る。ユーザーが自分の自動車の写真を撮り、次いでフロントエンドクライアントアプリケーションを使用してそれらの写真をアップロードするとき、フロントエンドクライアントアプリケーションは、写真ファイルがクラウド内に作成される写真アップロードイベントを実行する。自動車保険アプリケーションに未決請求を通知するため、写真アップロードイベントに対応するイベント発行が、自動車保険アプリケーションに配信され得る。この様式では、自動車保険アプリケーションは、請求が未決であるときに通知され、“請求処理”フェーズを開始することができる。
[0045]それでは、これより、サービス(後の図に示される)を、サービスがイベント発行を生成することができるように構成することができるクライアント100の例を示す図1に注目する。図1に示されるように、クライアント100は、多くの異なる形態をとり得る。例えば、クライアント100は、人間のユーザーがサービスを構成するために対話することができるユーザーポータル105(すなわち、ユーザーインタフェース)であり得る。クライアント100はまた、コマンドラインツール110であり得る。代替的に、クライアント100は、独立して通信すること、およびサービスを構成することができるソフトウェアアプリケーション115であり得る。省略記号120は、クライアント100が他の形態をとり得ること、および単に図1に示される形態に限定されないことを実証する。
[0046]図2は、図1のクライアント100の例示的な実装形態であるクライアント200を示す。ここでは、クライアント200は、サービス205と通信している。サービス205は任意のタイプのサービスであり得ることを理解されたい。単に例として、サービス205は、Eメールサービス、カレンダーサービス、データストレージサービス、ソーシャルネットワーキングサービス、ドキュメントサービス、バックアップサービス、金融サービス、ヘルスケアサービス、政府サービス、または任意の他のタイプのサービスであり得る。
[0047]示されるように、サービス205は、独自のデータフォーマットスキーマ(すなわち、スキーマ210)を含む。本明細書で使用される場合、“スキーマ”(例えば、スキーマ210)は、エンティティ(例えば、サービス205)が、それが操作するデータをどのように整理およびフォーマットするかを表す。例えば、スキーマ210は、サービス205のデータ設計図またはデータベース構造を象徴的に表す。
[0048]図3は、スキーマ(別名フォーマット技術)についてより詳細に示す。具体的には、図3は、図2のサービス205の例示的な実装形態であり得るサービス300、およびスキーマ210の例示的な実装形態であり得るスキーマ305を示す。示されるように、スキーマ305は、いくつかのデータフィールド(例えば、“name”、“type”、および“time”)を含む。省略記号310は、スキーマ305が任意の数のデータフィールドを有し得ること、および単に図3に示されるものに限定されないことを実証する。
[0049]この例示的なシナリオでは、サービス300は、“name”データフィールドに名前“Foo”が入っており、“type”データフィールドにタイプ“File Creation”が入っており、“time”データフィールドに時間“5−21−2018@13:51:23”が入っているデータに対して動作する。当然ながら、これらは例示的なデータ値であり、限定するものとして見なされるべきではない。サービス300は、スキーマ305の多くの異なるインスタンスを使用して、各インスタンスが隔離されたデータを含むが、それにもかかわらず、スキーマ305によって要求される様式でフォーマットされるように、動作し得る。
サービスの登録
[0050]多くの場合において、イベント発行を集中型サービス(すなわち、イベントグリッド)にプッシュすることが望ましく、その結果として、集中型サービスは次いで、(1)それらのイベント発行を整理し、(2)任意の特に関連した情報をフィルタリングして取り出し、(3)その関連した情報を関心のあるエンティティにプッシュすることができる。そのような構成は、図4においてアーキテクチャ400により示される。
[0051]具体的には、アーキテクチャ400は、クラウド405、およびクラウド405において動作する集中型イベントグリッドサービス410を含む。イベントグリッドサービス410は、任意の数のアプリケーションプログラムインターフェース(API)、例えば、API415およびAPI420などを含む。API415および420は、以下により詳細に説明されるように、クライアントが最初にパブリッシングサービスをイベントグリッドサービス410に登録することを可能にするためにクライアントに対して公開され得る動作構成概念(例えば、ツール、ルーチン、プロトコルなど)である。
[0052]イベントグリッドサービス410はまた、サブスクリプションデータベース425と関連付けられる。サブスクリプションデータベース425は、イベントグリッドサービス410を動作させている同じノードに含まれ得るか、またはサブスクリプションデータベース425は、異なるノードに位置し得るが、イベントグリッドサービス410によりアクセス可能である。サブスクリプションデータベース425がどこに位置するかにかかわらず、イベントグリッドサービス410は、格納のために登録データ430をサブスクリプションデータベース425に渡すことができる。簡単な導入として、サブスクリプションは、サブスクライバーが受信することに関心があるトピックのためのイベントがどれであるかについて命令を提供する。サブスクリプションはまた、どのようにしてイベントがサブスクライバーに配信されるべきかに関する構成データを保持するアーチファクトである。
[0053]アーキテクチャ400はまた、クライアント435およびクライアント440を含む。クライアント435および440は、図2のクライアント200の例示的な実装形態であり得る。アーキテクチャ400はまた、サービス445を、その対応するスキーマ450と共に、およびサービス455を、その対応するスキーマ460と共に含む。これらのサービスおよびスキーマは、図3のサービス300およびスキーマ305の例示的な実装形態であり得る。
[0054]先に説明されるように、多くの場合、サービスがイベント発行を外部エンティティに伝送するようにサービスを構成することが望ましい。この場合、サービス445および455は、サービス445および455がイベント発行をイベントグリッドサービス410に“プッシュ”または伝送するように、それぞれクライアント435および440によって構成されている。それをするために、イベントグリッドサービス410は、最初、そのAPI415および420をクライアント435および440にそれぞれ公開し、その結果として、トピックがイベント発行を整理するために作成され得る。
[0055]開示された実施形態によると、サービスは、確立された“トピック”に基づいてイベント発行をイベントグリッドサービス410にプッシュする。本明細書で使用される場合、“トピック”は、どんなイベントが関連するのかを理解するための初期基盤を提供する構成可能な主題領域である。トピックの例は、限定されるものではないが、いくつか例を挙げてみると、特定のサービスのためのトピック(例えば、そのサービスのためのすべてのイベントがそのトピックに分類される(または属する))、特定のカスタマのためのトピック(例えば、カスタマからのすべてのイベントがそのトピックに分類される)、特定のタイプのイベントのためのトピック(例えば、特定のタイプのすべてのイベントが、それらのイベントがいつまたはどこで生じるかにかかわらず、そのトピックに分類される)、サービス、カスタマ、および/またはイベントのグループのためのトピックを含む。これらは単に例であり、より広範な原則が適用されるものとする。
[0056]例としてクライアント435を使用すると、サービス445のイベントグリッドサービス410への初期登録の間、クライアント435は、API415を使用して、イベントグリッドサービス410がどのように動作するかを学習することができる。例えば、クライアント435は、イベントグリッドサービス410が特定のトピックのためにどのタイプのスキーマを使用するかを学習することができる。サービス445がどのようにしてそのスキーマ450を含むかに類似して、イベントグリッドサービス410もまた、トピックごとに1つまたは複数の異なるスキーマを使用して動作するように構成される。イベントグリッドサービス410は集中型サービスであるため、イベントグリッドサービス410が多くの異なるスキーマ(例えば、トピックごとに1つ(ただしそれ以上の可能性もある)を使用して動作することを可能にすることが望ましい。この様式では、イベントグリッドサービス410は、異なる準拠するスキーマ、例えば、クラウドイベントスキーマ、イベントグリッドスキーマ、または任意の他のタイプのスキーマなどを使用して動作し得る。
[0057]いくつかの場合において、イベントグリッドサービス410によって使用されるスキーマは、サービス445のスキーマ450とは異なり得る。このような場合には、クライアント435は、サービス445からスキーマ情報465を獲得して、スキーマ情報465をイベントグリッドサービス410に伝送することができる。クライアント440は、スキーマ情報475をイベントグリッドサービス410に伝送することによって同様の動作を実施し得る。
[0058]イベントグリッドサービス410がスキーマ情報465および/または475を獲得すると、イベントグリッドサービス410は、スキーマ450および460をイベントグリッドサービス410によって使用されるスキーマのうちの1つ(あるいは新規スキーマさえ)にマッピングするためにいくつかの異なる動作を実施することができる。
[0059]第1の例では、人間の開発者が、サービスによって使用されるスキーマをイベントグリッドサービス410によって使用されるスキーマにマッピングする、または相関させるために、手動でマッピングを実施することができる。例として図3を使用すると、人間の開発者は、“name”、“type”、および“time”データフィールドをイベントグリッドサービス410によって使用される同等のフィールドにマッピングすることができる。
[0060]別の例では、イベントグリッドサービス410は、サービスのスキーマ内のデータフィールドをインテリジェントに分析して、プログラムで/自動的にマッピングを導出することができ、これは、人間の開発者がこの相関を実施し得るやり方と同様である。いくつかの実施形態において、マッピングを自動的に導出することは、パブリッシングサービスの1つまたは複数の属性を分析し、次いでマッピングを、それが少なくとも部分的にこれらの属性に基づくように構築することによって実施され得る。そのようなプロセスは、それが非常に効率的であることから特に有益である。イベントグリッドサービス410が、そのインテリジェントマッピングを実施するとき、それはまた、マッピングされたデータフィールドの各々について信頼性メトリックのレベルを生成し得る。これらの確率メトリック(すなわち、信頼性メトリックのレベル)は、おそらくはマッピングの正確性を検証または認証するためのレビューのために、人間の開発者に提供され得る。
[0061]別の例では、イベントグリッドサービス410は、データフィールドのサブセットのために初期マッピングを実施し得る。次いで、イベントグリッドサービス410が、(1)マッピングすることができなかったデータフィールド、または(2)マッピングを行ったが、確率メトリックが予め定められた許容しきい値未満であったデータフィールドについて、イベントグリッドサービス410は、マッピングプロセスを完了させるためにそれらのデータフィールドを人間の開発者に配信することができる。そのようなものとして、イベントグリッドサービス410は、追加の協議が必要とされるときを決定するために確率メトリックに依存し得る。
[0062]さらに別の例では、イベントグリッドサービス410は、任意の既存のスキーマに対する、ならびにそれが獲得する任意の新規スキーマに対するマシン学習を実施することができる。言い換えると、マッピングを自動的に導出することは、(1)1つまたは複数の既存のマッピングが使用のために現在利用可能である(前回導出された)と決定すること、(2)それらの既存のマッピングの属性を学習すること、次いで(3)学習した情報に基づいて新規マッピングを導出することによって実施され得る。
[0063]例えば、サブスクリプションデータベース425は、イベントグリッドサービス410が以前に使用した、または知っていた過去のスキーマのすべてに関する情報を有するテーブルを含み得る。この情報に対するマシン学習を実施することによって、イベントグリッドサービス410は、サービスのスキーマとイベントグリッドサービス410によって使用されるスキーマとのより直感的および/またはより正確なマッピングを提供することができる場合がある。この様式では、生成される任意の新規マッピングは、将来のアクションおよび/または将来の学習状況のためのテンプレートとしての役割を果たし得る。
[0064]図4に示されるシナリオは、イベントグリッドサービス410と特定のエンドポイントサービス(例えば、サービス445および455)との間の仲介として作用するクライアント(例えば、クライアント435および440)を例証するが、常にこうであるわけではない。例えば、いくつかの状況では、サービスは、マッピングが導出され得るようにこの初期登録プロセスを実施するためにイベントグリッドサービス410と直接通信することができる場合がある。したがって、そのようなシナリオにおいては、仲介クライアントは回避され得、登録プロセスは、さらに最適化され得る。
[0065]登録プロセス(図4に全体的に説明される)の最終結果は、サービスによって使用されるスキーマをイベントグリッドサービスによって使用されるスキーマにマッピングするマッピングである。当然ながら、サービスのスキーマがイベントグリッドサービスのスキーマに準拠する場合、このマッピング導出プロセスは回避され得るということを理解されたい。いずれにせよ、図5は、この最終結果の例を示す。
[0066]具体的には、図5は、トピック500ごとのエンドマップを示す。登録プロセスの間、新規トピックが生成され得、イベントグリッドサービスは、その新規トピックのために特定のスキーマを使用し得るということを理解されたい。そのようなものとして、登録プロセスの間、新規マッピングが、その新規トピックのために形成され得、その結果として、サービスのスキーマが、その特定のトピックのためにイベントグリッドサービスによって使用されるスキーマに正しく位置対応する。
[0067]代替的に、登録プロセスの間、既存のトピックが、(例えば、いくつかの既存のトピックを列挙するドロップダウンボックスを介して)選択され得、その結果として、イベントグリッドサービスは、その既存のトピックのための特定のスキーマを既に有する。新規サービスがそのトピックのためのイベント発行を発行するとき、登録プロセスの間、新規または既存のマッピングが、サービスのスキーマがイベントグリッドのスキーマに正しく位置対応することを確実にするために作成または選択され得る。
[0068]トピックごとのエンドマップ500は、“name”データフィールドが“id”データフィールドにマッピングされており、“type”データフィールドが“eventType”データフィールドにマッピングされており、“time”データフィールドが“time”データフィールドにマッピングされていることを示す。“name”、“type”、および“time”データフィールドは、サービスの特定のスキーマに対応し、“id”、“eventType”、および“time”データフィールドは、イベントグリッドサービスによって使用されるスキーマに対応する。示されるように、これらのデータフィールドは、“name”データフィールドを割り当てられた実際のイベントデータがここでは“id”データフィールドにマッピングされるように、互いに相関(すなわち、マッピング)される。省略記号505および510は、任意の数のマッピングまたは相関が起こり得ることを実証する。さらには、これらのデータフィールドをマッピングするプロセスは、先に説明されるように、様々なやり方のうちのいずれかで実施され得る。
ルーティングアーキテクチャ
[0069]これより、イベント発行を関心のある外部エンティティにプッシュするために使用され得る例示的なアーキテクチャ600を示す図6Aに注目する。アーキテクチャ600は、図4のイベントグリッドサービス410の例示的な実装形態であり得るイベントグリッドサービス605、およびサブスクリプションデータベース425の例示的な実装形態であり得るサブスクリプションデータベース610を含む。アーキテクチャ600はまた、サービス615をスキーマ620と共に含み、これは、それぞれサービス445およびスキーマ450の例示的な実装形態であり得る。
[0070]それらのエンティティ/構成概念に加えて、アーキテクチャ600はまた、サブスクライバー630(すなわち、イベントデータのエンドコンシューマ)を含む。ここでは、サブスクライバー630は、1つまたは複数のトピックに関する情報を受信することに関心のあるエンティティである。サービス615は、イベント発行625をイベントグリッドサービス605にプッシュし、このイベント発行625は、確立されたトピックと関連付けられる。この例では、サブスクライバー630は、このトピックに対応する特定のイベントデータを獲得することに関心がある。
[0071]言い換えると、サブスクライバー630は、トピックのためのサブスクリプションを有する。イベントデータをサブスクライバー630にプッシュするプロセスを促進するため、イベントグリッドサービス605は、サブスクリプションデータベース610内にサブスクリプションに関する情報を維持する。この様式では、イベントグリッドサービス605は、関連するイベントデータのみをサブスクライバー630にプッシュすることができる。本明細書で使用される場合、“関連する”イベントデータは、サブスクライバー630が学習することに関心のある特定のイベントデータタイプに準拠するデータである。明白にするため、サブスクライバー630は、そのトピックのために発行されるイベントデータのすべてを受信することには関心がない場合がある。むしろ、サブスクライバー630は、イベントデータのサブセットのみを望む場合がある。そのようなものとして、サブスクライバー630のサブスクリプションは、サブスクライバー630がどのタイプのイベントデータが通知されることを望むかを指定することができ、これらの基準は、サブスクリプションデータベース610に格納される。
[0072]後でより詳細に説明されるように、イベント発行625内のイベントデータは、その特定のトピックのためにイベントグリッドサービス605によって使用されるスキーマに準拠するように、サービス615によって、あるいはイベントグリッドサービス605によってさえも翻訳され得る。いずれにしても、イベントグリッドサービス605は、最終的に、対応するトピックのために選択された適切なフォーマット/スキーマでイベントデータを受信する。
[0073]続いて、受信したイベントデータ625の1つまたは複数の部分は、次いで、データ635によって示されるようにサブスクライバー630にプッシュされる。この様式では、イベントグリッドサービス605は、イベント発行(イベントデータを含む)を受信し、それらの発行を処理し、次いでそれらの発行からの関連する情報を、特定のトピックに対応するイベントデータを受信することに関心がある1つまたは複数のサブスクライバーに配信することができる集中型イベント発行レポジトリとして作用する。
[0074]図6Aは、任意の数のサブスクライバーのためのサブスクリプション情報を維持することができる焦点を絞ったアーキテクチャを提示した。図6Bは、図6Aのアーキテクチャを表す、全体的なアーキテクチャの拡張した、というよりも拡大したバージョンを提示する。具体的には、図6Bのアーキテクチャは、ソースをサブスクライバーと相互接続することだけではなく、サブスクリプションデータが、障害があってもサブスクリプション情報が失われることがないように適切に守られる/保護されることを確実にすることに焦点を合わせる。
[0075]示されるように、図6Bは、図6Aに示されるアーキテクチャ600に対する代替的な構成を備え、アーキテクチャ600によって提供される機能と同様の機能を提供することができる局地的なイベントグリッド640を含む。この点に関して、局地的なイベントグリッド640は、図6Aのイベントグリッドサービス605と同様であるか、またはそれに類似する。
[0076]示されるように、局地的なイベントグリッド640は、トラフィックマネージャー層645、第1の局地的なクラスタ650A、および第2の局地的なクラスタ650Bなど、様々な異なる構成要素を含む。第1の局地的なクラスタ650Aは、エッジ層655A、ローカルメタデータキャッシュ660A、およびクラスタリソースガバナ655Aを含む。第2の局地的なクラスタ650Bは、エッジ層655B、ローカルメタデータキャッシュ660B、およびクラスタリソースガバナ665Bなど、同様の構成要素を含む。局地的なイベントグリッド640は、局地的なイベントグリッド640の一部として含まれる、および/または別個/遠隔のエンティティ内に組み込まれるメタデータストア670と通信することができる。
[0077]メタデータストア670は、以下の情報のうちのいずれか:(1)トピックのためのスキーマを含むトピック情報、(2)イベントソースのための認証情報、ならびに/または(3)サブスクリプションおよびそれらの構成を公式に格納する構成要素である。いくつかの実装形態において、メタデータストア670は、すべてのそのデータが任意の数の他の領域において複製された状態にある完全に区分された分散サービスであり得る。
[0078]いくつかの実施形態において、局地的なクラスタ650Aおよび650Bは、自律的/非相互依存的である複製データベースを含むシェアード・ナッシング・アーキテクチャを利用する。その結果、局地的なクラスタ650Aおよび650Bは各々、独自のそれぞれのローカルメタデータキャッシュ660Aおよび660Bをそれぞれ有し得る。これらのキャッシュは、いくつかの実施形態において、それぞれエッジ層655Aおよび655Bと共同設置されるメタデータストア670のフルキャッシュを有する。この永続性のキャッシュ(すなわち、ローカルメタデータキャッシュ660Aおよび660B)は、メタデータストア670と継続的に同期され得る。ローカルメタデータキャッシュ660Aおよび660Bはまた、エッジ層655Aおよび655Bが発行し得る任意の数のクエリにスケールアウトするように区分けされ得る。加えて、ローカルメタデータキャッシュ660Aおよび660Bは、イベントルーティングが、大量(例えば、数百万)のサブスクリプションが確立されるときにさえ、できる限り高速であるように、インデックスされ得るか、または別途整理され得る。
[0079]エッジ層655Aおよび655Bは、いくつかの実施形態において、イベントソース(例えば、イベントソース680A、680B、680C、および680D)からイベントを受信し、そのイベントを任意の関心のあるサブスクライバーに確実に配信することに関与する。いくつかの実施形態において、エッジ層655Aおよび655Bは、以下の動作の任意の組み合わせ:(1)イベントをディスクに安全に格納し、そのイベントを複製してイベント損失を防ぐこと、(2)システム内に存在するサブスクリプションに基づいてイベントをルーティングもしくはフィルタリングすること、および/または、(3)イベントを関心のあるサブスクライバーに配信すること、を実施することによってイベントを処理する。
[0080]いくつかの場合において、トラフィックマネージャー層645は、イベントソース(例えば、イベントソース680A、680B、680C、および680D)が局地的なクラスタ(例えば、局地的なクラスタ650Aおよび650B)に直接発行しない場合などに、通信をルーティングするために使用される。むしろ、そのような場合には、イベントソースは、トラフィックマネージャー層645を通じて通信する。このレベルの間接性は、要求に応じて、または必要に応じて、局地的なイベントグリッド640において追加クラスタを追加および除去するという柔軟性を可能にする。
[0081]いくつかの実施形態において、局地的なクラスタ650Aおよび650B内のエッジノードは、リソースメトリックおよび/または他の統計をクラスタリソースガバナ665Aおよび665Bを放出し得る。これらのガバナは、いくつかの実施形態において、サービス品質をできる限り高く保つように、または既存のサービスレベルアグリーメント(Service Level Agreement:SLA)によって指定される予め定められたサービス品質を少なくとも満足するように、受信したメトリックに基づいて、予め定められたルールのセットを適用して、適切な行動をとる(例えば、システム構成要素の性能を変更すること)。例えば、メトリックのいくつかは、限定されるものではないが、いくつか例を挙げると、CPU使用量、メモリ使用量、およびイベントキュー長さを含む。クラスタリソースガバナ665Aおよび665Bがとることができる潜在的な行動のいくつかは、限定されるものではないが、接続の均衡を保つために個々のノードに接続を切るように要請すること、ノードを除去すること、および/または、ノードに新規の仕事を受けさせないもしくは新規トラフィックを処理させないようにすることを含む。
[0082]クラスタリソースガバナ665Aおよび665Bと同様に、局地的なリソースガバナ675は局地的なクラスタ(例えば、局地的なクラスタ650Aおよび650B)のいずれかから凝集したメトリックを受信し、次いで、その凝集したメトリックに基づいて、既存のSLAを満足するために必要とされるように、局地的なクラスタ(例えば、局地的なクラスタ650Aおよび650B)間の負荷の均衡を保つようにトラフィックマネージャー層645を構成する。
[0083]複数のシェアド・ナッシングの局地的なクラスタ(例えば、局地的なクラスタ650Aおよび650B)、それに加えてトラフィックマネージャー層645の設計では、局地的なイベントグリッド640は、任意の地政学的領域における局地的障害のための高い可用性を提供することができる。さらには、局地的なイベントグリッド640は、完全な損失の場合に透過的なフェイルオーバーを提供するように設計される。
[0084]いくつかの実施形態において、これは、1つの局地的なイベントグリッドを別の局地的なイベントグリッドとペアリングすることによって達成される。例えば、米国中南部(USSC)に位置する局地的なイベントグリッドが存在すると仮定し、米国中北部(USNC)に位置する局地的なイベントグリッドが存在するとさらに仮定する。これら2つの局地的なイベントグリッドをペアリングすることによって、本実施形態は、安全なフェイルオーバーシステムを確実にすることができる。
[0085]1つの局地的なイベントグリッドを別の局地的なイベントグリッドと“ペアリング”するため、以下の動作が実施され得る。1つの動作は、特定のメタデータストア(例えば、メタデータストア670)の範囲が、それがもはや単に局所的ではないように地理的ペアリングされる(geo−paired)ことである。上の例を使用すると、USSCおよびUSNCのためのすべての(またはいくつかの)サブスクリプションが組み合わされて、別のバックアップメタデータストアサービス(例えば、メタデータストアUSSC_USNC)となることができる。
[0086]別の動作は、いくつかの局地的なクラスタからのサブスクリプションを、組み合わされたメタデータストアからの「地理的ペア(geo−pair)」と同期させることを含む。上の例に関して、USSCおよびUSNC内のすべての(またはいくつかの)局地的なクラスタ(例えば、局地的なクラスタ650Aおよび650B)は、メタデータストアUSSC_USNC内に規定されるサブスクリプションをローカルでキャッシュする。
[0087]別の動作は、イベントソース(例えば、イベントソース680A、680B、680C、および680D)が、ソース(例えば、イベントソース680A、680B、680C、および680D)と同じ地政学的地域内にある局地的なクラスタ(例えば、局地的なクラスタ650Aおよび650B)と通信するように、トラフィックマネージャー層645を構成することを含む。しかしながら、局地的な障害があった場合、トラフィックマネージャー層645は、地理的ペア内の利用可能な地域にすべてのトラフィックをリダイレクトするように再構成され得る。この様式では、サブスクライバーのサブスクリプションデータのすべてが保護され得る。
[0088]したがって、図6Aおよび図6Bに示されるイベント駆動のアーキテクチャは、上に概説されるように、および以下にさらに概説されるように、多くの利益を提供する。1つの利益としては、イベントグリッドおよびサブスクライバーの両方とネイティブに統合することができる(すなわち、サービスのネイティブスキーマへの変更の必要がない)サービスのリストまたは可用性を拡大することが挙げられる。別の利益としては、クロス・クラウドおよびクロス・サブスクライバー/パブリッシャー相互運用性を直接的に可能にする任意の数の異なる規格を採用する能力が挙げられる。
[0089]開示された実施形態によって提供されるさらに別の特徴は、配信不能に関する。例えば、細心の注意を払ったとしても、特定の宛先に向けられたイベントを、イベント自体の問題または受信者/サブスクライバーの問題に起因して配信することができないというシナリオが生じ得る。そのような“失われた”イベント(すなわち“配信不能物”)は、この配信に依存するビジネスに不可欠なプロセスが存在する場合には特に懸念となり得る。これを軽減するため、イベントグリッドは、サブスクライバーが、最終的に、それらが関心のあるイベントを受信することを確実にするのを助ける配信不能のためのサポートを提供する。例えば、イベントグリッドが、特定の期間(例えば、分、時間、日など)にわたるリトライの後にイベントを配信することができない場合、そのイベントは、ストレージアカウント内に置かれ得、これは後で分析され得るか、または失敗した配信のライブトラッキングについて監視され得る。
[0090]この様式では、イベントグリッドは、アプリケーションおよびサブスクライバーのためのイベントルーターまたは仲介として作用することができる。例えば、アプリケーションは、(1)イベントを発行するべき1つまたは複数のトピックを作成すること、(2)イベントに反応する必要に応じてサブスクリプションを作成すること、(3)対応するトピックにイベントを発行すること、および(4)適切な場合にイベントハンドラー内のイベントを処理することによって、アプリケーション自体によって生成されるイベントのストリームのためのイベントルーターとしてイベントグリッドを使用することができる。
[0091]アプリケーションはまた、クラウドサービスからのイベントをサブスクライブするためにイベントグリッドを使用することができる。いくつかの実施形態において、これは、(1)関心のあるリソースからイベントを受信するためにトピックをサブスクライブすること、および(2)適切な場合にイベントハンドラー内のイベントを処理することによって達成される。
[0092]上に示されるように、いくつかの実施形態において、イベントグリッドは、ユーザーのための透過的なスケールアウトおよびフェイルオーバー能力を有する局地的なサービスである。一部の領域では、イベントグリッドは、計算およびストレージリソースのクラスタのセットによって表される。これらのクラスタは、透過的なスケールアウトおよびフェイルオーバーモデルを提供するために連携して働く。したがって、図6Aおよび図6Bに示される例示的なアーキテクチャは、ソースをサブスクライバーと相互接続することができるイベントグリッドサービスについて説明する。
フロントエンド翻訳アーキテクチャ
[0093]これより、図6Aのアーキテクチャ600と同様であるアーキテクチャ700を示す図7に注目する。詳細には、アーキテクチャ700は、イベントグリッドサービス705が任意の数のトピックを取り扱い得ることを例証する。例えば、イベントグリッドサービス705は、トピック710、トピック715、およびトピック720のためのイベントデータを処理している。省略記号725は、イベントグリッドサービス705が、任意の数の異なるトピック(例えば、1、2、3、4、5、10、20、50、100、または100超のトピック)のための情報を取り扱い得ることを実証する。トピックの概念は先に詳細に説明されているため、繰り返されない。
[0094]イベントグリッドサービス705はまた、いくつかのマッピング構成要素、例えば、マッピング構成要素730、マッピング構成要素735、およびマッピング構成要素740を含むものとして示される。本明細書で使用される場合、これらのマッピング構成要素は、イベント発行をサービス745(例えば、サービス745A、745B、および745C。省略記号745Dは、任意の数のサービスがイベント発行を発行し得ることを実証する)から受信する。マッピング構成要素は、次いで、サービスおよび/またはトピックごとに初期登録プロセスの間に導出されたマッピングを使用して、発行内に含まれるイベントデータを翻訳する。そのようなものとして、各マッピング構成要素は、特定のトピックと関連付けられ得、その結果として、受信したイベントデータは、その特定のトピックのために使用されるスキーマへと翻訳される。
[0095]例えば、サービス745Aは、イベント発行750Aをマッピング構成要素730に伝送しており、サービス745Bは、イベント発行750Bをマッピング構成要素735に伝送しており、サービス745Cは、イベント発行750Cをマッピング構成要素740に伝送している。マッピング構成要素がサービスからイベント発行(イベントデータを含む)を受信すると、マッピング構成要素は、受信したイベントデータが、それぞれのトピックごとのスキーマに従って処理またはフォーマットされることを確実にする。
[0096]アーキテクチャ700はまた、サブスクライバー755を示す(例えば、サブスクライバー755A、サブスクライバー755B、およびサブスクライバー755C、また、省略記号755Dは、任意の数のサブスクライバーが、イベントグリッドサービス705と通信状態にあり、それをサブスクライブし得ることを実証する)。サービス745からイベント発行(イベントデータを含む)を受信した後、イベントグリッドサービス705は、それぞれのサブスクライバー755ごとにイベントデータの関連する部分を選択的に識別/フィルタリングすることができる。
[0097]示されるように、イベントグリッドサービス705は、関連するイベントデータ760A、760B、および760Cを、それぞれサブスクライバー755A、755B、および755Cに渡している。この様式では、イベントグリッドサービス705は、イベントデータを受信し、そのイベントデータを特定のトピックのための所望のスキーマへと翻訳し、そのイベントデータをフィルタリングし、その後、フィルタリングしたイベントデータを関心のあるサブスクライバーにプッシュすることができる。さらには、イベントグリッドサービス705は、複数の異なるパブリッシングサービスから複数のイベント発行を受信して、それらの発行を所望の様式で取り扱うことができる。例として、イベントグリッドサービス705は、各々がイベントグリッドサービス705とのサブスクリプションを有する複数のサブスクライバーと関連付けられ得、その結果として、イベントグリッドサービス705は、複数のイベントデータを複数のサブスクライバーにプッシュすることができる。
[0098]いくつかの実施形態において、データフィールドの一部は、最初、静的な値が埋め込まれ、後で、正しい値が自動挿入され得る。例えば、“time”フィールドは、最初は静的であり得るが、イベント発行が伝送される準備が整うと、このフィールドは、実際のイベント発行の時間を含めるために自動挿入され得る。追加的に、または代替的に、イベントタイプは、自動的に変更または挿入され得る。この自動挿入は、データフィールドのすべてに対して実施される必要はなく、むしろ、自動挿入のための好適な候補(例えば、固有ID、時間、アドレスなど)であるデータフィールドに対して実施され得る。
[0099]図8は、図7のアーキテクチャ700といくらか同様である別のアーキテクチャ800を示す。具体的には、アーキテクチャ800は、トピック810A、810B、および810Cを有するイベントグリッドサービス805を含む。サービス815も示される(例えば、サービス815A、815B、および815C。省略記号815Dは任意の数のサービスが存在し得ることを実証している)。イベントグリッドサービス705が翻訳プロセスを実施したアーキテクチャ700とは対照的に、アーキテクチャ800では、サービス815が、翻訳プロセスを実施するように構成される。
[00100]初期登録プロセスの間、マッピングは、サービスのスキーマを特定のトピックのためにイベントグリッドサービス805によって使用されるスキーマにマッピングするように開発されていることを思い出してほしい。そのようなものとして、サービス815は、マップを生成しておらず、代わりに、サービス815は、それらのイベントデータがイベントグリッドサービス805によって使用されるスキーマのデータフィールドで正しくタグ付けされるように、翻訳プロセスを単に実施している。したがって、いくつかの実施形態においては、サービス815が、翻訳プロセスを実施するように構成され得る一方、他の実施形態においては、イベントグリッドサービスが、翻訳プロセスを実施するように構成され得る。
[00101]イベントデータが翻訳された後、イベントグリッドサービス805は、関連するイベントデータをサブスクライバー830(例えば、サブスクライバー830A、830B、および830C。省略記号830Dは、任意の数のサブスクライバーが存在し得ることを実証している)に伝送することができる。そのような動作は、関連するイベントデータ835A、835B、および835Cがそれぞれのサブスクライバーに渡されることによって示される。
バックエンド翻訳アーキテクチャ
[00102]上の議論は、フロントエンド翻訳プロセスを実施する実施形態に焦点を合わせていた。フロントエンド翻訳を実施することに加えて、いくつかの実施形態はまた、図9に示されるように、追加のバックエンド翻訳プロセスを実施するように構成される。
[00103]ここでは、アーキテクチャ900は、ちょうど図8のアーキテクチャ800のように、トピック910A、910B、および910Cを有するイベントグリッドサービス905を含む。サービス915(例えば、サービス915A、915B、および915C)は、イベント発行920A、920B、および920C(それぞれのトピックに対応する)をイベントグリッドサービス905にプッシュしている。示されないが、サービス915またはイベントグリッドサービス905のいずれかが、イベントデータを特定のトピックのためにイベントグリッドサービス905によって使用されるスキーマへと翻訳するために、フロントエンド翻訳プロセスを実施していた可能性がある。
[00104]図9は、イベントグリッドサービス905が、おそらくはフロントエンド翻訳を実施することに加えて、マッピング構成要素925A、925B、および925Cを使用してバックエンド翻訳を実施することもできることを示す。これらのマッピング構成要素は、ここではこれらのマッピング構成要素が、関連するイベントデータ935A、935B、および935Cによって示されるように、イベントデータがサブスクライバー930(例えば、サブスクライバー930A、930B、および930C)にプッシュされる前にバックエンドで翻訳プロセスを実施することを除いては、図7のマッピング構成要素730、735、および740と同様である。
[00105]イベントグリッドサービス905は、特定のトピックのための特定のスキーマを使用し得るが、いくつかのサブスクライバーは、イベントグリッドサービス905、またはサービス915のいずれかとは全く異なるスキーマでフォーマットされたイベントデータを受信することを望み得る。そのようなものとして、イベントグリッドサービス905は、イベントデータを特定のサブスクライバーが読むことのできるフォーマットへと翻訳するためにバックエンド翻訳プロセスを実施することができる。バックエンドに使用されるマッピングは、フロントエンドマッピングと同様の様式で導出され得る。
[00106]それでは、これより、別の例示的なアーキテクチャ1000を示す図10に注目する。ここでは、イベントグリッドサービス1005は、トピック1010A、1010B、および1010Cを管理している。それはまた、フロントエンドマッピング構成要素1015A、1015B、および1015C、ならびにバックエンドマッピング構成要素1020A、1020B、および1020Cを含む。
[00107]ここでは、サービス1025(例えば、サービス1025A、1025B、および1025C)は、イベント発行1030A、1030B、および1030Cを、それぞれフロントエンドマッピング構成要素1015A、1015B、および1015Cにプッシュしている。そのようなものとして、フロントエンド翻訳プロセスは、各イベント発行内のイベントデータを所望のフォーマット/スキーマへと翻訳するために発生し得る。
[00108]続いて、いくつかのサブスクライバーが、特定のトピックのためにイベントグリッドサービス1005によって使用されるスキーマとは異なるスキーマで関連データを受信することを望むことが決定され得る。そのようなものとして、バックエンドマッピング構成要素1020A、1020B、および1020Cは、イベントデータを所望のフォーマットへと翻訳するためにバックエンド翻訳プロセスを実施し得る。さらには、イベントグリッドサービス1005は、特定のサブスクライバーに関連するデータを識別するためにイベントデータを選択的にフィルタリングすることができる。示されるように、イベントグリッドサービス1005は、関連するイベントデータ1035A、1035B、および1035Cを、サブスクライバー1040(例えば、サブスクライバー1040A、1040B、および1040C)にプッシュしている。この様式では、フロントエンドおよび/またはバックエンド翻訳は、イベントデータに対して発生し得る。
[00109]したがって、いくつかの状況では、イベントグリッドサービス1005は、確立されたトピックに対応するイベント発行を受信する。次いで、イベントグリッドサービス1005は、イベントデータに対してフロントエンド翻訳を実施することができる。さらに、イベントグリッドサービス1005は、イベントデータが特定のサブスクライバーのための準拠するスキーマにあるかどうかを決定することができる。そうでない場合、イベントグリッドサービス1005は、イベントデータに対してバックエンド翻訳を実施することができる。この点に関して、任意のフィルタリングされたイベントデータをサブスクライバーにプッシュする前に、イベントグリッドサービス1005は、イベントデータに対して第2の翻訳を実施することができる。
サブスクリプションのバリエーション
[00110]図11は、単一のサブスクライバーが複数の異なるトピックに関する情報を受信することができるシナリオを示す。具体的には、図11は、イベントグリッドサービス1105がトピック1110A、1110B、および1110Cを含むアーキテクチャ1100を示す。ここでは、サービス1115(例えば、サービス1115A、1115B、および1115C)は、先に説明される原則に従って、イベント発行1120A、1120B、および1120Cをイベントグリッドサービス1105にプッシュしている。さらには、イベント発行1120A、1120B、および1120Cの各々は、異なるトピック、具体的には、それぞれトピック1110A、1110B、および1110Cに対応する。
[00111]単一のサブスクライバー1125も示される。単一のサブスクライバーだけが例証されるが、本原則は任意の数のサブスクライバーに当てはまるということを理解されたい。ここでは、サブスクライバー1125は、トピック1110A、1110B、および1110Cの各々に対して1つのサブスクリプションという、イベントグリッドサービス1105との複数のサブスクリプションを有する。したがって、サブスクライバー1125が複数のサブスクリプションを有することから、イベントグリッドサービス1105は、サブスクライバー1125のサブスクリプションに従って関連データを識別するために、イベント発行1120A、1120B、および1120C内で受信されるイベントデータを選択的にフィルタリングすることになる。その後、イベントグリッドサービス1105は、トピック1110Aのための関連データ1130A、トピック1110Bのための関連データ1130B、およびトピック1110Cのための関連データ1130Cを、サブスクライバー1125にプッシュすることになる。この様式では、単一のサブスクライバーが、複数の異なるトピックに対応する複数の通知を受信し得る。
[00112]図12は、複数のサブスクライバーがすべて同じトピックに関する通知(すなわち、イベントデータ)を受信しているアーキテクチャ1200を示す。具体的には、アーキテクチャ1200は、イベントグリッドサービス1205が、トピック1210A、1210B、および1210Cを含むことを示す。サービス1215(例えば、サービス1215A、1215B、および1215C)は、イベント発行1220A、1220B、および1220Cを、イベントグリッドサービス1205にプッシュしている。ここでは、イベント発行1220A、1220B、および1220Cの各々は、同じトピック、具体的には、トピック1210Aに対応する。
[00113]この例示的なシナリオでは、複数のサブスクライバー1225(例えば、サブスクライバー1225A、1225B、および1225C)が、トピック1210Aに対応するイベントデータを受信するためにサブスクリプションを有する。いくつかの場合において、この複数のサブスクライバー1225は、同じイベントデータを受信することになるが、他の場合では、この複数のサブスクライバー1225は各々、トピック1210Aについてのイベントデータの異なる部分を受信することになる。各サブスクライバーがどの部分を受信することになるかを決定することは、サブスクライバーの対応するサブスクリプションに基づく。したがって、2つのサブスクライバーが同じサブスクリプションを有する(すなわち、サブスクリプションが、サブスクライバーが同じ種類の関連するイベントデータを受信するために選ばれていることを示す)場合、それら2つのサブスクライバーが実際に同じデータを受信することになるということである。したがって、イベントグリッドサービス1205は、関連するイベントデータ1230A、1230B、および1230Cを、それぞれサブスクライバー1225A、1225B、および1225Cにプッシュする。
[00114]複数のサブスクライバーが同じトピックをサブスクライブしているとき、それらのサブスクライバーはまた、異なるスキーマ(すなわち、サブスクライバーによって使用されるフォーマットに準拠するスキーマ)を使用し得る。そのようなシナリオでは、イベントグリッドサービス1205は、それらのサブスクライバーが同じトピックをサブスクライブしているとしても、イベントデータの異なる部分を抽出するために、イベントデータを選択的にフィルタリングすることができる。各部分は、それがサブスクライバーの各々に実際に関連していることを検証するために分析されることになる。その後、イベントグリッドサービス1205は、イベントデータの抽出された部分をサブスクライバーにプッシュする。この様式では、任意の数のサブスクライバーが、同じ確立されたトピックをサブスクライブしてもよく、その結果として、それらのサブスクライバーは、受信したイベント発行内に提供された同じイベントデータのうちの一部(またはすべて)を受信することになる。必要な場合、または所望の場合、イベントグリッドサービス1205はまた、データが受信側サブスクライバー/コンシューマのいずれかのために正しくフォーマットされることを確実にするために個別化されたマッピングプロセスを実施することができる。
[00115]この時点では、例が役に立つ。先に論じられた保険会社アプリケーションなどの携帯電話アプリケーションがあると仮定する。いくつかの場合において、クライアントは、保険請求のために(例えば、損傷した自動車の)写真をアップロードすることを決定し得る。携帯電話から、画像は、クラウド内で実行するサービス(例えば、クラウドストレージサービス)にアップロードされる。画像のファイルがクラウドストレージ上に作成されると、クラウドストレージサービスは、ファイル(すなわち、イベント)の作成をイベントグリッドサービスに発行することになる。発行は、顧客情報、画像、および他の情報を説明することができる。そのようなものとして、クラウドストレージサービスは、保険会社のメインアプリケーションのバックエンドアプリケーションであり得る。言い換えると、パブリッシングサービス(例えば、クラウドストレージサービス)は、メインアプリケーションのサブ構成要素(すなわち、サブスクライバー)である。
[00116]バックエンドアプリケーションがイベント発行を提出すると、メインアプリケーションは、クライアントが自動車の画像をアップロードしたことを通知され得る。その後、メインアプリケーションは、請求を処理することを開始することができる。そのようなものとして、サービスおよびサブスクライバー(すなわち、メインアプリケーション)は、同じ企業によって、あるいは同じ賃借人によって、所有され得る。
[00117]別の例として、企業が新しい従業員を雇用するシナリオについて検討する。新しい従業員を雇用することは、任意の数の異なるイベントの実行をトリガし得る。例えば、新しい従業員は、新しいイス、デスク、またはコンピューターを必要とし得る。そのようなものとして、サービスは、イベント(例えば、新規イスイベント、新規デスクイベント、新規コンピューターイベントなど)を作成することによって、新しい従業員の雇用に対して反応し得る。この場合、サービスは、イベントを作成する非人間のプログラムであり得る。その後、イスを購入するサブスクライバーは、イスイベントについて聞くことができ、それが受信されると、イスを獲得するプロセスを実施することができる。同様のサブスクライバーが、デスクおよびコンピューターイベントについても利用可能であり得る。したがって、これらは、実施形態の一部がどのように使用され得るかのいくつかの現実的な例である。
[00118]さらには、サービス(例えば、イスサービス)が、それらのデータをフォーマットするための既存のスキーマを既に有する場合、本実施形態は、マッピングを生成することによってその既存のスキーマに動的に反応することができ、その結果として、それらのサービスが再符合化、または別途修正される必要がない。むしろ、単純な登録(例えば、構成更新)が、それらのサービスがそれらの通常の手順/プロトコルに従って動作し続けることを可能にするために発生し得、イベントグリッドサービスは、新しく導出されたマッピングの使用を通じて動的に適合することができる。そのようなものとして、本実施形態は、イベントデータを受信および発行するための非常にスケーラブルなモデルを提供する。
方法
[00119]これより、実施され得るいくつかの方法行為を参照にする図13〜図15に注目する。方法行為は特定の順序で論じられ得るか、または特定の順序で発生するものとしてフローチャートで例証され得るが、特定の順序は、具体的に記載がない限りは必要とされず、または、ある行為が、その行為が実施される前に完了されている別の行為に依存することが理由で必要とされる。
[00120]図13は、準拠しないデータスキーマでコンパイルされる受信したイベントデータを、準拠するデータスキーマに含まれるイベントフィールドにマッピングするための例示的な方法のフローチャート1300を示す。この方法は、本明細書で論じられるイベントグリッドサービスのいずれかによって実施され得る。
[00121]最初に、登録情報が受信される(行為1305)。この情報は、パブリッシングサービス(例えば、図12のサービス1215のいずれか、図11のサービス1115、図10のサービス1025のいずれかなど)をイベントグリッドサービスに登録するために使用される。いくつかの状況では、この登録情報は、パブリッシングサービスによって使用される現在のイベントスキーマを含む。さらには、この登録情報は、サブスクライバーが、トピックについて受信されるイベント発行に反応するためにサブスクライブするトピックに対応し得る。
[00122]続いて、パブリッシングサービスの現在のイベントスキーマは、現在のイベントスキーマがトピックによって使用されるデフォルトのイベントスキーマに対応するかどうかを決定するために分析される(行為1310)。パブリッシングサービスの現在のイベントスキーマがトピックのデフォルトのイベントスキーマに対応しない場合、パブリッシングサービスの現在のイベントスキーマをトピックのデフォルトのイベントスキーマにマッピングすることを試みるマッピングが、自動的に導出される(行為1315)。
[00123]マッピングが導出された後、イベント発行が、パブリッシングサービスから受信される(行為1320)。特に、このイベント発行は、サービスが登録されたトピックであって、サブスクライバーが聞いているトピックに対応する。
[00124]次いで、マッピングは、イベント発行に含まれる少なくともいくつかのイベントデータを、イベントデータがトピックのデフォルトのイベントスキーマに含まれるイベントフィールドに位置対応するような様式で翻訳するために使用される(行為1325)。この様式では、フロントエンド翻訳は、イベントデータが所望のフォーマットに準拠することを確実にするために実施され得る。
[00125]図13は、サービスとイベントグリッドサービスとの間で実施され得るいくつかのアクションを紹介したが、図14は、1つまたは複数のパブリッシングサービスから受信されるイベントデータを、そのイベントデータの1つまたは複数のサブスクライバーにプッシュするための方法のフローチャート1400を例証する。言い換えると、これらの方法行為は、イベントグリッドサービスと、イベントデータに反応するサブスクライバーとの間で発生する。図13の方法と同様に、図14の方法もまた、コンピューターシステム(例えば、図16において後で説明されるコンピューターシステム)上で実行し得るイベントグリッドサービスによって実施される。
[00126]最初に、少なくとも1つのサブスクライバーが識別される(行為1405)。この行為は、確立されたトピックに対応し、かつイベントデータを含むイベント発行を受信した後に実施され得る。このシナリオでは、サブスクライバーは、確立されたトピックに対応する任意のイベント発行内に含まれる特定のタイプのイベントデータが受信されるときに通知されることになる。そのようなものとして、サブスクライバーは、イベントグリッドサービスとのサブスクリプションを有し、サブスクリプションは、特定のタイプのイベントデータを識別する。故に、受信したイベント発行内に提供されるイベントデータが、特定のタイプのイベントデータに対応する特定のイベントデータを含むということである。
[0127]続いて、受信したイベント発行内に提供されるイベントデータがサブスクライバーのための準拠するスキーマにあるかどうかに関して決定がなされる(行為1410)。イベントデータが、準拠するスキーマにある場合(行為1415A)、そのイベントデータに対してマッピングは実施されない。しかしながら、代替的に、イベントデータが、準拠するスキーマにない(行為1415B)、または部分的にのみ準拠するスキーマにある場合、マッピングが、そのイベントデータをマッピングするために実施される。
[0128]次に、イベントデータは、特定の所望のタイプのイベントデータに対応する任意のイベントデータを抽出するためにフィルタリングされる(行為1420)。最後に、抽出したイベントデータ(すなわち、特定の所望のタイプのイベントデータに対応するイベントデータ)が、サブスクライバーにプッシュされる(行為1425)。
[0129]これより、1つまたは複数のパブリッシングサービスからイベント発行を受信するため、およびイベント発行内に含まれる情報を1つまたは複数のサブスクライバーにプッシュするための例示的な方法のフローチャート1500を例証する図15に注目する。言い換えると、フローチャート1500において概説される方法行為は、図13および図14に説明される方法行為のハイブリッドを構成する。
[0130]最初に、イベント発行が受信される(行為1505)。この発行は、確立されたトピックに対応し、パブリッシングサービスから受信される。先の議論と同様に、このイベント発行もまた、イベントデータを含む。
[0131]次いで、マッピングが、イベントデータの少なくともいくつかを翻訳するために使用される(行為1515)。このマッピングは、トピックおよびパブリッシングサービスの両方と関連付けられる。この翻訳プロセスを実施することによって、イベントデータはこれで、トピックのためのイベントスキーマ内に含まれるフィールドに位置対応する/相関することになる。
[0132]イベントデータを翻訳した後、サブスクライバーが次いで識別される(行為1515)。このサブスクライバーは、確立されたトピックに対応する任意のイベント発行内に含まれる特定のタイプのイベントデータが受信されるときに通知されるために選ばれている。先の議論と同様に、このサブスクライバーは、イベントグリッドサービスとのサブスクリプションを有し、このサブスクリプションが、特定のタイプのイベントデータを識別する。さらには、翻訳されたイベントデータは、線引きされた特定のタイプのイベントデータに対応する特定のイベントデータを含む。
[0133]特定のイベントデータは、次いで、イベントデータからフィルタリングされ(行為1520)、次いで、サブスクライバーにプッシュ/ルーティングされる(行為1525)。この様式では、イベントグリッドサービスは、イベントデータを受信し、このイベントデータが選択された/所望のフォーマットまたはスキーマに準拠することを確実にすることができる。次いで、イベントグリッドサービスは、特に関連するデータを識別するためにイベントデータを選択的にフィルタリングする。イベントグリッドサービスは、サブスクライバーによって事前に提供される情報を使用して関連データを識別することができ、この情報は、サブスクライバーが重要であるまたは関連するものと見なすイベントデータのタイプを示す。したがって、この情報を使用して、イベントグリッドサービスは、任意の関連するイベントデータを抽出し、次いでそのイベントデータをサブスクライバーに渡す/ルーティングすることができる。
例示的なコンピューターシステム
[0134]開示された実施形態の一部の様々な特徴および機能をまさに説明してきたが、これより、本明細書に説明される動作を促進するために使用され得る例示的なコンピューターシステム1600を例証する図16に注目する。コンピューターシステム1600は、様々な異なる形態をとり得る。例えば、コンピューターシステム1600は、サーバ、分散システム、デスクトップ、ラップトップ、携帯電話、データセンター、および/または任意の他のコンピューティングデバイスとして具現化され得る。
[0135]その最も基本的な構成において、コンピューターシステム1600は、様々な異なる構成要素を含む。例えば、図16は、コンピューターシステム1600が、少なくとも1つのプロセッサ1605(別名“ハードウェア処理ユニット”)、および実行可能な命令1615を含み得るストレージ1610を含むことを示す。プロセッサ1605は、上に説明された方法行為のいずれかを実施するように構成され得る。示されないが、コンピューターシステム1600は、ASIC、GPU、または任意の他のタイプのハードウェア論理ユニットを含み得る。
[0136]ストレージ1610は、物理的なシステムメモリであってもよく、これは、揮発性、不揮発性、またはそれら2つの何らかの組み合わせであり得る。用語“メモリ”はまた、物理的なストレージ媒体などの不揮発性マスストレージを指すために本明細書では使用され得る。コンピューターシステム1600が分散される場合、処理能力、メモリ能力、および/またはストレージ能力も同様に分散され得る。本明細書で使用される場合、用語“実行可能なモジュール”、“実行可能な構成要素”、または“構成要素”さえも、コンピューターシステム1600上で実行され得るソフトウェアオブジェクト、ルーチン、または方法を指すことができる。本明細書に説明される異なる構成要素、モジュール、エンジン、およびサービスは、コンピューターシステム1600上で実行する(例えば、別個のスレッドとして)オブジェクトまたはプロセッサとして実施され得る。
[0137]開示された実施形態は、以下により詳細に論じられるように、例えば、1つまたは複数のプロセッサ(プロセッサ1605など)およびシステムメモリ(ストレージ1610など)など、コンピューターハードウェアを含む特殊用途または汎用コンピューターを備え得るか、または利用し得る。実施形態はまた、コンピューター実行可能な命令および/またはデータ構造を運搬または格納するための物理的なおよび他のコンピューター可読媒体を含む。そのようなコンピューター可読媒体は、汎用または特殊用途コンピューターシステムによってアクセスされ得る任意の利用可能な媒体であり得る。データの形態でコンピューター実行可能な命令を格納するコンピューター可読媒体は、物理的なコンピューターストレージ媒体である。コンピューター実行可能な命令を運搬するコンピューター可読媒体は、伝送媒体である。したがって、限定ではなく例として、現在の実施形態は、コンピューターストレージ媒体および伝送媒体という少なくとも2つの全く異なる種類のコンピューター可読媒体を含み得る。
[0138]コンピューターストレージ媒体は、RAM、ROM、EEPROM、CD−ROM、RAMに基づくソリッドステートドライブ(SSD)、フラッシュメモリ、相変化メモリ(PCM)、もしくは他のタイプのメモリなどの、ハードウェアストレージデバイス、または他の光学ディスクストレージ、磁気ディスクストレージ、もしくは磁気ストレージデバイス、または、コンピューター実行可能な命令、データ、データ構造の形態で所望のプログラムコード手段を格納するために使用され得、かつ汎用もしくは特殊用途コンピューターによってアクセスされ得る任意の他の媒体である。
[0139]コンピューターシステム1600はまた、(有線またはワイヤレス接続により)外部センサ(例えば、1つまたは複数のリモートカメラ、加速度計、ジャイロスコープ、音響センサ、磁気計、データ獲得デバイスなど)に接続され得る。さらに、コンピューターシステム1600はまた、1つまたは複数の有線またはワイヤレスネットワーク1620を通じて、コンピューターシステム1600に関して説明される処理のいずれかを実施するように構成されるリモートシステムに接続され得る。コンピューターシステムはまた、プロセッサ1605により、ディスプレイ上で1つまたは複数のユーザーインタフェース要素をレンダリングするように構成されるグラフィックスレンダリングエンジンを含み得る。
[0140]図16に示されるネットワーク1620のような“ネットワーク”は、コンピューターシステム、モジュール、および/または他の電子デバイスの間の電子データの輸送を可能にする1つまたは複数のデータリンクおよび/またはデータスイッチと定義される。情報が、ネットワークを通じて(ハードワイヤード、ワイヤレス、またはハードワイヤードおよびワイヤレスの組み合わせのいずれかで)コンピューターに転送または提供されるとき、コンピューターは、その接続を伝送媒体として正しく見なす。コンピューターシステム1600は、ネットワーク1620と通信するために使用される1つまたは複数の通信チャネルを含む。伝送媒体は、コンピューター実行可能な命令の形態、またはデータ構造の形態でデータまたは所望のプログラムコード手段を運搬するために使用され得るネットワークを含む。さらに、これらのコンピューター実行可能な命令は、汎用または特殊目的コンピューターによってアクセスされ得る。上記の組み合わせもまた、コンピューター可読媒体の範囲内に含まれ得る。
[0141]様々なコンピューターシステム構成要素に達すると、コンピューター実行可能な命令またはデータ構造の形態にあるプログラムコード手段は、伝送媒体からコンピューターストレージ媒体へ自動的に転送され得る(またはその逆)。例えば、ネットワークまたはデータリンクを通じて受信されるコンピューター実行可能な命令またはデータ構造は、ネットワークインターフェースモジュール(例えば、ネットワークインターフェースカード、すなわち“NIC”)内のRAMでバッファされ、次いで、コンピューターシステムRAMへ、および/またはコンピューターシステムにおける揮発性の高くないコンピューターストレージ媒体へ、最終的に転送され得る。したがって、コンピューターストレージ媒体は、同じく(あるいは主として)伝送媒体を利用するコンピューターシステム構成要素に含まれ得るということを理解されたい。
[0142]コンピューター実行可能な(またはコンピューター解釈可能な)命令は、例えば、汎用コンピューター、特殊用途コンピューター、または特殊用途処理デバイスに特定の機能または機能のグループを実施させる命令を含む。コンピューター実行可能な命令は、例えば、バイナリ、アセンブリ言語などの中間フォーマット命令、あるいはソースコードであってもよい。本主題は、構造的特徴および/または方法論的行為に特有の言語で説明されているが、添付の特許請求の範囲において規定される主題は、上に説明されるような説明された特徴または行為に必ずしも限定されないということを理解されたい。むしろ、説明された特徴および行為は、請求項を実践する例示的な形態として開示される。
[0143]当業者は、本実施形態が、パーソナルコンピューター、デスクトップコンピューター、ラップトップコンピューター、メッセージプロセッサ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースもしくはプログラマブル家電機器、ネットワークPC、ミニコンピューター、メインフレームコンピューター、携帯電話、PDA、ページャ、ルータ、スイッチ、および同様のものを含む、多くのタイプのコンピューターシステム構成を有するネットワークコンピューティング環境において実践され得ることを理解するものとする。本実施形態はまた、ネットワークを通じて(ハードワイヤードデータリンク、ワイヤレスデータリンク、またはハードワイヤードおよびワイヤレスデータリンクの組み合わせのいずれかによって)リンクされるローカルおよびリモートコンピューターシステムが、各々タスクを実施する(例えば、クラウドコンピューティング、クラウドサービス、および同様のもの)分散システム環境において実践され得る。分散システム環境において、プログラムモジュールは、ローカルおよびリモート両方のメモリストレージデバイスに位置し得る。
[0144]追加的に、または代替的に、本明細書に説明される機能は、少なくとも部分的に、1つまたは複数のハードウェア論理構成要素(例えば、プロセッサ2105)によって実施され得る。例えば、限定なしに、使用され得る例証的なタイプのハードウェア論理構成要素としては、フィールドプログラマブルゲートアレイ(FPGA)、特定プログラムまたは特定用途向け集積回路(ASIC)、特定プログラム向け標準製品(ASSP)、システム・オン・チップ・システム(SOC)、復合プログラマブル論理デバイス(CPLD)、中央処理装置(CPU)、および他のタイプのプログラマブルハードウェアが挙げられる。
[0145]本実施形態は、それらの趣旨または特徴から逸脱することなく他の特定の形態で提示され得る。説明された実施形態は、あらゆる点で、単に例証的であり、制限的ではないと見なされるべきである。したがって、開示された範囲は、先述の説明ではなく添付の特許請求の範囲によって示される。特許請求の範囲の等価の意味および範囲内に入るすべての変更は、それらの範囲内に包含されるべきである。

Claims (15)

  1. 準拠しない(non-conforming)データスキーマにコンパイルされる受信したイベントデータを、準拠する(conforming)データスキーマに含まれるイベントフィールドにマッピングするための方法であって、前記方法は、コンピューターシステム上で実行するイベントグリッドサービス(event grid service)によって実施され、
    パブリッシングサービスを前記イベントグリッドサービスに登録するために登録情報を受信するステップであって、前記登録情報が、前記パブリッシングサービスによって使用される現在のイベントスキーマ(event schema)を含み、前記登録情報は、サブスクライバーが、トピックについて受信されるイベント発行(publications)に反応するためにサブスクライブする前記トピックに対応する、ステップと、
    前記現在のイベントスキーマが前記トピックによって使用されるデフォルトのイベントスキーマに対応するかどうかを決定するために、前記パブリッシングサービスの現在のイベントスキーマを分析するステップと、
    前記パブリッシングサービスの現在のイベントスキーマが前記トピックのデフォルトのイベントスキーマに対応しないと決定することに応答して、前記パブリッシングサービスの現在のイベントスキーマを前記トピックのデフォルトのイベントスキーマにマッピングすることを試みるマッピングを自動的に導出する(deriving)ステップと、
    前記マッピングが導出された後、前記パブリッシングサービスからイベント発行を受信するステップであって、前記イベント発行が前記トピックに対応する、ステップと、
    前記イベント発行に含まれる少なくともいくつかのイベントデータを、前記少なくともいくつかのイベントデータが前記トピックのデフォルトのイベントスキーマに含まれるイベントフィールドにマッピングするような様式(manner)で翻訳する(translate)ために前記マッピングを使用するステップと
    を含む、方法。
  2. 前記マッピングを自動的に導出する前記ステップが、前記パブリッシングサービスの1つまたは複数の属性(attributes)を分析して、前記マッピングが前記1つまたは複数の属性に少なくとも部分的に基づくようにさせることによって実施される、請求項1に記載の方法。
  3. 前記パブリッシングサービスを登録するために前記登録情報を受信する前記ステップが、前記パブリッシングサービスを登録することに使用するために1つまたは複数のアプリケーションプログラムインターフェース(API)を公開することによって実施される、請求項1に記載の方法。
  4. 前記イベントグリッドサービスが、前記登録情報を格納するサブスクリプションデータベースを維持する、請求項1に記載の方法。
  5. 前記マッピングを自動的に導出する前記ステップが、既存のマッピングが使用のために現在利用可能であることを決定することを含み、前記既存のマッピングが前回導出されている、請求項1に記載の方法。
  6. 前記パブリッシングサービスから前記イベント発行を受信する前記ステップが、前記イベント発行を前記イベントグリッドサービスにプッシュする前記パブリッシングサービスによって実施される、請求項1に記載の方法。
  7. 前記イベント発行が、ファイルが作成されたことを示す発行である、請求項1に記載の方法。
  8. 前記イベントグリッドサービスが、複数の異なるパブリッシングサービスから複数のイベント発行を受信する、請求項1に記載の方法。
  9. 1つまたは複数のパブリッシングサービスから受信されるイベントデータを、そのイベントデータの1つまたは複数のサブスクライバーにプッシュするための方法であって、前記方法は、コンピューターシステム上で実行するイベントグリッドサービスによって実施され、
    確立された(established)トピックに対応し、イベントデータを含むイベント発行を受信した後、前記確立されたトピックに対応する任意の(any)イベント発行内に含まれる特定のタイプのイベントデータが受信されるときに通知されることになる少なくとも1つのサブスクライバーを識別するステップであって、
    前記少なくとも1つのサブスクライバーが、前記イベントグリッドサービスとのサブスクリプションを有し、
    前記サブスクリプションが、前記特定のタイプのイベントデータを識別し、
    前記受信したイベント発行に含まれる前記イベントデータが、前記特定のタイプのイベントデータに対応する特定のイベントデータを含む、ステップと、
    前記受信したイベント発行に含まれる前記イベントデータが、前記少なくとも1つのサブスクライバーのための準拠するスキーマにあるかどうかを決定するステップであって、前記イベントデータが前記準拠するスキーマにある場合、前記イベントデータに対してマッピングは実施されず、前記イベントデータが前記準拠するスキーマにないか、または部分的にのみ前記準拠するスキーマにある場合、マッピングが、前記イベントデータをマッピングするために実施される、ステップと、
    前記特定のタイプのイベントデータに対応する前記特定のイベントデータを抽出するために、前記イベントデータをフィルタリングするステップと、
    前記特定のタイプのイベントデータに対応する抽出された前記特定のイベントデータを前記少なくとも1つのサブスクライバーにプッシュするステップと
    を含む、方法。
  10. 前記準拠するスキーマが、クラウドイベントスキーマである、請求項9に記載の方法。
  11. 複数のサブスクライバーが前記イベントグリッドサービスとのサブスクリプションを有し、その結果として、前記イベントグリッドサービスが、複数のイベントデータを前記複数のサブスクライバーにプッシュする、請求項9に記載の方法。
  12. 第2のサブスクライバーもまた、前記確立されたトピックをサブスクライブしており、その結果として、前記第2のサブスクライバーもまた、前記受信したイベント発行内に含まれるいくつかのイベントデータを受信することになる、請求項9に記載の方法。
  13. 前記少なくとも1つのサブスクライバーのための前記準拠するスキーマが、前記第2のサブスクライバーのための第2の準拠するスキーマとは異なり、前記イベントグリッドサービスが、前記第2のサブスクライバーと関連付けられた他のイベントデータタイプに対応する前記イベントデータの他の部分を抽出するために、前記イベントデータをフィルタリングし、前記イベントグリッドサービスが、前記イベントデータの前記抽出された他の部分を前記第2のサブスクライバーにプッシュする、請求項12に記載の方法。
  14. 前記確立されたトピックに対応する前記イベント発行を受信する前記ステップが、前記受信したイベント発行内に含まれる前記イベントデータに対してフロントエンドマッピングを実施することを含み、前記受信したイベント発行に含まれる前記イベントデータが、前記少なくとも1つのサブスクライバーのための前記準拠するスキーマにあるかどうかを決定する前記ステップが、前記イベントデータが前記準拠するスキーマにないと決定することを含み、前記イベントグリッドサービスが、前記イベントデータに対してバックエンドマッピングを実施する、請求項9に記載の方法。
  15. 1つまたは複数のパブリッシングサービスからイベント発行を受信するため、および前記イベント発行内に含まれる情報を1つまたは複数のサブスクライバーにプッシュするための方法であって、前記方法は、コンピューターシステム上で実行するイベントグリッドサービスによって実施され、
    確立されたトピックに対応し、パブリッシングサービスから受信されるイベント発行を受信するステップであって、前記イベント発行がイベントデータを含む、ステップと、
    前記トピックおよび前記パブリッシングサービスの両方と関連付けられたマッピングを使用して、前記イベントデータの少なくともいくつかをマッピングするステップであって、その結果として、前記少なくともいくつかのイベントデータが、前記トピックのためのイベントスキーマ内に含まれるフィールドにマッピングする、ステップと、
    前記少なくともいくつかのイベントデータをマッピングした後、前記確立されたトピックに対応する任意のイベント発行内に含まれる特定のタイプのイベントデータが受信されるときに通知されることになる少なくとも1つのサブスクライバーを識別するステップであって、
    前記少なくとも1つのサブスクライバーが、前記イベントグリッドサービスとのサブスクリプションを有し、
    前記サブスクリプションが、前記特定のタイプのイベントデータを識別し、
    前記マッピングされた少なくともいくつかのイベントデータが、線引きされた前記特定のタイプのイベントデータに対応する特定のイベントデータを含む、ステップと、
    前記イベントデータから前記特定のイベントデータをフィルタリングするステップと、
    前記フィルタリングされた特定のイベントデータを前記少なくとも1つのサブスクライバーにプッシュするステップと
    を含む、方法。
JP2020560914A 2018-05-03 2019-04-22 入力および出力スキーママッピング Active JP7360395B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862666477P 2018-05-03 2018-05-03
US62/666,477 2018-05-03
US15/991,350 2018-05-29
US15/991,350 US10681164B2 (en) 2018-05-03 2018-05-29 Input and output schema mappings
PCT/US2019/028598 WO2019212792A1 (en) 2018-05-03 2019-04-22 Input and output schema mappings

Publications (2)

Publication Number Publication Date
JP2021523436A true JP2021523436A (ja) 2021-09-02
JP7360395B2 JP7360395B2 (ja) 2023-10-12

Family

ID=68385411

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020560914A Active JP7360395B2 (ja) 2018-05-03 2019-04-22 入力および出力スキーママッピング

Country Status (13)

Country Link
US (2) US10681164B2 (ja)
EP (1) EP3788486A1 (ja)
JP (1) JP7360395B2 (ja)
KR (1) KR102634058B1 (ja)
CN (1) CN112074815B (ja)
AU (1) AU2019262823B2 (ja)
BR (1) BR112020020760A2 (ja)
CA (1) CA3103838A1 (ja)
IL (1) IL278303B2 (ja)
MX (1) MX2020011497A (ja)
PH (1) PH12020551844A1 (ja)
SG (1) SG11202010465PA (ja)
WO (1) WO2019212792A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10999388B2 (en) 2017-08-15 2021-05-04 Microsoft Technology Licensing, Llc Managing subscriptions for event notifications
US10740151B1 (en) * 2018-08-27 2020-08-11 Amazon Technologies, Inc. Parallelized forensic analysis using cloud-based servers
SG11202102346VA (en) * 2018-09-14 2021-04-29 Jpmorgan Chase Bank Na System and method for implementing transaction processing ecosystems
US11663114B2 (en) * 2020-07-15 2023-05-30 Jpmorgan Chase Bank, N.A. Method and system for automatically testing event-driven microservices
KR102300938B1 (ko) 2020-12-28 2021-09-13 쿠팡 주식회사 데이터 적재 방법 및 이를 위한 전자 장치
US11861425B2 (en) * 2021-05-19 2024-01-02 Red Hat, Inc. Runtime mapping of asynchronous application programming interface messaging topics and schemas
US11836120B2 (en) 2021-07-23 2023-12-05 Oracle International Corporation Machine learning techniques for schema mapping
US11522976B1 (en) 2021-10-06 2022-12-06 Bgc Partners, L.P. Method, apparatus and system for subscription management
WO2023168073A1 (en) * 2022-03-04 2023-09-07 Humane, Inc. Structuring and presenting event data for use with wearable multimedia devices
US11928161B2 (en) 2022-03-04 2024-03-12 Humane, Inc. Structuring and presenting event data for use with wearable multimedia devices
CN115208764B (zh) * 2022-07-27 2024-08-16 济南浪潮数据技术有限公司 一种基于资源池的请求响应方法、装置及其介质
DE102023202793A1 (de) 2023-03-27 2024-10-02 Siemens Mobility GmbH Vorrichtung zum Integrieren einer Mehrzahl von externen Projektierungseinheiten
DE102023202792A1 (de) 2023-03-27 2024-10-02 Siemens Mobility GmbH Vorrichtung zum Koordinieren einer Mehrzahl von Einheiten mittels Zustandsinformation

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060031076A1 (en) * 2004-08-03 2006-02-09 Hui Lei Apparatus and method of semantic-based publish-subscribe system
JP2014526743A (ja) * 2011-09-12 2014-10-06 マイクロソフト コーポレーション イベントデータを取得するスケールアウトシステム
JP2014528126A (ja) * 2011-09-12 2014-10-23 マイクロソフト コーポレーション 複数のターゲットへのマルチソースプッシュ通知の分配
US20170244799A1 (en) * 2016-02-24 2017-08-24 Verisign, Inc. Feeding networks of message brokers with compound data elaborated by dynamic sources

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020035482A1 (en) * 2000-08-28 2002-03-21 Coble Keith A. Business to business information environment with subscriber-publisher model
US7177859B2 (en) * 2002-06-26 2007-02-13 Microsoft Corporation Programming model for subscription services
US7734731B2 (en) * 2004-03-18 2010-06-08 Avaya Inc. Method and apparatus for a publish-subscribe system with third party subscription delivery
CA2594036A1 (en) 2005-01-06 2006-07-13 Tervela, Inc. Intelligent messaging application programming interface
US8700681B2 (en) * 2005-09-28 2014-04-15 Sap Ag Method and system for generating schema to java mapping descriptors
US7996488B1 (en) * 2006-11-27 2011-08-09 Disney Enterprises, Inc. Systems and methods for interconnecting media applications and services with automated workflow orchestration
EP2160867B1 (en) * 2007-06-29 2011-08-10 Telefonaktiebolaget LM Ericsson (publ) Method of processing event notifications and event subscriptions
US20110307603A1 (en) * 2009-02-05 2011-12-15 Nec Corporation Broker node and event topic control method in distributed event distribution system
US8738704B2 (en) * 2010-09-07 2014-05-27 Xerox Corporation Publish/subscribe broker messaging system and method
US20120284331A1 (en) * 2011-05-03 2012-11-08 Karthik Shashank Kambatla Processing Notifications
BR112014018142A8 (pt) * 2012-04-30 2017-07-11 Hewlett Packard Development Co Sistema de gestão automática de eventos para uma rede na nuvem, método para administrar eventos para serviços na nuvem e sistema de gerenciamento de eventos em nuvem
CN103458033B (zh) * 2013-09-04 2016-05-11 北京邮电大学 事件驱动、面向服务的物联网服务提供系统及其工作方法
US9684532B2 (en) * 2014-08-22 2017-06-20 Netapp, Inc. Virtual machine reboot information persistence into host memory
US10684998B2 (en) * 2014-11-21 2020-06-16 Microsoft Technology Licensing, Llc Automatic schema mismatch detection
US10944685B2 (en) * 2017-11-29 2021-03-09 International Business Machines Corporation Abstracted, extensible cloud access of resources
US11249960B2 (en) * 2018-06-11 2022-02-15 International Business Machines Corporation Transforming data for a target schema

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060031076A1 (en) * 2004-08-03 2006-02-09 Hui Lei Apparatus and method of semantic-based publish-subscribe system
JP2014526743A (ja) * 2011-09-12 2014-10-06 マイクロソフト コーポレーション イベントデータを取得するスケールアウトシステム
JP2014528126A (ja) * 2011-09-12 2014-10-23 マイクロソフト コーポレーション 複数のターゲットへのマルチソースプッシュ通知の分配
US20170244799A1 (en) * 2016-02-24 2017-08-24 Verisign, Inc. Feeding networks of message brokers with compound data elaborated by dynamic sources

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
CHRISTIAN ESPOSITO ET AL.: ""A knowledge-based platform for Big Data analytics based on publish/subscribe services and stream p", KNOWLEDGE-BASED SYSTEMS [ONLINE], vol. 79, JPN6023021779, 2015, pages 3 - 17, XP055609850, ISSN: 0005069072, DOI: 10.1016/j.knosys.2014.05.003 *

Also Published As

Publication number Publication date
WO2019212792A1 (en) 2019-11-07
EP3788486A1 (en) 2021-03-10
US20190342412A1 (en) 2019-11-07
AU2019262823A1 (en) 2020-10-22
SG11202010465PA (en) 2020-11-27
US10681164B2 (en) 2020-06-09
IL278303B1 (en) 2024-01-01
KR20210005043A (ko) 2021-01-13
CA3103838A1 (en) 2019-11-07
MX2020011497A (es) 2020-12-07
IL278303A (ja) 2020-12-31
US20200304583A1 (en) 2020-09-24
IL278303B2 (en) 2024-05-01
JP7360395B2 (ja) 2023-10-12
CN112074815B (zh) 2024-07-23
AU2019262823B2 (en) 2024-02-29
CN112074815A (zh) 2020-12-11
PH12020551844A1 (en) 2021-05-17
US11201936B2 (en) 2021-12-14
KR102634058B1 (ko) 2024-02-05
BR112020020760A2 (pt) 2021-01-19

Similar Documents

Publication Publication Date Title
JP7360395B2 (ja) 入力および出力スキーママッピング
US11016749B1 (en) Architecture for incremental deployment
US9971787B2 (en) Unified file and object data storage
US8892677B1 (en) Manipulating objects in hosted storage
US8380787B2 (en) Federation of master data management systems
US20190132276A1 (en) Unified event processing for data/event exchanges with existing systems
US10860604B1 (en) Scalable tracking for database udpates according to a secondary index
US9229740B1 (en) Cache-assisted upload proxy
US10585720B1 (en) Method and system for executing application programming interface (API) requests based on union relationships between objects
US8984162B1 (en) Optimizing performance for routing operations
US10262024B1 (en) Providing consistent access to data objects transcending storage limitations in a non-relational data store
US20190171735A1 (en) Data resolution system for management of distributed data
US20180248772A1 (en) Managing intelligent microservices in a data streaming ecosystem
US20210377182A1 (en) Mobile supercloud computing system and method
CN111373377B (zh) 用于请求者和提供者之间的错误处理的方法和系统
US11757959B2 (en) Dynamic data stream processing for Apache Kafka using GraphQL
US11727022B2 (en) Generating a global delta in distributed databases
Brock et al. Attributed publication and selection for web service-based distributed systems
Vilensten et al. Aggregating and utilizing sensor data
US20150213045A1 (en) Methods And Systems For Storing Replicated Data In The Cloud
CN118503565A (zh) 页面处理方法、装置、存储介质以及电子设备
Juchli et al. Functional Kafka
Estrada et al. Data Pipelines

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220413

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230519

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230529

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230815

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230919

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230929

R150 Certificate of patent or registration of utility model

Ref document number: 7360395

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150