KR20040085056A - 데이터베이스 변경 통지의 요청 및 수신 시스템 및 방법 - Google Patents

데이터베이스 변경 통지의 요청 및 수신 시스템 및 방법 Download PDF

Info

Publication number
KR20040085056A
KR20040085056A KR1020040021200A KR20040021200A KR20040085056A KR 20040085056 A KR20040085056 A KR 20040085056A KR 1020040021200 A KR1020040021200 A KR 1020040021200A KR 20040021200 A KR20040021200 A KR 20040021200A KR 20040085056 A KR20040085056 A KR 20040085056A
Authority
KR
South Korea
Prior art keywords
database
database query
notification
change
registration information
Prior art date
Application number
KR1020040021200A
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 KR20040085056A publication Critical patent/KR20040085056A/ko

Links

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
    • G06F16/2358Change logging, detection, and notification
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B65CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
    • B65BMACHINES, APPARATUS OR DEVICES FOR, OR METHODS OF, PACKAGING ARTICLES OR MATERIALS; UNPACKING
    • B65B15/00Attaching articles to cards, sheets, strings, webs, or other carriers
    • B65B15/04Attaching a series of articles, e.g. small electrical components, to a continuous web
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B65CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
    • B65BMACHINES, APPARATUS OR DEVICES FOR, OR METHODS OF, PACKAGING ARTICLES OR MATERIALS; UNPACKING
    • B65B51/00Devices for, or methods of, sealing or securing package folds or closures; Devices for gathering or twisting wrappers, or necks of bags
    • B65B51/10Applying or generating heat or pressure or combinations thereof
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B65CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
    • B65BMACHINES, APPARATUS OR DEVICES FOR, OR METHODS OF, PACKAGING ARTICLES OR MATERIALS; UNPACKING
    • B65B59/00Arrangements to enable machines to handle articles of different sizes, to produce packages of different sizes, to vary the contents of packages, to handle different types of packaging material, or to give access for cleaning or maintenance purposes
    • B65B59/003Arrangements to enable adjustments related to the packaging material
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B65CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
    • B65BMACHINES, APPARATUS OR DEVICES FOR, OR METHODS OF, PACKAGING ARTICLES OR MATERIALS; UNPACKING
    • B65B9/00Enclosing successive articles, or quantities of material, e.g. liquids or semiliquids, in flat, folded, or tubular webs of flexible sheet material; Subdividing filled flexible tubes to form packages
    • B65B9/02Enclosing successive articles, or quantities of material between opposed webs
    • B65B9/04Enclosing successive articles, or quantities of material between opposed webs one or both webs being formed with pockets for the reception of the articles, or of the quantities of material
    • B65B9/045Enclosing successive articles, or quantities of material between opposed webs one or both webs being formed with pockets for the reception of the articles, or of the quantities of material for single articles, e.g. tablets

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mechanical Engineering (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 데이터베이스 변경으로 인해 등록된 데이터베이스 질의로부터의 후속 질의 결과가 변경하는 경우 통지를 제공하는 시스템 및 방법에 관한 것이다. 본 시스템 및 방법은 등록된 데이터베이스 질의와 관련된 데이터베이스 질의 등록 정보를 큐에 저장하는 일과 통지 전달 서비스를 작동시키는 일이 용이하도록 해주는 서비스 브로커를 이용한다. 작동 기간 동안, 통지 전달 서비스는 데이터베이스 질의 등록 정보를 얻기 위해 큐에 액세스할 수 있다. 이어서, 통지 전달 서비스는 변경 메시지를 작성하여 전송할 수 있다. 질의 결과가 저장되어 있는 질의 결과를 변경 및/또는 무효화시키는 경우 통지를 수신하도록 등록된 컴포넌트에 통보하는 일이 용이하도록 해주기 위해 변경 메시지가 사용될 수 있다. 본 발명은 여러가지 데이터베이스 등록, 데이터베이스 변경 검출 및 데이터베이스 변경 메시지 수신 메카니즘에서 사용될 수 있다. 게다가, 본 발명은 SQL 기반 환경 등의 클라이언트-서버 환경에서 사용될 수 있다.

Description

데이터베이스 변경 통지의 요청 및 수신 시스템 및 방법{SYSTEMS AND METHODS FOR REQUESTING AND RECEIVING DATABASE CHANGE NOTIFICATIONS}
본 발명은 일반적으로 데이터베이스에 관한 것으로서, 보다 상세하게는 데이터베이스 변경 통지를 수신하기 위해 데이터베이스 질의를 등록하고 등록된 데이터베이스 질의의 결과가 변경되었음을 나타내는 데이터베이스 변경 메시지를 전달하는 시스템 및 방법에 관한 것이다.
컴퓨팅 및 네트워킹 기술은 일상 생활의 많은 중요한 측면을 변화시켰다. 컴퓨터는 사치스런 교육 도구 및/또는 오락 센터가 아닌 주요 가정용품이 되었으며, 사용자에게 자금을 관리 및 예견하고, 난방, 냉방, 조명 및 보안 등의가정 운영을 제어하는 도구를 제공하며, 기록 및 영상을 영구적이고 신뢰성있는 매체에 저장한다. 인터넷과 같은 네트워킹 기술은 사용자에게 원격 시스템, 정보 및 관련 애플리케이션에 대한 거의 무제한적인 액세스를 제공한다.
전통적인 사업 관행은 컴퓨팅 및 네트워킹 기술로 발전하고 있다. 예를 들어, 종래의 금융 거래는 은행 계좌 번호, 통장 및 식별 번호 등의 정보를 수집하는 것, 은행에 가기 위해 시간을 할애하는 것, 교통 수단의 조달, 줄을 서서 기다리는 것, 및 금융 거래가 용이하도록 하기 위해 출납계원을 이용하는 것을 포함할 수 있다. 오늘날, 소비자는 인터넷을 통해 그의 계좌에 액세스하여 잔고 조회, 자금 이체 및 요금 지불 등의 점차 그 수가 증가하는 이용가능한 거래를 마우스 버튼의 클릭으로 수행할 수 있다.
컴퓨팅 및 네트워킹 기술이 안정되고, 안전하며 신뢰성있게 됨에 따라, 더 많은 소비자, 도매업자, 소매업자, 사업가, 교육 기관, 시민 단체 등은 패러다임을 바꾸어 전통적인 수단 대신에 인터넷을 이용하여 사업을 수행하고 있다. 예를 들어, 많은 사업체 및 소비자는 (예를 들면, 식품 및 의류 구매, 정보 검색, 이메일 전송 및 대화형 게임 실행을 위한) 웹 사이트 및/또는 온라인 서비스를 제공하고 있다. 다른 일례에서, 주식 시장 웹 사이트는 사용자에게 주식 시세의 검색 및 주식 구매를 위한 도구를 제공할 수 있다.
일반적으로, 사용자는 클라이언트 애플리케이션이 액세스할 수 있는 데이터베이스에 정보를 저장하고 있는 서버와 대화하기 위해 클라이언트 애플리케이션(예를 들면, 웹 페이지)과 인터페이스한다. 데이터베이스는 다수의 사용자 및 애플리케이션 간에 공유될 수 있는 데이터의 영속적이고 내구성있는 저장을 제공한다. 클라이언트 애플리케이션은 일반적으로 질의를 통해 데이터베이스로부터 데이터를 검색하고, 이 질의는 애플리케이션의 관심 대상인 데이터의 일부를 포함하는 결과를 반환한다. 이어서, 애플리케이션은 이들 결과를 사용, 표시, 변환, 저장 또는 그에 작용하여, 검색된 결과에 기초한 변경을 제공할 수 있다.
일단 결과가 검색되면, 이전에 검색된 결과를 데이터베이스의 상태와 부합하지 않게 만드는 변경이 데이터베이스 내의 데이터에 일어날 수 있다. 클라이언트가 데이터베이스에 요청을 재전송하지 않는 한, 이전에 검색된 결과를 보유하고 있는 그 클라이언트는 일반적으로 이러한 변경을 모르고 있다.
이하에서는 본 발명의 몇몇 태양에 대한 기본적인 이해를 제공하기 위해 본 발명에 대한 간략한 요약을 제공한다. 이 요약은 본 발명의 전반적인 개요는 아니다. 또한, 이 요약은 본 발명의 주요/중요한 요소들을 알려주거나 본 발명의 범위를 정하기 위한 것도 아니다. 그의 유일한 목적은 나중에 제공되는 보다 상세한 설명에 대한 도입부로서 본 발명의 몇몇 개념을 단순화된 형태로 제공하는 것이다.
본 발명은 등록 시의 질의의 결과를 데이터베이스의 현재의 상태와 부합하지 않게 만드는 데이터베이스 변경이 일어날 때 통지를 수신하기 위해 데이터베이스 질의를 등록하는 시스템 및 방법에 관한 것이다.
종래에, 사용자 요청은 데이터베이스 질의를 개시하여 그 요청을 이행하는 데이터베이스로부터 데이터를 검색하도록 할 수 있다. 많은 경우, 데이터베이스는자원 경합의 공통된 원인이 될 수 있다. 예를 들어, 2명 이상의 사용자가 유사한 결과를 얻기 위해 데이터베이스에 동시적으로 질의하는 요청을 전송할 수 있다. 그러면, 데이터베이스는 사용자들 사이에 공유된 상태를 나타낸다. 공유된 상태 경합은 시스템 및/또는 아키텍처의 확장성을 제한할 수 있다. 다른 경우, 사용자는 데이터베이스에 대해 유사한 요청을 빈번히 수행할 수 있다. 예를 들어, 사용자가 애플리케이션 및/또는 웹 페이지에 의해 표시되는 데이터를 주기적으로 갱신하도록 하기 위해 반복적인 마우스 클릭을 수행하여 데이터베이스에 대해 유사한 요청을 개시, 및/또는 애플리케이션이 데이터베이스의 상태가 변경되었는지를 판정하기 위해 그 데이터베이스에 대해 주기적으로 질의를 발행할 수 있다. 반복적인 데이터베이스 질의는 예를 들면 시간이 걸릴 수 있으며, 대역폭을 감소시키고 성능을 떨어뜨리며 자원을 소모할 수 있다.
(예를 들어 한명 이상의 사용자를 통한) 질의의 수를 줄이기 위해 이용되는 종래의 기술은 빈번히 이용되는 데이터를 데이터베이스 외부에 저장하는 것을 포함한다. 그러면, 사용자는 반복적인 질의를 수행하지 않고 저장된 데이터를 이용할 수 있다. 그렇지만, 사용자가 모르는 사이에 차후에 데이터베이스 변경이 일어나 저장된 데이터를 (변경된 데이터베이스에 있는) 현재의 데이터와 부합되지 않게 만들 수 있기 때문에 저장된 데이터의 일관성 및 정확성이 손상된다.
일 태양에 따르면, 본 발명의 시스템 및 방법은 데이터베이스 부하를 완화시키고(예를 들면, 질의를 경감시키고), 확장성을 증대시키며 데이터 일관성을 보장한다. 예를 들어, 데이터베이스 변경이 등록된 데이터베이스 질의의 결과를 변경할 때 (또는 변경하게 될 경우) 통지를 수신하기 위해 한명 이상의 사용자가 데이터베이스 질의를 전송하여 그 데이터베이스 질의를 등록할 수 있다.
실제로, 질의의 결과는 데이터베이스의 외부에 (예를 들면, 캐시에 또한 웹 서버 상에) 저장되어 사용자가 이용할 수 있으며, 이 때 사용자는 유사한 결과를 반환하게 될 부가의 질의를 수행하지 않고 저장된 결과를 한번 이상 이용할 수 있다. 후속 질의의 결과를 저장된 결과와 부합되지 않게 만들게 될 데이터베이스 변경이 일어날 때, 저장된 결과가 부합하지 않게 되었음을 나타내는 통지가 사용자에게 전송될 수 있다. 그러면, 사용자는 그 통지를 이용하여, 예를 들어 저장된 데이터를 무효화, 저장된 데이터를 갱신하기 위한 질의를 수행, 및/또는 그 통지를 무시한다.
본 발명은 데이터베이스 질의를 등록하고 질의 등록 정보를 유지하며 등록된 데이터베이스 질의에 영향을 미치는 데이터베이스 변경을 검출하고 등록된 데이터베이스 질의가 영향을 받았음을 나타내는 메시지를 제공하는 시스템 및 방법을 포함한다. 예를 들어, 데이터베이스 변경 통지를 수신하기 위한 등록은 일반적으로 데이터베이스 질의 등록 정보를 구축하여 이를 서버에 제공하는 것을 포함한다. 데이터베이스 상태를 이전의 결과와 부합하지 않게 만드는 데이터베이스 변경이 일어날 때, 메시지 전달 서비스가 관련된 데이터베이스 질의 등록 정보에 액세스할 수 있게 된다. 이 전달 서비스는 데이터베이스 질의 등록 정보를 이용해 변경 메시지를 작성하여 전송한다. 등록된 질의의 결과와 관련된 컴포넌트에 이전의 결과가 무효로 되었음을 통지하기 위해 그 컴포넌트로 변경 통지를 라우팅하는 것이 용이하도록 해주는 데 변경 메시지가 이용된다.
본 시스템 및 방법은 (예를 들면, SQL 기반의) 클라이언트-서버 환경 및 웹 환경을 비롯한 여러가지 환경에서 이용될 수 있다. 따라서, 본 발명은 변경에 대한 데이터베이스 질의를 모니터링하여 등록된 질의의 결과가 변경할 때 통지를 받는 수단을 제공한다. 이상의 것은 사용자가 데이터베이스로부터 검색되어 저장된 데이터를 이용하여 저장된 데이터가 부합되지 않게 되는 때 통지를 받고자 하는 경우, 사용자에게 표시되는 데이터가 갱신될 필요가 있을 경우, 및/또는 변경된 결과에 기초하여 조치가 취해져야 할 경우에 유리할 수 있다. 게다가, 본 발명은 기존의 아키텍처에서 보안, 신뢰성 및 확장성을 증대시키고 또 친숙한 프로그래밍 환경을 제공하기 위해 이용될 수 있다.
상기한 목적 및 그와 관련된 목적을 달성하기 위해, 본 발명은 이후에 상세히 기술하고 청구항에서 특별히 지적한 특징을 포함한다. 이하의 설명 및 첨부 도면은 본 발명의 어떤 예시적인 태양 및 구현예에 대해 상세히 기술한다. 그렇지만, 이들은 본 발명의 원리가 이용될 수 있는 여러 방식들 중 단지 몇개만을 나타내고 있을 뿐이다. 본 발명의 다른 목적, 이점 및 신규 특징은 도면과 연계하여 본 발명의 이하의 상세한 설명을 살펴보면 그로부터 분명하게 될 것이다.
도 1은 본 발명의 일 태양에 따른 전형적인 데이터베이스 변경 메시지 전달 시스템을 나타낸 도면.
도 2는 본 발명의 일 태양에 따른 전형적인 서버를 나타낸 도면.
도 3은 본 발명의 일 태양에 따른 전형적인 데이터 무효화 시스템을 나타낸 도면.
도 4는 본 발명의 일 태양에 따른 전형적인 등록 시스템을 나타낸 도면.
도 5는 본 발명의 일 태양에 따른 전형적인 통지 시스템을 나타낸 도면.
도 6은 본 발명의 일 태양에 따른 전형적인 클라이언트-서버 시스템을 나타낸 도면.
도 7은 본 발명의 일 태양에 따른 다른 전형적인 클라이언트-서버 시스템을 나타낸 도면.
도 8은 본 발명의 일 태양에 따른 전형적인 보안 기술을 나타낸 도면.
도 9는 본 발명의 일 태양에 따른 전형적인 클라이언트-서버 시스템을 나타낸 도면.
도 10은 본 발명의 일 태양에 따른 등록 및 전달 방법을 설명한 도면.
도 11은 본 발명의 일 태양에 따른 제1 등록, 전달 및 통지 방법을 설명한 도면.
도 12는 본 발명의 일 태양에 따른 도 11의 연속을 나타낸 도면.
도 13은 본 발명의 일 태양에 따른 전형적인 운영 체제를 나타낸 도면.
<도면의 주요 부분에 대한 부호의 설명>
100 : 데이터베이스 변경 메시지 전달 시스템
110 : 서비스 브로커
1201~ 120N: 큐
130 : 통지 전달 서비스
이제부터 도면을 참조하여 본 발명에 대해 기술할 것이며, 이 때 도면 전체에 걸쳐 유사한 구성 요소를 언급하기 위해 유사한 참조 번호가 사용된다. 이하의 설명에서는, 설명의 목적상, 본 발명의 완전한 이해를 제공하기 위해 여러가지 구체적인 세부 사항이 기술되어 있다. 그렇지만, 본 발명이 이들 구체적인 세부 사항 없이도 실시될 수 있음은 명백할 것이다. 다른 경우, 본 발명을 설명하는 것이 용이하도록 해주기 위해 공지의 구조 및 장치가 블록도 형태로 도시되어 있다.
본 출원에서 사용되고 있는 바와 같이, 용어 "컴포넌트"는 하드웨어, 하드웨어와 소프트웨어의 결합, 소프트웨어, 또는 실행 중인 소프트웨어 등 컴퓨터 관련 개체를 지칭하기 위한 것이다. 예를 들면, 컴포넌트는 프로세서 상에서 실행되는 프로세스, 프로세서, 객체, 실행 파일, 실행 쓰레드, 프로그램, 및/또는 컴퓨터일 수 있지만, 이에 한정되는 것은 아니다. 설명의 목적상, 서버 상에서 실행되는 애플리케이션과 그 서버 모두는 컴퓨터 컴포넌트일 수 있다. 하나 이상의 컴포넌트가 실행 프로세스 및/또는 쓰레드 내에 존재할 수 있으며, 컴포넌트는 하나의 컴퓨터 상에 로컬화 및/또는 2개 이상의 컴포넌트에 분산되어 있을 수 있다. "쓰레드"는 운영 체제 커널이 실행할 계획인 프로세스 내의 개체이다. 당해 기술 분야에 공지된 바와 같이, 각 쓰레드는 그 쓰레드의 실행과 관련된 휘발성 데이터인 관련 "콘텍스트(context)"를 갖는다. 쓰레드의 콘텍스트는 그 쓰레드의 프로세스에 속하는 가상 주소 및/또는 시스템 레지스터의 내용을 포함한다. 따라서, 쓰레드의 콘텍스트를 포함하는 실제 데이터는 그 쓰레드가 실행될 때 변하게 된다.
본 발명은 데이터베이스 변경이 등록된 데이터베이스 질의의 결과에 영향을 주게 될 때 통지를 제공하는 시스템 및 방법에 관한 것이다. 본 시스템 및 방법은 일반적으로 데이터베이스 질의 등록 정보의 전달 및 데이터베이스 변경 메시지의 전송이 용이하도록 하기 위해 서비스 브로커를 이용하며, 이 서비스 브로커로부터의 데이터베이스 질의 등록 정보를 저장하기 위해 큐를 이용하고, 데이터베이스 변경 메시지를 전송하기 위해 통지 전달 서비스를 이용한다. 본 시스템 및 방법은 등록 요청의 수신, 등록 메시지의 구축, 등록 메시지의 전송, 데이터베이스 변경의 검출, 데이터베이스 변경 메시지의 수신, 및 데이터베이스 변경 통지의 제공을 위한 여러가지 메카니즘을 선택적으로 이용한다.
도 1을 참조하면, 본 발명의 일 태양에 따른 전형적인 데이터베이스 변경 메시지 전달 시스템(100)(이후부터는, 시스템(100)이라 함)이 도시되어 있다. 시스템(100)은 데이터베이스 질의 등록 정보의 전송이 용이하도록 하기 위한 서비스 브로커(110), 서비스 브로커(110)에 제공되는 데이터베이스 질의 등록 정보를 저장하는 제1 큐(1201) 내지 제N 큐(120N)(단, N은 1보다 크거나 같은 정수임), 및 적어도 부분적으로 데이터베이스 질의 등록 정보에 기초한 변경 메시지를 전송하는 통지 전달 서비스(130)를 포함한다. 제1 큐(1201) 내지 제N 큐(120N)는 총괄하여 큐(120)라고 할 수 있다.
일반적으로, 컴포넌트(예를 들면, 클라이언트, 사용자, 및 애플리케이션)는 시스템(100)을 이용하는 시스템에 데이터베이스 질의를 등록(예를 들면, 신청)할 수 있다. 질의 등록은 일반적으로 데이터베이스 질의 등록 정보를 질의 결과에 대한 요청과 함께 및/또는 그와 별도로 제공하는 것을 포함한다. 데이터베이스 질의 등록 정보는 예를 들면 고유 식별자, 전달 주소, 큐 이름, 타임아웃 기간, 그리고 여러가지 통신 및 보안 옵션을 포함할 수 있다. 질의 등록은 등록된 질의의 후속실행이 다른 결과를 반환하게 될 때 변경 메시지(예를 들면, 무효화 메시지)를 수신하기 위해 이용될 수 있다. 예를 들어, 질의를 등록한 후에, 질의에 의해 반환된 결과를 변경시키게 될 데이터베이스 변경이 변경 메시지를 호출하게 된다. 변경 메시지를 호출하게 될 일반적인 데이터베이스 변경의 일례로는 삽입, 갱신 및 삭제는 물론 스키마 변경이 있다. 그 밖에도 만료 기간(예를 들면, 등록 정보에 포함된 타임아웃 기간 등의 타임아웃 기간) 및/또는 다른 기준이 이용될 수 있다는 것을 잘 알 것이다. 예를 들어, 데이터베이스 질의의 등록은 등록으로부터 "X"초 후에 변경 메시지가 호출되도록 만료 기간을 제공하는 것을 포함할 수 있다.
데이터베이스 변경이 일어나 등록된 질의를 이용하는 후속 요청이 다른 결과를 반환하게 되는 경우, 데이터베이스 질의 등록 정보가 서비스 브로커(110)에 제공된다. 게다가, 다른 정보, 예를 들면 통지의 원인을 설명하는 정보가 순차적으로 및/또는 동시적으로 서비스 브로커(110)에 제공될 수 있다. 서비스 브로커(110)는 데이터베이스 질의 등록 정보의 적어도 일부를 큐(120) 중 하나에 순차적으로 및/또는 동시적으로 제공하고, 서비스 브로커(110) 및/또는 큐(120)는 통지 전달 서비스(130)를 호출한다. 통지 전달 서비스(130)의 호출은 그 서비스가 아직 작동 중이 아닌 경우 통지 전달 서비스(130)를 작동시키는 것을 포함한다. 작동된 통지 전달 서비스(130)는 큐(120)에 액세스하고 그에 저장된 데이터베이스 질의 등록 정보를 이용해 변경 메시지를 작성하여 이를 데이터베이스 질의를 등록한 컴포넌트로 전송할 수 있다. 전술한 바와 같이, 변경 메시지는 일반적으로 후속 질의가 부합하지 않는 결과를 반환할 것임을 나타낸다.
하나 이상의 컴포넌트가 하나 이상의 데이터베이스 질의를 등록할 수 있으며 이 하나 이상의 데이터베이스 질의가 이하에 기술하는 바와 같이 유사한 결과를 반환할 수 있음을 잘 알 것이다. 게다가, 큐(120) 중 어느 하나가 하나 이상의 컴포넌트 및/또는 하나 이상의 질의에 대한 데이터베이스 질의 등록 정보를 저장할 수 있음을 잘 알 것이다. 이상과 같이 큐(120)들 중에 동질성이 있는 저장(homogeneous storage)이 가능하다. 예를 들어, 본 발명의 일 태양에서는, 유사한 결과를 반환하는 질의에 대한 데이터베이스 질의 등록 정보는 유사한 큐에 저장될 수 있다. 이와 같이, 유사한 결과를 반환하는 큐와 관련된 변경 메시지를 수신하기 위해 등록된 컴포넌트에 대한 데이터베이스 질의 등록 정보는 큐별로 그룹화될 수 있다. 본 발명의 다른 태양에서, 유사한 컴포넌트와 관련된 (예를 들면, 하나 이상의 질의에 대한) 데이터베이스 질의 등록 정보는 유사한 큐에 저장될 수 있다. 이와 같이, 데이터베이스 질의 등록 정보는 또한 컴포넌트별로 그룹화될 수도 있다. 그렇지만, 동질성이 없는 저장(non-homogeneous storage)도 이용될 수 있음을 잘 알 것이다. 또한, 데이터베이스 질의 등록 정보를 저장하는 데 이용되는 큐는 예를 들면 디폴트 큐이거나, 데이터베이스 질의 등록 정보에 기초하여 정해지거나, 및/또는 다른 기술을 통해 선택될 수 있다.
게다가, 2개 이상의 통지 전달 서비스가 작동될 수 있음을 잘 알 것이다. 예를 들어, 본 발명의 일 태양에서, 복수의 통지 전달 서비스가 유사한 큐에 액세스하도록 작동되어 큐에서의 데이터베이스 질의 등록 정보의 증대를 완화시키게 할 수 있다. 본 발명의 다른 태양에서, 통지 전달 서비스(130)는 큐(120) 중 2개 이상에 액세스할 수 있고 또 변경 메시지를 하나 이상의 컴포넌트로 라우팅할 수 있다. 본 발명의 또다른 태양에서, 복수의 통지 전달 서비스가 복수의 큐(120)에 액세스하도록 작동될 수 있다.
도 1이 데이터베이스 변경 메시지 전달 시스템(100)의 컴포넌트를 설명하는 블록도이지만, 서비스 브로커(110), 제1 큐(1201) 내지 제N 큐(120N), 및 통지 전달 서비스(130)는 그 용어가 본 명세서에서 정의되어 있는 바와 같이 하나 이상의 컴퓨터 컴포넌트로서 구현될 수 있음을 잘 알 것이다. 따라서, 본 발명에 따르면, 데이터베이스 변경 메시지 전달 시스템(100), 서비스 브로커(110), 제1 큐(1201) 내지 제N 큐(120N), 및/또는 통지 전달 서비스(130)를 구현하는 동작을 할 수 있는 컴퓨터 실행가능 컴포넌트가 ASIC(주문형 반도체), CD(콤팩트 디스크), DVD(디지털 비디오 디스크), ROM(판독 전용 메모리), 플로피 디스크, 하드 디스크, EEPROM(전기적 소거가능 프로그램가능 판독 전용 메모리) 및 메모리 스틱을 비롯한 컴퓨터 판독가능 매체(이들 매체에 한정되는 것은 아님) 상에 저장될 수 있음을 잘 알 것이다.
다음으로 도 2를 참조하면, 본 발명의 일 태양에 따른 전형적인 서버(200)가 도시되어 있다. 서버(200)는 데이터베이스 질의 등록 정보의 저장 및 전달이 용이하도록 해주는 서비스 브로커(210), 데이터베이스 질의 등록 정보를 저장하는 큐(220), 및 등록된 데이터베이스 질의 결과가 변경했을 수도 있음을 나타내는 변경 메시지를 전송하는 통지 전달 서비스(230)를 포함한다.
서비스 브로커(210)는 데이터베이스 질의 등록 정보의 저장 및 전송이 용이하도록 해준다. 전술한 바와 같이, 데이터베이스 등록 정보는 데이터베이스 질의의 등록 요청, 즉 신청 요청이 있은 후에 구축된다. 이어서, 데이터베이스 질의 등록 정보가 예를 들면 메시지로서 서버(200)로 전송될 수 있다. 일반적인 데이터베이스 등록 정보는 XML 기반 파일(예를 들면, "쿠키")로서 작성되며, 일반적으로 고유 식별자, 전달 주소, 큐 이름 및 타임아웃 기간 중 적어도 하나를 포함한다.
서버(200)가 등록된 데이터베이스 질의를 통해 후속 질의의 결과를 변경시키게 될 데이터베이스 변경 요청을 수신한 후, 데이터베이스 질의 등록 정보가 서비스 브로커(210)에 제공된다. 데이터베이스 변경이 발생했는지 및 이 변경이 등록된 데이터베이스 질의의 결과에 영향을 주게 될 것인지에 관한 판정을 하기 위해 여러가지 기술이 사용될 수 있음을 잘 알 것이다.
서비스 브로커(210)는 데이터베이스 질의 등록 정보의 적어도 일부분(예를 들면, 전달 주소 및 고유 식별자)을 큐(220)에 저장하고, 통지 전달 서비스(230)를 호출한다. 사용되는 큐(220)는 일반적으로 데이터베이스 질의 등록 정보로부터 큐 이름을 추출함으로써 결정된다.
실제로는, 디폴트 큐 이름 또는 (예를 들면 확률, 통계, 학습 모델(예를 들면, 신경망) 및/또는 적응적 기술에 부분적으로 기초하여) 최적으로 선택된 큐가 이용된다. 질의 등록 정보가 유효한 큐 이름을 포함하고 있지 않거나 및/또는 큐가 액세스할 수 없는 것인(예를 들면, 존재하지 않는 것인) 경우, 관련 질의는 실패할 수 있고, 관련 데이터에 대한 후속 갱신도 실패할 수 있으며, 및/또는 질의등록이 실패했음을 나타내는 경고가 (질의 등록 정보가 질의와 동시적으로 전송된 경우는, 결과와 함께) 반환될 수도 있다.
통지 전달 서비스(230)의 호출은 통지 전달 서비스(230)가 아직 작동되지 않은 경우 그 서비스를 작동시키는 것을 포함한다. 작동 메카니즘의 제공은 등록된 질의의 결과에 영향을 주게 될 데이터베이스 변경보다 앞서 통지 전달 서비스(230)를 구성하는 것 및/또는 수동으로 개시하는 것과 관련된 오버헤드를 경감시킨다. 그렇지만, 통지 전달 서비스(230) 및 큐(220)는 원하는 경우 사전 구성될 수 있다. 게다가, 작동 메카니즘은 통지 전달 서비스(230)가 작동되지 않은 경우 상실될 수 있는 정보를 전송하는 일을 줄이기 위해 "핸드쉐이크"를 제공한다. 그 밖에도 통지 전달 서비스(230)가 예를 들면 시스템 기동 시에(예를 들면 하드 부트 및 소프트 부트 시에) 다른 컴포넌트에 의해, 외부 자극 및/또는 사용자에 의해 작동될 수 있음을 잘 알 것이다.
작동된 통지 전달 서비스(230)는 큐(220)에 액세스할 수 있다. 작동 기간은 일반적으로 데이터베이스 질의 등록 정보를 통해 제공될 수 있는 파라미터에 의해, 데이터베이스 질의 등록 정보보다 앞서, 그와 동시에 및/또는 그에 후속하여, 통지 전달 서비스(230)의 셋업(예를 들면, 구성) 동안, 통지 전달 서비스(230)가 작동되고 있는 동안 동적으로 전송되는 부가의 정보에 의해, 및/또는 디폴트로서 결정된다. 이 파라미터는 예를 들면 절대 시간 길이 (예를 들면, 작동된 후 "X"초), 서비스할 큐 엔트리의 수 (예를 들면, 큐(200)에 "Y"개 엔트리), 및/또는 비작동 기간 (예를 들면, 지정된 기간 동안 어떤 새로운 데이터베이스 질의 등록 정보도큐(220)에 전달되지 않은 경우)을 지정할 수 있다. 이 기간은 예를 들면 디폴트 값, 데이터베이스 질의 등록 정보, 서버 부하 및/또는 적응적 기술 등의 정보에 기초할 수 있음을 잘 알 것이다. 작동 기간이 만료한 후에, 통지 전달 서비스(230)는 작동 정지되어 비작동 상태로 될 수 있다.
작동 기간은 그 밖에도 최적화 기술로서 사용될 수 있다. 예를 들면, 작동 기간은 등록된 데이터베이스가 빈번하게 변경될 때 통지 전달 서비스(230)와 큐(220) 사이의 연결을 유지하기 위해 이용될 수 있다. 연결을 유지하는 것이 통지 전달 서비스(230)를 빈번히 작동시키는 비용을 절감시켜준다. 게다가, 작동 기간은 통신을 유지하기 위해 "상시 접속(always on)"으로 설정될 수 있다. 게다가, 디폴트 작동 기간 및/또는 발견적 방법에 부분적으로 기초한 작동 기간이 이용될 수 있다.
통지 전달 서비스(230)는 작동되면 큐(220)에 저장되어 있는 데이터베이스 질의 등록 정보에 액세스한다. 데이터베이스 질의 등록 정보는 등록된 질의의 후속 실행이 다른 결과를 반환할 것임을 나타내는 변경 메시지를 작성하여 전송하는 데 이용된다. 데이터베이스 질의 등록 정보는 일반적으로 변경 메시지를 어디로 전송해야 할지를 알려주는 전달 주소를 포함한다. 전달 주소는 추출되어 변경 메시지를 전송하는 데 이용될 수 있다. 게다가, 데이터베이스 질의 등록 정보는 일반적으로 무효화 통지(예를 들면, 이벤트 발생 및 플래그 설정)를 수신하기 위해 등록한 컴포넌트에 그 통지를 전달함으로써 통지 런타임 서비스(이하에 기술함)가 용이하도록 해주기 위해 변경 메시지에서 이용될 수 있는 고유 식별자를 포함한다.
전술한 데이터베이스 변경 요청은 시행 및/또는 보류될 수 있다. 한 일례에서, 통지 전달 서비스(230)가 큐(220) 내의 데이터베이스 질의 등록 정보를 처리했는지 여부와 상관없이 데이터베이스 변경이 시행될 수 있는 것인 비동기 모델이 이용될 수 있다. 비동기 모델의 이점은 통지 전달 서비스(230)가 나중에 데이터베이스 질의 등록 정보에 액세스할 수 있다는 것이며, 이 비동기 모델에서는 큐(220)에 2개 이상의 엔트리를 허용하여 확장성을 제공함으로써 하나 이상의 통지 전달 서비스가 순차적으로 및/또는 동시적으로 큐(220)에 액세스할 수 있다.
다른 일례에서, 관련된 데이터베이스 질의 등록 정보가 통지 전달 서비스(230)에 의해 액세스될 때까지 및/또는 변경 메시지가 (예를 들면, 이하에 기술하는 통지 런타임 서비스에 의해) 전송 및/또는 수신될 때까지 데이터베이스 변경이 금지되는 것인 동기 모델이 이용될 수 있다. 동기 모델은 데이터베이스 변경을 시행하기에 앞서 변경 메시지가 전송 및/또는 수신되도록 보장함으로써 신뢰성과 안정된, 즉 일관성있는 데이터를 제공한다.
데이터베이스 변경 메시지가 전달 및/또는 수신되었는지 여부를 판정하기 위해 여러가지 기술이 이용될 수 있다. 제1 기술에서는 수신측 장치로부터의 긍정 확인 응답(예를 들면, ACK)을 필요로 한다. ACK는 변경 메시지의 전송 성공(예를 들면, 오염되지 않은 전송)을 가리키는 것일 수 있으며, 또 데이터베이스 변경의 시행을 호출할 수 있다. 제2 기술에서는 전송 실패를 가리키는 것일 수 있는 수신측 장치로부터의 부정 확인 응답(NAK)의 수신 및/또는 긍정 확인 응답의 미수신을 필요로 하며, 이 때 데이터베이스 변경은 변경 메시지가 그의 목적지인 수신기 및/또는 수신측으로 성공적으로 전송될 때까지 보류, 연기 및/또는 지연된다. 제3 기술에서는, 통지 전달 서비스(230)와 수신측 장치 사이에 통신이 행해지고 있는지를 판정하기 위해 Ping(Packet Internet Groper)이 이용될 수 있다. 통지 전달 서비스(230)는 데이터 패킷을 수신측 장치(예를 들면, 통지 런타임 서비스)에 전송하고 응답을 기다릴 수 있다. 데이터 패킷은 변경 메시지보다 앞서, 그와 동시에 또는 그에 후속하여 전송될 수 있다. 수신측 장치로부터의 응답은 통신이 행해지고 있음을 확인시켜주는 것일 수 있다.
서비스 브로커(210)가 서버(200) 내에 도시되어 있지만 서비스 브로커(210)는 클라이언트 내에 또는 다른 서버 내에 존재할 수 있음을 잘 알 것이다. 그 외에도, 서비스 브로커(210)는 데이터베이스(예를 들면, SQL 기반 데이터베이스)일 수 있으며, 2개 이상의 큐(220) 및/또는 통지 전달 서비스(230)를 포함할 수 있다. 게다가, 2개 이상의 통지 전달 서비스가 전술한 바와 같이 이용될 수 있음을 잘 알 것이다. 예를 들면, 2개 이상의 통지 전달 서비스가 큐(220)에 액세스할 수 있다. 또한, 2개 이상의 통지 전달 서비스가 거의 유사한 큐(예를 들면, 큐(220))를 포함하여 복수의 큐(예를 들면, 큐(120))에 순차적으로 및/또는 동시적으로 액세스할 수 있다.
게다가, 큐(220)로부터 통지 전달 서비스(230)로의 데이터베이스 질의 등록 정보의 전송 동안 중간 컴포넌트(intermediate component)(도시 생략)가 이용될 수 있음을 잘 알 것이다. 예를 들면, 데이터베이스 질의 등록 정보는 통지 전달 서비스(230)에 의해 엑세스되기에 앞서 다른 매체 상에 저장될 수 있다. 본 발명의 일태양에서는, 데이터베이스 질의 등록 정보가 로그 파일에 저장될 수 있다. 그 후에, 통지 전달 서비스(230)는 그 로그 파일로부터의 데이터베이스 질의 등록 정보를 이용한다. 본 발명의 다른 태양에서는, 데이터베이스 질의 등록 정보를 통지 전달 서비스(230)로 전송하는 것을 신속하게 하기 위해 버퍼가 이용될 수 있다. 본 발명의 또다른 태양에서는, 예를 들어 성능을 향상시키기 위해, 데이터베이스 및/또는 서비스 브로커(210)와 관련된 자원을 해방시켜 주도록 데이터베이스 질의 등록 정보가 중간 컴포넌트 등으로 오프로드(off-load)될 수 있다. 중간 컴포넌트를 준비해 두는 것이 시스템 유연성을 향상시킴을 잘 알 것이다.
이제 도 3을 참조하면, 본 발명의 일 태양에 따른 전형적인 데이터 무효화 시스템(300)이 도시되어 있다. 데이터 무효화 시스템(300)은 클라이언트(310), 서버(320), 메모리(330), 서비스 브로커(340), 큐(350), 및 통지 전달 서비스(360)를 포함한다.
클라이언트(310)는 본 명세서에 기술한 바와 같이 데이터베이스 질의를 서버(320)에 등록하고 관련 변경 메시지를 통지 전달 서비스로부터 수신하기 위한 메카니즘(도시 생략)을 포함할 수 있다. 등록은 일반적으로 데이터베이스 질의 등록 정보, 전달 주소, 고유 식별자(예를 들면, 글로벌 고유 식별자(GUID)), 큐 이름, 타임아웃 기간, 및 예를 들면 통신 옵션(예를 들면, 프로토콜 및 포트) 및 보안 옵션(예를 들면, 암호화 및 인증) 등의 선택적인 부가의 정보를 포함하는 데이터베이스 등록 메시지를 작성하는 것을 포함한다. 이어서, 데이터베이스 등록 메시지는 서버(320)로 전송될 수 있다. 2개 이상의 클라이언트(예를 들면, 2개 이상의 클라이언트(310)) 및/또는 다른 컴포넌트가 하나 이상의 데이터베이스 질의를 순차적으로 및/또는 동시적으로 또한 본 발명의 일 태양에 따라 등록할 수 있음을 잘 알 것이다. 게다가, 복수의 클라이언트가 거의 유사한 결과를 반환하는 질의를 등록할 수 있다.
본 발명의 일 태양에서, 데이터베이스 등록 메시지는 질의(예를 들면, 데이터베이스 등록 메시지에 포함된 데이터베이스 질의 등록 정보와 관련된 질의)와 함께 서버(320)로 전송될 수 있다. 질의 결과가 메모리(330) 및/또는 웹 서버 상의 저장 장치를 비롯한 다른 저장 장치에 저장될 수 있다. 결과를 메모리(330)에 저장하게 되면 후속 질의가 거의 유사한 결과를 반환하게 될 때 클라이언트(310)는 물론 임의의 다른 클라이언트가 그 후속 질의를 수행하지 않고 그 저장된 결과를 이용할 수 있게 된다. 본 발명의 다른 태양에서, 데이터베이스 등록 메시지는 결과를 요청하지 않고 서버(320)로 전송될 수 있다. 예를 들어, 클라이언트는 이전에 실행된 질의와 거의 유사한 질의를 등록할 수 있으며, 이 때 이전에 실행된 질의의 결과는 메모리(330)에 저장되어 있고 이 결과가 클라이언트에 의해 이용될 수 있다. 다른 일례에서, 클라이언트는 그 자신과 관련된 다른 질의의 결과에 영향을 주는 질의를 등록할 수 있다. 또다른 일례에서, 클라이언트는 원하는 경우 데이터베이스에 대한 어떤 변경에 대해서도 무효화 통지를 수신하도록 등록할 수 있다.
저장된 질의 결과가 예를 들면 미가공 데이터, 변환된 데이터, 및/또는 질의가능 데이터(queryable data)를 포함할 수 있음을 잘 알 것이다. 미가공 데이터는 유연성이 있으며, 여러가지 변환 기술이 미가공 데이터의 대체 표현을 제공하기 위해 이용될 수 있다. 예를 들어, 미가공 데이터는 문자-숫자 텍스트로서, 기호로, 그래프, 표 및 차트로, 그리고 다른 공지의 형식 및/또는 포맷을 사용하여 표현될 수 있다. 변환된 데이터 또는 객체를 저장하는 것은 변환 시간을 절감해주며 기존의 지원(예를 들면, 응답 캐시)을 증대시킬 수 있다. 질의 가능 데이터는 이 질의 가능 데이터 세트 또는 이 질의 가능 데이터 세트의 서브세트를 이용하는 후속 요청을 통해 이용될 수 있다. 예를 들면, 질의가능 데이터 세트는 복수의 카테고리를 포함할 수 있으며, 후속 요청은 복수의 카테고리 및/또는 복수의 카테고리의 서브세트에 대해 데이터 세트에 질의를 할 수 있다.
서버(320)가 데이터베이스 변경 요청을 수신한 후에, 데이터베이스 등록 메시지 내의 데이터베이스 질의 등록 정보가 서비스 브로커(340)에 제공된다. 서비스 브로커(340)는 데이터베이스 질의 등록 정보의 적어도 일부를 큐(350)에 집어 넣고, 통지 전달 서비스(360)를 작동시킨다. 전술한 바와 같이, 데이터베이스 변경 요청은 비동기적으로 또는 동기적으로 시행될 수 있다.
이어서, 통지 전달 서비스(360)는 데이터베이스 질의 등록 정보를 이용하여 변경 메시지를 작성하고 이를 클라이언트(310)에 전달한다. 예를 들어, 통지 전달 서비스(360)는 전달 주소 및 고유 식별자(예를 들면, GUID)를 데이터베이스 질의 등록 정보로부터 추출하여 이를 이용한다. 고유 식별자는 일반적으로 변경 메시지 내에 포함되어 있으며, 변경 메시지는 일반적으로 전달 주소(예를 들면, 클라이언트(310)와 관련된 통지 런타임 서비스)로 전달된다.
변경 메시지를 수신한 후에, 고유 식별자가 추출되고 이는 클라이언트(310)에 통지를 하는 데 사용된다. 이렇게 한 후에, 클라이언트(310)는 후속 동작을 결정할 수 있다. 예를 들어, 본 발명의 일 태양에서, 클라이언트(310)는 갱신과 표시 및/또는 갱신된 데이터의 저장을 위해 다른 질의를 수행할 수 있다. 본 발명의 다른 태양에서, 클라이언트(310)는 메모리(330) 내의 결과가 후속 질의에 의해 반환될 것인 결과와 부합하지 않을지라도 메모리(330) 내의 결과를 계속하여 표시 또는 이용하기로 결정할 수 있다. 본 발명의 또다른 태양에서, 클라이언트(310)는 다른 변경(예를 들면, 질의 결과를 변경시키게 될 변경)이 발생할 때 통지를 수신하기 위해 데이터베이스 질의를 재차 등록 및/또는 자동 재등록을 이용할 수 있다. 본 발명의 또다른 태양에서, 변경 통지는 예를 들어 변경 정보의 로깅 및/또는 변경된 데이터에 기초한 대책 시행 등 다른 처리를 트리거할 수 있다.
도 4는 본 발명의 일 태양에 따른 전형적인 등록 시스템(400)을 나타낸 것이다. 등록 시스템(400)은 데이터베이스 질의의 등록(예를 들면, 서버(200, 320) 및 임의의 SQL 기반 서버에의 등록)이 용이하도록 해주기 위해 이용될 수 있다. 등록 시스템(400)은 메시지 어셈블러(410), 이름 제공기(420), 시간 제공기(430), ID 제공기(440) 및 주소 제공기(450)를 포함한다.
메시지 어셈블러(410)는 데이터베이스 질의 등록 요청(예를 들면, 신청)을 접수하고, 데이터베이스 질의 등록 정보의 패키지화를 조정하며, 시스템(100-300) 등의 시스템에 의해 사용될 수 있는 데이터베이스 질의 등록 정보를 전송한다. 전술한 바와 같이, 데이터베이스 질의 등록 정보는 일반적으로 큐 이름, 타임아웃 기간, 고유 식별자, 및 전달 주소를 포함한다. 그렇지만, 상기 데이터베이스 질의등록 정보는 본 발명을 한정하기 위한 것이 아님을 잘 알 것이다. 다른 적당한 정보도 본 발명에 따라 이용될 수 있다. 게다가, 데이터베이스 질의 등록 정보의 여러가지 순서가 본 발명의 일 태양에 따라 이용될 수 있다.
메시지 어셈블러(410)는 제공기(420-450) 중 하나 이상 및/또는 다른 컴포넌트(예를 들면, 본 명세서에 기술된 통지 런타임 서비스 및/또는 범용 리스너(universal listener))로부터 데이터베이스 질의 등록 정보를 획득할 수 있다. 이름 제공기(420)는 데이터베이스의 상태를 반환된 이전의 결과와 부합하지 않게 만들게 될 데이터베이스 변경이 일어난 후에 등록된 데이터베이스 질의와 관련된 데이터베이스 질의 등록 정보를 저장할 큐의 이름(예를 들면, 큐(120) 중의 하나의 이름)을 제공하는 데 이용될 수 있다. 예를 들어, 이름 제공기(420)는 하나 이상의 이용가능한 큐로부터 큐 이름을 랜덤하게 선택하는 일, 사용자 정의된 큐 이름을 제공하는 일, 및/또는 디폴트 큐 이름을 제공하는 일을 할 수 있다. 본 발명의 다른 태양에서, 큐 이름은 이름 제공기(420)를 이용하지 않도록 데이터베이스 질의 등록 요청 내에 포함될 수 있다.
시간 제공기(430)는 등록된 데이터베이스 질의에 대한 타임아웃 기간을 제공할 수 있다. 타임아웃 기간은 지속 기간 또는 만료 기간을 지정할 수 있으며, 이 때 타임아웃 기간이 경과되면, 데이터베이스 질의 등록 정보는 데이터베이스 변경이 일어나지 않았더라도 타임아웃 기간이 만료되었음을 알리기 위해 변경 메시지를 호출한다. 이렇게 함으로써 서버가 사용자의 흥미를 더 이상 끌지 못할 수 있는 데이터베이스 질의에 대한 등록 정보를 장기간 동안 보유하고 있을 필요없이, 등록된 데이터베이스 질의에 대응하는 어떤 저장된 결과도 더이상 신뢰할 수 없다는 것 및/또는 정확하지 않다는 것을 사용자에게 통지할 수 있다.
ID 제공기(440)는 신청에 대해 고유 식별자(예를 들면, 글로벌 고유 식별자, 즉 GUID)를 할당하는 데 이용된다. 일반적으로, 고유 식별자는 등록되어 있는 데이터베이스 질의를, 신청을 요청하는 컴포넌트(예를 들면, 클라이언트, 객체 인스턴스 및 종속성)와 관련지워주는 메카니즘을 제공한다. 이러한 관련은 예를 들면 커맨드, 뷰, 테이블 및/또는 자원과의 관련일 수 있다. 고유 식별자는 상기 요청을 하는 컴포넌트로 무효화 통지를 라우팅하는 데 이용될 수 있다.
주소 제공기(450)는 전달 주소를 제공하는 데 이용된다. 전달 주소는 등록된 질의의 결과에 영향을 주게 될 데이터베이스 변경에 응답하여 변경 메시지를 전송할 때 통지 전달 서비스에 의해 이용된다. 전달 주소는 변경 메시지의 목적지 주소를 가리킨다. 예를 들어, 전달 주소는 통지 런타임 서비스 및/또는 범용 리스너(예를 들면, HTTP.sys)와 관련되어 있는 것으로서 이는 신청에 의해 등록된다. 전달 주소를 획득하기 위해 대체 컴포넌트 및 시스템이 이용될 수 있음을 잘 알고 있을 것이다. 예를 들어, 통지 런타임 서비스 및/또는 범용 리스너는 주소 제공기(450) 및/또는 다른 기술을 통해 예를 들면 어떤 중간 컴포넌트도 없이 전달 주소를 제공하는 데 이용될 수 있다.
데이터베이스 질의 등록 정보를 획득한 후에, 메시지 어셈블러(410)는 데이터베이스 질의 등록 메시지를 작성한다. 일반적으로, 데이터베이스 질의 등록 메시지는 고유 식별자, 전달 주소, 큐 이름 및 타임아웃 기간을 포함한다. 데이터베이스 질의 등록 정보는 그 메시지 내에서의 위치 및 포맷이 다양할 수 있음을 잘 알 것이다. 예를 들어, 본 발명의 일 태양에서, 데이터베이스 질의 등록 정보는 파싱될 수 있는 구분 문자열(delimited string)이다. 본 발명의 다른 태양에서는, 데이터베이스 질의 등록 정보의 이진 표현이 이용된다. 본 발명의 또다른 태양에서는, 데이터베이스 질의 등록 정보의 적어도 일부가 "쿠키"를 형성하는 데 이용된다. 예를 들어, 전달 주소 및 고유 식별자는 "쿠키" 및/또는 마크업 언어(예를 들면, XML) 기반 메시지로서 제공될 수 있다.
이어서, 메시지 어셈블러(410)는 데이터베이스 질의 등록 메시지를 전송한다. 메시지가 질의보다 앞서, 그와 동시에 및/또는 그에 후속하여 전송될 수 있음을 잘 알 것이다. 게다가, 메시지는 커맨드(예를 들면, 실행 커맨드)에 넣어 및/또는 저장된 프로시저와 함께 전송될 수 있다. 등록된 데이터베이스 질의의 결과를 변경하는 데이터베이스 변경이 일어날 때, 데이터베이스 질의 등록 정보는 통지를 수신하기 위해 등록된 컴포넌트로 무효화 통지를 전달하는 것이 용이하도록 해주기 위해 이용될 수 있다.
등록 시스템(400), 메시지 어셈블러(410), 이름 제공기(420), 시간 제공기(430), ID 제공기(430) 및 주소 제공기(440)는 그 용어가 본 명세서에 정의되어 있는 바와 같이 컴퓨터 컴포넌트일 수 있음을 잘 알 것이다.
도 5는 본 발명의 일 태양에 따른 전형적인 통지 시스템(500)을 나타낸 것이다. 통지 시스템(500)은 주소 분배기(510), 출력 컴포넌트(520), 메시지 수신기(530), 및 ID 추출기(540)를 포함한다.
통지 시스템(500)은 일반적으로 데이터베이스 질의 등록 요청이 수신된 후에 작동된다. 예를 들면, 데이터베이스 질의 등록 요청을 수신한 후, 등록 컴포넌트(예를 들면, 등록 시스템(400))는 통지 시스템(500)을 작동시킬 수 있다.
작동 후에, 통지 시스템(500)은 데이터베이스 질의 등록 메시지에 대한 전달 주소를 획득하는 데 이용 및/또는 무효화 통지를 제공하는 것이 용이하도록 해주는 데 활용될 수 있다. 주소 분배기(510)는 전달 주소를 획득하는 데 이용될 수 있다. 주소 분배기(510)가 전달 주소 요청을 (이하에 기술하는 바와 같이, 예를 들면, 범용 리스너 및/또는 통지 런타임 서비스에 등록하는 것을 통해) 수신한 후에, 전달 주소는 획득되고 이는 출력 컴포넌트(520)에 제공된다. 이어서, 전달 주소는 요청을 한 컴포넌트(예를 들면, 등록 시스템(400))로 라우팅된다.
통지 시스템(500)은 그 밖에도 변경 메시지를 수신할 수 있다. 예를 들어, 통지 전달 서비스(본 명세서에 기술되어 있음)는 변경 메시지를 통지 시스템(500)으로 전송하는 데 이용될 수 있다. 메시지 수신기(530)는 변경 메시지를 수신한다. 메시지 수신기(530)는 에러 있는 변경 메시지를 전달하는 일을 줄이기 위해 여러가지 보안 및 검증 기술을 이용할 수 있다. 예를 들어, 본 발명의 일 태양에 따르면 인증서 및/또는 고유 식별자 검증이 이용될 수 있다. 이어서, 메시지 수신기(530)는 변경 메시지를 ID 추출기(540)에 제공한다. ID 추출기(540)는 데이터베이스 질의 등록 메시지 내부로부터 고유 식별자를 획득한다.
이어서, 고유 식별자는 통지를 수신하기 위해 등록된 컴포넌트들로 무효화 통지를 라우팅하기 위해 출력 장치(520)에 의해 이용된다. 예를 들어, 본 발명의일 태양에서, 고유 식별자에 할당된 등록 인스턴스와 관련된 클라이언트는 그 어느 것이라도 통지(예를 들면, 이벤트)를 제공받게 된다. 본 발명의 다른 태양에서, 이전에 반환된 질의 결과를 이용하려고 하는 어떤 클라이언트에게라도 그 결과가 무효로 되었음을 알려주기 위해 플래그 및/또는 다른 기술자(descriptor)가 이용된다.
도 6은 본 발명의 일 태양에 따른 전형적인 클라이언트-서버 시스템(600)을 나타낸 것이다. 클라이언트-서버 시스템(600)은 SQL 기반 클라이언트-서버일 수 있음을 잘 알 것이다. 클라이언트-서버 시스템(600)은 종속성 인스턴스(dependency instance)(610), 선택적인 종속성 스위치(620), 통지 런타임 서비스(630), 및 종속성 연관(dependency association)(640)을 포함하는 클라이언트(605)와, 검출 유닛(650), 데이터베이스(660), 서비스 브로커(670), 큐(680) 및 통지 전달 서비스(690)를 포함하는 서버(645)를 포함한다.
클라이언트(605)는 데이터베이스 질의 등록 요청을 통해 등록을 개시한다. 일반적으로, 데이터베이스 질의 등록 요청은 큐 이름 및/또는 타임아웃 기간을 포함한다. 그렇지만, 상기의 것에 대해서는 물론 다른 옵션에 대해서도 디폴트 값이 이용될 수 있음을 잘 알 것이다. 종속성 인스턴스(610)는 등록 요청을 표현하여 하나 이상의 등록된 질의와 통지를 받게 될 클라이언트(605) 사이의 연관성을 제공하기 위해 생성된다. 종속성 인스턴스(610)는 생성과 동시에 그 요청에 대한 고유 식별자를 획득한다. 단 하나의 종속성 인스턴스(610)가 하나 이상의 등록된 질의와 연관될 수 있으며 이 때 질의 중 어느 하나의 결과에 영향을 주게 될 변경이 통지를 생성하게 됨(예를 들면, 질의 중 어느 하나의 결과에 변경이 일어나는 경우 몇개의 데이터베이스 질의로부터 발생된 결과가 무효화됨)을 잘 알 것이다. 식별자의 고유성은 등록된 질의의 그룹화에 대응할 수 있으며, 이 때 데이터베이스 변경 시에 질의들 중 하나 이상이 전체 결과(aggregated result)를 무효화할 수 있다. 예를 들어, 서로 다른 등록된 질의 세트에 의해 영향을 받는 결과에 대해 서로 다른 고유 식별자가 획득될 수 있다.
선택적인 종속성 스위치(620)를 통해 통지 런타임 서비스에 등록하기 위해 고유 식별자가 이용되며, 이 때 종속성 인스턴스(610)는 고유 식별자를 제공하고 종속성 스위치(620)에 등록하며, 이어서 종속성 스위치(620)는 고유 식별자를 제공하고 통지 런타임 서비스(630)에 등록한다. 종속성 스위치(620) 및/또는 통지 런타임 서비스(630)가 비작동 중인 경우, 종속성 스위치(620) 및/또는 통지 런타임 서비스(630)가 등록보다 앞서 기동된다. 등록 후에, 통지 런타임 서비스(630)는 전달 주소를 종속성 인스턴스(610)에 제공한다. 선택적인 종속성 스위치(620)가 최적화 기술로서 이용되고 또 이 스위치가 이용되지 않는 경우 종속성 인스턴스(610)가 선택적인 종속성 스위치(620) 등의 중간 컴포넌트에 사전 등록하지 않고 통지 런타임 서비스(630)에 등록할 수 있음을 잘 알 것이다. 게다가, 이용되는 통지 런타임 서비스는 디폴트, 클라이언트 기능, 데이터베이스 질의 등록 정보, 구성, 통계, 및/또는 적응적 기술 중 하나에 의해 선택될 수 있다.
상기한 등록 기술은 한 프로세스 내의 하나 이상의 종속성 인스턴스(예를 들면, 종속성 인스턴스(610))에 그 프로세스 내의 종속성 스위치(예를 들면, 종속성스위치(620))에 등록하는 수단을 제공함으로써 프로세스들 간의 상호 참조를 경감시킬 수 있으며, 이 때 종속성 스위치 및/또는 복수의 프로세스로부터의 다른 종속성 스위치(예를 들면, 종속성 스위치(620) 등)는 프로세스간 참조를 통지 런타임 서비스(630)에 등록할 수 있다.
이어서, 전달 주소, 고유 식별자, 큐 이름, 타임아웃 기간 및/또는 부가의 정보가 종속성 연관(640)에 제공되고, 그 후에 등록 메시지에 넣어 서버(645)로 전송된다. 종속성 인스턴스(610)(뿐만 아니라 다른 종속성 인스턴스)가 하나 이상의 클라이언트 컴포넌트와 연관되고 복수의 질의 등록에 포함될 수 있으며, 이 때 등록된 질의 중 어느 하나의 결과에 대한 변경이 거의 유사한 클라이언트 동작을 가져오게 됨을 잘 알 것이다. 전술한 바와 같이, 서버(645)는 검출 유닛(650), 데이터베이스(660), 서비스 브로커(670), 큐(680) 및 통지 전달 서비스(690)를 포함한다.
검출 유닛(650)은 데이터베이스 질의 등록 정보를 유지하고 등록된 질의에 대한 무효화를 언제 호출할 지를 결정하는 데 이용될 수 있다. 예를 들어, 데이터베이스(660)를 변경하라는 요청이 수신되면, 등록된 질의가 그 변경과 연관되어 있는지 여부를 판정하는 데 데이터베이스 질의 등록 정보가 이용될 수 있다. 등록된 질의의 결과가 변경되면, 적어도 데이터베이스 질의 등록 정보는 서비스 브로커(670)에 제공될 수 있다. 검출 유닛(650)이 무효화 이유(예를 들어, (전술한 바와 같은) 데이터베이스 변경, 타임아웃 기간 만료, 메모리 한계, 질의 복잡성, 서버 재부팅 및 시스템 에러), 데이터베이스 변경의 속성 표시(예를 들면, 삽입, 삭제, 갱신 및 스키마 변경) 및/또는 변경의 내용(예를 들면, 최초값 및/또는 현재값) 등의 부가의 정보를 전송할 수 있음을 잘 알 것이다.
서비스 브로커(670)에 데이터베이스 질의 등록 정보를 전송한 후에, 검출 유닛(650)은 데이터베이스 질의 등록 정보를 폐기(예를 들면, 자동적으로 미등록) 또는 보유할 수 있다. 데이터베이스 질의 등록 정보의 폐기는 (예를 들면, 질의를 등록하는 컴포넌트가 통지를 수신하는 일에 더 이상 관심이 없을 때) 후속 변경이 질의에 대한 다른 무효화를 일으키지 않게 해준다. 데이터베이스 질의 등록 정보를 폐기하는 데 적당한 기술로는 정적 폐기(static discard)(예를 들면, 무효화를 호출한 후의 폐기), 적어도 부분적으로 데이터베이스 질의 등록 정보에 기초한 폐기(예를 들면, 폐기 필드 또는 파라미터), 적어도 부분적으로 통지 런타임 서비스로부터의 응답에 기초한 폐기(예를 들면, 무효화를 감시하는 관련 컴포넌트가 여전히 있는 경우 데이터베이스 질의 등록 정보를 보유하고, 그렇지 않은 경우 폐기함), 및 이전의 등록 메시지를 대체하는 후속 등록 메시지에 기초한 폐기가 있다. 데이터베이스 질의 등록 정보를 보유하게 되면 후속 데이터베이스 변경과 연관된 부가의 무효화를 수신할 수 있게 된다.
검출 유닛(650)으로부터 데이터베이스 질의 등록 정보를 수신한 후에, 서비스 브로커(670)는 데이터베이스 질의 등록 정보의 저장 및 통지 전달 서비스로의 전송이 용이하도록 해준다. 서비스 브로커(670)는 데이터베이스 질의 등록 정보를 큐(680)에 집어넣고, 또 서비스 브로커(670)는 통지 전달 서비스(690)를 호출하도록 구성되어 있는 경우 그 호출을 행한다. 통지 전달 서비스(690)는 작동 중인 동안 큐(680)에 있는 데이터베이스 질의 등록 정보를 이용하여 등록된 질의의 결과가 데이터베이스 변경으로 인해 변경되었음(예를 들면, 후속 결과가 무효화되거나 및/또는 이전에 검색된 결과와 부합되지 않음)을 가리키는 변경 메시지를 작성할 수 있다. 검출 유닛(650)은 또한 등록된 질의에 대한 변경 메시지를 호출하기 위해 데이터베이스 질의 등록 정보를 통지 전달 서비스(690)에 제공할 수 있음을 잘 알 것이다.
통지 전달 서비스(690)는 클라이언트(605)의 통지 런타임 서비스(630)로 변경 메시지를 라우팅하기 위해 데이터베이스 질의 등록 정보의 적어도 일부를 이용한다. 통지 런타임 서비스(630)는 통지를 (선택에 따라서는 종속성 스위치(620)를 통해) 대응하는 종속성 인스턴스(610)로 라우팅하기 위해 변경 메시지 내의 종속성 고유 식별자를 이용한다. 이어서, 종속성 인스턴스(610)는 클라이언트(605)에 변경을 알려준다. 예를 들어, 종속성 인스턴스(610)가 통지를 수신한 후, 종속성 인스턴스에 등록하려는 후속 시도가 있을 때 종속성 이벤트가 발생 및/또는 플래그가 이벤트를 발생하도록 설정될 수 있다. 2개 이상의 클라이언트가 통지를 수신하기 위해 등록할 수 있으며 종속성 인스턴스(610)가 클라이언트(605) 및 유사한 및/또는 다른 머신 상에 존재하는 다른 클라이언트에 순차적으로 및/또는 동시적으로 알려줄 수 있음을 잘 알 것이다. 게다가, 클라이언트(605)(또는 종속성 인스턴스(610)를 인스턴스화하는 다른 클라이언트)는 변경이 일어날 때 더 이상 존재하지 않을 수 있다. 그렇지만, 통지를 수신하기 위해 등록된 다른 클라이언트가 있는 경우 그 클라이언트는 종속성 인스턴스(610)에 의해 통지를 받을 수 있다.
통지 런타임 서비스(630)와 통지 전달 서비스(690) 사이의 통신 두절로 인해 부합되지 않는 질의 결과를 이용하게 되는 것을 줄이기 위해 여러가지 기술이 이용될 수 있음을 잘 알 것이다. 예를 들면, ACK/NAK 통신 코드가 에러없는 전송을 긍정 확인 응답하고 오염된 전송 및/또는 전송 없음을 나타내기 위해 이용될 수 있다. 본 발명의 다른 태양에서, 통지 런타임 서비스(630)는 통지 전달 서비스(690)를 폴링할 수 있다. 성공하였으면, 통신이 검증된 것이다. 또다른 일례에서, 통지 런타임 서비스(630)는 "정지(shut down)"될 수 있다. 통지 런타임 서비스(630)는 완전히 정지되기 이전에 통지(예를 들면, 데이터베이스 상태를 알 수 없음)를 제공할 수 있다. 통지 전달 서비스(690)도 이와 마찬가지로 이용될 수 있다. 예를 들어, 통지 전달 서비스(690)는 통지 런타임 서비스(640)를 폴링할 수 있다. 성공하였으면, 통신이 검증된 것이다. 성공하지 못했으면, 데이터베이스 변경은 통지 전달 서비스(690)가 변경 메시지를 전달할 수 있을 때까지 보류되거나 시행되지 않을 수 있다.
도 7은 본 발명의 일 태양에 따른 다른 전형적인 클라이언트-서버 시스템(700)을 나타낸 것이다. 클라이언트-서버 시스템(600)과 같이, 클라이언트-서버 시스템(700)은 종속성 인스턴스(610) 및 종속성 연관(640)을 포함하는 클라이언트(605)와, 검출 유닛(650), 데이터베이스(660), 서비스 브로커(670), 큐(680), 및 통지 전달 서비스(690)을 포함하는 서버(645)를 포함한다. 그 밖에, 클라이언트(605)는 종속성 리스너(710)를 포함하고, 클라이언트-서버 시스템(700)은 클라이언트(605)와 서버(645)에 작용하는 범용 리스너(720)를 더 포함한다.
전술한 바와 같이, 클라이언트(605)는 데이터베이스 질의 등록 요청을 통해 등록을 개시하며, 이 요청은 종속성 인스턴스(610)의 생성을 포함할 수 있다. 종속성 인스턴스(610)의 생성은 고유 식별자(예를 들면, GUID)를 발생하며, 이 고유 식별자는 다음에 종속성 리스너(710)에 등록하는 데 사용된다. 종속성 리스너(710)(뿐만 아니라 다른 종속성 리스너)는 범용 리스너(720)(예를 들어, HTTP 요청을 사용자 모드 애플리케이션으로 라우팅하는 HTTP.sys 또는 커널-모드 장치 드라이버)에 등록하기 위해 고유 URI를 발생한다. GUID 및 URI는 종속성 인스턴스(610)를 통해 고유 식별자 및 전달 주소로서 드러나고 질의 등록 메시지에 넣어 서버(645)로 전송된다. 고유 URI의 생성이 상대 URI의 일부인 제2 고유 식별자를 통해 용이하게 행해질 수 있음을 잘 알 것이다. 게다가, 이용되는 범용 리스너는 디폴트, 클라이언트 기능, 데이터베이스 질의 등록 정보, 구성, 통계, 및/또는 적응적 기술 중 하나에 의해 선택될 수 있다.
질의 등록 메시지는 검출 유닛(650)에 의해 수신 및 관리되며, 이 검출 유닛(650)은 등록된 데이터베이스 질의와 관련된 데이터베이스 변경을 검출하고, 데이터베이스 변경이 일어나 등록된 질의의 후속 실행이 다른 결과를 반환하게 될 것인 경우 데이터베이스 질의 등록 정보를 서비스 브로커(670)에 제공한다. 전술한 바와 같이, 검출 유닛(650)은 다른 정보를 전송할 수 있고 또 후속 데이터베이스 변경에 대한 데이터베이스 질의 등록 정보를 유지하거나 질의 등록을 취소(예를 들면, 미등록)할 수 있다.
서비스 브로커(670)는 데이터베이스 질의 등록 정보를 저장하고 이를 통지전달 서비스(690)로 전송하는 것이 용이하도록 해준다. 서비스 브로커(670)는 데이터베이스 질의 등록 정보를 큐(680)에 넣고, 또 서비스 브로커(670)는 통지 전달 서비스(690)를 호출한다. 작동된 통지 전달 서비스(690)는 데이터베이스 질의 등록 정보를 이용하여 변경 메시지를 작성하여 전송할 수 있다.
통지 전달 서비스(690)는 변경 메시지 내의 데이터베이스 질의 등록 정보의 적어도 일부를 이용하고 변경 메시지를 예를 들면 HTTP 요청으로서 범용 리스너(720)에 제공한다. 범용 리스너(720)는 URI 내의 상대 경로를 이용하여 요청을 종속성 리스너(710)로 라우팅한다. 종속성 리스너(710)는 데이터베이스 질의 등록 정보(예를 들면, 종속성 고유 식별자)를 이용하여 변경 메시지를 종속성 인스턴스(610)로 라우팅하여, 등록된 클라이언트(605)를 비롯한 임의의 클라이언트에 무효화 통지를 수신하도록 알려준다. 클라이언트-서버 시스템(600)과 유사하게, 여러가지 기술(예를 들면, ACK/NAK, Ping 및 자동 무효화)이 범용 리스너(720)와 통지 전달 서비스(690) 사이의 통신 두절로 인해 부합되지 않는 질의 결과를 이용하는 일을 줄이기 위해 이용될 수 있다.
종속성 리스너(710)와 범용 리스너(720)를 이용하게 되면 통지 런타임 서비스 등의 서비스를 클라이언트(605) 상에 설치하여 작동(예를 들면, 기동)시키는 일이 줄어들 것임을 잘 알 것이다. 게다가, 80번 포트가 사용될 수 있기 때문에 변경 메시지 및/또는 무효화 통지는 방화벽을 통해 전송될 수 있다. 그렇지만, 포트는 설정가능한 것으로서 임의의 포트가 이용될 수 있음을 잘 알 것이다.
도 8은 본 발명의 일 태양에 따른 전형적인 보안 기술을 나타낸 것이다. 시스템(800)은 클라이언트(810), 등록 요청 채널(830) 및 변경 메시지 채널(840)을 포함한다.
전술한 바와 같이, 클라이언트는 데이터베이스 질의 등록, 즉 데이터베이스 질의 신청을 개시한다. 예를 들어, 클라이언트(810)는 데이터베이스 질의 신청을 요청하는 데, 이 신청은 선택에 따라 큐 이름 및 타임아웃 기간을 포함한다. 그 후에, 부가의 데이터베이스 질의 등록 정보가 획득되며, 데이터베이스 질의 등록 메시지가 작성된다. 데이터베이스 질의 등록 메시지는 일반적으로 전달 주소, 고유 식별자, 큐 이름 및 타임아웃 기간을 포함하지만, 부가의 정보 및/또는 다른 정보를 포함할 수 있다. 데이터베이스 질의 등록 정보는 일단 구축되면 등록 채널(830)을 거쳐 서버(820)로 전송된다. 이어서, 서버(820)가 데이터베이스 변경 요청을 수신한 후에, 서버(820) 내의 검출 메카니즘 등을 이용하여 데이터베이스 변경이 등록된 질의의 후속 질의 결과를 언제 변경하게 될 것인지를 결정하게 된다. 이어서, 변경 메시지는 변경 메시지 채널(840)을 통해 클라이언트(810)로 전송(dispatch)될 수 있다.
데이터베이스 질의 등록 메시지에 포함된 고유 식별자(예를 들면, GUID)는 데이터베이스 질의 등록 메시지에 대한 보안 메카니즘을 제공할 수 있다. 예를 들면, 본 발명의 일 태양에서, GUID는 런타임 시에 데이터베이스 질의 등록 요청이 수신될 때 생성되며, 이에 따라 GUID를 "추측" 또는 모방할 기회가 줄어들게 된다. 이어서,고유 식별자는 서버(820)를 통해 전파되고 변경 메시지에 포함되어 있다. 등록된 데이터베이스가 변경되었다고 클라이언트에 허위 통보를 할 목적으로 모조된 데이터베이스 변경 메시지를 변경 메시지 채널(840)에 집어 넣으려고 하는 악의적 소스는 고유 식별자가 유효한 등록을 나타내지 않는 경우 무시될 것이다. 게다가, 본 발명의 일 태양에 따라 다른 보안 기술(예를 들면, 인증서)이 이용될 수 있다.
계속하여 도 9를 보면, 본 발명의 일 태양에 따른 전형적인 클라이언트-서버 시스템(900)이 도시되어 있다. 클라이언트-서버(900)는 커맨드 컴포넌트(920), 종속성(930), 통지 런타임 서비스(940) 및 선택적인 종속성 스위치(950)를 포함하는 클라이언트 머신(910)과, 서비스 브로커(970), 큐(980) 및 통지 전달 서비스(990)를 포함하는 서버(960)를 포함한다.
일반적으로, 클라이언트는 고유 식별자를 발생하는 종속성(930)(예를 들면, 객체)을 인스턴스화한다. 클라이언트는 일반적으로 생성자(constructor) 및/또는 메쏘드(method)를 통해 큐 이름 및 타임아웃 기간을 제공한다. 그렇지만, 디폴트 및/또는 다른 큐 이름과 타임 아웃 기간이 이용될 수 있다. 이어서, 종속성(930)은 선택적인 종속성 스위치(950)가 이용되는 경우 이 종속성 스위치(950)를 통해 통지 런타임 서비스(940)에 등록한다. 선택적인 종속성 스위치(950)가 이용되지 않는 경우, 등록은 어떤 중간 컴포넌트도 없이 종속성(930)과 통지 런타임 서비스(940) 사이에서 행해지게 된다. 이어서, 통지 런타임 서비스(940)는 종속성(930)에 전달 주소를 제공한다. 이어서, 클라이언트는 일반적으로 커맨드 컴포넌트(920)(예를 들면, 파생된 객체)를 인스턴스화하여 이를 종속성(930)과 연관시킨다. 큐 이름, 타임아웃 기간, 전달 주소 및 고유 식별자는 커맨드컴포넌트(920)에 제공된다. 이어서, 커맨드 컴포넌트(920)는 예를 들면 메쏘드의 호출을 통해 데이터베이스 질의를 서버 머신(960)에 등록하며, 이 때 예를 들면 큐 이름, 타임아웃 기간, 전달 주소 및 고유 식별자가 데이터베이스 질의 등록 메시지(예를 들면, 마크업 언어(예를 들면, XML) 파일)로서 전송된다. 종속성(930)이 2개 이상의 커맨드 컴포넌트(920) (뿐만 아니라 다른 커맨드 컴포넌트)와 연관될 수 있으며, 커맨드 컴포넌트는 유사한 및/또는 서로 다른 데이터베이스 질의를 거의 유사한 데이터베이스 질의 등록 메시지에 등록할 수 있음을 잘 알 것이다.
전술한 바와 같이, 서버 머신(960)은 서비스 브로커(970), 큐(980) 및 통지 전달 서비스(990)를 포함한다. 서버 머신(960)은 데이터베이스 변경을 검출하기 위해 여러가지 기술을 이용할 수 있다. 예를 들면, 데이터베이스 변경 요청이 수신될 때, 후속 질의의 결과가 변경될 것인지 여부를 판정하기 위해 등록된 질의에 대한 검색이 초기화된다. 변경된 데이터베이스와 관련된 데이터베이스 질의 등록 정보가 서비스 브로커(970)에 제공될 수 있다. 서비스 브로커(970)는 데이터베이스 질의 등록 정보를 큐(980)에 저장하고 통지 전달 서비스(990)를 작동시킬 수 있다.
통지 전달 서비스(990)는 데이터베이스 질의 등록 정보를 이용하여 변경 메시지를 작성하고 이를 통지 런타임 서비스(940)로 전송한다. 이어서, 통지 런타임 서비스(940)는 고유 식별자를 추출하고, 이 고유 식별자를 이용하여 그 메시지를 대응하는 종속성(930)으로 라우팅한다. 이어서, 종속성(930)은 변경된 데이터베이스와 관련된 클라이언트에 통지를 한다. 예를 들면, 종속성은 변경된 데이터 테이블과 관련된 애플리케이션에 대해 이벤트를 발생 및/또는 애플리케이션이 변경된 데이터 테이블과 관련되려고 시도할 때 이벤트를 발생하도록 플래그를 설정할 수 있다.
클라이언트-서버 시스템(700)과 유사하게, 본 발명의 일 태양에 따라 클라이언트-서버 시스템(900)에서 종속성 리스너(도시 생략) 및 범용 리스너(도시 생략)가 이용될 수 있음을 잘 알 것이다. 예를 들어, 종속성 리스너는 고유 URI를 범용 리스너에 등록하여 고유 식별자와 종속성 인스턴스 사이의 대응을 유지할 수 있다. 고유 식별자와 URI는 서버로 전송되는 데이터베이스 질의 등록 메시지에 포함될 수 있다. 후속 질의의 결과에 영향을 주게 될 것인 데이터베이스 변경이 일어난 후, 통지 전달 서비스(990)는 변경 메시지를 범용 리스너에 전달하기 위해 예를 들면 HTTP 요청을 작성하여 전송한다. 범용 리스너는 고유 URI를 이용하여 그 요청을 종속성 리스너로 라우팅할 수 있다. 종속성 리스너는 변경 메시지 내의 고유 식별자를 이용하여 대응하는 종속성이 등록된 임의의 클라이언트에게 무효화 통지를 수신하도록 통보하게 할 수 있다.
전술한 바와 같이, 종속성 리스너와 범용 리스너를 사용하게 되면 서비스(예를 들면, 통지 런타임 서비스)를 클라이언트 상에 설치하여 작동시키는 일이 수월하게 된다. 그 밖에도, 포트가 설정가능한 것어서 전송이 방화벽을 통해 행해질 수 있도록 예를 들면 80번 포트를 선택할 수 있다.
도 10 내지 도 12는 본 발명에 따른 방법들을 나타낸 것이다. 설명의 단순화를 위해, 이들 방법은 일련의 동작으로서 도시 및 설명되어 있다. 본 발명이 도시된 동작 및/또는 동작의 순서에 의해 한정되지 않으며, 예를 들면 동작은 여러가지 순서로 및/또는 동시적으로 또한 본 명세서에 제시 및 기술되어 있지 않은 다른 동작들과 함께 행해질 수 있음을 너무나도 잘 알 것이다. 게다가, 본 발명에 따른 방법을 구현하는 데 도시된 동작 모두가 필요하지 않을 수도 있다.
더욱이, 당업자라면 다른 대안에서는 방법이 일련의 상호 연관된 상태(예를 들면, 상태도) 또는 이벤트로서 나타내어질 수 있음을 너무나도 잘 알 것이다. 또한, 본 발명은 일반적으로 하나 이상의 컴포넌트에 의해 실행되는 프로그램 모듈 등의 컴퓨터 실행 가능 명령어로 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정의 작업을 수행하거나 특정의 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 데이터 구조 등을 포함한다. 일반적으로, 프로그램 모듈들의 기능은 다양한 실시예에서 원하는 바에 따라 결합 또는 분산될 수 있다.
도 10은 본 발명의 일 태양에 따른 등록 및 전달 방법(1000)을 나타낸 것이다. 등록 및 전달 방법(1000)은 데이터베이스 변경 요청이 수신된 후에 변경 메시지를 전달하기 위해 사용될 수 있으며, 이 때 이 변경은 등록된 질의의 결과를 변경하게 될 것이다. 단계 1010에서 시작하여, 컴포넌트(예를 들면, 클라이언트, 에이전트, 애플리케이션 및 사용자)는 등록된 질의의 결과에 영향을 주게 될 데이터베이스 변경이 일어날 때 통지를 수신하기 위한 데이터베이스 질의를 등록한다. 등록은 일반적으로 변경 통지의 전달이 용이하도록 해주는 (예를 들면, 도 1 내지 도 9에 기술된 것과 같은) 데이터베이스 질의 등록 정보를 제공하는 것을 포함한다.
단계 1020에서, 데이터베이스 변경 요청이 수신된다. 이 요청은 등록된 질의의 결과를 변경하게 될 변경을 포함할 수 있다. 이 요청은 데이터베이스 변경이 등록된 데이터베이스 질의와 관련되어 있는지를 판정하기 위한 메카니즘을 개시한다. 등록된 질의의 결과가 영향을 받게 되는 경우, 데이터베이스 질의 등록 정보의 적어도 일부가 서비스 브로커에 제공된다.
단계 1030에서, 서비스 브로커는 등록 정보를 큐에 저장하고 통지 전달 서비스를 작동시킨다. 그러면, 통지 전달 서비스는 데이터베이스 질의 등록 정보에 액세스가능하게 될 수 있다. 데이터베이스 질의 등록 정보를 제공하기 위해 여러가지 기술이 이용될 수 있음을 잘 알 것이다. 예를 들어, 데이터베이스 등록 정보는 큐로부터 "푸시(push)" 및/또는 통지 전달 서비스로 "풀(pull)"될 수 있다. 게다가, 예를 들면 임시 저장 장소를 제공함으로써 데이터베이스 질의 등록 정보의 전송이 용이하도록 해주기 위해 중간 저장 영역이 이용될 수 있다.
데이터베이스 질의 등록 정보는 변경 메시지를 작성 및 전달하는 데 이용되는 전달 주소 및 고유 식별자를 획득하기 위해 이용된다. 단계 1040에서, 통지 전달 서비스는 데이터베이스 변경 메시지를 전송한다. 이 메시지는 등록 정보의 적어도 일부를 포함하며, 일반적으로 고유 식별자를 포함한다. 예를 들어, 객체 ID가 전송될 수 있으며, 이 때 애플리케이션 객체 인스턴스에 대해 플래그가 설정 및/또는 이벤트가 발생된다. 본 명세서에 기술되어 있는 바와 같이, 통지 전달 서비스가 변경 메시지를 범용 리스너 및/또는 통지 런타임 서비스로 전송할 수 있음을 잘 알 것이다.
도 11 및 도 12는 본 발명의 일 태양에 따른 등록, 전달 및 통지 방법(1100)을 나타낸 것이다. 도 11을 참조하면, 참조 번호 1110에서, 데이터베이스 질의를 등록하라는 요청이 수신된다. 선택에 따라서, 이 요청은 큐 이름 및/또는 타임아웃 기간을 포함할 수 있다.
단계 1120에서, 고유 식별자 및 전달 주소가 (전술한 바와 같이, 예를 들면, 종속성 리스너 및 범용 리스너, 및/또는 종속성 스위치 및/또는 통지 런타임 서비스를 통해) 획득된다. 그 밖에, 큐 이름 및/또는 타임 아웃 기간을 비롯한 다른 정보도 획득될 수 있다. 이어서, 데이터베이스 질의 등록 정보를 이용하여 데이터베이스 질의 등록 메시지를 작성하고, 이 데이터베이스 질의 등록 메시지는 서버로 전송된다.
단계 1130에서, 서버는 데이터베이스 질의 등록 메시지에 포함된 데이터베이스 질의 등록 정보를 수신하여 저장한다. 서버가 데이터베이스 변경 요청을 수신한 후에, 그 변경이 등록된 질의의 후속 결과를 변경시키게 될지 여부를 검출하는 것이 용이하도록 해주는 메카니즘이 호출된다. 등록된 데이터베이스 질의가 데이터베이스 변경과 관련되어 있지 않은 경우, 본 방법(1100)은 예를 들면 아이들 상태(idle state)로 천이하여 그 다음 데이터베이스 변경을 기다릴 수 있다. 데이터베이스 변경이 등록된 질의의 결과에 영향을 주는 경우, 데이터베이스 질의 등록 정보가 서비스 브로커에 제공될 수 있다. 서비스 브로커는 데이터베이스 질의 등록 정보를 큐(예를 들면, 데이터베이스 질의 등록 정보 메시지에 포함된 큐 이름과관련된 큐)에 저장한다. 서비스 브로커는 그 밖에도 통지 전달 서비스를 작동시킬 수 있다.
도 12를 참조하면, 본 발명의 일 태양에 따른 도 11의 연속이 나타내어져 있다. 단계 1210에서, 큐에 저장된 데이터베이스 질의 등록 정보가 통지 전달 서비스에 제공된다. 일반적으로, 고유 식별자 및 전달 주소는 큐에 저장되어 있다.
단계 1220에서, 통지 전달 서비스는 일반적으로 고유 식별자를 포함하는 변경 메시지를 전송하고, 이를 (예를 들면, 통지 런타임 서비스 및/또는 범용 리스너의) 전달 주소로 전달한다. 변경 메시지가 수신되고, 단계 1230에서 변경 메시지 내의 고유 식별자가 추출되고 이를 이용하여 등록된 컴포넌트 및 그 후에 등록된 질의에 대한 변경을 등록하려고 시도하는 컴포넌트에 통지를 한다.
본 발명의 여러가지 태양에 대한 부가의 내용을 제공하기 위해, 도 13 및 이하의 설명은 본 발명의 여러가지 태양이 구현될 수 있는 적당한 운영 환경(1310)에 대한 간략하고 개괄적인 설명을 제공하기 위한 것이다. 본 발명이 일반적으로 하나 이상의 컴퓨터 또는 다른 장치에 의해 실행되는 프로그램 모듈 등의 컴퓨터 실행가능 명령어와 관련하여 기술되어 있지만, 당업자라면 본 발명이 다른 프로그램 모듈과 결합하여 및/또는 하드웨어와 소프트웨어의 결합으로서도 구현될 수 있음을 잘 알 것이다. 그렇지만, 일반적으로 프로그램 모듈은 특정의 작업을 수행하거나 특정의 데이터 유형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 운영 환경(1310)은 적당한 운영 환경의 단지 일례에 불과한 것으로서, 본 발명의 사용 또는 기능의 범위에 관해 어떤 한정을 하고자 하는 것은 아니다. 본 발명에서 사용하기에 적당할 수 있는 다른 공지의 컴퓨터 시스템, 환경 및/또는 구성으로는 퍼스널 컴퓨터, 핸드헬드 또는 랩톱 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 프로그램가능 가전 기기, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템 또는 장치를 포함하는 분산 컴퓨팅 환경 등이 있지만 이에 한정되는 것은 아니다.
도 13을 참조하면, 본 발명의 여러가지 태양을 구현하기 위한 전형적인 환경(1310)은 컴퓨터(1312)를 포함한다. 컴퓨터(1312)는 처리 장치(1314), 시스템 메모리(1316) 및 시스템 버스(1318)를 포함한다. 시스템 버스(1318)는 시스템 메모리(1316)(이에 한정되는 것은 아님)를 포함한 시스템 컴포넌트를 처리 장치(1314)에 연결시켜 준다. 처리 장치(1314)는 여러가지 이용가능한 프로세서 중 어느 것이라도 될 수 있다. 듀얼 마이크로프로세서 및 다른 멀티프로세서 아키텍처도 처리 장치(1314)로서 이용될 수 있다.
시스템 버스(1318)는 메모리 버스 또는 메모리 콘트롤러, 주변 버스 또는 외부 버스, 및/또는 8비트 버스, ISA(Industrial Standard Architecture), MSA(Micro-Channel Architecture), EISA(Extended ISA), IDE(Intelligent Drive Electronics), VLB(VESA Local Bus), PCI(Peripheral Component Interconnect), USB(Universal Serial Bus), AGP(Advanced Graphics Port), PCMCIA(Personal Computer Memory Card International Association bus) 및 SCSI(Small Computer Systems Interface)를 포함한 임의의 종류의 이용가능한 버스 아키텍처를 사용하는 로컬 버스를 비롯한 몇가지 유형의 버스 아키텍처 중 어느 것이라도 될 수 있다.
시스템 메모리(1316)는 휘발성 메모리(1320) 및 비휘발성 메모리(1322)를 포함한다. 예를 들면 시동 시에, 컴퓨터(1312) 내의 구성요소들 사이에서 정보를 전송하기 위한 기본 루틴을 포함하는 기본 입/출력 시스템(BIOS)은 비휘발성 메모리(1322)에 저장되어 있다. 비휘발성 메모리(1322)로는 ROM(판독 전용 메모리), PROM(프로그램 가능 ROM), EPROM(전기적 프로그램가능 ROM), EEPROM(전기적 소거가능 ROM) 또는 플래쉬 메모리가 있을 수 있으며, 이는 설명을 위한 것이지 한정을 위한 것이 아니다. 휘발성 메모리(1320)로는 외부 캐시 메모리로서 기능하는 RAM(랜덤 액세스 메모리)이 있다. RAM으로는 SRAM(synchronous RAM), DRAM(dynamic RAM), SDRAM(synchronous DRAM), DDR SDRAM(double data rate SDRAM), ESDRAM(enhanced SDRAM), SLDRAM(Synchlink DRAM) 및 DRRAM(direct rambus RAM) 등의 여러가지 형태의 것을 이용할 수 있다.
컴퓨터(1312)는 착탈식/비착탈식, 휘발성/비휘발성 컴퓨터 저장 매체도 포함할 수 있다. 도 13은 예를 들면 디스크 저장 장치(1324)를 도시하고 있다. 디스크 저장 장치(1324)로는 자기 디스크 드라이브, 플로피 디스크 드라이브, 테이프 드라이브, 재즈(Jaz) 드라이브, 집(Zip) 드라이브, LS-100 드라이브, 플래쉬 메모리 카드 또는 메모리 스틱과 같은 장치가 있지만, 이에 한정되는 것은 아니다. 게다가, 디스크 저장 장치(1324)는 개별적인 저장 매체 또는 CD-ROM(compact disk ROM device), CD-R 드라이브(CD recordable drive), CD-RW 드라이브(CD rewritable drive) 또는 DVD-ROM(digital versatile disk ROM drive) 등의 광학 디스크 드라이브(단, 이들에 한정되는 것은 아님)를 비롯한 다른 저장 매체와 결합된 저장 매체일 수 있다. 디스크 저장 장치(1324)의 시스템 버스(1318)로의 연결이 용이하도록 해주기 위해, 일반적으로 인터페이스(1326) 등의 착탈식 또는 비착탈식 인터페이스가 사용된다.
도 13이 적당한 운영 환경에서 사용자와 상기 기술된 기본적인 컴퓨터 자원 사이의 중개자로서 역할하는 소프트웨어에 대해 기술하고 있음을 잘 알 것이다. 이러한 소프트웨어로는 운영 체제(1328)가 있다. 디스크 저장 장치(1324)에 저장되어 있을 수 있는 운영 체제(1328)는 컴퓨터 시스템(1312)의 자원들을 제어 및 배정하는 기능을 한다. 시스템 애플리케이션(1330)은 시스템 메모리(1316)에 또는 디스크 저장 장치(1324) 상에 저장되어 있는 프로그램 모듈(1332) 및 프로그램 데이터(1334)를 통해 운영 체제(1328)에 의한 자원의 관리를 이용한다. 본 발명이 여러가지 운영 시스템에서 또는 운영 시스템들의 결합에서 구현될 수 있음을 잘 알 것이다.
사용자는 커맨드 또는 정보를 입력 장치(1336)를 통해 컴퓨터(1312)에 입력한다. 입력 장치(1336)로는 마우스, 트랙볼, 스타일러스, 터치 패드, 키보드, 마이크, 조이스틱, 게임 패드, 위성 안테나, 스캐너, TV 튜너 카드, 디지털 카메라, 디지털 비디오 카메라, 웹 카메라 등의 포인팅 디바이스가 있지만, 이에 한정되는 것은 아니다. 이들 및 다른 입력 장치는 인터페이스 포트(1338)를 거쳐 시스템 버스(1318)를 통해 처리 장치(1314)에 연결된다. 인터페이스 포트(1338)로는 예를 들면 직렬 포트, 병렬 포트, 게임 포트, 및 범용 직렬 버스(USB)가 있다. 출력 장치(1340)는 입력 장치(1336)와 동일한 유형의 몇몇 포트를 사용한다. 이와 같이,예를 들면 USB 포트가 컴퓨터(1312)에 입력을 제공하고 컴퓨터(1312)로부터의 출력 정보를 출력 장치(1340)에 제공하기 위해 사용될 수 있다. 특수 어댑터를 필요로 하는 다른 출력 장치(1340) 중에서 모니터, 스피커 및 프린터 등의 몇몇 출력 장치(1340)가 있음을 나타내기 위해 출력 어댑터(1342)가 제공되어 있다. 출력 어댑터(1342)는 출력 장치(1340)와 시스템 버스(1318) 사이의 연결 수단을 제공하는 비디오 및 사운드 카드를 포함하며, 이는 설명을 위한 것이지 어떤 한정을 위한 것이 아니다.
컴퓨터(1312)는 네트워크화된 환경에서 원격 컴퓨터(1344) 등의 하나 이상의 원격 컴퓨터로의 논리적 연결을 사용하여 동작할 수 있다. 원격 컴퓨터(1344)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 워크 스테이션, 마이크로프로세서 기반 가전 기기, 피어 장치 또는 다른 통상의 네트워크 노드 등 일 수 있으며, 일반적으로 컴퓨터(1312)와 관련하여 기술된 구성요소의 대부분 또는 그 전부를 포함한다. 간명함을 위해, 메모리 저장 장치(1346)만이 원격 컴퓨터(1344)와 함께 도시되어 있다. 원격 컴퓨터(1344)는 네트워크 인터페이스(1348)를 통해 컴퓨터(1312)에 논리적으로 연결되어 있고 통신 연결(1350)을 통해 물리적으로 연결되어 있다. 네트워크 인터페이스(1348)는 LAN(local area network; 근거리 통신망) 및 WAN(wide-area network; 광역 통신망) 등의 통신 네트워크를 포괄한다. LAN 기술에는 FDDI(Fiber Distributed Data Interface), CDDI(Copper Distributed Data Interface), 이더넷/IEEE 802.3, 토큰링/IEEE 802.5 등이 있다. WAN 기술에는 점대점 링크, ISDN(Integrated Services Digital Network; 종합 정보 통신망) 및 그의 변형 등의 회선 교환 네트워크, 패킷 교환 네트워크 및 DSL(Digital Subscriber Line; 디지털 가입자 회선)가 있지만, 이에 한정되는 것은 아니다.
통신 연결(1350)은 네트워크 인터페이스(1348)를 버스(1318)에 연결시키는 데 이용되는 하드웨어/소프트웨어를 말한다. 통신 연결(1350)이 설명의 간명함을 위해 컴퓨터(1312) 내에 도시되어 있지만, 이는 컴퓨터(1312) 외부에 있을 수도 있다. 네트워크 인터페이스(1348)로의 연결을 위해 필요한 하드웨어/소프트웨어로는 대표적인 목적만을 위해 보통의 전화급 모뎀, 케이블 모뎀 및 DSL 모뎀을 비롯한 모뎀, ISDN 어댑터 및 이더넷 카드 등의 내장형 및 외장형 기술이 있다.
본 발명은 등록 시의 질의의 결과를 데이터베이스의 현재의 상태와 부합하지 않게 만드는 데이터베이스 변경이 일어날 때 통지를 수신하기 위해 데이터베이스 질의를 등록하는 시스템 및 방법에 관한 것이다.
전술한 바는 본 발명의 일례에 대한 것이다. 물론, 본 발명을 설명하기 위해 컴포넌트 또는 방법의 모든 결합을 설명할 수는 없지만, 당업자라면 본 발명의 많은 추가의 결합 및 대체가 가능함을 잘 알 것이다. 따라서, 본 발명은 첨부된 청구항의 사상 및 범위에 속하는 이러한 변경, 수정 및 변형 모두를 포괄하는 것을 목적으로 한다. 게다가, 상세한 설명 또는 청구항에서 용어 "포함한다"가 사용되는 범위까지, 이러한 용어는 용어 "포함하는"이 청구항의 이행구(transitional word)로서 사용될 때 해석되는 것처럼 이 "포함하는"과 마찬가지로 포괄적인 적인 것으로 보아야 한다.

Claims (59)

  1. 데이터베이스 변경 통지 시스템에 있어서,
    데이터베이스 질의 등록 정보를 수신하는 서비스 브로커,
    상기 데이터베이스 질의 등록 정보의 적어도 일부를 저장하는 하나 이상의 큐, 및
    변경 메시지를 전송하는 하나 이상의 통지 전달 서비스를 포함하는 시스템.
  2. 제1항에 있어서, 상기 시스템이 SQL 환경에서 이용되는 시스템.
  3. 제1항에 있어서, 상기 서비스 브로커가 클라이언트와 서버 중 어느 한 곳에 존재하는 시스템.
  4. 제1항에 있어서, 상기 데이터베이스 질의 등록 정보는 고유 식별자, 전달 주소, 큐 이름, 타임아웃 기간, 통신 옵션, 프로토콜, 포트, 인증 정보, 보안 옵션 및 암호화 정보 중 적어도 하나를 포함하는 시스템.
  5. 제1항에 있어서, 상기 하나 이상의 큐는 상기 서비스 브로커에 위치하는 시스템.
  6. 제1항에 있어서, 상기 서비스 브로커는 데이터베이스인 시스템.
  7. 제1항에 있어서, 상기 하나 이상의 큐에 저장되어 있는 상기 데이터베이스 질의 등록 정보의 상기 적어도 일부는 고유 식별자 및 전달 주소를 포함하는 시스템.
  8. 제1항에 있어서, 상기 통지 전달 서비스는 상기 서비스 브로커, 시스템 시동, 검출 메카니즘 및 사용자 중 어느 하나에 의해 작동되는 시스템.
  9. 제4항에 있어서, 상기 타임아웃 기간은 질의 등록 만료 기간을 판정하기 위해 이용되는 시스템.
  10. 제4항에 있어서, 상기 큐는 디폴트(default), 데이터베이스 질의 등록 정보, 확률, 통계, 신경망 및 적응적 기술 중 어느 하나에 기초하여 상기 데이터베이스 질의 등록 정보의 상기 적어도 일부를 저장하기 위해 선택되는 시스템.
  11. 제4항에 있어서, 상기 전달 주소는 상기 변경 메시지의 목적지를 결정하기 위해 이용되는 시스템.
  12. 제4항에 있어서, 상기 고유 식별자는 데이터베이스 변경 통지를 관련된 클라이언트 컴포넌트로 전달하기 위해 이용되는 시스템.
  13. 제12항에 있어서, 상기 데이터베이스 변경 통지는 이벤트 및 이벤트의 발생을 시그널링하는 플래그 중 적어도 하나를 포함하는 시스템.
  14. 제1항에 있어서, 상기 변경 메시지는 고유 식별자를 포함하는 것인 데이터베이스 변경 통지 시스템.
  15. 제4항에 있어서, 상기 데이터베이스 질의 등록 정보는 미가공 결과, 변환된 결과 및 질의 가능 결과와 관련되어 있는 시스템.
  16. 제1항에 있어서, 상기 하나 이상의 큐는 하나 이상의 목적지에 위치하는 하나 이상의 컴포넌트로부터의 하나 이상의 질의와 관련된 데이터베이스 질의 등록 정보를 저장하는 시스템.
  17. 제1항에 있어서, 상기 하나 이상의 큐는 유사한 결과를 반환하는 등록된 질의에 대한 데이터베이스 질의 등록 정보를 유사한 큐에 저장하는 것과, 유사한 컴포넌트 또는 목적지와 관련된 등록된 질의에 대한 데이터베이스 질의 등록 정보를 유사한 큐에 저장하는 것 중 하나를 통한 동질성이 있는 저장(homogeneous storage)을 위해 이용되는 시스템.
  18. 제1항에 있어서, 상기 하나 이상의 통지 전달 서비스는 유사한 큐에 액세스하는 시스템.
  19. 제1항에 있어서, 적어도 하나의 통지 전달 서비스가 복수의 클라이언트로부터의 데이터베이스 질의 등록 정보를 갖는 하나 이상의 큐를 액세스하며,
    상기 적어도 하나의 통지 전달 서비스는 변경 메시지를 상기 복수의 클라이언트로 라우팅할 수 있는 시스템.
  20. 데이터베이스 질의 등록 및 메시지 전달 시스템에 있어서,
    데이터베이스 질의 등록 메시지 및 데이터베이스 변경 요청을 수신하는 서버,
    데이터베이스 질의 등록 정보의 이용이 용이하도록 해주는 서비스 브로커,
    상기 데이터베이스 질의 등록 정보의 적어도 일부를 저장하는 큐, 및
    상기 서비스 브로커에 응답하여 동작하며, 상기 큐에 저장되어 있는 상기 데이터베이스 질의 등록 정보의 상기 적어도 일부를 액세스하여 변경 메시지를 작성할 수 있는 통지 전달 서비스를 포함하는 시스템.
  21. 제20항에 있어서, 상기 서버는 SQL 기반 서버인 시스템.
  22. 제21항에 있어서, 상기 하나 이상의 데이터베이스 질의 등록 메시지는 마크업 언어 기반 파일을 포함하는 시스템.
  23. 제20항에 있어서, 상기 데이터베이스 질의 등록 정보는 적어도 고유 식별자 및 전달 주소를 포함하는 시스템.
  24. 제20항에 있어서, 상기 데이터베이스 질의 등록 정보는 큐 이름, 타임아웃 기간, 인증 정보, 암호화 옵션, 전달 서비스가 작동 중에 있는 시간 길이, 변경이 발생하였을 때 상기 등록을 유지할 것인지 또는 제거할 것인지의 옵션, 및 상기 메시지를 상기 변경에 동기적으로 전달할 것인지 또는 비동기적으로 전달할 것인지의 옵션 중 하나 이상을 포함하는 시스템.
  25. 제20항에 있어서, 데이터베이스 변경 검출 메카니즘을 더 포함하는 시스템.
  26. 제20항에 있어서, 상기 큐는 상기 데이터베이스 질의 등록 정보로부터 추출된 큐 이름, 디폴트 큐 이름, 사용자 정의 큐 이름, 및 최적으로 선택된 큐 이름 중 하나를 사용하여 결정되는 시스템.
  27. 제20항에 있어서, 상기 큐로부터의 상기 데이터베이스 질의 등록 정보 중 상기 적어도 일부를 저장한 다음에 상기 데이터베이스 질의 등록 정보의 상기 적어도일부를 상기 통지 전달 서비스에 제공하는 중간 컴포넌트를 더 포함하는 시스템.
  28. 제27항에 있어서, 상기 중간 컴포넌트는 로그 파일 및 버퍼를 포함하는 시스템.
  29. 제20항에 있어서, 상기 서버의 외부에 있는 질의 결과의 저장 장치를 더 포함하는 시스템.
  30. 제29항에 있어서, 상기 외부 저장 장치는 캐시를 포함하는 시스템.
  31. 제20항에 있어서, 하나 이상의 등록된 데이터베이스와 관련될 수 있으며, 하나 이상의 큐를 액세스할 수 있는 복수의 통지 전달 서비스를 더 포함하는 시스템.
  32. 제20항에 있어서, 상기 통지 전달 서비스는 상기 데이터베이스 변경 요청을 하기 전에, 상기 데이터베이스 변경 요청을 함과 동시에, 그리고 상기 데이터베이스 변경 요청을 한 후 중 적어도 하나에서 상기 변경 메시지를 전송하며,
    상기 선택된 전송 기술은 디폴트, 상기 데이터베이스 질의 등록 정보 및 사용 정보 중 어느 하나에 기초하는 시스템.
  33. 제20항에 있어서, 상기 통지 전달 서비스는 절대 시간 길이, 서비스에 대한큐 엔트리의 수 및 비작동 기간에 기초한 기간 동안 작동되는 시스템.
  34. 제33항에 있어서, 상기 기간은 디폴트, 상기 데이터베이스 질의 등록 정보, 서버 부하 및 적응적 기술 중 어느 하나에 기초하는 시스템.
  35. 데이터베이스 질의 등록 및 통지 시스템에 있어서,
    데이터베이스 질의 등록 정보를 제공함으로써 데이터베이스 질의의 등록이 용이하도록 해주는 등록 컴포넌트, 및
    하나 이상의 변경 메시지를 수신하며, 데이터베이스 변경 통지의 라우팅이 용이하도록 해주는 통지 런타임 서비스를 포함하는 시스템.
  36. 제35항에 있어서, 상기 등록 컴포넌트는 상기 데이터베이스 질의 등록 정보를 이용하여 XML 기반 메시지를 작성하는 시스템.
  37. 제35항에 있어서, 상기 통지 런타임 서비스는 상기 변경 메시지로부터 고유 식별자를 추출하고, 상기 고유 식별자를 이용하여 상기 데이터베이스 변경 통지를 관련 컴포넌트로 전달하는 시스템.
  38. 제35항에 있어서, 상기 하나 이상의 데이터베이스 변경 통지는 이벤트, 및 변경이 발생하였음을 시그널링하기 위한 플래그 중 적어도 하나를 포함하는 시스템.
  39. 데이터베이스 질의 등록, 변경 메시징 및 통지 시스템에 있어서,
    데이터베이스 질의의 등록이 용이하도록 해주는 종속성 컴포넌트,
    데이터베이스 질의 등록 정보를 전달하는 서비스 브로커,
    상기 데이터베이스 질의 등록 정보의 적어도 일부를 저장하는 큐, 및
    데이터베이스 변경이 후속 질의의 결과에 영향을 주게 될 때 변경 메시지를 제공하는 통지 전달 서비스를 포함하는 시스템.
  40. 제39항에 있어서, 상기 종속성 컴포넌트는 적어도 하나의 등록된 질의와 관련된 글로벌 고유 식별자(GUID)를 포함하는 등록 식별자를 더 제공하며,
    관련된 무효화들에 의해 실질적으로 유사한 클라이언트 동작이 일어나는 시스템.
  41. 제39항에 있어서, 상기 종속성 컴포넌트에 전달 주소를 제공하는 통지 런타임 서비스를 더 포함하는 시스템.
  42. 제41항에 있어서, 상기 종속성 컴포넌트에 전달 주소를 제공하는 범용 리스너(universal listener)를 더 포함하는 시스템.
  43. 제39항에 있어서, 상기 데이터베이스 질의 등록 정보는 큐 이름, 전달 주소, 타임아웃 기간, 및 고유 식별자를 포함하는 시스템.
  44. 제42항에 있어서, 디폴트, 클라이언트 기능, 데이터베이스 질의 등록 정보, 구성, 통계, 및 적응적 기술에 부분적으로 기초하여 상기 범용 리스너와 상기 통지 런타임 서비스 중 하나를 선택하는 시스템.
  45. 제41항에 있어서, 상기 통지 런타임 서비스는 통신 프로토콜을 통해 상기 통지 전달 서비스에 연결되어 동작하는 시스템.
  46. 제42항에 있어서, 상기 범용 리스너는 통신 프로토콜을 통해 상기 통지 전달 서비스에 연결되어 동작하는 시스템.
  47. 제39항에 있어서, 보안 메시지 전송을 제공하기 위해 인증서를 사용하는 것을 더 포함하는 시스템.
  48. 제41항에 있어서, 상기 종속성 컴포넌트를 상기 통지 런타임 서비스에 등록하는 것이 용이하도록 해주는 종속성 스위치를 더 포함하는 시스템.
  49. 제42항에 있어서, 상기 종속성 컴포넌트를 상기 범용 리스너에 등록하는 것이 용이하도록 해주는 종속성 리스너를 더 포함하는 시스템.
  50. 제48항에 있어서, 상기 종속성 스위치가 작동 중이 아니며, 데이터베이스 질의를 등록하라는 요청이 수신되는 경우, 상기 종속성 컴포넌트는 상기 종속성 스위치를 기동시켜 상기 통지 런타임 서비스에 등록하는 시스템.
  51. 제39항에 있어서, 확장성 및 데이터 일관성(data consistency) 중 하나를 개선하기 위해 비동기적 및 동기적인 데이터베이스 변경의 시행 및 데이터베이스 변경 메시지의 전달을 포함한 기술을 사용하는 시스템.
  52. 데이터베이스가 변경할 때 통지를 수신하는 방법에 있어서,
    데이터베이스 질의 등록 정보를 서버에 제공하는 단계,
    상기 데이터베이스 질의 등록 정보의 적어도 일부를 큐에 저장하는 단계, 및
    상기 데이터베이스 질의 등록 정보의 상기 적어도 일부를 이용하여 변경 메시지를 작성 및 전송하는 단계를 포함하는 방법.
  53. 제52항에 있어서, 상기 데이터베이스 질의 등록 정보는 큐 이름, 전달 주소, 타임아웃 기간, 및 고유 식별자를 포함하는 방법.
  54. 제52항에 있어서, 등록된 질의의 결과를 변경시키게 될 데이터베이스 변경을검출하는 단계를 더 포함하는 방법.
  55. 제52항에 있어서, 서비스 브로커를 이용하여 데이터베이스 질의 등록 정보를 큐에 저장하는 것이 용이하도록 하는 단계와,
    통지 전달 컴포넌트를 작동시켜 상기 큐로부터의 메시지를 처리하는 단계를 더 포함하는 방법.
  56. 제52항에 있어서, 통지 전달 서비스를 이용하는 단계를 더 포함하며,
    상기 통지 전달 서비스는 변경 메시지 내의 상기 데이터베이스 질의 등록 정보의 적어도 일부를 이용하며, 상기 데이터베이스 질의 등록 정보의 적어도 일부를 이용하여 상기 변경 메시지를 전달하는 방법.
  57. 데이터베이스 질의 등록, 데이터베이스 변경 검출 및 데이터베이스 변경 통지가 용이하도록 하는 2개 이상의 컴퓨터 컴포넌트 사이에서 전송되는 데이터 패킷에 있어서,
    상기 데이터 패킷은 데이터베이스 질의 등록 정보를 포함하며, 상기 데이터베이스 질의 등록 정보는 등록된 데이터베이스 질의와 관련되고, 큐에 저장되며, 데이터베이스 변경 통지를 라우팅하는 데 이용되는 변경 메시지를 작성 및 전송하는 데 이용되는 데이터 패킷.
  58. 데이터베이스 질의 등록, 검출 및 통지 시스템의 컴퓨터 실행가능 컴포넌트를 저장하는 컴퓨터 판독가능 매체로서,
    데이터베이스 질의 등록 정보를 저장하는 큐,
    등록된 클라이언트에 통지를 수신하도록 통보하는 데 이용되는 변경 메시지를 전송하는 통지 전달 서비스, 및
    상기 큐 및 상기 통지 전달 서비스와 연결되어 동작하고, 상기 큐에 데이터베이스 질의 등록 정보를 제공하며 상기 통지 전달 서비스를 작동시키는 서비스 브로커를 포함하는 컴퓨터 판독가능 매체.
  59. 데이터베이스 질의 등록 시스템에 있어서,
    데이터베이스 질의를 등록하는 수단,
    등록된 질의의 결과를 변경시키는 데이터베이스 변경을 검출하는 수단, 및
    후속 질의의 결과가 이전의 질의로부터의 결과와 다르게 될 수 있음을 알려주는 변경 메시지를 제공하는 수단을 포함하는 데이터베이스 질의 등록 시스템.
KR1020040021200A 2003-03-28 2004-03-29 데이터베이스 변경 통지의 요청 및 수신 시스템 및 방법 KR20040085056A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/402,025 2003-03-28
US10/402,025 US20040205048A1 (en) 2003-03-28 2003-03-28 Systems and methods for requesting and receiving database change notifications

Publications (1)

Publication Number Publication Date
KR20040085056A true KR20040085056A (ko) 2004-10-07

Family

ID=32825034

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040021200A KR20040085056A (ko) 2003-03-28 2004-03-29 데이터베이스 변경 통지의 요청 및 수신 시스템 및 방법

Country Status (5)

Country Link
US (1) US20040205048A1 (ko)
EP (1) EP1462958A3 (ko)
JP (1) JP2004303214A (ko)
KR (1) KR20040085056A (ko)
CN (1) CN1534519B (ko)

Families Citing this family (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7594230B2 (en) 2001-06-11 2009-09-22 Microsoft Corporation Web server architecture
US7430738B1 (en) 2001-06-11 2008-09-30 Microsoft Corporation Methods and arrangements for routing server requests to worker processes based on URL
US7490137B2 (en) 2002-03-22 2009-02-10 Microsoft Corporation Vector-based sending of web content
US7159025B2 (en) * 2002-03-22 2007-01-02 Microsoft Corporation System for selectively caching content data in a server based on gathered information and type of memory in the server
US11392588B2 (en) * 2003-09-04 2022-07-19 Oracle International Corporation Active queries filter extraction
US20060004794A1 (en) * 2004-06-30 2006-01-05 Microsoft Corporation Rich application view system and method
US7418709B2 (en) * 2004-08-31 2008-08-26 Microsoft Corporation URL namespace to support multiple-protocol processing within worker processes
US7418712B2 (en) * 2004-08-31 2008-08-26 Microsoft Corporation Method and system to support multiple-protocol processing within worker processes
US7418719B2 (en) * 2004-08-31 2008-08-26 Microsoft Corporation Method and system to support a unified process model for handling messages sent in different protocols
US20060085451A1 (en) * 2004-10-15 2006-04-20 Microsoft Corporation Mapping of schema data into data structures
US7617162B2 (en) * 2005-03-04 2009-11-10 Atul Saini Real time push notification in an event driven network
US7765207B2 (en) * 2005-04-29 2010-07-27 Microsoft Corporation Fast rich application view initiation
US20070033247A1 (en) * 2005-08-02 2007-02-08 The Mathworks, Inc. Methods and system for distributing data to technical computing workers
US7543003B2 (en) * 2005-08-25 2009-06-02 Microsoft Corporation Providing change notifications to an entity-regarding a change of a specific type to data in a relational database
JP2008052542A (ja) * 2006-08-25 2008-03-06 Mitsubishi Electric Corp データベース管理システム
US20080086542A1 (en) * 2006-10-04 2008-04-10 Title Resource Group, Llc System and method for communicating document information
US7634459B1 (en) * 2006-11-16 2009-12-15 Precise Software Solutions Ltd. Apparatus, method and computer-code for detecting changes in database-statement execution paths
US8850451B2 (en) * 2006-12-12 2014-09-30 International Business Machines Corporation Subscribing for application messages in a multicast messaging environment
US7836070B2 (en) 2007-04-30 2010-11-16 Sap Ag Automatic event registration during query execution
US7778956B2 (en) * 2007-06-21 2010-08-17 Microsoft Corporation Portal and key management service database schemas
US20090043778A1 (en) * 2007-08-08 2009-02-12 Microsoft Corporation Generating etl packages from template
DE102008004658B4 (de) * 2008-01-16 2010-03-25 Siemens Aktiengesellschaft Verfahren zur zentralen Steuerung von Prozessen in erweiterbaren medizinischen Plattformen
US7979393B2 (en) * 2008-02-22 2011-07-12 Microsoft Corporation Multiphase topology-wide code modifications for peer-to-peer systems
US8185508B2 (en) * 2008-08-08 2012-05-22 Oracle International Corporation Adaptive filter index for determining queries affected by a DML operation
US8037040B2 (en) * 2008-08-08 2011-10-11 Oracle International Corporation Generating continuous query notifications
US8433296B2 (en) 2009-05-01 2013-04-30 Ryan Hardin Exclusive delivery of content within geographic areas
KR101265388B1 (ko) 2009-07-02 2013-05-20 엔에이치엔비즈니스플랫폼 주식회사 고가용성 데이터베이스 관리 시스템 및 이를 이용한 데이터베이스 관리 방법
US9471700B2 (en) * 2010-05-18 2016-10-18 Tksn Holdings, Llc System and method for monitoring changes in databases and websites
WO2012011915A1 (en) * 2010-07-22 2012-01-26 Hewlett-Packard Development Company, L.P. Sql enumerator
US9805108B2 (en) 2010-12-23 2017-10-31 Mongodb, Inc. Large distributed database clustering systems and methods
US8996463B2 (en) 2012-07-26 2015-03-31 Mongodb, Inc. Aggregation framework system architecture and method
US10346430B2 (en) 2010-12-23 2019-07-09 Mongodb, Inc. System and method for determining consensus within a distributed database
US10366100B2 (en) 2012-07-26 2019-07-30 Mongodb, Inc. Aggregation framework system architecture and method
US11615115B2 (en) 2010-12-23 2023-03-28 Mongodb, Inc. Systems and methods for managing distributed database deployments
US10997211B2 (en) 2010-12-23 2021-05-04 Mongodb, Inc. Systems and methods for database zone sharding and API integration
US9740762B2 (en) 2011-04-01 2017-08-22 Mongodb, Inc. System and method for optimizing data migration in a partitioned database
US9881034B2 (en) * 2015-12-15 2018-01-30 Mongodb, Inc. Systems and methods for automating management of distributed databases
US11544288B2 (en) 2010-12-23 2023-01-03 Mongodb, Inc. Systems and methods for managing distributed database deployments
US10262050B2 (en) 2015-09-25 2019-04-16 Mongodb, Inc. Distributed database systems and methods with pluggable storage engines
US10740353B2 (en) 2010-12-23 2020-08-11 Mongodb, Inc. Systems and methods for managing distributed database deployments
US10713280B2 (en) 2010-12-23 2020-07-14 Mongodb, Inc. Systems and methods for managing distributed database deployments
US10614098B2 (en) 2010-12-23 2020-04-07 Mongodb, Inc. System and method for determining consensus within a distributed database
US8572031B2 (en) 2010-12-23 2013-10-29 Mongodb, Inc. Method and apparatus for maintaining replica sets
US10977277B2 (en) 2010-12-23 2021-04-13 Mongodb, Inc. Systems and methods for database zone sharding and API integration
US8954364B2 (en) 2011-09-19 2015-02-10 International Business Machines Corporation Hierarchical contexts to drive live sensor applications
US9208244B2 (en) 2011-12-16 2015-12-08 Microsoft Technology Licensing, Llc Referencing change(s) in data utilizing a network resource locator
US8332349B1 (en) * 2012-01-06 2012-12-11 Advent Software, Inc. Asynchronous acid event-driven data processing using audit trail tools for transaction systems
US10754710B1 (en) * 2012-06-20 2020-08-25 Amazon Technologies, Inc. Transactional watch mechanism
US11544284B2 (en) 2012-07-26 2023-01-03 Mongodb, Inc. Aggregation framework system architecture and method
US11403317B2 (en) 2012-07-26 2022-08-02 Mongodb, Inc. Aggregation framework system architecture and method
US10872095B2 (en) 2012-07-26 2020-12-22 Mongodb, Inc. Aggregation framework system architecture and method
CN104662923B (zh) * 2012-09-26 2018-01-02 Lg电子株式会社 用于处理数字服务信号的方法及装置
US9183271B2 (en) * 2012-12-04 2015-11-10 Pivotal Software, Inc. Big-fast data connector between in-memory database system and data warehouse system
US8886671B1 (en) 2013-08-14 2014-11-11 Advent Software, Inc. Multi-tenant in-memory database (MUTED) system and method
US10162841B1 (en) 2013-10-28 2018-12-25 Pivotal Software, Inc. Data management platform
US9639544B1 (en) * 2013-10-28 2017-05-02 Pivotal Software, Inc. Table data persistence
US10073904B2 (en) * 2013-11-05 2018-09-11 Verizon Patent And Licensing Inc. Event triggered service for the lightweight directory access protocol
US9852221B1 (en) 2015-03-26 2017-12-26 Amazon Technologies, Inc. Distributed state manager jury selection
US20160316038A1 (en) * 2015-04-21 2016-10-27 Masoud Aghadavoodi Jolfaei Shared memory messaging channel broker for an application server
US10002153B2 (en) 2015-05-14 2018-06-19 Illumon Llc Remote data object publishing/subscribing system having a multicast key-value protocol
US10713275B2 (en) 2015-07-02 2020-07-14 Mongodb, Inc. System and method for augmenting consensus election in a distributed database
US10102239B2 (en) * 2015-07-13 2018-10-16 Sap Se Application event bridge
US10846411B2 (en) 2015-09-25 2020-11-24 Mongodb, Inc. Distributed database systems and methods with encrypted storage engines
US10673623B2 (en) 2015-09-25 2020-06-02 Mongodb, Inc. Systems and methods for hierarchical key management in encrypted distributed databases
US10423626B2 (en) 2015-09-25 2019-09-24 Mongodb, Inc. Systems and methods for data conversion and comparison
US10394822B2 (en) 2015-09-25 2019-08-27 Mongodb, Inc. Systems and methods for data conversion and comparison
US10642844B2 (en) 2016-04-01 2020-05-05 Arista Networks, Inc. Non-materialized tables with standing queries
US10783147B2 (en) * 2016-04-01 2020-09-22 Arista Networks, Inc. Query result flow control in a network switch
US10261949B2 (en) 2016-04-01 2019-04-16 Arista Networks, Inc. Packed row representation for efficient network serialization with direct column indexing in a network switch
US10783144B2 (en) 2016-04-01 2020-09-22 Arista Networks, Inc. Use of null rows to indicate the end of a one-shot query in network switch
US10860568B2 (en) 2016-04-01 2020-12-08 Arista Networks, Inc. External data source linking to queries in memory
US10671496B2 (en) 2016-05-31 2020-06-02 Mongodb, Inc. Method and apparatus for reading and writing committed data
US10776220B2 (en) 2016-06-27 2020-09-15 Mongodb, Inc. Systems and methods for monitoring distributed database deployments
US11256572B2 (en) * 2017-01-23 2022-02-22 Honeywell International Inc. Systems and methods for processing data in security systems using parallelism, stateless queries, data slicing, or asynchronous pull mechanisms
US20180350246A1 (en) * 2017-06-05 2018-12-06 X Development Llc Methods and Systems for Sharing an Airspace Wide Unmanned Aircraft System Database Across a Plurality of Service Suppliers
US10866868B2 (en) 2017-06-20 2020-12-15 Mongodb, Inc. Systems and methods for optimization of database operations
EP3422207A1 (en) * 2017-06-27 2019-01-02 Deutsche Telekom AG Method for an enhanced management of configuration information and/or stateful information in a communication network, system, program and computer program product
US10198469B1 (en) * 2017-08-24 2019-02-05 Deephaven Data Labs Llc Computer data system data source refreshing using an update propagation graph having a merged join listener
CN107678856B (zh) * 2017-09-20 2022-04-05 苏宁易购集团股份有限公司 一种处理业务实体中增量信息的方法及装置
US10379985B1 (en) * 2018-02-01 2019-08-13 EMC IP Holding Company LLC Automating and monitoring rolling cluster reboots
CN110858204B (zh) * 2018-08-16 2023-09-19 中国移动通信集团重庆有限公司 查询请求的处理方法、设备和介质
US11249857B2 (en) 2018-10-19 2022-02-15 Netapp, Inc. Methods for managing clusters of a storage system using a cloud resident orchestrator and devices thereof
CN110865845B (zh) * 2019-10-28 2022-07-26 福建天泉教育科技有限公司 提高接口访问效率的方法、存储介质
CN111163127B (zh) * 2019-12-02 2021-12-14 聚好看科技股份有限公司 一种媒资属性推送方法及服务器
CN111400053B (zh) * 2020-03-17 2023-12-15 畅捷通信息技术股份有限公司 数据库访问系统、方法、装置和计算机可读存储介质
JP2022025451A (ja) * 2020-07-29 2022-02-10 富士フイルムビジネスイノベーション株式会社 情報処理装置及びプログラム
US11966959B2 (en) 2020-09-23 2024-04-23 International Business Machines Corporation Subscription of marketplace content based on search queries
CN112865311B (zh) * 2021-01-15 2022-11-01 北京科东电力控制系统有限责任公司 一种电力系统消息总线监视方法和装置
CN112839110B (zh) * 2021-03-05 2023-03-10 紫光云技术有限公司 一种分布式系统中基于网络超时的问题处理的实现方法
CN113535782B (zh) * 2021-07-22 2024-05-07 成都数之联科技股份有限公司 一种bi报表查询响应方法、系统、电子设备及计算机可读存储介质
CN114189591A (zh) * 2021-11-29 2022-03-15 中国联合网络通信集团有限公司 无效终端设备的核查方法、装置和计算机可读介质
CN115600567B (zh) * 2022-10-14 2023-08-11 安芯网盾(北京)科技有限公司 一种报表导出方法及装置

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5592664A (en) * 1991-07-29 1997-01-07 Borland International Inc. Database server system with methods for alerting clients of occurrence of database server events of interest to the clients
JPH0736763A (ja) * 1993-07-20 1995-02-07 Yokogawa Electric Corp データベース管理装置
US5721825A (en) * 1996-03-15 1998-02-24 Netvision, Inc. System and method for global event notification and delivery in a distributed computing environment
JPH09282210A (ja) * 1996-04-15 1997-10-31 Hitachi Ltd データベース監視方法及びそのシステム
US5897634A (en) * 1997-05-09 1999-04-27 International Business Machines Corporation Optimized caching of SQL data in an object server system
US6026413A (en) * 1997-08-01 2000-02-15 International Business Machines Corporation Determining how changes to underlying data affect cached objects
US6073129A (en) * 1997-12-29 2000-06-06 Bull Hn Information Systems Inc. Method and apparatus for improving the performance of a database management system through a central cache mechanism
US6493720B1 (en) * 1998-01-26 2002-12-10 International Business Machines Corporation Method and system for synchronization of metadata in an information catalog
EP0959416A3 (en) * 1998-05-08 2005-08-10 International Business Machines Corporation Using database query technology for message subscriptions in messaging systems
US6167448A (en) * 1998-06-11 2000-12-26 Compaq Computer Corporation Management event notification system using event notification messages written using a markup language
US6266690B1 (en) * 1999-01-27 2001-07-24 Adc Telecommunications, Inc. Enhanced service platform with secure system and method for subscriber profile customization
US6275819B1 (en) * 1999-03-16 2001-08-14 Novell, Inc. Method and apparatus for characterizing and retrieving query results
US6339772B1 (en) * 1999-07-06 2002-01-15 Compaq Computer Corporation System and method for performing database operations on a continuous stream of tuples
US6405191B1 (en) * 1999-07-21 2002-06-11 Oracle Corporation Content based publish-and-subscribe system integrated in a relational database system
US6910070B1 (en) * 2000-01-24 2005-06-21 Oracle International Corporation Methods and systems for asynchronous notification of database events
CN1146821C (zh) * 2000-02-21 2004-04-21 国际商业机器公司 面向用户的数据库查询方法及系统
GB2361555A (en) * 2000-04-17 2001-10-24 Apama Inc Method of evaluating queries against received event information
US6799208B1 (en) * 2000-05-02 2004-09-28 Microsoft Corporation Resource manager architecture
US6868447B1 (en) * 2000-05-09 2005-03-15 Sun Microsystems, Inc. Mechanism and apparatus for returning results of services in a distributed computing environment
JP2002175420A (ja) * 2000-09-29 2002-06-21 Fuji Ginkou:Kk 情報提供モジュール、情報提供システム、情報提供方法及び情報提供エージェントプログラム
US7228416B2 (en) * 2001-01-26 2007-06-05 Hitachi, Ltd. Database access method and system capable of concealing the contents of query
US6996584B2 (en) * 2002-05-14 2006-02-07 Pervasive Software, Inc. System and method of maintaining functional client side data cache coherence

Also Published As

Publication number Publication date
EP1462958A3 (en) 2004-12-08
CN1534519A (zh) 2004-10-06
US20040205048A1 (en) 2004-10-14
EP1462958A2 (en) 2004-09-29
CN1534519B (zh) 2011-05-25
JP2004303214A (ja) 2004-10-28

Similar Documents

Publication Publication Date Title
KR20040085056A (ko) 데이터베이스 변경 통지의 요청 및 수신 시스템 및 방법
US7836031B2 (en) Systems and methods for employing a trigger-based mechanism to detect a database table change and registering to receive notification of the change
US8452925B2 (en) System, method and computer program product for automatically updating content in a cache
KR20040085057A (ko) 데이터베이스 결과 및 파생된 개체를 캐싱 및 무효화하기위한 시스템 및 방법
KR101109251B1 (ko) 웹 서비스 애플리케이션 프로토콜 및 soap 프로세싱모델
JP5117495B2 (ja) ネットワーク上のコンピュータ資産のインベントリを識別し、インベントリ管理を実行するシステム
US20080183721A1 (en) Method of and system for providing performance information in a uddi system
US9338214B2 (en) Managing virtual business instances within a computer network
US7543003B2 (en) Providing change notifications to an entity-regarding a change of a specific type to data in a relational database
US7606808B2 (en) Maintaining and establishing subscriptions with load-balanced servers
US20040205076A1 (en) System and method to automate the management of hypertext link information in a Web site
EP1463269A2 (en) Architecture and system for location awareness
US20080005278A1 (en) System and Method for Scalable Distribution of Semantic Web Updates
US20030187839A1 (en) Method and structure for federated web service discovery search over multiple registries with result aggregation
US20040128622A1 (en) Method and server for communicating information between publishers and subscribers of web services
US8250032B2 (en) Optimizing publish/subscribe matching for non-wildcarded topics
CN111510330B (zh) 接口管理装置、方法及存储介质
US20050038771A1 (en) Method and system for managing programs for web service system
US20030055951A1 (en) Products, apparatus and methods for handling computer software/hardware messages
US8984124B2 (en) System and method for adaptive data monitoring
US20030115243A1 (en) Distributed process execution system and method
US8752071B2 (en) Identifying subscriber data while processing publisher event in transaction
KR100645529B1 (ko) 로그 가공이 가능한 로그 관리 시스템 및 이를 이용한 로그관리 방법
US7496585B2 (en) Methods and apparatus for discovering data providers satisfying provider queries
US20240089339A1 (en) Caching across multiple cloud environments

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application