IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ビージーシー パートナーズ,エル.ピー.の特許一覧

特表2024-538702サブスクリプション管理方法、デバイス及びシステム
<>
  • 特表-サブスクリプション管理方法、デバイス及びシステム 図1
  • 特表-サブスクリプション管理方法、デバイス及びシステム 図2
  • 特表-サブスクリプション管理方法、デバイス及びシステム 図3
  • 特表-サブスクリプション管理方法、デバイス及びシステム 図4
  • 特表-サブスクリプション管理方法、デバイス及びシステム 図5A
  • 特表-サブスクリプション管理方法、デバイス及びシステム 図5B
  • 特表-サブスクリプション管理方法、デバイス及びシステム 図5C
  • 特表-サブスクリプション管理方法、デバイス及びシステム 図6
  • 特表-サブスクリプション管理方法、デバイス及びシステム 図7
  • 特表-サブスクリプション管理方法、デバイス及びシステム 図8
  • 特表-サブスクリプション管理方法、デバイス及びシステム 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-23
(54)【発明の名称】サブスクリプション管理方法、デバイス及びシステム
(51)【国際特許分類】
   G06Q 40/06 20120101AFI20241016BHJP
【FI】
G06Q40/06
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024520890
(86)(22)【出願日】2022-10-04
(85)【翻訳文提出日】2024-05-29
(86)【国際出願番号】 US2022077494
(87)【国際公開番号】W WO2023060052
(87)【国際公開日】2023-04-13
(31)【優先権主張番号】17/495,203
(32)【優先日】2021-10-06
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
2.JAVASCRIPT
(71)【出願人】
【識別番号】519248966
【氏名又は名称】ビージーシー パートナーズ,エル.ピー.
【氏名又は名称原語表記】BGC PARTNERS,L.P.
(74)【代理人】
【識別番号】100107364
【弁理士】
【氏名又は名称】斉藤 達也
(72)【発明者】
【氏名】ベイカー,アンドレ
【テーマコード(参考)】
5L040
【Fターム(参考)】
5L040BB57
(57)【要約】
サブスクリプション管理システム及び方法は、サブスクリプションをサービスする為のUIメッセージのサイズ及び送信頻度を減少させるUIメッセージフレームワークを使用して、クライアントのサブスクリプションに基づいて、夫々のクライアントの複数のコンピュータデバイスにリアルタイムのサブスクリプションデータ配信を提供する。
【選択図】図1

【特許請求の範囲】
【請求項1】
サブスクリプション管理システムであって、
少なくとも1つのクライアントのクライアントサブスクリプションの為のクライアントサブスクリプションデータと、
所定のクライアントサブスクリプションの為の選択に利用可能な複数のサブジェクトを含むデータセットを示すサブスクリプションサブジェクトデータであって、前記サブジェクトの各々が各々の変化率を有するサブスクリプションサブジェクトデータと、
を格納するように構成された少なくとも1つのメモリと、
少なくとも1つのクライアントの少なくとも1つのクライアントデバイスから、通信ネットワークを介して、夫々のサブスクリプション項目に選択されたデータセットのサブスクライブされているサブジェクトを識別するクライアントサブスクリプションのサブスクライブ要求を受信することと、
前記サブスクライブ要求に基づいてサーバサブスクリプション配列を生成することであって、前記クライアントサブスクリプションの各サブスクリプション項目は、行識別子によって識別される前記サーバサブスクリプション配列の行に対応し、少なくとも1つのサブスクライブされているサブジェクトを含むことと、
前記サーバサブスクリプション配列に示される前記クライアントサブスクリプションの夫々のサブスクリプション項目のサブスクライブされたサブジェクト毎に、前記サブスクライブされたサブジェクトの現在値を示すサブジェクトメッセージスレッドを生成することと、
前記サブジェクトメッセージスレッドからスレッドセーフメッセージを夫々生成することと、
前記サーバサブスクリプション配列に示され、前記スレッドセーフメッセージに夫々関連付けられた前記行識別子に基づいて、前記スレッドセーフメッセージへのランダムアクセスによって、前記行識別子に関連付けられた前記スレッドセーフメッセージの前記サブスクライブされたサブジェクトに夫々示されたオブジェクト値を取得することと、
前記クライアントサブスクリプションに従ってクライアントビュー配列に前記クライアントデバイスで表示する為に、前記スレッドセーフメッセージにアクセスすることによって取得された前記サーバサブスクリプション配列内の所定の行識別子を有する所定のサブスクリプション項目に対する前記サブスクライブされたサブジェクトのうちの少なくとも1つの少なくとも1つの現在のオブジェクト値を夫々表すバイト配列を示すユーザインターフェース(UI)メッセージを生成することであって、前記サブスクライブされたサブジェクトのうちの所定のサブスクライブされたサブジェクトに対する所定の現在のオブジェクト値が、前記所定のサブスクライブされたサブジェクトに夫々対応する所定の変化率に基づいて、前記バイト配列に含まれることと、
前記通信ネットワークを介して前記クライアントデバイスにUIメッセージを送信することと、
を制御するように構成された少なくとも1つのプロセッサと、
を備えるサブスクリプション管理システム。
【請求項2】
前記少なくとも1つのプロセッサが、
前記少なくとも1つのクライアントデバイスから、前記通信ネットワークを介して、前記クライアントサブスクリプションの変更を示すサブスクリプション変更要求メッセージを受信することと、
前記データセットの前記複数のサブジェクトのうちの第1サブジェクトを前記サーバサブスクリプション配列から削除し、又は第2サブジェクトを前記サーバサブスクリプション配列に追加することによって、前記サーバサブスクリプション配列をアップデートすることと、
を制御するように構成されている請求項1に記載のサブスクリプション管理システム。
【請求項3】
前記少なくとも1つのプロセッサが、
前記スレッドセーフメッセージに基づいて、前記クライアントビュー配列の構成を反映する通知ビュー配列を決定することと、
前記クライアントサブスクリプションに含まれるフィルタ基準に基づいて、前記サーバサブスクリプション配列に示される前記行識別子のうちの第1行識別子に対応する前記通知ビュー配列から第1行を削除することによって、前記通知ビュー配列をフィルタリングすることと、
を制御するように構成されている請求項1に記載のサブスクリプション管理システム。
【請求項4】
前記少なくとも1つのプロセッサが、
前記少なくとも1つのクライアントデバイスから前記通信ネットワークを介して、前記フィルタ基準を示すサブスクリプション変更要求メッセージを受信すること
を制御するように構成されている請求項3に記載のサブスクリプション管理システム。
【請求項5】
前記少なくとも1つのクライアントデバイスとのウェブソケット接続を介して、前記サブスクライブ要求が受信され、前記UIメッセージが送信される、請求項1に記載のサブスクリプション管理システム。
【請求項6】
前記少なくとも1つのプロセッサが、
前記クライアントサブスクリプション内の第1サブスクリプション項目に対する第1サブジェクトメッセージスレッドの為の第1スレッドセーフメッセージを生成することであって、前記第1サブスクリプション項目が前記サーバサブスクリプション配列内に示される第1行識別子を生成することと、
前記スレッドセーフメッセージに基づいて、前記クライアントビュー配列の構成を反映した通知ビュー配列に対応することと、
所定の期間中に利用可能になる前記第1スレッドセーフメッセージの第1のサブスクライブされたサブジェクトの各第1取得オブジェクト値を、前記少なくとも1つのメモリ内のデータ構造のスタックに時系列的に格納することであって、各第1取得オブジェクト値は、前記第1のサブスクライブされたサブジェクトに関連付けられた第1変化率よりも大きい第2変化率で利用可能になることと、
電子タイマーの経過時間が、前記第1変化率によって定義された時間閾値に等しいと判定された場合、前記スタックに最後に追加された最後の取得オブジェクト値を取得し、前記第1のサブスクライブされたサブジェクトの前記最後の取得オブジェクト値を示すように、前記通知ビュー配列をアップデートすることと、
を制御するように構成されている請求項1に記載のサブスクリプション管理システム。
【請求項7】
第1サブスクリプション項目に関連付けられた前記クライアントサブスクリプション内の第1のサブスクライブされたサブジェクトが第1親キーで識別され、前記第1サブスクリプション項目に関連付けられた前記クライアントサブスクリプション内の第2のサブスクライブされたサブジェクトの値を決定する為に前記第1親キーが使用される、請求項1に記載のサブスクリプション管理システム。
【請求項8】
前記バイト配列は、前記サーバサブスクリプション配列の所定の行の所定の行識別子としての第1要素を有する配列形式のフレームワークを有し、前記第1要素に連続する前記フレームワークの各要素は、前記所定の行の各連続するサブスクライブされたサブジェクトのオブジェクト値である、請求項1に記載のサブスクリプション管理システム。
【請求項9】
前記UIメッセージがJava Script Object Notation(JSON)メッセージである、請求項8に記載のサブスクリプション管理システム。
【請求項10】
前記フレームワーク内の第1及び第2の連続するサブスクライブされたサブジェクトは、前記サーバサブスクリプション配列の連続する列に対応しない、請求項8に記載のサブスクリプション管理システム。
【請求項11】
前記UIメッセージが、同じ変化率を有する所定のサブスクライブされたサブジェクトのオブジェクト値を含む、請求項1に記載のサブスクリプション管理システム。
【請求項12】
サブスクリプション管理方法であって、
少なくとも1つのプロセッサによって、
少なくとも1つのクライアントの少なくとも1つのクライアントデバイスから、通信ネットワークを介して夫々のサブスクリプション項目に対して選択された所定のクライアントサブスクリプションの選択の為に利用可能な複数のサブジェクトを含むデータセットのサブスクライブされているサブジェクトを識別するクライアントサブスクリプションのサブスクライブ要求を受信することであって、前記データセットの前記サブジェクトの夫々は各々の変化率を有することと、
前記サブスクライブ要求に基づいてサーバサブスクリプション配列を生成することであって、前記クライアントサブスクリプションの各サブスクリプション項目は、行識別子によって識別される前記サーバサブスクリプション配列の行に対応し、少なくとも1つのサブスクライブされているサブジェクトを含むことと、
前記サーバサブスクリプション配列に示される前記クライアントサブスクリプションの夫々のサブスクリプション項目のサブスクライブされたサブジェクト毎に、前記サブスクライブされたサブジェクトの現在値を示すサブジェクトメッセージスレッドを生成することと、
前記サブジェクトメッセージスレッドからスレッドセーフメッセージを夫々生成することと、
前記サーバサブスクリプション配列に示され、前記スレッドセーフメッセージに夫々関連付けられた前記行識別子に基づいて、前記スレッドセーフメッセージへのランダムアクセスによって、前記行識別子に関連付けられた前記スレッドセーフメッセージの前記サブスクライブされたサブジェクトに夫々示されたオブジェクト値を取得することと、
前記クライアントサブスクリプションに従ってクライアントビュー配列に前記クライアントデバイスで表示する為に、前記スレッドセーフメッセージにアクセスすることによって取得された前記サーバサブスクリプション配列内の所定の行識別子を有する所定のサブスクリプション項目に対する前記サブスクライブされたサブジェクトのうちの少なくとも1つの少なくとも1つの現在のオブジェクト値を夫々表すバイト配列を示すユーザインターフェース(UI)メッセージを生成することであって、前記サブスクライブされたサブジェクトのうちの所定のサブスクライブされたサブジェクトに対する所定の現在のオブジェクト値が、前記所定のサブスクライブされたサブジェクトに夫々対応する所定の変化率に基づいて、前記バイト配列に含まれることと、
前記通信ネットワークを介して前記クライアントデバイスにUIメッセージを送信することと、
を制御する工程を含む、サブスクリプション管理方法。
【請求項13】
前記少なくとも1つのプロセッサによって、
前記少なくとも1つのクライアントデバイスから、前記通信ネットワークを介して、前記クライアントサブスクリプションの変更を示すサブスクリプション変更要求メッセージを受信することと、
前記データセットの前記複数のサブジェクトのうちの第1サブジェクトを前記サーバサブスクリプション配列から削除し、又は第2サブジェクトを前記サーバサブスクリプション配列に追加することによって、前記サーバサブスクリプション配列をアップデートすることと、
を制御する工程を更に含む、請求項12に記載の方法。
【請求項14】
前記少なくとも1つのプロセッサによって、
前記スレッドセーフメッセージに基づいて、前記クライアントビュー配列の構成を反映する通知ビュー配列を決定することと、
前記クライアントサブスクリプションに含まれるフィルタ基準に基づいて、前記サーバサブスクリプション配列に示される前記行識別子のうちの第1行識別子に対応する前記通知ビュー配列から第1行を削除することによって、前記通知ビュー配列をフィルタリングすることと、
を制御する工程を更に含む、請求項12に記載の方法。
【請求項15】
前記少なくとも1つのプロセッサによって、
前記少なくとも1つのクライアントデバイスから前記通信ネットワークを介して、前記フィルタ基準を示すサブスクリプション変更要求メッセージを受信すること
を制御する工程を更に含む、請求項14に記載の方法。
【請求項16】
前記少なくとも1つのクライアントデバイスとのウェブソケット接続を介して、前記サブスクライブ要求が受信され、前記UIメッセージが送信される、請求項12に記載の方法。
【請求項17】
前記少なくとも1つのプロセッサによって、
前記クライアントサブスクリプション内の第1サブスクリプション項目に対する第1サブジェクトメッセージスレッドの為の第1スレッドセーフメッセージを生成することであって、前記第1サブスクリプション項目が前記サーバサブスクリプション配列内に示される第1行識別子を生成することと、
前記スレッドセーフメッセージに基づいて、前記クライアントビュー配列の構成を反映した通知ビュー配列に対応することと、
所定の期間中に利用可能になる前記第1スレッドセーフメッセージの第1のサブスクライブされたサブジェクトの各第1取得オブジェクト値を、メモリ内のデータ構造のスタックに時系列的に格納することであって、各第1取得オブジェクト値は、前記第1のサブスクライブされたサブジェクトに関連付けられた第1変化率よりも大きい第2変化率で利用可能になることと、
電子タイマーの経過時間が、前記第1変化率によって定義された時間閾値に等しいと判定された場合、前記スタックに最後に追加された最後の取得オブジェクト値を取得し、前記第1のサブスクライブされたサブジェクトの前記最後の取得オブジェクト値を示すように、前記通知ビュー配列をアップデートすることと、
を制御する工程を更に含む、請求項12に記載の方法。
【請求項18】
第1サブスクリプション項目に関連付けられた前記クライアントサブスクリプション内の第1のサブスクライブされたサブジェクトが第1親キーで識別され、前記第1サブスクリプション項目に関連付けられた前記クライアントサブスクリプション内の第2のサブスクライブされたサブジェクトの値を決定する為に前記第1親キーが使用される、請求項12に記載の方法。
【請求項19】
前記バイト配列は、前記サーバサブスクリプション配列の所定の行の所定の行識別子としての第1要素を有する配列形式のフレームワークを有し、前記第1要素に連続する前記フレームワークの各要素は、前記所定の行の各連続するサブスクライブされたサブジェクトのオブジェクト値である、請求項12に記載の方法。
【請求項20】
非一次的記憶媒体であって、少なくとも1つのプロセッサによって実行されたときに、
少なくとも1つのクライアントの少なくとも1つのクライアントデバイスから、通信ネットワークを介して夫々のサブスクリプション項目に対して選択された所定のクライアントサブスクリプションの選択の為に利用可能な複数のサブジェクトを含むデータセットのサブスクライブされているサブジェクトを識別するクライアントサブスクリプションのサブスクライブ要求を受信することであって、前記サブジェクトの夫々は各々の変化率を有することと、
前記サブスクライブ要求に基づいてサーバサブスクリプション配列を生成することであって、前記クライアントサブスクリプションの各サブスクリプション項目は、行識別子によって識別される前記サーバサブスクリプション配列の行に対応し、少なくとも1つのサブスクライブされているサブジェクトを含むことと、
前記サーバサブスクリプション配列に示される前記クライアントサブスクリプションの夫々のサブスクリプション項目のサブスクライブされたサブジェクト毎に、前記サブスクライブされたサブジェクトの現在値を示すサブジェクトメッセージスレッドを生成することと、
前記サブジェクトメッセージスレッドからスレッドセーフメッセージを夫々生成することと、
前記サーバサブスクリプション配列に示され、前記スレッドセーフメッセージに夫々関連付けられた前記行識別子に基づいて、前記スレッドセーフメッセージへのランダムアクセスによって、前記行識別子に関連付けられた前記スレッドセーフメッセージの前記サブスクライブされたサブジェクトに夫々示されたオブジェクト値を取得することと、
前記クライアントサブスクリプションに従ってクライアントビュー配列に前記クライアントデバイスで表示する為に、前記スレッドセーフメッセージにアクセスすることによって取得された前記サーバサブスクリプション配列内の所定の行識別子を有する所定のサブスクリプション項目に対する前記サブスクライブされたサブジェクトの少なくとも1つのうちの少なくとも1つの現在のオブジェクト値を夫々表すバイト配列を示すユーザインターフェース(UI)メッセージを生成することであって、前記サブスクライブされたサブジェクトのうちの所定のサブスクライブされたサブジェクトに対する所定の現在のオブジェクト値が、前記所定のサブスクライブされたサブジェクトに夫々対応する所定の変化率に基づいて、前記バイト配列に含まれることと、
前記通信ネットワークを介して前記クライアントデバイスにUIメッセージを送信することと、
を制御する命令を格納するように構成された、非一次的記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、オブジェクトのアップデートをクライアントに提供するためのサブスクリプション管理に関する。
【背景技術】
【0002】
サブスクリプション管理システムは、夫々のクライアントデバイスのユーザによってサブスクライブされた様々な主題のデータのアップデートをクライアントデバイスに提供する。例えば、金融業界では、電子取引システムを使用して金融商品を電子的に取引するトレーダは、例えば、取引ポートフォリオ情報や、外部データソースからの取引ポートフォリオ内の金融商品に関連するリアルタイムの市場情報を含む、取引関連データを提供するサービスをサブスクライブすることが多い。金融商品取引情報を提供するサブスクリプション管理システムからクライアントに電子的に配信する為に利用可能な取引情報は途方もなく多く、サブスクリプション管理システムから利用可能な選択された金融商品取引情報に対するクライアント特有の要件に従って、クライアントが現在の取引情報をリアルタイムで電子的に受信することを保証する必要があるため、サブスクリプションデータを各クライアントのコンピュータに提供するサブスクリプション管理システムのコンピュータ及び各クライアントのコンピュータにおいて、通信ネットワークの相当な帯域幅、及び相当な量のコンピュータ処理資源及びデータ記憶資源が使用されることになる。サブスクリプション管理システムのサーバのコンピュータ及びサブスクリプションデータを受信するクライアントのコンピュータにおける大きな処理負担の技術的問題は、アップデートされたサブスクリプションデータがアップデートの発生時にリアルタイムでクライアントのコンピュータに配信される必要がある、リアルタイムデータコンテキストを有するサブスクリプションについて特に深刻である。
【0003】
従って、処理リソースの使用量、帯域幅の使用量、メモリの消費量、及び処理待ち時間を最小化し、夫々のクライアントのサブスクリプションに従ってクライアントのコンピュータにリアルタイムアップデートでサブスクリプションデータを配信する際の信頼性、効率性、及び処理速度を向上させる為に、改善されたコンピュータ及びネットワーキングのアーキテクチャを使用する方法、デバイス、及びシステムに対する必要性が存在する。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明は、上記従来の技術における課題を解決するためになされたものである。
【課題を解決するための手段】
【0005】
本開示の一態様によれば、サブスクリプション管理システムは、少なくとも1つのクライアントのクライアントサブスクリプションの為のクライアントサブスクリプションデータと、所定のクライアントサブスクリプションの為の選択に利用可能な複数のサブジェクトを含むデータセットを示すサブスクリプションサブジェクトデータであって、前記サブジェクトの各々が各々の変化率を有するサブスクリプションサブジェクトデータと、を格納するように構成された少なくとも1つのメモリと、少なくとも1つのクライアントの少なくとも1つのクライアントデバイスから、通信ネットワークを介して、夫々のサブスクリプション項目に選択されたデータセットのサブスクライブされているサブジェクトを識別するクライアントサブスクリプションのサブスクライブ要求を受信することと、前記サブスクライブ要求に基づいてサーバサブスクリプション配列を生成することであって、前記クライアントサブスクリプションの各サブスクリプション項目は、行識別子によって識別される前記サーバサブスクリプション配列の行に対応し、少なくとも1つのサブスクライブされているサブジェクトを含むことと、前記サーバサブスクリプション配列に示される前記クライアントサブスクリプションの夫々のサブスクリプション項目のサブスクライブされたサブジェクト毎に、前記サブスクライブされたサブジェクトの現在値を示すサブジェクトメッセージスレッドを生成することと、前記サブジェクトメッセージスレッドからスレッドセーフメッセージを夫々生成することと、前記サーバサブスクリプション配列に示され、前記スレッドセーフメッセージに夫々関連付けられた前記行識別子に基づいて、前記スレッドセーフメッセージへのランダムアクセスによって、前記行識別子に関連付けられた前記スレッドセーフメッセージの前記サブスクライブされたサブジェクトに夫々示されたオブジェクト値を取得することと、前記クライアントサブスクリプションに従ってクライアントビュー配列に前記クライアントデバイスで表示する為に、前記スレッドセーフメッセージにアクセスすることによって取得された前記サーバサブスクリプション配列内の所定の行識別子を有する所定のサブスクリプション項目に対する前記サブスクライブされたサブジェクトのうちの少なくとも1つの少なくとも1つの現在のオブジェクト値を夫々表すバイト配列を示すユーザインターフェース(UI)メッセージを生成することであって、前記サブスクライブされたサブジェクトのうちの所定のサブスクライブされたサブジェクトに対する所定の現在のオブジェクト値が、前記所定のサブスクライブされたサブジェクトに夫々対応する所定の変化率に基づいて、前記バイト配列に含まれることと、前記通信ネットワークを介して前記クライアントデバイスにUIメッセージを送信することと、を制御するように構成された少なくとも1つのプロセッサと、を含んでもよい。
【0006】
本開示の一態様によれば、方法は、少なくとも1つのプロセッサによって、少なくとも1つのクライアントの少なくとも1つのクライアントデバイスから、通信ネットワークを介して夫々のサブスクリプション項目に対して選択された所定のクライアントサブスクリプションの選択の為に利用可能な複数のサブジェクトを含むデータセットのサブスクライブされているサブジェクトを識別するクライアントサブスクリプションのサブスクライブ要求を受信することであって、前記データセットの前記サブジェクトの夫々は各々の変化率を有することと、前記サブスクライブ要求に基づいてサーバサブスクリプション配列を生成することであって、前記クライアントサブスクリプションの各サブスクリプション項目は、行識別子によって識別される前記サーバサブスクリプション配列の行に対応し、少なくとも1つのサブスクライブされているサブジェクトを含むことと、前記サーバサブスクリプション配列に示される前記クライアントサブスクリプションの夫々のサブスクリプション項目のサブスクライブされたサブジェクト毎に、前記サブスクライブされたサブジェクトの現在値を示すサブジェクトメッセージスレッドを生成することと、前記サブジェクトメッセージスレッドからスレッドセーフメッセージを夫々生成することと、前記サーバサブスクリプション配列に示され、前記スレッドセーフメッセージに夫々関連付けられた前記行識別子に基づいて、前記スレッドセーフメッセージへのランダムアクセスによって、前記行識別子に関連付けられた前記スレッドセーフメッセージの前記サブスクライブされたサブジェクトに夫々示されたオブジェクト値を取得することと、前記クライアントサブスクリプションに従ってクライアントビュー配列に前記クライアントデバイスで表示する為に、前記スレッドセーフメッセージにアクセスすることによって取得された前記サーバサブスクリプション配列内の所定の行識別子を有する所定のサブスクリプション項目に対する前記サブスクライブされたサブジェクトのうちの少なくとも1つの少なくとも1つの現在のオブジェクト値を夫々表すバイト配列を示すユーザインターフェース(UI)メッセージを生成することであって、前記サブスクライブされたサブジェクトのうちの所定のサブスクライブされたサブジェクトに対する所定の現在のオブジェクト値が、前記所定のサブスクライブされたサブジェクトに夫々対応する所定の変化率に基づいて、前記バイト配列に含まれることと、前記通信ネットワークを介して前記クライアントデバイスにUIメッセージを送信することと、を制御する工程を含んでもよい。
【0007】
本開示の一態様によれば、非一次的記憶媒体は、少なくとも1つのプロセッサによって実行されたときに、少なくとも1つのクライアントの少なくとも1つのクライアントデバイスから、通信ネットワークを介して夫々のサブスクリプション項目に対して選択された所定のクライアントサブスクリプションの選択の為に利用可能な複数のサブジェクトを含むデータセットのサブスクライブされているサブジェクトを識別するクライアントサブスクリプションのサブスクライブ要求を受信することであって、前記サブジェクトの夫々は各々の変化率を有することと、前記サブスクライブ要求に基づいてサーバサブスクリプション配列を生成することであって、前記クライアントサブスクリプションの各サブスクリプション項目は、行識別子によって識別される前記サーバサブスクリプション配列の行に対応し、少なくとも1つのサブスクライブされているサブジェクトを含むことと、前記サーバサブスクリプション配列に示される前記クライアントサブスクリプションの夫々のサブスクリプション項目のサブスクライブされたサブジェクト毎に、前記サブスクライブされたサブジェクトの現在値を示すサブジェクトメッセージスレッドを生成することと、前記サブジェクトメッセージスレッドからスレッドセーフメッセージを夫々生成することと、前記サーバサブスクリプション配列に示され、前記スレッドセーフメッセージに夫々関連付けられた前記行識別子に基づいて、前記スレッドセーフメッセージへのランダムアクセスによって、前記行識別子に関連付けられた前記スレッドセーフメッセージの前記サブスクライブされたサブジェクトに夫々示されたオブジェクト値を取得することと、前記クライアントサブスクリプションに従ってクライアントビュー配列に前記クライアントデバイスで表示する為に、前記スレッドセーフメッセージにアクセスすることによって取得された前記サーバサブスクリプション配列内の所定の行識別子を有する所定のサブスクリプション項目に対する前記サブスクライブされたサブジェクトのうちの少なくとも1つの少なくとも1つの現在のオブジェクト値を夫々表すバイト配列を示すユーザインターフェース(UI)メッセージを生成することであって、前記サブスクライブされたサブジェクトのうちの所定のサブスクライブされたサブジェクトに対する所定の現在のオブジェクト値が、前記所定のサブスクライブされたサブジェクトに夫々対応する所定の変化率に基づいて、前記バイト配列に含まれることと、前記通信ネットワークを介して前記クライアントデバイスにUIメッセージを送信することと、を制御する命令を格納するように構成されてもよい。
【図面の簡単な説明】
【0008】
図1】本開示による、例示的なサブスクリプション管理デバイスのブロック図である。
図2】本開示による、例示的なサブスクリプション管理システムのブロック図である。
図3】本開示による、サブスクリプションサービスを提供する為の例示的な方法の例示的な高レベルフロー図である。
図4】本開示による、サブスクリプション管理処理の為の例示的な方法の例示的な高レベルフロー図である。
図5】本開示による、クライアントサブスクリプションの為のサブスクリプションデータを含むバイト配列を生成する方法の例示的な高レベルフロー図である。
図6】本発明によるサーバサブスクリプション配列の例示的な構成を示す図である。
図7】本発明による別のサーバサブスクリプション配列の例示的な構成を示す図である。
図8】本開示による、クライアントビュー配列の例示的な構成を示す図である。
図9】本開示による、複数のクライアントの為のサブスクリプション管理の例示的な実装を示す図である。
【発明を実施するための形態】
【0009】
本開示の技術は、一例として、クライアントサブスクリプションに従ってクライアントサブスクリプションデータを含むユーザインターフェース(UI)メッセージのクライアントのコンピュータデバイスへのリアルタイムの送信のサイズ及び頻度を減少させるUIメッセージフレームワークを利用して、クライアントがクライアントサブスクリプションの下でデータが提供されるサブスクリプションサブジェクト(「サブジェクト」)を動的に選択し得るサブスクリプションサービスをサブスクライブする夫々のクライアントのコンピュータデバイスへのサブスクリプションデータのリアルタイムの配信を制御し得るコンピュータ及びネットワーキングアーキテクチャに関する。一実施形態では、UIメッセージは、ジャヴァスクリプト・オブジェクト・ノーテーション(Java Script Object Notation(JSON))メッセージフォーマットを有してもよく、オブジェクト値としてクライアントサブスクリプションデータを含むバイト配列を含んでもよく、そこからクライアントビュー配列が生成され、クライアントのコンピュータデバイスのディスプレイに表示される。有利には、クライアントのサブスクリプションに基づく夫々のクライアントの複数のコンピュータデバイスへのリアルタイムのサブスクリプションデータ配信の要求を満たす為に、サブスクリプションデータサーバ及び夫々のクライアントのコンピュータデバイスにおける処理リソース及びメモリの負担の大きい使用、ならびに通信ネットワーク帯域幅の技術的な問題は、クライアントのサブスクリプションのサブジェクトに対応する文字列定数を表す為にUIメッセージ内の数値を使用することによって、UIメッセージのサイズ及び送信頻度を減少させ、またクライアントのコンピュータデバイス上の文字列処理を最小限に抑える、本開示によるUIメッセージフレームワークを使用するサブスクリプション管理技術の技術的解決によって解決される。本明細書に示されるような例示的な実施形態では、本開示によるサブスクリプション管理システムは、クライアントとしての金融商品トレーダのニーズに対応する為に、電子金融商品取引システムに接続して実装され、例えば、特定の金融商品の注文及び市場データに夫々関連する、トレーダによってサブスクライブされたサブジェクトのトランザクションデータを、トレーダのコンピュータのトレードブロッタ上に、サブジェクトのアップデートデータとともにリアルタイムで表示させることができる。本開示による特徴は、処理され保存されるデータ量を最小限に抑えながら、リアルタイムのデータ伝達を必要とし、典型的には、例えば、ニュース、個人対個人のテキストメッセージング及び他の動的クライアントサブスクリプションシステムのような、クライアントが利用可能なサブセットのより少ないサブセットをサブスクライブすることを望むサブスクリプションに利用可能な非常に多数のサブジェクトを有するデータセットを含む他のサブスクリプション管理サービスに適用され得ることを理解されたい。
【0010】
本開示は、演算を実行可能な専用機を形成するため、コンピュータハードウェアとコンピュータソフトウェアの組合せを用いて実装されてもよい。本開示の実施形態は、中央処理デバイス(CPU)、物理メモリ、物理記憶デバイス、電子通信ポート、電子通信回線、及び他のコンピュータハードウェアの組み合わせを利用して実行されてもよい。コンピュータソフトウェアは、少なくともコンピュータオペレーティングシステムと、本明細書に記載されている専用のコンピュータプロセスとを含んでもよい。
【0011】
本開示では、様々な開示された実施形態の徹底的な理解を提供する為に、ある特定の詳細が規定されている。しかしながら、当業者であれば、実施形態は、これらの特定の詳細の1つ以上がなくても、又は他の方法、構成要素等を用いて実施することができることを認識するであろう。他の例では、電子取引システムに関連する周知の構造は、実施形態の説明を不必要に不明瞭にすることを避ける為に、詳細には示されておらず、説明されていない。
【0012】
本開示の態様、特徴及び利点は、以下の例の説明及び添付の図を参照して考慮されるときに理解されるであろう。図面に図示された本開示の例示的な実施形態を説明する際に、明確になるように特定の用語が使用される。しかしながら、本開示は、使用される特定の用語に限定されることを意図するものではない。
【0013】
システムの例
図1は、本開示に従った、例示的な電子サブスクリプション管理コンピューティングデバイス10のブロック図を示す。デバイス10は、通信ネットワークを介して、複数のリモートクライアントデバイス及び複数の外部データソースに通信可能に結合されてもよい。幾つかの実施形態において、有利には、本開示によれば、デバイス10は、夫々のクライアントのコンピューティングデバイスのユーザインターフェースにおいて、例えば、電子金融商品取引に関連するデータ等、サブスクリプションデータの選択されたサブジェクトをリアルタイムアップデートで受信する顧客のサブスクリプション契約に関連するサブスクリプションデータリアルタイムで、処理、管理、送信、及び表示することに関連して、以下に詳述するように、ネットワーク帯域幅、処理リソース、およびメモリリソースの使用を最小限に抑えるという技術的利点を提供する、サブスクリプション管理サービスプラットフォームを提供し、デバイス10の構成要素又はデバイス10によってサブスクリプションデータが提供されるコンピューティングデバイスによって生成、送信、受信及び処理されるメッセージのサイズ及び数を減少させるサブスクリプション管理処理機能を実行してもよい。
【0014】
図1を参照すると、コンピューティングデバイス10は、1つ以上のプロセッサ2、1つ以上のメモリ4、及びコンピューティングデバイスに一般的に見られる他の構成要素を含むコンピューティングデバイスの形態であってもよい。一実施形態では、1つ以上のプロセッサ2は、1つ以上のサーバを含むか、又は1つ以上のサーバとして動作するように構成されてもよい。
【0015】
メモリ4は、1つ以上のプロセッサ2によって実行され得る命令6を含む、1つ以上のプロセッサ2によってアクセス可能な情報を格納してもよい。メモリ4はまた、プロセッサによって格納、操作、又は取得され得るデータ8を含んでもよい。データ8はまた、命令6を実行するため、及び/又は他の機能を実行する為に使用されてもよい。メモリ4は、ハードドライブ、ソリッドステートハードドライブ、メモリカード、ROM、RAM、DVD、CD-ROM、書き込み可能メモリ、読み取り専用メモリ等、1つ以上のプロセッサによって読み取り可能な任意のタイプの非一時的媒体であってもよい。
【0016】
命令6は、1つ以上のプロセッサ2によって読み取られ、実行されることが可能な命令の任意のセットであってもよい。命令は、ネットワーク接続ストレージドライブ等、コンピューティングデバイスとは別の場所に格納されてもよく、コンピューティングデバイスのローカルに格納されてもよい。本明細書では、「命令」、「機能」、「アプリケーション」、「工程」、及び「プログラム」という用語を互換的に使用することがある。
【0017】
データ8は、命令6に従って、1つ以上のプロセッサ2によって格納、取得及び/又は修正されることがある。このようなデータは、リレーショナル又は非リレーショナルデータベース、SQLデータベース、多数の異なるフィールド及び記録を有するテーブル、XLS、TXT、又はXMLドキュメント等、1つ以上のフォーマット又は構造で格納してもよい。データはまた、任意のコンピューティングデバイスが読み取り可能なフォーマットでフォーマットされてもよい。幾つかの実施形態では、データは暗号化されていてもよい。
【0018】
更に、デバイス10は、有線又は無線通信機能を提供するように構成された通信デバイス9を含んでもよい。
【0019】
1つ以上のプロセッサ2は、任意のタイプのプロセッサであってもよく、2つ以上のタイプのプロセッサであってもよい。例えば、1つ以上のプロセッサ2は、インテル(Intel)社、エーエムディー(AMD)社、及びアップル(Apple)社製のCPU、又は特定用途向け集積回路(ASIC)若しくはシステムオンチップ(SoC)であってもよい。
【0020】
デバイス10は、コンピュータに関連して通常使用される全ての構成要素を含んでもよい。例えば、デバイス10は、キーボード及びマウス、並びに/又は、ペン入力、ジョイスティック、ボタン、タッチスクリーン等の様々な他のタイプの入力デバイス、並びに、例えば、CRT、LCD、プラズマスクリーンモニタ、テレビ、プロジェクタ等を含み得るディスプレイを有してもよい。
【0021】
図1は、デバイス10の構成要素を単一の構成要素であるものとして図示しているが、構成要素は、実際には、複数のプロセッサ、コンピュータ、コンピューティングデバイス、又は、同じ物理的ハウジング内に格納されていてもいなくてもよいメモリから構成されていてもよい。例えば、メモリは、デバイス10とは異なるハウジングに配置されたハードドライブ又は他の記憶媒体であってもよい。従って、本明細書におけるプロセッサ、コンピュータ、コンピューティングデバイス、又はメモリへの言及は、並列に動作してもしなくてもよいプロセッサ、コンピュータ、コンピューティングデバイス、又はメモリの集合への言及を含むものと理解される。更に、以下に説明される幾つかの機能は、単一のプロセッサを有する単一のコンピューティングデバイス上で行われるものとして示されるが、本明細書で説明される主題の様々な態様は、直列又は並列の複数のコンピューティングデバイスによって実装されてもよい。例えば、一実施形態において、以下に説明されるようにデバイス10によって実行される機能は、デバイス10と同一又は類似の構成要素を有する別のコンピューティングデバイスにおいて少なくとも部分的に実行されてもよい。一実施形態では、デバイス10によって実行される本明細書で説明する機能は、クラウドシステムとして動作する1つ以上のコンピューティングデバイス(サーバ)の間で分散されてもよい。
【0022】
図2を参照すると、デバイス10は、ローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)、インターネット等であってもよい通信ネットワーク18を介して他のコンピュータと相互接続されていてもよい。ネットワーク18及び介在するノードはまた、仮想プライベートネットワーク、ローカルイーサネットネットワーク、1つ以上の企業独自の通信プロトコルを使用するプライベートネットワーク、セルラーネットワーク及びワイヤレスネットワーク、HTTP、及び前述の様々な組み合わせを含む様々なプロトコルを使用してもよい。更に、ネットワーク18は、TCP/IPベースのネットワーキングプロトコルを含むがこれに限定されない、現在利用可能な、又は後に開発される様々なネットワーキングプロトコルを利用することができる。
【0023】
本明細書では、単一のコンピューティングデバイス10(コンピュータ)のみが描かれているが、本開示に従ったコンピューティングデバイスは、更に相互接続されたコンピュータを含んでもよいことを理解されたい。更に、デバイス10は、より多数のコンピュータを含むネットワーク内の個々のノードであってもよいことを理解されたい。
【0024】
非一過性メモリに存在する命令は、プロセッサ2によって直接(マシンコード等)又は間接(スクリプト等)に実行される命令の任意のセットを含むことができる。これに関して、本明細書では、「命令」、「スクリプト」、又は「モジュール」という用語を互換的に使用することがある。コンピュータ実行可能命令は、オブジェクトコード又はソースコードのモジュール等、任意のコンピュータ言語又はフォーマットで格納されてもよい。更に、命令は、ハードウェア、ソフトウェア、又はハードウェアとソフトウェアの組み合わせの形態で実装されてもよく、本明細書における例は単に例示に過ぎないことが理解される。
【0025】
図2を参照すると、幾つかの実施形態において、デバイス10は、本開示によるサブスクリプション管理システム40において特定の機能及び動作を実装するように構成されてもよく、幾つかの実施形態において、本明細書において説明される機能及び動作の一部又は全部を実施する為のプログラムでプログラムされてもよい。
【0026】
図2を参照すると、デバイス10は、サーバ22と、クライアントサブスクリプションデータ26及びサブスクリプションサブジェクトデータ28を格納するように構成されたメモリ24と、通信インターフェース30と、通信インターフェース32と、サブジェクトデータ生成部48とを含んでもよい。サーバ22、通信インターフェース30及び32ならびにサブジェクトデータ生成部48の各々は、以下に説明するように、夫々の構成要素の機能を実装する命令を含むプロセッサ及びメモリを含むことができる。デバイス10は、サブスクリプション管理システム40の一部であってもよく、通信ネットワーク18によりインターフェース30を介してクライアントデバイス44としての複数のコンピュータと通信可能に結合されると共に、インターフェース32を介して複数の外部データソース46と通信可能に結合されるように構成されてもよい。参照及び便宜の為に、本明細書において、サーバ22又はシステム40の別の構成要素が機能又は動作を実行してもよいという開示は、サーバ22のプロセッサ若しくは回路、又はシステム40の別の構成要素が、機能又は動作の実行を、実行又は制御してもよいという開示である。
【0027】
一実施形態では、デバイス10は、クライアントデバイス44とのウェブソケット45を介した通信ネットワーク18によるインターフェース30を介した通信を可能にするように構成されたネットワーキングプロトコルを使用して通信ネットワーク18上で通信し、複数のクライアントデバイスにおけるクライアントのサブスクリプション(「クライアントサブスクリプション」)をサービスするサブスクリプションサービスに関連する機能を実行し、サブスクリプションサービスを実装するように構成されてもよい。一実施形態では、デバイス10は、ウェブソケット45を介してサブスクリプションデータを含むUIメッセージをクライアントデバイス44に送信してクライアントのサブスクリプションをサービスする為に、ネットワーキングプロトコルとしてJava Script Object Notation(JSON)のカスタムプロトコルを使用してもよい。一実施形態では、UIメッセージは、配列のオブジェクト値としてクライアントサブスクリプションデータを含み、JSON over RPC、JSON over REST/HTTP等の複数のJSONプロトコルによりフォーマットされてもよい。
【0028】
一実施形態では、クライアントデバイス44の1つ以上は、ラップトップ、デスクトップ、又はスマートフォンやタブレット等のモバイルコンピューティングデバイスであってもよい。1つ以上のクライアントデバイスは、サーバ22及びインターフェース30と交信する為に「アプリ」を実行することができる。アプリは、例えば、アプリがモバイルデバイスの特定のハードウェア及びソフトウェアコンポーネントと通信することを可能にするプラットフォームを提供する、アップル(Apple)社のiOS(登録商標)、グーグル(Google)社のAndroID(登録商標)、又はマイクロソフト(Microsoft)社のWindows10 Mobile(登録商標)等のモバイルデバイスのオペレーティングシステム上で実行することができる。例えば、モバイルデバイスのオペレーティングシステムは、位置情報サービス回路、有線及び無線ネットワークインターフェース、ユーザ連絡先、及び他のアプリケーションと交信する為の機能を提供することができ、機能は、デバイス10に含まれるような、アプリの外部で実行されるハードウェア及びソフトウェアモジュールとの通信を可能にするアプリケーションプログラミングインターフェース(API)を含む。一実施形態では、クライアントデバイス44は、クライアントデバイス44上で実行されるアプリを介して、1つ以上のウェブソケット45を介してデバイス10と通信するように構成されてもよい。
【0029】
一実施形態では、データソース46の1つ以上は、処理及び通信能力を有する、モバイルコンピューティングデバイスを含むコンピューティングデバイスであってもよく、ソフトウェア命令又は「アプリ」を実行して、サーバ22及びインターフェース32と交信し、特に、クライアントのサブスクリプションに利用可能なデータセットの夫々のサブジェクトのデータを送信する。一実施形態において、データソース46は、デバイス10の外部にあってよく、デバイス10とのサブスクリプションを有するコンピュータデバイスのユーザ(「クライアント」)によるデータセットのサブジェクトのサブスクリプションのサービスにおいて使用する為のリアルタイムデータを含むデータを提供する。一実施形態では、データソース46は、例えば、内部又は外部の金融市場又は取引所、金融取引クリアリングハウス、ポストトレード及び配分データを提供するミドル/バックオフィス、マルチキャスト又はポイントトゥーポイント通信によってリアルタイムの金融市場データを提供する市場データソース、及びクライアントのサブスクリプション口座の属性を記述するデータを含む取引情報のデータベースであってもよい。
【0030】
一実施形態では、インターフェース30は、ポイントトゥーポイントフィナンシャルインフォメーションエクスチェンジ(Point to Point Financial Information eXchange)(FIX)プロトコルを使用して、クライアントデバイス44との通信リンクを確立するように構成されてもよい。
【0031】
一実施形態では、インターフェース32は、データソース46との通信リンクが確立されるゲートウェイとして構成してもよい。
【0032】
サブジェクトデータ生成部48は、データソース46からのデータ、又はデータセットのサブジェクトに関連しメモリ24に格納された他のデータに基づいて、クライアントのサブスクリプションで利用可能なデータセットの特定のサブジェクトのデータを生成してもよい。
【0033】
サーバ22は、1つ以上のクライアントデバイス44から送信されるクライアントサブスクリプションのパラメータを定義するメッセージの受信、データセットからサブスクリプションに利用可能なサブスクリプションサブジェクトの又はサブスクリプションサブジェクトに関連する外部データを含むデータソース46からの受信メッセージの受信、及びクライアントサブスクリプションが利用可能なデータセットの夫々のサブジェクトのデータを構成する、又はデータを決定する為に使用され得るデータ生成部48からの内部データの取得又は受信を制御するように構成されてもよい。外部データ及び内部データは、数値、テキスト文字、又は数値とテキスト文字の組み合わせであってもよい。サブスクリプションのデータセットは、(i)データがほとんど変化しないか、又は所定の期間にわたって稀にしか変化しないサブジェクト、例えば、1日に約0~2回変化するデータ(「静的データ」)、及び(ii)データが頻繁に変化するサブジェクト、例えば、1秒間に複数回、及び幾つかの実施形態ではサブジェクトデータ生成部48によって実行される操作に基づいて事前に設定された変化率で変化するサブジェクト(「トランザクションデータ」)を含んでもよい。詳細は後述するが、サブジェクトのデータは、リアルタイムで変化する外部データに基づいてリアルタイムで変化してもよいが、サブジェクトは、サブジェクトが静的データに関係するかトランザクションデータに関係するかに基づいて、夫々の変化率で指定される可能性がある。変化率は、サーバ22が、クライアントサブスクリプションにサービスを提供する為に、サブジェクトのデータの現在値を有するUIメッセージを生成し、クライアントデバイスに送信するタイミングを決定してもよい。クライアントサブスクリプションにサービスを提供する為の夫々のサブジェクトのアップデートされたデータを含むUIメッセージの送信を制御する為の変化率の利用は、有利には、本開示によるサブスクリプションサービスを提供する際の処理、ネットワーク帯域幅、及びデータストレージリソースの使用量を削減するが、これは、クライアントサブスクリプションの為の夫々のサブジェクトのアップデートされたデータは、サブジェクトのデータが変化する速度ではなく、サブジェクトのデータのタイプに固有の変化率として事前に設定された速度で送信されてもよいからである。例えば、本開示による電子金融商品データサブスクリプションのデータセットは、(i)クライアントサブスクリプションの下でトレーダによってサブスクリプションデータがサブスクライブされる特定の金融商品を含むトレーダのトレーディングブックの名前(例えば、「BookName」)等の静的データや、(ii)一日の間にこれまでに取引された特定の金融商品の株式数(例えば、「OrderRecords」)、特定の金融商品のリアルタイムの市場価格(例えば、「MarketDataRecords」)、サブジェクトデータ生成部48からのデータ又はデータセット内の他のサブジェクトのデータを使用して、サーバ22によって500ミリ秒毎等の所定のタイミングで実行される計算の結果(例えば「CalcRecords」)等のトランザクションデータを有するサブジェクトを含んでもよい。一実施形態では、トランザクションデータを含むサブジェクトのデータは、例えば、サブジェクトがリアルタイムの外部市場データに基づく金融商品の現在の市場価格である場合等、サブジェクトに指定された変化率よりも頻繁にリアルタイムで変化することがある。
【0034】
更に、サーバ22は、クライアントサブスクリプションの夫々のサブジェクトの現在のデータを含むUIメッセージの生成を制御するように構成されてもよい。一実施形態では、UIメッセージは、クライアントサブスクリプションのサブジェクトの現在データをJSONメッセージ内のオブジェクト値として含むか、又は示してもよい。サーバ22は、通信ネットワーク18及びウェブソケット45によりインターフェース30を介してUIメッセージを1つ以上のクライアントデバイス44に送信し、クライアントデバイスにおけるトレードブロッタ内のクライアントビュー配列の表示を引き起こし、クライアントビュー配列は、UIメッセージから取得されたクライアントサブスクリプションのサブジェクトの現在データを含む。
【0035】
一実施形態では、サーバ22は、外部ソース46からの1つ以上の受信メッセージの一部として提供されるメタデータを解析し、受信メッセージのメタデータのコンテンツに少なくとも部分的に基づいて、受信メッセージ内のサブスクリプションサブジェクト関連データを処理して、他のサブジェクトのデータ(「従属データ」)が提供されるサブジェクトのデータ(「親データ」)と、他のサブジェクトのデータとの間の関係を定義するデータを含む、受信メッセージ内の特定のデータを識別するように構成されてもよい。従属データには、静的データとトランザクションデータを含んでもよい。例えば、株式注文データを提供する外部ソース46からのメッセージストリームは、グーグル(GOOGLE)のような特定の株式の親データと、メッセージストリームで夫々データが提供される、市場価格、出来高、サイド(例えば、買い又は売り)、売りサイズ等のサブジェクトのような、親データの従属データサブジェクトを指定するデータとを含んでもよい。他の例では、市場データを提供する外部ソース46からのメッセージストリームは、グーグル(GOOGLE)等の特定の株式の親データと、メッセージストリームでデータが夫々提供される親データに関連する、買値、売値、最終取引価格、取引所等のサブジェクトのような、親データの従属データサブジェクトを指定するデータを含んでもよい。
【0036】
詳細は後述するが、外部ソース46からのメッセージストリームは、クライアントサブスクリプションの固有のサブスクリプション項目のサブジェクトのサブスクリプションをサービスする為に使用されてもよい、特定の親データと従属データサブジェクトの関係のデータを含んでもよい。
【0037】
一実施形態では、サーバ22は、Openfin等のブラウザ又はデスクトップコンテナ上で動作し、クライアントデバイス44を認証する為の認証機能を実行する、ウェブベースのサブスクリプション管理サービスを提供するように構成されてもよい。
【0038】
方法の例
本開示の特徴を説明する目的で、図3図4及び図5に夫々示すような、サブスクリプションデータのリアルタイムの配信を含むサブスクリプションサービス管理機能を提供しながら、通信ネットワーク上の帯域幅の使用、処理リソース及びメモリの使用、及び処理待ち時間を有利に最小化する、例示的なプロセス100、200及び400の高レベルブロック図を、図2に示すようなシステム40の構成要素で実行される動作に関連して以下に説明する。プロセス100は、クライアントのサブスクリプションの為に利用可能なサブスクリプションサブジェクトのデータセットを生成することと、データセットのサブジェクトのデータを受信してメモリに格納することとを制御してもよい。プロセス200は、クライアントデバイスにおいてクライアントサブスクリプションの為に利用可能なデータセットのサブジェクトを表示することと、クライアントデバイスからクライアントサブスクリプションの要求を受信することと、クライアントサブスクリプションの要求に基づいて、夫々のサブスクライブされたサブジェクトについてのサブスクリプション項目を含むサーバサブスクリプション配列を決定することと、クライアントサブスクリプションに従って、サブスクライブされフィルタ基準を満たすサブジェクトの現在のデータを含むUIメッセージを生成することと、クライアントサブスクリプションにおいてサブスクライブされたサブジェクトの現在のデータを含むクライアントビュー配列がクライアントデバイスにおいて表示されてもよいUIメッセージをクライアントデバイスに送信することと、を制御してもよい。プロセス400は、外部ソース46及びデータ生成部48から受信したサブスクリプションのサブジェクトのデータ、ならびにサブスクライブされたサブジェクトのデータがクライアントサブスクリプションのフィルタ基準を満たすかどうかに基づいて、クライアントサブスクリプションに従ってサブスクライブされたサブジェクトの現在のデータを含むバイト配列を生成することを制御してもよい。一実施形態では、フィルタ基準は、例えば、複数のユーザをクライアントとするクライアントサブスクリプションを有する団体の特定のユーザが、サブスクライブしているサブジェクトのデータを受信する権利があるかどうか、又はサブスクライブしているサブジェクトの現在の値が、所定の値以上、以下、又は同じであるという要件を満たすか否かを指定してもよい。
【0039】
図3を参照すると、ブロック105において、サーバ22は、サブスクリプションサブジェクトのデータセットを生成し、そのデータセットをサブスクリプションサブジェクトとともにサブスクリプションサブジェクトデータ28としてメモリ24に格納してもよい。データセットは、サーバ22が外部ソース46等のデータベース又はコンピューティングデバイスからデータを受信する特定のカテゴリ又はタイプのデータに対応してもよい。そのサブスクリプションサブジェクトの全てを含むデータセットは、データセットの夫々のサブジェクトに対応する列と、以下で詳細に説明されるように、クライアントサブスクリプションを形成するサブスクリプション項目を作成する為に使用されてもよい行とを含む2次元配列として表示されるように構成されてもよい。後述するように、個々の行は、データセット内の従属データサブジェクトが親データサブジェクトに関連するものとしてマッピングされ、クライアントサブスクリプションにおいてサブスクライブされてもよい親データサブジェクトを含む固有のサブスクリプション項目に対応してもよい。
【0040】
一実施形態では、データセットは金融商品取引情報に関連してもよく、金融商品取引情報の静的データ及びトランザクションデータを夫々含むサブジェクトを含んでもよい。例えば、データセットは株式注文に関連するサブスクリプションデータ用であってもよく、親データを構成する持分金融商品のサブジェクトのデータと、持分金融商品の特定のサブジェクトと従属データ関係にある他のサブジェクトの追加データを含む受信メッセージストリームEquityOrderRecordでデータが提供されてもよいサブジェクトを含んでもよい。例えば、受信メッセージストリームEquityOrderRecordは、親データとして、グーグル(GOOGLE)株式の株式金融商品に対応する特定の値、及びグーグル(GOOGLE)株式に対応する特定の値にメタデータによってマッピングされた従属データサブジェクト、例えばグーグル(GOOGLE)の現在の市場価格及び日中に購入された株式数の従属データサブジェクトを含んでもよい。一実施形態では、受信メッセージストリームEquityOrderRecordは、例えば親データの親キー、及び従属データのメタデータを含む従属データサブジェクト情報を含むデータセットの他のサブジェクトの子キーを夫々含むデータセットのサブジェクトである、親データサブジェクトに対する従属データサブジェクトの関係を定義するメタデータを記述するデータEquityOrderClassKeyを含んでもよい。例えば、受信メッセージストリームEquityOrderRecordの親データサブジェクトのデータは、親データサブジェクトが2つの従属データサブジェクトを有することを定義する子キーとして、メタデータMarketDataClassKey及びEquityInstrumentClassKeyを含んでもよく、サーバ22は、このメタデータを使用して、親データサブジェクトに関連する受信メッセージEquityOrderRecordで受信された夫々の従属データサブジェクトの新しいアップデートデータを親データサブジェクトに関連付けてもよい。
【0041】
本開示による金融商品取引サブスクリプションサービスのデータセットの一実施形態では、親データサブジェクトに関連する静的データを含む従属データサブジェクトは、例えば、株式金融商品記録(「TickerID」)のような対象となる金融商品の識別子、金融商品の説明(「description」)、クライアントサブスクリプション内の金融商品に関連する特定の金融情報を受信する為のクライアントサブスクリプションを有するクライアントの名及び姓を識別するユーザ記録作成情報(「firstName」及び「lastName」)、特定のクライアントを識別するデバイス10の内部参照コード(「viewCode」)、クライアントにサブスクリプションデータが提供される特定の金融商品を含むクライアントのトレーディングブックの名前(「BookRecords」)、及びクライアントが対象となる特定の金融商品に関連する特定の情報を受信する為にクライアントサブスクリプションにサブスクライブした日時(「createDateTime」)を含んでもよい。更に、トランザクションデータを含む親データサブジェクトに関連する従属データサブジェクトには、特定の時間における特定の商品の売上規模(「saleSize」)、金融商品の出来高加重平均価格等、1秒間に数回以上変化するリアルタイムの市場データに基づいて、1秒間に数回等、予め設定された時間間隔で実行される計算によって決定される値(「ivwap」)、金融商品の額面金額(「notional」)、金融商品の取引量の割合(「pov」)、及び生成部48から提供されたデータ及び1つ以上の従属データサブジェクトからのデータに基づいて計算された値を含んでもよい。上記で特定されたサブスクリプションサブジェクトは例示的なものであり、金融商品取引情報に関するサブジェクトのデータセットには、他の金融商品取引関連情報のサブジェクトが含まれる場合があることを理解されたい。
【0042】
ブロック110において、サーバ22は、メモリ内のデータセットのサブジェクトに関連付けて格納されたサブスクリプションサブジェクトデータ28内のメタデータにおいて、データセット配列内のサブジェクトを、クライアントサブスクリプションの下でサブジェクトの現在値でクライアントデバイスのディスプレイをアップデートする頻度に対応する夫々の変更変化率で指定してもよい。変化率は、例えば、1秒間に1回以下であってもよく、1秒間に何回であってもよい。しかしながら、クライアントサブスクリプションでサブスクライブしているデータセットのサブジェクトのデータの値は、サブジェクトについて指定された変化率よりも頻繁に変化する可能性があることに留意されたい。例えば、特定の金融商品の市場価格であるサブジェクトのリアルタイムの市場データは、サブジェクトについて指定された変化率よりも遥かに大きい速度でリアルタイムで変化することがある。
【0043】
ブロック120において、サーバ22は、通信ネットワーク18を介して、外部ソース46から、データセットの夫々のサブジェクトのデータを含む、又は夫々のサブジェクトのデータに関連する外部データのメッセージストリームを受信してもよい。夫々のサブジェクトのデータは、例えば、リアルタイムの清算又は決済データ、取引後のデータ、金融商品の現在の市場価格データ、及び類似の金融取引情報を含んでもよい。サーバ22は、後述するように、クライアントサブスクリプションでサブスクライブしたサブジェクトのアップデートに使用する為に、メッセージストリームから夫々のサブジェクトのデータを抽出してもよい。更に、サーバ22は、メモリ24に、サブスクリプションサブジェクトデータとして、メッセージストリームから抽出された夫々のサブジェクトのデータを格納してもよい。
【0044】
一実施形態では、ブロック120において、サーバ22は、生成部48によって実行された計算を表すデータを生成部48から受信又は取得し、取得又は得られたデータを、以下に詳細に説明するように、クライアントサブスクリプションにサブスクライブされたサブジェクトの値として格納してもよい。計算は、データセットの夫々のサブジェクトのデータを使用して、予め構成された時間間隔で実行されてもよい。例えば、生成部48は、500ミリ秒毎に、データセットからサブスクライブしている特定の持分金融商品の親データサブジェクトのivwap(「出来高加重平均価格」)の値を、500ミリ秒毎よりも頻繁にアップデートされる特定の持分金融商品の市場出来高や最終売却価格等のサブジェクトの夫々の値を使用して計算してもよく、特定の持分金融商品の関連サブジェクトのivwapの計算値をサーバ22に提供してもよい。
【0045】
図4は、本開示に従って、クライアントサブスクリプションを作成し、管理し、サービスする例示的なプロセス200を示す図である。
【0046】
図4を参照し、ブロック202において、サーバ22は、通信ネットワーク18により、ウェブソケット45を介してクライアントデバイス44に、サブスクリプションサービスにおいて選択可能なデータセットのサブジェクトを示すデータセット情報を送信してもよく、これにより、クライアントデバイス44のディスプレイのグラフィカルユーザインターフェース(GUI)において、クライアントサブスクリプションの選択に利用可能なデータセットのサブジェクトに夫々対応する列と、サブスクライブしたサブジェクトを有するサブスクリプション項目を指定する為に使用されてもよい行と、を含む2次元配列(「データセット配列」)が表示される。
【0047】
一実施形態では、クライアントデバイスのユーザは、クライアントサブスクリプションのサブスクリプション項目を作成するためにGUI上の行のセルをマウスポインタでクリックする等して、データセット配列の行の特定のサブジェクトを選択してもよく、クライアントサブスクリプションをサービスするデバイス10に実装されるサブスクリプションサービスの所有者又はオペレータとのサブスクリプションデータサービス契約のクライアントになってもよい。この契約により、クライアントは、クライアントサブスクリプションのサブスクリプション項目として、クライアントによってサブスクライブされたデータセットのサブジェクトの現在のデータを受信してもよい。クライアントサブスクリプションのサブスクリプション項目を定義する為に、GUI上でデータセット配列に対する選択操作が実行されると、クライアントデバイス44は、自動的に、クライアントサブスクリプションにおけるサブスクリプション項目の為に、データセット配列の1つ以上の夫々の行における1つ以上のサブジェクトの選択を示すサブスクライブ要求メッセージ内のサブスクライブ要求として、サブスクライブコマンドを生成し、通信ネットワーク18を介してサーバ22に送信してもよい。
【0048】
一実施形態では、サブスクライブコマンドを含むサブスクリプション要求メッセージは、クライアントサブスクリプションの下でデバイス10においてサブスクリプションサービスが要求されるデータセットのタイプ、例えば、株式金融情報を含むデータセットを識別する「type」、クライアントサブスクリプションの為に提供されるデータをクライアントデバイスに表示するクライアントのトレードブロッタを識別する「BookName」、及びクライアントサブスクリプションにサービスを提供する為にサーバ22がクライアントのクライアントデバイスにデータを提供することができるデータセット配列の利用可能なサブジェクトのうちサブスクライブされたサブジェクトを識別する「fields」のデータパラメータを含んでもよい。
【0049】
一実施形態では、サブスクリプションサービスは、ブラウザを介してアクセスされるウェブサービスとして、クライアントデバイス44でアクセスされ、クライアントデバイス44に提供されてもよい。別の実施形態では、クライアントデバイス44は、クライアントデバイスとデバイス10との間のデータの交換を制御して、クライアントデバイスにクライアントサブスクリプションデータを表示することと、デバイス10から提供されるGUI上に表示される配列のセルを選択することによってクライアントサブスクリプションを定義する為に、クライアントがサブスクリプション要求情報を入力することを可能にすることとを含むサブスクリプションサービスを実装する為に、そのメモリに格納されたアプリ又はソフトウェア命令を有するように構成されてもよい。
【0050】
ブロック205において、サーバ22は、通信ネットワーク18により、ウェブソケット45を介してクライアントデバイス44から、クライアントデバイス44において入力されたサブスクリプション要求を示すサブスクリプション要求メッセージを受信してもよい。一実施形態では、サーバ22は、サブスクライブコマンドとともに、又は以前にクライアントデバイス44を介したクライアントとのサブスクリプション登録セッション中に、通信ネットワーク18により、デバイス10によって提供される金融取引情報のクライアントサブスクリプションのクライアントとして、トレーダ等のユーザのグループ、及びグループのトレーダがメンバーである証券会社等のサブスクリプション団体を識別する情報を含むクライアントデータを受信してもよい。サーバ22はまた、サブスクリプションデータが所望される対象となる特定の金融商品や、サブスクリプションデータが所望される株式、国債等の対象となる金融商品の種類を含むクライアント関連データを、サブスクライブコマンドと共に受信してもよい。サーバ22は、クライアントサブスクリプションデータ26として、サブスクライブコマンドに含まれるデータ及びその他のクライアント関連データをメモリ24に格納してもよい。
【0051】
ブロック210において、クライアントから受信されたサブスクライブコマンドを含む各サブスクリプション要求メッセージについて、サーバ22は、2次元配列であるサーバサブスクリプション配列(「サーバ配列」)で表されてもよい、サブスクリプション要求メッセージで示されるサブスクライブするサブジェクトを含むサブスクリプション項目の記録データを生成し、夫々のサブスクリプション項目について親データサブジェクトと従属データサブジェクトの関係を定義するメタデータを含むサーバ配列を定義する情報を、クライアントサブスクリプションデータ26に格納してもよい。一実施形態では、サーバ配列の各行の最初の要素は、サブスクライブコマンドによって示される固有のサブスクリプション項目に対応する固有の行識別子を有してもよい。固有のサブスクリプション項目は、行の従属データサブジェクトにマップされた行の親データサブジェクトに関連付けられてもよい。一実施形態では、行内の従属データサブジェクトは、行内のそれ自身の従属データサブジェクトを1つ以上有してもよい。サーバ22は、クライアントサブスクリプション内の固有のサブスクリプション項目について、親データサブジェクトのメタデータに基づいて、親サブジェクトデータが従属データサブジェクトを有することを決定してもよい。
【0052】
一実施形態では、サーバ配列は、各々が固有の親キーで識別される静的データを含むサブジェクト、各々が固有の親キーで識別され、任意で夫々の子キーで識別される他のサブジェクトのデータを参照する1つ以上の子キーで識別されるトランザクションデータを含むサブジェクト、及び各々が夫々の子キーで識別されるサブジェクトを含むように構成されてもよい。サーバ22は、特定のサブジェクトのメタデータで識別される夫々の子キーの値を取得することで、特定のサブジェクトの値を決定することができる。例えば、金融取引情報のデータセットから定義されるサーバ配列は、親キー「bookRecordId」で識別される静的データサブジェクトBookRecordsと、親キーで識別されるトランザクションデータサブジェクトOrderRecordsを含んでもよい。サブジェクトOrderRecordsのデータは、親キー「OrderId」と子キー「bookRecordId」及び「customerid」で識別されるデータを含む、変化する外部データに基づいて、毎日リアルタイムで何度もアップデートされてもよい。サーバ22は、サブジェクトOrderRecordsに示される子キー「bookrecord」と「customerid」に夫々対応するサブジェクトの値を取得することによって、サブジェクトOrderRecordsの値を決定してもよい。
【0053】
詳細は後述するが、サーバ22は、親キー、子キー、従属データ、及び固有の行識別子を使用して、サブスクライブしているサブジェクトの現在のデータを含むバイト配列を含むUIメッセージを生成して送信し、親キー、子キー、及び固有の行識別子をUIメッセージに含めてもよい。更に、クライアントデバイス44は、UIメッセージで受信した親キー、子キー、従属データ及び固有の行識別子に基づいて、クライアントサブスクリプションの下でサブスクライブしているサブジェクトの現在値を含む2次元配列を、クライアントビュー配列として表示してもよい。
【0054】
一実施形態では、株式注文サブスクリプションサービスの為に、サーバ22は、サブスクリプション要求メッセージに含まれるクライアントサブスクリプションの固有のサブスクリプション項目のデータを、EquityOrderRecord、EquityInstrumentRecord、及びCustomerRecordの記録に以下のように構成することができる。
EquityOrderRecord:
ID=1001
InstrumentId=12
側=B
量=100
価格=101
CustomerId=1
EquityInstrumentRecord:
ID=12
InstrumentId=12
InstrumentTicker=MSFT
InstrumentName=Microsoft Corporation
CustomerName-CUSTOMER1
Customer LongName-Bill Gates
CustomerRecord:
ID=1
CustomerId=1
CustomerName=Morgan Stanley
記録「EquityOrderRecord」は、クライアントサブスクリプションのサブスクリプション項目が株式注文であることを示す指標であり、記録項目として以下を含んでもよい。「ID」は、サブスクライブしたサブジェクトを持つ株式注文クライアントサブスクリプションの固有のサブスクリプション項目を識別する固有の値であり、サブスクライブしたサブジェクトは以下の通りである。「InstrumentId」は、商品に対応する値であり、親データを構成する。「側」は、買いを意味する値B又は売りを意味する値Sを有し、従属データを構成する。「量」は、InstrumentId値に対応する商品の注文株数に等しい値であり、従属データを構成する。「価格」は、InstrumentId値に対応する商品の値であり、従属データを構成する。「CustomerId」は、特定のクライアントに対応する値であり、従属データを構成する。更に、記録「EquityInstrumentRecord」は、サブスクリプション項目のEquityOrderRecordに関連付けられた商品情報の指標であり、記録項目として以下を含んでもよい。「ID」は、クライアントのサブスクリプションに利用可能な複数の持分金融商品のうち、固有の持分金融商品の記録を識別する固有の値である。「InstrumentId」は、サブスクリプション項目の商品に対応する値であり、親データを構成する。「InstrumentTicker」は、InstrumentId値に対応する商品の略称であり、従属データを構成する。「InstrumentName」は、「InstrumentId」値に対応する商品のフルネームであり、従属データを構成する。「CustomerName」は、「CustomerId」値に対応するクライアントの名前であり、従属データを構成する。「Customer LongName」は、「CustomerId」値に対応する顧客のフルネームであり、従属データを構成する。更に、記録「CustomerRecord」は、サブスクリプション項目のEquityOrderRecordに関連する顧客情報の指標であり、記録項目として以下を含んでもよい。「ID」は、クライアントサブスクリプションに関連付けられてもよい複数のクライアントのうち、固有のクライアントの記録を識別する固有の値である。「CustomerId」は、特定のクライアントに対応する値であり、従属データを構成する。「CustomerName」は、「CustomerId」値に対応するクライアントの名前であり、従属データを構成する。EquityOrderRecordでは、InstrumentIdサブジェクトは、従属データサブジェクト「InstrumentTicker」及び「InstrumentName」の子キーにマッピングされる親データであり、CustomerIdサブジェクトは、EquityInstrumentRecordの従属データサブジェクト「CustomerName」及び「Customer LongName」、ならびにCustomerRecordの従属データサブジェクト「CustomerName」の子キーにマッピングされる従属データである。図6は、株式注文のサブスクリプション項目の上述した例と、配列の構成で表されるクライアントサブスクリプション内の夫々の株式注文記録を構成してもよい他の例示的な固有のサブスクリプション項目を含む、例示的なサーバ配列を示す図である。クライアントサブスクリプションを表すサーバ配列は、夫々の固有のサブスクリプション項目の為の他の多くのサブジェクトを含んでもよいことを理解されたい。
【0055】
一実施形態では、市場データサブスクリプションサービスの為に、サーバ22は、サブスクリプション要求メッセージに含まれるクライアントサブスクリプションの固有のサブスクリプション項目に対応するデータを、以下のようにEquityInstrumentRecordとMarketDataRecordの記録に構成してもよい。
EquityInstrumentRecord
ID=12
InstrumentId=12
取引所=NASD
InstrumentTicker=MSFT
InstrumentName=マイクロソフト(Microsoft)社
MarketDataRecord
ID=12
InstrumentId=12
買値=143.56
売値=144.56
最終取引=143.56.
記録「EquityInstrumentRecord」は、クライアントサブスクリプションのサブスクリプション項目のためのものであってもよい商品情報の指標であり、記録項目として以下のものを含んでもよい。「ID」は、顧客のサブスクリプションで利用可能な複数の持分金融商品のうち、固有の持分金融商品の記録を識別する固有の値である。「InstrumentId」は、サブスクリプション項目の商品に対応する値であり、親データを構成する。「買値」は、商品識別子の値に対応する商品の購入オファーの時価であり、従属データを構成する。「取引所」はInstrumentIdの値に対応する商品の市場データが取得される取引所名であり、従属データを構成する。「InstrumentTicker」はInstrumentIdの値に対応する商品の略称であり、従属データを構成する。「InstrumentName」はInstrumentIdの値に対応する商品のフルネームであり、従属データを構成する。更に、記録「MarketDataRecord」は、サブスクリプション項目のEquityInstrumentRecordに関連する顧客情報の指標であり、記録項目として以下のものを含んでもよい。「ID」は、顧客のサブスクリプションに含まれる可能性のある複数のマーケットデータ商品のうち、固有のマーケットデータ商品の記録を識別する固有の値である。「InstrumentId」は、サブスクリプション項目の商品に対応する値であり、親データを構成する。「買値」は、InstrumentId値に対応する商品の購入オファーの時価であり、従属データを構成する。「売値」は、InstrumentIdの値に対応する商品の売りのオファーの時価であり、従属データを構成する。「最終取引」は、InstrumentIdの値に対応する商品が最後に売られた価格であり、従属データを構成する。EquityInstrumentRecordのInstrumentIdサブジェクトは、「MarketDataRecord」の従属データサブジェクト「InstrumentTicker」及び「InstrumentName」の子キー、並びに従属データサブジェクト「買値」、「売値」及び「最終取引」の子キーにマッピングされる親データである。図7は、サブスクリプション項目の上述した例と、配列の構成で表されるEquityInstrumentRecordのクライアントサブスクリプションの夫々の商品記録を構成してもよい他の例示的な固有のサブスクリプション項目とを含む例示的なサーバ配列を示す。
【0056】
上記の例を参照すると、異なるデータセットのサブジェクトのデータ間の関係、例えば、EquityOrderRecordを有する株式注文サブスクリプションと、上記のEquityInstrumentRecordを有する市場データサブスクリプションサービスは、EquityInstrumentRecordの所与のInstrumentId値のデータ、例えば、InstrumentId=12が、同じInstrumentId値を有するEquityOrderRecordのデータ、即ち、InstrumentId=12として使用されてもよいように、固有のサブスクリプション項目の記録のメタデータに示されてもよい。有利には、メタデータに示される親子キーデータの関係に基づいて、サーバ22は、クライアントデバイス内のクライアントビュー配列における表示の為にクライアントサブスクリプションでサブスクライブされたサブジェクトの値を処理して送信する際のデータの重複を回避するために、メタデータに基づいて、あるデータセットからのサブジェクトのデータ(値等)を別のデータセットにおける同じサブジェクトの値として使用してもよい。
【0057】
一実施形態では、ブロック205で説明されるように受信されたサブスクライブコマンドを含むサブスクリプション要求メッセージは、以下のデータパラメータを含んでもよい。「sort」は、クライアントのクライアントデバイスにおいて、取引ブロッタにわたるクライアントビュー配列にサブスクライブしたサーバ配列のサブジェクト(即ち、列)を表示する順序を指定する。「columnFilters」は、サーバ22が、クライアントサブスクリプションの下で、サーバ配列の行のデータ、又は行の夫々のサブジェクトのデータを送信するかどうかを決定する為に使用することができるフィルタ基準を定める。フィルタ基準は、サーバ配列の特定の行のサブジェクトのオブジェクト値が、事前に設定された値又は動的に変更可能な値を上回るか、等しいか、下回るか、又は特定のテキスト文字を含むかどうかの判定を含んでもよい。一実施形態では、columnFiltersは、論理AND又はOR演算、提供される記録グループのパラメータを定義するグループ開始(GS)演算、例えば、サブジェクト「量」が閾値を超える又は下回る値を有し、サブジェクト「側」が値「買い」を有する行、「start with」演算、及び「contains」演算を含んでもよい。
【0058】
一実施形態では、サーバ22は、クライアントがクライアントデバイス44で異なるサブスクリプションデータを表示する為に使用できる複数のトレードブロッタを区別する為に、サブジェクト「BookName」のデータを使用してもよい。例えば、クライアントは、単一のデータセットに対応するサーバ配列の異なる他のサブジェクトと夫々サブスクライブしている同じ単一のデータセットからのデータを表示する異なるトレードブロッタを有してもよい。一実施形態では、クライアントのサブスクリプションでサブスクライブされるサブジェクトは、サーバ配列を構成するデータセットからのサブジェクトでなくてもよいし、全てのサブジェクトであってもよい。
【0059】
一実施形態では、サーバ配列は、クライアントビュー配列として表示する為の変更されたサーバ配列を生成する為に、サーバ22による以下の列操作を許可するように生成されてもよい。列をフィルタリングする、即ち、サーバ配列の異なる行のサブスクライブされたサブジェクトの値を識別し、サブジェクトの値が列フィルタ基準を満たさない任意の行を削除する。サーバ配列の列を所望のようにソート及び配置する。複数の行の同じサブジェクトの合計値又は平均値等の列のグループをソート又は集約し、集約の結果をサーバ配列の別の行の異なるサブジェクト(列)のオブジェクト値として含める。上記の列操作、又は他の列操作は、サブスクリプション要求メッセージで指示されてもよく、その結果としての列の集約はサブスクライブされたサブジェクトを構成してもよい。
【0060】
一実施形態では、サーバ配列は、JSON形式又はJSONと互換性のある形式を有するデータ構造を使用してメモリ内で表現される場合がある。データ構造は、サーバ配列の行の固有の行識別子の為に常に予約される最初のデータ要素[0]と、固有の行識別子を有する行のサーバ配列の夫々の列のインデックスを有するサブスクライブするサブジェクトに対応するデータ要素[0]に続くデータ要素とを含んでもよい。例えば、金融取引サブスクリプション管理システムにおいて、サーバ配列を表し、クライアントデバイスで表示する為のクライアントビュー配列を生成する為に使用されてもよいメモリに格納されたデータ構造は、(i)サーバ配列の行はクライアントの特定の株式注文項目に対応するEquityOrderRecordデータ[0]=ID、又はサーバ配列の行はクライアントの特定の株式取引項目に対応する株式取引履歴データ[0]=IDであってもよい。加えて、例えば、サブスクリプションメッセージで識別されるサブジェクトが「側」と「量」のみを含む場合、サーバ配列を表すデータ構造は、サブジェクト「側」と「量」がサーバ配列のどの列、例えば[33,199]又はサーバ配列の列33と列199に位置するのか等、列インデックスを示してもよい。その結果、EquityOrderRecordの特定の行、即ち固有のサブスクリプション項目をサーバ配列から生成する為のデータ構造フォーマットに従って、データ構造は、サブスクライブされたサブジェクトの夫々のオブジェクト値が、サーバ配列のインデックス33、即ちサブジェクト「側」にインデックス33を有するサーバ配列の列、及びサーバ配列のインデックス199、即ちサブジェクト「量」にインデックス199を有するサーバ配列の列にあることを示してもよい。有利なことに、本開示のデータ構造に従ってオブジェクト値を取得するサーバ配列の行の位置のこの単純かつ簡潔な表現は、サーバ配列のサブスクライブされたサブジェクトのデータからオブジェクト値へのランダムアクセスを、迅速に、より少ない処理リソースとより少ないメモリ領域を使用して可能にする。例えば、データ構造[EquityOrderRecord[33]、EquityOrderRecord[199]]は、EquityOrderRecordのサーバ配列から、各行識別子、即ちIDについて、クライアントサブスクリプションの下でサブスクライブされたサブジェクト「側」と「量」の現在のオブジェクト値を取得する為に使用されてもよい。
【0061】
一実施形態では、サーバ配列は、順番に配置され、サブスクリプション要求メッセージで示されたデータ長のオブジェクト値を有するサブスクライブされたサブジェクトを含んでもよい。
【0062】
一実施形態では、サブスクライブコマンドが特定のデータセットにないサブジェクトを識別するとき、サーバ22はそのサブジェクトの為に空白のエントリー“”を生成してもよい。
【0063】
一実施形態では、後述するように、ブロック210において、サーバ22は、ブロック230で受信されたサブスクリプション変更要求で示されたサブジェクトに基づいて、サーバ配列を生成してもよい。
【0064】
図4を参照すると、ブロック212において、サーバ22は、サーバ配列の行の各サブジェクトについて、その行の固有の行識別子で識別され、そのサブジェクトの現在の値が取得又は決定されてもよいメモリ位置をメタデータ等で識別するサブジェクトメッセージスレッドを生成してもよい。従って、サーバ配列の各行の各サブジェクトは、夫々のサブジェクトメッセージスレッドに値を持つことができる。
【0065】
一実施形態では、行が固有のサブスクリプション項目に対応するサーバ配列の行のサブジェクトに対応する各サブジェクトメッセージスレッドについて、サブジェクトメッセージスレッドは、サーバ22がクライアントデバイスにおいてクライアントビュー配列としてクライアントサブスクリプションのクライアントサブスクリプションデータを初期表示するため、又はクライアントデバイスにおいてクライアントビュー配列のクライアントサブスクリプションのクライアントサブスクリプションデータの表示をアップデートして、サブジェクトの現在値に対するあらゆる変更を反映するために、サブジェクトの現在値を取得するべくサブジェクトメッセージスレッドを処理する変化率を指定する時間間隔を示す変更変化率を含むか、又は示してもよい。サーバ22は、サブジェクトメッセージスレッドのサブジェクトの変化率に従って、サブジェクトメッセージスレッドの各々のサブジェクトの時間間隔をカウントダウンする電子タイマーの動作を維持し、制御してもよい。サーバ22は、各サブジェクトメッセージスレッドの表現を、それに関連するサブジェクトの変化率を含めて、クライアントサブスクリプションデータ26としてメモリに格納してもよい。
【0066】
本開示による、サーバ配列の形式での夫々のサブスクリプション項目に対するサブジェクトのオブジェクト値の格納、及び夫々のサブジェクトのデータの格納及びアップデートの追跡の為のサブジェクトメッセージスレッドの使用は、有利には、サーバ22が、クライアントサブスクリプションの下でクライアントによってサブスクライブされたサーバ配列内の夫々のサブジェクトのオブジェクト値をランダムアクセスによって取得することを可能にし、これにより、サブスクリプションサブジェクトデータを処理し、クライアントによってサブスクライブされたサブジェクトのアップデートされたデータを含むクライアントビュー配列をクライアントデバイスでクライアントに表示する速度が向上し、また、サーバが、最小限の処理及びデータ記憶リソースの使用で、クライアントサブスクリプションを動的に変更し、従って、クライアントサブスクリプションに基づいてクライアントビュー配列としてクライアントに表示されるサブジェクトのデータを動的に変更することが可能になる。
【0067】
ブロック215において、サーバ22は、クライアントサブスクリプションの現在の状態に基づいて、クライアントサブスクリプション内の各固有のサブスクリプション項目について、夫々サブスクライブされたサブジェクトの現在のオブジェクト値を含むバイト配列を生成してもよい。バイト配列は、サーバ配列に示されるようにサブスクライブされたサブジェクトと、サブスクライブされたサブジェクトの夫々のオブジェクト値のみを含んでもよい。例えば、サーバ配列は250のサブジェクトを含んでもよく、バイト配列は、後述するフィルタ基準の適用に基づいて、250のサブジェクトのうち10のサブジェクトのみを持ってもよい。
【0068】
図5を参照すると、サーバ22は、ブロック215において、サブジェクトに対して指定された変更率に従ってサブスクライブされたサブジェクトの現在のデータを含み、クライアントによってプリセットされ動的に変更されてもよいフィルタ基準に従ってフィルタリングされたバイト配列を生成するために、サーバ配列のサブスクライブされたサブジェクトのデータを格納することと、サブスクライブされたサブジェクトのデータを処理することとを管理するプロセス400を実行してもよい。
【0069】
ブロック410において、サーバ22は、サーバ配列の固有のサブスクリプション項目に対応する行の特定のサブジェクトに関するアップデートデータが利用可能になると、サブジェクトメッセージスレッドのデータを継続的にアップデートしてもよい。例えば、アップデートされたデータは、外部ソース46から受信された外部データ又はデータ生成部48で生成された内部データに基づいてもよい。一実施形態では、サーバ22は、外部ソース46からの受信メッセージストリームがサーバ配列の特定の行のデータを含むと判定し、メッセージストリームから特定の行のサブジェクトのデータを抽出してもよい。更に、サーバ22は、サブジェクトの値が変更されたかどうか、サブジェクトメッセージスレッドのサブジェクトのオブジェクト値がクライアントサブスクリプションをサービスする為にクライアントデバイスに前回提供されてから所定の期間にわたって変更が発生したかどうか、所定の期間内にサブジェクトのオブジェクト値が変更された回数、及び所定の期間にわたってサブジェクトに存在した異なるオブジェクト値を表すメタデータ、フラグ等を、サブジェクトメッセージスレッドとともに格納してもよい。一実施形態では、所定の期間内にサブジェクトのオブジェクト値が変更されたかどうかの表示と、所定の期間内に存在したサブジェクトのオブジェクト値の異なる値は、いわゆるダーティロジックとして、サブジェクトメッセージスレッドに関連付けられた変更リストに格納されてもよい。一実施形態では、変更リストは、サブジェクトのデータが変更されたあらゆる新しい値とともに、クライアントサブスクリプションデータとしてメモリに格納されてもよい。
【0070】
一実施形態では、サーバ22は、サーバ配列の特定の行のサブジェクトに対して生成部48によって実行された計算を表すデータを、生成部48から受信又は取得し、特定の行のサブジェクトのサブジェクトメッセージスレッドにデータを格納してもよい。例えば、生成部48は、500ミリ秒ごとよりも頻繁にアップデートされる特定の行の市場出来高や最終販売価格等のサブジェクトの夫々の値を使用して、500ミリ秒ごとにサーバ配列の特定の行のサブジェクトivwap(「出来高加重平均価格」)の値を計算し、特定の行のサブジェクトivwapのサブジェクトメッセージスレッドに含める為に、計算された値をサーバ22に提供してもよい。
【0071】
一実施形態では、ブロック410においてサーバ22は、固有のサブスクリプション項目に対するものであるサブジェクトメッセージスレッドの特定のサブジェクトの値を決定する為にデータが利用可能であるかどうかを決定してもよい。例えば、固有のサブスクリプション項目としての、特定のIDに対するサブジェクトの値は、市場データ等の、他のサブジェクト等からのデータ(「外部データ」)を使用する計算に基づいて決定されてもよく、サーバ22は、計算に必要なデータが利用可能であるかどうかを決定してもよい。ブロック410においてサーバ22が、特定のIDについて少なくとも1つのサブジェクトの値を決定する為にデータが利用可能ではないと判定した場合、サーバ22は、ブロック420、430、440、及び450に従って処理を実行してもよい。
【0072】
ブロック420において、サーバ22は、固有のサブスクリプション項目の少なくとも1つのサブジェクトの値を決定する為のデータが利用できない固有のID値を有する固有のサブスクリプション項目の親キーを保留リストに追加してもよい。保留リストに親キーが含まれることは、固有のサブスクリプション項目について、データが取得され、その後、固有のサブスクリプション項目の夫々のサブジェクトメッセージスレッドに含まれる少なくとも1つのサブジェクトの値を決定する為に使用される必要があることを示してもよい。保留リストは、固有のサブスクリプション項目の固有ID値のメタデータとして、又は固有のサブスクリプション項目の固有ID値に関連付けられ、又はクライアントサブスクリプションデータとしてメモリに格納されてもよい。
【0073】
ブロック430において、サーバ22は、保留リスト内の親キーを有する固有のサブスクリプション項目の夫々について、電子タイマーにより期間の計時を制御し、タイマーによって計時されている期間がいつ経過するかを決定してもよい。保留リスト内の親キーを有する固有のサブスクリプション項目の夫々の期間が経過していない場合、サーバ22は、期間が経過するまでタイマーを監視し続けてもよい。サーバが期間が経過したと判断した場合、ブロック430において、サーバ22は、固有のサブスクリプション項目のサブジェクトの値を決定する為に、以前は利用可能でなかった必要なデータが現在利用可能であるかどうかを判断する為のさらなる処理を実行してもよい。更に、サーバ22が、保留リスト内の親キーを有する固有のサブスクリプション項目の少なくとも1つのサブジェクトの値を決定する為に必要なデータが利用可能ではないと決定した場合、サーバ22は、固有のサブスクリプション項目の電子タイマーによる期間の計時を再開してもよい。上述したように、サブジェクトメッセージスレッドのサブジェクトのデータが計算される外部データは、1秒間に数回等、さまざまな速度で提供されるか、又は利用可能になってもよく、外部データに依存するサブジェクトの値は、外部データが利用可能になる速度よりも速い速度又は異なる速度で計算されてもよい。
【0074】
ブロック440では、ブロック430でサブジェクトの値を計算する為に必要なすべてのデータが現在利用可能であると判定された保留リスト上の固有のサブスクリプション項目のサブジェクトについて、サーバ22は、必要なデータを取得し、取得された必要なデータに基づいてサブジェクトの値を計算してもよい。
【0075】
ブロック450において、サーバ22は、固有のサブスクリプション項目の親データサブジェクトに依存する従属データサブジェクトとしてのすべてのサブジェクトの値が決定された場合、固有のサブスクリプション項目の親キーを保留リストから削除してもよい。値を決定する為のデータが利用できないことに基づいて、固有のサブスクリプション項目の少なくとも1つのサブジェクトの値がまだ決定されていない場合、固有のサブスクリプション項目の親キーは保留リストに維持され、処理はブロック430で続行されてもよい。
【0076】
上述したように、保留リストは、値を決定する為に必要なデータがまだ利用可能でないために、少なくとも1つのサブジェクトの値が決定できない固有のサブスクリプション項目を示してもよい。
【0077】
ブロック420、430及び440における処理の一実施形態では、例えば、親サブジェクトデータとしてグーグル(GOOGLE)株式等の金融商品のサブジェクトを有する固有のサブスクリプション項目は、マーケットデータに基づいて計算される従属データとしてサブジェクト「pov」(「出来高取引割合」)を有してもよい。サブジェクトpovは、従属データサブジェクトOrderCalcに依存するように定義されてもよい。サーバ22は、サブジェクトpovの値を決定する為にサブジェクトOrderCalcの値が必要であると判断し、サブジェクトOrderCalcの値の取得を試み、OrderCalcの計算を実行する為に必要な市場データがまだ利用可能ではないことにより、サブジェクトOrderCalcの値が利用可能でないと判断してもよい。この状況では、サーバ22は、サブジェクトpovを決定する為に追加データが必要であるため、メタデータの固有のサブスクリプション項目の固有のID値を不完全なものとしてタグ付けし、固有のID値の親キーを保留リストに追加し、固有のID値のサブジェクトpovに固有の500ミリ秒等の時間の計時を開始してもよい。サーバ22は、固有のID値のサブジェクトpovについて計時されている期間が経過したと判断すると、サブジェクトpovの値がサブジェクトOrderCalcの計算結果を使用して決定される、サブジェクトOrderCalcについて指定された計算に必要な市場データが利用可能であるかどうかを判断してもよい。特に、サーバ22は、OrderCalcの計算を実行する為に必要な全てのデータが利用可能であるかどうか、即ち、OrderCalcの計算に必要な全ての市場データが利用可能であるかどうかを判断し、計算に必要な全てのデータが利用可能である場合にのみ、データが利用可能でない固有のID値に関連付けられた他のサブジェクトが存在しない場合に、サーバ22は、保留リストから固有のID値の親キーを削除してもよい。換言すれば、固有ID値に関する全てのサブジェクトについての値を決定することができる場合に、固有ID値の親キーが保留リストから削除されてもよい。値を決定するのに必要なデータが利用できない固有のID値のサブジェクトが存在する場合、サーバ22は、固有のID値に関連するすべてのサブジェクトについて値が決定されるまで、上述と同様に、ブロック430で処理を続行してもよく、このとき、固有のID値の親キーは、ブロック450で保留リストから削除される。更に、サーバ22は、この固有のID値について、サブジェクトpovの値を決定した後、その値を固有のID値の夫々のサブジェクトメッセージスレッドに追加してもよい。
【0078】
ブロック460において、サーバ22は、サブジェクトメッセージスレッドのサブジェクトに対するスレッドセーフメッセージが以前に生成されていない場合、サブジェクトメッセージスレッドのサブジェクトの現在の値に基づいて、クライアントサブスクリプションに対するサブジェクトメッセージスレッドのサブジェクトに対するスレッドセーフメッセージを生成してもよい。上述したように、サブジェクトの値は、時間計測される期間が最後に満了したときのブロック440における計算、又はブロック410において最後にアップデートされたサブジェクトメッセージスレッドにおけるサブジェクトの値に基づいてもよい。スレッドセーフメッセージは、そのサブジェクトの値が対応するサーバ配列の特定の行識別子、即ち固有のID値、及びブロック430でサブジェクトの期間が最後に経過したときにサブジェクトのデータが計算されたサブジェクトメッセージスレッドの時間又はバージョンを示すメタデータ、及びもしあればサブジェクトの変更リストの情報を示してもよい。
【0079】
一実施形態では、サーバ22は、Java内のオートボクシングを回避する為に、受信メッセージから抽出されたデータを、サブジェクトメッセージスレッドで参照されるサブジェクトの値として、サブジェクトの実際の値がオブジェクトである第1タイプと、実際の値が文字列又は長さにアップスケールできない他のものである第2タイプのメッセージオブジェクトとしてスレッドセーフメッセージに格納してもよい。この実施形態では、サーバ22は、受信メッセージで受信したデータを、異なるメッセージオブジェクトタイプ間、例えばスレッドセーフメッセージ間で容易に移動できてもよく、オートボクシングを回避し、その結果、受信メッセージの内容の元の意味を保持することができる。
【0080】
或いは、ブロック460において、サブジェクトメッセージスレッドのサブジェクトのスレッドセーフメッセージが以前に生成された場合、サーバ22がサブジェクトメッセージスレッドの値のアップデートを検出すると、サーバ22は、スレッドセーフメッセージ内のサブジェクトのデータのみを、サブジェクトメッセージスレッドの現在のアップデート値に変更してもよい。
【0081】
ブロック470において、サーバ22は、スレッドセーフメッセージがクライアントサブスクリプション又は変更されたクライアントサブスクリプションの為に最初に生成されたときに存在し得る、依存データを含まないスレッドセーフメッセージに、静的データであるスレッドセーフメッセージのサブジェクトの為の依存データを追加してもよい。クライアントサブスクリプションの為のスレッドセーフメッセージが既に静的従属データを含む場合、サーバ22はブロック470の処理をスキップし、ブロック480で処理を再開してもよい。スレッドセーフメッセージのサブジェクトの親データによって指定される静的従属データは、スレッドセーフメッセージに対して1回だけ追加されてもよく、サーバ配列の特定の行識別子、即ち固有のID値に対する特定のサブジェクトの値を含んでもよい。一実施形態では、静的従属データには、サーバ配列の特定の行の夫々の他のサブジェクトの値に基づいて決定されたサブジェクトの値が含まれてもよい。例えば、スレッドセーフメッセージのサブジェクトは、クライアントサブスクリプションの固有のサブスクリプション項目の固有のID値に対応する株式グーグル(GOOGLE)の価格であってもよく、スレッドセーフサブジェクトメッセージのデータは、スレッドセーフメッサージの親データサブジェクトと従属データサブジェクトとの間の関係を定義してもよい。例示的なサーバ配列の場合、特定の金融商品(グーグル(GOOGLE)株)は、固有のID値の行識別子を有する特定の行のサブジェクトの値であり、サブジェクト「側」の値の静的従属データを更に含む。
【0082】
例えば、固有のサブスクリプション項目のサブジェクトのスレッドセーフメッセージは、クライアントサブスクリプションのクライアントであるトレーダ(ユーザ)、クライアントが所属し、クライアントサブスクリプションに含まれる団体(ファーム)、及びトレーダが取引するトレーディングデスク(デスク)に対応する値の従属データサブジェクトを含んでもよい。サーバ22は、スレッドセーフメッセージ内のサブジェクトの値のソート及びフィルタリングを可能にする為に、サブジェクト「デスク」等の従属メッセージデータをスレッドセーフメッセージに追加してもよく、その結果、クライアントサブスクリプションの対象となるデータのみがクライアントデバイスに表示されるクライアントビュー配列が生成される。
【0083】
ブロック480において、サーバ22は、スレッドセーフメッセージごとに統一されたデータ形式を得るため、依存データを含むスレッドセーフメッセージの夫々のサブジェクトのデータに対して正規化処理を実行してもよい。サブジェクトのデータが取得され計算される異なる外部ソース46からのデータは、異なるフォーマットである可能性があるため、正規化が実行されてもよい。スレッドセーフメッセージ内のデータのデータ形式の正規化により、クライアントデバイスでクライアントビュー配列として表示する為に、夫々のサブジェクトの値で2次元配列のセルを追加するべく、クライアントデバイスが更なる処理を行わずに、夫々のサブジェクトの値を使用することが可能になってもよい。
【0084】
一実施形態では、正規化されたスレッドセーフメッセージは、サーバ配列の特定の行の夫々のサブジェクトに対するサブジェクトメッセージスレッドの現在のデータ値に基づいて、その作成の順序を示す時間又はバージョン情報を含んでもよい。
【0085】
ブロック490において、サーバ22は、まだ作成されていない場合、クライアントメッセージスレッドを生成し、クライアントサブスクリプションの為の正規化されたスレッドセーフメッセージをクライアントメッセージスレッドに追加してもよい。各正規化されたスレッドセーフメッセージは、特定のクライアントサブスクリプションを示すメタデータ、及び正規化されたスレッドセーフメッセージのサブジェクトの親サブジェクトデータ及び従属サブジェクトデータの関係を記述するメタデータを用いて、クライアントメッセージスレッド内で識別されてもよい。クライアントメッセージスレッドは、特定のクライアントの為の1つ以上のクライアントサブスクリプションの為の正規化されたスレッドセーフメッセージを含んでもよい。更に、クライアントサブスクリプションは、クライアントサブスクリプション内の権限情報に基づいて、複数のユーザが特定のサブジェクトを受信することを許可されているグループサブスクリプションの一部であってもよい。サーバ22は、正規化されたスレッドセーフメッセージが生成されるとすぐに、正規化されたスレッドセーフメッセージをクライアントメッセージスレッドに追加してもよい。クライアントメッセージスレッドは、クライアントサブスクリプションデータとしてメモリ24に保存されてもよい。
【0086】
ブロック500において、サーバ22は、クライアントサブスクリプションに関連付けられた権限情報に従って、クライアントビュー配列に表示する為に、クライアントメッセージスレッド内の特定の正規化されたスレッドセーフメッセージのサブジェクトの値をクライアントに提供するかどうかを決定してもよい。例えば、クライアントサブスクリプションは、複数のユーザを含む団体の為のものであり、ユーザのうちの何れかがクライアントサブスクリプションの下で特定のサブジェクトを受信する権利を有するかを指定する権限情報を含んでもよい。サーバ22が、クライアントメッセージスレッド内の特定の正規化されたスレッドセーフメッセージがクライアントの権限基準を満たすと判断した場合、サーバ22は、正規化されたスレッドセーフメッセージをクライアントメッセージスレッドに残すことを許可してもよい。或いは、サーバ22が、クライアントメッセージスレッド内の特定の正規化されたスレッドセーフメッセージがクライアントの権限基準を満たさないと判断した場合、サーバ22は、クライアントメッセージスレッドから正規化されたスレッドセーフメッセージを削除することによって、クライアントメッセージスレッドをフィルタリングしてもよい。
【0087】
ブロック510において、サーバ22は、クライアントメッセージスレッド内の正規化スレッドセーフメッセージで示されるサーバ配列の特定の行(即ち、固有のID値)のサブジェクトのデータが、正規化スレッドセーフメッセージで識別される特定の行のサブジェクトのデータがクライアントビュー配列に表示する為にクライアントデバイスに提供された前回以降に変更されたかどうかを判定してもよい。一実施形態では、サーバ22は、クライアントメッセージスレッド内の正規化スレッドセーフメッセージから、正規化スレッドセーフメッセージ内のサブジェクトのデータが、クライアントビュー配列内の表示の為にクライアントデバイスに最後に提供されたサーバ配列の特定の行のサブジェクトのデータと異なるかどうかを示す、それに関連付けられた任意の変更リスト情報を抽出してもよい。クライアントビュー配列がクライアントサブスクリプションの為にクライアントデバイスに提供されていない場合、変更リスト情報は、サブジェクトのデータが前回提供されたときとは、サブジェクトのデータが異なることを示す指標と同じ指標を有してもよい。サーバ22は、変更リスト情報が、サブジェクトのデータがサブジェクトの為に前回提供されたときと異なることを示す指標を含むと判定したとき、正規化されたスレッドセーフメッセージがクライアントメッセージスレッドに残ることを許可してもよい。変更リスト情報が、サブジェクトのデータが変更されていないことを示す指標を含む場合、サーバ22は、正規化スレッドセーフメッセージをクライアントメッセージスレッドから削除するため、クライアントメッセージスレッドをフィルタリングしてもよい。
【0088】
ブロック520において、サーバ22は、ブロック500及び510のフィルタリング後のクライアントメッセージスレッドにおけるクライアントサブスクリプションの為の夫々の正規化されたスレッドセーフメッセージのサブジェクトのデータを使用して、クライアントサブスクリプションの為のクライアントサブスクリプションデータの配列(「通知ビュー配列」)を生成し、通知ビュー配列をクライアントサブスクリプションデータとしてメモリ24に格納してもよい。通知ビュー配列は、クライアントデバイスに表示され、クライアントデバイスに実際に表示されるクライアントビュー配列に類似し、クライアントビュー配列を反映する構成を有するであろうクライアントビュー配列のコンパイル済みバージョンを表してもよい。更に、通知ビュー配列は、不要なデータを除去し、サブジェクトのデータを決定し、クライアントビュー配列の構成を定義する集約データを生成する為に、さらなる処理を受けてもよい。
【0089】
ブロック530において、サーバ22は、クライアントサブスクリプションの現在のフィルタ基準に基づいて、通知ビュー配列内のデータをフィルタリング又は構成してもよい。フィルタ基準は、クライアントサブスクリプションを確立するサブスクライブコマンドで指定されてもよいし、サブスクリプションが確立された後にクライアントデバイスを介してクライアントから受信されてもよい。フィルタ基準は、クライアントサブスクリプションのサブジェクトに関連付けられたメタデータ等、クライアントサブスクリプションデータに格納されてもよい。上述したように、フィルタ基準は、特定の行、即ち、クライアントサブスクリプションの下で関連データがサブスクライブされているクライアントサブスクリプションの固有のID値について、通知ビュー配列の列の値又はテキスト等のサブジェクトのデータが、クライアントデバイス上のクライアントビュー配列に表示されるべきかどうかを指定してもよい。特に、フィルタ基準は、特定の行、言い換えれば、クライアントサブスクリプションの固有のID値の行に対応する通知ビュー配列のセルに対するサブジェクトのデータを、通知ビュー配列に残すべきかどうかを指定してもよい。フィルタ基準は、例えば、(i)サブジェクトの値が、指定された値以上、指定された値と等しいか、又は指定された値以下でなければならず、指定された値が指定された論理演算から決定されることを指定する列フィルタ基準、又は(ii)サブジェクトのデータが、特定の、又は特定の構成の、テキスト文字を含まなければならないこと、例えば、特定のテキスト文字が、サブジェクトに対応する通知ビュー配列のセル内のオブジェクト値内の先頭又は指定された位置になければならないことを指定する列フィルタ基準を含んでもよい。サーバ22は、サブジェクトのデータが現在の列フィルタ基準を満たすと判定すると、通知ビュー配列を変更しない。サーバ22は、サブジェクトのデータが現在の列フィルタ基準を満たさないと判定した場合、列フィルタ基準を満たさない行のサブジェクトの値を有する行をそこから削除するように、通知ビュー配列をフィルタリングしてもよい。有効に、列フィルタ基準を使用する通知ビュー配列のフィルタリングは、クライアントデバイスに表示されるクライアントビュー配列がクライアントサブスクリプションの固有ID値に対応する行を含まないように、そこから行を削除してもよい。
【0090】
一実施形態では、ブロック530において、サーバ22は、フィルタ基準で指定された順序で、通知ビュー配列の列をソートしてもよい。例えば、フィルタ基準に基づいて、サーバ22は、列(即ち、サブジェクト)のこの順序がクライアントビュー配列にわたって同一に存在するように、列が左から右に指定された順序で通知ビュー配列にわたって水平に表示されるように、通知ビュー配列のデータを処理してもよい。
【0091】
一実施形態では、フィルタ基準は、通知ビュー配列の夫々の行のサブジェクトの値を集約し、集約された値を通知ビュー配列の新しい行に表示するように指定してもよい。例えば、サーバ22は、フィルタ基準に従って、複数の行を一緒にグループ化し、一緒にグループ化された複数の行のセルの値の累積を有する新しい行を定義するように、通知ビュー配列を構成してもよい。例えば、通知ビュー配列の複数の行のサブジェクト「sharessold」の値は、合計され、通知ビュー配列の別の行のサブジェクトに反映され、ひいては、集約されたトランザクションデータの為のクライアントビュー配列に反映されてもよい。複数の行の列の値は、様々な方法のいずれかで集計され、フィルタリングの一部として、通知ビュー配列の新しい行に含まれてもよいことを理解されたい。有利には、ブロック530におけるフィルタリングは、クライアントサブスクリプションにサービスする為にデバイス10において処理され、メモリに格納されるデータの総量を低減し、クライアントサブスクリプションにサービスするデータをクライアントデバイスに通信する為に必要な帯域幅も低減する為に、通知ビュー配列の行を除去してもよい。更に、クライアントデバイスは、フィルタリングの結果として、より少ない処理及びメモリストレージを使用して、クライアントビュー配列を表示してもよい。
【0092】
ブロック540において、サーバ22は、クライアントサブスクリプション内の特定のサブスクリプション項目についてサブスクライブし、フィルタリングされた通知ビュー配列に現在含まれるサブジェクトについて、サーバ22が電子タイマーで計時している変更期間が経過したか否かを判定してもよい。各サブジェクトの変更期間は、サブジェクトに指定された変更変化率に対応する。例えば、変更変化率が0.5秒に1回の場合、変更期間は0.5秒である。変更期間が経過していない場合、サーバ22は、変更期間が経過するまでタイマーの監視を継続してもよい。変更期間が経過した場合、サーバ22はブロック550の動作を実行してもよい。更に、計時されている変更期間が経過した後、サーバ22は、サブジェクトの電子タイマーによる変更期間の計時を再開してもよい。上述したように、クライアントサブスクリプション内のサブジェクトのデータは、アップデート変化率がサブジェクトに対して指定された変更変化率とは異なる、1秒間に数回等の様々な変化率でアップデートされてもよく、クライアントメッセージスレッドは、時系列順に配置された同じサブジェクトに対する複数のフィルタリングされた正規化スレッドセーフメッセージを含んでもよく、同じサブジェクトに対するフィルタリングされた正規化スレッドセーフメッセージの順序では、同じサブジェクトに対する最新のフィルタリングされた正規化スレッドセーフメッセージが最後である。一実施形態では、クライアントメッセージスレッド内の複数のフィルタリングされた正規化スレッドセーフメッセージ内の固有のID値に対する同じサブジェクトのデータは、フィルタリングされた正規化スレッドセーフメッセージがクライアントメッセージスレッドに追加された時間に基づいて時系列順に、データ構造のスタックのメモリ24に格納されてもよい。
【0093】
一実施形態では、サーバ配列のサブジェクトは、3つ等の複数の異なる変化率を有してもよく、サブジェクトの変化期間のタイミングは、同一である変化期間が同時にタイミングされるように同期されてもよい。このようにして、クライアントビュー配列は、必要に応じて、3つの変化率に対応する3つの異なる間隔でアップデートされてもよい。
【0094】
一実施形態において、変更期間は、サブジェクトに対して設定可能であってもよく、すべての変更期間のタイミングは、クライアントサブスクリプションのサービスが開始されたときに開始されてもよい。
【0095】
ブロック550では、変更期間タイマーが経過した固有のID値の依存データであるサブジェクトについて、サーバ22は、クライアントメッセージスレッド内の同じサブジェクト及び固有のID値に対するフィルタリングされた正規化スレッドセーフメッセージを夫々識別し、例えば識別されたフィルタリングされた正規化スレッドセーフメッセージに関連付けられた、又は識別された正規化スレッドセーフメッセージ内のメタデータから、識別されフィルタリングされた正規化スレッドセーフメッセージから、もしあれば、固有のID値のサブジェクトの、クライアントメッセージスレッドから取得された、又はクライアントビュー配列の一部としてクライアントデバイスに提供された最後の時点以降の、固有のID値のサブジェクトの直近のデータ又は最新のデータを決定してもよい。一実施形態では、固有のID値のサブジェクトに対応するデータ構造のスタックから、サブジェクトの複数の値を取得してもよい。サーバ22は、固有のID値のサブジェクトの最新のデータを、通知ビュー配列の対応する行に保存してもよい。こうして、クライアントメッセージスレッドに現在あるサーバ配列の特定の行のサブジェクトに関するすべてのデータを、クライアントサブスクリプションに従ってクライアントビュー配列として表示する為にクライアントに提供されてもよい、固有のID値のサブジェクトに関する単一の値に合体させる為に、通知ビュー配列をアップデートしてもよい。或いは、クライアントメッセージスレッドが同じサブジェクトのフィルタリングされた正規化スレッドセーフメッセージを含まない場合、通知ビュー配列は同じサブジェクトの為に変更されなくてもよい。
【0096】
ブロック560において、サーバ22は、クライアントサブスクリプションの現在のフィルタリング基準に基づいて、ブロック550において取得されたフィルタリングされた通知ビュー配列内のデータを更にフィルタリングしてもよい。フィルタリングは、ブロック530において説明されたものと同様に実行されてもよい。一実施形態において、ブロック560においてフィルタリングする為に使用されるフィルタリング基準は、ブロック530において実行されたフィルタリングとブロック560において実行されたフィルタリングとの間にクライアントデバイスから受信されたアップデートされたフィルタリング基準に基づいて、ブロック530において使用されたフィルタリング基準と異なってもよい。
【0097】
ブロック570において、サーバ22は、ブロック560の通知ビュー配列を表すバイト配列を生成又は再利用してもよい。クライアントサブスクリプションのパラメータを満たすサブジェクトのすべての値を含む、ブロック560の通知ビュー配列を表すUIメッセージが、クライアントサブスクリプションの為のクライアントデバイスにまだ送信されていないとき、サーバ22は、ブロック560の通知ビュー配列に基づいて、クライアントサブスクリプションの為の最初のバイト配列を生成してもよい。クライアントサブスクリプション(クライアントサブスクリプションが変更されていないと仮定する)の為の別の変更された通知ビュー配列がブロック560で生成されるとき、以前に生成されたものと同じバイト配列が使用され、もしあればブロック560の通知ビュー配列に含まれるサブジェクトの為の変更された値に基づいて適切に変更されてもよい。一実施形態では、例えば、サーバ22が、変更された列フィルタ基準等のフィルタ基準に基づいて、以前に生成された通知ビュー配列から行を除去した場合、以前に生成されたバイト配列の一部が使用されてもよい。従って、クライアントデバイスにおいてクライアントサブスクリプションの為にクライアントビュー配列がまだ表示されていない場合、ブロック560の通知ビュー配列は、現在のフィルタ基準を含むクライアントサブスクリプションのパラメータを満たすサブジェクトのすべての値を含んでもよい。
【0098】
一実施形態では、サーバ22は、バイト配列が、通知ビュー配列を表すUIメッセージがクライアントデバイスに送信されていないか、又は以前に送信されたことがあるクライアントサブスクリプションの為のものであるかどうかを示す為に、バイト配列にメタデータを含めるか、又は修正してもよい。
【0099】
一実施形態では、バイト配列は、ブロック560の最後に生成された通知ビュー配列に存在した固有のサブスクリプション項目に対応する特定の行が、ブロック560の現在生成されている通知ビュー配列に最早存在しないかどうかを示すメタデータを含んでもよい。一実施形態では、バイト配列は、固有のID値毎に、固有のID値、言い換えれば、固有のID値に対するサーバ配列の行がフィルタ基準を最早満たさないかどうかを示すサブジェクトを含んでもよい。
【0100】
一実施形態では、サーバ22は、ブロック560の通知ビュー配列の各行の固有のID値を含むデータ構造としてバイト配列を生成してもよい。サーバ22は、固有のID値を使用して、ランダムアクセスによって、クライアントメッセージスレッドに含まれるサーバ配列に表される夫々のサブジェクトの対応するフィルタリングされた正規化スレッドセーフメッセージから、ブロック560の通知ビュー配列の各行のサブジェクトのデータを取得してもよい。例えば、EquityOrderRecordのサーバ配列の特定の行は、メモリ24においてデータ構造[10,33,199,...]で表されてもよく、このデータ構造を処理するサーバ22は、行識別子「10」に対応する通知ビュー配列の行について、インデックス[33]及び[199]を有する列の通知ビュー配列のセルで示される行のオブジェクト値に動的にアクセスして取得してもよい。そして、サーバ22は、バイト配列に、通知ビュー配列の対応するセル位置で取得されたオブジェクト値を入力してもよく、即ち、固有ID値10を有するバイト配列には、夫々、サブジェクト(列)「側」及び「量」に対応する通知ビュー配列のインデックス[33]及び[199]で取得されたオブジェクト値が入力される。有利に、JSON形式であってもよいバイト配列のこのデータ形式は、通信ネットワークを介して送信され、クライアントデバイスでクライアントビュー配列を生成する為に処理される必要があるデータ量を最小限に抑える。
【0101】
一実施形態では、オブジェクト値がテキストであるサブジェクトは、通信ネットワークを介して送信されるバイト配列を含むUIメッセージのサイズを縮小し、更に、サーバ22及びクライアントデバイスにおいてより少ないメモリリソースの使用を実現する為に、サーバ配列、従ってバイト配列において数値として表されてもよい。例えば、金融トランザクションの側を示すサブジェクトは、UIメッセージのバイト配列に値1又は0が含まれ、夫々サブジェクトが買いか売りかを表してもよい。
【0102】
再び図4を参照すると、ブロック220において、サーバ22は、クライアントビュー配列としてクライアントデバイスに表示する為の、通知ビュー配列内の値を含むブロック570のバイト配列を含むUIメッセージを生成してもよい。
【0103】
ブロック220において、通知ビュー配列がクライアントサブスクリプションの為に最初に生成されるとき、言い換えれば、クライアントビュー配列がデバイス10との間で確立されたクライアントサブスクリプションに基づいてクライアントデバイスにおいてまだ表示されていないとき、サーバ22は、クライアントサブスクリプションの為に最初に生成された通知ビュー配列の値を含むバイト配列を含むスナップショットメッセージとしてUIメッセージを生成してもよい。スナップショットメッセージは、最初に指定されたクライアントサブスクリプションにおいてサブスクライブされたサブジェクトのデータのクライアントビュー配列のクライアントデバイスにおける表示を提供してもよい。一実施形態において、サーバ22は、バイト配列に含まれるメタデータから、特定のクライアントサブスクリプションについて、クライアントビュー配列がまだ表示されていないことを認識し、UIメッセージがクライアントサブスクリプションについての最初のメッセージであることを示すメタデータをスナップショットメッセージに含めてもよい。サーバ22はまた、スナップショットメッセージに、表示されるクライアントビュー配列の行数を示す行メタデータを含めてもよい。行メタデータは、有利には、UIメッセージのデータを処理し、そこからクライアントビュー配列を生成することに関連して、クライアントデバイスにおける処理リソース及びストレージリソースの使用を低減してもよい。
【0104】
一実施形態では、ブロック220においてサーバ22は、特定のクライアントサブスクリプションについて、ブロック215において生成されたバイト配列を含むメタデータから、データが、クライアントサブスクリプションの下で以前に生成された通知ビュー配列に対するアップデートを表すことを認識してもよい。この状況において、ブロック220において、サーバ22は、アップデートメッセージとしてUIメッセージを生成し、バイト配列内のデータがクライアントサブスクリプションの特定のサブジェクトについてのアップデートデータ又は差分データを含むことを示す為のメタデータをアップデートメッセージに含めてもよい。ブロック220のサーバ22は、アップデートされた通知ビュー配列に基づいて新しいバイト配列が生成されるにつれて、クライアントデバイスにおいてクライアントビュー配列のアップデートを行わせる為に、アップデートメッセージを生成及び送信し続けてもよい。
【0105】
一実施形態では、通知ビュー配列のサブジェクト及びサブジェクトの値が変更されないままである場合、ブロック570で生成されたバイト配列は、通知ビュー配列の変更されない状態を示してもよく、ひいては、サーバ22は、クライアントサブスクリプションの為にクライアントデバイスにアップデートメッセージを送信しなくてもよい。
【0106】
一実施形態では、サーバ22は、アップデートメッセージにおいてクライアントビュー配列内のどのサブジェクトがアップデートされるかを識別する為のメタデータをUIメッセージに含めてもよい。
【0107】
更に、ブロック220において、サーバ22は、通信ネットワーク18により、ウェブソケット45を介してクライアントデバイス44にUIメッセージを送信してもよい。
【0108】
一実施形態では、サーバ22は、特定のサブスクリプション・アイテムの従属データを示すUIメッセージを1回だけクライアントデバイスに送信し、その後は、クライアントデバイスに表示されるクライアントビュー配列の値をアップデートする為に、サブスクリプション・アイテムの親データサブジェクトのアップデートされた値を示すUIメッセージを送信するだけでよい。例えば、図6を参照すると、サーバ22は、デバイスID12について、InstrumentTickerのMSFT及びInstrumentNameのマイクロソフト(Microsoft)社の従属データ、ならびに顧客1について、CustomerNameの顧客1及びCustomer LongNameのビル・ゲイツ(Bill Gates)の従属データを示すUIメッセージを、クライアントデバイスに1回だけ送信してもよい。
【0109】
ブロック225において、クライアントデバイス44は、サーバ22からUIメッセージを受信し、UIメッセージ内のバイト配列を使用して、通知ビュー配列の現在のコンテンツ及び構成に対応するクライアントビュー配列を生成し、表示してもよい。一実施形態では、UIメッセージがスナップショットメッセージである場合、クライアントデバイスは、UIメッセージ内のバイト配列に基づいて、バイト配列が生成された通知ビュー配列の同じ構成及びデータを有するクライアントビュー配列を自動的に生成し、表示してもよい。クライアントデバイス44のプロセッサは、メッセージがスナップショットであることを示すメタデータに基づいて、UIメッセージがスナップショットメッセージであると判定し、その結果、処理をより迅速に実行し、処理リソース及びメモリの使用を最小限に抑え、スナップショットメッセージ内のバイト配列に基づいてクライアントビュー配列を表示してもよい。一実施形態では、クライアントデバイス44は、スナップショットメッセージの行メタデータに示された行数を使用して、クライアントビュー配列を生成する為のすべてのデータがデバイス10から受信されたことを確認する為のエラーチェックを実行してもよい。
【0110】
一実施形態では、スナップショットメッセージの受信に基づいて、クライアントデバイス44は、クライアントビュー配列を生成する為に行メタデータによって示される行数を使用して、スナップショットメッセージのバイト配列で示されるオブジェクト値を含むクライアントビュー配列を取引ブロッタ上に自動的に表示してもよい。
【0111】
一実施形態では、アップデートメッセージに含まれる行メタデータに基づいて、クライアントデバイスは、フィルタ基準の変更又は以前と同じフィルタ基準に対するサブジェクトの値の変更の結果である可能性がある、以前表示されたよりも多い又は少ない行等、異なる数の行を含むようにクライアントビュー配列を生成してもよい。例えば、アップデートメッセージの受信に基づいて、クライアントデバイス44は、アップデートメッセージに示されたサブジェクト値を反映するように、クライアントビュー配列の取引ブロッタ上の表示を自動的にアップデートしてもよい。一実施形態では、アップデートメッセージは、固有のID値について、サーバ配列の対応する行がフィルタ基準を満たさなくなり、従って、クライアントビュー配列に表示されないことを示すサブジェクトを含んでもよい。
【0112】
一実施形態では、クライアントデバイス44のプロセッサは、バイト配列内の選択されたサブジェクトの値であって、クライアントデバイスで現在表示されているクライアントビュー配列内の選択されたサブジェクトの値と異なる値に基づいて、クライアントデバイスで表示されているクライアントビュー配列をアップデートするために、バイト配列が1つ以上のサブジェクトの差分データを含むことを示すUIメッセージ内のメタデータに基づいて、より迅速に、より少ない処理リソース及びメモリで処理を実行してもよい。
【0113】
図8を参照すると、クライアントデバイス44は、図8に図示されるようなクライアントビュー配列を表示してもよく、このクライアントビュー配列は、図6に図示されるサーバ配列の夫々のIDの選択されたサブスクライブされたサブジェクトのみを含み、フィルタ基準に基づいてフィルタリングされた後に残る。
【0114】
一実施形態では、ブロック225において、クライアントデバイス44のプロセッサは、UIメッセージのバイト配列内のサブジェクトのフィルタリング及びソートを実行し、クライアントデバイスに表示されるクライアントビュー配列のフォーマット及びコンテンツを制御するため、UIメッセージの従属データを使用してもよい。
【0115】
ブロック230において、サーバ22は、クライアントデバイス44から通信ネットワーク18を介して受信される、サブスクリプション変更要求の為のメッセージを継続的に監視してもよい。変更要求は、クライアントサブスクリプションに対する変更、例えば、既存のサブスクリプション項目に対する異なるフィルタ基準もしくは異なるサブジェクト、又はクライアントサブスクリプションにおける、同じサブジェクトもしくは新しいサブジェクトを有するクライアントサブスクリプションに対する新しいサブスクリプション項目を含んでもよい。サーバ22は、サブスクリプション変更要求が受信されたと判断した場合、サブスクリプション変更要求によって変更されたクライアントサブスクリプションの為のブロック210から開始し、上記のこれらのブロックの説明と一致するブロック212、215、220及び230から開始するプロセス200の動作を実行してもよい。
【0116】
一実施形態では、サーバ22は、相関ID値を使用して、サブスクリプション変更要求の受信に基づくクライアントサブスクリプションのアップデート記録を保持し、相関ID値をクライアントサブスクリプションデータに格納してもよい。サーバ22は、サブスクライブしているサブジェクトのパラメータを変更するサブスクリプション変更要求に続いて、サブスクライブしているサブジェクトのメタデータとして相関ID値を関連付け、サブスクライブしているサブジェクトの相関ID値をインクリメントしてもよい。サーバ22から送信されるUIメッセージは、相関ID値のメタデータを含んでもよい。UIメッセージ内の相関ID値のメタデータに基づいて、クライアントデバイスは、UIメッセージが、クライアントサブスクリプションのアップデート前又はアップデート後のサーバ22による処理からのデータを含むかどうかを決定し、最もアップデートされたクライアントサブスクリプションのみを反映するように、クライアントビュー配列におけるUIメッセージからのデータの表示を制御してもよい。状況によっては、処理の待ち時間の為に、クライアントサブスクリプションがクライアント要求に基づいてデバイス10でアップデートされたとしても、例えば、クライアントサブスクリプション内のサブスクライブされたサブジェクトの相関ID値が以前の値1から値2にアップデートされたとしても、サーバ22は、相関ID値1を有するUIメッセージを送信してもよい。この状況では、クライアントデバイスは、サブスクライブされるサブジェクトに対する現在の相関ID値の記録を維持し、相関ID値1を有するサブスクライブされるサブジェクトのUIメッセージにおけるデータを無視し、相関ID値2を有するサブスクライブされるサブジェクトに対するUIメッセージにおけるデータのみを処理してもよい。このように、クライアントデバイスは、クライアントサブスクリプションの変更後のUIメッセージに含まれるオブジェクト値の表示を制御し、アップデートされたクライアントサブスクリプションのサブスクリプションデータを反映しないUIメッセージ内のオブジェクト値を無視してもよい。
【0117】
クライアントは、例えば図9に示されるように、デバイスによって提供されるサブスクリプションデータの夫々のクライアントビュー配列がクライアントデバイスに表示されるように、デバイスとの複数の独立したサブスクリプションを有してもよいことに留意されたい。一実施形態では、クライアントデバイスは、1つ以上のウェブソケットにリンクされてもよく、各ウェブソケットは、1つ以上のクライアントビュー配列を表示する。
【0118】
一実施形態では、サブスクリプション項目のサブジェクトの従属データは、クライアントデバイス44でサブジェクトに追加されてもよい。
【0119】
一実施形態では、サーバ22は、通信ネットワーク18を介して、クライアントデバイス44から、サブスクリプションの削除要求を示すメッセージを受信してもよい。サブスクリプションの削除要求に基づいて、サーバ22は、クライアントサブスクリプションの為のUIメッセージの送信を停止し、要求によって示されるクライアントサブスクリプションを削除してもよい。
【0120】
一実施形態では、特定のサブジェクトのデータは、リアルタイムで第1変化率で変化してもよく、サーバ22は、対応するサブジェクトメッセージスレッドで受信されたデータをリアルタイムで第2変化率で格納してもよく、第2変化率は第1変化率より小さい。一実施形態では、サーバ22は、変化率であり第2変化率未満である第3変化率で、クライアントサブスクリプションに従ってクライアントデバイスのクライアントビュー配列におけるサブジェクトのアップデートされたオブジェクト値の表示を提供してもよい。
【0121】
本明細書における開示は、特定の例を参照して説明されてきたが、これらの例は、本開示の原理を単に例示するものであることを理解されたい。従って、添付の特許請求の範囲によって定義される本開示の精神及び範囲から逸脱することなく、例に対して多数の変更がなされてもよいこと、及び他の配置が考案されてもよいことが理解される。更に、特定の工程が添付図面において特定の順序で示されているが、そのような順序が本明細書において明示的に規定されない限り、そのような工程はいかなる特定の順序にも限定されない。むしろ、様々な工程を異なる順序で、又は同時に処理することができ、工程を省略又は追加することができる。
図1
図2
図3
図4
図5A
図5B
図5C
図6
図7
図8
図9
【国際調査報告】