KR20150098660A - 활성 데이터베이스 쿼리의 유지 - Google Patents

활성 데이터베이스 쿼리의 유지 Download PDF

Info

Publication number
KR20150098660A
KR20150098660A KR1020157019642A KR20157019642A KR20150098660A KR 20150098660 A KR20150098660 A KR 20150098660A KR 1020157019642 A KR1020157019642 A KR 1020157019642A KR 20157019642 A KR20157019642 A KR 20157019642A KR 20150098660 A KR20150098660 A KR 20150098660A
Authority
KR
South Korea
Prior art keywords
query
control information
updated
database
transaction
Prior art date
Application number
KR1020157019642A
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 KR20150098660A publication Critical patent/KR20150098660A/ko

Links

Images

Classifications

    • G06F17/30424
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • 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
    • 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/24537Query rewriting; Transformation of operators

Abstract

일 양상은 활성 쿼리를 유지하기 위한 방법을 포함한다. 방법은 데이터베이스 내 적어도 두 개의 관계에서의 데이터 항목에 기초하여 쿼리를 실행하는 단계를 포함한다. 실행하는 단계는 쿼리와 연관된 컨트롤 정보 및 쿼리 결과를 출력하는 단계를 포함한다. 쿼리 결과 및 컨트롤 정보는 기록된다. 데이터 항목 중 적어도 하나는 실행하는 단계 이후에 갱신되어온 통지가 수신된다. 쿼리 결과는 실행하는 단계 이후에 갱신된 데이터 항목을 반영하도록 컨트롤 정보에 응답하여 수정된다.

Description

활성 데이터베이스 쿼리의 유지 {MAINTENANCE OF ACTIVE DATABASE QUERIES}
본 출원은 2012년 12월 20일에 제출된 미국 출원 번호 13/722067의 이익을 주장하며, 이는 그 전체에서의 참조에 의해 여기에서 포함된다.
본 발명은 데이터베이스 쿼리에 관련되며, 보다 구체적으로, 활성 데이터베이스 쿼리의 유지에 관련된다.
데이터베이스 관리 시스템은 사용자가 정보의 많은 수집을 저장하고 갱신하는 것을 가능하게 하는 한편 또한 그 정보 상의 쿼리를 지원한다. 이상적으로, 쿼리는 데이터베이스에서 가장 최신 데이터를 반영하는 응답을 반환한다. 그러나, 롱 러닝 쿼리 또는 트랜잭션(long-running query or transaction)이 다른 동시 트랜잭션이 갱신하려고 하는 데이터를 처리할 필요가 있을 수 있다.
여러 종래의 동시 컨트롤 기법은 그러한 충돌하는 갱신을 관리하려고 한다. 예컨대, 록(lock) 기반 기법은 충돌하는 트랙잭션으로 하여금 대기하도록 함으로써 복수의 트랜잭션이 충돌하는 데이터 항목으로의 액세스를 획득하는 것을 방지하는 데 이용될 수 있다. 록 기반 기법은 때로는 데드록(deadlock)으로 인하여 트랜잭션을 중단할 필요가 있으며, 빈번히 액세스된 데이터 항목이 있는 경우 장기 대기 큐(queue)를 로 이어질 수 있다. 다른 종래의 컨트롤 기법은 트랜잭션의 끝(end)에서만의 충돌을 체크하며, 충돌이 발견된 경우 트랜잭션을 중단하여, 충돌이 잦은 경우 많은 버려지는 작업으로 이어지는 낙관적 방법을 포함한다. 멀티 버전 타임 스탬프 기반 컨트롤 기법은 데이터 항목에 대한 액세스 타임 스탬프를 계속해서 파악하며, 트랜잭션이 항목의 타임 스탬프와 불일치하는 방식으로 데이터 항목을 기록할 필요가 있는 경우 트랜잭션을 중단한다. 다시, 유의미한 작업이 버려질 수 있다.
쿼리를 보다 빠르게 만들기 위해, 공통적으로 사용되는 기법은 도출된 정보를 데이터베이스에 저장하여 데이터 상의 연산 및/또는 검색을 보다 효율적으로 하는 것이다. 그러한 도출된 정보의 일 예시는 구체화 뷰이며, 여기서, 쿼리(예컨대, 서브 쿼리)에의 응답은 명시적으로 데이터베이스에 저장된다. 이후의 쿼리가 이러한 저장된 서브 쿼리를 이용하는 경우, 이후의 쿼리는 구체화 뷰의 이용가능성 없이 그럴 경우 보다 빠르게 응답될 수 있다.
실시예들은 활성 쿼리를 유지하기 위한 방법, 시스템 및 컴퓨터 프로그램을 포함한다. 일 양상은 데이터베이스 내 적어도 두 개의 관계에서의 데이터 항목에 기초하여 쿼리를 실행하는 것을 포함하고, 여기서 실행하는 것은 쿼리와 연관된 컨트롤 정보 및 쿼리 결과를 출력하는 것을 포함한다. 다른 양상은 쿼리 결과 및 컨트롤 정보를 기록하는 것을 포함한다. 다른 양상은 데이터 항목 중 적어도 하나가 실행 이후에 갱신되었다는 통지를 수신하는 것을 포함한다. 추가적인 양상은 실행하는 것 이후에 갱신된 데이터 항목을 반영하도록 컨트롤 정보에 응답하여 쿼리 결과를 수정하는 것을 포함한다.
추가적인 특징 및 장법은 본 발명의 기법을 통하여 실현된다. 본 발명의 다른 실시예 및 양상은 여기에서 상세히 설명되며 청구된 발명의 일부가 고려된다. 이점 및 특징과 함께 본 발명을 보다 잘 이해하기 위하여, 설명 및 도면을 참조한다.
본 발명으로서 다뤄지는 대상은 명세서의 결론부에서의 청구항에서 특히 지적되며 명백하게 청구된다. 본 발명의 전술한 특징과 다른 특징 및 이점은 첨부된 도면과 함께 다음의 상세한 설명으로 분명해진다.
도 1은 소매 회사를 위한 데이터베이스의 예시를 도시하고;
도 2는 예시적인 실시예에 따라, 활성 데이터베이스의 관리를 수행하기 위한 프로세스를 도시하고;
도 3은 병합-조인 프로세스를 포함하는 쿼리의 트레이스(trace)의 예시를 도시하며;
도 4는 활성 데이터베이스 쿼리의 관리가 본 발명의 실시예에 따라 구현될 수 있는 시스템의 블록도를 도시한다.
예시적인 실시예는 점진적인 유지 프로세스를 이용하여 활성 데이터베이스 트랜잭션 사이에서 충돌을 해결하는 것에 관련된다. 구체화 뷰는 데이터베이스 성능을 향상시키도록 서브 쿼리의 결과를 저장하는 데 이용된다. 여기에서 설명된 실시예는 모든 데이터베이스가 구체화 뷰를 최신의 것으로 하도록 뷰의 초기 구체화 동안 생성된 트레이스 정보에 영향을 주는 점진적인 뷰 유지 프로세스를 이용함으로써 갱신한 이후에 스크래치(scratch)로부터 구체화 뷰를 재연산해야 하는 것을 피한다.
여기에서 설명된 실시예는 점진적 유지 프로세스를 이용함으로써 활성 트랜잭션 사이에서의 충돌을 해결한다. 트랜잭션(T1)이, 활성 트랜잭션(T2)이 요구하는 데이터 항목을 커밋(commit)하고 갱신 (예컨대, 새로운 값을 기록하거나 데이터 항목을 삭제)하는 경우, T2는 이러한 변경에 관한 유지에 대하여 플래그(flag)된다. T2가 완료하기 전에, 요구된 항목으로의 커밋된 동시 트랜잭션에 의해 이루어진 모든 변경에 비추어 그 실행을 수정한다. 복수 차례의 유지가 요구될 수 있다. T2를 중단하고 재시작하는 대신 T2의 실행을 점진적으로 수정함으로써 시스템은 T2가 달성한 작업 중 많은 것을 구할 수 있다. T2가 요구하는 항목을 식별하고, 그러한 항목으로의 변경이 이른 실행에 어떻게 영향을 주는지 결정하기 위하여, 여기에서 설명된 실시예는 민감도 인덱스(sensitivity index)로 불리는 새로운 종류의 구조를 구성하는 것을 포함한다. 민감도 인덱스는 또한 다른 트랜잭션이 데이터를 동시에 갱신하고 있는 동안 구체화 뷰를 생성하기 위해 그리고 구체화 뷰를 계속해서 효율적으로 그리고 점진적으로 최신으로 하기 위해 이용될 수 있다.
도 1을 참조하면, 고객에게 제품을 판매하는 소매 회사를 위한 데이터베이스의 예시가 여기에서 설명된 실시예의 다양한 특징을 예시하도록 도시된다. 도 1에 도시된 데이터베이스는 고객 테이블(102), 주문 테이블(104) 및 라인_항목 테이블(106)을 포함한다. 고객 테이블(102)은 여러 속성들 중에서도, 고유 고객 식별자(C_ID), 카테고리 명칭(CATEGORY) 및 고객 명칭(NAME)을 가지는 고객에 대한 정보를 저장한다. 주문 테이블(104)은 여러 속성들 중에서도, 주문 식별자(O_ID), 고객 식별자(C_ID) 및 주문 날짜(DATE)를 포함하는 고객에 의해 이루어진 주문에 대한 정보를 저장한다. 각 주문은 라인_항목 테이블(106)에 기록된 바와 같이, 여러 라인 항목을 포함할 수 있다. 라인_항목 테이블(106) 내 각 라인 항목 기록은, 다른 속성들 중에서도, 대응하는 주문 식별자(O_ID), 제품 식별자(P_ID) 및 주문된 제품의 품질(QUANTITY)을 포함한다. 데이터베이스는 또한 도 1에 도시되지 않은 (여기에서 "관계"로 또한 지칭되는) 다른 테이블을 포함할 수 있다.
소매 회사에서의 사용자는 상이한 고객 카테고리에 대한 상품을 프로파일링(profiling)하고 싶다고 결정할 수 있다. 사용자는 어떠한 제품이 각 카테고리에서 고객에 의해 5 개 이상의 양으로 구매되는지 알고 싶다고 결정한다. 사용자는 구조화 쿼리 언어(SQL)로 표현될 수 있는 제품 카테고리 뷰(Pcat)를 다음과 같이 정의한다.
Figure pct00001
Datalog와 같은 룰 기반 언어에서, 동일한 뷰는 다음과 같이 표현될 수 있다.
Figure pct00002
사용자가 Pcat 뷰가 쿼리에서 공통적으로 사용되는 것이라고 결정하는 경우, 사용자는 뷰를 구체화하도록 선정할 수 있으며, 이러한 경우에서, 뷰 조건을 만족하는 기록은 명시적으로 저장된다. 구체화는 잠재적으로 롱 러닝 트랜잭션(T)에서 생성된다. 명시적 저장이 발생하는 때에, 즉, T가 커밋하는 경우, 저장된 Pcat 뷰는 현재 데이터베이스 상태와 일치되어야 한다. 추가적인 트랜잭션이 T가 시작한 이후에 커밋 하여 수정된 데이터를 T에 의해 보다 이르게 판독했을 수 있으므로, 일관성은 도전(challenge)이다. 종래 해법은 충돌이 식별되면 T를 중단하거나 T가 실행하는 동안 모든 잠재적으로 충돌하는 트랜잭션을 폐쇄(lockout)하여 이로써 동시 실행을 감소시킬 것이다. 다른 종래 기법은 기록의 최근 도출(derivation)이 제거된 때를 시스템이 알도록 뷰에서의 각 기록이 도출될 수 있는 횟수(즉, "지원 카운트")를 저장하도록 뷰를 증강하는 것을 포함한다. 기록은 남아있는 도출이 없는 경우에만 구체화 뷰로부터 제거된다. 이러한 예시에 대하여, 뷰가 각 (CATEGORY, P_ID) 쌍의 도출의 수의 카운트와 함께 증강되었다고 가정한다.
본 발명의 실시예에서, 데이터베이스 관리 시스템은 쿼리를 실행하기 위한 실행 플랜을 선정한다. 상기 예시에 대하여, Pcat 뷰에 대한 예시적인 실행 플랜 (여기에서 "Pcat 뷰에 대한 제1 실행 플랜"으로 지칭됨)은 다음을 포함할 수 있다.
1. O_ID 주문에서 주문 테이블(104) 및 라인_항목 테이블(106) 내 기록을 액세스하여, QUANTITY 상의 필터링 조건을 라인_항목 테이블(106) 내 기록에 적용한다.
2. 결과적인 기록 시퀀스의 병합-조인을 수행한다.
3. 단계 2로부터 기인한, 각 기록, R에 대하여: R을 C_ID 상의 고객 테이블(102)로부터의 기록과 병합-조인하여, 단지 CATEGORY 및 P_ID 속성을 유지한다.
4. 단계 3의 결과에서 고유 쌍을 식별하고, 각 쌍을 여러 사본과 함께 저장한다.
관계를 특정 순서로 액세스하기 위하여, 상술한 바와 같이, 데이터베이스 관리 시스템은 저장된 관계의 물리적인 순서를 이용할 수 있거나 관계를 요구되는 순서로 명백히 정렬할 수 있다. 대안적으로, 데이터베이스 관리 시스템은 적절한 인덱스 구조를 이용하여 관계를 통하여 키 순서로 반복할 수 있다. 조인으로의 피연산자 중 하나가 조인 키에 의해 순서화되지 않는 경우, 여기에서 설명된 데이터베이스 관리 시스템의 실시예는 여전히, 위에서 도시된 Pcat에 대한 제1 실행 플랜의 단계 3에서와 같이, 한번에 순서화되지 않은 입력의 하나의 기록 상의 병합 조인의 시퀀스를 이용할 수 있음을 주목한다.
위에서 도시된 Pcat 뷰에 대한 제1 실행 플랜은 2 개의 병합 조인 단계를 가질 수 있다. 병합 조인은 그 입력 상에 반복자(iterator)를 구성하고, 반복자의 키가 분명한 경우, 앞서는 반복자의 조인 키에 기초하여 뒤따르는 반복자로 진행한다. 이러한 동작은 여기에서 "탐색(seek)"으로 지칭된다. 예컨대, 뒤따르는 키가 5이고 앞선 키가 8인 경우, seek(8)은 뒤따르는 반복자 상에서 호출되어 적어도 8의 키가 있는 대응하는 조인 입력 관계 내 제1 기록으로 진행한다. 모든 반복자의 키가 동일한 경우, 출력 기록은 동일한 조인 키를 가지는 입력 기록의 모든 조합에 대해 생성되며, 입력 중 하나에 대한 반복자가, 여기에서 "다음(next)"으로 지칭되는 동작을 이용하여, 다음 키로 진행된다. 입력의 쌍 상에 탐색 및 다음 동작의 시퀀스는 여기에서 "트레이스(trace)"로 지칭된다. 트레이스는 컨트롤 정보, 즉, 데이터 상의 특정 알고리즘의 실행 시퀀스에 대한 정보의 예시이다.
탐색 및 다음 동작은 임의의 순서화된 입력 상에서 수행될 수 있는 한편, 탐색은 입력이 순서화된 트리 구조로 조직화된 경우 특히 효율적이다. 키 범위에서의 많은 단계에 대응하는 탐색은 많은 키 값을 스킵할 수 있으며 따라서 작업을 구할 수 있다.
예시적인 실시예에서, 민감도 범위는 관계 (또는 테이블) A 및 B의 병합 조인에 대한 다음의 세 가지 기본적인 규칙을 이용하여 병합 조인의 트레이스로부터 도출될 수 있다.
a) A 및 B의 초기 키가 각각, KA 및 KB이고, KA < KB인 경우, B는 범위 [-∞, KB]에서 키에 민감하다고 한다. KA > KB인 경우, A는 범위 [-∞,KA]에서 키에 민감하다고 한다. 초기 키가 동일한 경우, 입력 중 하나는 임의의 선정되고 (A 라 함), 범위 [-∞,KA]에서 키에 민감하다고 한다.
b) 입력 (A 라 함)이 키 K에 위치되고, 다음 동작이 A 상에서 수행되어 새로운 키 K'를 산출하는 경우, A는 범위 [K,K']에서 키에 민감하다고 한다. K가 A에서의 마지막 키였던 경우, K'=∞이다.
c) 입력 (A 라 함)이 키 K에 위치되고, seek(L) 동작이 A 상에서 수행되어 새로운 키 K'를 산출하는 경우, A는 범위 [L,K']에서 키에 민감하다고 한다. A에 어떠한 키도 적어도 L이 아닌 경우, K'=∞이다.
임의의 순서화된 도메인은 이러한 방식으로 다루어질 수 있다.
위에서 도시된 Pcat 뷰에 대한 제1 실행 플랜의 단계 3은 관계 A가 관계 B와 이질적인 키 관계를 가지고 관계 A가 단지 하나의 기록을 가지는 경우 발생하는 민감도 범위의 특수한 경우를 나타낸다. 관계 A에서의 하나의 기록이 키 K를 가진다고 가정한다. 그러한 경우에서, 초기 탐색은 관계 A 보다는 관계 B에서 일어나고 차후의 다음 동작이 관계 B 대신 관계 A에서 일어난다고 가정한다. 그러면, 관계 B에 대한 민감도 범위는 단순히 [K,K]일 것이다.
민감도 범위는 민감도 인덱스로의 다른 속성 값과 연관된다. 특히, 이전 병합 조인 단계로부터의 모든 조인 열이 포함된다. 위에서 도시된 Pcat 뷰에 대한 제1 플랜에서, 단계 2의 병합 조인의 두 입력에 대응하는 민감도 인덱스는 추가적인 속성을 가지지 않으며, 단계 3의 병합 조인에 대응하는 민감도 인덱스는 기록 R로부터의 O_ID를 포함한다.
민감도 인덱스는 또한 병합 조인이 집합적인 순서(nested order)를 가지는 경우에 정의될 수 있다. 예컨대, Pcat 뷰에 대한 실행 플랜 (여기에서, "Pcat 뷰에 대한 제2 실행 플랜"으로 지칭됨)의 이하의 대안적인 실시예를 고려한다.
1. (C_ID,O_ID) 사전식 순서로의 주문 테이블(104) 내 기록 및 C_ID 순서로의 고객 테이블(102) 내 기록을 액세스한다.
2. C_ID 상의 2 개의 입력의 병합 조인을 수행한다. 결과는 각 C_ID에 대하여 O_ID 값의 순서화된 실행을 가질 것이다.
3. 결과적인 중간 결과 내 각 C_ID에 대하여, 순차로: O_ID 순서로 라인_항목 테이블(106)을 통하여 반복하여 QUANTITY 상에 필터링 조건을 적용하고, O_ID 상에 두 입력의 병합 조인을 수행하여 단지 CATEGORY 및 P_ID 속성을 유지한다.
4. 이전 단계의 결과에서 고유 쌍을 식별하고, 각 쌍을 여러 사본과 함께 저장한다.
Pcat 뷰에 대한 제2 실행 플랜에서, 단계 3에서의 병합 조인은 각 C_ID 값에 대하여 한번 일어난다. 여기에서 설명된 데이터베이스 관리 시스템의 실시예는 따라서 각 C_ID 값에 대하여 (병합 조인의 트레이스에 기초하여) O_ID 범위로의 민감도를 식별하는 민감도 인덱스를 유지할 것이다.
예시적인 실시예에서, 데이터베이스 관리 시스템은 연산 시간 및 리소스 사용의 관점에서 각 플랜의 비용의 추정에 기초하여, 여러 대안적인 플랜 중으로부터의 플랜을 선정한다. 데이터베이스 관리 시스템은 그러한 인덱스로부터 이익을 얻을 특정 테이블에의 갱신의 빈도 및 그러한 인덱스를 유지하는 시간 및 공간 오버헤드에 따라, 모든 민감도 인덱스를 구체화하거나 그들 중 일부만을 구체화하도록 선정할 수 있다.
민감도 인덱스를 이용하여, 입력 관계 각각에 대한 기록 (예컨대, 새로운 기록 또는 삭제된 기록)에서의 데이터 항목으로의 갱신이 주어지면, 그러한 변경이 상이해질 트레이스를 야기할 것인지 여부를 결정하는 것이 가능하다. 변경이 상이해질 트레이스를 야기하지 않는 경우, 데이터베이스 관리 시스템은 조인 결과가 이러한 새로운 기록의 존재에 둔감하다고 확신할 수 있다. 반면, 트레이스가 일부 기록 갱신에 응답하여 변경될 경우, 민감도 인덱스는 데이터베이스 관리 시스템에 중요한 정보를 제공한다. 그 정보는 데이터베이스 관리 시스템의 실시예가 관리가 필요할 수 있는 키 범위를 요약하는 변경-오라클(change-oracle)을 이용하여 출력 결과를 점진적으로 그리고 효율적으로 유지하도록 허용한다. 일 실시예에서, 변경-오라클은 명시적으로 구체화된다. 대안적인 실시예에서, 변경-오라클은 구체화되지 않지만, 매칭하는 민감도 간격의 세트로부터 요구되는 바와 같이 효율적으로 도출된다.
여기에서 사용된 바와 같이, "변경-오라클"이라는 용어는 속성 값 조합의 공간 내에서의 영역을 요약하는 쿼리 표현을 지칭한다. 속성 값 조합의 공간 내에서의 이러한 영역은, 그 안에서 쿼리가 기본적 데이터에의 갱신에 응답하여 재평가될 필요가 있는 영역이다.
여기에서 사용된 바와 같이, "민감도 간격" 및 "민감도 범위"라는 용어는 위에서 제공된 이러한 규칙에 따른 병합 조인 트레이스로부터 도출된 키 값의 범위를 지칭하도록 상호 교환 가능하게 사용된다. 민감도 범위 내에서 수정된 키는 병합 조인 결과를 변경하기 위한 퍼텐셜을 가진다.
여기에서 사용된 바와 같이, "민감도 인덱스"라는 용어는 엔트리의 수집을 나타내는 데이터 구조를 지칭한다. 예컨대, 병합 조인의 조인 키 A에 대한 민감도 인덱스는 엔트리의 수집을 나타내는 데이터 구조이고, 각각의 엔트리는 병합 조인 입력으로부터의 다른 속성에 대한 0 이상의 값과 함께 A에 대한 민감도 범위를 포함한다.
이제 도 2를 참조하면, 실시예에 따른 활성 데이터베이스 쿼리의 유지를 수행하기 위한 프로세스가 일반적으로 도시된다. 이전에 설명된 Pcat 뷰 및 도 1에서 설명된 테이블을 이용하는 예시가 실시예의 특징을 설명하도록 여기에서 사용되며, 실시예는 이러한 테이블 및 뷰에 제한되지 않음이 이해된다. 블록(202)에서, 상술된 Pcat 쿼리와 같은 쿼리가 예컨대, Pcat 뷰에 대한 제1 실행 플랜을 이용하여 실행된다. 블록(204)에서, Pcat 뷰는 대응하는 민감도 인덱스를 따라 구체화된다. 블록(206)에서, 쿼리에 의해 사용된 테이블 내 데이터로의 갱신의 통지가 수신된다. 예컨대, "12345"의 C_ID를 가지는 고객이 카테고리를 카테고리 "ABC"에서 카테고리 "DEF"로 변경하는 상황을 고려한다. 이러한 변경은 행 (12345, ABC, ...)을 고객 테이블(102)로부터 삭제하고 새로운 행 (12345, DEF, ...)을 고객 테이블(102)에 삽입함으로써 달성된다.
블록(208)에서, 하나 이상의 민감도 인덱스는 Pcat 뷰 상의 이러한 변경의 영향을 결정하도록 검사된다. 여기에서 설명된 예시의 일 실시예에서, 시스템은 고객 테이블(102)에 대한 민감도 인덱스 I(O_ID, [C_ID1, C_ID2])를 검사한다. 두 가지 경우가 있다. 첫 번째 경우에서, 12345는 인덱스(I)에서의 임의의 엔트리의 범위 [C_ID1,C_ID2]에 있지 않고, 따라서 이러한 고객은 5를 넘는 라인 항목 양을 주문하지 않았으므로, 갱신은 최종 결과에 영향을 미치지 않는다. 삭제나 삽입 모두 병합 조인 결과를 변경하지 않는다. 추가적으로, 12345가 다른 입력에 대하여 민감도 인덱스에서 스킵되어야 했으므로, 민감도 인덱스에의 변경이 요구되지 않는다. 두 번째 경우에서, 12345가 I 내 적어도 하나의 엔트리의 범위 [C_ID1,C_ID2]에 있으며, 따라서, 고객 12345는 5를 넘는 양으로 라인 항목을 이전에 주문했으므로, 최종 결과는 변경될 수 있다. 고객(12345)의 초기 삭제에 응답하여, 시스템은 범위 [C_ID1,C_ID2]가 12345를 포함하는 I 내 모든 O_ID 값을 식별한다. 일 실시예에서, 12345가 I 내 일부 엔트리의 범위 [C_id1,C_id2]에 있는지 여부를 결정하는 것은 12345를 포함하는 간격의 빠른 쿼리를 허용하도록 특수 데이터 구조, 예컨대, 세그먼트 트리의 B-트리 같은 구현을 이용함으로써 보다 쉽게 이루어진다.
도 2의 블록(210)을 이제 참조하면, 변경-오라클은 블록(210)에서 수행되는 분석에 기초하여 재평가될 필요가 있는 임의의 민감도 범위를 반영하도록 갱신된다. 예컨대, O_ID를 각각 매칭하기 위하여, (O_ID,12345) 쌍이 재평가될 필요가 있는 쿼리의 부분을 결정하기 위하여 변경-오라클에 추가된다. (12345,DEF)의 차후의 삽입 동안, 활성 데이터베이스 쿼리 유지 프로세싱은 변경-오라클에 또한 추가될 I 내 O_ID 범위 쌍을 매칭하는 것을 식별할 것이다. 입력 및 삭제가 동일한 C_ID를 가지는 이러한 예시에서, 범위는 삭제 동안 식별된 범위와 동시에 발생하지만, 삽입 및 삭제의 일반적인 세트에서, 범위는 상이할 수 있다.
블록(212)에서, 변경-오라클이 연산되었으면, 변경-오라클은 쿼리 결과를 점진적으로 수정하는 데 이용된다. 변경-오라클은 갱신의 결과로서 잠재적으로 변경되었을 수 있는 조인 속성 조합의 서브세트를 정의한다. 쿼리의 본체는 원래의 플랜을 이용하여 재실행되지만, 변경-오라클로부터의 (O_ID,C_ID) 쌍에 제한되지 않는다. 유지 프로세스는 더 이상 존재하지 않는 오래된 중간 기록 및 이전에 존재하지 않은 새로운 중간 기록을 식별한다. 위 예시에서, 라인_항목 테이블(106) 및 주문 테이블(104) 사이의 초기 조인이 반복되지만, 변경-오라클 내 (O_ID,C_ID) 쌍에 대해서만 반복된다. 라인_항목 테이블(106)은 O_ID 만에 의해 필터링되며; 주문 테이블(104)은 O_ID id 및 C_ID에 의해 필터링된다. 이러한 초기 조인의 결과는 이후 C_ID 상에서 고객 테이블(102)과 조인되지만, C_ID가 변경-오라클에 있는 고객에 대해서만 조인된다. 변경-오라클에 제한된 조인의 부분은 사전 갱신 상태 및 향후 갱신 상태 양자에서 연산된다. 이러한 두 개의 상태 사이의 차이는 쿼리 결과에 적용될 필요가 있는 최종 변경(net change)에 대응한다.
본 예시에서, 고객(12345)은 별개의 제품(P1, P2 및 P3)에 대한 정확히 3 개의 라인 항목을 각각 5개 초과의 양으로 구매하였다. 변경-오라클은 C_ID 12345와 쌍을 이루어, 이러한 3 개의 높은 양의 라인 항목을 포함하는 주문의 O_ID를 식별할 것이다. 카테고리 및 제품에 투영된 조인의 이전 값은 {(ABC,P1),(ABC,P2),(ABC,P3)}일 것이며, 한편 조인의 이후 값은 {(DEF,P1),(DEF,P2),(DEF,P3)}일 것이다. 활성 데이터베이스 쿼리 프로세스는 이후 3 개의 제품에 대한 카테고리 ABC에 대하여 도출 카운트를 감소시키고, 그러한 제품에 대한 카테고리 DEF에 대하여 도출 카운트를 증가시킬 수 있을 것이다. 카운트가 0으로 감소되는 경우, 행은 삭제되고, 도출 카운트가 증가되는 행이 이전에 존재하지 않은 경우, 1의 도출 카운트를 가지고 삽입된다.
일 실시예에서, 테이블에 대한 저장 구조는 새로이 삽입되고 삭제되는 기록의 효율적인 식별을 허용하도록 설계된다. 예컨대, B-트리 데이터 구조를 이용하는 카피-온-라이트 페이지-레벨 버저닝(copy-on-write page-level versioning)은 시스템이 두 개의 버전에 공통된 서브-트리를 스킵하는 것을 허용할 것이다. 캐스캐이딩 트리(cascading tree)는 최근 변경을 작은 수의 페이지로 집중하므로 잘 수행할 것이다.
이제 블록(214)으로 돌아가면, 하나 이상의 민감도 인덱스가 갱신된다. 블록(212 및 214)에 의해 수행된 프로세싱은 여기에서 "유지 프로세스"로 지칭된다. 유지 프로세스 동안, 민감도 인덱스는 점진적인 변화가 적용됨에 따라 갱신된다. 위 예시에서, 키(12345)가 있는 삭제된 기록이 동일한 트랜잭션 내에서, 동일한 키를 가지는 삽입된 기록으로 대체되었으므로, 민감도 인덱스로의 최종 변경이 없다. 그럼에도, 기존 라인 항목의 삭제 또는 새로운 주문의 삽입과 같은 다른 변경은 트레이스에 영향을 미칠 것이며, 따라서 민감도 인덱스로의 변경이 필요해진다. 민감도 인덱스가 갱신되므로, 실시예는 쿼리 상에서 수행되는 복수 차례의 유지를 지원한다.
민감도 인덱스는 트레이스에 의해 엄격히 정의된 것 너머의 추가적인 간격을 포함하는 경우에도 유지에 대하여 유용하게 남는다. 추가적인 간격의 존재는 방법의 정확도에 영향을 주지 않는다. 추가적인 간격은 쿼리 결과 유지 동안 작은 양의 추가 작업을 발생시킬 수 있다. 실시예가 민감도 인덱스를 유지할 수 있어 그들이 새로운 데이터 상에 쿼리 평가의 트레이스를 정확히 반영할 수 있도록 하는 한편, 때때로 엄격히 요구되는 바 보다 많은 간격을 포함하는 방식으로 민감도 인덱스를 유지하는 것이 보다 효율적일 수 있다. 종래 응용 컨텍스트에서, 보다 단순한 민감도 인덱스 유지의 이익은 쿼리 결과 유지에서의 추가적인 작업의 비용을 능가할 수 있다.
일 실시예에서, 민감도 인덱스 유지는 다음과 같이 진행한다. 매칭하는 간격이 쿼리 결과 유지 동안 민감도 인덱스에서 찾아지는 경우, 이들은 제거될 수 있다. 유지 프로세스 동안, 새로운 민감도 간격은 수행된 탐색(seek)/다음(next) 동작을 반영하도록 설치된다. 결과적인 민감도 인덱스는 단일 쿼리 평가의 트레이스의 정확한 기록을 나타낼 필요가 없으며, 필요보다 많은 민감도 간격을 포함할 수 있다. 그럼에도, 이는 데이터 변경이 유지를 요구할 모든 간격을 커버한다.
이제, 도 3을 참조하면, 쿼리에 대한 트레이스가 일 실시예에 따라 일반적으로 도시된다. 민감도 인덱스의 유지를 예시하기 위하여, 데이터베이스 관리 시스템이 두 개의 테이블(X 및 Y)의 병합 조인을 수행하고 있다고 가정한다. 도 3에 도시된 바와 같이, 테이블(X)는 키(0, 2, 4, 5 및 6)를 포함하고, 테이블(Y)는 키(1, 2, 6 및 7)을 포함한다고 가정한다. 도 3은 결과적인 트레이스를 도시한다. 상술된 실시예를 이용하여 병합 조인의 트레이스로부터 민감도 범위를 도출하는 것은 결과적으로 {[1,2],[2,4],[6,6],[6,∞]}인 테이블(X)에 대한 민감도 범위 및 {[-∞,1],[2,2],[4,6]}인 테이블(Y)에 대한 민감도 간격이 된다.
이제, 키(5)가 테이블(X)로부터 제거되고; 키(8)가 테이블(X)로 삽입되고; 키(2)가 테이블(Y)로부터 제거되며; 그리고 키(3)가 테이블(Y)로 삽입되는 갱신이 테이블(X) 및 테이블(Y)에 일어난다고 가정한다. 데이터베이스 관리 시스템은 조인 결과 상에 관리를 수행하는 한편, 트레이스 및 민감도 인덱스를 갱신할 것이다. 이러한 갱신에 대한 변경-오라클은 {[2,2],[6,∞]}일 것이며, 키(2)의 테이블(Y)로부터의 제거 및 키(8)의 테이블(Y)로의 삽입이 이전 쿼리 결과에 영향을 줄 수 있다는 결정을 반영할 것이다. 일 실시예에서, 유지 동안, 변경-오라클은 데이터베이스 관리 시스템에 의해 탐색(seek) 및 다음(next) 동작이 수행되는 조인으로의 제3 입력으로서 다루어진다. 유지가 점진적이므로, 변경-오라클은 전체 키 범위에 비하여 작기 쉬우며, 따라서 변경-오라클 상의 탐색 및 다음 동작은 어느 하나의 입력 관계 상의 그러한 동작들 보다 더 선호될 것이다. {[2,2],[6,∞]}인 변경-오라클에 기초하여, 유지 프로세스는 키(2)로 바로 점프하며 키(2)가 테이블(Y)로부터 제거되었으므로 더 이상 병합 조인 결과에 있지 않다. 이러한 유지 도중, 데이터베이스 관리 시스템은 테이블(Y)에서 seek(2) 동작이 더 이상 키(2)로 이어지지 않지만, 대신, 키(3)로 이어진다고 결정한다. 결과적으로, 테이블(Y)에 대한 민감도 인덱스는 [2,2]가 [2,3]로 대체된다.
키(5)의 테이블(X)로부터의 제거는, 초기 트레이스에서의 키(5) 상에서 스킵된 seek(6) 동작으로 인하여, 결과 또는 트레이스에 영향을 미치지 않으며, 마찬가지로 키(3)의 테이블(Y)로의 삽입에 대해서도 그러하다. 키(8)의 테이블(X)로의 삽입은, 키(6) 이후의 next 동작이 엔드 마커(end marker) 대신 키(8)를 히트할 것이므로, 결과를 변경하지는 않지만 트레이스를 변경한다. 결과적으로, 데이터베이스 관리 시스템은 테이블(X) 상의 민감도 인덱스에 대하여 [6, ∞]를 [6,8]로 대체하며, [8,∞]를 테이블(Y)에 대한 민감도 인덱스에 추가할 것이다. 이러한 변경은, 변경-오라클에 의해 명시된 바와 같이, 유지에 대한 범위 [6,∞]의 프로세싱 동안 일어난다. 유지의 최종 결과는 (a) 키(2)가 조인 결과로부터 제거되고; (b) 테이블(X)에 대한 민감도 간격이 이제 {[1,2],[2,4],[6,6],[6,8]}이며; 그리고 (c) 테이블(Y)에 대한 민감도 간격이 이제 {[-∞,1],[2,3],[4,6],[8,∞]}이다. X에 대한 민감도 인덱스는 [3,4] 대신 [2,4]를 포함하고, 간격은 갱신된 데이터의 트레이스에 있을 것이다. 시스템은 민감도 인덱스에 대한 유지 프로세스를 단순화하도록 보다 큰 간격 [2,4]을 유지한다.
응용에 따라, 유지는 모든 트랜잭션 갱신 직후에 수행될 수 있거나, 갱신들의 일괄에 응답하여 연기된 방식으로 수행될 수 있다.
다른 실시예에서, 민감도 인덱스는 조인 속성에 더하여 추가적인 속성을 가진다. 이는, 이하 예시에 의해 예시된 바와 같이, 민감도 인덱스에서 쿼리에 의해 출력되는 속성을 포함하도록 종종 유익할 수 있다. 위의 Pcat 뷰를 고려하지만, 각 (CATEGORY,P_ID) 쌍에 대한 도출의 수의 카운트로 뷰를 증강시키는 대신, 데이터베이스 관리 시스템은 CATEGORY 및 P_ID에 의해 그룹화된, 최소 C_ID를 가지는 뷰를 증강한다. 카운트 대신 최소 C_ID를 기록하는 이익은 우리가 카운트를 유지함에 있어 작업 중 일부를 피할 수 있다는 점이다. 카운트는 그룹으로의 모든 갱신 상에서 변경될 필요가 있는 한편, 최소 C_ID는 갱신에 대한 C_ID가 현재 최소 C_ID 보다 큰 경우 갱신될 필요가 없다.
상술한 Pcat 뷰에 대한 제1 실행 플랜의 단계 3에 대한 민감도 인덱스를 고려한다. 단지 (O_ID,[C_ID1,C_ID2])를 기록하는 대신, 시스템이 민감도 인덱스 I에 (P_ID,O_ID,[C_ID1,C_ID2])를 기록한다고 가정한다. 고객 테이블(102)로의 갱신이 발생하면, 데이터베이스 관리 시스템은 C_ID 범위가 갱신된 행의 C_ID를 포함하는 엔트리를 찾도록 I를 체크한다. 데이터베이스 관리 시스템이 이제 P_ID로의 액세스를 가지므로, 갱신에 의해 영향 받을 (CATEGORY,P_ID) 쌍을 결정할 수 있고 그룹에 대한 최소 현재 C_ID (이를 M이라 함)를 획득하도록 기준 뷰를 판독할 수 있다. 현재 C_ID가 삽입에 대하여 M과 같거나 M 보다 큰 경우, 이러한 갱신은 뷰를 변경하지 않으므로 무시될 수 있다. 현재 C_ID가 M보다 작고 갱신이 삽입인 경우, M은 현재 C_ID에 의해 대체된다. 현재 C_ID가 M보다 작거나 같고 갱신이 삭제인 경우, 그룹에 대하여 임의의 나머지 C_ID들의 부재 또는 이러한 그룹에 대하여 새로운 최소 C_ID를 식별하도록 보다 비싼 유지 동작이 트리거될 것이다. 유지 전략의 이러한 선택은 보다 비싼 유지 동작을 트리거하는 갱신의 빈도가 충분히 작은 경우 이익일 수 있다.
도 4를 참조하면, 활성 데이터베이스 쿼리의 유지를 자동적으로 수행하기 위한 예시적인 시스템의 블록도가 일반적으로 도시된다. 시스템은 호스트 시스템(404) 상에 위치한 하나 이상의 컴퓨터 프로그램에 의해 실행되는 활성 데이터베이스 쿼리 유지 어플리케이션(410)을 포함한다. 일 실시예에서, 활성 데이터베이스 쿼리 유지 어플리케이션(410)의 전부 또는 일부는 호스트 시스템(404) 상에서 실행하는 데이터베이스 관리 시스템의 일부이다. 다른 실시예에서, 활성 데이터베이스 쿼리 유지 어플리케이션(410)의 전부 또는 일부는 트랜잭션 및 쿼리 양자를 지원하는 시스템의 컴포넌트이다.
도 4에서 도시된 시스템은 하나 이상의 시스템(402)을 포함하며, 이를 통하여 하나 이상의 지리적 위치에서의 사용자(예컨대, 최종 사용자, 데이터베이스 관리자)가 호스트 시스템(404)에 접촉하여 데이터베이스 쿼리 및/또는 트랜잭션을 실행하는 프로그램을 개시할 수 있다. 사용자 시스템(402)은 네트워크(406)를 통하여 호스트 시스템(404)에 결합된다. 각각의 사용자 시스템(402)은 여기에서 설명된 프로세스를 수행하기 위하여 컴퓨터 프로그램을 실행하는 범용 컴퓨터를 이용하여 구현될 수 있다. 사용자 시스템(402)은 개인용 컴퓨터(예컨대, 랩톱, 태블릿 컴퓨터, 휴대전화 또는 호스트 부착 터미널일 수 있다. 사용자 시스템(402)이 개인용 컴퓨터인 경우, 여기에서 설명된 프로세싱은 사용자 시스템(402) 및 호스트 시스템(404)에 의해 공유될 수 있다. 사용자 시스템(402)은 또한 게임 콘솔, 네트워크 관리 장치 및 필드 프로그래머플 게이트 어레이(field programmable gate array)를 포함할 수 있다. 또한, 복수의 사용자 시스템(402) 및/또는 호스트 시스템(404)은 활성 데이터베이스 쿼리 유지를 수행하도록 동시에 동작할 수 있다.
네트워크(406)는 WAN(wide area network), LAN(local area network), 글로벌 네트워크(예컨대, 인터넷), VPN(virtual private network), 클라우드 네트워크 및 인트라넷을 포함하는 임의의 유형의 알려진 네트워크일 수 있으나 이에 제한되지 않는다. 네트워크(406)는 무선 네트워크 또는 기술 분야에서 알려진 임의의 유형의 물리적 네트워크 구현예를 이용하여 구현될 수 있다. 사용자 시스템(402)은 모든 사용자 시스템(402)이 동일한 네트워크를 통하여 호스트 시스템(404)에 결합되지 않도록 복수의 네트워크(예컨대, 셀룰러 및 인터넷)을 통하여 호스트 시스템에 결합될 수 있다. 사용자 시스템(402) 및 호스트 시스템(404) 중 하나 이상은 무선 방식으로 네트워크(406)에 결합될 수 있다. 일 실시예에서, 네트워크는 인터넷이며 하나 이상의 사용자 시스템(402)은 사용자 인터페이스 어플리케이션(예컨대, 웹 브라우저)를 실행하여 네트워크(406)를 통하여 호스트 시스템(404)에 접속한다. 다른 예시적인 실시예에서, 사용자 시스템(402)은 호스트 시스템(404)으로 직접적으로 (즉, 네트워크(406)를 통하지 않고) 연결된다. 추가적인 실시예에서, 호스트 시스템(404)은 저장 장치(408)에 직접적으로 연결되거나 포함한다.
저장 장치(408)는 활성 데이터베이스 쿼리 유지에 관한 데이터를 포함하며 전자 정보를 저장하기 위해 다양한 장치를 이용하여 구현될 수 있다. 일 실시예에서, 저장 장치(408)에 저장된 데이터는 하나 이상의 데이터베이스 테이블, 구체화 뷰, 민감도 범위, 민감도 인덱스, 민감도 범위, 변경-오라클, 뷰 및 플랜을 포함하지만 이에 제한되지는 않는다. 저장 장치(408)가 호스트 시스템(404)에 포함된 메모리를 이용하여 구현될 수 있거나 개별의 물리적 장치일 수 있음이 이해된다. 저장 장치(408)는 네트워크(406)를 포함하는 분산된 환경 전체에 걸쳐 통합 데이터 소스로서 논리적으로 어드레싱 가능할 수 있다. 저장 장치(408)에 저장된 정보는 검색될 수 있으며 호스트 시스템(404) 및/또는 사용자 시스템(402)을 통하여 검색 및 조작될 수 있다.
도 4에 도시된 호스트 시스템(404)은 서버에 의해 액세스 가능한 저장 매체에 저장된 컴퓨터 프로그램에 응답하여 동작하는 하나 이상의 서버를 이용하여 구현될 수 있다. 호스트 시스템(404)은 네트워크 서버(예컨대, 웹 서버)로서 동작하여 사용자 시스템(402)과 통신할 수 있다. 호스트 시스템(404)은 정보를 사용자 시스템(402)으로 송신 및 사용자 시스템(402)으로부터 수신하는 것을 다루며 관련 태스크를 수행할 수 있다. 호스트 시스템(404)은 또한 방화벽을 포함하여 호스트 시스템(404)으로의 승인되지 않은 액세스를 방지하고 승인된 액세스 상에 임의의 제한을 시행할 수 있다. 예컨대, 관리자는 전체 시스템으로의 액세스를 가지며 시스템의 일부를 수정하도록 권한을 가질 수 있다. 방화벽은 종래 기술 분야에서 알려진 바와 같은 하드웨어 및/또는 소프트웨어를 이용하여 구현될 수 있다.
호스트 시스템(404)은 또한 어플리케이션 서버로서 동작할 수 있다. 호스트 시스템(404)은 활성 데이터베이스 뭐리 유지 어플리케이션(410)을 포함하는 하나 이상의 컴퓨터 프로그램을 실행하여 여기에서 설명된 바와 같은 실시예의 양상을 제공한다. 프로세싱은 어플리케이션을 사용자 시스템(402)에게 제공함으로써 사용자 시스템(402) 및 호스트 시스템(404)에 의해 공유될 수 있다. 대안적으로, 사용자 시스템(402)은 여기에서 설명된 프로세싱의 일부 또는 전부를 수행하기 위한 독립 소프트웨어 어플리케이션을 포함할 수 있다. 전술한 바와 같이, 별개의 서버가 네트워크 서버 기능 및 어플리케이션 서버 기능을 구현하는 데 이용될 수 있음이 이해된다. 대안적으로, 네트워크 서버, 방화벽 및 어플리케이션 서버는 컴퓨터 프로그램을 실행하는 단일 서버에 의해 구현되어 필요 기능을 수행할 수 있다.
여기에서 설명된 바와 같은 민감도 인덱스의 실시예는 여러 이점을 제공한다. 하나의 이점은 민감도 인덱스의 실시예가 기록 당 하나의 엔트리를 가지는 대신 키 당 하나의 엔트리를 가짐으로 인한, 많은 기록이 키를 공유하는 상황에서의 간편함이다. 다른 이점은 민감도 인덱스의 사이즈가 보통 가장 작은 입력의 사이즈에 비례한다는 점이다. 다른 이점은 민감도 인덱스의 실시예가, 입력 자체가 인덱스 구조이든 아니든 복잡한 서브 쿼리의 결과를 포함하는 임의 순서화된 입력으로부터 만들어질 수 있다는 점이다. 민감도 인덱스의 실시예의 추가적인 이점은 이들이 조인이 연산되는 때에 최소의 오버헤드로 만들어지기 쉬우며 입력 관계에의 갱신에 직면하여 낮은 오버헤드로 유지될 수 있다는 점이다. 민감도 인덱스의 실시예의 추가적인 이점은 이들은 공통 속성 상의 다중 방식 병합 조인에 직접적으로 적용하고 일련의 쌍 조인으로 확정될 필요가 없다는 점이다.
민감도 인덱스의 실시예는 다른 기법과 함께 이용될 수 있다. 예컨대, 이들은 주어진 표현의 서브 표현에 대응하는 쿼리를 추가적으로 유지함으로써 복접한 표현의 유지를 지원하는 데 이용될 수 있다.
여기에서 설명된 유지 기법의 실시예는, 다음의 예시를 포함하지만 이에는 제하되지 않는, 많은 응용을 가진다. 이들은 초기 구체화 동안 또는 이후에 구체화 뷰를 최신으로 유지하는 데 이용될 수 있다. 이들은 롱 러닝 트랜잭션의 존재에서 데이터베이스 관리 시스템의 동시 실행을 향상하는 데 이용될 수 있다. 또한, 이들은 이전 반복에서 관찰된 서술어로의 변경에 기초하여 서술어에서의 새로운 데이터를 도출하도록 회귀적인 쿼리 프로세싱에 이용될 수 있다.
당업자에 의해 인정될 바와 같이, 본 발명의 양상은 시스템, 방법 또는 컴퓨터 프로그램 제품으로서 실시될 수 있다. 따라서, 본 발명의 양상은 전체적으로 하드웨어 실시예, 전체적으로 소프트웨어 실시예 (펌웨어, 레지던트 소프트웨어, 마이크로-코드, 등을 포함함) 또는 모두 전체적으로 "회로", "모듈" 또는 "시스템"으로 여기에서 일반적으로 지칭될 수 있는 소프트웨어 및 하드웨어 양상을 조합하는 실시예의 형태를 가질 수 있다. 추가적으로, 본 발명의 양상은 거기에 실시된 컴퓨터 판독가능 코드를 가지는 하나 이상의 컴퓨터 판독가능 매체에 실시된 컴퓨터 프로그램 제품의 형태를 가질 수 있다.
하나 이상의 컴퓨터 판독가능 매체의 임의의 조합이 이용될 수 있다. 컴퓨터 판독가능 매체는 컴퓨터 판독가능 신호 매체 또는 컴퓨터 판독가능 저장 매체일 수 있다. 컴퓨터 판독가능 저장 매체는, 예컨대, 전자적, 자기적, 광학적, 전자기적, 적외선 또는 반도체 시스템, 기기 또는 장치 또는 전술한 바의 임의의 적절한 조합일 수 있으나, 이에 제한되지는 않는다. 컴퓨터 판독가능 저장 매체의 보다 구체적인 예시(비제한적인 목록)는 하나 이상의 도선을 가지는 전기적 연결, 휴대용 컴퓨터 디스켓, 하드 디스크, RAM, ROM, EPROM 또는 플래시 메모리, 광섬유, 휴대용 CD-ROM, 광학 저장 장치, 자기 저장 장치 또는 전술한 바의 임의의 적절한 조합을 포함할 것이다. 본 문서의 맥락에서, 컴퓨터 판독가능 저장 매체는 명령어 실행 시스템, 기기 또는 장치와 관련되어 또는 이에 의해 이용하기 위한 프로그램을 포함 또는 저장할 수 있는 임의의 유형적인 매체일 수 있다.
컴퓨터 판독가능 신호 매체는, 예컨대, 기저대에서 또는 반송파의 일부로서, 거기에 실시된 컴퓨터 판독가능 프로그램 코드가 있는 전파된 데이터 신호를 포함할 수 있다. 그러한 전파된 신호는 전기-자기, 광학 또는 이들의 임의 적절한 조합을 포함하는 다양한 형식 중 임의의 것을 가질 수 있으나, 이에 제한되지는 않는다. 컴퓨터 판독가능 신호 매체는 컴퓨터 판독가능 저장 매체가 아니고 명령어 실행 시스템, 기기 또는 장치와 관련하여 또는 이에 의해 사용하기 위한 프로그램을 통신, 전파 또는 수송할 수 있는 임의의 컴퓨터 판독가능 매체일 수 있다.
컴퓨터 판독가능 매체 상에 실시된 프로그램 코드는 무선, 유선, 광섬유 케이블, RF, 등 또는 전술한 것의 임의의 적절한 조합을 포함을 포함하지만 이에는 제한되지 않는 임의의 적절한 매체를 이용하여 전송될 수 있다.
본 발명의 양상에 대한 동작을 수행하기 위한 컴퓨터 프로그램은 Java, Smalltalk, C++ 등과 같은 객체 지향형 프로그래밍 언어 및 "C" 프로그래밍 언어와 같은 종래의 절차 언어 또는 유사한 프로그래밍 언어를 포함하는 하나 이상의 프로그래밍 언어의 임의의 조합으로 기록될 수 있다. 프로그램 코드는 독립 소프트웨어 패키지와 같이, 전체적으로 사용자의 컴퓨터 상에서 실행하거나, 부분적으로 사용자의 컴퓨터 상에서 실행하거나 부분적으로 사용자의 컴퓨터 상에서 실행하고 부분적으로 원격 컴퓨터에서 실행하거나 전체적으로 원격 컴퓨터 또는 서버 상에서 실행할 수 있다. 후자의 시나리오에서, 원격 컴퓨터는 LAN(local area network) 또는 WAN(wide area network)을 포함하는 임의의 유형의 네트워크를 통하여 사용자의 컴퓨터에 연결될 수 있거나 연결이 외부 컴퓨터로 (예컨대, 인터넷 서비스 프로바이더를 이용하여 인터넷을 통하여) 이루어질 수 있다.
본 발명의 양상은 본 발명의 실시예에 따른 방법, 기기(시스템) 및 컴퓨터 프로그램 제품의 흐름도 예시 및/또는 블록도를 참조하여 위에서 설명된다. 흐름도 예시 및/또는 블록도의 각 블록 및 흐름도 예시 및/또는 블록도 내 블록들의 조합이 컴퓨터 프로그램 명령어에 의해 구현될 수 있다는 점이 이해될 것이다. 이러한 컴퓨터 프로그램 명령어는 머신을 생산하도록 범용 컴퓨터, 특수 목적용 컴퓨터 또는 다른 프로그램 가능 프로세싱 기기에 제공되어 컴퓨터 또는 다른 프로그램가능 데이터 프로세싱 기기의 프로세서를 통하여 실행하는 흐름도 및/또는 블록도 블록에 명시된 기능/작용을 구현하기 위한 수단을 생성하도록 한다.
컴퓨터 프로그램 명령어는 또한, 컴퓨터 판독가능 매체에 저장된 명령어가 흐름도 및/또는 블록도 블록에 명시된 기능/작용을 구현하는 명령어를 포함하는 제조의 제품을 생산하도록 컴퓨터, 다른 프로그램 가능 데이터 프로세싱 기기 또는 다른 장치에 지시하여 특정 방식으로 기능할 수 있는 컴퓨터 판독가능 매체에 저장될 수 있다.
컴퓨터 프로그램 명령어는 또한, 컴퓨터 또는 다른 프로그램 가능 기기 상에서 실행하는 명령어가 흐름도 및/또는 블록도 블록에 명시된 기능/작용을 구현하기 위한 프로세스를 제공하도록 컴퓨터, 다른 프로그램 가능 기기 또는 다른 장치 상에서 수행될 일련의 동작적인 단계로 하여금 컴퓨터 구현 프로세스를 생산하도록 컴퓨터, 다른 프로그램 가능 데이터 프로세싱 기기 상에 로딩될 수 있다.
도면에서의 흐름도 및 블록도는 본 발명의 다양한 실시예에 따른 시스템, 방법 및 컴퓨터 프로그램 제품의 가능한 구현예의 아키텍처, 기능 및 동작을 예시한다. 따라서, 흐름도 또는 블록도 내 각 블록은 명시된 논리적 기능을 구현하기 위한 하나 이상의 실행가능 명령어를 포함하는 모듈, 세그먼트 또는 코드의 부분을 나타낼 수 있다. 일부 대안적인 구현예에서, 블록에서 주목된 기능은 도면에 주목된 순서에서 벗어나 나타날 수 있음이 주목되어야 한다. 예컨대, 연속으로 도시된 2 개의 블록은, 사실, 실질적으로 동시에 실행될 수 있거나, 블록은 때로는 수반되는 기능에 따라 반대 순서로 실행될 수 있다. 블록도 및/또는 흐름도 예시, 블록도 및/또는 흐름도 예시에서의 블록의 조합이 명시된 기능 또는 작용 또는 특수 목적용 하드웨어 및 컴퓨터 명령어의 조합을 수행하는 특수 목적 하드웨어 기반 시스템에 의해 구현될 수 있음이 또한 주목될 것이다.
여기에서 사용된 용어는 특정 실시예를 설명하기 위한 목적을 위한 것이고 본 발명을 제한하도록 의도되지 않는다. 여기에서 이용된 바와 같이, 단수 형태 ("a", "an" 및 "the")는 문맥이 명백히 달리 지시하지 않는다면, 복수 형태도 포함하도록 의도된다. "포함한다" 및/또는 "포함하는"이라는 용어는, 본 명세서에서 사용되면, 기술된 특징, 정수, 단계, 동작, 요소 및/또는 컴포넌트의 존재를 명시하지만 하나 이상의 다른 특징, 정수, 단계, 동작, 요소, 컴포넌트 및/또는 이들의 그룹의 존재 또는 추가를 제외하지는 않는다는 점이 더 이해될 것이다.
이하의 청구항에서의 모든 기능식 요소(means or step plus function element)의 대응하는 구조, 물질, 작용 및 균등물은 구체적으로 청구된 바와 같은 다른 청구된 요소와 결합하여 기능을 수행하기 위한 임의의 구조, 물질 또는 작용을 포함하도록 의도된다. 본 발명의 설명은 예시 및 설명의 목적을 위해 제시되었지만 빠뜨림 없거나 또는 개시된 형태로의 발명으로 제한되도록 의도되지 않는다. 많은 수정 및 변경이 본 발명의 범위 및 사상에서 벗어나지 않으면서 당업자에게 분명할 것이다. 실시예는 본 발명의 원리를 가장 잘 설명하고 당업자로 하여금 고려된 특정 용도에 적합한 다양한 수정이 있는 다양한 실시예에 대하여 본 발명을 이해하도록 선정되고 설명되었다.
여기에서 도시된 흐름도는 단지 일 예시이다. 여기에서 설명된 이러한 도면 또는 단계(또는 동작)으로의 많은 변형이 본 발명의 사상을 벗어나지 않으면서 있을 수 있다. 예컨대, 단계는 상이한 순서로 수행될 수 있거나 단계가 추가, 삭제 또는 수정될 수 있다. 이러한 변형 모두는 청구된 발명의 일부로 고려된다.
당업자는 본 발명으로의 선호되는 실시예가 설명된 한편, 현재 및 미래 모두에서, 이어지는 청구항의 범위 내에 들어가는 다양한 개선 및 향상을 행할 수 있음이 이해될 것이다. 이러한 청구항은 먼저 설명된 본 발명에 대한 적절한 보호를 유지하도록 해석되어야 한다.

Claims (21)

  1. 활성 쿼리(active queries)를 유지하기 위한 방법으로서,
    데이터베이스 내 적어도 두 개의 관계(relation)에서의 데이터 항목에 기초하여 쿼리를 실행하는 단계 - 상기 실행하는 단계는 상기 쿼리와 연관된 컨트롤 정보 및 쿼리 결과를 출력하는 단계를 포함함 -;
    상기 쿼리 결과 및 상기 컨트롤 정보를 기록하는 단계;
    상기 데이터 항목 중 적어도 하나가 상기 실행하는 단계 이후에 갱신되었다는 통지를 수신하는 단계; 및
    상기 컨트롤 정보에 응답하여, 상기 실행하는 단계 이후에 갱신된 상기 데이터 항목을 반영하도록 상기 쿼리 결과를 수정하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 수정하는 단계에 기초하여, 상기 컨트롤 정보를 갱신하는 단계; 및
    상기 수정된 쿼리 결과 및 상기 갱신된 컨트롤 정보를 기록하는 단계
    를 더 포함하는 방법.
  3. 제2항에 있어서,
    상기 데이터 항목 중 적어도 하나가 상기 수정된 쿼리 결과 및 상기 갱신된 컨트롤 정보를 기록하는 단계 이후에 갱신되었다는 제2 통지를 수신하는 단계; 및
    상기 갱신된 컨트롤 정보에 응답하여, 상기 제2 통지에서 데이터 항목을 반영하도록 상기 수정된 쿼리 결과를 수정하는 단계
    를 더 포함하는 방법.
  4. 제1항에 있어서,
    상기 실행하는 단계는 병합 조인 동작(merge-join operation)을 수행하는 단계를 포함하고, 상기 컨트롤 정보는 병합 트레이스 정보에 기초하여 생성되는, 방법.
  5. 제1항에 있어서,
    상기 컨트롤 정보는 선택된 데이터 항목이 갱신되는 경우 상기 쿼리 결과 상의 잠재적인 영향을 나타내는 민감도 인덱스(sensitivity index)를 포함하는, 방법.
  6. 제5항에 있어서,
    상기 선택된 데이터 항목은 상기 데이터베이스 내 다른 데이터 항목을 액세스하는 데 이용되는 키(key)인, 방법.
  7. 제1항에 있어서,
    상기 쿼리와 연관된 상기 컨트롤 정보는 상기 실행하는 단계 동안 수집된 트레이스 정보에 기초하는, 방법.
  8. 제1항에 있어서,
    상기 기록하는 단계는 상기 쿼리 결과의 뷰(view)를 구체화(materialize)하는 단계를 포함하는, 방법.
  9. 제1항에 있어서,
    상기 쿼리는 트랜잭션(transaction)이 커밋(commit)하는 때에 상기 데이터베이스의 상태와 일치하도록 요구되는 상기 트랜잭션을 형성하는 복수의 쿼리 중 하나인, 방법.
  10. 제9항에 있어서,
    상기 트랜잭션은 다른 트랜잭션과 동시에 실행하고 상기 실행하는 단계 이후에 갱신된 상기 데이터 항목 중 적어도 하나는 상기 데이터베이스에 커밋하는 상기 다른 트랜잭션에 응답하여 상기 다른 트랜잭션에 의해 갱신된 것인, 방법.
  11. 활성 쿼리를 유지하기 위한 시스템으로서,
    컴퓨터 판독가능 명령어를 가지는 메모리; 및
    방법을 수행하기 위한 상기 컴퓨터 판독가능 명령어를 실행하기 위한 프로세서
    를 포함하고, 상기 방법은,
    데이터베이스 내 적어도 두 개의 관계(relation)에서의 데이터 항목에 기초하여 쿼리를 실행하는 단계 - 상기 실행하는 단계는 상기 쿼리와 연관된 컨트롤 정보 및 쿼리 결과를 출력하는 단계를 포함함 -;
    상기 쿼리 결과 및 상기 컨트롤 정보를 기록하는 단계;
    상기 데이터 항목 중 적어도 하나가 상기 실행하는 단계 이후에 갱신되었다는 통지를 수신하는 단계; 및
    상기 컨트롤 정보에 응답하여, 상기 실행하는 단계 이후에 갱신된 상기 데이터 항목을 반영하도록 상기 쿼리 결과를 수정하는 단계
    를 포함하는, 시스템.
  12. 제11항에 있어서,
    상기 방법은
    상기 수정하는 단계에 기초하여, 상기 컨트롤 정보를 갱신하는 단계; 및
    상기 수정된 쿼리 결과 및 상기 갱신된 컨트롤 정보를 기록하는 단계
    를 더 포함하는, 시스템.
  13. 제12항에 있어서,
    상기 방법은,
    상기 데이터 항목 중 적어도 하나가 상기 수정된 쿼리 결과 및 상기 갱신된 컨트롤 정보를 기록하는 단계 이후에 갱신되었다는 제2 통지를 수신하는 단계; 및
    상기 갱신된 컨트롤 정보에 응답하여, 상기 제2 통지에서 데이터 항목을 반영하도록 상기 수정된 쿼리 결과를 수정하는 단계
    를 더 포함하는, 시스템.
  14. 제12항에 있어서,
    상기 실행하는 단계는 병합 조인 동작(merge-join operation)을 수행하는 단계를 포함하고, 상기 컨트롤 정보는 병합 트레이스 정보에 기초하여 생성되는, 시스템.
  15. 제11항에 있어서,
    상기 컨트롤 정보는 선택된 데이터 항목이 갱신 되는 경우 상기 쿼리 결과 상의 잠재적인 영향을 나타내는 민감도 인덱스(sensitivity index)를 포함하는, 시스템.
  16. 제15항에 있어서,
    상기 선택된 데이터 항목은 상기 데이터베이스 내 다른 데이터 항목을 액세스하는 데 이용되는 키(key)인, 시스템.
  17. 제11항에 있어서,
    상기 쿼리와 연관된 상기 컨트롤 정보는 상기 실행하는 단계 동안 수집된 트레이스 정보에 기초하는, 시스템.
  18. 제11항에 있어서,
    상기 기록하는 단계는 상기 쿼리 결과의 뷰(view)를 구체화하는 단계를 포함하는, 시스템.
  19. 제11항에 있어서,
    상기 쿼리는 트랜잭션(transaction)이 커밋(commit)하는 때에 상기 데이터베이스의 상태와 일치하도록 요구되는 상기 트랜잭션을 형성하는 복수의 쿼리 중 하나인, 시스템.
  20. 제19항에 있어서,
    상기 트랜잭션은 다른 트랜잭션과 동시에 실행하고 상기 실행하는 단계 이후에 갱신된 상기 데이터 항목 중 적어도 하나는 상기 데이터베이스에 커밋하는 상기 다른 트랜잭션에 응답하여 상기 다른 트랜잭션에 의해 갱신된 것인, 시스템
  21. 활성 쿼리를 유지하기 위한 컴퓨터 프로그램 제품으로서, 상기 컴퓨터 프로그램 제품은 컴퓨터 프로세서에 의해 실행되는 경우 상기 컴퓨터 프로세서로 하여금 방법을 구현하는, 실시된 컴퓨터 판독가능 프로그램 코드를 가지는 컴퓨터 판독가능 저장 매체를 포함하고, 상기 방법은,
    데이터베이스 내 적어도 두 개의 관계(relation)에서의 데이터 항목에 기초하여 쿼리를 실행하는 단계 - 상기 실행하는 단계는 상기 쿼리와 연관된 컨트롤 정보 및 쿼리 결과를 출력하는 단계를 포함함 -;
    상기 쿼리 결과 및 상기 컨트롤 정보를 기록하는 단계;
    상기 데이터 항목 중 적어도 하나가 상기 실행하는 단계 이후에 갱신되었다는 통지를 수신하는 단계; 및
    상기 컨트롤 정보에 응답하여, 상기 실행하는 단계 이후에 갱신된 상기 데이터 항목을 반영하도록 상기 쿼리 결과를 수정하는 단계
    를 포함하는, 컴퓨터 프로그램 제품.
KR1020157019642A 2012-12-20 2013-12-19 활성 데이터베이스 쿼리의 유지 KR20150098660A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/722,067 2012-12-20
US13/722,067 US9424304B2 (en) 2012-12-20 2012-12-20 Maintenance of active database queries
PCT/US2013/076483 WO2014100383A1 (en) 2012-12-20 2013-12-19 Maintenance of active database queries

Publications (1)

Publication Number Publication Date
KR20150098660A true KR20150098660A (ko) 2015-08-28

Family

ID=50975892

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157019642A KR20150098660A (ko) 2012-12-20 2013-12-19 활성 데이터베이스 쿼리의 유지

Country Status (8)

Country Link
US (2) US9424304B2 (ko)
EP (1) EP2936351B1 (ko)
JP (1) JP6198845B2 (ko)
KR (1) KR20150098660A (ko)
CN (1) CN104854587B (ko)
CA (1) CA2895231C (ko)
IL (1) IL239173B (ko)
WO (1) WO2014100383A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016183553A1 (en) 2015-05-14 2016-11-17 Walleye Software, LLC Query dispatch and execution architecture
CN106021326A (zh) * 2016-05-03 2016-10-12 无锡雅座在线科技发展有限公司 基于流计算的事件处理方法和装置
US10866943B1 (en) 2017-08-24 2020-12-15 Deephaven Data Labs Llc Keyed row selection
US11151111B2 (en) * 2017-11-30 2021-10-19 Futurewei Technologies, Inc. Redistributing table data in a database cluster
JP6850720B2 (ja) * 2017-12-11 2021-03-31 Kddi株式会社 問合せ文実行装置、問合せ文実行方法及び問合せ文実行プログラム
US20190294713A1 (en) * 2018-03-22 2019-09-26 Accenture Global Solutions Limited Database impact analysis
US10789242B2 (en) * 2018-04-25 2020-09-29 Microsoft Technology Licensing, Llc Managing materialized views in eventually consistent distributed data stores
US11126622B1 (en) * 2021-03-02 2021-09-21 Chaossearch, Inc. Methods and apparatus for efficiently scaling result caching

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5325525A (en) * 1991-04-04 1994-06-28 Hewlett-Packard Company Method of automatically controlling the allocation of resources of a parallel processor computer system by calculating a minimum execution time of a task and scheduling subtasks against resources to execute the task in the minimum time
US5276872A (en) 1991-06-25 1994-01-04 Digital Equipment Corporation Concurrency and recovery for index trees with nodal updates using multiple atomic actions by which the trees integrity is preserved during undesired system interruptions
US5280612A (en) 1991-11-26 1994-01-18 International Business Machines Corporation Multiple version database concurrency control system
JP3441807B2 (ja) 1994-09-19 2003-09-02 株式会社日立製作所 B木インデクスの管理方法およびシステム
US6889358B1 (en) 1998-01-08 2005-05-03 Lucent Technologies Inc. Concurrency control in materialized views of a database
US6272502B1 (en) * 1998-05-11 2001-08-07 Lucent Technologies Inc. Refreshing materialized views of a database to maintain consistency with underlying data
US6205451B1 (en) * 1998-05-22 2001-03-20 Oracle Corporation Method and apparatus for incremental refresh of summary tables in a database system
US6134543A (en) 1998-07-02 2000-10-17 Oracle Corporation Incremental maintenance of materialized views containing one-to-one lossless joins
US6353835B1 (en) 1998-08-03 2002-03-05 Lucent Technologies Inc. Technique for effectively maintaining materialized views in a data warehouse
US6363387B1 (en) * 1998-10-20 2002-03-26 Sybase, Inc. Database system providing methodology for enhancing concurrency using row update bit and deferred locking
US6360219B1 (en) 1998-12-16 2002-03-19 Gemstone Systems, Inc. Object queues with concurrent updating
US6353828B1 (en) * 1999-05-14 2002-03-05 Oracle Corp. Concurrency control for transactions that update base tables of a materialized view using different types of locks
US6484159B1 (en) 1999-05-20 2002-11-19 At&T Corp. Method and system for incremental database maintenance
US6983291B1 (en) 1999-05-21 2006-01-03 International Business Machines Corporation Incremental maintenance of aggregated and join summary tables
US6763352B2 (en) * 1999-05-21 2004-07-13 International Business Machines Corporation Incremental maintenance of summary tables with complex grouping expressions
US6484172B1 (en) 1999-12-24 2002-11-19 Electronics And Telecommunications Research Institute Concurrency control method for high-dimensional index structure using latch and lock
US6356891B1 (en) 2000-04-20 2002-03-12 Microsoft Corporation Identifying indexes on materialized views for database workload
US6366903B1 (en) 2000-04-20 2002-04-02 Microsoft Corporation Index and materialized view selection for a given workload
US6356890B1 (en) * 2000-04-20 2002-03-12 Microsoft Corporation Merging materialized view pairs for database workload materialized view selection
US6510422B1 (en) * 2000-09-27 2003-01-21 Microsoft Corporation Cost based materialized view selection for query optimization
US6868414B2 (en) 2001-01-03 2005-03-15 International Business Machines Corporation Technique for serializing data structure updates and retrievals without requiring searchers to use locks
US7293028B2 (en) 2001-06-08 2007-11-06 Sap Ag Cache-conscious concurrency control scheme for database systems
CA2365692A1 (en) 2001-06-21 2002-12-21 International Business Machines Corporation Method for recommending indexes and materialized views for a database workload
US7181453B2 (en) 2001-06-28 2007-02-20 Mysql Ab Method for concurrency control for a secondary index
US6708179B1 (en) 2001-09-28 2004-03-16 Oracle International Corporation Incremental refresh of materialized views for many-to-many relationships
US20030101183A1 (en) 2001-11-26 2003-05-29 Navin Kabra Information retrieval index allowing updating while in use
US6882993B1 (en) * 2002-01-28 2005-04-19 Oracle International Corporation Incremental refresh of materialized views with joins and aggregates after arbitrary DML operations to multiple tables
US7426559B2 (en) * 2002-05-09 2008-09-16 International Business Machines Corporation Method for sequential coordination of external database application events with asynchronous internal database events
US7146366B2 (en) 2002-09-13 2006-12-05 Netezza Corporation Distributed concurrency control using serialization ordering
CA2414983A1 (en) 2002-12-23 2004-06-23 Ibm Canada Limited-Ibm Canada Limitee Independent deferred incremental refresh of materialized views
US7139783B2 (en) 2003-02-10 2006-11-21 Netezza Corporation Materialized view system and method
US7523462B1 (en) 2003-05-27 2009-04-21 International Business Machines Corporation Method for providing a real time view of heterogeneous enterprise data
US20050091180A1 (en) * 2003-10-22 2005-04-28 Nitzan Peleg Method and apparatus for refreshing materialized views
US8359325B1 (en) * 2004-02-25 2013-01-22 Teradata Us, Inc. Determining materialized view coverage for join transactions
US7739262B2 (en) * 2004-03-19 2010-06-15 Microsoft Corporation Enforcing currency and consistency constraints in database query processing
US7890497B2 (en) * 2004-04-14 2011-02-15 Oracle International Corporation Using estimated cost to schedule an order for refreshing a set of materialized views (MVS)
US7769770B2 (en) 2004-07-14 2010-08-03 Microsoft Corporation Secondary index and indexed view maintenance for updates to complex types
US7720845B2 (en) * 2004-08-13 2010-05-18 Yahoo! Inc. Systems and methods for updating query results based on query deltas
US7490084B2 (en) 2004-09-24 2009-02-10 Oracle Corporation Deferred incorporation of updates for spatial indexes
US7930297B2 (en) 2004-12-03 2011-04-19 Oracle International Corporation Materialized view maintenance and change tracking
US7792839B2 (en) 2005-01-13 2010-09-07 International Business Machines Corporation Incremental indexing of a database table in a database
US8126870B2 (en) * 2005-03-28 2012-02-28 Sybase, Inc. System and methodology for parallel query optimization using semantic-based partitioning
US7895186B2 (en) * 2005-03-31 2011-02-22 Oracle International Corp. Method and mechanism of materialized view mix incremental refresh
US7677441B2 (en) 2005-04-01 2010-03-16 Microsoft Corporation Relaxed currency constraints
US20060294156A1 (en) 2005-06-24 2006-12-28 Nec Laboratories, Inc Incremental maintenance of path-expression views
US8468152B2 (en) * 2005-08-04 2013-06-18 International Business Machines Corporation Autonomic refresh of a materialized query table in a computer database
US7647298B2 (en) * 2006-03-23 2010-01-12 Microsoft Corporation Generation of query and update views for object relational mapping
US7680767B2 (en) * 2006-03-23 2010-03-16 Microsoft Corporation Mapping architecture with incremental view maintenance
US7577658B2 (en) 2006-10-06 2009-08-18 Microsoft Corporation Hierarchical locking in B-tree indexes
US8260761B2 (en) * 2006-10-20 2012-09-04 Ianywhere Solutions, Inc. Detecting performance degrading design and algorithm issues in database applications
US7805420B2 (en) 2006-11-20 2010-09-28 Microsoft Corporation Versioning and concurrency control for multiple client access of data
US7797356B2 (en) * 2007-02-02 2010-09-14 Microsoft Corporation Dynamically detecting exceptions based on data changes
US9483525B2 (en) 2007-04-30 2016-11-01 Microsoft Technology Licensing, Llc Reducing update conflicts when maintaining views
US7853604B2 (en) 2007-07-12 2010-12-14 Oracle International Corporation Inline view query rewrite using a materialized view
US20090083238A1 (en) * 2007-09-21 2009-03-26 Microsoft Corporation Stop-and-restart style execution for long running decision support queries
US20090210429A1 (en) 2008-02-19 2009-08-20 Yahoo! Inc. System and method for asynchronous update of indexes in a distributed database
US20090213269A1 (en) 2008-02-21 2009-08-27 David Dozoretz Content Slider
US8065269B2 (en) 2008-12-19 2011-11-22 Ianywhere Solutions, Inc. Immediate maintenance of materialized views
US9177023B2 (en) * 2009-02-02 2015-11-03 Hewlett-Packard Development Company, L.P. Evaluation of database query plan robustness landmarks using operator maps or query maps
US20110137875A1 (en) * 2009-12-09 2011-06-09 Oracle International Corporation Incremental materialized view refresh with enhanced dml compression
US8306959B2 (en) 2010-08-06 2012-11-06 Ianywhere Solutions, Inc. Incremental maintenance of immediate materialized views with outerjoins
US8775426B2 (en) 2010-09-14 2014-07-08 Microsoft Corporation Interface to navigate and search a concept hierarchy
US20130166523A1 (en) * 2011-12-21 2013-06-27 Sybase, Inc. Parallel Execution In A Transaction Using Independent Queries

Also Published As

Publication number Publication date
EP2936351A4 (en) 2016-08-17
WO2014100383A1 (en) 2014-06-26
CN104854587A (zh) 2015-08-19
CA2895231A1 (en) 2014-06-26
CA2895231C (en) 2021-01-26
IL239173B (en) 2018-02-28
EP2936351A1 (en) 2015-10-28
IL239173A0 (en) 2015-07-30
JP6198845B2 (ja) 2017-09-20
US20160259823A1 (en) 2016-09-08
US20140181081A1 (en) 2014-06-26
US10430409B2 (en) 2019-10-01
JP2016509281A (ja) 2016-03-24
EP2936351B1 (en) 2019-05-15
US9424304B2 (en) 2016-08-23
CN104854587B (zh) 2018-11-02

Similar Documents

Publication Publication Date Title
US10430409B2 (en) Maintenance of active database queries
CN105630864B (zh) 存储行标识符值的字典的强制排序
EP2746970B1 (en) Timeline index for managing temporal data
US8566333B2 (en) Multiple sparse index intelligent table organization
US20150142733A1 (en) System and method for efficient management of big data in a database using streaming tables
US20160306848A1 (en) Optimizing relational database queries with multi-table predicate expressions
US8090700B2 (en) Method for updating databases
US9734176B2 (en) Index merge ordering
US11704317B2 (en) Partial group by for eager group by placement query plans
US9390111B2 (en) Database insert with deferred materialization
Abedjan et al. Detecting unique column combinations on dynamic data
US10380115B2 (en) Cross column searching a relational database table
US8548980B2 (en) Accelerating queries based on exact knowledge of specific rows satisfying local conditions
US10970275B2 (en) System and methods for providing a data store having linked differential data structures
US10733187B2 (en) Transforming a scalar subquery
Xu et al. Efficiently answer top-k queries on typed intervals
Stantic et al. The POINT approach to represent now in bitemporal databases
Pirzadeh On the performance evaluation of big data systems
Theodorakis et al. Aion: Efficient Temporal Graph Data Management
CN116894022A (zh) 利用结构化审计日志来提高数据库审计的准确性和效率
Hamdoon et al. Pragmatic approach to query optimization
Pearl et al. Much Ado About Indexes
Antognini et al. Execution Plans

Legal Events

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