KR20140026351A - 수신 디바이스에서 데이터베이스를 업데이트하기 위한 방법 및 장치 - Google Patents

수신 디바이스에서 데이터베이스를 업데이트하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20140026351A
KR20140026351A KR1020137017309A KR20137017309A KR20140026351A KR 20140026351 A KR20140026351 A KR 20140026351A KR 1020137017309 A KR1020137017309 A KR 1020137017309A KR 20137017309 A KR20137017309 A KR 20137017309A KR 20140026351 A KR20140026351 A KR 20140026351A
Authority
KR
South Korea
Prior art keywords
event
database
received
data
identifier
Prior art date
Application number
KR1020137017309A
Other languages
English (en)
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 KR20140026351A publication Critical patent/KR20140026351A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • 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/435Processing of additional data, e.g. decrypting of additional data, reconstructing software from modules extracted from the transport stream
    • 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/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4332Content storage operation, e.g. storage operation in response to a pause request, caching operations by placing content in organized collections, e.g. local EPG data repository
    • 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/44231Monitoring of peripheral device or external card, e.g. to detect processing problems in a handheld device or the failure of an external recording device
    • 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/4424Monitoring of the internal components or processes of the client device, e.g. CPU or memory load, processing speed, timer, counter or percentage of the hard disk space used
    • 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/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • H04N21/4435Memory management
    • 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/45Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
    • H04N21/462Content or additional data management, e.g. creating a master electronic program guide from data received from the Internet and a Head-end, controlling the complexity of a video stream by scaling the resolution or bit-rate based on the client capabilities
    • H04N21/4622Retrieving content or additional data from different sources, e.g. from a broadcast channel and the Internet

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Circuits Of Receivers In General (AREA)
  • Television Signal Processing For Recording (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

디바이스 상에서 미디어 컨텐츠 데이터베이스를 관리하기 위한 방법 및 장치가 설명된다. 본 방법 및 장치는, 미디어 컨텐츠에 연관된 이벤트 데이터를 수신하는 단계(525)로서, 이벤트 식별자를 포함하는 이벤트 데이터를 수신하는 단계(525), 이벤트 식별자가 메모리에 이미 저장된 이벤트 데이터에 대한 이벤트 식별자와 일치하는지의 여부를 결정하는 단계(540), 수신된 이벤트 식별자가, 저장된 이벤트 데이터에 대한 이벤트 식별자와 일치하지 않는 경우, 수신된 이벤트 데이터를 이벤트 데이터에 추가하는 단계(750), 및 수신된 이벤트 식별자가, 저장된 이벤트 데이터에 대한 이벤트 식별자와 일치하는 경우, 저장된 이벤트 데이터를 수신된 이벤트 데이터로 대체하는 단계(765)를 포함한다.

Description

수신 디바이스에서 데이터베이스를 업데이트하기 위한 방법 및 장치{METHOD AND APPARATUS FOR UPDATING A DATABASE IN A RECEIVING DEVICE}
본 출원은 2011년 1월 6일에 출원되어 "수신 디바이스에서 데이터베이스를 검색하기 위한 방법 및 장치(Method and Apparatus for Searching a Database in a Receiving Device)"라는 제목이 부여된 가특허 출원번호 제61/430,271호와, 2011년 1월 6일에 출원되어 "수신 디바이스에서 데이터베이스를 업데이트하기 위한 방법 및 장치(Method and Apparatus for Updating a Database in a Receiving Device)"라는 제목이 부여된 가특허 출원번호 제61/430,287호로부터의 우선권을 주장하는 바이다.
본 개시 사항은 일반적으로 미디어 컨텐츠를 수신 및 관리하는 시스템들에 관한 것이며, 보다 상세하게는, 수신 디바이스에서 미디어 컨텐츠의 데이터베이스를 수신, 관리, 업데이트, 및 검색하기 위한 방법 및 장치에 관한 것이다.
브로드캐스트 컨텐츠 서비스 제공자들 및 인터넷 서비스 제공자들은 각각의 컨텐츠 전달 시스템들 내에서의 시너지 효과를 계속해서 찾고 있다. 많은 새로운 네트워크 연결되는 디바이스들은 이제 미디어 컨텐츠 또는 서비스의 제공자로부터의 고유한 기능들에 기초하여 미디어 컨텐츠를 네비게이션 및 검색하기 위한 능력을 포함한다. 새로운 네트워크 연결되는 디바이스들, 특히 가정에서 사용되는 디바이스들은 브로드캐스트-중심 및 인터넷 네트워크-중심 디바이스들에 연관된 작동들 및 기능들을 병합하고 있다. 이러한 새로운 네트워크 연결되는 디바이스들은 텔레비전들, 셋톱 박스들, 홈 게이트웨이들, 홈 컴퓨터 미디어 스테이션들, 및 태블릿들 등을 포함한다. 이러한 새로운 네트워크 연결되는 디바이스들은 신호 수신, 미디어 기록, 홈 네트워킹, 및 인터넷 연결 기능들을 더 제공한다.
하지만, 브로드캐스트-중심 디바이스들과 인터넷-중심 디바이스들 사이의 작동 상의 차이들은 문제로 남는다. 브로드캐스트 및 인터넷 기반의 미디어 기능들이 단일의 디바이스에 병합됨에 따라, 새로운 명령, 제어, 및 컨텐츠 관리 사안들이 발달되었다. 예를 들어, 한 디바이스에서 미디어 컨텐츠에 대한 네비게이션 및 사용을 동적으로 액세스, 업데이트, 및 제어하기 위한 능력은, 특히 네트워크가 미디어 컨텐츠에 대한 다수의 소스들, 뿐만 아니라 다수의 서비스들 및 제공자들을 포함할 때, 문제로 남는다. 네트워크에 연결된 수신 디바이스에서 미디어 컨텐츠의 네비게이션, 관리, 검색, 액세스, 및 제어를 가능하게 하는 메커니즘이 요구된다. 특히, 미디어 컨텐츠 데이터베이스 구조에서 업데이트 및 검색의 관리를 개선시키는 메커니즘이 요구된다.
네트워크에 연결된 수신 디바이스에서 미디어 컨텐츠의 네비게이션, 관리, 검색, 액세스, 및 제어를 가능하게 하는 메커니즘이 요구된다. 특히, 미디어 컨텐츠 데이터베이스 구조에서 업데이트 및 검색의 관리를 개선시키는 메커니즘이 요구된다. 따라서, 본 발명은 이러한 요구 사항을 해결하는 방법 및 장치를 제공하고자 한다.
본 개시 사항의 한 양상에 따르면, 한 디바이스에서 미디어 컨텐츠 데이터베이스를 관리, 업데이트, 및 검색하기 위한 방법이 설명된다. 본 방법은, 미디어 컨텐츠에 연관된 이벤트 데이터를 수신하는 단계로서, 이벤트 데이터는 이벤트 식별자를 포함하는, 이벤트 데이터를 수신하는 단계, 이벤트 식별자가, 메모리에 이미 저장된 이벤트 데이터에 대한 이벤트 식별자와 일치하는지의 여부를 결정하는 단계, 수신된 이벤트 식별자가, 저장된 이벤트 데이터에 대한 이벤트 식별자와 일치하지 않는 경우, 수신된 이벤트 데이터를 이벤트 데이터에 추가하는 단계, 및 수신된 이벤트 식별자가, 저장된 이벤트 데이터에 대한 이벤트 식별자와 일치하는 경우, 저장된 이벤트 데이터를 수신된 이벤트 데이터로 대체하는 단계를 포함한다.
본 개시 사항의 다른 양상에 따르면, 한 디바이스에서 미디어 컨텐츠 데이터베이스를 관리, 업데이트, 및 검색하기 위한 장치가 설명된다. 본 장치는, 미디어 컨텐츠에 연관된 이벤트 데이터를 수신하기 위한 수단으로서, 이벤트 데이터는 이벤트 식별자를 포함하는, 이벤트 데이터 수신 수단, 이벤트 식별자가, 메모리에 이미 저장된 이벤트 데이터에 대한 이벤트 식별자와 일치하는지의 여부를 결정하기 위한 수단, 수신된 이벤트 식별자가, 저장된 이벤트 데이터에 대한 이벤트 식별자와 일치하지 않는 경우, 수신된 이벤트 데이터를 이벤트 데이터에 추가하기 위한 수단, 및 수신된 이벤트 식별자가, 저장된 이벤트 데이터에 대한 이벤트 식별자와 일치하는 경우, 저장된 이벤트 데이터를 수신된 이벤트 데이터로 대체하기 위한 수단을 포함한다.
본 개시 사항의 상기 및 다른 양상들, 특징들, 및 장점들이 설명될 것이며, 또는 첨부 도면들과 연계되어 읽혀질 선호되는 실시예들에 대한 다음의 상세한 설명으로부터 명백해질 것이다.
도면들에서, 동일한 참조 부호들은 도면들 전체에 걸쳐 유사한 요소들을 나타낸다.
본 발명을 통해, 미디어 컨텐츠 데이터베이스 구조에서 업데이트 및 검색에 대한 관리가 개선된다.
도 1은 본 개시 사항에 따라 비디오 컨텐츠를 전달하기 위한 한 예시적인 시스템의 블록도.
도 2는 본 개시 사항에 따른 한 예시적인 클라이언트 디바이스의 블록도.
도 3은 본 개시 사항에 따른 한 터치 패널 디바이스의 사시도.
도 4는 본 개시 사항에 따라 미디어 컨텐츠 데이터베이스를 관리하기 위한 연산 코드(operating code)의 한 부분에 대한 체계도.
도 5는 본 개시 사항에 따라 미디어 컨텐츠 데이터베이스를 관리하기 위한 한 예시적인 프로세스의 흐름도.
도 6은 본 개시 사항에 따라 미디어 컨텐츠 데이터베이스를 관리하기 위한 다른 예시적인 프로세스의 흐름도.
도 7은 본 개시 사항에 따라 미디어 컨텐츠 데이터베이스를 관리하기 위한 추가적인 예시적인 프로세스의 흐름도.
도 8은 본 개시 사항에 따른 캐쉬 제어기(cache controller)의 한 실시예에 대한 블록도.
도 9은 본 개시 사항에 따른 제어 회로의 한 실시예에 대한 블록도.
도 10은 본 개시 사항에 따라 컨텐츠에 대한 한 예시적인 기록 구조(record structure)를 도시하는 도면.
도면(들)은 본 개시 사항의 개념들을 도시하는 목적을 위한 것이며, 이는 반드시, 본 개시 사항을 도시하기 위한 유일한 가능한 구성은 아니라는 것이 이해될 것이다.
도면들에 도시된 요소들은 다양한 형태들의 하드웨어, 소프트웨어, 또는 이들의 결합으로 구현될 수 있다는 것이 이해될 것이다. 바람직하게도, 이들 요소들은 하나 이상의 적절히 프로그래밍된 일반용 디바이스들 상에서 하드웨어와 소프트웨어의 결합으로 구현되며, 일반용 디바이스들은 프로세서, 메모리, 및 입력/출력 인터페이스들을 포함할 수 있다. 본 명세서에서, 관용구인 "연결된"은 하나 이상의 중간 구성 요소들을 통해 이들과 함께 직접적으로 접속되거나, 또는 간접적으로 접속되는 것을 의미하는 것으로 정의된다. 이러한 중간 구성 요소들은 하드웨어 및 소프트웨어 모두의 기반인 구성 요소들을 포함할 수 있다.
본 설명은 본 개시 사항의 원리들을 예증한다. 따라서 당업자라면, 비록 본 명세서에서 명백히 설명 또는 도시되지 않을지라도, 본 개시 사항의 원리들을 구현하며 그 범주 및 사상 내에 포함되는 다양한 장치들을 안출할 수 있을 것임이 이해될 것이다.
본 명세서에 상술된 모든 예시들 및 조건부 언어는, 독자가 발명자에 의해 종래의 기술을 진전시키는 데에 공헌된 본 개시 사항의 원리들 및 본 개념들을 이해하는 것에 있어서 도움을 주기 위한 교육적인 목적으로 의도되었으며, 이는 이러한 구체적으로 상술된 예시들 및 조건들에 대한 어떤 제한도 가하지 않는 것으로서 해석될 것이다.
게다가, 본 개시 사항의 원리들, 양상들, 및 실시예들, 뿐만 아니라 이들의 구체적인 예시들을 상술하는 본 명세서의 모든 진술들은 이들의 구조적 및 기능적 등가물들을 모두 포함하는 것으로 의도된다. 추가적으로 이러한 등가물들은 현재 알려진 등가물들, 뿐만 아니라 미래에 개발될 등가물들, 즉 구조에 상관없이 동일한 기능을 수행하는 임의의 개발된 요소들을 모두 포함하는 것으로 의도된다.
따라서, 예를 들어 본 명세서에 제시된 블록도들은 본 개시 사항의 원리들을 구현하는 예시적인 회로의 개념적인 도면들을 나타냄이 당업자에 의해 이해될 것이다. 유사하게도, 임의의 순서도들, 흐름도들, 상태 전이도들, 의사 부호, 및 이와 유사한 것들은 컴퓨터 판독 가능한 미디어에서 실질적으로 나타내어질 수 있으며, 이로써 컴퓨터 또는 프로세서가 명백히 도시되었는지의 여부에 상관없이, 이러한 컴퓨터 또는 프로세서에 의해 실행될 수 있는 다양한 프로세스들을 나타냄이 이해될 것이다.
도면들에 도시된 다양한 요소들의 기능들은 전용 하드웨어, 뿐만 아니라 적절한 소프트웨어와 결합하여 소프트웨어를 실행할 수 있는 하드웨어의 사용을 통해 제공될 수 있다. 프로세서에 의해 제공될 때, 기능들은 단일 전용 프로세서에 의해, 단일 공유된 프로세서에 의해, 또는 일부가 공유될 수 있는 복수의 개별 프로세서에 의해 제공될 수 있다. 게다가, "프로세서" 또는 "제어기"라는 용어의 명시적인 사용은 소프트웨어를 실행할 수 있는 하드웨어를 배타적으로 언급하는 것으로 해석되지 않을 것이며, 디지털 신호 프로세서(DSP) 하드웨어, 소프트웨어 저장을 위한 판독-전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 및 비휘발성 저장소를, 제한 없이, 암시적으로 포함할 수 있다.
종래의 및/또는 맞춤형의 다른 하드웨어가 또한 포함될 수 있다. 유사하게도, 도면들에 도시된 임의의 스위치들은 개념적일 뿐이다. 이들의 기능은 프로그램 로직의 연산을 통하여, 전용 로직을 통하여, 프로그램 제어 및 전용 로직의 상호 작용을 통하여, 또는 심지어 수동으로 수행될 수 있는데, 특정 기술은 문맥으로부터 보다 구체적으로 이해될 수 있어서 구현자에 의해 선택될 수 있다.
본 명세서의 청구항들에서, 특정 기능을 수행하는 수단으로 표현된 임의의 요소는 그러한 기능을 수행하는 임의의 방법을 포함하도록 의도되는데, 임의의 방법은 예컨대, a) 그러한 기능을 수행하는 회로 요소들의 결합 또는 b) 임의의 형태이며, 이에 따라 그러한 기능을 수행하기 위한 소프트웨어를 실행시키기 위한 적절한 회로와 결합된 펌웨어, 또는 마이크로코드 등을 포함하는 소프트웨어를 포함한다. 그러한 청구항들에 의해 한정되는 본 개시 사항은, 다양한 상술된 수단들에 의해 제공되는 기능들이 청구항들이 요구하는 방식으로 결합되며 함께 제공되는 사실에 속한다. 그러므로, 그러한 기능들을 제공할 수 있는 임의의 수단은 본 명세서에 도시된 수단들과 동등한 것으로 간주된다.
본 실시예들은 미디어 컨텐츠의 데이터베이스를 효율적으로 관리하는 것에 연관된 문제들을 해결한다. 본 실시예들은 복수의 미디어 이벤트들을 저장하는 데이터베이스를 관리 및 업데이트하는 것에 관한 것이다. 미디어 이벤트들은 프로그램 가이드로부터 수신된 엔트리들 및 정보, 웹서비스로부터 이용 가능한 컨텐츠의 목록들, 또는 다른 유사한 이벤트 컨텐츠 엔트리들 및 정보를 포함할 수 있다. 데이터베이스가 업데이트되는 것과 동시에, 데이터베이스에 대한 질문 요청들(query requests)이 수행된다. 이들 질문 요청들은 정확하고 적절한 결과들을 산출할 것이다. 본 실시예들은 제한된 프로세싱 자원들을 갖는 셋톱 박스 또는 게이트웨이 디바이스와 같은 임베디드 시스템(embedded system)에 가장 적합하다. 본 실시예들은, 이벤트들을 수신하고, 새로운 이벤트, 또는 메모리 캐쉬에 이미 존재하는 이벤트를 오버라이팅하는 업데이트된 이벤트로서, 이벤트들을 메모리 캐쉬에 저장하는 방법 및 장치를 포함한다. 이후, 캐쉬 스와프(cache swap) 또는 캐쉬 플러쉬(cache flush)의 지시(indication), 또는 캐쉬 스와프 또는 캐쉬 플러쉬에 대한 트리거가 결정될 때, 캐쉬 메모리는 데이터베이스에 기입된다. 캐쉬 스와프 또는 캐쉬 플러쉬는 새로운 이벤트 카운트 또는 특정 시간 기간이 초과될 때와 같은 많은 가능한 작동 조건들에 기초하여 트리거될 수 있다. 일단, 캐쉬 메모리가 기입되고, 데이터베이스가 업데이트되면, 이러한 새로 업데이트된 데이터베이스는, "질문(query)" 또는 판독 전용 데이터베이스로서 식별 또는 지시되며, 현재의 "질문" 데이터베이스는 더 이상 지시되지 않고, 삭제되며, 새로운 질문 데이터베이스의 배경 복사(background copy)는 질문 프로세스에 영향을 주지 않는 방식으로 새로 삭제된 데이터베이스에 대해 행해진다.
이제 도 1로 가보면, 비디오 컨텐츠를 가정 또는 최종 사용자에게 전달하기 위한 시스템(100)의 한 실시예에 대한 블록도가 도시된다. 컨텐츠는 영화 스튜디오 또는 프로덕션 하우스와 같은 컨텐츠 소스(102)로부터 시작한다. 컨텐츠는 두 가지의 형태 중 적어도 하나로 공급될 수 있다. 한 형태는 컨텐츠의 브로드캐스트 형태일 수 있다. 브로드캐스트 컨텐츠는 일반적으로, 아메리칸 브로드캐스팅 컴퍼니(ABC), 내셔널 브로드캐스팅 컴퍼니(NBC), 콜롬비아 브로드캐스팅 시스템(CBS) 등과 같은 국영 브로드캐스트 서비스인 브로드캐스트 회원 관리자(broadcast affiliate manager, 104)에 제공된다. 브로드캐스트 회원 관리자는 컨텐츠를 수집 및 저장할 수 있고, 전달 네트워크 1(106)로 도시되는 전달 네트워크를 통해 컨텐츠의 전달을 스케쥴링할 수 있다. 전달 네트워크 1(106)은 국영 센터로부터 하나 이상의 지역 또는 로컬 센터들로의 위성 링크 송신을 포함할 수 있다. 전달 네트워크 1(106)은 표준 송신 프로토콜들 및 컨텐츠 전달을 위한 표준들{예컨대, 진보된 텔레비전 시스템들 위원회(ATSC) A/53, 디지털 비디오 브로드캐스트 (DVB)-케이블 (DVB-C), DVB-위성 (DVB-S), 또는 DVB-지상 (DVB-T)} 중 어느 하나를 이용할 수 있다. 전달 네트워크 1(106)은 또한 오버 디 에어 브로드캐스트, 위성 브로드캐스트, 또는 케이블 브로드캐스트와 같은 국부적 전달 시스템들을 이용한 국부적 컨텐츠 전달을 포함할 수도 있다. 국부적으로 전달되는 컨텐츠는 사용자의 가정 내에 있는 사용자의 클라이언트 디바이스(108)에 제공된다. 브로드캐스트 회원 관리자(104)는 또한 데이터 서버(116)에 정보를 제공한다. 이러한 정보는 프로그래밍, 전달 또는 브로드캐스트 스케쥴에 연관된 데이터, 또는 브로드캐스트 컨텐츠에 관련된 다른 유형의 정보를 포함할 수 있지만, 이들로 제한되지는 않는다.
브로드캐스트 회원 관리자에 제공되지 않는 다른 컨텐츠 또는 추가적인 정보(예컨대, 특정 공지들 또는 스케쥴링 정보)는 컨텐츠 소스(102)로부터 컨텐츠 관리자(110)에 전달될 수 있다. 컨텐츠 관리자(110)는 컨텐츠 제공자, 브로드캐스트 서비스, 또는 전달 네트워크 서비스와 제휴된 서비스 제공자일 수 있다. 컨텐츠 관리자(110)는 인터넷 웹사이트 또는 웹 서비스를 통해 작동될 수 있다. 컨텐츠 관리자(110)는 또한 인터넷 컨텐츠를 전달 시스템으로 병합시킬 수 있다. 컨텐츠 관리자(110)는 별도의 전달 네트워크인, 전달 네트워크 2(112)를 통해 컨텐츠를 사용자의 클라이언트 박스(108)에 전달할 수 있다. 전달 네트워크 2(112)는 고속 광대역 인터넷 유형의 통신 시스템들을 포함할 수 있다. 브로드캐스트 회원 관리자(104)로부터의 컨텐츠가 전달 네트워크 2(112)의 모든 부분들 또는 일부분들을 이용하여 전달될 수도 있다는 것과, 컨텐츠 관리자(110)로부터의 컨텐츠가 전달 네트워크 1(106)의 모든 부분들 또는 일부분들을 이용하여 전달될 수 있다는 것에 주목하는 것은 중요하다. 또한, 사용자는, 컨텐츠가 반드시 컨텐츠 관리자(110)에 의해 관리되도록 하지 않고도, 전달 네트워크 2(112)를 통해 인터넷에서 직접 컨텐츠를 획득할 수도 있다.
데이터 서버(116)는 브로드캐스트 회원 관리자(104)로부터 정보를 수신하고, 정보를 사용자 디바이스{예컨대, 클라이언트 디바이스(108)}에 전달하기 위해 적절한 컨텐츠 스트림으로 변환한다. 데이터 서버(116)는 웹 사이트 또는 일부 네트워킹 사이트를 위한 웹 서비스를 포함할 수 있다. 데이터 서버(116)는 컨텐츠 스트림 및 정보를 클라이언트 디바이스(108)에 제공하도록 전달 네트워크 2(112)에 연결될 수 있다. 대안적으로, 데이터 서버(116)는 셀룰러 네트워크 또는 다른 무선 전달 네트워크에 대한 네트워크 인터페이스를 포함할 수 있으며, 무선 네트워크와 호환될 수 있는 포맷의 컨텐츠 및 정보를 클라이언트 디바이스(108)에 직접 제공할 수 있다. 추가적으로, 데이터 서버(116)는, 예를 들어 컨텐츠 관리자(110) 및 전달 네트워크 2(112)를 통해 인터넷에서 정보를 수신할 수 있다. 추가적인 인터페이스는 프로그램들, 컨텐츠, 및 스케쥴링에 관련된 정보가, 브로드캐스트 회원 관리자(104)와는 다른 소스들(예컨대, 다른 사용자들, 웹사이트들, 또는 뉴스 에이전시들)로부터 데이터 서버(116)에 제공되는 것을 허용한다.
클라이언트 디바이스(108)는 전달 네트워크 1(106) 및 전달 네트워크 2(112) 중 하나 또는 이들 모두로부터 상이한 유형의 컨텐츠를 수신할 수 있다. 클라이언트 디바이스(108)는 컨텐츠를 프로세싱하고, 사용자 선호도 및 명령들에 기초한 컨텐츠의 분리를 제공한다. 클라이언트 디바이스(108)는 또한 컨텐츠를 오디오 및/또는 비디오 신호들로서 재생하는 것, 및 컨텐츠를 기록 및/또는 저장하는 것을 위한 하드 드라이브 또는 광학 디스크 드라이브와 같은 저장 디바이스를 포함할 수 있다. 클라이언트 디바이스(108)는 셋톱 박스, 홈 미디어 서버, 컴퓨터 미디어 스테이션, 태블릿 디바이스, 홈 네트워크 게이트웨이, 멀티-미디어 플레이어, 또는 홈 네트워킹 전자 제품 등일 수 있다. 클라이언트 디바이스(108)의 작동, 및 저장된 컨텐츠를 수신, 관리, 업데이트, 및 검색하는 것과 연관된 특징들에 대한 추가적인 세부 사항들은 도 2에 관련되어 아래에 설명될 것이다. 프로세싱된 컨텐츠(예컨대, 오디오 및 비디오 신호들)은 디스플레이 디바이스(114)에 제공된다. 디스플레이 디바이스(114)는 종래의 2-차원(2-D) 유형의 디스플레이일 수 있거나, 또는 대안적으로 진보된 3-차원(3-D) 디스플레이일 수도 있다.
임의의 미디어 프로그램들 및 컨텐츠, 뿐만 아니라 미디어 프로그램들 및 컨텐츠에 관련된 임의의 정보(예컨대, 프로그램 가이드들 또는 프로그램 메타데이터)가 컨텐츠 소스{예컨대, 컨텐츠 소스(102)}에서 시작할 수 있음에 주목하는 것은 중요하다. 컨텐츠 및 정보는 컨텐츠 관리자에 송신되어, 결국 전달 네트워크 1(106) 또는 전달 네트워크 2(112)를 통해 클라이언트 또는 사용자 디바이스{예컨대, 클라이언트 디바이스(108)}에 전달될 수 있다. 대안적으로, 컨텐츠 소스로부터의 컨텐츠 및 정보는 데이터 서버(116)와 같은 데이터 서버에 전달되어, 재 포맷된 이후, 클라이언트 또는 사용자 디바이스들에 전달될 수 있다. 게다가, 컨텐츠 및 정보는 데이터 서버{예컨대, 데이터 서버(116)} 또는 인터넷상의 제3 소스에서 시작되어, 클라이언트 또는 사용자 디바이스들에 전달하기 위해 데이터 서버(116)에 제공될 수 있다.
이제 도 2로 가보면, 수신 디바이스(200)의 코어의 한 실시예에 대한 블록도가 도시된다. 아래에 설명된 것을 제외하면, 디바이스(200)는 도 1에 설명된 클라이언트 디바이스(108)와 유사한 방식으로 작동된다. 디바이스(200)는 또한 디스플레이 디바이스(114) 자체를 포함하는 다른 시스템들에 병합될 수 있다. 어느 경우에서든, 본 시스템의 완전한 작동을 위해 필수적인 몇몇의 구성 요소들은 간결함을 위해 도시되지 않지만, 도시되지 않은 구성 요소들은 당업자에게 잘 공지되어 있다.
신호들은 입력 신호 수신기(202)에서 디바이스(200)에 인터페이스된다. 입력 신호 수신기(202)는 입력 스트림 프로세서(204)에 연결된다. 입력 스트림 프로세서(204)는 오디오 프로세서(206) 및 비디오 프로세서(210)에 연결된다. 오디오 프로세서(206)는 디바이스(200)로부터 오디오 출력 신호를 제공하는 오디오 인터페이스(208)에 연결된다. 비디오 프로세서(210)는 디바이스(200)로부터 비디오 출력 신호를 제공하는 디스플레이 인터페이스(218)에 연결된다. 오디오 프로세서(206) 및 비디오 프로세서(210)는 또한 저장 디바이스(212)에 연결된다. 제어기(214)는 저장 디바이스(212), 뿐만 아니라 입력 스트림 프로세서(204), 오디오 프로세서(206), 및 비디오 프로세서(210)에 연결된다. 제어 메모리(220)는 제어기(214)에 연결된다. 제어기(214)는 또한 사용자 인터페이스(216) 및 핸드헬드 인터페이스(222)에 연결된다.
컨텐츠는 입력 신호 수신기(202)에서 수신된다. 입력 신호 수신기(202)는 오버 디 에어, 케이블, 위성, 이더넷, 섬유, 및 전화선 네트워크들을 포함하는 몇몇의 가능한 네트워크들 중 하나를 통해 제공되는 신호들을 수신, 복조, 및 디코딩하기 위해 사용되는 몇몇의 알려진 수신기 회로들 중 하나 이상일 수 있다. 입력 신호 수신기(202)가 데이터 신호들, 뿐만 아니라 바람직한 브로드캐스트 입력 신호와 동일한 전달 네트워크{즉, 전달 네트워크 1(106)}를 통해, 또는 상이한 네트워크{즉, 전달 네트워크 2(112)} 및/또는 도 1에서 설명된 대안적인 셀룰러 또는 무선 네트워크를 통해 전달되는 미디어 컨텐츠 신호들을 위한 수신, 복조, 및 디코딩 회로를 포함할 수 있다. 전달 네트워크 2(112) 또는 무선 네트워크를 통해 수신된 미디어 컨텐츠 및 데이터는 미디어 컨텐츠 및 전달 네트워크 1(106)과는 상이할 수 있다. 데이터는 스케쥴링 변경 및 업데이트와 연관된 정보, 및 어느 전달 네트워크를 통해서든 전달되는 미디어 컨텐츠에 관련된 정보를 포함할 수 있다. 한 실시예에서, 케이블 브로드캐스트 신호는 신호 수신기(202) 내의 케이블 동조기 회로에서 수신, 복조, 및 디코딩된다. 바람직한 브로드캐스트 입력 신호는 제어 인터페이스(도시되지 않음)를 통해 제공되는 사용자 입력에 기초하여 입력 신호 수신기(202)에서 선택 및 리트리빙될(retrieved) 수 있다. 입력 신호 수신기(202)는 또한 양-방향 네트워크 연결을 추가적으로 제공하는 인터넷 프로토콜(IP) 인터페이스 회로를 포함한다.
입력 신호 수신기(202) 내의 하나 이상의 회로들로부터의 디코딩된 출력 신호는 입력 스트림 프로세서(204)에 제공된다. 입력 스트림 프로세서(204)는 최종 신호 선택 및 프로세싱을 수행하며, 컨텐츠 스트림에 대한 오디오 컨텐츠로부터 비디오 컨텐츠의 분리를 포함한다. 오디오 컨텐츠는 수신된 포맷(예컨대, 압축된 디지털 신호)으로부터 다른 포맷(예컨대, 아날로그 파형 신호)으로의 변환을 위해 오디오 프로세서(206)에 제공된다. 아날로그 파형 신호는 오디오 인터페이스(208)에 제공되고, 디스플레이 디바이스(114) 또는 오디오 증폭기(도시되지 않음)에 더 제공된다. 대안적으로, 오디오 인터페이스(208)는 고-선명도 멀티미디어 인터페이스(HDMI) 케이블 또는 소니/필립스 디지털 상호 연결 포맷(SPDIF)을 통해서와 같은 대안의 오디오 인터페이스를 사용하는 디스플레이 디바이스, 또는 오디오 출력 디바이스에 디지털 신호를 제공할 수 있다. 오디오 프로세서(206)는 또한 오디오 신호들의 저장을 위한 임의의 필수적인 변환을 수행한다.
입력 스트림 프로세서(204)로부터의 비디오 출력은 비디오 프로세서(210)에 제공된다. 비디오 신호는 몇몇의 포맷들 중 하나일 수 있다. 비디오 프로세서(210)는 입력 신호 포맷에 기초하여 비디오 컨텐츠의 필수적인 변환을 제공한다. 비디오 프로세서(210)는 또한 비디오 신호들의 저장을 위한 임의의 필수적인 변환을 수행한다.
저장 디바이스(212)는 입력으로 수신된 오디오 및 비디오 컨텐츠를 저장한다. 저장 디바이스(212)는 제어기(214)의 제어 하에, 그리고 또한 사용자 인터페이스(216)로부터 수신된 명령들, 예컨대 패스트 포워드(FF) 및 리와인드(Rew)와 같은 네비게이션 명령들(navigation instructions)에 기초하여 컨텐츠의 나중 리트리벌(retrieval) 및 재생을 허용한다. 저장 디바이스(212)는 하드 디스크 드라이브, 정적 RAM(SRAM), 또는 동적 RAM(DRAM)과 같은 하나 이상의 대용량의 통합된 전자 메모리들 일 수 있거나, 또는 콤팩트 디스크 드라이브 또는 디지털 비디오 디스크 드라이브와 같은 상호 교환가능한 광학 디스크 저장 시스템, 또는 디바이스(200)에 외부적이며 디바이스(200)에 의해 액세스 가능한 저장소일 수 있다.
입력으로부터, 또는 저장 디바이스(212)로부터 시작하는, 비디오 프로세서(210)로부터의 변환된 비디오 신호는 디스플레이 인터페이스(218)에 제공된다. 디스플레이 인터페이스(218)는 디스플레이 신호를 앞서 설명된 유형의 디스플레이 디바이스에 더 제공한다. 디스플레이 인터페이스(218)는 레드-그린-블루(RGB)와 같은 아날로그 신호 인터페이스일 수 있거나, 또는 디지털 인터페이스(예컨대, HDMI)일 수도 있다.
제어기(214)는 입력 스트림 프로세서(202), 오디오 프로세서(206), 비디오 프로세서(210), 저장 디바이스(212), 사용자 인터페이스(216), 및 핸드헬드 인터페이스(222)를 포함하는 디바이스(200)의 몇몇 구성 요소들에 버스를 통해 상호 연결된다. 제어기(214)는 입력 스트림 신호를, 저장 디바이스에 저장을 위한, 또는 디스플레이를 위한 신호로 변환하기 위한 변환 프로세스를 관리한다. 제어기(214)는 또한 저장된 컨텐츠의 리트리벌 및 재생을 관리한다. 제어기(214)는 제어기(214)를 위한 정보와 명령 코드를 저장하기 위해, 제어 메모리(220){예컨대, RAM, SRAM, DRAM, 판독 전용 메모리(ROM), 프로그래밍이 가능한 ROM, 전자적으로 프로그래밍이 가능한 ROM(EPROM), 전자적으로 삭제가 가능하며 프로그래밍이 가능한 ROM(EEPROM), 플래쉬 메모리 등을 포함한 휘발성 또는 비휘발성 메모리}에 더 연결된다. 또한, 제어 메모리(220)의 구현은 단일 메모리 디바이스, 또는 대안적으로, 공유된 또는 공통의 메모리를 형성하도록 함께 연결된 하나 이상의 메모리 회로와 같은 몇몇의 가능한 실시예들을 포함할 수 있다. 게다가, 메모리는 보다 큰 회로 내의 버스 통신 회로의 부분들과 같은 다른 회로에 포함될 수 있다.
사용자 인터페이스 요소 및 디스플레이 디바이스에 인터페이스하는 것에 추가적으로, 클라이언트 디바이스(200)는 또한 핸드헬드 인터페이스(222)를 통해 태블릿과 같은 핸드헬드 디바이스에 인터페이스할 수 있다. 이러한 핸드헬드 디바이스는 추가적인 제어들을 포함하는 디스플레이 스크린을 포함할 수 있거나, 또는 터치 스크린을 포함할 수 있다. 비디오 프로세서(210)로부터의 비디오 신호들, 뿐만 아니라 온 스크린 디스플레이 메시지들 및 메시지 프롬프트 리턴(message prompt returns)과 같은 다른 데이터는 제어기(214)와 핸드헬드 인터페이스(222) 사이에서 라우팅될 수 있다. 핸드헬드 인터페이스(222)는 와이파이, 블루투스, 또는 국제전기전자기술자협회(IEEE) 표준 802.11과 같은 라디오 주파수 통신 링크를 사용하는 태블릿 또는 핸드헬드 디바이스를 통해 신호들 및 데이터를 송신 및 수신할 수 있다. 핸드헬드 인터페이스(222)는 대안적으로 적외선 인터페이스를 사용하는 태블릿 또는 핸드헬드 인터페이스를 통해 신호들 및 데이터를 송신 및 수신할 수 있다.
작동에 있어서, 디바이스(200)는 아래에 더 상세하게 설명되는 바와 같이, 셋톱 박스 또는 홈 게이트웨이와 같은 클라이언트 디바이스에서 미디어 컨텐츠 데이터베이스를 업데이트, 관리, 및 검색하기 위한 프로세스를 구현한다. 알고리즘 또는 기능의 물리적인 구현은 비디오 프로세서(210)에 관련된 분리 회로(discrete circuit)와 같은 하드웨어로, 또는 제어 메모리(220)에 속하며 제어기(214)에 의해 판독 및 실행되는 소프트웨어와 같은 소프트웨어로 수행될 수 있다. 본 방법은 미디어 컨텐츠와 연관된 이벤트 데이터를 수신하는 단계로서, 이벤트 데이터는 고유한 이벤트 식별자를 포함하는 이벤트 데이터 수신 단계, 캐쉬 메모리 내의 어레이(array)에 이벤트 데이터를 저장하기 위해 이벤트 식별자를 조사(examining)하는 단계, 수신된 이벤트 데이터 내의 이벤트 식별자가 현재 어레이에 존재하지 않다면, 이벤트 카운트 값을 업데이트하는 단계, 및 이벤트 카운트 값 중 적어도 하나가, 미리 결정된 임계값을 초과하고, 시간 기간 값이, 미리 결정된 임계값을 초과할 때와 같이, 캐쉬 메모리의 스와프(swap)가 트리거되면, 제1 이벤트 데이터베이스를 어레이 내의 이벤트 데이터로 업데이트하는 단계를 포함한다.
본 개시 사항에서 설명된 프로세스들은 스크롤링, 브라우징, 페이징(paging), 단어에 의한 검색 등과 같이, 데이터베이스를 검색하기 위한 기능들을 표현하도록 이용될 수 있는 입력 디바이스를 사용할 수 있다. 이것을 가능하게 하기 위해, 도 3에 도시된 터치 패널 디바이스(300)는 도 2에 도시된 바와 같이, 디바이스(200) 내의 사용자 인터페이스(216) 및/또는 핸드헬드 인터페이스(222)를 통해 인터페이스될 수 있다. 터치 패널 디바이스(300)는 손 움직임들, 또는 제스쳐들, 그리고 패널을 통해 클라이언트 디바이스{예컨대, 디바이스(200) 또는 클라이언트 디바이스(108)} 또는 다른 제어 디바이스를 위한 명령들로 변환된 행위들에 기초하여, 수신 디바이스 또는 셋톱 박스의 작동을 가능하게 한다. 게다가, 터치 패널 디바이스(300)는, 메인 디스플레이 디바이스{예컨대, 디스플레이 디바이스(114)}의 시청을 간섭하거나 또는 숨기지 않고, 온 스크린 디스플레이 윈도우들 및 메시지들과 같은 추가적인 컨텐츠가 사용자에게 디스플레이되는 것을 가능하게 하는 제2 스크린의 기능을 할 수 있다. 한 실시예에서, 터치 패널 디바이스(300)는 전자 프로그램 가이드 또는 컨텐츠 디스플레이 가이드의 디스플레이를 네비게이션하기 위한 네비게이션 툴(navigational tool)의 역할을 할 수 있다. 다른 실시예들에서, 터치 패널 디바이스(300)는, 컨텐츠의 디스플레이를 도시하는 그리드 가이드를 통해 사용자가 네비게이션과 보다 직접적으로 상호 작용하는 것을 가능하게 하는 디스플레이 디바이스의 역할을 추가적으로 할 것이다. 터치 패널 디바이스가, 예를 들어 전면 패널 디스플레이 또는 어레이의 부분으로서 셋톱 박스 자체에 통합될 수 있음에 주목하는 것은 중요하다. 터치 패널 디바이스(300)는 또한 액티베이터 또는 액츄에이터 버튼들과 같은 종래의 제어 기능들을 포함하는 원격 제어 디바이스의 부분으로서 포함될 수 있다.
미디어 저장소 및 인터페이스 디바이스로서 사용되는 디바이스(200)와 같은 디바이스의 작동적인 양상들은 일반적으로, 미디어 컨텐츠, 뿐만 아니라 컨텐츠를 식별하기 위한 데이터베이스 엔트리들 또는 기록들의 저장, 유지 보수(maintenance), 검색, 리트리벌을 포함한다. 데이터베이스 정보 및 엔트리들을 업데이트하는 것은 주기적인 또는 연속적인 컨텐츠 정보 업데이트들을 포함할 수 있는 동적 시스템에서 중요하다. 예를 들어, 새로운 데이터베이스 기록들 또는 정보는 수신되어, 데이터베이스에 제공될 수 있다. 추가적으로, 현재 저장된 컨텐츠, 및 컨텐츠와 연관된 정보 또는 엔트리들은 제거 또는 삭제될 수 있다. 컨텐츠는 주기적으로, 또는 대안적으로 사용자 제어로부터 디바이스로의 입력들을 통해, 제거 또는 삭제될 수 있다. 동시에, 또는 거의 동시에, 데이터베이스 검색 요청과 같은 요청이 이루어질 수 있다. 일반적으로, 모든 종류 및 형태의 컨텐츠와 정보는 다수의 소스들로부터 수신되어, 데이터베이스에 입력될 수 있다. 검색 요청을 위해 견고한(stable) 데이터베이스가 이용 가능하다는 것은 중요하다. 검색 능력을 유지하고, 검색 결과들 및 검색의 성능을 가급적 높게 유지하는 동시에, 데이터 및 정보가 데이터베이스에 추가될 필요가 있다. 데이터베이스에서 업데이트 및 검색의 개선은 간단한 데이터베이스 구조{예컨대, 구조화된 질문 언어(SQL: structured query language) 데이터베이스에서 구현되는 구조}에서 훨신 더 바람직하다.
본 명세서에서 설명된 바와 같이, 미디어 컨텐츠 데이터베이스의 업데이트, 관리, 및 검색을 위한 기능 및 제어는 게이트웨이 디바이스{예컨대, 디바이스(200)}와 연관된 펌웨어 또는 연산 코드(operating code)의 부분으로서 포함될 수 있다. 본 프로세스는 임의의 프로그래밍 언어{예컨대, 자바(Java) 또는 하이퍼텍스트 마크업 랭귀지(HTML)}로 기입된 연산 명령들을 포함할 수 있다. 본 어플리케이션은 (예컨대, 서버 또는 인터넷 사이트로부터) 미리 로딩 또는 다운로딩될 수 있으며, 호스트 디바이스의 메모리에 저장될 수 있다. 한 실시예에서, 명령들은 도 2의 제어 메모리(220)에 저장되며, 여기서 명령들은 리트리빙되며, 제어기(214)에 의해 실행된다는 것이 이해될 것이다. 다른 실시예에서, 메모리, 및 프로세싱을 수행하기 위한 상응하는 프로세서 또는 제어기는 별도의 단독형(stand-alone) 집적 회로{예컨대, 디지털 프로세싱 프로세서(DSP) 또는 주문형 반도체(ASIC: application specific integrated circuit)}에 통합될 수 있다.
도 4로 가보면, 본 개시 사항의 양상들에 따라, 수신 디바이스에서 미디어 컨텐츠 데이터베이스를 관리하도록 사용되는 연산 코드의 일부분에 대한 한 예시적인 체계도(400)가 도시된다. DVB 소스로부터의 입력 데이터는 DVB 이벤트 소스 플러그인(420)에 전달된다. 제2 소스인 광대역 컨텐츠 소스로부터의 입력 데이터는 광대역 이벤트 소스 플러그인(425)에 전달된다. DVB 이벤트 소스 플러그인(420) 및 광대역 이벤트 소스 플러그인(425)은 소스 플러그인 어플리케이션 프로그래밍 인터페이스(API, 442)에 인터페이스한다. 소스 플러그인 API(442)는 프로그램 데이터베이스(440)에 인터페이스한다. 프로그램 데이터베이스(440)는 기록 스케쥴러(460) 및 컨텐츠 애그리게이터(content aggregator, 470) 모두에 인터페이스한다. 소스 플러그인 API(442)는 또한 다른 소스 플러그인들(도시되지 않음)에 대한 인터페이스들을 제공할 수 있다. 유사하게, 프로그램 데이터베이스(440)는 다른 모듈들(도시되지 않음)에 대한 인터페이스들을 제공한다. 최종적으로, DVB 이벤트 소스 플러그인(420), 광대역 이벤트 소스 플러그인(425), 소스 플러그인 API(442), 및 프로그램 데이터베이스(440)는 프로그램 데이터베이스 구성 요소(445)로서 포함된다.
프로그램 데이터베이스 구성 요소(445)는 디바이스{예컨대, 디바이스(200)} 내에서 컨텐츠 데이터베이스를 관리하기 위한 몇몇의 서비스들 및 기능들을 제공한다. 프로그램 데이터베이스 구성 요소(445)는 디바이스의 재부팅 직후에 리트리빙될 수 있는(retrievable) 이벤트 정보(예컨대, 데이터베이스 엔트리들 및 정보)의 영구적인 저장을 제공한다. 프로그램 데이터베이스 구성 요소(445)는 이벤트 또는 엔트리 정보 및 기준(criteria)에 대한 효율적이고 유연한 검색 인터페이스 기능을 더 제공한다. 검색 기능은 프로그램들에 관련된 특정 정보(예컨대, 장르, 시간 슬롯)를 검색하는 것을 포함할 수 있다. 검색 기능은 또한 기준의 결합들에 대한 검색을 포함할 수 있다. 프로그램 데이터베이스 구성 요소(445)는 또한 이벤트 또는 엔트리 정보를 프로그램 데이터베이스(440)에 제공하기 위한 유연한 인터페이스를 제공한다.
프로그램 데이터베이스(440)는 이벤트 또는 엔트리 정보를 위한 검색 가능한 인터페이스를 수집 및 제공하는 것을 담당한다. 이벤트들을 위해 제공되는 데이터(예컨대, 미디어 컨텐츠 엔트리들)는 상이한 서비스 제공자들 및 네트워크들 사이에서 매우 다양할 수 있다. 프로그램 데이터베이스(440)는, 저장 중인 데이터의 세부 사항들에 대한 특정 지식 없이, 연산 코드가 이벤트 또는 엔트리 데이터에 대한 상당한 변화들(variations)을 수용하는 것을 가능하게 하는 매우 유연한 데이터베이스 구조 및 검색 입력 인터페이스와 함께 설계되었다. 또한, 프로그램 데이터베이스(440)에 대한 입력들은 소스 플러그인 API(442)를 통해 앱스트랙팅된다(abstracted). 프로그램 데이터베이스는 초기의 이벤트 프로세싱을 위해 소스 플러그인 API(442)를 통해 인터페이스를 구체화한다. 소스 플러그인 API(442)는 다른 구성 요소들{예컨대, 기록 스케쥴러(460) 및 컨텐츠 애그리게이터(470)}에 노출되지 않는 기능들 또는 작동들을 포함하지 않는다.
이벤트 소스들에 인터페이스하기 위한 광대역 이벤트 소스 플러그인(425) 및 DVB 이벤트 소스 플러그인(420)은 프로그램 데이터베이스(440)에 의해 직접 호출될 수 있는 몇몇의 가능한 공유 라이브러리들 중 두 가지이다. DVB 이벤트 소스 플러그인(420)은 DVB 표준들 중 하나를 고수하는 브로드캐스트 신호 스트림 내에서 전달되는 프로그램 가이드 데이터에 대한 특정 인터페이스를 제공한다. 광대역 이벤트 소스 플러그인(425)은 하나 이상의 웹 또는 인터넷 기반의 컨텐츠 전달 서비스들에 대한 특정 인터페이스를 제공한다. 개별적인 소스 플러그인 API(442)는 이벤트 소스들이, 프로그램 데이터베이스(440)에 등록하고 이벤트 정보를 제공하는 것을 가능하게 하도록 더 정의된다. 플러그인 모델을 사용함으로써, 프로그램 데이터베이스 구성 요소(445)의 나머지에 영향을 주지 않고, 플러그인의 특정 서비스 또는 컨텐츠 제공자를 위한 맞춤화(customizations)가 이루어질 수 있다. 소스 플러그인 API(442)는 또한 프로그램 데이터베이스(440)가, 다수의 소스들로부터 이벤트 또는 엔트리 데이터를 수용하는 것을 더 허용하기 위한 다른 소스 플러그인들(도시되지 않음)에 대한 인터페이스들을 포함한다.
프로그램 데이터베이스(440)는 또한 구성 요소들{예컨대, 기록 스케쥴러(460) 및 컨텐츠 애그리게이터(470)}이 이벤트들 또는 엔트리들 및 수반되는 정보를 검색 및 리트리빙하는 것을 가능하게 하는 서비스 정의들(service definitions)의 세트를 제공한다. 기록 스케쥴러(460)는 디바이스{예컨대, 디바이스(200)}에 의해 수신된 컨텐츠의 기록을 스케쥴링 및 관리하기 위해, 프로그램 데이터베이스(440)로부터의 정보를 사용한다. 이들 기록들은 사용자 선호도들 또는 미리 정의된 조건들{예컨대, 시리즈 기록들(series recordings)}에 기초하여 자동으로 기록될 수 있거나, 또는 사용자 요청에 의해 개시될 수 있다. 기록 스케쥴러(460)는 또한, 스케쥴 변경들이 발생할 때, 기록 스케쥴을 조정하기 위해, 프로그램 데이터베이스(440)로부터 이벤트(예컨대, 프로그램 가이드) 업데이트들을 수신한다. 예를 들어, 프로그램 컨텐츠 에피소드는 오후 8시부터 오후 8시 30분까지의 주어진 시간에 기록하도록 스케쥴링될 수 있다. 네트워크 제공자는 이후, 에피소드가 오후 8시 30분부터 오후 9시까지 네트워크를 통해 전달되도록 재 스케쥴링하기 위해, 업데이트된 이벤트 정보를 전송할 수 있다. 기록 스케쥴러(460)는 프로그램 데이터베이스(440)로부터 이러한 이벤트 업데이트를 수신하고, 이에 따라 기록 스케쥴을 조정한다.
컨텐츠 애그리게이터(470)는 디바이스{예컨대, 디바이스(200)}에 인터페이스되는 다수의 소스들로부터, 존재하거나 또는 이용 가능한 컨텐츠를 수집 및 더 식별한다. 이들 소스들은 프로그램 데이터베이스(440)에 의해 제공되는 임의의 이벤트 또는 프로그램 데이터를 포함한다. 다른 소스들은, 본 디바이스에 속하며 이전에 기록된 컨텐츠, 본 디바이스에 속하며 다운로딩된 컨텐츠, 및 USB 스틱 또는 홈 네트워크에 속하는 사용자 컨텐츠를 포함할 수 있다. 컨텐츠 애그리게이터(470)는 이용 가능한 모든 컨텐츠에 관한 정보를 제공하기 위한 단일 인터페이스를 제공한다. 컨텐츠 애그리게이터(470)는 디지털 리빙 네트워크 얼라이언스(DLNA) 서비스, 국부적 디스플레이 디바이스를 위한 사용자 인터페이스, 및 태블릿에서 실행되는 원격 클라이언트를 포함하지만, 이들로 제한되지는 않는 소프트웨어 체계 내에서 다른 모듈들 또는 서비스들에 더 인터페이스할 수 있다.
아래에 설명된 프로세스들은 데이터베이스 시스템의 업데이트 성능을 개선시키는 실시예들을 포함한다. 본 프로세스들은 체계(400)를 포함하는 다양한 장치들(arrangements) 및 프로그램 체계들에서 사용될 수 있다. 또한, 본 프로세스들은 앞서 설명된 디바이스(200) 및 클라이언트 디바이스(108)를 포함하는 다양한 디바이스들에 포함될 수 있다. 본 프로세스들은 개별적인 데이터 저장 구조들 사이에서의 두 개의 개별적인 교환 메커니즘들의 사용을 포함한다. 먼저, 메모리 캐쉬 구조는 유입되는 이벤트들, 데이터, 및 정보를 임시적으로 저장하기 위해 사용된다. 전달 스케쥴 또는 프로그램 가이드에 대한 업데이트, 또는 새로운 프로그램과 같은 이벤트들을 일반적으로 식별하는 유입되는 데이터 기록들 및 정보는 우선적으로 메모리 캐쉬에 넣어진다. 주기적으로, 메모리 캐쉬들은 스와프되며, 가장 최근에 기입된 메모리 캐쉬는 기입 전용 모드에 놓이는 두 개의 메인 데이터베이스들 중 하나에 복사 또는 기입된다. 동시에, 데이터베이스의 이전에 기입된 버전은 데이터베이스의 견고한 버전을 나타내고, 판독 모드로 배치되어, 임의의 검색 요청들을 서비스하도록 사용된다. 캐쉬 프로세스(caching process)는, 마지막 전송(the last transfer) 이후의 엔트리들의 개수, 경과된 시간 기간(elapsed time period), 또는 검색 요청들의 빈도(frequency)와 같은 요인들(factors)에 종속적 및 동적일 수 있다. 캐쉬 스와프 트리거(cache swap trigger)로서 요인들의 결합을 사용하는 것은, 검색 요청들의 빈도에 기초하여 캐쉬 전송들을 지연시킴으로써, 또는 대다수의 이벤트 엔트리들의 수신에 기초하여 전송들을 증가시킴으로써, 동적 스와프 접근법을 더 향상시킨다.
또한, 캐쉬 또는 메인 데이터베이스의 스와프 동안에 개시된 검색 요청들은 스와프 동안에 개별적으로 식별될 수 있고, 대기열에 넣어지거나(queued), 저장되거나, 또는 그렇지 않으면 프로세싱될 수 있다. 예를 들면, 스와프의 시간 기간 동안에 개시된 검색 요청은 현재의 데이터베이스를 이용하여 초기에 서비스될 수 있다. 스와프가 완료된 이후에, 식별된 요청들은, 보다 이른 검색 요청 결과들에 대한 팔로우 업(follow up)으로서 업데이트된 정보를 사용하여 다시 서비스될 수 있다.
이제 도 5 및 도 6으로 가보면, 본 개시 사항의 양상들에 따라, 한 디바이스 내에서 데이터베이스를 업데이트하기 위한 프로세스(500) 및 프로세스(600)가 도시된다. 프로세스(500) 및 프로세스(600)는 도 2에 설명된 디바이스(200)에 대해 주로 설명될 것이다. 하지만, 프로세스(500) 및/또는 프로세스(600) 내의 하나 이상의 단계는 도 1에 설명된 클라이언트 디바이스(108)에 동등하게 적용될 수 있다. 게다가, 프로세스(500) 및/또는 프로세스(600) 내의 단계들이 브로드캐스트 네트워크 소스로부터 전달되는 통신{예컨대, 도 1의 전달 네트워크 1(106)}, 뿐만 아니라 2차 네트워크에, 그리고 2차 네트워크로부터 전달되는 통신{도 1의 전달 네트워크 2(114)}에 의존할 수 있다. 또한, 프로세스(500) 및 프로세스(600)에서 설명된 단계들의 일부가 한번 이상 구현될 수 있거나, 또는 반복적으로 구현될 수 있다는 것에 주목하는 것은 중요하다. 이러한 수정들은 프로세스(500) 또는 프로세스(600)의 전체적인 양상들에 어떤 영향도 가하지 않고 이루어질 수 있다.
추가적으로, 프로세스(500) 및 프로세스(600)가 서로 연계되어 설명될지라도, 프로세스들은 분리될 수 있음에 주목하는 것은 중요하다. 프로세스(500)는 초기의 이벤트 또는 엔트리 캐쉬 및 업데이트를 위한 작동들을 주로 설명한다. 프로세스(600)는 완전한 데이터베이스 스와프 프로세스에 포함되는 단계들을 주로 설명한다. 그 결과로서, 프로세스(500) 및 프로세스(600)는 독립적으로 구현될 수 있다.
프로세스(500) 내의 단계(505)에서, 프로세스는 시간 프레임의 시작을 초기화함으로써 시작한다. 시간 프레임 초기화는, 정보, 컨텐츠, 및 엔트리들과 같은 새로운 입력들을 프로그램 데이터베이스에 포함시키려고, 이들을 축적하기 위한 시간을 결정하기 위한 하나의 메커니즘을 제공한다. 시간 프레임 정보는 타이머의 작동을 통해 유지될 수 있다. 타이머는 실시간 기반으로 작동할 수 있거나, 또는 대안적으로 디바이스의 작동 시간을 이용하는 것과 같이, "실제의 사용" 시간 기반으로 작동될 수 있다. 시간 프레임은 5분과 같은 미리 결정된 값일 수 있거나, 또는 사용자에 의해 또는 프로세스의 모니터링(예컨대, 시간 기간에 걸친 엔트리들의 수, 커버되는 시각 등)을 통해 동적으로 조정 가능할 수 있다. 또한, 단계(505)에서, 적절한 시간 기반(예컨대, 타이머)은 디바이스(200) 내의 제어기(214)에 의해 모니터링된다. 단계(510)에서, 시간 기반이 주기적으로 또는 연속적으로 모니터링되는 동안, 단계(505)에서 초기화된 시간 프레임이 초과되었는지의 여부에 대한 결정이 이루어진다. 만약, 단계(510)에서, 시간 프레임이 초과되지 않았다면, 이후 모니터링은 단계(510)에서의 다음 결정까지 계속된다. 만약, 단계(510)에서, 시간 프레임이 초과되었다면, 이후 단계(515)에서 시간 프레임은 리셋된다. 단계(515)에서 리셋 이후에, 프로세스는 단계(505)에서 다음 시간 프레임을 초기화하기 위해 복귀한다.
개별적으로, 단계(505)에서의 시간 프레임 초기화 이후에, 이벤트 카운트는 단계(520)에서 초기화된다. 다음으로, 단계(525)에서, 이벤트들 또는 엔트리들이 수신되었는지가 모니터링된다. 앞서 설명된 바와 같이, 이들 이벤트들 또는 엔트리들은 컨텐츠 소스 또는 컨텐츠 제공자로부터의 새로운 엔트리들일 수 있거나, 또는 데이터베이스 내의 기존 엔트리들에 대한 업데이트일 수 있다. 어느 경우이든 간에, 엔트리에 기초한 데이터베이스에 대한 변경들은 필수적이다. 단계(525)에서, 어떤 이벤트도 수신되지 않으면, 프로세스는 단계(525)로 복귀하여, 모니터링을 계속한다. 단계(525)에서, 이벤트 또는 엔트리가 수신되면, 이후 단계(530)에서, 이벤트 또는 엔트리 정보는 조사된다. 특히, 이벤트 식별자에 관련된 정보는 조사된다. 나중에 설명되는 바와 같이, 이벤트 식별자는 이벤트 또는 엔트리가 이벤트 카운터의 목적들을 위해 새로운지의 여부를 결정하도록 사용된다.
다음으로, 단계(535)에서, 이벤트 또는 엔트리 정보는 어레이 캐쉬 구조에 저장된다. 이벤트 또는 엔트리 정보의 저장, 및 어레이 캐쉬 포인터 구조의 위치 지정은 제어 메모리(220), 저장 디바이스(212), 또는 개별적인 메모리 구조(도시되지 않음)에서 수행될 수 있다. 또한, 프로세스(500)는 각각 개별적인 포인터와 함께 두 개의 어레이 캐쉬 구조들을 유지한다. 단계(540)에서, 수신된 엔트리 또는 이벤트가 새로운 이벤트를 나타내는지의 여부에 대한 결정이 이루어진다. 이벤트의 고유한 식별자를, 어레이 캐쉬에 이미 존재하는 이벤트들의 고유한 식별자들과 비교함으로써 결정이 이루어질 수 있다.
단계(540)에서, 수신된 이벤트 또는 엔트리가 새롭지 않다는 결정이 이루어지면, 이후 프로세스는 복귀하여, 단계(525)에서, 새로운 이벤트를 기다린다. 이러한 경우에, 수신된 이벤트 또는 엔트리 및 정보는 어레이 캐쉬에 존재하는 이전 이벤트 또는 엔트리에 대한 정보를 대체하는데 사용될 수 있다. 단계(540)에서, 수신된 이벤트 또는 엔트리가 새롭다는 결정이 이루어지면, 단계(545)에서, 이벤트 카운트는 업데이트되거나 또는 증가된다. 수신된 이벤트 또는 엔트리 및 정보는 이후 또한 어레이 캐쉬에 추가될 수 있다.
다음으로, 단계(550)에서는, 단계(545)에서 최근에 증가된 이벤트 카운트가, 미리 결정된 이벤트 카운트 최대 임계값을 초과하는지의 여부에 대한 결정이 이루어진다. 앞서 설명된 바와 같이, 최대 이벤트 카운트는 고정된 값(예컨대, 10개의 이벤트들), 사용자 설정이 가능한 값, 또는 다른 작동 조건들(예컨대, 시간 기간 또는 시각 당 이벤트들의 수)을 고려하는 동적인 값일 수 있다. 단계(550)에서, 이벤트 카운트가 임계값을 초과하지 않았다는 결정이 이루어지면, 이후 프로세스는 복귀하여, 단계(525)에서 새로운 이벤트를 기다린다.
단계(550)에서, 이벤트 카운트가 임계값을 초과했다는 결정이 이루어지면, 이후 단계(555)에서, 현재 사용되는 어레이 캐쉬에 존재하는 색인들을 현재 가리키는 포인터는 제2 어레이 캐쉬를 가리키도록 변경된다. 이러한 제2 어레이 캐쉬는 비워지게 되어, 어떤 이전 엔트리들도 존재하지 않는다. 가장 최근의 엔트리들을 포함하는 어레이 캐쉬는 컨텐츠들이 프로세스(600)의 부분으로서 메인 데이터베이스에 기입될 때까지 유지된다. 추가적으로, 프로세스(500)는 단계(555) 이후에 복귀하여, 단계(510)에서의 시간 프레임 초기화를 포함한 새로운 이벤트 캐쉬 사이클을 시작한다.
이제, 도 6의 프로세스(600)로 가보면, 단계(610)에서, 현재의 기입 데이터베이스는 어레이 캐쉬로부터의 새로운 엔트리들로 업데이트된다. 단계(555)에서 스와프되었으며 가장 최근에 수신된 엔트리들 또는 이벤트들을 포함하는 어레이 캐쉬는 현재의 기입 데이터베이스에 기입된다. 앞서 언급된 바와 같이, 데이터베이스 스와프를 촉진하기 위해, 두 개의 데이터베이스가 유지될 수 있다. 임의의 시간 지점에서, 데이터베이스들 중 하나는 현재의 기입 데이터베이스이지만, 다른 데이터베이스는 현재의 판독 데이터베이스이다. 단계(620)에서는, 단계(610)에서의 기입 프로세스가 완료되었는지의 여부에 대한 결정이 이루어진다. 단계(620)에서, 기입 프로세스가 완료되지 않았다는 결정이 이루어지면, 이후 프로세스는 복귀하여, 단계(610)에서, 엔트리들 또는 이벤트들을 현재의 기입 데이터베이스에 계속 기입한다.
단계(620)에서, 기입 프로세스가 완료되었다는 결정이 이루어지면, 이후 단계(630)에서, 스와프된 어레이 캐쉬는 삭제된다. 단계(640)에서는, 데이터베이스 스와프가 수행된다. 데이터베이스 스와프는 현재의 판독 데이터베이스를 가리키는 포인터를 현재의 기입 데이터베이스를 가리키도록 변경하는 것을 포함한다. 포인터를 변경하는 것에 추가적으로, 기입을 방지하기 위한 기입 보호 조건(write protection condition)이 현재의 기입 데이터베이스에 배치될 수 있지만, 기입을 가능하게 하는 현재의 기입 보호는 현재의 판독 데이터베이스에 배치될 수 있다. 단계(610)에서, 새로운 이벤트들 또는 엔트리들로 업데이트된 현재의 기입 데이터베이스는 이제 새로운 판독 데이터베이스이다.
다음으로, 단계(650)에서, 현재의 판독 데이터베이스는 새로운 기입 데이터베이스가 되도록 삭제된다. 데이터베이스에 저장된 모든 엔트리들 및 이벤트들은 삭제 또는 제거된다. 단계(650)에서, 현재의 판독 데이터베이스가 된 이전의 현재의 기입 데이터베이스(the former current write database)로서 더 식별된 새로운 판독 데이터베이스의 컨텐츠들은, 현재의 기입 데이터베이스가 된 이전의 판독 데이터베이스로서 더 식별된 새로운 기입 데이터베이스에 복사된다. 새로운 판독 데이터베이스에 포함된 이벤트들 및 엔트리들은 판독되고, 새로운 기입 데이터베이스에 기입된다.
단계(640)에서, 어레이 캐쉬를 현재의 기입 데이터베이스에 기입하는 것을 완료하기 이전에 데이터베이스 스와프가 발생하지 않도록, 단계(610)에서의 기입이 단계(620)에서 모니터링되는 것에 주목하는 것은 중요하다. 또한, 데이터베이스 컨텐츠의 일부분만이 단계(610)에서의 기입의 결과로서 변경될 수 있을 것이다. 일부 실시예들에서, 프로세스가 효율적으로 유지되기 위해, 단계(610)에서의 기입에는, 보다 덜 중요한(lesser) 작동들 및 기능들(예컨대, 데이터베이스 검색 요청들, 사용자 입력 프로세싱 등)과 비교되는 본 디바이스에서의 자원들{예컨대, 제어기(214)의 프로세싱 시간 및 통신 버스 시간}을 사용하기 위한 우선권이 주어질 수 있다. 다른 실시예들에서, 단계(610)에서의 기입에는 보다 높은 어떤 우선권도 주어질 수 없다. 대신에, 데이터 손실을 방지하기 위해, 단계(610)에서의 기입의 충분한 버퍼링을 보장하기 위한 설계가 고려된다. 또한, 단계(660)에서 기입 또는 복사는 배경 작동으로서 수행될 수 있으며(즉, 자원들보다 낮은 우선권이 주어짐), 모니터링이 거의 또는 아예 요구되지 않을 수 있다. 단계(660)에서 기입은, 단계(550)에서 다음 캐쉬 어레이 스와프가 완료되기 이전에 종료되어야만 한다. 일부 실시예들에서, 단계(660)에서의 기입을 모니터링하고, 단계(510)에서의 시간 프레임에 대한 임계값 또는 단계(550)에서의 이벤트 카운트를 조정하는 것은 유리할 수 있다.
프로세스(500) 및 프로세스(600)의 단계들이 하나의 선호되는 실시예만을 설명하는 것에 주목하는 것은 또한 중요하다. 일부 다른 실시예들에서, 프로세스(500)에 설명된 캐쉬들 중 하나 또는 모두는 제거될 수 있거나, 또는 프로세스(600)에서 설명된 메인 데이터베이스들 중 하나 또는 모두로 통합될 수 있다. 추가적으로, 두 개 이상의 캐쉬들 또는 두 개 이상의 데이터베이스들은 자원 및/또는 시간 관리의 유연성을 더 허용하기 위해 사용될 수 있다. 더 다른 실시예들에서, 프로세스(500) 또는 프로세스(600)의 특정 단계들은 재배열되거나 또는 제거될 수 있다. 예를 들어, 한 실시예에서, 단계(555)에서, 어레이 캐쉬 스와프는, 단계(620)에서 이벤트들 또는 엔트리들을 현재의 기입 데이터베이스에 기입하는 것을 완료한 이후에, 대안적으로 발생할 수 있다. 또한, 단계(510)에서의 시간 프레임 비교, 및 단계(550)에서의 이벤트 카운트 비교가 병렬로 수행되는 것으로 도시될지라도, 비교 단계들은 직렬로 수행될 수 있다는 것이 가능하다. 예를 들어, 단계(510)에서의 비교는 단계(550)에서의 비교 직전에 수행될 수 있다.
프로세스(500 및 600)의 단계들은 데이터베이스에 대한 업데이트 메커니즘들을 제어함으로써 미디어 컨텐츠 데이터베이스를 효율적으로 관리하기 위한 프로세스를 설명한다. 데이터베이스 스와프의 빈도를 관리하는 것은 성능, 특히 데이터 입력/출력 처리량(throughput)에 대한 성능과, 사용자에게 제공된 컨텐츠의 정확도 사이의 트레이드오프(tradeoff)의 제어를 허용한다. 프로세스(500) 및 프로세스(600)의 단계들은, 캐쉬된 기록들의 미리 정의된 수, 미리 정의된 시간 기간, 또는 일부 다른 동적으로 조정 가능한 파라미터를 수신한 이후에만 메인 데이터베이스를 업데이트하는 것과, 데이터베이스 엔트리들을 캐쉬하는 것을 담당한다. 캐쉬 메커니즘은 전력 손실을 포함하여 몇몇의 작동적인 시나리오들에 대비하여 업데이트 프로세스를 보다 복원력있게 함으로써 데이터베이스 업데이트의 성능을 개선한다. 캐쉬 메커니즘은 다수의 기록들에 걸쳐 존재하는 트랜스액션 오버헤드(transaction overhead)를 분산 또는 점진 상각(amortizing)시켜서, 이로써 전체의 트랜스액션 시간을 감소시킴으로써 성능을 개선한다. 예를 들어, 많은 데이터베이스 관리 시스템들은 대다수의 데이터베이스 엔트리 삽입 작동들을 허용할 수 있다. 하지만, 실제의 데이터베이스 업데이트 속도, 또는 트랜스액션 시간은 저장 미디엄 전송률과 같은 다른 요인들에 의해 제한을 받을 수 있다. 본 관리 시스템은 종종 각 데이터베이스 엔트리 삽입을 개별적인 트랜스액션으로 처리한다. 제어되는 업데이트 메커니즘을 사용하여, 다수의 데이터베이스 엔트리들을 하나의 삽입 작동으로 그룹화함으로써, 트랜스액션 시간은 다수의 삽입 작동들에 걸쳐 점진 상각 또는 분산될 수 있다. 제어되는 업데이트 메커니즘은 감소된 업데이트 시간과 개선된 데이터베이스 업데이트 속도의 결과를 가져다 준다.
본 명세서에 설명된 프로세스들에 대한 일부 장점들의 한 예시적인 설명으로서, 디바이스는 주어진 시간 기간에 걸쳐서 (예컨대, 소프트웨어 내의 플러그인 모듈로부터, 또는 외부 소스로부터) 이벤트 기록들의 "청크들(chunks)" 또는 25개의 부분들(portions)을 수신한다. 이벤트 기록들의 각 부분은 또한 50개 정도의 이벤트들을 포함할 수 있다. 전형적인 데이터베이스 업데이트 시간이 매 트랜스액션마다 2초라면, 이벤트 기록들의 각 부분을 수신하는 시간에 있어서 데이터베이스의 업데이트{예컨대, 매 청크 동안 데이터베이스에 기입하기, 플러쉬 투 디스크(flush to disk) 등}는, 데이터베이스가 최근에 수신된 업데이트에 대해 "무효한"(즉, 업데이트되지 않은) 것으로 고려될 때, 적어도 50초의 전체 대기 시간을 야기한다. 유입하는 이벤트들의 부분들(예컨대, 한번에 25개의 부분들)을 캐쉬하고, 단일의 트랜스액션으로서 이들을 한번에 데이터베이스에 기입함으로써, 전체의 대기 시간은 2초 정도의 작은 시간으로 감소될 수 있다. 캐쉬 프로세스는 앞서 설명된 바와 같이, 업데이트의 빈도 또는 액세스의 빈도를 포함하는 많은 요인들에 기초하여 더 동적으로 작동 및 관리될 수 있다.
게다가, 각각의 수신된 부분에 대한 개별적인 트랜스액션들의 긴 대기 시간은 동시의 업데이트 및 데이터베이스 질문들 또는 검색 요청들에 대한 보다 큰 가능성으로 인해 컨텐츠 검색에 대한 보다 늦은 판독 시간 및 데이터베이스 질문을 야기한다. 많은 데이터베이스 시스템은 동시의 기입 및 판독 작동들을 허용 또는 권장하지 않는다. 본 명세서에 설명된 스와프 또는 업데이트 프로세스들은 동시적인 기입, 또는 업데이트, 및 판독, 질문, 또는 액세스와 연관된 문제들을 해결한다. 개별적인 판독 및 기입 데이터베이스를 유지하는 것은 검색 요청에 대한 보다 빠른 사용자 응답을 허용한다.
또한, 캐쉬 메커니즘은 또한 데이터베이스에 잠재적으로 기입되는 데이터의 양을 감소시킬 수 있다. 일부 컨텐츠 전달 시나리오에서, 동일한 이벤트 정보는 반복적으로 제공될 수 있다. 이러한 시나리오는 종종 몇일 동안의 프로그램 가이드 정보가 한 시간 간격으로 브로드캐스트 및 전송될 수 있는 브로드캐스트 신호 전달 시스템들에 존재한다. 현재 수신된 프로그램 가이드 내의 많은 이벤트 엔트리들은 이전에 수신된 이벤트 또는 엔트리 정보와 동일하다. 또한, 이전에 수신된 엔트리들에 대한 업데이트인 일부 엔트리들이 수신될 수 있다. 이벤트 식별자들을 유지함으로써, 그리고 새로운 엔트리를 포함하거나, 또는 대안적으로 최신 업데이트된 정보만을 포함하도록 기존 엔트리를 업데이트 또는 대체하기 위해 캐쉬를 업데이트함으로써, 반복적인 모든 업데이트들은 이벤트 또는 메모리 캐쉬 내에서 식별된 변경들로 제한된다. 추가적으로, 반복적인 이벤트 또는 엔트리 정보의 결과로서 임의의 불필요한 업데이트들은 최소화된다.
이제 도 7로 가보면, 본 개시 사항의 양상들에 따라 디바이스에서 데이터베이스를 업데이트하기 위한 프로세스(700)의 다른 실시예가 도시된다. 프로세스(500) 및 프로세스(600)와 마찬가지로, 프로세스(700)는 주로 디바이스(200)에 대해 설명될 것이지만, 하나 이상의 단계들은 도 1에 설명된 클라이언트 디바이스(108)에 동등하게 적용될 수 있다. 프로세스(700)는 주로 프로세스(500)에 대한 대안적인 프로세스를 설명한다. 프로세스(500)와 마찬가지로, 프로세스(700)는 프로세스(600)와 연계되어 사용될 수 있거나, 또는 프로세스(600)와는 완전히 독립적으로 사용될 수도 있다. 또한, 프로세스(700)에서 설명된 단계들의 일부가 한번 이상 구현될 수 있거나, 또는 반복적으로 구현될 수 있음에 주목하는 것은 중요하다. 프로세스(700)의 전체적인 양상들에 대해 어떤 영향도 가하지 않는 수정들이 생성될 수 있다.
단계(710)에서, 프로세스는 다음에 수신된 이벤트 또는 캐쉬 플러쉬 신호를 기다린다. 단계(710)에서, 현재의 이벤트 카운트 및 타이머 경과된 시간 카운트를 포함하는 특정 작동 조건들이 이미 진행 및 활성화 중인 것으로 고려된다는 것에 주목하는 것은 중요하다. 새로운 이벤트 또는 엔트리가 수신되거나, 또는 캐쉬 플러쉬 신호가 수신되면, 이후 단계(720)에서, 캐쉬 플러쉬 신호가 수신되었는지의 여부에 대한 결정이 이루어진다. 캐쉬 플러쉬 신호가 수신되면, 이후 단계(725)에서, 현재의 이벤트 캐쉬의 제어는 현재의 기입 데이터베이스에 전송된다. 단계(730)에서, 데이터베이스 기입 신호가 현재의 기입 데이터베이스에 제공된다. 단계(725)에서의 제어의 전달 및 단계(730)에서의 기입 신호의 전송은 현재의 이벤트 캐쉬가 프로세스(600) 내의 단계(610)와 유사한 방식으로 현재의 기입 데이터베이스에 기입되도록 허용한다. 단계(735)에서 현재의 이벤트 카운트는 0으로 리셋된다.
단계(720)에서, 캐쉬 플러쉬 신호가 수신되지 않았다는 것이 결정되면, 또는 단계(735)에서의 이벤트 카운트 리셋 이후에, 단계(740)에서는, 데이터베이스에 대한 이벤트 또는 엔트리가 수신되었는지의 여부에 대한 결정이 이루어진다. 단계(740)에서, 어떤 이벤트 또는 엔트리도 수신되지 않았다면, 이후 프로세스(700)는 단계(710)로 복귀하여, 다음에 수신된 엔트리 또는 이벤트, 또는 캐쉬 플러쉬 신호를 기다린다. 단계(740)에서, 이벤트가 수신되었다는 것이 결정되면, 이후 단계(745)에서, 수신된 이벤트가 새로운 이벤트로서 식별되었는지의 여부에 대한 결정이 이루어진다. 수신된 이벤트가 현재의 이벤트 캐쉬에 이미 존재하는 이벤트들과 상이하다면, 새로운 이벤트가 식별된다. 예를 들어, 각 이벤트는 고유의 이벤트 식별자 또는 이벤트 ID를 포함할 수 있다. 이벤트가 수신될 때, 수신된 이벤트의 식별자는 이벤트 캐쉬 내의 이벤트 식별자들의 현재의 목록과 비교된다. 어떠한 일치(match)도 발견되지 않으면, 수신된 이벤트는 새로운 이벤트로서 식별된다.
단계(745)에서, 수신된 이벤트 또는 엔트리가 새로운 이벤트인 것으로 결정되면, 단계(750)에서, 수신된 이벤트는 현재의 이벤트 캐쉬에 추가된다. 단계(755)에서, 이벤트 카운트는 증가되며, 단계(760)에서, 업데이트 및 증가된 이벤트 카운트는 다른 프로세스들 또는 기능들에 전송 또는 제공된다. 예를 들어, 단계(760)에서, 업데이트된 이벤트 카운트는, 프로세스(500)에 설명된 단계들(510 및 550)과 유사한 캐쉬 플러쉬 신호가 생성 및 전송될 때를 동적으로 결정하기 위해, 프로세스 또는 회로에 전송될 수 있다. 캐쉬 플러쉬 신호를 결정 및 생성하는 것에 대한 추가적인 세부 사항들은 아래에 설명될 것이다. 생성 및 전송된 캐쉬 플러쉬 신호가 프로세스(700)의 시작부인 단계(710)에서 수신될 수 있음에 주목하는 것은 중요하다.
단계(745)에서, 수신된 이벤트 또는 엔트리가 새로운 이벤트가 아닌 것으로 결정되면, 단계(765)에서, 수신된 이벤트는 현재의 이벤트 캐쉬 내에 현재 존재하는 동일한 이벤트 ID를 갖는 이벤트를 대신하여, 현재의 이벤트 캐쉬에 삽입된다. 이러한 방식으로, 이벤트 캐쉬 내에 현재 존재하는 이벤트들은 정보에 대한 데이터베이스로의 임의의 추가적인 기입을 기다리지 않고, 보다 새로운 수신된 이벤트 정보에 의해 업데이트될 수 있다. 업데이트된 이벤트 카운트를 전송하거나, 또는 현재의 이벤트 캐쉬 내의 이벤트를 대체한 이후에, 프로세스(700)는 단계(710)로 복귀하고, 다음에 수신된 엔트리 또는 이벤트, 또는 캐쉬 플러쉬 신호를 기다린다. 게다가, 단계(745)에서, 수신된 이벤트가 새로운 이벤트인 것으로 결정된 경우에만, 이벤트 카운트가 증가 및 전송된다는 것에 주목하는 것은 중요하다. 수신된 이벤트가 새로운 이벤트가 아니라면, 수신된 이벤트에 대한 정보는 이벤트 카운트를 증가시키지 않거나, 또는 업데이트 이벤트 카운트 값을 전송하지 않고, 현재의 이벤트 캐쉬 내에 존재하는 동일 이벤트에 대한 정보를 대체한다.
이제 도 8로 가보면, 본 개시 사항의 양상들에 따른 캐쉬 제어기(800)의 한 실시예에 대한 블록도가 도시된다. 캐쉬 제어기(800)는 수신 또는 게이트웨이 디바이스{예컨대, 도 2에 설명된 디바이스(200) 또는 도 1에 설명된 클라이언트 디바이스(108)}에서 사용되는 제어 회로의 부분으로서 포함될 수 있는 회로를 포함한다. 또한, 캐쉬 제어기(800)에 의해 구현되는 로직 기능들은 도 5의 프로세스(500) 또는 도 7의 프로세스(700)에서 보다 일찍 설명된 하나 이상의 프로세스 단계들과 유사하다.
캐쉬 제어기(800)는 캐쉬 제어 블록(810)을 포함한다. 캐쉬 제어 블록(810)은 제어 로직(820)을 포함한다. 제어 로직(820)은 이벤트 카운트 입력 신호, 하나 이상의 시스템 활동 메트릭 신호들, 및 캐쉬 제어 프로세스에서 사용되는 인에이블/디스에이블 신호들 및 임계값 신호들을 포함하는 다른 입력들을 수신한다. 캐쉬 제어 블록(810)은 또한 타이머(830)를 포함한다. 타이머(830)는 제어 로직 블록(820)에 타이머 엔드 신호를 제공한다. 제어 로직 블록(820)의 출력은 캐쉬 제어기(800)의 출력으로서 또한 식별되는 캐쉬 플러쉬 신호이다. 이 캐쉬 플러쉬 신호는 프로세스(700) 내의 단계(720)에 설명된 신호와 유사하며, 또한 타이머 리셋 입력으로서 타이머(830)에 제공된다.
제어 로직 블록(820)은 몇몇의 입력들을 수신하고, 이벤트 캐쉬 또는 메모리가 스와프 및/또는 플러쉬될 때의 결정과 결합하여, 이들 입력들을 프로세싱한다. 제어 로직 블록(820)은, 예를 들어 로직 게이트들의 세트, 및 프로그래밍 가능한 로직 어레이를 포함하는 몇몇의 실시예들 중 하나로서, 또는 마이크로 제어기 회로의 부분으로서 구현될 수 있다. 제어 로직 블록(820)은 프로세스(500) 내의 단계들(520, 545, 및 550) 또는 프로세스(700) 내의 단계들(730, 755, 및 760)에 설명된 이벤트 카운트와 유사한 이벤트 카운트를 나타내는 한 입력을 수신한다. 제어 로직 블록은 또한 이벤트 카운트 이외에, 하나 이상의 다른 시스템 활동 메트릭을 포함하는 입력을 수신한다. 이들 메트릭은 새로운 엔트리들에 대한 수신률의 지시(indication), 시간 지연의 지시, 사용자 검색 요청률의 지시, 또는 제어 로직 블록(820)의 출력을 변경하도록 사용될 수 있는 임의의 다른 메트릭을 포함할 수 있다. 또한, 제어 로직 블록(820)은 이전에 언급된 하나 이상의 메트릭들에 대한 임계값들과 같은 미리 저장된 값들을 포함할 수 있는 다른 입력을 수신한다. 이들 값들은 초기의 설계의 부분으로서 결정될 수 있거나, 또는 사용자 선택이 가능할 수 있다. 이들 값들은 디바이스 내의 메모리{예컨대, 디바이스(200) 내의 메모리(220)}에 더 저장될 수 있다. 각각의 입력들은 한 바이트의 데이터를 형성하는 하나 이상의 디지털 비트 값 신호들일 수 있다. 예를 들면, 각각의 입력은 병렬 신호 라인들 상에 개별적으로 제공되는 8 비트일 수 있다.
타이머(830)는 입력 클록 신호(도시되지 않음)에 기초하여 작동하며, 프로세스(500) 내의 단계들(505, 510, 및 515)에서 설명된 타이머와 유사한 타이머 기능을 제공한다. 타이머(830)는 클록 신호를 사용하여, 가장 마지막 타이머 리셋 이후의 경과된 시간을 유지한다. 경과된 시간 값은 설계의 부분으로서 미리 결정될 수 있거나, 또는 사용자 선택이 가능할 수 있다. 타이머(830)에서 카운트 값이, 미리 결정된 값을 일단 초과하게 되면, 타이머 엔드 신호(timer end signal)는 제어 로직 블록(820)에 전송된다. 이 타이머 엔드 신호는 타이머(830)가 제어 로직 블록(820)의 출력에서 캐쉬 플러쉬 신호와 결합한 타이머 리셋 신호를 수신할 때까지 유지될 수 있다.
작동에 있어서, 캐쉬 제어기(800)는 {디바이스(200)와 같은}디바이스 내의 다른 구성 요소들로부터, 임계값들과 같은 다른 입력들을 포함하여, 이벤트 카운트 및 활동 메트릭들과 같은 입력들을 수신한다. 타이머 엔드 신호와 함께, 이들 입력을 사용하여, 캐쉬 제어기(800)는 현재의 이벤트 캐쉬 메모리의 스와프 또는 플러쉬를 언제 수행할지를 결정한다. 앞서 설명된 바와 같이, 일부 예시들에서, 두 개 이상의 이벤트 캐쉬들이 사용될 수 있거나, 또는 대안적으로 이벤트 캐쉬와 데이터베이스 모두를 병합하는 통합형 메모리 구조가 사용될 수도 있다.
이제 도 9로 가보면, 본 개시 사항의 양상들에 따른 제어 회로(900)의 한 실시예에 대한 블록도가 도시된다. 제어 회로(900)는 캐쉬 제어기{예컨대, 도 8에 설명된 캐쉬 제어기(800)}에서 사용되는 캐쉬 제어 블록에 포함될 수 있는 회로를 포함한다. 또한, 제어 회로(900)에 의해 구현되는 로직 기능들은 도 5의 프로세스(500) 또는 도 7의 프로세스(700)에서 보다 앞서 설명된 하나 이상의 프로세스 단계들과 유사하다.
제어 회로(900)는 두 입력들, 이벤트 카운트, 및 이벤트 임계값을 수신하는 비교기(910)를 포함한다. 비교기(910)의 출력은 OR 게이트(920)에 제공된다. OR 게이트(920)의 출력은 가능한 캐쉬 플러쉬 신호들 중 하나를 나타낸다.
비교기(910)는 단순한 비안정적(astable) 또는 언클록드(unclocked) 비교기일 수 있다. 각각의 입력들 P(이벤트 카운트 신호) 및 Q(이벤트 임계 신호)는 앞서 설명된 바와 같이, 한 바이트의 데이터를 형성하는 하나 이상의 디지털 비트 값 신호들일 수 있다. 비교기(910)의 출력은 Q 입력 값(입력 비트 신호로 표현됨)이 P 입력 값을 초과할 때까지 로직 로우(예컨대, 값 "0")일 수 있다. Q 입력이 P 입력을 초과할 때, 비교기(910)의 출력은 로직 하이(예컨대, 값 = "1")로 변경된다. 비교기(910)는 또한 동기적인 작동을 허용하기 위한 클록 입력(도시되지 않음)을 포함할 수 있다. 동기적인 작동에 있어서, 출력에서의 로우에서 하이로의 상태 변경은 P 입력 값을 초과하는 Q 입력 값 이후의 제1 클록 에지에서 발생할 수 있다.
OR 게이트(920)는 비교기(910)로부터의 출력, 뿐만 아니라 단일 비트 입력 신호, 타이머 엔드를 수신한다. OR 게이트(920)의 출력은 비교기(910)로부터의 출력 또는 타이머 엔드 신호 값이 로직 하이일 때까지 로직 로우를 유지한다. 둘 중 하나의 입력이 로직 하이일 때, OR 게이트(920)의 출력(즉, 캐쉬 플러쉬 신호)는 로직 하이가 된다.
제어 회로(900)와 유사한 다른 회로들이 캐쉬 제어기{예컨대, 도 8에 설명된 캐쉬 제어기(800)}에 포함될 수 있다는 것에 주목하는 것은 중요하다. 이들 제어 회로들 각각은 개별적인 캐쉬 플러쉬 신호를 생성할 수 있으며, 이들 신호들 각각은 도 8에 설명된 캐쉬 제어 신호와 유사한 최종 캐쉬 제어 신호를 생성하기 위해 함께 더 연결될 수 있다.
이제 도 10으로 가보면, 본 개시 사항에 따라 컨텐츠 이벤트들 또는 엔트리들에 대한 한 예시적인 기록 구조(1000)를 도시하는 블록도가 도시된다. 기록 구조(1000)는 앞서 설명된 프로세스(500), 프로세스(600), 및 프로세스(700)와 연계되어 사용될 수 있다. 기록 구조(1000)는 또한 도 4에 설명된 체계(400)와 연계되어 사용될 수 있고, 수신 디바이스{예컨대, 도 2의 디바이스(200) 또는 도 1의 클라이언트 디바이스(108)} 내의 메모리에서 구현될 수 있으며, 이 메모리에 저장될 수 있다. 기록 구조(1000)가 단 하나의 가능한 기록 구조만을 도시한다는 것에 주목하는 중요하다. 다른 기록 구조 구성들이 가능하며, 이들은 수반되는 연산 코드 또는 사용되는 프로그래밍 언어에 종속적일 수 있으며, 이들 구성은 본 개시 사항의 범주 내에 속하는 것으로 고려된다.
기록 구조(1000)는 이벤트 테이블(1010)을 포함한다. 이벤트 테이블(1010)은 이벤트 식별자, 시작 시간, 및 기간에 대한 엔트리들을 포함한다. 또한, 이벤트 테이블(1010)은 하나 이상의 "키는 값과 같음(key equals value)" 엔트리들을 포함할 수 있다. 이들 엔트리들 각각은 각각의 이벤트에 대해 명확하게 식별되며, 이벤트마다 다를 수 있다. 이벤트 정보는 특정 정보 유형 또는 키를 식별하도록 분석된다. 이들 키들은 일반적인 키 유형 엔트리들의 세트와 일치하게 되며, 정보 유형과 연관된 특정 정보는 값으로서 할당된다. 예를 들어, 이벤트는 "Transformers"라는 제목(title)을 갖는 제목 식별자를 포함할 수 있다. 이러한 경우에, 엔트리는 "Title = Transformers"로서 이벤트 테이블(1010)에 추가된다. 다른 키 유형들은 설명, 부모 등급(parental rating), 시리즈 식별자, 에피소드 식별자, 및 서비스 식별자를 포함할 수 있다. 게다가, 메인 이벤트 테이블(1010)은 이벤트 테이블(1010) 내에 존재하는 하나 이상의 엔트리들에 기초하는 이벤트들의 자동 색인(auto indexing)을 위한 목록 연결 기능(list linking capability)을 포함한다.
본 실시예들은 미디어 컨텐츠의 데이터베이스를 효율적으로 관리하는 것에 관한 것이다. 본 실시예들은 데이터베이스에 대한 유효한 질문 요청들을 허용 및 실행하는 동안에, 업데이트되어야 하는 복수의 미디어 이벤트들(예컨대, 프로그램 가이드로부터의 엔트리들)을 저장하기 위한 데이터베이스를 업데이트하는 것을 설명한다. 본 실시예들은, 이벤트들을 수신하고, 이벤트들을, 새로운 이벤트로서, 또는 메모리 캐쉬 내에 이미 존재하는 이벤트를 오버라이팅하는 업데이트된 이벤트로서 메모리 캐쉬에 저장하는 방법 및 장치를 포함한다. 이후 캐쉬 메모리는 캐쉬 메모리 스와프를 수행하기 위한 트리거에 기초하여, 데이터베이스에 기입된다. 캐쉬 메모리 스와프에 대한 트리거는, 새로운 이벤트 카운트 또는 특정 시간 기간이 초과될 때와 같은 많은 상이한 트리거링 이벤트들에 기초할 수 있다. 트리거를 위해 이벤트들의 결합을 사용하는 것은 트리거를 동적이게 한다. 일단 캐쉬 메모리가 기입되고, 데이터베이스가 업데이트되면, 이 데이터베이스는 "질문" 또는 판독 전용 데이터베이스로서 식별 및 지시되고, 현재의 "질문" 데이터베이스는 더 이상 삭제되는 것으로 지시되지 않으며, 새로운 질문 데이터베이스의 배경 복사는 질문 프로세스에 영향을 미치지 않는 방식으로, 새로 삭제된 데이터베이스에 행해진다.
비록 본 개시 사항의 가르침들을 병합하는 실시예들이 본 명세서에서 상세하게 도시 및 설명되었을지라도, 당업자는 이들 가르침들을 더 병합하는 많은 다른 다양한 실시예들을 쉽게 안출할 수 있다. 디바이스(예시적이며, 비 제한적인 것으로 의도됨)에서 미디어 컨텐츠 데이터베이스를 관리하기 위한 방법 및 장치의 선호되는 실시예들을 설명함에 따라, 앞의 가르침들의 견지에서 당업자에 의해 수정들과 변형들이 이루어질 수 있다는 것이 주목된다. 따라서, 첨부된 청구항들에 의해 윤곽이 드러나는 바와 같이, 본 개시 사항의 범주 내에서 개시된 본 개시 사항의 특정 실시예들에서 변경들이 이루어질 수 있음은 이해될 것이다.
102 : 컨텐츠 소스 104 : 브로드캐스트 회원 관리자
106, 112 : 전달 네트워크 114 : 디스플레이 디바이스
116 : 데이터 서버 110 : 컨텐츠 관리자
108 : 클라이언트 디바이스 202 : 입력 신호 수신기
204 : 입력 스트림 프로세서 206 : 오디오 프로세서
208 : 오디오 인터페이스 210 : 비디오 프로세서
212 : 저장 디바이스 214 : 제어기
216 : 사용자 인터페이스 218 : 디스플레이 인터페이스
220 : 제어 메모리 222 : 핸드 헬드 인터페이스
470 : 컨텐츠 애그리게이터 460 : 기록 스케쥴러
420 : DVD 이벤트 소스 플러그인 425 : 광대역 이벤트 소스 플러그인
440 : 프로그램 데이터베이스 442 : 소스 플러그인 API
445 : 프로그램 데이터베이스 구성 요소
810 : 캐쉬 제어 블록 820 : 제어 로직
830 : 타이머 910 : 비교기
920 : OR 게이트 1010 : 이벤트 테이블

Claims (23)

  1. 방법으로서,
    미디어 컨텐츠에 연관된 이벤트 데이터를 수신하는 단계(525)로서, 이벤트 데이터는 이벤트 식별자를 포함하는, 이벤트 데이터를 수신하는 단계(525);
    이벤트 식별자가, 메모리에 이미 저장된 이벤트 데이터에 대한 이벤트 식별자와 일치하는지의 여부를 결정하는 단계(540);
    수신된 이벤트 식별자가, 저장된 이벤트 데이터에 대한 이벤트 식별자와 일치하지 않는 경우, 수신된 이벤트 데이터를 이벤트 데이터에 추가하는 단계(750); 및
    수신된 이벤트 식별자가, 저장된 이벤트 데이터에 대한 이벤트 식별자와 일치하는 경우, 저장된 이벤트 데이터를 수신된 이벤트 데이터로 대체하는 단계(765);를 포함하는, 방법.
  2. 제1항에 있어서,
    메모리 스와프(memory swap)가 발생할 것인지를 결정하는 단계(510, 550)로서, 결정은 메모리에 저장된 이벤트 데이터에 기초하는, 결정 단계(510, 550); 및
    메모리 스와프가 발생할 것임이 결정되는 경우, 제1 이벤트 데이터베이스를 메모리 내의 이벤트 데이터로 업데이트하는 단계(555);를 더 포함하는, 방법.
  3. 제2항에 있어서,
    수신된 이벤트 식별자가, 저장된 이벤트 데이터에 대한 이벤트 식별자와 일치하지 않는 경우, 이벤트 카운트 값을 업데이트하는 단계(755)를 더 포함하는, 방법.
  4. 제3항에 있어서,
    결정은 이전 메모리 스와프로부터의 시간 기간(time period) 및 이벤트 카운트 값에 기초하는, 방법.
  5. 제3항에 있어서,
    결정하는 단계(540)는, 이벤트 카운트 값 중 적어도 하나가, 미리 결정된 이벤트 카운트 임계값을 초과하는지의 여부와, 이전 메모리 스와프로부터의 시간 기간 값이, 미리 결정된 시간 기간 값을 초과하는지의 여부를 결정하는 단계를 포함하는, 방법.
  6. 제5항에 있어서,
    미리 결정된 이벤트 카운트 임계값 및 미리 결정된 시간 기간 값은, 시간 기간에 수신된 이벤트들의 개수, 시각(the time of day), 및 시간 기간 내의 많은 이벤트 질문들(event queries) 중 적어도 하나에 기초하는, 방법.
  7. 제2항에 있어서,
    제1 이벤트 데이터베이스는 제1 이벤트 데이터베이스를 업데이트하는 단계 이전에 기입 데이터베이스(write database)로서 식별되고, 업데이트하는 단계 이후에 판독 데이터베이스(read database)로서 식별되며, 제2 이벤트 데이터베이스는 업데이트하는 단계 이전에 판독 데이터베이스로서 식별되고, 업데이트하는 단계 이후에 기입 데이터베이스로서 식별되는, 방법.
  8. 제2항에 있어서,
    이벤트 질문을 수신하는 단계로서, 이벤트 질문은 하나 이상의 이벤트들과 연관된 정보를 요청하는, 이벤트 질문을 수신하는 단계;
    제1 이벤트 데이터베이스가 업데이트되었는지의 여부를 결정하는 단계;
    제1 이벤트 데이터베이스가 업데이트된 경우, 이벤트 질문을 제1 이벤트 데이터베이스로 디렉팅(direct)하는 단계; 및
    제1 이벤트 데이터베이스의 컨텐츠들을 제2 이벤트 데이터베이스에 복사하는 단계로서, 제2 이벤트 데이터베이스는 제1 이벤트 데이터베이스가 업데이트되지 않은 경우에 이벤트 질문을 수신하는, 복사하는 단계;를 더 포함하는, 방법.
  9. 제8항에 있어서,
    제1 이벤트 데이터베이스를 제2 데이터베이스에 복사하는 단계 이전에, 이벤트 질문을 제2 이벤트 데이터베이스에 디렉팅하는 단계; 및
    제2 이벤트 데이터베이스에 기초하여, 제1 결과를 이벤트 질문에 제공하고, 제1 데이터베이스에 기초하여, 제2 결과를 이벤트 질문에 제공하는 단계;를 더 포함하는, 방법.
  10. 제1항에 있어서,
    미디어 컨텐츠에 연관된 이벤트 데이터는 적어도 두 개의 컨텐츠 소스들 중 하나로부터 제공되는, 방법.
  11. 제1항에 있어서,
    이벤트 데이터는 브로드캐스트 컨텐츠 전달 네트워크 및 광대역 컨텐츠 전달 네트워크로부터 이벤트 데이터를 수신하는 디바이스에 의해 수신되는, 방법.
  12. 제11항에 있어서,
    브로드캐스트 컨텐츠 전달 네트워크로부터 수신된 이벤트 데이터는 전자 프로그램 가이드의 부분으로서 포함되는, 방법.
  13. 장치(200)로서,
    미디어 컨텐츠에 연관된 이벤트 데이터를 수신하기 위한 수단(202)으로서, 이벤트 데이터는 이벤트 식별자를 포함하는, 이벤트 데이터 수신 수단(202);
    이벤트 식별자가, 메모리에 이미 저장된 이벤트 데이터에 대한 이벤트 식별자와 일치하는지의 여부를 결정하기 위한 수단;
    수신된 이벤트 식별자가, 저장된 이벤트 데이터에 대한 이벤트 식별자와 일치하지 않는 경우, 수신된 이벤트 데이터를 이벤트 데이터에 추가하기 위한 수단; 및
    수신된 이벤트 식별자가, 저장된 이벤트 데이터에 대한 이벤트 식별자와 일치하는 경우, 저장된 이벤트 데이터를 수신된 이벤트 데이터로 대체하기 위한 수단;을 포함하는, 장치.
  14. 제13항에 있어서,
    메모리 스와프가 발생할 것인지의 여부를 결정하기 위한 수단(800)으로서, 결정은 메모리에 저장된 이벤트 데이터에 기초하는, 결정하기 위한 수단(800); 및
    메모리 스와프가 발생할 것임이 결정된 경우, 제1 이벤트 데이터베이스를 메모리 내의 이벤트 데이터로 업데이트하기 위한 수단;을 더 포함하는, 장치.
  15. 제14항에 있어서,
    수신된 이벤트 식별자가, 저장된 이벤트 데이터에 대한 이벤트 식별자와 일치하지 않는 경우, 이벤트 카운트 값을 업데이트하기 위한 수단을 더 포함하는, 장치.
  16. 제15항에 있어서,
    결정은 이전 메모리 스와프로부터의 시간 기간 및 이벤트 카운트 값에 기초하는, 장치.
  17. 제15항에 있어서,
    결정하기 위한 수단(800)은, 이벤트 카운트 값 중 적어도 하나가, 미리 결정된 이벤트 카운트 임계값을 초과하는지의 여부와, 이전 메모리 스와프로부터의 시간 기간 값이, 미리 결정된 시간 기간 값을 초과하는지의 여부를 결정하기 위한 수단을 포함하는, 장치.
  18. 제17항에 있어서,
    미리 결정된 이벤트 카운트 임계값 및 미리 결정된 시간 기간 값은, 시간 기간에 수신된 이벤트들의 개수, 시각, 및 시간 기간 내의 많은 이벤트 질문들 중 적어도 하나에 기초하는, 장치.
  19. 제14항에 있어서,
    제1 이벤트 데이터베이스는 제1 이벤트 데이터베이스를 업데이트하는 단계 이전에 기입 데이터베이스로서 식별되고, 업데이트하는 단계 이후에 판독 데이터베이스로서 식별되며, 제2 이벤트 데이터베이스는 업데이트하는 단계 이전에 판독 데이터베이스로서 식별되고, 업데이트하는 단계 이후에 기입 데이터베이스로서 식별되는, 장치.
  20. 제14항에 있어서,
    이벤트 질문을 수신하기 위한 수단(216, 222)으로서, 이벤트 질문은 하나 이상의 이벤트들과 연관된 정보를 요청하는, 이벤트 질문을 수신하기 위한 수단(216, 222);
    제1 이벤트 데이터베이스가 업데이트되었는지의 여부를 결정하기 위한 수단;
    제1 이벤트 데이터베이스가 업데이트된 경우, 이벤트 질문을 제1 이벤트 데이터베이스로 디렉팅하기 위한 수단; 및
    제1 이벤트 데이터베이스의 컨텐츠들을 제2 이벤트 데이터베이스에 복사하기 위한 수단으로서, 제2 이벤트 데이터베이스는 제1 이벤트 데이터베이스가 업데이트되지 않은 경우에 이벤트 질문을 수신하는, 복사하기 위한 수단;을 더 포함하는, 장치.
  21. 제20항에 있어서,
    제1 이벤트 데이터베이스를 제2 데이터베이스에 복사하기 이전에, 이벤트 질문을 제2 이벤트 데이터베이스에 디렉팅하기 위한 수단; 및
    제2 이벤트 데이터베이스에 기초하여, 제1 결과를 이벤트 질문에 제공하고, 제1 데이터베이스에 기초하여, 제2 결과를 이벤트 질문에 제공하기 위한 수단;을 더 포함하는, 장치.
  22. 제13항에 있어서,
    장치는 브로드캐스트 컨텐츠 전달 네트워크 및 광대역 컨텐츠 전달 네트워크로부터 이벤트 데이터를 수신하는 수신 디바이스인, 장치.
  23. 제22항에 있어서,
    브로드캐스트 컨텐츠 전달 네트워크로부터 수신된 이벤트 데이터는 전자 프로그램 가이드의 부분으로서 포함되는, 장치.
KR1020137017309A 2011-01-06 2012-01-06 수신 디바이스에서 데이터베이스를 업데이트하기 위한 방법 및 장치 KR20140026351A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161430271P 2011-01-06 2011-01-06
US201161430287P 2011-01-06 2011-01-06
US61/430,271 2011-01-06
US61/430,287 2011-01-06
PCT/US2012/020409 WO2012094551A1 (en) 2011-01-06 2012-01-06 Method and apparatus for updating a database in a receiving device

Publications (1)

Publication Number Publication Date
KR20140026351A true KR20140026351A (ko) 2014-03-05

Family

ID=46457716

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137017309A KR20140026351A (ko) 2011-01-06 2012-01-06 수신 디바이스에서 데이터베이스를 업데이트하기 위한 방법 및 장치

Country Status (7)

Country Link
US (1) US20130290380A1 (ko)
EP (1) EP2661876B1 (ko)
JP (1) JP2014507849A (ko)
KR (1) KR20140026351A (ko)
CN (1) CN103518377A (ko)
BR (1) BR112013016993A2 (ko)
WO (1) WO2012094551A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9170786B1 (en) 2013-12-20 2015-10-27 Emc Corporation Composable context menus
US9756147B1 (en) 2013-12-20 2017-09-05 Open Text Corporation Dynamic discovery and management of page fragments
US10466872B1 (en) 2013-12-20 2019-11-05 Open Text Corporation Composable events for dynamic user interface composition
CN104394545B (zh) * 2014-10-08 2017-11-10 无锡北邮感知技术产业研究院有限公司 一种面向内容的网络缓存方法
CN104699799A (zh) * 2015-03-19 2015-06-10 神华集团有限责任公司 基于跨系统数据传输方法
US9753673B1 (en) * 2015-12-29 2017-09-05 Western Digital Technologies, Inc. Bus-powered data storage device with warning alarm triggered by improper removal of power from host compute device
WO2018045352A1 (en) * 2016-09-02 2018-03-08 Opentv, Inc. Displaying non-time bound content
CN106646575A (zh) * 2016-11-15 2017-05-10 南京航空航天大学 一种基于fpga双核的组合导航系统及其构建方法
US11188501B1 (en) * 2017-08-15 2021-11-30 Amazon Technologies, Inc. Transactional and batch-updated data store search
CN107704623A (zh) * 2017-10-30 2018-02-16 迈克医疗电子有限公司 数据库更新方法和装置、测试仪器
CN108566291B (zh) * 2018-02-13 2020-04-28 北京三快在线科技有限公司 一种事件处理的方法、服务器及系统
CN109901949B (zh) * 2019-02-25 2021-06-18 中国工商银行股份有限公司 双活数据中心的应用灾备系统及方法
US11928466B2 (en) * 2021-07-14 2024-03-12 VMware LLC Distributed representations of computing processes and events

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5163132A (en) * 1987-09-24 1992-11-10 Ncr Corporation Integrated controller using alternately filled and emptied buffers for controlling bi-directional data transfer between a processor and a data storage device
US5666645A (en) * 1995-04-26 1997-09-09 News America Publications, Inc. Data management and distribution system and method for an electronic television program guide
US5845104A (en) * 1995-11-13 1998-12-01 Mitsubishi Chemical, America, Inc. Method and system for reading data from and writing data to a jukebox using a cache
US6101186A (en) * 1996-12-24 2000-08-08 Lucent Technologies, Inc. Method and system for organizing data in a relational database
US6088789A (en) * 1998-05-13 2000-07-11 Advanced Micro Devices, Inc. Prefetch instruction specifying destination functional unit and read/write access mode
US8131648B2 (en) * 1999-10-20 2012-03-06 Tivo Inc. Electronic content distribution and exchange system
GB9915465D0 (en) * 1999-07-02 1999-09-01 Lenzie Robert S Identified preferred indexes for databases
US6507852B1 (en) * 2000-04-17 2003-01-14 Ncr Corporation Location-independent service for monitoring and alerting on an event log
US7130874B2 (en) * 2002-03-12 2006-10-31 International Business Machines Corporation Method, system, and program for maintaining data in a distributed computing environment for processing transaction requests
US9172915B2 (en) * 2004-08-04 2015-10-27 Dizpersion Corporation Method of operating a channel recommendation system
US7065527B2 (en) * 2002-06-26 2006-06-20 Microsoft Corporation Systems and methods of optimizing metadata publishing system updates by alternating databases
US7738704B2 (en) * 2003-03-07 2010-06-15 Technology, Patents And Licensing, Inc. Detecting known video entities utilizing fingerprints
US20040243555A1 (en) * 2003-05-30 2004-12-02 Oracle International Corp. Methods and systems for optimizing queries through dynamic and autonomous database schema analysis
US20050102704A1 (en) * 2003-11-07 2005-05-12 Rudy Prokupets Multiregional security system integrated with digital video recording and archiving
EP1683347B1 (en) * 2003-11-07 2016-04-27 Thomson Licensing Automatic display of new program information during current program viewing
JP2006094231A (ja) * 2004-09-24 2006-04-06 Toshiba Corp 映像信号出力装置及び映像信号出力方法
JPWO2006077882A1 (ja) * 2005-01-19 2008-06-19 松下電器産業株式会社 放送受信装置
JP4542914B2 (ja) * 2005-02-08 2010-09-15 株式会社東芝 放送記録装置及び放送記録方法
JP2006262089A (ja) * 2005-03-17 2006-09-28 Seiko Epson Corp デジタル放送受信装置
US7752173B1 (en) * 2005-12-16 2010-07-06 Network Appliance, Inc. Method and apparatus for improving data processing system performance by reducing wasted disk writes
US20070154163A1 (en) * 2005-12-29 2007-07-05 United Video Properties, Inc. Systems and methods for creating aggregations of episodes of series programming in order
EP2398250A3 (en) * 2006-01-16 2012-03-28 Nds Limited Management of dynamic program changes in DVB system
US8561109B2 (en) * 2006-04-03 2013-10-15 Alcatel Lucent Method and system for aggregating TV program information from different live TV feeds
US7917499B2 (en) * 2006-06-30 2011-03-29 Microsoft Corporation Updating adaptive, deferred, incremental indexes
US7555599B2 (en) * 2006-09-06 2009-06-30 International Business Machines Corporation System and method of mirrored RAID array write management
US20080101764A1 (en) * 2006-11-01 2008-05-01 General Instrument Corporation Method and Apparatus for Managing Multimedia Content Recording Assets
JP2009017240A (ja) * 2007-07-05 2009-01-22 Nec Corp 放送受信装置及び放送受信装置における出力特性調整方法
US9071805B2 (en) * 2008-12-31 2015-06-30 Verizon Patent And Licensing Inc. Systems, methods, and apparatuses for handling failed media content recordings
US20100274772A1 (en) * 2009-04-23 2010-10-28 Allen Samuels Compressed data objects referenced via address references and compression references
US9110594B2 (en) * 2009-11-04 2015-08-18 Seagate Technology Llc File management system for devices containing solid-state media
US20120137367A1 (en) * 2009-11-06 2012-05-31 Cataphora, Inc. Continuous anomaly detection based on behavior modeling and heterogeneous information analysis
US20110289533A1 (en) * 2010-05-18 2011-11-24 Rovi Technologies Corporation Caching data in a content system

Also Published As

Publication number Publication date
WO2012094551A1 (en) 2012-07-12
JP2014507849A (ja) 2014-03-27
EP2661876B1 (en) 2017-05-03
CN103518377A (zh) 2014-01-15
EP2661876A1 (en) 2013-11-13
US20130290380A1 (en) 2013-10-31
WO2012094551A8 (en) 2013-10-10
EP2661876A4 (en) 2014-07-09
BR112013016993A2 (pt) 2016-10-25

Similar Documents

Publication Publication Date Title
EP2661876B1 (en) Method and apparatus for updating a database in a receiving device
EP1763174B1 (en) Systems and methods for networking digital video recorders
US9641791B2 (en) Bandwidth aware digital video recording (DVR) scheduling
EP2618562B1 (en) System for searching for online versions of broadcast items
US11405685B2 (en) Efficient insertion of media items in media streams
US20140157313A1 (en) System and method for caching an electronic program guide
US20110016503A1 (en) Systems and methods for managing content in real-time
JP2016526343A (ja) メディアコンテンツをナビゲートする装置及び方法
WO2002019691A2 (en) Electronic program guide subsystem for receiving and processing electronic program guide information from a set-top box
US9640220B2 (en) Managing time-shift data
US20230171461A1 (en) Systems and methods for retrieving segmented media guidance data
CN106303585B (zh) 节目回看方法、媒体服务器、机顶盒及节目回看系统
JP5905423B2 (ja) 仮想チャンネル管理の方法、仮想チャンネルを有するネットワークベースのマルチメディア再生システム、及びコンピューター可読記憶媒体
US20140341544A1 (en) Creating and managing sub-recordings
JP4181962B2 (ja) 受信装置及び受信方法
JP5645690B2 (ja) 情報処理装置及び情報処理方法
CN104023252A (zh) Ott互联网电视使用记录共享方法和系统
US9258175B1 (en) Method and system for sharing playlists for content stored within a network
US9438967B2 (en) Display apparatus and control method thereof
JP5885808B2 (ja) デジタル放送受信装置及びデジタル放送受信方法
CN115270030A (zh) 显示设备及媒资播放方法
EP2741515B1 (en) Display apparatus and control method thereof
CN104363040A (zh) 卫星授权搜索的方法及装置

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid