KR20050001422A - 캐시 엔트리를 무효화시키는 데 사용될 수 있는데이터베이스 테이블 변경 정보의 등록 및 검색 - Google Patents

캐시 엔트리를 무효화시키는 데 사용될 수 있는데이터베이스 테이블 변경 정보의 등록 및 검색 Download PDF

Info

Publication number
KR20050001422A
KR20050001422A KR1020040047691A KR20040047691A KR20050001422A KR 20050001422 A KR20050001422 A KR 20050001422A KR 1020040047691 A KR1020040047691 A KR 1020040047691A KR 20040047691 A KR20040047691 A KR 20040047691A KR 20050001422 A KR20050001422 A KR 20050001422A
Authority
KR
South Korea
Prior art keywords
content
computer system
data table
web
version information
Prior art date
Application number
KR1020040047691A
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 KR20050001422A publication Critical patent/KR20050001422A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Landscapes

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

Abstract

서버는 데이터베이스 내의 데이터 테이블로부터의 콘텐츠를 포함할 수 있는 웹 응답을 제공한다. 서버는 클라이언트 웹 요청을 만족시키기 위해 차후에 동일한 콘텐츠를 제공하는 효율성을 향상시키기 위해 (데이터 테이블로부터의 콘텐츠를 포함한) 콘텐츠를 저장할 수 있는 캐시를 (예를 들면, 시스템 메모리 내에) 보유하고 있다. 서버는 변경이 있는지 데이터 테이블을 모니터링하고, 특정의 데이터 테이블에서 변경이 일어난 경우, 특정의 데이터 테이블에 의존하는 캐싱된 엔트리를 무효화시킨다. 게다가, 웹 응답에 대한 클라이언트 웹 요청에 응답하여, 서버는 웹 응답의 작성 동안 실행되는 명령에 기초하여 데이터베이스 캐시 의존성을 작성된 웹 응답의 적어도 일부분에(예를 들면, 데이터 테이블로부터 검색된 콘텐츠에) 할당한다. 작성된 웹 응답의 적어도 일부분은 이어서 서버에 있는 캐시 장소에 캐싱된다.

Description

캐시 엔트리를 무효화시키는 데 사용될 수 있는 데이터베이스 테이블 변경 정보의 등록 및 검색{REGISTERING FOR AND RETRIEVING DATABASE TABLE CHANGE INFORMATION THAT CAN BE USED TO INVALIDATE CACHE ENTRIES}
본 발명은 캐싱된 콘텐츠의 관리에 관한 것이다. 보다 구체적으로는, 본 발명은 캐시 엔트리를 무효화시키는 데 사용될 수 있는 데이터베이스 테이블 변경 통지의 등록 및 검색에 관한 것이다.
컴퓨터 시스템 및 관련 기술은 사회의 많은 측면에 영향을 준다. 실제로, 컴퓨터 시스템의 정보 처리 능력은 우리의 사는 방식과 일하는 방식을 변환시켰다. 컴퓨터 시스템은 이제 통상적으로 컴퓨터 시스템의 등장 이전에 수작업으로 수행되었던 많은 작업(예를 들어, 워드 프로세싱, 스케쥴링, 및 데이터베이스 관리)을 수행한다. 보다 최근에, 컴퓨터 시스템은 유선 및 무선 컴퓨터 네트워크 둘 모두를 형성하기 위해 서로 연결되었으며 이 네트워크를 통해 컴퓨터 시스템들은 데이터를 공유하기 위해 전자적으로 통신할 수 있다. 그 결과, 컴퓨터 시스템에서 수행되는 많은 작업들(예를 들어, 음성 통신, 전자 우편에의 액세스, 전자 컨퍼런싱, 웹 브라우징)은 유선 및/또는 무선 컴퓨터 네트워크를 통해 하나 이상의 다른 컴퓨터 시스템들과의 전자 통신을 포함한다.
특히, 월드 와이드 웹("WWW")은 정보를 교환하기 위한 중요한 메커니즘이 되었다. 일반적으로, WWW 상의 콘텐츠는 클라이언트/서버 모델로 액세스된다. 클라이언트 컴퓨터 시스템에 있는 "웹 브라우저"는 서버 컴퓨터 시스템에 있는 "웹 서버"에 의해 유지되는 콘텐츠에 액세스하기 위한 요청을 전송한다. 적절한 경우, 웹 서버는 이어서 요청된 콘텐츠를 웹 브라우저로 제공한다.
콘텐츠를 웹 브라우저가 이용할 수 있도록 만드는 한 방법은 웹 개발자가 예를 들면 HTML(HyperText Markup Language, 하이퍼텍스트 마크업 언어)에서와 같이 다수의 하드-코딩된 컴퓨터 판독가능 명령어들을 포함하는 정적 웹 페이지를 작성하는 것이다. 정적 웹 페이지는 이어서 웹 서버가 액세스할 수 있는 장소에(예를 들어, 서버 컴퓨터 시스템에, 네트워크 연결가능한 데이터베이스에, 기타 등등에) 저장된다. 웹 브라우저로부터의 요청에 응답하여, 웹 서버는 [예를 들면, 웹 브라우저로 하여금 정적 웹 페이지에 대응하는 URL(Uniform Resource Locator)에 액세스하도록 하는 사용자 입력의 결과로서] 정적 웹 페이지를 웹 브라우저로 전송할 수 있다. 정적 웹 페이지의 수신 시에, 웹 브라우저는 클라이언트 컴퓨터 시스템에서 정적 웹 페이지의 콘텐츠(예를 들어, 텍스트, 그래픽 등)를 제공할 수 있다.
네트워크 자원을 보존하기 위해, 웹 브라우저는 또한 정적 웹 페이지의 복사본을 클라이언트 컴퓨터 시스템에(예를 들어, 시스템 메모리에 또는 대용량 저장 장치에) 캐싱할 수 있다. 정적 웹 페이지가 차후에 요청되는 경우, 웹 브라우저는 웹 서버에 새로운 네트워크 요청을 개시하기 전에 캐시로부터 정적 웹 페이지를 찾으려고 시도한다. 정적 웹 페이지가 캐시에 있는 경우, 웹 브라우저는 네트워크요청을 개시하지 않고 캐싱된 정적 웹 페이지를 검색한다. 로컬적으로 저장된 데이터가 보다 효율적으로 액세스될 수 있기 때문에, 정적 웹 페이지를 클라이언트 컴퓨터 시스템에 캐싱하는 것은 정적 웹 페이지의 콘텐츠를 제공하는 것과 관련된 지연 시간을 감소시킨다.
빈번히 요청되는 정적 웹 페이지도 또한 지연 시간을 감소시키기 위해 서버 컴퓨터 시스템에 캐싱(통상 출력 캐싱이라고 불리움)될 수 있다. 예를 들어, 빈번히 요청되는 정적 웹 페이지는 서버 컴퓨터 시스템에 있는 시스템 메모리에 캐싱될 수 있으며, 따라서 정적 웹 페이지가 요청될 때마다 그 정적 웹 페이지는 대용량 저장 장치로부터 검색될 필요가 없다. 그의 정적인 성질 때문에, 정적 웹 페이지는 장기간 동안, 아마도 무기한으로 (클라이언트 또는 서버 컴퓨터 시스템에) 캐싱될 수 있다.
그렇지만, 정적 웹 페이지의 사용은 기본적으로 실시간 또는 커스텀 데이터가 웹 브라우저에 의해 제공되지 못하게 한다. 종종, 웹 브라우저에서 동적 데이터(예를 들어, 일간 판매량 숫자, 현재의 주식 시세 등)를 제공하는 것이 바람직하다. 따라서, 웹 브라우저에서 제공될 동적 웹 페이지에 동적 데이터를 포함시키는 메커니즘이 개발되어왔다. 동적 데이터를 동적 웹 페이지에 포함시키는 한 메커니즘이 모듈 형태의 컴퓨터 실행가능 명령어(통상 "스크립트"라고 불리움)의 사용이다.
스크립트는 예를 들어 JavaScript 및 VBScript 등의 스크립팅 언어를 사용하여 개발될 수 있으며, 페이지 파일[예를 들어, ASP(Active Server Page, 액티브 서버 페이지) 파일]에 HTML 및 XML(Extensible Markup Language, 확장성 마크업 언어) 명령어와 함께 내장될 수 있다. 동적 웹 페이지에 대한 요청이 수신되면, 서버 컴퓨터 시스템은 그 요청을 대응하는 페이지 파일을 처리하는 프로세싱 모듈(예를 들어, ASP 모듈)로 리디렉션한다. 프로세싱 모듈은 페이지 파일에 포함된 임의의 스크립트를 실행하고, 그 요청에 응답하여 반환할 적절한 HTML 명령어를 생성한다. 스크립트는 동적 장소로부터, 예를 들어 현재의 판매량 숫자 또는 주식 시세를 보유하는 데이터베이스로부터의 데이터에 액세스하기 위한 컴퓨터 실행가능 명령어를 포함할 수 있다. 스크립트가 기본적으로 요청이 수신될 때 실행되기 때문에, 스크립트는 실시간 데이터를 포함하는 동적 웹 페이지를 작성하는 데 이용될 수 있다.
정적 웹 페이지와 유사하게, 동적 웹 페이지도 동적 웹 페이지로의 보다 효율적인 액세스를 제공하기 위해 캐싱될 수 있다. 그렇지만, 동적 웹 페이지에 포함된 동적 콘텐츠(예를 들어, 가격 시세)는 일반적으로 제한된 시간 동안(예를 들어, 동적 콘텐츠가 검색되었던 장소에 있는 값이 변할 때까지) 유효하다. 종종, 동적 콘텐츠(예를 들어, 주식 시세)는 아주 짧은 기간 동안, 예를 들어 수 초 동안만 유효할 것이다. 동적 콘텐츠의 값이 변하면, 캐싱된 동적 콘텐츠는 무효로 될 수 있다. 예를 들어, 주식 가격이 $20.00에서 $21.00으로 변하면, 캐싱된 가격인 $20.00는 유효하지 않다(즉, 심지어 정확하지 않다). 무효인 동적 콘텐츠가 캐시에 존속하는 경우, 웹 서버가 잘못된 동적 콘텐츠를 웹 브라우저에 제공할 가능성이 얼마간 있다. 예를 들어, 무효인 주식 시세가 캐시에 존속하는 경우, 웹 서버는 데이터베이스로부터 갱신된 주식 가격을 검색하기 위해 스크립트를 재실행하지 않고 캐시로부터 무효인 주식 가격을 검색할지도 모른다. 따라서, 캐싱된 동적 콘텐츠의 유효성을 보장하려고 시도하는 캐시 관리 메커니즘이 개발되어왔다.
어떤 캐시 관리 메커니즘은 동적 콘텐츠를 지정된 시간 간격으로, 예를 들면 10분마다 자동적으로 캐시로부터 제거한다. 그렇지만, 동적 콘텐츠 값이 지정된 시간 간격 사이에 변하는 경우, 무효인 동적 콘텐츠 값이 캐시에 존속할 가능성이 여전히 존재한다. 예를 들어, 지정된 시간 간격은 5분이고 동적 콘텐츠 값은 그 값이 캐싱된지 1분 후에 갱신되는 경우, 동적 콘텐츠 값은 무효화되지만 적어도 4분 동안 캐싱된 채로 있게 된다. 그 4분 동안, 웹 서버는 갱신된 동적 콘텐츠 값을 검색하기 위해 스크립트를 실행하지 않고 잘못하여 캐싱된 동적 콘텐츠 값을 검색할 수 있다.
게다가, 지정된 시간 간격으로 콘텐츠를 제거하는 것은 아직도 유효인 값이 캐시로부터 제거되도록 할 수도 있다. 예를 들어, 지정된 시간 간격은 10분이고 동적 콘텐츠 값은 그 값이 캐싱된지 10분 후에 유효한 채로 있는 데도 불구하고, 동적 콘텐츠 값은 여전히 캐시로부터 제거된다. 따라서, 차후의 요청에 응답하여 동적 콘텐츠 값을 보다 효율적으로 검색할 잠재성이 방해된다.
다른 캐시 관리 메커니즘은 서버 컴퓨터 시스템에 저장되어 있는 파일(예를 들어, XML 파일)을 모니터링하고 모니터링된 파일이 변할 때 모니터링된 파일로부터의 캐싱된 동적 콘텐츠 값을 무효화시킨다. 또다른 캐시 관리 메커니즘은 캐시 엔트리를 모니터링하고 하나의 캐시 엔트리가 무효화될 때 또다른 캐시 엔트리를무효화시킨다. 따라서, 어떤 캐시 관리 메커니즘은 캐시 엔트리의 유효성이 시간, 대응하는 파일, 또는 또하나의 대응하는 캐시 엔트리에 의존하도록 한다.
그렇지만, 기존의 캐시 관리 메커니즘(시간, 파일, 및 캐시 의존성을 사용하는 것을 포함)은 서버 컴퓨터 시스템의 외부에 있는 장소로부터 검색한 캐싱된 동적 콘텐츠 값을 무효화시키는 데 적합하지 않다. 예를 들어, 웹 브라우저는 데이터베이스 내의 다수의 서로 다른 테이블로부터의 동적 콘텐츠 값을 포함하게 될 웹 페이지를 요청할 수 있다. 따라서, 적절한 스크립트를 갖는 페이지 파일은 동적 콘텐츠 값을 검색하고 적절한 HTML 명령어를 생성하기 위해 서버 컴퓨터 시스템에서 처리될 수 있다.
그렇지만, 데이터베이스로부터 데이터를 검색하는 것은 네트워크 자원 및 데이터베이스 자원 둘 모두를 소모한다. 검색된 데이터에 대해 계산이 수행되는 경우, 부가의 서버 컴퓨터 시스템 자원도 또한 소모된다. 게다가, 서버 컴퓨터 시스템이 서로 다른 웹 페이지에 포함되어질 동적 콘텐츠의 다수의 서로 다른 부분을 얻기 위해 데이터베이스에 동시에 질의를 하는 경우가 있을 수 있다. 또한 다수의 서버 컴퓨터 시스템 각각이 동일한 데이터베이스로부터의 동적 콘텐츠에 액세스하는 경우도 있을 수 있다.
따라서, 단일 데이터베이스가 동시에 동적 콘텐츠를 다수의 서버 컴퓨터 시스템에 제공할 수 있으며, 이 경우 각 서버 컴퓨터 시스템은 동적 콘텐츠의 서로 다른 부분을 얻기 위해 동시에 데이터베이스에 질의를 한다. 그 결과, 단일 데이터베이스는 다수의 서버 컴퓨터 시스템 사이에 공유되는 자원이 되며 따라서 아마도 확장성을 제한하게 된다. 즉, 보다 많은 서버 컴퓨터 시스템의 부가가 반드시 성능을 향상시키는 것은 아닌데, 왜냐하면 각 서버 컴퓨터 시스템이 적어도 콘텐츠가 단일 데이터베이스로부터 검색되는 데 필요한 시간에 의해 제한되기 때문이다. 게다가, 콘텐츠가 너무 일찍 캐시로부터 (예를 들어, 지정된 간격으로) 제거되는 경우, 서버 컴퓨터 시스템은 캐시 내의 동적 콘텐츠가 여전히 유효할지라도 데이터베이스에 재질의를 해야 할 필요가 있을 수 있다. 멀티-서버 환경에서, 캐싱된 콘텐츠의 너무 이른 제거는 공유된 데이터베이스의 자원에 불필요한 부담을 줄 수 있으며, 그에 따라 역시 아마도 상당히 확장성을 제한할 수 있다. 따라서, 캐시 엔트리를 데이터베이스 테이블에서의 변경에 의존하도록 구성하고 그 변경에 기초하여 캐시 엔트리를 무효화시키는 메커니즘이 유익할 것이다.
종래 기술에서의 이상의 문제점은 캐시 엔트리를 무효화시키는 데 사용될 수 있는 데이터베이스 테이블 변경 정보를 등록 및 검색하는 시스템, 방법, 컴퓨터 프로그램 제품, 및 데이터 구조에 관한 본 발명의 원리에 의해 극복된다. 브라우저를 갖는 클라이언트 컴퓨터 시스템은 웹 응답(예를 들어, 웹 페이지 및/또는 웹 서비스 결과)을 작성하여 클라이언트 컴퓨터 시스템에 제공할 수 있는 서버 컴퓨터 시스템에 네트워크 연결가능하다. 서버 컴퓨터 시스템은 데이터베이스 내의 데이터 테이블로부터의 웹 응답을 위한 콘텐츠의 적어도 일부에 액세스한다. 서버 컴퓨터 시스템은 클라이언트 웹 요청을 만족시키기 위해 차후에 동일한 콘텐츠를 제공하는 효율성을 향상시키도록 제공된 콘텐츠를 저장할 수 있는 캐시를 (예를 들어, 시스템 메모리 내에) 보유한다.
서버 컴퓨터 시스템은 데이터 변경이 있는지 모니터링되어지는 데이터베이스(예를 들어, SQL 데이터베이스) 내에 포함된 데이터 테이블을 (예를 들어, 사용자 입력에 응답하여) 선택한다. 선택된 데이터 테이블에 대응하는 레코드가 변경 통지 테이블(역시 데이터베이스에 포함되어 있음)에 삽입된다. 대응하는 레코드는 선택된 데이터 테이블에 대한 예를 들면 변경 ID 등의 버전 정보를 포함하고 있다. 선택된 데이터 테이블 내의 콘텐츠가 변경될 때 선택된 데이터 테이블에 대한 버전 정보가 변경 통지 테이블에서 갱신되도록 하는 트리거가 상기 선택된 데이터 테이블에 할당된다.
선택된 데이터 테이블에서의 콘텐츠 변경(예를 들어, 레코드의 삽입, 삭제 또는 갱신)에 응답하여, 변경 통지 테이블 내의 대응하는 버전 정보가 갱신된다. 때때로 또는 캐싱된 콘텐츠를 검색하라는 요청에 응답하여, 서버 컴퓨터 시스템은 데이터베이스 내의 하나 이상의 테이블에 대응하는 버전 정보를 얻기 위해 변경 통지 테이블에 질의를 한다. 질의는 변경 통지 테이블에 나타내어져 있는 모든 모니터링된 데이터 테이블에 대한 버전 정보를 요청하도록, 눈에 띄는 캐시 의존성을 갖는 모니터링된 데이터 테이블에 대한 버전 정보를 요청하도록, 또는 (예를 들어, 현재의 버전 정보를 질의에 포함시킴으로써) 변경된 모니터링된 데이터 테이블에 대한 버전 정보를 요청하도록 구성될 수 있다. 질의에 응답하여, 갱신된 버전 정보가 데이터베이스로부터 서버 컴퓨터 시스템에 반환된다. 질의의 구성에 기초하여, 데이터베이스는 예를 들어 모든 모니터링된 데이터 테이블에 대한 버전 정보,눈에 띄는 캐시 의존성을 갖는 모니터링된 데이터 테이블에 대한 버전 정보, 또는 변경된 모니터링된 데이터 테이블에 대한 버전 정보를 반환할 수 있다.
다른 대안에서, 서버 컴퓨터 시스템은 변경 통지 테이블로 질의를 발행하고 요청된 테이블(들)에 대한 버전 정보가 갱신될 때까지 발행된 질의가 서버 컴퓨터 시스템 상에서 블로킹되도록 요청할 수 있다. 예를 들어, 서버 컴퓨터 시스템은 현재의 버전 정보가 지정된 임계값보다 크게 될 때까지 서버 컴퓨터 시스템 상에서 블로킹되는 질의를 발행할 수 있다. 발행된 블로킹 질의는 동기적으로 실행될 수 있으며, 따라서 서버 컴퓨터 시스템 상의 대응하는 쓰레드는 결과가 이용가능하게 될 때까지 블로킹된다. 반면, 발행된 블로킹 질의는 비동기적으로 실행될 수 있으며, 따라서 서버 컴퓨터 시스템 상의 대응하는 쓰레드는 블로킹되지 않으며, 결과가 이용가능하게 될 때 서버 컴퓨터 시스템 상에서 (예를 들어, 별도의 쓰레드에 대해) 콜백이 호출된다.
서버 컴퓨터 시스템은 (예를 들어, 이전에 할당된 데이터베이스 캐시 의존성의 결과로서) 캐싱된 콘텐츠가 데이터 테이블 중 하나에 의존하고 있는 것으로 결정한다. 서버 컴퓨터 시스템은 현재의 버전 정보(리스트에 수신되어 있음)를 캐싱된 버전 정보(예를 들어, 캐싱된 콘텐츠의 일부분과 함께 캐싱된 버전 정보)와 비교한다. 이것은 수신된 캐시 ID를 캐싱된 변경 ID와 비교하는 단계를 포함할 수 있다. 적절한 경우, 예를 들어 데이터 테이블에 기초한 콘텐츠의 일부분이 캐싱된 후 데이터 테이블 내의 콘텐츠가 변하면, 캐싱된 콘텐츠의 그 일부분은 캐시로부터 제거된다. 따라서, 모니터링된 데이터 테이블에 의존하는 캐싱된 콘텐츠는 적절히무효화되고 캐시로부터 제거될 수 있다. 캐싱된 콘텐츠를 적절히 무효화하고 제거하는 것은 서버 컴퓨터 시스템이 무효인 캐싱된 콘텐츠를 웹 응답에 포함하고 있을 가능성을 감소시킨다. 게다가, (예를 들어, 시간 의존성을 가지고 일어날 수 있는) 유효인 데이터를 제거할 가능성도 감소되며, 그에 따라 아마도 웹 응답 작성의 효율성을 증가시킨다.
어떤 실시예에서, 캐싱된 콘텐츠는 테이블 형태의 데이터, 객체, 컬렉션 또는 부분 응답 등의 웹 응답을 작성하는 데 사용되는 객체 또는 결과의 형태이다. 이들 중간 결과를 캐싱하는 것은 2개 이상의 웹 응답의 작성에서 그 결과가 사용될 수 있을 때 적절하며, 이 경우 각 웹 응답이 부가의 차별성있는 정보(예를 들어, 커스터마이제이션 또는 다른 관련 정보의 포함)를 포함하고 있다. 다른 실시예에서, 전체 웹 응답이 캐싱된다. 전체 웹 응답을 캐싱하는 것은 그 전체 웹 응답이 다수의 웹 요청에 걸쳐 공유될 수 있는 경우에 적절하다. 전체 웹 응답을 캐싱하는 경우, 웹 응답은 서버 컴퓨터 시스템의 하위 레벨, 예를 들어 커널 모드 응답 캐시에 캐싱되도록 푸시 다운될 수 있다. 따라서, 웹 응답이 무효화되는 경우, 그 웹 응답은 하위 레벨 캐시로부터 제거된다.
서버 컴퓨터 시스템이 데이터 테이블에 포함되어 있는 요청된 콘텐츠를 포함하게 될 웹 응답에 대한 클라이언트 웹 요청을 수신하는 경우가 있을 수 있다. 이 데이터 테이블은 일반적으로 요청된 콘텐츠를 비롯하여 데이터 테이블 내의 콘텐츠를 변경할 수 있는 다른 애플리케이션들이 액세스가능한 데이터 테이블일 수 있다. 서버 컴퓨터 시스템은 웹 응답에 포함되어질 콘텐츠의 적어도 일부분이 현재 서버컴퓨터 시스템에 캐싱되어 있지 않은 것으로 결정한다. 서버 컴퓨터 시스템은 데이터 테이블로부터의 요청된 콘텐츠에 액세스하고 그 요청된 콘텐츠를 포함할 웹 응답을 작성한다.
서버 컴퓨터 시스템은 웹 응답의 작성 동안에 실행되는 명령에 기초하여 데이터베이스 캐시 의존성을 작성된 웹 응답의 적어도 일부분에 할당한다. 데이터베이스 캐시 의존성을 할당하는 것은 웹 응답을 데이터 테이블에 의존하도록 할당하는 것 또는 데이터 테이블로부터 검색된 데이터에 기초한 콘텐츠를 데이터 테이블에 의존하도록 할당하는 것을 포함할 수 있다. 데이터베이스 캐시 의존성은 웹 응답을 작성하기 위해 서버 컴퓨터 시스템에서 처리되는 페이지 파일에(예를 들어, ASP(액티브 서버 파일) 파일에) 포함되어 있는 디렉티브 또는 프로그램 코드를 사용하여 할당될 수 있다. 작성된 웹 응답의 그 적어도 일부분은 서버 컴퓨터 시스템에 캐싱된다. 따라서, 작성된 웹 응답에 대한 차후의 웹 요청에 응답하여, 서버 컴퓨터 시스템은 작성된 웹 응답의 캐싱된 적어도 일부분을 검색할 수 있다. 캐싱된 콘텐츠(아마도 전체 웹 응답)를 검색하는 것은 서버 컴퓨터 시스템 자원(페이지 파일의 일부분이 재실행되지 않기 때문임) 및 네트워크와 데이터베이스 자원(데이터베이스가 재질의를 받지 않고 따라서 데이터가 네트워크를 통해 전송되지 않기 때문임) 둘 모두를 보존한다. 따라서, 웹 요청에 응답하는 데 요구되는 프로세싱 및 자원을 감소시킴으로써 지연 시간이 감소되고, 데이터베이스 등의 공유된 자원으로의 동시적인 액세스를 감소시킴으로써 확장성이 증가된다.
본 발명의 부가의 특징 및 이점이 이하의 설명에 기술될 것이며, 부분적으로는 이 설명으로부터 명백하거나 본 발명의 실시에 의해 알 수 있다. 본 발명의 특징 및 이점은 첨부된 청구항들에 특히 지적된 수단 및 조합에 의해 실현 및 달성될 수 있다. 본 발명의 이들 및 다른 특징은 이하의 설명 및 첨부된 청구항들로부터 보다 완전히 명백해지거나 이후에 기술되는 본 발명의 실시에 의해 알 수 있다.
도 1은 본 발명의 원리들에 따라 캐시 엔트리를 데이터베이스 테이블에서의 변경에 의존하도록 구성하는 것과 캐시 엔트리를 그 변경에 기초하여 무효화시키는 것을 용이하게 해주는 예시적인 네트워크 아키텍처를 나타낸 도면.
도 2는 본 발명의 원리들에 따라 테이블 변경 통지를 제공하도록 데이터베이스를 구성하는 방법의 예시적인 플로우차트를 나타낸 도면.
도 3은 본 발명의 원리들에 따라 캐싱된 콘텐츠의 일부분을 무효화시키는 방법의 예시적인 플로우차트를 나타낸 도면.
도 4는 본 발명의 원리들에 따라 요청측 클라이언트 컴퓨터 시스템으로 제공할 콘텐츠에 액세스하는 방법의 예시적인 플로우차트를 나타낸 도면.
도 5는 본 발명의 원리들에 따른 적당한 오퍼레이팅 환경을 나타낸 도면.
<도면의 주요 부분에 대한 부호의 설명>
101: 클라이언트 컴퓨터 시스템
111: 서버 컴퓨터 시스템
112: 캐시
132: 캐시 인터페이스 모듈
136: 데이터베이스 인터페이스 모듈
141: 데이터베이스
142: 변경 통지 테이블
본 발명의 상기한 이점 및 특징과 그 밖의 이점 및 특징이 달성될 수 있는 방법을 기술하기 위해, 이상에서 간략하게 기술된 본 발명의 보다 구체적인 설명이 첨부 도면에 도시된 본 발명의 구체적인 실시예를 참조하여 기술될 것이다. 이들 도면이 본 발명의 전형적인 실시예들만 도시하고 있으며 따라서 그의 범위를 제한하는 것으로 간주되어서는 안됨을 염두에 두면서, 첨부 도면을 참조하여 보다 구체적이고 상세하게 본 발명에 대해 기술하고 설명할 것이다.
본 발명은 캐시 엔트리를 무효화하는 데 사용될 수 있는 데이터베이스 테이블 변경 정보를 등록 및 검색하는 방법, 시스템, 컴퓨터 프로그램 제품, 및 데이터 구조로 확장된다. 브라우저를 갖는 클라이언트 컴퓨터 시스템은 웹 응답(예를 들어, 웹 페이지 및/또는 웹 서비스로부터의 결과)을 작성하여 클라이언트 컴퓨터 시스템으로 제공할 수 있는 서버 컴퓨터 시스템에 네트워크 연결가능하다. 서버 컴퓨터 시스템은 데이터베이스 내의 데이터 테이블들로부터의 웹 응답들을 위한 콘텐츠의 일부분에 적어도 액세스한다. 서버 컴퓨터 시스템은 클라이언트 웹 요청을 만족시키기 위해 차후에 동일한 콘텐츠를 제공하는 효율성을 향상시키도록 (데이터 테이블로부터의 콘텐츠를 포함하는) 제공된 콘텐츠를 저장할 수 있는 캐시를 (예를들면, 시스템 메모리에) 보유하고 있다.
서버 컴퓨터 시스템은 데이터 테이블 내의 콘텐츠가 변경(예를 들어, 삽입, 삭제, 갱신)될 때 갱신된 버전 정보(versioning information)(예를 들어, 변경 ID)를 갖는 변경 통지 테이블을 제공하도록 (예를 들어, 사용자 입력에 응답하여) 데이터베이스 내의 데이터 테이블을 구성한다. 서버 컴퓨터 시스템은 대응하는 데이터 테이블에 대한 갱신된 버전 정보를 요청하기 위해 가끔씩 또는 캐싱된 콘텐츠를 검색하라는 요청에 응답하여 변동 통지 테이블에 질의를 한다. 그에 응답하여, 데이터베이스는 그 질의에 대응하는 데이터 테이블의 갱신된 버전 정보를 제공한다. 서버 컴퓨터 시스템은 갱신된 버전 정보를 사용하여 (예를 들어, 이전에 할당된 데이터베이스 캐시 의존성에 기초하여) 캐시 엔트리를 무효화시킬 수 있다.
어떤 실시예들에서, 서버 컴퓨터 시스템은 데이터 테이블에 포함된 요청된 콘텐츠를 포함하게 될 웹 응답에 대한 클라이언트 웹 요청을 수신한다. 서버 컴퓨터 시스템은 웹 응답에 포함될 콘텐츠의 적어도 일부분이 현재 서버 컴퓨터 시스템에 캐싱되어 있지 않은 것으로 결정한다. 서버 컴퓨터 시스템은 데이터 테이블로부터의 요청된 콘텐츠에 액세스하고 요청된 콘텐츠를 포함하도록 웹 응답을 작성한다. 서버 컴퓨터 시스템은 웹 응답의 작성 동안에 실행되는 명령에 기초하여 데이터베이스 캐시 의존성을 작성된 웹 응답의 적어도 일부분에 할당한다. 작성된 웹 응답의 적어도 일부분은 서버 컴퓨터 시스템에 캐싱된다.
본 발명의 실시예들은 이하에 보다 상세히 기술하는 여러가지 컴퓨터 하드웨어 및 소프트웨어를 포함하는 특수 목적 또는 범용 컴퓨터를 포함할 수 있다. 구체적으로 설명하면, 본 발명의 범위 내의 실시예들은 컴퓨터 실행가능 명령어 또는 데이터 구조를 담고 있거나 이를 저장하고 있는 컴퓨터 판독가능 매체를 포함한다. 이러한 컴퓨터 판독가능 매체는 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 제한으로서가 아닌 예로서, 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM, 또는 광학 디스크 저장 장치, 자기 디스크 저장 장치 또는 기타 자기 저장 장치 등의 기타 물리 저장 매체, 또는 컴퓨터 실행가능 명령어 또는 데이터 구조 형태의 원하는 프로그램 코드 수단을 담고 있거나 그를 저장하기 위해 사용될 수 있고 또 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다.
정보가 네트워크 또는 다른 통신 연결(유선, 무선, 또는 유선이나 무선의 조합)을 통해 컴퓨터로 전송 또는 제공될 때, 그 컴퓨터는 그 연결을 컴퓨터 판독가능 매체로 간주한다. 따라서, 임의의 이러한 연결은 컴퓨터 판독가능 매체라고 하여도 무방하다. 전술한 것들의 조합도 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다. 컴퓨터 실행가능 명령어는 범용 컴퓨터, 특수 목적 컴퓨터, 또는 GPU 등의 특수 목적 프로세싱 장치로 하여금 어떤 기능 또는 일군의 기능을 수행하도록 하는 예를 들어 명령어 및 데이터를 포함한다.
이 설명 및 이하의 청구항들에서, "컴퓨터 시스템"은 전자 데이터에 대해 연산을 수행하기 위해 서로 협력하는 하나 이상의 소프트웨어 모듈, 하나 이상의 하드웨어 모듈, 또는 이들의 조합으로서 정의된다. 예를 들어, 컴퓨터 시스템의 정의는 퍼스널 컴퓨터의 오퍼레이팅 시스템 등의 소프트웨어 모듈 뿐만 아니라 퍼스널 컴퓨터의 하드웨어 컴포넌트도 포함한다. 모듈의 물리적 레이아웃은 중요하지 않다. 컴퓨터 시스템은 네트워크를 통해 연결된 하나 이상의 컴퓨터들을 포함할 수 있다. 이와 마찬가지로, 컴퓨터 시스템은 내부 모듈들(메모리 및 프로세서 등)이 전자 데이터에 대해 연산을 수행하기 위해 서로 협력하는 단 하나의 물리적 장치(모바일 전화 또는 개인 휴대 단말기 "PDA" 등)를 포함할 수 있다.
이 설명 및 이하의 청구항들에서, "웹 응답"은 예를 들어 웹 페이지 및/또는 웹 서비스로부터의 결과 등의 사람-판독가능 페이지로서 정의된다. 웹 페이지는 대응하는 URL(Uinform Resource Locator)에 액세스함으로써 예를 들어 월드 와이드 웹("WWW") 등의 네트워크로부터 검색될 수 있다. 웹 페이지는 예를 들어 브라우저(102) 등의 웹 브라우저에서 제공될 수 있는 하나 이상의 HTML(HyperText Markup Language, 하이퍼텍스트 마크업 언어) 명령어를 포함할 수 있다. 웹 서비스는 커스텀 명령어(custom instruction)를 개발할 필요없이 서로 다른 소스로부터의 서로 다른 애플리케이션들이 (아마도 사용자 상호 작용과는 독립적으로) 통신하기 위한 메커니즘을 제공한다. 웹 서비스는 예를 들어 데이터를 태깅하기 위한XML(Extensible Markup Language, 확장성 마크업 언어), 데이터를 전송하기 위한 SOAP(Simple Object Access Protocol, 단순 객체 액세스 프로토콜), 가용 서비스를 기술하기 위한 WSDL(Web Services Description Language, 웹 서비스 기술 언어), 및 가용 서비스를 열거하기 위한 UDDI(Universal Description, Discovery and Integration) 등의 다수의 서로 다른 기술들을 통합할 수 있다. 웹 서비스는 네트워크를 거쳐 프로그램 인터페이스(programmatic interface)를 통해 비지니스 로직,데이터, 및 프로세스를 공유할 수 있다.
이 설명 및 이하의 청구항들에서, "웹 요청"은 "웹 응답"에 대한 요청으로서 정의된다. 사용자는 웹 요청을 개시하기 위해 사용자 인터페이스에서 적절한 명령을 입력하는 경우가 있을 수 있다. 예를 들어, 클라이언트 컴퓨터 시스템(101)에 있는 사용자는 웹 페이지에 대응하는 URL에 액세스하기 위해 브라우저(102)에서 적절한 명령을 입력할 수 있다. 반면에, 애플리케이션이 웹 요청을 개시하는 경우도 있을 수 있다. 예를 들어, 클라이언트 컴퓨터 시스템(101)에 있는 웹 서비스 애플리케이션은 서버 컴퓨터 시스템(111)에 있는 웹 서비스 애플리케이션으로 웹 요청을 개시할 수 있다.
당업자라면 본 발명이 퍼스널 컴퓨터, 랩톱 컴퓨터, 멀티-프로세서 시스템, 미니 컴퓨터, 메인 프레임 컴퓨터 등을 비롯한 여러 유형의 컴퓨터 시스템 구성으로 실시될 수 있음을 잘 알 것이다. 본 발명은 또한 네트워크를 통해 (유선 링크, 무선 링크에 의해, 또는 유선 링크와 무선 링크의 조합에 의해) 연결되어 있는 로컬 및 원격 컴퓨터 시스템 둘 모두가 작업을 수행하는 분산 시스템 환경에서 실시될 수 있다. 분산 시스템 환경에서, 프로그램 모듈 및 관련 데이터 구조는 로컬 및 원격 메모리 저장 장치 양쪽 모두에 위치할 수 있다.
이제 도 1을 참조하면, 도 1은 본 발명의 원리들에 따라 캐시 엔트리를 데이터베이스 테이블에서의 변경에 의존하도록 구성하는 것과 캐시 엔트리를 그 변경에 기초하여 무효화시키는 것을 용이하게 해주는 예시적인 네트워크 아키텍처(100)를 나타낸 것이다. 네트워크 아키텍처(100)에서의 직사각형 요소[예를 들어, 브라우저(102), 캐시 인터페이스 모듈(132), 응답 작성 모듈(133), 데이터베이스 인터페이스 모듈(136), 트리거(167), 및 트리거(177)]는 본 발명의 원리를 용이하게 해주는 실행가능 모듈을 나타낸다. 스크롤형 요소(scrolled element)[캐시 엔트리(121, 126), 응답 콘텐츠(134), 레코드(151, 156), 및 데이터(163, 173)]는 실행가능 모듈에 의해 처리되는 데이터를 나타낸다. 따라서, 네트워크 아키텍처(100)에 도시된 실행가능 모듈 및 스크롤형 요소는 본 발명의 원리들을 구현하기 위해 협동적으로 상호작용한다.
네트워크 아키텍처(100) 내에서, 클라이언트 컴퓨터 시스템(101)과 서버 컴퓨터 시스템(111) 각각은 대응하는 링크(103, 104)에 의해 각각 네트워크(106)에 연결되어 있다. 네트워크(106)는 LAN(local area network, 근거리 통신망), WAN(wide area network, 원거리 통신망) 또는 심지어 인터넷일 수 있다. 클라이언트 컴퓨터 시스템(101)은 웹 페이지에 대한 웹 요청[예를 들어, HTTP(HyperText Transfer Protocol, 하이퍼텍스트 전송 프로토콜) 요청]을 전송할 수 있고 또 웹 요청에 응답하여 컴퓨터 시스템(101)로 반환되는 웹 페이지를 수신할 수 있는 브라우저(102)를 포함할 수 있다. 브라우저(102)는 또한 클라이언트 컴퓨터 시스템(101)에서 수신된 웹 페이지 콘텐츠(예를 들어, 텍스트, 그래픽, 비디오, 및 오디오)를 제공할 수 있다. 클라이언트 컴퓨터 시스템(101)은 또한 서버 컴퓨터 시스템(111)에 있는 대응하는 웹 서비스 애플리케이션과 통신하는 웹 서비스 애플리케이션을 포함할 수 있다.
서버 컴퓨터 시스템(111)은 클라이언트 웹 요청에 응답하여 웹 응답을 작성할 수 있는 응답 작성 모듈(133)을 포함한다. 응답 작성 모듈(133)은 웹 페이지를 작성하기 위해 예를 들어 ASP(Active Server Page, 액티브 서버 페이지) 파일 등의 페이지 파일을 처리할 수 있다. 페이지 파일은 예를 들어 HTML, XML, JavaScript 및 VBScript 등의 다양한 서로 다른 언어로부터의 명령어(instruction) 및/또는 명령(command)을 포함할 수 있다. 응답 작성 모듈(133)은 웹 응답의 콘텐츠를 생성하기 위해 페이지 파일 내의 명령어 및/또는 명령을 처리할 수 있다. 응답 작성 모듈(133)은 예를 들어 브라우저로부터의 웹 요청에 응답하여 웹 페이지를 작성하도록 구성될 수 있으며, 예를 들어 웹 서비스 애플리케이션으로부터의 웹 요청에 응답하여 웹 서비스 결과를 생성하도록 구성될 수 있다.
서버 컴퓨터 시스템(111)은 링크(107)에 의해 데이터베이스(141)(예를 들어, SQL 데이터베이스)에 연결되어 있다. 데이터베이스 인터페이스 모듈(136)은 링크(107)를 통해 데이터베이스 명령을 데이터베이스(141)로 전송할 수 있다. 데이터베이스 명령은 데이터베이스(141) 내의 콘텐츠를 조작(예를 들어, 추가, 삭제, 또는 열 또는 레코드를 변경)하거나 데이터베이스(141)로부터 콘텐츠를 검색하는 데 사용될 수 있다. 데이터베이스 인터페이스 모듈(136)은 데이터베이스 명령으로 변환되어 데이터베이스(141)로 전송되는 사용자 입력을 (예를 들어, 키보드 또는 마우스로부터) 수신할 수 있다. 다른 대안에서, 데이터베이스 인터페이스 모듈(136)은 웹 응답에 포함하기 위한 콘텐츠를 요청하는 응답 작성 모듈(133)로부터의 입력을 수신할 수 있다. 그에 응답하여, 데이터베이스 인터페이스 모듈(136)은 데이터베이스(141)로부터 콘텐츠를 검색하고 검색된 콘텐츠를 응답 작성모듈(133)에 제공할 수 있다. 응답 작성 모듈(133)은 적절한 웹 응답을 작성하기 위해 응답 콘텐츠(134)에서 검색된 콘텐츠와 정적 콘텐츠를 결합시킬 수 있다.
데이터베이스(141)는 데이터베이스(141) 내에 포함된 데이터 테이블에 대한 버전 정보(versioning information)를 저장할 수 있다. 데이터베이스 인터페이스 모듈(136)은 데이터 테이블에 대한 버전 정보를 검색하고 검색된 버전 정보를 캐시 인터페이스 모듈(132)에 제공할 수 있다. 캐시 인터페이스 모듈(132)은 검색된 버전 정보를 이용하여 캐시(112)로부터의 엔트리를 언제 무효화(그 후에 제거)시켜야 하는지를 결정할 수 있다. 예를 들어, 검색된 버전 정보에 기초하여, 캐시 인터페이스 모듈(132)은 캐시 엔트리(121) 또는 캐시 엔트리(126)를 언제 무효화시켜야 할지를 결정할 수 있다. 캐시(112)는 예를 들어 서버 컴퓨터 시스템(111)의 시스템 메모리 등의 감축된 대기 시간을 갖는 저장 장소일 수 있다.
버전 정보는 데이터베이스(141)에 포함된 데이터 테이블의 버전을 나타내는 버전 정보 데이터 구조에 저장될 수 있다. 버전 정보 데이터 구조의 필드 중 하나는 데이터베이스(141) 내의 데이터 테이블을 식별하는 테이블 ID를 나타내는 테이블 ID 필드일 수 있다. 테이블 ID는 데이터 테이블을 일의적으로 식별해주는 예를 들어 숫자 및/또는 알파벳 문자를 비롯한 값일 수 있다. 예를 들어, 테이블 ID "판매량 테이블 3"은 테이블(162)을 식별하기 위해 사용될 수 있다.
버전 정보 데이터 구조의 필드 중 또하나는 대응하는 테이블 ID에 의해 식별된 데이터 테이블에 대한 변경 ID를 나타내는 변경 ID 필드일 수 있다. 변경 ID는 데이터 테이블의 현재의 버전을 식별해주는, 예를 들어 숫자 문자를 비롯한 값일수 있다. 데이터 테이블 내의 콘텐츠가 변경되면, 대응하는 변경 ID가 (예를 들어, 변경 ID를 증가시킴으로써) 갱신될 수 있다. 예를 들어, 콘텐츠가 테이블(172)에 삽입될 때, 변경 ID(158)는 증가될 수 있다. 버전 정보 데이터 구조의 필드 중 또하나는 데이터베이스(141)가 대응하는 테이블 ID에 의해 식별된 데이터 테이블에 대한 버전을 추적하기 시작한 날짜를 나타내는 날짜 필드일 수 있다. 예를 들어, 날짜(154)는 데이터베이스(141)가 테이블(162)에 대한 버전 정보를 추적하기 시작한 때를 가리킬 수 있다. 따라서, 버전 정보 데이터 구조는 이하의 형식을 가질 수 있다.
Versioning_Information
{
Table ID Field,
Change ID Field,
Date Field
}
하나 이상의 버전 정보 데이터 구조가 데이터베이스(141)에 포함된 변경 통지 테이블 내에 레코드로서 저장될 수 있다. 예를 들어, 변경 통지 테이블(142)은 레코드(151, 156)를 포함한다. 게다가, 변경 통지 테이블(142) 내의 각각의 일련의 3개의 수직 점들(즉, 각각의 수직 생략 표시)은 변경 통지 테이블(142)이 기타 레코드들을 포함할 수 있음을 나타낸다. 변경 통지 테이블(142) 내의 각 레코드는 버전 정보를 추적하도록 구성된 데이터 테이블에 대응한다. 예를 들어,레코드(151, 156)는 테이블(162, 172)에 각각 대응할 수 있다. 따라서, 테이블 ID(152)는 테이블(162)을 식별하는 데 사용되는 값을 저장할 수 있고, 변경 ID(153)는 테이블(162)의 현재의 버전을 가리키는 값을 저장할 수 있으며, 날짜(154)는 데이터베이스(141)가 테이블(162)에 대한 버전 정보를 언제 추적하기 시작했는지를 가리키는 값을 저장할 수 있다. 이와 마찬가지로, 테이블 ID(157)는 테이블(172)를 식별하는 데 사용되는 값을 저장할 수 있고, 변경 ID(158)는 테이블(172)의 현재의 버전을 가리키는 값을 저장할 수 있으며, 날짜(159)는 데이터베이스(141)가 테이블(172)에 대한 버전 정보를 언제 추적하기 시작했는지를 가리키는 값을 저장할 수 있다.
데이터 테이블은 변경 통지 테이블 내의 해당 변경 ID를 갱신하는 대응하는 데이터베이스 트리거(예를 들어, 컴퓨터 실행가능 명령어의 일부분)를 사용함으로써 버전 정보를 추적하도록 구성될 수 있다. 데이터 테이블 내의 콘텐츠가 변경되면, 데이터베이스 트리거가 실행되고 해당 변경 ID가 갱신된다. 예를 들어, 레코드(164) 내의 데이터가 변경되면, 트리거(167)가 변경 ID(153)의 값을 갱신하기 위해 실행될 수 있다. 이와 마찬가지로, 레코드(176)가 데이터(173)에 삽입되면, 트리거(177)가 변경 ID(158)의 값을 갱신하기 위해 실행될 수 있다. 데이터베이스(141)[또는 다른 대안에서 서버 컴퓨터 시스템(111)]의 관리자 또는 사용자는 해당 트리거가 데이터 테이블과 관련되도록 하는 사용자 입력을 입력할 수 있다.
테이블(162) 및 테이블(172)은 데이터베이스(141) 내에 포함된 데이터 테이블이다. 테이블(162, 172) 각각은 웹 응답에 포함시키기 위해 아마도 데이터베이스 인터페이스 모듈(136)에 의해 검색되는 콘텐츠를 포함할 수 있다. 예를 들어, 테이블(162) 및 테이블(172)은 회사 재고 및 판매량 정보를 각각 포함할 수 있다. 데이터 테이블 내의 콘텐츠는 하나 이상의 레코드에 의해 표현될 수 있다. 예를 들어, 데이터(163)는 레코드(164, 166)에 의해 표현된다(아마도 다른 레코드들은 수직 생략 부호로 표현됨). 이와 마찬가지로, 데이터(173)는 레코더(174, 176)에 의해 표현된다(아마도 다른 레코드들은 수직 생략 부호로 표현됨).
데이터베이스 인터페이스 모듈(136)은 콘텐츠가 데이터베이스(141)(또는 다른 데이터베이스들)로부터 검색되도록 하는 명령을 데이터베이스(141)(또는 다른 데이터베이스들)로 전송할 수 있다. 검색된 콘텐츠는 차후에 요청측 컴퓨터 시스템으로 전송되는 웹 응답의 콘텐츠로서 사용될 수 있다. 예를 들어, 서버 컴퓨터 시스템(111)은 클라이언트 컴퓨터 시스템(101)으로부터 웹 요청을 수신할 수 있다. 웹 요청은 대응하는 웹 응답을 작성하기 위해 대응하는 페이지 파일을 처리하는 응답 작성 모듈(133)로 전송될 수 있다. 응답 작성 모듈(133)은 웹 응답(또는 그의 일부분)이 캐시(112)에 저장되어 있는지를 결정하기 위해 캐시(112)를 검사할 수 있다. 웹 응답이 캐시(112)에 저장되어 있는 경우, 웹 응답은 바로 클라이언트 컴퓨터 시스템(101)으로 반환될 수 있다.
웹 응답이 캐시(112)에 저장되어 있지 않은 경우, 대응하는 페이지 파일을 포함하는 스크립트가 웹 응답을 결정하기 위해 실행될 수 있다. 스크립트의 실행은 캐시(112)에 저장되어 있는 웹 응답의 일부분을 검사하는 것 및 이용가능한 경우 그 일부분을 이용하는 것을 포함할 수 있다. 콘텐츠가 캐시(112)에 저장되어 있지 않은 경우, 실행된 스크립트는 데이터베이스(141)에 대해 콘텐츠를 요청할 수 있다. 따라서, 콘텐츠에 대한 요청은 데이터베이스 인터페이스 모듈(136)로 전송되고, 데이터베이스 인터페이스 모듈(136)은 변경 ID 및 테이블 ID를 검색하고 검색된 변경 ID 및 테이블 ID에 기초하여 요청된 콘텐츠를 검색하기 위해 적절한 명령을 발행할 수 있다. 예를 들어, 변경 ID(153) 및 테이블 ID(152)에 기초하여, 데이터베이스 인터페이스 모듈(136)은 이어서 테이블(162)로부터 데이터를 검색할 수 있다.
데이터를 얻기 위한 질의를 하기 전에 버전 정보가 검색되는 경우가 있을 수 있다. 예를 들어, 데이터베이스 인터페이스 모듈(136)은 데이터[예를 들어, 데이터(163) 및/또는 데이터(173)]를 얻기 위한 질의를 하기 전에 버전 정보(하나 이상의 변경 ID 및 하나 이상의 대응하는 테이블 ID)를 검색하도록 구성될 수 있다. 데이터를 얻기 위한 질의를 하기 전에 버전 정보를 검색하는 것은 데이터 테이블 내의 데이터가 데이터를 질의한 후에, 그러나 버전 정보가 검색되기 전에 변경되는 레이스 조건(race condition)의 가능성을 상당히 감소시킨다.
응답 작성 모듈(133)은 또한 검색된 콘텐츠가 캐싱될 것인지와 검색된 콘텐츠가 데이터 테이블에 의존하고 있는지를 결정할 수 있다. 응답 작성 모듈(133)은 캐싱할 검색된 콘텐츠를 임의의 데이터 테이블에 대한 의존성의 표지(예를 들면, 테이블 ID 및 대응하는 변경 ID)와 함께 캐시 인터페이스 모듈(132)로 전송할 수 있다. 캐시 인터페이스 모듈(132)은 검색된 콘텐츠를 캐시(112)에 삽입할 수 있다. 따라서, 검색된 콘텐츠에 대한 차후의 웹 요청은 증가된 효율성으로 처리될 수 있다.
캐싱된 콘텐츠는 캐싱된 콘텐츠 및 대응하는 의존성을 나타내는 캐시 엔트리 데이터 구조에 저장될 수 있다. 캐시 엔트리 데이터 구조의 필드 중 하나는 요청된 웹 응답으로 클라이언트 컴퓨터에게로 반환된(또는 반환될) 콘텐츠를 나타내는 페이지 콘텐츠 필드일 수 있다. 페이지 콘텐츠는 웹 응답의 일부분(예를 들어, 데이터 테이블로부터의 하나 이상의 레코드)을 포함하거나 완전한 웹 응답을 포함할 수 있다. 예를 들어, 응답 콘텐츠(122)는 레코드(164, 166)로부터의 콘텐츠를 포함할 수 있다. 다른 대안에서, 응답 콘텐츠(122)는 데이터베이스(141)로부터의 콘텐츠, 응답 콘텐츠(134)로부터의 콘텐츠, 및 다른 장소(예를 들면, 다른 데이터베이스들 또는 다른 웹 서비스들)로부터의 콘텐츠를 포함하는 완전한 웹 응답을 포함할 수 있다.
캐시 엔트리 데이터 구조의 필드 중 또하나는 데이터베이스(141) 내의 데이터 테이블을 식별하는 테이블 ID를 나타내는 테이블 ID 필드일 수 있다. 테이블 ID는 변경 통지 테이블로부터 검색된, 예를 들어 숫자 및/또는 알파벳 문자를 포함한 값일 수 있다. 예를 들어, 콘텐츠가 테이블(162)로부터 검색되는 경우, 테이블 ID(152)는 또한 변경 통지 테이블(142)로부터 검색될 수 있다. 따라서, 캐시(112) 내의 테이블 ID는 변경 통지 테이블(142) 내의 테이블 ID에 대응할 수 있다. 예를 들어, 콘텐츠가 테이블(172)로부터 검색되는 경우, 테이블 ID(128) 및 테이블 ID(157)는 둘 모두 테이블(172)을 식별할 수 있다.
어떤 실시예들에서, 예를 들어 키 엔트리(key entry) 등의 단일 테이블 ID/변경 ID 튜플(tuple)은 모니터링되는 각 데이터 테이블에 대한 캐시 내에 보유된다. 테이블에 의존하고 있는 임의의 콘텐츠는 대응하는 키 엔트리에 의존하도록 만들 수 있다. 따라서, 복수의 캐시 엔트리가 동일한 키 엔트리에 의존하도록 만들어진 경우가 있을 수 있다. 테이블 ID에 의해 식별된 테이블이 변경되는 경우, 키 엔트리에서 대응하는 변경 ID가 갱신되거나 그 키가 제거될 수 있다. 키 엔트리를 갱신하거나 제거하는 것은 임의의 의존적인 캐시 엔트리[예를 들어, 캐시 엔트리(126)]가 캐시로부터 제거되도록 한다. 단 하나의 키 의존성이 다수의 캐시 엔트리를 무효화시키는 것은 캐시 엔트리를 보유하기 위해 요구되는 질의 및 버전 비교의 횟수를 감소시킨다. 따라서, 키 엔트리가 의존적인 콘텐츠를 언제 무효화시킬지를 결정하는 효율성을 향상시키는 데 사용될 수 있다.
캐시 엔트리 데이터 구조의 필드 중 또하나는 대응하는 테이블 ID에 의해 식별되는 데이터 테이블에 대한 변경 ID를 나타내는 변경 ID 필드일 수 있다. 변경 ID는 예를 들어 변경 통지 테이블로부터 검색된 숫자 문자를 비롯한 값일 수 있다. 예를 들어, 콘텐츠가 테이블(162)로부터 검색되는 경우, 변경 ID(153)는 또한 변경 통지 테이블(142)로부터 검색될 수 있다. 따라서, 캐시(112) 내의 변경 ID는 변경 통지 테이블(142) 내의 변경 ID에 대응할 수 있다. 예를 들어, 데이터가 테이블(172)로부터 검색될 때, 변경 ID(129) 및 변경 ID(158)는 동등할 수 있다. 따라서, 캐시 엔트리 데이터 구조는 이하의 형식을 가질 수 있다.
Cache_Entry
{
Page Content,
Table ID Field,
Change ID Field
}
하나 이상의 캐시 엔트리 데이터 구조가 캐시(112)에 저장될 수 있다. 예를 들어, 캐시(112)는 캐시 엔트리(121, 126)를 포함한다. 게다가, 캐시(112) 내의 각각의 일련의 3개의 점(즉, 각각의 생략 부호)는 캐시(112)가 다른 캐시 엔트리를 포함할 수 있음을 나타낸다. 캐시(112) 내의 각각의 캐시 엔트리는 이전에 작성된 웹 응답에 포함되었던 콘텐츠의 일부분에 대응한다. 예를 들어, 캐시 엔트리(121, 126)는 클라이언트 컴퓨터 시스템(101)으로 전달되었던 웹 응답에 포함된 적이 있을 수 있는(또는 웹 응답일 수 있는) 응답 콘텐츠(122, 127)를 각각 포함하고 있다.
때때로, 서버 컴퓨터 시스템(111)은 버전 정보을 얻기 위해 데이터베이스(141)에 질의할 수 있다. 예를 들어, 데이터베이스 인터페이스 모듈(136)은 규정된 간격으로(예를 들어, 매 5초 마다) 데이터베이스(141)에 질의하도록 구성될 수 있다. 질의의 수신에 응답하여, 데이터베이스(141)는 마지막 폴링 신호가 수신된 이후로 변경된 적이 있는 임의의 데이터 테이블에 대한 버전 정보를 반환할 수 있다. 질의는 질의에 포함된 버전 정보와 다른 버전 정보를 갖는 데이터 테이블에 대한 특정의 요청일 수 있다. 데이터베이스 인터페이스모듈(136)은 질의에 응답하여 데이터베이스(141)로부터 반환된 버전 정보를 수신할 수 있다. 데이터베이스 인터페이스 모듈(136)은 수신된 버전 정보를 캐시 인터페이스 모듈(132)로 전송할 수 있다. 캐시 인터페이스 모듈(132)은 무효화되고 아마도 캐시(112)로부터 제거될 캐시 엔트리를 식별하기 위해 수신된 버전 정보를 처리할 수 있다. 다른 대안에서, 캐시 인터페이스 모듈(132)은 캐시(112) 내의 적절한 키 엔트리를 갱신하기 위해 수신된 버전 정보를 처리할 수 있다.
다른 대안적인 실시예에서, 서버 컴퓨터 시스템(111)은 변경된 적이 있는 버전 정보를 얻기 위해 데이터베이스(141)에 질의하고 어떤 변경이 결정될 때까지 질의가 반환되지 않도록 요청할 수 있다. 예를 들어, 데이터베이스 인터페이스 모듈(136)은 모니터링되고 있는 각 테이블에 대한 블로킹 질의(blocking query)를 발행하기 위해 이용될 수 있다. 발행된 블로킹 질의는 각각의 모니터링된 테이블에 대한 현재 보유된 버전 정보를 포함할 수 있다. 발행된 블로킹 질의를 수신하자마자, 데이터베이스(141)는 요청된 테이블 중 하나 이상에 대한 버전 정보가 갱신될 때까지 기다린다. 이 갱신에 응답하여, 데이터베이스(141)는 변경된 테이블(들)에 대한 테이블 ID 및 버전 정보를 반환할 수 있다. 블로킹 질의는 동기적으로 실행될 수 있으며, 따라서 데이터에 대한 요청은 변경 정보가 이용가능할 때까지 반환되지 않는다. 반면에, 블로킹 질의는 비동기적으로 실행될 수 있으며, 따라서 요청은 즉각 반환되고, 변경 정보가 이용가능할 때 서버 컴퓨터 시스템(111)에서 콜백(callback)이 호출된다.
도 2는 본 발명의 원리들에 따른, 테이블 변경 통지를 제공하도록 데이터베이스를 구성하는 방법(200)의 예시적인 플로우차트를 나타낸 것이다. 본 방법(200)에 대해서는 네트워크 아키텍처(100)에 도시된 컴퓨터 시스템 및 데이터베이스와 관련하여 설명될 것이다. 본 방법(200)은 변경이 있는지 모니터링할 데이터 테이블을 선택하는 단계(단계 201)를 포함한다. 단계 201은 데이터베이스에 네트워크 연결가능한(또는 데이터베이스를 포함하는) 컴퓨터 시스템이 콘텐츠 변경이 있는지 모니터링될 그 데이터베이스로부터의 데이터 테이블을 선택하는 단계를 포함할 수 있다. 변경이 있는지 모니터링할 데이터 테이블을 선택하는 단계는 데이터베이스 인터페이스 모듈(136)이 모니터링될 데이터 테이블을 식별하는 사용자 입력을 수신하는 단계를 포함할 수 있다. 예를 들어, 서버 컴퓨터 시스템(111) 및/또는 데이터베이스(141)의 관리자는 모니터링하기 위한 테이블(162) 및/또는 테이블(172)을 선택하는 명령을 전송(submit)할 수 있다. 변경 통지 테이블이 아직 존재하지 않는 경우, 관리자는 또한 변경 통지 테이블을 생성하기 위한 명령을 입력할 수 있다. 예를 들어, 서버 컴퓨터 시스템(111) 및/또는 데이터베이스(141)의 관리자는 명령을 데이터베이스(141)로 전송하여 변경 통지 테이블(142)이 생성되도록 할 수 있다.
다른 대안에서, 서버 컴퓨터 시스템(111)은 선택된 데이터 테이블로부터의 콘텐츠를 포함하게 될 대응하는 웹 응답에 대한 웹 요청을 수신한 것에 응답하여 모니터링하기 위한 데이터 테이블을 선택하는 명령을 자동적으로 전송할 수 있다. 예를 들어, 테이블(162) 및/또는 테이블(172)로부터의 콘텐츠를 포함하게 될 대응하는 웹 응답에 대한 웹 요청을 수신한 것에 응답하여, 서버 컴퓨터 시스템(111)은모니터링하기 위한 테이블(162) 및/또는 테이블(172)을 선택하는 명령을 자동적으로 전송할 수 있다. 변경 통지 테이블이 아직 존재하지 않는 경우, 서버 컴퓨터 시스템(111)은 예를 들면 스크립트 내의 페이지 디렉티브(page directive)에 기초하여, 변경 통지 테이블이 생성되도록 하는 명령을 자동적으로 전송할 수 있다. 예를 들어, 데이터베이스(141) 내의 데이터 테이블로부터의 콘텐츠를 포함하게 될 대응하는 웹 응답에 대한 웹 요청을 수신한 것에 응답하여, 서버 컴퓨터 시스템(111)은 변경 통지 테이블(142)이 생성되도록 하는 명령을 자동적으로 전송할 수 있다. 데이터베이스 인터페이스 모듈(136)은 사용자 입력 및/또는 자동적으로 생성된 변경 통지 테이블 생성 명령 및 데이터 테이블 선택 명령을 데이터베이스(141)로 전송할 수 있다.
본 방법(200)은 데이터 테이블에 대응하는 레코드를 변경 통지 테이블에 삽입하는 단계(단계 202)를 포함한다. 단계 202는 변경 통지 테이블이 아직 데이터 테이블에 대응하는 레코드를 포함하고 있지 않을 때 데이터 테이블에 대응하는 레코드를 변경 통지 테이블에 삽입하는 단계를 포함할 수 있다. 예를 들어, 데이터베이스에 네트워크 연결가능한(또는 데이터베이스를 포함하는) 컴퓨터 시스템은 선택된 데이터 테이블에 대응하는 레코드를 변경 통지 테이블에 삽입할 수 있다. 삽입된 레코드는 선택된 데이터 테이블에 대응하는 버전 정보(예를 들어, 버전 정보 데이터 구조로 표현됨)를 포함할 수 있다. 레코드를 변경 통지 테이블에 삽입하는 단계는 데이터베이스 인터페이스 모듈(136)이 레코드가 변경 통지 테이블에 삽입될 것임을 가리키는 사용자 입력을 수신하는 단계를 포함할 수 있다.
예를 들어, 서버 컴퓨터 시스템(111) 및/또는 데이터베이스(141)의 관리자는 레코드(151, 156)가 변경 통지 테이블(142)에 삽입되도록 하는 명령을 전송할 수 있다. 다른 대안에서, 서버 컴퓨터 시스템(111)은 대응하는 선택된 데이터 테이블로부터의 콘텐츠를 포함하게 될 대응하는 웹 응답에 대한 웹 요청을 수신한 것에 응답하여 레코드가 변경 통지 테이블에 삽입되도록 하는 명령을 자동적으로 전송할 수 있다. 예를 들어, 테이블(162) 및/또는 테이블(172)로부터의 콘텐츠를 포함하게 될 대응하는 웹 응답에 대한 웹 요청을 수신한 것에 응답하여, 서버 컴퓨터 시스템(111)은 레코드(151, 156)가 변경 통지 테이블(142)에 삽입되도록 하는 명령을 자동적으로 전송할 수 있다. 데이터베이스 인터페이스 모듈(136)은 사용자 입력 또는 자동적으로 생성된 레코드 삽입 명령을 데이터베이스(141)로 전송할 수 있다.
본 방법(200)은 선택된 데이터 테이블에 트리거를 할당하는 단계(단계 203)를 포함한다. 단계 203은 트리거가 아직 선택된 데이터 테이블에 할당되어 있지 않을 때, 선택된 데이터 테이블에 트리거를 할당하는 단계를 포함할 수 있다. 예를 들어, 데이터베이스에 네트워크 연결가능한(또는 데이터베이스를 포함하는) 컴퓨터 시스템은 선택된 데이터 테이블에 트리거를 할당할 수 있다. 선택된 데이터 테이블 내의 콘텐츠가 변경될 때, 할당된 트리거는 선택된 데이터 테이블에 대한 버전 정보가 변경 통지 테이블 내에서 갱신되도록 할 수 있다. 예를 들어, 테이블(162) 내의 콘텐츠가 변경될 때(예를 들어, 레코드가 데이터(163)에 삽입될 때, 그로부터 제거될 때, 또는 그 안에서 변경될 때), 트리거(167)는 변경 ID(153)가 갱신(예를 들면, 증가)되도록 할 수 있다. 이와 마찬가지로, 테이블(172) 내의 콘텐츠가 변경될 때(예를 들어, 레코드가 데이터(173)에 삽입될 때, 그로부터 제거될 때, 또는 그 안에서 변경될 때), 트리거(177)는 변경 ID(158)가 갱신(예를 들면, 증가)되도록 할 수 있다.
트리거를 할당하는 단계는 데이터베이스 인터페이스 모듈(136)이 트리거가 선택된 데이터 테이블에 할당될 것임을 가리키는 사용자 입력을 수신하는 단계를 포함할 수 있다. 서버 컴퓨터 시스템(111) 및/또는 데이터베이스(141)의 관리자는 트리거가 선택된 데이터 테이블에 할당되도록 하는 명령을 전송할 수 있다. 예를 들어, 관리자는 트리거(167)가 테이블(162)에 할당되도록 하고 트리거(177)가 테이블(172)에 할당되도록 하는 입력을 전송할 수 있다. 다른 대안에서, 서버 컴퓨터 시스템(111)은 대응하는 선택된 데이터 테이블로부터의 콘텐츠를 포함하게 될 대응하는 웹 응답에 대한 웹 요청을 수신한 것에 응답하여 트리거를 자동적으로 할당할 수 있다. 예를 들어, 테이블(162) 및/또는 테이블(172)로부터의 데이터를 포함하게 될 대응하는 웹 응답에 대한 웹 요청을 수신한 것에 응답하여, 서버 컴퓨터 시스템(111)은 트리거(167)가 테이블(162)에 할당되도록 하고 및/또는 트리거(177)가 테이블(172)에 할당되도록 하는 명령을 자동적으로 전송할 수 있다. 데이터베이스 인터페이스 모듈(136)은 사용자 입력 또는 자동적으로 생성된 트리거 할당 명령을 데이터베이스(141)로 전송할 수 있다.
트리거는 테이블에 부착되어 있는 컴퓨터 실행가능 명령어의 일부분을 포함할 수 있다. 트리거는 컴퓨터 실행가능 명령어의 일부분이 이벤트가 발생할 때 실행되도록 이벤트 구동될 수 있다. 예를 들어, 트리거(167)는 데이터(163) 내의 콘텐츠가 변경될 때 동작하도록 구성될 수 있으며, 변경 ID(153)가 증가되도록 하는 컴퓨터 실행가능 명령어의 일부분을 포함할 수 있다.
본 방법(200)은 선택된 데이터 테이블 내의 콘텐츠가 변경되는 것에 응답하여 버전 정보를 갱신하는 단계(단계 204)를 포함한다. 단계 204는 데이터베이스에 네트워크 연결가능한(또는 데이터베이스를 포함하는) 컴퓨터 시스템이 선택된 데이터 테이블이 변경되는 것에 응답하여 버전 정보를 갱신하는 단계를 포함할 수 있다. 예를 들어, 데이터(163) 내의 콘텐츠가 (자동적으로 또는 사용자 입력의 결과로서) 변경될 때, 컴퓨터 시스템은 변경 ID(153)가 증가되도록 하기 위해 트리거(167) 내에 포함된 컴퓨터 실행가능 명령어의 일부분을 실행할 수 있다.
본 방법(200)은 갱신된 버전 정보를 요청측 서버 컴퓨터 시스템에 반환하는 단계(단계 205)를 포함한다. 단계 205는 갱신된 버전 정보가 서버 컴퓨터 시스템에서 캐시 엔트리 내의 콘텐츠의 유효성을 결정하기 위해 사용될 수 있도록 갱신된 버전 정보를 요청측 서버 컴퓨터 시스템에 반환하는 단계를 포함할 수 있다. 예를 들어, 데이터베이스(141)는 서버 컴퓨터 시스템(111)으로부터의 질의에 응답하여 레코드(151, 156)(또는 그의 일부분)를 서버 컴퓨터 시스템(111)으로 전송할 수 있다. 데이터베이스 인터페이스 모듈(136)은 데이터베이스(141)로부터 데이터 레코드를 수신할 수 있다. 데이터베이스 인터페이스 모듈(136)은 무효화될 캐시 엔트리를 식별하는 데 사용하기 위해 레코드(151, 156)로부터의 데이터[예를 들어, 테이블 ID(152, 157) 및 변경 ID(153, 158)]를 캐시 인터페이스 모듈(132)로 전송할 수 있다.
어떤 실시예들에서, 캐싱된 콘텐츠는 테이블 형태의 데이터(tabular data), 객체, 컬렉션, 또는 부분 웹 응답 등의 웹 응답을 작성하는 데 사용되는 객체 또는 결과의 형태로 되어 있다. 이들 중간 결과를 캐싱하는 것은 그 결과가 2개 이상의 웹 응답의 생성에 사용될 수 있을 때 적절하며, 이 경우 각각의 웹 응답은 부가의 차별성있는 정보를 포함하고 있다(예를 들어, 다른 관련 정보의 포함 또는 커스터마이제이션). 다른 실시예들에서, 전체 웹 응답이 캐싱된다. 전체 웹 응답을 캐싱하는 것은 전체 웹 응답이 다수의 서로 다른 웹 요청에 걸쳐 공유될 수 있을 때 적절하다. 전체 웹 응답을 캐싱할 때, 웹 응답은 서버 컴퓨터 시스템의 하위 레벨, 예를 들어 커널 모드 응답 캐시(kernel-mode response cache)에 캐싱되도록 푸시 다운될 수 있다. 따라서, 웹 응답이 무효화될 때, 그 웹 응답은 하위 레벨 캐시로부터 제거된다.
도 3은 본 발명의 원리들에 따른, 캐싱된 콘텐츠의 일부분을 무효화시키는 방법(300)의 예시적인 플로우차트를 나타낸 것이다. 본 방법(300)은 네트워크 아키텍처(100)에 도시된 컴퓨터 시스템 및 데이터베이스와 관련하여 기술될 것이다. 방법(300)은 하나 이상의 데이터 테이블에 대응하는 버전 정보를 얻기 위해 변경 통지 테이블에 질의하는 단계(단계 301)를 포함한다. 단계 301은 하나 이상의 데이터 테이블로부터의 콘텐츠를 포함하는 웹 응답을 작성하는 서버 컴퓨터 시스템이 하나 이상의 데이터 테이블에 대응하는 버전 정보를 얻기 위해 변경 통지 테이블에 질의하는 단계를 포함할 수 있다. 예를 들어, 데이터베이스 인터페이스 모듈(136)은 테이블(162, 172)에 대응하는 버전 정보를 얻기 위해 변경 통지 테이블(142)에질의할 수 있다. 데이터베이스 인터페이스 모듈(136)은 수신된 사용자 입력의 결과로서, 규정된 폴링 구간의 발생의 결과로서, 캐싱된 콘텐츠를 검색하라는 요청에 응답하여, 또는 블로킹 질의가 의존적인 테이블에 대해 데이터를 요청하기 전에 개시된 것에 응답하여 변경 통지 테이블(142)에 질의할 수 있다.
질의는 (예를 들어, 현재의 버전 정보를 질의에 포함시킴으로써) 변경 통지 테이블에 표현된 모든 모니터링된 데이터 테이블에 대한 버전 정보를 요청하도록, 눈에 띄는 캐시 의존성을 갖는 모니터링된 데이터 테이블에 대한 버전 정보를 요청하도록, 또는 변경된 적이 있는 모니터링된 데이터 테이블에 대한 버전 정보를 요청하도록 구성될 수 있다. 질의에 응답하여, 갱신된 버전 정보가 데이터베이스로부터 서버 컴퓨터 시스템에 반환된다. 질의의 구성에 기초하여, 데이터베이스는 예를 들어 모든 모니터링된 데이터 테이블에 대한 버전 정보, 눈에 띄는 캐시 의존성을 갖는 모니터링된 데이터 테이블에 대한 버전 정보, 또는 변경된 적이 있는 모니터링된 데이터 테이블에 대한 버전 정보를 반환할 수 있다.
다른 대안에서, 서버 컴퓨터 시스템은 변경 통지 테이블에 질의를 발행할 수 있으며 또 발행된 질의가 요청된 테이블에 대한 버전 정보가 갱신될 때까지 서버 컴퓨터 시스템 상에서 블로킹되도록 요청할 수 있다. 예를 들어, 서버 컴퓨터 시스템은 현재의 버전 정보가 규정된 임계값보다 클 때까지 서버 컴퓨터 시스템 상에서 블로킹되는 질의를 발행할 수 있다. 발행된 블로킹 질의는 동기적으로 실행될 수 있으며, 따라서 서버 컴퓨터 시스템 상의 대응하는 쓰레드는 결과가 이용가능할 때까지 블로킹된다. 반면, 발행된 블로킹 질의는 비동기적으로 실행될 수 있으며,따라서 서버 컴퓨터 시스템 상의 대응하는 쓰레드는 블로킹되지 않으며, 결과가 이용가능할 때 서버 컴퓨터 시스템 상에서 (예를 들면, 별도의 쓰레드에 대해) 콜백이 호출된다.
방법(300)은 변경 통지 테이블에 마지막으로 질의된 이후로 변경된 적이 있는 적어도 하나의 데이터 테이블의 리스트를 수신하는 단계(단계 302)를 포함한다. 단계 302는 적어도 하나의 데이터 테이블로부터의 콘텐츠를 포함하는 웹 응답을 작성하는 서버 컴퓨터 시스템이 그 자신이 변경 통지 테이블에 마지막으로 질의한 이후로 변경된 적이 있는 적어도 하나의 데이터 테이블의 리스트를 수신하는 단계를 포함할 수 있다. 적어도 하나의 데이터 테이블의 리스트는 적어도 하나의 데이터 테이블에 대한 현재의 버전 정보를 포함할 수 있다. 예를 들어, 데이터베이스(141)는 테이블(162)에 대한 버전 정보[예를 들어, 테이블 ID(152) 및 변경 ID(153)] 및 테이블(172)에 대한 버전 정보[예를 들어, 테이블 ID(157) 및 변경 ID(158)]를 포함하는 데이터 테이블의 리스트를 서버 컴퓨터 시스템(111)로 반환할 수 있다. 데이터베이스 인터페이스 모듈(136)은 데이터베이스(141)로부터 반환된 데이터 테이블의 리스트를 수신할 수 있다.
본 방법(300)은 캐싱된 콘텐츠가 적어도 하나의 데이터 테이블에 의존하고 있는 것으로 결정하는 단계(단계 303)를 포함한다. 단계 303은 적어도 하나의 데이터 테이블로부터의 콘텐츠를 포함하는 웹 응답을 작성하는 서버 컴퓨터 시스템이 캐싱된 콘텐츠가 적어도 하나의 데이터 테이블에 의존하고 있는 것으로 결정하는 단계를 포함할 수 있다. 예를 들어, 서버 컴퓨터 시스템(111)은 응답 콘텐츠(122)가 테이블(162)에 의존하고 있고 응답 콘텐츠(127)가 테이블(172)에 의존하고 있는 것으로 결정할 수 있다. 캐시 인터페이스 모듈(132)은 수신된 테이블 ID[테이블 ID(152, 157)]를 대응하는 캐싱된 테이블 ID[테이블 ID(123, 128)]와 비교할 수 있다. 테이블 ID의 비교가 그렇게 나타내고 있을 때(예를 들어, 수신된 테이블 ID와 캐싱된 테이블 ID가 동일한 데이터 테이블을 식별하고 있을 때), 캐시 인터페이스 모듈(132)은 캐싱된 콘텐츠가 데이터 테이블에 의존하고 있는 것으로 결정한다. 예를 들어, 테이블 ID(123)의 값이 테이블 ID(152)의 값과 매칭할 때, 캐시 인터페이스 모듈(132)은 응답 콘텐츠(122)가 테이블(162)에 의존하고 있는 것으로 결정할 수 있다. 이와 마찬가지로, 테이블 ID(128)의 값이 테이블 ID(157)의 값과 매칭할 때, 캐시 인터페이스 모듈(132)은 응답 콘텐츠(127)가 테이블(172)에 의존하고 있는 것으로 결정할 수 있다.
본 방법(300)은 현재의 버전 정보를 캐싱된 버전 정보와 비교하는 단계(단계 304)를 포함한다. 단계 304는 적어도 하나의 데이터 테이블로부터의 콘텐츠를 포함하는 웹 응답을 작성하는 서버 컴퓨터 시스템이 현재의 버전 정보를 캐싱된 버전 정보와 비교하는 단계를 포함할 수 있다. 예를 들어, 서버 컴퓨터 시스템(111)은 반환된 리스트로부터의 버전 정보를 캐시(112)에 포함된 버전 정보와 비교할 수 있다. 캐시 인터페이스 모듈(132)은 수신된 변경 ID[변경 ID(153, 158)]를 대응하는 캐싱된 변경 ID[변경 ID(124, 129)]와 비교할 수 있다.
본 방법은 비교의 결과에 기초하여 캐싱된 콘텐츠의 일부분을 제거하는 단계(단계 305)를 포함한다. 단계 305는 적어도 하나의 데이터 테이블로부터의 콘텐츠를 포함하는 웹 응답을 작성하는 서버 컴퓨터 시스템이 비교의 결과에 기초하여 캐싱된 콘텐츠의 일부분을 제거하는 단계를 포함할 수 있다. 예를 들어, 서버 컴퓨터 시스템(111)은 현재의 버전 정보와 캐싱된 버전 정보의 비교에 기초하여 캐싱된 콘텐츠를 캐시(112)로부터 제거할 수 있다. 변경 ID의 비교가 그렇게 표시되는 경우(예를 들어, 수신된 변경 ID의 값이 캐싱된 변경 ID의 값보다 큰 경우), 캐시 인터페이스 모듈(132)은 캐싱된 콘텐츠를 제거한다. 예를 들어, 변경 ID(153)가 변경 ID(124)보다 큰 경우, 캐시 인터페이스 모듈(132)은 캐시 엔트리(121)를 캐시(112)로부터 제거할 수 있다. 이와 마찬가지로, 변경 ID(158)가 변경 ID(129)보다 큰 경우, 캐시 인터페이스 모듈(132)은 캐시 엔트리(126)를 캐시(112)로부터 제거할 수 있다. 변경 ID가 같을 경우, 캐싱된 콘텐츠는 캐시(112)로부터 제거되지 않는다.
따라서, 데이터베이스 캐시 의존성을 사용함으로써, 캐싱된 콘텐츠를 적절히 무효화하게 될 가능성이 증가하게 된다. 데이터 테이블이 변경된 적이 없는 경우, 유효한 의존적인 콘텐츠(valid dependent content)를 너무 일찍 캐시로부터 제거할 가능성이 감소하게 된다. 따라서, 캐시로부터의 유효한 의존적인 콘텐츠는 웹 응답을 보다 효율적으로 작성하는 데 사용될 수 있다. 반면, 데이터 테이블이 변경된 적이 있는 경우, 대응하는 무효한 의존적인 콘텐츠를 캐시로부터 제거하는 가능성이 증가하게 된다. 따라서, 무효한 의존적인 콘텐츠는 아마도 웹 응답에 포함되지 않게 된다.
도 4는 본 발명의 원리들에 따른, 요청측 클라이언트 컴퓨터 시스템으로 제공할 콘텐츠에 액세스하는 방법(400)의 예시적인 플로우차트를 나타낸 것이다. 본 방법(400)은 네트워크 아키텍처(100)에 도시된 컴퓨터 시스템 및 데이터베이스와 관련하여 기술될 것이다. 본 방법(400)은 클라이언트 컴퓨터 시스템으로부터 웹 요청을 수신하는 단계(단계 401)를 포함한다. 단계 401은 적어도 하나의 데이터 테이블로부터의 콘텐츠를 포함하는 웹 응답을 작성하는 서버 컴퓨터 시스템이 클라이언트로부터 웹 요청을 수신하는 단계를 포함할 수 있다. 예를 들어, 서버 컴퓨터 시스템(111)은 클라이언트 컴퓨터 시스템(101)으로부터 웹 요청[예를 들어, 브라우저(102)에서 수신되는 사용자 입력의 결과로서 발신됨]을 수신할 수 있다. 웹 요청은 예를 들면 브라우저(102)가 웹 응답에 대응하는 URL에 액세스할 때 일어날 수 있다.
웹 요청은 데이터 테이블 내에 포함된 요청된 콘텐츠를 포함하게 될 웹 응답의 전달을 요청할 수 있다. 예를 들어, 클라이언트 컴퓨터 시스템(101)으로부터의 웹 요청은 테이블(162) 및/또는 테이블(172)로부터의 콘텐츠를 포함하게 될 웹 응답에 대한 요청일 수 있다. 테이블(162, 172)은 일반적으로 테이블(162, 172)에 포함된 콘텐츠(요청된 웹 응답에 포함되어질 콘텐츠를 포함함)를 변경할 수 있는 다른 애플리케이션들(예를 들어, 워크 플로우 또는 인벤토리 애플리케이션)이 액세스할 수 있다. 따라서, 데이터(163) 및 데이터(173)에 포함된 콘텐츠가 웹 요청들 중간에 다른 애플리케이션들에 의해 수정되는 경우가 있을 수 있다.
웹 요청을 수신한 것에 응답하여, 서버 컴퓨터 시스템(111)은 대응하는 웹 응답 전체가 캐시(112)에(또는 하위 레벨 캐시에) 저장되어 있는 것으로 결정할 수있다. 대응하는 웹 응답 전체가 캐싱되어 있는 경우, 서버 컴퓨터 시스템(111)은 웹 요청의 결과 임의의 추가의 처리를 필요로 하지 않고 캐싱된 웹 응답 전체를 캐시(112)로부터 반환할 수 있다. 따라서, 웹 응답 전체가 캐싱되어 있는 경우, 웹 요청을 완수하는 것과 관련된 지연 시간이 상당히 감소될 수 있다.
반면, 웹 요청을 수신한 것에 응답하여, 서버 컴퓨터 시스템(111)은 대응하는 웹 응답의 적어도 일부분이 현재 캐싱되어 있지 않은 것으로 결정할 수 있다. 본 방법(400)은 대응하는 웹 응답에 포함될 콘텐츠의 적어도 일부분이 현재 캐싱되어 있지 않은 것으로 결정하는 단계(단계 402)를 포함한다. 단계 402는 적어도 하나의 데이터 테이블로부터의 콘텐츠를 포함하는 웹 응답을 작성하는 서버 컴퓨터 시스템이 웹 응답에 포함될 콘텐츠의 적어도 일부분이 현재 서버 컴퓨터 시스템에 캐싱되어 있지 않은 것으로 결정하는 단계를 포함할 수 있다. 예를 들어, 서버 컴퓨터 시스템(111)은 클라이언트 컴퓨터 시스템(101)으로 전달될 웹 응답에 포함될 콘텐츠의 적어도 일부분이 현재 서버 컴퓨터 시스템(111)에 캐싱되어 있지 않은 것으로 결정할 수 있다.
서버 컴퓨터 시스템(111)에 수신된 웹 요청은 응답 작성 모듈(133)로 전송될 수 있다. 따라서, 응답 작성 모듈(133)은 적절한 페이지 파일(예를 들어, ASP 파일)을 검색할 수 있고 대응하는 웹 응답을 작성하기 위해 그 페이지 파일을 처리할 수 있다. 페이지 파일에 포함된 스크립트는 서버 컴퓨터 시스템(111)의 외부의 장소에[예를 들어, 테이블(162) 및/또는 테이블(172)에] 저장되어 있는 콘텐츠를 요청할 수 있다. 외부 콘텐츠에 대한 요청이 처리될 때, 응답 작성 모듈(133)은 캐시 인터페이스 모듈(132)이 캐시(112)에서 외부 콘텐츠를 찾아내려고 시도하도록 적절한 명령어를 캐시 인터페이스 모듈(132)로 전송할 수 있다. 외부 콘텐츠가 캐시(112)에 저장되어 있는 경우, 캐시 인터페이스 모듈(132)은 응답 작성 모듈(133)에 외부 콘텐츠가 캐시(112)에 저장되어 있는 것으로 응답할 수 있다. 반면에, 외부 콘텐츠가 캐시(112)에 저장되어 있지 않은 경우, 캐시 인터페이스 모듈(132)은 응답 작성 모듈(133)에 외부 콘텐츠가 캐시(112)에 저장되어 있지 않은 것으로 응답할 수 있다.
웹 응답에 포함될 콘텐츠의 적어도 일부분이 캐싱되어 있지 않은 것으로 결정된 경우, 서버 컴퓨터 시스템(111)은 추가로 콘텐츠의 적어도 일부분이 데이터베이스(141) 내의 임의의 데이터 테이블에 의존하는지를 결정할 수 있다. 콘텐츠의 적어도 일부분이 데이터베이스(141) 내의 데이터 테이블에 의존하고 있는 경우, 서버 컴퓨터 시스템(111)은 추가로 데이터 테이블의 대응하는 키 엔트리가 캐시(112)에 저장되어 있는지를 결정할 수 있다. 대응하는 키 엔트리가 캐시(112)에 저장되어 있지 않은 경우, 서버 컴퓨터 시스템(111)은 [예를 들어, 변경 통지 테이블(142)로부터] 데이터 테이블의 버전 정보를 검색하고 적절한 버전 정보를 포함하는 대응하는 키 엔트리를 캐시(112)에 저장할 수 있다.
본 방법(400)은 데이터 테이블로부터의 요청된 콘텐츠에 액세스하는 단계(단계 403)를 포함한다. 단계 403은 적어도 하나의 데이터 테이블로부터의 콘텐츠를 포함하는 웹 응답을 작성하는 서버 컴퓨터 시스템이 데이터 테이블로부터의 요청된 콘텐츠에 액세스하는 단계를 포함할 수 있다. 예를 들어, 서버 컴퓨터시스템(111)은 데이터베이스(141) 내의 데이터 테이블로부터의 요청된 콘텐츠에 액세스할 수 있다. 요청된 콘텐츠가 캐시(112)에 저장되어 있지 않음을 나타내는 표시에 응답하여, 응답 작성 모듈(133)은 데이터베이스 인터페이스 모듈(136)이 데이터베이스(141)에서 요청된 콘텐츠를 찾아내려고 시도하도록 (예를 들어, 질의를 발행함으로써) 적절한 명령어를 데이터베이스 인터페이스 모듈(136)로 전송할 수 있다. 데이터베이스(141)는 요청된 콘텐츠를 [예를 들어, 레코드(164, 166, 174, 및/또는 176)에서] 찾아내어 요청된 콘텐츠를 데이터베이스 인터페이스 모듈(136)로 반환할 수 있다. 데이터베이스 인터페이스 모듈(136)은 이어서 요청된 콘텐츠를 응답 작성 모듈(133)로 전송할 수 있다.
본 방법은 요청된 콘텐츠를 포함하는 대응하는 웹 응답을 작성하는 단계(단계 404)를 포함한다. 단계 404는 적어도 하나의 데이터 테이블로부터의 콘텐츠를 포함하는 웹 응답을 작성하는 서버 컴퓨터 시스템이 웹 응답을 작성하는 단계를 포함할 수 있다. 예를 들어, 서버 컴퓨터 시스템(111)은 데이터베이스(141)로부터의 콘텐츠를 클라이언트 컴퓨터 시스템(101)으로 반환될 웹 응답에 포함시킬 수 있다. 응답 작성 모듈(133)은 웹 요청을 만족시키기 위해 데이터베이스 인터페이스 모듈(136)로부터 수신된 [예를 들어, 레코드(164, 166, 174 및/또는 176)로부터의] 요청된 콘텐츠를 포함할 수 있다. (아마도 적절한 페이지 파일에 포함되어 있는 다른 HTML 및 XML 명령 및 스크립트 뿐만 아니라) 요청된 콘텐츠에 기초하여, 응답 작성 모듈(133)은 적절한 웹 응답을 작성할 수 있다.
본 방법(400)은 차후의 웹 요청을 만족시키기 위해 요청된 콘텐츠가 효율적으로 액세스될 수 있도록 요청된 콘텐츠를 저장하는 기능 결과-지향(functional result-oriented) 단계(단계 407)를 포함한다. 단계 407은 차후의 웹 요청을 만족시키기 위해 요청된 콘텐츠가 효율적으로 액세스될 수 있도록 요청된 콘텐츠를 저장하는 임의의 대응하는 단계를 포함할 수 있다. 그렇지만, 도 4의 예시적인 방법에서, 단계 407은 데이터베이스 캐시 의존성을 작성된 웹 응답의 적어도 일부분에 할당하는 대응 단계(단계 405)를 포함한다. 단계 405는 적어도 하나의 데이터 테이블로부터의 콘텐츠를 포함하는 웹 응답을 작성하는 서버 컴퓨터 시스템이 데이터베이스 캐시 의존성을 작성된 웹 응답의 적어도 일부분에 할당하는 단계를 포함할 수 있다.
단계 407은 또한 작성된 웹 응답의 적어도 일부분을 캐싱하는 대응 단계(단계 406)를 포함할 수 있다. 단계 406은 적어도 하나의 데이터 테이블로부터의 콘텐츠를 포함하는 웹 응답을 작성하는 서버 컴퓨터 시스템이 작성된 웹 응답의 적어도 일부분을 캐싱하는 단계를 포함할 수 있다. 서버 컴퓨터 시스템은 작성된 웹 응답의 적어도 일부분을 서버 컴퓨터 시스템에 있는 캐시 장소에 캐싱할 수 있다. 예를 들어, 캐시 인터페이스 모듈(132)은 작성된 웹 응답이 클라이언트 컴퓨터 시스템(101)으로 전달되기에 앞서 응답 작성 모듈(133)에 의해 작성되는 작성된 웹 응답의 적어도 일부분이 캐시(112)에 저장되도록 할 수 있다.
전체 웹 응답을 캐싱할 때, 웹 응답은 서버 컴퓨터 시스템의 하위 레벨에, 예를 들어 커널 모드 응답 캐시에 캐싱되도록 푸시다운될 수 있다. 예를 들어, 전체 웹 응답은 인터넷 정보 서버(internet information server, "IIS") 모듈에 의해유지되는 캐시 장소로 푸시될 수 있다. 따라서, 웹 응답이 무효화될 때, 그 웹 응답은 하위 레벨 캐시로부터 제거된다.
데이터베이스 캐시 의존성은 할당될 수 있고 콘텐츠의 적어도 일부분은 웹 응답 작성 동안에 실행되는 명령의 결과 캐싱될 수 있다. 어떤 실시예에서, 데이터베이스 캐시 의존성은 웹 응답 내의 콘텐츠의 일부분에 할당된다. 이하의 제1 예시적인 명령어는 웹 응답 내의 콘텐츠의 일부분이 데이터베이스 캐시 의존성을 할당받도록 하기 위해 페이지 파일에 포함될 수 있다.
1. <HTML>
2. <Script>
3. SqlCacheDependency c;
4. c = new SqlCacheDependency(pubs, products);
5. ProductCollection p = getproducts();
6. Cache.Insert("Pinfo",p,c);
7. </Script>
8. </HTML>
제1 예시적인 명령어의 라인 1은 SqlCacheDependency 데이터 유형의 변수 "c"를 생성한다. SqlCacheDependency는 데이터베이스 캐시 의존성을 나타내기 위해 이전에 설정된 데이터 유형일 수 있다. 제1 예시적인 명령어의 라인 4는 "pubs" 데이터베이스에 포함된 "products" 테이블에 대한 의존성을 나타내도록 변수 c를 할당한다. 이것은 예를 들어 데이터베이스(141)에 포함된 테이블(162)에대한 의존성을 나타낼 수 있다. 제1 예시적인 명령어의 라인 5는 "ProductCollection" 데이터 유형의 변수 "p"를 생성한다. ProductCollection은 products 데이터베이스로부터 검색된 제품의 리스트를 나타내기 위해 이미 설정된 데이터 유형일 수 있다. "getproducts()" 함수는 변수 p에 저장되어 있는 제품의 리스트를 [예를 들어, 테이블(162) 및/또는 테이블(172)로부터] 반환하기 위해 라인 5에서 실행된다.
제1 예시적인 명령어의 라인 6은 [예를 들어, 캐시(112)에] 캐시 엔트리를 생성한다. "Pinfo"의 키를 갖는 캐시 엔트리가 생성되며, 이는 차후에 캐시 엔트리를 참조하기 위해 사용될 수 있다. 캐시 엔트리는 변수 p로 나타낸 제품의 리스트를 [예를 들어, 응답 콘텐츠(122)로서] 저장하기 위해 생성되며, 캐시 엔트리는 변수 c로[예를 들어, 테이블 ID(123)로서] 나타낸 pubs 데이터베이스 내의 products 테이블에 의존한다. 제1 예시적인 명령어는 복수의 웹 응답이 콘텐츠의 동일한 일부분을 포함하게 될 경우 특히 유리할 수 있다.
이하의 예시적인 명령어는 캐싱된 제품 리스트를 검색하기 위해 페이지 파일에 포함될 수 있다.
ProductCollection p = cache("Pinfo");
pubs 데이터베이스 내의 products 테이블이 변경된 것으로 검지된 경우, 키 Pinfo에 의해 참조되는 캐시 엔트리가 무효화된다. 다른 실시예들에서는, 데이터베이스 캐시 의존성이 전체 웹 응답에 할당된다. 이하의 제2 예시적인 명령어는 전체 웹 응답이 데이터베이스 캐시 의존성을 할당받도록 하기 위해 페이지 파일에포함될 수 있다.
1. <% Output Cache SqlCacheDependency = "pubs:products"%>
2. <HTML>
3. <Script>
4. ...
5. </Script>
6. </HTML>
제2 예시적인 명령어의 라인 1은 페이지 파일로부터 얻은 전체 웹 응답이 "pubs" 데이터베이스에 포함된 "products" 테이블에 의존하도록 하는 디렉티브이다. 캐시 엔트리는 페이지 파일로부터 얻은 전체 웹 응답을 [예를 들어, 응답 콘텐츠(127)로서] 캐싱하도록 생성될 수 있다. 라인 4에서, 생략부호는 예를 들어 페이지 파일이 처리될 때 pubs 데이터베이스 내의 products 테이블에 액세스하는 등을 위해 다른 스크립트 명령어가 실행될 수 있음을 나타낸다. 제2 예시적인 명령어는 복수의 클라이언트가 동일한 웹 응답을 요청하는 경우 특히 유리할 수 있다.
데이터베이스 캐시 의존성이 하나 이상의 다른 캐시 의존성, 예를 들면 시간, 파일, 키, 및/또는 웹 서비스 캐시 의존성 또는 심지어 또하나의 데이터베이스 캐시 의존성과 결합하여 사용되는 경우가 있을 수 있다. 예를 들어, 이하의 예시적인 디렉티브는 전체 웹 응답이 데이터베이스 캐시 의존성과 시간 의존성 둘 모두를 할당받도록 하기 위해 페이지 파일에 포함될 수 있다.
<% Output Cache Duration = 600s SqlTableDepend = "pubs:customers" %>
이 예시적인 디렉티브는 "pubs" 데이터베이스 내의 "customers" 테이블이 변경되었을 때까지 또는 대응하는 웹 응답이 생성된 때로부터 600초 동안 그 대응하는 웹 응답이 캐싱된 채로 있도록 할 것이다.
어떤 실시예에서, 하나 이상의 캐시 엔트리는 데이터베이스 의존적인 캐시 엔트리에 의존하는(즉, 링크되어 있는) (따라서 키 의존성으로 되는) 키 의존적인 캐시 엔트리이다. 따라서, 데이터베이스 의존적인 캐시 엔트리를 무효화하는 것은 키 의존적인 캐시 엔트리 각각도 또한 무효화되도록 한다. 키 의존적인 캐시 엔트리가 캐시 내의 (예를 들어, 시스템 메모리 내의) 다른 데이터에 의존하고 있기 때문에, 키 의존적인 캐시 엔트리를 무효화하는 것은 (데이터베이스 질의, 네트워크 통신, 데이터 직렬화 등을 필요로 할 수 있는) 데이터베이스 의존적인 캐시 엔트리를 무효화하는 것보다 효율적이다. 따라서, 캐시 엔트리를 무효화하는 것의 효율성을 향상시키기 위해, 의존적인 콘텐츠를 갖는 제1 캐시 엔트리가 (키 의존성을 통해) 제2 캐시 엔트리에 의존하도록 구성될 수 있다. 대응하는 데이터 테이블에서의 변경이 검지되면, 제2 캐시 엔트리는 임의의 의존적인 캐시 엔트리를 무효화한다. 변경의 검지에 응답하여, 제2 캐시 엔트리도 또한 캐시로부터 제거될 수 있거나 대응하는 데이터 테이블에 대한 적절한 버전 정보가 갱신될 수 있다.
예를 들어, 캐시 엔트리(121) 및 캐시 엔트리(126)가 둘 모두 테이블(162)에 의존하는 경우가 있을 수 있다[예를 들어, 테이블 ID(123) 및 테이블 ID(128) 둘 모두 테이블 ID(152)에 대응한다]. 응답 콘텐츠(122) 및 응답 콘텐츠(127)이 무효화되어야 할 때를 결정하는 것의 효율성을 최적화하기 위해, 테이블(162)에 의존하는 키 엔트리는 캐시(112)에(즉, 시스템 메모리에) 삽입될 수 있다. 캐시 엔트리(121, 126)는 삽입된 키 엔트리에 의존하도록 만들어질 수 있다. 테이블(162)이 변경되면, 데이터베이스(141)에 대한 차후의 질의는 변경 ID(153)가 갱신되어 있음을 식별할 수 있고 삽입된 키 엔트리를 무효화할 수 있다. 삽입된 키 엔트리를 무효화하는 것은 변경 ID(124) 및 변경 ID(129) 둘 모두가 변경 ID(153)에 대해 직접 비교될 것을 요구하기보다는 캐시 엔트리(121, 126)를 자동적으로 무효화한다. 따라서, 데이터베이스 질의 및 버전 비교의 회수가 감소될 수 있고, 네트워크, 데이터베이스 및 처리 자원이 보존될 수 있다.
본 방법(400)은 웹 요청에 응답하여 작성된 웹 응답을 클라이언트 컴퓨터 시스템으로 전달하는 단계(단계 408)를 포함한다. 단계 408은 적어도 하나의 데이터 테이블로부터의 콘텐츠를 포함하는 웹 응답을 작성하는 서버 컴퓨터 시스템이 작성된 웹 응답을 클라이언트 컴퓨터 시스템으로 전달하는 단계를 포함할 수 있다. 예를 들어, 서버 컴퓨터 시스템(111)은 클라이언트 컴퓨터 시스템(101)으로부터의 웹 요청에 응답하여 웹 응답을 클라이언트 컴퓨터 시스템(101)으로 전달할 수 있다. 전달된 웹 응답은 응답 작성 모듈(133)에 의해 작성된 웹 응답일 수 있다.
도 5는 본 발명의 원리들에 적합한 오퍼레이팅 환경을 나타낸 것이다. 도 5 및 이하의 설명은 본 발명이 구현될 수 있는 적합한 오퍼레이팅 환경에 대한 간단하고 일반적인 설명을 제공하기 위한 것이다. 꼭 그럴 필요는 없지만, 본 발명은 컴퓨터 시스템에 의해 실행되는, 프로그램 모듈 등의 컴퓨터 실행가능 명령어의 일반적인 관점에서 기술될 것이다. 일반적으로, 프로그램 모듈은 특정의 작업을 수행하거나 특정의 추상 데이터 유형을 구현하는, 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 컴퓨터 실행가능 명령어, 관련 데이터 구조, 및 프로그램 모듈은 본 명세서에 개시된 방법의 단계들을 실행하는 프로그램 코드 수단의 일례를 나타낸다.
도 5를 참조하면, 본 발명을 구현하는 예시적인 시스템은 프로세싱 유닛(521), 시스템 메모리(522), 및 시스템 메모리(522)를 포함한 여러가지 시스템 컴포넌트를 프로세싱 유닛(521)에 연결시키는 시스템 버스(523)를 포함하는 컴퓨터 시스템(520) 형태의 범용 컴퓨팅 장치를 포함한다. 프로세싱 유닛(521)은 본 발명의 특징들을 포함한 컴퓨터 시스템(520)의 특징들을 구현하도록 설계된 컴퓨터 실행가능 명령어를 실행할 수 있다. 시스템 버스(523)는 메모리 버스 또는 메모리 콘트롤러, 주변 버스, 및 다양한 버스 구조 중 임의의 것을 사용하는 로컬 버스를 비롯한 몇가지 유형의 버스 구조 중 임의의 것일 수 있다. 시스템 메모리는 ROM(판독 전용 메모리)(524) 및 RAM(랜덤 액세스 메모리)(525)를 포함한다. 컴퓨터(520) 내의 요소들 사이에서 정보를 전송하는 것을 돕는 기본적인 루틴을 포함하는 BIOS(기본 입출력 시스템)(526)은 ROM(524)에 저장될 수 있다.
컴퓨터 시스템(520)은 또한 자기 하드 디스크(539)로부터 판독하고 그에 기록하기 위한 자기 하드 디스크 드라이브(527), 분리형 자기 디스크(529)로부터 판독하거나 그에 기록하기 위한 자기 디스크 드라이브(528), 및 예를 들어 CD-ROM 또는 기타 광학 매체 등의 분리형 광학 디스크(531)로부터 판독하거나 그에 기록하기위한 광학 디스크 드라이브(530)를 포함할 수 있다. 자기 하드 디스크 드라이브(527), 자기 디스크 드라이브(528), 및 광학 디스크 드라이브(530)는 각각 하드ㅡ 디스크 드라이브 인터페이스(552), 자기 디스크 드라이브 인터페이스(533), 및 광학 드라이브 인터페이스(534)를 통해 시스템 버스(523)에 연결되어 있다. 이들 드라이브 및 그들의 관련 컴퓨터 판독가능 매체는 컴퓨터 실행가능 명령어, 데이터 구조, 프로그램 모듈, 및 컴퓨터 시스템(520)의 기타 데이터의 비휘발성 저장을 제공한다. 본 명세서에 기술된 예시적인 환경이 자기 하드 디스크(529), 분리형 자기 디스크(529), 및 분리형 광학 디스크(531)를 사용하고 있지만, 자기 카세트, 플래쉬 메모리 카드, DVD, 베르누이 카트리지, RAM, ROM 등을 비롯하여 데이터를 저장하기 위한 다른 유형의 컴퓨터 판독가능 매체가 사용될 수 있다.
오퍼레이팅 시스템(535), 하나 이상의 애플리케이션 프로그램(536), 기타 프로그램 모듈(537), 및 프로그램 데이터(538)를 비롯한 하나 이상의 프로그램 모듈을 포함하는 프로그램 코드 수단은 하드 디스크(539), 자기 디스크(529), 광학 디스크(531), ROM(524) 또는 RAM(525) 상에 저장될 수 있다. 사용자는 키보드(540), 포인팅 장치(542), 또는 예를 들어 마이크로폰, 조이스틱, 게임 패드, 스캐너 등과 같은 기타 입력 장치(도시 생략)를 통해 명령 및 정보를 컴퓨터 시스템(520)에 입력할 수 있다. 이들 및 다른 입력 장치는 시스템 버스(523)에 연결된 직렬 포트 인터페이스(546)를 통해 프로세싱 유닛(521)에 연결될 수 있다. 다른 대안에서, 입력 장치는 예를 들어 병렬 포트, 게임 포트, USB(유니버설 직렬 버스) 포트, 파이어 와이어(Fire Wire) 포트 등의 다른 인터페이스에 의해 연결될 수 있다. 모니터(547) 또는 다른 디스플레이 장치도 비디오 어댑터(548)를 통해 시스템 버스(523)에 연결된다. 컴퓨터 시스템(520)은 또한 예를 들면 스피커 및 프린터 등의 다른 주변 출력 장치(도시 생략)에도 연결될 수 있다.
컴퓨터 시스템(520)은 예를 들면 사무실 전체 또는 기업 전체 컴퓨터 네트워크, 인트라넷 및/또는 인터넷 등의 네트워크에 연결가능하다. 컴퓨터 시스템(520)은 예를 들어 원격 컴퓨터 시스템, 원격 애플리케이션, 및/또는 원격 데이터베이스 등의 외부 소스와 이러한 네트워크를 통해 데이터를 교환할 수 있다.
컴퓨터 시스템(520)은 네트워크 인터페이스(553)을 포함하며, 이 인터페이스(553)를 통해 컴퓨터 시스템(520)은 외부 소스로부터 데이터를 수신하고 및/또는 외부 소스로 데이터를 전송한다. 도 5에 도시한 바와 같이, 네트워크 인터페이스(553)는 링크(551)를 통한 원격 컴퓨터 시스템(583)과의 데이터 교환을 용이하게 해준다. 링크(551)는 네트워크의 일부분을 나타내고, 원격 컴퓨터 시스템(583)은 네트워크의 노드를 나타낸다. 예를 들어, 원격 컴퓨터 시스템(583)은 컴퓨터 시스템(520)에서 작성되는 웹 응답을 위한 콘텐츠를 제공하는 데이터베이스를 유지할 수 있다. 반면, 원격 컴퓨터 시스템(583)은 컴퓨터 시스템(520)에 유지되어 있는 데이터베이스에 대해 콘텐츠를 요청한 서버 컴퓨터일 수 있다.
이와 마찬가지로, 컴퓨터 시스템(520)은 직렬 포트 인터페이스(546)를 포함하며, 이 인터페이스(546)를 통해 컴퓨터 시스템(520)은 외부 소스로부터 데이터를 수신하고 및/또는 외부 소스로 데이터를 전송한다. 직렬 포트 인터페이스(546)는 모뎀(554)에 연결되어 있으며, 이 모뎀(554)을 통해 컴퓨터 시스템(520)은 외부 소스로부터 데이터를 수신하고 및/또는 외부 소스로 데이터를 전송한다. 다른 대안에서, 모뎀(554)은 적절한 인터페이스를 통해 컴퓨터 시스템(520)에 연결되는 DOCSIS(Data Over Cable Service Interface Specification) 모뎀 또는 DSL(digital subscriber line, 디지털 가입자 회선) 모뎀일 수 있다. 그렇지만, 도 5에 도시한 바와 같이, 직렬 포트 인터페이스(546) 및 모뎀(554)은 링크(552)를 통한 원격 컴퓨터 시스템(593)과의 데이터 교환을 용이하게 해준다. 링크(552)는 네트워크의 일부분을 나타내고, 원격 컴퓨터 시스템(593)은 네트워크의 노드를 나타낸다. 예를 들어, 원격 컴퓨터 시스템(593)은 컴퓨터 시스템(520)에 웹 응답을 요청하는 클라이언트 컴퓨터 시스템일 수 있다. 반면, 원격 컴퓨터 시스템(593)은 컴퓨터 시스템(520)에 웹 응답을 제공하는 서버 컴퓨터 시스템일 수 있다.
도 5가 본 발명에 적합한 오퍼레이팅 환경을 나타내지만, 본 발명의 원리들은 필요에 따라 적당히 수정하면 본 발명의 원리들을 실시할 수 있는 임의의 시스템에서 이용될 수 있다. 도 5에 도시한 환경은 단지 예시적인 것으로서 본 발명의 원리들이 구현될 수 있는 광범위한 환경의 작은 일부분조차도 결코 나타내지 않는다.
본 발명의 모듈은 물론 관련 데이터도 컴퓨터 시스템(520)과 관련된 임의의 컴퓨터 판독가능 매체에 저장되고 그로부터 액세스될 수 있다. 예를 들어, 이러한 모듈의 일부분 및 관련 프로그램 데이터의 일부분은 시스템 메모리(522)에 저장하기 위해 오퍼레이팅 시스템(535), 애플리케이션 프로그램(536), 프로그램 모듈(537) 및/또는 프로그램 데이터(538)에 포함될 수 있다. 예를 들어, 자기 하드 디스크(539)와 같은 대용량 저장 장치가 컴퓨터 시스템(520)에 연결되어 있는 경우, 이러한 모듈 및 관련 프로그램 데이터는 또한 이 대용량 저장 장치에 저장될 수도 있다. 네트워크 환경에서, 컴퓨터 시스템(520)과 관련하여 설명한 프로그램 모듈 및 관련 데이터 또는 그의 일부분은 예를 들어 원격 컴퓨터 시스템(583) 및/또는 원격 컴퓨터 시스템(593)과 관련되어 있는 시스템 메모리 및/또는 대용량 저장 장치 등의 원겨겨 메모리 저장 장치에 저장될 수 있다. 이러한 모듈의 실행은 전술한 바와 같은 분산 환경에서 수행될 수 있다.
서버는 데이터베이스 내의 데이터 테이블로부터의 콘텐츠를 포함할 수 있는 웹 응답을 제공한다. 서버는 클라이언트 웹 요청을 만족시키기 위해 차후에 동일한 콘텐츠를 제공하는 효율성을 향상시키기 위해 (데이터 테이블로부터의 콘텐츠를 포함한) 콘텐츠를 저장할 수 있는 캐시를 (예를 들면, 시스템 메모리 내에) 보유하고 있다. 서버는 변경이 있는지 데이터 테이블을 모니터링하고, 특정의 데이터 테이블에서 변경이 일어난 경우, 특정의 데이터 테이블에 의존하는 캐싱된 엔트리를 무효화시킨다. 게다가, 웹 응답에 대한 클라이언트 웹 요청에 응답하여, 서버는 웹 응답의 작성 동안 실행되는 명령에 기초하여 데이터베이스 캐시 의존성을 작성된 웹 응답의 적어도 일부분에(예를 들면, 데이터 테이블로부터 검색된 콘텐츠에) 할당한다. 작성된 웹 응답의 적어도 일부분은 이어서 서버에 있는 캐시 장소에 캐싱된다.
본 발명은 그의 정신 또는 필수적인 특징을 벗어나지 않고 다른 구체 형태로구현될 수 있다. 개시된 실시예들은 모든 점에서 예시적인 것으로서 제한적인 것으로 간주되어서는 안된다. 따라서, 본 발명의 범위는 이상의 설명이 아닌 첨부된 청구항들에 의해 정해진다. 청구항의 균등성의 의미 및 범위 내에서 일어나는 모든 변경은 청구항의 범위 내에 들어가는 것이다.

Claims (49)

  1. 하나 이상의 데이터 테이블들을 갖는 데이터베이스에 액세스하는 컴퓨터 시스템에서, 상기 데이터 테이블들 중 하나에 있는 콘텐츠가 변경될 때 테이블 변경 통지를 제공하도록 상기 데이터베이스를 구성하는 방법으로서,
    콘텐츠 변경이 있는지 모니터링하게 될 데이터 테이블을 선택하는 단계,
    상기 선택된 데이터 테이블에 대응하는 레코드를 변경 통지 테이블에 삽입하는 단계 - 상기 대응하는 레코드는 상기 선택된 데이터 테이블에 대한 버전 정보를 포함함 -,
    상기 선택된 데이터 테이블에 트리거를 할당하는 단계 - 상기 트리거는 상기 선택된 데이터 테이블 내의 콘텐츠가 변경될 때 상기 변경 통지 테이블 내의 상기 선택된 데이터 테이블에 대한 상기 버전 정보가 갱신되도록 함 -,
    상기 선택된 데이터 테이블 내의 콘텐츠가 변경되는 것에 응답하여 상기 변경 통지 테이블 내의 상기 버전 정보를 갱신하는 단계, 및
    상기 갱신된 버전 정보가 상기 서버 컴퓨터 시스템에 있는 캐시 엔트리 내의 콘텐츠의 유효성을 결정하는 데 사용될 수 있도록 상기 갱신된 버전 정보를 요청측 서버 컴퓨터 시스템에 반환하는 단계를 포함하는 데이터베이스 구성 방법.
  2. 제1항에 있어서, 콘텐츠 변경이 있는지 모니터링하게 될 데이터 테이블을 선택하는 상기 단계는 콘텐츠 변경이 있는지 모니터링하게 될 데이터 테이블을 선택하는 사용자 입력을 수신하는 단계를 포함하는 것인 데이터베이스 구성 방법.
  3. 제1항에 있어서, 콘텐츠 변경이 있는지 모니터링하게 될 데이터 테이블을 선택하는 상기 단계는 상기 컴퓨터 시스템이 수신된 웹 요청에 응답하여 데이터 테이블을 자동적으로 선택하는 단계를 포함하는 것인 데이터베이스 구성 방법.
  4. 제1항에 있어서, 상기 선택된 데이터 테이블에 대응하는 레코드를 변경 통지 테이블에 삽입하는 상기 단계는 사용자 입력에 응답하여 상기 레코드를 삽입하는 단계를 포함하는 것인 데이터베이스 구성 방법.
  5. 제1항에 있어서, 상기 선택된 데이터 테이블에 대응하는 레코드를 변경 통지 테이블에 삽입하는 상기 단계는 상기 컴퓨터 시스템이 웹 요청에 응답하여 상기 레코드를 자동적으로 삽입하는 단계를 포함하는 것인 데이터베이스 구성 방법.
  6. 제1항에 있어서, 상기 선택된 데이터 테이블에 대응하는 레코드를 변경 통지 테이블에 삽입하는 상기 단계는 상기 레코드를 SQL 테이블에 삽입하는 단계를 포함하는 것인 데이터베이스 구성 방법.
  7. 제1항에 있어서, 상기 선택된 데이터 테이블에 트리거를 할당하는 상기 단계는 트리거가 상기 선택된 데이터 테이블에 할당되도록 지시하는 사용자 입력을 수신하는 단계를 포함하는 것인 데이터베이스 구성 방법.
  8. 제1항에 있어서, 상기 선택된 데이터 테이블에 트리거를 할당하는 상기 단계는 상기 컴퓨터 시스템이 상기 선택된 테이블에 포함된 콘텐츠에 대한 웹 요청을 수신한 것에 응답하여 상기 선택된 데이터 테이블에 트리거를 자동적으로 할당하는 단계를 포함하는 것인 데이터베이스 구성 방법.
  9. 제1항에 있어서, 상기 선택된 데이터 테이블에 트리거를 할당하는 상기 단계는 상기 선택된 데이터 테이블 내의 콘텐츠가 변경되는 것에 응답하여 실행될 때 상기 변경 통지 테이블 내의 대응하는 변경 ID를 갱신하게 되는 트리거를 할당하는 단계를 포함하는 것인 데이터베이스 구성 방법.
  10. 제1항에 있어서, 상기 선택된 데이터 테이블 내의 콘텐츠가 변경되는 것에 응답하여 상기 변경 통지 테이블 내의 상기 버전 정보를 갱신하는 상기 단계는 상기 트리거를 실행하는 단계를 포함하는 것인 데이터베이스 구성 방법.
  11. 제1항에 있어서, 상기 갱신된 버전 정보를 요청측 서버 컴퓨터 시스템에 반환하는 상기 단계는 상기 갱신된 버전 정보를, 상기 선택된 데이터 테이블로부터의 콘텐츠를 포함하는 웹 응답을 작성하는 요청측 서버 컴퓨터 시스템에 반환하는 단계를 포함하는 것인 데이터베이스 구성 방법.
  12. 데이터베이스 내의 하나 이상의 데이터 테이블로부터의 콘텐츠를 포함할 가능성이 있는 웹 응답을 요청측 클라이언트 컴퓨터 시스템들에게로 제공하며 또 데이터 테이블로부터 이전에 수신된 캐싱된 콘텐츠의 일부분 및 상기 캐싱된 콘텐츠에 대응하는 캐싱된 버전 정보를 저장하는 캐시 장소를 포함하는 서버 컴퓨터 시스템에서, 캐싱된 콘텐츠의 상기 일부분을 무효화시키는 방법으로서,
    상기 하나 이상의 데이터 테이블에 대응하는 버전 정보를 얻기 위해 변경 통지 테이블에 질의하는 단계,
    상기 서버 컴퓨터 시스템이 상기 변경 통지 테이블에 마지막으로 질의한 이후로 변경된 적이 있는 적어도 하나의 데이터 테이블의 리스트를 수신하는 단계 - 적어도 하나의 데이터 테이블의 상기 리스트가 상기 적어도 하나의 데이터 테이블에 대한 현재의 버전 정보를 포함함 -,
    상기 캐싱된 콘텐츠가 상기 적어도 하나의 데이터 테이블에 의존하는 것으로 결정하는 단계,
    상기 현재의 버전 정보를 상기 캐싱된 버전 정보와 비교하는 단계, 및
    상기 비교의 결과에 기초하여 캐싱된 콘텐츠의 상기 일부분을 상기 캐시 장소로부터 제거하는 단계를 포함하는 콘텐츠 무효화 방법.
  13. 제12항에 있어서, 상기 하나 이상의 데이터 테이블에 대응하는 버전 정보를 얻기 위해 변경 통지 테이블에 질의하는 상기 단계는 상기 데이터베이스에게로 질의를 전송하는 단계를 포함하는 콘텐츠 무효화 방법.
  14. 제13항에 있어서, 상기 데이터베이스에게로 질의를 전송하는 상기 단계는 캐싱된 버전 정보를 지정하고 또 상기 캐싱된 정보와 더 이상 매칭하지 않는 그 테이블 및 버전 정보만을 선택하는 질의를 전송하는 단계를 포함하는 콘텐츠 무효화 방법.
  15. 제14항에 있어서, 비어 있는 결과를 변경된 테이블 버전 정보가 없다는 결과로서 받아들이는 단계를 더 포함하는 콘텐츠 무효화 방법.
  16. 제14항에 있어서, 상기 데이터베이스에게로 질의를 전송하는 상기 단계는 상기 요청된 테이블 버전 정보에 변경이 있을 때까지 상기 데이터베이스에서 블로킹되는 질의를 전송하는 단계를 포함하는 콘텐츠 무효화 방법.
  17. 제16항에 있어서, 상기 요청된 테이블 버전 정보에 변경이 있을 때까지 상기 데이터베이스에서 블로킹되는 질의를 전송하는 상기 단계는 상기 요청된 테이블 버전 정보에 대한 변경이 검출될 때까지 상기 서버 컴퓨터 시스템에서의 대응하는 쓰레드를 블로킹하는 질의를 전송하는 단계를 포함하는 콘텐츠 무효화 방법.
  18. 제16항에 있어서, 상기 요청된 테이블 버전 정보에 변경이 있을 때까지 상기데이터베이스에서 블로킹되는 질의를 전송하는 상기 단계는 상기 요청된 테이블 버전 정보에 대한 변경이 검출될 때 호출되도록 구성되어 있는 콜백을 상기 서버 컴퓨터 시스템에 등록하는 단계를 포함하는 콘텐츠 무효화 방법.
  19. 제13항에 있어서, 상기 데이터베이스에게로 질의를 전송하는 상기 단계는 상기 서버 컴퓨터 시스템에 의해 모니터링되고 있는 모든 테이블에 대한 버전 정보를 요청하는 질의를 전송하는 단계를 포함하는 콘텐츠 무효화 방법.
  20. 제19항에 있어서, 상기 모니터링된 테이블 모두에 대한 상기 요청된 버전 정보를 수신하는 단계, 및
    상기 서버 컴퓨터 시스템이 수신된 버전 정보를 상기 서버 컴퓨터 시스템에 보관된 버전 정보와 비교하는 단계를 더 포함하는 콘텐츠 무효화 방법.
  21. 제12항에 있어서, 상기 하나 이상의 데이터 테이블에 대응하는 버전 정보를 얻기 위해 변경 통지 테이블에 질의하는 상기 단계는 상기 하나 이상의 데이터 테이블에 대응하는 변경 ID를 얻기 위해 변경 통지 테이블에 질의하는 단계를 포함하는 콘텐츠 무효화 방법.
  22. 제12항에 있어서, 상기 서버 컴퓨터 시스템이 상기 변경 통지 테이블에 마지막으로 질의한 이후로 변경된 적이 있는 적어도 하나의 데이터 테이블의 리스트를수신하는 상기 단계는 하나 이상의 버전 정보 데이터 구조의 리스트를 수신하는 단계를 포함하는 콘텐츠 무효화 방법.
  23. 제12항에 있어서, 상기 캐싱된 콘텐츠가 상기 적어도 하나의 데이터 테이블에 의존하는 것으로 결정하는 상기 단계는, 캐시 엔트리가 키 엔트리에 의존하고 있는 것으로 결정하되, 상기 키 엔트리의 무효화가 상기 캐시 엔트리를 자동적으로 무효화시키도록 상기 키 엔트리가 데이터 테이블에 의존하는 것인 결정 단계를 포함하는 콘텐츠 무효화 방법.
  24. 제12항에 있어서, 상기 현재의 버전 정보를 상기 캐싱된 버전 정보와 비교하는 상기 단계는 수신된 변경 ID를 캐싱된 변경 ID와 비교하는 단계를 포함하는 콘텐츠 무효화 방법.
  25. 제12항에 있어서, 상기 비교의 결과에 기초하여 캐싱된 콘텐츠의 상기 일부분을 상기 캐시 장소로부터 제거하는 상기 단계는 키 엔트리의 무효화에 응답하여 의존적인 캐시 엔트리를 자동적으로 무효화하는 단계를 포함하는 콘텐츠 무효화 방법.
  26. 데이터베이스 내의 하나 이상의 데이터 테이블로부터의 콘텐츠를 포함할 가능성이 있는 웹 응답을 요청측 클라이언트 컴퓨터 시스템들에게 제공하며 또 데이터 테이블로부터 이전에 수신된 캐싱된 콘텐츠의 일부분 및 상기 캐싱된 콘텐츠에 대응하는 캐싱된 버전 정보를 저장하는 캐시 장소를 포함하는 서버 컴퓨터 시스템에서, 요청측 클라이언트 컴퓨터 시스템에게로 제공될 콘텐츠에 액세스하는 방법으로서,
    클라이언트 컴퓨터 시스템으로부터 웹 요청을 수신하는 단계 - 상기 웹 요청은 데이터 테이블 내에 포함된 요청된 콘텐츠를 포함하게 될 웹 응답의 전달을 요청하며 상기 데이터 테이블은 상기 요청된 콘텐츠를 변경하는 것을 포함하여 상기 데이터 테이블 내에 포함된 콘텐츠를 변경할 수 있는 다른 애플리케이션들이 일반적으로 액세스가능함 -,
    상기 웹 응답에 포함되어질 상기 콘텐츠의 적어도 일부분이 상기 서버 컴퓨터 시스템에 현재 캐싱되어 있지 않은 것으로 결정하는 단계,
    상기 데이터 테이블로부터의 상기 요청된 콘텐츠에 액세스하는 단계,
    상기 요청된 콘텐츠를 포함하는 상기 웹 응답을 작성하는 단계,
    상기 웹 응답의 작성 동안에 실행되는 명령들에 기초하여 상기 작성된 웹 응답의 적어도 일부분에 데이터베이스 캐시 의존성을 할당하는 단계 - 상기 데이터베이스 캐시 의존성은 상기 작성된 웹 응답의 상기 적어도 일부분이 상기 데이터 테이블에 의존하고 있음을 나타냄 -,
    상기 작성된 웹 응답의 상기 적어도 일부분을 상기 서버 컴퓨터 시스템에 있는 캐시 장소에 캐싱하는 단계, 및
    상기 웹 요청에 응답하여 상기 작성된 웹 응답을 상기 클라이언트 컴퓨터 시스템에게로 전달하는 단계를 포함하는 콘텐츠 액세스 방법.
  27. 제26항에 있어서, 클라이언트 컴퓨터 시스템으로부터 웹 요청을 수신하는 상기 단계는 상기 클라이언트 컴퓨터 시스템에 있는 브라우저가 대응하는 URL에 액세스하는 것의 결과로서 HTTP 요청을 수신하는 단계를 포함하는 콘텐츠 액세스 방법.
  28. 제26항에 있어서, 상기 웹 응답의 작성 동안에 실행되는 명령들에 기초하여 상기 작성된 웹 응답의 상기 적어도 일부분에 데이터베이스 캐시 의존성을 할당하는 상기 단계는 상기 작성된 웹 응답이 상기 데이터베이스 내의 데이터 테이블에 의존하도록 하는 디렉티브를 실행하는 단계를 포함하는 콘텐츠 액세스 방법.
  29. 제26항에 있어서, 상기 웹 응답의 작성 동안에 실행되는 명령들에 기초하여 상기 작성된 웹 응답의 상기 적어도 일부분에 데이터베이스 캐시 의존성을 할당하는 상기 단계는 데이터 테이블로부터의 콘텐츠가 상기 데이터 테이블에 의존하도록 하는 스크립트의 컴퓨터 실행가능 명령어들을 실행하는 단계를 포함하는 콘텐츠 액세스 방법.
  30. 제26항에 있어서, 상기 웹 응답의 작성 동안에 실행되는 명령들에 기초하여 상기 작성된 웹 응답의 상기 적어도 일부분에 데이터베이스 캐시 의존성을 할당하는 상기 단계는 키 엔트리에 의존하도록 캐시 엔트리를 할당하는 단계로서 상기 키엔트리가 무효화될 때 상기 캐시 엔트리가 자동적으로 무효화되도록 상기 키 엔트리가 상기 데이터 테이블에 의존하는 것인 할당 단계를 포함하는 콘텐츠 액세스 방법.
  31. 제26항에 있어서, 상기 작성된 웹 응답의 상기 적어도 일부분을 상기 서버 컴퓨터 시스템에 있는 캐시 장소에 캐싱하는 상기 단계는 전체 웹 응답을 캐싱하는 단계를 포함하는 콘텐츠 액세스 방법.
  32. 제31항에 있어서, 전체 웹 응답을 캐싱하는 상기 단계는 상기 전체 웹 응답을 두번째 하위 레벨 캐시 장소로 푸시하는 단계를 포함하는 콘텐츠 액세스 방법.
  33. 제32항에 있어서, 상기 웹 응답이 무효화될 때 상기 서버 컴퓨터 시스템이 상기 전체 웹 응답을 상기 두번째 하위 레벨 캐시 장소로부터 제거하는 단계를 더 포함하는 콘텐츠 액세스 방법.
  34. 제32항에 있어서, 상기 전체 웹 응답을 두번째 하위 레벨 캐시 장소로 푸시하는 상기 단계는 상기 전체 웹 응답을 최적화된 시스템 응답 캐시로 푸시하는 단계를 포함하는 콘텐츠 액세스 방법.
  35. 데이터베이스 내의 하나 이상의 데이터 테이블로부터의 콘텐츠를 포함할 가능성이 있는 웹 응답을 요청측 클라이언트 컴퓨터 시스템들에게로 제공하고 또 데이터 테이블로부터 이전에 수신한 캐싱된 콘텐츠의 일부분 및 상기 캐싱된 데이터에 대응하는 캐싱된 버전 정보를 저장하는 캐시 장소를 포함하는 서버 컴퓨터 시스템에서, 요청측 클라이언트 컴퓨터 시스템에게로 제공되어질 콘텐츠에 액세스하는 방법으로서,
    클라이언트 컴퓨터 시스템으로부터 웹 요청을 수신하는 단계 - 상기 웹 요청은 데이터 테이블 내에 포함된 요청된 콘텐츠를 포함하게 될 웹 응답의 전달을 요청하고 상기 데이터 테이블은 상기 요청된 콘텐츠를 변경하는 것을 포함하여 상기 데이터 테이블 내에 포함된 콘텐츠를 변경할 수 있는 다른 애플리케이션들이 일반적으로 액세스가능함,
    상기 웹 응답에 포함되어질 상기 콘텐츠의 적어도 일부분이 상기 서버 컴퓨터 시스템에 현재 캐싱되어 있지 않은 것으로 결정하는 단계,
    상기 데이터 테이블로부터의 상기 요청된 콘텐츠에 액세스하는 단계,
    상기 요청된 콘텐츠를 포함하는 상기 웹 응답을 작성하는 단계,
    차후의 웹 요청들을 만족시키기 위해 상기 요청된 콘텐츠가 효율적으로 액세스될 수 있도록 상기 요청된 콘텐츠를 저장하는 단계, 및
    상기 웹 요청에 응답하여 상기 작성된 웹 요청을 상기 클라이언트 컴퓨터 시스템에게로 전달하는 단계를 포함하는 콘텐츠 액세스 방법.
  36. 하나 이상의 데이터 테이블을 갖는 데이터베이스에 액세스하는 컴퓨터 시스템에서 사용하기 위한 것으로 상기 데이터 테이블들 중 하나에 있는 콘텐츠가 변경될 때 테이블 변경 통지를 제공하도록 상기 데이터베이스를 구성하는 방법을 구현하는 컴퓨터 프로그램 제품으로서,
    프로세서에 의해 실행될 때 상기 컴퓨터 시스템으로 하여금,
    데이터 변경이 있는지 모니터링하게 될 데이터 테이블을 선택하는 단계,
    상기 선택된 데이터 테이블에 대응하는 레코드를 변경 통지 테이블에 삽입하는 단계 - 상기 대응하는 레코드는 상기 선택된 데이터 테이블에 대한 버전 정보를 포함함 -,
    상기 선택된 데이터 테이블에 트리거를 할당하는 단계 - 상기 트리거는 상기 선택된 데이터 테이블 내의 데이터가 변경될 때 상기 변경 통지 테이블 내의 상기 선택된 데이터 테이블에 대한 상기 버전 정보가 갱신되도록 함 -,
    상기 선택된 데이터 테이블 내의 데이터가 변경되는 것에 응답하여 상기 변경 통지 테이블 내의 상기 버전 정보를 갱신하는 단계, 및
    상기 갱신된 버전 정보가 상기 서버 컴퓨터 시스템에 있는 캐시 엔트리 내의 데이터의 유효성을 결정하는 데 사용될 수 있도록 상기 갱신된 버전 정보를 요청측 서버 컴퓨터 시스템으로 전송하는 단계를 수행하도록 하는 컴퓨터 실행가능 명령어들을 저장하고 있는 하나 이상의 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품.
  37. 제36항에 있어서, 상기 하나 이상의 컴퓨터 판독가능 매체는 물리 매체인 컴퓨터 프로그램 제품.
  38. 제36항에 있어서, 상기 하나 이상의 컴퓨터 판독가능 매체는 시스템 메모리를 포함하는 컴퓨터 프로그램 제품.
  39. 데이터베이스 내의 하나 이상의 데이터 테이블로부터의 콘텐츠를 포함할 가능성이 있는 웹 응답을 요청측 클라이언트 컴퓨터 시스템들에게로 제공하며 또 데이터 테이블로부터 이전에 수신된 캐싱된 콘텐츠의 일부분 및 상기 캐싱된 콘텐츠에 대응하는 캐싱된 버전 정보를 저장하는 캐시 장소를 포함하는 서버 컴퓨터 시스템에서 사용하기 위한 것으로 캐싱된 콘텐츠의 상기 일부분을 무효화시키는 방법을 구현하는 컴퓨터 프로그램 제품으로서,
    프로세서에 의해 실행될 때 상기 서버 컴퓨터 시스템으로 하여금,
    상기 하나 이상의 데이터 테이블에 대응하는 버전 정보를 얻기 위해 변경 통지 테이블에 질의하는 단계,
    상기 서버 컴퓨터 시스템이 상기 변경 통지 테이블에 마지막으로 질의한 이후로 변경된 적이 있는 적어도 하나의 데이터 테이블의 리스트를 수신하는 단계 - 적어도 하나의 데이터 테이블의 상기 리스트가 상기 적어도 하나의 데이터 테이블에 대한 현재의 버전 정보를 포함함 -,
    상기 캐싱된 콘텐츠가 상기 적어도 하나의 데이터 테이블에 의존하는 것으로 결정하는 단계,
    상기 현재의 버전 정보를 상기 캐싱된 버전 정보와 비교하는 단계, 및
    상기 비교의 결과에 기초하여 캐싱된 콘텐츠의 상기 일부분을 상기 캐시 장소로부터 제거하는 단계를 수행하도록 하는 컴퓨터 실행가능 명령어들을 저장하고 있는 하나 이상의 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품.
  40. 제39항에 있어서, 상기 하나 이상의 컴퓨터 판독가능 매체는 물리 매체인 컴퓨터 프로그램 제품.
  41. 제39항에 있어서, 상기 하나 이상의 컴퓨터 판독가능 매체는 시스템 메모리를 포함하는 컴퓨터 프로그램 제품.
  42. 데이터베이스 내의 하나 이상의 데이터 테이블로부터의 콘텐츠를 포함할 가능성이 있는 웹 응답을 요청측 클라이언트 컴퓨터 시스템들에게 제공하며 또 데이터 테이블로부터 이전에 수신된 캐싱된 콘텐츠의 일부분 및 상기 캐싱된 데이터에 대응하는 캐싱된 버전 정보를 저장하는 캐시 장소를 포함하는 서버 컴퓨터 시스템에서 사용하기 위한 것으로 요청측 클라이언트 컴퓨터 시스템에게로 제공되어질 콘텐츠에 액세스하는 방법을 구현하는 컴퓨터 프로그램 제품으로서,
    프로세서에 의해 실행될 때 상기 서버 컴퓨터 시스템으로 하여금,
    클라이언트 컴퓨터 시스템으로부터 웹 요청을 수신하는 단계 - 상기 웹 요청은 데이터 테이블 내에 포함된 요청된 콘텐츠를 포함하게 될 웹 응답의 전달을 요청하며 상기 데이터 테이블은 상기 요청된 콘텐츠를 변경하는 것을 포함하여 상기 데이터 테이블 내에 포함된 콘텐츠를 변경할 수 있는 다른 애플리케이션들이 일반적으로 액세스가능함 -,
    상기 웹 응답에 포함되어질 상기 콘텐츠의 적어도 일부분이 상기 서버 컴퓨터 시스템에 현재 캐싱되어 있지 않은 것으로 결정하는 단계,
    상기 데이터 테이블로부터의 상기 요청된 콘텐츠에 액세스하는 단계,
    상기 요청된 콘텐츠를 포함하는 상기 웹 응답을 작성하는 단계,
    상기 웹 응답의 작성 동안에 실행되는 명령들에 기초하여 상기 작성된 웹 응답의 적어도 일부분에 데이터베이스 캐시 의존성을 할당하는 단계 - 상기 데이터베이스 캐시 의존성은 상기 작성된 웹 응답의 상기 적어도 일부분이 상기 데이터 테이블에 의존하고 있음을 나타냄 -,
    상기 작성된 웹 응답을 상기 클라이언트 컴퓨터 시스템에게로 전달하기에 앞서 상기 작성된 웹 응답의 상기 적어도 일부분을 상기 서버 컴퓨터 시스템에 있는 캐시 장소에 캐싱하는 단계, 및
    상기 웹 요청에 응답하여 상기 작성된 웹 응답을 상기 클라이언트 컴퓨터 시스템에게로 전달하는 단계를 수행하도록 하는 컴퓨터 실행가능 명령어들을 저장하고 있는 하나 이상의 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품.
  43. 제42항에 있어서, 상기 하나 이상의 컴퓨터 판독가능 매체는 물리 매체인 컴퓨터 프로그램 제품.
  44. 제42항에 있어서, 상기 하나 이상의 컴퓨터 판독가능 매체는 시스템 메모리를 포함하는 컴퓨터 프로그램 제품.
  45. 제42항에 있어서, 프로세서에 의해 실행될 때 상기 서버 컴퓨터 시스템으로 하여금 상기 웹 응답의 작성 동안에 실행되는 명령들에 기초하여 상기 작성된 웹 응답의 상기 적어도 일부분에 데이터베이스 캐시 의존성을 할당하도록 하는 컴퓨터 실행가능 명령어들은 프로세서에 의해 실행될 때 상기 서버 컴퓨터 시스템으로 하여금 데이터베이스 캐시 의존성을 상기 작성된 웹 응답 전체에 할당하도록 하는 디렉티브를 포함하는 컴퓨터 프로그램 제품.
  46. 제42항에 있어서, 프로세서에 의해 실행될 때 상기 서버 컴퓨터 시스템으로 하여금 상기 웹 응답의 작성 동안에 실행되는 명령들에 기초하여 상기 작성된 웹 응답의 상기 적어도 일부분에 데이터베이스 캐시 의존성을 할당하도록 하는 컴퓨터 실행가능 명령어들이 프로세서에 의해 실행될 때 상기 서버 컴퓨터 시스템으로 하여금 데이터베이스 캐시 의존성을 데이터 테이블로부터 검색된 콘텐츠에 할당하도록 하는 스크립트의 컴퓨터 실행가능 명령어들을 포함하는 컴퓨터 프로그램 제품.
  47. 데이터 테이블에 대한 버전 정보를 표현하는 데이터 구조를 저장하고 있는 하나 이상의 컴퓨터 판독가능 매체로서,
    상기 데이터 구조는,
    데이터 테이블을 식별하는 데 사용될 수 있는 테이블 ID를 나타내는 테이블 ID 필드, 및
    상기 테이블 ID 필드에 나타내어져 있는 상기 테이블 ID에 의해 식별된 상기 데이터 테이블에 대한 변경 ID를 나타내는 변경 ID 필드로서, 상기 변경 ID는 캐시 엔트리가 무효화되어야 하는지를 결정하는 데 사용되는 것인 변경 ID 필드를 포함하는 것인 하나 이상의 컴퓨터 판독가능 매체.
  48. 제47항에 있어서, 상기 데이터 구조는 상기 테이블 ID 필드에 나타내어진 상기 테이블 ID에 의해 식별되는 상기 데이터 테이블에 대한 버전 정보를 표현하는 상기 데이터 구조가 변경 통지 테이블에 삽입된 날짜를 나타내는 날짜 필드를 더 포함하는 것인 하나 이상의 컴퓨터 판독가능 매체.
  49. 제47항에 있어서, 상기 데이터 구조는 상기 테이블 ID 필드에 나타내어져 있는 상기 테이블 ID에 의해 식별되는 상기 데이터 테이블에 의존하는 페이지 콘텐츠를 나타내는 페이지 콘텐츠 필드를 더 포함하는 것인 하나 이상의 컴퓨터 판독가능 매체.
KR1020040047691A 2003-06-25 2004-06-24 캐시 엔트리를 무효화시키는 데 사용될 수 있는데이터베이스 테이블 변경 정보의 등록 및 검색 KR20050001422A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/603,532 2003-06-25
US10/603,532 US7624126B2 (en) 2003-06-25 2003-06-25 Registering for and retrieving database table change information that can be used to invalidate cache entries

Publications (1)

Publication Number Publication Date
KR20050001422A true KR20050001422A (ko) 2005-01-06

Family

ID=33418662

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040047691A KR20050001422A (ko) 2003-06-25 2004-06-24 캐시 엔트리를 무효화시키는 데 사용될 수 있는데이터베이스 테이블 변경 정보의 등록 및 검색

Country Status (12)

Country Link
US (1) US7624126B2 (ko)
EP (2) EP2096555A3 (ko)
JP (1) JP4578160B2 (ko)
KR (1) KR20050001422A (ko)
CN (2) CN101452484B (ko)
AT (1) ATE444531T1 (ko)
AU (1) AU2004202508A1 (ko)
BR (1) BRPI0402506A (ko)
CA (1) CA2471813A1 (ko)
DE (1) DE602004023355D1 (ko)
MX (1) MXPA04006267A (ko)
RU (1) RU2380748C2 (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100789771B1 (ko) * 2005-12-08 2007-12-28 한국전자통신연구원 트리거를 이용한 입력 데이터 스트림과 저장 데이터의 통합질의 처리 시스템 및 그 방법
KR100791628B1 (ko) * 2006-06-09 2008-01-04 고려대학교 산학협력단 이동망 시스템의 능동적 캐쉬 제어 방법, 그 기록 매체 및그 시스템
KR101023622B1 (ko) * 2008-12-16 2011-03-22 지에스네오텍(주) 적응적 고성능 프락시 캐시 서버 및 캐싱방법
JP2014509019A (ja) * 2011-03-14 2014-04-10 小米科技有限▲責▼任公司 一種のページ再組版の方法及びページ再組版のシステム
KR101436049B1 (ko) * 2012-06-01 2014-09-01 에스케이텔레콤 주식회사 컨텐츠 캐싱 서비스 제공 방법 및 이를 위한 로컬 캐싱 장치
KR102027823B1 (ko) * 2019-04-24 2019-10-02 주식회사 리앙커뮤니케이션즈 플러그 인 방식의 시스템 응답 성능향상 지능형 캐싱 시스템

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7624126B2 (en) * 2003-06-25 2009-11-24 Microsoft Corporation Registering for and retrieving database table change information that can be used to invalidate cache entries
US20070038889A1 (en) * 2005-08-11 2007-02-15 Wiggins Robert D Methods and systems to access process control log information associated with process control systems
US20070088700A1 (en) * 2005-10-13 2007-04-19 International Business Machines Corporation Sending keys that identify changes to clients
US7856455B2 (en) * 2006-03-01 2010-12-21 International Business Machines Corporation System, method and program product for generating triggers for a relational database
US9697253B2 (en) * 2006-10-20 2017-07-04 Oracle International Corporation Consistent client-side cache
US10296629B2 (en) * 2006-10-20 2019-05-21 Oracle International Corporation Server supporting a consistent client-side cache
US8775563B2 (en) * 2006-11-20 2014-07-08 Yapta, Inc. Dynamic overlaying of content on web pages for tracking data
US8095618B2 (en) 2007-03-30 2012-01-10 Microsoft Corporation In-memory caching of shared customizable multi-tenant data
EP2009638A1 (en) * 2007-06-28 2008-12-31 THOMSON Licensing Video copy prevention if the difference betweeen the fingerprints before and after its modification is above a threshold
US20090024916A1 (en) * 2007-07-20 2009-01-22 Burckart Erik J Seamless Asynchronous Updates of Dynamic Content
EP2631822A1 (en) * 2007-12-21 2013-08-28 Thomson Reuters Global Resources Systems, methods, and software for entity relationship resolution
US8170213B1 (en) * 2007-12-27 2012-05-01 Emc Corporation Methodology for coordinating centralized key management and encryption keys cached through proxied elements
US8239416B2 (en) 2008-05-30 2012-08-07 Armanta, Inc. System, method, and computer program product for modeling changes to large scale datasets
US8380930B2 (en) * 2009-01-06 2013-02-19 Disney Enterprises, Inc. Refreshing cached data based on content identifier map
JP5395532B2 (ja) * 2009-06-22 2014-01-22 日本電信電話株式会社 クライアント装置、サーバ装置、コンピュータシステム、および、ファイルシステムアクセス方法、並びに、クライアントプログラムおよびサーバプログラム
US9292587B2 (en) * 2010-07-21 2016-03-22 Citrix System, Inc. Systems and methods for database notification interface to efficiently identify events and changed data
US8543554B1 (en) 2010-08-10 2013-09-24 ScalArc Inc. Method and system for transparent database query caching
US9275165B2 (en) * 2010-09-17 2016-03-01 Oracle International Corporation Method and apparatus for defining an application to allow polymorphic serialization
US8627448B2 (en) 2010-11-02 2014-01-07 Jose Renato Santos Selective invalidation of packet filtering results
EP2664117B1 (en) 2011-01-10 2015-03-25 Telefonaktiebolaget LM Ericsson (publ) Caching of announcements at the edge of a packet switched telecommunication network
WO2012126177A2 (zh) * 2011-03-22 2012-09-27 青岛海信传媒网络技术有限公司 从数据库中读取数据的方法及装置
US20130086323A1 (en) * 2011-09-30 2013-04-04 Oracle International Corporation Efficient cache management in a cluster
WO2013069655A1 (en) * 2011-11-07 2013-05-16 Square Enix Holdings Co., Ltd. Information processing system, control method, program, and recording medium
US8935480B1 (en) * 2012-01-09 2015-01-13 Amazon Technologies, Inc. Efficiently caching data at a client device
US10146885B1 (en) * 2012-12-10 2018-12-04 Emc Corporation Method and system for deciding on ordering of scripting language source code for dependency resolution
US8990205B2 (en) * 2013-01-28 2015-03-24 International Business Machines Corporation Data caveats for database tables
BR112015022115A2 (pt) * 2013-03-14 2017-07-18 Koninklijke Philips Nv dispositivo para obter informações de sinais vitais de um indivíduo, método para obter informações de sinais vitais de um indivíduo, aparelho de processamento para obter informações de sinais vitais de um indivíduo, método de processamento para obter informações de sinais vitais de um indivíduo, e, programa de computador
CN103246696A (zh) * 2013-03-21 2013-08-14 宁波公众信息产业有限公司 高并发数据库的访问方法及应用于多服务器系统的方法
CN103336789A (zh) * 2013-06-06 2013-10-02 华为技术有限公司 一种数据库系统的锁操作方法及设备
US9420056B2 (en) 2013-06-26 2016-08-16 International Business Machines Corporation Analytics caching based on users connected
US9648125B2 (en) * 2013-10-04 2017-05-09 Akamai Technologies, Inc. Systems and methods for caching content with notification-based invalidation
US9813515B2 (en) 2013-10-04 2017-11-07 Akamai Technologies, Inc. Systems and methods for caching content with notification-based invalidation with extension to clients
US9641640B2 (en) * 2013-10-04 2017-05-02 Akamai Technologies, Inc. Systems and methods for controlling cacheability and privacy of objects
WO2015065325A1 (en) * 2013-10-29 2015-05-07 Hewlett-Packard Development Company, L.P. Validating a query execution
US9954948B2 (en) * 2014-07-11 2018-04-24 Microsoft Technology Licensing, Llc Private content distribution network
US9672026B2 (en) 2014-07-21 2017-06-06 Xiaomi Inc. Light app offline updating method, device and terminal
CN104156233B (zh) * 2014-07-21 2016-05-18 小米科技有限责任公司 轻应用离线更新方法、装置及终端
US9753904B2 (en) * 2014-07-25 2017-09-05 Qualcomm Incorporated Fast rendering of websites containing dynamic content and stale content
CN104202360B (zh) * 2014-08-13 2015-12-30 小米科技有限责任公司 访问网页的方法、装置及路由器
US9654576B2 (en) * 2014-09-12 2017-05-16 Sap Se Database triggered push notification
GB201505067D0 (en) * 2015-03-25 2015-05-06 Advanced Risc Mach Ltd Rendering systems
WO2016183545A1 (en) 2015-05-14 2016-11-17 Walleye Software, LLC Distributed and optimized garbage collection of remote and exported table handle links to update propagation graph nodes
US10311229B1 (en) 2015-05-18 2019-06-04 Amazon Technologies, Inc. Mitigating timing side-channel attacks by obscuring alternatives in code
US10868665B1 (en) * 2015-05-18 2020-12-15 Amazon Technologies, Inc. Mitigating timing side-channel attacks by obscuring accesses to sensitive data
US10061852B1 (en) * 2015-05-19 2018-08-28 Amazon Technologies, Inc. Transparent proxy tunnel caching for database access
US10185744B2 (en) * 2015-06-23 2019-01-22 Sap Se Caching views on historical data
CN104965935B (zh) * 2015-08-06 2018-10-12 上海携程商务有限公司 网络监控日志的更新方法
US9876873B1 (en) 2015-10-21 2018-01-23 Perfect Sense, Inc. Caching techniques
US10353895B2 (en) * 2015-11-24 2019-07-16 Sap Se Atomic visibility switch for transactional cache invalidation
US9916465B1 (en) * 2015-12-29 2018-03-13 Palantir Technologies Inc. Systems and methods for automatic and customizable data minimization of electronic data stores
US9591047B1 (en) * 2016-04-11 2017-03-07 Level 3 Communications, Llc Invalidation in a content delivery network (CDN)
CN108280097B (zh) * 2017-01-06 2022-09-09 阿里云计算有限公司 一种数据库系统的故障处理方法和装置
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
US11567934B2 (en) 2018-04-20 2023-01-31 Oracle International Corporation Consistent client-side caching for fine grained invalidations
US11403366B2 (en) * 2018-09-30 2022-08-02 Hewlett Packard Enterprise Development Lp On-demand retrieval of information from databases
US10977244B2 (en) * 2018-11-06 2021-04-13 Snowflake Inc. Tracking intermediate changes in database data
US10922229B2 (en) 2019-03-11 2021-02-16 Microsoft Technology Licensing, Llc In-memory normalization of cached objects to reduce cache memory footprint
CN110413679B (zh) * 2019-07-31 2023-01-24 深圳前海微众银行股份有限公司 数据库信息处理方法、装置、设备及可读存储介质
EP4292254A1 (en) * 2021-02-13 2023-12-20 Oracle International Corporation Invalidating cached flow information in a cloud infrastructure
US20220382680A1 (en) * 2021-05-28 2022-12-01 Zoom Video Communications, Inc. Versioning Group Cache System
CN116016397B (zh) * 2023-03-28 2023-05-30 湖南毂梁微电子有限公司 一种报文传输缓冲区快速检索方法和电路

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US6256712B1 (en) * 1997-08-01 2001-07-03 International Business Machines Corporation Scaleable method for maintaining and making consistent updates to caches
JPH1165905A (ja) * 1997-08-22 1999-03-09 Nec Corp HomePage更新履歴情報の利用によるwwwサービス方式
JPH11149405A (ja) * 1997-11-14 1999-06-02 Hitachi Ltd Wwwキャッシュシステムおよびwwwデータの先読み方法
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
US6185608B1 (en) * 1998-06-12 2001-02-06 International Business Machines Corporation Caching dynamic web pages
JP2000089996A (ja) * 1998-09-16 2000-03-31 Nec Corp 情報処理装置およびデータベースシステム
US6466949B2 (en) * 1998-11-23 2002-10-15 Myway.Com Corporation Performing event notification in a database having a distributed web cluster
US6516327B1 (en) * 1998-12-24 2003-02-04 International Business Machines Corporation System and method for synchronizing data in multiple databases
US6487641B1 (en) * 1999-04-19 2002-11-26 Oracle Corporation Dynamic caches with miss tables
US6405191B1 (en) 1999-07-21 2002-06-11 Oracle Corporation Content based publish-and-subscribe system integrated in a relational database system
US6757708B1 (en) * 2000-03-03 2004-06-29 International Business Machines Corporation Caching dynamic content
JP4735909B2 (ja) * 2000-04-28 2011-07-27 株式会社指月電機製作所 情報表示器
US8060389B2 (en) * 2000-06-07 2011-11-15 Apple Inc. System and method for anonymous location based services
US6591266B1 (en) * 2000-07-14 2003-07-08 Nec Corporation System and method for intelligent caching and refresh of dynamically generated and static web content
EP1178402A1 (en) * 2000-08-03 2002-02-06 Hsing Tech Enterprises Co., Ltd. Method and apparatus for actively updating program file(s) of a client computer
JP2002073401A (ja) * 2000-08-28 2002-03-12 Mitsubishi Electric Corp Wwwコンテンツ配信システム、プロキシサーバ装置、wwwサーバ装置、wwwコンテンツ配信方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
US6732237B1 (en) * 2000-08-29 2004-05-04 Oracle International Corporation Multi-tier caching system
US7139973B1 (en) * 2000-11-20 2006-11-21 Cisco Technology, Inc. Dynamic information object cache approach useful in a vocabulary retrieval system
US20020116582A1 (en) * 2000-12-18 2002-08-22 Copeland George P. Batching of invalidations and new values in a web cache with dynamic content
EP1227667A1 (en) * 2001-01-18 2002-07-31 Sony Service Centre (Europe) N.V. Method and device for providing downloaded objects to an application
JP2002312218A (ja) * 2001-04-10 2002-10-25 Ricoh Co Ltd レプリケーションデータベースシステム及びその制御プログラムが記録されたコンピュータ読取り可能な記録媒体
US6917922B1 (en) * 2001-07-06 2005-07-12 Amazon.Com, Inc. Contextual presentation of information about related orders during browsing of an electronic catalog
US7269648B1 (en) * 2001-09-27 2007-09-11 Emc Corporation Resolving multiple master node conflict in a DDB
US8290909B2 (en) * 2001-11-15 2012-10-16 International Business Machines Corporation Access manager for databases
US6970981B2 (en) * 2001-12-21 2005-11-29 Tibco Software, Inc. Method and apparatus to maintain consistency between an object store and a plurality of caches utilizing transactional updates to data caches
US6871268B2 (en) * 2002-03-07 2005-03-22 International Business Machines Corporation Methods and systems for distributed caching in presence of updates and in accordance with holding times
US7089228B2 (en) * 2002-04-18 2006-08-08 International Business Machines Corporation Computer apparatus and method for caching results of a database query
US6996584B2 (en) 2002-05-14 2006-02-07 Pervasive Software, Inc. System and method of maintaining functional client side data cache coherence
US7136885B2 (en) * 2002-12-20 2006-11-14 International Business Machines Corporation Free space management
US6950823B2 (en) * 2002-12-23 2005-09-27 International Business Machines Corporation Transparent edge-of-network data cache
US7765196B2 (en) * 2003-06-23 2010-07-27 Dell Products L.P. Method and apparatus for web cache using database triggers
US7624126B2 (en) * 2003-06-25 2009-11-24 Microsoft Corporation Registering for and retrieving database table change information that can be used to invalidate cache entries
US7318074B2 (en) * 2003-11-17 2008-01-08 International Business Machines Corporation System and method for achieving deferred invalidation consistency

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100789771B1 (ko) * 2005-12-08 2007-12-28 한국전자통신연구원 트리거를 이용한 입력 데이터 스트림과 저장 데이터의 통합질의 처리 시스템 및 그 방법
KR100791628B1 (ko) * 2006-06-09 2008-01-04 고려대학교 산학협력단 이동망 시스템의 능동적 캐쉬 제어 방법, 그 기록 매체 및그 시스템
KR101023622B1 (ko) * 2008-12-16 2011-03-22 지에스네오텍(주) 적응적 고성능 프락시 캐시 서버 및 캐싱방법
JP2014509019A (ja) * 2011-03-14 2014-04-10 小米科技有限▲責▼任公司 一種のページ再組版の方法及びページ再組版のシステム
KR101436049B1 (ko) * 2012-06-01 2014-09-01 에스케이텔레콤 주식회사 컨텐츠 캐싱 서비스 제공 방법 및 이를 위한 로컬 캐싱 장치
US9386099B2 (en) 2012-06-01 2016-07-05 Sk Telecom Co., Ltd. Local caching device, system and method for providing content caching service
KR102027823B1 (ko) * 2019-04-24 2019-10-02 주식회사 리앙커뮤니케이션즈 플러그 인 방식의 시스템 응답 성능향상 지능형 캐싱 시스템

Also Published As

Publication number Publication date
CN101452484A (zh) 2009-06-10
CN101452484B (zh) 2011-10-05
EP1492027A1 (en) 2004-12-29
ATE444531T1 (de) 2009-10-15
AU2004202508A1 (en) 2005-01-20
BRPI0402506A (pt) 2005-05-31
RU2380748C2 (ru) 2010-01-27
EP1492027B1 (en) 2009-09-30
CN1577327A (zh) 2005-02-09
US7624126B2 (en) 2009-11-24
CA2471813A1 (en) 2004-12-25
EP2096555A3 (en) 2009-12-02
CN100461162C (zh) 2009-02-11
JP4578160B2 (ja) 2010-11-10
RU2004119359A (ru) 2006-01-10
DE602004023355D1 (de) 2009-11-12
JP2005018787A (ja) 2005-01-20
US20040267824A1 (en) 2004-12-30
EP2096555A2 (en) 2009-09-02
MXPA04006267A (es) 2005-03-31

Similar Documents

Publication Publication Date Title
KR20050001422A (ko) 캐시 엔트리를 무효화시키는 데 사용될 수 있는데이터베이스 테이블 변경 정보의 등록 및 검색
US6615235B1 (en) Method and apparatus for cache coordination for multiple address spaces
US6981105B2 (en) Method and apparatus for invalidating data in a cache
US6507891B1 (en) Method and apparatus for managing internal caches and external caches in a data processing system
US6457103B1 (en) Method and apparatus for caching content in a data processing system with fragment granularity
US6557076B1 (en) Method and apparatus for aggressively rendering data in a data processing system
US6973546B2 (en) Method, system, and program for maintaining data in distributed caches
US8452925B2 (en) System, method and computer program product for automatically updating content in a cache
US7096418B1 (en) Dynamic web page cache
US6925485B1 (en) Proxy cache preloader
US7702800B2 (en) Detecting and handling affinity breaks in web applications
RU2373567C2 (ru) Общая модель зависимости для аннулирования элементов кэша
KR100532337B1 (ko) 데이터 캐싱 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체
US9081807B2 (en) Event-driven invalidation of pages for web-based applications
US20090018998A1 (en) Performance Of An Enterprise Service Bus By Decomposing A Query Result From The Service Registry
JP2002542542A (ja) 問合せ可能なダイナミック・キャッシュを有するウェブサーバ
JP2004303211A (ja) データベース結果および導出オブジェクトをキャッシュし、無効にするためのシステムおよび方法
US7805422B2 (en) Change notification query multiplexing
Sharma Chakravarthy et al. Webvigil: An approach to just-in-time information propagation in large network-centric environments
JP2000137689A (ja) 共用データキャッシュ処理方法及びその実施装置並びにその処理プログラムを記録した媒体
KR100532340B1 (ko) 페이지 구축기 툴을 사용하여 메세지를 발행하는 방법 및 시스템과 컴퓨터 판독가능한 기록 매체
JP2006127123A (ja) アプリケーションサーバ、データベースサーバ、ウェブ検索システム、検索結果取得方法、検索結果応答方法、検索結果取得プログラムおよび検索結果応答プログラム

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