KR102352143B1 - 맞추어진 메시징 - Google Patents
맞추어진 메시징 Download PDFInfo
- Publication number
- KR102352143B1 KR102352143B1 KR1020207017316A KR20207017316A KR102352143B1 KR 102352143 B1 KR102352143 B1 KR 102352143B1 KR 1020207017316 A KR1020207017316 A KR 1020207017316A KR 20207017316 A KR20207017316 A KR 20207017316A KR 102352143 B1 KR102352143 B1 KR 102352143B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- message
- delete delete
- snapshot
- receiver
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/128—Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Economics (AREA)
- Development Economics (AREA)
- General Business, Economics & Management (AREA)
- Technology Law (AREA)
- Information Transfer Between Computers (AREA)
- Telephonic Communication Services (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Computer And Data Communications (AREA)
- Mobile Radio Communication Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Signal Processing (AREA)
- Iron Core Of Rotating Electric Machines (AREA)
- Transplanting Machines (AREA)
- Computer Networks & Wireless Communication (AREA)
Abstract
본 개시된 실시예들은 일반적으로 네트워크 통신들을 위한 메시지들을 맞추기 위한 기술들에 관한 것이다. 보다 구체적으로, 개시된 실시예들은 수신부 선호도들에 기초하여 맞추어진 정보 업데이트들을 제공하기 위한 시스템들 및 방법들에 관한 것이다. 예컨대, 수신부는 시스템이 업데이트들을 생성하는 것보다 덜 빈번하게 업데이트들을 수신하는 것을 선호할 수 있고 및/또는 업데이트들의 상이한 레벨들의 데이터를 수신하는 것을 선호할 수 있다. 일부 실시예들에서, 델타스냅(deltasnap) 기술은 제공되고 업데이트 메시지들이 제공되는 레이트의 더 효과적인 맞춤을 허용한다. 일부 실시예들에서, 분할 기술은 제공되고 업데이트 메시지들의 콘텐츠의 더 효과적인 맞춤화를 허용한다. 일부 실시예들에서, 델타스냅 기술은 업데이트 메시지들의 레이트와 콘텐츠의 더 효과적인 맞춤화를 허용하는 분할 기술과 조합하여 제공된다.
Description
[0001] 본 출원은 2014년 7월 11일 출원되고 발명의 명칭이 "Tailored Messaging"인 미국 특허 출원 번호 14/329,602의 우선권 이익, 및 2013년 7월 12일 출원되고 발명의 명칭이 "System and Method for Dynamically Distributing Market Data Across Multiple Devices in an Electronic Trading Environment"인 미국 예비 특허 출원 번호 61/845,613의 우선권 이익, 및 2014년 7월 10일 출원되고 발명의 명칭이 "System and Method for Dynamically Distributing Market Data Across Multiple Devices in an Electronic Trading Environment"인 미국 예비 특허 출원 번호 62/022,736의 우선권 이익을 주장한다. 상기 출원들 각각의 콘텐츠는 모든 목적들을 위하여 그 전체가 인용에 의해 완전히 본원에 포함된다.
[0002] 전자 디바이스들은 예컨대 디바이스의 상태에 관한 최신 정보를 제공하기 위한 데이터 메시지들을 교환할 수 있다. 일부 시스템들에서, 다수의 수신부들은 데이터 소스로부터 업데이트들을 수신하는데 관심이 있을 수 있다. 브로드캐스트 또는 멀티캐스트 메시징 같은 기술들은 특정 타입들의 네트워크들에서 이들 업데이트들을 제공하기 위하여 데이터 소스에 의해 사용될 수 있다. 다른 시스템들에서, 일부 수신부들은 예컨대, 네트워크 제한들, 통신 선호도들(예컨대, 신뢰성 있는 전달, 주문(ordering), 등), 및/또는 보안 요건들로 인해 포인트-투-포인트 연결들을 사용하여 데이터 소스와 통신할 수 있다.
[0003] 일부 수신부들은 상이한 레이트들에서 동일한 데이터 소스로부터 업데이트들을 수신하는 것을 선호할 수 있다. 원해지지 않은 메시지들을 수신부들에 전송하는 것을 최소화하면서 상이한 레이트들에서 업데이트들을 제공하는 것은 브로드캐스트 또는 멀티캐스트 메시징 기술들의 유용성을 제한하고 그리고, 상이한 업데이트 레이트 선호도들을 가진 수신부들의 수가 증가함에 따라, 포인트-투-포인트 연결들은 더 효율적이 된다. 그러나, 포인트-투-포인트 연결들에 의해, 메시지는 각각의 수신부에 대해 생성되어야 한다. 부가적으로, 일부 수신부들은 자신의 업데이트들에 상이한 레벨들 또는 티어(tier)들의 데이터를 수신하는 것을 선호할 수 있다. 상이한 레벨들 또는 티어들의 데이터에 기초하여 메시지들을 맞추는 것은 각각의 레벨 또는 티어의 데이터에 대해 상이한 메시지들을 생성하는 것을 요구한다. 상이한 선호도들을 가진 수신부들의 수가 증가함에 따라, 상이한 업데이트 레이트들 및 상이한 레벨들 또는 티어들의 데이터를 수용하는 것은 특히, 데이터를 수신할 때 증가된 레이턴시가 허용 가능하지 않은 시간-민감 정보에 대해 복잡하게 된다.
[0004] 특정 실시예들은 다음 도면들을 참조하여 개시된다.
[0005] 도 1은 특정 실시예들을 구현하기 위하여 사용될 수 있는 예시적 컴퓨팅 디바이스의 블록도를 예시한다.
[0006] 도 2는 맞추어진 메시지들을 하나 또는 그 초과의 수신 디바이스들에 전송하기 위한 예시적 시스템의 블록도를 예시한다.
[0007] 도 3은 스냅샷(snapshot)들 및 델타스냅(deltasnap)들을 하나 또는 그 초과의 수신 디바이스들에 전송하기 위하여 사용될 수 있는 예시적 가입 제어 모듈의 블록도를 예시한다.
[0008] 도 4는 스냅샷 기술을 사용하는 예를 도시하는 데이터 흐름을 예시한다.
[0009] 도 5는 델타 기술을 사용하는 예를 도시하는 데이터 흐름을 예시한다.
[0010] 도 6은 델타스냅 기술을 사용하는 예를 도시하는 데이터 흐름을 예시한다.
[0011] 도 7a 및 도 7b는 예시적 데이터 레벨들을 도시하는 블록도들을 예시한다.
[0012] 도 8a 및 도 8b는 스냅샷들 및 델타스냅들을 기초하는 예시적 맞춤 가능 메시지들을 도시하는 블록도들을 예시한다.
[0013] 도 9는 맞추어진 델타스냅 기술을 사용하는 예를 도시하는 데이터 흐름을 예시한다.
[0014] 도 10은 버퍼의 예시적 맞춤 가능 메시지를 예시한다.
[0015] 도 11은 예시적 수신 디바이스들과 예시적 가입 제어 모듈 사이의 예시적 연결들을 묘사하는 예시적 데이터 흐름도를 예시한다.
[0016] 도 12는 도 2 및 도 3의 가입 제어 모듈을 구현하기 위하여 실행될 수 있는 예시적 머신 판독가능 명령들을 나타내는 예시적 방법의 흐름도이다.
[0017] 도 13은 도 3의 데이터 포맷터(formatter)를 구현하기 위하여 실행될 수 있는 예시적 머신 판독가능 명령들을 나타내는 예시적 방법의 흐름도이다.
[0018] 도 14는 도 3의 데이터 포맷터를 구현하기 위하여 실행될 수 있는 예시적 머신 판독가능 명령들을 나타내는 예시적 방법의 흐름도이다.
[0019] 도 15는 도 3의 메시지 전송기를 구현하기 위하여 실행될 수 있는 예시적 머신 판독가능 명령들을 나타내는 예시적 방법의 흐름도이다.
[0020] 도 16은 도 3의 메시지 전송기를 구현하기 위하여 실행될 수 있는 예시적 머신 판독가능 명령들을 나타내는 예시적 방법의 흐름도이다.
[0021] 도 17은 도 3의 메시지 전송기를 구현하기 위하여 실행될 수 있는 예시적 머신 판독가능 명령들을 나타내는 예시적 방법의 흐름도이다.
[0022] 도 18은 특정 실시예들이 이용될 수 있는 예시적 전자 거래 시스템을 나타내는 블록도를 예시한다.
[0023] 도 19는 특정 실시예들이 이용될 수 있는 다른 예시적 전자 거래 시스템의 블록도를 예시한다.
[0024] 도 20a 및 도 20b는 다수의 데이터 레벨들의 마켓 깊이(market depth)에서 마켓 데이터를 제공하기 위한 스냅샷 및 델타스냅에 대한 예시적 맞춤가능 메시지들을 예시한다.
[0025] 특정 실시예들을 예들을 예시하는 제공된 도면들과 함께 판독될 때 보다 잘 이해될 것이다. 그러나, 실시예들이 첨부된 도면들에 도시된 어레인지먼트들 및 수단으로 제한되지 않는 것이 이해되어야 한다.
[0005] 도 1은 특정 실시예들을 구현하기 위하여 사용될 수 있는 예시적 컴퓨팅 디바이스의 블록도를 예시한다.
[0006] 도 2는 맞추어진 메시지들을 하나 또는 그 초과의 수신 디바이스들에 전송하기 위한 예시적 시스템의 블록도를 예시한다.
[0007] 도 3은 스냅샷(snapshot)들 및 델타스냅(deltasnap)들을 하나 또는 그 초과의 수신 디바이스들에 전송하기 위하여 사용될 수 있는 예시적 가입 제어 모듈의 블록도를 예시한다.
[0008] 도 4는 스냅샷 기술을 사용하는 예를 도시하는 데이터 흐름을 예시한다.
[0009] 도 5는 델타 기술을 사용하는 예를 도시하는 데이터 흐름을 예시한다.
[0010] 도 6은 델타스냅 기술을 사용하는 예를 도시하는 데이터 흐름을 예시한다.
[0011] 도 7a 및 도 7b는 예시적 데이터 레벨들을 도시하는 블록도들을 예시한다.
[0012] 도 8a 및 도 8b는 스냅샷들 및 델타스냅들을 기초하는 예시적 맞춤 가능 메시지들을 도시하는 블록도들을 예시한다.
[0013] 도 9는 맞추어진 델타스냅 기술을 사용하는 예를 도시하는 데이터 흐름을 예시한다.
[0014] 도 10은 버퍼의 예시적 맞춤 가능 메시지를 예시한다.
[0015] 도 11은 예시적 수신 디바이스들과 예시적 가입 제어 모듈 사이의 예시적 연결들을 묘사하는 예시적 데이터 흐름도를 예시한다.
[0016] 도 12는 도 2 및 도 3의 가입 제어 모듈을 구현하기 위하여 실행될 수 있는 예시적 머신 판독가능 명령들을 나타내는 예시적 방법의 흐름도이다.
[0017] 도 13은 도 3의 데이터 포맷터(formatter)를 구현하기 위하여 실행될 수 있는 예시적 머신 판독가능 명령들을 나타내는 예시적 방법의 흐름도이다.
[0018] 도 14는 도 3의 데이터 포맷터를 구현하기 위하여 실행될 수 있는 예시적 머신 판독가능 명령들을 나타내는 예시적 방법의 흐름도이다.
[0019] 도 15는 도 3의 메시지 전송기를 구현하기 위하여 실행될 수 있는 예시적 머신 판독가능 명령들을 나타내는 예시적 방법의 흐름도이다.
[0020] 도 16은 도 3의 메시지 전송기를 구현하기 위하여 실행될 수 있는 예시적 머신 판독가능 명령들을 나타내는 예시적 방법의 흐름도이다.
[0021] 도 17은 도 3의 메시지 전송기를 구현하기 위하여 실행될 수 있는 예시적 머신 판독가능 명령들을 나타내는 예시적 방법의 흐름도이다.
[0022] 도 18은 특정 실시예들이 이용될 수 있는 예시적 전자 거래 시스템을 나타내는 블록도를 예시한다.
[0023] 도 19는 특정 실시예들이 이용될 수 있는 다른 예시적 전자 거래 시스템의 블록도를 예시한다.
[0024] 도 20a 및 도 20b는 다수의 데이터 레벨들의 마켓 깊이(market depth)에서 마켓 데이터를 제공하기 위한 스냅샷 및 델타스냅에 대한 예시적 맞춤가능 메시지들을 예시한다.
[0025] 특정 실시예들을 예들을 예시하는 제공된 도면들과 함께 판독될 때 보다 잘 이해될 것이다. 그러나, 실시예들이 첨부된 도면들에 도시된 어레인지먼트들 및 수단으로 제한되지 않는 것이 이해되어야 한다.
[0026] 개시된 실시예들은 일반적으로 네트워크 통신을 위한 메시지들을 맞추기 위한 기술들에 관한 것이다. 보다 구체적으로, 개시된 실시예들은 수신부 선호도들에 기초하여 맞추어진 정보 업데이트들을 효과적으로 제공하기 위한 시스템들 및 방법들에 관한 것이다. 예컨대, 수신부는 시스템이 업데이트들을 생성하는 것보다 덜 빈번하게 업데이트들을 수신하는 것을 선호할 수 있고 및/또는 업데이트들의 상이한 레벨들의 데이터를 수신하는 것을 더 선호할 수 있다. 일부 실시예들에서, 델타스냅 기술은 제공되고 업데이트 메시지들이 제공되는 레이트의 더 효율적인 맞춤을 허용한다. 일부 실시예들에서, 분할 기술은 제공되고 업데이트 메시지들의 콘텐츠의 더 효율적 맞춤을 허용한다. 일부 실시예들에서, 델타스냅 기술은 업데이트 메시지들의 레이트 및 콘텐츠의 더 효율적인 맞춤을 허용하는 분할 기술과 조합하여 제공된다.
[0027] 데이터 메시지들은 다양한 환경들에서 수신부들에 정보를 제공한다. 일부 수신부들은 다른 수신부들과 상이한 레이트에서 업데이트들을 수신하는데 관심이 있을 수 있다. 예컨대, 제 1 수신부는, 제 1 레이트, 아마도 밀리 초당 1회까지 같은 업데이트들이 생성되고 있는 레이트에서 업데이트들을 수신하기를 원할 수 있다. 제 2 수신부는 제한된 대역폭일 수 있고 그러므로 초당 2회 같은 보다 낮은 레이트에서 업데이트들을 전송하기를 원할 수 있다. 제 3 수신부는 때때로 제한된 대역폭일 수 있고, 언제나 뒤떨어진 데이터를 수신하지 않거나 연결 리셋들로 인해 큰 갭들을 경험함이 없이, 어떤 레이트가 가능하더라도 신뢰성 있게 업데이트들을 수신하는 것을 원할 수 있다. 부가적으로, 일부 시스템들에서, 데이터 소스는 업데이트들의 상이한 레벨들 또는 티어들의 데이터를 제공할 수 있다. 예컨대, 각각의 연속적인 레벨은 이전 레벨들에서 제공된 상세를 넘는 보다 상세하거나 부가적인 정보를 가리키는 값들을 포함할 수 있다. 일부 수신부들은 데이터 소스로부터의 업데이터들의 상이한 수의 데이터의 레벨들을 수신하는데 관심이 있을 수 있다. 예컨대, 제 1 수신부는 제 1 5개의 레벨들에서의 값들에 대한 업데이트들을 수신하는데 관심이 있을 수 있다. 제 2 수신부는 제 1 2개의 레벨들에서의 값들에 대한 업데이트들을 수신하는데 관심이 있을 수 있다. 상이한 레벨들의 데이터를 제공하기 위하여, 메시지들은 수신부의 선호도들에 따라 맞추어진다. 현재 시스템들에서, 업데이트 레이트 및/또는 상이한 수들의 데이터 레벨들 같은 수신부 선호도들을 수용하는 것은 각각의 수신부에 대한 소스 데이터에 기초하여 고유 메시지들이 포맷화되는 것을 요구한다.
[0028] 비록 이 설명이 다른 컴포넌트들 중 하드웨어 상에서 실행된 소프트웨어를 포함하는 실시예들을 개시하지만, 실시예들이 단지 예시적이고 제한으로서 고려되지 않아야 하는 것이 주의되어야 한다. 예컨대, 임의의 또는 모든 이들 하드웨어 및 소프트웨어 컴포넌트들이 하드웨어로만, 소프트웨어로만, 펌웨어로만, 또는 하드웨어, 소프트웨어, 및/또는 펌웨어의 임의의 조합으로 배타적으로 실현될 수 있다는 것이 고려된다. 따라서, 특정 실시예들은 다른 방식들로 구현될 수 있다.
Ⅰ.
특정 실시예들의 짧은 설명
[0029] 예시적 방법들, 시스템들 및 컴퓨터 판독가능 매체들은 네트워크 통신을 위한 메시지들을 맞추기 위해 개시된다. 메시지들을 맞추기 위한 예시적 방법은, 컴퓨팅 디바이스에 의해, 제 1 시간의 데이터 소스의 상태를 나타내는 제 1 스냅샷 메시지를 생성하는 것을 포함한다. 제 1 스냅샷 메시지는 제 1 수신부로 전송된다. 예시적 방법은, 컴퓨팅 디바이스에 의해, 제 2 시간의 데이터 소스의 상태와 제 1 시간의 데이터 소스의 상태 차이를 나타내는 제 1 델타스냅 메시지를 생성하고, 그리고 컴퓨팅 디바이스에 의해, 제 1 델타스냅 메시지를 제 1 수신부에 전송하는 것을 포함한다.
[0030] 예시적 방법은, 컴퓨팅 디바이스에 의해, 제 1 시간에 캡처된 데이터의 제 1 세트를 나타내는 제 1 스냅샷을 생성하는 것을 포함한다. 예시적 방법은 또한, 컴퓨팅 디바이스에 의해, 제 1 스냅샷의 제 1 버전을 제 1 가입 디바이스에 전송하는 것을 포함한다. 제 1 스냅샷의 제 1 버전은 제 1 가입 디바이스의 제 1 선호도에 따라 맞추어진다. 예시적 방법은, 컴퓨팅 디바이스에 의해, 데이터의 제 1 세트와 데이터의 제 2 세트 사이의 차이를 나타내는 제 1 델타스냅을 생성하는 것을 포함한다. 데이터의 제 2 세트는 제 1 시간 이후 제 2 시간에 생성된 데이터를 나타낸다. 예시적 방법은, 컴퓨팅 디바이스에 의해, 제 1 델타스냅의 제 1 버전을 제 1 가입 디바이스에 전송하는 것을 포함한다. 제 1 델타스냅의 제 1 버전은 제 1 가입 디바이스의 제 1 선호도에 따라 맞추어진다.
[0031] 예시적 유형의 컴퓨터 판독가능 스토리지 매체는, 실행될 때 머신으로 하여금 제 1 시간에서 데이터 소스 상태를 나타내는 제 1 스냅샷 메시지를 적어도 생성하게 하는 명령들을 포함한다. 예시적 명령들은 머신으로 하여금 제 1 스냅샷 메시지를 제 1 수신부에 전송하게 한다. 예시적 명령들은 머신으로 하여금 제 2 시간의 데이터 소스 상태와 제 1 시간의 데이터 소스 상태 차이를 나타내는 제 1 델타스냅 메시지를 생성하게 한다. 예시적 명령들은 제 1 델타스냅 메시지를 제 1 수신부에 전송하게 한다.
Ⅱ.
예시적 컴퓨팅 디바이스
[0032] 도 1은 특정 실시예들을 구현하기 위하여 사용될 수 있는 예시적 컴퓨팅 디바이스(100)의 블록도를 예시한다. 컴퓨팅 디바이스(100)는 통신 네트워크(110), 프로세서(112), 메모리(114), 인터페이스(116), 입력 디바이스(118), 및 출력 디바이스(120)를 포함한다. 컴퓨팅 디바이스(100)는 부가적이거나, 상이하거나, 더 적은 컴포넌트들을 포함할 수 있다. 예컨대, 다수의 통신 네트워크들, 다수의 프로세서들, 다수의 메모리, 다수의 인터페이스들, 다수의 입력 디바이스들, 다수의 출력 디바이스들, 또는 이들의 임의의 조합이 제공될 수 있다. 다른 예로서, 컴퓨팅 디바이스(100)는 입력 디바이스(118) 또는 출력 디바이스(120)를 포함하지 않을 수 있다.
[0033] 도 1에 도시된 바와 같이, 컴퓨팅 디바이스(100)는 통신 네트워크(110)에 커플링된 프로세서(112)를 포함할 수 있다. 통신 네트워크(110)는 통신 버스, 채널, 전기 또는 광학 네트워크, 회로, 스위치, 패브릭(fabric), 또는 컴퓨팅 디바이스(100) 내 컴포넌트들 사이에서 데이터를 통신하기 위한 다른 메커니즘을 포함할 수 있다. 통신 네트워크(110)는 컴퓨팅 디바이스(100)의 컴포넌트들 중 임의의 컴포넌트들 사이에서 데이터와 통신 가능하게 커플링되고 데이터를 전달할 수 있다.
[0034] 프로세서(112)는 임의의 적당한 프로세서, 프로세싱 유닛, 또는 마이크로프로세서일 수 있다. 프로세서(112)는 예컨대, 하나 또는 그 초과의 범용 프로세서들, 디지털 신호 프로세서들, 주문형 집적 회로들, 필드 프로그램가능 게이트 어레이들, 아날로그 회로들, 디지털 회로들, 프로그램된 프로세서들, 및/또는 이들의 조합들을 포함할 수 있다. 프로세서(112)는 단일 디바이스 또는 디바이스들의 조합, 이를테면 네트워크 또는 분산 프로세싱과 연관된 하나 또는 그 초과의 디바이스들일 수 있다. 임의의 프로세싱 전략이 사용될 수 있고, 이를테면 멀티-프로세싱, 멀티-태스킹, 병렬 프로세싱, 및/또는 원격 프로세싱일 수 있다. 프로세싱은 로컬이거나 원격일 수 있고 하나의 프로세서로부터 다른 프로세서로 이동될 수 있다. 특정 실시예들에서, 컴퓨팅 디바이스(100)는 멀티-프로세서 시스템이고 따라서, 통신 네트워크(110)에 통신 가능하게 커플링된 하나 또는 그 초과의 부가적 프로세서들을 포함할 수 있다.
[0035] 프로세서(112)는 하나 또는 그 초과의 유형의 매체들, 이를테면 메모리(114)에 인코드된 로직 및 다른 컴퓨터 판독가능 명령들을 실행하도록 동작할 수 있다. 본원에 사용된 바와 같이, 하나 또는 그 초과의 유형의 매체들에 인코드된 로직은 프로세서(112) 또는 상이한 프로세서에 의해 실행 가능할 수 있는 명령들을 포함한다. 로직은 예컨대 소프트웨어, 하드웨어, 집적 회로들, 펌웨어, 및/또는 마이크로-코드의 부분으로서 저장될 수 있다. 로직은 외부 통신 디바이스로부터 네트워크(140) 같은 통신 네트워크를 통해 수신될 수 있다. 프로세서(112)는 도면들에 예시되거나 본원에 설명된 기능들, 동작들, 또는 태스크들을 수행하도록 로직을 실행한다.
[0036] 메모리(114)는 예컨대, 컴퓨터 판독가능 스토리지 매체들 같은 하나 또는 그 초과의 유형의 매체들 들일 수 있다. 컴퓨터 판독가능 스토리지 매체들은 예컨대, 랜덤 액세스 메모리, 판독-전용 메모리, 프로그램 가능 판독-전용 메모리, 전기 프로그램 가능 판독-전용 메모리, 전기 소거가능 판독-전용 메모리, 플래시 메모리, 이들의 임의의 조합, 또는 임의의 다른 유형의 데이터 스토리지 디바이스를 포함하는 다양한 타입들의 휘발성 및 비휘발성 스토리지 매체들을 포함할 수 있다. 본원에 사용된 바와 같이, 용어 비일시적 또는 유형의 컴퓨터 판독가능 매체는 명시적으로 임의의 타입의 컴퓨터 판독가능 매체를 포함하고 신호들을 전파하는 것을 제외하도록 정의된다. 메모리(114)는 하드 디스크 드라이브들, 광학 매체들, 자기 테이프 또는 디스크, 등을 포함하는 임의의 원해진 타입의 대량 스토리지 디바이스를 포함할 수 있다.
[0037] 메모리(114)는 하나 또는 그 초과의 메모리 디바이스들을 포함할 수 있다. 예컨대, 메모리(114)는 로컬 메모리, 대량 스토리지 디바이스, 휘발성 메모리, 비휘발성 메모리, 또는 이들의 조합을 포함할 수 있다. 메모리(114)는 프로세서(112)로 프로그램되고, 네트워크화되고, 및/또는 원격에 있는 부분에 인접할 수 있고, 따라서 메모리(114)에 저장된 데이터는 예컨대 프로세서(112)에 의해 리트리브 및 프로세스될 수 있다. 메모리(114)는 프로세서(112)에 의해 실행 가능한 명령들을 저장할 수 있다. 명령들은 본원에 설명되거나 도면들에 도시된 동작들 또는 기능들 중 하나 또는 그 초과를 수행하도록 실행될 수 있다.
[0038] 메모리(114)는 개시된 기술들을 구현하는 애플리케이션(130)을 저장할 수 있다. 특정 실시예들에서, 애플리케이션(130)은 상이한 위치들로부터 액세스 되거나 저장될 수 있다. 프로세서(112)는 메모리(114)에 저장된 애플리케이션(130)을 액세스할 수 있고 애플리케이션(130)에 포함된 컴퓨터-판독가능 명령들을 실행할 수 있다.
[0039] 특정 실시예들에서, 설치 프로세스 동안, 애플리케이션은 입력 디바이스(118) 및/또는 네트워크(140)로부터 메모리(114)로 전달될 수 있다. 컴퓨팅 디바이스(100)가 애플리케이션(130)을 동작시키기 위하여 동작 중이거나 준비중일 때, 프로세서(112)는 메모리(114)로부터 통신 네트워크(110)를 통해 명령들을 리트리브할 수 있다.
Ⅲ.
가입 제어 모듈
[0040] 도 2는 가입 제어 모듈(201) 및 데이터 소스(202)를 포함하는 예시적 시스템(200)을 예시한다. 예시된 예에서, 데이터 소스(202)는 데이터를 가입 제어 모듈(201)에 제공한다. 가입 제어 모듈(201)은 예컨대, 데이터 소스(202)에 의해, 주기적으로(예컨대, 세트 시간 간격으로), 업데이트를 검출할 때, 및/또는 트리거링 이벤트에 응답하여, 등에 의해 전송될 때, 데이터를 수신 및/또는 그렇지 않으면 리트리브할 수 있다. 가입 제어 모듈(201)은 데이터를 맞추어진 메시지들(204)로 변환한다. 맞추어진 메시지들(204)은 통신 링크(예컨대, 포인트-투-포인트 연결, 유니캐스트 채널, 송신 제어 프로토콜(TCP) 소켓, 웹소켓 연결, 등)을 통해 하나 또는 그 초과의 수신 디바이스들(206)(예컨대, 스마트폰, 테블릿, 서버, 퍼스널 컴퓨터, 등)으로 전송된다. 하나 또는 그 초과의 선호도들(예컨대, 업데이트 레이트, 데이터 레벨들의 수, 등)은 수신 디바이스(들)(206)에 관하여 정의된다. 일부 예들에서, 전자 디바이스들(206)은 선호도들을 가입 제어 모듈(201)에 통신한다. 예컨대, 매 100ms만큼 자주 업데이트들을 생성하는 가입 제어 모듈(201)에 대해, 수신부(206)는 단지 매 500ms 마다 업데이트를 수신하도록 선호도를 세트할 수 있다. 일부 예들에서, 전자 디바이스(206)에 대한 선호도들은 가입 제어 모듈(201)에 의해 결정된다. 예컨대, 가입 제어 모듈(201)은, 전자 디바이스(206)와 연결 프로세스 동안 레이턴시에 기초하여, 업데이트 레이트가 단지 3개의 데이터 레벨들을 가지고 1초로 세트되어야 하는 것을 결정할 수 있다. 일부 예들에서, 가입 제어 모듈(201)은 네트워크 링크 처리량에 기초하여 업데이트 레이트를 조절한다. 예컨대, 이전 업데이트가 여전히 전송 중이라면, 가입 제어 모듈(201)은 다음 업데이트를 전송하는 것을 지연시킬 수 있다. 그런 예에서, 보다 최신의 업데이트가 지연 동안 생성되면, 가입 제어 모듈(201)은 대신에 보다 최근 업데이트를 전송할 수 있다. 가입 제어 모듈(201)은 네트워크(예컨대, 인터넷, 광역 네트워크, 통해 유선 및/또는 무선 연결들(예컨대, 케이블/DSL/위성 연결, 셀룰러 연결, LTE(Long Term Evolution) 연결, 등)을 거쳐 수신부들(206)과 통신한다.
[0041] 도 3은 도 2의 가입 제어 모듈(201)의 예시적 구현을 예시한다. 가입 제어 모듈(201)은 데이터 소스(202)로부터 데이터를 수신 및/또는 그렇지 않으면 리트리브하고, 맞추어진 메시지들(예컨대, 도 2의 맞추어진 메시지들(204))을 하나 또는 그 초과의 전자 디바이스들(206)에 전송한다. 예시된 예의 가입 제어 모듈(201)은 데이터 소스 수신기(302), 데이터 포맷터(304), 주 버퍼(306), 보조 버퍼(308) 및 메시지 전송기(310)를 포함한다. 데이터 소스 수신기(302)는 데이터 소스(202)로부터 데이터를 수신 및/또는 그렇지 않으면 리트리브한다.
[0042] 도 3에 예시된 예에서, 데이터 소스(202)는 동적으로 업데이트한다(예컨대, 새로운 정보가 이용 가능할 때 비동기적으로 업데이트하고, 휴지 기간들에 주기적으로 업데이트하고, 등). 데이터를 수신 프로세스하고 메시지를 수신부(들)(204)에 전송하기 위하여, 데이터 소스 수신기(302)는 이산 시점에 데이터 소스(202)의 상태를 캡처한다(예컨대, 도 3의 데이터 소스 수신기(302)를 통해). 일부 예들에서, 데이터 소스 수신기(302)는, 데이터 소스(202)가 그의 상태 변화에 관한 업데이트를 제공할 때 데이터 소스(202)의 상태를 캡처한다. 일부 예들에서, 데이터 소스 수신기(302)는 세트 시간 간격들(예컨대, 데이터 소스가 빈번하게 업데이트하는 예들)에서 데이터 소스(202)의 상태를 캡처한다. 예컨대, 데이터 소스 수신기(302)는 매 100 밀리초에 데이터 소스(202)의 상태를 캡처할 수 있다. 일부 예들에서, 데이터 소스 수신기(302)는 업데이트를 검출하는 것에 응답하여(예컨대, 데이터 소스가 산발적으로 업데이트하는 예들) 데이터 소스(202)의 상태를 캡처한다. 데이터 소스 수신기(302)는 베이스 업데이트 레이트를 확립할 수 있다. 베이스 업데이트 레이트는, 가입 제어 모듈(201)이 수신 디바이스들(206)에 이용 가능한 업데이트들을 만드는 레이트이다. 일부 예들에서, 베이스 업데이트 레이트는 규칙적 간격들(예컨대, 데이터 소스(202)가 빈번하게 업데이트할 때, 등)로 확립된다. 일부 예들에서, 베이스 업데이트 레이트는 불규칙적 간격들(예컨대, 데이터 소스(202)가 드물게 업데이트할 때, 등)로 확립된다. 일부 예들에서, 베이스 업데이트 레이트는 데이터 소스(202)의 변화들의 빈도에 따라 변화한다.
[0043] 도 3의 예시된 예에서, 데이터 포맷터(304)는 데이터 소스(202)로부터 데이터를 포맷화한다(예컨대, 모으고, 변역하고, 표준화하고, 조직하고, 등). 데이터 포맷터(304)는 주 버퍼(306) 및/또는 보조 버퍼(308)에 저장될 맞춤가능 메시지로 데이터를 변환한다. 주 버퍼(306) 및/또는 보조 버퍼(308)는 데이터 포맷터(304)에 의해 포맷된 데이터를 저장한다. 일부 예들에서, 주 버퍼(306) 및/또는 보조 버퍼(308)에 저장된 데이터는 데이터 소스(202)로부터의 추후 데이터에 비교하기 위하여 데이터 포맷터(304)에 의해 액세스된다. 예컨대, 주 버퍼(306)는 맞춤가능 스냅샷 메시지를 포함할 수 있다. 그 다음 데이터 포맷터(304)는, 하기 더 상세히 논의된 기술들을 사용하여, 데이터 수신기(302)로부터의 데이터를 주 버퍼(306)의 맞춤가능 스냅샷 메시지와 비교하여 보조 버퍼(308)에 맞춤가능 델타스냅 메시지를 생성할 수 있다.
[0044] 예시된 예에서, 메시지 전송기(310)는 하나 또는 그 초과의 수신부 전자 디바이스들(206)과 연결들을 관리한다. 메시지 전송기(310)는 주 버퍼(306) 및/또는 보조 버퍼(308)에 저장된 맞춤가능 메시지를 사용하고 맞추어진 메시지(204)로서 데이터를 수신부 전자 디바이스(들)(206)에 전송한다. 일부 예들에서, 메시지 전송기(310)는 수신부 전자 디바이스(들)(206)로부터 선호도들을 수신한다. 예컨대, 선호도들은 업데이트 레이트에 대한 선호도 및/또는 다수의 데이터 레벨들에 대한 선호도를 포함할 수 있다. 일부 그런 예들에서, 메시지 전송기(310)는 수신부 전자 디바이스(들)(206)에 전송할 수신된 선호도들에 기초하여 주 버퍼(306) 및/또는 보조 버퍼(308)에 저장된 맞춤가능 메시지를 맞춘다. 맞춤가능 메시지를 맞추기 위하여, 메시지 전송기(310)는 맞춤가능 메시지중 어느 부분(예컨대, 바이트들의 번호에서)이 수신된 선호도들에 기초하여 전송될지를 계산한다. 예컨대, 맞춤가능 메시지가 100 바이트이면, 메시지 전송기(310)는, 수신된 선호도들에 기초하여, 단지 제 1 56 바이트들이 수신부 전자 디바이스(들)(206)에 전송되는 것을 계산할 수 있다. 이런 방식으로, 메시지의 수신부당 어떠한 재변환도 요구되지 않는다. 데이터 포맷터(304)는 구체적으로 절사된(truncated) 전송을 허용하기 위하여 맞춤가능 메시지를 포맷한다. 일부 예들에서, 메시지 전송기(310)가, 수신 전자 디바이스(206)에 대한 연결이 정체되는 것을 검출할 때, 메시지 전송기(310)는 디바이스(206)로의 메시지를 지연하거나 누락한다.
Ⅳ.
데이터 소스 업데이트들의 통신을 위한 현재 기술들
[0045] 데이터 소스의 상태의 변화들에 관한 업데이트를 제공하기 위한 현재 기술들은 스냅샷들 및 델타들을 포함하고, 이중 일부 예시적 기술들이 이하 추가로 설명된다.
A.
스냅샷 기술들
[0046] 스냅샷은 특정 시점에서 데이터 소스의 상태를 나타낸다. 스냅샷은 업데이트를 수신 디바이스에 통신하기 위하여 사용될 수 있다. 예시적 스냅샷 기술은, 각각의 업데이트를 위하여 스냅샷 메시지를 하나 또는 그 초과의 수신 디바이스들에 전송함으로써 데이터 소스의 상태를 통신한다. 스냅샷 기술들이 특정 시점에서 데이터 소스의 전체 상태를 수신부(들)에 전송하기 때문에, 시간(t)에서 데이터 소스의 상태는 식(1)에 예시된 바와 같이 결정될 수 있다:
현재 상태(t) = St 식(1)
여기서, St는 시간(t)이전 가장 최근에 전송된 스냅샷을 나타낸다.
[0047] 도 4는 이산 시간들(예컨대, 시간(T0), 시간(T1), 시간(T2), 등)에서 데이터 소스의 예시적 제 1 상태(400a), 예시적 제 2 상태(400b), 및 예시적 제 3 상태(400c)를 사용하는 스냅샷 기술을 사용하는 예를 도시하는 데이터 흐름을 예시한다. 도 4에 예시된 예에서, 제 1 상태(400a)는 시간(T0)에서 캡처된다. 제 1 상태(400a)는 스냅샷(S0)이도록 포맷되고 버퍼에 저장된다. 스냅샷(S0)은 수신부로 전송된다. 시간(T1)에서, 제 2 상태들(400b)은 캡처되고, 스냅샷(S1)이도록 포맷되고, 그리고 수신부로 전송된다. 시간(T2)에서, 데이터(400c)는 캡처되고, 스냅샷(S2)이도록 포맷되고, 그리고 수신부로 전송된다.
[0048] 스냅샷이 데이터 소스의 현재 상태를 알기 위하여 요구된 모든 데이터를 포함하기 때문에, 미스된(missed) 스냅샷의 효과들은 감소 또는 최소화될 수 있다(예컨대, 다음 업데이트를 대기함으로써, 등). 그러나, 데이터 소스로부터의 데이터가 단지 간격마다 약간 변화할 수 있기 때문에, 스냅샷들을 전송하는 것은 불필요하게 가치있는 데이터 대역폭을 사용할 수 있다. 결과적으로, 빈번하게 업데이트하는 데이터 소스로부터 메시지들을 수신하는 수신부, 많은 상이한 데이터 소스들, 및/또는 제한된 대역폭을 가진 수신부들(예컨대, 셀룰러 네트워크 연결을 사용하는 모바일 디바이스들, 등)은 혼잡 및/또는 손실 메시지들을 경험할 수 있다.
B.
델타 기술들
[0049] 델타는 데이터 소스의 가장 최근 이전 상태와 데이터 소스의 현재 상태 사이의 차이를 나타낸다. 가장 최근 이전 상태는 모든 매개(intervening) 델타들에 의해 조절된 바와 같은 최종 스냅샷이다. 델타 기술들은 업데이트들을 수신 디바이스들에 통신하기 위하여 하나 또는 그 초과의 델타들에 의해 분리된 주기적 스냅샷들을 사용한다. 예시적 델타 기술은 주기적으로(예컨대, 세트 시간 간격으로) 및/또는 비주기적으로(예컨대, 특정 수의 업데이트들 후), 스냅샷들을 수신부(들)에 전송함으로써 데이터 소스의 상태를 통신한다. 스냅샷들 사이에서, 델타들은 수신부(들)에 주기적으로 및/또는 비주기적으로 전송된다. 따라서, 시간(t)에서 데이터 소스의 현재 상태는 식(2)에 예시된 바와 같이 결정될 수 있다:
현재 상태(t) = SR + Δ1 + Δ2 + ... + Δt 식(2)
여기서 SR은 시간(t) 이전 가장 최근에 전송된 스냅샷을 나타내고, Δ1 내지 Δt는 그 가장 최근 스냅샷 이 후 전송된 델타들을 나타낸다.
[0050] 도 5는 개별적으로 시간(T0), 시간(T1) 및 시간(T2)에서 데이터 소스의 예시적 제 1 상태(400a), 예시적 제 2 상태(400b), 및 예시적 상태(400c)를 포함하는 예시적 델타 기술을 도시하는 데이터 흐름을 예시한다. 도 5에 예시된 예에서, 시간(T0)에서, 제 1 상태(400a)는 캡처되고, 스냅샷(S0)이도록 포맷되고 수신부로 전송된다. 시간(T1)에서, 제 2 상태(400b)는 캡처되고 제 2 상태(400b)는 캡처되고 제 2 상태(400b)에 비교된다. 예시적 델타(Δ1)는 차이들에 기초하여 생성된다. 그 다음 델타(Δ1)는 수신부로 전송된다. 시간(T2)에서, 제 3 상태(400c)는 캡처되고 차이들에 기초하여 델타(Δ2)를 생성하기 위하여 제 2 상태(400b)에 비교된다. 그 다음 델타(Δ2)는 수신부로 전송된다. 도 4의 예시된 예에서, 델타들(예컨대, 델타(Δ1) 및 델타(Δ2))은 명령들(500(예컨대, 부가(A), 변화(C), 제거(R)), 데이터의 어느 부분이 변화할지를 가리키기 위한 인덱스(502), 및 데이터가 어떻게 변화할지를 가리키기 위한 값들(504)(예컨대, 값(1) 및 값(2))을 포함한다. 예컨대, 델타는 인덱스(1)에서 값들(값(1), 값(2))을 (0, -50) 만큼 변화(C)시키도록 수신부에 명령할 수 있다. 일부 예들에서, 스냅샷들(예컨대, 스냅샷(S0))은 스냅샷들로서 표시되고 명령들(500)을 포함하지 않는다.
[0051] 델타 기술들은, 스냅샷들 사이에서 업데이트의 단지 변화된 부분만이 수신부(들)에 통신되기 때문에 대역폭 사용량을 감소시킬 수 있다. 그러나, 델타들만이 임의의 업데이트의 부분을 통신하기 때문에, 델타가 적절하게 수신되지 않으면(예컨대, 혼잡으로 인해, 연결 중단으로 인해, 손실된 메시지로 인해, 등), 수신부의 데이터는 잘못될 수 있거나 수신부는 새로운 스냅샷이 전송될 때까지 대기하고, 그때까지 모든 추후에 수신된 델타들을 버린다.
Ⅴ.
델타스냅 기술들 및 메시지 레이트 맞춤
[0052] 특정 실시예들은 델타스냅 기술들로서 본원에 지칭된 기술들을 사용하여 하나 또는 그 초과의 수신부 디바이스들(예컨대, 하나 또는 그 초과의 전자 디바이스들(206))로의 데이터 소스(예컨대, 데이터 소스(202))의 상태의 개선된 통신을 제공한다. 델타스냅 기술들은 스냅샷 기술들에 비교될 때 더 효과적인 대역폭 이용 및 델타 기술들보다 데이터 손실에 대한 더 나은 탄성력을 제공한다. 게다가, 델타스냅 기술들은 단지 스냅샷 기술들을 사용해서 전송될 리던던트 데이터를 감소시키고 델타 기술들을 사용하기 위하여 필요한 복잡성 및 스토리지를 감소시키면서 효과적인 메시지 레이트 및 레벨들의 수 맞춤을 제공한다.
[0053] 델타스냅은 수신부(예컨대, (도 2 및 도 3의 수신부(206))에 전송될 가장 최근 스냅샷과 업데이트에서 제공될 데이터 소스(예컨대, 도 2 및 도 3의 데이터 소스(202))의 현재 상태 사이의 차이를 나타낸다. 예시적인 델타스냅 기술은 주기적으로 및/또는 비주기적으로(예컨대, 세트 시간 간격으로, 특정 수의 업데이트들 이후, 트리거링 조건시, 등) 스냅샷들을 수신부(들)에 전송함으로써 데이터 소스의 상태를 통신한다. 스냅샷들은 모든 수신부들에 전송된다. 부가적으로, 가장 최근 스냅샷은 새로운 연결에 응답하여 전송된다. 바람직하게, 스냅샷들은 스냅샷의 신뢰성 있는 전달을 보장하는 통신 기술을 사용하여 전송된다. 스냅샷들은 예컨대 상기 논의된 스냅샷 기술들의 방식들과 유사한 방식으로 생성될 수 있다. 부가적으로, 스냅샷들 사이에서, 일반적으로 하나 또는 그 초과의 델타스냅들이 생성된다. 델타스냅들은 베이스 업데이트 레이트(예컨대, 데이터 소스(202)가 도 2 및 도 3의 가입 제어 모듈(201)에 업데이트들을 제공하는 레이트 또는 수신부들(206)의 업데이트 레이트 선호도들의 적어도 공배수)에서 생성될 수 있다. 일부 예들에서, 수신 디바이스들(206)은 베이스 업데이트 레이트보다 덜 빈번한 업데이트 레이트에서 델타스냅들에 가입할 수 있다. 예컨대, 가입 제어 모듈(201)의 베이스 업데이트 레이트가 25 밀리초이면, 수신부는 매 100 밀리초(즉, 업데이트들이 베이스 업데이트 레이트에서 또는 그 보다 빠르게 발생하면 매 4번째 델타스냅)보다 느리게 수신하는 것이 바람직할 수 있다. 델타스냅들은 예컨대, 델타스냅이 가장 최근에 전송된 델타에 의해 표현된 상태에 관해서가 아니라 가장 최근에 전송된 스냅샷에 관하여 행해진 것을 제외하고, 상기 논의된 델타 기술들의 상세들과 유사한 방식으로 생성될 수 있다. 델타스냅이 생성될 때, 표현될 이전 스냅샷으로부터의 변화들의 범위로 인해, 델타스냅의 표현이 등가 스냅샷이 표현할 것보다 클 수 있다는 것은 가능하다. 그런 상황들에서, 일부 실시예들에서, 델타스냅의 생성은 포기될 수 있고 새로운 스냅샷은 대신 생성될 수 있고 전송될 수 있다. 델타스냅 기술을 사용하여, 시간(t)에서 데이터 소스(202)의 상태는 식(3)에 예시된 바와 같이 결정될 수 있다:
현재 상태(t) = SR + ΔSt 식(3)
여기서, SR은 시간(t) 이전 가장 최근에 전송된 스냅샷을 나타내고, ΔSt는 시간(t) 이전 가장 최근에 전송된 델타스냅을 나타낸다.
[0054] 도 6은 개별적으로 시간(T0), 시간(T1) 및 시간(T2)에서 데이터 소스(202)의 예시적 제 1 상태(400a), 예시적 제 2 상태(400b), 및 예시적 상태(400c)를 포함하는 예시적 델타스냅 기술을 도시하는 데이터 흐름을 예시한다. 도 6에 예시된 예에서, 제 1 상태(400a)는 데이터 소스 수신기(302)(도 3)에 의해 캡처되고, 데이터 포맷터(306)(도 3)에 의해 스냅샷(S0)이도록 포맷되고 그리고 주 버퍼(306)(도 3)에 위치된다. 메시지 전송기(310)(도 3)는 스냅샷(S0)을 수신부(들)(206)(도 3)에 전송한다. 시간(T1)에서, 제 2 상태(400b)는 데이터 소스 수신기(302)에 의해 캡처된다. 예시된 예에서, 데이터 포맷터(304)는 주 버퍼(306) 내 스냅샷(S0)을 제 2 상태(400b)와 비교한다. 차이들에 기초하여, 데이터 포맷터(304)는 예시적 델타스냅(ΔS1)을 생성한다. 델타 스냅(ΔS1)은 보조 버퍼(310)(도 3)에 저장된다. 그 다음 델타스냅(ΔS1)은 각각의 수신부의 업데이트 레이트 선호도에 따라 메시지 전송기(310)에 의해 수신부(들)(206)에 전송된다.
[0055] 도 6의 예에서 예시된 바와 같이, 시간(T2)에서, 데이터 소스 수신기(302)는 데이터 소스(202)의 제 3 상태(400c)를 캡처한다. 데이터 포맷터(304)는 주 버퍼(306)에 저장된 스냅샷(S0)을 제 3 상태(400c)와 비교하고 차이들에 기초하여 델타스냅(ΔS2)을 생성한다. 델타스냅(ΔS2)은 보조 버퍼(308)에 저장된다. 그 다음 델타스냅(ΔS2)은 각각의 수신부의 업데이트 레이트 선호도에 따라 메시지 전송기(310)에 의해 수신부(들)(206)에 전송된다. 도 6에 예시된 예에서, 델타스냅들(ΔS1, ΔS2)은 동작들(600), 인덱스(602)는 데이터의 어느 부분이 영향을 미칠지를 가리키기 위한 인덱스(602), 및/또는 값들(604)로의 변화들(예컨대, 값 1 및 값 2)로 생성된다.
[0056] 델타스냅이 최종 스냅샷 이후 발생된 데이터 소스(202)의 데이터에 대한 하나 또는 그 초과의 업데이트들에 관한 정보를 포함하기 때문에, 델타스냅 기술은 업데이트들이 베이스 업데이트 레이트의 배수들의 상이한 업데이트 레이트 선호도들로 수신부(들)(206)에 전송되게 한다. 예컨대, 스냅샷들이 매 2분에 생성되고 델타스냅들이 스냅샷들 사이에서 매초 생성되면, 제 1 수신부는 매 5초마다 델타스냅을 수신하도록 선호도를 세트할 수 있고, 제 2 수신부는 매 10초마다 델타스냅을 수신하도록 선호도를 세트할 수 있다. 각각의 스냅샷은 모든 각각의 수신부에 전송된다. 델타스냅이 생성될 때, 델타스냅은 자신의 선호도에 따라 수신부들에 전송될 수 있다. 따라서, 각각의 수신부는 모든 델타스냅이 전송되지 않을 수 있다. 델타스냅이 가장 최근에 전송된 스냅샷에 관하여 변화들을 나타내기 때문에, 특정 수신부가 데이터 소스에 대한 가장 최근 업데이트를 결정하기 위하여 각각의 델타스냅을 수신하는 것은 필요하지 않다.
[0057] 델타스냅들이 데이터 소스(202)의 업데이트에 관한 정보 부분을 포함하기 때문에, 델타스냅 기술은 일반적으로 스냅샷 기술에 비교될 때 더 적은 대역폭을 요구한다.
[0058] 일부 예들에서, 델타스냅 기술은 델타 기술들보다 많은 대역폭을 요구할 수 있다. 예컨대, 데이터 소스(202)가 변화하고, 그 다음 잠시 동안 다시 변화하지 않으면, 델타스냅은 반복적으로 변화를 포함할 것이고, 델타는 그렇지 않을 것이다. 그러나, 데이터 소스에 대한 가입 및 손실된 메시지로부터 복구는 델타 기술들에 비해 델타스냅 기술을 사용하여 보다 관리 가능하다. 예컨대, 델타스냅 기술을 사용하여, 수신 디바이스(206)는 스냅샷들의 가입 제어 모듈(201)에 연결할 수 있고 가장 최근 스냅샷 및 가장 최근 델타스냅을 수신함으로써 최근화된다.
Ⅵ.
분할가능 데이터 레벨 기술들 및 데이터 레벨 맞춤
[0059] 특정 실시예들은 분할가능 데이터 레벨 기술들로서 본원에 지칭되는 기술들을 사용하여 하나 또는 그 초과의 수신부 디바이스들(206)로의 데이터 소스(202) 상태의 개선된 통신을 제공한다. 분할가능 데이터 레벨들은 레벨들 또는 티어들로의 업데이트시 데이터의 조직을 지칭한다. 도 7a 및 도 7b의 예시된 예들에서, 데이터 소스(예컨대, 도 2 및 도 3의 데이터 소스(202))로부터 수신된 데이터(700)는 데이터 포맷터(예컨대, 도 3의 데이터 포맷터(304))에 의해 데이터 레벨들(702a-702f)로 조직된다. 일부 예들에서, 데이터 레벨들(702a-702f)은 내림차순 관심 레벨들로 조직된다(예컨대, 제 1 레벨(702a)은 최대 요청된 데이터를 포함하고, 제 2 레벨(702b)은 제 2 최대 요청된 데이터를 포함하고, 등임). 부가적으로 또는 대안적으로, 각각의 데이터 레벨(702a-702f)은 정보 상세 레벨을 나타낸다. 데이터 레벨들(702a-702f)은 하기 데이터 레벨들(702)로부터 분할가능하다(예컨대, 제 1 데이터 레벨(702a)은 도 2의 맞추어진 메시지(204)를 생성하기 위하여 사용될 수 있고, 제 1 데이터 레벨(702a) 및 제 2 데이터 레벨(602b)은 맞추어진 메시지(204)를 생성하기 위하여 사용될 수 있고, 등임). 즉, 데이터는, 수신부들이 제 1 데이터 레벨(702a)에서 시작하고 바람직한 데이터 레벨을 통해, 레벨들의 서브세트만을 수신하도록 선호도를 특정할 수 있도록 하는 레벨들 또는 티어들로 배열된다. 예컨대, 일부 수신부들은 제 1 3개의 데이터 레벨들(레벨들(702a-702c))을 수신하는 것이 바람직할 수 있고 다른 수신부들은 제 1 데이터 레벨(레벨(702a))만을 수신하는 것이 바람직할 수 있다. 일부 수신부들은 제 5 데이터 레벨(레벨(702e))의 정보만을 원할 수 있지만, 분할가능 데이터 레벨 기술에 따라, 그런 수신부들은 그들의 원해진 데이터 레벨(이 경우, 레벨들(702a-702d)) 초과의 레벨들을 또한 수신하고자 한다.
[0060] 도 7b의 예시된 예에서, 데이터 레벨(702)은 다중 데이터 값들(704)을 포함할 수 있다. 예시된 예에서, 데이터 레벨들(702)의 데이터 값들(704)은 분할 가능하지 않다. 예컨대, 수신 디바이스(206)가 제 1 데이터 레벨(702a)에 포함된 특정 값(704)을 요청하면, 수신 디바이스(206)는 전체 제 1 데이터 레벨(702a)을 받아들인다. 예컨대, 데이터 소스(202)는 트위터 해시태그(hashtag)들 및 그의 공개 레이트들을 제공할 수 있다. 데이터 포맷터는 자신의 공개 레이트들의 내림차순 순서로 트위터 해시태그들을 조직할 수 있다. 상단 해시태그는 제 1 데이터 레벨(예컨대, 데이터 레벨(702a))일 수 있고, 해시태그들(2 내지 10)은 제 2 데이터 레벨(예컨대, 데이터 레벨(702b))일 수 있고, 그리고 해시태그들(11 내지 100)은 제 3 데이터 레벨(예컨대, 데이터 레벨(702c))일 수 있다. 수신부가 단지 상단 해시태그만을 수신하는 것을 선호하면, 수신부는 제 1 데이터 레벨을 수신할 것이다. 수신부가 상단 10개의 해시태그들을 수신하는 것을 원하면, 수신부는 제 1 데이터 레벨 및 제 2 데이터 레벨을 수신할 것이다.
[0061] 분할가능 데이터 레벨들은 각각의 수신부에 대한 메시지 버퍼에 데이터를 재정돈함이 없이 다수의 수신 디바이스들(예컨대, 도 3의 수신부들(206))에 메시지들의 맞춤을 허용하는 맞춤가능 메시지들의 생성을 가능하게 한다. 예컨대, 천 개의 수신 디바이스들(예컨대, 도 2 및 도 3의 수신 디바이스들(206))은 가입 제어 모듈(예컨대, 도 2 및 도 3의 가입 제어 모듈(201))에 연결되고, 각각의 수신 디바이스(206)는 전송기가 각각의 수신부에 대한 각각의 업데이트 메시지에 대한 데이터를 재정돈 해야 함이 없이 상이한 관심 레벨들 및/도는 상세 레벨들로 업데이터 메시지들을 전송할 수 있다(예컨대, 도 7a 및 도 7b의 분할가능 데이터 레벨들을 사용하여).
[0062] 도 8a 및 도 8b는 메시지 포맷터(예컨대, 도 3의 메시지 포맷터(304))에 의해 생성될 수 있고 버퍼(예컨대, 도 3의 주 버퍼(306) 및/또는 보조 버퍼(308))에 배치될 수 있는 예시적 맞춤가능 메시지들을 예시한다. 버퍼에 배치된 후, 메시지 전송기(예컨대, 도 3의 메시지 전송기(310))는 맞추어진 메시지(204)로서 수신 디바이스(예컨대, 도 2 및 도 3의 수신 디바이스(206))에 전송하기 위하여 버퍼 내 맞춤 가능 메시지의 부분을 사용한다. 도 8a는 스냅샷(예컨대, 도 4, 도 5 및 도 6의 스냅샷(S0))에 기초하여 예시적 맞춤가능 메시지(800)를 예시한다. 도 8a의 예시된 예에서, 맞춤가능 메시지(800)는 하나 또는 그 초과의 헤더들(802), 및 하나 또는 그 초과의 데이터 레벨들(804)을 포함한다. 헤더들(802)은 메시지 전송기(예컨대, 도 3의 메시지 전송기(310))에 의해 맞춤가능 메시지(800)를 프로세스하기 위하여 요구된 부기(bookkeeping) 정보(예컨대, 데이터 레벨들(804)의 수, 정밀 레벨들, 타임스탬프, 등) 및 송신 정보를 포함한다.
[0063] 데이터 레벨들(804)은 하나 또는 그 초과의 분할 포인트들(806)에서 분할 가능한 분할 가능 데이터 레벨들(예컨대, 도 7a 및 도 7b의 데이터 레벨들(702))이다. 일부 예들에서, 각각의 데이터 레벨(804)은 다수의 값들(808)을 포함할 수 있다. 일부 예들에서, 맞추어진 메시지(204)를 전송하기 위하여, 메시지 전송기(310)는 버퍼로부터 분할 포인트들(806) 중 하나까지 맞춤가능 메시지(800)의 부분을 사용한다. 도 8a의 예시된 예에서, 각각의 데이터 레벨(804)은 상세 레벨 및/또는 관심 레벨에 대응하는 데이터 소스(202)의 상태(예컨대, 도 4, 도 5, 및 도 6의 제 1 상태(400a))를 나타내기 위하여 다수의 값들(808)을 포함할 수 있다. 예컨대, 맞춤가능 메시지(800)는 8개의 데이터 레벨들(804)을 포함하고, 수신 디바이스(206)는 선호도를 세팅하는 것을 통하여, 단지 제 1 2개의 데이터 레벨들(804)을 수신하도록 선택할 수 있다. 그런 예에서, 메시지 전송기(310)는 수신 디바이스(206)에 전송하기 위하여 헤더(들)(802) 및 제 1 2개의 데이터 레벨들(804)을 사용한다. 일부 예들에서, 소켓 기입 호는 각각의 수신부에 대한 데이터 레벨들의 바람직한 수만을 포함하도록 버퍼 및 적당한 길이를 참조하여 사용될 수 있다.
[0064] 도 8b는 델타스냅(예컨대, 도 6의 델타스냅(ΔS1))에 기초하여 예시적 맞춤가능 메시지(810)를 예시한다. 도 8b의 예시된 예에서, 맞춤가능 메시지(810)는 하나 또는 그 초과의 헤더들(802), 및 하나 또는 그 초과의 업데이트들(812)을 포함한다. 예시된 예에서, 업데이트들(812)은 동작(814)을 포함한다. 일부 예들에서, 각각의 업데이트(812)는 하나 또는 그 초과의 동작들(814)을 포함할 수 있다. 예시된 예에서, 동작들(814)은 최종 스냅샷 이후 데이터 소스(202)로 변화하는 것에 관한 정보를 포함한다. 데이터 업데이트들(812)은 분할 포인트들(806)에서 분할가능한 분할가능 데이터 레벨들(예컨대, 도 7a 및 도 7b의 데이터 레벨들(702))일 수 있다. 일부 예들에서, 맞추어진 메시지(204)를 전송하기 위하여, 메시지 전송기(310)는 버퍼(예컨대, 주 버퍼(306), 보조 버퍼(308), 등)로부터 분할 포인트(806)의 하나까지 맞춤가능 메시지(810)의 부분을 사용한다. 일부 예들에서, 맞춤가능 메시지(810)는 모든 각각의 데이터 레벨(804)(예컨대, 그 특정 데이터 레벨(804) 내 어떤 데이터도 최종 스냅샷 이후 변화되지 않음, 등)에 대응하는 업데이트(812)를 포함하지 않을 수 있다.
[0065] 도 8b의 예시된 예에서, 동작들(814)은 동작 기준(816), 인덱스(818), 및 하나 또는 그 초과의 파라미터들(820)을 포함한다. 동작 기준(816)은 예시적 인덱스(814)에 의해 식별된 데이터 레벨(804)을 업데이트하기 위하여 어느 동작(예컨대, 도 6의 동작(600))이 실행될지를 식별한다. 예시적 파라미터(들)(820)는 식별된 데이터 레벨(804)의 값(예컨대, 값(808))으로 변화의 크기를 식별한다. 예시적 동작 기준들(814)은 표(1)에 설명된다.
동작 기준 | 약어 | 설명 | 예시적 파라미터들 |
부가(Add) | A | 인덱스 이전 새로운 데이터 레벨 부가 | 값 1, 값 2,... 값 N |
상대적 부가(Add Relative) | AR | 인덱스에서 데이터 레벨에 기초하고 파라미터(들)에 의해 수정된 인덱스 이후 새로운 데이터 레벨 부가 | 값 1, 값 2,... 값 N |
상단 부가(Add Top) | AT | 제 1 데이터 레벨 이전 새로운 데이터 레벨 부가(인덱스 없음) | 값 1, 값 2,... 값 N |
N번째 값 수정(Modify Nth Value) | MVN | 인덱스에 의해 식별된 데이터 레벨 값 수정 | 값 N |
모두 수정(Modify All) | MA | 인덱스에 의해 식별된 데이터 레벨의 모든 값들 수정 | 값 1, 값 2,... 값 N |
삭제(Delete) | D | 인덱스에 의해 식별된 데이터 레벨 삭제 | |
변화 없음(No Change) | NC | 인덱스에 의해 식별된 데이터 레벨이 변화되지 않은 것을 표시 |
[0066] 예시적 "부가" 동작은 예시적 파라미터들(820)에 의해 특정된 값들(예컨대, 도 7의 값들(704))을 가진 인덱스(814)에 의해 특정된 데이터 레벨 이후 새로운 데이터 레벨(예컨대, 도 7의 데이터 레벨(702a-702f))을 부가한다. 예시적 "상대적 부가" 동작은 예시적 파라미터들(820)에 의해 특정된 값들에 의해 수정된(예컨대, 부가된, 감산된, 등) 인덱스(814)에 의해 특정된 데이터 레벨의 값들을 가진 인덱스(814)에 의해 특정된 데이터 레벨 이후 새로운 데이터 레벨을 부가한다. 예시적 "상단 부가" 동작은 예시적 파라미터들(820)에 의해 특정된 값들을 가진 제 1 데이터 레벨 이전 새로운 데이터 레벨을 부가한다. 예시적 "N번째 값 수정" 동작들(예컨대, "첫 번째 값 수정"(MV1), 등)은 예시적 파라미터(820)에 의해 특정된 바와 같은 인덱스(814)에 의해 식별된 데이터 레벨의 N번째 값을 수정한다. 예시적 "모두 수정" 동작은 예시적 파라미터(820)에 의해 특정된 바와 같은 인덱스(814)에 의해 식별된 데이터 레벨의 값들을 수정한다. 예시적 "삭제" 동작은 인덱스(814)에 의해 식별된 데이터 레벨을 삭제한다. 예시적 "변화 없음" 동작은 인덱스(814)에 의해 특정된 데이터 레벨 이전 인덱스(814)에 의해 특정된 데이터 레벨의 사본을 생성한다.
[0067] 맞춤가능 메시지(810)는 새로운 데이터 레벨(804)을 부가하는 업데이트(812)를 포함할 수 있다(예컨대, "부가" 동작, "상대적 부가" 동작, 및/또는 "상단 부가" 동작, 등을 사용함). 부가적으로 또는 대안적으로, 맞춤가능 메시지(810)는 기존 데이터 레벨(804)을 삭제하는 업데이트(812)를 포함할 수 있다(예컨대, "삭제" 동작, 등을 사용함). 데이터 레벨(804)이 검출될 때, 보다 낮은 데이터 레벨들은 상향으로 시프트한다. 예컨대, 맞춤가능 메시지(800)는 데이터 레벨 1, 데이터 레벨 2, 및 데이터 레벨 3을 포함할 수 있다. 만약 데이터 소스(202)의 다음 업데이트시, 데이터 레벨 2가 삭제되면, 데이터 레벨 3은 데이터 레벨 2가 되도록 시프트한다. 그러나, 그런 예에서, 수신 디바이스(206)가 맞추어진 메시지(204)(예컨대, 수신부의 선호도들에 대하여)의 2개의 데이터 레벨들만을 수신하면, 수신 디바이스(206)는 데이터 레벨 3에 관한 정보를 가지지 않을 것이다. 즉, 수신 디바이스(206)가 최종 스냅샷을 수신할 때, 맞추어진 메시지(204)는 데이터 레벨 3에 관한 정보를 포함하지 않았다. 수신 디바이스(206)가 데이터 소스(202)의 현재 상태에 관한 정확한, 최신 정보를 가지게 하기 위하여, 삭제된 데이터 레벨(804)이 삭제될 때, 데이터 포맷터(304)는 업시프트된 데이터 레벨들(804)(예컨대, 데이터 레벨들 1 및 3)을 제공하는 동작(814)(예컨대, "변화 없음" 동작)을 포함할 수 있다. 일부 예들에서, 이미 데이터 레벨(804)을 가진 수신 디바이스(들)(206)는 "변화 없음" 동작(814)을 무시한다.
[0068] 도 9는 데이터 레벨(예컨대, 도 8a의 데이터 레벨(804))이 삭제된 예시적 데이터 흐름을 예시한다. 예시된 예는 시간(T0)에서 데이터 소스(202)(도 2 및 도 3)의 제 1 상태(900a) 및 시간(T1)에서 제 2 상태(900b)를 도시한다. 제 1 상태(900a) 및 제 2 상태(900b)는 제 1 데이터 레벨(902a), 제 2 데이터 레벨(902b), 제 3 데이터 레벨(902c), 제 4 데이터 레벨(902d), 및 제 5 데이터 레벨(902e)로 조직되었다. 데이터 포맷터(도 3)는 스냅샷-기초 맞춤가능 메시지(예컨대, 도 8a의 맞춤가능 메시지(800))를 생성한다. 시간(T0)에서, 수신 디바이스(206)(도 2 및 도 3)가 3개의 데이터 레벨들(804)에 대한 선호도를 세트하기 때문에, 3개의 데이터 레벨들을 가진 맞추어진 스냅샷(S0)은 수신 디바이스(206)에 전송된다. 시간(T1)에서, 제 2 데이터 레벨(902b)은 삭제된다. 예시된 예에서, 제 3 데이터 레벨(902c), 제 4 데이터 레벨(902d) 및 제 5 데이터 레벨(902e)은 상향으로 시프트한다. 델타스냅-기초 맞춤가능 메시지(예컨대, 도 8b의 맞춤가능 메시지(910))를 생성할 때, 데이터 포맷터(304)는 "변화 없음" 동작을 포함한다. 맞추어진 델타 스냅(ΔS1)은 "변화 없음" 동작으로 수신부에 전송된다.
[0069] 도 10은 버퍼(예컨대, 도 3의 주 버퍼(306) 또는 도 3의 보조 버퍼(308)) 내 예시적 맞춤가능 메시지(1000)(예컨대, 도 8a의 스냅샷-기초 맞춤가능 메시지(800) 및/또는 도 8b의 델타스냅-기초 맞춤가능 메시지(810))를 예시한다. 맞춤가능 메시지(1000)는 하나 또는 그 초과의 헤더들(1002) 및 하나 또는 그 초과의 분할가능 데이터 레벨들(1004)(예컨대, 도 8a의 데이터 레벨들(804) 또는 도 8b의 업데이트들(812))을 포함한다. 예시적 예에서, 맞춤가능 메시지를 포맷팅할 때, 데이터 포맷터(304)(도 3)는 분할 포인트들(1006)의 버퍼 내 위치를 계산한다. 일부 예들에서, 데이터 포맷터(304)는 분할 포인트들(1006)의 버퍼 내 위치들(예컨대, 바이트 오프셋들, 등)을 저장하는 분할 표(1008)를 생성한다. 일부 그런 예들에서, 분할 표(1008)는 맞춤가능 메시지(1000)의 시작 또는 말단에 저장될 수 있다. 일부 예들에서, 분할 표(1008)는 맞추어진 메시지들(204)(도 2)을 전송할 때 메시지 전송기(310)(도 3)에 의해 사용된다. 이런 방식으로, 맞추어진 메시지(204)를 전송할 때, 메시지 전송기(310)는 수신 디바이스(206)의 선호도들에 따라 사용하기 위한 맞춤가능 메시지(1000)의 요구된 사이즈(예컨대, 버퍼 내 바이트 양)를 빠르게 결정할 수 있다.
Ⅶ.
델타스냅들 및 분할가능 데이터 레벨들을 사용한 맞추어진 메시징
[0070] 특정 실시예들은 델타스냅 및 분할가능 데이터 레벨 기술들의 조합을 사용하여 하나 또는 그 초과의 수신부 디바이스들(206)로의 데이터 소스(202)의 상태의 개선된 통신을 제공한다.
[0071] 도 11은 예시적 수신 디바이스 A(1104a)와 도 2 및 도 3의 예시적 가입 제어 모듈(201) 사이의 예시적 제 1 연결(1102a)을 묘사하는 예시적 데이터 흐름도(1100)를 예시한다. 도면(1100)은 또한 예시적 수신 디바이스 B(1104b)와 가입 제어 모듈(201) 사이의 예시적 제 2 연결(1102b)을 묘사한다. 가입 제어 모듈(201)은 스냅샷 임계 레이트(예컨대, 매 분, 매 2분, 등)에서 스냅샷들(1106)을 생성하고 베이스 업데이트 레이트(예컨대, 매 초, 등)에서 델타스냅들(1108a-1108g)을 생성한다. 예시된 예에서, 가입 제어 모듈(201)은 스냅샷들(1106) 및 델타스냅들(1108a-1108g)을 제 1 연결(1102a) 및 제 2 연결(1102b)에 전송한다.
[0072] 도 11에 예시된 예에서, 제 1 연결(1102a)은 시간에 걸쳐 혼잡 기간들(1110) 및 현저한 혼잡이 없는(1112) 기간들을 가진다. 예시된 예에서, 수신 디바이스 A(1104a)는 업데이트 레이트(예컨대, 델타스냅들(1108a-1108g)이 제 1 연결(1102a)에 전송되는 레이트) 및/또는 수신할 데이터 레벨들의 수(예컨대, 얼마나 많은 데이터 레벨들이 각각의 스냅샷(1106) 및 각각의 델타스냅(1108a-1108g)에 포함되는지)에 관한 선호도들을 세트한다. 예시된 예에서, 수신 디바이스 A(1104a)에 의해 세트된 업데이트 레이트는 베이스 업데이트 레이트(예컨대, 델타스냅들(1108a-1108g)이 가입 제어 모듈(201)에 의해 생성된 레이트)와 동일하다. 예컨대, 베이스 업데이트 레이트가 1초이면, 수신 디바이스 A(1104a)는 1초 간격들에서 델타스냅들(1108a-1108g)을 수신한다. 일부 예들에서, 가입 제어 모듈(201)은 혼잡 기간들(1110)을 검출할 수 있다. 예컨대, 가입 제어 모듈(201)의 전송 소켓은, 전송 버퍼가 가득 차고 및/또는 제 1 연결(1102a)이 혼잡한 것을 가리킬 수 있다. 일부 예들에서, 가입 제어 모듈(201)은, 제 1 연결(1102a)이 더 이상 혼잡하지 않을 때까지 지연된 델타스냅(1108b)의 송신을 지연한다. 혼잡 기간(1110)이 수신 디바이스(206)의 바람직한 업데이트 레이트보다 길 때, 가입 제어 모듈(201)은 계류 델타스냅(1108d)을 누락할 수 있고 대신 다음 델타스냅(1108e)을 전송할 수 있다.
[0073] 도 11에 예시된 예에서, 제 2 연결(1102b)은 시간에 걸쳐 연결 기간들(1113) 및 연결해제 기간들(1114)을 가진다. 예시된 예에서, 수신 디바이스 B(1104b)에 의해 세트된 업데이트 레이트는 베이스 업데이트 레이트보다 덜 빈번하게 세트된다. 예컨대, 베이스 업데이트 레이트가 100 밀리초이면, 수신 디바이스 B(1104b)의 업데이트 레이트는 200 밀리초일 수 있다. 예시된 예에서, 연결(1102b)이 가입 제어 모듈(201) 및 수신 B(1104b) 사이에 확립될 때, 가입 제어 모듈(201)은 가장 최근 스냅샷(1106) 및 가장 최근 델타스냅(1108b, 1108f)을 전송한다. 부가적으로 또는 대안적으로, 연결해제 기간(114)이 짧으면(예컨대, 현재 업데이트 레이트보다 작음), 가입 제어 모듈(201)은 단지 델타스냅(1108f)만을 전송할 수 있다.
[0074] 도 12는 가입 제어 모듈이 데이터 소스(예컨대, 도 2 및 도 3의 데이터 소스(202))와 연결을 확립할 때 스냅샷들 및 델타스냅들을 생성하기 위하여 도 2 및 도 3의 가입 제어 모듈(201)을 구현하도록 실행될 수 있는 예시적 머신 판독가능 명령들을 나타내는 예시적 방법(1200)의 흐름도이다. 처음에, 블록(1202)에서, 가입 제어 모듈(201)은 데이터 소스(202)로부터 전송된 데이터를 수신한다. 일부 예들에서, 가입 제어 모듈(201)은 세트된 시간 간격들에서 데이터를 리트리브한다. 부가적으로 또는 대안적으로, 가입 제어 모듈(201)은 데이터 소스(202)에 대한 업데이트를 검출하는 것에 응답하여 및/또는 트리거에 응답하여 데이터를 리트리브할 수 있다. 블록(1204)에서, 가입 제어 모듈(201)은, 스냅샷 임계 레이트가 초과되었는지를 결정한다. 스냅샷 임계 레이트는 예컨대 스냅샷들을 생성하는 것 사이의 최소 시간 양이다. 일부 예들에서, 스냅샷 임계치는, 얼마나 많은 데이터 소스(201)가 각각의 업데이트를 변화시키는지(예컨대, 보다 큰 데이터 소스 변화들은 보다 짧은 스냅샷 임계치를 수반함) 기초될 수 있다.
[0075] 스냅샷 임계치가 초과되었다면, 프로그램 제어는 블록(1206)으로 진행한다. 그렇지 않으면, 스냅샷 임계치가 초과되지 않았다면, 프로그램 제어는 블록(1208)으로 진행한다. 블록(1206)에서, 가입 제어 모듈(201)은 스냅샷(예컨대, 도 11의 스냅샷(1106))을 생성한다. 그 다음 프로그램 제어는 블록(1202)으로 리턴한다. 블록(1208)에서, 가입 제어 모듈은 델타스냅(예컨대, 도 11의 델타스냅들(1108a-1108g)을 생성한다. 그 다음 프로그램 제어는 블록(1202)으로 리턴한다. 예시적 머신 판독가능 명령들(1200)은, 가입 제어 모듈(201)이 데이터 소스(202)로부터 연결해제될 때까지 실행된다.
[0076] 도 13은 도 3의 데이터 소스 리트리버(302)에 의해 리트리브된 데이터로부터 스냅샷(예컨대, 도 11의 스냅샷(1106))을 생성하기 위하여 도 3의 데이터 포맷터(304)를 구현하기 위하여 실행될 수 있는 예시적 머신 판독가능 명령들을 나타내는 예시적 방법(1300)의 흐름도이다. 처음에, 블록(1302)에서, 데이터 소스 리트리버(302)로부터 데이터를 수신한 후, 데이터 포맷터(304)는 도 3의 주 버퍼(306)에 하나 또는 그 초과의 헤더들(예컨대, 도 8a의 헤더들(802), 도 10의 헤더들(1002)을 부가한다. 블록(1304)에서, 데이터 포맷터(304)는 데이터를 분할가능 데이터 레벨들(예컨대, 도 7a 및 도 7b의 분할가능 데이터 레벨들(702a-702f)로 조직한다. 일부 예들에서, 데이터는 관심 레벨들 및/또는 상세 레벨들로 조직된다. 블록(1306)에서, 데이터 포맷터(304)는 조직된 데이터를 맞춤가능 메시지(예컨대, 도 8a의 맞춤가능 메시지(800), 도 10의 맞춤가능 메시지(1000), 등)으로 포맷한다. 그 다음 맞춤가능 메시지는 주 버퍼(306)에 놓여진다. 블록(1308)에서, 데이터 포맷터(304)는 맞춤가능 메시지의 분할가능 포인트들(예컨대, 도 8a의 분할가능 포인트들(806), 도 10의 분할가능 포인트들(1000))의 주 버퍼(306) 내 위치를 계산한다. 일부 예들에서,데이터 포맷터(304)는 분할 표(예컨대, 도 10의 분할 표(1008))를 생성하고 이를 주 버퍼(306) 내 맞춤가능 메시지의 시작 또는 말단에 첨부한다. 그 다음 예시적 프로그램(1300)은 종료한다.
[0077] 도 14는 도 3의 데이터 소스 리트리버(302)에 의해 리트리브된 데이터로부터 델타스냅(예컨대, 도 11의 델타스냅들(1108a-1108g))을 생성하기 위하여 도 3의 데이터 포맷터(304)를 구현하도록 실행될 수 있는 예시적 머신 판독가능 명령들을 나타내는 예시적 방법(1400)의 흐름도이다. 처음에, 블록(1302)에서, 데이터 소스 리트리버(302)로부터 데이터를 수신한 후, 데이터 포맷터(304)는 하나 또는 그 초과의 헤더들(예컨대, 도 8b의 헤더들(802), 도 10의 헤더들(1002))을 도 3의 보조 버퍼(308)에 부가한다. 블록(1404)에서, 데이터 포맷터(304)는 데이터를 분할가능 데이터 레벨들(예컨대, 도 7a 및 도 7b의 분할가능 데이터 레벨들(702a-702f))로 조직한다.
[0078] 블록(1406)에서, 블록(1402)에서 조직된 제 1 데이터 레벨에서 시작하여, 데이터 포맷터는 현재 데이터 레벨과 주 버퍼(306)(도 3)의 맞춤가능 메시지에 저장된 대응하는 데이터 레벨 사이의 차이를 결정한다. 블록(1408)에서, 데이터 포맷터(304)는, 무슨 동작(예컨대, 도 8b의 동작들(814))이 변화된 데이터를 갖는 스냅샷을 업데이트하기 위하여 수반되는지를 결정한다. 일부 예들에서, 현재 데이터 레벨과 주 버퍼(306)의 맞춤가능 메시지에 저장된 대응하는 데이터 레벨 사이의 차이가 없을 때, 어떠한 동작도 그 레벨에 대해 생성되지 않는다. 블록(1410)에서, 데이터 포맷터(304)는 블록(1408)에서 결정된 동작을 보조 버퍼(308)의 맞춤가능 메시지(예컨대, 도 8b의 맞춤가능 메시지(810), 도 10의 맞춤가능 메시지(1000))에 부가한다. 블록(1412)에서, 데이터 포맷터(304)는, 보조 버퍼(308) 내 델타스냅의 부분이 주 버퍼(306) 내 스냅샷보다 큰지를 결정한다. 보조 버퍼(308) 내 델타스냅이 스냅샷보다 크면, 프로그램 제어는 블록(1414)으로 진행한다. 그렇지 않고, 보조 버퍼(308) 내 델타스냅이 스냅샷보다 크지 않으면, 프로그램 제어는 블록(1416)으로 진행한다.
[0079] 블록(1414)에서, 델타스냅의 생성은 중단되고, 데이터 포맷터는 대신 스냅샷을 생성한다. 그 다음 예시적 프로그램(1400)은 종료된다. 블록(1416)에서, 데이터 포맷터(304)는, 스냅샷에 비교할 다른 데이터 레벨이 있는지 결정한다. 스냅샷에 비교할 다른 데이터 레벨이 있다면, 프로그램 제어는 블록(1406)으로 리턴한다. 그렇지 않고, 스냅샷에 비교할 다른 데이터 레벨이 없다면, 프로그램 제어는 블록(1418)으로 진행한다. 블록(1418)에서, 데이터 포맷터(304)는 맞춤가능 메시지의 분할가능 포인트(들)(예컨대, 도 8b의 분할가능 포인트들(806), 도 10의 분할가능 포인트들(1000))의 보조 버퍼(308) 위치를 계산한다. 일부 예들에서, 데이터 포맷터(304)는 분할 표(예컨대, 도 10의 분할 표(1008))를 생성하고 이를 보조 버퍼(308) 내 맞춤가능 메시지의 시작 또는 말단에 첨부한다. 그 다음 예시적 프로그램(1400)은 종료된다.
[0080] 도 15는 수신부(예컨대, 도 2 및 도 3의 수신 디바이스(206)를 업데이트하기 위하여 도 3의 예시적 메시지 전송기(310)를 구현하기 위하여 실행될 수 있는 예시적 머신 판독가능 명령들을 나타내는 예시적 방법(1500)의 흐름도이다. 블록(1502)에서, 메시지 전송기(310)는 수신부와 연결(예컨대, 도 11의 제 1 연결(1102a))을 확립한다. 일부 예들에서, 메시지 전송기(310)는 수신부로부터 선호도들을 요청 및/또는 수신한다. 부가적으로 또는 대안적으로, 메시지 전송기(310)는 수신부의 선호도들을 (예컨대, 가입자 데이터베이스, 등으로부터) 유지 및/또는 액세스한다. 블록(1504)에서, 메시지 전송기(310)는 가장 최근 스냅샷(예컨대, 도 11의 스냅샷(1106))을 수신부에 전송한다. 일부 예들에서, 메시지 전송기(310)는 수신부의 선호도들에 따라 스냅샷을 맞춘다(예컨대, 도 3의 주 버퍼(306) 내 맞춤가능 메시지의 부분을 사용함).
[0081] 블록(1506)에서, 메시지 전송기(310)는, 보조 버퍼(308)(도 3) 내에 보다 최근 델타스냅(예컨대, 도 11의 델타스냅들(1108a-1108g))이 있는지를 결정한다. 메시지 전송기(310)가, 보다 최근의 델타스냅이 있는지를 결정하면, 프로그램 제어는 블록(1508)으로 진행하고, 그렇지 않으면, 예시적 프로그램(1500)은 종료된다. 블록(1508)에서, 메시지 전송기(310)는 가장 최신 델타스냅을 수신부에 전송한다. 일부 예들에서, 메시지 전송기(310)는 수신부의 선호도들에 따라 델타스냅을 맞춘다(예컨대, 도 3의 보조 버퍼(306) 내 맞춤가능 메시지의 부분을 사용함). 그 다음 예시적 프로그램(1500)은 종료된다.
[0082] 도 16은 스냅샷들(예컨대, 도 11의 스냅샷들(1106)) 및 델타스냅들(예컨대, 도 11의 델타스냅들(1108a-1108g))을 도 2 및 도 3의 가입 제어 모듈(201)에 연결된 수신 디바이스들(206)(도 2 및 도 3)에 전송하기 위하여 도 3의 메시지 전송기(310)를 구현하도록 실행될 수 있는 예시적 머신 판독가능 명령들을 나타내는 예시적 방법(1600)의 흐름도이다. 처음에, 블록(1602)에서, 주 버퍼(306)(도 3)의 새로운 스냅샷 또는 보조 버퍼(308)(도 3)의 새로운 델타스냅이 검출 및/또는 트리거된다. 새로운 스냅샷 또는 델타스냅이 있다면, 프로그램 제어는 블록(1604)으로 진행한다. 그렇지 않으면, 프로그램 제어는 블록(1602)으로 리턴한다. 블록(1604)에서, 메시지 전송기(310)는, 수신 디바이스(206)의 업데이트 레이트가 충족되었는지를 결정한다. 일부 예들에서, 수신부는, 연결이 메시지 전송기(310)에 의해 확립 및/또는 유지될 때 메시지 전송기(310)에 의해 수신된 선호도들을 세트한다. 일부 예들에서, 수신 디바이스(206)는 선호도들을 세트하지 않는다. 그런 예들에서, 가입 제어 모듈(201)의 레이트에 대한 업데이트 레이트 디폴트들은 스냅샷들 및 델타스냅들(예컨대, 베이스 업데이트 레이트)을 생성한다. 수신 디바이스(206)의 업데이트 레이트가 충족되면, 프로그램 제어는 블록(1606)으로 진행한다. 그렇지 않고, 수신 디바이스(206)의 업데이트 레이트가 충족되지 않으면, 프로그램 제어는 블록(1602)으로 리턴한다.
[0083] 블록(1606)에서, 메시지 전송기(310)는, 메시지가 수신 디바이스(206)에 전송될 수 있는지를 결정한다. 일부 예들에서, 메시지 전송기(310)는 혼잡(예컨대, 도 3의 혼잡 기간(1112))을 검출한다. 메시지가 수신 디바이스(206)에 전송될 수 있으면, 프로그램 제어는 블록(1608)으로 진행한다. 그렇지 않고, 메시지가 수신 디바이스(206)에 전송될 수 없으면, 프로그램 제어는 블록(1602)으로 리턴한다. 블록(1608)에서, 메시지 전송기(310)는, 스냅샷 또는 델타스냅이 수신 디바이스(206)에 전송되는지를 결정한다. 스냅샷이 전송되면, 프로그램 제어는 블록(1610)으로 진행한다. 델타스냅이 전송되면, 프로그램 제어는 블록(1612)으로 진행한다. 블록(1610)에서, 메시지 전송기(310)는 스냅샷을 수신 디바이스(206)에 전송한다. 일부 예들에서, 메시지 전송기(310)는 수신부의 선호도들에 따라 스냅샷을 맞춘다(예컨대, 도 3의 주 버퍼(306)에서 맞춤가능 메시지의 부분을 사용함). 프로그램 제어는 블록(1602)으로 리턴한다. 블록(1612)에서, 메시지 전송기(310)는 델타스냅을 수신부에 전송한다. 일부 예들에서, 메시지 전송기(310)는 수신부의 선호도들에 따라 델타스냅을 맞춘다(예컨대, 도 3의 보조 버퍼(306)의 맞춤가능 메시지의 부분을 사용함). 프로그램 제어는 블록(1602)으로 리턴한다. 예시적 명령들(1600)은, 수신부가 가입 제어 모듈(201)로부터 연결해제될 때까지 실행된다.
[0084] 도 17은 버퍼(예컨대, 도 3의 주 버퍼(306) 및/또는 보조 버퍼(308))내 맞춤가능 메시지들(예컨대, 도 8a의 맞춤가능 메시지(800), 도 8b의 맞춤가능 메시지(810), 등)을 재정돈함이 없이 스냅샷들(예컨대, 도 11의 스냅샷들(1106)) 및/또는 델타스냅들(예컨대, 도 11의 델타스냅들(1108a-1108g))을 맞추기 위하여 도 3의 메시지 전송기(310)를 구현하도록 실행될 수 있는 예시적 머신 판독가능 명령들을 나타내는 예시적 방법(1700)의 흐름도이다. 처음에, 블록(1702)에서, 메시지 전송기(310)는 수신부 선호도들에 의해 지시된 바와 같이 전송할 데이터 레벨들(예컨대, 도 7a 및 도 7b의 데이터 레벨들(702a-702f))을 결정한다. 블록(1704)에서, 메시지 전송기(310)는 블록(1702)에서 결정된 데이터 레벨들의 수에 기초하여 수신 디바이스(206)에 전송할 버퍼 부분의 사이즈를 결정한다. 일부 예들에서, 분할 표(예컨대, 도 10의 분할 표(1008))는 버퍼의 시작 또는 말단에 첨부된다. 그런 예들에서, 메시지 전송기(310)는 분할 표(1008) 상 요구된 버퍼 사이즈를 찾는다. 블록(1706)에서, 메시지 전송기(310)는 블록(1704)에서 결정된 버퍼의 부분을 수신 디바이스(206)에 전송한다. 그 다음 예시적 프로그램(1700)은 종료된다.
Ⅷ.
예시적 전자 거래 시스템
[0085] 상기 논의된 특정 실시예들은 전자 거래 시스템들에서 유용할 수 있다. 예컨대, 다양한 가격 레벨들에서 이용 가능한 양을 포함하는 통신 마켓 정보는 메시지 맞춤으로부터 이익일 수 있다. 예컨대, 거래가능 대상들의 인사이드(inside) 마켓 데이터 및 마켓 깊이 데이터는 분할가능 데이터 레벨들(예컨대, 분할가능 데이터 레벨들(702a-702f))로 조직될 수 있다. 부가적으로, 인사이드 마켓 데이터 및 마켓 깊이 데이터에 대한 업데이트들은 텔타스냅 기술을 사용하여 이들 거래가능 대상들의 교환에 대해 가입자들에게 통신될 수 있다.
[0086] 도 18은 특정 실시예들이 이용될 수 있는 예시적 전자 거래 시스템(1800)을 나타내는 블록도를 예시한다. 시스템(1800)은 거래 디바이스(1810), 게이트웨이(1820), 및 거래소(1830)를 포함한다. 거래 디바이스(1810)는 게이트웨이(1820)와 통신한다. 게이트웨이(1820)는 거래소(130)와 통신한다. 본원에 사용된 바와 같이, 어구 "~와 통신"은 직접 통신 및/또는 하나 또는 그 초과의 중개 컴포넌트들을 통한 간접 통신을 포함한다. 거래 디바이스(1810), 게이트웨이(1820) 및/또는 거래소(1830)는 도 1의 하나 또는 그 초과의 컴퓨팅 디바이스들(100)을 포함할 수 있다. 도 18에 묘사된 예시적 전자 거래 시스템(1800)은 본원에 제공된 지침 및 개시로부터 벗어나지 않고 부가적인 기능성 및 능력들을 제공하기 위하여, 부가적인 컴포넌트들, 서브시스템들, 및 엘리먼트들과 통신할 수 있다.
[0087] 동작시, 거래 디바이스(1810)는 게이트웨이(1820)를 통해 거래소(1830)로부터 마켓 데이터를 수신할 수 있다. 사용자는 이 마켓 데이터를 모니터하기 위하여 거래 디바이스(110)를 이용할 수 있고 및/또는 하나 또는 그 초과의 거래가능 대상들을 사거나 팔 주문 메시지를 거래소(1830)에 전송하기 위한 결정을 기초로 할 수 있다.
[0088] 마켓 데이터는 거래가능 대상에 대한 마켓에 관한 데이터를 포함할 수 있다. 예컨대, 마켓 데이터는 인사이드 마켓, 마켓 깊이, 최종 거래된 가격("LTP"), 최종 거래된 양("LTQ), 또는 이들의 조합을 포함할 수 있다. 인사이드 마켓은 특정 시점(인사이드 마켓이 시간에 따라 가변할 수 있기 때문에)에서 거래가능 대상에 대한 마켓에서 최고 이용 가능한 호가(최상 호가) 및 최하 이용 가능한 판매가(가장 우수한 요구 또는 가장 우수한 오퍼)를 지칭한다. 마켓 깊이는 인사이드 마켓을 포함하는 가격 레벨에서 이용 가능하고 인사이드 마켓으로부터 벗어난 양들을 지칭한다. 마켓 깊이는 마켓 내에서 주문들에 기초한 양 없이 가격들로 인한 "갭들"을 가질 수 있다.
[0089] 인사이드 마켓 및 마켓 깊이와 연관된 가격 레벨들은 가격들뿐 아니라 유도된 및/또는 계산된 가격 표현들을 포함할 수 있는 가격 레벨들로서 제공될 수 있다. 예컨대, 가격 레벨들은 개장 가격으로부터 순 변화로서 디스플레이될 수 있다. 다른 예로서, 가격 레벨들은 2개의 다른 마켓들의 가격들로부터 계산된 값으로서 제공될 수 있다. 다른 예에서, 가격 레벨들은 통합된 가격 레벨들을 포함할 수 있다.
[0090] 거래가능 대상은 거래될 수 있는 무언가이다. 예컨대, 거래가능 대상의 특정 양은 특정 가격에 대해 사거나 팔릴 수 있다. 거래가능 대상은 예컨대, 금융 상품들, 주식들, 옵션들, 채권들, 선물들, 통화, 담보물건들, 펀드 파생물들, 유가증권들, 원자재들, 스왑(swap)들, 금리 물건들, 인덱스-기초 물건들, 거래된 이벤트들, 상품들, 또는 이들의 조합을 포함할 수 있다. 거래가능 대상은 거래소에 의해 리스트되고 및/또는 관리되는 물건, 사용자에 의해 정의된 물건, 실제 또는 합성물들의 조합, 또는 이들의 조합을 포함할 수 있다. 실제 거래가능 대상에 대응하거나 및/또는 유사한 합성 거래가능 대상이 있을 수 있다.
[0091] 다른 메시지는 거래 주문을 포함하는 메시지이다. 거래 주문은 예컨대, 거래가능 대상을 사거나 팔기 위한 주문을 주문하기 위한 커맨드; 정의된 거래 전략에 따라 주문들을 관리하는 것을 개시하기 위한 커맨드; 주문을 변경, 수정, 또는 취소하기 위한 커맨드; 주문에 관한 전자 거래소에 대한 명령; 또는 이들의 조합일 수 있다.
[0092] 거래 디바이스(1810)는 하나 또는 그 초과의 전자 컴퓨팅 플랫폼들을 포함할 수 있다. 예컨대, 거래 디바이스(1810)는 데스크톱 컴퓨터, 핸드-헬드 디바이스, 랩톱, 서버, 휴대용 컴퓨팅 디바이스, 거리 단말, 내장된 거래 시스템, 워크스테이션, 알고리즘 거래 시스템 이를테면 "블랙박스" 또는 "회색 박스" 시스템, 컴퓨터들의 클러스터, 또는 이들의 조합을 포함할 수 있다. 다른 예로서, 거래 디바이스(1810)는 프로세서에 의해 실행하기 위한 하나 또는 그 초과의 컴퓨터 프로그램들, 애플리케이션들, 라이브러리들, 컴퓨터 판독가능 명령들, 등을 액세스 가능하게 저장하도록 구성된 메모리 또는 다른 스토리지 매체와 통신하는 단일 또는 다중-코어 프로세서를 포함할 수 있다.
[0093] 본원에 사용된 바와 같이, "구성된" 및 "적응된" 이라는 어구들은, 엘리먼트, 구조, 또는 디바이스가 특정 기능 또는 특수 목적을 수행하기 위하여 수정, 배열, 변경, 또는 가변되었다는 것을 포함한다.
[0094] 예로써, 거래 디바이스(1810)는 X-TRADER®의 카피를 동작시키는 퍼스널 컴퓨터, 즉 Trading Technologies International, Inc. of Chicago, Illinois("Trading Technologies")에 의해 제공된 전자 거래 플랫폼으로서 구현될 수 있다. 다른 예로서, 거래 디바이스(110)는 또한 Trading Technologies에 의해 제공된 ADL®, AUTOSPREADER®, 및/또는 AUTOTRADERTM 같은 자동화된 거래 툴들을 제공하는 거래 애플리케이션을 동작시키는 서버일 수 있다. 또 다른 예에서, 거래 디바이스(110)는 서버와 통신하는 거래 단말을 포함할 수 있고, 여기서 집합적으로 거래 단말 및 서버는 거래 디바이스(1810)이다.
[0095] 거래 디바이스(1810)는 일반적으로 사용자에 의해 소유, 동작, 제어, 프로그램, 구성되거나, 그렇지 않으면 사용된다. 본원에 사용된 바와 같이, 어구 "사용자"는 인간(예컨대, 거래자), 거래 그룹(예컨대, 거래자들의 그룹), 또는 전자 거래 디바이스(예컨대, 알고리즘 거래 시스템)를 포함(그러나 이들로 제한되지 않음)할 수 있다. 하나 또는 그 초과의 사용자들은 예컨대 소유권, 동작, 제어, 프로그래밍, 구성, 또는 다른 용도에 포함될 수 있다.
[0096] 거래 디바이스(1810)는 하나 또는 그 초과의 거래 애플리케이션들을 포함할 수 있다. 본원에 사용된 바와 같이, 거래 애플리케이션은 전자 거래를 가능하게 하거나 개선하는 애플리케이션이다. 거래 애플리케이션은 하나 또는 그 초과의 전자 거래 툴들을 제공한다. 예컨대, 거래 디바이스에 의해 저장된 거래 애플리케이션은 하나 또는 그 초과의 거래 윈도우즈에서 마켓 데이터를 배열 및 디스플레이하기 위하여 실행될 수 있다. 다른 예에서, 거래 애플리케이션은 스프레드(spread) 거래 툴들을 제공하는 자동화된 스프레드 거래 애플리케이션을 포함할 수 있다. 또 다른 예에서, 거래 애플리케이션은 알고리즘을 자동으로 프로세스하고 주문하기, 기존 주문 수정, 주문 삭제 같은 특정 동작들을 수행하는 알고리즘 주문 애플리케이션을 포함할 수 있다. 또 다른 예에서, 주문 애플리케이션은 하나 또는 그 초과의 거래 스크린들을 제공할 수 있다. 거래 스크린은 하나 또는 그 초과의 마켓들과 상호작용을 허용하는 하나 또는 그 초과의 거래 툴들을 제공할 수 있다. 예컨대, 거래 툴은, 사용자가 마켓 데이터를 얻고 보고, 주문 입력 파라미터들을 세트하고, 주문 메시지들을 거래소에 제출, 거래 알고리즘 배치, 및/또는 다양한 거래 전략들을 구현하는 동안 포지션들 모니터하게 할 수 있다. 거래 애플리케이션에 의해 제공된 전자 거래 툴들은 항상 이용 가능할 수 있거나 거래 애플리케이션의 특정 구성들 또는 동작 모드들에서만 이용 가능할 수 있다.
[0097] 거래 애플리케이션은 컴퓨터 판독가능 매체에 저장되고 프로세서에 의해 실행 가능한 컴퓨터 판독가능 명령들을 이용하여 구현될 수 있다. 컴퓨터 판독가능 매체는 예컨대, 랜덤 액세스 메모리, 판독-전용 메모리, 프로그램가능 판독-전용 메모리, 전기 프로그램가능 판독-전용 메모리, 전기 소거가능 판독-전용 메모리, 플래시 메모리, 이들의 임의의 조합, 또는 임의의 다른 유형의 데이터 스토리지 디바이스를 포함하는 다양한 타입들의 휘발성 및 비휘발성 스토리지 매체들을 포함할 수 있다. 본원에 사용된 바와 같이, 용어 비일시적 또는 유형의 컴퓨터 판독가능 매체는 임의의 타입의 컴퓨터 판독가능 스토리지 매체들을 포함하고 신호들을 전파하는 것을 배제하도록 명확히 정의된다.
[0098] 거래 애플리케이션의 하나 또는 그 초과의 컴포넌트들 또는 모듈들은 다른 컴퓨터 판독가능 매체로부터 거래 디바이스(1810)의 컴퓨터 판독가능 매체에 로드될 수 있다. 예컨대, 거래 애플리케이션(또는 거래 애플리케이션에 대한 업데이트들)은 하나 또는 그 초과의 CD들 또는 DVD들의 제조자, 개발자, 또는 발행자에 의해 저장될 수 있고, 그 다음 상기 CD들 또는 DVD들은 거래 디바이스(1810) 또는 거래 디바이스(1810)가 거래 애플리케이션을 리트리브하는 서버에 로드된다. 다른 예로서, 거래 디바이스(1810)는 예컨대 인터넷 또는 내부 네트워크를 통해, 서버로부터 거래 애플리케이션(또는 거래 애플리케이션에 대한 업데이트들)을 수신할 수 있다. 그래 디바이스(1810)는, 거래 디바이스(1810)에 의해 요청될 때(예컨대, "풀 디스트리뷰션(pull distribution)") 및/또는 거래 디바이스(110)에 의해 요청되지 않을 때(예컨대, "푸시(push) 디스트리뷰션") 거래 애플리케이션 또는 업데이트들을 수신할 수 있다.
[0099] 거래 디바이스(1810)는 주문 메시지들을 전송하도록 적응될 수 있다. 예컨대, 주문 메시지들은 게이트웨이(1820)를 통해 거래소(1830)로 전송될 수 있다. 다른 예로서, 거래 디바이스(1810)는 실세계 거래들을 달성하지 못하는 시뮬레이션 환경에서 주문 메시지들을 시뮬레이트된 거래소에 전송하도록 적응될 수 있다.
[00100] 주문 메시지들은 사용자의 요청시 전송될 수 있다. 예컨대, 거래자는 주문 메시지를 전송하거나 거래 주문에 대한 하나 또는 그 초과의 파라미터들(예컨대, 주문 가격 및/또는 양)을 수동으로 입력하기 위하여 거래 디바이스(1810)를 이용할 수 있다. 다른 예로서, 거래 애플리케이션에 의해 제공된 자동화된 거래 툴은 거래 주문에 대한 하나 또는 그 초과의 파라미터들을 계산하고 주문 메시지를 자동으로 전송할 수 있다. 일부 예들에서, 자동화된 거래 툴은 전송될 주문 메시지를 준비하지만 실제로 사용자로부터 확인 없이 이를 전송할 수 있다.
[00101] 주문 메시지는 하나 또는 그 초과의 데이터 패킷들에서 또는 공유된 메모리 시스템을 통해 전송될 수 있다. 예컨대, 주문 메시지는 거래 디바이스(110)로부터 게이트웨이(1820)를 통해 거래소(1830)로 전송될 수 있다. 거래 디바이스(1810)는 예컨대 로컬 영역 네트워크, 광역 네트워크, 무선 네트워크, 가상 사설 네트워크, 셀룰러 네트워크, 피어-투-피어 네트워크, T1 라인, T3 라인, 통합된 서비스 디지털 네트워크("ISDN") 라인, 인터넷 접속거점, 인터넷, 공유된 메모리 시스템 및/또는 사유 네트워크 이를테면 Trading Technologies에 의해 제공된 TINETTM를 사용하여 게이트웨이(1820)와 통신할 수 있다.
[00102] 게이트웨이(1820)는 하나 또는 그 초과의 전자 컴퓨팅 플랫폼들을 포함할 수 있다. 예컨대, 게이트웨이(1820)는 하나 또는 그 초과의 데스크톱 컴퓨터, 핸드-헬드 디바이스, 랩톱, 서버, 휴대용 컴퓨팅 디바이스, 거래 단말, 내장된 거래 시스템, 단일 또는 다중-코어 프로세서를 가진 워크스테이션, 알고리즘 거래 시스템 이를테면 "블랙박스" 또는 "회색박스" 시스템, 컴퓨터들의 클러스터, 또는 이들의 임의의 조합으로서 구현될 수 있다.
[00103] 게이트웨이(1820)는 통신을 가능하게 할 수 있다. 예컨대, 게이트웨이(1820)는 거래 디바이스(1810)와 거래소(1830) 사이에서 통신된 데이터에 대한 프로토콜 번역을 수행할 수 있다. 게이트웨이(1820)는 거래 디바이스(1810)로부터 수신된 주문 메시지를 예컨대 거래소(1830)에 의해 이해되는 데이터 포맷으로 프로세스할 수 있다. 유사하게, 게이트웨이(1280)는 거래소(1830)로부터 수신된 교환-특정 포맷의 마켓 데이터를 예컨대 거래 디바이스(1810)에 의해 이해되는 포맷으로 변환할 수 있다.
[00104] 게이트웨이(1820)는 상기 논의된 거래 애플리케이션들과 유사한, 전자 거래들을 가능하게 하거나 개선하는 거래 애플리케이션을 포함할 수 있다. 예컨대, 게이트웨이(120)는 거래 디바이스(110)로부터 주문들을 추적하고 거래소(130)로부터 수신된 이행(fill) 확인들에 기초하여 거래 상태를 업데이트하는 거래 애플리케이션을 포함할 수 있다. 다른 예로서, 게이트웨이(120)는 거래소(130)로부터 마켓 데이터를 합치고 이를 거래 디바이스(110)에 제공하는 거래 애플리케이션을 포함할 수 있다. 또 다른 예에서, 게이트웨이(120)는 위험 프로세싱을 제공하거나, 함축된 바를 계산하거나, 주문 프로세싱을 다루거나, 마켓 데이터 프로세싱을 다루거나, 또는 이들의 조합을 제공하는 거래 애플리케이션을 포함할 수 있다.
[00105] 특정 실시예들에서, 게이트웨이(1820)는 예컨대, 로컬 영역 네트워크, 광역 네트워크, 무선 네트워크, 가상 사설 네트워크, 셀룰러 네트워크, 피어-투-피어 네트워크, T1 라인, T3 라인, ISDN 라인, 인터넷 접속거점, 인터넷, 공유 메모리 시스템, 및/또는 Trading Technologies에 의해 제공된 TINETTM 같은 사유 네트워크를 사용하여 거래소(1830)와 통신한다.
[00106] 거래소(1830)는 거래소 엔티티에 의해 소유, 동작, 제어, 또는 사용된다. 예시적 거래소 엔티티들은 CME 그룹, 런던 금융 실물 거래소, 대륙간 거래소, 및 Eurex를 포함한다. 거래소(1830)는 예컨대 거래소에 의해 거래를 위하여 제공된 거래가능 대상물들이 사고 팔리게 허용하도록 적응된 전자 머시닝 시스템, 이를테면 컴퓨터, 서버, 또는 다른 컴퓨팅 디바이스를 포함할 수 있다. 거래소(1830)는 별개의 엔티티들을 포함할 수 있고, 예컨대 엔티티들 중 일부는 거래가능 대상들을 리스트 및/또는 관리하고 다른 것들은 주문들을 수신 및 매칭한다. 거래소(1830)는 예컨대 전자 통신 네트워크("ECN: electronic communication network)를 포함할 수 있다.
[00107] 거래소(1830)는 전자 거래소일 수 있다. 거래소(1830)는 주문 메시지들을 수신하고 거래가능 대상들을 사고 팔기 위하여 반대측 거래 주문들을 매칭하도록 적응된다. 매칭되지 않은 거래 주문들은 거래소(1830)에 의해 거래를 위하여 리스트될 수 있다. 거래가능 대상을 사거나 팔기 위한 주문이 수신되고 거래소에 의해 확인되면, 주문은 이행되거나 취소될 때까지 정상 작동중인 것으로 고려된다. 주문 양의 일부만이 매칭되면, 부분적으로 이행된 주문은 정상 작동 상태로 있는다. 거래 주문들은 예컨대, 거래소(130)와 통신시 거래 디바이스(1810) 또는 다른 디바이스들로부터 수신된 거래 주문들을 포함할 수 있다. 예컨대, 통상적으로 거래소(1830)는 또한 매칭될 거래 주문들을 제공하는 다양한 다른 거래 디바이스들(이는 거래 디바이스(1810)와 유사할 수 있음)과 통신할 수 있다.
[00108] 거래소(1830)는 마켓 데이터를 제공하도록 적응된다. 마켓 데이터는 하나 또는 그 초과의 메시지들 또는 데이터 패킷들에서 또는 공유 메모리 시스템을 통해 제공될 수 있다. 예컨대, 거래소(1830)는 거래 디바이스(1810) 또는 게이트웨이(1820) 같은 가입 디바이스들에 데이터 피드(feed)를 공표할 수 있다. 데이터 피드는 마켓 데이터를 포함할 수 있다.
[00109] 시스템(1800)은 부가적이거나, 상이하거나, 더 적은 컴포넌트들을 포함할 수 있다. 예컨대, 시스템(1800)은 다수의 거래 디바이스들, 게이트웨이들, 및/또는 거래소들을 포함할 수 있다. 다른 예에서, 시스템(1800)은 미들웨어, 방화벽들, 허브들, 스위치들, 라우터들, 서버들, 거래-특정 통신 장비, 모뎀들, 보안 관리기들, 및/또는 인크립션(encryption)/디크립션(decryption) 디바이스들 같은 다른 통신 디바이스들을 포함할 수 있다.
Ⅸ.
확장된 예시적 전자 거래 시스템
[00110] 도 19는 특정 실시예들이 이용될 수 있는 다른 예시적 전자 거래 시스템(1900)의 블록도를 예시한다. 이런 예에서, 거래 디바이스(1910)는 게이트웨이(1920) 및 거래소(1930)와 통신하도록 하나 또는 그 초과의 통신 네트워크들을 이용할 수 있다. 예컨대, 거래 디바이스(1910)는 게이트웨이(1920)와 통신하도록 네트워크(1902)를 이용하고, 차례로 게이트웨이(1920)는 거래소(1930)와 통신하도록 네트워크들(1904 및 1906)을 이용한다. 본원에 사용된 바와 같이, 네트워크는 거래 디바이스(1910), 게이트웨이(1920), 및 거래소(1930) 같은 컴퓨팅 디바이스들 사이의 통신을 가능하게 하거나 인에이블한다.
[00111] 다음 논의는 일반적으로 거래 디바이스(1910), 게이트웨이(1920), 및 거래소(1930)에 집중한다. 그러나, 거래 디바이스(1910)는 또한 네트워크(1902)(또는 다른 유사한 네트워크들)에 의해 "n개의" 부가적 게이트웨이들(게이트웨이(1920)와 유사할 수 있는 게이트웨이들(1920a-1920n)로서 개별적으로 식별됨) 및 "n개의" 부가적 거래소들(거래소(1930)와 유사할 수 있는 거래소들(1930a-1930n)로서 개별적으로 식별됨)에 연결 및 통신할 수 있다. 부가적인 네트워크들(개별적으로 네트워크들(1904 및 1906)과 유사할 수 있는 네트워크들(1904a-1904n 및 1906a-1906n)로서 개별적으로 식별됨)은 부가적인 게이트웨이들과 거래소들 사이의 통신들을 위해 이용될 수 있다. 거래 디바이스(1910)와 부가적인 거래소들(1930a-1930n) 각각 사이의 통신은 거래 디바이스(1910)와 거래소(1930) 사이의 통신과 동일할 필요가 없다. 일반적으로, 각각의 거래소는 거래 디바이스, 게이트웨이, 사용자, 또는 다른 거래소와 통신을 위한 그 자신의 바람직한 기술들 및/또는 포맷들을 가진다. 반드시 게이트웨이들(1920a-1920n)과 거래소들(1930a-1930n) 사이에 일대일 맵핑이 있지 않다는 것이 이해되어야 한다. 예컨대, 특정 게이트웨이는 하나보다 많은 거래소와 통신할 수 있다. 다른 예로서, 하나보다 많은 게이트웨이는 동일한 거래소와 통신할 수 있다. 그런 어레인지먼트는 예컨대, 하나 또는 그 초과의 거래 디바이스들(1910)이 하나보다 많은 거래소(및/또는 다수의 거래소들에 리던던트 연결들을 제공)에서 거래하게 한다.
[00112] 거래 디바이스(1910)와 유사할 수 있는 부가적인 거래 디바이스들(1910a-1910n)은 게이트웨이들(1920a-1920n) 및 거래소들(1930a-1930n) 중 하나 또는 그 초과에 연결될 수 있다. 예컨대, 거래 디바이스(1910a)는 게이트웨이(1920a) 및 네트워크들(1902a, 1904a 및 1906a)을 통해 거래소(1930a)와 통신할 수 있다. 다른 예에서, 거래 디바이스(1910b)는 거래소(1930a)와 직접 통신할 수 있다. 다른 예에서, 거래 디바이스(1910c)는 프록시, 원격 호스트, 또는 WAN 라우터 같은 매개 디바이스(1908)를 통하여 게이트웨이(1920n)와 통신할 수 있다.
[00113] 도 1의 거래 디바이스(110)와 유사할 수 있는 거래 디바이스(1910)는 거래 단말(1914)과 통신하는 서버(1912)를 포함한다. 서버(1912)는 레이턴시를 감소시키기 위하여 거래 단말(1914)보다 게이트웨이(1920)에 지리적으로 더 가깝게 위치될 수 있다. 동작시, 거래 단말(1914)은 거래 스크린을 사용자에게 제공할 수 있고 추가 프로세싱을 위하여 커맨드들을 서버(1912)에 통신할 수 있다. 예컨대, 거래 알고리즘은 마켓 데이터에 기초하여 실행을 위하여 서버(1912)에 배치될 수 있다. 서버(1912)는 사용자로부터 추가 입력 없이 거래 알고리즘을 실행할 수 있다. 다른 예에서, 서버(1912)는 자동화된 거래 툴들을 제공하는 거래 애플리케이션을 포함할 수 있고 거래 단말(1914)에 다시 통신할 수 있다. 거래 디바이스(1910)는 부가적이거나, 상이하거나, 더 적은 컴포넌트들을 포함할 수 있다.
[00114] 동작시, 네트워크(1902)는 거래 디바이스(1910)가 게이트웨이(1920)와 통신하게 하도록 구성된 멀티캐스트 네트워크일 수 있다. 네트워크(1902)에 대한 데이터는 예컨대 가격들, 주문들, 또는 이행들 같은 주제에 의해 논리적으로 분리될 수 있다. 결과적으로, 서버(1912) 및 거래 단말(1914)은 예컨대, 자신의 개별 필요들에 따라 가격들, 주문들, 또는 이행들에 관련된 데이터 같은 데이터를 가입 및 수신할 수 있다.
[00115] 도 18이 게이트웨이(1820)와 유사할 수 있는 게이트웨이(1920)는 가격 서버(1922), 주문 서버(1924), 및 이행 서버(1926)를 포함할 수 있다. 게이트웨이(1920)는 부가적이거나, 상이하거나, 더 적은 컴포넌트들을 포함할 수 있다. 가격 서버(1922)는 가격 데이터를 프로세스할 수 있다. 가격 데이터는 하나 또는 그 초과의 거래가능 대상들에 대하여 마켓에 관련된 데이터를 포함한다. 주문 서버(1924)는 주문 데이터를 프로세싱한다. 주문 데이터는 사용자의 거래 주문들에 관련된 데이터이다. 예컨대, 주문 데이터는 주문 메시지들, 확인 메시지들, 또는 다른 타입들의 메시지들을 포함할 수 있다. 이행 서버는 이행 데이터를 수집 및 제공한다. 이행 데이터는 거래 주문들 중 하나 또는 그 초과의 이행들에 관련된 데이터를 포함한다. 예컨대, 이행 서버(1926)는 이행되었고 이행되지 않은, 주문 서버(1924)를 통해 라우트된 거래 주문들의 레코드를 제공할 수 있다. 서버들(1922, 1924 및 1926)은 동일한 머신 또는 별도의 머신들 상에서 동작할 수 있다. 게이트웨이(1920)에 대한 가격 서버(1922), 주문 서버(1924), 및/또는 이행 서버(1926)의 하나보다 많은 예가 있을 수 있다. 특정 실시예들에서, 부가적인 게이트웨이들(1920a-1920n)은 각각 서버들(1922, 1924 및 1926)의 예들(개별적으로 서버들(1922a-1922n, 1924a-1924n 및 1926a-1926n)로서 식별됨)을 포함할 수 있다.
[00116] 게이트웨이(1920)는 하나 또는 그 초과의 통신 네트워크들을 사용하여 거래소(1930)와 통신할 수 있다. 예컨대, 도 19에 도시된 바와 같이, 게이트웨이(1920) 및 거래소(1930)를 연결하는 2개의 통신 네트워크들이 있을 수 있다. 네트워크(1904)는 마켓 데이터를 가격 서버(1922)에 통신하기 위하여 사용될 수 있다. 일부 예들에서, 거래소(1930)는 가입 디바이스들에 공표된 데이터 피드에 이런 데이터를 포함할 수 있다. 네트워크(1906)는 주문 데이터를 주문 서버(1924) 및 이행 서버(1926)에 통신하기 위하여 사용될 수 있다. 네트워크(1906)는 주문 서버(1924)로부터의 주문 데이터를 거래소(1930)에 통신하기 위하여 또한 사용될 수 있다.
[00117] 도 18의 거래소(1830)와 유사할 수 있는 거래소(1930)는 주문장(1932) 및 매칭 엔진(1934)을 포함한다. 거래소(1930)는 부가적이거나, 상이하거나, 더 적은 컴포넌트들을 포함할 수 있다. 주문장(1932)은 거래소(1930)에 제출된 매칭되지 않은 거래 주문들에 관한 데이터를 포함하는 데이터베이스이다. 예컨대, 주문장(1932)은 인사이드 마켓, 다양한 가격 레벨들에서 마켓 깊이, 최종 거래된 가격, 및 최종 거래된 양 같은 거래가능 대상에 대한 마켓에 관한 데이터를 포함할 수 있다. 매칭 엔진(1934)은 주문장(1932)에 계류 중인 반대측 비드(bid)들 및 오퍼들을 매칭시킬 수 있다. 예컨대, 매칭 엔진(1934)은 반대측 비드들 및 오퍼들을 매칭시키는 하나 또는 그 초과의 매칭 알고리즘을 실행할 수 있다. 판매 주문은 매수 주문과 반대측이다. 유사하게, 매수 주문은 판매 주문과 반대측이다. 매칭 알고리즘은 예컨대 동일한 가격에서 반대측 비드들 및 오퍼들을 매칭시킬 수 있다. 특정 실시예들에서, 부가적인 거래소들(1930a-1930n)은 각각 주문장들 및 매칭 엔진들(개별적으로 주문장(1932) 및 매칭 엔진(1934)과 유사할 수 있는 주문장(1932a-1932n) 및 매칭 엔진(1934a-1934n)으로서 개별적으로 식별됨)을 포함할 수 있다. 상이한 거래소들은 주문들 및 매칭 주문들에 관련된 데이터를 추적하기 위하여 상이한 데이터 구조들 및 알고리즘을 사용할 수 있다.
[00118] 동작시, 거래소(1930)는 주문장(1932)으로부터의 가격 데이터를 가격 서버(1922)에 제공하고 매칭 엔진(1934)으로부터의 주문 데이터 및/또는 이행 데이터를 주문 서버(1924) 및/또는 이행 서버(1926)에 제공할 수 있다. 서버들(1922, 1924, 1926)은 이 데이터를 거래 디바이스(1910)에 프로세싱 및 통신할 수 있다. 거래 디바이스(1910)는 예컨대, 거래 애플리케이션을 사용하여 이 데이터를 프로세싱할 수 있다. 예컨대, 데이터는 사용자에게 디스플레이될 수 있다. 다른 예에서, 데이터는 거래 주문이 거래소(1930)에 제출되어야 하는지를 결정하기 위하여 거래 알고리즘에서 이용될 수 있다. 거래 디바이스(1910)는 주문 메시지를 준비하여 거래소(1930)에 전송할 수 있다.
[00119] 특정 실시예들에서, 게이트웨이(1920)는 거래 디바이스(1910)의 일부이다. 예컨대, 게이트웨이(1920)의 컴포넌트들은 거래 디바이스(1910)와 동일한 컴퓨팅 플랫폼의 부분일 수 있다. 다른 예로서, 게이트웨이(1920)의 기능성은 거래 디바이스(1910)의 컴포넌트들에 의해 수행될 수 있다. 특정 실시예들에서, 게이트웨이(1920)는 존재하지 않는다. 그런 어레인지먼트는, 거래 디바이스(1910)가 거래소(1930)와 직접 통신하도록 적응되는 경우와 같이, 거래 디바이스(1910)가 거래소(1930)와 통신하도록 게이트웨이(1920)를 이용할 필요가 없을 때 발생할 수 있다.
Ⅹ.
마켓 데이터를 가진 맞추어진 메시징
[00120] 본원에 설명된 메시징 맞춤 기술들은 거래소(예컨대, 도 18의 거래소(1830))로부터 수신된 마켓 데이터(예컨대, 인사이드 마켓, 마켓 깊이, 암시들, 등)를 거래 시스템의 디바이스들과 다른 컴포넌트들 사이의 통신을 다루는 게이트웨이(예컨대, 도 18의 게이트웨이(1820)) 또는 서버를 통해 거래 디바이스(예컨대, 도 18의 거래 디바이스(1810))에 제공하기 위하여 사용될 수 있다. 예컨대, 가입 제어 모듈(예컨대, 도 2 및 도 3의 가입 제어 모듈(201))은 분산형 거래 환경에 대한 에지(edge) 서버 또는 게이트웨이(1820)의 컴포넌트일 수 있다. 거래 디바이스(1810)는 베이스로서 가장 최근에 수신된 스냅샷을 사용하고, 가장 최근에 수신된 델타스냅에 포함된 동작들을 적용함으로써 거래가능 대상에 대한 마켓의 현재 조건을 재구성한다.
[00121] 가입 제어 모듈(201)의 데이터 소스 수신기(302)(도 3)는 거래가능 대상에 대한 마켓 데이터를 거래소(1830)로부터 수신하거나 그렇지 않으면 리트리브한다. 그 다음 데이터 포맷터(304)(도 3)는 마켓 데이터를 데이터 레벨들(예컨대, 도 7a 및 도 7b의 데이터 레벨들(702a-702f))로 조직한다. 데이터 레벨들은 제 1 데이터 레벨(예컨대, 가장 높은 비드 및 가장 낮은 요구에 대한 데이터를 포함)에서의 거래가능 대상의 인사이드 마켓, 제 2 데이터 레벨(예컨대, 제 2 가장 높은 비드 및/또는 제 2 가장 낮은 요구를 포함)에서의 마켓 깊이의 제 1 레벨, 등을 포함한다. 일부 예들에서, 데이터 포맷터(304)는 또한 거래가능 대상의 암시된 마켓을 데이터 레벨들로 조직한다.
[00122] 가입 제어 모듈(201)이 스냅샷(예컨대, 도 11의 스냅샷(1106))을 생성할 때, 데이터 포맷터(304)는 헤더(예컨대, 도 8a의 헤더(802))를 생성하고, 헤더를 마켓 깊이 데이터 레벨들의 시작에 첨부한다. 일부 예들에서, 데이터 포맷터는 마켓 깊이 데이터 레벨들 이후 암시된 마켓 데이터를 첨부한다. 일부 예들에서, 데이터 포맷터는 대응하는 마켓 깊이 데이터 레벨들을 가진 암시된 마켓 데이터 값들을 포함한다. 그 다음 결과는 주 버퍼(예컨대, 도 3의 주 버퍼(306))에 놓인다. 일부 예들에서, 데이터 포맷터는 주 버퍼(306) 또는 별개의 메모리에 저장하기 위하여 분할 표(예컨대, 도 10의 분할 표(1008))를 생성한다.
[00123] 가입 제어 모듈(201)이 델타스냅(예컨대, 도 11의 델타스냅(1108a))을 생성할 때, 데이터 포맷터(304)는 헤더를 생성하고 헤더를 보조 버퍼(예컨대, 도 3의 보조 버퍼(308))에 놓는다. 데이터 포맷터는 주 버퍼(306)에 저장된 마켓 깊이 레벨들(가장 최근에 생성된 스냅샷을 포함함)을 현재 마켓 데이터 레벨들에 비교하고 차이들을 반영하는 동작들(예컨대, 도 8b의 동작들(814))을 생성한다. 동작들(814)은, 그들이 생성될 때 버퍼에 부가된다. 일부 예들에서, 동작을 부가한 후, 데이터 포맷터는, 보조 버퍼(308) 내 메시지가 주 버퍼(306) 내 메시지보다 큰지를 검사한다. 보조 버퍼(308) 내 메시지가 보다 크면, 대신 데이터 포맷터(304)는 스냅샷을 생성한다. 일부 예들에서, 데이터 포맷터(304)는 또한 암시된 마켓 데이터 레벨들에 대한 동작들을 생성한다. 부가적으로, 데이터 포맷터는 보조 버퍼(308) 또는 별개의 메모리에 저장하기 위하여 분할 표(1008)를 생성한다.
[00124] 도 20a 및 도 20b는 마켓 깊이의 다수의 데이터 레벨들의 마켓 데이터를 제공하기 위하여 스냅샷 및 델타스냅에 대한 예시적 맞춤가능 메시지들을 예시한다. 도 20a는 마켓 깊이의 다수의 데이터 레벨들의 마켓 데이터를 제공하기 위하여 예시적 맞춤가능 스냅샷 메시지(2000)를 예시한다. 맞춤가능 스냅샷 메시지(2000)는 헤더(2002) 및 마켓 깊이 데이터 레벨들(2018)을 포함한다. 일부 예들에서, 맞춤가능 스냅샷 메시지(2000)는 또한 암시된 마켓 데이터 레벨들(2020)을 포함한다. 예시된 예에서, 암시된 마켓 데이터 레벨들(2020)은 마켓 깊이 데이터 레벨들(2018)(예컨대, 제 1 마켓 깊이, 그 다음 제 1 암시된 마켓 깊이, 제 2 마켓 깊이, 그 다음 제 2 암시된 마켓 깊이, 등)과 인터레이스(interace)된다. 인터레이싱은 마켓 깊이 데이터 레벨들(2018)과 동일한 레벨로 암시된 마켓 데이터 레벨들(2020)의 절사를 허용한다. 인터레이싱은 또한, 특정 수신부가 요구하지 않더라도 맞추어진 메시지(204)와 함께 전송되는 암시된 마켓 데이터 레벨들(2020)을 요구한다. 대안적으로, 일부 예들에서, 암시된 마켓 데이터 레벨들(2020)은 맞춤가능 스냅샷 메시지(2000)의 말단에 조직된다. 그런 예에서, 마켓 깊이 데이터 레벨들(2018) 및 암시된 마켓 데이터 레벨들(2020)은 별도로 절사가능하지 않다.
[00125] 예시된 예에서, 헤더(2002)는 사이즈 파라미터(2008), 암시된 파라미터(2010), 요구 깊이 파라미터(2012a), 비드 깊이 파라미터(2012b), 암시된 요구 깊이 파라미터(2014a), 및 암시된 비드 깊이 파라미터(2014b)를 포함한다. 사이즈 파라미터(2008)는 버퍼(예컨대, 주 버퍼(306), 보조 버퍼(308), 등)에 맞춤가능 스냅샷 메시지(2000)의 사이즈를 제공한다. 분할 표(1008)가 맞춤가능 스냅샷 메시지(2000)의 말단에 첨부된 일부 예들에서, 사이즈 파라미터(2008)는 분할 표(1008)에 대한 시작을 결정하기 위하여 사용될 수 있다.
[00126] 도 20a에 예시된 예에서, 암시된 파라미터(2010)는, 암시된 마켓 데이터 레벨들(2020)이 맞춤가능 스냅샷 메시지(2000)에 포함되는지를 가리킨다. 예시적 요구 깊이 파라미터(2012a)는 맞춤가능 스냅샷 메시지(2000)에 요구 레벨들(2017a)을 포함하는 마켓 깊이 데이터 레벨들(2018)의 수를 가리킨다. 예시적 비드 깊이 파라미터(2012b)는 맞춤가능 스냅샷 메시지(2000)에 비드 레벨들(2017b)을 포함하는 마켓 깊이 데이터 레벨들(2018)의 수를 가리킨다. 일부 예들에서, 요구 깊이 파라미터(2012a) 및 비드 깊이 파라미터는 동일하지않다. 예컨대, 거래가능 대상에 대한 마켓은 요구 레벨들(2017a)보다 비드 레벨들(2017b)이 많은 비대칭일 수 있다(또는 그 반대도 가능함). 암시된 요구 깊이 파라미터(2014a)는 맞춤가능 스냅샷 메시지(2000)에 포함된 요구 레벨들(2017a)을 포함하는 암시된 마켓 데이터 레벨들(2020)의 수를 가리킨다. 암시된 비드 깊이 파라미터(2014b)는 맞춤가능 스냅샷 메시지(2000)에 포함된 비드 레벨들(2017b)을 포함하는 암시된 마켓 데이터 레벨들(2020)의 수를 가리킨다. 암시된 마켓 데이터 레벨들(2020)이 맞춤가능 스냅샷 메시지(2000)에 포함되지 않는 것을 암시된 파라미터(2010)가 가리키는 일부 예들에서, 암시된 요구 깊이 파라미터(2014a) 및 암시된 비드 깊이 파라미터(2014b)는 헤더(2002)에 포함되지 않는다.
[00127] 도 20a에서 예시된 예에서, 깊이 데이터 레벨들(2018)은 비드 레벨(2017a)에 대한 가격 및 양(또한 사이즈로 지칭됨) 및/또는 요구 레벨(2027a)의 가격 및 양(또한 사이즈로 지칭됨)을 포함할 수 있다(예컨대, 마켓 깊이들은 대칭일 수 없고, 여기서 비드들보다 요구들의 레벨들이 많을 수 있고 그 반대도 가능함). 예컨대, 제 1 깊이 데이터 레벨(2018)은 요구 레벨(2017b) 및 비드 레벨(2017b) 둘 다를 가질 수 있지만, 거래가능 대상에 대한 마켓이 비대칭이기 때문에, 제 2 깊이 데이터 레벨(2018)은 요구 레벨(2017a)만을 포함할 수 있다. 효율성을 위하여, 제 1 깊이 데이터 레벨 이후 깊이 데이터 레벨들(2018)은 요구 오프셋(2019a) 및 비드 오프셋(2019c) 같은 가격 오프셋(예컨대, 비드/요구 레벨에 대한 가격이 이전 깊이 데이터 레벨(2018)에 포함된 가격과 관련됨), 및 요구 사이즈(2019b) 및 비드 사이즈(2019d) 같은 양(또한 사이즈로 지칭됨)을 포함할 수 있다. 가격 값이 64-비트(8 바이트) 값에 의해 표현될 수 있기 때문에, 추후 가격 값들을 식별하기 위하여 8-비트(1 바이트) 상대적 오프셋을 사용하는 것은 전송될 필요가 있는 데이터 양의 감소를 초래할 수 있다.
[00128] 예시된 예에서, 예시적 암시된 깊이 데이터 레벨들(2020)은 암시된 마켓의 깊이에 대한 가격 및 사이즈를 포함한다. 부가적으로 또는 대안적으로, 암시된 깊이 데이터 레벨들(2020)은 깊이 데이터 레벨들(2018)에 대해 상기 논의된 것과 유사한 사이즈 및 가격 오프셋(예컨대, 가격은 이전 암시된 깊이 데이터 레벨(2020)에 포함된 가격에 관련됨)을 포함할 수 있다. 가입 제어 모듈(201)의 메시지 전송기(310)(도 3)는 특정 거래가능 대상에 대한 마켓에 대한 가입자의 수신 디바이스(예컨대, 거래 디바이스(1810))와 연결(예컨대, 도 11의 제 1 연결(1102a), 도 11의 제 2 연결(1102b), 등)을 확립할 수 있다. 메시지 전송기(310)는 거래 디바이스(1810)로부터 선호도들을 수신할 수 있다. 예시적 선호도(들)는 얼마나 많은 레벨(들)의 마켓 깊이가 수신될지, 및/또는 바람직한 송신 레이트(예컨대, 얼마자 자주 델타스냅을 전송할지)를 포함한다. 일부 예들에서, 암시된 마켓 데이터 레벨들(2020)이 마켓 깊이 데이터 레벨들(2018)과 인터레이스되지 않을 때, 수신 디바이스(206)가 암시된 마켓의 임의의 레벨(들)에 대한 선호도를 세트하면, 수신 디바이스(206)는 또한 마켓 깊이의 모든 레벨들을 수신한다.
[00129] 맞추어진 스냅샷 메시지(예컨대, 도 2의 맞추어진 메시지(204))를 거래 디바이스(1810)에 전송하기 위하여, 메시지 전송기(310)는 주 버퍼(306)로부터 맞춤가능 스냅샷 메시지(2000)의 부분을 사용한다. 일부 예들에서, 메시지 전송기는 분할 표(1008) 상에서 사용할 맞춤가능 스냅샷 메시지(2000)의 부분을 찾는다. 그 다음 메시지 전송기(310)는 맞추어진 메시지(204)를 거래 디바이스(1810)에 전송한다.
[00130] 일부 예들에서, 레벨들의 수신부의 바람직한 수를 달성하기 위하여 맞춤가능 스냅샷 메시지(2000)를 절사할 양을 결정하기 위해, 메시지 전송기(310)는 거래 디바이스(1810)에 전송할 주 버퍼(306)의 바이트들의 수를 계산한다. 일부 그런 예들에서, 전송할 바이트들의 수는 식(4), 식(5), 및 식(6)에 따라 계산된다.
BL=(MD1+ABB×n)×2(1+I) 식(4)
여기서 BL은 전송될 버퍼 내 맞춤가능 메시지의 바이트들의 길이에 대한 상부 한계이고, MD1은 추후 마켓 깊이 데이터 레벨들이 가격 오프셋을 사용할 때 제 1 마켓 깊이 데이터 레벨(2018)의 사이즈와 추후 마켓 깊이 데이터 레벨들(2018) 사이의 차이의 바이트들의 사이즈이고, ABB는 추후 마켓 깊이 데이터 레벨들(2018)의 바이트들의 사이즈이고, n은 마켓 깊이의 원해진 레벨들의 수이고, 그리고 I는 암시된 파라미터(2010)이다(예컨대, 0은 암시된 마켓 데이터와 같지 않고, 1은 암시된 마켓 데이터가 포함된 것과 동일함).
BR=ABB×(min(0,n-b)+min(0,n-a)+min(0,n-ib)+min(0,n-ia)) 식(5)
여기서 BR은 어쨌든 레벨들의 비대칭 비드들/요구들 때문에, 감소할 바이트들의 수이고, ABB는 가격 오프셋들이 사용되면 제 1 마켓 깊이 데이터 레벨(2018)과 상이할 수 있는 추후(즉, 제 1이 아님) 마켓 깊이 데이터 레벨(2018)의 바이트들의 사이즈이고, n은 마켓 깊이의 원해진 레벨들의 수이고, b는 비드 깊이 파라미터(2012b)이고, a는 요구 깊이 파라미터(2012a)이고, ib는 암시된 비드 깊이 파라미터(2014b)이고, 그리고 ia는 암시된 요구 깊이 파라미터(2014a)이다.
BS=BL-BR 식(6)
여기서 Bs는 맞춤가능 스냅샷 메시지(2000)의 맞춤가능 레벨들 부분의 전송할 바이트들의 수이다. 예컨대 헤더(2002)를 포함하여, 맞춤가능 스냅샷 메시지(2000)를 홀딩하는 버퍼의 시작으로부터 메시지의 사이즈를 결정하기 위하여, 이 헤더에 대한 부가적인 바이트들은 전송할 바이트들의 총 수를 결정하기 위하여 BS에 부가된다. 그 다음 메시지 전송기(310)는 맞춤가능 스냅샷 메시지(2000)로부터 거래 디바이스(1810)로 계산된 바이트들의 수를 포함하는 맞추어진 메시지(204)를 전송한다.
[00131] 도 20b는 마켓 깊이의 다수의 데이터 레벨들에서 업데이트를 마켓 데이터에 제공하기 위하여 예시적 맞춤가능 델타스냅 메시지(2022)를 예시한다. 맞춤가능 델타스냅 메시지(2022)는 헤더(2002) 및 마켓 깊이 데이터 레벨 업데이트들(2026)을 포함한다. 일부 예들에서, 맞춤가능 델타스냅 메시지(2022)는 또한 암시된 마켓 깊이 업데이트 데이터 레벨들(2028)을 포함한다. 예시된 예에서, 암시된 마켓 깊이 업데이트 데이터 레벨들(2028)은 마켓 깊이 데이터 레벨 업데이트들(2026)과 인터레이스된다. 대안적으로, 맞춤가능 델타스냅 메시지(2022)는 메시지의 말단에서 암시된 마켓 깊이 업데이트 데이터 레벨들(2028)로 조직화될 수 있다(예컨대, 암시된 마켓 깊이 데이터 레벨들(2020)이 맞춤가능 스냅샷 메시지(2000)의 말단에 조직될 때).
[00132] 예시된 예에서, 헤더(2002)는 사이즈 파라미터(2008), 암시된 파라미터(2010), 요구 깊이 파라미터(2012a), 비드 깊이 파라미터(2012b), 암시된 요구 깊이 파라미터(2014a), 및 암시된 비드 깊이 파라미터(2014b)를 포함한다. 사이즈 파라미터(2008)는 버퍼(예컨대, 주 버퍼(306), 보조 버퍼(308), 등)에 맞춤가능 델타스냅 메시지(2022)의 사이즈를 제공한다. 분할 표(1008)가 맞춤가능 델타스냅 메시지(2022) 말단에 첨부되는 일부 예들에서, 사이즈 파라미터(2008)는 분할 표(1008)에 대한 시작을 결정하기 위하여 사용될 수 있다.
[00133] 도 20b에 예시된 예에서, 암시된 파라미터(2010)는, 암시된 마켓 데이터 레벨 업데이트들(2028)이 맞춤가능 델타스냅 메시지(2022)에 포함되는지를 가리킨다. 요구 업데이트 파라미터(2023a)는 맞춤가능 델타스냅 메시지(2022)에 요구 값들(2017a)을 포함하는 마켓 깊이 데이터 레벨 업데이트들(2026)의 수를 가리킨다. 비드 업데이트 파라미터(2023b)는 맞춤가능 델타스냅 메시지(2022)에 비드 값들(2017b)을 포함하는 마켓 깊이 데이터 레벨 업데이트들(2026)의 수를 가리킨다. 암시된 요구 업데이트 파라미터(2024a)는 맞춤가능 델타스냅 메시지(2022)에 요구 값들(2017a)을 포함하는 암시된 마켓 데이터 레벨 업데이트들(2028)의 수를 가리킨다. 암시된 비드 업데이트 파라미터(2024b)는 맞춤가능 델타스냅 메시지(2022)에 비드 값들(2017b)을 포함하는 암시된 마켓 데이터 레벨 업데이트들(2028)의 수를 가리킨다. 암시된 마켓 데이터 레벨 업데이트들(2028)이 맞춤가능 델타스냅 메시지(2022)에 포함되지 않는 것을 암시된 파라미터(2010)가 가리키는 일부 예들에서, 암시된 요구 깊이 파라미터(2024a) 및 암시된 비드 깊이 파라미터(2024b)는 헤더(2002)에 포함되지 않는다.
[00134] 도 20b에 예시된 예에서, 마켓 깊이 데이터 레벨 업데이트들(2026)은, 인사이드 마켓 또는 개별 마켓 깊이의 요구 가격, 요구 사이즈, 비드 가격 및/또는 비드 사이즈가 최종 스냅샷 이후 변화되지 않을 때 맞춤가능 델타스냅 메시지(2022)에 포함된다. 예컨대, 인사이드 마켓이 변화되지 않으면, 제 1 마켓 깊이는 변화되지 않고, 제 2 마켓 깊이의 비드 사이즈는 변화하고, 맞춤가능 델타스냅 메시지(2022)는 제 2 마켓 깊이에 대한 마켓 깊이 데이터 레벨 업데이트들(2026)을 포함한다. 일부 예들에서, 암시된 마켓 데이터 레벨 업데이트들(2028)은, 개별 암시된 마켓 깊이의 요구 가격, 요구 사이즈, 비드 가격 및/또는 비드 사이즈가 최종 스냅샷 이래 변화되지 않을 때 맞춤가능 델타스냅 메시지(2022)에 포함된다.
[00135] 도 20b의 예시된 예에서, 맞춤가능 델타스냅 메시지(2022)에 포함된 마켓 깊이 데이터 레벨 업데이트들(2026) 및/또는 암시된 마켓 깊이 데이터 레벨 업데이트들(2028)은 하나 또는 그 초과의 동작들(2030)을 포함한다. 동작(2030)은 동작 기준(2032), 인덱스(2034), 오프셋(2036), 가격(2038), 및/또는 사이즈(2040)를 포함할 수 있다. 거래 디바이스(1810)에 대한 동작이 식별된 동작 기준(2032)은 개별 업데이트를 구현하기 위하여 수행하는 것이다. 인덱스(2034)는, 동작이 수행될 데이터 레벨을 식별한다. 오프셋(2036)은, 특정 값이 변화할 양을 식별한다. 예컨대, 가격 동작을 수정하기 위하여, 오프셋(2036)은, 가격이 조절될 양을 식별한다. 가격(2038)은, 데이터 레벨의 가격이 세트될 값을 식별한다. 사이즈(2040)는, 데이터 레벨의 사이즈가 세트될 값을 식별한다. 예시적 동작 기준들(2030)은 표(2) 상에 설명된다.
동작 기준 | 약어 | 설명 | 파라미터들 |
부가 | A | 인덱스 이전 새로운 데이터 레벨 부가 | 요구 사이즈, 요구 가격 또는 오프셋, 비드 사이즈, 비드 가격 또는 오프셋 |
상대적 부가 | AR | 인덱스에서 데이터 레벨에 기초하고 파라미터(들)에 의해 수정된 인덱스 이후 새로운 데이터 레벨 부가 | 요구 사이즈, 요구 가격 또는 오프셋, 비드 사이즈, 비드 가격 또는 오프셋 |
상단 부가 | AT | 제 1 데이터 레벨 이전 새로운 데이터 레벨 부가(인덱스 없음) | 요구 사이즈, 요구 가격 또는 오프셋, 비드 사이즈, 비드 가격 또는 오프셋 |
사이즈 수정 | MS | 인덱스에 의해 식별된 데이터 레벨의 사이즈 수정 | 요구 사이즈 오프셋, 비드 사이즈 오프셋 |
가격 수정 | MP | 인덱스에 의해 식별된 데이터 레벨의 가격 수정 | 요구 가격 오프셋, 비드 가격 오프셋 |
둘 다 수정 | MB | 인덱스에 의해 식별된 데이터 레벨의 가격 및 사이즈 수정 | 오프셋, 요구 사이즈 오프셋, 비드 사이즈 오프셋 |
삭제 | D | 인덱스에 의해 식별된 데이터 레벨 삭제 | |
변화 없음 | NC | 인덱스에 의해 식별된 데이터 레벨이 변화되지 않는 것을 가리킴 | 요구 사이즈, 요구 가격 또는 오프셋, 비드 사이즈, 비드 가격 또는 오프셋 |
[00136] 맞추어진 델타스냅 메시지(예컨대, 도 2의 맞추어진 메시지(204))를 거래 디바이스(1810)에 전송하기 위하여, 메시지 전송기(310)는 보조 버퍼(308)로부터 맞춤가능 델타스냅 메시지(2022)의 부분을 사용한다. 일부 예들에서, 메시지 전송기는 분할 표(1008)에 사용할 맞춤가능 델타스냅 메시지(2022)의 부분을 찾는다. 그 다음 메시지 전송기(310)는 맞추어진 메시지(204)를 거래 디바이스(1810)에 전송한다.
[00137] 일부 예들에서, 맞춤가능 델타스냅 메시지(2022)를 절사하기 위하여, 메시지 전송기(310)는 거래 디바이스(1810)에 전송할 보조 버퍼(308)의 바이트들의 수를 계산한다. 바이트들의 수를 계산하기 위하여, 마켓 깊이 데이터 레벨 업데이트들(2026) 및 암시된 마켓 깊이 데이터 레벨 업데이트들(2028)은 보조 버퍼(308) 내 계산된 포지션을 계산하기 위하여 횡단된다. "삭제" 동작들(D)을 가진 다수의 동작 기준들(2032)은 카운트되고 부가 동작들(예컨대, "부가", "상단 부가", "상대적 부가")(A)을 가진 동작 기준들(2932)의 수는 수신 디바이스(206)의 선호도들에 의해 세트된 깊이 제한(N)까지 인덱스(2034)를 가진 동작들(2030)이 카운트된다. 보조 버퍼(308)에서 동작들(2030)은 N+D-A 인덱스에 대응하는 최종 동작(2030)의 종료까지 횡단된다. 이 위치는 계산된 포지션이다. 그 다음 메시지 전송기(310)는 맞춤가능 델타스냅 메시지(2022)로부터 계산된 포지션에 의해 표시된 바이트들의 수를 포함하는 맞추어진 메시지(204)를 거래 디바이스(1810)에 전송한다.
[00138] 설명된 도면들 중 일부는 특정 실시예들의 모두 또는 일부를 구현하기 위하여 사용될 수 있는 방법들을 나타내는 예시 블록도들, 시스템들, 및/또는 흐름도들을 묘사한다. 예시적 블록도들, 시스템들, 및/또는 흐름도들의 컴포넌트들, 엘리먼트들, 블록들, 및/또는 기능성 중 하나 또는 그 초과는 예컨대, 유형의 컴퓨터 판독가능 매체에 저장된 컴퓨터 판독가능 명령들의 세트로서 하드웨어, 펌웨어, 이산 로직 단독 또는 조합으로, 및/또는 이들의 임의의 조합들로 구현될 수 있다.
[00139] 예시적 블록도들, 시스템들, 및/또는 흐름도들은 예컨대 주문형 집적 회로(들)(ASIC(들)), 프로그램 가능 논리 디바이스(들)(PLD(들)), 필드 프로그램 가능 논리 디바이스(들)(FPLD(들)), 이산 로직, 하드웨어, 및/또는 펌웨어의 임의의 조합을 사용하여 구현될 수 있다. 또한 예시적 방법들 일부 또는 모두는 예컨대 상기 기술들과 조합하여 또는 수동으로 구현될 수 있다.
[00140] 예시적 블록도들, 시스템들, 및/또는 흐름도들은 예컨대 하나 또는 그 초과의 프로세서들, 제어기들, 및/또는 다른 프로세싱 디바이스들을 사용하여 수행될 수 있다. 예컨대, 예들은 유형의 컴퓨터 판독가능 매체에 저장된 코드화된 명령들, 예컨대, 컴퓨터 판독가능 명령들을 사용하여 구현될 수 있다. 유형의 컴퓨터 판독가능 매체는 예컨대 랜덤 액세스 메모리(RAM), 판독-전용 메모리(ROM), 프로그램 가능 판독-전용 메모리(PROM), 전기 프로그램 가능 판독-전용 메모리(EPROM), 전기 소거가능 판독-전용 메모리(EEPROM), 플래시 메모리, 하드 디스크 드라이브, 광학 매체들, 자기 테이프, 파일 서버, 임의의 다른 유형의 데이터 스토리지 디바이스, 또는 이들의 임의의 조합을 포함하는 다양한 타입들의 휘발성 및 비휘발성 스토리지 매체들을 포함할 수 있다. 유형의 컴퓨터 판독가능 매체는 비일시적이다.
[00141] 추가로, 예시적 블록도들, 시스템들, 및/또는 흐름도들이 도면들을 참조하여 상기 설명되었지만, 다른 구현들이 이용될 수 있다. 예컨대, 컴포넌트들, 엘리먼트들, 블록들, 및/또는 기능성의 실행 순서는 변화될 수 있고 및/또는 설명된 컴포넌트들, 엘리먼트들, 블록들, 및/또는 기능성의 일부는 변화, 제거, 세분, 또는 결합될 수 있다. 부가적으로, 컴포넌트들, 엘리먼트들, 블록들, 및/또는 기능성 일부 또는 모두는 예컨대, 별도의 프로세싱 스레드들, 프로세서들, 디바이스들, 이산 로직, 및/또는 회로들에 의해 순차적으로 및/또는 동시에 수행될 수 있다.
[00142] 실시예들이 개시되었지만, 다양한 변화들이 만들어질 수 있고 등가물들이 대체될 수 있다. 게다가, 많은 수정들은 특정 상황 또는 재료를 채택하기 위하여 이루어질 수 있다. 그러므로, 개시된 기술이 개시된 특정 실시예들로 제한되는 것이 아니라, 첨부된 청구항들의 범위 내에 속하는 모든 실시예들을 포함할 것이라는 것이 의도된다.
Claims (77)
- 컴퓨팅 디바이스에 의해, 제 1 시간에서의 데이터 소스의 상태를 나타내는 스냅샷(snapshot) 메시지를 제 1 버퍼에 저장하는 단계;
상기 컴퓨팅 디바이스에 의해, 상기 스냅샷 메시지를 포함하는 상기 제 1 버퍼로부터 제 1 수신부(recipient)를 위한 맞추어진(tailored) 메시지로서 제 1 스냅샷 메시지를 상기 제 1 수신부로 전송하는 단계;
상기 컴퓨팅 디바이스에 의해, 상기 스냅샷 메시지를 포함하는 상기 제 1 버퍼로부터 제 2 수신부를 위한 맞추어진 메시지로서 제 2 스냅샷 메시지를 상기 제 2 수신부로 전송하는 단계;
상기 컴퓨팅 디바이스에 의해, 상기 제 1 시간에서의 상기 데이터 소스의 상태와 제 2 시간에서의 상기 데이터 소스의 상태의 차이를 나타내는 제 1 델타스냅 메시지를 제 2 버퍼에 저장하는 단계;
상기 컴퓨팅 디바이스에 의해, 상기 제 1 델타스냅 메시지를 포함하는 상기 제 2 버퍼로부터 상기 제 1 수신부를 위한 맞추어진 델타스냅 메시지로서 제 1 업데이트 델타스냅 메시지를 상기 제 2 수신부가 아닌 상기 제 1 수신부로 전송하는 단계;
상기 컴퓨팅 디바이스에 의해, 상기 제 1 시간에서의 상기 데이터 소스의 상태와 제 3 시간에서의 상기 데이터 소스의 상태의 차이를 나타내는 제 2 델타스냅 메시지를 상기 제 2 버퍼에 저장하는 단계;
상기 컴퓨팅 디바이스에 의해, 상기 제 2 델타스냅 메시지를 포함하는 상기 제 2 버퍼로부터 상기 제 1 수신부를 위한 맞추어진 델타스냅 메시지로서 제 2 업데이트 델타스냅 메시지를 상기 제 1 수신부로 전송하는 단계; 및
상기 컴퓨팅 디바이스에 의해, 상기 제 2 델타스냅 메시지를 포함하는 상기 제 2 버퍼로부터 상기 제 2 수신부를 위한 맞추어진 델타스냅 메시지로서 제 3 업데이트 델타스냅 메시지를 상기 제 2 수신부로 전송하는 단계를 포함하는,
방법. - 제 1 항에 있어서,
상기 스냅샷 메시지를 저장하는 단계는 상기 스냅샷 메시지를 제 1 데이터 레벨 및 제 2 데이터 레벨로 조직하는 단계를 포함하는,
방법. - 제 2 항에 있어서,
상기 제 1 데이터 레벨은, 상기 제 2 데이터 레벨이 나타내는 데이터보다 더 자주 요청되는 데이터 소스로부터의 데이터를 나타내는,
방법. - 제 2 항에 있어서,
상기 제 1 스냅샷 메시지는 상기 제 1 데이터 레벨을 포함하고,
상기 제 2 스냅샷 메시지는 상기 제 1 데이터 레벨 및 상기 제 2 데이터 레벨을 포함하는,
방법. - 제 1 항에 있어서,
상기 제 2 업데이트 델타스냅 메시지는 상기 제 2 버퍼 내의 상기 제 2 델타스냅 메시지의 제 1 부분이고,
상기 제 3 업데이트 델타스냅 메시지는 상기 제 2 버퍼 내의 상기 제 2 델타스냅 메시지의 제 2 부분인,
방법. - 제 1 항에 있어서,
상기 제 1 버퍼 내에 제 1 분할 표를 생성하는 단계를 더 포함하고,
상기 제 1 분할 표는 상기 스냅샷 메시지의 제 1 분할가능(partitionable) 위치 및 상기 스냅샷 메시지의 제 2 분할가능 위치를 표시하기 위한 것인,
방법. - 제 6 항에 있어서,
상기 제 1 스냅샷 메시지는 상기 제 1 분할가능 위치까지의 상기 스냅샷 메시지를 포함하고,
상기 제 2 스냅샷 메시지는 상기 제 2 분할가능 위치까지의 상기 스냅샷 메시지를 포함하는,
방법. - 제 1 항에 있어서,
상기 제 1 스냅샷 메시지는 상기 제 1 수신부에 의해 요청되는 데이터 레벨들의 수에 기초하고,
상기 제 2 스냅샷 메시지는 상기 제 2 수신부에 의해 요청되는 데이터 레벨들의 수에 기초하는,
방법. - 제 1 항에 있어서,
상기 제 1 스냅샷 메시지는 상기 제 2 스냅샷 메시지보다 상기 스냅샷 메시지의 더 큰 부분을 포함하는,
방법. - 삭제
- 제 1 항에 있어서,
상기 제 2 업데이트 델타스냅 메시지는 상기 제 1 수신부에 의해 요청되는 데이터 레벨들의 수에 기초하고,
상기 제 3 업데이트 델타스냅 메시지는 상기 제 2 수신부에 의해 요청되는 데이터 레벨들에 기초하는,
방법. - 제 1 항에 있어서,
상기 제 1 델타스냅 메시지를 포함하는 상기 제 2 버퍼로부터의 업데이트 델타스냅 메시지는 상기 제 2 수신부와 연관된 업데이트 레이트에 기초하여 상기 제 2 수신부로 전송되지 않는,
방법. - 제 12 항에 있어서,
상기 제 1 수신부와 연관된 업데이트 레이트는 상기 제 2 수신부와 연관된 업데이트 레이트와 상이한,
방법. - 컴퓨팅 디바이스에 의해 제 1 항 내지 제 9 항 및 제 11 항 제 13 항 중 어느 한 항에 따른 방법을 실행시키기 위한 명령들을 저장한,
컴퓨터 판독가능 저장 매체. - 제 1 항 내지 제 9 항 및 제 11 항 제 13 항 중 어느 한 항에 따른 방법을 수행하도록 구성된,
컴퓨팅 디바이스. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020227000981A KR102484558B1 (ko) | 2013-07-12 | 2014-07-14 | 맞추어진 메시징 |
Applications Claiming Priority (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361845613P | 2013-07-12 | 2013-07-12 | |
US61/845,613 | 2013-07-12 | ||
US201462022736P | 2014-07-10 | 2014-07-10 | |
US62/022,736 | 2014-07-10 | ||
US14/329,602 US10664548B2 (en) | 2013-07-12 | 2014-07-11 | Tailored messaging |
US14/329,602 | 2014-07-11 | ||
PCT/US2014/046486 WO2015006759A2 (en) | 2013-07-12 | 2014-07-14 | Tailored messaging |
KR1020167003145A KR102197454B1 (ko) | 2013-07-12 | 2014-07-14 | 맞추어진 메시징 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167003145A Division KR102197454B1 (ko) | 2013-07-12 | 2014-07-14 | 맞추어진 메시징 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227000981A Division KR102484558B1 (ko) | 2013-07-12 | 2014-07-14 | 맞추어진 메시징 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200074266A KR20200074266A (ko) | 2020-06-24 |
KR102352143B1 true KR102352143B1 (ko) | 2022-01-14 |
Family
ID=52278022
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227000981A KR102484558B1 (ko) | 2013-07-12 | 2014-07-14 | 맞추어진 메시징 |
KR1020207017316A KR102352143B1 (ko) | 2013-07-12 | 2014-07-14 | 맞추어진 메시징 |
KR1020227046370A KR102691929B1 (ko) | 2013-07-12 | 2014-07-14 | 맞추어진 메시징 |
KR1020167003145A KR102197454B1 (ko) | 2013-07-12 | 2014-07-14 | 맞추어진 메시징 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227000981A KR102484558B1 (ko) | 2013-07-12 | 2014-07-14 | 맞추어진 메시징 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227046370A KR102691929B1 (ko) | 2013-07-12 | 2014-07-14 | 맞추어진 메시징 |
KR1020167003145A KR102197454B1 (ko) | 2013-07-12 | 2014-07-14 | 맞추어진 메시징 |
Country Status (12)
Country | Link |
---|---|
US (6) | US10664548B2 (ko) |
EP (3) | EP3020019A4 (ko) |
JP (5) | JP6450754B2 (ko) |
KR (4) | KR102484558B1 (ko) |
CN (2) | CN111581551B (ko) |
AU (4) | AU2014286944B2 (ko) |
CA (2) | CA2916526C (ko) |
HK (2) | HK1222735A1 (ko) |
IL (1) | IL243359A0 (ko) |
MX (3) | MX365172B (ko) |
SG (2) | SG10202106303TA (ko) |
WO (1) | WO2015006759A2 (ko) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10664548B2 (en) | 2013-07-12 | 2020-05-26 | Trading Technologies International, Inc. | Tailored messaging |
US10298658B2 (en) * | 2015-10-26 | 2019-05-21 | Airbnb, Inc. | Beam device architecture |
US10505802B2 (en) * | 2015-11-02 | 2019-12-10 | Cisco Technology, Inc. | Adaptive subscriber-driven resource allocation for push-based monitoring |
US11282138B2 (en) | 2016-06-24 | 2022-03-22 | Refinitiv Us Organization Llc | Informational incentives for submitting maker orders |
US10771570B2 (en) | 2018-10-15 | 2020-09-08 | Citrix Systems, Inc. | Scalable message passing architecture a cloud environment |
CN111079974B (zh) * | 2019-11-13 | 2022-07-26 | 联想(北京)有限公司 | 一种信息处理方法、电子设备和计算机存储介质 |
US11641330B2 (en) | 2020-08-06 | 2023-05-02 | International Business Machines Corporation | Communication content tailoring |
CN113155260A (zh) * | 2021-04-17 | 2021-07-23 | 福州夸克科技有限公司 | 一种远程修改电子秤价格的方法 |
US11729240B2 (en) * | 2021-06-09 | 2023-08-15 | Bgc Partners, L.P. | Fanout processor |
Family Cites Families (182)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3253263A (en) | 1961-04-10 | 1966-05-24 | Ibm | Code to voice inquiry system and twospeed multi-unit buffer mechanism |
US3962685A (en) | 1974-06-03 | 1976-06-08 | General Electric Company | Data processing system having pyramidal hierarchy control flow |
US4412287A (en) | 1975-05-29 | 1983-10-25 | Braddock Iii Walter D | Automated stock exchange |
US4980826A (en) | 1983-11-03 | 1990-12-25 | World Energy Exchange Corporation | Voice actuated automated futures trading exchange |
US4903201A (en) | 1983-11-03 | 1990-02-20 | World Energy Exchange Corporation | Automated futures trading exchange |
JPS6139186A (ja) | 1984-07-31 | 1986-02-25 | 株式会社日立製作所 | 自動取引装置 |
US4677552A (en) | 1984-10-05 | 1987-06-30 | Sibley Jr H C | International commodity trade exchange |
US4868866A (en) | 1984-12-28 | 1989-09-19 | Mcgraw-Hill Inc. | Broadcast data distribution system |
GB8528891D0 (en) | 1985-11-23 | 1986-01-02 | Int Computers Ltd | Data transmission system |
US4995056A (en) | 1989-01-13 | 1991-02-19 | International Business Machines Corporation | System and method for data communications |
US5077665A (en) | 1989-05-25 | 1991-12-31 | Reuters Limited | Distributed matching system |
US5136501A (en) | 1989-05-26 | 1992-08-04 | Reuters Limited | Anonymous matching system |
US5339392A (en) | 1989-07-27 | 1994-08-16 | Risberg Jeffrey S | Apparatus and method for creation of a user definable video displayed document showing changes in real time data |
US5297031A (en) | 1990-03-06 | 1994-03-22 | Chicago Board Of Trade | Method and apparatus for order management by market brokers |
GB9027249D0 (en) | 1990-12-17 | 1991-02-06 | Reuters Ltd | Offer matching system |
US5297032A (en) | 1991-02-01 | 1994-03-22 | Merrill Lynch, Pierce, Fenner & Smith Incorporated | Securities trading workstation |
JP3260923B2 (ja) | 1993-09-20 | 2002-02-25 | 富士通株式会社 | データ処理システムのバックアップ制御装置及び方法 |
US5604866A (en) | 1993-09-30 | 1997-02-18 | Silicon Graphics, Inc. | Flow control system having a counter in transmitter for decrementing and incrementing based upon transmitting and received message size respectively for indicating free space in receiver |
JP2693907B2 (ja) | 1993-12-27 | 1997-12-24 | 日本電気株式会社 | スタティック・ルーティング方式 |
US5515359A (en) | 1994-08-26 | 1996-05-07 | Mitsubishi Electric Research Laboratories, Inc. | Credit enhanced proportional rate control system |
US5790642A (en) | 1995-04-28 | 1998-08-04 | Dialogic Corporation | Competitively bidding service centers |
US5826244A (en) | 1995-08-23 | 1998-10-20 | Xerox Corporation | Method and system for providing a document service over a computer network using an automated brokered auction |
JP3417741B2 (ja) | 1995-10-06 | 2003-06-16 | 富士通株式会社 | 取引制御システム |
WO1997033227A1 (fr) | 1996-03-07 | 1997-09-12 | Nippon Telegraph And Telephone Corporation | Procede et appareil de transfert de fichiers sequentiels a grande vitesse, et support d'enregistrement pour le stockage d'un programme en charge dudit transfert |
US5924083A (en) | 1996-05-29 | 1999-07-13 | Geneva Branch Of Reuters Transaction Services Limited | Distributed matching system for displaying a book of credit filtered bids and offers |
US5802310A (en) | 1996-05-30 | 1998-09-01 | International Business Machines Corporation | Systems and methods for data channel queue control in a communications network |
US5916307A (en) | 1996-06-05 | 1999-06-29 | New Era Of Networks, Inc. | Method and structure for balanced queue communication between nodes in a distributed computing application |
US6039245A (en) | 1996-06-10 | 2000-03-21 | Diebold, Incorporated | Financial transaction processing system and method |
US5911137A (en) | 1996-07-15 | 1999-06-08 | Motorola, Inc. | Method and apparatus for sharing a communication system |
US5995980A (en) | 1996-07-23 | 1999-11-30 | Olson; Jack E. | System and method for database update replication |
US5905868A (en) | 1997-07-22 | 1999-05-18 | Ncr Corporation | Client/server distribution of performance monitoring data |
US6574234B1 (en) | 1997-09-05 | 2003-06-03 | Amx Corporation | Method and apparatus for controlling network devices |
US6006206A (en) | 1997-09-08 | 1999-12-21 | Reuters Limited | Data health monitor for financial information communications networks |
US6317727B1 (en) | 1997-10-14 | 2001-11-13 | Blackbird Holdings, Inc. | Systems, methods and computer program products for monitoring credit risks in electronic trading systems |
US6058389A (en) | 1997-10-31 | 2000-05-02 | Oracle Corporation | Apparatus and method for message queuing in a database system |
US6370569B1 (en) | 1997-11-14 | 2002-04-09 | National Instruments Corporation | Data socket system and method for accessing data sources using URLs |
KR20010032547A (ko) | 1997-11-26 | 2001-04-25 | 더 테일러 트라스트 에이에스 | 컴퓨터네트워크 상에서 경매를 실행하는 시스템 및 방법 |
US6144669A (en) | 1997-12-12 | 2000-11-07 | Newbridge Networks Corporation | Prioritized PVC management queues for improved frame processing capabilities |
US6269399B1 (en) | 1997-12-19 | 2001-07-31 | Qwest Communications International Inc. | Gateway system and associated method |
US6097399A (en) | 1998-01-16 | 2000-08-01 | Honeywell Inc. | Display of visual data utilizing data aggregation |
US6192029B1 (en) | 1998-01-29 | 2001-02-20 | Motorola, Inc. | Method and apparatus for performing flow control in a wireless communications system |
US6311144B1 (en) | 1998-05-13 | 2001-10-30 | Nabil A. Abu El Ata | Method and apparatus for designing and analyzing information systems using multi-layer mathematical models |
US6343278B1 (en) | 1998-09-04 | 2002-01-29 | Ebs Dealing Resources, Inc. | Combined order limit for a group of related transactions in an automated dealing system |
US6389016B1 (en) | 1998-10-14 | 2002-05-14 | Nortel Networks Limited | Data communication system and method for transporting data |
US6167445A (en) | 1998-10-26 | 2000-12-26 | Cisco Technology, Inc. | Method and apparatus for defining and implementing high-level quality of service policies in computer networks |
US6513019B2 (en) | 1999-02-16 | 2003-01-28 | Financial Technologies International, Inc. | Financial consolidation and communication platform |
US7617144B2 (en) | 1999-03-19 | 2009-11-10 | Primex Holdings Llc | Auction market with price improvement mechanism |
US6278982B1 (en) | 1999-04-21 | 2001-08-21 | Lava Trading Inc. | Securities trading system for consolidation of trading on multiple ECNS and electronic exchanges |
US20030004859A1 (en) | 1999-05-11 | 2003-01-02 | Shaw John C. | Method and system for facilitating secure transactions |
US6606607B1 (en) | 1999-06-17 | 2003-08-12 | Mcj Ventures, Inc. | Individualized, real-time, interactive e-commerce auction |
US6553035B1 (en) | 1999-06-22 | 2003-04-22 | Pluris, Inc. | Apparatus and method for queuing data |
US6338047B1 (en) | 1999-06-24 | 2002-01-08 | Foliofn, Inc. | Method and system for investing in a group of investments that are selected based on the aggregated, individual preference of plural investors |
US7082410B1 (en) | 1999-07-02 | 2006-07-25 | The Nasdaq Stock Market, Inc. | Line handler |
US6675153B1 (en) | 1999-07-06 | 2004-01-06 | Zix Corporation | Transaction authorization system |
WO2001010090A1 (en) | 1999-07-28 | 2001-02-08 | Tomkow Terrance A | System and method for verifying delivery and integrity of electronic messages |
US6516339B1 (en) | 1999-08-18 | 2003-02-04 | International Business Machines Corporation | High performance client/server editor |
US7099839B2 (en) | 1999-09-08 | 2006-08-29 | Primex Holdings, Llc | Opening price process for trading system |
US7107240B1 (en) | 1999-10-06 | 2006-09-12 | Goldman Sachs & Co. | Order centric tracking system and protocol for communications with handheld trading units |
US7809382B2 (en) | 2000-04-11 | 2010-10-05 | Telecommunication Systems, Inc. | Short message distribution center |
US7356498B2 (en) | 1999-12-30 | 2008-04-08 | Chicago Board Options Exchange, Incorporated | Automated trading exchange system having integrated quote risk monitoring and integrated quote modification services |
US7110975B2 (en) | 2000-01-27 | 2006-09-19 | Marks De Chabris Gloriana | Order matching system |
US7412462B2 (en) | 2000-02-18 | 2008-08-12 | Burnside Acquisition, Llc | Data repository and method for promoting network storage of data |
US6983317B1 (en) | 2000-02-28 | 2006-01-03 | Microsoft Corporation | Enterprise management system |
US7318045B2 (en) | 2000-02-29 | 2008-01-08 | Accenture Llp | Event-driven trade link between trading and clearing systems |
US6772132B1 (en) | 2000-03-02 | 2004-08-03 | Trading Technologies International, Inc. | Click based trading with intuitive grid display of market depth |
US7389268B1 (en) | 2000-03-02 | 2008-06-17 | Trading Technologies International, Inc. | Trading tools for electronic trading |
US7127424B2 (en) | 2000-03-02 | 2006-10-24 | Trading Technologies International, Inc. | Click based trading with intuitive grid display of market depth and price consolidation |
US6408000B1 (en) | 2000-03-24 | 2002-06-18 | Securities Industry Automation Corporation | Multicast data distribution system |
US6904593B1 (en) | 2000-03-24 | 2005-06-07 | Hewlett-Packard Development Company, L.P. | Method of administering software components using asynchronous messaging in a multi-platform, multi-programming language environment |
US20010042041A1 (en) | 2000-03-28 | 2001-11-15 | Moshal David Clive | Method for configuring and conducting exchanges over a network |
BR0109852A (pt) | 2000-04-07 | 2003-06-17 | Pershing | Processamento de ordem de tìtulos baseado em regras |
US8799138B2 (en) | 2000-04-10 | 2014-08-05 | Stikine Technology, Llc | Routing control for orders eligible for multiple markets |
US8249975B1 (en) | 2000-04-10 | 2012-08-21 | Stikine Technology, Llc | Automated first look at market events |
US7539638B1 (en) | 2000-04-10 | 2009-05-26 | Stikine Technology, Llc | Representation of order in multiple markets |
US7398244B1 (en) | 2000-04-10 | 2008-07-08 | Stikine Technology, Llc | Automated order book with crowd price improvement |
US7212997B1 (en) | 2000-06-09 | 2007-05-01 | Ari Pine | System and method for analyzing financial market data |
US7797207B1 (en) | 2000-07-24 | 2010-09-14 | Cashedge, Inc. | Method and apparatus for analyzing financial data |
US7130824B1 (en) | 2000-08-21 | 2006-10-31 | Etp Holdings, Inc. | Apparatus and method for load balancing among data communications ports in automated securities trading systems |
EP1323095A4 (en) | 2000-08-22 | 2005-09-28 | Goldman Sachs & Co | CURRENCY TRADE SYSTEM |
WO2002017100A1 (en) | 2000-08-24 | 2002-02-28 | 2Wire, Inc. | System and method for selectively bridging and routing data packets between multiple networks |
RU2233548C2 (ru) | 2000-10-20 | 2004-07-27 | Самсунг Электроникс Ко., Лтд. | Устройство и способ определения скорости передачи пакетных данных в системе мобильной связи |
AU2002239620A1 (en) | 2000-11-06 | 2002-05-27 | Terry Bernard Young | Electronic markets business interchange system and metheo |
US6993507B2 (en) | 2000-12-14 | 2006-01-31 | Pacific Payment Systems, Inc. | Bar coded bill payment system and method |
US20020120546A1 (en) | 2000-12-18 | 2002-08-29 | Paul Zajac | Mutli-interface financial transaction system and method |
US7406443B1 (en) | 2000-12-18 | 2008-07-29 | Powerloom | Method and system for multi-dimensional trading |
AU2002239859A1 (en) | 2001-01-12 | 2002-07-24 | Verticalcrossings.Com, Inc. | Anonymous auctioning of structured financial products over a computer network |
JP4531280B2 (ja) | 2001-03-21 | 2010-08-25 | 株式会社 キューズ・クリエイティブ | プッシュ型情報配信方法、プッシュ型情報配信用プログラム、及びプッシュ型情報配信装置、記憶媒体 |
US20020184237A1 (en) | 2001-04-03 | 2002-12-05 | Mcfeely Brooks B. | Methods and apparatus for compiling, processing and disseminating equity transaction data |
US7213071B2 (en) | 2001-04-03 | 2007-05-01 | International Business Machines Corporation | Quality of service improvements for network transactions |
US6782496B2 (en) | 2001-04-13 | 2004-08-24 | Hewlett-Packard Development Company, L.P. | Adaptive heartbeats |
US7111023B2 (en) | 2001-05-24 | 2006-09-19 | Oracle International Corporation | Synchronous change data capture in a relational database |
US6973623B2 (en) | 2001-06-14 | 2005-12-06 | International Business Machines Corporation | System and method for client refresh mode selection |
US7020893B2 (en) * | 2001-06-15 | 2006-03-28 | Intel Corporation | Method and apparatus for continuously and opportunistically driving an optimal broadcast schedule based on most recent client demand feedback from a distributed set of broadcast clients |
CA2403300A1 (en) | 2002-09-12 | 2004-03-12 | Pranil Ram | A method of buying or selling items and a user interface to facilitate the same |
US7664695B2 (en) | 2001-07-24 | 2010-02-16 | Stephen Cutler | Securities market and market maker activity tracking system and method |
US20020138399A1 (en) | 2001-08-07 | 2002-09-26 | Hayes Philip J. | Method and system for creating and using a peer-to-peer trading network |
US7562044B1 (en) | 2001-08-31 | 2009-07-14 | I2 Technologies Us, Inc. | System and method for dynamic pricing in an unbalanced market |
US7287249B2 (en) * | 2001-09-28 | 2007-10-23 | Siebel Systems, Inc. | Method and system for tracking and exchanging incremental changes to hierarchical objects |
US20030083977A1 (en) | 2001-10-26 | 2003-05-01 | Majid Syed | System and method for providing electronic bulk buying |
US7305483B2 (en) | 2002-04-25 | 2007-12-04 | Yahoo! Inc. | Method for the real-time distribution of streaming data on a network |
US8090640B2 (en) | 2002-06-05 | 2012-01-03 | The Nasdaq Omx Group, Inc. | Order delivery in a securities market |
US20030225674A1 (en) | 2002-06-05 | 2003-12-04 | Hughes John T. | Order chronicle process and method |
US7552077B1 (en) | 2002-06-26 | 2009-06-23 | Trading Technologies International, Inc. | System and method for coalescing market data at a network device |
US7685049B1 (en) | 2002-06-26 | 2010-03-23 | Trading Technologies International Inc. | System and method for coalescing market data at a client device |
US7124110B1 (en) | 2002-07-15 | 2006-10-17 | Trading Technologies International Inc. | Method and apparatus for message flow and transaction queue management |
US20040019554A1 (en) | 2002-07-26 | 2004-01-29 | Merold Michael S. | Automated trading system |
US7945846B2 (en) * | 2002-09-06 | 2011-05-17 | Oracle International Corporation | Application-specific personalization for data display |
US7941542B2 (en) * | 2002-09-06 | 2011-05-10 | Oracle International Corporation | Methods and apparatus for maintaining application execution over an intermittent network connection |
US7366691B1 (en) | 2002-09-25 | 2008-04-29 | Trading Technologies International Inc. | Method and interface for presenting last traded quantity information |
WO2004068311A2 (en) | 2003-01-29 | 2004-08-12 | Ameritrade Ip Company, Inc. | Quote and order entry interface |
US7783546B2 (en) | 2003-01-30 | 2010-08-24 | Goldman Sachs & Co. | Automated financial instrument exchange apparatus and systems |
US7558754B1 (en) | 2003-02-28 | 2009-07-07 | Trading Technologies International, Inc. | System and method for processing and displaying quantity information during user-configurable time periods |
US7904370B2 (en) | 2003-03-31 | 2011-03-08 | Trading Technologies International, Inc. | System and method for variably regulating order entry in an electronic trading system |
US20050021836A1 (en) | 2003-05-01 | 2005-01-27 | Reed Carl J. | System and method for message processing and routing |
US20040225592A1 (en) | 2003-05-08 | 2004-11-11 | Churquina Eduardo Enrique | Computer Implemented Method and System of Trading Indicators Based on Price and Volume |
US7624063B1 (en) | 2003-09-30 | 2009-11-24 | Trading Technologies International, Inc. | System and method for improved distribution of market information |
US7778915B2 (en) | 2003-10-14 | 2010-08-17 | Ften, Inc. | Financial data processing system |
US20050091148A1 (en) | 2003-10-27 | 2005-04-28 | Anthony Rotondo | Method and apparatus for synthesizing metrics of stock or share market indices |
US7827091B2 (en) | 2004-02-20 | 2010-11-02 | Stephen Cutler | Securities market and market maker activity tracking system and method |
US7647266B1 (en) | 2004-03-24 | 2010-01-12 | Trading Technologies International, Inc. | System and method for holding and sending an order to a matching engine |
WO2005096762A2 (en) | 2004-04-01 | 2005-10-20 | Waverules, Llc | Systems and methods of electronic trading using automatic book updates |
US7355975B2 (en) | 2004-04-30 | 2008-04-08 | International Business Machines Corporation | Method and apparatus for group communication with end-to-end reliability |
US20050283415A1 (en) | 2004-06-22 | 2005-12-22 | Chicago Mercantile Exchange | System and method for displaying market data including last trade data |
GB0414057D0 (en) | 2004-06-23 | 2004-07-28 | Koninkl Philips Electronics Nv | Method of,and system for,communicating data, and a station for transmitting data |
US7599867B1 (en) | 2004-06-30 | 2009-10-06 | Trading Technologies International, Inc. | System and method for chart pattern recognition and analysis in an electronic trading environment |
US20110251942A1 (en) | 2004-07-12 | 2011-10-13 | Rosenthal Collins Group, L.L.C. | Method and system for electronic trading on a trading interface with a dynamic price column |
CN1756108A (zh) * | 2004-09-29 | 2006-04-05 | 华为技术有限公司 | 主备系统数据同步方法 |
US7567927B2 (en) | 2004-10-07 | 2009-07-28 | Ameritrade IP Company Inc. | Market motion detector |
US8458467B2 (en) | 2005-06-21 | 2013-06-04 | Cisco Technology, Inc. | Method and apparatus for adaptive application message payload content transformation in a network infrastructure element |
US8082304B2 (en) | 2004-12-10 | 2011-12-20 | Cisco Technology, Inc. | Guaranteed delivery of application layer messages by a network element |
US7783558B1 (en) | 2004-12-28 | 2010-08-24 | Trading Technologies International, Inc. | System and method for providing market updates in an electronic trading environment |
US7739184B1 (en) | 2005-03-31 | 2010-06-15 | Trading Technologies International, Inc. | System and method for providing market data in an electronic trading environment |
US8239449B2 (en) | 2005-07-20 | 2012-08-07 | Wms Gaming Inc. | Transmission protocol for a gaming system |
US8571979B1 (en) | 2005-07-22 | 2013-10-29 | Tcf Financial Corporation | Arrangements and methods for automatically dispersing and tracking funds |
US8200563B2 (en) | 2005-09-23 | 2012-06-12 | Chicago Mercantile Exchange Inc. | Publish and subscribe system including buffer |
US8984033B2 (en) | 2005-09-23 | 2015-03-17 | Chicago Mercantile Exchange, Inc. | Non-indexed in-memory data storage and retrieval |
US20070174429A1 (en) | 2006-01-24 | 2007-07-26 | Citrix Systems, Inc. | Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment |
US7908204B2 (en) | 2006-04-25 | 2011-03-15 | Yuri Boglaev | Market speedometer |
US7752123B2 (en) | 2006-04-28 | 2010-07-06 | Townsend Analytics Ltd. | Order management system and method for electronic securities trading |
US7672898B1 (en) | 2006-07-07 | 2010-03-02 | Trading Technologies International Inc. | Regulating order entry in an electronic trading environment to maintain an actual cost for a trading strategy |
US7725764B2 (en) | 2006-08-04 | 2010-05-25 | Tsx Inc. | Failover system and method |
US7434096B2 (en) | 2006-08-11 | 2008-10-07 | Chicago Mercantile Exchange | Match server for a financial exchange having fault tolerant operation |
US9026575B2 (en) | 2006-09-28 | 2015-05-05 | Alcatel Lucent | Technique for automatically configuring a communication network element |
US20080155015A1 (en) | 2006-12-20 | 2008-06-26 | Omx Technology Ab | Intelligent information dissemination |
US8843592B2 (en) * | 2006-12-20 | 2014-09-23 | Omx Technology Ab | System and method for adaptive information dissemination |
US10026122B2 (en) * | 2006-12-29 | 2018-07-17 | Trading Technologies International, Inc. | System and method for controlled market data delivery in an electronic trading environment |
US7809841B1 (en) | 2007-03-29 | 2010-10-05 | Trading Technologies International, Inc. | System and method for communicating with an electronic exchange in an electronic trading environment |
US8204817B2 (en) | 2007-05-10 | 2012-06-19 | Trading Technologies International, Inc. | System and method for providing electronic price feeds for tradeable objects |
US8307114B2 (en) | 2007-05-22 | 2012-11-06 | International Business Machines Corporation | High availability message transmission |
US8122006B2 (en) * | 2007-05-29 | 2012-02-21 | Oracle International Corporation | Event processing query language including retain clause |
US8108289B2 (en) * | 2007-07-09 | 2012-01-31 | Chicago Mercantile Exchange, Inc. | Market data recovery |
US20090018944A1 (en) | 2007-07-13 | 2009-01-15 | Omx Technology Ab | Method and system for trading |
US7907533B2 (en) | 2007-11-28 | 2011-03-15 | Tekelec | Methods, systems, and computer program products for performing IP link proving using heartbeat messages |
US20090164386A1 (en) * | 2007-12-20 | 2009-06-25 | Middle Office Solutions, L.L.C | Method and system for standardized reporting of failed trades |
US8958460B2 (en) | 2008-03-18 | 2015-02-17 | On-Ramp Wireless, Inc. | Forward error correction media access control system |
US8200638B1 (en) * | 2008-04-30 | 2012-06-12 | Netapp, Inc. | Individual file restore from block-level incremental backups by using client-server backup protocol |
US8022822B2 (en) | 2008-06-27 | 2011-09-20 | Microsoft Corporation | Data collection protocol for wireless sensor networks |
US20100082542A1 (en) * | 2008-09-30 | 2010-04-01 | Yahoo! Inc. | Comparison of online advertising data consistency |
US8332354B1 (en) | 2008-12-15 | 2012-12-11 | American Megatrends, Inc. | Asynchronous replication by tracking recovery point objective |
ES2520941T3 (es) | 2009-05-18 | 2014-11-12 | Amadeus S.A.S. | Método y sistema para gestionar el orden de mensajes |
US9279879B2 (en) * | 2009-06-26 | 2016-03-08 | Qualcomm Incorporated | Positioning in the presence of passive distributed elements |
US8880524B2 (en) | 2009-07-17 | 2014-11-04 | Apple Inc. | Scalable real time event stream processing |
CN101650677A (zh) | 2009-07-27 | 2010-02-17 | 浪潮电子信息产业股份有限公司 | 一种基于Delta增量的文件数据备份方法 |
US20110040668A1 (en) | 2009-08-17 | 2011-02-17 | Darren Lee | Automated spread trading system |
US8417618B2 (en) | 2009-09-03 | 2013-04-09 | Chicago Mercantile Exchange Inc. | Utilizing a trigger order with multiple counterparties in implied market trading |
US9361165B2 (en) * | 2009-12-03 | 2016-06-07 | International Business Machines Corporation | Automated merger of logically associated messages in a message queue |
US20110178915A1 (en) | 2010-01-15 | 2011-07-21 | Lime Brokerage Holding Llc | Trading Order Validation System and Method and High-Performance Trading Data Interface |
US20110252208A1 (en) | 2010-04-12 | 2011-10-13 | Microsoft Corporation | Express-full backup of a cluster shared virtual machine |
CN102043859A (zh) * | 2010-12-27 | 2011-05-04 | 用友软件股份有限公司 | 数据更新方法及装置 |
US8818940B2 (en) | 2011-03-29 | 2014-08-26 | Salesforce.Com, Inc. | Systems and methods for performing record actions in a multi-tenant database and application system |
JP5776267B2 (ja) * | 2011-03-29 | 2015-09-09 | 日本電気株式会社 | 分散ファイルシステム |
US9934534B2 (en) | 2011-03-31 | 2018-04-03 | Trading Technologies International, Inc. | Throttling modification messages |
US8799135B2 (en) * | 2011-06-13 | 2014-08-05 | Trading Technologies International, Inc | Generating market information based on causally linked events |
US8484161B2 (en) * | 2011-08-29 | 2013-07-09 | Oracle International Corporation | Live file system migration |
US8745157B2 (en) | 2011-09-02 | 2014-06-03 | Trading Technologies International, Inc. | Order feed message stream integrity |
CN102510340A (zh) | 2011-10-11 | 2012-06-20 | 浪潮电子信息产业股份有限公司 | 利用普通Internet网络实现异地快速备份的方法 |
US11138525B2 (en) | 2012-12-10 | 2021-10-05 | Trading Technologies International, Inc. | Distribution of market data based on price level transitions |
SG11201509253WA (en) * | 2013-05-31 | 2015-12-30 | Nasdaq Technology Ab | Apparatus, system, and method of elastically processing message information from multiple sources |
US10664548B2 (en) | 2013-07-12 | 2020-05-26 | Trading Technologies International, Inc. | Tailored messaging |
US10366452B2 (en) * | 2013-11-07 | 2019-07-30 | Chicago Mercantile Exchange Inc. | Transactionally deterministic high speed financial exchange having improved, efficiency, communication, customization, performance, access, trading opportunities, credit controls, and fault tolerance |
US20160224995A1 (en) * | 2015-01-30 | 2016-08-04 | Trading Technologies International, Inc. | Delta-based simulation systems |
US10565646B2 (en) * | 2015-08-05 | 2020-02-18 | Trading Technologies International, Inc. | Methods and apparatus to internalize trade orders |
-
2014
- 2014-07-11 US US14/329,602 patent/US10664548B2/en active Active
- 2014-07-14 CA CA2916526A patent/CA2916526C/en active Active
- 2014-07-14 CN CN202010241586.6A patent/CN111581551B/zh active Active
- 2014-07-14 MX MX2016000213A patent/MX365172B/es active IP Right Grant
- 2014-07-14 EP EP14823358.8A patent/EP3020019A4/en not_active Ceased
- 2014-07-14 EP EP23192631.2A patent/EP4273780A3/en active Pending
- 2014-07-14 WO PCT/US2014/046486 patent/WO2015006759A2/en active Application Filing
- 2014-07-14 JP JP2016525834A patent/JP6450754B2/ja active Active
- 2014-07-14 EP EP19156431.9A patent/EP3567487B1/en active Active
- 2014-07-14 SG SG10202106303TA patent/SG10202106303TA/en unknown
- 2014-07-14 AU AU2014286944A patent/AU2014286944B2/en active Active
- 2014-07-14 KR KR1020227000981A patent/KR102484558B1/ko active IP Right Grant
- 2014-07-14 SG SG11201600229WA patent/SG11201600229WA/en unknown
- 2014-07-14 CA CA3103409A patent/CA3103409A1/en active Pending
- 2014-07-14 CN CN201480046050.1A patent/CN105474250B/zh active Active
- 2014-07-14 KR KR1020207017316A patent/KR102352143B1/ko active IP Right Grant
- 2014-07-14 KR KR1020227046370A patent/KR102691929B1/ko active IP Right Grant
- 2014-07-14 KR KR1020167003145A patent/KR102197454B1/ko active IP Right Grant
-
2015
- 2015-12-27 IL IL243359A patent/IL243359A0/en unknown
-
2016
- 2016-01-07 MX MX2019005538A patent/MX2019005538A/es unknown
- 2016-01-07 MX MX2022007835A patent/MX2022007835A/es unknown
- 2016-09-08 HK HK16110690.4A patent/HK1222735A1/zh unknown
- 2016-09-22 HK HK16111119.5A patent/HK1224064A1/zh unknown
-
2018
- 2018-11-20 JP JP2018217263A patent/JP6741737B2/ja active Active
-
2020
- 2020-02-04 JP JP2020017128A patent/JP6903180B2/ja active Active
- 2020-04-15 US US16/849,453 patent/US11048772B2/en active Active
- 2020-06-09 AU AU2020203793A patent/AU2020203793B2/en active Active
-
2021
- 2021-04-09 US US17/226,906 patent/US11334641B2/en active Active
- 2021-04-30 JP JP2021077637A patent/JP7178449B2/ja active Active
- 2021-12-21 AU AU2021290254A patent/AU2021290254B2/en active Active
-
2022
- 2022-04-11 US US17/717,488 patent/US11687609B2/en active Active
- 2022-08-23 JP JP2022132230A patent/JP7436588B2/ja active Active
-
2023
- 2023-05-10 US US18/314,902 patent/US12032645B2/en active Active
-
2024
- 2024-05-30 US US18/678,126 patent/US20240320287A1/en active Pending
- 2024-09-20 AU AU2024219929A patent/AU2024219929A1/en active Pending
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102352143B1 (ko) | 맞추어진 메시징 | |
AU2023203848B2 (en) | Tailored messaging |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
AMND | Amendment | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E90F | Notification of reason for final refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
X091 | Application refused [patent] | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
GRNT | Written decision to grant |