KR101952674B1 - Tv 시청률 레이팅의 효율적이고 정확한 추정치를 제공하는 방법 및 시스템 - Google Patents

Tv 시청률 레이팅의 효율적이고 정확한 추정치를 제공하는 방법 및 시스템 Download PDF

Info

Publication number
KR101952674B1
KR101952674B1 KR1020147008570A KR20147008570A KR101952674B1 KR 101952674 B1 KR101952674 B1 KR 101952674B1 KR 1020147008570 A KR1020147008570 A KR 1020147008570A KR 20147008570 A KR20147008570 A KR 20147008570A KR 101952674 B1 KR101952674 B1 KR 101952674B1
Authority
KR
South Korea
Prior art keywords
event records
predetermined
computer
computers
data
Prior art date
Application number
KR1020147008570A
Other languages
English (en)
Other versions
KR20140062504A (ko
Inventor
야로슬라브 보로비치
라이문도 미리솔라
시몬 미쉘 로위
닉 아리니
앤드류 길필드
앤트 오즈타스켄트
이아인 메릭
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20140062504A publication Critical patent/KR20140062504A/ko
Application granted granted Critical
Publication of KR101952674B1 publication Critical patent/KR101952674B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/44204Monitoring of content usage, e.g. the number of times a movie has been viewed, copied or the amount which has been watched
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/258Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
    • H04N21/25866Management of end-user data
    • H04N21/25891Management of end-user data being end-user preferences
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/44213Monitoring of end-user related data
    • H04N21/44222Analytics of user selections, e.g. selection of programs or purchase activity
    • H04N21/44224Monitoring of user activity on external systems, e.g. Internet browsing
    • H04N21/44226Monitoring of user activity on external systems, e.g. Internet browsing on social networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • H04N21/6582Data stored in the client, e.g. viewing habits, hardware capabilities, credit card number

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Social Psychology (AREA)
  • Computer Graphics (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

다중의 컴퓨터들을 포함하는 분산 컴퓨터 시스템을 통해 TV 시청률 레이팅의 효율적이고 정확한 추정치를 제공하는 방법이 개시된다. 이 방법은 분산 컴퓨터 시스템에서 클라이언트로부터 문의를 수신하는 단계; 소정의 샤딩 함수에 따라 하나 또는 그 초과의 컴퓨터들을 동적으로 선택하는 단계; 선택된 컴퓨터들 각각에서, 문의를 충족시키는 권한이 있는 이벤트 레코드들의 카운트를 결정하는 단계; 선택된 컴퓨터들에 의해 결정된 권한이 있는 이벤트 레코드들의 각각의 카운트들을 집계하는 단계; 권한이 있는 이벤트 레코드들의 집계된 카운트를 분산 컴퓨터 시스템상의 권한이 있는 이벤트 레코드들의 추정된 총 카운트로 통계적으로 프로젝트하는 단계; 및 권한이 있는 이벤트 레코드들의 추정된 총 카운트를 요청 클라이언트에게 리턴하는 단계를 포함한다.

Description

TV 시청률 레이팅의 효율적이고 정확한 추정치를 제공하는 방법 및 시스템{METHOD AND SYSTEM FOR PROVIDING EFFICIENT AND ACCURATE ESTIMATES OF TV VIEWERSHIP RATINGS}
[0001] 개시된 구현들은 일반적으로 TV 시청률 레이팅에 관한 것으로, 특히, TV 시청률 레이팅의 효율적이고 정확한 추정치를 제공하는 시스템 및 방법에 관한 것이다.
[0002] 오늘날, 사람들은 위성, 케이블, 전화선, 및 인터넷과 같은 상이한 통신 채널들을 통해 상이한 벤더들로부터 동일한 TV 콘텐츠를 얻을 수 있다. 통신 채널들의 선택은 종종 다수의 지리적 및 인구통계학적인 고려사항들을 갖는다. 예를 들어, 위성 수신기들이 TV 신호를 수신하기 위해 시골 지역의 가정들에서 가장 일반적으로 사용되는 디바이스들일 수도 있다. 그러나, 아마도 대도시 지역의 가정에 있어서는, TV 신호를 수신하기 위해 케이블 접속 또는 OTA(over the air) 안테나들을 사용하는 것이 더욱 일반적이다. 다수의 사람들이 TV들을 통해 여전히 TV 프로그램들을 시청하지만, 젊은 시청자들은 인터넷에 커플링된 컴퓨터 또는 심지어 3G/4G 무선 통신을 지원하는 스마트폰을 통해 TV 프로그램들을 시청하는 것을 점점 더 선택할 수도 있다. TV 프로그램들을 수신하는 다양화된 통신 채널들의 존재로 인해, 큰 인구 레벨(예를 들어, 국가적 레벨)에서 특정한 TV 프로그램에 대한 시청률 레이팅의 효율적이고 정확한 추정치를 제공하는 것은 더욱 어렵다.
[0003] 후술하는 일부 구현들에 따르면, TV 시청률 레이팅의 효율적이고 정확한 추정치를 제공하는 컴퓨터 구현 방법이 개시된다. 이 방법은 하나 또는 그 초과의 프로세서들 및 다중의 이벤트 레코드들을 저장하는 메모리를 각각 갖는 다중의 컴퓨터를 포함하는 분산 컴퓨터 시스템에서 구현되고, 각 레코드는 소정의 시간 간격을 포함한다. 방법은 클라이언트로부터 문의를 수신하는 단계 ― 문의는 하나 또는 그 초과의 기준들을 포함하고, 그 기준들 중 하나는 소정의 기간을 특정함 ―; 하나 또는 그 초과의 소정의 기준들 중 적어도 하나를 소정의 샤딩 함수(sharding function)에 적용함으로써 하나 또는 그 초과의 컴퓨터들을 동적으로 선택하는 단계 ― 하나 또는 그 초과의 소정의 기준들을 충족시킬 수 있는 선택된 컴퓨터들상에 적어도 소정의 수의 후보 이벤트 레코드들이 존재함 ―; 선택된 컴퓨터들 각각에서: 컴퓨터의 메모리에 저장된 다수의 후보 이벤트 레코드들을 식별하는 단계; 및 식별된 후보 이벤트 레코드들 중에서, 하나 또는 그 초과의 소정의 기준들을 충족시키는 권한이 있는(qualified) 이벤트 레코드들의 카운트를 결정하는 단계 ― 각 권한이 있는 이벤트 레코드는 문의와 연관된 소정의 기간과 적어도 부분적으로 오버랩하는 소정의 시간 간격을 가짐 ―; 선택된 컴퓨터에 의해 결정된 권한이 있는 이벤트 레코드들의 각각의 카운트들을 집계하는 단계; 권한이 있는 이벤트 레코드들의 집계된 카운트를 분산 컴퓨터 시스템상의 권한이 있는 이벤트 레코드들의 추정된 총 카운트에 통계적으로 프로젝트(project)하는 단계 ― 권한이 있는 이벤트 레코드들의 추정된 총 카운트는 연관된 신뢰 레벨을 가짐 ―; 및 요청한 클라이언트에게 문의 결과를 리턴하는 단계 ― 문의 결과는 권한이 있는 이벤트 레코드들의 추정된 총 카운트 및 그것의 연관된 신뢰 레벨을 포함함 ―; 를 포함한다.
[0004] 후술하는 일부 구현들에 따르면, TV 시청률 레이팅의 효율적이고 정확한 추정치를 제공하는 분산 컴퓨터 시스템이 개시되고, 이 분산 컴퓨터 시스템은 하나 또는 그 초과의 프로세서들 및 다중의 이벤트 레코드들을 저장하는 메모리를 각각 갖는 다중의 컴퓨터를 포함하고, 각 레코드는 소정의 시간 간격을 포함한다. 하나 또는 그 초과의 프로그램들은 클라이언트로부터 문의를 수신하는 명령 ― 문의는 하나 또는 그 초과의 기준들을 포함하고, 그 기준들 중 하나는 소정의 기간을 특정함 ―; 하나 또는 그 초과의 소정의 기준들 중 적어도 하나를 소정의 샤딩 함수에 적용함으로써 하나 또는 그 초과의 컴퓨터들을 동적으로 선택하는 명령 ― 하나 또는 그 초과의 소정의 기준들을 충족시킬 수 있는 선택된 컴퓨터들상에 적어도 소정의 수의 후보 이벤트 레코드들이 존재함 ―; 선택된 컴퓨터들 각각에서: 컴퓨터의 메모리에 저장된 다수의 후보 이벤트 레코드들을 식별하는 명령; 및 식별된 후보 이벤트 레코드들 중에서, 하나 또는 그 초과의 소정의 기준들을 충족시키는 권한이 있는(qualified) 이벤트 레코드들의 카운트를 결정하는 명령 ― 각 권한이 있는 이벤트 레코드는 문의와 연관된 소정의 기간과 적어도 부분적으로 오버랩하는 소정의 시간 간격을 가짐 ―; 선택된 컴퓨터에 의해 결정된 권한이 있는 이벤트 레코드들의 각각의 카운트들을 집계하는 명령; 권한이 있는 이벤트 레코드들의 집계된 카운트를 분산 컴퓨터 시스템상의 권한이 있는 이벤트 레코드들의 추정된 총 카운트에 통계적으로 프로젝트(project)하는 명령 ― 권한이 있는 이벤트 레코드들의 추정된 총 카운트는 연관된 신뢰 레벨을 가짐 ―; 및 요청한 클라이언트에게 문의 결과를 리턴하는 명령 ― 문의 결과는 권한이 있는 이벤트 레코드들의 추정된 총 카운트 및 그것의 연관된 신뢰 레벨을 포함함 ―; 을 포함한다.
[0005] 후술하는 일부 구현들에 따르면, TV 시청률 레이팅의 효율적이고 정확한 추정치를 제공하는 컴퓨터 시스템의 하나 또는 그 초과의 프로세서들에 의한 실행을 위해 하나 또는 그 초과의 프로그램들을 저장하는 비일시적 컴퓨터 판독가능 저장 매체가 개시된다. 하나 또는 그 초과의 프로그램들은 클라이언트로부터 문의를 수신하는 명령 ― 문의는 하나 또는 그 초과의 기준들을 포함하고, 그 기준들 중 하나는 소정의 기간을 특정함 ―; 하나 또는 그 초과의 소정의 기준들 중 적어도 하나를 소정의 샤딩 함수에 적용함으로써 하나 또는 그 초과의 컴퓨터들을 동적으로 선택하는 명령 ― 하나 또는 그 초과의 소정의 기준들을 충족시킬 수 있는 선택된 컴퓨터들상에 적어도 소정의 수의 후보 이벤트 레코드들이 존재함 ―; 선택된 컴퓨터들 각각에서: 컴퓨터의 메모리에 저장된 다수의 후보 이벤트 레코드들을 식별하는 명령; 및 식별된 후보 이벤트 레코드들 중에서, 하나 또는 그 초과의 소정의 기준들을 충족시키는 권한이 있는(qualified) 이벤트 레코드들의 카운트를 결정하는 명령 ― 각 권한이 있는 이벤트 레코드는 문의와 연관된 소정의 기간과 적어도 부분적으로 오버랩하는 소정의 시간 간격을 가짐 ―; 선택된 컴퓨터에 의해 결정된 권한이 있는 이벤트 레코드들의 각각의 카운트들을 집계하는 명령; 권한이 있는 이벤트 레코드들의 집계된 카운트를 분산 컴퓨터 시스템상의 권한이 있는 이벤트 레코드들의 추정된 총 카운트에 통계적으로 프로젝트(project)하는 명령 ― 권한이 있는 이벤트 레코드들의 추정된 총 카운트는 연관된 신뢰 레벨을 가짐 ―; 및 요청한 클라이언트에게 문의 결과를 리턴하는 명령 ― 문의 결과는 권한이 있는 이벤트 레코드들의 추정된 총 카운트 및 그것의 연관된 신뢰 레벨을 포함함 ―; 을 포함한다.
[0006] 본 발명의 상술한 구현 뿐만 아니라 추가의 구현들은 도면들과 함께 본 발명의 다양한 양태들의 아래의 상세한 설명의 결과로서 더욱 명백하게 이해될 것이다. 동일한 참조 부호들이 도면들 전반적으로 대응하는 부분들을 지칭한다.
[0007] 도 1a는 일부 구현들에 따르는 TV 신호들을 가정에 전달하는 복수의 통신 채널들 및 TV 시청률 레이팅을 추정하는 분산 측정 서버를 포함하는 분산 TV 콘텐츠 전달 시스템을 예시하는 블록도이다.
[0008] 도 1b는 일부 구현들에 따르는 다중의 소스들로부터 TV 시청률 미터링 데이터(metering data)를 수집하고 TV 시청률 레이팅의 추정치를 요청 클라이언트들에게 제공하는 분산 측정 서버의 컴포넌트들을 예시하는 블록도이다.
[0009] 도 2는 일부 구현들에 따르는 분산 측정 서버의 루트/믹서/리프 샤드 멤버(root/mixer/leaf shard member)로서 구동하는 컴퓨터의 컴포넌트들을 예시하는 블록도이다.
[0010] 도 3a는 일부 구현들에 따르는, TV 시청률 미터링 데이터가 분산 측정 서버의 루트 샤드를 통해 데이터 소스로부터 루트 샤드에 의해 선택된 하나 또는 그 초과의 리프 샤드들로 어떻게 이동되는지를 예시하는 블록도이다.
[0011] 도 3b는 일부 구현들에 따르는 TV 시청률 미터링 데이터를 구성하는 데이터 소스에 의해 사용된 데이터 구조를 예시하는 블록도이다.
[0012] 도 3c는 일부 구현들에 따르는 TV 시청률 미터링 데이터를 저장하는 분산 측정 서버에 의해 사용된 데이터 구조를 예시하는 블록도이다.
[0013] 도 3d는 일부 구현들에 따르는 가정의 인구통계학적 데이터를 저장하는 분산 측정 서버에 의해 사용된 데이터 구조를 예시하는 블록도이다.
[0014] 도 3e는 일부 구현들에 따르는 TV 방송국 정보를 저장하는 분산 측정 서버에 의해 사용된 데이터 구조를 예시하는 블록도이다.
[0015] 도 4a는 일부 구현들에 따르는, 데이터 소스에 의해 제공된 인커밍 TV 시청률 미터링 데이터를 분산 측정 서버가 어떻게 핸들링하는지를 예시하는 플로우차트이다.
[0016] 도 4b는 일부 구현들에 따르는, 분산 측정 서버가 클라이언트로부터의 문의를 TV 시청률 미터링 데이터에 어떻게 적용하고 문의 결과를 요청 클라이언트에게 어떻게 리턴하는지를 예시하는 플로우차트이다.
[0017] 도 4c는 일부 구현들에 따르는, 분산 측정 서버의 리프 샤드가 문의를 충족시키는 TV 시청률 미터링 데이터를 어떻게 식별하는지를 예시하는 플로우차트이다.
[0018] 국내 시장에서 TV 시청률은 매우 세분화될 수 있다. 일부 구현들에서, TV 시청률 프로젝션 시스템은 다양한 TV 콘텐츠 제공자들(예를 들어, 공중 방송사들 및 인터넷 스트리밍 사이트들을 통한 케이블 및 위성 회사들)로부터 미가공 시청률 데이터를 수신한다. TV 시청률 프로젝션 시스템은 상이한 지리인구통계적 그룹들(즉, 특정한 시청자 인구통계적, 지리적 영역들, 및/또는 양자의 특징들의 일부 조합)에 대한 상이한 콘텐츠제공자들 각각으로부터 미가공 데이터를 집계하고, 통계적으로 현저한 레벨에서 특정한 그룹들에 대한 시청률 공유 정보를 계산한다. 예를 들어, TV 시청률 프로젝션 시스템은 (예를 들어, 대도시권에서) 충분한 데이터가 존재할 때 분당(per-minute) 공유 정보를 계산하고, (예를 들어, 특정한 서비스/콘텐츠 제공자에 대해 몇몇 가입자들이 존재하는 인구밀도가 희박한 지역들에서) 분당 공유 정보를 신뢰가능하게 결정하기 위해 충분한 데이터가 존재하지 않을 때 시간당 공유 정보를 계산한다. 그 후, TV 시청률 프로젝션 시스템은 이종의(disparate) 제공자들로부터의 정보에 의해 커버되는 것 보다 큰 지역에 대해 신뢰가능한 공유 정보를 생성하기 위해 상이한 컴포넌트들을 가중화함으로써 이종의 콘텐츠 제공자들로부터의 공유 정보를 조합한다. 일부 상황들에서, 시청률 공유 정보는 동일한 지리인구통계적 그룹들(예를 들어, 위성 제공자 및 케이블 제공자로부터 동일한 지리적 영역들에 대한 시청률 정보)을 커버한다. 또한, 상이한 콘텐츠 제공자들에 대한 시청률 공유 정보를 조합하고 가중화함으로써, 개별적으로 그룹내에서 적절하게 표현되지 않은 지리인구통계적 그룹들에 대한 신뢰가능한 정보를 생성하는 것이 가능해진다(예를 들어, 케이블 제공자 A 및 위성 제공자 B에 대한 공유 정보는 개별적으로 동일한 지리인구통계적 그룹 X에 대한 적절한 정보를 포함하지 않을 수도 있지만, 조합될 때는 포함할 수도 있다).
[0019] 도 1a는 일부 구현들에 따르는 TV 신호들을 가정에 전달하는 복수의 통신 채널들을 포함하는 분산 TV 콘텐츠 전달 시스템을 예시하는 블록도이다. 일부 구현들에서, 하나 또는 그 초과의 TV 방송국들/TV 미터링 데이터 제공자들(102)은 하나 또는 그 초과의 계정(account) 정보 데이터베이스(132)에 보유되는 특정한 가입자 가정들(180)에 대한 계정 정보를 수집한다. 이러한 정보(132)는 문의들에 응답하여, 다양한 지리인구통계적 그룹들(예를 들어, 나이, 성 및 지리적 영역에 의한 시청자들의 상이한 조합들)에 대한 하나 또는 그 초과의 TV 프로그램들에 대한 TV 시청률 레이팅을 결정하기 위해 정보를 집계하고 분석하는 분산 측정 서버(150)에 의해 액세스된다. 일부 구현들에서, 도 1에 도시되어 있는 바와 같이, TV 시청률 미터링 데이터의 1 보다 많은 제공자가 존재하고, 각 미터링 데이터 제공자는 전체 TV 인구의 특정한 지리적 및 인구통계적 섹션을 모니터링한다. 이와 같이, 상이한 제공자들에 의해 수집된 TV 시청률 미터링 데이터세트들 사이에는 불일치가 존재한다. 국가적 또는 지역적 TV 시청률 레이팅을 생성하기 위해 이들 데이터세트들을 활용하기 위해, 분산 측정 서버(150)는 상이한 제공자들로부터의 TV 시청률 미터링 데이터에 특정한 가중치들을 적용할 수도 있고, 특정한 인구에 대한 TV 프로그램에 대한 하나의 TV 시청률 레이팅으로 이들을 "블렌딩(blend)"할 수도 있다. 이러한 작업을 수행하기 위해, 분산 측정 서버는 이러한 추정을 하기 위해 요구되는 데이터 뿐만 아니라 프로그램 모듈들을 저장하는 메모리(212)를 갖는다. 분산 측정 서버 및 관련 프로그램 모듈들과 데이터의 더욱 상세한 설명은 도 1b 내지 도 4와 관련하여 아래에 제공된다.
[0020] 일부 구현들에서, 계정 및 시청률 정보가 데이터베이스(132)에 보유되는 가정들(180)은, 그들의 TV 시청, 계정 및 인구통계적 정보가 분산 측정 서버(150)로 하여금 참가자 가정들(180)에 대한 TV 시청 데이터를 결정하게 하기 위해 수집되고, 집계되며 분석될 수 있다는 것에 동의한 TV 시청률 패널들에서 참가자들이다. 계정 정보 데이터베이스(132)는 각 참가자 가정에 대한 계정 번호(account number; 134), 명칭(136), 및 과금 주소(billing address; 138)를 일반적으로 포함한다. 일부 실시예들에서, 계정 정보(132)는 또한, 가정에 대한 거주지 주소 및/또는 스트리밍 TV 콘텐츠 및/또는 인터넷 기반 서비스들에 일반적으로 액세스하고 시청하기 위해 가정(180)에 의해 사용된 하나 또는 그 초과의 인터넷 인에이블 디바이스들과 연관된 IP 어드레스(126)와 같은 물리적 주소(140)를 포함한다. 일부 경우들에서, 가정(180)은 고정 IP 주소(126)를 갖고, 이 경우에, 고정 IP 주소는 데이터베이스(132)에서 가정의 계정과 연관된다. 다른 경우들에서, 가정(180)은 정기적으로(예를 들어, 가정 멤버가 인터넷 서비스 제공자(ISP)(128)를 "다이얼업(dial up)"하거나 그에 새로 접속할 때 마다) 변할 수 있는 동적으로 할당된 IP 주소를 갖는다. 이러한 경우에, 방송국/제공자(102)는 가정의 IP 주소(126)에 대하 변화들을 트래킹하고 그에 따라 데이터베이스(132)에서의 레코드를 업데이트한다. 일부 경우들에서, 계정 정보 데이터베이스(132)는 각 가정과 연관된 계정 프로파일(144)을 포함한다. 계정 프로파일(144)은 가정 멤버들의 수 및 나이, 성, 교육 수준, 수입, 및 적어도 하나의 가정 멤버의 직업을 포함하지만 이에 제한되지 않는 가정의 멤버들을 특징화하는 하나 또는 그 초과의 인구통계적 파라미터들을 포함할 수도 잇다. 후술하는 바와 같이, 계정 프로파일(144)에서의 정보는 수집된 시청률 데이터로부터 TV 시청률 레이팅을 프로젝트할 때 하나의 제공자에 의해 수집된 시청률 데이터와 연관된 바이어스를 최소화하거나 클라이언트 요청에 응답하여 시청률 데이터를 문의하기 위해 사용된다. 일부 경우들에서, 계정 정보 데이터베이스(132)는 각 계정과 연관된 가정(180)의 텔레비전 시청 활동을 표현하는 TV 시청률 데이터(142)를 포함한다. 예를 들어, TV 시청 활동은 각 프로그램에 대한, 프로그램의 명칭 및 설명, 프로그램을 상영하는 채널, 시청 날짜/시간 등을 포함하는 가정에 의해 시청되는 모든 프로그램에 대한 정보를 포함할 수 있다. 다른 구현들에서, 데이터베이스(132)에 세이브된 TV 시청 활동은 적어도 임계 시간량(예를 들어, 1분 또는 5분) 뿐만 아니라 프로그램의 시작 시간과 프로그램의 종료 시간 동안 시청되는 프로그램들만을 포함한다. 일부 구현들에서, 트래킹된 시청 활동은 프리미엄 콘텐츠만을 포함한다. TV 시청률 데이터(142)는 데이터 샘플이 수집될 때의 날짜 및 시간 및 데이터 샘플이 수집될 때의 가정에서 방송된 TV 프로그램에 관한 정보와 같은 가정으로부터 수집된 미가공 데이터 샘플, 또는 가정에서 TV 프로그램의 방송 지속기간과 같은 사전-프로세싱된 데이터 샘플을 포함할 수도 있다. 도 1에 도시되어 있는 바와 같이, 데이터베이스(132)는 다중의 TV 방송국들(또는 TV 미터링 데이터 제공자들)(102)로부터 수집된 TV 시청률 데이터를 포함할 수도 있다. 데이터 사전 프로세싱 절차는, 상이한 소스들의 포맷들이 데이터베이스(132)에 의해 사용된 것과 상이한 경우에 상이한 소스들로부터의 데이터에 적용될 수도 있다. "시청률 데이터" 및 "미터링 데이터"와 같은 용어들은 본 출원 전반적으로 상호교환가능하게 사용된다.
[0021] 일부 구현들에서, TV 방송국은 TV 신호들을 방송하는데만 책임이 있고, 개별 TV 미터링 데이터 제공자는 가정들로부터 상이한 TV 프로그램들에 대한 TV 미터링 데이터의 수집을 담당한다. 일부 다른 구현들에서, TV 방송국 및 TV 미터링 데이터 제공자는 TV 신호들의 방송 및 TV 미터링 데이터의 수집 양자를 책임지는 단일 엔터티로서 동작한다. 그러나, 본 출원의 구현들은 어느 하나의 구성에 적용된다. 간결함을 위해, 본 출원의 나머지 부분에서는 엔터티들 양자를 표현하기 위해 용어 "TV 미터링 데이터 제공자"를 사용한다. 이 용어가 나타나는 문맥으로부터, 당업자는 어느 엔터티를 지칭하는지 이해할 것이다.
[0022] 도 1에 도시되어 있는 바와 같이, TV 미터링 데이터 제공자(102)는 케이블(112)을 통해, 위성(104)으로부터의 송신에 의해, 또는 통신 네트워크들(130)(예를 들어, 인터넷)을 통한 스트리밍에 의해 가정(180)에 텔레비전 프로그램들을 송신할 수도 있다. 위성 송신들(106)의 경우에서, 가정(180)은 신호를 수신하기 위해 수신기 안테나(108)를 갖는다. 가정(180)에는, 인커밍 TV 신호를 프로세싱하거나 디코딩하기 위한 수신기 또는 컨버터(110)가 존재한다. 디코딩된 TV 신호들은 가정 멤버들(118)이 텔레비전(116)상에 디스플레이되고 있는 것을 제어하게 하는 셋탑 박스(STB; 117)에 송신된다. 일부 구현들에서, 수신기/컨버터(110)는 STB(117)와 결합된다. 일반적으로, 멤버(118-1 또는 118-2)와 같은 가정 멤버가 리모트 컨트롤 디바이스로 STB(117)를 제어한다. 일부 구현들에서, 전화 라인(114)을 통해 TV 미터링 데이터 제공자(102)와 STB(117) 사이에 추가의 통신이 존재한다. 예를 들어, STB(117)는 무슨 텔레비전 프로그램들이 시청되고 있는지에 관한 정보를 제공할 수도 있거나, 대화형 텔레비전 프로그램들에 대한 TV 미터링 데이터 제공자(102)로부터 다른 정보를 수신할 수도 있다. TV 미터링 데이터 제공자(102)는 STB(117)로부터의 가정 멤버의 시청 활동에 관한 정보를 프로세싱하고 프로세싱된 정보를 데이터베이스(132)에 저장한다.
[0023] 일부 구현들에서, 가정 멤버의 시청 활동은 수신기/컨버터(110)에 의해 식별되고, 유선 또는 무선 홈 라우터(120)를 통해 통신 네트워크(130)(예를 들어, 인터넷)에 접속되는 STB(117)를 통해 TV 미터링 데이터 제공자(102)에 되송신된다. 다른 구현들에서, STB(117)는 수신기/컨버터(110)로부터 수신된 신호를 평가함으로써 시청되는 프로그램을 확인할 수 있다. 이들 구현들에서, STB(117)는 가정 라우터(120)를 통해 시청 정보(예를 들어, 프로그램, 채널, 날짜/시간 등)를 TV 미터링 데이터 제공자(102)에게 다시 송신한다. 시청 정보는 가정 라우터(120)를 통해 송신되기 때문에, 가정 라우터(120)의 IP 주소(126)는 시청 정보와 함께 TV 미터링 데이터 제공자(102)에 또한 송신된다. 일부 구현들에서, IP 주소(126) 및/또는 시청 정보는 주기적으로(예를 들어, 한 시간에 한 번 내지 하루에 한 번 또는 심지어 일주일에 한 번) TV 미터링 데이터 제공자(102)에게 송신된다. 2개의 연속하는 송신들 사이에서, 데이터가 STB(117)에 저장된다. 상기 언급한 바와 같이, 일부 대안이 구현들에서, STB(117)는 전화 라인(114)을 통해 데이터를 TV 미터링 데이터 제공자(102)에게 송신한다. 이들 구현들에서, STB(117)는 라우터(120)로부터 IP 주소(126)를 검색할 수 있고 그 주소를 시청 데이터와 송신할 수 있다.
[0024] 실제 텔레비전 프로그램 신호들은 일반적으로, 위성(104)에 의해, 케이블(112)을 통해, 또는 지상 TV 송신(즉, 종래의 TV 방송)을 통해 송신된다. 일부 구현들에서, 텔레비전 프로그램들은 인터넷과 같은 통신 네트워크(130)를 통해 스트리밍된다. 이들 구현들에서, 텔레비전 프로그램을 선택하는 프로세스가 가정 라우터(120)에 직접 접속되는 컴퓨터(103), STB(117), 또는 수신기/컨버터(110)에 의해 수행될 수도 있다(도 1에는 미도시). 가정 라우터(120)는 가정(180)으로부터 인터넷으로의 게이트웨이이다. 가정(180) 내부에서는, 라우터(120)는 STB(117)에 접속되고, 일부 경우들에서는, 다수의 컴퓨터들(103), 스마트폰들 또는 디지털 오디오 플레이어들(124) 또는 XBOX, PLAYSTATION 또는 WII과 같은 게임 콘솔들(122)에 접속된다. 라우터(120)는 IP 주소(126)를 홈 라우터(120)에 할당하는 인터넷 서비스 제공자(128)를 통해 통신 네트워크(130)에 접속된다.
[0025] 가정(180)에서의 컴퓨터들(103)은 통신 네트워크들(130), 인터넷 서비스 제공자(128), 및 가정 라우터(120)를 통해 TV 미터링 데이터 제공자(102)로부터 스트리밍된 TV 프로그램들의 시청, 쇼핑, 비디오들의 온라인(예를 들어, YouTube상에서) 시청, 온라인 게임 플레이, 온라인 소셜 네트워크들에 참여, 또는 다수의 다른 활동들에 참여와 같은 무수한 활동들을 수행하기 위해 인터넷에 액세스할 수 있다. TV 프로그램 시청 활동들은 데이터베이스(132)에서 TV 미터링 데이터 제공자(102)에 의해 로깅되고 가정(180)의 IP 주소(126)에 의해 트래킹되는데, 이는 IP 주소(126)가 쉽게 입수가능하고 (적어도 특정한 시점에서) 고유한 식별자이기 때문이다. 당업자는 계정 정보 데이터베이스(132)에서 식별된 데이터가 구현에 의존하여, 단일 데이터베이스에서 모두 발견될 수 있거나 상이한 수의 데이터베이스들로 분배될 수 있다는 것을 인식할 것이다.
[0026] 일부 구현들에서, 분산 측정 서버(150)는 TV 미터링 데이터 제공자들에 의해 수집된 다수의 가정의 미터링 데이터 뿐만 아니라 그들의 인구통계적 데이터를 수신하기 위해 TV 미터링 데이터 제공자들(102) 또는 계정 정보 데이터베이스(132) 또는 양자에 커플링된다. 일부 다른 구현들에서, 분산 측정 서버(150)는 통신 네트워크들(130), ISP(128), 및 가정 라우터(120)를 통해 가정의 STB(117)로부터 미터링 데이터를 수신한다. 아래에 언급하는 바와 같이, 분산 측정 서버(150)는 클라이언트들로부터의 문의들에 응답하여 TV 시청률 레이팅을 추정하고 이러한 레이팅 정보를 요청 클라이언트들에게 제공하기 위해 자신의 미터링 및 인구통계적 데이터의 카피를 관리한다. 상세히 후술하는 바와 같이, 분산 측정 서버(150)는, 예를 들어, 일 초 미만 내지 수 분 범위의 단시간 프레임내에 클라이언트 요청 시청률 레이팅의 합리적인 추정치를 결정하기 위해 메모리에 저장된 TV 미터링 데이터에 기준들의 세트를 적용한다. 일부 구현들에서, 분산 측정 서버(150)는 연관된 바이어스를 제거하거나 감소시키기 위해 상이한 제공자들로부터의 데이터에 상이한 가중치들을 할당하고, 가중치들은 위치, 성, 나이, 수입, 교육 등을 포함하는 하나 또는 그 초과의 지리인구통계적 팩터들의 함수이다.
[0027] 도 1b는 일부 구현들에 따르는 STB들(117) 및 TV 미터링 데이터 제공자들(102)과 같은 다중의 소스들로부터 TV 시청률 미터링 데이터를 수집하고 TV 시청률 레이팅의 추정치를 요청 클라이언트들(170)에게 제공하는 분산 측정 서버(150)의 컴포넌트들을 예시하는 블록도이다. 다량의 TV 시청률 데이터를 핸들링하기 위해, 분산 측정 서버(150)는 수백의(예를 들어, 512) 컴퓨터들을 포함할 수도 있고, 각 컴퓨터는 소정의 샤딩 함수에 따라 결정되는 ("샤드"로서 또한 공지되어 있는) TV 시청률 데이터의 서브세트를 관리하는데 책임이 있다. 도 1b에 도시되어 있는 바와 같이, 수백의 컴퓨터들은 그들의 각각의 기능들에 따라 3개의 층들로 분류되고, 컴퓨터들의 3개의 층들은 도 1b에 도시된 바와 같이 트리형의 계층적 아키텍처에 따라 함께 링크된다.
[0028] 계층적 아키텍처의 루트 노드를 "루트 샤드"(151)로 지칭한다. 분산 측정 서버내의 컴퓨터들의 총수에 의존하여, 계층적 아키텍처는 중간 노드들의 제로 또는 그 초과의 층들을 포함할 수도 있다. 도 1에 도시된 예에서, 분산 측정 서버(150)는 "믹서 샤드들"(153-1, 153-M)으로 칭하는 중간 노드들의 하나의 층을 포함한다. 각 믹서 샤드는 소정의 수(예를 들어, 16)의 리프 샤드(예를 들어, 155 또는 157)를 관리한다. 분산 측정 서버(150)가 데이터 소스들(예를 들어, STB(117) 및 TV 미터링 데이터 제공자(들)(102))로부터 데이터를 임포팅(import)할 때, 루트 샤드(151)는 분산 측정 서버(150)내에서 새로운 미터링 데이터를 할당하기 위해 소정의 샤딩 함수에 따라 하나 또는 그 초과의 리프 샤드들을 선택하는데 책임이 있다. 분산 측정 서버(150)에서의 데이터 임포테이션(importation) 프로세스의 더욱 상세한 설명이 도 4a와 관련하여 아래에 제공된다. 분산 측정 서버(150)가 클라이언트(170)로부터 문의를 수신할 때, 루트 샤드(151)는 문의를 프로세싱하는 소정의 샤딩 함수에 따라 하나 또는 그 초과의 리프 샤드들을 선택하는데 책임이 있다. 리프 샤드들은 문의 결과들을 각각의 믹서 샤드들(153)에 제공한다. 믹서 샤드들(153)은 문의 결과들을 집계하여, 요청 클라이언트(170)에게 리턴되도록 집계된 문의 결과들을 루트 샤드(151)에 제공한다. 분산 측정 서버(150)에서 문의 프로세싱의 더욱 상세한 설명이 도 4b 및 도 4c와 관련하여 아래에 제공된다. 일부 구현들에서, 루트/믹서/리프 샤드들은 소프트웨어 모듈들의 3개의 타입들에 대응하여, 도 1b에 도시된 샤드들의 상이한 타입들은 분산 측정 서버(150)내에서 동일한 컴퓨터상에서 동작할 수도 있다. 예를 들어, 리프 샤드(155-1)와 같은 미터링 데이터의 샤드를 관리하는데 책임이 있는 컴퓨터가 다른 리프 샤드들(155-2, 155-N)로부터 문의 결과들을 수신하는 믹서 샤드(153-1)로서 또한 작용할 수도 있고 심지어 루트 샤드(151)일 수도 있다.
[0029] 일부 구현들에서, 샤딩 함수는 소정의 데이터 레코드에 대해, 루트 샤드(151)가 어느 리프 샤드(들)가 (문의에 응답할 때) 데이터 레코드를 저장하는지 또는 어느 리프 샤드(들)가 (새로운 미터링 데이터를 수신할 때) 데이터 레코드를 저장할지를 결정할 수 있도록 TV 시청률 데이터 레코드 및 하나 또는 그 초과의 리프 샤드들로부터의 매핑 관계를 정의하는 해시 테이블 함수이다. 일례로서, 예시적인 샤딩 함수는 다음과 같이 정의된다:
Shard_Number = hash_K(TV_ID, STB_ID, Broadcaster_ID)
여기서, "hash_K"는 입력 미터링 데이터(또는 문의)를 [1, …, K]의 범위의 일련 번호를 갖는 각각의 리프 샤드에 매핑하는 소정의 해시 테이블 함수이고, K는 분산 측정 서버(150)내의 고유 리프 샤드들의 총 수(즉, 각 고유 리프 샤드에 대한 리던던트 레플리카들을 카운팅하지 않음)이고, 이는 해시 테이블 함수의 모듈로로서 작용한다. 파라미터 "TV_ID"는 가정내의 고유 TV를 식별하고 파라미터 "STB_ID"는 TV가 접속되는 고유 STB를 식별한다. 파라미터 "Broadcaster_ID는 TV 프로그램들을 STB에 제공하는 고유 TV 콘텐츠 제공자를 식별한다. 일부 구현들에서, 하나의 가정은 상이한 TV 콘텐츠 제공자들로부터 콘텐츠를 수신하기 위해 다중의 STB들에 접속된 다중의 TV들을 가질 수도 있다. 이들 3개의 파라미터들에 기초하여, 루트 샤드(151)는 리프 샤드들 중 어느 것이 특정한 가정내의 특정한 TV에 대해 생성된 미터링 데이터를 할당하는데 책임이 있는지를 결정한다. 예시 목적을 위해, 도 4a 내지 도 4c와 관련하여 후술하는 예들 중 일부는, household_ID가 STB_ID와 등가이도록 하나의 가정이 하나의 STB를 갖는다는 것을 가정한다.
[0030] 일부 구현들에서, 분산 측정 서버(150)는 하나의 데이터 소스로부터의 미터링 데이터가 동일하거나 상이한 믹서 샤드들과 연관될 수도 있는 다중의 리프 샤드들을 통해 확산되도록 샤딩 함수를 통해 구성된다. 예를 들어, 하나의 리프 샤드는 동일한 데이터 제공자로부터의 미터링 데이터의 5% 보다 많이 저장하는 것이 허용되지 않는다. 이렇게 함으로써, 분산 측정 서버(150)는 문의와 연관된 미터링 데이터를 갖는 것으로서 식별된 하나 또는 그 초과의 리프 샤드들이 시스템 메인터넌스 또는 다른 이유로 인해 일시적으로 또는 영구적으로 이용불가능하더라도 문의에 응답하여 추정된 레이팅을 제공할 수 있다. 일부 구현들에서, 분산 측정 서버(150)는 상이한 리프 노드들과 연관된 상이한 컴퓨터들상에서 동일한 미터링 데이터의 소정의 수의 레플리카들을 유지하도록 구성된다. 루트 샤드(151)는 미터링 데이터에 대한 문의의 수신시에, 루트 샤드(151)가 어느 샤드들이 요청된 미터링 데이터를 갖는지 찾을 수 있을 뿐만 아니라 문의를 프로세싱하는데 작업 부하가 적은 리프 샤드들을 선택할 수 있도록 상이한 리프 샤드들에서 미터링 데이터 레플리카들의 사용을 모니터링하도록 구성된다. 한편, 동일한 가정과 연관된 미터링 데이터가 동일한 컴퓨터의 메모리에 저장되고 동일한 리프 샤드에 의해 관리된다. 다시 말해, 분산 측정 서버가 문의에 의해 식별된 가정과 연관된 미터링 데이터를 갖는 것으로서 제 1 리프 샤드를 찾을 때, 임의의 다른 리프 샤드가 제 1 리프 샤드와 동일한 미터링 데이터(즉, 레플리카)를 갖거나 전혀 아무것도 갖지 않기 때문에 제 2 리프 샤드를 찾는 것은 필요하지 않다.
[0031] 다중의 리프 샤드들을 통해 동일한 데이터 소스로부터 미터링 데이터를 확산시키고 동일한 리프 샤드의 다중의 레플리카들을 유지하는 구성은 분산 측정 서버의 부하 밸런스를 향상시킬 뿐만 아니라 고장에 더욱 내성이 있게 한다. 소정의 문의에 대해, 문의에 관한 미터링 데이터를 갖는 것으로서 다중의 리프 샤드들이 존재할 수도 있다. 루트 샤드(151)는 이들 리프 샤드들에서 현재 작업 부하에 기초하여 문의에 응답하는 다중의 리프 샤드들의 서브세트를 식별할 수도 있다. 식별된 리프 샤드들 중 하나가 이용가능하지 않으면, 루트 샤드(151)는 원래의 리프 샤드를 대체하기 위해 요청된 미터링 데이터의 레플리카를 갖는 다른 리프 샤드를 선택할 수 있다. 이것은 클라이언트(170)가 부분 문의 결과를 수용하는 경우에 특히 유용하다(예를 들어, 클라이언트는 정확성이 소정의 임계치 이상이거나 이것이 전체 미터링 데이터 세트 미만이지만 미터링 데이터의 소정의 양을 프로세싱하는 것으로부터 발생하는 경우에 문의 결과가 수용가능하다는 것을 문의에서 특정할 수도 있다).
[0032] 일부 구현들에서, 분산 측정 서버(150)는 서버(150)와 상호작용하기 위해 클라이언트(170)에 대한 소정의 애플리케이션 프로그래밍 인터페이스(API)를 제공한다. 이러한 API는 리프 샤드들에 대한 미터링 데이터의 구성에 기초하여 SQL과 같은 기존의 문의 언어를 지원할 수도 있거나 더욱 플렉시블한 새로운 문의 언어를 정의할 수도 있다. 예를 들어, API 및 클라이언트 애플리케이션(171)은 자바(Java)로 구현될 수도 있다. 클라이언트 애플리케이션(171)에 의해 제공된 문의의 수신시에, 루트 샤드(151)는 문의가 정확하고 문법적으로 에러가 없다는 것을 확실히 하기 위해 문의를 검사한 후, 어느 리프 샤드들이 문의에 매칭할 수도 있는 미터링 데이터를 가질 수도 있는지를 결정하기 위해 문의를 해석한다. 예를 들어, 문의가 특정한 방송국에 의해 방송된 특정한 쇼에 대한 TV 시청률 레이팅을 결정한 경우에, 루트 샤드(151)는 이러한 특정한 방송국에 의해 제공된 미터링 데이터를 저장하는 하나 또는 그 초과의 리프 샤드들을 먼저 식별하고 그 후에, 리프 샤드의 현재 부하 밸런스, 리프 샤드에 저장된 관련 미터링 데이터의 양, 및 클라이언트에 의해 특정되는 경우 레이팅 정확도와 같은 팩터들에 기초하여 식별된 리프 샤드들 중 하나 또는 그 초과의 것에 문의를 제공한다.
[0033] 각 선택된 리프 샤드에서, 문의 엔진은 문의를 리프 샤드상에 저장된 미터링 데이터에 적용하는데 책임이 있다. 이러한 프로세스는 문의의 조건들을 컴퓨터의 메모리의 각 미터링 데이터 레코드와 비교하고 이러한 데이터 레코드가 문의의 조건들을 충족시키는지 여부를 결정하는 것이다. 일부 구현들에서, 문의 엔진은 최종 데이터 레코드가 검사될 때까지 문의를 충족시키는 새로운 미터링 데이터 레코드가 발견될 때마다 카운트가 1씩 증가되도록 문의를 충족시키는 데이터 레코드들의 카운트를 유지한다.
[0034] 미터링 데이터가, 각각이 자신의 문의 엔진을 갖는 다중의 리프 샤드들상에 분배되기 때문에, 문의를 충족시키는 데이터 레코드들의 다중의 카운트들이 상이한 리프 샤드들에 의해 독립적으로 생성된 후 이들 리프 샤드들과 연관된 각각의 믹서 샤드들에 제공된다. 일부 구현들에서, 믹서 샤드들은 다중의 카운트들을 하나로 집계하고, 문의를 충족시키는 데이터 레코드들 집계된 총 카운트를 루트 샤드(151)에 제공하고, 이는 문의에 대한 응답의 적어도 일부로서 요청 클라이언트(170)에 리턴된다.
[0035] 상기 언급한 바와 같이, 분산 측정 서버(150)는 다중의 컴퓨터들을 포함할 수도 있고, 각 컴퓨터는 샤드들의 다중의 타입들을 지원할 수도 있다. 도 2는 일부 구현들에 따르는 분산 측정 서버의 루트/믹서/리프 샤드 멤버로서 구동하는 컴퓨터(200)의 컴포넌트들을 예시하는 블록도이다. 컴퓨터(200)는 통상적으로, 메모리(212)에 저장된 모듈들, 프로그램들 및/또는 명령들을 실행하여, 프로세싱 동작들을 수행하는 하나 또는 그 초과의 프로세싱 유닛들(CPU)(202); 하나 또는 그 초과의 네트워크 또는 다른 통신 인터페이스들(210); 메모리(212), 및 이들 컴포넌트들을 상호접속하는 하나 또는 그 초과의 통신 버스들(214)을 포함한다. 일부 구현들에서, 컴퓨터(200)는 디스플레이 디바이스(208) 및 하나 또는 그 초과의 입력 디바이스들(206)(예를 들어, 키보드 또는 마우스)을 포함하는 사용자 인터페이스(204)를 포함한다. 일부 구현들에서, 메모리(212)는 DRAM, SRAM, DDR RAM 또는 다른 랜덤 액세스 고체 상태 메모리 디바이스들과 같은 고속 랜덤 액세스 메모리를 포함한다. 일부 구현들에서, 메모리(212)는 하나 또는 그 초과의 자기 디스크 저장 디바이스들, 광 디스크 저장 디바이스들, 플래시 메모리 디바이스들, 또는 다른 비휘발성 고체 상태 저장 디바이스들과 같은 비휘발성 메모리를 포함한다. 일부 구현들에서, 메모리(212)는 CPU(들)(202)로부터 원격으로 위치된 하나 또는 그 초과의 저장 디바이스들을 포함한다. 메모리(212), 또는 다르게는 그 메모리(212)내의 비휘발성 메모리 디바이스(들)는 비일시적 컴퓨터 판독가능한 저장 매체를 포함한다. 일부 구현들에서, 메모리(212) 또는 그 메모리(212)의 컴퓨터 판독가능한 저장 매체는 아래의 엘리먼트들, 또는 이들 엘리먼트들의 서브세트를 저장하고, 추가의 엘리먼트들을 또한 포함할 수도 있다:
다양한 기본 시스템 서비스들을 핸들링하고 하드웨어 의존 작업들을 수행하는 절차들을 포함하는 운영 시스템(216);
통신 네트워크 인터페이스들(210) 및 인터넷, 다른 광역 네트워크들, 로컬 영역 네트워크들, 대도시 영역 네트워크들 등과 같은 하나 또는 그 초과의 통신 네트워크들(유선 또는 무선)을 통해 프로젝션 서버(200)를 다른 컴퓨터들에 접속하기 위해 사용되는 네트워크 통신 모듈(218);
다중의 데이터 소스들로부터 새로운 TV 미터링 데이터 및 클라이언트들로부터 문의들을 수신하고 문의 결과들을 요청 클라이언트들(170)에게 리턴하는 루트 샤드 모듈(220);
리프 샤드들에 의해 리턴된 문의 결과들을 집계하는 것을 포함하는, 소정의 수의 리프 샤드들을 관리하는 믹서 샤드 모듈(226);
새로운 미터링 데이터의 임포팅 또는 문의에 대한 응답과 관련하여 메모리(212)에 저장된 미터링 데이터를 프로세싱하는 데이터 프로세싱 모듈(232); 및
TV 시청률 미터링 데이터(240)(예를 들어, 가정 마다 구성된 STB 데이터) ― 각 가정에 대한 STB 데이터(242)는 복수의 압축된 TV 미터링 데이터 레코드들(244) 및 가정 인구통계적 데이터 레코드(246)를 포함한다.
[0036] 일부 구현들에서, 루트 샤드 모듈(220)은 아래의 엘리먼트들을 더 포함할 수도 있다:
문의에 따라 요청 클라이언트에게 리턴되도록 최종 문의 결과로 리프 샤드들 및 믹서 샤드들에 의해 리턴된 문의 결과들을 준비하는 최종 문의 결과 프로세싱 모듈(222);
하나 또는 그 초과의 리프 샤드들 중 어느 것이 인커밍 미터링 데이터를 저장할지 그리고 하나 또는 그 초과의 리프 샤드들 중 어느 것이 새롭게 수신된 문의에 응답할지를 루트 샤드 모듈(220)이 결정할 수 있도록 미터링 데이터가 리프 샤드들에 의해 어떻게 저장되는지를 정의하기 위해 사용되는 샤드 상태 데이터(224) ― 일부 구현들에서, 샤드 상태 데이터(224)는 소정의 샤딩 함수의 형태로 표현된다.
[0037] 일부 구현들에서, 믹서 샤드 모듈(226)은 아래의 엘리먼트들을 더 포함할 수도 있다:
예를 들어, 집계를 통해 리프 샤드들에 의해 리턴된 문의 결과를 준비하고 프로세싱된 문의 결과를 루트 샤드에 제공하는 부분 문의 결과 프로세싱 모듈(228); 및
문의 결과들을 믹서 샤드에 보고하는 리프 또는 믹서 샤드들의 소정의 세트를 식별하는 자식(child) 샤드 식별자들(230).
[0038] 일부 구현들에서, 데이터 샤드 모듈(232)은 아래의 엘리먼트들을 더 포함할 수도 있다:
메모리(212)에서 인커밍 미터링 데이터 및 인구통계적 데이터를 임포팅하고 할당하는 데이터 임포터 모듈(234);
필요한 경우에, 인커밍 미터링 데이터를 그것의 원래의 포맷으로부터 소정의 포맷으로 변환하고 메모리(212)에 저장되도록 레코드 마다 인커밍 미터링 데이터를 압축하거나 문의에 대응할 때 압축된 미터링 데이터 레코드들을 압축해제하는 데이터 압축기(해제기) 모듈(236); 및
레코드가 문의의 기준을 충족시키는지 여부를 결정하기 위해 문의를 TV 미터링 데이터 레코드에 적용하는 문의 엔진 모듈(238).
[0039] 서비스를 클라이언트(170)에게 제공하기 위해, 분산 측정 서버(150)는 다수의 가정들의 TV 미터링 데이터를 가져야 한다. 도 1a와 관련하여 상기 언급한 바와 같이, 분산 측정 서버(150)가 TV 미터링 데이터에 액세스하는 다중의 방식들이 존재한다. 예를 들어, TV 미터링 데이터 제공자들(102)은 각각의 가입 가정들로부터 (예를 들어, STB 로드들의 형태로) 미터링 데이터를 수신할 수도 있다. 분산 측정 서버(150)가 TV 미터링 데이터 제공자들(102)에 커플링되기 때문에, TV 미터링 데이터 제공자들(102)은 STB 로그들을 분산 측정 서버에 포워딩할 수 있다. 일부 구현들에서, TV 미터링 데이터 제공자들(102)은 계정 정보 데이터베이스(132)(예를 들어, 시청률 데이터(142))에 미터링 데이터를 저장하고, 데이터베이스(132)에 대한 액세스를 분산 측정 서버(150)에 제공한다. 이러한 경우에, 분산 측정 서버(150)는 계정 정보 데이터베이스(132)로부터 새로운 미터링 데이터를 직접 수신할 수 있다. 일부 구현들에서, 분산 측정 서버(150)는 개별 가정들(180)로부터 시청률 데이터를 직접 또한 수신할 수 있다. 이러한 경우에, 가정(180)에서의 STB(117)는 박스에 의해 생성된 STB 로그를 가정 라우터(120), ISP(128) 및 통신 네트워크들(130)을 통해 분산 측정 서버(150)에 제공한다. 후술하는 바와 같이, 분산 측정 서버(150)는 데이터 레코드가 TV 미터링 데이터 제공자(102) 또는 가정에서의 STB(117)로부터 오는지에 관계없이 인커밍 신규 미터링 데이터 레코드를 호스팅하는 위치를 찾을 수 있다.
[0040] 일부 구현들에서, 상이한 TV 미터링 데이터 제공자들(102)은 미터링 데이터를 제공하는 상이한 스케줄들을 가질 수도 있다. 일부 제공자는 하루 또는 일주일 범위의 소정의 시간 간격 이후에 새로운 미터링 데이터를 분산 측정 서버(150)에 제공할 수도 있다. 이러한 상대적으로 긴 지연은 TV 미터링 데이터 제공자(102)가 (예를 들어, 수만 내지 수백만 범위의) 다수의 가정들과 일반적으로 연관된다는 사실에 관련될 수도 있고 모든 가입자들로부터의 STB 로그들을 수집하는 동안 더 오래 대기해야 하고 그 후 다중의 목적을 위해 소정의 프로세싱 절차들을 로그들에 적용해야 할 수도 있다. 반면에, 가정(180)에서의 STB(117)는 그것이 누적한 새로운 미터링 데이터를 분산 측정 서버(150)에 더욱 빈번하게(예를 들어, 매 시간 또는 매 분) 보고할 수도 있다. 상이한 소스들로부터의 미터링 데이터는 분산 측정 서버(150)의 관점에서 상이한 목적들을 서빙할 수도 있다. 예를 들어, TV 미터링 데이터 제공자들(102)로부터의 미터링 데이터의 큰 볼륨은 분산 측정 서버(150)가 더욱 정확하고 덜 바이어싱된 TV 시청률 레이팅 추정치를 생성하는 것을 도울 수 있다. 그러나, 개별 가정의 셋탑 박스들로부터 직접 오는 미터링 데이터는 거의 실시간으로 레이팅 추정을 하기 위해 사용된다.
[0041] 도 3a는 일부 구현들에 따르는, TV 시청률 미터링 데이터가 분산 측정 서버(150)의 루트 샤드를 통해 데이터 소스로부터 루트 샤드에 의해 선택된 하나 또는 그 초과의 리프 샤드들로 어떻게 이동되는지를 예시하는 블록도이다. 예시를 위해, 이러한 예에서의 데이터 소스는 TV 미터링 데이터 제공자(102)이다. 상기 언급한 바와 같이, TV 미터링 데이터 제공자(102)는 특정한 양의 TV 미터링 데이터를 누적할 수도 있고 데이터를 분산 측정 서버(150)에 송신할 준비가 되어 있다. 소정의 스케줄에 따르면, TV 미터링 데이터 제공자(102)는 누적한 새로운 미터링 데이터를 분산 측정 서버(150)에 전송한다. 일부 구현들에서, 미터링 데이터는 하나 또는 그 초과의 로그 파일들에 존재하고, 각 로그 파일은 (다른 데이터 소스들로부터 구별하기 위해 TV 미터링 데이터 제공자(102)와 고유하게 연관된) 데이터 제공자 ID(102-1), (로그 파일이 컴파일될 때를 나타내는) 보고 시간(102-3), 및 복수의 STB 로그 레코드들(102-5)(각 레코드는 특정한 가정에서 셋탑 박스와 연관됨)을 포함한다.
[0042] 도 3b는 일부 구현들에 따르는 TV 시청률 미터링 데이터를 구성하는 데이터 소스(예를 들어, TV 미터링 데이터 제공자(102))에 의해 사용된 예시적인 데이터 구조(예를 들어, STB 로그 레코드(102-5))를 예시하는 블록도이다. STB 로그 레코드(102-5)는 (셋탑 박스들 중 하나 또는 TV 미터링 데이터 제공자(102)와 연관된 가정들 중 하나를 고유하게 식별하는) STB ID(312), (로드 레코드(102-5)가 STB(117)에 의해 컴파일링되고 TV 미터링 데이터 제공자(102)에게 보고되는 때를 나타내는) 보고 시간(314), (로깅 주기의 지속기간을 나타내는) 로그시작 시간(316) 및 로그 종료 시간(318), 및 각각이 이벤트 ID(322), 이벤트 시작 시간(324), 이벤트 종료 시간(326), 채널 정보(328), 콘텐츠 타입(330) 등을 포함하는 복수의 이벤트들(320)을 포함한다. STB(117)와 연관된 복수의 이벤트들(320)은 TV가 턴 온/오프되는 때, 가정에서 무슨 프로그램들을 시청하였는지, 각 프로그램이 얼마나 오래 시청되었는지, 가정에서 무슨 타입의 프로그램들이 시청되고 있는지 등과 같은 STB(117)를 통해 TV 프로그램들을 시청하는 가정의 활동을 레코딩한다. 예를 들어, 가정이 하나의 채널로부터 다른 채널로 스위칭할 때, STB(117)는 새로운 채널에 대한 새로운 이벤트 레코드를 생성한다. 개별 STB 로그 레코드들(102-5)이 개별 가정의 TV 시청 습관에 관한 정보를 제공할 수 있다는 것에 유의한다. STB 로그 레코드들(102-5)을 집계하고 시청률 데이터를 대응하는 지리인구통계적 데이터와 상관시킴으로써, 분산 측정 서버(150)에 의해 제공된 다수의 중요한 서비스들 중 하나인, 특정한 지리적 영역내의 특정한 그룹의 시청자들 중에서 TV 프로그램의 레이팅과 같은 통계 정보를 얻는 것이 가능하다.
[0043] 분산 측정 서버(150)는 상이한 데이터 소스들로부터 미터링 데이터를 요청하고/수신하는 하나 또는 그 초과의 루트 샤드들(151) 및 미터링 데이터를 할당하는 복수의 리프 샤드들을 포함한다(예를 들어, 도 1b 참조). 도 3a에 도시되어 있는 바와 같이, 인커밍 미터링 데이터의 수신시에, 루트 샤드(151)는 미터링 데이터를 소정의 샤딩 함수에 적용할 수도 있고 하나 또는 그 초과의 리프 샤드들을 선택하여 미터링 데이터를 프로세싱할 수도 있다. 일부 구현들에서, 소정의 샤딩 함수는 해시 테이블로서 구현된다. 소정의 데이터 제공 ID에 대해, 이러한 데이터 제공자 ID와 연관된 미터링 데이터를 호스팅하기 위해 리프 샤드들(예를 들어, 155-1 내지 155-N)의 소정의 세트가 존재한다. 서버의 성능을 향상시키기 위해, 분산 측정 서버(150)는 다중의 리프 샤드들에 걸쳐 동일한 데이터 소스로부터 미터링 데이터를 확산시킨다. 예를 들어, 서버(150)는 하나의 리프 샤드가 특정한 데이터 소스(예를 들어, TV 미터링 데이터 제공자)로부터의 데이터의 소정의 퍼센티지 또는 절대량 이하를 갖도록 최대 임계치를 설정할 수도 있다. 일부 구현들에서, 서버(150)는 특정한 데이터 소스로부터의 데이터량에 대해 리프 샤드에 대한 최소 임계치를 또한 설정할 수도 있다. 일부 구현들에서, 루트 샤드(151)는 리프 샤드들이 데이터를 병렬로 프로세싱할 수 있도록 TV 미터링 데이터 제공자(102)로부터 수신한 인커밍 미터링 데이터의 카피를 식별된 리프 샤드들(예를 들어, 155-1 내지 155-N) 각각에 포워딩한다. 각 리프 샤드는 미터링 데이터내에서 STB 로그 레코드들을 하나씩 스크리닝(screen)하고 리프 샤드의 메모리에 저장된 데이터 구조(예를 들어, 300, 302 또는 304)에 저장되도록 STB 로그 레코드들의 서브세트를 선택한다. 분산 측정 서버(150)에서의 데이터 임포테이션(importation) 프로세스의 더욱 상세한 설명이 도 4a와 관련하여 아래에 제공된다.
[0044] 도 3c는 일부 구현들에 따르는 TV 시청률 미터링 데이터를 저장하는 분산 측정 서버(150)에 의해 사용된 데이터 구조(예를 들어, 인-메모리(in-memory) STB 레코드(340))를 예시하는 블록도이다. 분산 측정 서버(150)는 미터링 데이터를 그것의 원래의 포맷으로부터 서버(150)에 의해 유지된 포맷으로 변환하는 것을 제외하고, 인커밍 미터링 데이터를 그것의 원래의 상태에 가능한 한 많이 유지한다. STB 로그 레코드(102-5)에서의 각 이벤트(320)에 대해, 리프 샤드는 대응하는 인-메모리 STB 레코드(340)가 존재해야 하는지 여부를 결정하고 STB 로그 레코드(102)가 리프 샤드에서 할당되는 것으로 간주되는 경우에 대응하는 STB 레코드를 생성한다. 일부 구현들에서, 인-메모리 STB 레코드(340)는 (데이터 제공자 ID, STB ID, 및 레코드와 연관된 이벤트 ID를 식별하는 정보를 포함할 수도 있는) 레코드 ID(342), 채널 정보(344), 콘텐츠 시작 시간(346), 콘텐츠 종료 시간(348), 타입, 차원, 제조자 등과 같은 콘텐츠를 시청하기 위해 사용된 TV의 속성들을 식별하기 위해 사용될 수도 있는) TV 정보 인덱스(350), (레코드(340)가 생성되는 가정의 인구통계적 데이터를 식별하기 위해 사용되는) 가정 ID(352), (가정이 콘텐츠를 시청하는 로컬 시간을 나타내는) 재생 시간(354), (가정이 콘텐츠를 라이브 또는 DVR로 시청하는지를 나타내는) 시청 타입(356), 및 (STB 레코드(340)에 기여하는 STB의 타입을 나타내는) STB 타입(358)을 포함한다. 일부 구현들에서, 리프 샤드와 연관된 STB 레코드들은 컴퓨터의 메모리에 저장되고, 이는 문의 프로세싱을 더욱 효율적이게 만든다. 일부 구현들에서, 리프 샤드는 각 레코드를 압축하고, 더 많은 레코드들을 호스팅하는 공간을 세이브하기 위해 압축된 레코드를 메모리에 저장한다. 문의에 응답할 때, 리프 샤드는 한번에 하나의 레코드를 압축해제하고 압축해제된 레코드가 문의를 충족하는지 여부를 결정한다. 다수의 널리 공지된 데이터 압축/압축해제 방식들(예를 들어, Lempel-Ziv)이 이러한 목적을 위해 사용될 수 있다.
[0045] 도 3d는 일부 구현들에 따르는 가정의 인구통계적 데이터를 저장하는 분산 측정 서버(150)에 의해 사용된 데이터 구조(예를 들어, 가정 인구통계적 레코드(360))를 예시하는 블록도이다. 상기 언급한 바와 같이, 계정 정보 데이터베이스(132)는 과금 및 시스템 유지관리와 같은 상이한 목적들을 위해 수백만의 가정들로부터의 인구통계적 데이터를 저장한다. 일부 구현들에서, 분산 측정 서버(150)는 각 가정과 연관된 인구통계적 데이터의 적어도 서브세트를 유지한다. 예를 들어, 리프 샤드는 특정한 가정으로부터의 미터링 데이터 뿐만 아니라 가정의 인구통계적 데이터 모두를 저장한다. 후술하는 바와 같이, 가정 인구통계적 데이터는 문의 자체 또는 대응하는 결과의 일부일 수 있다. 일부 구현들에서, 가정 인구통계적 레코드(360)는 가정 ID(362), 가정 주소(364), 가정 멤버들의 수(366), 가정 수입(368), 가정 멤버 교육(370), 및 가정 멤버 나이 및 성 정보(372)를 포함한다. 효율을 위해, 리프 샤드는 가정 인구통계적 데이터를 자신의 메모리에 또한 저장할 수도 있다. 가정 관련 전제조건을 갖는 문의의 수신시에, 리프 샤드는 가정의 인구통계적 데이터가 전제조건을 달성하지 못하면 특정한 가정과 연관된 미터링 데이터를 신속하게 스킵할 수 있다. 예를 들어, 문의가 지리적 영역내의 가정들에 한정되는 경우에, 리프 샤드는 가정의 주소가 문의된 지리적 영역 외부이라는 것을 나타내면 가정의 연관된 미터링 데이터를 압축해제할 필요가 없다. 일부 구현들에서, 인-메모리 가정 인구통계적 데이터는 종종 그것의 사이즈가 미터링 데이터의 사이즈 보다 현저하게 작고 (예를 들어, 하나의 가정은 수백의 STB 레코드들을 가질 수도 있음) 가정 데이터의 압축으로부터 너무 많은 이득이 존재하지 않기 때문에, 압축되지 않는다.
[0046] 도 3e는 일부 구현들에 따르는 TV 방송국 정보를 저장하는 분산 측정 서버(150)에 의해 사용된 데이터 구조(예를 들어, TV 방송국 정보 레코드(380))를 예시하는 블록도이다. 일부 구현들에서, 동일한 프로그램이 상이한 채널을 통해 상이한 TV 방송국들에 의해 방송될 수도 있다. 때때로, 심지어는 동일한 TV 방송국이 상이한 위치들에서 동일한 프로그램을 방송하는 상이한 채널들을 가질 수도 있다. 문의가 동일한 지역에서 다중의 방송국들에 의해 라이브로 방송되고 있는 프로그램의 레이팅을 찾으려는 경우에, 분산 측정 서버(150)는 임의의 STB 레코드들의 미싱(missing)을 회피하기 위해 그 방송국 ID(382)에 의해 식별된 각 방송국에 대한 방송 스케줄(384) 뿐만 아니라 채널 라인업 데이터(386)를 가질 필요가 있다.
[0047] 도 4a는 일부 구현들에 따르는 데이터 소스(예를 들어, TV 미터링 제공자 또는 셋탑 박스)에 의해 제공된 인커밍 TV 시청률 미터링 데이터를 분산 측정 서버(150)가 어떻게 핸들링하는지를 예시하는 플로우차트이다. 미터링 데이터가 데이터 소스에 의해 서버(150)에 푸쉬될 수도 있거나 서버(150)에 의해 데이터 소스로부터 검색될 수도 있다는 것에 유의한다. 분산 측정 서버(150)내에서, 루트 샤드로서 각각 동작하고 데이터 소스들의 소정의 세트를 처리하는 믹서 또는 리프 샤드들의 소정의 세트를 관리하는 루트 샤드 모듈을 설치하는 다중의 컴퓨터들이 존재할 수 있다. 루트 샤드들(151) 중 하나가 각각의 데이터 소스로부터 TV 미터링 데이터 보고를 수신한다(411). 일부 구현들에서, 데이터 소스는 TV 미터링 데이터 제공자이고 보고는 TV 미터링 데이터 제공자에 가입한 상이한 가정들과 연관된 복수의 이벤트 레코드들을 포함한다. 일부 구현들에서, 데이터 소스는 특정한 가정에서 셋탑 박스이고, 보고는 가정과 연관된 복수의 이벤트 레코드들을 포함한다. 옵션으로, 루트 샤드(151)는 원래의 포맷으로부터 측정 서버(150)에 의해 정의된 포맷으로 이벤트 레코드들을 변환한다(413). 다음으로, 루트 샤드(151)는 인커밍 미터링 데이터를 소정의 샤드 함수에 적용하고, 각 리프 샤드가 이벤트 레코드들의 서브세트를 호스팅하는데 책임을 지도록 이벤트 레코드들을 핸들링하는 하나 또는 그 초과의 리프 샤드들을 선택한다(415). 일부 구현들에서, 데이터 소스의 아이덴티티는 어느 리프 샤드가 이러한 데이터 소스로부터의 미터링 데이터를 핸들링하기 위해 설계되었는지를 결정하기 위해 사용될 수도 있다. 동일한 미터링 데이터의 레플리카(replica)들을 갖는 리프 샤드들에 대해, 루트 샤드(151)는 리프 샤드들의 현재의 부하 밸런스를 또한 고려하고(예를 들어, 리프 샤드들 중 일부가 다른 문의를 서비스할 수도 있음) 다른 것 보다 비교적 많은 로드 용량을 갖는 리프 샤드를 선택한다. 일부 구현들에서, 루트 샤드(151)는 분산 측정 서버(150)에서의 컴퓨터들 중 하나의 셧다운이 문의 결과들의 정확성에 악영향을 미치지 않도록 동일한 컴퓨터상에 상이한 지리적 영역들로부터 합리적인 퍼센티지의 미터링 데이터가 존재하는 방식으로 샤딩 함수를 구성한다. 궁극적으로, 하나의 리프 샤드에 저장된 새로운 미터링 데이터가 다른 리프 샤드들로 복제된다. 최종으로, 루트 샤드(151)는 복수의 이벤트 레코드들을 프로세싱하도록 선택된 리프 샤드들 각각에 통지하고(417), 예를 들어, 후속 문의 서비스를 위해 그 메모리에 레코드들의 서브세트를 할당한다.
[0048] 루트 샤드(151)에 의해 식별된 각 리프 샤드(155)에서, 데이터 임포터 모듈은 복수의 이벤트 레코드들 또는 그것의 적어도 서브세트를 수신한다(421). 일부 구현들에서, 루트 샤드(151)에 의해 선택된 상이한 리프 샤드들(155)은 인커밍 미터링 데이터에 대한 독립적인 액세스를 각각 갖는다. 각 새로운 이벤트 레코드에 대해, 데이터 임포터 모듈은 새로운 미터링 데이터 레코드를 생성하고, 데이터 레코드를 압축하며, 압축된 데이터 레코드를 그 메모리에 저장한다(423). 상이한 리프 샤드들은 모든 레코드가 결국 리프 샤드들 중 하나에 의해 저장되도록 이벤트 레코드들을 병렬로 프로세싱한다. 일부 구현들에서, 데이터 임포터 모듈은 프로세싱 결과를 루트 샤드(151)에 리턴하고(425), 프로세싱 결과는 이러한 특정한 리프 샤드에 저장된 이벤트 레코드들의 서브세트를 식별할 수도 있다. 루트 샤드(151)는 예를 들어, 문의의 수신시에, 어느 리프 샤드가 문의에 매칭하는 미터링 데이터를 가질 수 있는지 루트 샤드(151)가 결정할 수 있도록 그것의 샤딩 함수를 업데이트하기 위해 이러한 정보를 사용할 수도 있다. 일부 구현들에서, 데이터 임포터 모듈은 또한, 새롭게 생성된 데이터 레코드들 각각이 데이터 레코드들의 레플리카를 갖도록 설계된 경우에 새롭게 생성된 데이터 레코드들을 다른 리프 샤드들에 전파한다(427).
[0049] 일부 구현들에서, 상이한 리프 샤드들은 분산 측정 서버의 부하 밸런스를 향상시키고 이들 중 하나가 서버의 전체 성능에 악영향을 미치는 보틀넥(bottleneck)인 것을 회피하기 위해 상이한 데이터 소스들 또는 심지어 가정들의 상이한 세트들과 연관된 미터링 데이터의 레플리카들을 가질 수도 있다. 예를 들어, 3개의 리프 샤드들 및 3개의 데이터 소스들이 존재한다는 것을 가정하면, 3개의 데이터 소스들로부터의 미터링 데이터는 아래의 관계표에 따라 3개의 리프 샤드들에 저장될 수도 있다:
리프 샤드 155-1 리프 샤드 155-2 리프 샤드 155-3
데이터 소스 102-1 미터링 데이터 미터링 데이터
데이터 소스 102-2 미터링 데이터 미터링 데이터
데이터 소스 102-3 미터링 데이터 미터링 데이터
[0050] 본 발명의 일 목적은 분산 측정 서버(150)가 얼마나 많은 가정/사람들이 TV 쇼를 시청하고 있는지 및 그들의 지리인구통계적 분포와 같은 문의들에 대한 응답들을 실시간 방식으로 제공하는 것이다. 분산 측정 서버(150)는 수십억의 TV 시청률 미터링 데이터 레코드들을 저장하더라도 클라이언트들(170)로부터의 문의들에 응답함으로써 이러한 목적을 달성할 수 있다.
[0051] 도 4b는 일부 구현들에 따르는, 분산 측정 서버(150)가 클라이언트(170)로부터의 문의를 TV 시청률 미터링 데이터에 어떻게 적용하고 문의 결과를 요청 클라이언트에게 어떻게 리턴하는지를 예시하는 플로우차트이다. 초기에, 서버(150)의 루트 샤드(151)가 클라이언트(170)로부터 문의를 수신한다(431). 클라이언트(170)는 루트 샤드(151)에 API 호(call)를 행함으로써 문의를 제공할 수도 있다. 예를 들어, 특정한 시간 간격(예를 들어, 2011년 7월 1일부터 2011년 7월 2일까지) 동안 특정한 방송국의 특정한 채널(예를 들어, "Broadcaster_Channel_Num")에 대한 시청률 레이팅을 결정하는 문의가 다음과 같이 표현될 수 있다:
Figure 112014030989323-pct00001
[0052] 상기 문의는 문의 결과가 아래와 같은 인-메모리 STB 레코드들(예를 들어, STB_Type)과 연관된 다른 파라미터에 의해 그룹화되도록 더 변경될 수 있다.
Figure 112014030989323-pct00002
[0053] 상기 문의는 문의 결과가 다음과 같은 분산 측정 서버(150)에 저장된 적어도 소정의 양(예를 들어, 50%)의 적용가능한 TV 미터링 데이터를 프로세싱함으로써 유도되도록 더 변경될 수 있다.
Figure 112014030989323-pct00003
[0054] 상기 문의는 문의 결과가 아래와 같은 특정한 시청 타입(예를 들어, VDR-전용)으로 제한되도록 더 변경될 수 있다.
Figure 112014030989323-pct00004
[0055] 문의의 수신시에, 루트 샤드(151)는 문의가 문법적으로 정확하다는 것을 확실히 하기 위해 문의에 대한 새너티 체크(sanity check)를 수행한다(433). 문의가 새너티 체크에 실패하면, 루트 샤드(151)는 에러 메시지를 요구 클라이언트에게 리턴하고 또한 문의에서 식별된 에러(들)를 설명할 수도 있다. 새너티 체크를 패스한 각 문의에 대해, 루트 샤드(151)는 그 문의를 소정의 샤딩 함수에 적용하고, 문의를 프로세싱하기 위해 하나 또는 그 초과의 리프 샤드들을 선택한다(435). 일부 구현들에서, 이러한 단계는 인커밍 미터링 데이터를 핸들링하기 위해 리프 샤드들을 선택하는 단계(415)와 유사하고, 즉, 루트 샤드는 리프 샤드가 문의와 연관된 미터링 데이터를 갖는지를 고려할 뿐만 아니라 상이한 리프 샤드들에서 부하 밸런스들을 고려한다. 예를 들어, 리프 샤드가 문의에서 식별된 TV 방송국에 관한 미터링 데이터를 갖지 않은 경우에, 루트 샤드(151)는 이러한 리프 샤드를 선택하지 않는다. 그러나, 리프 샤드가 미터링 데이터를 갖더라도, 루트 샤드(151)는 리프 샤드의 전체 건강 상태(health condition), 예를 들어, 리프 샤드에서의 현재의 작업 부하가 리프 샤드를 이러한 문의를 핸들링하는 가장 권한이 있는 리프 샤드로 만드는지를 여전히 고려할 필요가 있다. 최종으로, 루트 샤드(151)는 문의를 선택된 리프 샤드들 각각으로 이슈한다(437).
[0056] 특정한 리프 샤드(155)에서, 문의 엔진 모듈은 문의를 수신하고 (441), 그 후, 문의를 충족시키는 데이터 레코드들의 카운트를 결정하기 위해 리프 샤드에 저장된 데이터 레코드에 문의를 적용한다(443). 리프 샤드(155)가 리프 샤드에 저장된 미터링 데이터에 문의를 어떻게 적용하는지의 더욱 상세한 설명이 도 4c와 관련하여 아래에 제공된다. 최종으로, 리프 샤드(155)는 결정된 카운트를 루트 샤드(151)에 리턴한다(445). 도 1b와 관련하여 상기 언급한 바와 같이, 분산 측정 서버(151)는 트리형 계층적 아키텍처에서 구현된다. 상이한 리프 샤드들(155)이 동일한 문의를 병렬로 프로세싱하고, 문의를 충족시키는 미터링 데이터 레코드들의 각각의 결정된 카운트들을 리턴한다. 상이한 리프 샤드들이 미터링 데이터 레코드들의 상이한 세트들을 처리하기 때문에, 두 번 카운팅되는 데이터 레코드는 없고, 최종 문의 결과는 상이한 리프 노드들로부터의 부분 문의 결과들을 집계함으로써 달성된다. 계층적 아키텍처가 어떠한 믹서 샤드를 포함하는지에 의존하여, 집계는 루트 샤드(151) 단독으로 또는 하나 또는 그 이상의 믹서 샤드들(153) 그리고 그 후에 루트 샤드(151)에 의해 수행될 수도 있다.
[0057] 도 4b에 도시되어 있는 바와 같이, 집계 프로세스에서 수반되는 중간 믹서 샤드가 없다는 것을 가정하면, 루트 샤드(151)는 각각의 리프 샤드들로부터 데이터 레코드들의 부분 카운트들을 수신하고(451), 부분 카운트들을 데이터 레코드들을 충족시키는 데이터 레코드들의 총 카운트로 집계한다(453). 일부 구현들에서, 정확한 문의 결과를 제공하기 위해 분산 측정 서버(150)가 모든 가능한 미터링 데이터 레코드를 검사할 필요는 없다. 이것은 클라이언트(170)(예를 들어, 광고자)가 그 또는 그녀의 충족에 충분히 통계적으로 정확한 문의 결과에 더욱 관심이 있는 경우에 특히 그러하다. 일부 구현들에서, 프로세싱할 너무 많은 데이터가 있어서, 클라이언트(170)가 어떠한 문의 결과를 얻기 위해서는 장시간(예를 들어, 수 시간) 대기해야 하기 때문에, 분산 측정 서버(150)가 매우 정밀한 문의 결과를 제공하는 것은 매우 어렵다. 클라이언트들의 상이한 타입들에 의한 필요성을 충족시키기 위해, 분산 측정 서버(150)의 최종 문의 결과 프로세싱 모듈(222)은 리프 샤드들(155)에 의해 리턴된 문의 결과들을 서버(150)에 의해 관리된 전체 미터링 데이터 세트로부터 통계적으로 추정된 문의 결과로 프로젝트하기 위해(455) 통계적 프로젝션 함수를 구현한다. 최종으로, 루트 샤드(151)는 추정된 문의 결과를 요청 클라이언트(170)에게 리턴한다(457).
[0058] 일부 구현들에서, 루트 샤드(151)는 문의를 평가하기 위해 서버(150)내의 리프 샤드들의 클러스터내에서 데이터 샘플의 서브세트를 식별하기 위해 측정 서버(150)의 샤딩 함수, 샤드 건강, 및 부하 정보를 사용한다. 클러스터내의 총 샘플 사이즈를 카운팅한 이후에, 루트 샤드(151)는 도 1b에 도시된 계층적 아키텍처에 의해 정의된 바와 같이 원래의 문의에 따라 모든 다른 리프 샤드들(155)에 걸쳐 클러스터 당 총 샘플 사이즈를 전파한다. 특히, 각 리프 샤드들은 "kc/Kc"와 같은 정의된 각각의 클러스터 가중치를 결정하고, 여기서, kc 및 Kc는 클러스터(c)에서의 (이전에 정의한 바와 같은) 총 샘플 사이즈 및 타겟 인구의 총 사이즈 각각이다. 각 클러스터에 대해, 루트 샤드(151)는 가중된 평균을 결정하고, 가중된 평균을 전체 타겟 인구에 스케일링하며, 총 인구에 대해 함께 스케일링된 값들을 추가한다. 일부 다른 구현들에서, 각 STB에 대해, 리프 샤드는 "kc/Kc"로서 정의된 가중치를 컴퓨팅하고, 여기서, kc 및 Kc는 리프 샤드에서의 샘플 사이즈 및 타겟 인구의 총 사이즈이다. 다음으로, 루트 샤드(151)는 각 리프 샤드의 샘플 사이즈에 기초하여 모드 리프 샤드들 중에서 가중 평균화를 수행한다. 통계적 프로젝션의 다른 구현들에 대해서는, 그 전체가 참조로 각각 통합되는 미국 가특허 출원 제61/501,105호 및 미국 특허 출원 제12/055,906호를 참조.
[0059] 도 4c는 일부 구현들에 따르는, 분산 측정 서버(150)의 리프 샤드(155)가 문의를 충족시키는 TV 시청률 미터링 데이터를 어떻게 식별하는지를 예시하는 플로우차트이다. 리프 샤드(155)는 루트 샤드(151)로부터 문의를 수신한(461). 일부 구현들에서, 문의는 하나 또는 그 초과의 기준들(예를 들어, 가정 필터)을 포함한다. 다음으로, 리프 샤드(155)는 인구통계적 데이터에 기초하여 리프 샤드와 연관된 후보 가정들의 세트를 식별하고(463) 추가 프로세스를 위해 가정들 중 하나를 선택한다(465). 일부 구현들에서, 특정한 문의가 리프 샤드(155)가 동작하는 특정한 컴퓨터에 도달할 때, 이러한 문의를 프로세싱하기 위해 사용된 모든 인구통계적 데이터가 컴퓨터의 메모리에 이미 있다. 리프 샤드(155)는 컴퓨터의 메모리에 저장된 TV 시청률 데이터에 문의를 단지 적용할 필요가 있고, 이것은 문의 프로세스를 빠르게 한다. 선택된 가정에 대해, 리프 샤드들(155)은 이 가정을 가정 필터와 비교한다(467). 예를 들어, 가정 필터가 소정의 세트의 우편번호들(zip codes) 중 하나를 갖는 가정으로 문의를 제한하는 경우에, 우편번호가 그 세트에서 발견되지 않는 가정은 권한이 없는 것으로서 취급되고(469, 아니오), 리프 샤드(155)는 다음의 가정을 프로세싱하도록 이동한다. 그러나, 후보 가정이 가정 필터를 통과하면(469, 예), 리프 샤드(155)는 가정과 연관된 인-메모리 데이터 레코드들의 프로세싱을 시작한다(471). 일부 구현들에서, 리프 샤드(155)는 도 3c에 도시된 바와 같은 가정과 연관된 인-메모리 STB 데이터 레코드를 식별한다. 리프 샤드(155)는 (데이터 레코드가 압축된 경우에) 데이터 레코드를 압축해제하고(473), 문의(즉, 문의와 연관된 기준들)를 압축해제된 데이터 레코드에 적용한다(475). 일반적으로, 이러한 단계로부터는 2개의 가능한 결과들이 존재한다: (i) 데이터 레코드가 문의의 모든 기준들을 충족시키거나 (ii) 데이터 레코드는 문의의 기준들 중 적어도 하나를 통과하지 못한다. 제 1 결과에서, 리프 샤드(155)는 예를 들어, 데이터 레코드들을 충족시키는 카운트를 1씩 증가시킴으로써 문의 결과를 누적한다(477). 제 2 결과에서, 리프 샤드(155)는 레코드를 단순히 스킵하고 최종 데이터 레코드가 프로세싱될 때까지 다음 데이터 레코드의 프로세싱으로 이동한다(479, 예). 이러한 접근방식은 한번에 하나의 레코드를 프로세싱하기 때문에, 매우 적은 메모리를 요구하여, 리프 샤드(155)는 압축된 데이터 레코드들을 저장하는 데 있어서 더 많은 메모리를 세이빙할 수 있다. 그러나, 모든 데이터 레코드들이 메모리에 저장되기 때문에, 이러한 접근방식은 문의 결과를 짧은 기간내에(예를 들어, 수 초내에) 요구 클라이언트에게 리턴하는데 있어서 매우 효율적이다. 최종 가정과 연관된 최종 데이터 레코드를 프로세싱한 이후에(481, 예), 리프 샤드(155)는 문의 결과(예를 들어, 문의를 충족시키는 데이터 레코드들의 카운트)를 (루트 샤드 또는 믹서 샤드일 수도 있는) 계층적 아키텍처에서의 상위 레벨 샤드에 리턴한다(485).
[0060] 다양한 도면들 중 일부가 특정한 순서로 다수의 논리 스테이지들을 예시하지만, 순서에 의존하지 않는 스테이지들이 재순서화될 수도 있고 다른 스테이지들이 조합되거나 발생할 수도 있다. 일부 재순서화 또는 다른 그룹화들이 구체적으로 언급되었지만, 다른 것이 당업자에게는 명백할 것이고 따라서 대안들의 포괄적인 리스트를 제공하지 않는다. 더욱이, 스테이지들이 하드웨어, 펌웨어, 소프트웨어 또는 이들의 임의의 조합에서 구현될 수 있다는 것을 인식해야 한다.
[0061] 설명의 목적을 위해 상술한 설명은 특정 구현들을 참조하여 설명되었다. 그러나, 상기 예시적인 논의들은 포괄적인 것으로 또는 본 발명을 개시된 정밀한 형태로 제한하는 것으로 의도되지 않는다. 다수의 변경물들 및 변동물들이 상기 교시들의 관점에서 가능하다. 구현들은 본 발명의 원리들 및 그 실질적인 애플리케이션들을 최상으로 설명하기 위해 선택되고 설명되어서, 당업자가 본 발명 및 다양한 구현들을 예상되는 특정한 사용에 적합한 것으로 다양한 변경물들과 최상으로 활용할 수 있게 한다. 구현들은 첨부한 청구항들의 사상 및 범위내에 있는 대안물들, 변경물들 및 등가물들을 포함한다. 다수의 특정한 상세사항들은 본원에 제공된 본 발명의 완전한 이해를 제공하기 위해 설명된다. 그러나, 본 발명이 이들 특정한 상세사항들 없이 실시될 수도 있다는 것이 당업자에게 명백할 것이다. 다른 경우들에서, 널리 공지된 방법들, 절차들, 컴포넌트들, 및 회로들은 구현들의 양태들을 불필요하게 모호하게 하지 않도록 상세히 설명하지 않았다.

Claims (30)

  1. 컴퓨터에서 구현되는 방법으로서,
    다중의 컴퓨터들을 포함하는 분산 컴퓨터 시스템 ― 각 컴퓨터는 하나 또는 그 초과의 프로세서들, 및 다중의 이벤트 레코드들을 저장하는 메모리를 갖고, 각 이벤트 레코드는 소정의 시간 간격을 포함함 ―에서:
    클라이언트로부터 문의를 수신하는 단계 ― 상기 문의는 하나 또는 그 초과의 소정의 기준들을 포함하고, 상기 기준들 중 하나는 소정의 기간을 특정함 ―;
    상기 하나 또는 그 초과의 소정의 기준들을 충족시킬 수 있는 선택된 컴퓨터들상에 적어도 소정의 수의 후보 이벤트 레코드들을 갖는 것에 기초하여, 그리고 상기 하나 또는 그 초과의 소정의 기준들 중 적어도 하나를 소정의 샤딩 함수(sharding function)에 적용함으로써 하나 또는 그 초과의 컴퓨터들을 동적으로 선택하는 단계 ― 상기 하나 또는 그 초과의 컴퓨터들을 동적으로 선택하는 단계는, 상기 하나 또는 그 초과의 소정의 기준들을 만족하는 이벤트 레코드들을 갖는 컴퓨터 및 상기 이벤트 레코드들의 동일한 세트의 레플리카(replica)들을 갖는 적어도 하나의 컴퓨터를 선택하는 단계, 및 상기 문의를 프로세싱하기 전에, 상기 이벤트 레코드들을 갖는 상기 컴퓨터와 상기 레플리카들을 갖는 상기 적어도 하나의 컴퓨터 중 상대적으로 더 낮은 작업부하를 갖는 컴퓨터를 선택하는 단계를 포함함 ―;
    상기 선택된 컴퓨터들 각각에서:
    상기 컴퓨터의 상기 메모리에 저장된 다수의 후보 이벤트 레코드들을 식별하는 단계; 및
    상기 식별된 후보 이벤트 레코드들 중에서, 상기 하나 또는 그 초과의 소정의 기준들을 충족시키는 권한이 있는(qualified) 이벤트 레코드들의 카운트를 결정하는 단계 ― 각 권한이 있는 이벤트 레코드는 상기 문의와 연관된 상기 소정의 기간과 적어도 부분적으로 오버랩하는 소정의 시간 간격을 가짐 ―;
    상기 선택된 컴퓨터들에 의해 결정된 권한이 있는 이벤트 레코드들의 각각의 카운트들을 집계하는 단계;
    상기 권한이 있는 이벤트 레코드들의 집계된 카운트를 상기 분산 컴퓨터 시스템상의 권한이 있는 이벤트 레코드들의 추정된 총 카운트에 통계적으로 프로젝트(project)하는 단계 ― 상기 권한이 있는 이벤트 레코드들의 추정된 총 카운트는 연관된 신뢰 레벨을 가짐 ―; 및
    요청한 클라이언트에게 문의 결과를 리턴하는 단계 ― 상기 문의 결과는 상기 권한이 있는 이벤트 레코드들의 추정된 총 카운트 및 상기 추정된 총 카운트의 연관된 신뢰 레벨을 포함함 ―;
    를 포함하는, 컴퓨터에서 구현되는 방법.
  2. 제 1 항에 있어서,
    상기 다중의 컴퓨터들은 하나의 루트 샤드(root shard) 및 다중의 리프 샤드들(leaf shards)을 포함하는 소정의 계층적 아키텍처로 구성되어서, 상기 루트 샤드로서 동작하는 컴퓨터는, 상기 문의를 수신하는 것, 및 상기 하나 또는 그 초과의 소정의 기준들 중 적어도 하나를 상기 소정의 샤딩 함수에 적용함으로써 상기 리프 샤드들로서 하나 또는 그 초과의 컴퓨터들을 선택하는 것에 책임이 있는, 컴퓨터에서 구현되는 방법.
  3. 제 1 항에 있어서,
    상기 소정의 샤딩 함수는, 각각의 데이터 소스로부터 발생하는 이벤트 레코드들을 저장하는 하나 또는 그 초과의 소정의 컴퓨터들이 존재하도록 상기 이벤트 레코드들에 기여하는 복수의 데이터 소스들과 상기 다중의 컴퓨터들 사이의 매핑 관계를 정의하는, 컴퓨터에서 구현되는 방법.
  4. 제 1 항에 있어서,
    상기 소정의 기준들 중 하나는, 권한이 있는 이벤트 기록이 상기 소정의 기간과 적어도 부분적으로 오버랩하는 소정의 시간 간격을 갖는 것을 요구하는, 컴퓨터에서 구현되는 방법.
  5. 제 1 항에 있어서,
    상기 소정의 기준들 중 하나는, 상기 문의 결과를 리턴하기 이전에 최소 수의 이벤트 레코드들이 상기 분산 컴퓨터 시스템에 의해 검사되는 것을 요구하는, 컴퓨터에서 구현되는 방법.
  6. 제 1 항에 있어서,
    상기 하나 또는 그 초과의 소정의 기준들 중 하나를 상기 소정의 샤딩 함수에 적용하기 이전에 상기 하나 또는 그 초과의 소정의 기준들에 대해 새너티 체크(sanity check)를 수행하는 단계를 더 포함하는, 컴퓨터에서 구현되는 방법.
  7. 제 1 항에 있어서,
    상기 소정의 샤딩 함수에 적용된 상기 하나 또는 그 초과의 소정의 기준들 중 적어도 하나는 상기 소정의 기간과 관련되지 않는, 컴퓨터에서 구현되는 방법.
  8. 삭제
  9. 제 1 항에 있어서,
    상기 이벤트 레코드들은 복수의 가정(household)들로부터 수집된 TV 시청률 데이터인, 컴퓨터에서 구현되는 방법.
  10. 제 9 항에 있어서,
    각 이벤트 레코드는 채널 정보 및 한 쌍의 이벤트 시작 시간 및 이벤트 종료 시간을 포함하고, 상기 이벤트 시작 시간 및 이벤트 종료 시간은 가정이 채널의 시청을 시작하는 시간과 상기 가정이 상기 채널의 시청을 중지하는 시간을 나타내는, 컴퓨터에서 구현되는 방법.
  11. 제 9 항에 있어서,
    상기 이벤트 레코드들은 특정한 가정으로부터 수집된 상기 TV 시청률 데이터 모두가 하나의 컴퓨터상에 저장되도록 상기 컴퓨터들 중에 할당되는, 컴퓨터에서 구현되는 방법.
  12. 제 9 항에 있어서,
    상기 이벤트 레코드들은, 특정한 TV 방송국과 연관되는 복수의 가정들로부터 수집된 상기 TV 시청률 데이터가 다중의 컴퓨터들 중에서 스플릿되고 상기 다중의 컴퓨터들 중 특정한 하나에서의 상기 TV 시청률 데이터가 상기 TV 방송국과 연관된 상기 TV 시청률 데이터 모두의 소정의 퍼센티지 이하이도록 상기 컴퓨터들 중에 할당되는, 컴퓨터에서 구현되는 방법.
  13. 제 9 항에 있어서,
    상기 소정의 기준들 중 하나는 권한이 있는 이벤트 레코드가 가정들의 소정의 세트로부터 수집되는 것을 요구하고,
    상기 식별된 후보 이벤트 레코드들 중에서, 상기 하나 또는 그 초과의 소정의 기준들을 충족시키는 권한이 있는 이벤트 레코드들의 카운트를 결정하는 단계는,
    제 1 가정으로부터 수집된 후보 이벤트 레코드들의 세트를 식별하는 단계;
    상기 제 1 가정이 상기 가정들의 소정의 세트 중 하나이면, 상기 후보 이벤트 레코드들의 세트 중 어느 하나가 상기 문의와 연관된 상기 소정의 기간과 적어도 부분적으로 오버랩하는 소정의 시간 간격을 갖는지를 결정하는 단계; 및
    상기 제 1 가정이 상기 가정들의 소정의 세트 중 하나가 아니면, 제 2 가정으로 진행하고 상기 선택된 컴퓨터와 연관된 최종 가정 전까지 상기 식별하는 단계 및 상기 결정하는 단계를 반복하는 단계를 더 포함하는, 컴퓨터에서 구현되는 방법.
  14. 제 9 항에 있어서,
    상기 선택된 컴퓨터에서의 권한이 있는 이벤트 레코드들의 카운트는, 상기 컴퓨터가 하나의 가정과 연관된 다중의 권한이 있는 이벤트 레코드들을 갖는 경우에 1씩 증가하는, 컴퓨터에서 구현되는 방법.
  15. 제 9 항에 있어서,
    상기 복수의 가정들 각각은 동일한 컴퓨터상에 상기 가정으로부터 수집된 상기 이벤트 레코드들과 저장되는 연관된 인구통계적 데이터를 갖고, 상기 소정의 기준들 중 적어도 하나는 인구통계적 데이터가 하나 또는 그 초과의 소정의 조건들을 충족시키는 가정으로부터 권한이 있는 이벤트 레코드가 수집되는 것을 요구하는, 컴퓨터에서 구현되는 방법.
  16. 제 9 항에 있어서,
    상기 복수의 가정들 각각은 연관된 가중 팩터를 갖고, 상기 식별된 후보 이벤트 레코드들 중에서, 권한이 있는 이벤트 레코드들의 카운트를 결정하는 단계는 상기 권한이 있는 이벤트 레코드들이 수집되는 상기 가정들의 각각의 가중 팩터들에 따라 상기 권한이 있는 이벤트 레코드들의 카운트를 변경하는 단계를 더 포함하는, 컴퓨터에서 구현되는 방법.
  17. 제 9 항에 있어서,
    상기 소정의 수의 후보 이벤트 레코드들은 상기 분산 컴퓨터 시스템상의 총 후보 이벤트 레코드들의 서브세트이고,
    상기 권한이 있는 이벤트 레코드들의 집계된 카운트를 통계적으로 프로젝트하는 단계는,
    상기 소정의 수의 후보 이벤트 레코드들과 상기 분산 컴퓨터 시스템상의 상기 총 후보 이벤트 레코드들 사이의 비율을 결정하는 단계; 및
    상기 권한이 있는 이벤트 레코드들의 상기 집계된 카운트를 상기 비율로 승산(multiply)하는 단계를 더 포함하는, 컴퓨터에서 구현되는 방법.
  18. 분산 컴퓨터 시스템으로서,
    컴퓨터 네트워크에 접속된 다중의 컴퓨터들 ― 각 컴퓨터는 하나 또는 그 초과의 프로세서들, 및 하나 또는 그 초과의 프로그램들 및 다중의 이벤트 레코드들을 저장하는 메모리를 갖고, 각 이벤트 레코드는 소정의 시간 간격을 포함함 ―;
    을 포함하고,
    상기 다중의 컴퓨터들은 상기 하나 또는 그 초과의 프로그램들을 실행할 때,
    클라이언트로부터 문의를 수신하는 동작 ― 상기 문의는 하나 또는 그 초과의 소정의 기준들을 포함하고, 상기 기준들 중 하나는 소정의 기간을 특정함 ―;
    상기 하나 또는 그 초과의 소정의 기준들을 충족시킬 수 있는 선택된 컴퓨터들상에 적어도 소정의 수의 후보 이벤트 레코드들을 갖는 것에 기초하여, 그리고 상기 하나 또는 그 초과의 소정의 기준들 중 적어도 하나를 소정의 샤딩 함수에 적용함으로써 하나 또는 그 초과의 컴퓨터들을 동적으로 선택하는 동작 ― 상기 하나 또는 그 초과의 컴퓨터들을 동적으로 선택하는 동작은, 상기 하나 또는 그 초과의 소정의 기준들을 만족하는 이벤트 레코드들을 갖는 컴퓨터 및 상기 이벤트 레코드들의 동일한 세트의 레플리카들을 갖는 적어도 하나의 컴퓨터를 선택하는 동작, 및 상기 문의를 프로세싱하기 전에, 상기 이벤트 레코드들을 갖는 상기 컴퓨터와 상기 레플리카들을 갖는 상기 적어도 하나의 컴퓨터 중 상대적으로 더 낮은 작업부하를 갖는 컴퓨터를 선택하는 동작을 포함함 ―;
    상기 선택된 컴퓨터들 각각에서:
    상기 컴퓨터의 상기 메모리에 저장된 다수의 후보 이벤트 레코드들을 식별하는 동작; 및
    상기 식별된 후보 이벤트 레코드들 중에서, 상기 하나 또는 그 초과의 소정의 기준들을 충족시키는 권한이 있는 이벤트 레코드들의 카운트를 결정하는 동작 ― 각 권한이 있는 이벤트 레코드는 상기 문의와 연관된 상기 소정의 기간과 적어도 부분적으로 오버랩하는 소정의 시간 간격을 가짐 ―;
    상기 선택된 컴퓨터들에 의해 결정된 권한이 있는 이벤트 레코드들의 각각의 카운트들을 집계하는 동작;
    상기 권한이 있는 이벤트 레코드들의 집계된 카운트를 상기 분산 컴퓨터 시스템상의 권한이 있는 이벤트 레코드들의 추정된 총 카운트에 통계적으로 프로젝트하는 동작 ― 상기 권한이 있는 이벤트 레코드들의 추정된 총 카운트는 연관된 신뢰 레벨을 가짐 ―; 및
    요청한 클라이언트에게 문의 결과를 리턴하는 동작 ― 상기 문의 결과는 상기 권한이 있는 이벤트 레코드들의 추정된 총 카운트 및 상기 추정된 총 카운트의 연관된 신뢰 레벨을 포함함 ―;
    을 수행하도록 구성되는, 분산 컴퓨터 시스템.
  19. 제 18 항에 있어서,
    상기 다중의 컴퓨터들은 하나의 루트 샤드 및 다중의 리프 샤드들을 포함하는 소정의 계층적 아키텍처로 구성되어서, 상기 루트 샤드로서 동작하는 컴퓨터는 상기 문의를 수신하는 것, 및 상기 하나 또는 그 초과의 소정의 기준들 중 적어도 하나를 상기 소정의 샤딩 함수에 적용함으로써 상기 리프 샤드들로서 하나 또는 그 초과의 컴퓨터들을 선택하는 것에 책임이 있는, 분산 컴퓨터 시스템.
  20. 제 18 항에 있어서,
    상기 소정의 샤딩 함수는, 각각의 데이터 소스로부터 발생하는 이벤트 레코드들을 저장하는 하나 또는 그 초과의 소정의 컴퓨터들이 존재하도록 상기 이벤트 레코드들에 기여하는 복수의 데이터 소스들과 상기 다중의 컴퓨터들 사이의 매핑 관계를 정의하는, 분산 컴퓨터 시스템.
  21. 삭제
  22. 제 18 항에 있어서,
    상기 이벤트 레코드들은 복수의 가정들로부터 수집된 TV 시청률 데이터인, 분산 컴퓨터 시스템.
  23. 제 22 항에 있어서,
    상기 이벤트 레코드들은 특정한 가정으로부터 수집된 상기 TV 시청률 데이터 모두가 하나의 컴퓨터상에 저장되도록 상기 컴퓨터들 중에 할당되는, 분산 컴퓨터 시스템.
  24. 제 22 항에 있어서,
    상기 선택된 컴퓨터에서의 권한이 있는 이벤트 레코드들의 카운트는, 상기 컴퓨터가 하나의 가정과 연관된 다중의 권한이 있는 이벤트 레코드들을 갖는 경우에 1씩 증가하는, 분산 컴퓨터 시스템.
  25. 제 22 항에 있어서,
    상기 복수의 가정들 각각은 동일한 컴퓨터상에 상기 가정으로부터 수집된 상기 이벤트 레코드들과 저장되는 연관된 인구통계적 데이터를 갖고, 상기 소정의 기준들 중 적어도 하나는 인구통계적 데이터가 하나 또는 그 초과의 소정의 조건들을 충족시키는 가정으로부터 권한이 있는 이벤트 레코드가 수집되는 것을 요구하는, 분산 컴퓨터 시스템.
  26. 다중의 컴퓨터들을 포함하는 분산 컴퓨터 시스템에 의한 실행을 위해 구성된 하나 또는 그 초과의 프로그램들을 저장하는 비일시적 컴퓨터 판독가능 저장 매체로서,
    각 컴퓨터는 하나 또는 그 초과의 프로세서들, 및 다중의 이벤트 레코드들을 저장하는 메모리를 갖고, 각 이벤트 레코드는 소정의 시간 간격을 포함하고,
    상기 하나 또는 그 초과의 프로그램들은,
    클라이언트로부터 문의를 수신하는 명령 ― 상기 문의는 하나 또는 그 초과의 소정의 기준들을 포함하고, 상기 기준들 중 하나는 소정의 기간을 특정함 ―;
    상기 하나 또는 그 초과의 소정의 기준들을 충족시킬 수 있는 선택된 컴퓨터들상에 적어도 소정의 수의 후보 이벤트 레코드들을 갖는 것에 기초하여, 그리고 상기 하나 또는 그 초과의 소정의 기준들 중 적어도 하나를 소정의 샤딩 함수에 적용함으로써 하나 또는 그 초과의 컴퓨터들을 동적으로 선택하는 명령 ― 상기 하나 또는 그 초과의 컴퓨터들을 동적으로 선택하는 명령은, 상기 하나 또는 그 초과의 소정의 기준들을 만족하는 이벤트 레코드들을 갖는 컴퓨터 및 상기 이벤트 레코드들의 동일한 세트의 레플리카들을 갖는 적어도 하나의 컴퓨터를 선택하는 명령, 및 상기 문의를 프로세싱하기 전에, 상기 이벤트 레코드들을 갖는 상기 컴퓨터와 상기 레플리카들을 갖는 상기 적어도 하나의 컴퓨터 중 상대적으로 더 낮은 작업부하를 갖는 컴퓨터를 선택하는 명령을 포함함 ―;
    상기 선택된 컴퓨터들 각각에서:
    상기 컴퓨터의 상기 메모리에 저장된 다수의 후보 이벤트 레코드들을 식별하는 명령; 및
    상기 식별된 후보 이벤트 레코드들 중에서, 상기 하나 또는 그 초과의 소정의 기준들을 충족시키는 권한이 있는 이벤트 레코드들의 카운트를 결정하는 명령 ― 각 권한이 있는 이벤트 레코드는 상기 문의와 연관된 상기 소정의 기간과 적어도 부분적으로 오버랩하는 소정의 시간 간격을 가짐 ―;
    상기 선택된 컴퓨터들에 의해 결정된 권한이 있는 이벤트 레코드들의 각각의 카운트들을 집계하는 명령;
    상기 권한이 있는 이벤트 레코드들의 집계된 카운트를 상기 분산 컴퓨터 시스템상의 권한이 있는 이벤트 레코드들의 추정된 총 카운트에 통계적으로 프로젝트하는 명령 ― 상기 권한이 있는 이벤트 레코드들의 추정된 총 카운트는 연관된 신뢰 레벨을 가짐 ―; 및
    요청한 클라이언트에게 문의 결과를 리턴하는 명령 ― 상기 문의 결과는 상기 권한이 있는 이벤트 레코드들의 추정된 총 카운트 및 상기 추정된 총 카운트의 연관된 신뢰 레벨을 포함함 ―;
    을 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  27. 제 26 항에 있어서,
    상기 다중의 컴퓨터들은 하나의 루트 샤드 및 다중의 리프 샤드들을 포함하는 소정의 계층적 아키텍처로 구성되어서, 상기 루트 샤드로서 동작하는 컴퓨터는 상기 문의를 수신하는 것, 및 상기 하나 또는 그 초과의 소정의 기준들 중 적어도 하나를 상기 소정의 샤딩 함수에 적용함으로써 상기 리프 샤드들로서 하나 또는 그 초과의 컴퓨터들을 선택하는 것에 책임이 있는, 비일시적 컴퓨터 판독가능 저장 매체.
  28. 제 26 항에 있어서,
    상기 소정의 샤딩 함수는, 각각의 데이터 소스로부터 발생하는 이벤트 레코드들을 저장하는 하나 또는 그 초과의 소정의 컴퓨터들이 존재하도록 상기 이벤트 레코드들에 기여하는 복수의 데이터 소스들과 상기 다중의 컴퓨터들 사이의 매핑 관계를 정의하는, 비일시적 컴퓨터 판독가능 저장 매체.
  29. 제 26 항에 있어서,
    상기 이벤트 레코드들은 복수의 가정들로부터 수집된 TV 시청률 데이터인, 비일시적 컴퓨터 판독가능 저장 매체.
  30. 제 29 항에 있어서,
    상기 이벤트 레코드들은 특정한 가정으로부터 수집된 상기 TV 시청률 데이터 모두가 하나의 컴퓨터상에 저장되도록 상기 컴퓨터들 중에 할당되는, 비일시적 컴퓨터 판독가능 저장 매체.
KR1020147008570A 2011-08-31 2012-08-28 Tv 시청률 레이팅의 효율적이고 정확한 추정치를 제공하는 방법 및 시스템 KR101952674B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201161529801P 2011-08-31 2011-08-31
US61/529,801 2011-08-31
PCT/US2012/052716 WO2013033122A1 (en) 2011-08-31 2012-08-28 Method and system for providing efficient and accurate estimates of tv viewership ratings

Publications (2)

Publication Number Publication Date
KR20140062504A KR20140062504A (ko) 2014-05-23
KR101952674B1 true KR101952674B1 (ko) 2019-02-27

Family

ID=47756815

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147008570A KR101952674B1 (ko) 2011-08-31 2012-08-28 Tv 시청률 레이팅의 효율적이고 정확한 추정치를 제공하는 방법 및 시스템

Country Status (5)

Country Link
US (1) US9197929B2 (ko)
EP (1) EP2752019B1 (ko)
KR (1) KR101952674B1 (ko)
CN (1) CN103891299B (ko)
WO (1) WO2013033122A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012174406A1 (en) 2011-06-15 2012-12-20 University Of Washington Methods and systems for haptic rendering and creating virtual fixtures from point clouds
US20140320392A1 (en) 2013-01-24 2014-10-30 University Of Washington Through Its Center For Commercialization Virtual Fixtures for Improved Performance in Human/Autonomous Manipulation Tasks
US10445769B2 (en) * 2013-12-24 2019-10-15 Google Llc Systems and methods for audience measurement
US20150227950A1 (en) * 2014-02-13 2015-08-13 Rentrak Corporation Systems and methods for ascertaining network market subscription coverage
WO2015134391A1 (en) 2014-03-03 2015-09-11 University Of Washington Haptic virtual fixture tools
US9965550B2 (en) * 2014-07-03 2018-05-08 Ca, Inc. Estimating full text search results of log records
US10600076B2 (en) 2014-08-14 2020-03-24 Google Llc Systems and methods for obfuscated audience measurement
CN104202627B (zh) * 2014-09-20 2017-06-20 西安科技大学 一种基于云数据处理的实时数字电视交互管理系统
US10834449B2 (en) 2016-12-31 2020-11-10 The Nielsen Company (Us), Llc Methods and apparatus to associate audience members with over-the-top device media impressions
US10467433B2 (en) * 2017-03-17 2019-11-05 Mediasift Limited Event processing system
US11210317B2 (en) * 2019-01-16 2021-12-28 Walmart Apollo, Llc System and method for high-availability in a distributed computing environment including multiple availability zones
JP7322283B2 (ja) * 2019-09-03 2023-08-07 グーグル エルエルシー 安全な識別情報検索のためのシステムおよび方法
JP7277351B2 (ja) * 2019-12-23 2023-05-18 Tvs Regza株式会社 視聴履歴解析装置および視聴履歴解析装置プログラム
US11949932B2 (en) * 2021-05-25 2024-04-02 The Nielsen Company (Us), Llc Synthetic total audience ratings
CN116170618B (zh) * 2022-12-29 2023-11-14 北京奇树有鱼文化传媒有限公司 播放量计算的方法、装置、电子设备及可读存储介质
US11743524B1 (en) 2023-04-12 2023-08-29 Recentive Analytics, Inc. Artificial intelligence techniques for projecting viewership using partial prior data sources

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100161492A1 (en) * 2008-04-14 2010-06-24 Tra, Inc. Analyzing return on investment of advertising campaigns using cross-correlation of multiple data sources

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002158627A (ja) 2000-11-16 2002-05-31 Sony Corp 放送受信機、視聴情報算出方法および視聴情報算出装置
JP2002324025A (ja) 2001-02-20 2002-11-08 Sony Computer Entertainment Inc 視聴率調査装置及び方法、ネットワーク配信番組受信装置及び受信方法、視聴率調査システム、視聴率調査プログラムを記録した記録媒体、ネットワーク配信番組受信装置の制御プログラムを記録した記録媒体、視聴率調査プログラム及びネットワーク配信番組受信装置の制御プログラム
US20040049788A1 (en) * 2002-09-10 2004-03-11 Canon Kabushiki Kaisha Receiving apparatus, receiving method, and method of predicting audience rating
US8582584B2 (en) 2005-10-04 2013-11-12 Time Warner Cable Enterprises Llc Self-monitoring and optimizing network apparatus and methods
US20070204298A1 (en) * 2006-02-17 2007-08-30 Shanks David E Dynamic viewership rating system
JP2007312070A (ja) * 2006-05-18 2007-11-29 Toshiba Corp 視聴情報収集サーバ、視聴情報収集方法、および視聴情報送信プログラム
US8930989B2 (en) * 2007-08-20 2015-01-06 AdsVantage System and method for providing supervised learning to associate profiles in video audiences
US7729940B2 (en) * 2008-04-14 2010-06-01 Tra, Inc. Analyzing return on investment of advertising campaigns by matching multiple data sources
US9094140B2 (en) 2008-04-28 2015-07-28 Time Warner Cable Enterprises Llc Methods and apparatus for audience research in a content-based network

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100161492A1 (en) * 2008-04-14 2010-06-24 Tra, Inc. Analyzing return on investment of advertising campaigns using cross-correlation of multiple data sources

Also Published As

Publication number Publication date
CN103891299A (zh) 2014-06-25
EP2752019A1 (en) 2014-07-09
EP2752019A4 (en) 2015-07-15
EP2752019B1 (en) 2019-12-11
CN103891299B (zh) 2017-05-24
US20150089522A1 (en) 2015-03-26
WO2013033122A1 (en) 2013-03-07
US9197929B2 (en) 2015-11-24
KR20140062504A (ko) 2014-05-23

Similar Documents

Publication Publication Date Title
KR101952674B1 (ko) Tv 시청률 레이팅의 효율적이고 정확한 추정치를 제공하는 방법 및 시스템
KR101903752B1 (ko) Tv 시청률 데이터를 수집하고 관리하기 위한 방법 및 시스템
JP6408744B2 (ja) 情報処理装置、情報処理方法、情報処理システム及びプログラム
US8843952B2 (en) Determining TV program information based on analysis of audio fingerprints
KR102105313B1 (ko) 셋탑 박스에서 오디오 핑거프린트들의 시퀀스 생성
US9113203B2 (en) Generating a sequence of audio fingerprints at a set top box
US10009241B1 (en) Monitoring the performance of a content player
US9769508B2 (en) Method and system for correlating TV broadcasting information with TV panelist status information
US20050278731A1 (en) System and method of anonymous settop event collection and processing in a multimedia network
US8352997B2 (en) System and method of monitoring blackout events
US9521178B1 (en) Dynamic bandwidth thresholds
AU2014386191A1 (en) Methods and apparatus to compensate impression data for misattribution and/or non-coverage by a database proprietor
CN101527812A (zh) 网络电视系统中用户事件信息和收视信息的自动统计方法
EP4078986A1 (en) Dynamic content insertion on a user-by-user basis
AU2012258513A1 (en) Highly scalable audience measurement system with client event pre-processing
US20160100207A1 (en) Profile-based content variation
US20080148326A1 (en) Method and System for Obtaining Viewing Information in Broadband Video System
US20200275146A1 (en) Viewing Data
CN110996114A (zh) 一种直播调度方法、装置、电子设备和存储介质

Legal Events

Date Code Title Description
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant