(57)【要約】      （修正有）【課題】ネットワーク通信用のメッセージを調整するため、受信者のプリファレンスに基づいてカスタマイズされた情報更新を効率的に提供するシステム及び方法を提供する。【解決手段】受信者は、システムが更新を生成する頻度よりも低い頻度で更新を受信すること及び／又は更新内に異なるデータレベルを受信することを希望する。更新メッセージが提供されるレートの調整をより効率的に行うことを可能にするサブスクリプション制御モジュールを使用する。また、更新メッセージの内容の調整をより効率的に行うために分割技術を利用する。更新メッセージのレートおよびコンテンツの調整をより効率的に行うことを可能にする分割技術と組み合わせてデルタスナップ技術に組み合わされる。【選択図】図３
2020074221.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイスによって、第１の時刻におけるデータソースの状態を表す第１のスナップショットメッセージを生成するステップ、
コンピューティングデバイスによって、第１のスナップショットメッセージを第１の受信部に送信するステップ、
コンピューティングデバイスによって、第１の時刻におけるデータソースの状態と第２の時刻におけるデータソースの状態の差を表す第１のデルタスナップメッセージを生成するステップ、
コンピューティングデバイスによって、第１のデルタスナップメッセージを第１の受信部に送信するステップ、
を含む、方法。
【請求項２】
さらに、
コンピューティングデバイスによって、第１の時刻におけるデータソースの状態と第３の時刻におけるデータソースの状態の差を表す第２のデルタスナップメッセージを生成するステップ、
コンピューティングデバイスによって、第２のデルタスナップメッセージを第１の受信部に送信するステップ、
を含む、請求項１に記載の方法。
【請求項３】
第１のデルタスナップは、１つ又は複数のアクションを含み、第２の時刻におけるデータソースの状態が反映されるように、第１のスナップショットメッセージの修正を第１の受信部に命じる、請求項１に記載の方法。
【請求項４】
第１のスナップショットメッセージは、複数のデータレベルで構成され、データレベルのそれぞれは、データソースから提供されるデータの詳細レベルを特定するものである、請求項１に記載の方法。
【請求項５】
複数のデータレベルは、重要度の高い順に配置される、請求項４に記載の方法。
【請求項６】
第１のデルタスナップは、複数のデータレベルで構成されるとともに、データレベルのそれぞれに対する１つ又は複数のアクションを含み、当該アクションは、第２の時刻におけるデータソースの状態が反映されるように、それぞれのデータレベルの修正を第１の受信部に命じるものである、請求項４に記載の方法。
【請求項７】
さらに、
第１の受信部に第１のデルタスナップメッセージを送信する前に、コンピューティングデバイスによって、第２の時刻と第３の時刻の差が、第１の受信部によって特定される更新インターバルよりも大きいかどうかを決定するステップ、
第１の時刻と第２の時刻の差が更新レートよりも大きい場合に、コンピューティングデバイスによって、第１のデルタスナップメッセージを第１の受信部に送信するステップ、
を含む、請求項１に記載の方法。
【請求項８】
データソースは、取引可能オブジェクトに関する市場であり、第１の受信部は、第１の電子取引デバイスである、請求項１に記載の方法。
【請求項９】
実行可能な命令を有するコンピュータ読み取り可能媒体であって、
命令は少なくとも以下のステップを機械に実行させる、
第１の時刻におけるデータソースの状態を表す第１のスナップショットメッセージを生成するステップ、
第１のスナップショットメッセージを第１の受信部に送信するステップ、
第１の時刻におけるデータソースの状態と第２の時刻におけるデータソースの状態の差を表す第１のデルタスナップメッセージを生成するステップ、
第１のデルタスナップメッセージを第１の受信部に送信するステップ、
コンピュータ読み取り可能媒体。
【請求項１０】
命令はさらに、
第１の時刻におけるデータソースの状態と第３の時刻におけるデータソースの状態の差を表す第２のデルタスナップメッセージを生成するステップ、
第２のデルタスナップメッセージを第１の受信部に送信するステップ、
を機械に実行させる、請求項９に記載のコンピュータ読み取り可能媒体。
【請求項１１】
第１のデルタスナップは、１つ又は複数のアクションを含み、第２の時刻におけるデータソースの状態が反映されるように、第１のスナップショットメッセージの修正を第１の受信部に命じる、請求項９に記載のコンピュータ読み取り可能媒体。
【請求項１２】
第１のスナップショットメッセージは、複数のデータレベルで構成され、データレベルのそれぞれは、データソースからのデータの詳細レベルを特定するものである、請求項９に記載のコンピュータ読み取り可能媒体。
【請求項１３】
複数のデータレベルは、重要度の高い順に配置される、請求項１２に記載のコンピュータ読み取り可能媒体。
【請求項１４】
第１のデルタスナップは、複数のデータレベルで構成され、第１のデルタスナップは、データレベルのそれぞれに対する１つ又は複数のアクションを含み、当該アクションは、第２の時刻におけるデータソースの状態が反映されるように、それぞれのデータレベルの修正を第１の受信部に命じるものである、請求項１２に記載のコンピュータ読み取り可能媒体。
【請求項１５】
命令はさらに、
第１の受信部に第１のデルタスナップメッセージが送信される前に、第２の時刻と第３の時刻の差が、第１の受信部によって特定される更新インターバルよりも大きいかどうかを決定するステップ、
第１の時刻と第２の時刻の差が更新レートよりも大きい場合に、第１のデルタスナップメッセージを第１の受信部に送信するステップ、
を機械に実行させる、請求項９に記載のコンピュータ読み取り可能媒体。
【請求項１６】
データソースは、取引可能オブジェクトに関する市場であり、第１の受信部は、第１の取引デバイスである、請求項９に記載のコンピュータ読み取り可能媒体。
【請求項１７】
データフォーマット部と、メッセージ送信部と、を備えるシステムであって、
データフォーマット部は、
第１の時刻におけるデータソースの状態を表す第１のスナップショットメッセージを生成するステップ、
第１の時刻におけるデータソースの状態と第２の時刻におけるデータソースの状態の差を表す第１のデルタスナップメッセージを生成するステップ、を実行し、
メッセージ送信部は、
第１のスナップショットメッセージを第１の受信部に送信するステップ、
第１のデルタスナップメッセージを第１の受信部に送信するステップ、を実行する、
システム。
【請求項１８】
データフォーマット部はさらに、第１の時刻におけるデータソースの状態と第３の時刻におけるデータソースの状態の差を表す第２のデルタスナップメッセージを生成するステップを実行し、
メッセージ送信部は、第２のデルタスナップメッセージを第１の受信部に送信するステップをさらに実行する、
請求項１７に記載のシステム。
【請求項１９】
第１のデルタスナップは、１つ又は複数のアクションを含み、第２の時刻におけるデータソースの状態が反映されるように、第１のスナップショットメッセージの修正を第１の受信部に命じる、請求項１７に記載のシステム。
【請求項２０】
第１のスナップショットメッセージは、複数のデータレベルで構成され、データレベルのそれぞれは、データソースからのデータの詳細レベルを特定するものである、請求項１７に記載のシステム。
【請求項２１】
複数のデータレベルは、重要度の高い順に配置される、請求項２０に記載のシステム。
【請求項２２】
第１のデルタスナップは、複数のデータレベルで構成され、第１のデルタスナップは、データレベルのそれぞれに対する１つ又は複数のアクションを含み、当該アクションは、第２の時刻におけるデータソースの状態が反映されるように、それぞれのデータレベルの修正を第１の受信部に命じるものである、請求項２０に記載のシステム。
【請求項２３】
メッセージ送信部はさらに、
第１の受信部に第１のデルタスナップメッセージを送信する前に、第２の時刻と第３の時刻の差が、第１の受信部によって特定される更新インターバルよりも大きいかどうかを決定するステップ、
第１の時刻と第２の時刻の差が更新レートよりも大きい場合に、第１のデルタスナップメッセージを第１の受信部に送信するステップ、
を実行する、請求項１７に記載のシステム。
【請求項２４】
データソースは、取引可能オブジェクトに関する市場であり、第１の受信部は、第１の取引デバイスである、請求項１７に記載のシステム。
【請求項２５】
コンピューティングデバイスによって、第１の時刻におけるデータソースの状態を表す第１のスナップショットメッセージを生成するステップ、
コンピューティングデバイスによって、第１のスナップショットメッセージを第１の受信部に送信するステップ、
コンピューティングデバイスによって、第１のスナップショットメッセージを第２の受信部に送信するステップ、
コンピューティングデバイスによって、第１の時刻におけるデータソースの状態と第２の時刻におけるデータソースの状態の差を表す第１のデルタスナップメッセージを生成するステップ、
コンピューティングデバイスによって、第１のデルタスナップメッセージを第１の受信部に送信するステップ、
コンピューティングデバイスによって、第１の時刻におけるデータソースの状態と第３の時刻におけるデータソースの状態の差を表す第２のデルタスナップメッセージを生成するステップ、
コンピューティングデバイスによって、第２のデルタスナップメッセージを第１の受信部に送信するステップ、
コンピューティングデバイスによって、第２のデルタスナップメッセージを第２の受信部に送信するステップ、
を含む、方法。
【請求項２６】
第１のスナップショットメッセージを第１の受信部に送信するステップはさらに、第１の受信部によって特定される第１のプリファレンスに基づいて第１のスナップショットメッセージを調整するステップを含み、
第１のデルタスナップメッセージを第１の受信部に送信するステップはさらに、第１のプリファレンスに基づいて第１のデルタスナップメッセージを調整するステップを含む、
請求項２５に記載の方法。
【請求項２７】
第１のスナップショットメッセージを生成するステップはさらに、第１の時刻におけるデータソースの状態を複数の第１のデータレベルで構成するステップを含み、
それぞれのデータレベルは、データソースからのデータの詳細レベルを特定するものである、請求項２５に記載の方法。
【請求項２８】
第１のデルタスナップメッセージを生成するステップはさらに、
第２の時刻におけるデータソースの状態を複数の第２のデータレベルで構成するステップ、
第１のデータレベルと第２のデータレベルの差を決定するステップ、
第１のデルタスナップメッセージに含める１つ又は複数のアクションを生成するステップ、ここで、当該アクションは、第１のデータレベルと第２のデータレベルの差に基づく、
を含む、請求項２７に記載の方法。
【請求項２９】
アクションは、第２の時刻におけるデータソースの状態が反映されるように、１つ又は複数の第１のデータレベルの修正を第１の受信部に命じるものである、請求項２８に記載の方法。
【請求項３０】
アクションは、追加アクション、一番上に追加アクション、相対追加アクション、値修正アクション、全修正アクション、削除アクション、変更無しアクションを含むグループから選択される、請求項２８に記載の方法。
【請求項３１】
実行可能な命令を有するコンピュータ読み取り可能媒体であって、
命令は少なくとも以下のステップを機械に実行させる、
第１の時刻におけるデータソースの状態を表す第１のスナップショットメッセージを生成するステップ、
第１のスナップショットメッセージを第１の受信部に送信するステップ、
第１のスナップショットメッセージを第２の受信部に送信するステップ、
第１の時刻におけるデータソースの状態と第２の時刻におけるデータソースの状態の差を表す第１のデルタスナップメッセージを生成するステップ、
第１のデルタスナップメッセージを第１の受信部に送信するステップ、
第１の時刻におけるデータソースの状態と第３の時刻におけるデータソースの状態の差を表す第２のデルタスナップメッセージを生成するステップ、
第２のデルタスナップメッセージを第１の受信部に送信するステップ、
第２のデルタスナップメッセージを第２の受信部に送信するステップ、
コンピュータ読み取り可能媒体。
【請求項３２】
命令はさらに、
第１の受信部によって特定される第１のプリファレンスに基づいて第１のスナップショットメッセージを調整するステップ、
第１のプリファレンスに基づいて第１のデルタスナップメッセージを調整するステップ、
を機械に実行させる、請求項３１に記載のコンピュータ読み取り可能媒体。
【請求項３３】
第１のスナップショットメッセージを生成するために、命令はさらに、
第１の時刻におけるデータソースの状態を複数の第１のデータレベルで構成するステップを含み、
それぞれのデータレベルは、データソースからのデータの詳細レベルを特定するものである、請求項３１に記載のコンピュータ読み取り可能媒体。
【請求項３４】
命令はさらに、
第２の時刻におけるデータソースの状態を複数の第２のデータレベルで構成するステップ、
第１のデータレベルと第２のデータレベルの差を決定するステップ、
第１のデルタスナップメッセージに含める１つ又は複数のアクションを生成するステップ、ここで、当該アクションは、第１のデータレベルと第２のデータレベルの差に基づく、
を含む、請求項３３に記載のコンピュータ読み取り可能媒体。
【請求項３５】
アクションは、第２の時刻におけるデータソースの状態が反映されるように、１つ又は複数の第１のデータレベルの修正を第１の受信部に命じるものである、請求項３４に記載のコンピュータ読み取り可能媒体。
【請求項３６】
アクションは、追加アクション、一番上に追加アクション、相対追加アクション、値修正アクション、全修正アクション、削除アクション、変更無しアクションを含むグループから選択される、請求項３４に記載のコンピュータ読み取り可能媒体。
【請求項３７】
コンピューティングデバイスによって、第１のバッファ内にスナップショットメッセージを生成するステップ、
コンピューティングデバイスによって、第１のバッファからの第１のスナップショットメッセージを第１の受信部に送信するステップ、
コンピューティングデバイスによって、第１のバッファからの第２のスナップショットメッセージを第２の受信部に送信するステップ、
コンピューティングデバイスによって、第２のバッファ内にデルタスナップメッセージを生成するステップ、
コンピューティングデバイスによって、第２のバッファからの第１のデルタスナップメッセージを第１の受信部に送信するステップ、
コンピューティングデバイスによって、第２のバッファからの第２のデルタスナップメッセージを第２の受信部に送信するステップ、
を含む、方法。
【請求項３８】
スナップショットメッセージを生成するステップはさらに、
スナップショットメッセージを第１のデータレベルと第２のデータレベルで構成するステップ、
を含む、請求項３７に記載の方法。
【請求項３９】
第１のデータレベルは、第２のデータレベルによって表されるデータよりも高い頻度でリクエストされたデータソースからのデータを表す、請求項３８に記載の方法。
【請求項４０】
第１のスナップショットメッセージは第１のデータレベルを含み、第２のスナップショットメッセージは第１および第２のデータレベルを含む、請求項３８に記載の方法。
【請求項４１】
第２のデルタスナップメッセージは、第２のバッファ内におけるデルタスナップメッセージの第１の部分であり、第２のデルタスナップメッセージは、第２のバッファ内におけるデルタスナップメッセージの第２の部分である、
請求項３７に記載の方法。
【請求項４２】
さらに、第１のバッファ内におけるスナップショットメッセージの後に第１の分割可能テーブルを生成するステップを含む、ここで、第１の分割可能テーブルは、スナップショットメッセージにおける第１の分割可能位置および第２の分割可能位置を示すものである、
請求項３７に記載の方法。
【請求項４３】
第１のスナップショットメッセージは、第１の分割可能位置までのスナップショットメッセージを含み、第２のスナップショットメッセージは、第２の分割可能位置までのスナップショットメッセージを含む、
請求項４２に記載の方法。
【請求項４４】
実行可能な命令を有するコンピュータ読み取り可能媒体であって、
命令は少なくとも以下のステップを機械に実行させる、
第１のバッファ内にスナップショットメッセージを生成するステップ、
第１のバッファからの第１のスナップショットメッセージを第１の受信部に送信するステップ、
第１のバッファからの第２のスナップショットメッセージを第２の受信部に送信するステップ、
第２のバッファ内にデルタスナップメッセージを生成するステップ、
第２のバッファからの第１のデルタスナップメッセージを第１の受信部に送信するステップ、
第２のバッファからの第２のデルタスナップメッセージを第２の受信部に送信するステップ、
コンピュータ読み取り可能媒体。
【請求項４５】
スナップショットメッセージを生成するために、命令はさらに、
スナップショットメッセージを第１のデータレベルと第２のデータレベルで構成するステップ、
を機械に実行させる、請求項４４に記載のコンピュータ読み取り可能媒体。
【請求項４６】
第１のデータレベルは、第２のデータレベルによって表されるデータよりも高い頻度でリクエストされたデータソースからのデータを表す、請求項４５に記載のコンピュータ読み取り可能媒体。
【請求項４７】
第１のスナップショットメッセージは第１のデータレベルを含み、第２のスナップショットメッセージは第１および第２のデータレベルを含む、請求項４５に記載のコンピュータ読み取り可能媒体。
【請求項４８】
第２のデルタスナップメッセージは、第２のバッファ内におけるデルタスナップメッセージの第１の部分であり、第２のデルタスナップメッセージは、第２のバッファ内におけるデルタスナップメッセージの第２の部分である、
請求項４４に記載のコンピュータ読み取り可能媒体。
【請求項４９】
さらに、第１のバッファ内におけるスナップショットメッセージの後に第１の分割可能テーブルを生成するステップ、ここで、第１の分割可能テーブルは、スナップショットメッセージにおける第１の分割可能位置および第２の分割可能位置を示すものである、
を機械に実行させる、請求項４４に記載のコンピュータ読み取り可能媒体。
【請求項５０】
第１のスナップショットメッセージは、第１の分割可能位置までのスナップショットメッセージを含み、第２のスナップショットメッセージは、第２の分割可能位置までのスナップショットメッセージを含む、
請求項４９に記載の方法。
【請求項５１】
コンピューティングデバイスによって、第１の時刻に取得されたデータの第１のセットを表す第１のスナップショットを生成するステップ、
コンピューティングデバイスによって、第１のスナップショットの第１のバージョンを第１の加入デバイスに送信するステップ、ここで、当該第１のバージョンは、第１の加入デバイスの第１のプリファレンスに基づいて調整される、
コンピューティングデバイスによって、データの第１のセットと第２のセットの差を表す第１のデルタスナップを生成するステップ、ここで、当該第２のセットは、第１の時刻の後の第２の時刻に生成されたデータを表す、
コンピューティングデバイスによって、第１のデルタスナップの第１のバージョンを第１の加入デバイスに送信するステップ、ここで、当該第１のバージョンは、第１の加入デバイスの第１のプリファレンスに基づいて調整される、
を含む、方法。
【請求項５２】
コンピューティングデバイスによって、データの第１のセットと第３のセットの差を表す第２のデルタスナップを生成するステップ、ここで、データの第３のセットは、第１の時刻および第２の時刻の後の第３の時刻に生成されたデータを表す、
コンピューティングデバイスによって、第２のデルタスナップの第１のバージョンを第１の加入デバイスに送信するステップ、ここで、当該第１のバージョンは、第１の加入デバイスの第１のプリファレンスに基づいて調整される、
請求項５１に記載の方法。
【請求項５３】
データの第１のセットは、電子取引所から第１の時刻に受信した第１の市場更新を表し、データの第２のセットは、電子取引所から第２の時刻に受信した第２の市場更新を表し、第１および第２の市場更新は、ある取引可能オブジェクトに関するものである、
請求項５１に記載の方法。
【請求項５４】
コンピューティングデバイスによって、第１のスナップショットの第２のバージョンを第２の加入デバイスに送信するステップ、ここで、当該第２のバージョンは、第２の加入デバイスの第２のプリファレンスに基づいて調整される、
コンピューティングデバイスによって、第１のデルタスナップの第２のバージョンを第２の加入デバイスに送信するステップ、ここで、当該第２のバージョンは、第２の加入デバイスの第２のプリファレンスに基づいて調整される、
請求項５１に記載の方法。
【請求項５５】
データの第１のセットを表す第１のスナップショットを生成するステップは、データの第１のセットを第１のスナップショットの分割可能部分を表す複数のデータレベルに分割するステップを含む、
請求項５１に記載の方法。
【請求項５６】
複数のデータレベルは、重要度レベルで並べられる、
請求項５５に記載の方法。
【請求項５７】
第１の加入デバイスの第１のプリファレンスによって定義される第１のスナップショットにおけるデータの第１のセットの１つ又は複数のセグメントを送信することによって、第１のスナップショットが調整される、
請求項５５に記載の方法。
【請求項５８】
実行可能な命令を有するコンピュータ読み取り可能媒体であって、
命令は少なくとも以下のステップを機械に実行させる、
第１の時刻に取得されたデータの第１のセットを表す第１のスナップショットを生成するステップ、
第１のスナップショットの第１のバージョンを第１の加入デバイスに送信するステップ、ここで、当該第１のバージョンは、第１の加入デバイスの第１のプリファレンスに基づいて調整される、
データの第１のセットと第２のセットの差を表す第１のデルタスナップを生成するステップ、ここで、当該第２のセットは、第１の時刻の後の第２の時刻に生成されたデータを表す、
第１のデルタスナップの第１のバージョンを第１の加入デバイスに送信するステップ、ここで、当該第１のバージョンは、第１の加入デバイスの第１のプリファレンスに基づいて調整される、
コンピュータ読み取り可能媒体。
【請求項５９】
命令はさらに、
データの第１のセットと第３のセットの差を表す第２のデルタスナップを生成するステップ、ここで、データの第３のセットは、第１の時刻および第２の時刻の後の第３の時刻に生成されたデータを表す、
第２のデルタスナップの第１のバージョンを第１の加入デバイスに送信するステップ、ここで、当該第１のバージョンは、第１の加入デバイスの第１のプリファレンスに基づいて調整される、
を機械に実行させる、請求項５８に記載のコンピュータ読み取り可能媒体。
【請求項６０】
データの第１のセットは、電子取引所から第１の時刻に受信した第１の市場更新を表し、データの第２のセットは、電子取引所から第２の時刻に受信した第２の市場更新を表し、第１および第２の市場更新は、ある取引可能オブジェクトに関するものである、
請求項５８に記載のコンピュータ読み取り可能媒体。
【請求項６１】
第１のスナップショットの第２のバージョンを第２の加入デバイスに送信するステップ、ここで、当該第２のバージョンは、第２の加入デバイスの第２のプリファレンスに基づいて調整される、
第１のデルタスナップの第２のバージョンを第２の加入デバイスに送信するステップ、ここで、当該第２のバージョンは、第２の加入デバイスの第２のプリファレンスに基づいて調整される、
請求項５８に記載のコンピュータ読み取り可能媒体。
【請求項６２】
データの第１のセットを表す第１のスナップショットを生成するために、命令はさらに、
データの第１のセットを第１のスナップショットの分割可能部分を表す複数のデータレベルに分割するステップ、
を機械に実行させる、請求項５８に記載のコンピュータ読み取り可能媒体。
【請求項６３】
複数のデータレベルは、重要度レベルで並べられる、
請求項６２に記載のコンピュータ読み取り可能媒体。
【請求項６４】
第１の加入デバイスの第１のプリファレンスによって定義される第１のスナップショットにおけるデータの第１のセットの１つ又は複数のセグメントを送信することによって、第１のスナップショットが調整される、
請求項６２に記載のコンピュータ読み取り可能媒体。
【請求項６５】
コンピューティングデバイスによって、第１の時刻におけるデータセットの第１の状態を表す第１のスナップショットを生成するステップ、
第１のスナップショットを第１の加入デバイスおよび第２の加入デバイスに送信するステップ、
複数のデルタスナップを生成するステップ、ここで、デルタスナップのそれぞれは、第１の時刻におけるデータセットの第１の状態と、第１の時刻の次の時間におけるデータセットの次の状態との差を表す、
複数のデルタスナップにおける第１の部分を、第１の合成レートに対応する第１の加入デバイスに送信するステップ、
複数のデルタスナップにおける第２の部分を、第２の合成レートに対応する第２の加入デバイスに送信するステップ、
を含む、方法。
【請求項６６】
第１の合成レートは、第２の合成レートと異なる、
請求項６５に記載の方法。
【請求項６７】
さらに、
複数のデルタスナップにおける第１の部分を第１の加入デバイスに送信する前に、当該第１の部分を第１の加入デバイスによって定義される第１のプリファレンスに基づいて調整するステップ、
複数のデルタスナップにおける第２の部分を第２の加入デバイスに送信する前に、当該第２の部分を第２の加入デバイスによって定義される第２のプリファレンスに基づいて調整するステップ、
を含む、請求項６５に記載の方法。
【請求項６８】
第１のプリファレンスは、第２のプリファレンスと異なる、
請求項６７に記載の方法。
【請求項６９】
複数のデルタスナップにおける第１の部分を調整するステップはさらに、第１の加入デバイスの第１のプリファレンスに基づいて第１の部分の切り捨てを行うステップを含み、
複数のデルタスナップにおける第２の部分を調整するステップはさらに、第２の加入デバイスの第２のプリファレンスに基づいて第２の部分の切り捨てを行うステップを含む、
請求項６７に記載の方法。
【請求項７０】
さらに、
第３の加入デバイスとの接続が検知されたときに、第１のスナップショットの第３の部分を第３の加入デバイスに送信するステップ、
複数のデルタスナップのうちの直近の１つにおける第３の部分を第３の加入デバイスに送信するステップ、
を含む、請求項６５に記載の方法。
【請求項７１】
実行可能な命令を有するコンピュータ読み取り可能媒体であって、
命令は少なくとも以下のステップを機械に実行させる、
第１の時刻に取得されたデータの第１のセットを表す第１のスナップショットを生成するステップ、
第１のスナップショットの第１のバージョンを第１の加入デバイスに送信するステップ、ここで、当該第１のバージョンは、第１の加入デバイスの第１のプリファレンスに基づいて調整される、
データの第１のセットと第２のセットの差を表す第１のデルタスナップを生成するステップ、ここで、当該第２のセットは、第１の時刻の後の第２の時刻に生成されたデータを表す、
第１のデルタスナップの第１のバージョンを第１の加入デバイスに送信するステップ、ここで、当該第１のバージョンは、第１の加入デバイスの第１のプリファレンスに基づいて調整される、
コンピュータ読み取り可能媒体。
【請求項７２】
データの第１のセットと第３のセットの差を表す第２のデルタスナップを生成するステップ、ここで、データの第３のセットは、第１の時刻および第２の時刻の後の第３の時刻に生成されたデータを表す、
第２のデルタスナップの第１のバージョンを第１の加入デバイスに送信するステップ、ここで、当該第１のバージョンは、第１の加入デバイスの第１のプリファレンスに基づいて調整される、
請求項７１に記載のコンピュータ読み取り可能媒体。
【請求項７３】
データの第１のセットは、電子取引所から第１の時刻に受信した第１の市場更新を表し、データの第２のセットは、電子取引所から第２の時刻に受信した第２の市場更新を表し、第１および第２の市場更新は、ある取引可能オブジェクトに関するものである、
請求項７１に記載のコンピュータ読み取り可能媒体。
【請求項７４】
第１のスナップショットの第２のバージョンを第２の加入デバイスに送信するステップ、ここで、当該第２のバージョンは、第２の加入デバイスの第２のプリファレンスに基づいて調整される、
第１のデルタスナップの第２のバージョンを第２の加入デバイスに送信するステップ、ここで、当該第２のバージョンは、第２の加入デバイスの第２のプリファレンスに基づいて調整される、
請求項７１に記載のコンピュータ読み取り可能媒体。
【請求項７５】
データの第１のセットを表す第１のスナップショットを生成するステップは、データの第１のセットを、第１のセットの分割可能部分を表す複数のデータレベルに分割するステップを含む、
請求項７１に記載のコンピュータ読み取り可能媒体。
【請求項７６】
第１の加入デバイスの第１のプリファレンスによって定義される第１のスナップショットにおけるデータの第１のセットの１つ又は複数のセグメントを送信することによって、第１のスナップショットが調整される、
請求項７５に記載のコンピュータ読み取り可能媒体。
【請求項７７】
命令はさらに、
データの第１のセットと第３のセットの差を表す第２のデルタスナップを生成するステップ、ここで、第３のセットは、第１の時刻および第２の時刻の後の第３の時刻に生成されたデータを表す、
第３の時刻と第２の時刻の差が第１の加入デバイスの第１の合成レートを満たすかどうかを決定するステップ、
第３の時刻と第２の時刻の差が第１の合成レートを満たす場合、第２のデルタスナップの第１のバージョンを第１の加入デバイスに送信するステップ、ここで、当該第１のバージョンは、第１の加入デバイスの第１のプリファレンスに基づいて調整される、
を機械に実行させる、請求項７１に記載のコンピュータ読み取り可能媒体。
【発明の詳細な説明】
【関連出願の参照】
【０００１】
本願は、２０１４年７月１１日に出願された「調整済みメッセ−ジング」と題する米国特許出願第１４／３２９６０２号、２０１３年７月１２日に出願された「電子取引環境における複数のデバイス間で市場データを動的に配信するシステムおよび方法」と題する米国仮特許出願第６１／８４５６１３号、および、２０１４年７月１０日に出願された「電子取引環境における複数のデバイス間で市場データを動的に配信するシステムおよび方法」と題する米国仮特許出願第６２／０２２７３６号に基づく優先権を主張するものである。これらの米国出願のそれぞれの内容全体が参照により全ての目的のために本明細書に組み込まれる。
【技術分野】
【０００２】
本開示は、調整済みメッセージングに関する。
【背景技術】
【０００３】
電子デバイスは、例えばデバイスの状態に関する最新情報を提供するために、データメッセージを交換する。システムによっては、複数の受信者は、データソースからの更新を受信することを希望する。これらの更新を特定の種類のネットワークにて提供するために、ブロードキャスト又はマルチキャストメッセージングなどの技術がデータソースによって使用される。その他のシステムでは、例えばネットワークの制約、通信プリファレンス（例えば、配信の信頼度、順番）および／又はセキュリティ要件などにより、受信者は、ポイント・ツー・ポイント接続を使用してデータソースと通信する。
【０００４】
一部の受信者は、同じデータソースから異なる速度で更新を受信することを希望する。受信者への望まれないメッセージの送信を最小限に抑えながら、異なる速度で更新を提供することにより、ブロードキャスト又はマルチキャストメッセージング技術の有用性が制限され、また、異なる更新レートのプリファレンスを有する受信者の数が増加するため、ポイント・ツー・ポイント接続がより効果的になる。しかしながら、ポイント・ツー・ポイント接続では、受信者ごとにメッセージを生成する必要がある。さらに、一部の受信者は、データの異なるレベル又は階層をそれらの更新にて受信することを希望する。データの異なるレベル又は階層に基づいてメッセージをカスタマイズする場合、それぞれのレベル又は階層ごとに異なるメッセージを生成する必要がある。異なるプリファレンスを持つ受信者の数が成長するにつれて、異なる更新レート並びに異なるレベル又は階層を収容することが、特にデータを受信する際のレイテンシーの増加が許容できない時間制約の強い情報について面倒なものとなる。
【０００５】
以下の図面を参照しながら実施形態が開示される。
【図面の簡単な説明】
【０００６】
【図１】ある実施形態を実施可能な例示的なコンピューティングデバイスのブロック図
【図２】調整済みメッセージを１つ又は複数の受信デバイスに送信するための例示的なシステムのブロック図
【図３】スナップショットおよびデルタスナップを１つ又は複数の受信デバイスに送信するために使用される例示的なサブスクリプション制御モジュールのブロック図
【図４】スナップショット技術を使用する例を示すデータフロー図
【図５】デルタ技術を使用する例を示すデータフロー図
【図６】デルタスナップ技術を使用する例を示すデータフロー図
【図７Ａ】データレベルの例を示すブロック図
【図７Ｂ】データレベルの例を示すブロック図
【図８Ａ】スナップショットおよびデルタスナップに基づく調整済みメッセージの例を示すブロック図
【図８Ｂ】スナップショットおよびデルタスナップに基づく調整済みメッセージの例を示すブロック図
【図９】調整済みデルタスナップ技術を使用する例を示すデータフロー図
【図１０】バッファ内の調整可能メッセージの例を示す図
【図１１】受信デバイスとサブスクリプション制御モジュールの間の接続を示すデータフロー図
【図１２】図２、図３のサブスクリプション制御モジュールを実装するために実行可能な機械読み取り可能命令を表す方法のフロー図
【図１３】図３のデータフォーマット部を実装するために実行可能な機械読み取り可能命令を表す方法のフロー図
【図１４】図３のデータフォーマット部を実装するために実行可能な機械読み取り可能命令を表す方法のフロー図
【図１５】図３のメッセージ送信部を実装するために実行可能な機械読み取り可能命令を表す方法のフロー図
【図１６】図３のメッセージ送信部を実装するために実行可能な機械読み取り可能命令を表す方法のフロー図
【図１７】図３のメッセージ送信部を実装するために実行可能な機械読み取り可能命令を表す方法のフロー図
【図１８】実施形態を採用可能な電子取引システムのブロック図
【図１９】実施形態を採用可能な電子取引システムのブロック図
【図２０Ａ】市場深度における多くの数のデータレベルで市場データを提供するために、スナップショットおよびデルタスナップのための調整可能メッセージの例を示す図
【図２０Ｂ】市場深度における多くの数のデータレベルで市場データを提供するために、スナップショットおよびデルタスナップのための調整可能メッセージの例を示す図
【発明を実施するための形態】
【０００７】
ある実施形態は、例を示すものとして提供される図面と併せて読むことでより良く理解される。しかしながら、実施形態は、添付の図面に示した配置や手段に限定されないものと理解すべきである。
【０００８】
開示される実施形態は一般的に、ネットワーク通信用のメッセージを調整するための技術に関する。より具体的には、開示の実施形態は、受信者のプリファレンス（preference）に基づいてカスタマイズされた情報更新を効率的に提供するシステムおよび方法に関する。受信者は例えば、システムが更新を生成する頻度よりも低い頻度で更新を受信することを希望する、および／又は、更新内に異なるデータレベルを受信することを希望する。実施形態によっては、更新メッセージが提供されるレートの調整をより効率的に行うことを可能にするデルタスナップ技術が提供される。実施形態によっては、更新メッセージの内容の調整をより効率的に行うことを可能にする分割技術が提供される。実施形態によっては、更新メッセージのレートおよびコンテンツの調整をより効率的に行うことを可能にする分割技術と組み合わせてデルタスナップ技術が提供される。
【０００９】
データメッセージは、様々な状況で受信者に情報を提供する。一部の受信者は、他の受信者とは異なるレートで更新情報を受信することを希望する。第１の受信者は例えば、１ミリ秒ごとに１回を上限とするレートのような第１のレート（更新が生成されるレートであってもよい）。第２の受信者は、帯域幅の制約のため、１秒ごとに２回のような低いレートでの更新の送信を希望する。第３の受信者は、帯域幅の制約のため、古いデータを受信したり接続リセットによる大きなギャップを経験することのない、どのようなレートでも可能な更新を確実に受信することを望む。さらに、システムによっては、データソースは、更新内にデータの異なるレベル又は階層を提供する。例えば、それぞれの連続的なレベルは、前のレベルで提供される詳細を超えるより詳細な又は追加の情報を示す値を含む。一部の受信者は、データソースからの更新内に異なる数のデータレベルを受信することを希望する。例えば、第１の受信者は、最初の５つのレベルの値に関する更新を受信することを希望する。第２の受信者は、最初の２つのレベルの値の更新を受信することを希望する。異なるレベルのデータを提供するために、メッセージは受信者のプリファレンスに応じて調整される。現在のシステムでは、異なる更新レートおよび／又は異なる数のデータレベルなどの受信者のプリファレンスを収容するために、それぞれの受信者用のソースデータに基づいて固有のメッセージをフォーマットする必要がある。
【００１０】
発明の詳細な説明は、コンポーネントの中でも特にハードウェア上で実行されるソフトウェアを含む実施形態を開示するが、これらの実施形態は単なる例示であり、限定的なものとして解釈すべきではない。例えば、これらのハードウェアおよびソフトウェアのコンポーネントのいずれか又は全てが、ハードウェアにて独占的に、ソフトウェアにて独占的に、ファームウェアにて独占的に、又は、ハードウェア、ソフトウェアおよび／又はファームウェアの任意の組み合わせにて、実装されてもよい。したがって、実施形態は他の方法により実施実現される。
【００１１】
Ｉ．実施形態に関する簡単な説明
ネットワーク通信用のメッセージを調整するための例示的な方法、システムおよびコンピュータ読み取り可能媒体が開示される。メッセージを調整するための例示的な方法は、コンピューティングデバイスによって、第１の時点でのデータソースの状態を表す第１のスナップショットメッセージ（snapshot message）を生成するステップを含む。第１のスナップショットメッセージは第１の受信者に送信される。例示的な方法は、コンピューティングデバイスによって、第１の時刻におけるデータソースの状態と第２の時刻におけるデータソースの状態の差を表す第１のデルタスナップメッセージ（deltasnap message）を生成するステップと、コンピューティングデバイスによって、第１のデルタスナップメッセージを第１の受信部に送信するステップとを含む。
【００１２】
例示的な方法は、コンピューティングデバイスによって、第１の時刻に取得されたデータの第１のセットを表す第１のスナップショットを生成するステップを含む。方法はさらに、コンピューティングデバイスによって、第１のスナップショットの第１のバージョンを第１の加入デバイスに送信するステップを含む。ここで、当該第１のバージョンは、第１の加入デバイスの第１のプリファレンスに基づいて調整される。方法はさらに、コンピューティングデバイスによって、データの第１のセットと第２のセットの差を表す第１のデルタスナップを生成するステップを含む。ここで、当該第２のセットは、第１の時刻の後の第２の時刻に生成されたデータを表す。方法はさらに、コンピューティングデバイスによって、第１のデルタスナップの第１のバージョンを第１の加入デバイスに送信するステップを含む。ここで、当該第１のバージョンは、第１の加入デバイスの第１のプリファレンスに基づいて調整される。
【００１３】
例示的なコンピュータ読み取り可能記憶媒体は、実行されたときに少なくとも以下のステップを機械に実行させる命令を有する。具体的には、第１の時点でのデータソースの状態を表す第１のスナップショットメッセージを生成するステップが含まれる。さらに、第１のスナップショットメッセージを第１の受信者に送信するステップが含まれる。さらに、第１の時刻におけるデータソースの状態と第２の時刻におけるデータソースの状態の差を表す第１のデルタスナップメッセージを生成するステップが含まれる。さらに、第１のデルタスナップメッセージを第１の受信部に送信するステップが含まれる。
【００１４】
ＩＩ．コンピューティングデバイスの例示
図１は、ある実施形態を実施するために使用可能な例示的なコンピューティングデバイス１００のブロック図を示す。コンピューティングデバイス１００は、通信ネットワーク１１０と、プロセッサ１１２と、メモリ１１４と、インタフェース１１６と、入力デバイス１１８と、出力デバイス１２０とを含む。コンピューティングデバイス１００は、付加的な、異なる、又はより少ない数のコンポーネントを含んでもよい。例えば、複数の通信ネットワーク、複数のプロセッサ、複数のメモリ、複数のインタフェース、複数の入力デバイス、複数の出力デバイス、又はそれらの任意の組み合わせが設けられてもよい。別の例として、コンピューティングデバイス１００は、入力デバイス１１８や出力デバイス１２０を含まなくてもよい。
【００１５】
図１に示すように、コンピューティングデバイス１００は、通信ネットワーク１１０に接続されたプロセッサ１１２を含む。通信ネットワーク１１０は、コンピューティングデバイス１００内のコンポーネント間におけるデータ通信のために、通信バス、チャネル、電気的若しくは光学的なネットワーク、回路、スイッチ、ファブリック、又はその他の機構を含んでもよい。通信ネットワーク１１０は、コンピューティングデバイス１００内における任意のコンポーネント間での通信を可能に接続され、データを転送する。
【００１６】
プロセッサ１１２は、任意の適切なプロセッサ、処理ユニット、又はマイクロプロセッサであってもよい。プロセッサ１１２には例えば、１つ又は複数の一般的なプロセッサ、デジタルシグナルプロセッサ、特定用途向け集積回路、フィールドプログラマブルゲートアレイ、アナログ回路、デジタル回路、プログラムされたプロセッサ、および／又はそれらの組合せが含まれる。プロセッサ１１２は、ネットワーク又は分散処理に関連付けられた１つ又は複数のデバイスのような、単一のデバイス又はデバイスの組み合わせであってもよい。任意の処理ストラテジーとしては、多重プロセッシング、マルチタスキング、並列処理および／又はリモート処理を使用してもよい。処理は、ローカル又はリモートであってもよく、また―１つのプロセッサから別のプロセッサへ移動してもよい。ある実施形態では、コンピューティングデバイス１００は、マルチプロセッサシステムであり、通信ネットワーク１１０に通信可能に接続される１つ又は複数の付加的なプロセッサを含み得る。
【００１７】
プロセッサ１１２は、メモリ１１４のような１つ又は複数の有形媒体内にエンコードされたロジックやその他のコンピュータ読み取り可能な命令を実行するように動作可能であってもよい。本明細書で使用される１つ又は複数の有体媒体にエンコードされたロジックには、プロセッサ１１２又は異なるプロセッサによって実行可能な命令が含まれる。ロジックは、例えば、ソフトウェア、ハードウェア、集積回路、ファームウェア、および／又はマイクロコードの一部として記憶されてもよい。ロジックは、ネットワーク１４０などの通信ネットワークを介して外部の通信デバイスから受信されてもよい。プロセッサ１１２は、図面に示された又は本明細書に記載された機能、動作、又はタスクを実現するためのロジックを実行してもよい。
【００１８】
メモリ１１４は、例えば、コンピュータ読み取り可能記憶媒体のような１つ又は複数の有形媒体であってもよい。コンピュータ読み取り可能な記憶媒体には、例えば、ランダムアクセスメモリ、読み出し専用メモリ、プログラマブル読み出し専用メモリ、電気的プログラマブル読み出し専用メモリ、電気的消去可能読み出し専用メモリ、フラッシュメモリ、これらの任意の組み合わせ、又はその他の任意の有形データ記憶デバイスを含む、様々なタイプの揮発性および不揮発性の記憶媒体が含まれてもよい。本明細書で使用する非一時的又は有形のコンピュータ読み取り可能媒体は、任意のタイプのコンピュータ読み取り可能媒体を含むが伝搬信号を除外するものとして明示的に定義される。メモリ１１４には、ハードディスクドライブ、光学メディア、磁気テープ又はディスクなどを含む、任意の所望のタイプの大容量記憶デバイスが含まれる。
【００１９】
メモリ１１４は、１つ又は複数のメモリデバイスを含んでもよい。例えば、メモリ１１４には、ローカルメモリ、大容量記憶デバイス、揮発性メモリ、不揮発性メモリ、又はそれらの組み合わせが含まれてもよい。メモリ１１４は、遠隔プロセッサ１１２に対して、その近傍に配置され、その一部として設けられ、それにプログラムされ、それとネットワーク化され、および／又はそれからリモートな場所にあってもよく、これより、メモリ１１４に記憶されたデータは、例えば、プロセッサ１１２によって読みだされて処理されてもよい。メモリ１１４は、プロセッサ１１２によって実行可能な命令を記憶してもよい。命令は、本明細書に記載された又は図面に示された動作又は機能の１つ又は複数を実現するように実行されてもよい。
【００２０】
メモリ１１４は、開示の技術を実行するためのアプリケーション１３０を記憶してもよい。ある実施形態では、アプリケーション１３０は、異なる場所からアクセス可能である、又は異なる場所に記憶される。プロセッサ１１２は、メモリ１１４に記憶されたアプリケーション１３０にアクセスして、アプリケーション１３０に含まれるコンピュータ読み取り可能命令を実行してもよい。
【００２１】
ある実施形態では、インストールプロセスの間に、アプリケーションが、入力デバイス１１８および／又はネットワーク１４０からメモリ１１４に転送されてもよい。コンピューティングデバイス１００が取引アプリケーション１３０を実行中、又は実行する準備をしているとき、プロセッサ１１２は、通信ネットワーク１３０を介してメモリ１１４から命令を読みだしてもよい。
【００２２】
ＩＩＩ．サブスクリプション制御モジュール
図２は、例示的なシステム２００を示し、システム２００は、サブスクリプション制御モジュール２０１と、データソース２０２とを備える。図示の例では、データソース２０２は、サブスクリプション制御モジュール２０１にデータを提供する。サブスクリプション制御モジュール２０１は例えば、データソース２０２によって送信されるとき、（例えば、設定された時間間隔で）定期的に、更新が検出されたとき、および／又はトリガイベントに応じて、データを受信および／又は他の方法で取得する。サブスクリプション制御モジュール２０１は、データを調整済みメッセージに変換する。調整済みメッセージ２０４は、通信リンク（例えば、ポイント・ツー・ポイント接続、ユニキャストチャネル、伝送制御プロトコル（ＴＣＰ）ソケット、ＷｅｂＳｏｃｋｅｔ接続など）を介して、１つ又は複数の受信デバイス２０６（例えば、スマートフォン、タブレット、サーバ、パーソナルコンピュータなど）に送信される。受信デバイスに関して１つ又は複数のプリファレンスが定義される（例えば、更新レート、データレベルの数など）。場合によっては、電子デバイス２０６は、プリファレンスをサブスクリプション制御モジュール２０１に伝える。例えば、１００ミリ秒ごとに更新を生成するサブスクリプション制御モジュール２０１に対して、受信部２０６は、５００ミリ秒ごとの頻繁でのみ更新を受信するプリファレンスを設定する。場合によっては、電子デバイス２０６に関するプリファレンスは、サブスクリプション制御モジュール２０１によって決定される。サブスクリプション制御モジュール２０１は例えば、電子デバイス２０６との接続処理時のレイテンシーに基づいて、更新レートを１秒に対して３データレベルのみと設定する。場合によっては、サブスクリプション制御モジュール２０１は、ネットワークリンクのスループットに基づいて、更新レートを調整する。例えば、以前の更新がまだ送信されている場合に、サブスクリプション制御モジュール２０１は、次の更新の送信を遅らせる。このような例では、より最近の更新が遅延中に発生した場合、サブスクリプション制御モジュール２０１は、当該より最近の更新を代わりに送信することができる。サブスクリプション制御モジュール２０１は、ネットワーク（例えば、インターネット、広域ネットワークなど）を通じて、有線および／又は無線接続（例えば、ケーブル／ＤＳＬ／衛星接続、セルラー接続、ロング・ターム・エボリューション（ＬＴＥ）接続など）を介して受信部２０６と通信する。
【００２３】
図３は、図２のサブスクリプション制御モジュール２０１の一例を示す図である。サブスクリプション制御モジュール２０１は、データソース２０２からデータを受信および／又は他の方法で取得し、１つ又は複数の電子デバイス２０６に調整済みメッセージ（例えば、図２に示す調整済みメッセージ２０４）を送信する。図示の例におけるサブスクリプション制御モジュール２０１は、データソース受信部３０２と、データフォーマット部３０４と、一次バッファ３０６と、二次バッファ３０８と、メッセージ送信部３１０とを備える。データソース受信部３０２は、データソース２０２からデータを受信および／又は他の方法で取得する。
【００２４】
図３に示す例では、データソース２０２は動的に更新する（例えば、新しい情報が入手可能になったときに応じて非同期的に、あるいは、一定の休止期間に応じて定期的に更新する）。データを受信および処理して受信部２０４にメッセージを送信するために、データソース受信部３０２は、データソース２０２の状態を（例えば、図３のデータソース受信部３０２を介して）離散的な時点で取得する。場合によっては、データソース受信部３０２は、データソース２０２がその状態の変更について更新を提供するときに、データソース２０２の状態を取得する。場合によっては、データソース受信部３０２は、設定された時間間隔でデータソース２０２の状態を取得する（例えば、データソースが頻繁に更新する場合）。例えば、データソース受信部３０２は、データソース２０２の状態を１００ミリ秒ごとに取得する。場合によっては、データソース受信部３０２は、更新を検出することに応じて、データソース２０２の状態を取得する（例えば、データソースが散発的に更新する場合）。データソース受信部３０２は、基本更新レートを確立することができる。基本更新レートは、サブスクリプション制御モジュール２０１が受信デバイス２０６に利用可能な更新を生成する速度である。場合によっては、基本更新レートは定期的に確立される（例えば、データソース２０２が頻繁に更新するとき等）。場合によっては、基本更新レートは、不規則な間隔で確立される（例えば、データソース２０２の更新頻度が低いとき等）。場合によっては、データソース２０２の変化の頻度に応じて基本更新レートが変化する。
【００２５】
図３の例では、データフォーマット部３０４は、データソース２０２からのデータをフォーマットする（例えば、整理、翻訳、標準化、体系化する）。データフォーマット部３０４は、一次バッファ３０６および／又は二次バッファ３０８に記憶されるように、データを調整済みメッセージに変換する。一次バッファ３０６および／又は二次バッファ３０８は、データフォーマット部３０４によってフォーマットされたデータを記憶する。場合によっては、一次バッファ３０６および／又は二次バッファ３０８に記憶されたデータは、データフォーマット部３０４によってアクセスされ、データソース２０２からの後続のデータと比較される。一次バッファ３０６は例えば、調整可能なスナップショットメッセージを含む。データフォーマット部３０４は次に、以下でより詳細に説明する技術を利用して、データ受信部３０２からのデータを一次バッファ３０６における調整可能なスナップショットメッセージと比較することで、二次バッファ３０８における調整可能なデルタスナップメッセージを生成することができる。
【００２６】
図示の例では、メッセージ送信部３１０は、１つ又は複数の受信側電子デバイス２０６との接続を管理する。メッセージ送信部３１０は、一次バッファ３０６および／又は二次バッファ３０８に記憶されている調整可能メッセージを使用して、データを調整済みメッセージ２０４として受信側電子デバイス２０６に送信する。場合によっては、メッセージ送信部３１０は、受信側電子デバイス２０６からプリファレンスを受信する。プリファレンスは例えば、更新レートに関するプリファレンスおよび／又はデータのレベルの数に関するプリファレンスを含む。そのような例では、メッセージ送信部３１０は、一次バッファ３０６および／又は二次バッファ３０８に記憶されている調整可能メッセージを、受信したプリファレンスに基づいて、受信部側電子デバイス２０６に送信するために調整する。調整可能メッセージを調整するために、メッセージ送信部３１０は、受信したプリファレンスに基づいて、調整可能メッセージのうちのどの部分を送信するか（例えば、バイト数で）を計算する。例えば、調整可能メッセージが１００バイトである場合、メッセージ送信部３１０は、受信したプリファレンスに基づいて、最初の５６バイトのみを受信側電子デバイス２０６に送信することを計算する。この方法では、メッセージを受信部ごとに再変換する必要がない。データフォーマット部３０４は、調整可能メッセージを省略した形で送信可能とするようにフォーマットする。場合によっては、受信側電子デバイス２０６との接続が混雑していることをメッセージ送信部３１０が検知したときに、メッセージ送信部３１０は、デバイス２０６へのメッセージを遅延又は廃棄する。
【００２７】
ＩＶ．データソース更新の通信に関する現在の技術
データソースの状態の変化を更新するための現在の技術には、スナップショットおよびデルタが含まれ、これらに関する例示的な技術が以下にさらに記載されている。
【００２８】
Ａ．スナップショット技術
スナップショットは、特定の時点におけるデータソースの状態を表すものである。スナップショットは、受信デバイスに更新を通信するために使用することができる。例示的なスナップショット技術は、それぞれの更新に関するスナップショットメッセージを１つ又は複数の受信デバイスに送信することによって、データソースの状態を通信する。スナップショット技術は、特定の時点におけるデータソース全体の状態を受信部に送信するため、時刻ｔにおけるデータソースの状態は、以下の式（１）に示すように判断することができる。
式（１）：現在の状態（ｔ）＝Ｓｔ
Ｓｔは、時刻ｔの直近に送信されたスナップショットを表す。
【００２９】
図４は、離散的時間（例えば、時刻Ｔ０、時刻Ｔ１、時刻Ｔ２）におけるデータソースに関する第１の状態４００ａ、第２の状態４００ｂおよび第３の状態４００ｃを含むスナップショット技術の使用例を示すデータフローである。図４の例では、第１の状態４００ａは、時刻Ｔ０で取得される。第１の状態４００ａは、スナップショットＳ０にフォーマットされ、バッファに記憶される。スナップショットＳ０は、受信部に送信される。時刻Ｔ１において、第２の状態４００ｂが取得され、スナップショットＳ１にフォーマットされ、受信部に送信される。時刻Ｔ２において、データ４００ｃが取得され、スナップショットＳ２にフォーマットされ、受信部に送信される。
【００３０】
スナップショットは、データソースの現在の状態を知るために必要なデータの全てを含むため、スナップショットを逃すことによる影響を（例えば、次の更新を待つことなどによって）低減又は最小化することができる。しかしながら、データソースからのデータはインターバルとインターバルの間ではわずかに変化するのみであるため、スナップショットを送信することは、貴重なデータ帯域幅を不必要に使用することとなりうる。その結果、頻繁に更新するデータソースからメッセージを受信する受信部、あるいは、多くの異なるデータソースからメッセージを受信する受信部、および／又は、限られた帯域幅を有する受信部（例えば、セルラーネットワーク接続を使用するモバイルデバイスなど）において、メッセージの混雑および／又は損失が生じうる。
【００３１】
Ｂ．デルタ技術
デルタは、データソースの直近の状態と現在の状態の差を表す。直近の状態は、介在する全てのデルタによって調整された最新のスナップショットである。デルタ技術は、受信デバイスに更新を通信するために、１つ又は複数のデルタで区切られた定期的なスナップショットを使用する。例示的なデルタ技術は、スナップショットを受信部へ周期的に（例えば、設定された時間間隔で）および／又は非周期的に（例えば、特定の数の更新の後に）送信することによって、データソースの状態を通信する。スナップショット同士の間では、デルタは、定期的および／又は非周期的に受信部に送信される。したがって、時刻ｔにおけるデータソースの現在の状態は、以下の式（２）に示すように決定することができる。
式（２）：現在の状態（ｔ）＝ＳＲ＋Δ１＋Δ２＋・・・＋Δｔ
ＳＲは、時刻ｔの直近に送信されたスナップショットであり、Δ１−Δｔは、直近のスナップショット以降に送信されたデルタである。
【００３２】
図５は、時刻Ｔ０、時刻Ｔ１、時刻Ｔ２におけるデータソース２０２に関する第１の状態４００ａ、第２の状態４００ｂおよび第３の状態４００ｃを含む例示的なデルタ技術を示すデータフローである。図５の例では、時刻Ｔ０において、第１の状態４００ａが取得され、スナップショットＳ０にフォーマットされ、受信部に送信される。時刻Ｔ１において、第２の状態４００ｂが取得され、第１の状態４００ａと比較される。デルタΔ１は、例えば「差」に基づいて生成される。デルタΔ１はその後、受信部に送信される。時刻Ｔ２において、第３の状態４００ｃが取得され、第２の状態４００ｂと比較され、その差に基づいてデルタΔ２を生成する。デルタΔ２はその後、受信部に送信される。図４に示す例では、デルタ（例えば、デルタΔ１およびデルタΔ２）は、命令５００（例えば、追加（Ａ）、変更（Ｃ）、削除（Ｒ））と、どの部分のデータを変更するかを示すインデックス５０２と、データをどのように変更するかを示す値５０４（例えば、値１、値２）とを含む。例えば、デルタは、インデックス１における値（値１、値２）を（０、-５０）によって変更（Ｃ）することを受信部に命令する。場合によっては、スナップショット（例えば、スナップショットＳ０）は、スナップショットとしてフラグが設定され、命令５００を含まない。
【００３３】
デルタ技術によれば、スナップショット同士の間において、更新のうち変更された部分のみが受信部に通信されるため、帯域幅の使用量を削減することができる。しかしながら、デルタは更新のうちの一部のみを通信するものであるため、（例えば、混雑、接続中断、メッセージ損失などにより）デルタがタイムリーに受信されない場合には、受信部のデータはエラーになる、あるいは、新たなスナップショットが送信されるまで受信部は待機する必要がある。これにより、それまでに受信した後続の全てのデルタを無視する必要がある。
【００３４】
Ｖ．デルタスナップ技術およびメッセージレート調整
ある実施形態は、本明細書でデルタスナップ技術と呼ぶ技術を使用して、データソース（例えば、データソース２０２）の状態を１つ又は複数の受信部のデバイス（例えば、１つ又は複数の電子デバイス２０６）へ通信する改善された方法を提供する。デルタスナップ技術は、スナップショット技術と比較して帯域幅をより効果的に利用することができ、また、デルタ技術と比較してデータ損失に対するより高い復元力をもたらす。さらに、デルタスナップ技術によれば、スナップショット技術のみを使用して送信される冗長データを低減するとともに、デルタ技術に必要な複雑性およびストレージを低減しながら、効率的なメッセージレートおよび調整レベルの数を提供する。
【００３５】
デルタスナップは、受信部（例えば、図２、図３の受信部２０６）に送信されるデータソースの現在の状態と、更新に含まれる予定のデータソース（例えば、図２、図３のデータソース２０２）の現在の状態との間の差を表す。例示的なデルタスナップ技術は、スナップショットを受信部へ定期的におよび／又は非定期的に（例えば、設定された時間間隔で、特定の数の更新の後、トリガ条件により）送信することにより、データソースの状態を通信する。スナップショットは、全ての受信部に送信される。さらに、最新のスナップショットは、新しい接続に応じて送信される。好ましくは、スナップショットは、スナップショットの信頼性の高い配信を保証する通信技術を使用して送信される。スナップショットは例えば、上述したスナップショット技術と同様の方法で生成することができる。また、スナップショット同士の間で、一般的に１つ又は複数のデルタスナップが生成される。デルタスナップは、基本更新レートで生成することができる（例えば、データソース２０２が図２、図３のサブスクリプション制御モジュール２０１へ更新を提供するレートで、あるいは、受信部２０６による少なくとも共通の複数の更新レートプリファレンスにより）。場合によっては、受信デバイス２０６は、基本更新レートよりも少ない頻度の更新レートでデルタスナップの受信を予約することができる。例えば、サブスクリプション制御モジュール２０１の基本更新レートが２５ミリ秒である場合、受信部は、１００ミリ秒間隔でデルタスナップを受信することを希望する場合がある（すなわち、基本更新レート又はそれよりも早いレートで更新が生じる場合に、４番目のデルタスナップごとに）。デルタスナップは、直近に送信されたスナップショットに関して実行される一方で、直近に送信されたデルタによって表される状態に関しては実行されない点を除いて、上述したデルタ技術におけるデルタと同様の方法で生成することができる。デルタスナップが生成されているとき、前のスナップショットからの変化の範囲によって、デルタスナップの表示はそれと同等のスナップショットよりも大きくなる可能性がある。このような状況では、実施形態によっては、デルタスナップの生成は破棄され、代わりに、新たなスナップショットが生成されて送信される。デルタスナップ技術を用いて、時刻ｔにおけるデータソース２０２の状態を、以下の式（３）に示すように決定することができる。
式（３）：現在の状態（ｔ）=ＳＲ＋ΔＳｔ
ＳＲは、時間ｔの直近に送信されたスナップショットであり、ΔＳｔは時刻ｔの直近に送信されたデルタスナップである。
【００３６】
図６は、時刻Ｔ０、時刻Ｔ１、時刻Ｔ２におけるデータソース２０２に関する第１の状態４００ａ、第２の状態４００ｂおよび第３の状態４００ｃを含む例示的なデルタ技術を示すデータフローである。図６に示す例では、第１の状態４００ａは、データソース受信部３０２（図３）によって取得され、データフォーマット部３０６（図３）によってスナップショットＳ０にフォーマットされ、一次バッファ３０６（図３）に配置される。メッセージ送信部３１０（図３）は、スナップショットＳ０を受信部２０６（図３）に送信する。時刻Ｔ１において、第２の状態４００ｂは、データソース受信部３０２によって取得される。図示の例では、データフォーマット部３０４は、一次バッファ３０６内のスナップショットＳ０を第２の状態４００ｂと比較する。その差に基づいて、データフォーマット部３０４は、デルタスナップΔＳ１を生成する。デルタスナップΔＳ１は、二次バッファ３１０（図３）に記憶される。デルタスナップΔＳ１はその後、それぞれの受信部の更新レートのプリファレンスに応じて、メッセージ送信部３１０によって受信部２０６に送信される。
【００３７】
図６の例に示すように、時刻Ｔ２において、データソース受信部３０２は、データソース２０２の第３の状態４００ｃを取得する。データフォーマット部３０４は、一次バッファ３０６に記憶されているスナップショットＳ０を第３の状態４００ｃと比較し、その差に基づいてデルタスナップΔＳ２を生成する。デルタスナップΔＳ２は、二次バッファ３０８に記憶される。デルタスナップΔＳ２はその後、それぞれの受信部の更新レートのプリファレンスに応じて、メッセージ送信部３１０によって受信部２０６に送信される。図６に示す例では、デルタスナップΔＳ１、ΔＳ２は、アクション６００、データのどの部分に影響するかを示す６０２、および／又は、値６０４（例えば、値１、値２）の変更とともに生成される。
【００３８】
デルタスナップは、最後のスナップショット以降に発生したデータソース２０２におけるデータへの１つ又は複数の更新に関する情報を含むため、デルタスナップ技術によれば、多数の基本更新レートにおける異なる更新レートプリファレンスを有する受信部２０６に更新を送信することが可能となる。例えば、スナップショットが２分ごとに生成され、デルタスナップがスナップショット間において毎秒生成される場合、第１の受信部は、デルタスナップを５秒ごとに受信するプリファレンスを設定し、第２の受信部は、デルタスナップを１０秒ごとに受信するプリファレンスを設定してもよい。各スナップショットは、全ての受信部に送信される。デルタスナップが生成されると、設定されたプリファレンスに応じて、受信部に送信される。このように、それぞれの受信部には全てのデルタスナップは送信されない。デルタスナップは直近に送信されたスナップショットに関する変更を表すため、特定の受信部は、データソースの最新の更新を決定するために、全てのデルタスナップを受信する必要はない。
【００３９】
デルタスナップは、データソース２０２の更新に関する情報の一部を含むため、デルタスナップ技術はスナップショット技術に比べて一般的に、必要とする帯域幅が少ない。
【００４０】
場合によっては、デルタスナップ技術は、デルタ技術よりも多くの帯域幅を必要とする。例えば、データソース２０２が変更され、その後しばらく変更されない場合、デルタスナップは繰り返しの変更を含むが、デルタは変更を含まない。しかしながら、デルタスナップ技術を使用すれば、デルタ技術と比較して、データソースに加入（subscribe）することおよび失われたメッセージから回復することは管理が容易である。例えば、受信デバイス２０６はデルタスナップ技術を用いて、スナップショット間のサブスクリプション制御モジュール２０１に接続し、また、最新のスナップショットおよび最新のデルタスナップを受信することによって更新状態となる。
【００４１】
ＶＩ．分割可能データレベル技術およびデータレベルの調整（すなわち組立て）
ある実施形態は、本明細書で分割可能データレベル技術と称される技術を使用して、データソース２０２の状態を１つ又は複数の受信デバイス２０６に通信する改善された通信技術を提供する。分割可能データレベルとは、更新内のデータをレベル又は階層に編成することをいう。図７Ａ、７Ｂに示す例では、データソース（図２、図３のデータソース２０２）から受信したデータ７００が、データフォーマット部（図３のデータフォーマット部３０４）によってデータレベル７０２ａ―７０２ｆに編成されている。場合によっては、データレベル７０２ａ―７０２ｆは、重要度の高い順に編成される（例えば、最も要求されるデータを含む第１のレベル７０２ａ、２番目に要求されるデータを含む第２のレベル７０２ｂ）。付加的又は代替的に、それぞれのデータレベル７０２ａ―７０２ｆは、情報の詳細レベルを表す。データレベル７０２ａ―７０２ｆは、データレベル７０２から下に分割可能である（例えば、第１のデータレベル７０２ａが図２の調整済みメッセージ（組立済みメッセージ）２０４を生成するために使用される、第１のデータレベル７０２ａおよび第２のデータレベル６０２ｂが調整済みメッセージ２０４を生成するために使用される）。すなわち、複数のレベルによるサブセットのみを受信するプリファレンスを受信部が指定できるように、データがレベル又は階層に応じて並べられる（第１のデータレベル７０２ａから好ましいデータレベルまで）。例えば、一部の受信部は最初の３つのデータレベル（レベル７０２ａ―７０２ｃ）を受信することを希望し、他の受信部は最初のデータレベル（７０２ａ）のみを受信することを希望する。また、一部の受信部は、５番目のデータレベル（レベル７０２ｅ）のみに含まれる情報を希望する一方で、分割可能データレベル技術に基づけば、それらの所望のデータレベルの上のレベル（この場合、レベル７０２ａ―７０２ｄ）まで受信することを希望する。
【００４２】
図７Ｂに示す例では、データレベル７０２は、複数のデータ値７０４を含む。図示の例では、データレベル７０２内のデータ値７０４は分割することができない。例えば、受信デバイス２０６が第１のデータレベル７０２ａに含まれる特定の値７０４を要求する場合、受信デバイス２０６は、第１のデータレベル７０２ａ全体を受け入れる。例えば、データソース２０２は、Ｔｗｉｔｔｅｒのハッシュタグおよびそれらの公開レートを提供する。データフォーマット部は、それらの公開レートの高い順にＴｗｉｔｔｅｒのハッシュタグを編成する。最も上のハッシュタグは、第１のデータレベル（例えば、データレベル７０２ａ）であり、２番目から１０番目のハッシュタグは、第２のデータレベル（例えば、データレベル７０２ｂ）であり、１１番目から１００番目のハッシュタグは、第３のデータレベル（例えば、データレベル７０２ｃ）である。受信部が最も上のハッシュタグのみを受信することを希望する場合は、第１のデータレベルを受信する。受信部が上から１０番目のハッシュタグを受信することを希望する場合は、第１のデータレベルと第２のデータレベルを受信する。
【００４３】
分割可能データレベルによれば、データを受信部ごとにメッセージバッファに再整理することなく、複数の受信デバイス（例えば、図３の受信部２０６）へのメッセージのカスタマイズを可能にする調整可能メッセージ（組立可能メッセージ）の生成が促進される。例えば、サブスクリプション制御モジュール（例えば、図２、図３のサブスクリプション制御モジュール２０１）に、数千の受信デバイス（例えば、図２、図３の受信デバイス２０６）が接続される場合、受信デバイス２０６のそれぞれに対して異なる重要度レベルおよび／又は詳細レベルを有する更新メッセージが送信されてもよく、送信部はそれぞれの受信部のために全ての更新メッセージに関するデータを整理する必要はない。
【００４４】
図８Ａ、８Ｂは、メッセージフォーマット部（例えば、図３のメッセージフォーマット部３０４）によって生成されるとともにバッファ（例えば、図３の一次バッファ３０６および／又は二次バッファ３０８）に配置される調整可能メッセージの例を示す。バッファ内に配置された後、メッセージ送信部（例えば、図３のメッセージ送信部３１０）は、受信デバイス（例えば、図２、３の受信デバイス２０６）に調整済みメッセージ２０４として送信するために、バッファ内の調整可能メッセージの一部を使用する。図８Ａは、スナップショット（図４、５、６のスナップショットＳ０）に基づく調整可能メッセージ８００の一例を示す。図８Ａに示す例では、調整可能メッセージ８００は、１つ又は複数のヘッダ８０２と、１つ又は複数のデータレベル８０４とを含む。ヘッダ８０２は、調整可能メッセージ８００をメッセージ送信部（例えば、図３のメッセージ送信部３１０）によって処理するために必要なブックキーピング情報（例えば、データレベル８０４の数、精度レベル、タイムスタンプなど）と、送信情報とを含む。
【００４５】
データレベル８０４は、１つ又は複数の分割ポイント８０６で分割可能な分割可能データレベル（例えば、図７Ａ、７Ｂのデータレベル７０２）を含む。場合によっては、それぞれのデータレベル８０４は、複数の値８０８を含む。場合によっては、調整済みメッセージ２０４を送信するために、メッセージ送信部３１０は、分割ポイント８０６のうちの最大１つまで、バッファからの調整可能メッセージ８００の一部を使用する。図８Ａに示す例では、それぞれのデータレベル８０４は、詳細および／又は重要度のレベルに対応するデータソース２０２の状態（例えば、図４、５、６の第１の状態４００ａ）を表す複数の値８０８を含む。例えば、調整可能メッセージ８００が８個のデータレベル８０４を含む場合、受信デバイス２０６は、プリファレンスを設定することにより、最初の２つのデータレベル８０４のみを受信することを選択する。このような例では、メッセージ送信部３１０は、受信デバイス２０６に送信するために、ヘッダ８０２と、最初の２つのデータレベル８０４を使用する。実施形態によっては、それぞれの受信部ごとに好ましい数のデータレベルを含めるために、バッファおよび適切な長さを参照するソケットライトコールが使用される。
【００４６】
図８Ｂは、デルタスナップ（例えば、図６のデルタスナップΔＳ１）に基づく例示的な調整可能メッセージ８１０を示す。図８Ｂに示す例では、調整可能メッセージ８１０は、１つ又は複数のヘッダ８０２と、１つ又は複数の更新８１２とを含む。図示の例では、更新８１２はアクション８１４を含む。場合によっては、それぞれの更新８１２は、１つ又は複数のアクション８１４を含む。図示の例では、アクション８１４は、最後のスナップショット以降のデータソース２０２への変更に関する情報を含む。データ更新８１２は、分割ポイント８０６で分割可能な分割可能データレベル（例えば、図７Ａ、７Ｂのデータレベル７０２）であってもよい。場合によっては、調整済みメッセージ２０４を送信するために、メッセージ送信部３１０は、バッファ（例えば、一次バッファ３０６、二次バッファ３０８など）からの分割ポイント８０６のうちの最大１つまで、調整可能メッセージ８１０の一部を使用する。場合によっては、調整可能メッセージ８１０は、それぞれのデータレベル８０４に対応する更新８１２を含まない（例えば、その特定のデータレベル８０４におけるデータが最後のスナップショット以降に変更されていない）。
【００４７】
図８Ｂに示す例では、アクション８１４は、アクションリファレンス８１６と、インデックス８１８と、１つ又は複数のパラメータ８２０とを含む。アクションリファレンス８１６は、インデックス８１４によって識別されるデータレベル８０４を更新するためにどのアクション（例えば、図６のアクション６００）を実行するかを識別する。パラメータ８２０は、識別されたデータレベル８０４の値（例えば、値８０８）に対する変更の大きさを識別する。例示的なアクションリファレンス８１４が以下の表１に示される。
【００４８】
【表１】
2020074221.tif 000003
【００４９】
例示的な「追加」アクションは、パラメータ８２０によって特定される値（例えば、図７の値７０４）を有するインデックス８１４で指定されたデータレベルの後に、新たなデータレベル（例えば、図７のデータレベル７０２ａ―７０２ｆ）を追加する。例示的な「相対追加」アクションは、パラメータ８２０によって特定される値によって修正（例えば、追加、減算）されたインデックス８１４で指定されたデータレベルの値を有するインデックス８１４で指定されたデータレベルの後に、新たなデータレベルを追加する。例示的な「一番上に追加」アクションは、パラメータ８２０によって指定された値を有する第１のデータレベルの前に新たなデータレベルを追加する。例示的な「Ｎ番目の値を修正」アクション（例えば、「１番目の値を修正（ＭＶ１）」など）は、インデックス８１４で指定されたデータレベルにおけるＮ番目の値を、パラメータ８２０によって指定されるように修正する。例示的な「全て修正」アクションは、インデックス８１４で指定されたデータレベルにおける値を、パラメータ８２０によって指定されるように修正する。例示的な「削除」アクションは、インデックス８１４によって指定されたデータレベルを削除する。例示的な「変更なし」アクションは、インデックス８１４によって指定されたデータレベルの前に、インデックス８１４によって指定されたデータレベルの複製を生成する。
【００５０】
調整可能メッセージ８１０は、新たなデータレベル８０４を（例えば、「追加」アクション、「相対追加」アクションおよび／又は「一番上に追加」アクションを使用して）追加する更新８１２を含むことができる。付加的又は代替的に、調整可能メッセージ８１０は、既存のデータレベル８０４を（例えば、「削除」アクションを使用して）削除する更新８１２を含む。データレベル８０４が削除されると、下位のデータレベルが上方にシフトする。例えば、調整可能メッセージ８００は、データレベル１、データレベル２およびデータレベル３を含む。データソース２０２の次回の更新時においてデータレベル２が削除される場合、データレベル３は、データレベル２となるようにシフトする。しかしながら、このような例では、受信デバイス２０６が調整済みメッセージ２０４内の２つのデータレベルのみを受信する場合、受信デバイス２０６は、データレベル３に関する情報を有しない。すなわち、受信デバイス２０６が最後のスナップショットを受信したときに、調整済みメッセージ２０４は、データレベル３に関する情報を含まなかった。データソース２０２の現在の状態に関する正確な最新の情報を受信デバイス２０６が持つことを促進するために、データフォーマット部３０４は、削除されたデータレベル８０４が検知されたときに、上方にシフトしたデータレベル８０４（例えば、データレベル１、３）を提供するアクション８１４（例えば、「変更なし」アクション）を含む。場合によっては、データレベル８０４を既に有する受信デバイス２０６は、「変更なし」アクション８１４を無視を受ける。
【００５１】
図９は、データレベル（例えば、図８Ａのデータレベル８０４）が削除されている例示的なデータフローを示す図である。図示の例では、データソース２０２（図２、３）の状態に関して、時刻Ｔ０における第１の状態９００ａと、時刻Ｔ１における第２状態９００ｂとを示す。第１の状態９００ａと第２状態９００ｂは、第１のデータレベル９０２ａ、第２のデータレベル９０２ｂ、第３のデータレベル９０２ｃ、第４のデータレベル９０２ｄおよび第５のデータレベル９０２ｅに編成されている。データフォーマット部（図３）は、スナップショットベースの調整可能メッセージ（例えば、図８Ａの調整可能メッセージ８００）を生成する。時刻Ｔ０において、受信デバイス２０６（図２、３）は３つのデータのプリファレンスを設定しているため、３つのデータレベルを有する調整済みスナップショットＳ０が受信デバイス２０６に送信される。時刻Ｔ１において、第２のデータレベル９０２ｂが削除される。図示の例では、第３のデータレベル９０２ｃ、第４のデータレベル９０２ｄおよび第５のデータレベル９０２ｅが上方にシフトする。デルタスナップベースの調整可能メッセージ（例えば、図８Ｂの調整可能メッセージ８１０）を生成するときに、データフォーマット部３０４は、「変更なし」のアクションを含む。調整済みデルタスナップΔＳ１は、「変更なし」アクションを有する受信部に送信される。
【００５２】
図１０は、バッファ（例えば、図３の一次バッファ３０６又は二次バッファ３０８）内における例示的な調整可能メッセージ１０００（例えば、図８Ａのスナップショットベースの調整可能メッセージ８００および／又は図８Ｂのデルタスナップベースの調整可能メッセージ８１０）を示す。調整可能メッセージ１０００は、１つ又は複数のヘッダ１００２と、１つ又は複数の分割可能データレベル１００４（例えば、図８Ａのデータレベル８０４又は図８Ｂの更新８１２）とを含む。図示の例では、調整可能メッセージをフォーマットしながら、データフォーマット部３０４（図３）は、分割ポイント１００６のバッファ内の位置を算出する。場合によっては、データフォーマット部３０４は、分割ポイント１０００６のバッファ内の位置（例えば、バイトオフセット）を記憶する分割可能テーブル１００８を生成する。このような例では、分割テーブル１００８は、調整可能メッセージ１０００の先頭又は最後尾に記憶されてもよい。場合によっては、分割テーブル１００８は、調整済みメッセージ２０４（図２）を送信する際に、メッセージ送信部３１０（図３）によって使用される。この方法では、調整済みメッセージ２０４を送信するときに、メッセージ送信部３１０は、受信デバイス２０６のプリファレンスに応じて使用するために必要な調整可能メッセージ１００のサイズ（例えば、バッファ内のバイト量）を迅速に決定することができる。
【００５３】
ＶＩＩ．デルタスナップおよび分割可能データレベルを使用した調整メッセージング
ある実施形態は、デルタスナップと分割可能データレベルの技術の組み合わせを使用して１つ又は複数の受信側デバイス２０６へデータソース２０２の状態を通信する改善された通信技術を提供する。
【００５４】
図１１は、例示的な受信デバイスＡ１１０４ａと、図２、図３のサブスクリプション制御モジュール２０１の間における例示的な第１の接続１１０２ａを表す例示的なデータフロー図１１００を示す。図１１００は、例示的な受信デバイスＢ１１０４ｂとサブスクリプション制御モジュール２０１の間における例示的な第２の接続１１０２ｂを示す。サブスクリプション制御モジュール２０１は、スナップショットの閾値レート（例えば、毎分、２分ごと）にてスナップショット１１０６を生成し、基本更新レート（例えば、毎秒など）にてデルタスナップ１１０８ａ−１１０８ｇを生成する。図示の例では、サブスクリプション制御モジュール２０１は、スナップショット１１０６およびデルタスナップ１１０８ａ−１１０８ｇを第１の接続１１０２ａおよび第２の接続１１０２ｂに送信する。
【００５５】
図１１に示す例では、第１の接続１１０２ａは、時間の経過とともに、混雑期間１１１０と非混雑期間１１１２とを有する。図示の例では、受信デバイスＡ１１０４ａは、受信すべき更新レート（例えば、デルタスナップ１１０８ａ−１１０８ｇが第１の接続１１０２ａに送信されるレート）および／又はデータレベルの数（例えば、各スナップショット１１０６および各デルタスナップ１１０８ａ−１１０８ｇにどれだけ多くのデータレベルが含まれるか）に関するプリファレンスを設定する。図示の例では、受信デバイスＡ１１０４ａによって設定される更新レートは、基本更新レート（例えば、サブスクリプション制御モジュール２０１によってデルタスナップ１１０８ａ−１１０８ｇが生成されるレート）に等しい。例えば、基本更新レートが１秒である場合、受信デバイスＡ１１０４ａは、１秒間隔でデルタスナップ１１０８ａ−１１０８ｇを受信する。場合によっては、サブスクリプション制御モジュール２０１は、混雑期間１１１０を検出する。例えば、サブスクリプション制御モジュール２０１の送信ソケットは、送信バッファに空きがないことおよび／又は第１の接続１１０２ａが混雑していることを示す。場合によっては、サブスクリプション制御モジュール２０１は、第１の接続１１０２ａが混雑しなくなるまで、遅延していたデルタスナップ１１０８ｂの送信を遅延させる。混雑期間１１１０が受信デバイス２０６によるプリファレンスの更新レートよりも長い場合、サブスクリプション制御モジュール２０１は、保留中のデルタスナップ１１０８ｄを削除し、その代わりに次のデルタスナップ１１０８ｅを送信する。
【００５６】
図１１に示す例では、第２の接続１１０２ｂは、時間の経過とともに、接続期間１１１３と切断期間１１１４とを有する。図示の例では、受信デバイスＢ１１０４ｂによって設定された更新レートは、基本更新レートよりも少ない頻度に設定されている。例えば、基本更新レートが１００ミリ秒である場合、受信デバイスＢ１１０４ｂの更新レートは２００ミリ秒である。図示の例では、サブスクリプション制御モジュール２０１と受信デバイスＢ１１０４ｂの間に接続１１０２ｂが確立されるとき、サブスクリプション制御モジュール２０１は、最新のスナップショット１１０６および最新のデルタスナップ１１０８ｂ、１１０８ｆを送信する。付加的又は代替的に、切断期間１１４が短い場合（例えば、現在の更新レートよりも低い場合）には、サブスクリプション制御モジュール２０１は単に、デルタスナップ１１０８ｆを送信する。
【００５７】
図１２は、図２、図３のサブスクリプション制御モジュール２０１がデータソース（例えば、図２、図３のデータソース２０２）との接続を確立したときにスナップショットとデルタスナップを生成させるように実行可能な例示的な機械読み取り可能命令を表す例示的な方法１２００のフロー図である。最初に、ブロック１２０２において、サブスクリプション制御モジュール２０１は、データソース２０２から送信されるデータを受信する。場合によっては、サブスクリプション制御モジュール２０１は、設定された時間間隔でデータを取得する。付加的又は代替的に、サブスクリプション制御モジュール２０１は、データソース２０２への更新の検出および／又はトリガに応じて、データを取得する。ブロック１２０４において、サブスクリプション制御モジュール２０１は、スナップショットの閾値レートを超えたか否かを判断する。スナップショットの閾値レートは例えば、スナップショットを生成してから次のスナップショットを生成するまでの最小時間である。場合によっては、スナップショット閾値は、データソース２０１がそれぞれの更新をどの程度変更するかに基づく（例えば、データソースを大きく変更するほど、スナップショットの閾値を短くする）。
【００５８】
スナップショットの閾値を超えていない場合には、プログラム制御はブロック１２０６に進む。そうでなければ、スナップショットの閾値を超えた場合には、プログラム制御はブロック１２０８に進む。ブロック１２０６において、サブスクリプション制御モジュール２０１は、スナップショットを生成する（例えば、図１１のスナップショット１１０６）。プログラム制御はブロック１２０２に戻る。ブロック１２０８において、サブスクリプション制御モジュール２０１は、デルタスナップを生成する（図１１のデルタスナップ１１０８ａ−１１０８ｇ）。プログラム制御はその後、ブロック１２０２に戻る。サブスクリプション制御モジュール２０１がデータソース２０２から切断されるまで、機械読み取り可能命令１２００は実行される。
【００５９】
図１３は、図３のデータソース検索部３０２により検索されたデータからのスナップショット（例えば、図１１のスナップショット１１０６）を図３のデータフォーマット部に生成させるように実行可能な例示的な機械読み取り可能命令を表す方法１３００のフロー図である。最初に、ブロック１３０２において、データソース検索部３０２からのデータを受信した後、データフォーマット部３０４は、図３の一次バッファ３０６に１つ又は複数のヘッダ（例えば、図８Ａのヘッダ８０２あるいは図１０のヘッダ１００２）を追加する。ブロック１３０４において、データフォーマット部３０４は、データを分割可能データレベル（例えば、図７Ａ、図７Ｂの分割可能データレベル７０２ａ−７０２ｆ）に編成する。場合によっては、データは、重要度および／又は詳細のレベルに編成される。ブロック１３０６において、データフォーマット部３０４は、編成されたデータを調整可能メッセージ（例えば、図８Ａの調整可能メッセージ８００あるいは図１０の調整可能メッセージ１０００など）にフォーマットする。調整可能メッセージは、一次バッファ３０６内に配置される。ブロック１３０８において、データフォーマット部３０４は、調整可能メッセージの分割可能ポイント（例えば、図８Ａの分割テーブル８０６あるいは図１０の分割可能ポイント１０００）の一次バッファ３０６内の位置を計算する。場合によっては、データフォーマット部３０４は、分割テーブル（例えば、図１０の分割テーブル１００８）を作成し、それを一次バッファ３０６内の調整可能メッセージの先頭又は末尾に追加する。その後、プログラム１３００は終了する。
【００６０】
図１４は、図３のデータソース検索部３０２によって検索されたデータからのデルタスナップ（例えば、図１１のデルタスナップの１１０８ａ−１１０８ｇ）を図３のデータフォーマット部３０４に生成させるように実行可能な例示的な機械読み取り可能命令を表す方法１４００のフロー図である。最初に、ブロック１３０２において、データソース検索部３０２からのデータを受信した後、データフォーマット部３０４は、図３の二次バッファ３０８に１つ又は複数のヘッダ（例えば、図８Ｂのヘッダ８０２、図１０のヘッダ１００２）を付加する。ブロック１４０４において、データフォーマット部３０４は、データを分割可能データレベル（例えば、図７Ａ，７Ｂの分割可能データレベル７０２ａ−７０２ｆ）に編成する。
【００６１】
ブロック１４０６において、ブロック１４０２で編成された第１のデータレベルから始まり、データフォーマット部は、現在のデータレベルと、一次バッファ３０６（図３）内の調整可能メッセージに記憶されている対応するデータレベルとの差を決定する。ブロック１４０８において、データフォーマット部３０４は、スナップショットを変更データとともに更新する際にどのアクション（例えば、図８Ｂのアクション８１４）が関与しているかを決定する。場合によっては、現在のデータレベルと、一次バッファ３０６内の調整可能メッセージに記憶されている対応するデータレベルの間に差がない場合、当該レベルに関してアクションは生成されない。ブロック１４１０において、データフォーマット部３０４は、ブロック１４０８で決定されたアクションを二次バッファ３０８内の調整可能メッセージ（例えば、図８Ｂの調整可能メッセージ８１０、図１０の調整可能メッセージ１０００）に追加する。ブロック１４１２において、データフォーマット部３０４は、二次バッファ３０８内のデルタスナップの一部が一次バッファ３０６内のスナップショットよりも大きいかどうかを決定する。二次バッファ３０８内のデルタスナップがスナップショットよりも大きい場合、プログラム制御はブロック１４１４に進む。そうでなければ、二次バッファ３０８内のデルタスナップがスナップショットよりも大きくない場合、プログラム制御はブロック１４１６に進む。
【００６２】
ブロック１４１４において、デルタスナップの生成が中止され、その代わりにデータフォーマット部はスナップショットを生成する。その後、プログラム１４００は終了する。ブロック１４１６において、データフォーマット部３０４は、スナップショットと比較するための別のデータレベルが存在するかどうかを判断する。スナップショットと比較するための別のデータレベルが存在する場合、プログラム制御はブロック１４０６に戻る。そうでなければ、スナップショットと比較するための別のデータレベルがない場合、プログラム制御はブロック１４１８に進む。ブロック１４１８において、データフォーマット部３０４は、調整可能メッセージの分割可能ポイント（例えば、図８Ｂの分割テーブル８０６あるいは図１０の分割可能ポイント１０００）の二次バッファ３０８内の位置を計算する。場合によっては、データフォーマット部３０４は、分割テーブル（例えば、図１０の分割テーブル１００８）を作成し、それを二次バッファ３０８内の調整可能メッセージの先頭又は末尾に追加する。その後、プログラム１４００は終了する。
【００６３】
図１５は、図３のメッセージ送信部３１０に受信部（例えば、図２、図３の受信デバイス２０６）を更新させるように実行可能な例示的な機械読み取り可能命令を表す例示的な方法１５００のフロー図である。ブロック１５０２において、メッセージ送信部３１０は、受信部との接続（例えば、図１１の第１の接続１１０２ａ）を確立する。場合によっては、メッセージ送信部３１０は、受信部のプリファレンスを要求および／又は受信する。付加的又は代替的に、メッセージ送信部３１０は、受信部のプリファレンスを維持および／又はそれへの（例えば、加入データベースからの）アクセスを有する。ブロック１５０４において、メッセージ送信部３１０は、最新のスナップショット（例えば、図１１のスナップショット１１０６）を受信部に送信する。場合によっては、メッセージ送信部３１０は、受信部のプリファレンスに応じてスナップショットを調整する（例えば、図３の一次バッファ３０６内の調整可能メッセージの一部を使用する）。
【００６４】
ブロック１５０６において、メッセージ送信部３１０は、二次バッファ３０８（図３）内により最近のデルタスナップ（例えば、図１１のデルタスナップ１１０８ａ−１１０８ｇ）があるかどうかを決定する。メッセージ送信部３１０がより最近のデルタスナップがあると決定した場合、プログラム制御はブロック１５０８に進み、そうでなければ、プログラム１５００は終了する。ブロック１５０８において、メッセージ送信部３１０は、最新のデルタスナップを受信部へ送信する。場合によっては、メッセージ送信部３１０は、受信部のプリファレンスに応じてデルタスナップを調整する（例えば、図３の二次バッファ３０６内の調整可能メッセージの一部を使用する）。その後、プログラム１５００は終了する。
【００６５】
図１６は、図２、図３のサブスクリプション制御モジュール２０１に接続されている受信デバイス２０６（図２、図３）にスナップショット（例えば、図１１のスナップショット１１０６）およびデルタスナップ（例えば、図１１のデルタスナップ１１０８ａ−１１０８ｇ）を図３のメッセージ送信部３１０に送信させるように実行可能な例示的な機械読み取り可能命令を表す方法１６００のフロー図である。最初に、ブロック１６０２において、一次バッファ３０６（図３）内の新たなスナップショット又は二次バッファ３０８（図３）内の新たなデルタスナップが検出および／又はトリガされる。新たなスナップショット又はデルタスナップがある場合、プログラム制御はブロック１６０４に進む。そうでなければ、プログラム制御はブロック１６０２へ戻る。ブロック１６０４において、メッセージ送信部３１０は、受信デバイス２０６の更新レートが満たされているかどうかを判断する。場合によっては、受信部は、メッセージ送信部３１０によって接続が確立および／又は維持されているときにメッセージ送信部３１０によって受信されたプリファレンスを設定する。場合によっては、受信デバイス２０６はプリファレンスを設定しない。そのような例では、更新レートは、サブスクリプション制御モジュール２０１がスナップショットおよびデルタスナップを生成するレート（例えば、基本更新レート）にデフォルト化される。受信デバイス２０６の更新レートが満たされている場合、プログラム制御はブロック１６０６に進む。そうでなければ、受信デバイス２０６の更新レートが満たされていない場合、プログラム制御はブロック１６０２に戻る。
【００６６】
ブロック１６０６において、メッセージ送信部３１０は、メッセージを受信デバイス２０６に送信可能かどうかを決定する。場合によっては、メッセージ送信部３１０は、混雑を検出する（例えば、図３の混雑期間１１１２）。メッセージが受信デバイス２０６に送信可能である場合、プログラム制御はブロック１６０８に進む。そうでなければ、メッセージが受信デバイス２０６に送信することができない場合、プログラム制御はブロック１６０２に戻る。ブロック１６０８において、メッセージ送信部３１０は、スナップショット又はデルタスナップを受信デバイス２０６に送信するかどうかを決定する。スナップショットを受信デバイス２０６に送信する場合、プログラム制御はブロック１６１０に進む。デルタスナップを送信する場合、プログラム制御はブロック１６１２に進む。ブロック１６１０において、メッセージ送信部３１０は、受信デバイス２０６へスナップショットを送信する。場合によっては、メッセージ送信部３１０は、受信部のプリファレンスに応じてスナップショットを調整する（例えば、図３の一次バッファ３０６内の調整可能メッセージの一部を使用する）。プログラム制御はブロック１６０２に戻る。ブロック１６１２において、メッセージ送信部３１０は、受信部にデルタスナップを送信する。場合によっては、メッセージ送信部３１０は、受信部のプリファレンスに応じてデルタスナップを調整する（例えば、図３の二次バッファ３０６内の調整可能メッセージの一部を使用する）。プログラム制御はブロック１６０２に戻る。受信部がサブスクリプション制御モジュール２０１から切断されるまで、命令１６００は実行される。
【００６７】
図１７は、図３のメッセージ送信部３１０にバッファ（例えば、図３の一次バッファ３０６および／又は二次バッファ３０８）内の調整可能メッセージ（例えば、図８Ａの調整可能メッセージ８００、図８Ｂの調整可能メッセージ８１０）を再整理することなくスナップショット（例えば、図１１のスナップショット１１０６）および／又はデルタスナップ（例えば、図１１のデルタスナップ１１０８ａ−１１０８ｇ）を調整させるように実行可能な例示的な機械読み取り可能命令を表す方法１７００のフロー図である。最初に、ブロック１７０２において、メッセージ送信部３１０は、送信するデータレベル（例えば、図７Ａ、７Ｂのデータレベル７０２ａ−７０２ｆ）を受信部のプリファレンスに示されるように決定する。ブロック１７０４において、メッセージ送信部３１０は、ブロック１７０２において決定されたデータレベルの数に基づいて、受信デバイス２０６に送信するバッファの部分のサイズを決定する。場合によっては、バッファの先頭あるいは最後に分割テーブル（例えば、図１０の分割テーブル１００８）が追加される。そのような例では、メッセージ送信部３１０は、分割テーブル１００８上で必要なバッファサイズを検索する。ブロック１７０６において、メッセージ送信部３１０は、ブロック１７０４で決定されたバッファの一部が受信デバイス２０６に送信される。その後、プログラム１７００は終了する。
【００６８】
ＶＩＩＩ．電子取引システムの例
上述の実施形態は電子取引システムにおいて有用である。例えば、様々な価格レベルで入手可能な数量を含む市場情報を通信することは、メッセージ調整を行うことで利益を得ることができる。例えば、取引可能オブジェクトに関する内部市場データと市場深度データを分割可能データレベルに編成することができる（例えば、分割可能データレベル７０２ａ―７０２ｆ）。さらに、内部市場データおよび市場深度データの更新を、それらの取引可能オブジェクトの取引所に加入している加入者に、デルタスナップ技術を用いて通信することができる。
【００６９】
図１８は、ある実施形態を採用可能な例示的な電子取引システム１８００を表すブロック図を示す。システム１８００は、取引デバイス１８１０と、ゲートウェイ１８２０と、取引所１８３０とを備える。取引デバイス１８１０は、ゲートウェイ１８２０と通信する。ゲートウェイ１８２０は、取引所１８３０と通信する。本明細書における「通信」との用語は、直接的な通信、および／又は、１つ若しくは複数の中間コンポーネントを介した間接的な通信を包含する。取引デバイス１８１０、ゲートウェイ１８２０および／又は取引所１８３０は、図１に示す１つ又は複数のコンピューティングデバイス１００を含んでもよい。図１８に示す例示的な電子取引システム１８００は、本明細書における示唆および開示から逸脱しない範囲で、付加的な機能や性能を提供する付加的なコンポーネント、サブシステムおよびエレメントと通信してもよい。
【００７０】
動作中において、取引デバイス１８１０は、取引所１８３０からゲートウェイ１８２０を介して市場データを受信する。ユーザは取引デバイス１８１０を使用して、この市場データのモニタを行う、および／又は、１つ又は複数の取引可能オブジェクトを買う又は売るための注文メッセージを取引所１８３０に送信する意思決定を行う。
【００７１】
市場データは、取引可能オブジェクトのための市場に関するデータを含む。例えば、市場データは、内部市場、市場深度、最終取引価格（「ＬＴＰ」）、最終取引量（「ＬＴＱ」）又はそれらの組み合わせを含む。（時間の経過とともに変化する）内部市場は、ある時点における特定の取引可能オブジェクトに関する市場内の最高ビッド価格（ベストビッド）および利用可能な最低アスク価格（ベストアスク又はベストオファー）である。市場深度は、内部市場を含む価格レベルおよび内部市場から離れた価格レベルで利用可能な数量のことをいう。市場深度は、市場内の注文に基づく数量を有しない価格により「ギャップ」が存在する場合がある。
【００７２】
内部市場および市場深度に関連する価格レベルは、価格だけでなくある値に関して抽出および／又は計算された表示を包含可能な価格レベルとして提供することもできる。例えば、値レベルは、始値からの正味の変化として表示される。別の例として、値レベルは、他の２つの市場での価格から計算された値として提供される。別の例では、値レベルは、統合価格レベルを含む。
【００７３】
取引可能オブジェクトは、取引される任意の対象物である。例えば、取引可能オブジェクトの特定の数量を、特定の価格で買う又は売ることができる。取引可能オブジェクトには例えば、金融商品、株式、オプション、債券、先物、通貨、ワラント、ファンドデリバティブ、証券、商品、スワップ、金利商品、インデックスベース商品、取引イベント、物品、又はそれらの組み合わせが含まれる。取引可能オブジェクトには、取引所によってリスト化および／又は管理された商品、ユーザによって定義された商品、実際の商品若しくは合成の商品の組合せ、又はそれらの組み合わせが含まれる。なお、実際の取引可能オブジェクトに対応するおよび／又は類似する、合成の取引可能オブジェクトが存在してもよい。
【００７４】
注文メッセージは、取引注文を含むメッセージである。取引注文は例えば、取引可能オブジェクトを買う又は売るためのコマンドや、定められた取引戦略に従って注文の管理を開始するコマンドや、注文を変更、修正又はキャンセルするコマンドや、注文に関連する電子取引所への指示や、それらの組み合わせであってもよい。
【００７５】
取引デバイス１８１０は、１つ又は複数の電子計算プラットフォームを有してもよい。例えば、取引デバイス１８１０は、であるクトップコンピュータ、ハンドヘルドデバイス、ラップトップ、サーバ、ポータブルコンピューティングデバイス、取引端末、埋め込まれた取引システム、ワークステーション、アルゴリズム取引システム（「ブラックボックス」や「グレーボックス」）、コンピュータのクラスタ、又はそれらの任意の組み合わせを含んでもよい。別の例として、取引デバイス１８１０は、プロセッサによって実行される１つ又は複数のコンピュータプログラム、アプリケーション、ライブラリあるいはコンピュータ読み取り可能命令などをアクセス可能に記憶するように構成されたメモリ又はその他の記憶媒体と通信を行うシングル又はマルチコアプロセッサを含んでもよい。
【００７６】
本明細書における「〜ように構成された（configured to, ａdａpted to）」との用語は、エレメント、構造又はデバイスが特定の機能又は特定の目的を実行するように修正、アレンジ、変更などされている場合を包含する。
【００７７】
例示として、取引デバイス１８１０は、イリノイ州シカゴにあるトレーディングテクノロジーズインターナショナルインコーポレイティッド（以降では「トレーディングテクノロジーズ」と称する）が提供する電子取引プラットフォームであるＸ＿ＴＲＡＤＥＲ（登録商標）のコピーを実行するパーソナルコンピュータとして実装されてもよい。別の例として、取引デバイス１８１０は、トレーディングテクノロジーズが提供するＡＤＬＲ（商標）、ＡＵＴＯＳＰＲＥＡＤＥＲ（登録商標）、および／又はＡＵＴＯＴＲＡＤＥＲ（商標）などの自動取引ツールを提供する取引アプリケーションを実行するサーバであってもよい。さらに別の例では、取引デバイス１８１０は、サーバと通信する取引端末を含んでもよく、この場合、取引端末とサーバが集合的に取引デバイス１８１０となる。
【００７８】
取引デバイス１８１０は一般的に、ユーザによって所有、操作、制御、プログラム、構成、又はその他の方法の使用が行われる。本明細書における「ユーザ」との用語には、これらに限定されないが、人間（例えばトレーダ）、取引グループ（例えばトレーダのグループ）又は電子取引デバイス（例えばアルゴリズム取引システム）が含まれる―１人又は複数のユーザが、例えば所有、操作、制御、プログラミング、構成、又はその他の使用に関与してもよい。
【００７９】
取引デバイス１８１０は、１つ又は複数の取引アプリケーションを含む。本明細書における取引アプリケーションは、電子商取引を可能にする又は改善するアプリケーションである。取引アプリケーションは、１つ又は複数の電子取引ツールを提供する。例えば、取引デバイスに記憶された取引アプリケーションは、１つ又は複数の取引ウィンドウに市場データを配置および表示するように実行される。別の例では、取引アプリケーションは、スプレッド取引ツールを提供する自動スプレッド取引アプリケーションを含む。さらに別の例では、取引アプリケーションは、自動的にアルゴリズムを処理して特定のアクション（注文を出す、既存の注文を修正する、注文の削除する、など）を実行するアルゴリズム取引アプリケーションを含む。さらに別の例では、取引アプリケーションは、１つ又は複数の取引画面を提供する。取引画面は、１つ又は複数の市場と交信可能な１つ又は複数の取引ツールを提供してもよい。例えば、ユーザは取引ツールを用いることで、様々な取引戦略を実行しながら、市場データの取得・閲覧、注文入力パラメータの設定、取引所への注文メッセージの送信、取引アルゴリズムの展開、および／又は、位置のモニタリングを行うことができる。取引アプリケーションが提供する電子取引ツールは常に利用可能であってもよく、あるいは、取引アプリケーションの特定の設定又は動作モードのみで利用可能であってもよい。
【００８０】
取引アプリケーションは、プロセッサによって実行可能にコンピュータ読み取り可能媒体に記憶されたコンピュータ読み取り可能な命令を用いて実装される。コンピュータ読み取り可能媒体には例えば、ランダムアクセスメモリ、読み出し専用メモリ、プログラマブル読み出し専用メモリ、電気的プログラマブル読み出し専用メモリ、電気的消去可能読み出し専用メモリ、フラッシュメモリ、これらの任意の組み合わせ、又はその他の任意の有形データ記憶デバイスなど、様々なタイプの揮発性／不揮発性の記憶媒体が含まれる。本明細書における非一時的又は有形のコンピュータ読み取り可能媒体との用語は、コンピュータ読み取り可能記憶媒体の任意のタイプを含むが、伝搬信号は除外するものとして明示的に定義される。
【００８１】
取引アプリケーションの１つ又は複数のコンポーネント又はモジュールは、別のコンピュータ読み取り可能媒体から、取引デバイス１８１０のコンピュータ読み取り可能媒体にロードされてもよい。例えば、取引アプリケーション（又は取引アプリケーションの更新）は、製作者、開発者又は発行者によって１つ又は複数のＣＤ又はＤＶＤ上に記憶されるものであり、取引デバイス１８１０にその後ロードされる、又は、取引デバイス１８１０が取引アプリケーションを読み取るためのサーバにロードされてもよい。別の例として、取引デバイス１８１０は、サーバから、例えばインターネット又は内部ネットワークを介して取引アプリケーション（又は取引アプリケーションの更新）を受信してもよい。取引デバイス１８１０は、取引デバイス１８１０によって要求される場合に（例えば「プル配信」）、および／又は、取引デバイス１８１０によって要求されない場合に（例えば「プッシュ配信」）、取引アプリケーション又はその更新を受信してもよい。
【００８２】
取引デバイス１８１０は、注文メッセージを送信するように構成されてもよい。例えば、注文メッセージは、ゲートウェイ１８２０を介して取引所１８３０に送信される。別の例として、取引デバイス１８１０は、実際の取引には影響を及ぼさないシミュレーション環境におけるシミュレートの取引所へ注文メッセージを送信するように構成される。
【００８３】
注文メッセージは、ユーザの要求に応じて送信されてもよい。例えば、トレーダは取引デバイス１８１０を利用することで、注文メッセージを送信する、又は、取引注文に関する１つ又は複数のパラメータ（例えば注文の価格および／又は数量）を手動で入力する。別の例として、取引アプリケーションが提供する自動取引ツールは、取引注文に関する１つ又は複数のパラメータを計算して注文メッセージを自動的に送信する。ある例では、自動取引ツールは、送信用のメッセージを作成するがユーザからの確認がなければ実際にはそれを送信しない。
【００８４】
注文メッセージは、１つ又は複数のデータパケットにて、又は、共有のメモリシステムを介して送信される。例えば、注文メッセージは、取引デバイス１８１０からゲートウェイ１８２０を介して取引所１８３０へ送信される。取引デバイス１８１０は例えば、ローカルエリアネットワーク、広域ネットワーク、無線ネットワーク、バーチャルプライベートネットワーク、セルラーネットワーク、ピアツーピアネットワーク、Ｔ１ライン、Ｔ３ライン、総合デジタル通信網（「ＩＳＤＮ」）ライン、ポイント・オブ・プレゼンス、インターネット、共有メモリシステム、および／又はトレーディングテクノロジーズ社によって提供されるＴＴＮＥＴのような独自ネットワークを使用して、ゲートウェイ１８２０と通信する。
【００８５】
ゲートウェイ１８２０は、１つ又は複数の電子計算プラットフォームを含んでもよい。例えば、ゲートウェイ１８２０は、１つ又は複数のであるクトップコンピュータ、ハンドヘルドデバイス、ラップトップ、サーバ、ポータブルコンピューティングデバイス、取引端末、埋め込み取引システム、シングル／マルチコアプロセッサを搭載したワークステーション、「ブラックボックス」又は「グレーボックス」などのアルゴリズム取引システム、コンピュータのクラスタ、又はそれらの任意の組み合わせとして実装されてもよい。
【００８６】
ゲートウェイ１８２０は、通信を容易にするものであってもよい。例えば、ゲートウェイ１８２０は、取引デバイス１８１０と取引所１８３０の間で通信されるデータのプロトコル変換を実行する。ゲートウェイ１８２０は例えば、取引デバイス１８１０から受信した注文メッセージを取引所１８３０によって判別可能なデータ形式に処理する。同様に、ゲートウェイ１８２０は例えば、取引所１８３０から受信した取引所の固有形式による市場データを取引デバイス１８１０によって判別可能な形式に変換する。
【００８７】
ゲートウェイ１８２０は、上述の取引アプリケーションと同様に、電子取引を容易にする又は向上させる取引アプリケーションを含んでもよい。例えば、ゲートウェイ１８２０は、取引デバイス１８１０からの注文を追跡して、当該注文のステータスを取引所１８３０から受信した約定確認に基づいて更新する取引アプリケーションを有してもよい。別の例として、ゲートウェイ１８２０は、取引市場１８３０からのデータを合体してそれを取引デバイス１８１０に提供する取引アプリケーションを有してもよい。さらに別の例では、ゲートウェイ１８２０は、リスク処理を提供する、インプライド（implieds）を計算する、注文処理を取り扱う、市場データ処理を取り扱う、又はそれらの組み合わせを行う取引アプリケーションを含んでもよい。
【００８８】
ある実施形態において、ゲートウェイ１８２０は例えば、ローカルエリアネットワーク、広域ネットワーク、無線ネットワーク、仮想プライベートネットワーク、セルラーネットワーク、ピアツーピアネットワーク、Ｔ１回線、Ｔ３回線、ＩＳＤＮ回線、ポイント・オブ・プレゼンス、インターネット、共有メモリシステムおよび／又はトレーディングテクノロジーズ社によって提供されるＴＴＮＥＴのような独自ネットワークを使用して、取引所１８３０と通信する。
【００８９】
取引所１８３０は、取引所における団体によって所有、操作、制御、又は使用されてもよい。例示的な取引所の団体には、ＣＭＥグループ、ロンドン国際金融先物オプション取引所、インターコンチネンタル取引所、およびユーレックスが含まれる。取引所１８３０は、例えば取引所によって取引のために提供される取引可能オブジェクトの売買を可能とするように構成されたコンピュータ、サーバ又はその他のコンピューティングデバイスなどの電子マッチングシステムを含んでもよい。取引所１８３０は、一部は取引可能オブジェクトをリスト化および／又は管理し、他は注文を受信してマッチングするような、別々の団体を有してもよい。取引所１８３０は例えば、電子通信ネットワーク（「ＥＣＮ」）を含む。
【００９０】
取引所１８３０は、電子取引所であってもよい。取引所１８３０は、注文メッセージを受信し、取引可能オブジェクトを売買するための相対する取引注文のマッチングを行うように構成される。マッチングされなかった取引注文は、取引所１８３０によって後の取引用にリスト化される。取引可能オブジェクトを買う又は売るための注文が取引所によって受信され確認されると、当該注文は、約定されるかキャンセルされるまで、実行中の注文とみなされる。注文の数量の一部のみがマッチングする場合には、部分的にマッチングされた注文は、実行中の注文のままである。取引注文には例えば、取引デバイス１８１０から又は取引所１８３０と通信しているその他のデバイスから受信した取引注文を含んでもよい。例えば、取引所１８３０は通常、マッチング対象となる取引注文を提供する様々なデバイス（取引デバイス１８１０に類似するものであってもよい）と通信する。
【００９１】
取引所１８３０は、市場データを提供するように構成される。市場データは、１つ又は複数のメッセージ又はデータパケットにて、又は共有メモリシステムを介して提供されてもよい。取引所１８３０は例えば、取引デバイス１８１０又はゲートウェイ１８２０などの契約デバイスに対してデータフィードを公開する。データフィードには、市場データが含まれる。
【００９２】
システム１８００は、付加的な、異なる、又は、より少ない数のコンポーネントを含んでもよい。例えば、システム１８００は、複数の取引デバイス、ゲートウェイ、および／又は取引所を含む。別の例では、システム１８００は、ミドルウェア、ファイアウォール、ハブ、スイッチ、ルータ、サーバ、取引所固有の通信機器、モデム、セキュリティマネージャーおよび／又は暗号化／復号化装置など、その他の通信デバイスを含んでもよい。
【００９３】
ＩＸ．拡張された電子取引システムの例
図１９は、ある実施形態を採用可能な別の例示的な電子取引システム１９００のブロック図を示す。この例では、この例では、取引デバイス１９１０は、１つ又は複数の通信ネットワークを利用してゲートウェイ１９２０および取引所１９３０と通信する。例えば、取引デバイス１９１０はネットワーク１９０２を利用してゲートウェイ１９２０と通信し、ゲートウェイ１９２０は、ネットワーク１９０４、１９０６を利用して取引所１９３０と通信する。本明細書では、ネットワークにより、取引デバイス１９１０、ゲートウェイ１９２０および取引所１９３０などのコンピューティングデバイス間の通信を促進又は可能にする。
【００９４】
以下の説明は一般的に、取引デバイス１９１０、ゲートウェイ１９２０および取引所１９３０に焦点を当てている。しかしながら、取引デバイス１９１０は、（個々にゲートウェイ１９２０ａ−１９２０ｎとして特定され、ゲートウェイ１９２０と類似し得る）「ｎ」個の付加的ゲートウェイと、（個々に取引所１９３０ａ−１９３０ｎとして特定され、取引所１９３０と類似し得る）「ｎ」個の付加的取引所と、ネットワーク１９０２（又はその他の類似のネットワーク）により接続および通信を行う。付加的ゲートウェイと付加的取引所の間の通信のために、（個々にネットワーク１９０４ａ―１９０４ｎ、１９０６ａ―１９０６ｎとして特定され、ネットワーク１９０４、１９０６のそれぞれに類似し得る）追加のゲートネットワークを利用してもよい。取引デバイス１９１０と、付加的取引所１９３０ａ−１９３０ｎのそれぞれとの通信は、取引デバイス１９１０と取引所１９３０との通信と同じである必要はない。一般的に、それぞれの取引所は、取引デバイス、ゲートウェイ、ユーザ又は別の取引所との通信用の独自の好ましい技術および／又はフォーマットを有している。ゲートウェイ１９２０ａ―１９２０ｎと、取引所１９３０ａ―１９３０ｎとの間における１対１のマッピングは必ずしも必要ではない。例えば、特定のゲートウェイが、複数の取引所と通信してもよい。別の例として、複数のゲートウェイが同じ取引所と通信してもよい。このような構成によれば、例えば、１つ又は複数の取引デバイス１９１０は、複数の取引所にて取引すること（および／又は複数の取引所への冗長接続を提供すること）が可能になる。
【００９５】
（取引デバイス１９１０と類似し得る）付加的取引デバイス１９１０ａ−１９１０ｎは、ゲートウェイ１９２０ａ−１９２０ｎのうちの１つ又は複数および取引所１９３０ａ−１９３０ｎの１つ又は複数に接続されてもよい。例えば、取引デバイス１９１０ａは、ゲートウェイ１９２０ａおよびネットワーク１９０２ａ、１９０４ａ、１９０６ａを介して、取引所１９３０ａと通信する。別の例では、取引デバイス１９１０ｂは、取引所１９３０ａと直接通信する。別の例では、取引デバイス１９１０ｃは、プロキシ、リモートホスト又はＷＡＮルータなどの中間デバイス１９０８を介してゲートウェイ１９２０ｎと通信する。
【００９６】
（図１８に示す取引デバイス１８１０と類似し得る）取引デバイス１９１０は、取引端末１９１４と通信するサーバ１９１２を含んでもよい。サーバ１９１２は、レイテンシーを低減するために、取引端末１９１４よりもゲートウェイ１９２０に対して地理的に近い位置に配置されてもよい。運転中において、取引端末１９１４は、ユーザに取引画面を提供するとともに、さらなる処理のためにサーバ１９１２にコマンドを送信してもよい。例えば、取引アルゴリズムは、市場データに基づく実行のためにサーバ１９１２に展開されてもよい。サーバ１９１２は、ユーザからのさらなる入力なしで取引アルゴリズムを実行してもよい。別の例では、サーバ１９１２は、自動取引ツールを提供する取引アプリケーションを含むとともに、取引端末１９１４と再び通信するものであってもよい。取引デバイス１９１０は、付加的な、異なる、又はより少ない数のコンポーネントを含んでもよい。
【００９７】
動作中において、ネットワーク１９０２は、取引デバイス１９１０がゲートウェイ１９２０と通信することを可能にするためのマルチキャストネットワークであってもよい。ネットワーク１９０２上のデータは、例えば価格、注文又は約定などの項目に応じて論理的に分割されてもよい。その結果、サーバ１９１２および取引端末１９１４は、それらの個々のニーズに応じて契約し、データ（例えば価格、注文又は約定に関連するデータ）の受信を行うことができる。
【００９８】
（図１８に示すゲートウェイ１８２０と類似し得る）ゲートウェイ１９２０は、価格サーバ１９２２と、注文サーバ１９２４と、約定サーバ１９２６とを備える。ゲートウェイ１９２０は、付加的な、異なる、又はより少ない数のコンポーネントを含んでもよい。価格サーバ１９２２は、価格データの処理を行う。価格データには、１つ又は複数の取引可能オブジェクトのための市場に関連するデータが含まれる。注文サーバ１９２４は、注文データを処理する。注文データは、ユーザの取引注文に関連するデータである。例えば、注文データには、注文メッセージ、確認メッセージ、又はその他のタイプのメッセージが含まれてもよい。約定サーバは、約定データを収集および提供する。約定データには、取引注文の１つ又は複数の約定に関連するデータが含まれる。例えば、約定サーバ１９２６は、サーバ１９２４を介してルーティングされた、約定済み又は未約定の取引注文の記録を提供する。サーバ１９２２、１９２４、１９２６は、同じ機械又は別の機械で実行されてもよい。ゲートウェイ１９２０のために、価格サーバ１９２２、注文サーバ１９２４、および／又は約定サーバ１９２６の複数のインスタンスが存在してもよい。ある実施形態では、付加的ゲートウェイ１９２０ａ−１９２０ｎのそれぞれが、（個々にサーバ１９２２ａ−１９２２ｎ、１９２４ａ−１９２４ｎ、１９２６ａ−１９２６ｎとして特定される）サーバ１９２２、１９２４、１９２６のインスタンスを含む。
【００９９】
ゲートウェイ１９２０は、１つ又は複数の通信ネットワークを使用して取引所１９３０と通信する。図１９に示すように、例えば、ゲートウェイ１９２０と取引所１９３０を接続する２つの通信ネットワークが存在してもよい。ネットワーク１９０４は、価格サーバ１９２２に市場データを通信するために使用されてもよい。ある例では、取引所１９３０は、このような市場データを、契約デバイスに公開されたデータフィード内に含む。ネットワーク１９０６は、注文データを注文サーバ１９２４および約定サーバ１９２６に通信するために使用されてもよい。ネットワーク１９０６は、注文データを注文サーバ１９２４から取引所１９３０に通信するために使用されてもよい。
【０１００】
（図１８に示す取引所１８３０と類似し得る）取引所１９３０は、注文ブック１９３２と、マッチングエンジン１９３４とを備える。取引所１９３０は、付加的な、異なる、又はより少ない数のコンポーネントを含んでもよい。注文ブック１９３２は、取引所１９３０に提出されたもののマッチングされていない取引注文の数量に関連するデータを含んだデータベースである。例えば、注文ブック１９３２は、内部市場、様々な価格レベルの市場深度、最終取引価格、および最終取引数量など、取引可能オブジェクトのための市場に関連するデータを含む。マッチングエンジン１９３４は、注文ブック１９３２にて係属中の相対するビッドとオファーをマッチングする。例えば、マッチングエンジン１９３４は、相対するビッドとオファーをマッチングする１つ又は複数のマッチングアルゴリズムを実行してもよい。売り注文は、同じ価格の買い注文と相対する注文である。同様に、買い注文は、同じ価格の売り注文に相対する注文である。マッチングアルゴリズムは例えば、同じ価格の相対するビッドとオファーをマッチングする。ある実施形態では、付加的取引所１９３０ａ−１９３０ｎのそれぞれが、（個々に注文ブック１９３２ａ−１９３２ｎおよびマッチングエンジン１９３４ａ―１９３４ｎと特定され、注文ブック１９３２およびマッチングエンジン１９３４のそれぞれと類似し得る）注文ブックおよびマッチングエンジンを含む。注文に関連するデータの追跡および注文のマッチングを行うために、異なる取引所が異なるデータ構造およびアルゴリズムを使用してもよい。
【０１０１】
動作中において、取引所１９３０は、注文ブック１９３２から価格サーバ１９２２に価格データを提供するとともに、マッチングエンジン１９３４から注文サーバ１９２４および／又は約定サーバ１９２６に注文データおよび／又は約定データを提供してもよい。サーバ１９２２、１９２４、１９２６は、これらのデータを処理して、取引デバイス１９１０に通信して戻すようにしてもよい。取引デバイス１９１０は例えば、取引アプリケーションを使用してこのデータを処理する。データは例えば、ユーザに表示される。別の例では、取引アルゴリズムがデータを利用して、取引所１９３０に取引注文を提出すべきかどうかを決定する。取引デバイス１９１０は、注文メッセージを準備し取引所１９３０に送信してもよい。
【０１０２】
ある実施形態では、ゲートウェイ１９２０は、取引デバイス１９１０の一部である。例えば、ゲートウェイ１９２０のコンポーネントは、取引デバイス１９１０と同じ計算プラットフォームの一部であってもよい。別の例として、ゲートウェイ１９２０の機能は、取引デバイス１９１０のコンポーネントによって実行されてもよい。ある実施形態では、ゲートウェイ１９２０は存在しない。このような構成は例えば、取引デバイス１９１０が取引所１９３０と直接通信するように構成されているときなど、取引デバイス１９１０が取引所１９３０と通信するためにゲートウェイ１９２０を利用する必要がない場合に生じる。
【０１０３】
Ｘ．市場データを含む調整済みメッセージング
本明細書に記載されたメッセージ調整技術は、取引所（例えば、図１８の取引所１８３０ ）から受信した市場データ（例えば、内部市場、市場深度、インプライド(implieds)）を、取引システムにおけるデバイスとその他のコンポーネントとの間の通信を取り扱うゲートウェイ（例えば、図１８のゲートウェイ１８２０）又はサーバを通じて取引デバイス（例えば、図１８の取引デバイス１８１０）に提供するために使用されてもよい。例えば、サブスクリプション制御モジュール（例えば、図２、図３のサブスクリプション制御モジュール２０１）は、ゲートウェイ１８２０のコンポーネントあるいは分散型取引環境へのエッジサーバであってもよい。取引デバイス１８１０は、直近に受信したナップショットをベースとして使用するとともに、直近に受信したデルタスナップに含まれるアクションを適用することにより、取引可能オブジェクトに関する市場の現在の状態を再構築する。
【０１０４】
サブスクリプション制御モジュール２０１のデータソース受信部３０２（図３）は、取引可能オブジェクトに関する取引所１８３０からの市場データを受信又はそれ以外の方法で取得する。データフォーマット部３０４（図３）は、市場データをデータレベル（例えば、図７Ａ、７Ｂのデータレベル７０２ａ−７０２ｆ）に編成する。データレベルは、（例えば、最高のビッドおよび／又は最低のアスクを含む）第１のデータレベルにおける取引可能オブジェクトの内部市場と、（例えば、２番目に高いビッドおよび／又は２番目に高いアスクを含む）第２のデータレベルにおける市場深度の第１のレベルを含む。場合によっては、データフォーマット部３０４は、取引可能オブジェクトのインプライド市場をデータレベルで構成する。
【０１０５】
サブスクリプション制御モジュール２０１がスナップショット（例えば、図１１のスナップショット１１０６）を生成しているときに、データフォーマット部３０４はヘッダ（例えば、図８Ａのヘッダ８０２）を生成し、当該ヘッダを市場深度データレベルの先頭に追加する。場合によっては、データフォーマット部は、市場深度データレベルの後にインプライド市場データレベルを付加する。場合によっては、データフォーマット部は、対応する市場深度データレベルを含むインプライド市場データ値を含む。結果はその後、一次バッファ（例えば、図３の一次バッファ３０６）に配置される。場合によっては、データフォーマット部は、一次バッファ３０６又は別のメモリに記憶するための分割テーブル（例えば、図１０の分割テーブル１００８）を生成する。
【０１０６】
サブスクリプション制御モジュール２０１がデルタスナップ（例えば、図１１のデルタスナップ１１０８ａ）を生成しているときに、データフォーマット部３０４はヘッダを生成し、当該ヘッダを二次バッファ（例えば、図３の二次バッファ３０８）に配置する。データフォーマット部は、（直近に生成されたスナップショットを含む）一次バッファ３０６に記憶されている市場深度レベルを現在の市場データレベルと比較し、その差を反映するアクション（例えば、図８Ｂのアクション８１４）を生成する。アクション８１４は、生成されるとバッファに追加される。場合によっては、アクションを追加した後に、データフォーマット部は、二次バッファ３０８内のメッセージが一次バッファ３０６内のメッセージよりも大きいか否かを確認する。二次バッファ３０８内のメッセージが大きい場合、データフォーマット部３０４は、代わりにスナップショットを生成する。場合によっては、データフォーマット部３０４は、インプライド市場データレベルに関するアクションを生成する。さらに、データフォーマット部は、二次バッファ３０８又は別のメモリに記憶するための分割テーブル１００８を生成する。
【０１０７】
図２０Ａ、２０Ｂは、市場深度に関する多くの数のデータレベルにおける市場データを提供するためのスナップショット用およびデルタスナップ用の例示的な調整可能メッセージを示す。図２０Ａは、市場深度に関する多くの数のデータレベルにおける市場データを提供するための例示的な調整可能スナップショットメッセージ２０００を示す。調整可能スナップショットメッセージ２０００は、ヘッダ２００２と、市場深度データレベル２０１８とを含む。場合によっては、調整可能スナップショットメッセージ２０００はまた、インプライド市場データレベルを含む。図示の例では、インプライド市場データレベル２０２０は、市場深度データレベル２０１８（例えば、第１の市場深度、第１のインプライド市場深度、第２の市場深度、第２のインプライド市場深度）とともにインタレースされる。インタレースすることにより、インプライド市場データレベル２０２０を市場深度データレベル２０１８と同じレベルへ切り捨てすることができる。インタレースには、特定の受信部がそれを要求しない場合でも、インプライド市場データレベル２０２０を調整済みメッセージ２０４とともに送信することが必要である。あるいは、場合によっては、インプライド市場データレベル２０２０は、調整可能スナップショットメッセージ２０００の最後に編成することができる。このような例では、市場深度データレベル２０１８およびインプライド市場データレベル２０２０は、別々に切り捨て可能（truncatable）ではない。
【０１０８】
図示の例では、ヘッダ２００２は、サイズパラメータ２００８、インプライドパラメータ２０１０、アスク深度パラメータ２０１２ａ、ビッド深度パラメータ２０１２ｂ、インプライドアスク深度パラメータ２０１４ａおよびインプライドビッド深度パラメータ２０１４ｂを含む。サイズパラメータ２００８は、バッファ（例えば、一次バッファ３０６、二次バッファ３０８）内の調整可能スナップショットメッセージ２０００のサイズを提供する。分割テーブル１００８が調整可能スナップショットメッセージ２０００の最後に追加された場合、サイズパラメータ２００８は、分割テーブル１００８の始点を決定するために使用することができる。
【０１０９】
図２０Ａに示す例では、インプライドパラメータ２０１０は、調整可能スナップショットメッセージ２０００の中にインプライド市場データレベル２０２０が含まれているか否かを示す。アスク深度パラメータ２０１２ａは、調整可能スナップショットメッセージ２０００におけるアスクレベル２０１７ａを含む市場深度データレベル２０１８の数を示す。ビッド深度パラメータ２０１２ｂは、調整可能スナップショットメッセージ２０００におけるビッドレベル２０１７ｂを含む市場深度データレベル２０１８の数を示す。場合によっては、アスク深度パラメータ２０１２ａとビッド深度パラメータとは等しくない。例えば、取引可能オブジェクトに関する市場は、アスクレベル２０１７ａよりも多くのビッドレベル２０１７ｂと非対称である（またはその逆であってもよい）。インプライドアスク深度パラメータ２０１４ａは、調整可能スナップショットメッセージ２０００に含まれるアスクレベル２０１７ａを含むインプライド市場データレベル２０２０の数を示す。インプライドビッド深度パラメータ２０１４ｂは、調整可能スナップショットメッセージ２０００に含まれるビッドレベル２０１７ｂを含むインプライド市場データレベル２０２０の数を示す。調整可能スナップショットメッセージ２０００にインプライド市場データレベル２０２０が含まれていないことをインプライドパラメータ２０１０が示している場合、インプライドアスク深度パラメータ２０１４ａおよびインプライドビッド深度パラメータ２０１４ｂがヘッダ２００２に含まれない場合がある。
【０１１０】
図２０Ａに示す例では、深度データレベル２０１８は、ビッドレベル２０１７ａに関する価格と数量（サイズとも呼ばれる）、および／又は、アスクレベル２０２７ａに関する価格と数量（サイズとも呼ばれる）を含む（例えば、市場深度は対称的ではなく、ビッドレベルよりもアスクレベルの方が多い、あるいはその逆である）。例えば、第１の深度データレベル２０１８は、アスクレベル２０１７ｂとビッドレベル２０１７ｂの両方を有する一方で、取引可能オブジェクトに関する市場が非対称であるため、第２の深度データレベル２０１８はアスクレベル２０１７ａのみを含む場合がある。効率のため、第１の深度データレベルの後の深度データレベル２０１８は、アスクオフセット２０１９ａやビッドオフセット２０１９ｃなどの価格オフセット（例えば、ビッド／アスクレベルの価格は、前の深度データレベル２０１８に含まれていた価格に対するものである）と、アスクサイズ２０１９ｂやビッドサイズ２０１９ｄなどの数量（サイズとも呼ばれる）とを含んでもよい。価格の値は６４ビット（８バイト）の値で表すことができるため、後続の価格値を特定するための相対的オフセットである８ビット（１バイト）を使用して、送信する必要があるデータ量を削減することができる。
【０１１１】
図示の例では、インプライド深度データレベル２０２０は、インプライド市場の深度に関する価格およびサイズを含む。付加的または代替的に、インプライド深度データレベル２０２０は、深度データレベル２０１８に関して上述したものと同様のサイズと価格オフセット（例えば、価格は、前のインプライド深度データレベル２０２０に含まれる価格に対する相対的なものである）とを含む。サブスクリプション制御モジュール２０１のメッセージ送信部３１０（図３）は、特定の取引可能オブジェクトに関する市場に加入している受信デバイス（例えば、取引デバイス１８１０）との接続（例えば、図１１の第１の接続１１０２ａ、図１１の第２の接続１１０２ｂ）を確立することができる。メッセージ送信部３１０は、取引デバイス１８１０からプリファレンスを受信する。例示的なプリファレンスには、受信すべき市場深度のレベルの数、および／又は、好ましい送信レート（例えば、デルタスナップを送信する頻度）を含む。インプライド市場データレベル２０２０が市場深度データレベル２０１８とインタレースされていないときに、受信デバイス２０６がインプライド市場の任意のレベルに対するプリファレンスを設定した場合、受信デバイス２０６は全てのレベルの市場深度を受信する。
【０１１２】
調整済みスナップショットメッセージ（例えば、図２の調整済みメッセージ２０４）を送信するために、メッセージ送信部３１０は、一次バッファ３０６から調整可能スナップショットメッセージ２０００の一部を使用する。場合によっては、メッセージ送信部は、分割テーブル１００８上で使用するために調整可能スナップショットメッセージ２０００の一部を検索する。メッセージ送信部３１０はその後、取引デバイス１８１０に調整済みメッセージ２０４を送信する
【０１１３】
場合によっては、受信部にとって好ましい数のレベルを達成するための調整可能スナップショットメッセージ２０００を切り捨てる量を決定するために、メッセージ送信部３１０は、取引デバイス１８１０に送信するための一次バッファ３０６のバイト数を算出する。そのような例において、送信すべきバイト数は、以下の式（４）、式（５）および式（６）により算出することができる。
式（４）：ＢＬ＝（ＭＤ１＋ＡＢＢ×ｎ）×２（１＋Ｉ）
ここで、ＢＬは、送信すべきバッファ内の調整可能メッセージのバイトの長さに関する上限であり、ＭＤ１は、第１の市場深度データレベル２０１８と次の市場深度データレベル２０１８のバイト数の差のサイズであり（次の市場深度データレベルが価格オフセットを利用している場合）、ＡＢＢは、次の市場深度データレベル２０１８のバイトのサイズであり、ｎは、市場深度の所望のレベルの数であり、Ｉは、インプライドパラメータ２０１０である（例えば、Ｉ＝０はインプライド市場データがないことを示し、Ｉ＝１は１つのインプライド市場データが含まれることを示す）。
式（５）：ＢＲ＝ＡＢＢ×（ｍｉｎ（０、ｎ−ｂ）＋ｍｉｎ（０、ｎ−ａ）＋ｍｉｎ（０、ｎ−ｉｂ）＋ｍｉｎ（０、ｎ−ｉａ））
ここで、ＢＲは、ビッド／アスクのレベルが非対称である場合に減らすべきバイト数であり、ＡＢＢは、次の（すなわち第１ではない）市場深度データレベル２０１８（価格オフセットが使用される場合に第１の市場深度データレベル２０１８とは異なるものである）のバイトのサイズであり、ｎは、市場深度における所望のレベルの数であり、ｂは、ビッド深度パラメータ２０１２ｂであり、ａは、アスク深度パラメータ２０１２ａであり、ｉｂは、インプライドビッド深度パラメータ２０１４ｂであり、ｉａは、インプライドアスク深度パラメータ２０１４ａである。
式（６）：ＢＳ＝ＢＬ−ＢＲ
ここで、Ｂｓは、調整可能スナップショットメッセージ２０００における調整可能レベル部分のうち送信するためのバイト数である。例えばヘッダ２００２を含む調整可能スナップショットメッセージ２０００を保持するバッファの先頭からのメッセージのサイズを決定するために、当該ヘッダに関する付加的なバイトがＢｓに付加され、送信すべきトータルのバイト数が決定される。メッセージ送信部３１０はその後、調整可能スナップショットメッセージ２０００からのバイト数の計算値を含む調整済みメッセージ２０４を取引デバイス１８１０に送信する。
【０１１４】
図２０Ｂは、市場深度における多くのデータレベルでの市場データに対する更新を提供するための例示的な調整可能デルタスナップメッセージ２０２２を示す。調整可能デルタスナップメッセージ２０２２は、ヘッダ２００２と、市場深度データレベル更新２０２６とを含む。場合によっては、調整可能デルタスナップメッセージ２０２２はさらに、インプライド市場深度更新データレベルを含む。図示の例では、インプライド市場深度更新データレベル２０２８は、市場深度データレベル更新２０２６とインタレースされる。あるいは、調整可能デルタスナップメッセージ２０２２は、メッセージの最後においてインプライド市場深度更新データレベル２０２８とともに配置される（例えば、インプライド市場深度更新データレベル２０２０が調整可能スナップショットメッセージ２０００の末尾に配置される場合）。
【０１１５】
図示の例では、ヘッダ２００２は、サイズパラメータ２００８、インプライドパラメータ２０１０、アスク深度パラメータ２０１２ａ、ビッド深度パラメータ２０１２ｂ、インプライドアスク深度パラメータ２０１４ａおよびインプライドビッド深度パラメータ２０１４ｂを含む。サイズパラメータ２００８は、バッファ（例えば、一次バッファ３０６、二次バッファ３０８）内における調整可能デルタスナップメッセージ２０２２のサイズを提供する。分割テーブル１００８が調整可能デルタスナップメッセージ２０２２の末尾に付加されている場合には、分割テーブル１００８の開始点を決定するためにサイズパラメータ２００８を使用することができる。
【０１１６】
図２０Ｂに示す例では、インプライドパラメータ２０１０は、調整可能デルタスナップメッセージ２０２２の中にインプライド市場データレベル更新２０２８が含まれるかどうかを示す。アスク更新パラメータ２０２３ａは、調整可能デルタスナップメッセージ２０２２内におけるアスク値２０１７ａを含む市場深度データレベル更新２０２６の数を示す。ビッド更新パラメータ２０２３ｂは、調整可能デルタスナップメッセージ２０２２内におけるビッド値２０１７ｂを含む市場深度データレベル更新２０２６の数を示す。インプライドアスク更新パラメータ２０２４ａは、調整可能デルタスナップメッセージ２０２２内におけるアスク値２０１７ａを含むインプライド市場データレベル更新２０２８の数を示す。インプライドビッド更新パラメータ２０２４ｂは、調整可能デルタスナップメッセージ２０２２内におけるビッド値２０１７ｂを含むインプライド市場データレベル更新２０２８の数を示す。調整可能デルタスナップメッセージ２０２２内にインプライド市場データレベル更新２０２８が含まれていないことをインプライドパラメータ２０１０が示す例において、インプライドアスク深度パラメータ２０２４ａとインプライドビッド深度パラメータ２０２４ｂはヘッダ２００２に含まれない場合がある。
【０１１７】
図２０Ｂに示す例では、内部市場又は各市場深度のアスク価格、アスクサイズ、ビッド価格および／又はビッドサイズが最後のスナップショットから変化しているときに、調整可能デルタスナップメッセージ２０２２の中に市場深度データレベル更新２０２６が含まれている。例えば、内部市場および第１の市場深度が変化しておらず、第２の市場深度のビッドサイズが変化している場合、調整可能デルタスナップメッセージ２０２２は、第２の市場深度に関する市場深度データレベル更新２０２６を含む。場合によっては、それぞれのインプライド市場深度のアスク価格、アスクサイズ、ビッド価格および／又はビッドサイズが最後のスナップショットから変化しているときに、調整可能デルタスナップメッセージ２０２２の中にインプライド市場データレベル更新２０２８が含まれる。
【０１１８】
図２０Ｂに示す例では、調整可能デルタスナップメッセージ２０２２に含まれる市場深度データレベル更新２０２６および／又はインプライド市場深度データレベル更新２０２８は、１つ又は複数のアクション２０３０を含む。アクション２０３０は、アクションリファレンス２０３２、インデックス２０３４、オフセット２０３６、価格２０３８および／又はサイズ２０４０を含んでもよい。取引デバイス１８１０に対するアクションで識別されるアクションリファレンス２０３２は、それぞれの更新の実装を実行するものである。インデックス２０３４は、アクションが実行されるデータレベルを識別するものである。オフセット２０３６は、指定された値を変更するための数量を特定するものである。例えば、修正価格アクションのために、オフセット２０３６は、価格が調整されるべき数量を特定するものである。価格２０３８は、データレベルの価格が設定される値を特定するものである。サイズ２０４０は、データレベルのサイズが設定される値を識別する。アクションリファレンス２０３０の例を以下の表２に記載する。
【０１１９】
【表２】
2020074221.tif 000004
【０１２０】
取引デバイス１８１０に調整済みデルタスナップメッセージ（例えば、図２の調整済みメッセージ２０４）を送信するために、メッセージ送信部３１０は、二次バッファ３０８からの調整可能デルタスナップメッセージ２０２２の一部を使用する。場合によっては、メッセージ送信部は、分割テーブル１００８で使用するための調整可能デルタスナップメッセージ２０２２の部分を検索する。メッセージ送信部３１０はその後、調整済みメッセージ２０４を取引デバイス１８１０に送信する。
【０１２１】
場合によっては、調整可能デルタスナップメッセージ２０２２の切り捨てを行うために、メッセージ送信部３１０は、取引デバイス１８１０に送信する二次バッファ３０８のバイト数を算出する。バイト数を計算するために、市場深度データレベル更新２０２６およびインプライド市場深度データレベル更新２０２８がトラバースされ、二次バッファ３０８内における計算された位置が決定される。受信デバイス２０６のプリファレンスによって設定された深度リミット（Ｎ）を上限として、インデックス２０３４を有するアクション２０３０に関して、「削除」アクション（Ｄ）を有するアクションリファレンス２０３２の数がカウントされ、「追加」アクション（例えば、「追加」、「一番上に追加」、「相対追加」）を有する追加リファレンス２９３２の数がカウントされる。二次バッファ３０８内のアクション２０３０が、Ｎ＋Ｄ―Ａインデックスに対応する最後のアクション２０３０の最後を上限としてトラバースされる。この場所は計算された位置である。メッセージ送信部３１０はその後、計算された位置によって示されるバイト数を含む調整済みメッセージ２０４を調整可能デルタスナップメッセージ２０２２から取引デバイス１８１０へ送信する。
【０１２２】
図面のいくつかは、ある実施形態の全て又は一部を実現するために使用可能な例示的なブロック図、システムおよび／又はフロー図を示す。例示的なブロック図、システムおよび／又はフロー図における１つ又は複数のコンポーネント、エレメント、ブロックおよび／又は機能は例えば、ハードウェア、ファームウェア、（有形コンピュータ読み取り可能媒体に記憶されたコンピュータ読み取り可能な命令のセットとしての）ディスクリートロジック、および／又はそれらの任意の組み合わせにて、単独又は組み合わせて実装されてもよい。
【０１２３】
例示的なブロック図、システムおよび／又はフロー図は例えば、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）、フィールドプログラマブルロジックデバイス（ＦＰＬＤ）、離散論理、ハードウェアおよび／又はファームウェアの任意の組み合わせを使用して実現される。また、例示的な方法のいくつか又はその全ては例えば、手動で又は上述の技術と組み合わせて実行されてもよい。
【０１２４】
例示的なブロックダイアグラム、システムおよび／又はフロー図は例えば、１つ又は複数のプロセッサ、コントローラおよび／又はその他の処理デバイスを用いて行われる。例えば、その例としては、有形のコンピュータ読み取り可能媒体に記憶されたコンピュータ読み取り可能な命令などのコード化された命令を使用して実行される。有形コンピュータ読み取り可能媒体は例えば、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、プログラマブル読み出し専用メモリ（ＰＲＯＭ）、電気的プログラマブル読み出し専用メモリ（ＥＰＲＯＭ）、電気的消去可能読み出し専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリ、ハードディスクドライブ、光媒体、磁気テープ、ファイルサーバ、その他の任意の有形データ記憶デバイス、又はそれらの任意の組み合わせなど、様々なタイプの揮発性および不揮発性の記憶媒体を含む。有形コンピュータ読み取り可能媒体は、不揮発性である。
【０１２５】
さらに、例示的なブロック図、システムおよび／又はフロー図について図面を参照しながら説明したが、その他の実現形態も可能である。例えば、コンポーネント、エレメント、ブロックおよび／又は機能の実行順序を変更可能である、および／又は、説明したコンポーネント、エレメント、ブロックおよび／又は機能のうちのいくつかを変更、削除、細分化又は組み合わせてもよい。さらに、コンポーネント、エレメント、ブロックおよび／又は機能のいずれか又はその全ては、例えば別個の処理スレッド、プロセッサ、デバイス、離散論理および／又は回路によって、直列および／又は並列に実現されてもよい。
【０１２６】
複数の実施形態について開示したが、様々な変更が可能であり、均等物によって置換されてもよい。さらに、特定の状況又は材料を適合させるように多くの修正を行ってもよい。このように、開示された技術は、開示したある実施形態に限定されるものでなく、添付の特許請求の範囲に含まれる全ての実施形態を包含することが意図される。
【図１】
2020074221.tif 000005
【図２】
2020074221.tif 000006
【図３】
2020074221.tif 000007
【図４】
2020074221.tif 000008
【図５】
2020074221.tif 000009
【図６】
2020074221.tif 000010
【図７Ａ】
2020074221.tif 000011
【図７Ｂ】
2020074221.tif 000012
【図８Ａ】
2020074221.tif 000013
【図８Ｂ】
2020074221.tif 000014
【図９】
2020074221.tif 000015
【図１０】
2020074221.tif 000016
【図１１】
2020074221.tif 000017
【図１２】
2020074221.tif 000018
【図１３】
2020074221.tif 000019
【図１４】
2020074221.tif 000020
【図１５】
2020074221.tif 000021
【図１６】
2020074221.tif 000022
【図１７】
2020074221.tif 000023
【図１８】
2020074221.tif 000024
【図１９】
2020074221.tif 000025
【図２０Ａ】
2020074221.tif 000026
【図２０Ｂ】
2020074221.tif 000027
【手続補正書】
【提出日】令和2年2月4日(2020.2.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の受信者に更新メッセージを送信する方法であって、更新メッセージは、データソースから受信したデータに基づいてコンピューティングデバイスによって生成され、当該データは、異なる時間におけるデータソースの状態を示すものであり、
第１の時間におけるデータソースの状態の受信に応じて、コンピューティングデバイスにより、第１の時間におけるデータソースの状態を表す第１のスナップショットメッセージを生成するステップ、
コンピューティングデバイスにより、複数の受信者のうちの第１の受信者および第２の受信者に第１のスナップショットメッセージを送信するステップ、
第２の時間におけるデータソースの状態の受信に応じて、コンピューティングデバイスにより、第２の時間におけるデータソースの状態と第１の時間におけるデータソースの状態との差を表す第１の更新メッセージを生成するステップ、
コンピューティングデバイスにより、第１の更新メッセージを第２の受信者ではなく第１の受信者に送信するステップ、
第３の時間におけるデータソースの状態の受信に応じて、コンピューティングデバイスにより、第３の時間におけるデータソースの状態と第１の時間におけるデータソースの状態との差を表す第２の更新メッセージを生成するステップ、
コンピューティングデバイスにより、第２の更新メッセージを第１の受信者および第２の受信者に送信するステップ、
を含む、方法。
【請求項２】
さらに、
第１の更新メッセージを第１の受信者に送信する前に、コンピューティングデバイスにより、第２の受信者ではなく第１の受信者に第１の更新メッセージを送信するように、第２の時間と第１の時間の差が、第１の受信者により特定される更新インターバルよりも長く、且つ第２の受信者により特定される更新インターバルよりも短いか否かを決定するステップ、
を含む、請求項１に記載の方法。
【請求項３】
さらに、
コンピューティングデバイスにより、スナップショットメッセージを第１のバッファ内に整理するステップ、
コンピューティングデバイスにより、第１のバッファ内のスナップショットメッセージの部分を用いて、第１のスナップショットメッセージを第１の受信者に送信するステップ、
コンピューティングデバイスにより、第１のバッファ内のスナップショットメッセージの部分を用いて、第１のスナップショットメッセージを第２の受信者に送信するステップ、
コンピューティングデバイスにより、第１のデルタスナップメッセージを第２のバッファ内に整理するステップ、
コンピューティングデバイスにより、第２のバッファ内の第１のデルタスナップメッセージの部分を用いて、第１の更新メッセージを第１の受信者に送信するステップ、
コンピューティングデバイスにより、第２のデルタスナップメッセージを第２のバッファ内に整理するステップ、
コンピューティングデバイスにより、第２のバッファ内の第２のデルタスナップメッセージの部分を用いて、第２の更新メッセージを第１の受信者に送信するステップ、
コンピューティングデバイスにより、第２のバッファ内の第２のデルタスナップメッセージの部分を用いて、第２の更新メッセージを第２の受信者に送信するステップ、
を含む、請求項１又は２に記載の方法。
【請求項４】
第１の受信者に送信される第２の更新メッセージは、第２のバッファ内の第２のデルタスナップメッセージの第１の部分であり、第２の受信者に送信される第２の更新メッセージは、第２のバッファ内の第２のデルタスナップメッセージの第２の部分である、請求項３に記載の方法。
【請求項５】
スナップショットメッセージを整理するステップは、第１の時間におけるデータソースの状態を複数の第１のデータレベルに体系化するステップをさらに含み、データレベルのそれぞれは、データソースからのデータの詳細レベルを特定するものであり、
第１のデルタスナップメッセージを整理するステップはさらに、
第２の時間におけるデータソースの状態を複数の第２のデータレベルに体系化するステップ、
第１のデータレベルと第２のデータレベルとの差を決定するステップ、
第１の更新メッセージに含める１つ又は複数のアクションを生成するステップ、ここで、当該アクションは、第１のデータレベルと第２のデータレベルとの差に基づくものである、
請求項３又は４に記載の方法。
【請求項６】
アクションは、第２の時間におけるデータソースの状態を反映するように１つ又は複数の第１のデータレベルを修正することを第１の受信者に命じるものである、請求項５に記載の方法。
【請求項７】
第１のデータレベルは、第２のデータレベルによって表されるデータよりも多くリクエストされた、データソースからのデータを表すものである、請求項６に記載の方法。
【請求項８】
さらに、
仕切りテーブルを生成するステップ、ここで、仕切りテーブルは、バッファ内に整理されているデータの第１の仕切り可能位置と第２の仕切り可能位置とを示すものであり、第１の受信者に送信される第２の更新メッセージは、第１の仕切り可能位置までのデータを含み、第２の受信者に送信される第２の更新メッセージは、第２の仕切り可能位置までのデータを含む、
請求項１から７のいずれか１つに記載の方法。
【請求項９】
請求項１から８のいずれか１つに記載の方法を機械に実行させるための命令を記憶したコンピュータ読み取り可能媒体。
【請求項１０】
複数の受信者に更新メッセージを送信するコンピューティングデバイスであって、
更新メッセージは、データソースから受信したデータに基づいてコンピューティングデバイスによって生成され、当該データは、異なる時間におけるデータソースの状態を示すものであり、
第１の時間におけるデータソースの状態の受信に応じて、第１の時間におけるデータソースの状態を表す第１のスナップショットメッセージを生成し、複数の受信者のうちの第１の受信者および第２の受信者に第１のスナップショットメッセージを送信するステップ、
第２の時間におけるデータソースの状態の受信に応じて、第２の時間におけるデータソースの状態と第１の時間におけるデータソースの状態との差を表す第１の更新メッセージを生成し、第２の受信者ではなく第１の受信者に第１の更新メッセージを送信するステップ、
第３の時間におけるデータソースの状態の受信に応じて、第３の時間におけるデータソースの状態と第１の時間におけるデータソースの状態との差を表す第２の更新メッセージを生成し、第１の受信者および第２の受信者に第２の更新メッセージを送信するステップ、
を実行する、コンピューティングデバイス。
【請求項１１】
さらに、
第１の更新メッセージを第１の受信者に送信する前に、コンピューティングデバイスにより、第２の受信者ではなく第１の受信者に第１の更新メッセージを送信するように、第２の時間と第１の時間の差が、第１の受信者により特定される更新インターバルよりも長く、且つ第２の受信者により特定される更新インターバルよりも短いか否かを決定するステップ、
を実行する、請求項１０に記載のコンピューティングデバイス。
【請求項１２】
データフォーマット部と、メッセージ送信部とを備え、
データフォーマット部は、スナップショットメッセージを第１のバッファ内に整理し、
メッセージ送信部は、第１のバッファ内のスナップショットメッセージの部分を用いて、第１のスナップショットメッセージを第１の受信者に送信し、
メッセージ送信部は、第１のバッファ内のスナップショットメッセージの部分を用いて、第１のスナップショットメッセージを第２の受信者に送信し、
データフォーマット部は、第１のデルタスナップメッセージを第２のバッファ内に整理し、
メッセージ送信部は、第２のバッファ内の第１のデルタスナップメッセージの部分を用いて、第１の更新メッセージを第１の受信者に送信し、
データフォーマット部は、第２のデルタスナップメッセージを第２のバッファ内に整理し、
メッセージ送信部は、第２のバッファ内の第２のデルタスナップメッセージの部分を用いて、第２の更新メッセージを第１の受信者に送信し、
メッセージ送信部は、第２のバッファ内の第２のデルタスナップメッセージの部分を用いて、第２の更新メッセージを第２の受信者に送信する、
請求項１０又は１１に記載のコンピューティングデバイス。
【請求項１３】
第１の受信者に送信される第２の更新メッセージは、第２のバッファ内の第２のデルタスナップメッセージの第１の部分であり、第２の受信者に送信される第２の更新メッセージは、第２のバッファ内の第２のデルタスナップメッセージの第２の部分である、請求項１２に記載のコンピューティングデバイス。
【請求項１４】
データフォーマット部は、スナップショットメッセージを整理するためにさらに、第１の時間におけるデータソースの状態を複数の第１のデータレベルに体系化し、データレベルのそれぞれは、データソースからのデータの詳細レベルを特定するものであり、
データフォーマット部は、第１のデルタスナップメッセージを整理するためにさらに、
第２の時間におけるデータソースの状態を複数の第２のデータレベルに体系化し、
第１のデータレベルと第２のデータレベルとの差を決定し、
第１の更新メッセージに含める１つ又は複数のアクションを生成し、ここで、当該アクションは、第１のデータレベルと第２のデータレベルとの差に基づくものである、
請求項１２又は１３に記載のコンピューティングデバイス。
【請求項１５】
データフォーマット部はさらに、仕切りテーブルを生成し、ここで、仕切りテーブルは、バッファ内に整理されているデータの第１の仕切り可能位置と第２の仕切り可能位置とを示すものであり、第１の受信者に送信される第２の更新メッセージは、第１の仕切り可能位置までのデータを含み、第２の受信者に送信される第２の更新メッセージは、第２の仕切り可能位置までのデータを含む、
請求項１２から１４のいずれか１つに記載のコンピューティングデバイス。
【請求項１６】
請求項１から８のいずれか１つに記載の方法をコンピューティングデバイスに実行させるためのコンピュータプログラム。
【外国語明細書】
2020074221.tif 000028
2020074221.tif 000029
2020074221.tif 000030
2020074221.tif 000031
2020074221.tif 000032
2020074221.tif 000033
2020074221.tif 000034
2020074221.tif 000035
2020074221.tif 000036
2020074221.tif 000037
2020074221.tif 000038
2020074221.tif 000039
2020074221.tif 000040
2020074221.tif 000041
2020074221.tif 000042
2020074221.tif 000043
2020074221.tif 000044
2020074221.tif 000045
2020074221.tif 000046
2020074221.tif 000047
2020074221.tif 000048
2020074221.tif 000049
2020074221.tif 000050
2020074221.tif 000051
2020074221.tif 000052
2020074221.tif 000053
2020074221.tif 000054
2020074221.tif 000055
2020074221.tif 000056
2020074221.tif 000057
2020074221.tif 000058
2020074221.tif 000059
2020074221.tif 000060
2020074221.tif 000061
2020074221.tif 000062
2020074221.tif 000063
2020074221.tif 000064
2020074221.tif 000065
2020074221.tif 000066
2020074221.tif 000067
2020074221.tif 000068
2020074221.tif 000069
2020074221.tif 000070
2020074221.tif 000071
2020074221.tif 000072
2020074221.tif 000073
2020074221.tif 000074
2020074221.tif 000075
2020074221.tif 000076
2020074221.tif 000077
2020074221.tif 000078
2020074221.tif 000079
2020074221.tif 000080
2020074221.tif 000081
2020074221.tif 000082
2020074221.tif 000083
2020074221.tif 000084
2020074221.tif 000085
2020074221.tif 000086
2020074221.tif 000087
2020074221.tif 000088
2020074221.tif 000089
2020074221.tif 000090
2020074221.tif 000091
2020074221.tif 000092
2020074221.tif 000093
2020074221.tif 000094
2020074221.tif 000095
2020074221.tif 000096
2020074221.tif 000097
2020074221.tif 000098
2020074221.tif 000099
2020074221.tif 000100
2020074221.tif 000101
2020074221.tif 000102
2020074221.tif 000103
2020074221.tif 000104
2020074221.tif 000105
2020074221.tif 000106
2020074221.tif 000107
2020074221.tif 000108
2020074221.tif 000109