KR20060043011A - 암시 술어를 이용하는 개선된 쿼리 최적화기 - Google Patents

암시 술어를 이용하는 개선된 쿼리 최적화기 Download PDF

Info

Publication number
KR20060043011A
KR20060043011A KR1020050013717A KR20050013717A KR20060043011A KR 20060043011 A KR20060043011 A KR 20060043011A KR 1020050013717 A KR1020050013717 A KR 1020050013717A KR 20050013717 A KR20050013717 A KR 20050013717A KR 20060043011 A KR20060043011 A KR 20060043011A
Authority
KR
South Korea
Prior art keywords
predicate
query
implicit
index
data
Prior art date
Application number
KR1020050013717A
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 KR20060043011A publication Critical patent/KR20060043011A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • 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
    • 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/24542Plan optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Operations Research (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

암시 술어들을 사용하는 개선된 쿼리 최적화기가 개시된다. 본 발명의 시스템은, 쿼리 최적화 컴포넌트가 여분의 술어들을 쿼리 내에 도입하는 것을 용이하게 한다. 그리고, 이러한 여분의 술어들은 원본 쿼리와 동일한 결과를 제공하고, 최적화 컴포넌트에 전송되어 새로운 술어가 등가 술어(구 술어를 대체함)인지 암시 술어(구 술어가 유지됨)인지를 지정하는 규칙들에 의해 지시되는 대로 사용되고, 비용 기반 대용어로서 고려되어 유용하지 않은 경우 폐기되고, 인덱스 사용에 연관되며, 표준 인덱스와 다치 인덱스 양자 모두를 고려할 수 있는 것을 용이하게 한다.
쿼리, 암시 술어, 데이터베이스, 최적화

Description

암시 술어를 이용하는 개선된 쿼리 최적화기{IMPROVED QUERY OPTIMIZER USING IMPLIED PREDICATES}
도 1은 본 발명에 따른 시스템을 나타내는 도면.
도 2는 본 발명의 일 프로세스의 흐름도.
도 3은 본 발명에 따른 시스템을 나타내는 도면.
도 4는 본 발명에 따라 표준 인덱스를 처리하는 방법을 위한 흐름도.
도 5는 본 발명에 따라 재기입 규칙에 의해 생성되는 암시 술어를 가진 쿼리에 대한 초기 연산자 트리 및 최종 연산자 트리를 나타내는 도면.
도 6은 본 발명에 따라 다치 인덱스를 처리하는 시스템의 블록도.
도 7은 본 발명에 따라 다치 인덱스를 처리하는 방법의 흐름도.
도 8은 본 발명에 따라 인공 지능을 이용하는 시스템의 도면.
도 9는 개시된 아키텍쳐를 실행할 수 있는 컴퓨터의 블록도.
도 10은 본 발명에 따른 예시적인 컴퓨팅 환경의 개략적인 블록도.
<도면의 주요 부분에 대한 부호 설명>
102: 최적화 컴포넌트
104: 데이터 저장소
106: 쿼리
108: 쿼리 컴포넌트
110: 술어 컴포넌트
114: 암시 술어
116: 등가 술어
118: 잔여 술어
120: 비용 기반 최적화기
302: 메타데이터 엔진
304: 규칙 컴포넌트
904: 프로세싱 유닛
906: 시스템 메모리
914: 내부 HDD; 외부 HDD
920: CD 드라이브
922: 디스크
924, 926, 928: 인터페이스
930: 오퍼레이팅 시스템
932: 애플리케이션
934: 모듈
936: 데이터
938: 키보드
940: 마우스
942: 입력 장치 인터페이스
944: 모니터
946: 비디오 어댑터
948: 원격 컴퓨터
950: 메모리/저장 장치
956: 통신망 어댑터
958: 모뎀
1002: 클라이언트
104: 서버
1006: 통신 프레임워크
1008: 클라이언트 데이터 저장 장치
1010: 서버 데이터 저장 장치
본 발명은 데이터베이스 시스템에 관한 것으로서, 보다 상세하게는 데이터베이스 시스템의 쿼리 최적화에 관한 것이다.
데이터베이스 시스템에서 쿼리는 절차적 실행 계획(procedural execution plan)으로의 변환을 필요로 하는 하이 레벨의 선언적(비절차적) 언어로 제시된다. 쿼리 최적화의 목적은 이러한 선언적 요구를 절차적 계획으로 변환할 수 있는 방법 들을 탐구하여, 탐구된 것들 중에서 가장 효율적인 계획을 선택하는 것이다. 원하는 쿼리 실행 계획은 일련의 원시 데이터베이스 연산자들로 이루어질 수 있으며, 통상적으로 최소의 추정 실행 비용에 따라 선택된다. 종래의 쿼리 최적화 시스템의 한 단점은 제한된 크기의 열 값들에 대한 비교를 포함한다. 데이터베이스 인덱스들은 인덱스의 검색 키로 사용되는 필드들의 크기에 대한 실질적인 제한을 갖는다. 이것은 인덱스의 검색 키로 사용될 수 있는 열들에 대한 제한을 나타낸다. 일 구현예에 있어서, 인덱스들은 길이가 900 바이트 이상인 키를 가질 수 없다. 예를 들어, X>900인 경우, VARCHAR(X) 유형의 열은 인덱싱될 수 없다. 이러한 데이터 유형은 인덱싱 불가 유형으로 표시된다. 또 하나의 단점은 최적화 프로세스의 연산 복잡성 및 선택된 계획의 실행 효율에 관한 것이다. 이러한 단점들 외에도, 인덱스 선택에 대한 표준 접근 방식은 (예를 들어 열의 함수를 다른 값들과 비교하는 것이 아니라) 적당한 열을 다른 값들에 대해 비교하는 술어들만을 고려하는 것으로서 제한된다.
따라서, 쿼리 술어에 의해 암시된 표현식에 대한 인덱싱을 가능하게 하는 개선된 쿼리 최적화 메카니즘이 요구된다.
다음은 본 발명의 몇몇 양태의 기본적인 이해를 제공하기 위한 본 발명의 개요를 나타낸다. 이 개요는 본 발명의 광범위한 개요가 아니다. 이것은 본 발명의 핵심/주요 구성요소를 확인하거나 본 발명의 범위를 나타내기 위한 것이 아니다. 그 목적은 단지 후술되는 상세한 설명에 대한 서론으로서 본 발명의 소정의 개념을 간단한 형태로 나타내고자 하는 것이다.
본 명세서에 개시되고 청구된 본 발명의 일 양태는 쿼리 최적화 컴포넌트가 또 하나의 술어 조건으로부터 인덱싱된 열 상에서의 간단한 비교를 추론할 수 있게 하는 것을 용이하게 하는 시스템이다. 이것은 쿼리 안에 적어도 다음 사항을 용이하게 하는 여분의 술어들을 도입함으로써 발생한다. 여분의 술어들은 원본 쿼리와 동일한 결과를 제공하며, 최적화 컴포넌트로 전송되는 규칙들에 의해 지시되는 바와 같이 사용된다. 이들 규칙은 새로운 술어가 등가 술어인지(구 술어를 대체함), 암시 술어인지(구 술어가 보존됨)를 특정한다. 여분의 술어들은 비용 기반 대용어로도 고려되며, 유용하지 않은 경우 폐기된다. 또한, 술어들은 인덱스 사용에 연관될 수 있으며, 표준 및 다치 인덱스들로서 고려될 수 있다.
그의 지원으로서, 본 발명은 데이터 저장소에서 쿼리 최적화를 용이하게 하는 시스템을 포함하는데, 이 시스템은 데이터 저장소의 데이터에 대해 처리될 쿼리를 수신하는 쿼리 컴포넌트를 포함하며, 상기 쿼리는 원본 술어를 포함한다. 또한, 시스템은 원본 술어를, 암시 술어, 등가 술어 및 잔여 술어 중 적어도 하나를 포함하는 하나 이상의 새로운 술어로 변환하는 술어 컴포넌트를 포함하며, 암시 술어 또는 등가 술어 중 어느 하나는 데이터에 대해 처리되어, 총 평가 비용이 크게 감소하도록 최상의 솔루션을 리턴한다.
본 발명의 다른 양태에서, 시스템은 본 발명의 하나 이상의 양태를 자동화하기 위하여 분류기 형태의 인공 지능을 이용한다.
본 발명의 또 다른 양태에서, 간단한 비교 상에서 카디널리티를 추정하여 정 확도를 향상시키기 위한 프로세스가 제공된다. 이것은 복잡한 조건 또는 술어 상에서 추정을 행하는 것보다 비용 효과적이다.
전술한 목적 및 관련 목적의 달성을 위해, 본 명세서에는 본 발명의 소정의 예시적인 양태들이 아래의 설명 및 첨부 도면과 관련하여 설명되다. 그런, 이들 양태는 본 발명의 원리가 이용될 수 있는 다양한 방법들 중 소수만을 나타내는 것이며, 본 발명은 그러한 모든 양태 및 그 균등물을 포함하는 것으로 의도된다. 본 발명의 다른 이점 및 신규한 특징은 도면들과 관련하여 고려할 때 아래의 본 발명의 상세한 설명으로부터 명백할 것이다.
이제, 본 발명은 도면들을 참조하여 설명되는데, 도면 전반에서 동일한 부호는 동일한 요소를 나타내는 데 사용된다. 아래의 설명에서, 설명을 위해, 본 발명의 철저한 이해를 제공하기 위하여 다수의 특정 세부 사항이 설명된다. 그러나, 본 발명은 이러한 특정 세부 사항들 없이도 실시될 수 있음이 명백할 것이다. 다른 예에서, 본 발명의 설명을 용이하게 하기 위하여 공지된 구조 및 장치들이 블록도의 형태로 도시된다.
본 명세서에서 사용되는 "컴포넌트" 및 "시스템"이라는 용어는 컴퓨터 관련 엔티티, 즉 하드웨어, 하드웨어 및 소프트웨어의 조합, 소프트웨어 또는 실행 중인 소프트웨어를 의미하는 것으로 의도된다. 예를 들어, 컴포넌트는 프로세서 상에서 실행되는 프로세스, 프로세서, 객체, 실행 가능물(executable), 실행 스레드, 프로그램 및/또는 컴퓨터일 수 있으나 이에 한하지 않는다. 예를 들어, 서버 상에서 실행되는 애플리케이션 및 서버 모두 컴포넌트일 수 있다. 하나 이상의 컴포넌트가 프로세스 및/또는 실행 스레드 안에 상주할 수 있으며, 하나의 컴포넌트가 하나의 컴퓨터 상에만 배치되고/거나 2개 이상의 컴퓨터 사이에 분산될 수 있다.
본 명세서에서 사용되는 "추론한다" 또는 "추론"이라는 용어는 일반적으로 이벤트 및/또는 데이터를 통해 캡쳐되는 한 세트의 관측으로부터 시스템, 환경 및/또는 사용자의 상태를 판단하거나 추론하는 프로세스를 말한다. 추론은 예를 들어 특정 컨텍스트 또는 액션을 식별하는 데 이용되거나, 상태들에 대한 확률 분포를 생성할 수 있다. 추론은 확률에 근거할 수 있다. 즉, 데이터 및 이벤트의 고려에 근거한 관련 상태들에 대한 확률 분포의 계산일 수 있다. 또한, 추론은 한 세트의 이벤트 및/또는 데이터로부터 하이 레벨 이벤트를 구성하는 데 사용되는 기술을 말할 수 있다. 이러한 추론은 이벤트들이 시간적으로 근접하게 상관되어 있는지에 관계 없이, 그리고 이벤트 및 데이터가 하나 또는 여러 이벤트 및 데이터 소스로부터 나온 것인지에 관계 없이 한 세트의 관측된 이벤트 및/또는 저장된 이벤트 데이터로부터 새로운 이벤트 또는 액션을 구성하는 결과를 낳는다.
이제 도 1을 참조하면, 본 발명에 따른 시스템(100)이 도시되어 있다. 데이터 저장소(104)에 대한 검색을 최적화하기 위한 최적화 컴포넌트(102)가 제공된다. 최적화 컴포넌트(102)는 데이터 저장소(104)와 연관된 쿼리 최적화기일 수 있으며, 이 최적화기는 본 발명에 따른 개선점을 갖추고 있다. 본 발명은 최적화기라고 하는 DBMS(데이터베이스 관리 시스템) 컴파일러의 일부에 의해 구현될 수 있다. 최적화기는 검색 쿼리를 초기에 평가하여 DBMS 실행기를 위한 키 표현식을 생성하는 DBMS 컴파일러의 프로세스 컴포넌트이다. 최적화 컴포넌트(102)는 데이터 저장소(104)의 데이터에 대해 처리될 쿼리(106)를 수신한다. 아래의 설명은 검색 술어가 데이터 저장소의 테이블 데이터와 직접 정렬되지 않는다는 점에서 데이터 저장소에 대해 직접 처리될 수 없는 쿼리를 다룬다. 따라서, 검색 결과를 얻기 위해서는 추가적인 처리가 요구된다.
그에 대한 지원으로서, 최적화 컴포넌트(102)는 쿼리(106)를 수신하는 쿼리 컴포넌트(108)를 더 포함한다. 쿼리 컴포넌트(108)는 쿼리(106)로부터 하나 이상의 쿼리 술어를 추출하여, 이를 술어 컴포넌트(110)로 전송한다. 본 설명에서, 술어는 값들에 대한 사실(fact)을 표명하는 표현식이다. 표현식이 참(TRUE)으로 판정되면, 관련 조건이 만족된다. 표현식이 거짓(FALSE)으로 판정되면, 조건은 만족되지 않는다. 여기서, 술어는 초기에 데이터에 대해 적용되어 어떠한 결과도 발생시키지 않았다. 본 발명에 따르면, 술어 컴포넌트(110)는 불일치 술어(unmatchable prediction)를 분석하고, 성공적인 검색의 전망을 크게 증가시키는 하나 이상의 새로운 술어(112)를 도입한다. 하나 이상의 새로운 술어(112)는 암시 술어(implied predicate, 114), 등가 술어(equivalent predicate, 116) 및 잔여 술어(residual predicate, 118) 중 하나 또는 임의의 조합을 포함할 수 있다.
본 발명은 최적화 컴포넌트(102)가 쿼리에 하나 이상의 여분의(새로운) 술어(112)를 도입하는 것을 허용하는데, 이 하나 이상의 여분의 술어는 원본 쿼리와 동일한 결과를 제공하고, 최적화 컴포넌트(102)로 전송되어 새로운 술어가 등가 술어(구 술어를 대체함)인지 암시 술어(구 술어가 유지됨)인지를 지정하는 규칙들에 의 해 지시된 대로 사용되고, 비용 기반 대용어로서 고려되고 유용하지 않은 경우 폐기되고, 인덱스 사용에 연관되며, 표준 인덱스와 다치 인덱스 양자 모두를 고려할 수 있는 것을 용이하게 한다. 비용 기반 최적화기(120)가 최적화 컴포넌트의 일부로서 포함되어, 하나 이상의 새로운 술어(112)가 성공적인 검색의 완수와 관련된 비용을 줄이는지를 판정하는 것을 용이하게 한다.
인덱스 사용에 대한 종래의 제한은 쿼리의 성능을 감소시킬 수 있다. 여전히 단점을 갖는 이러한 문제를 해결하는 하나의 대안은 다음과 같다. 예를 들어, T1.c_charmax 및 T2.c_charmax라고 하는 VARCHAR(MAX) 유형의 2개 열이 테이블 T1, T2에 각각 존재하는 것으로 가정하자. 이들 열 중 어느 것도 인덱싱이 가능하지 않지만, HASH(T1.c_charmax)에 의해 계산된 열 T1.c_ccolumn 상에는 인덱스가 존재한다. T1.c_charmax=T2.c_charmax가 HASH(T1.c_charmax)=HASH(T2.c_charmax), 따라서 T1.c_ccolumn=HASH(T2.c_charmax)를 의미하므로, 후자의 술어는 쿼리 내에 명시적으로 포함될 수 있고, 이렇게 명시적으로 재기입된 쿼리의 결과는 아래의 2개의 쿼리이어야 하며, 각각 동일한 결과를 산출한다는 점에서 등가이어야 한다.
원본 쿼리 새로운 명시적인 쿼리
SELECT T1.c_charmax SELECT T1.c_charmax
FROM T1, T2 FROM T1, T2
WHERE T1.c_charmax=T2.c_charmax WHERE T1.c_charmax=T2.c_charmax
AND T 1 .c_ccolumn=HASH(T 2 .c_charmax)
이러한 접근 방법은 열이 인덱스 불가 유형일 때, 그 열의 인덱스 가능한 유형의 열의 소정의 함수(예를 들어 HASH, 프리픽스) 상에서 인덱스를 정의하는 것이 가능할 수 있음을 나타낸다. 인덱스가 정의되면, T1.c_ccolumn 상에서 인덱스를 이용하는 것이 가능하게 된다. 그러나, 몇 가지 단점이 있다. 이것은 프로그래머가 물리적인 고려에 기초하여 여분의 술어를 기입하도록 강요함으로써 쿼리 언어의 "비절차성(non-procedurality)"에 역행한다. T1.c_ccolumn 상의 인덱스를 포함하는 계획은 최적이 아닐 수 있고, T1.c_ccolumn 상의 인덱스는 프로그래머가 모르는 사이에 폐기될 수 있고, 또는 이러한 술어를 재기입하는 다른 방법들이 있을 수 있다. 이들 중 어느 경우에나, 쿼리 실행은 여분의 불필요한 술어의 평가를 수반하게 된다.
이제 도 2를 참조하면, 본 발명의 일 프로세스의 흐름도가 도시되어 있다. 설명의 간략화를 위해 예를 들어 흐름도의 형태로 본 명세서에 도시된 하나 이상의 방법이 일련의 동작들로서 도시되고 설명되지만, 본 발명에 따르면 동작들은 본 명세서에 도시되고 설명된 것과 다른 순서로, 및/또는 다른 동작들과 동시에 이루어질 수 있으므로 본 발명은 동작들의 순서에 의해 제한되지 않는다는 것을 이해할 것이다. 예를 들어, 당업자들은 본 발명의 방법이 대안으로 상태도에서와 같이 일련의 상호 관련된 상태들 또는 이벤트들로서 표현될 수 있다는 것을 이해할 것이다. 더욱이, 도시된 동작들 모두가 본 발명에 따른 방법을 구현하는 데 필요한 것 은 아닐 수 있다.
블럭(200)에서, 직접 검색할 수 없는 불일치 쿼리가 수신된다. 블럭(202)에서, 최적화 컴포넌트는 쿼리 술어를 접속사들(conjuncts)로 분해하는데, 이들 중 하나는 기존 규칙에 의해 잠재적으로 사용될 수 있다. 블럭(204)에서, 최적화 컴포넌트는 기존 규칙들로 접속사들을 분석하고, 가장 호환성 있는 규칙을 선택한다. 블럭(206)에서, 최적화 컴포넌트는 가장 호환성 있는 규칙에 일치하는 암시 또는 등가 술어를 리턴한다. 블럭(208)에서, 쿼리는 암시 또는 등가 규칙에 기초하여 처리된다. 블럭(210)에서, 검색 결과가 처리되며, 결과가 수용될 수 있는지를 결정한다. 수용될 수 없는 경우, 흐름은 블럭(212)로 진행하여 쿼리를 폐기한다. 이후, 프로세스는 중지 블록에 이른다.
초기 결과가 수용 가능한 경우, 흐름은 블럭(210)에서 블럭(214)로 진행하여, 검색의 추가적인 정밀화가 필요한지를 결정한다. 필요하지 않은 경우, 흐름은 블럭(216)으로 진행하여, 결과가 수용될 수 있는지를 결정한다. 수용될 수 없는 경우, 블럭(212)에서 쿼리가 폐기될 수 있다. 수용할 수 있는 경우, 프로세스는 중지 블록에서 종료한다. 이와 달리, 추가적인 정밀화가 요구되는 경우, 흐름은 블럭(214)에서 블럭(218)로 진행하여, 잔여 술어가 암시 또는 등가 술어에 대해 리턴된 결과에 도입되어 처리된다. 블럭(216)에서, 전과 같이 수용 가능성을 결정하기 위해 결과가 검사된다.
이제 도 3을 참조하면, 본 발명에 따른 시스템(300)이 도시되어 있다. 표준 인덱스에 대한 암시 규칙에 따라 시스템 동작이 설명된다. 여기서, 최적화 컴포넌 트(102)는 한 세트의 규칙을 가진 규칙 컴포넌트(304)와 관련된 메타데이터 엔진(302)과도 상호작용한다. 최적화 컴포넌트(102)는 쿼리 술어를 취하여 이를 접속사들로 분해한다. 비교를 위해 설정된 개별 접속사들은 인덱스 선택 동안 분석된다. 최적화 컴포넌트(102)는 주어진 열 또는 주어진 열 상의 함수에 대한 암시 규칙의 존재에 대해 메타데이터 엔진(302)에 요청을 보낸다. 이러한 정보를 제공하기 위하여, 최적화 컴포넌트(102)는 엔진(302)에게 열(또는 열 상의 함수)이 비교될 표현식, 및 이용될 수 있는 표준 인덱스들의 리스트를 전송한다. 메타데이터 엔진(302)은 규칙 컴포넌트(304)에 액세스하여, 임시 대용어들(또는 암시 비교 술어들)의 리스트로 응답한다. 이어서, 최적화 컴포넌트(102)는 암시 술어를 원본 술어에 추가하려고 시도하고, 최상의 인덱스 솔루션을 검색한다. 주어진 암시 술어가 인덱스를 사용하는 경우, 결과는 추가적인 처리를 위해 리턴된다. 그러나, 암시 술어가 인덱스를 사용하지 않는 경우, 최적화 컴포넌트(102)는 암시 술어를 제거하여, 추가적인 오버헤드를 발생시키지 않는다.
이제 도 4를 참조하면, 본 발명에 따라 표준 인덱스를 처리하는 방법의 흐름도가 도시되어 있다. 블럭(400)에서, 본 발명의 최적화 컴포넌트가 사용된다. 블럭(402)에서, 쿼리 원본 술어가 접속사들로 분해된다. 블럭(404)에서, 접속사들은 인덱스 선택 동안 분석된다. 블럭(406)에서, 주어진 열 또는 주어진 열 상의 함수에 대해 암시 규칙에 대한 메타데이터 엔진에 요청을 보낸다. 블럭(408)에서, 엔진으로부터 응답이 수신되기 전에, 열(또는 열 상의 함수)이 비교될 수 있는 표현식이 엔진으로 전송된다. 또한, 블럭(410)에서, 이용될 수 있는 표준 인덱스들의 리스트가 엔진으로 전송된다. 블럭(412)에서, 엔진은 임시 술어 대용어(또는 암시 비교 술어)의 리스트로 응답한다. 블럭(414)에서, 최적화 컴포넌트는 암시 술어(들)를 원본 술어에 추가하려고 시도한다. 블럭(416)에서, 최적화 컴포넌트는 최상의 검색 솔루션을 검색한다. 블럭(418)에서, 최적화 컴포넌트는 주어진 암시 술어가 인덱스를 사용하는지를 검사한다. 블럭(420)에서, 시스템은 인덱스가 사용될 수 있는지를 판정한다. 그러한 경우, 블럭(424)에서 술어가 사용되고, 흐름은 중지 블록으로 진행한다. 그러나 인덱스가 사용될 수 없는 경우에는 흐름이 블럭(422)으로 진행하여, 추가적인 오버헤드가 일어나지 않도록 최적화 컴포넌트가 암시 술어를 제거한다. 이후, 프로세스는 중지 블록으로 진행한다.
이제 도 5를 참조하면, 본 발명에 따라 재기입 규칙에 의해 생성되는 암시 술어를 가진 쿼리에 대한 초기 연산자 트리(500) 및 최종 연산자 트리(502)가 도시되어 있다. 이 예에서는 if p1=@p then Prefix(p1, n) = Prefix(@p,n)로 기술되는 규칙 1이라고 하는 표준 인덱스에 대한 암시 규칙이 존재하는 것으로 고려한다. 또한, 다음에 의해 생성되는 테이블이 존재하는 것으로 고려한다.
CREATE TABLE Table1(id int, p1, varchar(500), PrfxCompCol as
Prefix(p1, 10), AnotherCompCol as AnotherFunct(p1)
CREATE INDEX IndexPrefix ON Table1(PrfxCompCol)
CREATE INDEX IndexAnother ON Table1(AnotherCompCol)
마지막으로, 다음의 쿼리를 고려한다:
SELECT id FROM Table WHERE p1 = @p2.
이것은 초기 연산자 트리(500)에 반영되는데, 여기서 프로젝트(ID)는 선택 노드로 분기되며, 선택 노드는 테이블 1 노드 및 EQ 노드로 분기된다. 또한, EQ 노드는 P1 및 @P2 노드로 분기된다.
술어 p1=@p2에 대한 암시의 생성은 3 단계로 행해진다. 먼저, 접속사를 조사하여, 접속사가 테이블 1의 인덱스 불가 열, 또는 테이블 1의 열의 함수 또는 메쏘드와 비교되는지를 판정한다. 질문(p1) 내의 열은 후보 열이라고 한다. 둘째, 인덱싱된 열들을 검색한다. 후보를 사용하는 연산되고 인덱싱된 열들의 리스트를 생성한다. 후보가 인덱싱 가능할 경우, 그 인덱스들도 포함시킨다. 이 예에서는 열들 PrfxCompColAnotherCompCol 상에 인덱스들이 존재하게 되는데, 이는 양자가 p1을 사용하기 때문이다. 대응하는 표현식은 Prefix(p1,10)AnotherFunct(p1)이다. 셋째, 대용어를 검색한다. 특별 메타데이터 함수를 사용하고, 아래의 파라미터를 사용하여 가능한 암시 술어들을 얻는다.
파라미터
cmpType (계수자. 동일성 비교를 말함)
pexprAnalyzed Table.p1에 대응하는 표현식
pexprBound @p1에 대응하는 표현식
pdrgCid 테이블 열 PrfxCompColAnotherCompCol을 가진 어레이
pdrgExprIdxCols PrfxCompColAnotherCompCol에 대한 표현식을 가진 어레이
dbi Table.p1의 데이터베이스
메타데이터 함수는 암시 술어들의 0개 이상의 표현식을 리턴한다. 이 예에서, 그 표현식은 단일 표현식 PrfxComCol=Prefix (@p2, 10)이다. 이 표현식은 규칙 1의 "then" 부분 내의 표현식과 동일하다는 점에 유의한다.
If p1=@p then Prefix(p1, n)=Prefix(@p,n)
Prefix( p1 ,n)이 그 등가 열 PrfxCompCol로 변경되었고, 규칙의 우측 항이 연 산된 열의 표현식으로부터 프리픽스의 길이(n=10)를 선택하였다는 점이 다르다.
이것은 최종 연산자 트리(502)에 반영되며, 여기서 암시 술어는 AND 노드, 오른쪽 EQ 노드, 및 PrfxCompCol 및 Prefix(@P2,10)의 자식 노드를 포함한다. 연산되고 인덱싱된 열에 대응하는 PrfxCompCol(p1, 10)은 대응하는 연산된 열(PrfxComCol)로 대체되었음에 유의한다. 또한, Prefix(@p2,10)은 PrfxComCol의 표현식으로부터 프리픽스의 길이(즉, 10)를 취하였음에 유의한다.
이제 도 6을 참조하면, 본 발명에 따라 다치 인덱스를 처리하는 시스템(600)의 블록도가 도시되어 있다. 여기서, 최적화 컴포넌트(102)는 개별 연산자들(예를 들어, Select, Join 등)에 대한 새로운 특별 탐구 규칙들을 도입하는 것을 용이하게 하는 규칙 컴포넌트(602)를 포함한다. 이들 특별 규칙들 내에서 개별 접속사들이 분석된다. 최적화 컴포넌트(102)는 메타데이터 엔진(302)에게 규칙의 존재에 대해 묻고 엔진(302)에 위와 매우 유사한 정보를 전송한다. 즉, 최적화 컴포넌트(102)는 열(또는 열 상의 함수)이 비교될 표현식, 및 사용될 다치 인덱스들의 리스트를 엔진(302)으로 전송한다. 메타데이터 엔진(302)은 임시 대용어(중첩 쿼리들nested queries)을 연관시키는 쿼리들을 가짐)의 리스트로 응답한다. 마지막으로, 최적화 컴포넌트(102)는 대용어를 쿼리 안에 포함시키고, 새로운 표현식을 생성하고 중첩 쿼리들을 제거한 후 Select(또는 Join 등)에 대한 새로운 대용어를 생성하게 된다.
이제 도 7을 참조하면, 본 발명에 따라 다치 인덱스를 처리하는 방법의 흐름도가 도시되어 있다. 블럭(700)에서, 본 발명의 최적화 컴포넌트가 사용된다. 블 럭(702)에서, 쿼리 원본 술어가 접속사들로 분해된다. 블럭(704)에서, 접속사들이 인덱스 선택 동안 분석된다. 블럭(706)에서, 최적화 컴포넌트가 개별 연산자들에 대한 특별 탐구 규칙들을 제공한다. 블럭(708)에서, 개별 접속사들이 특별 규칙들로 분석된다. 블럭(710)에서, 최적화 컴포넌트는 또한 메타데이터 엔진에게 규칙의 존재에 대해 묻는다. 그러나, 엔진으로부터 응답이 수신되기 전에, 열(또는 열 상의 함수)이 비교될 수 있는 표현식이 엔진으로 전송된다. 또한, 블럭(712)에서, 사용될 수 있는 다치 인덱스의 리스트가 엔진으로 전송된다. 블럭(714)에서, 엔진은 임시 술어 대용어(중첩 쿼리들을 연관시키는 술어들을 가짐)의 리스트로 응답한다. 블럭(716)에서, 최적화 컴포넌트는 대용어를 쿼리에 포함시키고, 표현식을 간략화한다. 블럭(718)에서, 최적화 컴포넌트는 중첩 쿼리들을 제거한다. 블럭(720)에서, 최적화 컴포넌트는 새로운 대용어를 생성한다. 이후, 프로세스는 중지 블록으로 진행한다.
공간 데이터 유형과 같은 복소 데이터 유형을 처리하는 애플리케이션은 종종 규칙적인 인덱스에 의해 만족되지 않는 특수한 인덱싱 요건을 갖는다. 본 발명은 인덱스들에 대한 소정의 측면 및 가정을 완화함으로써 사용자가 서버의 B-트리의 상부에 인덱스들(예를 들어 SQL 서버와 연관됨)을 생성하는 것을 가능하게 하며, 사용자가 확장 인덱스를 생성하는 것을 허용한다. 또한, 본 발명은 술어 또는 연산자를 확장 인덱스를 사용하는 표현식으로 맵핑하는 방법을 제공한다.
확장 인덱스와 관련하여, 공간, 풀-테스트 또는 시간 데이터베이스와 같은 애플리케이션은 B-트리에 의해 쉽게 만족될 수 없고 표준 인덱스들이 생성될 수 있 는 소정의 중간 구조의 생성을 요구하는 특별 인덱싱을 필요로 한다. 표준 인덱스는 테이블 행당 최대 1개의 엔트리를 갖는다. 전술한 애플리케이션은 행당 둘 이상의 엔트리를 요구하는데, 다수의 엔트리는 테이블 값 UDF에 의해 생성된다. 풀 텍스트에 대해 설계된 확장 인덱스는 예를 들어 텍스트 필드에 적용될 때 텍스트 내의 워드 각각에 대응하는 엔트리를 갖는 테이블을 리턴하는 테이블 값 UDF를 사용할 수 있다. 확장 쿼리의 정의는 이 정의가 생성되고 있는 열의 기술 외에도 정의의 생성을 이용한 테이블 값 UDF의 식별 및 종종 테이블 값 UDF에 포함될 애플리케이션 종속 파라미터들의 세트의 사양을 요구한다. 비공식적으로, 확장 인덱스는 테이블 값 연산 열을 인덱싱하는 것과 같다.
쿼리 재기입 규칙과 관련하여, (1) 소정의 데이터 유형 또는 특정 UDF의 테이블 열을 포함하는 비교 연산자에 접속되는 규칙, 및 (2) 원본 비교 표현식의 결과 또는 그 등가인 새로운 부울 표현식을 규정하는 규칙이 존재한다. 이 새로운 표현식은 인덱스(확장된 것인지의 여부와 관계없음)의 존재를 성공적으로 이용할 수 있으며, 최적화기에 의해 대용어를 생성하는 데 이용된다. UDF 또는 유형들에 적용되는 쿼리 재기입 규칙은 표준 또는 확장 인덱스와 연관될 수 있으며, 암시 또는 등가를 나타낼 수 있다.
쿼리 재기입 규칙의 표현식 능력은 이들이 표준 또는 확장 인덱스와 연관될 수 있는지에 의존한다. 확장 인덱스 재기입 규칙은 임의의 부울 표현식일 수 있으며, 표준 인덱스 규칙은 보다 많이 제한된다.
표준 인덱스에 대한 재기입 규칙은 Select 및 Join에서 인덱스 룩업(및 인덱 스 조인)의 이용을 탐구하는 기존의 쿼리 최적화기의 코드에 포함될 수 있다. 확장 인덱스에 대한 재기입 규칙은 쿼리 최적화기에서 새로운 탐구 규칙에 의해 고려될 수 있다.
본 명세서에 나타난 바와 같이, Select 및 Join에서 인덱스 룩업의 이용을 탐구하는 규칙은 Select(또는 Join)의 비교 표현식을 접속사들로 분해하는 클래스를 이용한다. 그 다음, 각각의 본래 접속사는 인덱스 룩업 연산의 일부로 사용될 수 있는지를 판정하기 위해 분석된다. 마지막으로, 모든 인덱스가 분석되며, 각 인덱스에 대해 인덱스 검색 연산에 사용될 수 있거나 인덱스의 컨텐츠에 의해 커버되는 접속사들을 리스트한다. 클래스는 소정의 인덱스 세트를 포함하는 인덱스 솔루션을 발견할 때 인덱스 각각에 대한 인덱스 표현식을 생성하며, 이들 인덱스 각각에 의해 이용될 수 있는 초기 생성된 접속사들을 지속적으로 추적한다. 태스크의 종료시, 인덱스에 의해 처리될 수 없는 모든 접속사에 대해 잔여 술어가 생성된다.
본 발명을 포함하는 확장들의 리스트는 다음과 같다:
인덱스 표현식 스킴: 인덱스 확장 스킴을 생성하기 위한 지원이 제공되고, 이 확장 스킴에 기초하여 인덱스의 생성이 가능하게 된다. 인덱스 확장 스킴은 인덱싱될 데이터 유형에 대응하는 키 열 데이터 유형; 한 세트의 파라미터(일반적으로 도메인 특정 파라미터); 및 인덱싱되는 열의 각각의 값에 대한 인덱스 엔트리를 생성하는 인덱스 생성 및 유지 메카니즘에 의해 이용되어야 하는 테이블 값 함수 이름을 특정한다. 여기서 인덱스에 대한 가정의 주요 완화점은 인덱싱되는 각각의 열 값이 하나 이상의 열과 함께 하나 이상의 인덱스 행, 따라서 테이블 값 함수를 생성하여 인덱스 값을 생성할 수 있다는 점이다.
확장 인덱스: 위에 정의된 인덱스 확장 스킴을 이용하여 열 상에 인덱스를 생성하는 능력.
변환 규칙: 인덱스는 소정의 연산자들을 효율적으로 평가하는 데 유용하다. 표준 인덱스는 비교 연산의 효율적인 평가를 가능하게 한다. 유사하게, 확장 인덱스는 복소 데이터 유형에 적용할 수 있는 도메인 특정 연산자 또는 비교를 효율적으로 평가하는 데 사용될 수 있다. 이것을 지원하기 위하여, SQL 서버는 인덱싱된 데이터에 대한 술어(또는 부울 값 함수)를 인덱싱된 값들을 이용하여 평가될 수 있는 표현식(즉, 인덱싱된 값에 적용되는 테이블 값 함수의 결과)으로 맵핑하는 능력을 지원한다.
확장성 면에서, 본 발명은 (i) 인덱싱된 값을 테이블 값으로 맵핑하는 것, 및 (ii) 술어를 대응 테이블 값에 대해 SQL로 표현할 수 있는 대체 테이블 표현식으로 맵핑하는 것에 의해 표현될 수 있는 것에 의해 제한된다.
확장 인덱스
통상적인 2차 인덱스는 다음의 열 세트를 갖는다:
- 인덱싱되는 열들(예를 들어 IC) 및 인덱스 행이 대응하는 기본 테이블의 행을 고유하게 식별하는 열들의 세트. 기본 테이블의 각 행에 대한 인덱스에는 하나의 행이 있다.
- 기본 테이블의 클러스터링 키 열들을 사용하거나 클러스터링된 인덱스 없 이 테이블에 대한 기본 행의 물리적 식별자를 사용하여 기본 행을 고유하게 식별하는 열들.
확장 인덱스에서, 앞의 세트, 즉 인덱싱되는 열들은 인덱싱되는 열(들)의 사용자 특정 함수를 이용하여 생성되는 점이 다르다. 또한, 사용자 특정 함수는 테이블 값 함수이므로, 기본 테이블의 각 행에 대한 인덱스에는 둘 이상의 행이 있을 수 있다.
확장 인덱스 스킴의 생성/유지
확장 인덱스의 생성은 2 단계 프로세스이다. 제1 단계는 다음의 정의를 캡슐화하는 인덱스 확장 스킴을 생성하는 것이다:
- 인덱싱되는 열의 데이터 유형
- 일반적으로 도메인 특정인 인덱스를 생성하는 데 유용한 추가 파라미터들
- 인덱스 및 인덱스 입력(인덱싱되는 열 및 추가 파라미터들)의 테이블 값 함수의 파라미터들로의 맵핑을 생성하는 데 사용되어야 하는 테이블 값 함수
- 쿼리 최적화기가 기본 테이블의 주요 키 열들 상에 생성하는 주 인덱스에 추가하여 인덱싱되어야 하는 테이블 값 인덱스의 열들
새로운 CREATE INDEX EXTENSION 명령문이 인덱스 확장을 생성하는 데 사용된다.
인덱스 확장 스킴이 생성되면, 단지 이 확장 스킴의 예인 실제 인덱스들이 CREATE INDEX 명령문으로의 강화를 통해 생성될 수 있다.
다음은 CREATE INDEX EXTENSION 명령문에 대한 신택스 및 시맨틱을 나타낸 다.
Figure 112005008778357-PAT00001
규칙
column_param_name는 인덱싱되는 데이터 값인 주 인덱스 파라미터를 지정한다. column_data_type은 이 파라미터의 데이터 유형이다. column_data_type은 SQL 서버에 의해 지원되는 스칼라 데이터 유형들(타임스탬프는 예외) 중 어느 하나, 또는 사용자 정의 유혀일 수 있다. column_type_schema는 UDT에 대해 선택적으로 지정될 수 있다.
@param_name은 추가 파라미터의 이름을 지정하고, param_data_type은 이들에 대응하는 데이터 유형을 지정한다. 지정된 데이터 유형들은 SQL 서버에 의해 지원되는 스칼라 유형(타임스탬프는 예외) 또는 사용자 정의 유형일 수 있다.
[table_function_schema.]table_function_name은 인덱스 확장이 생성되고 있는 동일 데이터베이스에서 기존 테이블 값 함수를 지정해야 한다. 이 테이블 값 함수는 결정론적이다.
USING 절의 인수 리스트 내의 모든 파라미터 이름은 FOR 절(@column_param_name으로서) 또는 WITH PARAMETERS 절(@param_name으로서)에서 정의되는 파라미터 이름들의 리스트로부터 나온다. 이것은 인덱스 확장의 열 데이터 값 및 추가 파라미터들이 주어질 때 테이블 값 함수가 호출되는 방법에 대한 바인딩을 셋업한다.
인덱스 확장 스킴의 생성은 테이블 값 함수 상의 암시적인 스키마 바인딩을 생성한다. 따라서, 테이블 값 함수는 이를 사용하는 인덱스 확장 스킴이 존재하는 한은 폐기되거나 변경될 수 없다.
ON 절 이후에 지정된 열들의 리스트는 지정된 테이블 값 함수의 결과에 의해 리턴되는 열 이름들이어야 한다. 이 리스트는 쿼리 프로세서에 의해 기본 테이블의 주요 키들 상에 항상 생성되는 인덱스들에 추가하여 이들 열들 상에 추가 인덱스를 지정한다.
예 1
공간 데이터 유형 사양에서의 공간 케이스에 대해:
Figure 112005008778357-PAT00002
인덱스 확장 스킴의 폐기
신택스
DROP [[extension_schema.]extension_name
규칙
데이터베이스 내에 이 인덱스 확장 스킴에 기초하는 임의의 확장 인덱스들이 존재하는 경우, 이 인덱스 확장 스킴은 폐기될 수 없다.
확장 인덱스의 생성/관리
인덱스 확장 스킴이 생성되면, 생성된 인덱스 확장 스킴을 이용하여 하나 이상의 인덱스가 생성된다. CREATE INDEX는 인덱싱되는 열을 지정하며, 또한 인덱스 확장 스킴의 일부로서 지정된 테이블 값 함수에 제공될 추가 파라미터들의 값을 제공한다.
신택스
Figure 112005008778357-PAT00003
규칙
열의 데이터 유형은 인덱스 확장의 @column_param_name의 데이터 유형과 동일해야 한다.
PARAMETERS index_option에서 제공되는 파라미터 값들은 T-SQL 상수이며, 대응하는 인덱스 확장의 PARAMETERS 절에서 지정된 파라미터들과 순서 및 데이터 유형 호환성 면에서 일 대 일 대응을 가져야 한다.
또한, 스칼라 UDF(사용자 정의 함수)가 인덱스 확장 스킴에서 허용될 수 있는데, 이 경우 인덱싱된 값은 열 값 자체 대신에 UDF의 결과일 것이다.
구현 노트
인덱스는 다음 명령문이 실행되는 것처럼 인덱싱된 뷰를 생성하고 유지함으로써 생성될 수 있다:
Figure 112005008778357-PAT00004
상기 뷰는 비고유 클러스터 인덱스를 사용하여 인덱싱된다.
Figure 112005008778357-PAT00005
<system-generates-view>가 주어질 때, 다음의 등가가 참이라는 점에 유의한다:
Figure 112005008778357-PAT00006
여기서, t.<primary-key>는 기본 테이블의 주요 키에 대한 참조이다.
상기 인덱스 외에, 쿼리 프로세서는 ON 절에 의해 지정되는 바와 같이 추가 인덱스도 생성한다.
예 1(계속)
Figure 112005008778357-PAT00007
상기 구현 노트와 같이 이것은 SQL 서버가 다음의 인덱스 뷰를 생성하게 한다:
Figure 112005008778357-PAT00008
확장 인덱스의 폐기
확장 인덱스는 현재 존재할 경우 이를 사용하는 규칙이 없는 한 DROP INDEX 명령문을 사용하여 폐기될 수 있다.
암시/등가 규칙
위와 같이 확장 인덱스를 생성하는 데 사용된 동일한 테이블 값 함수를 사용하는 다른 부울 값 표현식에 의하여 복소 술어 함수의 논리적 암시 또는 등가를 특정하는 규칙들이 제공된다. 이 경우, 쿼리 프로세서(QP)는 미리 연산된 테이블 값 함수(확장 인덱스에서 지속되는 바와 같이)를 사용하여 이 부울 표현식을 평가할 수 있다. 원본 술어 함수는 규칙이 암시 규칙이고 부울 값 표현식이 참일 경우에만 평가될 필요가 있다.
신택스
Figure 112005008778357-PAT00009
규칙
[original_function_schema.]original_function_name에 의해 지정되는 바와 같은 스칼라 사용자 정의 함수가 현재의 데이터베이스에 존재하여야 한다.
@index_argument argument_list 내의 인수들 중 하나와 일치해야 한다.
boolean-expressionargument_list 내의 인수들 또는 지정된 인덱스 확장 스킴의 파라미터들(PARAMETERS 절에 정의됨)과 일치해야 하는 인수들('@' 프리픽스를 가진 식별자들)에 대한 참조를 포함할 수 있다.
boolean_expression은 지정된 index_extension_scheme에 의해 사용되는 테이블 값 함수를 참조해야 한다.
TYPE EQUIVALENCE가 지정되면, 규칙은 완전한 등가를 표현하며, 쿼리 최적화기는 마지막에 원본 함수를 호출할 필요가 없게 된다. TYPE IMPLICATION이 지정되면, 쿼리 프로세서는 지정된 부울 표현식이 참인 경우에도 마지막에 원본 함수를 호출해야 한다.
쿼리 재기입 논리
QP는 다음 조건이 만족될 경우 사용자 정의 스칼라 함수의 주어진 호출에 대 한 암시 규칙을 사용한다. WITH INDEX TYPE 절에서 지정된 유형의 확장 인덱스가 이 함수의 인수인 열에 대해 존재하고, 인수의 위치가 @index_argument에 의해 지정된 것과 일치한다.
암시 규칙이 사용될 경우, 이는 다음과 같이 함수 호출을 재기입한다:
original-function-name (...,T.col,...)
여기서, T.col은 확장 인덱스가 존재하는 인덱싱된 열이며, 이어서 상기 함수는 규칙에 대응하는 boolean_expression으로서 재기입되는데, boolean_expression 내의 테이블 값 함수의 각각의 발생은 대응하는 확장 인덱스에 대한 아래의 테이블 표현식에 의해 대체된다:
Figure 112005008778357-PAT00010
쿼리 최적화기는 모든 대용어를 개별적으로 고려하며(그리고, 동일 대체에 있어서 둘 이상을 사용하지 않는다), 가장 저렴한 것을 선택한다.
예 1(계속)
Figure 112005008778357-PAT00011
사용자 쿼리:
Figure 112005008778357-PAT00012
는 다음과 같이 재기입된다:
Figure 112005008778357-PAT00013
예 2
테이블 값 함수 ft_IndexGentextval의 결과의 인덱싱에 의존하고 textval 내의 각각의 워드의 각각의 발생에 대한 엔트리가 존재하는 폼(word, frequency, location)의 행 세트를 리턴하는 풀 텍스트 인덱싱 스킴을 고찰한다. 각각의 행은 워드, 문서 내의 발생 횟수인 워드의 빈도 및 textval 내의 오프셋인 워드 발생 위치에 대한 정보를 포함한다. 테이블 값 함수는 다음과 같이 생성될 수 있다:
Figure 112005008778357-PAT00014
인덱스 확장은 다음과 같이 생성될 수 있다:
Figure 112005008778357-PAT00015
<phrase> 내의 모든 워드가 @textval 내에 적어도 한번 나타나는 경우에만 참을 리턴하는 술어 CONTAINS(@textval,<phrase>)를 고려하자. 아래 규칙의 논리에서는 물론, @textval에 나타나지 않은 어떠한 워드도 @phrase에 존재하지 않는 경우에만 CONTAINS(@textval,@phrase)가 참이라는 것이다.
Figure 112005008778357-PAT00016
이제, 테이블 후보자들(CandidateID, LastName, FirstName, ContactPhone, Resume) 및 이력서 열이 풀 텍스트 인덱스 스킴을 이용하여 그 위에 생성된 인덱스를 갖는 것으로 고려하자.
이력서에 'distributed database'라는 워드가 있는 모든 후보자를 찾는 쿼리는 다음과 같다:
Figure 112005008778357-PAT00017
상기 쿼리는 CONTAINS 함수에 대한 확장 인덱스 및 암시 규칙이 주어질 때 다음과 같이 최적화기에 의해 재기입된다:
Figure 112005008778357-PAT00018
이제 도 8을 참조하면, 본 발명에 따라 인공 지능 컴포넌트(분류기 802)를 사용하는 시스템(800)이 도시되어 있다. 본 발명은(예를 들어 선택과 관련하여) 본 발명의 다양한 양태를 수행하기 위한 다양한 인공 지능 기반 스킴을 이용할 수 있다. 예를 들어, 사용자에 따라 암시 규칙들을 언제 어떻게 적용할 것인지를 결정하기 위한 프로세스가 자동 분류기 시스템 및 프로세스를 통해 용이해질 수 있다. 이러한 프로세스는 제한을 사용하여 실시될 수 있다.
분류기는 입력 속성 벡터 x=(x1, x2, x3, x4, xn)를 입력이 한 클래스에 속한다는 신뢰, 즉 f(x)=confidence(class)로 맵핑하는 함수이다. 이러한 분류는 확률 및/또는 통계 기반 분석(예를 들어 분석 효용 및 비용으로의 인수 분해)을 이용하여 사용자가 자동적으로 이행되기를 원하는 동작을 예측 또는 추론할 수 있다.
사용될 수 있는 분류기의 일례로는 지원 벡터 머신(SVM)이 있다. SVM은 가능한 입력들의 공간에서, 트리거되지 않은 이벤트로부터 트리거되는 기준을 분할하려고 시도하는 초표면(hypersurface)을 찾음으로써 동작한다. 직관적으로, 이것은 트레이닝 데이터에 가깝지만 완전히 동일하지는 않은 테스팅 데이터에 대한 분류를 정확하게 해준다. 다른 지향성 및 무지향성 모델 분류 접근법에는 예를 들어 네이브 베이스(naive Bayes), 베이시안 네트워크(Bayesian networks), 결정 트리가 포함되며, 상이한 독립성의 패턴들을 제공하는 확률 분류 모델들이 사용될 수 있다. 본 명세서에서의 분류는 또한 우선 순위의 모델들을 개발하는 데 사용되는 통계적 회귀를 포함한다.
본 명세서로부터 쉽게 이해되는 바와 같이, 본 발명은 (예를 들어, 일반적으로 트레이닝 데이터를 통해) 명시적으로 트레이닝되는 분류기는 물론, (예를 들어 사용자의 거동을 관측하거나 외부 정보를 수신하는 것을 통해) 암시적으로 트레이닝되는 분류기를 사용할 수 있다. 예를 들어, SVM은 분류기 구축자 및 특징 선택 모듈 내에서의 위상 학습 또는 트레이닝 단계를 통해 구성된다. 따라서, 분류기(들)는 복수의 기능을 자동적으로 수행하는 데에 사용될 수 있다. 예를 들어, 애플리케이션이 인덱스 불가 데이터 유형에 대한 것인지의 여부에 관계없이, 분류기(802)는, 단독으로 또는 비용 기반 최적화기(120)와 조합하여 결정할 때 원본 술어는 실행하기에 너무 복잡하거나 고가인 반면에 암시 또는 등가 술어는 실행하기에 매우 저렴한 경우, 암시 또는 등가 술어를 먼저 사용하여 검색 결과를 평가할 수 있다는 것을 결정하기 위해 사용될 수 있다. 이후, 복잡한 검색은 더 복잡하거나 비싼 검색을 실행하기 전에 적절히 정밀화될 수 있다.
분류기(802)는 선택성 및/또는 카디널리티(cardinality) 추정에 대한 추가 정보를 사용하는 데에도 사용될 수 있다. 따라서, 암시 규칙은 카디널리티 추정과 같은 추정을 이용함으로써 검색을 좁히는 데 사용될 수 있다. 이후, 이들 추정은 실행되지 않도록 폐기될 수 있다.
암시 술어는 카디널리티 추정을 개선하는 데 사용될 수 있다. 마지막에 이것은 보다 효율적인 실행 계획을 가능하게 한다. 정확한 카디널리티 추정은 또한 보다 신뢰성 있는 실행 비용의 추정을 지원하며, 따라서 보다 강력한 실행 계획을 선택한다. 예를 들어, 암시 규칙에 의해 P1이 P2와 등가이고, P2가 추정하기에 더 간단하다는 것이 알려지면, 강력한 계획이 얻어진다. 더욱이, P1이 P2를 암시하지만 그와 등가이지 않은 경우, P2를 만족시키는 행들을 추정함으로써 P1을 만족시키 는 행들에 대해 상한을 결정할 수 있게 된다. 이것 또한 가치 있는 정보이다.
분류기(802)는 또한 검색되는 데이터의 유형, 검색 시간, 검색되는 데이터의 크기, 데이터가 분산되는지의 여부, 및 쿼리 표현식의 복잡성에 관련된 파라미터들에 기초하여 추론을 행하여, 일부만을 제외하고 지명하는 데 사용될 수 있다.
이제 도 9를 참조하면, 본 명세서에 개시된 아키텍쳐를 실행하도록 동작할 수 있는 컴퓨터의 블럭도가 도시되어 있다. 도 9 및 이하 설명은, 본 발명의 다양한 양태에 대한 추가적인 배경을 제공하기 위해서, 본 발명의 다양한 양태가 구현될 수 있는 적절한 컴퓨팅 환경(900)의 간략하고 일반적인 설명을 제공하도록 의도된 것이다. 상기에서는, 본 발명이 하나 이상의 컴퓨터에서 실행될 수 있는 컴퓨터 실행가능 명령과 일반적으로 관련되어 설명되었지만, 당업자라면 본 발명이 다른 프로그램 모듈과 결합하여 및/또는 하드웨어와 소프트웨어의 결합으로서 구현될 수 있다는 것을 알 것이다.
일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 컴포넌트, 데이터 구조 등을 포함한다. 또한, 당업자라면, 본 발명의 방법이 단일 프로세서 또는 다중 프로세서 컴퓨터 시스템, 미니컴퓨터, 메인프레임 컴퓨터는 물론, 하나 이상의 관련 장치에 각각 동작적으로 결합될 수 있는 퍼스널 컴퓨터, 휴대용 컴퓨팅 장치, 마이크로프로세서 기반 또는 프로그램가능 고객 가전제품 등을 비롯한 기타 컴퓨터 시스템 구성에서도 실시될 수 있음을 알 것이다.
설명된 본 발명의 양태들은, 소정 태스크가 통신 네트워크를 통해 링크된 원 격 처리 장치들에 의해 수행되는 분산 컴퓨팅 환경에서도 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 장치 둘다에 위치할 수 있다.
컴퓨터는 통상적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 사용가능 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리가능 및 분리불가능 매체 모두를 포함한다. 예를 들어, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있지만, 이에 한정되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 및 기술로 구현되는 휘발성 및 비휘발성의 분리가능 및 분리불가능 매체를 모두 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, 디지털 비디오 디스크(DVD) 또는 기타 광학 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 원하는 정보를 저장하는 데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 기타 매체를 포함하지만, 이에 한정되는 것을 아니다.
통신 매체는 통상적으로 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈, 또는 반송파나 기타 전송 메커니즘과 같은 변조된 데이터 신호로 된 기타 데이터를 구현하고, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는, 그 특성들 중 하나 이상이 신호에 정보를 인코딩하는 방식으로 설정 또는 변경된 신호를 의미한다. 예를 들어, 통신 매체는 유선 네트워크 또는 직접 유선 접 속과 같은 유선 매체, 및 음향, RF, 적외선 및 다른 기타 무선 매체와 같은 무선 매체를 포함하지만, 이에 한정되는 것은 아니다. 또한, 이들의 임의의 조합도 컴퓨터 판독가능 매체의 범위에 포함될 수 있다.
도 9를 다시 참조하면, 컴퓨터(902)를 포함하는 본 발명의 다양한 양태를 구현하기 위한 예시적인 환경(900)이 도시되어 있으며, 컴퓨터(902)는 프로세싱 유닛(904), 시스템 메모리(906) 및 시스템 버스(908)를 포함한다. 시스템 버스(908)는 시스템 메모리(906) 등의 시스템 컴포넌트들을 프로세싱 유닛(904)에 연결한다. 프로세싱 유닛(904)은 상업적으로 이용가능한 다양한 프로세서들 중 어느 것이라도 가능하다. 듀얼 마이크로프로세서 및 기타 멀티프로세서 아키텍쳐도 프로세싱 유닛(904)으로서 이용될 수 있다.
시스템 버스(908)는 상업적으로 이용가능한 다양한 버스 아키텍쳐 중 임의의 것을 사용하는 로컬 버스, 주변 버스, 및 메모리 버스(메모리 제어기를 가질 수도 있고 가지지 않을 수도 없음)에 더 상호접속할 수 있는 여러 유형의 버스 구조 중의 임의의 것일 수 있다. 시스템 메모리(906)는 판독 전용 메모리(ROM)(910) 및 랜덤 액세스 메모리(RAM)(912)를 포함한다. 기본 입출력 시스템(BIOS)은 ROM, EPROM, EEPROM과 같은 비휘발성 메모리(910)에 저장되며, 시동 중과 같은 때에 컴퓨터(902) 내의 구성요소들 간에 정보를 전달하는 것을 돕는 기본 루틴을 포함한다. RAM(912)은 데이터를 캐시하기 위한 정적 RAM과 같은 고속 RAM도 포함할 수 있다.
컴퓨터(902)는 내부 하드디스크 드라이브(HDD, 914)(예를 들어, EIDE, SATA) 를 더 포함하며, 이러한 내부 하드디스크 드라이브(914)는 적절한 섀시(도시되지 않음) 외부용으로도 구성될 수 있다. 또한, 컴퓨터(902)는, 자기 플로피 디스크 드라이브(FDD, 916)[예를 들어, 분리가능 디스켓(918)에 대한 판독 및 기입을 행함], 및 광학 디스크 드라이브(920)[예를 들어, CD-ROM 디스크(922)에 대한 판독을 행하거나, DVD와 같은 기타 대용량 광학 매체에 대한 판독 및 기입을 행함]를 더 포함할 수 있다. 하드디스크 드라이브(914), 자기 디스크 드라이브(916), 광학 디스크 드라이브(920)는 하드디스크 드라이브 인터페이스(924), 자기 디스크 드라이브 인터페이스(926), 광학 드라이브 인터페이스(928) 각각에 의해 시스템 버스(908)에 접속될 수 있다. 외부 드라이브 구현을 위한 인터페이스(924)는 범용 직렬 버스(USB) 및 IEEE 1394 인터페이스 기술 중 적어도 하나를 포함한다.
드라이브들과 그 관련 컴퓨터 판독가능 매체는 데이터, 데이터 구조, 컴퓨터 실행가능 명령 등의 비휘발성 저장을 제공한다. 컴퓨터(902)를 위하여, 드라이브와 매체는 임의의 데이터를 적절한 디지털 포맷으로 저장할 수 있다. 상기에서는, HDD, 분리가능 자기 디스켓, CD나 DVD와 같은 분리가능 광학 매체와 관련하여 컴퓨터 판독가능 매체를 설명하였지만, 당업자라면 집 드라이브, 자기 카세트, 플래시 메모리 카드, 카트리지 등과 같이 컴퓨터에 의해 판독가능한 기타 유형의 매체도 예시적인 오퍼레이팅 환경에서 사용될 수 있으며, 또한 임의의 이러한 매체는 본 발명의 방법을 수행하기 위한 컴퓨터 실행가능 명령을 포함한다는 것을 알아야 한다.
오퍼레이팅 시스템(930), 하나 이상의 애플리케이션(932), 기타 프로그램 모 듈(934) 및 프로그램 데이터(936)를 비롯한 다수의 프로그램 모듈은, 드라이브 및 RAM(912)에 저장될 수 있다. 또한, 오퍼레이팅 시스템, 애플리케이션, 모듈 및/또는 데이터의 전체 또는 일부가 RAM(912)에 캐시될 수 있다.
본 발명은 상업적으로 사용가능한 다양한 오퍼레이팅 시스템 또는 오퍼레이팅 시스템들의 조합으로 구현될 수 있다는 것을 알아야 한다.
사용자는, 예를 들어 키보드(938) 및 마우스 등의 포인팅 장치와 같은 하나 이상의 유선/무선 입력 장치를 통해 컴퓨터(902)에 커맨드 및 정보를 입력할 수 있다. 다른 입력 장치(도시되지 않음)로는 마이크로폰, IR 원격 제어기, 조이스틱, 게임패드, 스타일러스 펜, 터치 스크린 등이 있을 수 있다. 이러한 입력 장치 및 기타 입력 장치는 주로 시스템 버스(908)에 결합된 입력 장치 인터페이스(942)를 통해 프로세싱 유닛(904)에 접속되지만, 병렬 포트, IEEE 1394 직렬 포트, 게임 포트, USB 포트, IR 인터페이스 등과 같은 다른 인터페이스에 의해 접속될 수 있다.
모니터(944) 또는 기타 유형의 표시 장치도 비디오 어댑터(946)와 같은 인터페이스를 통해 시스템 버스(908)에 접속된다. 모니터(944) 이외에, 컴퓨터는 스피커, 프린터 등과 같은 다른 주변 출력 장치(도시되지 않음)를 통상적으로 포함한다.
컴퓨터(902)는 원격 컴퓨터(들)(948)과 같은 하나 이상의 원격 컴퓨터와의 유선 및/또는 무선 통신을 통한 논리적 접속을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(들)(948)는 워크스테이션, 서버 컴퓨터, 라우터, 퍼스널 컴퓨터, 휴대용 컴퓨터, 마이크로프로세서 기반 오락기기, 피어 장치 또는 기타 공통 네트워크 노드일 수 있고, 통상적으로 컴퓨터(902)에 관해 설명된 구성요소들의 다수 또는 전부를 포함할 수 있지만, 편의상 메모리 저장 장치(950)만이 도시되어 있다. 상기 논리적 접속은 근거리 통신망(LAN, 952) 및/또는 원거리 통신망(WAN, 954) 등의 보다 더 큰 네트워크로의 유/무선 접속을 포함한다. 이러한 LAN 및 WAN 네트워크 환경은 사무실과 회사에서 흔하고, 인트라넷과 같은 기업내 컴퓨터 네트워크를 용이하며, 이들 모두는 예를 들어 인터넷과 같은 전세계 통신 네트워크에 접속될 수 있다.
LAN 네트워크 환경에서 사용되는 경우, 컴퓨터(902)는 유선 및/또는 무선 통신 네트워크 인터페이스 또는 어댑터(956)를 통해 로컬 네트워크(952)에 접속된다. 어댑터(956)는 LAN(952)과의 유선 또는 무선 통신을 용이하게 할 수 있고, LAN(952)도 마찬가지로 무선 어댑터(956)와 통신하기 위해 배치된 무선 액세스 포인트를 포함할 수 있다. WAN 네트워크 환경에서 사용될 때, 컴퓨터(902)는 모뎀(958)을 포함할 수 있거나, LAN 상의 통신 서버에 접속되거나, 인터넷을 이용하는 것과 같이 WAN(954)을 통하여 통신을 설정하기 위한 다른 수단을 구비한다. 내장형 또는 외장형의 유선 또는 무선 장치일 수 있는 모뎀(958)은 직렬 포트 인터페이스(942)를 통해 시스템 버스(908)에 접속된다. 네트워크 환경에서, 컴퓨터(902)에 관해 설명된 프로그램 모듈 또는 그 일부는 원격 메모리/저장 장치(950)에 저장될 수 있다. 도시된 네트워크 접속은 예시적인 것이고, 컴퓨터들 간의 통신 링크를 설정하기 위한 다른 수단이 사용될 수 있음을 알아야 한다.
컴퓨터(902)는, 예를 들어 프린터, 스캐너, 데스크탑 및/또는 휴대용 컴퓨 터, 휴대용 데이터 기기, 통신 위성, 무선 검출가능한 태그와 연관된 장비 또는 위치(예를 들어, 키오스크, 뉴스 스탠드, 화장실) 중 임의의 것 및 전화기와 같이, 무선 통신에 동작적으로 배치된 임의의 무선 장치 또는 엔티티와 통신하도록 동작할 수 있다. 이는 적어도 와이파이(Wi-Fi) 및 블루투스TM(Bluetooth) 무선 기술을 포함한다. 그러므로, 통신은 종래의 네트워크와 같이 미리 정의된 구조일 수도 있고, 단순히 적어도 두 장치 간의 임시 통신일 수도 있다.
Wi-Fi(Wireless Fidelity)는 집에 있는 소파, 호텔방의 침대 또는 회사의 회의실에서 무선으로 인터넷에 접속할 수 있게 해 준다. Wi-Fi는 컴퓨터 등의 장치가 기지국의 범위 내의 어디에서든지 실내외에서 데이터를 송수신할 수 있게 해 주는 셀룰러 전화기와 같은 무선 기술이다. Wi-Fi 네트워크는 보안적이고 신뢰할만한 빠른 무선 접속을 제공하기 위해서 IEEE 802.11(a, b, g 등)으로 불리는 전파 기술을 사용한다. Wi-Fi 네트워크는 컴퓨터들을 서로 연결시키거나, 인터넷 또는 유선 네트워크(IEEE 802.3 또는 이더넷을 이용함)에 접속하기 위해 사용될 수 있다. Wi-Fi 네트워크는 2.4 및 5 GHz의 비허가 전파 대역에서 11 Mbps(802.11b) 또는 54 Mbps(802.11a) 데이터 레이트 또는 두 대역을 모두 포함하는 제품(이중 대역)으로 동작하므로, 많은 사무실에서 사용되는 기본 10BaseT 유선 이더넷 네트워크와 유사한 실제 성능을 제공할 수 있다.
이제, 도 10을 참조하면, 본 발명에 따른 예시적인 컴퓨팅 환경(1000)의 개략적인 블럭도가 도시되어 있다. 시스템(1000)은 하나 이상의 클라이언트(1002)를 포함한다. 클라이언트(1002)는 하드웨어 및/또는 소프트웨어(예, 스레드, 프로세스, 컴퓨팅 장치)일 수 있다. 예를 들어, 클라이언트(1002)는 본 발명을 이용하여 쿠키 및/또는 관련 컨텍스트 정보를 내장할 수 있다. 시스템(1000)은 하나 이상의 서버(1004)도 포함한다. 서버(1004)도 하드웨어 및/또는 소프트웨어(예, 스레드, 프로세스, 컴퓨팅 장치)일 수 있다. 예를 들어, 서버(1004)는 본 발명을 이용하여 변환을 수행하기 위해 스레드를 내장할 수 있다. 클라이언트(1002)와 서버(1004) 간의 하나의 가능한 통신은 둘 이상의 컴퓨터 프로세스 사이에 전송되도록 적응된 데이터 패킷의 형태일 수 있다. 예를 들어, 데이터 패킷은 쿠키 및/또는 관련 컨텍스트 정보를 포함할 수 있다. 시스템(1000)은 클라이언트(1002)와 서버(1004) 간의 통신을 용이하게 하기 위해 이용될 수 있는 통신 프레임워크(1006)(예를 들어, 인터넷과 같은 전세계 통신네트워크)를 포함한다.
통신은 유선(광섬유를 포함) 및/또는 무선 기술을 통해 용이하게 될 수 있다. 클라이언트(1002)는 자신에게 로컬한 정보(예, 쿠키 및/또는 관련 컨텍스트 정보)를 저장하기 위해 이용될 수 있는 하나 이상의 클라이언트 데이터 저장 장치(1008)에 동작적으로 접속된다. 마찬가지로, 서버(1004)는 자신에게 로컬한 정보를 저장하기 위해 사용될 수 있는 하나 이상의 서버 데이터 저장 장치(1010)에 동작적으로 접속된다.
상기한 것은 본 발명의 예를 포함한다. 물론, 본 발명을 설명할 목적으로 컴포넌트 또는 방법의 모든 가능한 조합을 설명하는 것은 가능하지 않지만, 당업자는 본 발명의 더 이상의 조합 및 치환이 가능하다는 것을 알 것이다. 따라서, 본 발명은 첨부된 특허청구범위의 사상 및 범위 내에 있는 모든 대안예, 수정예, 변경예를 포함하는 것으로 의도된다. 또한, "구비하는"이라는 용어가 상세한 설명 또는 특허청구범위에서 사용되는 한, 이러한 용어는 "포함하는"이라는 용어가 특허청구범위에서 과도적인 단어로서 이용될 때 해석되는 것처럼 포괄적인 것으로 의도된다.
본 발명에 따르면, 쿼리 술어에 의해 암시된 표현식에 대한 인덱싱을 가능하게 하는 개선된 쿼리 최적화 시스템이 제공된다.

Claims (40)

  1. 데이터 저장소에서 쿼리 최적화를 용이하게 하는 시스템으로,
    데이터 저장소의 데이터에 대해 처리될, 원본 술어(original predicate)를 포함하는 쿼리를 수신하는 쿼리 컴포넌트, 및
    상기 원본 술어를, 암시 술어(implied predicate)를 포함하는 하나 이상의 새로운 술어로 처리하는 술어 컴포넌트 -상기 암시 술어는 상기 데이터에 대해 처리되어, 총 평가 비용을 크게 감소시키는 최상의 솔루션을 리턴함-
    를 포함하는 시스템.
  2. 제1항에 있어서, 상기 술어 컴포넌트는 상기 원본 술어를 처리하여 등가 술어(equivalent predicate)를 얻는 시스템.
  3. 제1항에 있어서, 상기 술어 컴포넌트는 상기 원본 술어를 처리하여 잔여 술어(residual predicate)를 얻는 시스템.
  4. 제1항에 있어서, 상기 쿼리는 일치하지 않는 사전 처리된 쿼리인 시스템.
  5. 제1항에 있어서, 상기 하나 이상의 새로운 술어는 표준 인덱스들 및 다치 인덱스들에 사용될 수 있는 시스템.
  6. 제1항에 있어서, 상기 하나 이상의 새로운 술어는, 상기 평가 비용이 감소되는 경우에만 사용되고, 그렇지 않은 경우에는 폐기되는 비용 기반 대용어(cost-based alternatives)로 고려되는 시스템.
  7. 제1항에 있어서, 상기 하나 이상의 새로운 술어는 인덱스 사용과 연관되는 시스템.
  8. 제1항에 있어서, 상기 쿼리는 인덱싱이 불가능한 데이터 유형에 대해 처리되는 시스템.
  9. 제1항의 시스템에 따른 데이터 저장소 최적화기.
  10. 데이터 저장소에서 쿼리 최적화를 용이하게 하는 시스템으로,
    데이터 저장소의 데이터에 대해 처리될, 원본 술어를 포함하는 쿼리를 수신하는 쿼리 컴포넌트, 및
    상기 원본 술어를, 암시 술어, 등가 술어 및 잔여 술어 중 적어도 하나를 포함하는 하나 이상의 새로운 술어로 처리하는 술어 컴포넌트 -상기 암시 술어 또는 상기 등가 술어 중 어느 하나는 상기 데이터에 대해 처리되어, 총 평가 비용을 크게 감소시키는 최상의 솔루션을 리턴함-
    를 포함하는 시스템.
  11. 제10항에 있어서, 상기 암시 술어 및 상기 등가 술어는 상기 평가 비용이 감소되지 않는 경우에 폐기되는 비용 기반 대용어로 간주되는 시스템.
  12. 제10항의 시스템을 구현하는 컴퓨터 실행 가능 명령들을 저장한 컴퓨터 판독 가능 매체.
  13. 제10항의 시스템을 채용한 서버.
  14. 제10항에 있어서, 상기 술어 컴포넌트는 상기 하나 이상의 새로운 술어를 이용하여 표현식을 생성하며, 상기 표현식은 주어진 열(column) 및 주어진 열 상의 함수 중 적어도 하나와 연관되는 암시 규칙을 얻는 데 사용되는 시스템.
  15. 제14항에 있어서, 상기 술어 컴포넌트는 상기 주어진 열 및 상기 주어진 열 상의 함수 중 적어도 하나가 비교될 상기 표현식, 및 이용될 수 있는 표준 인덱스들의 리스트를 제공하는 것에 응답하여 상기 암시 규칙을 요구하는 시스템.
  16. 제10항에 있어서, 상기 하나 이상의 새로운 술어는 인덱스 선택 동안에 분석되는 시스템.
  17. 제10항에 있어서, 비용 기반 평가, 카디널리티(cardinality) 추정 및 쿼리의 복잡성 중 적어도 하나와 관련된 하나 이상의 파라미터에 기초하여 추론을 행함으로써 하나 이상의 특징(feature)을 자동화하는 것을 용이하게 하는 분류기를 더 포함하는 시스템.
  18. 제10항에 있어서, 상기 총 평가 비용은 최적화가 향상되는 경우에만 상기 하나 이상의 새로운 술어를 사용하는 것을 포함하는 시스템.
  19. 제10항에 있어서, 상기 쿼리는 검색 술어와 인덱스 키 사이에 정확한 일치가 존재하지 않는 쿼리인 시스템.
  20. 제10항에 있어서, 상기 암시 술어는 인덱스 키와 정확히 일치하는 시스템.
  21. 검색 쿼리를 최적화하는 방법을 수행하기 위한 컴퓨터 실행 가능 명령을 갖는 컴퓨터 판독 가능 매체로서,
    상기 방법은,
    원본 술어가 인덱스 키와 정확하게 일치하지 않는 쿼리를 수신하는 단계,
    상기 원본 술어를 암시 술어 및 등가 술어 중 적어도 하나로 줄이는 단계,
    데이터 저장소의 데이터에 대해 상기 암시 술어와 상기 등가 술어 중 적어도 하나를 처리하여 검색 결과를 얻는 단계, 및
    최상의 솔루션을 위해 상기 검색 결과를 분석하는 단계
    를 포함하는 컴퓨터 판독 가능 매체.
  22. 제21항에 있어서, 상기 방법은 열 또는 열 상의 함수에 대한 암시 규칙을 요구하는 단계를 더 포함하는 컴퓨터 판독 가능 매체.
  23. 제21항에 있어서, 상기 방법은 열 또는 열 상의 함수가 비교될 표현식, 및 이용될 수 있는 표준 인덱스들 또는 다치 인덱스들의 리스트 중 적어도 하나를 전송하는 단계를 더 포함하는 컴퓨터 판독 가능 매체.
  24. 제21항에 있어서, 상기 방법은 상기 암시 술어가 상기 표준 또는 다치 인덱스들 중 하나를 이용하지 않는 경우 상기 암시 술어를 제거하는 단계를 더 포함하는 컴퓨터 판독 가능 매체.
  25. 제21항에 있어서, 상기 방법은 상기 원본 술어의 개별 연산자에 대해 새로운 특별 탐구 규칙(ad-hoc exploratory rule)을 사용하는 단계를 더 포함하는 컴퓨터 판독 가능 매체.
  26. 제25항에 있어서, 상기 방법은 상기 탐구 규칙으로 상기 암시 술어와 상기 등가 술어 중 적어도 하나를 분석하는 단계를 더 포함하는 컴퓨터 판독 가능 매체.
  27. 제21항에 있어서, 상기 방법은,
    중첩 쿼리들(nested queries)을 연관시키는 술어들을 가진 임시 대용어들(tentative substitutes)의 리스트를 요구하는 단계,
    상기 대용어를 상기 쿼리에 포함시켜 새로운 표현식을 형성하는 단계,
    상기 새로운 표현식을 간략화하는 단계,
    중첩 쿼리들을 제거하는 단계, 및
    검색을 위해 새로운 대용어를 생성하는 단계
    를 더 포함하는 컴퓨터 판독 가능 매체.
  28. 제21항에 있어서, 상기 방법은 상기 원본 술어를 처리하여 검색을 정밀화하는 잔여 술어를 생성하는 단계를 더 포함하는 컴퓨터 판독 가능 매체.
  29. 제28항에 있어서, 상기 방법은 상기 암시 술어와 상기 등가 술어 중 적어도 하나를 처리하는 단계 후에, 상기 잔여 술어를 처리하는 단계를 더 포함하는 컴퓨터 판독 가능 매체.
  30. 제21항에 있어서, 상기 방법은 상기 원본 술어에 상기 암시 술어를 부가하고 상기 최상의 솔루션을 검색하는 단계를 더 포함하는 컴퓨터 판독 가능 매체.
  31. 제21항에 있어서, 상기 방법은 상기 원본 술어를 상기 등가 술어로 대체하고 상기 최상의 솔루션을 검색하는 단계를 더 포함하는 컴퓨터 판독 가능 매체.
  32. 제21항에 있어서, 상기 방법은 상기 암시 술어와 상기 등가 술어 중 적어도 하나를 이용하여 카디널리티 추정을 수행하는 단계를 더 포함하는 컴퓨터 판독 가능 매체.
  33. 제21항에 있어서,
    상기 방법은 인덱스 확장 스킴에 기초하여 인덱스를 생성하는 단계를 더 포함하고,
    상기 스킴은,
    인덱싱되는 데이터 유형에 대응하는 데이터 유형의 키 열(key column)을 제공하는 단계,
    한 세트의 파라미터를 제공하는 단계, 및
    인덱싱되는 열의 값에 대한 인덱스 엔트리를 생성하는 데 사용되는 테이블 값 함수명(table-valued function name)을 제공하는 단계
    중 적어도 하나를 포함하는 컴퓨터 판독 가능 매체.
  34. 데이터 저장소에서 쿼리 최적화를 용이하게 하는 시스템으로,
    원본 술어가 인덱스 키와 정확하게 일치하지 않는 쿼리를 수신하는 수단,
    상기 원본 술어를 암시 술어와 등가 술어 중 적어도 하나로 줄이는 수단,
    열 또는 열 상의 함수에 대한 암시 규칙을 요구하는 수단,
    열 또는 열 상의 함수가 비교될 표현식, 및 이용될 수 있는 표준 인덱스들 또는 다치 인덱스들의 리스트 중 적어도 하나를 전송하는 수단,
    데이터 저장소의 데이터에 대해 상기 암시 술어와 상기 등가 술어 중 적어도 하나를 처리하여 검색 결과를 얻는 수단,
    최상의 솔루션을 위해 상기 검색 결과를 분석하는 수단, 및
    상기 암시 술어가 상기 표준 또는 다치 인덱스들 중 하나를 이용하지 않는 경우 상기 암시 술어를 제거하는 수단
    을 포함하는 시스템.
  35. 제34항에 있어서, 상기 원본 술어의 개별 연산자에 대해 새로운 특별 탐구 규칙을 이용하는 수단을 더 포함하는 시스템.
  36. 제34항에 있어서, 상기 탐구 규칙으로 상기 암시 술어와 상기 등가 술어 중 적어도 하나를 분석하는 수단을 더 포함하는 시스템.
  37. 제34항에 있어서,
    중첩 쿼리들을 연관시키는 술어들을 가진 임시 대용어의 리스트를 요구하는 수단,
    상기 대용어를 상기 쿼리에 포함시켜 새로운 표현식을 형성하는 수단,
    상기 새로운 표현식을 간략화하는 수단,
    중첩 쿼리들을 제거하는 수단, 및
    검색을 위해 새로운 대용어를 생성하는 수단
    중 적어도 하나를 더 포함하는 시스템.
  38. 제34항에 있어서, 상기 원본 술어를 처리하여 검색을 정밀화하는 잔여 술어를 생성하는 수단을 더 포함하는 시스템.
  39. 제38항에 있어서, 상기 암시 술어와 상기 등가 술어 중 적어도 하나를 처리한 후 상기 잔여 술어를 처리하는 수단을 더 포함하는 시스템.
  40. 제34항에 있어서, 상기 암시 술어와 상기 등가 술어 중 적어도 하나를 이용하여 카디널리티를 추정하는 수단을 더 포함하고, 상기 암시 술어의 이용은 상기 원본 술어를 만족시킬 수 있는 행들(rows)의 수에 대한 상한을 정의하는 것을 용이하게 하는 시스템.
KR1020050013717A 2004-03-18 2005-02-18 암시 술어를 이용하는 개선된 쿼리 최적화기 KR20060043011A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/803,443 2004-03-18
US10/803,443 US20050210023A1 (en) 2004-03-18 2004-03-18 Query optimizer using implied predicates

Publications (1)

Publication Number Publication Date
KR20060043011A true KR20060043011A (ko) 2006-05-15

Family

ID=34838919

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050013717A KR20060043011A (ko) 2004-03-18 2005-02-18 암시 술어를 이용하는 개선된 쿼리 최적화기

Country Status (5)

Country Link
US (1) US20050210023A1 (ko)
EP (1) EP1577796A1 (ko)
JP (1) JP2005267612A (ko)
KR (1) KR20060043011A (ko)
CN (1) CN1670729A (ko)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7636707B2 (en) * 2004-04-06 2009-12-22 Microsoft Corporation Query selectivity estimation with confidence interval
US8447743B2 (en) * 2004-08-17 2013-05-21 International Business Machines Corporation Techniques for processing database queries including user-defined functions
US8271463B2 (en) 2004-12-28 2012-09-18 International Business Machines Corporation System and method for providing access to data with user defined table functions
US8438141B2 (en) * 2005-01-27 2013-05-07 International Business Machines Corporation System and method for providing secure access to data with user defined table functions
US7580923B2 (en) * 2005-05-10 2009-08-25 Microsoft Corporation Binding for multi-part identifiers
US7925642B2 (en) * 2005-06-09 2011-04-12 International Business Machines Corporation Apparatus and method for reducing size of intermediate results by analyzing having clause information during SQL processing
US7917482B1 (en) * 2005-08-10 2011-03-29 Infoblox Inc. Indexing of database queries
US8880506B2 (en) * 2009-10-16 2014-11-04 Oracle International Corporation Leveraging structured XML index data for evaluating database queries
US7889676B1 (en) * 2006-04-13 2011-02-15 Infoblox Inc. Systems and methods for storing and retrieving data
US8323415B2 (en) * 2006-08-10 2012-12-04 GM Global Technology Operations LLC Fast recycling process for ruthenium, gold and titanium coatings from hydrophilic PEM fuel cell bipolar plates
US7725448B2 (en) * 2007-08-31 2010-05-25 International Business Machines Corporation Method and system for disjunctive single index access
US7890480B2 (en) * 2008-02-11 2011-02-15 International Business Machines Corporation Processing of deterministic user-defined functions using multiple corresponding hash tables
US9910892B2 (en) 2008-07-05 2018-03-06 Hewlett Packard Enterprise Development Lp Managing execution of database queries
US20100082507A1 (en) * 2008-09-30 2010-04-01 Archana Sulochana Ganapathi Predicting Performance Of Executing A Query In Isolation In A Database
US8805875B1 (en) 2008-10-04 2014-08-12 Reflex Systems Llc Systems and methods for information retrieval
CN101408900B (zh) * 2008-11-24 2011-03-16 中国科学院地理科学与资源研究所 一种网格计算环境下的分布式空间数据查询优化方法
US9141664B2 (en) * 2009-08-31 2015-09-22 Hewlett-Packard Development Company, L.P. System and method for optimizing queries
US9081873B1 (en) * 2009-10-05 2015-07-14 Stratacloud, Inc. Method and system for information retrieval in response to a query
JP5061173B2 (ja) * 2009-11-13 2012-10-31 株式会社日立製作所 データベース管理方法、データベース管理装置及びデータベース管理プログラム
US8818991B2 (en) * 2009-12-23 2014-08-26 Pivotal Software, Inc. Apparatus and method for analyzing query optimizer performance
US8204903B2 (en) * 2010-02-16 2012-06-19 Microsoft Corporation Expressing and executing semantic queries within a relational database
US8332388B2 (en) * 2010-06-18 2012-12-11 Microsoft Corporation Transformation rule profiling for a query optimizer
US8839214B2 (en) * 2010-06-30 2014-09-16 Microsoft Corporation Indexable type transformations
US9489183B2 (en) 2010-10-12 2016-11-08 Microsoft Technology Licensing, Llc Tile communication operator
US9430204B2 (en) 2010-11-19 2016-08-30 Microsoft Technology Licensing, Llc Read-only communication operator
US9507568B2 (en) * 2010-12-09 2016-11-29 Microsoft Technology Licensing, Llc Nested communication operator
US9395957B2 (en) 2010-12-22 2016-07-19 Microsoft Technology Licensing, Llc Agile communication operator
US8898145B2 (en) * 2011-06-15 2014-11-25 Microsoft Corporation Query optimization techniques for business intelligence systems
US9773032B2 (en) * 2011-09-30 2017-09-26 Bmc Software, Inc. Provision of index recommendations for database access
CN103365885B (zh) * 2012-03-30 2016-12-14 国际商业机器公司 用于数据库查询优化的方法和系统
US20130297586A1 (en) 2012-05-07 2013-11-07 International Business Machines Corporation Optimizing queries using predicate mappers
CN104216891B (zh) * 2013-05-30 2018-02-02 国际商业机器公司 关系型数据库中的查询语句的优化方法和设备
US9753983B2 (en) 2013-09-19 2017-09-05 International Business Machines Corporation Data access using decompression maps
US9336236B2 (en) * 2014-01-21 2016-05-10 International Business Machines Corporation Geospatial queries using associated distribution data
US9780805B2 (en) * 2014-10-22 2017-10-03 International Business Machines Corporation Predicate application through partial compression dictionary match
US10108712B2 (en) * 2014-11-19 2018-10-23 Ebay Inc. Systems and methods for generating search query rewrites
US9626430B2 (en) 2014-12-22 2017-04-18 Ebay Inc. Systems and methods for data mining and automated generation of search query rewrites
WO2016127851A1 (en) * 2015-02-12 2016-08-18 Huawei Technologies Co., Ltd. Method and query optimization server for associating functions with columns for optimizing query execution
US9378303B1 (en) * 2015-09-18 2016-06-28 Linkedin Corporation Representing compound relationships in a graph database
US10452656B2 (en) * 2016-03-31 2019-10-22 Sap Se Deep filter propagation using explicit dependency and equivalency declarations in a data model
US10432217B2 (en) 2016-06-28 2019-10-01 International Business Machines Corporation Page filtering via compression dictionary filtering
US11449495B2 (en) * 2017-02-01 2022-09-20 United Parcel Service Of America, Inc. Indexable database profiles comprising multi-language encoding data and methods for generating the same
US10528523B2 (en) * 2017-05-31 2020-01-07 International Business Machines Corporation Validation of search query in data analysis system
CN107229726B (zh) * 2017-06-06 2021-02-19 成都索贝数码科技股份有限公司 一种基于完全成本计算的数据索引方法及系统
CN110019307B (zh) * 2017-12-28 2023-09-01 阿里巴巴集团控股有限公司 数据处理方法及装置
CN108256061A (zh) * 2018-01-16 2018-07-06 华东师范大学 医疗文本的检索方法、电子设备及存储介质
US10810199B2 (en) 2018-08-30 2020-10-20 International Business Machines Corporation Correlation of input and output parameters for a function in a database management system
US11226963B2 (en) * 2018-10-11 2022-01-18 Varada Ltd. Method and system for executing queries on indexed views
US11106674B2 (en) * 2019-03-31 2021-08-31 International Business Machines Corporation Extensible data skipping
US11100105B1 (en) * 2020-05-27 2021-08-24 Snowflake Inc. Performing geospatial-function joins using interval joins

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5301317A (en) * 1992-04-27 1994-04-05 International Business Machines Corporation System for adapting query optimization effort to expected execution time
JP2583010B2 (ja) * 1993-01-07 1997-02-19 インターナショナル・ビジネス・マシーンズ・コーポレイション 多層インデックス構造におけるローカルインデックステーブル及び大域インデックステーブルの間の一貫性を維持する方法
US5742806A (en) * 1994-01-31 1998-04-21 Sun Microsystems, Inc. Apparatus and method for decomposing database queries for database management system including multiprocessor digital data processing system
JP2710547B2 (ja) * 1994-02-15 1998-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション グラフィカル・ユーザ・インターフェース
US5664063A (en) * 1994-12-01 1997-09-02 International Business Machines Corporation Automatic user notification of certain meeting attributes of a posted calendar event
US5671403A (en) * 1994-12-30 1997-09-23 International Business Machines Corporation Iterative dynamic programming system for query optimization with bounded complexity
US5701454A (en) * 1995-01-17 1997-12-23 International Business Machines Corporation Simplification of SQL queries using generalized inference propagation and generalized transitive closure
US5778354A (en) * 1995-06-07 1998-07-07 Tandem Computers Incorporated Database management system with improved indexed accessing
US5960194A (en) * 1995-09-11 1999-09-28 International Business Machines Corporation Method for generating a multi-tiered index for partitioned data
US6088524A (en) * 1995-12-27 2000-07-11 Lucent Technologies, Inc. Method and apparatus for optimizing database queries involving aggregation predicates
US5893911A (en) * 1996-04-17 1999-04-13 Neon Software, Inc. Method for defining and applying rules for message distribution for transaction processing in a distributed application
US5819255A (en) * 1996-08-23 1998-10-06 Tandem Computers, Inc. System and method for database query optimization
US6219662B1 (en) * 1997-07-10 2001-04-17 International Business Machines Corporation Supporting database indexes based on a generalized B-tree index
US6012054A (en) * 1997-08-29 2000-01-04 Sybase, Inc. Database system with methods for performing cost-based estimates using spline histograms
US5918232A (en) * 1997-11-26 1999-06-29 Whitelight Systems, Inc. Multidimensional domain modeling method and system
US6594653B2 (en) * 1998-03-27 2003-07-15 International Business Machines Corporation Server integrated system and methods for processing precomputed views
US6338056B1 (en) * 1998-12-14 2002-01-08 International Business Machines Corporation Relational database extender that supports user-defined index types and user-defined search
US6360214B1 (en) * 1998-12-16 2002-03-19 Microsoft Corporation Automatic database statistics creation
US6345266B1 (en) * 1998-12-23 2002-02-05 Novell, Inc. Predicate indexing for locating objects in a distributed directory
US6381616B1 (en) * 1999-03-24 2002-04-30 Microsoft Corporation System and method for speeding up heterogeneous data access using predicate conversion
US6578018B1 (en) * 1999-07-27 2003-06-10 Yamaha Hatsudoki Kabushiki Kaisha System and method for control using quantum soft computing
US6516310B2 (en) * 1999-12-07 2003-02-04 Sybase, Inc. System and methodology for join enumeration in a memory-constrained environment
US6353821B1 (en) * 1999-12-23 2002-03-05 Bull Hn Information Systems Inc. Method and data processing system for detecting patterns in SQL to allow optimized use of multi-column indexes
US6675159B1 (en) * 2000-07-27 2004-01-06 Science Applic Int Corp Concept-based search and retrieval system
US6757671B1 (en) * 2000-09-27 2004-06-29 Microsoft Corporation Use of indices for queries with comparisons on a function
US6510422B1 (en) * 2000-09-27 2003-01-21 Microsoft Corporation Cost based materialized view selection for query optimization
US6665664B2 (en) * 2001-01-11 2003-12-16 Sybase, Inc. Prime implicates and query optimization in relational databases
US6850933B2 (en) * 2001-11-15 2005-02-01 Microsoft Corporation System and method for optimizing queries using materialized views and fast view matching
EP1349081A1 (en) * 2002-03-28 2003-10-01 LION Bioscience AG Method and apparatus for querying relational databases
US6598044B1 (en) * 2002-06-25 2003-07-22 Microsoft Corporation Method for choosing optimal query execution plan for multiple defined equivalent query expressions

Also Published As

Publication number Publication date
JP2005267612A (ja) 2005-09-29
EP1577796A1 (en) 2005-09-21
US20050210023A1 (en) 2005-09-22
CN1670729A (zh) 2005-09-21

Similar Documents

Publication Publication Date Title
KR20060043011A (ko) 암시 술어를 이용하는 개선된 쿼리 최적화기
Tran et al. Query reverse engineering
US8285707B2 (en) Method of querying relational database management systems
US9390115B2 (en) Tables with unlimited number of sparse columns and techniques for an efficient implementation
US8423569B2 (en) Decomposed query conditions
US7644062B2 (en) Join factorization of union/union all queries
US7933894B2 (en) Parameter-sensitive plans for structural scenarios
US10372707B2 (en) Query execution pipelining with pump operators
US7809713B2 (en) Efficient search space analysis for join factorization
US10885032B2 (en) Query execution pipelining with shared states for query operators
US10885031B2 (en) Parallelizing SQL user defined transformation functions
US20090030874A1 (en) Techniques for Optimizing SQL Statements Using User-Defined Indexes with Auxiliary Properties
US20140310302A1 (en) Storing and querying graph data in a key-value store
US20070219951A1 (en) Join predicate push-down optimizations
US7702627B2 (en) Efficient interaction among cost-based transformations
US12079181B2 (en) Efficient indexing for querying arrays in databases
CA2427228A1 (en) Information retrieval systems for optimization of queries having maximum or minimum function aggregation predicates
US8200673B2 (en) System and method for on-demand indexing
Chen et al. ITISS: an efficient framework for querying big temporal data
CN115391424A (zh) 数据库查询的处理方法、存储介质与计算机设备
Muller Software engineering for the industrial Internet: Situation-aware smart applications
Sarma et al. Uncertainty in data integration
EP4383090A1 (en) Summary generation for a distributed graph database
Hassan Native Graph Support in Relational Data Systems
CN116975098A (zh) 查询计划构建方法、装置、电子设备和存储介质

Legal Events

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