JP2014528126A - Distributing multi-source push notifications to multiple targets - Google Patents
Distributing multi-source push notifications to multiple targets Download PDFInfo
- Publication number
- JP2014528126A JP2014528126A JP2014529930A JP2014529930A JP2014528126A JP 2014528126 A JP2014528126 A JP 2014528126A JP 2014529930 A JP2014529930 A JP 2014529930A JP 2014529930 A JP2014529930 A JP 2014529930A JP 2014528126 A JP2014528126 A JP 2014528126A
- Authority
- JP
- Japan
- Prior art keywords
- event
- data
- distribution
- target
- source
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/107—Computer-aided management of electronic mailing [e-mailing]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Entrepreneurship & Innovation (AREA)
- Physics & Mathematics (AREA)
- Human Resources & Organizations (AREA)
- General Business, Economics & Management (AREA)
- Finance (AREA)
- Software Systems (AREA)
- Development Economics (AREA)
- Marketing (AREA)
- Economics (AREA)
- Accounting & Taxation (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Operations Research (AREA)
- Data Mining & Analysis (AREA)
- Multimedia (AREA)
- General Engineering & Computer Science (AREA)
- Game Theory and Decision Science (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
イベントを消費者に配信すること。方法は、所有権データにアクセスするステップを含む。この方法はさらに、所有権データを正規化して正規化イベントを作り出すステップを含む。加入に基づいて、イベントを受信するべきである複数の末端消費者が判断される。正規化イベントからのデータは、判断された末端消費者全てに適当な複数の異なるフォーマットに形式化される。正規化イベントからのデータは、末端消費者に適当なフォーマットで、複数の末端消費者それぞれに配信される。Deliver events to consumers. The method includes accessing ownership data. The method further includes normalizing the ownership data to create a normalized event. Based on the subscription, a plurality of end consumers that are to receive the event are determined. Data from the normalization event is formatted into a number of different formats suitable for all determined end consumers. Data from the normalized event is delivered to each of the plurality of end consumers in a format suitable for the end consumer.
Description
本願発明の一実施例は、例えば、複数のターゲットへのマルチソースプッシュ通知の分配に関する。 One embodiment of the present invention relates to the distribution of multi-source push notifications to multiple targets, for example.
[0001]コンピュータおよび計算システムは、現代の生活のほぼ全ての面に影響を与えてきた。コンピュータは一般に、仕事、娯楽、ヘルスケア、輸送、エンターテインメント、家庭管理などに関連している。 [0001] Computers and computing systems have affected almost every aspect of modern life. Computers are generally associated with work, entertainment, healthcare, transportation, entertainment, home management, and the like.
[0002]さらに、計算システム機能は、ネットワーク接続を介して他の計算システムに相互接続される計算システム能力によって向上させることができる。ネットワーク接続としては、これに限らないが、有線または無線イーサネット(登録商標)、モバイル接続、または直列、並列、USB、または他の接続によるコンピュータ接続へのコンピュータを介した接続を挙げることができる。接続により、計算システムが、他の計算システムでのサービスにアクセスし、他の計算システムからアプリケーションデータを迅速かつ効率的に受信することが可能になる。 [0002] Furthermore, computing system functionality can be enhanced by computing system capabilities that are interconnected to other computing systems via network connections. A network connection can include, but is not limited to, a connection via a computer to a wired or wireless Ethernet, mobile connection, or computer connection to a serial, parallel, USB, or other connection. The connection allows the computing system to access services at other computing systems and receive application data from other computing systems quickly and efficiently.
[0003]開発者は、最新の状態にするために、世界のイベントに関する、またはサッカー、フットボール、ホッケー、または野球リーグもしくはチームのスポーツファンに対する一般大衆ニュース、情報および事実に注目した、iOS、アンドロイド、ウィンドウズ(登録商標)フォン、ウィンドウズ(登録商標)などにおけるモバイルアプリケーションを構築することができる。これらのアプリケーション(および、幅広い他のアプリケーション)のいずれかにおいて、世界中のファンの好きなチームのスコアとして警告または祝杯、または特定の種類のニュースイベントの中止をポップする通知は、大きな差別化要因である。この差別化要因は、これらのイベントを、オペレーティングシステムプラットフォーム、またはデバイスベンダー供給通知チャネルにプッシュするために、サーバインフラを構築および運用し、これは最適化されたユーザの経験に注目した多くのモバイルアプリケーション開発者の技術の組合せを超えている。また、このアプリケーションが極めて成功を収めた場合には、何万、数十万、または数百万のデバイスにイベントをタイムリーな方法で配布することは極めて困難であるので、単純なサーバベースの解決法は直ぐに、スケーラビリティの壁にぶち当たる。 [0003] Developers focused on general public news, information and facts about events around the world or for soccer, football, hockey, or baseball league or team sports fans to keep up to date, iOS, Android Mobile applications in Windows® phones, Windows®, etc. can be built. In any of these applications (and a wide range of other applications), notifications popping warnings or congratulations as favorite team scores of fans around the world or the cancellation of certain types of news events are a major differentiator It is. This differentiator builds and operates a server infrastructure to push these events to the operating system platform, or device vendor-supplied notification channel, which many mobiles focused on the optimized user experience. Beyond application developer technology combinations. And if this application is very successful, it is extremely difficult to distribute events to tens of thousands, hundreds of thousands, or millions of devices in a timely manner, so simple server-based The solution immediately hits the scalability barrier.
[0004]加えて、多数の現代のモバイルアプリケーションが、既存のインターネット資源における単純な経験として記載されている。例えば、ユーザがウェブサイトにナビゲートする必要なくアプリケーションを開くことができるので、ニュースアプリケーションは、重要なニュースプロバイダのRSSフィードから最新のヘッドラインを即時に表示することができる。個人のソフトウェア開発者および小さな個別のソフトウェアベンダーは、多数のこのようなアプリケーションを構築し、極めて低い価格で販売している。また、これらのアプリケーションでは、プッシュ通知から大きな利益も得るが、イベントの配布だけでなく、イベントデータの取得でも困難を示す。というのは、取得も同様に、重要なサーバインフラを構築および運用する必要があるからである。 [0004] In addition, many modern mobile applications have been described as simple experiences with existing Internet resources. For example, the news application can instantly display the latest headlines from an important news provider's RSS feed, since the user can open the application without having to navigate to a website. Individual software developers and small individual software vendors build many such applications and sell them at very low prices. These applications also benefit greatly from push notifications, but present difficulties not only in event distribution but also in event data acquisition. This is because acquisition, as well, requires building and operating an important server infrastructure.
[0005]本明細書で特許請求される主題は、あらゆる欠点を解決する、または上に記載したような環境だけで動作する実施形態に限定されるものではない。むしろ、この背景は、本明細書に記載された、いくつかの実施形態を実施することができる1つの例示的技術分野を例示するためにだけに提供されている。 [0005] The subject matter claimed herein is not limited to embodiments that solve any disadvantages or that operate only in environments such as those described above. Rather, this background is provided only to illustrate one example technology area where some embodiments described herein may be implemented.
本願発明の一実施例は、例えば、複数のターゲットへのマルチソースプッシュ通知の分配に関する。 One embodiment of the present invention relates to the distribution of multi-source push notifications to multiple targets, for example.
[0006]本明細書に例示された一実施形態は、イベントを消費者に配信する方法を含む。この方法は、所有権データにアクセスするステップを含む。この方法はさらに、所有権データを正規化して、正規化イベントを作り出すステップを含む。複数の末端消費者が、加入に基づいて、イベントを受信するべきであると判断される。正規化イベントからのデータは、判断された各末端消費者に個別に適当な複数の異なるフォーマットに形式化される。正規化イベントからのデータは、それぞれの末端消費者に適当、および消費者がこれを介して到達するターゲットインフラによって規定されるプロトコル規則に整合するフォーマットで、複数の末端消費者それぞれに運ばれる。 [0006] One embodiment illustrated herein includes a method of delivering events to consumers. The method includes accessing ownership data. The method further includes normalizing the ownership data to create a normalized event. It is determined that multiple end consumers should receive the event based on the subscription. Data from the normalization event is formatted into a number of different formats that are individually appropriate for each end consumer determined. Data from the normalization event is conveyed to each end consumer in a format that is appropriate for each end consumer and consistent with the protocol rules defined by the target infrastructure through which the consumer reaches.
[0007]この要約は、詳細な説明で以下にさらに記載された単純な形で、概念の選択を紹介するために提供される。この要約は、請求する主題の重要な特性または本質的な特性を特定することを意図したものではなく、請求する主題の範囲を判断する助けとして使用されることを意図したものでもない。 [0007] This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the detailed description. This summary is not intended to identify key features or essential characteristics of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
[0008]追加の特性および利点は、以下の説明に記載され、部分的には説明から自明である、または本明細書の教示の実施によって習得することができる。本発明の特性および利点は、添付の特許請求の範囲で特に指摘された機器または組合せにより、実現することができ、得ることができる。本発明の特性は、以下の説明および添付の特許請求の範囲からより十分明らかになる、またはこれ以下に記載されるような発明の実施によって習得することができる。 [0008] Additional features and advantages are set forth in the description that follows, and in part are obvious from the description, or can be learned by practice of the teachings herein. The features and advantages of the invention may be realized and obtained by means of the instruments or combinations particularly pointed out in the appended claims. The features of the invention will become more fully apparent from the following description and appended claims, or may be learned by the practice of the invention as set forth hereinafter.
[0009]上で言及した、および他の利点および特性を得ることができる方法を説明するため、上で簡単に説明した主題のより特定な記載は、添付の図面で例示された特定の実施形態を参照して示される。これらの図面が、典型的な実施形態を示すだけであり、したがって範囲を限定するものと考えるものではないことを理解して、実施形態は、添付の図面の使用により、追加の特性および詳細で記載および説明される。 [0009] To illustrate the manner in which the above and other advantages and characteristics can be obtained, a more specific description of the subject matter briefly described above is given by way of example in the specific embodiments illustrated in the accompanying drawings. Shown with reference to With the understanding that these drawings depict only typical embodiments and are therefore not to be considered limiting in scope, the embodiments will be described with additional features and details through the use of the accompanying drawings. Described and explained.
[0017]実施形態は、イベント取得システムを、通知分配システム、およびイベントを通知にマッピングするマッピングモデルに組み合わせることができる。実施形態はまた、加入供給基準に基づいて通知をフィルタリングすることが可能である。さらに、実施形態は、効率的な方法で個別のターゲットに対する配信カウントを追跡することなどの深度能力を有することができる。 [0017] Embodiments can combine an event acquisition system with a notification distribution system and a mapping model that maps events to notifications. Embodiments can also filter notifications based on subscription provision criteria. Further, embodiments can have depth capabilities such as tracking delivery counts for individual targets in an efficient manner.
[0018]このような一例が、図1に示されている。図1は、多数の異なるソース116からの情報が、多数の異なるターゲット102に運ばれる一例を示す。いくつかの例では、単一のソースからの情報、または多数のソース116から集約される情報を使用して、多数のターゲット102に運ばれる単一のイベントを作り出すことができる。指示子102は、集合的に全てのターゲット、または一般的に個別のターゲットのことを言うために使用することができることに留意されたい。特定の個別のターゲットは、別の差別子によって指定される。
[0018] One such example is shown in FIG. FIG. 1 shows an example where information from a number of
[0019]図1はソース116を示す。指示子116は、集合的に全てのソース、または一般的に個別のソースのことを言うために使用することができることに留意されたい。特定の個別のソースは、別の差別子によって指定される。ソース116としては、例えば、RSS、Atom、およびODataフィードを含む幅広いパブリックおよびプライベートネットワークサービスと、これに限らないが、IMAPおよびPOP3プロトコルをこのようにサポートすることを含むEメールメールボックスと、ツイッタータイムラインまたはフェイスブックウォールなどのソーシャルネットワーク情報ソース116と、ウィンドウズアジュール(商標)サービスバスまたはアマゾンのシンプルキューサービスなどの外部公共/加入インフラに関する加入とを含むことができる。
[0019] FIG. Note that the
[0020]ソース116を使用して、イベントデータを取得することができる。以下により詳細に説明されるように、ソース116を、取得トピック140−1などの取得トピックに編成することができる。イベントデータは、全体的に104で示した正規化イベントにマッピングさせることができる。正規化イベント104は、1つまたは複数のマッピングモジュール130によって、特定のターゲット102に対する通知にマッピングさせることができる。通知132は、特定のターゲット102に対する通知を代表する。単一のイベント104は、多くの異なる通知にマッピングさせることができ、ここで、異なる通知は、多くの異種ターゲット102への分配に適当な異なるフォーマットであることが分かるものとする。例えば、図1はターゲット102を示す。ターゲット102は、ターゲット特徴に依存する多くの異なるメッセージフォーマットをサポートする。例えば、いくつかのターゲット102は、リレーフォーマットで通知をサポートすることができ、他のターゲット102は、ウィンドウズ(登録商標)7フォン用のMPNS(マイクロソフト(登録商標)プッシュ通知サービス)フォーマットで通知をサポートすることができ、他のターゲット102は、iOSデバイス用のAPN(アップルプッシュ通知)フォーマットで通知をサポートすることができ、他のターゲット102は、アンドロイドデバイス用のC2DM(クラウドツーデバイスメッセージング)フォーマットで通知をサポートすることができ、他のターゲット102は、デバイス上のブラウザ用のJSON(ジャバスクリプトオブジェクトノーテーション)フォーマットで通知をサポートすることができ、他のターゲット102は、HTTP(ハイパーテキスト転送プロトコル)などで通知をサポートすることができる。
[0020] The
[0021]したがって、マッピングモジュール130によるマッピングは、1つまたは複数のデータソース116からの情報から作り出された単一のイベント104を、異なるターゲット102用の多くの異なる通知にマッピングすることができる。異なる通知132は、その後、様々なターゲット102に運ぶことができる。
Accordingly, mapping by the
[0022]これは、いくつかの実施形態では、図2に示されたようなファンアウトトポロジーを使用して達成することができる。図2は、ソース116を示す。本明細書に以下に論じるように、実施形態は取得パーティション140を利用することができる。各取得パーティション140は、多くのソース116を含むことができる。潜在的に、多数および多様なソース116がある可能性がある。ソース116は情報を提供する。このような情報としては、例えば、これに限らないが、Eメール、テキストメッセージ、リアルタイム株価、リアルタイムスポーツスコア、ニュース更新などを挙げることができる。
[0022] This may be achieved in some embodiments using a fan-out topology as shown in FIG. FIG. 2 shows the
[0023]図2は、各パーティションが例示的な取得エンジン118などの、取得エンジンを含んでいることを示す。取得エンジン118は、ソース116から情報を収集し、情報に基づき、イベントを生成する。図2に示す例では、多くのイベントが、様々なソースを使用して、取得エンジンによって生成されると示される。イベント104−1は、例示として使用される。いくつかの実施形態では、イベント104−1は、本明細書にさらに説明するように正規化させることができる。取得エンジン118は、ネットワーク上でソース116から情報を収集する、インターネットなどのネットワーク上のサービスであってもよい。
[0023] FIG. 2 shows that each partition includes an acquisition engine, such as the
[0024]図2は、イベント104−1が分配トピック144に送信されることを示す。分配トピック144は、イベントを多くの分配パーティションにファンアウトさせる。分配パーティション120−1は、分配パーティションの全てに対してアナログとして使用される。分配パーティションはそれぞれ、加入によって示される多くのエンドユーザまたはデバイスにサービスを提供する。分配パーティションによってサービス提供される加入数は、他の分配パーティションの数とは異なる可能性がある。いくつかの実施形態では、パーティションによってサービス提供される加入数は、分配パーティションの容量に左右される可能性がある。別の方法では、または加えて、分配パーティションを選択して、エンドユーザへの論理的または地理的近接に基づき、ユーザにサービスを提供することができる。これにより、警告をよりタイムリーな方法でエンドユーザに運ぶことが可能になる。
FIG. 2 shows that event 104-1 is sent to
[0025]示した例では、分配パーティション120−1は、分配エンジン122−1を含む。分配エンジン122−1は、データベース124−1を参照する。データベース124−1は、関連する配信ターゲット102に関する詳細を有する加入に関する情報を含む。特に、データベースは、ターゲット102用プラットフォーム、ターゲット102によって使用されるアプリケーション、ターゲット102用ネットワークアドレス、ターゲット102を使用するエンドユーザのユーザ好みなどを記載する情報などの情報を含むことができる。データベース124−1内の情報を使用して、分配エンジン122−1はバンドル126−1を構築し、ここでバンドル126−1は、イベント104(または、少なくともイベント104からの情報)、およびイベント104−1からの情報が通知として送信されるターゲット102の中から複数のターゲット102を識別するルーティングスリップ128−1を含む。バンドル126−1はその後、キュー130−1内に配置される。
[0025] In the illustrated example, distribution partition 120-1 includes distribution engine 122-1. The distribution engine 122-1 refers to the database 124-1. Database 124-1 includes information regarding subscriptions with details regarding the associated
[0026]分配パーティション120−1は、多くの配信エンジンを含むことができる。配信エンジンは、バンドルをキュー103−1から取り除き、通知をターゲット102に運ぶ。例えば、配信エンジン108−1は、バンドル126−1をキュー13−1から取り出し、イベント104情報をルーティングスリップ128−1内で識別されたターゲット102に送信することができる。したがって、イベント104−1情報を含む通知134は、異なるターゲット102に適当な、また個別のターゲット102に特有のいくつかの異なるフォーマットで、ターゲット102に様々な分配パーティションから送信させることができる。これにより、多数の個別化通知を配信システムを通して運ぶのではなく、個別のターゲット102に個別化された個別化通知134を、配信システムのエッジで共通イベント104−1から作り出すことが可能になる。
[0026] Distribution partition 120-1 may include a number of distribution engines. The delivery engine removes the bundle from the queue 103-1, and carries the notification to the
[0027]以下に、いくつかの実施形態で使用することができる情報収集およびイベント分配システムの代替的記載を例示する。
[0028]基礎として、一実施形態のシステムは、ワシントン州レッドモンドのマイクロソフトコーポレーションから市販されるウィンドウズ(登録商標)アジュールサービスバスによって提供されるような公共/加入インフラを使用しており、また様々な他のメッセージングシステムで同様の形で存在する。インフラは、示した方法の記載した実施を容易にする2つの能力、トピックおよびキューを提供する。
[0027] The following illustrates an alternative description of an information collection and event distribution system that can be used in some embodiments.
[0028] As a basis, the system of one embodiment uses a public / subscribe infrastructure such as that provided by the Windows (R) Azur Service Bus commercially available from Microsoft Corporation of Redmond, Washington, and various It exists in a similar way in other messaging systems. The infrastructure provides two capabilities, topics and queues that facilitate the described implementation of the presented method.
[0029]キューは、メッセージを逐次的な順序で追加する(キューに加える)ことを可能にする、また追加されたのと同じ順序で取り除く(キューから取り除く)ことを可能にするメッセージ用の記憶構造である。メッセージを、あらゆる数の並列クライアントによって追加し、取り除くことができ、キューに加える側の負荷のレベリング、およびキューから取り除く側の受信機にわたる処理負荷の並列化を可能にする。キューはまた、エンティティが、キューから取り除かれたときにメッセージ上のロックを得るのを可能にして、いつメッセージが実際にキューから削除されるか、または取り出されたメッセージの処理が失敗した場合にキュー内で回復させることができるかどうかに関する消費クライアントの明示的制御を可能にする。 [0029] Queues store messages for messages that allow messages to be added (added to the queue) in a sequential order and removed (removed from the queue) in the same order that they were added. Structure. Messages can be added and removed by any number of parallel clients, allowing leveling of the load on the side that adds to the queue and parallelization of the processing load across the receivers that remove it from the queue. The queue also allows an entity to obtain a lock on the message when it is removed from the queue, so that when the message is actually removed from the queue or processing of the retrieved message fails Allows explicit control of the consuming client as to whether it can be recovered in the queue.
[0030]トピックは、キューの全ての特徴を有するが、それぞれキューに加えられたメッセージのシーケンス上の隔離およびフィルタリングされたビューを可能にする、複数の同時に存在する「加入」を可能にする記憶構造である。トピック上の各加入は、(1つまたは複数の)加入の関連フィルタ状態がメッセージに確実に一致するという条件で、キューに加えられた各メッセージのコピーを作り出す。その結果、それぞれが全てのメッセージに一致する単純な「パススルー」状態を有する10の加入を有するトピック内でキューに加えられたメッセージは、それぞれ各加入用の合計10のメッセージを作り出す。加入は、キューと同様に、受信機にわたる処理負荷の並列化を行なう複数の並列消費者を有することができる。 [0030] A topic has all the characteristics of a queue, but allows multiple concurrent "subscriptions", each allowing a quarantined and filtered view of the sequence of messages added to the queue. Structure. Each subscription on the topic creates a copy of each message added to the queue, provided that the associated filter state (s) of the subscription (s) reliably match the message. As a result, messages queued in a topic with 10 subscriptions, each with a simple “pass-through” state that matches all messages, produces a total of 10 messages for each subscription. A subscription, like a queue, can have multiple parallel consumers that provide parallel processing load across the receivers.
[0031]別の基礎的概念は、「イベント」のものであり、これは根本的な公共/加入インフラの意味において、単にメッセージである。一実施形態の内容で、イベントは、メッセージ本体およびメッセージ特性の使用を管理する1式の単純な制約の影響を受ける。イベントのメッセージ本体は一般的に、不透明なデータブロックとして流れ、一実施形態によって検討されるあらゆるイベントデータは一般的に、イベントを示すメッセージの一部である1式のキー/値対であるメッセージ特性内に流れる。 [0031] Another fundamental concept is that of "events", which are simply messages in the sense of the underlying public / subscribe infrastructure. In one embodiment, events are subject to a set of simple constraints that govern the use of message bodies and message characteristics. The message body of the event generally flows as an opaque data block, and any event data considered by one embodiment is typically a message that is a set of key / value pairs that are part of the message indicating the event. Flows within the characteristics.
[0032]次に図3を参照すると、一実施形態のアーキテクチャの目標は、大きな規模で幅広い異なるソース116からイベントデータを取得し、次の処理のために公共/加入インフラ内にこれらのイベントを転送することである。処理は、引くまたは押す通知機構を通して興味のある加入者へのイベントの分析、リアルタイム調査、または再分配のいくつかの形を含むことができる。
[0032] Referring now to FIG. 3, the architectural goal of one embodiment is to obtain event data from a wide variety of
[0033]一実施形態のアーキテクチャは、取得エンジン118、取得アダプタおよびイベント正規化用モデル、取得ソース116に関するメタデータを保持する分割されたストア138、共通の分割およびスケジューリングモデル、およびさらなるデータベース検索を必要とすることなく、取得ソース116の状態のユーザ起動の変化をシステム内にランタイムでどのように流すかについてのモデルを定義する。
[0033] The architecture of one embodiment includes an
[0034]具体的な実施では、取得は、RSS、Atom、およびODataフィードを含む幅広いパブリックおよびプライベートネットワークサービス、これに限らないが、IMAPおよびPOP3プロトコルをこのようにサポートすることを含むEメールメールボックス、ツイッタータイムラインまたはフェイスブックウォールなどのソーシャルネットワーク情報ソース116、およびウィンドウズアジュール(商標)サービスバスまたはアマゾンのシンプルキューサービスなどの外部公共/加入インフラに関する加入からのソースイベントへの具体的な取得アダプタをサポートすることができる。
[0034] In a specific implementation, retrieval is a wide range of public and private network services, including, but not limited to, RSS, Atom, and OData feeds, including email support including such support for IMAP and POP3 protocols Specific acquisition of source events from subscriptions on social
[0035]
イベント正規化
イベントデータは正規化されて、イベントを手渡されている公共/加入インフラ上の加入者によって実際に消費可能にする。正規化は、この内容では、イベントを様々な内容で広範の加入者に興味のある可能性がある情報アイテムの一貫性のある表示を備えた共通のイベントモデルの上にマッピングされることを意味する。選択されたモデルはここでは、システムによってさらに解釈されない、単一の不透明なバイナリ量のデータに伴うことができるキー/値対の均一のリストの形のイベントの単純な表示である。イベントのこのような表示は、多くの公共/加入インフラ上で容易に表示可能であり、また、HTTPなどの共通のインターネットプロトコルに対して極めてみごとにマッピングする。
[0035]
Event normalization Event data is normalized to make the event actually consumable by subscribers on the public / subscribe infrastructure being handed over. Normalization means that in this context, events are mapped on top of a common event model with a consistent display of information items that may be of interest to a wide range of subscribers with varying content. To do. The selected model is here a simple representation of events in the form of a uniform list of key / value pairs that can accompany a single opaque binary quantity of data that is not further interpreted by the system. Such a display of events can be easily displayed on many public / subscribe infrastructures and maps very well to common Internet protocols such as HTTP.
[0036]イベント正規化を示すために、イベント104内へのRSSまたはAtomフィードエントリのマッピングを検討する(図1および2を参照)。RSSおよびAtomは、しばしば時系列で、ニュースおよび他の現在の情報を発表するために極めて幅広く使用され、その情報を構造的な方法でコンピュータプログラム内の処理に利用可能にするのを助ける、2つのインターネット標準である。RSSおよびAtomは、極めて同様な構造、および異なる名前であるが、意味的に同一なデータ要素の集合を共有する。したがって、第1の正規化ステップは、名称または概要などの、両方の標準で定義されたこのような意味的に同一な要素に対するキーとして共通な名前を定義する。第2に、1つの、しかし他の標準で起こるだけであるデータは普通、それぞれの「ネイティブ」名でマッピングされる。その上、これらの種類のフィードはしばしば、コア標準で定義されないが、追加のデータを加えるために、それぞれの標準で拡張性を使用しているデータアイテムである、「拡張子」を運ぶ。 [0036] To illustrate event normalization, consider the mapping of RSS or Atom feed entries into event 104 (see FIGS. 1 and 2). RSS and Atom are very widely used to publish news and other current information, often in chronological order, helping to make that information available for processing within a computer program in a structured manner. Internet standards. RSS and Atom are very similar structures and have different names but share a collection of semantically identical data elements. Thus, the first normalization step defines a common name as a key for such semantically identical elements defined in both standards, such as name or summary. Second, data that only occurs in one but other standards is usually mapped with their “native” names. Moreover, these types of feeds often carry “extensions”, which are data items that are not defined in the core standard, but use extensibility in each standard to add additional data.
[0037]これに限らないが、地理位置情報用のGeoRSS、または構造化データをAtomフィード内に埋め込むためのODataを含む、これらの拡張子のいくつかは、異なるイベントソース116にわたって共有される共通の方法でマッピングされ、それによって、イベントが発せられる公共/加入インフラ上の加入者は、データがRSSまたはAtom、またはツイッタータイムラインから取得されたかどうかに関わらず、均一の方法で地理的位置情報を解釈することができる。GeoRSSの例に続けて、地理「ポイント」を示す単純なGeoRSS式はしたがって、WGS84座標を示す1対の数値の「緯度」/「経度」性にマッピングさせることができる。
[0037] Some of these extensions, including but not limited to GeoRSS for geolocation or OData for embedding structured data in an Atom feed, are shared across
[0038]ODataなどの複雑構造化データを運ぶ拡張子は、基礎的イベントモデルを複雑化することなく、複合タイプ構造およびデータを保存するマッピングモデルを実施することができる。いくつかの実施形態は、JSONなどの正準およびコンパクト複合データ表示に正規化し、例えば、複合データタイプ「人」のODataプロパティ「テナント」をキー/値対にマッピングし、キーはプロパティ名「テナント」であり、値はJSON直列化された形で示された名前、経歴情報、および住所情報を有する人を説明する複合データである。データソースがXMLドキュメントである場合、RSSまたはAtomの場合と同様に、値は、XMLデータをXMLによって提供された構造を保存するJSONに転写するが、属性および要素などのXML特殊性を平坦化することによって作り出すことができ、同じXML要素ノードのXML属性および要素の下位概念であるXML属性および要素は両方とも、別の区別がない「きょうだい(siblings)」としてJSONプロパティにマッピングされる。 [0038] Extensions that carry complex structured data, such as OData, can implement complex type structures and mapping models that store data without complicating the underlying event model. Some embodiments normalize to canonical and compact composite data representations such as JSON, eg, map the OData property “tenant” of the composite data type “person” to a key / value pair, where the key is the property name “tenant” The value is composite data describing a person with name, background information, and address information shown in JSON serialized form. If the data source is an XML document, as with RSS or Atom, the value transcribes the XML data to a JSON that stores the structure provided by XML, but flattens XML specialities such as attributes and elements Both XML attributes of the same XML element node and XML attributes and elements that are subordinate concepts of the element are mapped to JSON properties as “siblings” with no distinction.
[0039]
ソースおよび分割化
一実施形態のアーキテクチャは、ソースデータベース138内に記憶させることができる、「ソース記述」記録内のデータソース116に関するメタデータを保存する。「ソース記述」は、共通要素の集合、およびデータソースに特有な要素の集合を有することができる。共通の要素は、ソースの名前、ソース116が有効であると考えられる期間インターバル、人間が読み取れる記述、および差別化用タイプのソース116を含むことができる。ソース特有要素は、ソース116のタイプに左右され、ネットワークアドレスと、認証情報と、またはアドレスによって示されたリソース、およびRSSフィードをチェックするための時間インターバルを提供するなどの、特定の方法でデータ取得を行なう、または構築されるエンド間経験である場合に、通知受信者が制約されたスクリーン表面上の各ニュース速報アイテムを見る機会を得るように、少なくとも60秒離して現在のイベントニュースフィードから取得されたイベントに間隔をあけることなどの、特定の方法のイベントの転送を行なういずれかを、ソース取得アダプタに命令するメタデータへのアクセスを得るための他のセキュリティキー材料とを含むことができる。
[0039]
Sources and Partitioning The architecture of one embodiment stores metadata about the
[0040]ソース記述は、ソースデータベース138などの1つまたは複数のストア内に保持される。ソース記述は、2つの異なる軸に沿って、これらのストアにわたって、これらの中で分割化させることができる。
[0040] The source description is maintained in one or more stores, such as
[0041]第1の軸は、システムテナントによる区別である。システムテナント、または「ネームスペース」は、システム内にエンティティ用の隔離された範囲を作り出すための機構である。「フレッド」が一実施形態を実施しているシステムのユーザである具体的な場合を示し、フレッドは、システム内の他のソース116とは完全に独立したソース記述および構成および状態を保持することができる、隔離された仮想環境をフレッドに提供するテナント範囲を作り出すことが可能である。この軸は、また特に、テナントが(パスワードなどのセキュリティ感度が高いデータを含むことができる)記憶されたメタデータの隔離を必要とする場合、または技術的、規制的または事業的理由で、ストアにわたってソース記述を広げるための差別化要因として働くことができる。システムテナントはまた、ソース記述データが中に保持され、そこからデータ取得が行なわれる特定のデータセンタへのアフィニティを示すことができる。
[0041] The first axis is differentiation by system tenant. A system tenant, or “namespace”, is a mechanism for creating an isolated range for entities within a system. Shows the specific case where “Fred” is a user of a system implementing an embodiment, and Fred maintains a source description and configuration and state that is completely independent of
[0042]第2の軸は、規定の識別子範囲から選択された数値パーティション識別子による区別であることができる。パーティション識別子は、例えば、ソース名およびテナント識別子などの、ソース記述内に含まれる不変条件から導き出すことができる。パーティション識別子は、ハッシュ機能(多くの候補のうちの1つは、ジェンキンスハッシュである。http://www.burtleburtle.net/bob/hash/doobs.htmlを参照のこと。)を使用してこれらの不変条件から導き出すことができ、得られるハッシュ値は、おそらくハッシュ値上のモジュロ機能を使用して、パーティション識別子範囲に算出される。識別子範囲は、システム内にいつも保持される全てのソース記述を記憶するのに必要であると予測される最も多くの記憶パーティションより大きいように選択される(実質的に大きい可能性がある)。 [0042] The second axis can be a distinction by a numeric partition identifier selected from a predefined identifier range. The partition identifier can be derived from invariant conditions included in the source description, such as, for example, the source name and tenant identifier. The partition identifier is a hash function (one of many candidates is Jenkins hash, see http://www.burtleburtle.net/bob/hash/dobs.html). The resulting hash value is computed into the partition identifier range, possibly using a modulo function on the hash value. The identifier range is chosen to be larger than the most storage partitions expected to be needed to store all the source descriptions that are always kept in the system (which can be substantially larger).
[0043]記憶パーティションを導入することは、根本的なデータストアに関する記憶容量割当に直ぐに関連する、または所与のデータセンタまたはデータセンタ部に対する帯域幅制約などの取得エンジン118に影響を与える容量制限に関連するいずれかの、容量制限によって普通は動機付けされ、その結果、侵入帯域幅要求を満たすために、異なるデータセンタまたはデータセンタセグメントにわたって容量を利用している取得パーティション140を作り出す実施形態につながる可能性がある。記憶パーティションは、全体的識別子範囲のサブセットを所有し、記憶パーティション(および、これにアクセスするのに必要なリソース)を備えたソース記述記録の関連性はしたがって、そのパーティション識別子から直接推論することができる。
[0043] Introducing storage partitions is a capacity limitation that is immediately related to storage capacity allocation for the underlying data store, or that affects the
[0044]記憶パーティション軸を提供することを越えて、パーティション識別子はまた、スケジューリングまたは取得ジョブに使用され、(記憶パーティションへの関係とは潜在的に異なる)所与のソース記述への取得パーティション140の所有関係を明らかに規定している。 [0044] Beyond providing a storage partition axis, partition identifiers are also used in scheduling or acquisition jobs to acquire partition 140 for a given source description (potentially different from its relationship to storage partitions). Clearly defines the ownership relationship.
[0045]
所有および取得パーティション
システム内の各ソース技術は、特定の取得パーティション140によって所有させることができる。重複したイベントを発する可能性がある場合に、システムは複数の場所で並列して全く同じソース116からイベントを取得しないので、明確および独自の所有権が使用される。これをより具体的にするために、テナントの範囲内で規定された1つのRSSフィードは、システム内で正確に1つの取得パーティション140によって所有され、パーティション内には、時間内にあらゆる所与のポイントで特定のフィード上の1つのスケジューリングされた取得実行がある。
[0045]
Owning and Acquisition Partition Each source technology in the system can be owned by a specific acquisition partition 140. Clear and proprietary ownership is used because the system does not get events from the exact
[0046]取得パーティション140は、パーティション識別子範囲の所有権を得る方法で、ソース記述の所有権を得る。識別子範囲は、フェイルオーバー能力を有することができ、マスタ/バックアップオーナーを割り当てることができる外部の専用分割システムを使用して、またはパーティション識別子範囲が、取得エンジン役割を仮定する多くの個別算出例にわたって均一に広がるより単純な機構を使用して、取得パーティション140に割り当てることができる。外部の分割システムでのより洗練された実施では、パーティションの選ばれたマスタオーナーは、システムが「冷却」状態から開始した場合に、ジョブのスケジューリングをシーディングする責任があり、これは、パーティションは前のオーナーを有していなかったということを意味する。より単純なシナリオでは、パーティションを所有する算出例は、スケジューリングをシーディングすることを所有している。 [0046] The acquisition partition 140 obtains ownership of the source description in a manner that obtains ownership of the partition identifier range. The identifier range can have failover capability, using an external dedicated partitioning system that can be assigned a master / backup owner, or across many individual calculations where the partition identifier range assumes an acquisition engine role A simpler mechanism that spreads evenly can be used to assign to the acquisition partition 140. In a more sophisticated implementation with an external split system, the chosen master owner of the partition is responsible for seeding the job scheduling when the system starts from a “cooled” state, which means that the partition It means that he did not have a previous owner. In a simpler scenario, a calculation example that owns a partition owns seeding scheduling.
[0047]
スケジューリング
取得ジョブに対するスケジューリング需要は、具体的なソースの性質に左右されるが、一般的に、いくつかの記載された実施形態で実現される2種類の取得モデルがある。
[0047]
Scheduling Scheduling demand for an acquisition job depends on the nature of the specific source, but there are generally two types of acquisition models implemented in some of the described embodiments.
[0048]第1のモデルでは、オーナーは、ソースのネットワークサービス上で接続または長期間のネットワーク要求のいくつかの形を開始し、データグラムまたはストリームの形で接続上でデータが返されるのを待つ。一般的には長期ポーリングとも呼ばれる長期間要求の場合、ソースネットワークサービスは、タイムアウトが起こるまで、またはデータが利用可能になるまで、要求を保ち、その後、取得アダプタは、ペイロード結果があってもなくても要求が完了するのを待ち、その後、要求を再発行する。その結果、この取得スケジューリングモデルは、ソース116のオーナーがソースに関して学習するときに、また新しい要求または接続が現在の接続または要求が完了するまたは一時的に中断されると直ぐに開始される場合に、開始される「タイト」ループの形をしている。オーナーがタイトループの即時制御にあるときに、ループはオーナーが実行している間に確実にアライブに保持させることができる。オーナーが停止および再開すると、ループも再開する。所有権が変わると、ループは停止し、新しいオーナーがループを開始させる。
[0048] In the first model, the owner initiates some form of connection or long-term network request on the source network service and allows data to be returned on the connection in the form of a datagram or stream. wait. In the case of long-term requests, also commonly referred to as long-term polling, the source network service keeps the request until a timeout occurs or data becomes available, after which the capture adapter has or does not have a payload result Wait for the request to complete, then reissue the request. As a result, this acquisition scheduling model is used when the owner of the
[0049]第2のモデルでは、ソースのネットワークサービスは、利用可能になったときに、長期間要求または接続生成データをサポートしていないが、問い合わせされると直ぐに返る通常の要求/応答サービスである。このようなサービスでは、これは多くのウェブリソースに当てはまり、連続タイトループ内でデータを要求することにより、膨大な量のロードをソース116上に生じさせ、また、ソース116が変化しなかったことを単に示す、または最悪の場合、何度も繰り返し同じデータを運んでいるいずれかの重大なネットワークトラフィックを生じさせる。タイムリーなイベント取得の需要を並列化し、無益なクエリートラフィックでソース116をオーバーロードさせないために、取得エンジン118はしたがって、「タイミング」ループ内で要求を実行し、ソース116上の要求は、これらの検討事項を並列化し、またソース116からのヒントを考慮するインターバルに基づいて周期的に実行される。「タイミング」ループは、ソース116のオーナーがソースに関して学習するときに開始される。
[0049] In the second model, the source network service does not support long-term request or connection creation data when it becomes available, but is a normal request / response service that returns as soon as queried. is there. For such a service, this is true for many web resources, requesting data in a continuous tight loop, causing a huge amount of load on
[0050]タイミングループに対する2つの注目に値する実施バリアント型がある。第1のバリアント型は、低い規模の最良の努力のシナリオであり、スケジューリングにローカルのインメモリタイマオブジェクトを使用し、これにより、規模、制御および再開特徴が、タイトループのものと同様にされる。ループが開始され、直ぐにタイマコールバックがスケジューリングされて、取得ジョブの第1の反復が実行される。そのジョブが(エラーがあったとしても)完了し、ループが実行し続けるものであると判断されると、別のタイマコールバックが、ジョブが次に実行される瞬間にスケジューリングされる。 [0050] There are two noteworthy implementation variant types for timed loops. The first variant is a low-scale best effort scenario, which uses a local in-memory timer object for scheduling, which makes the size, control and restart features similar to those of tight loops . A loop is started and a timer callback is scheduled immediately to execute the first iteration of the acquisition job. If it is determined that the job is complete (even if there is an error) and the loop is to continue executing, another timer callback is scheduled at the next time the job is executed.
[0051]第2のバリアント型は、ウィンドウズアジュール(商標)サービスバスを含む、いくつかの公共/加入システムの特性である、「スケジューリングメッセージ」を使用する。バリアント型は、いくらかより高い複雑性の犠牲に、かなりより高い取得スケールを提供する。スケジューリングループは、オーナーによって開始され、メッセージは取得パーティションのスケジューリングキュー内に置かれる。メッセージは、ソース記述を含む。取得ジョブを行ない、その後、得られたイベントをターゲット公共/加入システム内でクエリーに加える労働者によってのちに取り上げられる。最後にまた、新しい「スケジューリング」メッセージをスケジューリングキューに加える。そのメッセージは、「スケジューリングされた」と呼ばれる。というのは、スケジューリングキュー上であらゆる消費者によって検索に利用可能になる瞬間でマーキングされているからである。 [0051] The second variant uses a "scheduling message", which is a characteristic of several public / subscription systems, including the Windows Azure ™ service bus. The variant type provides a much higher acquisition scale at the expense of some higher complexity. The scheduling loop is initiated by the owner and the message is placed in the acquisition partition's scheduling queue. The message includes a source description. It is later picked up by workers who perform an acquisition job and then add the resulting event to the query in the target public / subscription system. Finally, a new “scheduling” message is also added to the scheduling queue. The message is called “scheduled”. This is because it is marked at the moment it becomes available for search by any consumer on the scheduling queue.
[0052]このモデルでは、取得パーティション140は、スケジューリングを一次的にシーディングする、また実際の取得ジョブを行なうあらゆる数の「労働者」の役割と対にすることができる、1つの「オーナー」の役割を有することによってスケールアウトすることができる。 [0052] In this model, the acquisition partition 140 is a single "owner" that can be paired with any number of "worker" roles that primarily seed scheduling and perform actual acquisition jobs. It is possible to scale out by having the role of
[0053]
ソース更新
システムが運転しているときに、取得パーティション140は、観察すべき新しいソース116に関して、およびどのソース116をもはや観察すべきではないかに関して学習することができる必要がある。これに関する決定は典型的には、検出された回復不能のまたは一時的なエラーによりソース116を(以下に説明するように)ブラックリスト化する場合を除いて、ユーザにかかっており、管理サービス142との相互作用の結果である。このような変化を通信するため、取得システムは、根本的な公共/加入インフラ内に「ソース更新」トピックを維持する。各取得パーティション140は、加入が取得パーティションの所有された範囲内でパーティション識別子を運ぶものに適格なメッセージを制約するフィルタ条件を有した状態で、トピックに関する専用加入を有する。これにより、管理サービス142が、新しいまたは退いたリソース116に関する更新を設定し、パーティション保有権分配の知識を必要とすることなくこれらを正しいパーティション140に送信することが可能になる。
[0053]
When the source update system is in operation, the acquisition partition 140 needs to be able to learn about
[0054]管理サービス142は、ソース記述、(上記フィルタリング目的の)パーティション識別子、およびソース116を加えるべきか、またはソース116をシステムから取り除くべきかを示す動作識別子を含むトピック内に更新コマンドを提示する。
[0054] The
[0055]取得パーティション140のオーナーがコマンドメッセージを検索すると、新しいソース116に対して新しい取得ループをスケジューリングする、または既存の取得ループを中断、またはさらには退かせる。
[0055] When the owner of the acquisition partition 140 retrieves the command message, it schedules a new acquisition loop for the
[0056]
ブラックリスト化
データ取得が失敗したソース116は、一時的にまたは永久的にブラックリスト化させることができる。一時的ブラックリスト化は、ソース116ネットワークリソースが利用可能ではない、または再発行された取得要求に直ぐには関連しないエラーを返す場合に行なわれる。一時的ブラックリスト化の期間は、エラーの性質に左右される。一時的ブラックリスト化は、通常のスケジューリングループ(タイトまたはタイミング)を中断し、エラー状態が他者によって解決されることが予測される瞬間に対して、(コールバックまたはスケジューリングメッセージにより)ループの次の反復をスケジューリングすることによって行なわれる。
[0056]
Blacklisting
[0057]永久的ブラックリスト化は、エラーが取得要求の直ぐの結果であると判断された場合に行なわれ、要求は認証または許可エラーを起こしている、または遠隔ソース116がいくつかの他の要求エラーを示しているということを意味する。リソースが永久的にブラックリスト化されると、ソース116はパーティションストア内でブラックリスト化されたとマーキングされ、取得ループは直ぐに中止される。永久的にブラックリスト化されたソース116を元に戻すには、推定上、要求に対する挙動変化を起こす構成変化と共に、ストア内のブラックリストマーカを取り除き、ソース更新トピックを介して取得ループを再開させる必要がある。
[0057] Permanent blacklisting is performed when the error is determined to be an immediate result of an acquisition request, the request has caused an authentication or authorization error, or the
[0058]
通知分配
特定の範囲に関連する多数の「ターゲット102」それぞれに所与の入力イベントからの情報のコピーを分配し、各ターゲット102に対して最小の時間でそのようにするように、実施形態を構成することができる。ターゲット102は、いくつかの第三者通知システム、またはいくつかのネットワークアクセス可能外部インフラへのアダプタの識別子に結合されたデバイスまたはアプリケーションのアドレスと、その通知システムまたはインフラにアクセスするための補助データとを含むことができる。
[0058]
Notification Distributing Embodiments to distribute a copy of information from a given input event to each of a number of “
[0059]いくつかの実施形態は、以下に詳細に記載され、図4を参照して理解することができる、3つの個別の処理役割に分割されるアーキテクチャを含むことができる。図4に「1」で記されているように、それぞれ処理役割の楕円、および「n」は、処理役割の1つまたは複数の例を有することができる。各場合において「n」の使用は、処理役割に適用されるような各他の場合とは区別して考えられるべきであり、各処理役割は同じ数の例を有する必要はないということを意味することに留意されたい。「分配エンジン」112の役割は、イベントを許可し、これらをターゲット102のグループを含むルーティングスリップ(例えば、図2のルーティングスリップ128−1を参照のこと)を束ねる。「配信エンジン」108は、これらのバンドルを許可し、ターゲット102によって示されたネットワーク位置への配信のためにルーティングスリップを処理する。管理サービス142によって示された「管理役割」は、ターゲット102を管理するために外部APIを提供し、また、配信エンジン108からの統計およびエラーデータを受け入れ、そのデータを処理/記憶する責任がある。
[0059] Some embodiments may include an architecture that is divided into three separate processing roles, which are described in detail below and can be understood with reference to FIG. As noted with “1” in FIG. 4, each processing role ellipse and “n” may have one or more examples of processing roles. The use of “n” in each case should be considered distinct from each other case as applied to a processing role, meaning that each processing role need not have the same number of examples. Please note that. The role of the “distribution engine” 112 allows events and bundles them together with routing slips that include groups of targets 102 (see, for example, routing slip 128-1 in FIG. 2). A “distribution engine” 108 authorizes these bundles and handles routing slips for distribution to the network location indicated by the
[0060]データフローは、イベントが分配のためにその中に提示される「分配トピック114」上にアンカリングされる。提示されたイベントは、メッセージプロパティを使用して、イベントおよび生メッセージを区別する上記制約の1つである可能性がある、関連する範囲でラベル付される。
[0060] The data flow is anchored on a "
[0061]分配トピック144は、示した例では、「分配パーティション120」毎の1つのパススルー(フィルタリングされていない)加入を有する。「分配パーティション」は、所与の範囲でターゲット102のサブセットに通知を分配および配信する責任がある隔離されたセットのリソースである。分配トピック内に送信された各イベントのコピーは、これらの関連する加入を通して効果的に同時に、全て同時に構成された分配パーティションに利用可能であり、分配作業の並列化が可能になる。
[0061]
[0062]分割による並列化は、タイムリーな分配を達成するのを助ける。これを理解するため、1000万個のターゲット102での範囲を検討する。ターゲットのデータが分割されていないストア内に保持された場合、システムは、単一の大きなデータベース結果セットを順に詳しく検討しなければならない、または結果セットが同じストア上のパーティショニングクエリーを使用して取得された場合、ターゲットデータを取得するためのスループットは少なくとも、所与のストアの前置ネットワークゲートウェイインフラのスループットシーリングによって調整されなければならず、その結果、その記述記録が所与の結果セット内で極めて遅く生じるターゲット102への通知の配信の配信待ち時間は満足いかない可能性がある。
[0062] Parallelization by partitioning helps to achieve timely distribution. To understand this, consider the range with 10 million
[0063]その代り、1000万個のターゲット102がそれぞれ10,000個のターゲット記録を保持する1,000のストアにわたって分配され、これらのストアがクエリーを実行し、ここに記載するようにパーティションの形で結果を処理する専用計算インフラ(本明細書に記載された「分配エンジン122」および「配信エンジン108」)と対にされた場合、ターゲット記述の取得は、幅広いセットの計算およびネットワークリソースにわたって並列化させることができ、分配された最初のイベントから最後のイベントまで測定された全てのイベントの分配に対する時間差をかなり小さくすることができる。
[0063] Instead, 10 million
[0064]分配パーティションの実際の数は、技術的には制限されない。単一のパーティションから、1より大きいあらゆる数のパーティションの範囲にわたる可能性がある。
[0065]示した例では、分配パーティション120用の「分配エンジン122」がイベント104を取得すると、最初にイベントデータのサイズを計算し、その後、ルーティングスリップ128のサイズを計算し、これは、イベントサイズと、根本的なメッセージングシステムの許容最大メッセージサイズおよび絶対サイズシーリングのうちのより小さい方の間の差分に基づいて計算することができる。イベントは、「ルーティングスリップ」データ用のいくつかの最小のヘッドルームがあるような寸法で限定される。
[0064] The actual number of distribution partitions is not technically limited. It can range from a single partition to any number of partitions greater than one.
[0065] In the example shown, when the "
[0066]ルーティングスリップ128は、ターゲット102の記述を含むリストである。ルーティングスリップは、イベントの範囲をパーティションのストア124内に保持されたターゲット102に対して一致させる検索クエリーを行ない、イベントの範囲、およびイベントデータに関するフィルタリング条件に基づく選択を狭める別の条件の集合に一致する全てのターゲット102を返すことによって、分配エンジン122により作り出される。実施形態は、これらのフィルタ条件の中で、現在の瞬間に有効であると考えられるこれらのターゲット102に結果を制限する時間ウィンドウ条件を含むことができる、これは、現在のUTC時間はターゲット記述記録に含まれた開始/終了有効性時間ウィンドウ内にあるということを意味する。この能力は、本文書でのちに記載するブラックリスト化に使用される。検索結果が詳しく検討されると、エンジンはイベント104のコピーを作り出し、ルーティングスリップ128を最大のサイズまで、ストア124から取り出したターゲット記述で満たし、その後、イベントおよびルーティングスリップの得られたバンドルをパーティションの「配信キュー130」に加える。
[0066] The
[0067]ルーティングスリップ技術は、分配エンジン122から(1つまたは複数の)配信エンジン108までのイベントのイベント流速が、根本的なインフラ上の実際のメッセージ流量より高いことを保証し、これは例えば、30個のターゲット記述をイベントデータのそばでルーティングスリップ128内に詰めることができる場合に、イベント/ターゲット対の流速は、イベント/ターゲット対が直ぐにメッセージにグループ化された場合よりも30倍高いということを意味する。
[0067] Routing slip technology ensures that the event flow rate of events from the
[0068]配信エンジン108は、配信キュー130からのイベント/ルーティングスリップバンドル126の消費者である。配信エンジン108の役割は、これらのバンドルをキューから取り除き、イベント104をルーティングスリップ128内に挙げられた全ての宛先に配信することである。配信は普通、イベントメッセージをそれぞれのターゲットインフラによって理解される通知メッセージに形式化するアダプタを通して起こる。例えば、通知メッセージは、ウィンドウズ(登録商標)7フォン用のMPNSフォーマット、iOSデバイス用のAPN(アップルプッシュ通知)フォーマット、アンドロイドデバイス用のC2DM(クラウドツーデバイスメッセージング)フォーマット、デバイス上のブラウザ用のJSON(ジャバスクリプトオブジェクトノーテーション)フォーマット、HTTP(ハイパーテキスト転送プロトコル)などで配信することができる。
[0068]
[0069]配信エンジン108は普通、独立したターゲット102にわたる配信を並列化し、ターゲットインフラによって実施される範囲を共有するターゲット102への配信を直列化する。後者の例は、配信エンジン内の特定のアダプタが、単一のネットワーク接続を通して特定の通知プラットフォーム上の特定のターゲットアプリケーションでターゲット化された全てのイベントを送信することを選択することができるということである。
[0069]
[0070]分配および配信エンジン122および108は、配信キュー130を使用して切り離されて、配信エンジン108の独自のスケーリングが可能になり、配信が減速されるのを防ぎ、分配クエリー/パッキングステージをブロックする。
[0070] The distribution and
[0071]各分配パーティション120は、配信キュー130を同時に観察するあらゆる数の配信エンジン例を有することができる。配信キュー130の長さを使用して、いくつの配信エンジンが同時にアクティブであるかを判断することができる。キューの長さが特定の閾値と交差する場合、新しい配信エンジン例がパーティション120に加えられて、送信スループットを大きくすることができる。
[0071] Each distribution partition 120 may have any number of distribution engine instances observing the
[0072]分配パーティション120、および関連する分配および配信エンジン例を、高いスケールでの最適な並列化を達成するために、実質的に無制限の方法でスケールアップさせることができる。ターゲットインフラが、並列の方法でデバイスに100万のイベント要求を受信および転送することが可能である場合、記載されたシステムは、その配信インフラにわたってイベントを分配することが可能である、潜在的には、ターゲットインフラに負荷がかけられ、あらゆる許可された配信割当が与えられるのを可能にするのと同じだけタイムリーに、全ての所望のターゲット102への配信のためのイベント提示でターゲットインフラを飽和させることができる方法で、データセンタにわたってネットワークインフラおよび帯域幅を利用することが可能である。
[0072] Distribution partition 120, and associated distribution and distribution engine examples, can be scaled up in a substantially unlimited manner to achieve optimal parallelism at high scale. If the target infrastructure is capable of receiving and forwarding 1 million event requests to devices in a parallel manner, the described system can potentially distribute events across its distribution infrastructure, The target infrastructure is loaded with event presentations for delivery to all desired
[0073]メッセージがそれぞれのインフラアダプタを介してターゲット102に配信されると、いくつかの実施形態では、システムは統計情報アイテムの範囲に注意する。これらの中で、配信バンドルの受け取りと、あらゆる個別のメッセージの配信の間の継続時間、および実際の送信動作の継続時間に対する期間が測定される。また、統計情報の一部は、配信が成功したか失敗したかに関する指標である。この情報は、配信エンジン108内で収集され、範囲毎およびターゲットアプリケーション毎に、平均値に丸められる。「ターゲットアプリケーション」は、統計ロールアップの特定の目的で導入されたグループ化識別子である。計算された平均値は、規定のインターバルで配信統計キュー146に送信される。このキューは、ある範囲の目的でデータ倉庫にイベントデータを提示する、管理サービス142内の労働者(の集合)によって流出される。これらの目的は、操作監視に加えて、イベントが配信されるテナントの請求、および/または第三者の独自の請求に対するテナントへの統計の開示を含むことができる。
[0073] As messages are delivered to the
[0074]配信エラーが検出されると、これらのエラーは一時的および永久的エラー状態に分類される。一時的エラー状態としては、例えば、システムがターゲットインフラの配信ポイントに到達することができないネットワーク故障、または配信割当に一時的に到達したことを報告するターゲットインフラを挙げることができる。永久的エラー状態としては、例えば、ターゲットインフラ上の認証/許可エラー、またはターゲットがもはや利用可能ではないまたは永久的にメッセージを受けたくないということをターゲットインフラが報告する人的介入およびエラー状態なしで直すことができない他のエラーを挙げることができる。いったん分類されると、エラーレポートが配信失敗キュー148に提示される。一時的エラー状態では、エラーはまた、エラー状態が解決されることが予測されるまで、絶対UTCタイムスタンプを含むことができる。同時に、ターゲットは、この配信エンジン例によってあらゆるさらなるローカル配信に対するターゲットアダプタにより局所的にブラックリスト化される。ブラックリストはまた、タイムスタンプを含むことができる。
[0074] When delivery errors are detected, these errors are classified as temporary and permanent error conditions. Temporary error conditions can include, for example, a network failure that prevents the system from reaching a target infrastructure distribution point, or a target infrastructure that reports that a distribution allocation has been temporarily reached. Permanent error conditions include, for example, authentication / authorization errors on the target infrastructure, or no human intervention and error conditions that the target infrastructure reports that the target is no longer available or wants to permanently receive messages List other errors that cannot be fixed with. Once classified, an error report is presented to the
[0075]配信失敗キュー148は、管理役割で労働者(の集合)によって流出される。永久的エラーは、それぞれのターゲットを、管理役割がアクセスを有するそれぞれの分配パーティションストア124から直ぐに削除させる可能性がある。「削除」とは、記録が実際に取り除かれる、または別の方法では、規則がその有効期間の「終了」タイムスタンプをエラーのタイムスタンプに設定することによって、検索クエリーから見えないように単に移動されることを意味することがある。一時的エラー状態は、エラーによって示された期間だけターゲットを停止させる可能性がある。停止は、エラー状態が直ると予測される、エラーに示されたタイムスタンプまでターゲットの有効性期間を移動させることによって行なうことができる。
[0075] The
[0076]図5は、取得パーティション140が分配トピック144を通して分配パーティション120に結合されるシステムの概略図を示す。
[0077]前に記したように、いくつかの実施形態では、全体的なイベント104をソース116からの情報から作り出すことができる。全体的なイベントは、後に、データを識別し、プラットフォーム特定フォーマットに置くことができるような、全体的なフォーマットである可能性がある。次に、特定のプラットフォーム通知へ、一実施形態で実施された全体的なイベントプロパティをマッピングすることができる、式の多くの例を以下に示す。
FIG. 5 shows a schematic diagram of a system where acquisition partition 140 is coupled to distribution partition 120 through
[0077] As noted above, in some embodiments, the
[0078]$(name)or.(name)or>(name)所与の名前を有するイベントプロパティへの参照。プロパティ名は大文字と小文字を区別しない。プロパティ名は、参照されたプロパティの値がJSONストリング文字列式の形で複合タイプデータを含む場合に、「ドット」式(例えば、プロパティアイテム)である可能性がある。この式は、プロパティのテキスト値、またはプロパティが存在しない場合には空の文字列に分解する。値は、ターゲットフィールドに対するターゲットのサイズ制約によってクリッピングされる可能性がある。 [0078] $ (name) or. (Name) or> (name) A reference to an event property with a given name. Property names are not case sensitive. A property name can be a “dot” expression (eg, a property item) if the value of the referenced property includes complex type data in the form of a JSON string string expression. This expression breaks down into the text value of the property, or an empty string if the property doesn't exist. The value may be clipped by the target size constraint for the target field.
[0079]$(name,n)、上記のとおりであるが、テキストはn文字で明確にクリッピングされる。例えば、$(title,20)は、20文字でタイトルプロパティの内容をクリッピングする。 [0079] $ (name, n), as above, but the text is clearly clipped with n characters. For example, $ (title, 20) clips the contents of the title property with 20 characters.
[0080].(name,n)、上記のとおりであるが、テキストはクリッピングされているので3ドットで接尾辞が付けられる。クリッピングされた文字列および接尾辞の合計サイズは、n文字を超えない。「これはタイトル行です」の入力プロパティを有する.(title,20)は、「これは、・・・タイトルである」という結果になる。 [0080]. (Name, n), as above, but since the text is clipped, it is suffixed with 3 dots. The total size of the clipped string and suffix does not exceed n characters. Has the input property "This is a title line". (Title, 20) results in "This is the title".
[0081]%(name)、$(name)と同様であるが、出力が符号化されたURIであることを除く。
[0082]$bodyは、イベントのエンティティ本体のことを言う。エンティティ本体は、バイナリデータを含む任意のデータを含むことができ、現状のままでシステムを通過させることができるので、クリッピング可能ではない。$bodyがターゲット上のテキストプロパティにマッピングされると、いくつかの実施形態では、本体がテキストの内容を含んでいる場合に、マッピングが成功するだけである。エンティティ本体が空である場合、式は空の文字列に分解される。
[0081] Similar to% (name) and $ (name), except that the output is an encoded URI.
[0082] $ body refers to the entity body of the event. The entity body can contain any data including binary data and is not clippable because it can be passed through the system as is. When $ body is mapped to a text property on the target, in some embodiments, the mapping only succeeds if the body contains the text content. If the entity body is empty, the expression is decomposed into an empty string.
[0083]$countは、所与のソースから配信されたイベントのターゲット毎のカウントのことを言う。この式は、このカウンタのリセットを最後に要求してから、このソース116からいくつのメッセージをそれぞれのターゲットが受信したかを示すシステムによって計算された数に分解する。いくつかの例示的な実施形態では、この数は0から99の範囲を有する。カウンタが99に到達すると、さらには値が増えない。この値は普通、バッジおよびタイルカウンタに使用される。
[0083] $ count refers to the count per target of events delivered from a given source. This equation breaks down into a number calculated by the system that indicates how many messages each target has received from this
[0084]‘[..text...]’または“[..text...]”は、リテラルである。リテラルは、一重または二重引用符内に囲まれた任意のテキストを含む。テキストは、JavaScriptエスケープ規則にしたがってエスケープの形で特殊な文字を含むことができる(ECMA−262、7.8.4を参照のこと)。expr1+expr2は、単一文字列へ2つの式を結合させる連結演算子である。式は、上記のいずれかである可能性がある。 [0084] '[. . text. . . ] 'Or "[..text ...]" is a literal. A literal contains any text enclosed in single or double quotes. The text can include special characters in the form of escapes according to the JavaScript escape rules (see ECMA-262, 7.8.4). expr1 + expr2 is a concatenation operator that combines two expressions into a single character string. The formula may be any of the above.
[0085]expr1??expr2は、ゼロまたはゼロ長さ文字列でない場合に、expr1の値を求め、それ以外の場合にexpr2の値を求める条件演算子である。??演算子は、+演算子より高い優先順位を有する、すなわち、式‘p’+$(a)??$(b)は、リテラル‘p’の接頭辞を付けたaまたはbの値を生じる。 [0085] expr1? ? expr2 is a conditional operator that determines the value of expr1 if it is not zero or a zero-length character string, and determines the value of expr2 otherwise. ? ? The operator has a higher priority than the + operator, i.e. the expression 'p' + $ (a)? ? $ (B) yields the value of a or b prefixed with the literal 'p'.
[0086]実施形態は、イベント104からプロパティを取るためにマッピング言語を使用し、これらをターゲット102上での通知のために正しい位置にマッピングすることができる。
[0086] Embodiments may use a mapping language to take properties from the
[0087]ウィンドウズフォン用のタイル通知はまた、カウントを自動的に記録する$countプロパティを利用することができる。 [0087] Tile notifications for Windows Phone can also make use of the $ count property, which automatically records the count.
[0088]iPadアプリでは、実施形態は以下に示すようにこれを警告にマッピングすることができる。 [0088] In the iPad app, embodiments can map this to a warning as shown below.
[0089]または、単にアプリアイコン上のバッジ(カウンタ)だけである。 [0089] Or just a badge (counter) on the app icon.
[0090]いくつかの実施形態では、これらのマッピングに対するデフォルトは、各ターゲットプロパティが同じ名前を有する入力プロパティにマッピングされるということである。実施形態はしたがって、これと同じだけ簡潔にウィンドウズ(登録商標)フォンに対するターゲットを特定することができる。 [0090] In some embodiments, the default for these mappings is that each target property is mapped to an input property with the same name. Embodiments can therefore specify targets for Windows phones as simply as this.
また、Text1、Text2およびParamは、入力イベント上で同じ名前を有するメッセージプロパティから自動的にマッピングされ、このようなプロパティがない場合には空になる(送信されない)。これにより、ウィンドウズアジュール(商標)サービスバスキューおよびトピック加入が普通そうであるのと同様に、ソース116が開発制御下にある場合のプロパティの完全なソースサイド制御が可能になる。
Also, Text1, Text2, and Param are automatically mapped from message properties having the same name on the input event and are empty (not sent) if there is no such property. This allows complete source side control of the properties when
[0091]グーグルアンドロイドでは、C2DMサービスは通知用の固定フォーマットを定義せず、アンドロイドユーザインターフェイスシェル内への直近の関係がないので、マッピングはいくらか異なり、それによってマッピングは、ターゲットプロパティをキーとして、式を値として有する自由形式のプロパティバッグの形をとる。プロパティマップが省略された場合、全ての入力プロパティは、C2DMエンドポイントに真っ直ぐにマッピングされる。 [0091] In Google Android, the C2DM service does not define a fixed format for notifications and there is no immediate relationship into the Android user interface shell, so the mapping is somewhat different, so that the mapping is based on the target property, It takes the form of a free-form property bag with expressions as values. If the property map is omitted, all input properties are mapped straight to the C2DM endpoint.
[0092]
選択通知分配
本明細書に記載された実施形態は、放送システム内の通知ターゲット102が、地理的、人口統計的、または他の基準に基づいて、ターゲットへのイベントストリームからのイベントの選択分配を可能にする基準を提供するイベントストリームに加入することを可能にする機能を実施することができる。
[0092]
Selection Notification Distribution The embodiments described herein enable
[0093]特に、イベントデータは、様々なカテゴリー化データを有することができる。例えば、イベントにジオタグを付けることができる。別の方法では、イベントは、イベント用のカテゴリー文字列を含めることなどによって、ソースによりカテゴリー化することができる。 [0093] In particular, event data may have various categorization data. For example, events can be geotagged. Alternatively, events can be categorized by source, such as by including an event category string.
[0094]再び図1を参照すると、様々な図を参照して上に記載したように、イベント104は、様々なタイプのカテゴリー化データを含むことができる。例えば、イベントは、地理的座標が警告内に含まれたジオタグを含むことができる。分配エンジン122−1は、ジオタグ付けされたデータを見つけるためにイベントを調べることができる。分配エンジン122−1はまた、ジオタグを有するデータに興味があるターゲット102を判断するために、データベース124−1を調べることができる。例えば、ユーザは、その位置、または全体的な位置を特定することができる。ユーザは、その位置に関連する、またはその位置から8.045キロ(5マイル)以内のあらゆる警告をユーザに運ぶべきであることを特定することができる。分配エンジン122−1は、データ内のジオタグがこの仕様内に含まれるかどうかを判断することができる。そうである場合には、その後、分配エンジン122−1は、イベント104に対してルーティングスリップ128−1内のその特定のユーザを含むことができる。そうでなければ、ユーザをルーティングスリップから除外することができ、警告104を有する通知を受信しない。
[0094] Referring again to FIG. 1, as described above with reference to various figures, the
[0095]ジオタグ付けされたイベントでは、ユーザ(または、ユーザへの他のエンティティ制御通知およびイベント配信)は、多くの異なる境界のいずれかを特定することができる。例えば、所与の位置の8.045キロ(5マイル)以内のあらゆる位置を特定することにより、基本的に、ポイント、およびそのポイントの周りの円を特定する。しかし、他の実施形態は、市、州、国、または大陸などの地政学的境界の仕様、建物または複合施設の形などを含むことができる。ワシントン州レッドモンドのマイクロソフトコーポレーションからのSQLサーバ(登録商標)は、イベントを配信するためにターゲット102を判断するように、分配パーティション120−1の一部として使用することができる地理空間的機能を有する。
[0095] For geotagged events, the user (or other entity control notifications and event delivery to the user) can identify any of a number of different boundaries. For example, by identifying every location within 5.045 kilometers (5 miles) of a given location, we basically identify a point and a circle around that point. However, other embodiments may include geopolitical boundary specifications such as a city, state, country, or continent, a shape of a building or complex, and the like. SQL Server® from Microsoft Corporation of Redmond, Washington has a geospatial capability that can be used as part of distribution partition 120-1 to determine
[0096]一般的に、イベントデータは、カテゴリー化情報を含むことができる。例えば、イベントに含まれる文字列は、イベントデータをカテゴリー化することができる。ルーティングスリップ128−1内にターゲットを含むことは、カテゴリー内を選ぶ、またはカテゴリーから選ばないユーザに基づくことがある。例えば、ターゲット102−1は、カテゴリーを選択することができ、カテゴリー化文字列をイベント104−1上で比較することができる。イベント104−1が選択されたカテゴリーを示す文字列を含む場合、その後、ターゲット102−1は、イベント104−1からのデータを有する通知がターゲット102−1に運ばれるように、バンドル126−1のルーティングスリップ128−1内に含められる。 [0096] Generally, event data may include categorization information. For example, a character string included in an event can categorize event data. Including a target in routing slip 128-1 may be based on a user choosing or not choosing from within a category. For example, target 102-1 can select a category and compare categorized strings on event 104-1. If event 104-1 includes a string indicating the selected category, then target 102-1 may be bundled 126-1 such that a notification with data from event 104-1 is carried to target 102-1. Are included in the routing slip 128-1.
[0097]
バッジカウンタ
記載したいくつかの実施形態により、個別のカウンタを、各エンドユーザに対するカウンタの個別の追跡を必要とすることなく、イベント放送システム内で追跡することが可能になる。これは、一連のイベントを受信するサーバによって達成することができ、一連の中の各イベントはタイムスタンプのリストに関連している。各イベント用のタイムスタンプのリストは、イベント用のタイムスタンプ、および一連の中の全ての前のイベント用のタイムスタンプを含む。
[0097]
Badge Counters The described embodiments allow individual counters to be tracked within an event broadcast system without requiring separate tracking of the counter for each end user. This can be accomplished by a server receiving a series of events, where each event in the series is associated with a list of timestamps. The list of time stamps for each event includes a time stamp for the event and a time stamp for all previous events in the series.
[0098]ユーザは、タイムスタンプをサーバに送信する。タイムスタンプは、ユーザがユーザデバイスでいくつかのユーザ相互作用をいつ行ったかの指標である。例えば、タイムスタンプは、ユーザがユーザデバイス上のアプリケーションをいつ開いたかの指標である可能性もある。サーバは、ユーザによって送信されるタイムスタンプを、ユーザに送信されようとしているイベント用のタイムスタンプのリストと比較する。サーバは、ユーザがタイムスタンプを送信した後に起こるユーザに送信されようとしているイベント用のタイムスタンプのリスト内のタイムスタンプの数をカウントし、このカウントをバッジカウンタとして送信する。 [0098] The user sends a time stamp to the server. The time stamp is an indication of when the user has performed some user interaction with the user device. For example, the time stamp may be an indication of when the user opened an application on the user device. The server compares the timestamp sent by the user with a list of timestamps for the event that is about to be sent to the user. The server counts the number of time stamps in the list of time stamps for events that are about to be sent to the user that occurs after the user has sent a time stamp, and sends this count as a badge counter.
[0099]一例が、ここに添付された図6に示される。図6は、ターゲット102−1を示す。ターゲット102−1は、配信エンジン108−1からイベント104およびバッジカウンタ106を受信する。ターゲット102−1は、タイムスタンプ110を配信エンジン108−1に送信する。ターゲット102−1によって配信エンジン108−1に送信されたタイムスタンプ110は、ターゲット102−1でのいくつかのアクションに基づくことができる。例えば、ユーザは、配信エンジン108−1によってターゲット102−1に送信されるイベント104およびバッジカウンタ106に関連するアプリケーションを開くことができる。アプリケーションを開くことにより、タイムスタンプ110を、アプリケーションが開かれたときを示す配信エンジン108−1に対してターゲット102−1から放出させることができる。
[0099] An example is shown in FIG. 6 attached hereto. FIG. 6 shows the target 102-1. Target 102-1 receives
[00100]配信エンジン108−1は、一連のイベント112(104−1、104−2、104−3、および104−nとして示される)を受信する。一連のイベント112内の各イベントは、タイムスタンプのリスト114−1、114−2、114−3、または114−nそれぞれに関連している。タイムスタンプの各リストは、現在のイベント用のタイムスタンプ、および現在のイベントの前の一連の中の各イベント用のタイムスタンプを含む。示した例では、イベント104−1は、ターゲット102への配信のための配信エンジン108−1に送信される第1のイベントである。したがって、イベント104−1に関連するリスト114−1は、イベント104−1が配信エンジン108−1に送信された時間に対応する単一エントリT1を含む。イベント104−2は、イベント104−1の後に配信エンジン108−1に送信され、したがって、イベント104−1および104−2がそれぞれ配信エンジン108−1に送信されたときに対応する時間スタンプT1およびT2を含むリスト114−2に関連している。イベント104−3は、イベント104−2の後に配信エンジン108−1に送信され、したがって、イベント104−1、104−2および104−3がそれぞれ配信エンジン108−1に送信されるときに対応するタイムスタンプT1、T2およびT3を含むリスト114−3に関連している。イベント104−nは、イベント104−3(および、推定上リスト114−n内の楕円によって示されるような多くの他のイベント)の後に配信エンジン108−1に送信され、したがって、イベント104−1、104−2、104−3から104−nまでがそれぞれ配信エンジン108−1に送信されたときに対応する時間スタンプT1、T2、T3からTnまでを含むリスト114−nに関連している。
[00100] The delivery engine 108-1 receives a series of events 112 (shown as 104-1, 104-2, 104-3, and 104-n). Each event in the sequence of
[00101]ターゲット102−1が、配信エンジン108−1にいかなるタイムスタンプ110も送信していないと仮定する。配信エンジンがイベント104−1を送信する場合、また、T1に対応する、1の値を有するバッジカウンタを送信する。配信エンジンがイベント104−2を送信する場合、また、タイムスタンプT1およびT2のカウントに対応する、2の値を有するバッジカウンタを送信する。配信エンジンがイベント104−3を送信する場合、また、タイムスタンプT1、T2およびT3に対応する、3の値を有するバッジカウンタを送信する。配信エンジンがイベント104−nを送信する場合、また、nのタイムスタンプT1からTnまでに対応する、nの値を有するバッジカウンタを送信する。 [00101] Assume that the target 102-1 has not sent any timestamp 110 to the distribution engine 108-1. When the distribution engine transmits the event 104-1, a badge counter having a value of 1 corresponding to T1 is also transmitted. When the delivery engine sends event 104-2, it also sends a badge counter having a value of 2, corresponding to the counts of time stamps T1 and T2. When the delivery engine sends event 104-3, it also sends a badge counter having a value of 3, corresponding to time stamps T1, T2 and T3. When the delivery engine sends event 104-n, it also sends a badge counter with a value of n corresponding to n time stamps T1 to Tn.
[00102]次に、ターゲットがタイムT2とT3の間に起こる絶対的時間を有するタイムスタンプ110を送信すると仮定する。推定上このポイントでは、イベント104−1および104−2は既に、ターゲット102−1に運ばれている。イベント104−3がターゲットに送信されると、配信エンジン108−1は、バッジカウンタの値を判断する場合に、タイムスタンプ110の後に起こるタイムスタンプをカウントするだけである。したがって、このシナリオでは、配信エンジン108−1は、イベント104−3と共に、(タイムスタンプ110の前にイベントT1およびT2が起こったときに)T3に対応する、1のバッジカウンタを送信する。このプロセスは、バッジカウンタ値を判断するために使用されているターゲット102−1から受信された最新のタイムスタンプ110で繰り返すことができる。 [00102] Next, assume that the target transmits a time stamp 110 having an absolute time that occurs between times T2 and T3. Presumably at this point, events 104-1 and 104-2 have already been carried to target 102-1. When event 104-3 is sent to the target, distribution engine 108-1 only counts the time stamp that occurs after time stamp 110 when determining the value of the badge counter. Thus, in this scenario, the distribution engine 108-1 sends one badge counter corresponding to T3 (when events T1 and T2 occur before time stamp 110) along with event 104-3. This process can be repeated with the latest time stamp 110 received from the target 102-1 being used to determine the badge counter value.
[00103]以下の議論は次に、行なうことができるいくつかの方法および方法活動のことに言及する。方法活動を、特定の順序で議論する、または特定の順序で起こるようなフローチャートで図示することができるが、特に記されていない限り特定の順序は必要ない、または活動は行なわれている活動の前に完了している別の活動に左右されるので必要ない。 [00103] The following discussion will then refer to a number of methods and method activities that can be performed. Method activities can be illustrated in flowcharts that are discussed in a specific order or occur in a specific order, but unless otherwise noted, a specific order is not required or an activity is a Not necessary as it depends on other activities completed previously.
[00104]次に図7を参照すると、方法700が図示されている。この方法は、イベントを消費者に配信する活動を含む。方法700は、所有権データにアクセスするステップ(活動702)を含む。例えば、各ソース116は、異なるソース116に特定である所有権フォーマットでデータを提供することができる。
[00104] Referring now to FIG. 7, a
[00105]方法700はさらに、所有権データを正規化して正規化イベントを作り出すステップ(活動704)を含む。例えば、上に例示したように、イベント104は、異なるソース116からの所有権データを正規化することによって正規化させることができる。
[00105] The
[00106]方法700はさらに、加入に基づいて、イベントを受信するべきである複数の末端消費者を判断するステップ(活動706)を含む。例えば、図2に示すように、分配エンジン122−1は、ターゲット102でのどのようユーザが加入したのかを判断するためにデータベース124−1を調べることができる。
[00106] The
[00107]方法700はさらに、判断された末端消費者全てに適当な複数の異なるフォーマットに正規化イベントからのデータを形式化するステップ(活動708)を含む。例えば、図1に示すように、正規化イベントを、様々なターゲット102に適当なフォーマットに特に形式化させることができる。
[00107] The
[00108]方法700はさらに、末端消費者に適当なフォーマットで、複数の末端消費者それぞれに正規化イベントからのデータを配信するステップ(活動710)を含む。
[00109]さらに、方法は、1つまたは複数のプロセッサ、およびコンピュータメモリなどのコンピュータ読取可能媒体を含むコンピュータシステムによって実施させることができる。特に、コンピュータメモリは、実施形態で言及した活動などの、1つまたは複数のプロセッサによって実行される場合に様々な機能を行なわせるコンピュータ実行可能指示を記憶することができる。
[00108] The
[00109] Further, the method can be implemented by a computer system including one or more processors and a computer readable medium such as a computer memory. In particular, the computer memory may store computer-executable instructions that perform various functions when executed by one or more processors, such as the activities mentioned in the embodiments.
[00110]本発明の実施形態は、以下により詳細に論じるように、コンピュータハードウェアを含む専用または汎用コンピュータを備える、または利用することができる。本発明の範囲内の実施形態はまた、コンピュータ実行可能指示および/またはデータ構造を担持または記憶するための物理的または他のコンピュータ読取可能媒体を含む。このようなコンピュータ読取可能媒体は、汎用または専用コンピュータシステムによってアクセスすることができるあらゆる市販の媒体であってもよい。コンピュータ実行可能指示を記憶するコンピュータ読取可能媒体は、物理的記憶媒体である。コンピュータ実行可能指示を担持するコンピュータ読取可能媒体は、伝達媒体である。したがって、限定ではなく例として、本発明の実施形態は、少なくとも2つの個別の異なる種類のコンピュータ読取可能媒体、物理的コンピュータ読取可能記憶媒体および伝達コンピュータ読取可能媒体を備えることができる。 [00110] Embodiments of the present invention may comprise or utilize a dedicated or general purpose computer including computer hardware, as discussed in more detail below. Embodiments within the scope of the present invention also include physical or other computer-readable media for carrying or storing computer-executable instructions and / or data structures. Such computer-readable media can be any available media that can be accessed by a general purpose or special purpose computer system. Computer-readable media that store computer-executable instructions are physical storage media. Computer readable media carrying computer-executable instructions are transmission media. Thus, by way of example and not limitation, embodiments of the invention may comprise at least two separate and distinct types of computer readable media, physical computer readable storage media, and transmission computer readable media.
[00111]物理的コンピュータ読取可能記憶媒体としては、RAM、ROM、EEPROM、CD−ROMまたは他の光学ディスク記憶装置(CD、DVDなど)、磁気ディスク記憶装置または他の磁気記憶デバイス、またはコンピュータ実行可能指示またはデータ構造の形の所望のプログラムコード手段を記憶するのに使用することができ、汎用または専用コンピュータによってアクセスすることが可能なあらゆる他の媒体が挙げられる。 [00111] Physical computer readable storage media include RAM, ROM, EEPROM, CD-ROM or other optical disk storage device (CD, DVD, etc.), magnetic disk storage device or other magnetic storage device, or computer-implemented Any other medium that can be used to store the desired program code means in the form of possible instructions or data structures and that can be accessed by a general purpose or special purpose computer.
[00112]「ネットワーク」は、コンピュータシステム、および/またはモジュール、および/または他の電子デバイス間の電子データの移送を可能にする1つまたは複数のデータリンクとして定義される。情報がコンピュータにネットワークまたは別の通信接続(有線、無線、または有線または無線の組合せのいずれか)上で伝達または提供される場合、コンピュータは接続を伝達媒体として適切に見る。伝達媒体は、コンピュータ実行可能指示またはデータ構造の形で所望のプログラムコード手段を担持するために使用することができ、汎用または専用コンピュータによってアクセスすることができる、ネットワークおよび/またはデータリンクを含むことができる。上記の組合せはまた、コンピュータ読取可能媒体の範囲内に含まれる。 [00112] A "network" is defined as one or more data links that allow the transfer of electronic data between computer systems and / or modules and / or other electronic devices. When information is communicated or provided to a computer over a network or another communication connection (either wired, wireless, or a combination of wired or wireless), the computer appropriately views the connection as a transmission medium. The transmission medium includes a network and / or data link that can be used to carry the desired program code means in the form of computer-executable instructions or data structures and that can be accessed by a general purpose or special purpose computer. Can do. Combinations of the above are also included within the scope of computer-readable media.
[00113]さらに、様々なコンピュータシステム構成部品に到達する際に、コンピュータ実行可能指示またはデータ構造の形のプログラムコード手段は、伝達コンピュータ読取可能媒体から物理的コンピュータ読取可能記憶媒体に伝達させることができる(または、逆も同様である)。例えば、ネットワークまたはデータリンク上で受信されたコンピュータ実行可能指示またはデータ構造は、ネットワークインターフェイスモジュール(例えば、「NIC」)内でRAMにバッファリングさせ、その後、コンピュータシステムでコンピュータシステムRAMおよび/または揮発性が低いコンピュータ読取可能物理的記憶媒体に次第に伝達させることができる。したがって、コンピュータ読取可能物理的記憶媒体は、また(または、一次的にでさえも)伝達媒体を利用するコンピュータシステム構成部品内に含めることができる。 [00113] Further, in reaching various computer system components, program code means in the form of computer-executable instructions or data structures may be transmitted from a transmission computer-readable medium to a physical computer-readable storage medium. Yes (or vice versa). For example, computer-executable instructions or data structures received over a network or data link are buffered in RAM within a network interface module (eg, “NIC”) and then computer system RAM and / or volatile in the computer system. It can be gradually transmitted to a computer-readable physical storage medium having low reliability. Accordingly, a computer readable physical storage medium may also be included in a computer system component that utilizes a transmission medium (or even primarily).
[00114]コンピュータ実行可能指示は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理デバイスに特定の機能または機能のグループを行なわせる指示およびデータを含む。コンピュータ実行可能指示は例えば、アセンブリ言語、またはさらにはソースコードなどのバイナリ、中間フォーマット指示であってもよい。主体を構造的特性および/または方法的活動に特有の言語で記載したが、添付の特許請求の範囲で定義された主題は、上に記載した特性または活動に必ずしも限定されるものではないことを理解されたい。むしろ、記載した特性および活動は、特許請求の範囲を実施する例示的形として開示されている。 [00114] Computer-executable instructions include, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. The computer executable instructions may be, for example, assembly language or even binary, intermediate format instructions such as source code. Although the subject matter has been described in a language specific to structural features and / or methodological activities, the subject matter defined in the appended claims is not necessarily limited to the features or activities described above. I want you to understand. Rather, the described features and acts are disclosed as exemplary forms of implementing the claims.
[00115]当業者は、本発明を、パソコン、デスクトップコンピュータ、ノートパソコン、メッセージプロセッサ、手持ち式デバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、携帯電話、PDA、ページャ、ルータ、スイッチなどを含む、多くのタイプのコンピュータシステム構成でのネットワーク演算環境で実施することができることが分かるだろう。本発明はまた、ネットワークを通して(有線データリンク、無線データリンク、または有線および無線データリンクの組合せのいずれかによって)リンクされた、ローカルおよび遠隔コンピュータシステムが両方ともタスクを行なう分配されたシステム環境で実施することができる。分配されたシステム環境では、プログラムモジュールは、ローカルおよび遠隔メモリ記憶デバイスの両方に配置させることができる。 [00115] Those skilled in the art will recognize the present invention as a personal computer, desktop computer, notebook computer, message processor, handheld device, multiprocessor system, microprocessor-based or programmable consumer electronics, network PC, minicomputer, mainframe. It will be appreciated that it can be implemented in a network computing environment with many types of computer system configurations, including computers, cell phones, PDAs, pagers, routers, switches, and the like. The present invention also provides a distributed system environment in which both local and remote computer systems perform tasks, linked through a network (either by wired data link, wireless data link, or a combination of wired and wireless data links). Can be implemented. In a distributed system environment, program modules can be located in both local and remote memory storage devices.
[00116]本発明は、その精神および特徴から逸脱することなく、他の特定の形で具体化させることができる。記載した実施形態は、全ての態様において、単に例示的なものであり、限定するものではないと考えられるものとする。本発明の範囲はしたがって、前述の説明よりむしろ、添付の特許請求の範囲によって示される。特許請求の範囲の均等の意味および範囲内にある全ての変更は、その範囲内に含まれるものである。 [00116] The present invention may be embodied in other specific forms without departing from its spirit and characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes that come within the meaning and range of equivalency of the claims are to be embraced within their scope.
Claims (7)
所有権データにアクセスするステップと、
前記所有権データを正規化(normalizing)して正規化(normalized)イベントを作り出すステップと、
加入(subscription)に基づいて、前記イベントを受信するべきである複数の末端消費者(end consumers)を判断する(determining)ステップと、
前記判断された末端消費者全てに適当な(appropriate)、複数の異なるフォーマットに、前記正規化イベントからのデータを形式化する(formatting)ステップと、
前記末端消費者に適当なフォーマットで、前記複数の末端消費者それぞれに前記正規化イベントからの前記データを配信するステップと、
を含む方法。 A method of delivering an event to consumers,
Accessing ownership data;
Normalizing the ownership data to create a normalized event;
Determining a plurality of end consumers that are to receive the event based on a subscription; and
Formatting the data from the normalization event into a plurality of different formats that are appropriate for all the determined end consumers;
Delivering the data from the normalized event to each of the plurality of end consumers in a format suitable for the end consumer;
Including methods.
Applications Claiming Priority (5)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201161533669P | 2011-09-12 | 2011-09-12 | |
| US61/533,669 | 2011-09-12 | ||
| US13/278,415 US20130067024A1 (en) | 2011-09-12 | 2011-10-21 | Distributing multi-source push notifications to multiple targets |
| US13/278,415 | 2011-10-21 | ||
| PCT/US2012/054349 WO2013039798A2 (en) | 2011-09-12 | 2012-09-10 | Distributing multi-source push notifications to multiple targets |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2014528126A true JP2014528126A (en) | 2014-10-23 |
Family
ID=47830824
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2014529930A Pending JP2014528126A (en) | 2011-09-12 | 2012-09-10 | Distributing multi-source push notifications to multiple targets |
Country Status (6)
| Country | Link |
|---|---|
| US (1) | US20130067024A1 (en) |
| EP (1) | EP2756475A4 (en) |
| JP (1) | JP2014528126A (en) |
| KR (1) | KR20140072044A (en) |
| CN (1) | CN103051667B (en) |
| WO (1) | WO2013039798A2 (en) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2021523436A (en) * | 2018-05-03 | 2021-09-02 | マイクロソフト テクノロジー ライセンシング,エルエルシー | Input and output schema mapping |
Families Citing this family (33)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8595322B2 (en) | 2011-09-12 | 2013-11-26 | Microsoft Corporation | Target subscription for a notification distribution system |
| US20130091197A1 (en) | 2011-10-11 | 2013-04-11 | Microsoft Corporation | Mobile device as a local server |
| US8949307B2 (en) * | 2011-11-15 | 2015-02-03 | Google Inc. | Cloud-to-device messaging for application activation and reporting |
| US10353684B2 (en) * | 2012-02-08 | 2019-07-16 | Flytxt BV | Method to launch an application on a mobile device using short code |
| KR101611144B1 (en) | 2012-10-31 | 2016-04-08 | 집라인 메디칼, 인크. | Surgical incision and closure apparatus |
| US20140304787A1 (en) * | 2013-04-05 | 2014-10-09 | Microsoft Corporation | Badge notification subscriptions |
| US20140324503A1 (en) * | 2013-04-30 | 2014-10-30 | Microsoft Corporation | Multi-source data subscriptions |
| TWI513255B (en) * | 2013-06-07 | 2015-12-11 | Mitake Information Corp | System, device and method for delivering and receiving a mobile notification via dual routes |
| US10248474B2 (en) * | 2014-01-29 | 2019-04-02 | Microsoft Technology Licensing, Llc | Application event distribution system |
| US9847918B2 (en) * | 2014-08-12 | 2017-12-19 | Microsoft Technology Licensing, Llc | Distributed workload reassignment following communication failure |
| CN113037823B (en) | 2015-01-23 | 2024-03-22 | 电子湾有限公司 | Message delivery system and method |
| US10425341B2 (en) * | 2015-01-23 | 2019-09-24 | Ebay Inc. | Processing high volume network data |
| CN104615702B (en) * | 2015-01-30 | 2020-05-15 | 五八有限公司 | Information pushing method and device |
| US9830603B2 (en) | 2015-03-20 | 2017-11-28 | Microsoft Technology Licensing, Llc | Digital identity and authorization for machines with replaceable parts |
| US9882854B2 (en) | 2015-09-01 | 2018-01-30 | Microsoft Technology Licensing, Llc | Email parking lot |
| US9977666B2 (en) | 2015-09-01 | 2018-05-22 | Microsoft Technology Licensing, Llc | Add a new instance to a series |
| US10163076B2 (en) | 2015-09-01 | 2018-12-25 | Microsoft Technology Licensing, Llc | Consensus scheduling for business calendar |
| US9979682B2 (en) | 2015-09-01 | 2018-05-22 | Microsoft Technology Licensing, Llc | Command propagation optimization |
| US9929989B2 (en) | 2015-09-01 | 2018-03-27 | Microsoft Technology Licensing, Llc | Interoperability with legacy clients |
| KR101889159B1 (en) * | 2015-10-21 | 2018-08-17 | 주식회사 포스코 | Mthoed and framework system for evnet service of steel process middleware |
| US9813781B2 (en) * | 2015-10-27 | 2017-11-07 | Sorenson Media, Inc. | Media content matching and indexing |
| CN107665225B (en) * | 2016-07-29 | 2022-01-28 | 北京京东尚科信息技术有限公司 | Information pushing method and device |
| US10628237B2 (en) * | 2016-09-16 | 2020-04-21 | Oracle International Corporation | Cloud service integration flow |
| CN106375977A (en) * | 2016-09-18 | 2017-02-01 | 中国联合网络通信集团有限公司 | A method and device for calculating communication community income and server |
| US10375191B2 (en) * | 2017-11-29 | 2019-08-06 | Microsoft Technology Licensing, Llc | Notifications on an online social networking system |
| US11057442B2 (en) * | 2018-01-27 | 2021-07-06 | Vmware, Inc. | System and method for workspace sharing |
| US10999731B2 (en) * | 2018-02-20 | 2021-05-04 | Veniam, Inc. | Systems and methods for real-time handling and processing of data in a network of moving things |
| CN110971643B (en) * | 2018-09-30 | 2022-07-29 | 北京国双科技有限公司 | Message pushing method and device, storage medium and processor |
| KR102674439B1 (en) * | 2019-03-22 | 2024-06-13 | 한국전력공사 | Power real-time data broker platform system |
| US11169855B2 (en) * | 2019-12-03 | 2021-11-09 | Sap Se | Resource allocation using application-generated notifications |
| US10719517B1 (en) | 2019-12-18 | 2020-07-21 | Snowflake Inc. | Distributed metadata-based cluster computing |
| US12306822B2 (en) * | 2023-10-17 | 2025-05-20 | DevRev, Inc. | Notifications of events of a system of record |
| CN119557483A (en) * | 2024-10-24 | 2025-03-04 | 中国人民解放军国防科技大学 | A method for intelligent sharing of multi-source marine environment data |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2007516511A (en) * | 2003-06-13 | 2007-06-21 | ヤフー! インコーポレイテッド | Method and system for alert delivery architecture |
| US20100083124A1 (en) * | 2008-09-26 | 2010-04-01 | Fwix, Inc. | System and method for aggregating web feeds relevant to a geographical locale from multiple sources |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CA2361861A1 (en) * | 2001-11-13 | 2003-05-13 | Ibm Canada Limited-Ibm Canada Limitee | Wireless messaging services using publish/subscribe systems |
| US7743137B2 (en) * | 2005-02-07 | 2010-06-22 | Microsoft Corporation | Automatically targeting notifications about events on a network to appropriate persons |
| US8588578B2 (en) * | 2006-03-29 | 2013-11-19 | Transpacific Digidata, Llc | Conversion of video data to playable format |
| US20070260674A1 (en) * | 2006-05-02 | 2007-11-08 | Research In Motion Limited | Push framework for delivery of dynamic mobile content |
| US20090187593A1 (en) * | 2008-01-17 | 2009-07-23 | Qualcomm Incorporated | Methods and Apparatus for Targeted Media Content Delivery and Acquisition in a Wireless Communication Network |
| US8321401B2 (en) * | 2008-10-17 | 2012-11-27 | Echostar Advanced Technologies L.L.C. | User interface with available multimedia content from multiple multimedia websites |
| US8819258B2 (en) * | 2009-05-07 | 2014-08-26 | International Business Machines Corporation | Architecture for building multi-media streaming applications |
| KR20110071828A (en) * | 2009-12-21 | 2011-06-29 | 한국전자통신연구원 | Content conversion device and method |
-
2011
- 2011-10-21 US US13/278,415 patent/US20130067024A1/en not_active Abandoned
-
2012
- 2012-09-10 WO PCT/US2012/054349 patent/WO2013039798A2/en unknown
- 2012-09-10 EP EP20120830940 patent/EP2756475A4/en not_active Withdrawn
- 2012-09-10 KR KR1020147006535A patent/KR20140072044A/en not_active Withdrawn
- 2012-09-10 JP JP2014529930A patent/JP2014528126A/en active Pending
- 2012-09-11 CN CN201210335131.6A patent/CN103051667B/en not_active Expired - Fee Related
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2007516511A (en) * | 2003-06-13 | 2007-06-21 | ヤフー! インコーポレイテッド | Method and system for alert delivery architecture |
| US20100083124A1 (en) * | 2008-09-26 | 2010-04-01 | Fwix, Inc. | System and method for aggregating web feeds relevant to a geographical locale from multiple sources |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2021523436A (en) * | 2018-05-03 | 2021-09-02 | マイクロソフト テクノロジー ライセンシング,エルエルシー | Input and output schema mapping |
| JP7360395B2 (en) | 2018-05-03 | 2023-10-12 | マイクロソフト テクノロジー ライセンシング,エルエルシー | Input and output schema mapping |
Also Published As
| Publication number | Publication date |
|---|---|
| US20130067024A1 (en) | 2013-03-14 |
| WO2013039798A3 (en) | 2013-05-10 |
| KR20140072044A (en) | 2014-06-12 |
| WO2013039798A2 (en) | 2013-03-21 |
| EP2756475A4 (en) | 2015-04-22 |
| CN103051667B (en) | 2017-04-19 |
| CN103051667A (en) | 2013-04-17 |
| EP2756475A2 (en) | 2014-07-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2014528126A (en) | Distributing multi-source push notifications to multiple targets | |
| JP6126099B2 (en) | Marketplace for timely event data distribution | |
| US9208476B2 (en) | Counting and resetting broadcast system badge counters | |
| US8595322B2 (en) | Target subscription for a notification distribution system | |
| CN113037823B (en) | Message delivery system and method | |
| US11394794B2 (en) | Fast ingestion of records in a database using data locality and queuing | |
| US11687487B1 (en) | Text files updates to an active processing pipeline | |
| US20130066980A1 (en) | Mapping raw event data to customized notifications | |
| US20200044881A1 (en) | Managing channels in an open data ecosystem | |
| US9628355B1 (en) | System for validating site configuration based on real-time analytics data | |
| JP6067714B2 (en) | Scale-out system that acquires event data | |
| US20190370353A1 (en) | Change notifications for object storage | |
| JP2014531072A (en) | Distributing events to many devices | |
| HK1181579A (en) | Distributing multi-source push notifications to multiple targets | |
| HK1183753A (en) | Distributing events to large numbers of devices |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20150528 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20150803 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160829 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20160831 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20170316 |