KR100745883B1 - 투명한 네트워크 에지의 데이터 캐시 - Google Patents

투명한 네트워크 에지의 데이터 캐시 Download PDF

Info

Publication number
KR100745883B1
KR100745883B1 KR1020057009282A KR20057009282A KR100745883B1 KR 100745883 B1 KR100745883 B1 KR 100745883B1 KR 1020057009282 A KR1020057009282 A KR 1020057009282A KR 20057009282 A KR20057009282 A KR 20057009282A KR 100745883 B1 KR100745883 B1 KR 100745883B1
Authority
KR
South Korea
Prior art keywords
query
database
timestamp
local
results
Prior art date
Application number
KR1020057009282A
Other languages
English (en)
Other versions
KR20050085133A (ko
Inventor
크하릴 에스. 아미리
스리람 패드매나브함
상현 박
레누 테와리
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20050085133A publication Critical patent/KR20050085133A/ko
Application granted granted Critical
Publication of KR100745883B1 publication Critical patent/KR100745883B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24539Query rewriting; Transformation using cached or materialised query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • 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

Abstract

로컬 어플리케이션에 의해 실행되는 쿼리에 기초하여 데이터의 동적 캐싱을 위한 시스템(100), 장치(200) 및 방법(300)이 제공되며, 시스템은 원격 서버(108), 에시 서버(109) 상의 로컬 데이터베이스(104)를 포함하며; 장치는 쿼리 평가기(204), 이 쿼리 평가기와 모두 신호 통신하는 캐시 인덱스(206), 캐시 저장소(208), 리소스 관리기(209), 포함 체커(207), 쿼리 분석기(205) 및 일관성 관리기(210)를 포함하는 에지 데이터 캐시(202)를 포함하고; 방법은 원격 서버의 이전 데이터베이스 쿼리의 결과(412)를 동적 캐싱하고, 로컬 데이터베이스를 로컬 서버와 연결시키고, 복수의 캐싱 결과를 로컬 데이터베이스의 공유 테이블(503)에 저장하고, 새로운 데이터베이스 쿼리(410)가 로컬 서버로 충족될 때 복수의 캐싱 결과를 이용한다.
쿼리, 동적 캐싱, 공유 테이블, 포함 체커, 데이터 일관성, 데이터 캐시

Description

투명한 네트워크 에지의 데이터 캐시{A TRANSPARENT EDGE-OF-NETWORK DATA CACHE}
본 발명은 2002년 12월 23일자 출원된 "투명한 네트워크 에지의 데이터 캐시"로 표제된 미국 특허 출원 번호 10/328,229 (대리인 번호 YOR920020341US1/8728-600)을 우선권 주장하고 있으며, 이의 설명은 전체가 여기에서 참조되고 있다.
본 발명은 분산 네트워크에 대한 데이터베이스 캐싱(caching)에 관한 것이다. 분산 웹 어플리케이션의 증대로 원격 데이터베이스 서버에 대한 어플리케이션 쿼리의 빈도수가 증가하고 있다. 이 어플리케이션은 이런 쿼리의 성능을 개선하고 데이터 효율성을 증진시키기 위해서, 로컬 데이터베이스 캐시를 이용할 수 있다. 예를 들어, 컨텐트 분산 네트워크의 에지 서버(edge server)는 근방의 데이터베이스 캐시를 이용함으로써 데이터 엑세스를 가속화하고 네트워크의 에지에서 동적인 웹 컨텐트를 더욱 신속하게 형성할 수가 있다.
에지 서버에서 데이터를 캐시하는 통상의 기술은 (ⅰ) 로컬 머신에서 전체 데이터베이스나 이의 명시된 부분의 명시된 복제, 또는 (ⅱ) 이전 쿼리 응답의 캐싱 및 이전에 캐시된 응답에 대한 새로운 쿼리 문장과의 정확한 일치에 의존하였 다. 복제 방법에서는, 캐시의 컨텐츠가 데이터베이스 테이블 중 어느 부분이 에지 노드에서 복제되는지를 결정해야 하는 관리자에 의해서만 명시적으로 특정되었다. 캐시 컨텐츠가 일단 테이블 이름 또는 "실체화 뷰(materialized view)" 정의로 특정되면, 데이터는 원본 서버로부터 에지 캐시에 복사된다.
쿼리 응답 캐시 방법에서는, 캐시가 어플리케이션 쿼리의 응답에 따라 동적으로 생긴다. 캐시의 데이터는 쿼리 응답의 리스트로 기술되며, 각 응답에는 이것이 형성되게 한 쿼리 문장이 태그되어 있다. 응답은 그 쿼리가 통상적으로 스트링 비교에 의해 매치되는 경우에만 후속 쿼리에 답변하는 데에 이용되며, 이 쿼리 스트링은 캐시된 응답에 대응하는 것이다. 쿼리 응답 캐시는 데이터를 동적으로 캐시함으로써 관리자 제어의 필요성을 제거시키지만, 별개의 영역에서는, 쿼리 응답 마다 한 영역씩 비효율적으로 데이터를 저장한다. 이것은 많은 쿼리 응답시에 동일한 베이스 데이터가 복제될 수 있으므로 큰 공간 오버헤드를 가져오게 된다. 이것은 쿼리 응답이 통상 하위 데이터베이스의 중요한 공통 부분을 포함하여 중첩되게 되기 때문이다. 더구나, 이 방법은 캐시된 쿼리 응답이 응답에 포함될 수 있는 다른 쿼리가 안된다는 것은 아니지만, 동일한 쿼리의 정확한 재제출에 충족하는 데에만 이용되기 때문에 성능의 이점을 제한시키게 된다.
예를 들어, 30살 미만인 모든 고용인의 사회 보장 번호를 찾기 위한 초기 쿼리가 있다고 한다. SQL 문장은:
SELECT employee.ssn FROM employee WHERE employee.age<30
이 된다.
이 쿼리에 대한 응답이 캐시되고, 이 캐시가 25살 미만인 모든 고용인의 사회 보장 번호를 찾는 새로운 쿼리를 수신했다고 가정하면, 이 SQL 문장은:
SELECT employee.ssn FROM employee WHERE employee.age<25
이 된다.
25살 미만의 모든 고용인이 또한 30살 미만이기 때문에 새로운 쿼리의 응답이 첫번째 것의 응답에 포함되지만, 정확한 매칭에 근거하는 쿼리 응답 캐시로는 캐시에서 쿼리를 서비스할 수가 없다.
요약하면, 명시된 관리자 지정 데이터 캐싱은 수동 관리를 필요로 하며 관리자가 각 에지 서버에 대한 부하와 리소스에 대해 상세하게 알고 있다고 가정한다. 쿼리 응답은 관리자의 오버헤드를 제거하지만, 효율의 제한 및 고 공간 오버헤드라는 문제를 안고 있다. 더구나, 일관성 관리는 개시된 데이터의 표시와 원본 서버의 기본 데이터 간의 불일치로 인해 복잡하게 된다. 일관성 제어는 일반적으로 어느 기본 테이블이 변경될 때나 모든 쿼리 응답을 무효화하거나, 복합 의존성 그래프를 보유하는 것을 필요로 한다.
따라서, 관리자가 그 컨텐츠를 특정하거나 그 특정된 사양을 캐시가 위치된 머신 상에서 작업 부하의 변경이나 리소스의 유효성의 변경에 따라 적응시킬 필요가 없는 캐시를 갖는 것이 요망된다. 또한, 캐시가 저장 오버헤드 및 일관성 유지 면에서 효율적인 것이 요망된다.
종래 기술의 이들 및 다른 결점 및 단점들은 로컬 어플리케이션에 의해 실행된 쿼리에 근거하는 동적인 데이터 캐싱을 지원하기 위한 컴퓨터 시스템 및 대응 방법에 의해 해결된다.
예시의 시스템은 완전한 데이터베이스를 포함하는 원격 서버, 이 완전한 데이터베이스의 서브세트를 포함하는 에지 서버 상의 로컬 데이터베이스 - 에지 서버는 원격 서버와 통신함- , 완전한 데이터베이스로부터의 결과를 캐시하고, 로컬 형성된 데이터를 수신하고, 로컬 데이터베이스와 원격 데이터베이스 간의 데이터의 일관성을 유지하면서(ensuring) 유용한 저장 조건에 기초하여 캐시의 컨텐츠를 조절하기 위한 에지 서버 상의 로컬 데이터베이스 내의 공유 테이블을 포함한다.
예시의 장치는 쿼리 평가기, 쿼리 평가기와 모두 신호 통신하는 캐시 인덱스, 캐시 저장소, 리소스 관리기, 포함 체커, 및 쿼리 분석기 및 일관성 관리기를 포함하는 에지 데이터 캐시를 포함한다.
로컬 서버가 적어도 하나의 원격 서버에 대한 데이터베이스 쿼리를 충족하는 예시의 대응 방법은 원격 서버의 이전의 데이터베이스 쿼리의 결과를 동적으로 캐싱하고, 로컬 데이터베이스를 이 로컬 서버와 연결시키고, 로컬 데이터베이스의 공유 테이블에 복수의 캐싱 결과를 저장하고, 새로운 데이터베이스 쿼리가 로컬 서버로 충족될 때 복수의 캐싱 결과를 이용하는 단계를 포함한다.
본 발명의 이들 및 다른 형태, 특성 및 장점들은 첨부한 도면과 관련하여 기재되는 이하의 예시의 실시예로부터 명백하게 될 것이다.
본 명세서는 다음 예시의 도면에 따라서 투명한 네트워크의 에지 데이터 캐 시를 개시하고 있다:
도 1은 원본 서버에 접속되는 두 개의 에지 서버의 개략도이다.
도 2는 도 1의 에지 서버의 데이터 캐시의 블럭도를 나타낸다.
도 3은 도 2의 에지 서버 데이터베이스 캐시의 여러 클래스의 쿼리의 트리도를 나타낸다.
도 4는 도 1의 에지 서버에 대한 전체 쿼리 처리의 흐름도를 나타낸다.
도 5는 도 2의 데이터 캐시에 의해 이용되는 공통 스키마 공유 저장 기술의 개략도이다.
도 6은 도 1의 원본 서버에서 동일한 테이블에 대한 두 개의 쿼리의 데이터 테이블 예를 나타낸다.
도 7은 일관성 유지 프로토콜의 개략도를 나타낸다.
도 8은 일관성을 고려한 쿼리 처리 알고리즘의 흐름도를 나타낸다.
도 9는 결과를 캐시에 삽입한 알고리즘의 흐름도를 나타낸다.
도 10은 수정 트랜잭션을 실행하기 위한 알고리즘의 흐름도를 나타낸다.
도 11은 캐시가 차지한 공간을 조절하는 데에 이용되는 백그라운드 캐시 소거 알고리즘의 흐름도를 나타낸다.
본 명세서의 실시예는 원격 서버의 데이터베이스 쿼리 수단이 로컬 머신에 의해 서비스될 수 있도록 하는 동적 데이터베이스 캐시를 제공한다. 캐시는 로컬 데이터베이스 엔진을 이용하여 이전 쿼리 결과의 부분적이지만 의미적으로 일치하 는 "구체화 뷰"를 보유한다. 이것은 어플리케이션 쿼리 스팀(steam)에 기초하여 동적으로 위치된다. 쿼리 술어로 동작하는 포함 체커 (containment checker)는 새로운 쿼리의 결과가 캐시된 결과의 합집합에 포함되는지를 설정하는 데에 이용된다. 공통 로컬 테이블은 가능한 경우 중첩된 쿼리 결과 간에 물리적 저장소를 공유하는 데에 이용된다. 데이터 일관성은 원본 데이터베이스로부터 이들의 캐시된 로컬 카운터파트에 삽입, 삭제 및 수정을 전달하는 것으로 유지된다. 백그라운드 소거 알고리즘은 일관성 프로토콜에 의해 전달된 여분의 로우 뿐만 아니라 캐시로부터의 축출이 마크된 쿼리에 속하는 로우를 축출하여 공통의 로컬 테이블의 컨텐츠를 연속적으로 또는 주기적으로 잘라낸다. 용어 "쿼리 응답" 및 "쿼리 결과"는 본 명세서에서 상호 교환적으로 이용된다.
이하에서, 다음의 정의는 예시의 실시예의 원리 및/또는 동작의 이해를 도와준다:
데이터베이스 테이블: 관계형 데이터베이스 시스템에 의해 정의되는 관계 테이블.
쿼리 술어: 쿼리에서 특정된 제약 조건 (예를 들어, SQL 문장에서 WHERE 절), 이것은 기본 테이블에서 어느 로우가 쿼리 결과에 리턴되는지를 선택하기 위한 표준으로 이용됨.
쿼리 결과: SQL 쿼리에 의해 데이터베이스 시스템에 리턴되는 응답. 쿼리 결과는 로우와 컬럼을 갖는 테이블과 같음.
쿼리 결과 세트: 다수의 쿼리에 대응하는 복수의 결과 세트.
델타 일관성: 데이터베이스 캐시의 데이터가 원본 데이터베이스의 데이터와 관련하여 임의의 시간창 내에서 일치되어야 하는 것. 상세하게는 이것은 현재 시간 Tc에서의 캐시 데이터의 상태가 시간 Tp에서의 원본 데이터베이스의 과거 상태와 일치된다는 것을 의미하며, 여기에서 Tp는 미리 정해진 최대의 시간 창 내에 있음.
쿼리/트랜잭션 타임스탬프: 원본 서버에서 실행되는 모든 쿼리와 트랜잭션에 연결되어 단조적으로 증가하고 있는 고유의 서버 형성 번호. 이 타임스탬프는 동시에 일어난 동작과 관련하여 트랜잭션 또는 쿼리의 연속 순서를 반영한다.
새로 고침 메시지: 원본 데이터베이스의 테이블의 최근의 변경 (예를 들어, 삽입, 수정, 삭제 문장)을 반영하는 원본 서버에 의해 에지 캐시에 보내진 메시지. 기본 테이블의 변경은 다수의 새로 고침 메시지에서 배치(batch)될 수 있지만, 이 새로 고침 메시지는 이들이 보고한 변경이 발생한 순서로 전달된다.
즉각적 수정 가시성: 어플리케이션 쿼리가 동일한 어플리케이션에 의한 수정의 성공적인 완료에 이어서, 데이터베이스에 대한 수정의 효과를 관찰해야만 하는 속성.
단조 상태 전환: 어플리케이션에 의해 캐시에 제출된 두 연속적인 쿼리 - 제1 쿼리에 대한 응답이 수신된 후에 제2 쿼리가 제출됨- 가 시간이 전진하는 데이터베이스 상태를 관찰하는 속성. 즉, 제2 쿼리는 제1 쿼리에 의해 관찰된 상태 보다 시간 상 더욱 최근인 데이터베이스 상태를 관찰하게 된다.
도 1에 나타낸 바와 같이, "에지 데이터 캐시"를 갖는 예시의 네트워크 실시 예는 보통 참조 번호 100으로 나타낸다. 네트워크(100)는 더욱 대형인 어플리케이션 시스템의 일부일 수 있다. 네트워크(100)는 웹 요청을 실행하는 클라이언트 머신에 접속되며, 또한 주 데이터베이스 및 웹 사이트가 네트워크 연결(107)을 거쳐 호스트되는 원본 서버(108)에 접속된 두 개의 에지 서버(109 및 110)를 포함한다. 원본 서버(108)는 데이터베이스(101), 어플리케이션 서버(102) 및 웹 서버(103)를 포함한다. 에지 서버(109, 110)는 각각 어플리케이션 서버(105) 및 웹 서버(106)를 포함한다. 그러나, 에지 서버는 원본 사이트에 저장되어진 전체 데이터베이스의 복제본을 갖지 않는다. 대신에, 새로운 에지 데이터 캐시(104)를 이용한다. 동적 컨텐트의 요청은 에지 서버에 의해 수신되어 에지 어플리케이션 서버(105) 내측에 호스트된 어플리케이션 구성 요소에 의해 처리되게 된다. 이들 구성 요소는 데이터 쿼리를 발행하고, 이것은 가능하다면, 에지 데이터 캐시(104)에 의해 인터셉트되어 로컬 데이터베이스로부터 처리되게 된다. 쿼리가 로컬 데이터베이스에 의해 처리될 수 없다면, 에지 데이터 캐시(104)는 원본 데이터베이스(101)에 요청을 전달하여 여기에서 결과를 검색하게 된다.
도 2를 참조하면, 에지 데이터 캐시는 보통 참조 부호 200으로 나타낸다. 에지 데이터 캐시(200)는 주요부(202)와 결합된 자바 서블릿(201)을 포함한다. 주요부(202)는 쿼리 분석기(205), 포함 체커(207), 쿼리 평가기(204), 캐시 인덱스(206), 로컬 저장소(208), 일관성 관리기(210), 및 리소스 관리기(209)와 신호 통신되게 결합된 JDBC 인터페이스(203)를 포함한다. 캐시 기능은 다음의 구성 요소에서 실행된다:
쿼리 분석기(205)는 SQL 스트링을, "쿼리 문장" 데이터 구조, 컬럼의 리스트를 식별하는 분석 트리, 타겟 테이블 뿐만 아니라, 쿼리에 의해 억세스되는 여러 절(clause)로 변환시킨다. 특히, WHERE 절은 AND-OR 정규 형태로 저장된 불린 (Boolean) 술어로 분석된다. 이것은 등가 및 포함 연산이 포함 체커에 의해 쿼리 술어쌍들에 실행될 수 있게 한다.
쿼리 포함 체커(207)는 새로운 쿼리의 결과가 이전에 캐시된 쿼리의 것 내에 포함되는지를 판정한다. 포함은 더 이전의 쿼리, 적당한 서브세트의 이전의 쿼리 또는 적당한 서브세트의 다수의 이전 쿼리의 합집합에 대해 정확히 일치하는 것으로 체크될 수 있다.
캐시 인덱스(206)는 포함 체킹을 제공한다. 포함 체킹은 쿼리 술어가 복합이거나 캐시된 쿼리의 세트가 너무 길 때 연산적으로 방대해질 수 있다. 모든 이전의 캐시된 쿼리에 대해 체킹하는 대신에 새로운 쿼리가 수신될 때, 이것은 동일한 테이블 및 컬럼에 대해 연산되는 쿼리에 대해서만 집중된다. 캐시 인덱스는 캐시된 쿼리를 테이블 이름 및 컬럼 이름에 기초하는 다레벨의 해시 테이블에 체계화한다.
쿼리 평가기(204)는 캐시의 중심 모듈로서 캐싱 로직을 포함한다. 억세스가 히트(hit) 또는 미스(miss)인지, 그리고 미스일 때 백 엔드(back-end)에 의해 리턴된 결과가 캐시에 삽입되었는지의 여부가 판정된다. 또한 캐시에서 미스인 쿼리를 재기록한 후에 이를 백 엔드로 보내어 데이터를 미리 페치하도록 하여 캐시 성능을 향상시킬 수 있다.
리소스 관리기(209)는 히트률 및 응답 회수에 대한 통계표를 보유하며, 캐시 컨피규레이션 파라미터를 보유한다. 이것은 컨피규레이션 파라미터를 변경하여 수집된 통계표가 이런 필요성을 나타내는 경우 특정 작업 부하에 적응시킬 수 있다.
캐시 저장소(208)는 결과를 저장한다. 캐시 미스시, 쿼리의 결과가 캐시 평가기에 의해 결정되어진 데로 로컬 데이터 기본 테이블에 저장된다. 본 명세서의 실시예는 하이브리드 물리적 저장 정책을 이용한다. 어떤 쿼리는 쿼리 결과 모델 당 하나의 테이블을 이용하지만, 다른 것은 백 엔드 기본 테이블의 부분적으로 위치된 로컬 복제본에 의해 물리적 저장소를 공유한다.
일관성 관리기(210)는 백 엔드 데이터베이스로부터 수신된 새로 고침 메시지에 응답하여 로컬 캐시된 데이터에 수정을 적용한다.
동작시, 쿼리는 자바 서블릿(201)과 같은 어플리케이션이나 어플리케이션 구성 요소로부터 발원된다. 쿼리는 데이터베이스 캐시(202)에 의해 수신된다. 구체적으로, 캐시 내의 JDBC 인터페이스 어댑터(203)가 어플리케이션과 인터페이스하는 곳이다. 인터페이스 어댑터는 자바 JDBC 표준에 의해 정의되어 이것이 요구하는 분류의 세트를 구현한다. "쿼리 문장"이 다음에 쿼리 평가기(204)에 전달된다. 쿼리 평가기는 쿼리를 로컬하게 또는 원격적으로 실행할지를 결정하고 캐시의 동작을 제어하는 모듈이다. 쿼리 문장을 수신하면, 쿼리 평가기는 쿼리 분석기(205)를 불러내어 수신된 문장을 분석한다. 분석기는 문장을 네 개의 카테고리 중 하나로 분류한다. 문장의 처리는 그 쿼리 카테고리에 따라 다르다.
이하 도 3을 참조하면, 쿼리 트리는 일반적으로 참조 부호 300으로 나타낸 다. 쿼리 트리(300)는 여러 쿼리 카테고리를 나타낸다. 캐시(301)에 의해 수신된 쿼리는 두 개의 분류, 포함 체크 가능한 쿼리(302) 및 비포함 체크 가능한 쿼리(303)로 체계화된다. 캐시된 포함 체크 가능한 쿼리는 그 결과가 캐시된 쿼리의 결과의 서브세트라고 증명될 수 있는 어느 후속 쿼리나 충족할 수 있다. 단일 테이블이나 복수의 테이블 조인에서 동작되지만 그룹 바이(group-by) 절이나 집합 연산자를 포함하지 않는 쿼리가 포함 체크 가능한 쿼리로 분류된다. 이들은 더욱 두 개의 카테고리, 완전 결과 또는 간단한 쿼리(304) 및 부분 결과 또는 Top-N 쿼리(305)로 분류될 수 있다.
비포함 체크 가능한 쿼리는 캐시될 수 있지만 SQL 스트링의 정확한 매칭을 이용하여 매칭을 실행한다. 이들은 또한 두 개의 카테고리: 집합(406) 및 복합(307) 쿼리로 분류된다. UDF, 서브 쿼리, 또는 그룹 바이 절을 이용하는 복합 쿼리는 포함 체커로 처리되지 않고 정확한 매치로 캐시된다. 이들의 선택 리스트에 MIN, MAX 및 AVG와 같은 집합 연산자를 이용하여 데이터를 집합하는 쿼리가 또한 정확한 매치로 캐시된다. 그러나, 집합된 쿼리(306)는 이들 선택 리스트에서 집합 연산자를 드롭하여 포함 체크 가능한 쿼리(302)로 변환될 수 있다. 이것은 예측되는 장점이 상당할 때 캐시에 의해 최적으로 이루어진다.
간단한 쿼리의 처리는 다음과 같이 진행된다. 간단한 쿼리는 그 결과가 기본 테이블의 로우와 컬럼의 서브세트인 것들이다. 따라서, 간단한 쿼리는 "GROUP BY" 절, 서브 쿼리, 또는 유저 정의 함수를 갖지 않는다. 이들은 Top-N 쿼리가 아니므로 기본 비교 자료를 이용하는 WHERE 절에 기초하여, 단일 테이블의 일부 또는 복수 테이블의 조인을 선택한다. 간단한 쿼리의 예는 다음과 같다:
SELECT employee.id FROM employee WHERE employee.age<25
도 4에 나타낸 바와 같이, 고위 처리 알고리즘은 보통 참조 부호 400으로 나타낸다. 고위 처리 알고리즘(400)은 캐시 히트나 캐시 미스의 처리를 제공한다. 쿼리를 수신하면, 캐시 인덱스를 이용하여 동일한 테이블 리스트 및 컬럼 리스트 상에 있는 쿼리를 검색한다. 다음에, 포함 체커를 불러내어 이 쿼리가 판정 블럭(410)에서 이전에 캐시된 쿼리에 포함되었는지를 성립한다.
캐시 히트인 경우, 기능 블럭(412)에서 쿼리는 로컬 캐시에서 실행되고 결과는 리턴된다. 기능 블럭(412)은 또한 캐시 저장소(414)에 쿼리를 보내고, 여기로부터 결과를 수신한다. 캐시 미스인 경우, 쿼리는 기능 블럭(416)에서 재기록된 후에 이를 백 엔드 서버에 보낸다. 다음의 최적화가 이루어진다. 먼저, 선택 리스트가 WHERE 절, 오더 바이(order-by) 절 및 해빙(having) 절에 언급된 컬럼을 포함하도록 확장된다. 이 확장의 목표는 캐시에서 히트될 앞으로의 쿼리를 실행할 수 있을 가능성을 최대화하기 위한 것이다. 둘째로, 일차 주요 컬럼이 또한 선택 리스트에 추가된다. 일차 주요 컬럼을 캐시하는 것은, 중첩된 결과를 갖는 다수의 쿼리가 동일한 기본 테이블의 동일한 로우를 검색하게 될 때, 중복된 로우가 캐시에 삽입되지 못하게 하는 데에 필요하다. 백 엔드에 의해 리턴된 결과는 미스 때 캐시에 항상 삽입되는 것은 아니다. 복잡한 히스토리 계통의 알고리즘이 판정 블럭(420)에서 이용되어 어느 쿼리가 기능 블럭(422)에서 캐싱의 가치가 있는지를 판정할 수 있다. 결과는 출력으로 제공되어 캐시 저장소(414)에 보내진다.
Top-N 쿼리의 처리는 다음과 같이 진행된다. Top-N 쿼리는 대개 오더 바이 절에 따라 분류된 결과 세트의 처음에서 특정 개수의 로우를 페치한다. 쿼리 포함 및 평가 알고리즘은 간단한 완전 결과의 쿼리와는 다르다. Top-N 쿼리는 페치(Fetch) 절을 드롭(drop)하여 간단한 쿼리로 변환된다. 상술한 바와 같이 이들 간단한 쿼리에 대해 포함이 실행된다. 최종 단계에서, 페치 절을 고려한다. (페치 절 없는) 기본 쿼리가 캐시 히트인 경우에도, 페치 절은 이를 캐시 미스로 만들 수 있다는 것에 주지해라. 예를 들어, 아래 두 개의 쿼리 Q1 및 Q2를 고찰해 본다.
Q1: SELECT id FROM item WHERE cost<15 ORDER BY cost FFNRO
Q2: SELECT id FROM item WHERE cost<5 ORDER BY cost FFNRO
FETCH FIRST 20 ROWS ONLY 알고리즘 ("FFNRO 20") 절이 두 쿼리에 없는 경우, 제2 쿼리의 결과가 제1 쿼리의 결과에 포함되는데, 즉 캐시 히트이다. 그러나, 절이 존재하는 경우에, 단순한 쿼리 문장의 조사로 캐시 히트가 보장되지 않는다. 따라서, Top-N 쿼리에 대한 포함 체킹의 처리시 두번째 단계는 캐시된 데이터에 대해 로컬 실행을 시도하는 것이다. 충분한 로우가 검색되면, 쿼리는 캐시 히트로 간주되고, 그렇지 않으면 캐시 미스로 간주된다. 이런 유형의 캐시 미스를 "부분 히트"로 부르는데, 결과의 일부만이 로컬 캐시에서 발견되기 때문이다.
포함 체크가 매칭 쿼리를 찾지 못하거나 결과 세트가 충분한 로우를 갖지 못한다면, 원본 쿼리 QN은 수정된 쿼리 QN'으로 변환되는데, 여기에서 페치 절의 N의 값은 더 큰 N'(N1=N*확장 계수)으로 대체된다. 예를 들어, 실시예에서 디폴트 계수 값은 2이므로, 요청된 로우의 수의 두배를 페치한다. 요청된 어플리케이션 보 다 더 많은 로우를 검색하게 되면, 나중의 "부분 히트" 쿼리, 즉 포함 체크 단계를 통과하지만 필요한 수의 로우를 찾지 못하는 쿼리의 경우를 줄이는 목적에 이르게 된다.
집합 쿼리의 처리는 다음과 같이 진행된다. 집합 쿼리는 이들의 선택 리스트에 집합 연산자 (예를 들어, MAX, MIN, AVG, SUM)를 가지고 아니면 포함 체크 가능이 된다. 다음의 쿼리, Q3를 고찰해 본다:
Q3: SELECT MAX(cost) FROM item WHERE id=10
히트에 대한 매칭은 두 단계로 진행된다. 먼저, SQL 스트링에 기초하여 Q3에 정확한 매치에 대한 체크가 행해지고 전체 결과 세트가 어플리케이션에 리턴된다. 다음에, 정확한 매치를 찾지 못하면 원본 쿼리 Q3는 집합 연산자를 제거함으로써 쿼리 Q4로 수정된다:
Q4: SELECT cost FROM item WHERE id=10
수정된 쿼리 Q4에 대해 포함 매치가 찾아지면, 원본 쿼리 Q3가 로컬 캐시에서 실행되어, 비용을 로컬하게 집합하여, 결과를 어플리케이션에 리턴한다. 미스시, 수정된 쿼리 Q4는 백 엔드에서 실행된다. 결과 세트 크기가 임계치 내에 있으면 결과는 대응 로컬 테이블에 저장되고 원본 쿼리는 로컬하게 실행된다. 이것은 다른 집합 연산자를 갖는 앞으로의 쿼리가 캐시로부터 서비스될 수 있게 한다. 결과 세트 크기가 너무 큰 것으로 판명되면, 원본 쿼리 Q3가 백 엔드로 보내지고 결과는 새로운 정확한 매치 테이블에 저장되게 된다. 이것은 정확히 동일한 집합 조건을 갖는 앞으로의 쿼리가 캐시로부터 서비스될 수 있게 한다. 이것은 캐시 크기 를 지나치게 증가시키지 않고도 캐시 히트를 증가시키는 목적에 이르게 한다.
복합 쿼리는 복합 절 (예를 들어, WHERE 절의 유저 정의 함수나 서브 쿼리) 때문에 또는 그룹 바이 절 때문에 포함 체크 가능하지 않다. 그룹 바이 절은 정확히 동일한 그룹 바이 절 및 WHERE 절을 갖는 쿼리에 의해서만 이용될 수 있는 집합 데이터를 형성한다. 이와 같이, 포함 체킹은 부적당하다. 대신에, 이 쿼리의 결과가 쿼리의 SQL 스트링으로 인덱스된 개별의 결과 테이블에 저장된다. 이 쿼리에 대한 포함 체크는 SQL 스트링의 정확한 매치에 기초한 것이다. 이 룩업 프로세스는 키로 SQL 스트링을 갖는 해시 테이블에 기초하기 때문에 매우 빠르다. 정확한 SQL 스트링이 캐시에 제출되면, 전체 테이블을 검색하기 위해서 대응하는 결과 테이블에서 로컬 쿼리가 실행된다 (즉, "SELECT*FORM LOCTAB"이 로컬하게 실행됨). 이런 쿼리는 에지 서버 상에서 최소한의 처리 시간을 가져 비용이 들지 않는다.
도 5를 참조하면, 로컬 저장소를 보통 참조 부호 500으로 나타낸다. 로컬 저장소(500)는 쿼리 결과가 로컬 캐시 저장소(501)에 어떻게 저장되는지를 보여준다. 저장소(501)는 두 부분, 하나는 복합 또는 정확한 매치 쿼리(502)의 저장용이고, 다른 하나는 포함 체크 가능한 쿼리(503)의 저장용으로 나누어진다. 정확한 매치 쿼리는 개별의 테이블에 저장되며, 캐시된 쿼리의 SQL 스트링과 사양이 매치되는 새로운 쿼리에 응답하는 데에만 이용된다. 예를 들어, 쿼리 Q5(504) 및 Q6(505)는 그 결과가 중첩되었는지의 여부에 상관 없이, 별개의 테이블에 저장된다.
포함 체크 가능한 쿼리는 공유 테이블에 저장된다. 동일한 기본 테이블에 대한 쿼리는 테이블의 동일한 로컬 복사본에 저장된다. 예를 들어, 도면은 동일한 테이블로부터 두 개의 쿼리 Q7 및 Q8가 "SELECT"되었다고 가정한다. 쿼리 Q7(506)에 의해 검색된 튜플(tuple)이 먼저 캐시에 삽입된다. 다음에, 제2 쿼리 Q8(507)에 의해 페치된 로우가 동일한 테이블에 삽입된다. Q8의 결과가 삽입될 때, 기존의 로우가 새로 페치된 값으로 수정된다. 따라서, 두 다른 쿼리에 의해 페치된 동일한 로우가 캐시에서 복제되지 않는다. 모든 쿼리가 주요 키를 페치하도록 재기록된 후에 이를 백 엔드 서버에 보내기 때문에 동일한 로우가 발견되게 된다.
다시 도 6을 참조하면, 캐시 테이블 구조를 보통 참조 부호 600으로 나타낸다. 캐시 테이블 구조(600)는 여기에서, "고용인"으로 부르는 동일한 데이터 테이블에 대한 특정한 두 쿼리의 예를 나타내며, 이들의 결과 데이터 구조(601, 602)가 에지 데이터베이스 캐시의 동일한 로컬 테이블(603)에 저장되는 방법을 나타낸다.
도 7에 나타낸 바와 같이, 일관성 프로토콜은 보통 참조 부호 700으로 나타낸다. 일관성 프로토콜(700)은 백 엔드 서버부(702)와 신호 통신하는 에지 서버부(701)를 포함한다. 에지 서버부(701)는 캐시 저장소(704)와 신호 통신하여 쿼리 결과를 삽입하고 쿼리를 실행하기 위한 DBProxy 유닛을 포함한다. 변경 APPLY 유닛(705)은 캐시 저장소(704)와 신호 통신하여 테이블을 새로 고친다.
백 엔드 서버부(702)는 DBProxy 유닛(703)과 신호 통신하여 쿼리를 수신하고 결과를 제공하기 위한 DBMS 유닛(706)을 포함한다. DBMS 유닛(706)은 더욱 다른 캐시 저장소(707)와 신호 통신하여 캐시 저장소(707)에 기록하고 이를 판독한다. 캐시 저장소(707)는 변경 CAPTURE 유닛(708)과 신호 통신하여 최근에 기록된 데이 터를 판독한다. 변경 CPATURE 유닛(708)은 다음에 변경 APPLY 유닛(705)과 신호 통신하게 결합되어 있어 메시지를 새로 고친다.
따라서, 데이터 일관성은 원본 서버에 의해 전달된 수정의 스트림에 동의하는 것으로 유지된다. 종래의 구체화 뷰 방법은 기본 데이터의 변경 ("델타")에 대해 뷰 정의를 재실행하는 것으로 캐시된 뷰를 수정한다. 그러나, 에지 데이터 캐시는, 캐시할 쿼리 ("뷰")의 수가 대다수일 가능성이 있기 때문에, 더욱 효율적인 기구를 필요로 하게 된다. 캐시된 데이터가 부분적으로 위치된 백 엔드 테이블의 복사로 보유되기 때문에, 원본에서 기본 테이블에 커밋(commit)된 변경은 쿼리의 재실행의 필요 없이, 단순히 캐시된 버전 "그대로" 전달될 수 있다. 기본 테이블의 수정, 삭제, 및 삽입 (UDI)는 에지에서 부분적으로 위치된 카운터파트에 전달 및 적용되게 된다. 캐시에 대해 실행될 앞으로의 쿼리는 이들 새로 전달된 변경으로부터 매칭 튜플을 검색하게 된다. 이 방법은 대부분의 웹 환경에 통상적인 데이터를 느리게 변경시킨다고 예상되고, 캐시된 뷰가 수정되는 방법을 판정하는 처리 오버헤드를 저하시키기 위해서 잠재적으로 불필요한 데이터 전달과 트레이드오프된다. 그러나, 테이블이 커다란 수정 작업 부하를 안고 있을 때, 캐시 리소스 관리기는 특정 기간 동안 로컬 복사를 디세이블시킬 수 있다.
에지 어플리케이션에 의해 발해진 리드 온리 쿼리는 가능할 때에는 캐시로 충족된다. 수정 트랜잭션은 이들을 로컬 캐시에 먼저 적용하지 않고, 항상 실행을 위해 백 엔드 데이터베이스로 라우트된다. 에지 데이터 캐시가 대규모의 배치로 설계되기 때문에, 일관성 프로토콜은 가능한 한 원본으로부터 느슨하게 결합되어야 한다. 따라서, 리소스가 더욱 자연스럽게 규모되는 경우, 에지 캐시에서는 캐시 일관성을 유지하는 부담이 가능한 한 떨어지게 된다. 백 엔드 서버는 오직 주기적 수정 전달, 즉 개별의 프로세스나 머신에 오프로드될 수 있는 작업을 책임져야 하다. 고 비용을 유도하여 캐시 효율성을 제한할 수 있는 일관성 보장을 제공하면서, 즉각적인 수정 가시성 및 델타 일관성과 같은 몇 중요한 일관성 보장을 유지할 수 있는 방법이 이제 기재된다. 본 명세서는 원본에서 테이블에 대한 모든 UDI를 캡쳐하여 이들을 "새로 고침 메시지"로 패키지하여 에지 캐시에 전달하는 데이터 전달기에 의존한다. 데이터 변경은 이들의 트랜잭션 식별자에 의해 태그된 에지에 전달되어 트랜잭션 커밋 순서로 에지 캐시에 적용된다. 원본 사이트에서 커밋된 트랜잭션의 효과를 반영하는 들어오는 UDI의 스트림이, 로컬 캐시된 테이블에 적용된다.
UDI는 타임스탬프 순서로 캐시에 전달되어 적용된다. 이 섹션에서 이용되는 모든 타임스탬프는 백 엔드 서버측 커밋 타임스탬프를 말하며, 캐시의 튜플 값은 원본으로부터의 마지막 전달 메시지의 타임스탬프에 대응하는 데이터베이스의 상태를 반영해야 한다. 더욱 상세하게, 전달 메시지의 타임스탬프는 그 메시지에 포함된 수정 트랜잭션의 최대 타임스탬프이다. 로컬 테이블이 전달 메시지에 의해서 뿐만 아니라, 미스시의 쿼리 결과 삽입에 의해서도 수정될 수 있기 때문에 델타 일관성을 유지하는 데에 있어서의 문제가 발생하게 된다.
일관성 속성의 보장. 캐시는 에지 어플리케이션, 즉 델타 일관성, 단조 전환, 및 즉각적 수정 가시성에 대한 몇가지 중요한 일관성 속성을 보장한다. 캐시 는 어플리케이션에게는 실제의 백 엔드 데이터베이스로서 보인다. 그러나, 그 컨텐츠는 보통 백 엔드 데이터베이스에 저장된 것과 같은 현재의 것이 아니다. 따라서, 캐시는 현재 상태와 다를 수 있는 상태를 어플리케이션에 반영하기 때문에 데이터베이스의 임의의 상태를 "익스포트한다(export)". 델타 일관성의 속성은 캐시에 의해 익스포트된 데이터베이스의 상태가 이전 시점에서의 데이터베이스의 과거 상태에 항상 대응하는 것을 필요로 한다. 익스포트된 상태와 실제 상태 간의 래그가 또한 제한된다. 단조 상태 변환의 속성은 캐시에 의해 익스포트된 데이터베이스의 상태가 시간이 전진하는 것만을 의미한다. 즉각적인 수정 가시성의 속성은 어플리케이션이 수정을 커밋하고 나중에 쿼리를 발하는 경우, 쿼리가 수정 (및 모든 이전의 수정)의 효과를 관찰하는 것을 필요로 한다.
델타 일관성 및 단조 전환의 보장. 먼저, 캐시가 일분 전의 데이터베이스 상태와 일치한다고 가정한다. 캐시에서 손실되어 원본에서 실행된 새로운 쿼리의 결과가 삽입되면, 캐시는 오래된 데이터와 새로운 데이터의 혼합을 포함할 수 있다. 델타 일관성은 캐시된 데이터가 데이터베이스의 단일의 구 버전과 항상 일치하는 것을 필요로 한다. 쿼리가 원본에서 극소량 실행된다고 가정한다. 쿼리가 손실되어 원격 실행되면, 서버는 쿼리가 실행될 때 그 마지막 커밋 타임스탬프, tq를 그 결과와 함께 리턴한다.
도 8을 참조하여, 쿼리 처리 알고리즘을 보통 참조 부호 800으로 나타낸다. 쿼리 처리 알고리즘(800)은 일관성을 고려하며, 쿼리 포함 체크에 기초하여 캐시 히트를 등록하기 위한 기능 블럭(801)을 포함한다. 기능 블럭(801)은 히트가 발생 했는지를 판정하기 위해 판정 블럭(802)으로 제어를 통과시킨다. 히트가 발생하면, 기능 블럭(803)으로 제어가 통과되어 공유된 캐시의 록(lock), 쿼리의 로컬 실행 및 공유 캐시의 언록(unlock)를 실행한다. 그러나, 히트가 블럭(802)에서 발생하지 않는 경우, 기능 블럭(804)으로 제어가 통과되어 쿼리를 원격 실행하고, 다음에 제어를 판정 블럭(805)으로 통과시킨다. 블럭(805)은 원격 실행된 쿼리가 성공적이지 않았는지를 판정한다. 성공적이지 않다면, 리턴 블럭(806)으로 제어가 통과되어 캐시된 결과 "rc"를 리턴한다. 성공적이면, 제어는 결과가 오직 부분적인지를 판정하는 판정 블럭(807)으로 통과된다. 부분적이면, 기능 블럭(808)으로 제어가 통과되어 캐시를 배타적으로 록하고, 결과를 결과 세트에 삽입하고, 서버로부터의 부가의 정보를 전달하고, 캐시를 언록한다. 기능 블럭(808)은 리턴 블럭(809)으로 제어를 통과시켜 결과 세트 "rs"를 리턴한다. 블럭(807)의 결과가 폴스(false) 또는 아니오인 경우, 제어는 리턴 블럭(809)으로 직접 통과된다.
동작시, 결과 삽입은 블럭 807에서 쿼리의 타임스탬프를 원본 서버로부터 수신된 마지막 전달 메시지의 타임스탬프, cache_ts와 비교하는 것으로 시작된다. 쿼리 및 캐시 타임스탬프는 각각 도면에서 긴 이름, query_ts("tq") 및 cache_ts("tc")으로 및 다른 데에서는 길거나 짧은 이름으로 언급되는 것에 주지해라. query_ts가 cache_ts 보다 더 큰 경우, 쿼리는 캐시의 것 보다 더욱 최근의 상태를 관찰한다. 이런 통상의 경우, 블럭 808에서 미스의 결과가 먼저 삽입되고, 계류중인 전달 메시지는 원본 서버에서 빼내어져 전체 캐시를 더 나중으로 빠르게 전진시킨다. 마지막으로, 쿼리는 인덱스에 추가된다. 그러나, cache_ts가 query_ts 보다 더 큰 경우, 미스의 결과를 즉각 삽입하는 것은 캐시된 데이터를 과거 값으로 돌아가게 하여, 전달 메시지에 의해 적용된 변경을 역전시켜 단조 조건에 실패할 수 있다. 이것이 흔하지 않는 경쟁 조건(race condition)이기 때문에, 이런 경우 결과의 삽입은 스킵된다. 이것은 후속 미스 중 하나가 결과를 삽입하는 데에 성공하고 캐시 효율성을 심각하게 떨어뜨리지 않을 때 까지, 쿼리를 캐시하는 것을 보통 지연시킨다. 블럭 808에서 propagate_from_server()의 부작용으로, cache_ts가 증가될 수 있다는 것에 주지해라.
이하 도 9를 참조하여, 캐시에 결과를 삽입하는 알고리즘을 보통 참조 부호 900으로 나타낸다. 루핑 블럭(901)은 쿼리 결과의 각 튜플에 대해 루프를 실행한다. 블럭(901)의 루프는 튜플이 캐시 내에 있는지를 결정하기 위한 판정 블럭(902)를 포함하다. 튜플이 캐시 내에 있는 경우, 제어는 기능 블럭(903)으로 통과되어 튜플을 수정한다. 튜플이 캐시 내에 없으면, 제어는 기능 블럭(904)으로 통과하여 튜플을 삽입한다. 따라서, 동작시, 캐시에 결과 세트를 삽입하는 것은 다음과 같이 진행된다: 캐시에 결과 세트를 삽입할 때, 블럭(903)에서 기존의 로우는 새로운 값으로 덮어쓰기되는 반면, 블럭(904)에서 비기존의 로우는 테이블에 삽입된다.
도 10에 나타낸 바와 같이, 수정 트랜잭션을 실행하기 위한 알고리즘은 보통 참조 부호 1000으로 나타낸다. 기능 블럭(1001)은 결과 "rc"에 대해 원격 쿼리를 실행하여, 판정 블럭(1002)으로 제어를 통과시킨다. 쿼리가 성공적이면, 블럭(1002)은 리턴 블럭(1003)으로 제어를 통과시켜 결과 "rc"를 리턴한다. 쿼리가 성 공적이지 않으면, 블럭(1002)은 기능 블럭(1004)으로 제어를 통과시켜 서버로부터 데이터를 전달한다. 블럭(1004)은 리턴 블럭(1005)으로 제어를 통과시켜 결과 "rc"를 리턴한다.
따라서 즉각적인 수정 가시성이 보장된다. 에지 어플리케이션에 의해 캐시에 서브밋된 수정 트랜잭션은 원본 데이터베이스(1001)로 라우트된다. 더구나. 수정 트랜잭션이 완료된 후에, 수정의 효과는 이들을 원본(1004)으로부터 꺼낸 후에 어플리케이션에 리턴하는 것으로 신속하게 페치될 수 있다.
캐시 공간 오버헤드는 캐시 교체로 조절된다. 공간 오버헤드를 제한하고 보통 제한된 에지 리소스의 이용을 최적화하기 위해서, 에지 데이터 캐시는 데이터 일관성을 보전하면서, 캐시로부터 비사용 데이터를 안전하게 축출하는 백그라운드 가비지 컬렉션 (background garbage collection) 프로세스에 좌우된다. 특히, 캐시 조건의 목표는 제한된 양의 가용 공간에 대해 캐시의 장점을 최대화하는 것이다. 종래의 파일 및 메모리 페이지의 교체와 비교하여, 다수의 쿼리에 대해 하위 로우를 공유할 수 있다.
캐시 교체는 로컬 데이터베이스의 공간 이용이 고 워터마크 ("HWM") 값에 이를 때 트리거된다. 다음에 공간이 충분히 넓어 저 워터마크 ("LWM") 값 이하가 될 때 까지 교체는 시작된다. 교체는 로컬 테이블에서 더 많은 로우를 삽입하거나 새로운 테이블을 형성할 공간이 없는 쿼리 미스의 요구시 트리거되지 않는다. 교체는 백그라운드 프로세스로서 쿼리 서비스 및 수정 동작과 동시에 진행된다고 예측될 수 있다.
도 11을 참조하면, 캐시 소거 알고리즘은 보통 참조 부호 1100으로 나타낸다. 알고리즘(1100)은 새로운 컬럼의 "accessedFlag'을 추가하도록 테이블을 확장하기 위한 기능 블럭(1101)을 포함한다. 블럭(1101)은 기능 블럭(1102)으로 제어를 통과시켜 'accessedFlag'를 로컬 테이블의 모든 로우에 대해 폴스로 리세팅한다. 블럭(1102)은 기능 블럭(1103)으로 제어를 통과시켜 캐시에 남게 되는 쿼리의 세트 'S'를 판정한다. 기능 블럭(1103)은 다음에 기능 블럭(1104)으로 제어를 통과시켜 세트 'S'에서의 모든 쿼리를 재실행하고 선택된 로우의 'accessedFlag'를 트루(true)로 세팅한다. 다음에 블럭(1104)은 기능 블럭(1105)으로 제어를 통과시켜 'accessedFlag'이 폴스인 모든 로우를 삭제한다.
캐시 소거의 알고리즘(1100)은 그룹 교체로 불린다. 이 알고리즘은 히트, 미스 또는 수정 전달시 어떤 오버헤드도 실행되거나 추가되지 않는 간단한 것이다. 교체 정책에 기초하여, "희생" 쿼리의 세트가 블럭(1103)에서 캐시로부터 소거된 것으로 마크된다. "희생" 쿼리에만 속하는 비중첩 로우가 적당히 마크되는 것을 유지하기 위해서, 다음의 단계가 실행된다. 먼저, 로컬 테이블의 형성 동안 정의된 제어 컬럼으로 실현되는 억세스된 플랙은 블럭(1102)에서 모든 캐시된 로우와 연결되어 폴스로 세트된다. 다음에, 비희생 쿼리는 블럭(1104)에서 백그라운드에서 실행된다. 이 백그라운드 실행은 포어그라운드(foreground) 쿼리의 성능에 영향을 주지 않도록 연장된 기간 동안 일어날 수 있다. 쿼리가 실행될 때 마다, 제어 컬럼의 대응 엔트리는 선택된 로우에 대해 트루로 세트된다. 이 실행 사이클의 종료시, 제어 컬럼 (억세스된 플랙)이 여전히 폴스인 로우가 블럭(1105)에서 안전하게 삭제될 수 있다. 가비지 콜렉션 사이클이 실행을 시작한 후 캐시 미스 또는 일관성 관리자에 의해 삽입 또는 수정된 로우의 삭제를 방지하기 위해서, 로컬 테이블에 수정 또는 삽입된 로우에 대한 제어 컬럼이 세트된다.
본 명세서의 실시예는 일 관점에서 두 분야: 쿼리 응답 캐싱의 장점, 특히 관리의 용이성 및 작업 부하 또는 리소스 유용성의 변경에 대한적응성; 및 기본 테이블 복제의 장점, 특히 넌리던던트 데이터 저장의 공간 효율성 및 효율적인 수정 계통의 일관성 프로토콜을 지원하는 능력에 있어서 최상을 성취할 수 있다.
따라서, 본 발명의 형태는 이전 쿼리의 결과를 동적으로 캐싱할 때 캐싱 정책을 이용함으로써, 적어도 하나의 원격 서버에 대한 데이터베이스 쿼리를 충족하는 데에 로컬 머신을 이용한다는 것이다. 또 다른 본 발명의 형태는 로컬 데이터베이스가 로컬 머신과 연결되며, 공유 테이블에 복수의 쿼리 결과를 저장하는 데에 이용된다는 것이다. 또 다른 본 발명의 형태는 쿼리 술어에 대해 동작하는 포함 체커를 이용함으로써, 새로운 쿼리를 만족할 때 로컬하게 저장된 쿼리 결과를 이용하는 것이다. 포함 체커는 쿼리 술어에 의해 정의된 바와 같이, 새로운 쿼리에 의해 요청된 데이터가 이전 쿼리의 술어의 합집합에 의해 설명된, 복수의 캐시된 쿼리 결과에서 캐시된 데이터 세트에 논리적으로 포함되는 것을 확실히 한다.
본 발명의 또 다른 형태는 에지 캐시에 저장된 데이터가 가능할 때 마다, 원본 데이터베이스에 정의된 테이블의 "부분 복제"로 체계화된다는 것이다. 원본 서버로부터 수신된 쿼리 결과는 로컬 데이터베이스에 삽입된다. 동일한 기본 테이블에 대해 행해진 쿼리의 결과는 동일한 로컬 캐시된 버전의 기본 테이블에 삽입된 다. 본 발명의 또 다른 형태로는 결과가 기본 테이블의 로우 및 컬럼의 간단한 서브세트가 아닌, 서브 쿼리, 집합 또는 유저 정의 함수를 포함하는 쿼리와 같은 복합 쿼리의 결과는 결과 당 하나씩 복수의 테이블로서 로컬 저장된다는 것이 있다.
본 발명의 또 다른 형태의 실시예는 본 발명이 투명하므로 어플리케이션의 변경을 필요로 하지 않는다는 것이다. 또한 캐싱 로직이 데이터베이스 외에 위치하기 때문에 이것은 백 엔드 또는 로컬 데이터베이스와 호환 가능하여 데이터베이스 서버의 변경을 필요로 하지 않는다. 본 발명의 다른 형태의 실시에는 로컬 캐시된 데이터의 일관성이 원본에서 기본 테이블에 발생한 변경을 에지 캐시에 전달하고, 들어오는 쿼리의 처리시 일관성 인식 알고리즘을 이용하는 것으로 유지된다는 것이다. 본 발명의 또 다른 형태의 실시예는 캐시가 일관성 또는 정확성을 떨어뜨리지 않고, 로컬 데이터베이스로부터 덜 유용한 쿼리 결과를 축출하여 로컬하게 이용되는 공간양을 조정할 수 있다는 것이다.
본 발명의 이들 및 다른 형태 및 장점은 여기에 기재된 것에 기초하는 관련 기술의 당업자에 의해서는 용이하게 인식될 수 있다. 본 명세서의 개시는 하드웨어, 소프트웨어, 펌웨어, 특수 목적의 프로세서 및 그 조합의 여려 형태로 구현될 수 있다.
본 명세서의 개시는 예를 들어, 하드웨어와 소프트웨어의 조합으로 구현될 수 있다. 더구나, 소프트웨어는 프로그램 저장 유닛에서 명백하게 구현되는 펌웨어로 실현되는 것이 바람직하다. 소프트웨어는 적합한 아키텍쳐를 포함하는 머신에 업로드되며 이에 의해 실행될 수 있다. 바람직하게, 머신은 하나 이상의 중앙 처리 유닛 ("CPU"), 랜덤 억세스 메모리 ("RAM) 및 입/출력 ("I/O") 인터페이스 등의 하드웨어를 갖는 컴퓨터 플랫폼에서 실현된다. 컴퓨터 플랫폼은 또한 운영 시스템 및 마이크로명령 코드를 포함할 수 있다. 여기에 기재된 여러 프로세스 및 기능은 마이크로명령 코드의 일부나 소프트웨어의 일부, 또는 그 조합일 수 있으며, 이들은 하드웨어로 실행될 수 있다. 부가하여, 여러 다른 주변 유닛이 부가의 데이터 저장 유닛과 같은 컴퓨터 플랫폼에 접속될 수 있다.
첨부 도면에서 나타낸 구성 시스템 소자 및 방법 중 약간은 소프트웨어로 실현되는 것이 바람직하기 때문에, 시스템 구성 요소나 프로세스 기능 블럭 간의 실제적인 접속은 본 발명이 프로그램되는 방법에 따라 다를 수 있다는 것이 이해되어야 한다. 이 개시된 바에 따라, 당업자라면 본 발명의 이들 및 유사한 실현 및 구성을 생각할 수 있을 것이다.
첨부한 도면을 참조하여 실시예를 설명하고 있지만, 본 발명은 바로 이 실시예에만 제한되는 것이 아니고, 본 발명의 정신이나 영역에서 벗어나지 않고 당업자에 의해서라면 여러가지 변경 및 수정을 실행할 수 있다는 것이 이해될 것이다. 이런 변경 및 수정은 첨부한 청구범위에 기재되어진 본 발명의 영역 내에 포함되는 것이다.

Claims (26)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 로컬 어플리케이션에 의해 실행되는 쿼리에 기초하는 데이터의 동적 캐싱 및 데이터베이스 서버로부터 검색되는 쿼리 결과 세트의 델타-일관성(delta-consistency)을 유지하기(ensuring) 위한 로컬 서버를 포함하는 시스템에 있어서,
    상기 시스템은,
    원격 서버의 이전 데이터베이스 쿼리의 결과를 에지 캐시(edge cache)에 동적으로 캐싱하기 위한 수단과,
    로컬 데이터베이스를 상기 로컬 서버와 연결시키기 위한 수단과,
    상기 로컬 데이터베이스내의 공유 테이블에 다수의 캐싱 결과를 저장하기 위한 수단과,
    상기 로컬 서버로 새로운 데이터베이스 쿼리가 충족될 때 상기 다수의 캐싱 결과를 이용하기 위한 수단과,
    백 엔드 테이블(back-end tables)에 적용된 수정(updates), 삭제(deletes) 그리고 삽입(inserts)을 포함하며 원본 서버에 의해 전달되는 새로 고침 메시지(refresh message)에 상기 에지 캐시를 동의시키기 위한 수단과,
    상기 새로 고침 메시지가 수신될 때마다 로컬 캐시된 테이블에 상기 수정, 삭제 및 삽입을 적용시키기 위한 수단과,
    상기 새로 고침 메시지에 효과가 포함되어 있는 임의의 트랜잭션의 최대 타임스탬프와 동일한 새로 고침 메시지와 타임스탬프(timestamp)를 연결시키기 위한 수단과,
    상기 에지 캐시에 적용된 마지막 새로 고침 메시지의 타임스탬프와 동일한 이전 쿼리의 결과를 타임스탬프 세트와 연결시키기 위한 수단과,
    새로운 쿼리 타임스탬프를 새로운 쿼리와 연결시키기 위한 수단과,
    상기 새로운 쿼리 타임스탬프를 상기 타임스탬프 세트와 비교하기 위한 수단과,
    상기 새로운 쿼리 타임스탬프가 상기 타임스탬프 세트를 초과하는 경우 상기 새로운 쿼리의 응답을 삽입하기 위한 수단과,
    상기 새로운 쿼리 타임스탬프가 상기 타임스탬프 세트를 초과하는 경우 상기 데이터베이스 서버로부터 계류중인 새로 고침 메시지를 검색하기 위한 수단
    을 더 포함하는 시스템.
  5. 로컬 어플리케이션에 의해 실행되는 쿼리에 기초하는 데이터의 동적 캐싱 및 데이터베이스 서버로부터 검색되는 쿼리 결과 세트의 델타-일관성(delta-consistency)을 유지하기(ensuring) 위한 방법을 실행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체에 있어서,
    상기 방법은,
    원격 서버의 이전 데이터베이스 쿼리의 결과를 에지 캐시(edge cache)에 동적으로 캐싱하는 단계와,
    로컬 데이터베이스를 상기 로컬 서버와 연결시키는 단계와,
    상기 로컬 데이터베이스내의 공유 테이블에 다수의 캐싱 결과를 저장하는 단계와,
    상기 로컬 서버로 새로운 데이터베이스 쿼리가 충족될 때 상기 다수의 캐싱 결과를 이용하는 단계와,
    백 엔드 테이블(back-end tables)에 적용된 수정(updates), 삭제(deletes) 그리고 삽입(inserts)을 포함하며 원본 서버에 의해 전달되는 새로 고침 메시지에 상기 에지 캐시를 동의시키는 단계와,
    상기 새로 고침 메시지가 수신될 때마다 로컬 캐시된 테이블에 상기 수정, 삭제 및 삽입을 적용시키는 단계와,
    상기 새로 고침 메시지에 효과가 포함되어 있는 임의의 트랜잭션의 최대 타임스탬프와 동일한 새로 고침 메시지와 타임스탬프를 연결시키는 단계와,
    상기 에지 캐시에 적용된 마지막 새로 고침 메시지의 타임스탬프와 동일한 이전 쿼리의 결과를 타임스탬프 세트와 연결시키는 단계와,
    새로운 쿼리 타임스탬프를 새로운 쿼리와 연결시키는 단계와,
    상기 새로운 쿼리 타임스탬프를 상기 타임스탬프 세트와 비교하는 단계와,
    상기 새로운 쿼리 타임스탬프가 상기 타임스탬프 세트를 초과하는 경우 상기 새로운 쿼리의 응답을 삽입하는 단계와,
    상기 새로운 쿼리 타임스탬프가 상기 타임스탬프 세트를 초과하는 경우 상기 데이터베이스 서버로부터 계류중인 새로 고침 메시지를 검색하는 단계
    를 포함하는, 컴퓨터로 읽을 수 있는 기록매체.
  6. 로컬 서버가 적어도 하나의 원격 서버에 대한 데이터베이스 쿼리를 충족하도록 하는 방법에 있어서,
    상기 적어도 하나의 원격 서버의 이전 데이터베이스 쿼리의 결과를 에지 캐시에 동적으로 캐싱하는 단계와,
    로컬 데이터베이스를 상기 로컬 서버와 연결시키는 단계와,
    상기 로컬 데이터베이스내의 공유 테이블에 다수의 캐싱 결과를 저장하는 단계와,
    상기 로컬 서버로 새로운 데이터베이스 쿼리가 충족될 때 상기 다수의 캐싱 결과를 이용하는 단계를 포함하며,
    다수의 캐싱 결과를 저장하는 상기 단계는,
    공유 기본 테이블의 단일 데이터베이스 테이블에 대해 간단한 쿼리 및 Top-N 쿼리의 결과를 삽입하는 단계와,
    조인 쿼리의 결과를 공유 조인 테이블에 저장하는 단계와,
    상기 공유 기본 테이블 및 상기 공유 조인 테이블을 포함하는 공유 테이블 저장소를 형성하는 단계와,
    별개의 테이블에 쿼리 결과 당 하나씩 복합 쿼리의 결과를 저장하는 단계와,
    다수의 상기 별개의 테이블로부터 정확한 매치 저장소를 형성하는 단계를 포함하는 방법.
  7. 제6항에 있어서,
    간단한 쿼리 및 Top-N 쿼리의 결과를 삽입하는 상기 단계는,
    간단한 쿼리가 기본 테이블에 먼저 수신될 때마다 원본 서버내의 기본 테이블에 대응하도록 상기 에지 캐시내에 단일 로컬 테이블을 생성하는 단계와,
    상기 단일 로컬 테이블에 상기 단순한 쿼리의 결과를 삽입하는 단계와,
    상기 단일 로컬 테이블에 상기 기본 테이블에 대한 모든 후속하는 단순한 쿼리들의 결과를 삽입하는 단계를 포함하는 방법.
  8. 제6항에 있어서,
    조인 쿼리의 결과를 공유 조인 테이블에 저장하는 상기 단계는,
    각각의 조인 조건 및 조인 쿼리내의 테이블 리스트에 대응하도록 상기 에지 캐시내에 로컬 조인 테이블을 생성하는 단계와,
    동일한 테이블 리스트 및 동일한 조인 조건을 갖는 모든 후속하는 조인 쿼리의 결과를 상기 로컬 조인 테이블에 삽입하는 단계를 포함하는 방법.
  9. 삭제
  10. 로컬 서버가 적어도 하나의 원격 서버에 대한 어플리케이션으로부터의 데이터베이스 쿼리를 충족하도록 하는 방법에 있어서,
    상기 적어도 하나의 원격 서버의 이전 데이터베이스 쿼리의 결과를 정확한 매치 저장소를 포함하는 에지 캐시에 동적으로 캐싱하는 단계와,
    로컬 데이터베이스를 상기 로컬 서버와 연결시키는 단계와,
    상기 로컬 데이터베이스내의 공유 테이블 저장소를 포함하는 공유 테이블에 다수의 캐싱 결과를 저장하는 단계와,
    상기 로컬 서버로 새로운 데이터베이스 쿼리가 충족될 때 상기 다수의 캐싱 결과를 이용하는 단계를 포함하며,
    다수의 캐싱 결과를 이용하는 상기 단계는,
    상기 새로운 쿼리가 복합인 경우 상기 정확한 매치 저장소에서 상기 새로운 쿼리에 대한 응답을 검색하는 단계와,
    상기 새로운 쿼리가 복합이 아닌 경우 상기 공유 테이블 저장소로부터 상기 새로운 쿼리에 대한 응답을 부선택(sub-selecting)하는 단계
    중 적어도 하나를 포함하며,
    새로운 쿼리에 대한 응답을 검색하는 상기 단계는,
    상기 새로운 쿼리의 SQL 스트링이 상기 정확한 매치 저장소에서 발견되는 경우 SQL 스트링에 대응하는 상기 에지 캐시내의 쿼리 결과를 상기 어플리케이션에 리턴하는 단계와,
    상기 새로운 쿼리의 SQL 스트링이 상기 정확한 매치 저장소에서 발견되지 않는 경우 상기 새로운 쿼리를 상기 원격 서버에 보내는 단계와,
    상기 새로운 쿼리의 SQL 스트링이 상기 정확한 매치 저장소에서 발견되지 않는 경우 수신된 쿼리 결과를 상기 정확한 매치 저장소에 삽입하는 단계와,
    상기 새로운 쿼리의 SQL 스트링이 상기 정확한 매치 저장소에서 발견되지 않는 경우 상기 에지 캐시내의 상기 수신된 쿼리 결과를 상기 새로운 쿼리의 SQL 스트링과 연결시키는 단계를 포함하는 방법.
  11. 로컬 서버가 적어도 하나의 원격 서버에 대한 어플리케이션으로부터의 데이터베이스 쿼리를 충족하도록 하는 방법에 있어서,
    상기 적어도 하나의 원격 서버의 이전 데이터베이스 쿼리의 결과를 정확한 매치 저장소를 포함하는 에지 캐시에 동적으로 캐싱하는 단계와,
    로컬 데이터베이스를 상기 로컬 서버와 연결시키는 단계와,
    상기 로컬 데이터베이스내의 공유 테이블 저장소를 포함하는 공유 테이블에 다수의 캐싱 결과를 저장하는 단계와,
    상기 로컬 서버로 새로운 데이터베이스 쿼리가 충족될 때 상기 다수의 캐싱 결과를 이용하는 단계를 포함하며,
    다수의 캐싱 결과를 이용하는 상기 단계는,
    상기 새로운 쿼리가 복합인 경우 상기 정확한 매치 저장소에서 상기 새로운 쿼리에 대한 응답을 검색하는 단계와,
    상기 새로운 쿼리가 복합이 아닌 경우 상기 공유 테이블 저장소로부터 상기 새로운 쿼리에 대한 응답을 부선택(sub-selecting)하는 단계
    중 적어도 하나를 포함하며,
    새로운 쿼리에 대한 응답을 부선택하는 상기 단계는,
    상기 새로운 쿼리의 결과 세트의 결과가 포함 체커로 캐시된 쿼리 결과의 합집합에 포함된 것을 증명하고자 하는 단계와,
    상기 증명하고자 하는 단계가 성공적으로 완료된 경우 상기 새로운 쿼리에 언급된 테이블을 로컬 테이블 이름으로 대체하는 단계와,
    상기 증명하고자 하는 단계가 성공적으로 완료된 경우 상기 공유 테이블 저장소에 대해 상기 새로운 쿼리를 평가하는 단계와,
    상기 새로운 쿼리가 Top-N 쿼리인 경우 상기 에지 캐시로부터 수신된 로우의 수를 계수하여, 이것이 상기 어플리케이션에 의해 요청된 로우의 수를 초과하지 않는 경우, 새로운 쿼리를 재기록하고 재기록된 쿼리를 형성하여 처리하고, 상기 원격 서버에 상기 재기록된 쿼리를 보내어 상기 원격 서버로부터 수신된 결과를 상기 공유 테이블 저장소에 저장하고, 상기 재기록된 쿼리의 술어를 상기 공유 테이블 저장소의 인덱스에 추가하고, 상기 공유 테이블 저장소에 대해 상기 새로운 쿼리를 평가하고, 상기 평가 단계의 결과를 상기 어플리케이션에 리턴하는 단계를 포함하는 방법.
  12. 삭제
  13. 삭제
  14. 로컬 서버가 적어도 하나의 원격 서버에 대한 데이터베이스 쿼리를 충족하도록 하는 방법에 있어서,
    상기 적어도 하나의 원격 서버의 이전 데이터베이스 쿼리의 결과를 에지 캐시에 동적으로 캐싱하는 단계와,
    로컬 데이터베이스를 상기 로컬 서버와 연결시키는 단계와,
    상기 로컬 데이터베이스내의 공유 테이블에 다수의 캐싱 결과를 저장하는 단계와,
    상기 로컬 서버로 새로운 데이터베이스 쿼리가 충족될 때 상기 다수의 캐싱 결과를 이용하는 단계와,
    이전 쿼리들의 결과의 델타-일관성을 유지하는 단계를 포함하며,
    델타-일관성을 유지하는 상기 단계는,
    백 엔드 테이블(back-end tables)에 적용된 수정(updates), 삭제(deletes) 그리고 삽입(inserts)을 포함하며 원본 서버에 의해 전달되는 새로 고침 메시지에 상기 에지 캐시를 동의시키는 단계와,
    상기 새로 고침 메시지가 수신될 때마다 로컬 캐시된 테이블에 상기 수정, 삭제 및 삽입을 적용시키는 단계와,
    임의의 공유 조인 테이블 또는 새로 고침 메시지에서 변경된 것으로 참조되는 정확한 매치 저장소의 테이블을 무효화하는 단계와,
    상기 새로 고침 메시지에 효과가 포함되어 있는 임의의 트랜잭션의 최대 타임스탬프와 동일한 새로 고침 메시지(a refresh message)와 새로 고침 메시지 타임스탬프(a refresh message timestamp)를 연결시키는 단계와,
    상기 에지 캐시에 적용된 마지막 새로 고침 메시지의 타임스탬프와 동일한 이전 쿼리의 결과를 캐시된 타임스탬프 세트와 연결시키는 단계와,
    새로운 쿼리 타임스탬프를 새로운 쿼리와 연결시키는 단계와,
    상기 새로운 쿼리 타임스탬프를 상기 캐시된 타임스탬프 세트와 비교하는 단계와,
    상기 새로운 쿼리 타임스탬프가 상기 캐시된 타임스탬프 세트를 초과하는 경우 상기 새로운 쿼리의 응답을 삽입하는 단계와,
    상기 새로운 쿼리 타임스탬프가 상기 캐시된 타임스탬프 세트를 초과하는 경우 상기 데이터베이스 서버로부터 계류중인 새로 고침 메시지를 검색하는 단계를 포함하는 방법.
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 데이터베이스 서버로부터 검색된 쿼리 결과 세트의 델타-일관성(delta-consistency)을 유지하기(ensuring) 위한 방법에 있어서,
    원격 서버의 이전 데이터베이스 쿼리의 결과를 에지 캐시에 동적으로 캐싱하는 단계와,
    로컬 데이터베이스를 상기 로컬 서버와 연결시키는 단계와,
    상기 로컬 데이터베이스내의 공유 테이블에 다수의 캐싱 결과를 저장하는 단계와,
    상기 로컬 서버로 새로운 데이터베이스 쿼리가 충족될 때 상기 다수의 캐싱 결과를 이용하는 단계와,
    백 엔드 테이블(back-end tables)에 적용된 수정(updates), 삭제(deletes) 그리고 삽입(inserts)을 포함하며 원본 서버에 의해 전달되는 새로 고침 메시지에 상기 에지 캐시를 동의시키는 단계와,
    상기 새로 고침 메시지가 수신될 때마다 로컬 캐시된 테이블에 상기 수정, 삭제 및 삽입을 적용시키는 단계와,
    상기 새로 고침 메시지에 효과가 포함되어 있는 임의의 트랜잭션의 최대 타임스탬프와 동일한 새로 고침 메시지와 타임스탬프를 연결시키는 단계와,
    상기 에지 캐시에 적용된 마지막 새로 고침 메시지의 타임스탬프와 동일한 이전 쿼리의 결과를 타임스탬프 세트와 연결시키는 단계와,
    새로운 쿼리 타임스탬프를 새로운 쿼리와 연결시키는 단계와,
    상기 새로운 쿼리 타임스탬프를 상기 타임스탬프 세트와 비교하는 단계와,
    상기 새로운 쿼리 타임스탬프가 상기 타임스탬프 세트를 초과하는 경우 상기 새로운 쿼리의 응답을 삽입하는 단계와,
    상기 새로운 쿼리 타임스탬프가 상기 타임스탬프 세트를 초과하는 경우 상기 데이터베이스 서버로부터 계류중인 새로 고침 메시지를 검색하는 단계
    를 포함하는 방법.
  25. 삭제
  26. 삭제
KR1020057009282A 2002-12-23 2003-10-14 투명한 네트워크 에지의 데이터 캐시 KR100745883B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/328,229 US6950823B2 (en) 2002-12-23 2002-12-23 Transparent edge-of-network data cache
US10/328,229 2002-12-23

Publications (2)

Publication Number Publication Date
KR20050085133A KR20050085133A (ko) 2005-08-29
KR100745883B1 true KR100745883B1 (ko) 2007-08-02

Family

ID=32680768

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057009282A KR100745883B1 (ko) 2002-12-23 2003-10-14 투명한 네트워크 에지의 데이터 캐시

Country Status (12)

Country Link
US (1) US6950823B2 (ko)
EP (1) EP1581886B1 (ko)
JP (1) JP4416663B2 (ko)
KR (1) KR100745883B1 (ko)
CN (1) CN1708757B (ko)
AT (1) ATE472774T1 (ko)
AU (1) AU2003279289A1 (ko)
CA (1) CA2507014C (ko)
DE (1) DE60333230D1 (ko)
IL (1) IL169267A0 (ko)
TW (1) TWI262406B (ko)
WO (1) WO2004061716A1 (ko)

Families Citing this family (111)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2471855C (en) * 2002-01-11 2013-03-19 Akamai Technologies, Inc. Java application framework for use in a content delivery network (cdn)
US7499910B2 (en) * 2002-06-27 2009-03-03 Siebel Systems, Inc. Detecting and processing cache hits for queries with aggregates
US7277718B2 (en) * 2002-07-22 2007-10-02 Cingular Wireless Ii, Llc Methods and apparatus for formatting information for a communication
JP4007594B2 (ja) * 2002-09-26 2007-11-14 株式会社東芝 動画像符号化装置及び方法、動画像符号化方式変換装置及び方法
US7089235B2 (en) * 2003-04-17 2006-08-08 International Business Machines Corporation Method for restricting queryable data in an abstract database
US20040236726A1 (en) * 2003-05-19 2004-11-25 Teracruz, Inc. System and method for query result caching
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
US7467131B1 (en) * 2003-09-30 2008-12-16 Google Inc. Method and system for query data caching and optimization in a search engine system
US9176719B2 (en) * 2004-02-26 2015-11-03 International Business Machines Corporation Resolving prerequisites for a client device in an open service gateway initiative (OSGI) framework
US7478396B2 (en) * 2004-03-22 2009-01-13 International Business Machines Corporation Tunable engine, method and program product for resolving prerequisites for client devices in an open service gateway initiative (OSGi) framework
US7337164B2 (en) * 2004-03-31 2008-02-26 Sap Ag Fast search with very large result set
US7840557B1 (en) * 2004-05-12 2010-11-23 Google Inc. Search engine cache control
US7457796B2 (en) * 2004-07-08 2008-11-25 International Business Machines Corporation Method using virtual replicated tables in a cluster database management system
US7395258B2 (en) * 2004-07-30 2008-07-01 International Business Machines Corporation System and method for adaptive database caching
US20060095403A1 (en) * 2004-11-03 2006-05-04 International Business Machines Corporation Method, system and program product for filtering model objects
US20060294088A1 (en) * 2005-06-27 2006-12-28 International Business Machines Corporation Method, system, and computer program product for caching dynamically generated queries
US8468152B2 (en) * 2005-08-04 2013-06-18 International Business Machines Corporation Autonomic refresh of a materialized query table in a computer database
GB0517585D0 (en) * 2005-08-30 2005-10-05 Ramakrishna Madhusudana Intuitive search which delivers fast results on the mobile phone
US20070143344A1 (en) * 2005-12-15 2007-06-21 International Business Machines Corporation Cache maintenance in a distributed environment with functional mismatches between the cache and cache maintenance
CN101005649A (zh) * 2006-01-19 2007-07-25 华为技术有限公司 一种多方通信业务的连接建立方法及系统
US7809882B1 (en) 2006-01-24 2010-10-05 Verizon Services Corp. Session independent backend data cache system
US7765275B2 (en) 2006-01-27 2010-07-27 International Business Machines Corporation Caching of private data for a configurable time period
US20070185836A1 (en) * 2006-02-09 2007-08-09 Handy-Bosma John H Method for caching faceted search results
US7805425B2 (en) 2006-04-28 2010-09-28 Microsoft Corporation Efficient database lookup operations
US8384700B2 (en) 2007-01-26 2013-02-26 Microsoft Corporation Linked shell
JP4920303B2 (ja) * 2006-05-17 2012-04-18 株式会社野村総合研究所 データ処理システム
US20080005721A1 (en) * 2006-06-29 2008-01-03 Augusta Systems, Inc. Method and System for Rapidly Developing Sensor-Enabled Software Applications
US7735060B2 (en) * 2006-06-29 2010-06-08 Augusta Systems, Inc. Method and system for rapidly developing and deploying sensor-enabled software applications
US8095923B2 (en) * 2006-06-29 2012-01-10 Augusta Systems, Inc. System and method for deploying and managing intelligent nodes in a distributed network
US8015547B2 (en) * 2006-06-29 2011-09-06 Augusta Systems, Inc. Reconfigurable, hierarchical component-based architecture and framework and methods for rapidly developing sensor device-enabling software applications
US7698505B2 (en) * 2006-07-14 2010-04-13 International Business Machines Corporation Method, system and computer program product for data caching in a distributed coherent cache system
US7660787B2 (en) * 2006-07-19 2010-02-09 International Business Machines Corporation Customized, personalized, integrated client-side search indexing of the web
US7831620B2 (en) * 2006-08-31 2010-11-09 International Business Machines Corporation Managing execution of a query against a partitioned database
US7962442B2 (en) * 2006-08-31 2011-06-14 International Business Machines Corporation Managing execution of a query against selected data partitions of a partitioned database
US20080065590A1 (en) * 2006-09-07 2008-03-13 Microsoft Corporation Lightweight query processing over in-memory data structures
US7451225B1 (en) * 2006-09-12 2008-11-11 Emc Corporation Configuring a cache prefetch policy in a computer system employing object addressable storage
US10296629B2 (en) * 2006-10-20 2019-05-21 Oracle International Corporation Server supporting a consistent client-side cache
US9697253B2 (en) * 2006-10-20 2017-07-04 Oracle International Corporation Consistent client-side cache
US7814234B2 (en) * 2006-10-30 2010-10-12 Microsoft Corporation Offline execution of web based applications
US8452756B2 (en) 2006-11-09 2013-05-28 International Business Machines Corporation Database execution detail repository
US7814095B2 (en) * 2006-12-27 2010-10-12 Sybase, Inc. Optimizing the navigation of one-to-one and one-to-many relationships using query batching in named transactions
US7925900B2 (en) 2007-01-26 2011-04-12 Microsoft Corporation I/O co-processor coupled hybrid computing device
US7774354B2 (en) * 2007-08-02 2010-08-10 International Business Machines Corporation Method and system for response time optimization for task list retrieval from databases
US7752219B2 (en) * 2007-08-21 2010-07-06 International Business Machines Corporation Apparatus, system, and method for customized event processing using a JDBC resource adapter
US20090164521A1 (en) * 2007-12-20 2009-06-25 George Lo Method and system for integrating multiple authoring applications in a collaborative environment
US7912812B2 (en) * 2008-01-07 2011-03-22 International Business Machines Corporation Smart data caching using data mining
JP5235483B2 (ja) * 2008-04-30 2013-07-10 インターナショナル・ビジネス・マシーンズ・コーポレーション データベースと仮想テーブルの整合性を維持する方法および装置。
US20100036804A1 (en) * 2008-08-05 2010-02-11 International Business Machines Corporation Maintained and Reusable I/O Value Caches
US20100036805A1 (en) * 2008-08-05 2010-02-11 International Business Machines Corporation System Maintainable and Reusable I/O Value Caches
CN102217225B (zh) * 2008-10-03 2014-04-02 杰出网络公司 内容递送网络加密
US8145652B2 (en) * 2008-10-09 2012-03-27 International Business Machines Corporation Automated propagation of non-conflicting queries in distributed databases
US8458166B2 (en) * 2008-10-09 2013-06-04 International Business Machines Corporation Dynamic context definitions in distributed databases
US9183260B2 (en) 2008-10-09 2015-11-10 International Business Machines Corporation Node-level sub-queries in distributed databases
US8285710B2 (en) 2008-10-09 2012-10-09 International Business Machines Corporation Automated query path reporting in distributed databases
US8301583B2 (en) * 2008-10-09 2012-10-30 International Business Machines Corporation Automated data conversion and route tracking in distributed databases
US8458208B2 (en) * 2008-10-09 2013-06-04 International Business Machines Corporation Automated data source assurance in distributed databases
GB2465773A (en) * 2008-11-27 2010-06-02 Symbian Software Ltd Data Storage and Access
JP5181140B2 (ja) 2009-02-23 2013-04-10 インターナショナル・ビジネス・マシーンズ・コーポレーション データベースを検索するためのコンピュータ・システム、方法及びコンピュータ・プログラム
US8161244B2 (en) * 2009-05-13 2012-04-17 Microsoft Corporation Multiple cache directories
US9111006B2 (en) * 2010-03-16 2015-08-18 Salesforce.Com, Inc. System, method and computer program product for communicating data between a database and a cache
US8898181B2 (en) * 2010-06-22 2014-11-25 Microsoft Corporation Subscription for integrating external data from external system
US9792307B2 (en) * 2010-07-27 2017-10-17 Oracle International Corporation Enterprise-based searching of new and updated data
US8612413B2 (en) * 2010-08-12 2013-12-17 Cdnetworks Co., Ltd. Distributed data cache for on-demand application acceleration
US20120130963A1 (en) * 2010-11-24 2012-05-24 Teradata Us, Inc. User defined function database processing
US8983902B2 (en) * 2010-12-10 2015-03-17 Sap Se Transparent caching of configuration data
US8412721B2 (en) * 2011-07-29 2013-04-02 International Business Machines Corporation Efficient data extraction by a remote application
US8560496B2 (en) * 2011-11-29 2013-10-15 Microsoft Corporation Database query across processes with change notification
US8843758B2 (en) * 2011-11-30 2014-09-23 Microsoft Corporation Migrating authenticated content towards content consumer
US10467212B2 (en) 2012-04-27 2019-11-05 Empire Technology Development Llc Multiple variable coverage memory for database indexing
US9026553B2 (en) * 2012-11-29 2015-05-05 Unisys Corporation Data expanse viewer for database systems
GB2510429A (en) 2013-02-05 2014-08-06 Ibm Assessing response routes in a network
CN104137100B (zh) * 2013-03-04 2017-11-24 株式会社东芝 数据库装置、程序及数据处理方法
CN104111962B (zh) * 2013-04-22 2018-09-18 Sap欧洲公司 具有批量操作的增强型事务高速缓存
CN104216901B (zh) * 2013-05-31 2017-12-05 北京新媒传信科技有限公司 信息搜索的方法和系统
KR101515304B1 (ko) * 2013-11-08 2015-07-02 한국산업기술대학교산학협력단 하둡 기반의 리듀스-사이드 조인 처리 시스템의 리듀스-사이드 조인 질의 처리 방법
CN103559307A (zh) * 2013-11-18 2014-02-05 中国农业银行股份有限公司 一种查询的缓存方法及装置
US10311054B2 (en) * 2014-01-08 2019-06-04 Red Hat, Inc. Query data splitting
US10114874B2 (en) * 2014-02-24 2018-10-30 Red Hat, Inc. Source query caching as fault prevention for federated queries
US10498663B2 (en) * 2014-03-12 2019-12-03 Amazon Technologies, Inc. Profile-based cache management
GB2524072A (en) * 2014-03-14 2015-09-16 Ibm Demand-driven dynamic aggregate
CN104268286A (zh) * 2014-10-21 2015-01-07 北京国双科技有限公司 一种查询热数据的方法
US10572442B2 (en) 2014-11-26 2020-02-25 Microsoft Technology Licensing, Llc Systems and methods for providing distributed tree traversal using hardware-based processing
CN109347925B (zh) * 2014-12-31 2021-07-09 华为技术有限公司 缓存方法、缓存边缘服务器、缓存核心服务器和缓存系统
CN106708819A (zh) * 2015-07-17 2017-05-24 阿里巴巴集团控股有限公司 一种数据缓存的预热方法及其装置
US20170034248A1 (en) * 2015-07-30 2017-02-02 Bank Of America Corporation File Movement Service Utility
US10848582B2 (en) 2015-09-11 2020-11-24 Amazon Technologies, Inc. Customizable event-triggered computation at edge locations
US11895212B2 (en) * 2015-09-11 2024-02-06 Amazon Technologies, Inc. Read-only data store replication to edge locations
US20170195449A1 (en) * 2015-12-30 2017-07-06 Business Objects Software, Ltd. Smart proxy for datasources
CN107193813B (zh) 2016-03-14 2021-05-14 阿里巴巴集团控股有限公司 数据表连接方式处理方法及装置
CN107789829B (zh) * 2016-09-06 2020-12-08 盛趣信息技术(上海)有限公司 一种游戏物品数据传输的方法
CN106407374A (zh) * 2016-09-09 2017-02-15 浪潮软件股份有限公司 一种适用于移动开发的高性能缓存方法
US10380137B2 (en) * 2016-10-11 2019-08-13 International Business Machines Corporation Technology for extensible in-memory computing
CN107665228B (zh) * 2017-05-10 2019-12-20 平安科技(深圳)有限公司 一种关联信息查询方法、终端及设备
CN107466482B (zh) * 2017-06-07 2021-07-06 香港应用科技研究院有限公司 在蜂窝通信系统中联合确定计算卸载和内容预取的方法和系统
US10721719B2 (en) * 2017-06-20 2020-07-21 Citrix Systems, Inc. Optimizing caching of data in a network of nodes using a data mapping table by storing data requested at a cache location internal to a server node and updating the mapping table at a shared cache external to the server node
JP6812321B2 (ja) * 2017-08-25 2021-01-13 Kddi株式会社 データベース管理装置、データベース管理方法、及びデータベース管理プログラム
US10740318B2 (en) * 2017-10-26 2020-08-11 Sap Se Key pattern management in multi-tenancy database systems
US11567934B2 (en) 2018-04-20 2023-01-31 Oracle International Corporation Consistent client-side caching for fine grained invalidations
CN108989062B (zh) * 2018-07-25 2020-05-01 北京达佳互联信息技术有限公司 更新群成员数据的方法、装置、终端、系统及存储介质
US11487737B2 (en) * 2019-03-26 2022-11-01 Sap Se Take over table opening for operators
US11163756B2 (en) * 2019-04-16 2021-11-02 Snowflake Inc. Querying over external tables in database systems
US11080257B2 (en) * 2019-05-13 2021-08-03 Snowflake Inc. Journaled tables in database systems
US11455305B1 (en) * 2019-06-28 2022-09-27 Amazon Technologies, Inc. Selecting alternate portions of a query plan for processing partial results generated separate from a query engine
CN110557432B (zh) * 2019-07-26 2022-04-26 苏州浪潮智能科技有限公司 一种缓存池均衡优化方法、系统、终端及存储介质
US20210173888A1 (en) * 2019-12-08 2021-06-10 Akamai Technologies Inc. Proxy server caching of database content
CN112632129B (zh) * 2020-12-31 2023-11-21 联想未来通信科技(重庆)有限公司 一种码流数据管理方法、装置及存储介质
US11727022B2 (en) 2021-03-19 2023-08-15 International Business Machines Corporation Generating a global delta in distributed databases
US11704327B2 (en) 2021-03-19 2023-07-18 International Business Machines Corporation Querying distributed databases
CN112883119B (zh) * 2021-04-30 2022-05-17 腾讯科技(深圳)有限公司 数据同步方法、装置、计算机设备及计算机可读存储介质
US11792147B2 (en) 2021-11-29 2023-10-17 Aidan Lok Communications networks
CN116910100B (zh) * 2023-09-08 2023-11-28 湖南立人科技有限公司 用于低代码平台的缓存数据处理方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06275819A (ja) * 1993-03-19 1994-09-30 Sanken Electric Co Ltd 2方向性2端子サイリスタ

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5897632A (en) 1996-08-27 1999-04-27 At&T Corp Method and system for using materialized views to evaluate queries involving aggregation
US6275819B1 (en) 1999-03-16 2001-08-14 Novell, Inc. Method and apparatus for characterizing and retrieving query results
US6393415B1 (en) * 1999-03-31 2002-05-21 Verizon Laboratories Inc. Adaptive partitioning techniques in performing query requests and request routing
US6601062B1 (en) * 2000-06-27 2003-07-29 Ncr Corporation Active caching for multi-dimensional data sets in relational database management system
US6970939B2 (en) 2000-10-26 2005-11-29 Intel Corporation Method and apparatus for large payload distribution in a network
WO2002069172A1 (en) * 2001-02-22 2002-09-06 Didera, Inc. Systems and methods for managing distributed database resources
US7035846B2 (en) * 2002-09-23 2006-04-25 International Business Machines Corporation Methods, computer programs and apparatus for caching directory queries

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06275819A (ja) * 1993-03-19 1994-09-30 Sanken Electric Co Ltd 2方向性2端子サイリスタ

Also Published As

Publication number Publication date
US6950823B2 (en) 2005-09-27
TWI262406B (en) 2006-09-21
EP1581886A4 (en) 2007-07-18
EP1581886B1 (en) 2010-06-30
CN1708757B (zh) 2010-04-28
WO2004061716A1 (en) 2004-07-22
CA2507014C (en) 2010-12-21
IL169267A0 (en) 2007-07-04
ATE472774T1 (de) 2010-07-15
CA2507014A1 (en) 2004-07-22
EP1581886A1 (en) 2005-10-05
CN1708757A (zh) 2005-12-14
TW200426625A (en) 2004-12-01
AU2003279289A1 (en) 2004-07-29
KR20050085133A (ko) 2005-08-29
DE60333230D1 (en) 2010-08-12
JP2006511876A (ja) 2006-04-06
JP4416663B2 (ja) 2010-02-17
US20040133538A1 (en) 2004-07-08

Similar Documents

Publication Publication Date Title
KR100745883B1 (ko) 투명한 네트워크 에지의 데이터 캐시
US9740741B2 (en) Aggregate query-caching in databases architectures with a differential buffer and a main store
US5812996A (en) Database system with methods for optimizing query performance with a buffer manager
Graefe Sorting And Indexing With Partitioned B-Trees.
US5822749A (en) Database system with methods for improving query performance with cache optimization strategies
US9697253B2 (en) Consistent client-side cache
US10296629B2 (en) Server supporting a consistent client-side cache
Amiri et al. DBProxy: A dynamic data cache for Web applications
US11392588B2 (en) Active queries filter extraction
US5668987A (en) Database system with subquery optimizer
US8250044B2 (en) Byte-code representations of actual data to reduce network traffic in database transactions
US6115703A (en) Two-level caching system for prepared SQL statements in a relational database management system
US20020107835A1 (en) System and method for adaptive result set caching
US7117222B2 (en) Pre-formatted column-level caching to improve client performance
US20070299810A1 (en) Autonomic application tuning of database schema
CN111752804B (zh) 一种基于数据库日志扫描的数据库缓存系统
Basu et al. Performance analysis of an associative caching scheme for client-server databases
Simitsis et al. Fast Analytics in Real-time Operations Management
Ali Evolution of Database Emerging to Sybase Adaptive Server Enterprise and Ensuring Better Server Performance Tuning and Query Optimization
Kuhn et al. Oracle Database Transactions and Locking Revealed

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20100428

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee