KR20090002351A - 제한합 기법을 이용한 데이터베이스에서의 효율적인 다중질의 수행 방법 - Google Patents

제한합 기법을 이용한 데이터베이스에서의 효율적인 다중질의 수행 방법 Download PDF

Info

Publication number
KR20090002351A
KR20090002351A KR1020070064068A KR20070064068A KR20090002351A KR 20090002351 A KR20090002351 A KR 20090002351A KR 1020070064068 A KR1020070064068 A KR 1020070064068A KR 20070064068 A KR20070064068 A KR 20070064068A KR 20090002351 A KR20090002351 A KR 20090002351A
Authority
KR
South Korea
Prior art keywords
query
column
result
tuples
list
Prior art date
Application number
KR1020070064068A
Other languages
English (en)
Other versions
KR100886607B1 (ko
Inventor
김종용
박영철
김창원
이동욱
Original Assignee
주식회사 퓨전소프트
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 퓨전소프트 filed Critical 주식회사 퓨전소프트
Priority to KR1020070064068A priority Critical patent/KR100886607B1/ko
Publication of KR20090002351A publication Critical patent/KR20090002351A/ko
Application granted granted Critical
Publication of KR100886607B1 publication Critical patent/KR100886607B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2425Iterative querying; Query formulation based on the results of a preceding query
    • 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/242Query formulation
    • G06F16/2433Query languages
    • G06F16/2438Embedded query languages
    • 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/242Query formulation
    • G06F16/2433Query languages
    • G06F16/244Grouping and aggregation
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations

Landscapes

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

Abstract

다중 질의들의 결과 투플들(result tuples)을 분할(partitioning)하고 정렬(ordering)하여 선별(limiting)하는 기법을 그 질의들에 우선순위를 부여함으로써 효율적으로 수행하는 방법이 개시된다. 이 방법은 SQL 문에서 제한합(LIMITED UNION ON) 절로 구현된다. 이 제한합의 수행은 먼저, 다중 질의들의 우선순위를 그 질의들의 설정순서로 정함으로써, 일련(一連)의 질의들에 의해 형성되는 결과 투플들이라 할 때 <질의문의 순서, 결과 투플> 쌍들의 집합을 대상으로 하여 이들의 지정된 칼럼(들)의 칼럼값에 따라 동일 칼럼값을 가지는 <질의문의 순서, 결과 투플> 쌍들의 집합으로 분할한다. 각 분할의 <질의문의 순서, 결과 투플> 쌍들의 집합을 대상으로 질의문의 순서의 오름차순과 결과 투플들의 특정 칼럼(들)의 칼럼값의 정렬순서(오름차순 또는 내림차순)에 따라 각 분할 내에서 <질의문의 순서, 결과 투플> 쌍들의 순서를 정한다. 그리고 각 분할 별로 설정된 제한개수 즉, 특정 순서까지의 <질의문의 순서, 결과 투플> 쌍들을 선별하여 그들에서 각 쌍의 결과 투플 만을 반환한다.
데이터베이스, 질의 리스트, 분할, 정렬, 선별, 제한합

Description

제한합 기법을 이용한 데이터베이스에서의 효율적인 다중 질의 수행 방법 {Method of effectively performing limited-union based multiple-queries in a database management system}
도 1은 본 발명에 따른 제한합을 이용한 데이터베이스에서의 조인 질의(join query)의 전체 수행 순서를 나타내는 흐름도이고,
도 2는 본 발명에 따른 제한합을 이용한 데이터베이스에서의 질의 수행에서 제한합의 분할 칼럼과 질의 조인 칼럼이 동일할 경우의 조인과 제한합의 수행과정을 나타내는 도면이고,
도 3은 본 발명에 따른 제한합을 이용한 데이터베이스에서의 질의 수행에서 제한합의 분할 칼럼과 질의 조인 칼럼이 동일하지 않은 경우의 조인과 제한합의 수행과정을 나타내는 도면이고,
도 4는 본 발명에 따른 제한합을 이용한 데이터베이스에서의 질의 수행에서 제한합의 분할 칼럼과 질의 조인 칼럼이 동일할 경우의 조인과 제한합의 수행의 질의 트리를 나타내는 도면이고,
도 5는 본 발명에 따른 제한합을 이용한 데이터베이스에서의 질의 수행에서 제한합의 분할 칼럼과 질의 조인 칼럼이 동일하지 않은 경우의 조인과 제한합의 수행의 질의 트리를 나타내는 도면이다.
도 6은 본 발명에 따른 제한합의 수행예를 보여준다.
본 발명은 데이터베이스 관리시스템(Database Management System; 이하, DBMS라 함)에서 질의 처리를 수행하는 방법에 관한 것으로서, 보다 상세하게는 DBMS를 채용한 전자기기에서 특수한 형태의 질의 수행을 최적으로 처리하는 방법에 관한 것이다. 특히, 다중 질의들의 결과 투플들을 분할하고 정렬하여 선별하는 기법을 그 질의들에 우선순위를 부여함으로써 다중 질의의 처리를 효율적으로 수행하는 방법에 관한 것이다.
임베디드(embedded) 환경의 응용기기들의 임베디드 DBMS는 그 임베디드 환경이 가지는 프로세서의 처리 속도와 메모리와 파일의 용량 등의 제약이 있을지라도 특수한 형태의 복잡한 질의문에 대해서도 만족할 정도의 성능을 보장하여야 한다. 본 발명은 이러한 임베디드 환경에서 임베디드 DBMS의 성능 보장을 위해 제한합(limited union)을 발명하였다.
본 발명이 속하는 종래의 기술로는 대표적으로 오라클 DBMS의 분할과 정렬 그리고 순위(rank) 부여의 방법을 들 수 있다. 오라클 DBMS에서, 분할은 질의 대상 투플들(tuples)을 설정된 칼럼들에 따라 분할하고, 분할에 대한 정렬은 각 분할의 투플들에 대하여 설정된 칼럼들에 따라 정렬하며, 그리고 정렬된 분할에 대한 순위 부여는 정렬된 각 분할의 투플들에 대하여 순위를 부여하는 것이다. 예를 들어, 그 질의문은 아래의 Q1과 같다.
Q 1:
Select number, name, rank() over(partition by number order by memType DESC)as rank
From SIMInfo
Where rank <= 1;
질의 Q1은 테이블 SIMInfo의 모든 투플들을 대상으로 partition by 절을 사용하여 칼럼 number에 동일값을 가지는 투플들로 분할하고, 각 분할의 투플들을 대상으로 order by 절을 사용하여 칼럼 memType의 값의 내림차순으로 정렬한 후, 각 분할의 정렬된 투플들에 대하여 rank() 함수를 적용하여 1부터 1씩 증가하는 값을 각 투플에 차례로 부여하는 처리를 수행하도록 하는 질의문이다. 이렇게 함으로써 각 결과 투플은 칼럼 number, name, rank를 가지며 where 절의 rank <= 1의 술어(predicate)에 의해 rank의 값이 1인 결과 투플들 만을 취하는 즉, 각 분할에서 첫 번째 순위의 투플만을 반환한다.
그런데 임베디드 환경의 특수한 응용들은 질의 Q1과 같이 하나의 테이블의 모든 투플들을 분할하고 정렬하여 순위를 구하는 간단한 경우 외에도, 여러 테이블들의 투플들을 대상으로 분할과 정렬 그리고 순위를 구하는 복잡한 질의의 요구가 발생할 수 있다. 예를 들어, 이동통신 단말기의 경우에는 전화가 걸려오면 수신된 그 전화번호에 해당하는 발신인의 성명이 데이터베이스를 검색하여 실시간으로 표시되어야 한다. 이동통신 단말기에 따라서는, 사용자가 단말기에 독립적으로 휴대할 수 있는 전화번호를 저장하는 SIM 카드에 의한 전화번호부와 단말기에 종속된 전화번호를 저장하는 전화번호부의 두 개의 테이블로 관리될 수 있다. 이 경우, SIM 카드에 의한 전화번호부의 전화번호는 단말기 종속의 전화번호부의 전화번호에 우선한다. 따라서, 전화번호부의 탐색은 두 개의 전화번호부 테이블들을 대상으로 수행하되, 특히 두 테이블의 우선순위에 따라 특정 전화번호에 대한 발신인의 성명표시 작업이 수행되어야 한다.
이동통신 단말기의 DBMS에서, 최근 송수신 기록과 부재중 수신의 정보를 유지하기 위하여 하나의 테이블을 둘 수 있다. 그 테이블을 CallRecords라 하고, SIM 카드에 의한 전화번호부 테이블을 SIMInfo라 하며, 단말기 종속의 전화번호부 테이블을 PhoneInfo라 하자. 최근 부재중 수신의 정보를 구하는 질의는 오라클 DBMS의 분할과 정렬 그리고 순위 부여를 이용하여 아래의 두 질의 Q2와 Q3로 설정될 수 있다. 그 두 질의들은 의미상으로 동치이다.
Q2 :
Select number, name
From (
select number, name, rank() over(partition by CallID, number order by memType DESC, numberType) as rank
from (select x.CallID, p.name, p.number, p.memType, 1 as numberType
from CallRecords x Left Outer Join SIMInfo p ON x.number = p.number
where x.callType = 1
UNION ALL
select x.CallID, q.name, q.number, 0 as memType, q.numberType
From CallRecords x Left Outer Join PhoneInfo q ON x.number = q.number
Where x.callType = 1
)
)
Where rank = 1;
Q3 :
Select number, name
From (
select number, name, rank() over(partition by x.CallID, x.number order by memType DESC, numberType) as rank
from CallRecords x Left Outer Join (
select p.name, p.number, p.memType, 1 as numberType
from SIMInfo p
UNION ALL
select q.name, q.number, 0 as memType, q.numberType
From PhoneInfo q
) as w ON x.number = w.number and x.callType = 1
)
Where rank = 1;
질의 Q3의 경우, 테이블 SIMInfo와 테이블 PhoneInfo를 UNION ALL한 중간 결과를 구하고 그 중간 결과를 대상으로 테이블 CallRecords를 외부조인(outer join)으로 수행하기 때문에 기본 테이블인 SIMInfo와 기본 테이블인 PhoneInfo의 조인조건으로 설정된 칼럼 number에 각각 색인이 존재하더라도 그 색인을 이용하지 못하게 되는 단점이 존재한다. 특히, 위의 두 질의 Q2와 Q3에서 테이블 SIMInfo가 테이블 PhoneInfo에 우선하도록 하기 위하여 칼럼 memType을 사용하여 내림차순으로 정렬하였다. 이는 테이블 SIMInfo의 모든 레코드들이 칼럼 memType에 대하여 양수의 값을 가진다는 사실을 질의 작성자가 알고 있을 때 가능하다. 그러나, 위 질의들 만으로는 DBMS의 질의 최적화기가 그 사실을 알 수 없다. 따라서 특정 분할의 모든 투플들에 대하여 정렬은 그 분할의 모든 투플들을 구한 후에 수행할 수 있으므로 질의 수행이 최적의 상태임을 보장할 수 없다.
또 다른 방법으로는, 특정 칼럼 tableOrder를 두고 테이블 SIMInfo에 대한 질의의 SELECT 절에 "1 as tableOrder" 그리고 테이블 PhoneInfo에 대한 질의의 SELECT 절에 "2 as tableOrder"를 두며 각 분할에 대한 기존 정렬 칼럼들의 선두에 tableOrder를 추가함으로써 각 분할의 투플들의 정렬에 테이블의 우선순위를 부여할 수 있다. 이 경우, DBMS의 질의 최적화기가 그 정보들을 최대한 사용하는 지를 우리는 알지 못한다.
본 발명은 이상과 같은 종래 기술의 한계들을 고려하며, 질의 작성자가 알고 있는 정보 즉, 특정 테이블들 사이의 우선순위를 질의 작성에 명세할 수 있도록 함으로써 다중 질의들의 결과 투플들을 분할하고 정렬하여 선별하는 기법을 효율적으로 수행하는 방법을 제공하는 것을 목적으로 한다. 즉, 다중 질의들의 결과 투플들을 분할하고 분할된 결과 투플들을 정렬하여 각 분할의 선두 특정 개수의 결과 투플들만을 취하는 기법에 있어서 그 질의들의 설정 순서에 따라 그 질의들의 우선순위를 부여함으로써 그 기법을 효율적으로 수행할 수 있고, 이를 통해 고성능 SQL 질의의 생성 이 가능하고 질의의 성능을 향상시킬 수 있는 방법을 제공하는 것을 목적으로 한다.
상기와 같은 목적을 달성하기 위한 본 발명의 일 측면에 따르면, 데이터베이스에서의 질의 처리 방법에 있어서, 데이터베이스에서 제한합 기법을 이용하여 다 중질의 질의를 최적화하여 처리하는 방법이 제공된다. 이 방법은 제한합 절(LIMITED UNION ON)을 사용하여 순서가 정해진 명시적 질의 리스트들의 각 질의에 대하여 선두 질의부터 차례로 결과 투플들을 하나 이상의 특정 칼럼에 대하여 동일값을 가지는 투플들의 집합으로 분할하는 제1단계, 각 분할 내의 투플들을 그 투플을 생성한 질의의 순서와 특정 칼럼의 값으로 정렬하는 제2단계, 그리고 각 분할의 정렬된 투플들에 대하여 분할의 선두에서부터 설정된 제한값의 수효만큼인 특정 순서까지의 결과 투플들을 반환하는 제3단계를 구비하는 것을 특징으로 한다. 이처럼 본 발명은 질의들의 설정 순서에 따라 결과 투플들에 우선순위를 부여할 수 있는 특징을 가진다.
상기 방법은, 제한합 절이 중첩 루프 조인의 내부 루프로 처리될 경우, 외부 루프의 각 투플의 조인 값에 대하여 내부 루프의 처리에서 조인 조건을 만족하는 투플들의 개수가 제한합 절의 제한 개수를 조기에 만족하면 그 제한합 절의 나머지 질의를 수행하지 않아도 된다. 또한, 조인 조건의 칼럼이 제한합 절의 일련의 질의들의 기본 테이블들에 색인으로 설정된 칼럼인 경우에는 그 색인들을 활용할 수 있다. 상기 방법은 이러한 특징을 이용하여 질의 수행의 최적화를 도모할 수 있다.
제한합 절인 LIMITED UNION ON 절은 제한합을 처리하기 위해 추가한 SQL 키워드이다. 이 제한합 절은 "LIMITED UNION ON pcl: ocl: lv (query_list)" 형태를 가진다. 여기서, "LIMITED UNION ON"은 제한합 기법을 나타내는 예약어이고, pcl은 partitioning column list의 약자로서 결과 투플들의 분할 기준을 나타내는 분할 칼럼 리스트를 나타내고, ocl은 ordering column list의 약자로서 각 분할의 결과 투플들의 정렬 기준을 나타내는 정렬 칼럼 리스트를 나타내며, lv는 limiting value의 약자로서 각 분할의 결과 투플들의 정렬 순서를 고려한 최대 선별 수효를 나타내는 선별자(제한값)을 나타내는 정수이다. 제한합 절의 query_list는 질의 리스트로서 질의들을 LINK라는 연결구로 연결한 것으로서 예를 들면, query_1 LINK query_2 LINK ·LINK query_n이 제한합 절의 질의 리스트이다. 질의 리스트의 질의들의 연결에서 연결구로 LINK를 사용한 이유는 ","를 그 연결구로 사용할 수 없으며, ";"은 질의문의 끝을 나타내므로 사용할 수 없고, ":"은 또한 질의의 모호성을 유발하여 사용할 수 없기 때문이다.
제한합 절이 조인연산에 사용될 경우, 그 조인 연산을 중첩 루프 조인의 방법으로 수행한다면 제한합 절을 내부 루프로 처리한다. 이 경우, 외부 루프의 각 투플의 조인 값에 대한 내부 루프의 처리에서 조인 조건을 만족하는 투플들을 일련의 질의들의 선두 질의부터 차례로 수행하여 구한다. 즉, 외부 루프의 각 조인 값에 대하여 제한합 절의 질의 리스트의 각 질의에 대하여 선두 질의부터 질의의 결과집합인 결과 투플들을 분할 칼럼 리스트의 칼럼들이 동일값을 가지도록 분할하고 각 분할에 대하여 그 분할의 결과 투플들을 정렬 칼럼 리스트의 칼럼들의 정렬 순서에 따라 정렬한 후, 그 분할의 선두로부터 제한값의 수효만큼의 결과 투플들을 취하고, 만족하는 투플의 개수가 그 분할의 제한값을 만족하지 못할 경우에 한하여 그 제한값을 만족할 때까지 질의 리스트의 다음 질의를 위와 같이 수행한다. 이처럼, 만족하는 투플의 개수가 설정된 제한값을 만족하거나 그 제한합 절의 모든 질의들을 수행할 때까지 구함으로써, 그 제한합 절의 일부 질의만을 수행하여 제한값 을 만족할 경우에는 그 제한합 절의 나머지 질의들을 수행하지 않아도 되므로 질의의 처리가 효율적으로 이루어질 수 있다.
제한합 절이 조인연산과 연결된 경우, 질의 리스트의 분할 칼럼 리스트에 명세된 칼럼(이하, 분할 칼럼이라 함)과 조인 칼럼(이하, 질의 조인 칼럼이라 함)의 일치 여부에 따라, 그리고 질의 조인 칼럼에 대한 색인의 존재 유무에 따라 표 1과 같이 구분하여 그 조인연산을 수행할 수 있다. 이처럼 본 발명의 방법은 조인 조건의 칼럼이 제한합의 일련의 질의들의 기본 테이블들에 색인으로 설정된 칼럼인 경우에는 그 색인들을 활용할 수 있는 특징을 가진다.
제한합 절이 조인연산과 연결
분할 칼럼 = 질의조인 칼럼 질의조인 칼럼에 색인 존재함 질의 수행방법
아니오 질의 리스트의 각 질의에 대하여 선두 질의부터 순차탐색으로 결과 투플들을 구함
질의 리스트의 각 질의에 대하여 선두 질의부터 색인탐색으로 결과 투플들을 구함
아니오 아니오 / 예 제한합의 결과집합을 모두 구한 후, 그 결과집합을 대상으로 조인연산을 수행함
각 경우에 대한 상세설명은 다음과 같다.
첫째, 분할 칼럼과 질의 조인 칼럼이 동일한 경우, 조인 연산을 중첩 루프 조인의 방법으로 아래와 같이 수행한다. 외부 루프의 각 조인 값에 대하여 제한합 절의 질의 리스트의 각 질의에 대하여 선두 질의부터 차례로 결과 투플들을 구한 후, 그 결과 투플들을 정렬 칼럼 리스트의 칼럼들에 따라 정렬한다. 그런 다음, 그 정렬된 결과 투플들의 선두로부터 제한값의 수효만큼의 결과 투플들을 가질 때까지 질의 리스트의 다음 질의를 위와 같이 수행한다. 이 경우, 제한합 절의 질의 리스트의 기본 테이블에 질의 조인 칼럼이 색인으로 설정된 칼럼인 경우에는 그 색인을 이용하여 질의 수행 성능을 높일 수 있다.
둘째, 분할 칼럼과 질의 조인 칼럼이 다른 경우, 제한합의 최종 결과집합을 구한 후, 그 결과집합을 대상으로 조인연산을 수행한다. 제한합의 최종 결과집합을 구하는 방법은 다음과 같다. 먼저, 제한합 절의 질의 리스트의 모든 질의들에 대하여 그 질의의 결과집합을 구한다. 각 결과 투플은 <질의 순서, 결과 투플>의 쌍으로 저장된다. 그리고 나서, 그 결과 집합의 <질의 순서, 결과 투플>의 쌍들을 분할 칼럼 리스트의 칼럼들에 따라 분할하여 각 분할별로 <질의 순서, 결과 투플>의 쌍으로 보관한다. 다음 순서는 각 분할에 대하여 그 분할의 <질의순서, 결과 투플>의 쌍들을 <질의순서, 정렬 칼럼>의 칼럼들에 따라 정렬하는 것이다. 마지막으로, 각 분할의 결과 투플들의 선두로부터 제한값의 수효만큼의 <질의순서, 결과 투플>의 쌍들에서 결과 투플만을 취한다.
본 발명의 다른 측면에 따르면, 다중 질의들의 결과 투플들을 분할하고 정렬하여 선별함에 있어서 제한합 기법을 이용하여 질의 처리를 수행하는 방법으로서, 상기 제한합 기법을 나타내는 예약어와, 결과 투플들의 분할 기준을 나타내는 분할 칼럼 리스트와, 각 분할의 결과 투플들의 정렬 기준을 나타내는 정렬 칼럼 리스트와, 각 분할의 결과 투플들의 정렬 순서를 고려한 최대 선별 수효를 나타내는 선별자(제한값)와, 그리고 결과 투플들을 생성하는 하나 이상의 질의들로 구성되는 질의 리스트로 제한합 절의 기능을 명세하는 것을 특징으로 하는 제한합 기법을 이용한 질의 처리 방법이 제공된다. 이와 같은 질의 처리 방법에 있어서, 상기 질의 리스트 상의 질의들의 설정 순서에 따라 자동으로 질의의 우선순위를 부여함으로써 그 질의들에 대한 결과 투플들의 동일 분할내의 우선순위를 상기 질의들의 설정순서를 최우선으로 하여 동일 질의의 결과 투플들 간의 동일 분할내의 우선순위를 정렬칼럼 리스트로 부여하는 것이 바람직하다.
이하, 첨부된 도면들을 참조하여 본 발명의 바람직한 실시 예에 대해 상세히 설명한다.
도 1은 본 발명에 따른 제한합을 이용한 데이터베이스에서의 조인 질의를 수행하는 순서도를 나타내는 흐름도이다. 질의의 수행은 먼저, 통상의 방법으로 질의문을 파싱하고 제한합을 이용하는 질의인지를 판단한다(단계 S1). 이때 제한합을 이용하는 질의가 아니면 일반 질의(단계 S9)로 통상의 방법으로 수행하고 결과집합을 반환하고 종료한다. 반면에, 단계 S1에서 판단결과 제한합을 이용하는 질의이면, 그 제한합에 대한 명세가 정확한 지를 판단하는 단계(단계 S3)로 넘어간다. 단계 S3에서는 제한합의 명세인 분할 칼럼 리스트, 정렬 칼럼 리스트, 제한값의 존재 여부를 판단한다. 판단결과 제한합의 명세가 모두 존재하지 않으면 SQL 구문 오류(단계 S11)로 처리하고 질의 수행을 종료하게 되며, 제한합의 명세가 모두 존재하면 제한합의 처리에 필요한 각 명세들을 설정한다. 단계 S3에서 제한합의 명세들이 존재하면 그 명세들 중에서 분할 칼럼 리스트의 분할 칼럼과 질의 조인 칼럼이 동일한가를 판단하고(단계 S5) 제한합을 이용하는 질의 처리(단계 S7)를 거쳐 질의 수행을 종료한다. 분할 칼럼과 질의 조인 칼럼이 동일할 경우와 동일하지 않을 경우의 제한합 처리에는 차이점이 있으므로, 제한합의 처리과정에 대해서는 도 2와 도 3을 참조하여 상세히 설명한다.
도 2는 본 발명에 따른 제한합을 이용한 데이터베이스에서의 질의에서 분할 칼럼과 질의 조인 칼럼이 동일할 경우의 제한합의 수행과정을 나타내는 도면이다. 이 경우, 제한합의 수행은 제한합의 질의 리스트에서 선두 질의부터 아래를 수행하여 질의 리스트의 끝까지 수행(단계 S31)하거나 제한값에 해당하는 수효의 결과집합이 생성될 때까지(단계 S43) 아래 과정을 수행한다. 질의 조인 칼럼이 질의의 기본테이블에 색인으로 설정된 칼럼인지를 판단(단계 S33)하고, 질의 조인 칼럼에 대해 기본테이블에 색인이 존재하지 않으면 질의의 결과집합을 대상 테이블의 순차탐색으로 구하고(단계 S35) 결과 투플들을 정렬 칼럼으로 정렬(단계 S39)한 후, 제한값을 만족하는 개수만큼 결과집합을 취한다(단계 S41). 만약, 단계 S33에서 질의 조인 칼럼에 대하여 질의의 기본테이블에 색인이 존재한다면 그 색인에 따라 분할된 것이므로 그 색인을 이용하여 결과 투플들을 구하고(단계 S37) 정렬칼럼으로 정렬(단계 S39)한 후, 제한값을 만족하는 개수만큼 결과집합을 취한다(단계 S41). 단계 S43에서 제한값을 만족하는 개수만큼 결과집합을 취하였으면 질의를 종료하고, 그렇지 않으면 질의 리스트의 다음 질의에 대하여 단계 S33부터 반복하게 된다.
도 3은 본 발명에 따른 제한합을 이용한 데이터베이스에서의 질의에서 분할 칼럼이 질의 조인 칼럼과 동일하지 않은 경우에 제한합의 수행과정을 나타내는 도면이다. 이 경우, 제한합의 수행은 제한합의 질의 리스트의 모든 질의의 결과 집합을 <질의 순서, 결과 투플>의 쌍으로 구한 후(단계 S51, 단계 S53), 그 결과집합을 투플들의 분할 칼럼으로 분할(단계 S55)하고, 각 분할의 <질의 순서, 결과 투플>의 쌍들을 <질의 순서, 정렬 칼럼>으로 정렬(단계 S57)하여 각 분할에 대하여 제한값 만큼의 <질의순서, 결과 투플>의 쌍에서 결과 투플만을 취하고(단계 S59) 종료한다.
이와 같이 제한합을 도 2와 도 3의 두 가지로 나누어 수행하는 이유는 두 경우 모두에서 중첩 루프 조인의 내부 루프로 제한합이 처리되며 외부 루프의 각 조인 값에 대하여 비교되는 대상이 내부 루프의 처리에서 분할 칼럼과 질의 조인 칼럼의 동일여부에 따라 구분한 것이기 때문이다. 그 둘이 동일할 경우, 각 조인값에 대하여 질의 리스트의 전체 질의들의 중간결과를 만들지 않고, 질의 리스트의 질의들의 우선순위에 따라 선두 질의로부터 조인 조건을 만족하는 선두 특정결과 투플들만을 취한다. 이렇게 하여 조기에 제한값을 만족할 경우에는 나중 질의를 수행하지 않아도 되는 장점이 있다. 그 둘이 동일하지 않을 경우, 제한합의 최종 결과집합을 구한 후, 그 결과집합을 대상으로 조인연산을 수행한다.
도 4는 본 발명에 따른 제한합을 이용한 데이터베이스에서의 질의에서 분할 칼럼이 질의 조인 칼럼과 동일할 경우의 제한합의 질의 트리를 나타내는 도면이다. 도 2의 경우를 질의 트리로 나타낸 모형으로, 분할 칼럼과 질의 조인 칼럼이 동일할 경우, 제한합 절의 수행은 질의 리스트에서 첫 번째 질의에서 먼저 만족하는 결과투플을 취하고 그 결과투플의 개수가 제한값을 만족하면 조인질의를 종료하고, 제한값을 만족하지 못하면 다음 질의에서 나머지 제한값만큼 만족하는 결과투플을 취하여 결과집합을 구성하고 종료한다.
도 5는 본 발명에 따른 제한합을 이용한 데이터베이스에서의 질의에서 분할 칼럼과 질의 조인 칼럼이 동일하지 않은 경우의 제한합의 질의 트리를 나타내는 도면이다. 도 3의 경우를 질의 트리로 나타낸 모형으로, 분할 칼럼과 질의 조인 칼럼이 동일하지 않은 경우의 수행은 제한합의 최종 결과집합을 구한 후, 그 결과집합을 대상으로 조인연산을 수행하고 종료한다.
위에서 설명한 과정을 예를 통하여 설명하기 위하여 예제 테이블을 생성하고 그 테이블에 데이터를 삽입하면 다음과 같다. 먼저, 테이블 CallRecords를 생성하고 그 테이블에 3개의 데이터를 삽입하는 SQL 문들은 다음과 같이 코딩(coding) 될 수 있다.
CREATE TABLE CallRecords (
CallID INTEGER PRIMARY KEY not null,
CallType INT,
BeginTime DATE,
EndTime DATE,
CallTime INT,
TelNum CHAR(50)
);
INSERT INTO CallRecords VALUES(NULL, 3, '2006-01-01', '2006-01-02', 032, '0000000000');
INSERT INTO CallRecords VALUES(NULL, 2, '2007-08-12', '2007-08-13', 212, '0117778888');
INSERT INTO CallRecords VALUES(NULL, 2, '2006-11-21', '2006-12-12', 132, '0198885555');
전화번호부 테이블들인 테이블 SIMInfo와 테이블 PhoneInfo의 생성과 삽입은 다음과 같이 코딩된다.
CREATE TABLE SIMInfo (
Position INTEGER not null,
Name VARCHAR(20),
MemType VARCHAR(1) not null,
Number VARCHAR(50),
ExtRecordID INTEGER,
SadRecordID INTEGER
);
INSERT INTO SIMInfo VALUES(1, '홍길동', 1, '1234567890', 255, 255);
INSERT INTO SIMInfo VALUES(2, '이순신', 2, '0117778888', 255, 255);
INSERT INTO SIMInfo VALUES(3, '일지매', 1, '0198885555', 255, 255);
INSERT INTO SIMInfo VALUES(4, '성춘향', 3, '0117778888', 255, 255);
INSERT INTO SIMInfo VALUES(5, '연흥부', 2, '0532228888', 255, 255);
INSERT INTO SIMInfo VALUES(6, '연놀부', 1, '0126667777', 255, 255);
CREATE TABLE PhoneInfo (
SPosition INTEGER not null,
Name VARCHAR(20),
MemType VARCHAR(1) not null,
Number VARCHAR(50),
ExtRecordID INTEGER,
SadRecordID INTEGER
);
INSERT INTO PhoneInfo VALUES(1, '삼족오', 3, '1234567890', 255, 255);
INSERT INTO PhoneInfo VALUES(2, '도깨비', 1, '0117778888', 255, 255);
위의 예제 테이블에서 사용자가 단말기에 독립적으로 휴대할 수 있는 전화번호를 저장하는 SIM 카드에 의한 전화번호부를 테이블 SIMInfo에, 그리고 단말기에 종속된 전화번호를 저장하는 전화번호부를 테이블 PhoneInfo에 각각 저장하여 두 개의 테이블로 관리될 수 있다. 이 경우, 최근 송수신 기록과 부재중 수신한 전화번호들에 대한 등록자들의 정보 검색은 테이블 CallRecords와 두 개의 테이블들인 SIMInfo와 PhoneInfo의 조인연산으로 결과 투플들을 구성한다. 이 경우, SIM 카드에 의한 전화번호부의 전화번호는 단말기 종속의 전화번호부의 전화번호에 우선한다. 따라서, 조인 수행에서 테이블 CallRecords의 각 전화번호를 두 개의 전화번호부 테이블에서의 검색은 테이블 SIMInfo에서 먼저 탐색하고 SIMInfo에 존재하지 않으면 테이블 PhoneInfo를 탐색하여야 한다. 등록자는 동일 전화번호에 대하여 전화번호부 테이블이 동일할 경우, 이름으로 우선순위를 가지며, 전화번호부 테이블의 우선순위와 이름의 우선순위를 함께 고려하여 최대 한 개까지만 출력되어야 하는 조건을 가진다고 가정하자. 이 경우의 질의 문은 아래와 같이 코딩된다.
Q 4 :
SELECT c.CallID, c.CallType, c.TelNum, b.Name, b.MemType, b.Type
FROM CallRecords c LEFT OUTER JOIN
( LIMITED UNION ON Number: Name: 1(
SELECT Name, Number, MemType, 1 as Type
FROM SIMInfo LINK
SELECT Name, Number, 0 as MemType, Type
FROM PhoneInfo))AS b
ON c.TelNum = b.Number;
도 6은 제한합의 수행 예를 예시적으로 보여준다. 예시된 바와 같이, 테이블 SIMInfo에 여섯 개의 레코드가 존재하고, 테이블 PhoneInfo에 두 개의 레코드가 존재할 경우, Q4의 질의를 수행하는 경우를 고려하자. Q4는 제한합 절을 이용하는 질의로서 분할 칼럼은 칼럼 Number로 지정되었고, 정렬 칼럼은 칼럼 Name, 그리고 제한값은 1로 설정되었다. 또한, 조인 칼럼이 분할 칼럼과 동일하다. 그러므로, 테이블 CallRecords의 각 레코드에 대하여 그 레코드의 TelNum 값에 따라 먼저 테이블 SIMInfo에서 칼럼 Number의 값이 동일한 레코드들을 찾고 그 레코드들을 칼럼 Name으로 정렬하게 된다. 정렬된 레코드들에서 제한값인 1만큼 결과를 가질 수 있는 것이 Q4의 제한합에 대한 조건이다.
도 6에서 보는 바와 같이, 질의 Q4를 수행하였을 때, 테이블 CallRecords와 질의 리스트인 테이블 SIMInfo와 테이블 PhoneInfo의 제한합을 LEFT OUTER JOIN한 결과가 된다. 그러므로 최근 송수신 기록과 부재중 수신의 정보는 테이블 CallRecords의 전화번호 '0000000000'대하여 테이블 SIMInfo를 탐색하고 테이블 SIMInfo에 존재하지 않으므로 테이블 PhoneInfo에서 탐색한다. 두 테이블 모두에 존재하지 않으므로 LEFT OUTER JOIN한 결과 투플로서 <1, 3, '0000000000' null, null, null>이 반환된다. 테이블 CallRecords의 전화번호 '0117778888'에 대하여 테이블 SIMInfo에서 등록자의 이름에 우선순위가 있으므로 하나의 결과만을 가지게 되어 LEFT OUTER JOIN한 결과 투플로서 <2, 2, '0117778888', '성춘향', 3, 1>이 반환된다. 마지막으로, 테이블 CallRecords의 전화번호 '0198885555'에 대하여 테이블 SIMInfo에서 등록자의 이름에 우선순위가 있으므로 하나의 결과만을 가지게 되어 LEFT OUTER JOIN한 결과 투플로서 <3, 2, '0198885555', '일지매', 1, 1>이 반환된다. 이런 식으로 Q4의 수행결과 최종 결과집합은 다음과 같은 세 개의 레코드로 구성된다.
<1, 3, '0000000000', null, null, null>
<2, 2, '0117778888' '성춘향', 3, 1>
<3, 2, '0198885555', '일지매', 1, 1>
다음으로, 질의 Q4와 동일 조건이지만 각 분할에 대하여 제한값으로 세 개의 결과 투플만을 가진다는 조건일 경우의 질의문은 아래와 같이 코딩된다.
Q 5 :
SELECT c.CallID, c.CallType, c.TelNum, b.Name, b.MemType, b.Type
FROM CallRecords c LEFT OUTER JOIN
( LIMITED UNION ON Number: Name: 3(
SELECT Name, Number, MemType, 1 as Type
FROM PhoneInfo LINK
SELECT Name, Number, MemType, 1 as Type
FROM SIMInfo))AS b
ON c.TelNum = b.Number;
도 6에서 보는 바와 같이, 질의 Q5를 수행하였을 때, 테이블 CallRecords와 질의 리스트인 테이블 SIMInfo와 테이블 PhoneInfo의 제한합을 LEFT OUTER JOIN한 결과가 되므로 최근 송수신 기록과 부재중 수신의 정보는 테이블 CallRecords의 전화번호 '0000000000'에 대하여 테이블 SIMInfo를 탐색하고 테이블 SIMInfo에 존재하지 않으므로 테이블 PhoneInfo에서 탐색한다. 두 테이블 모두에 존재하지 않으므로 LEFT OUTER JOIN한 결과 투플로서 <1, 3, '0000000000' null, null, null>이 반환된다. 테이블 CallRecords의 전화번호 '0117778888'에 대해서는 테이블 SIMInfo에서 등록자의 이름의 우선순위에 의해 세 개까지의 결과를 가지게 되어 LEFT OUTER JOIN한 결과 투플로서 <2, 2, '0117778888', '성춘향', 3, 1>, <2, 2, '0117778888', '이순신', 2, 1>이 생성된다. 또한, 테이블 CallRecords의 전화번호 '0117778888'에 대하여 질의 리스트의 다음 질의인 테이블 PhoneInfo에서 등록자의 이름의 우선순위에 의해 한 개까지의 결과를 가지게 되어 LEFT OUTER JOIN을 수행한 결과 투플로서 <2, 2, '0117778888', '도깨비', 1, 1>을 가진다. 마지막으로 테이블 CallRecords의 전화번호 '0198885555'에 대하여 테이블 SIMInfo에서 LEFT OUTER JOIN한 결과 투플로서 <3, 2, '0198885555', '일지매', 1, 1>이 반환된다. Q5를 수행한 결과 최종 결과집합은 아래와 같이 다섯 개의 레코드로 구성된다.
<1, 3, '0000000000', null, null, null>
<2, 2, '0117778888', '성춘향', 3, 1>
<2, 2, '0117778888', '이순신', 2, 1>
<2, 2, '0117778888', '도깨비', 1, 1>
<3, 2, '0198885555', '일지매', 1, 1>
이상 설명한 바와 같이, 본 발명의 제한합 개념을 도입함으로써 다중 질의들에 우선순위를 부여하여 다중 질의들의 결과 투플들을 분할하고 정렬하여 선별하는 기법을 효율적으로 수행할 수 있다. 또한, 본 발명이 제안하는 방법을 이용하면 필요로 하는 응용에 맞는 SQL문의 작성이 가능하고 그렇게 작성된 SQL문을 활용하여 질의를 효율적으로 수행할 수 있다.
나아가, 이러한 본 발명의 제한합 방법은 다중질의들의 설정 순서에 따른 결과 투플들의 우선순위를 부여할 수 있다는 장점을 가진다. 특히, 제한합 절이 조인연산의 대상으로 설정되고 그 조인 연산을 중첩 루프 조인(nested loop join)으로 수행하며 그 제한합 절이 조인연산의 내부 루프(inner loop)로 처리될 경우, 외부 루프(outer loop)의 각 투플의 조인 칼럼값에 대한 내부 루프의 처리에서 다음의 두 가지 장점을 가진다.
첫째, 조인 조건을 만족하는 투플들을 설정된 일련의 질의들의 선두 질의부터 차례로 수행하여 구하며, 그 개수가 설정된 제한개수를 만족하거나 그 제한합 절의 모든 질의들을 수행할 때까지 구함으로써, 그 제한합 절의 일부 질의만을 수행하여 제한 개수를 만족할 경우에는 그 제한합 절의 나머지 질의들을 수행하지 않아도 되는 장점을 가진다.
둘째, 조인 칼럼이 제한합 절의 일련의 질의들의 기본 테이블들에 색인으로 설정된 칼럼인 경우에는 그 색인들을 활용할 수 있어서 질의 수행시간이 단축되는 장점을 가진다.

Claims (8)

  1. 데이터베이스에서 다중질의 질의에 대한 최적화 처리방법으로서,
    제한합 절(LIMITED UNION ON)을 사용하여 순서가 정해진 명시적 질의 리스트의 각 질의에 대하여 선두 질의부터 차례로 결과 투플들을 특정 칼럼에 대하여 동일값을 가지는 투플들의 집합으로 분할하는 제1단계;
    각 분할 내의 투플들을 그 투플을 생성한 질의의 순서와 특정 칼럼의 값으로 정렬하는 제2단계; 및
    각 분할의 정렬된 투플들에 대하여 분할의 선두에서부터 설정된 제한값의 수효만큼인 특정 순서까지의 결과 투플들을 반환하는 제3단계를 구비하는 것을 특징으로 하는 제한합을 이용한 데이터베이스 질의 처리 최적화 방법.
  2. 제1항에 있어서, 상기 제한합 절의 명세는 'LIMITED UNION ON pcl: ocl: lv (query_list)'로 표현되며, 상기 명세에서 'LIMITED UNION ON'은 제한합 기법을 나타내는 예약어이고, pcl, ocl, lv, query_list는 결과 투플들의 분할 기준을 나타내는 분할 칼럼 리스트, 각 분할의 결과 투플들의 정렬 기준을 나타내는 정렬 칼럼 리스트, 각 분할의 결과 투플들의 정렬 순서를 고려한 최대 선별 수효를 나타내는 선별자(제한값), 그리고 결과 투플들을 생성하는 하나 이상의 질의들로 구성되는 질의 리스트를 각각 나타내는 것을 특징으로 하는 제한합을 이용한 데이터베이스 질의 처리 최적화 방법.
  3. 제1항에 있어서, 상기 제한합 절이 조인연산에 사용될 경우, 그 연산을 중첩 루프 조인의 방법으로 수행한다면 그 제한합 절을 내부 루프로 처리하며, 외부 루프의 각 조인 값에 대하여, 제한합 절의 질의 리스트의 각 질의에 대하여 선두 질의부터 질의의 결과집합인 결과 투플들을 분할 칼럼 리스트의 칼럼들이 동일값을 가지도록 분할하고, 각 분할에 대하여 그 분할의 결과 투플들을 정렬 칼럼 리스트의 칼럼들의 정렬 순서에 따라 정렬한 후, 각 분할의 정렬된 결과투플들의 선두로부터 제한값의 수효만큼의 결과 투플들을 선택하는 것을 특징으로 하는 제한합을 이용한 데이터베이스 질의 처리 최적화 방법.
  4. 제3항에 있어서, 상기 각 분할의 정렬된 결과투플들의 선두로부터 취한 결과투플들의 개수가 해당 분할의 제한값을 만족하는 경우에는 그 제한합 절의 나머지 질의를 수행하지 않고, 만족하지 못할 경우에는 그 제한값을 만족할 때까지 질의 리스트의 다음 질의를 수행하는 것을 특징으로 하는 제한합을 이용한 데이터베이스 질의 처리 최적화 방법.
  5. 제3항에 있어서, 상기 제한합 절이 조인연산과 연결된 경우,
    i) 질의 리스트의 분할 칼럼 리스트에 명세된 칼럼(분할 칼럼)과 조인 칼럼(질의조인 칼럼)이 동일한 경우, 질의조인 칼럼에 색인이 존재하지 않으면 질의 리스트의 각 질의에 대하여 선두 질의부터 순차탐색으로 결과 투플들을 구하고, 질의 조인 칼럼에 색인이 존재하면 질의 리스트의 각 질의에 대하여 선두 질의부터 색인탐색으로 결과 투플들을 구하며,
    ii) 질의 리스트의 분할 칼럼 리스트에 명세된 칼럼(분할 칼럼)과 조인 칼럼(질의조인 칼럼)이 동일하지 않은 경우, 제한합의 결과집합을 모두 구한 후, 그 결과집합을 대상으로 조인연산을 수행하는 방식으로 상기 조인연산을 수행하는 것을 특징으로 하는 제한합을 이용한 데이터베이스 질의 처리 최적화 방법.
  6. 제5항에 있어서, 상기 분할 칼럼과 상기 질의조인 칼럼이 동일하지 않는 경우에 상기 제한합의 최종 결과집합을 구하는 것은, 제한합 절의 질의 리스트의 모든 질의들에 대하여 그 질의의 결과집합을 구하여 <질의 순서, 결과 투플>의 쌍으로 저장하는 단계; 그 결과집합의 <질의 순서, 결과 투플>의 쌍들을 분할 칼럼 리스트의 칼럼들에 따라 분할하여 각 분할별로 <질의 순서, 결과 투플>의 쌍으로 보관하는 단계; 각 분할에 대하여 그 분할의 <질의 순서, 결과 투플>의 쌍들을 <질의 순서, 정렬 칼럼>의 칼럼들에 따라 정렬하는 단계; 그리고 각 분할의 결과 투플들의 선두로부터 제한값의 수효만큼의 <질의순서, 결과 투플>의 쌍들에서 결과 투플만을 취하는 단계로 수행되는 것을 특징으로 하는 제한합을 이용한 데이터베이스 질의 처리 최적화 방법.
  7. 다중 질의들의 결과 투플들을 분할하고 정렬하여 선별함에 있어서 제한합 기법을 이용하여 질의 처리를 수행하는 방법으로서, 상기 제한합 기법을 나타내는 예 약어와, 결과 투플들의 분할 기준을 나타내는 분할 칼럼 리스트와, 각 분할의 결과 투플들의 정렬 기준을 나타내는 정렬 칼럼 리스트와, 각 분할의 결과 투플들의 정렬 순서를 고려한 최대 선별 수효를 나타내는 선별자(제한값)와, 그리고 결과 투플들을 생성하는 하나 이상의 질의들로 구성되는 질의 리스트로 제한합 절의 기능을 명세하는 것을 특징으로 하는 제한합 기법을 이용한 질의 처리 방법.
  8. 제7항에 있어서, 상기 질의 리스트 상의 질의들의 설정 순서에 따라 자동으로 질의의 우선순위를 부여함으로써 그 질의들에 대한 결과 투플들의 동일 분할내의 우선순위를 상기 질의들의 설정순서를 최우선으로 하여 동일 질의의 결과 투플들 간의 동일 분할내의 우선순위를 정렬칼럼 리스트로 부여하는 것을 특징으로 하는 제한합 기법을 이용한 질의 처리 방법.
KR1020070064068A 2007-06-28 2007-06-28 제한합 기법을 이용한 데이터베이스에서의 효율적인 다중질의 수행 방법 KR100886607B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070064068A KR100886607B1 (ko) 2007-06-28 2007-06-28 제한합 기법을 이용한 데이터베이스에서의 효율적인 다중질의 수행 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070064068A KR100886607B1 (ko) 2007-06-28 2007-06-28 제한합 기법을 이용한 데이터베이스에서의 효율적인 다중질의 수행 방법

Publications (2)

Publication Number Publication Date
KR20090002351A true KR20090002351A (ko) 2009-01-09
KR100886607B1 KR100886607B1 (ko) 2009-03-05

Family

ID=40485353

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070064068A KR100886607B1 (ko) 2007-06-28 2007-06-28 제한합 기법을 이용한 데이터베이스에서의 효율적인 다중질의 수행 방법

Country Status (1)

Country Link
KR (1) KR100886607B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101133516B1 (ko) * 2009-04-16 2012-04-04 연세대학교 산학협력단 데이터 스트림에서의 다중 조인 질의 최적화 방법
KR101515304B1 (ko) * 2013-11-08 2015-07-02 한국산업기술대학교산학협력단 하둡 기반의 리듀스-사이드 조인 처리 시스템의 리듀스-사이드 조인 질의 처리 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8046377B2 (en) 2004-12-20 2011-10-25 Sap Ag Method for calculating distributed joins in main memory with minimal communicaton overhead
US20060248592A1 (en) 2005-04-28 2006-11-02 International Business Machines Corporation System and method for limiting disclosure in hippocratic databases

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101133516B1 (ko) * 2009-04-16 2012-04-04 연세대학교 산학협력단 데이터 스트림에서의 다중 조인 질의 최적화 방법
KR101515304B1 (ko) * 2013-11-08 2015-07-02 한국산업기술대학교산학협력단 하둡 기반의 리듀스-사이드 조인 처리 시스템의 리듀스-사이드 조인 질의 처리 방법

Also Published As

Publication number Publication date
KR100886607B1 (ko) 2009-03-05

Similar Documents

Publication Publication Date Title
CN1552032B (zh) 数据库
CN107818115B (zh) 一种处理数据表的方法及装置
US8996544B2 (en) Pruning disk blocks of a clustered table in a relational database management system
US9430550B2 (en) Clustering a table in a relational database management system
US5924088A (en) Index selection for an index access path
US8037059B2 (en) Implementing aggregation combination using aggregate depth lists and cube aggregation conversion to rollup aggregation for optimizing query processing
US8510291B2 (en) System and method for processing database queries
US7080091B2 (en) Inverted index system and method for numeric attributes
CA2388515C (en) System for managing rdbm fragmentations
US20060173813A1 (en) System and method of providing ad hoc query capabilities to complex database systems
AU2005239366A1 (en) Partial query caching
CN111552710B (zh) 一种分布式数据库的查询优化方法
US8812492B2 (en) Automatic and dynamic design of cache groups
CN112231321B (zh) 一种Oracle二级索引及索引实时同步方法
CN104636349A (zh) 一种索引数据压缩以及索引数据搜索的方法和设备
CN114090695A (zh) 分布式数据库的查询优化的方法和装置
CN113553339A (zh) 数据查询方法、中间件、电子装置和存储介质
KR100886607B1 (ko) 제한합 기법을 이용한 데이터베이스에서의 효율적인 다중질의 수행 방법
CN109254962B (zh) 一种基于t-树的索引优化方法、装置及存储介质
CN103020285B (zh) 跨数据库支持多字段组合的自动编码方法和系统
CN102214216A (zh) 一种层次关系数据上关键字检索结果的聚合摘要方法
CN115563148A (zh) 数据库查询方法和装置
CN114461675A (zh) 基于kv存储的部分索引实现方法及系统
US8745035B1 (en) Multistage pipeline for feeding joined tables to a search system
KR101106624B1 (ko) 추론 서비스를 위한 인덱스 서비스 매니저와 추론 서비스 시스템 및 그 방법

Legal Events

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

Payment date: 20130225

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140221

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee