KR100333682B1 - 객체-관계 데이터베이스 관리 시스템에서의 역 포인터를이용한 그루핑 연산 방법 및 그 방법에서 생성된 그룹테이블을 이용한 집계 함수 획득 방법 - Google Patents

객체-관계 데이터베이스 관리 시스템에서의 역 포인터를이용한 그루핑 연산 방법 및 그 방법에서 생성된 그룹테이블을 이용한 집계 함수 획득 방법 Download PDF

Info

Publication number
KR100333682B1
KR100333682B1 KR1019990061884A KR19990061884A KR100333682B1 KR 100333682 B1 KR100333682 B1 KR 100333682B1 KR 1019990061884 A KR1019990061884 A KR 1019990061884A KR 19990061884 A KR19990061884 A KR 19990061884A KR 100333682 B1 KR100333682 B1 KR 100333682B1
Authority
KR
South Korea
Prior art keywords
group
pointer
function
group table
class
Prior art date
Application number
KR1019990061884A
Other languages
English (en)
Other versions
KR20010083263A (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 KR1019990061884A priority Critical patent/KR100333682B1/ko
Publication of KR20010083263A publication Critical patent/KR20010083263A/ko
Application granted granted Critical
Publication of KR100333682B1 publication Critical patent/KR100333682B1/ko

Links

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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • 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
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/289Object oriented databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations

Landscapes

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

Abstract

본 발명은 객체-관계 데이터베이스 관리 시스템(DBMS)에서 데이터에 대한 그루핑(grouping) 연산을 효율적으로 처리하는 방법에 관한 것으로서, 객체-관계 데이터베이스에서 제공되는 특별한 저장 구조인 역 포인터(inverse pointer)를 이용하여 객체-관계 데이터베이스 관리 시스템(DBMS)의 그루핑 연산 속도를 향상시키기 위한, 그루핑 연산 방법 및 그 방법에서 생성된 그룹 테이블을 이용한 집계 함수 획득 방법을 제공하기 위하여, 그룹 테이블을 생성하기 위한 대상 클래스에서 상기 그룹 테이블의 조건을 만족하는 객체를 읽어오는 제 1 단계; 상기 객체에 포함된 그룹 속성 값에 따라 상기 그룹 테이블의 그룹을 생성하는 제 2 단계; 및 상기 객체의 역 포인터에 포함된 포인터를 상기 그룹 테이블의 해당 그룹에 저장하는 제 3 단계를 포함하며, 데이터베이스 관리 시스템 등에 이용됨.

Description

객체-관계 데이터베이스 관리 시스템에서의 역 포인터를 이용한 그루핑 연산 방법 및 그 방법에서 생성된 그룹 테이블을 이용한 집계 함수 획득 방법{A Query Processing Method For Grouping And Aggregation Operations In Object-Relational Database Systems Using Reverse Pointers}
본 발명은 대규모 자료의 저장과 관리를 담당하는 데이터베이스 분야에 관한 것으로, 특히 객체-관계 데이터베이스 관리 시스템(DBMS)에서 데이터에 대한 그루핑(grouping) 연산을 효율적으로 처리하기 위한, 역 포인터를 이용한 그루핑 연산 방법 및 그 방법에서 생성된 그룹 테이블을 이용한 집계 함수 획득 방법과 상기 방법을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체에 관한 것이다.
일반적으로, 데이터베이스 분야는 데이터베이스 관리 시스템(DBMS: Database Management System)(이하, 간단히 'DBMS'라함) 엔진으로 표현되는 시스템 분야와, 이를 이용하는 데이터베이스 응용 분야로 구분되며, 제안된 방법은 DBMS 엔진 분야에 포함되는 기술에 관한 것이다.
또한, DBMS 엔진 부분에도 다양한 부속품이 있으며, 본 발명은 그 중에서도 사용자의 질의를 효율적으로 처리하는 업무를 담당하는 질의 처리기 분야에 속하는기술에 관한 것이다.
질의 처리기는 질의에 포함된 조인 연산이나 그루핑 연산 등과 같은 다양한 연산자를 처리하며, 이들 연산자 중에서 그루핑 연산자는 조인과 함께 처리 비용이 높은 연산자 중의 하나이다.
그루핑 연산은 표준 구조화 질의 언어(SQL:Structured Query Language)(이하, 간단히 'SQL'이라함)에 포함된 연산으로써 데이터베이스에 포함된 자료를 특정한 값(그룹키라고 함)을 기준으로 그루핑하는 방법과, 그루핑된 각 그룹의 통계치 등을 분석하는 집계함수 처리 방법의 두가지 개념을 포함하는 중요한 연산이다.
즉, 그루핑 연산은 데이터베이스에 저장된 객체들을 특정한 속성(들)의 값을 기준으로 그루핑한 후에 각 그룹에 속하는 객체들의 요약 정보(예를들어, 각 그룹의 객체수, 각 그룹에서 특정 속성값의 평균이나 최대치 혹은 최소치 및 합계 등)를 획득하는 명령어로써 데이터베이스 내의 자료를 다양한 각도에서 분석하는데 필수적인 연산자이다.
그루핑 연산을 처리하려면 데이터베이스 내의 자료를 동일한 값을 가지는 자료의 집단으로 분류하는 작업이 필수적이다. 이 분류 작업은 전통적으로 정렬 기법이나 해싱(hashing) 기법을 사용하여 처리해 왔으나, 정렬 방식의 경우 자료의 용량이 클 때 디스크 출입의 과다로 인하여 속도가 느려진다는 문제점이 있으며, 해싱 기법을 사용하면 오버플로우(overflow)시에 메모리 낭비와 처리 비용이 높아진다는 문제점이 있다.
즉, 정렬 기반의 방식은 가장 손쉬운 처리 기법으로 질의 조건(SQL의 Where 절에 표현된 조건식을 의미함)을 만족하는 객체들을 찾은 다음, 이들을 특정한 속성값을 기준으로 정열하여 동일한 값을 가지는 객체들의 그룹들을 생성하고, 각 그룹의 객체들을 대상으로 원하는 집계 함수 값을 획득하는 방식이다. 그러나, 이 방식의 경우는 조건절(Where)을 만족하는 객체들이 P 개의 페이지를 차지한다면 P×logk×P 의 페이지 출입이 발생하므로 P 가 큰 경우에 처리 비용이 높아진다는 문제점이 있다(여기서, k는 정렬 알고리즘의 특징을 나타내는 변수임).
반면에, 해싱 기법의 경우에는 조건절(Where)을 만족하는 각 객체를 그룹키의 값에 대하여 해쉬 함수를 적용하여 해당 그룹을 결정하고, 각 객체를 해당 그룹에 배치하는 방식으로 그루핑 연산이 처리된다. 그러나, 이 방식의 경우 처리 속도는 평균적으로 빠르나 데이터의 성질에 따라서 오버플로우 현상이 발생할 수 있으므로 메모리 낭비와 속도 저하가 심각할 수 있다는 문제점이 있다.
이하, 도 1 내지 도 3 을 참조하여 종래의 관계 데이터베이스 관리 시스템(DBMS)에서의 그룹핑 연산 처리방법에 대하여 설명한다.
도 1 은 종래의 관계 데이터베이스의 구조를 나타낸 일예시도이며, 도 2 는 종래의 정렬 기반의 그루핑 연산 처리 방법을 나타낸 일예시도로서, 도 1 에 도시된 데이터베이스에 대하여 아래의 [표 1]의 질의 1 에 따른 그루핑 연산을 정렬 기반으로 실행하는 예를 보여준다. 도 3 은 종래의 해싱 기반의 그루핑 연산 처리 방법을 나타낸 일예시도로서, 도 1 에 도시된 데이터베이스에 대하여 아래의 [표 1]의 질의 1 에 따른 그루핑 연산을 해싱 기반으로 실행하는 예를 보여준다.
아래의 [표 1]은 도 1 의 관계 데이터베이스에 대하여 그루핑 연산을 포함하는 구조화 질의 언어(SQL)의 일실시예를 나타낸 것이다.
즉, 도 2 는 [표 1]의 질의 1 에서 조건절(where)을 만족하는 튜플들에 대해 정렬 기반의 그루핑 연산 처리 과정과 결과를 보여준다.
먼저, 도 1 의 고용인(Employee) 테이블(101)에서 질의 1 의 조건절(Where)의 조건을 만족하는 객체를 선택한 후에, 이들을 프로젝트(Project)의 작업분야(Field) 별로 그룹(201)을 만들고, 생성된 각 그룹 내에서 집계 함수(Select)인 합(Sum(Salary))(202)을 구한다.
또한, 도 3 은 [표 1] 의 질의 1 에서 조건절(where)의 조건을 만족하는 튜플들에 대해 해싱 기법의 그루핑 연산 처리 과정과 결과를 보여준다.
먼저, 도 1 의 고용인(Employee) 테이블(101)의 각 객체에 대하여 프로젝트(Project)의 작업분야(Field) 값을 해쉬 함수(301)에 적용하여 그룹(302)을 결정하고, 각 그룹에 속하는 종업원의 봉급(Salary) 값을 해당 그룹의 합(Sum(Salary)) 값에 누적해 나간다. 이들 방식에서의 문제점을 간단히 요약하면 다음과 같다.
즉, 도 2 의 정렬 방식에서는 조건절(Where)을 만족하는 객체들이 많은 경우에 과다한 디스크 출입으로 인하여 정렬 비용(외부 정렬)이 높아지며, 도 3 의 해싱 기법에서는 자료값의 성질과 해쉬 함수의 선택에 따라서 오버플로우 현상이 발생할 수 있으므로 메모리 낭비와 처리 속도가 저하될 수 있다는 것이다.
한편, 일반적으로 관계 DBMS에서의 그루핑 연산 처리기법은 다수의 연구논문과 특허로 발표되었으나, 본 발명에서의 대상 시스템으로 채택하고 있는 객체-관계 DBMS에서는 별도의 처리 기법이 발표되지 않은 상태이다.
즉, 차세대 DBMS로 각광을 받고 있는 객체-관계 DBMS의 경우에도 질의에서 다양한 그루핑 연산이 요청될 수 있으며, 특히 관계 데이터베이스에서와 달리 그룹 절에서 그룹 속성 뿐 아니라 경로식(path expression)을 허용함으로써 조인 연산까지 포함하는 확장된 형태를 취한다.
그러나, 종래의 객체-관계 DBMS에서는 기존의 그루핑 연산 처리 기법인 정렬 혹은 해싱 기법을 그대로 사용하고 있으며, 객체-관계 데이터베이스의 특성을 반영한 별도의 처리 기법은 제시되지 않고 있다는 문제점이 있다.
이는 객체-관계 DBMS 자체가 90년대 말 현재 이제 시제품의 개발 단계를 벗어나 상용 제품이 출시되고 있는 초기 단계이며, 현재의 시스템들은 객체-관계 데이터베이스의 특성을 반영하지 않고 대부분 관계 DBMS에서의 기술을 그대로 채택하고 있기 때문이다.
본 발명은 상기 문제점을 해결하기 위하여 제안된 것으로, 객체-관계 데이터베이스에서 제공되는 특별한 저장 구조인 역 포인터(inverse pointer)를 이용하여 객체-관계 데이터베이스 관리 시스템(DBMS)의 그루핑 연산 속도를 향상시키기 위한, 그룹핑 연산 방법 및 그 방법에서 생성된 그룹 테이블을 이용한 집계 함수 획득 방법과 상기 방법을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는데 그 목적이 있다.
도 1 은 종래의 관계 데이터베이스의 구조를 나타낸 일예시도.
도 2 는 종래의 정렬 기반의 그루핑 연산 처리 방법을 나타낸 일예시도.
도 3 은 종래의 해싱 기반의 그루핑 연산 처리 방법을 나타낸 일예시도.
도 4 는 본 발명이 적용되는 객체-관계 데이터베이스 구조를 나타낸 일예시도.
도 5 는 본 발명이 적용되는 객체-관계 데이터베이스에서 질의를 처리하기 위해 생성되는 단일 그룹 테이블의 일예시도.
도 6 은 본 발명이 적용되는 객체-관계 데이터베이스에서 질의를 처리하기 위해 생성되는 중첩 그룹 테이블의 일예시도.
도 7 은 본 발명이 적용되는 객체-관계 데이터베이스 관리 시스템의 일실시예 구성도.
도 8 은 본 발명에 따른 객체-관계 데이터베이스 관리 시스템에서 역 포인터를 이용한 그루핑 연산 방법의 일실시예 흐름도.
도 9 는 본 발명에 따른 객체-관계 데이터베이스 관리 시스템에서 역 포인터를 이용한 그루핑 연산에서 생성된 그룹 테이블을 이용한 집계함수 획득 방법의 일실시예 흐름도.
상기 목적을 달성하기 위한 본 발명은, 객체-관계 데이터베이스 관리 시스템에 적용되는 역 포인터를 이용한 그루핑 연산 방법에 있어서, 그룹 테이블을 생성하기 위한 대상 클래스에서 상기 조건절(Where)을 만족하는 객체를 읽어오는 제 1 단계; 상기 객체에 포함된 그룹 속성 값에 따라 상기 그룹 테이블의 그룹을 생성하는 제 2 단계; 및 상기 객체의 역 포인터에 포함된 포인터를 상기 그룹 테이블의 해당 그룹에 저장하는 제 3 단계를 포함하는 것을 특징으로 한다.
또한, 본 발명의 다른 방법은, 객체-관계 데이터베이스 관리 시스템에 적용되는 역 포인터를 이용한 그루핑 연산에서 생성된 그룹 테이블을 이용한 그룹별 집계함수 획득 방법에 있어서, 클래스의 객체를 순차적으로 읽는 비용이 그룹 테이블의 각 그룹 별로 포인터를 가지고 객체를 읽는 비용보다 큰지를 판단하는 제 1 단계; 상기 제 1 단계의 판단결과, 클래스의 객체를 순차적으로 읽는 비용이 그룹 테이블의 각 그룹 별로 포인터를 가지고 객체를 읽는 비용보다 크지 않다면 상기 클래스의 객체를 순차적으로 읽어서 집계함수를 구하는 제 2 단계; 및 상기 제 1 단계의 판단결과, 클래스의 객체를 순차적으로 읽는 비용이 그룹 테이블의 각 그룹 별로 포인터를 가지고 객체를 읽는 비용보다 크다면 상기 그룹 테이블에 저장된 객체 포인터를 이용해 집계함수를 구하는 제 3 단계를 포함하는 것을 특징으로 한다.
또한, 본 발명은 역 포인터를 이용한 그루핑 연산을 위하여, 대용량 저장장치를 구비한 객체-관계 데이터베이스 관리 시스템에, 그룹 테이블을 생성하기 위한 대상 클래스에서 상기 조건절(Where)을 만족하는 객체를 읽어오는 제 1 기능; 상기 객체에 포함된 그룹 속성 값에 따라 상기 그룹 테이블의 그룹을 생성하는 제 2 기능; 및 상기 객체의 역 포인터에 포함된 포인터를 상기 그룹 테이블의 해당 그룹에 저장하는 제 3 기능을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공한다.
또한, 본 발명은 역 포인터를 이용한 그루핑 연산에서 생성된 그룹 테이블을 이용한 그룹별 집계함수 획득을 위하여, 대용량 저장장치를 구비한 객체-관계 데이터베이스 관리 시스템에, 클래스의 객체를 순차적으로 읽는 비용이 그룹 테이블의 각 그룹 별로 포인터를 가지고 객체를 읽는 비용보다 큰지를 판단하는 제 1 기능; 상기 제 1 기능의 판단결과, 클래스의 객체를 순차적으로 읽는 비용이 그룹 테이블의 각 그룹 별로 포인터를 가지고 객체를 읽는 비용보다 크지 않다면 상기 클래스의 객체를 순차적으로 읽어서 집계함수를 구하는 제 2 기능; 및 상기 제 1 기능의 판단결과, 클래스의 객체를 순차적으로 읽는 비용이 그룹 테이블의 각 그룹 별로 포인터를 가지고 객체를 읽는 비용보다 크다면 상기 그룹 테이블에 저장된 객체 포인터를 이용해 집계함수를 구하는 제 3 기능을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공한다.
본 발명은 객체-관계 DBMS에서 제공되는 역 포인터(reverse pointer)를 사용하여 그루핑 연산을 신속하게 처리하는 방법에 관한 것이다. 역 포인터를 사용하면 자료간의 관계를 포인터로 확인할 수 있으므로 자료를 관련된 특정 객체의 속성값을 기준으로 분류하는 작업이 간단해질 수 있다.
즉, 객체-관계 DBMS에서는 관계 DBMS와 달리 역 포인터를 제공하며, 이를 이용하면 기존의 정렬 기반과 해싱 기반의 그루핑 연산 처리 기법의 문제점인, 정렬 기반의 과도한 페이지 출입 회수 발생 문제와 해싱 기법의 메모리 낭비 및 오버플로우 현상을 모두 개선할 수 있다.
이하, 도 4 내지 도 9 를 참조하여 본 발명에 따른 바람직한 일실시예를 상세히 설명한다.
본 발명에서 제안하는 방법의 특징은 객체-관계 DBMS에서 제공되는 역 포인터를 이용하여 그루핑 연산의 처리 속도를 개선한다는 점이다.
도 4 는 본 발명이 적용되는 객체-관계 데이터베이스 구조를 나타낸 일예시도로서, 도 1 의 데이터베이스를 객체-관계 DBMS로 저장한 모습을 보여주고 있으며, 도 4 의 주요 특징은 두 객체간의 관련성을 포인터를 사용하여 표현한다는 점이다.
예를들어, 고용인(Employee) 클래스(401)의 첫번째 객체에서 프로젝트(Project) 속성의 값으로 P1 의 포인터를 가짐으로써(실선 링크로 표시), 고용인(Employee) 조(Cho)는 프로젝트(Project) P1 에 근무함을 나타내고, P1 객체에서 역 포인터(점선 링크로 표시) 두 개를 가짐으로써 조(Cho)와 김2(Kim2)가 프로젝트(Project) P1에 근무함을 나타내고 있다.
도 4 의 객체-관계 데이터베이스에 대하여 상기 [표 2]와 같은 그루핑 연산을 포함하는 전형적인 객체-관계 질의어를 생각하자.
[표 2]의 질의 2 를 처리하기 위하여 기존의 방법에서는 고용인(Employee) 클래스(401)의 각 객체에 대하여 프로젝트(Project) 속성에 포함된 프로젝트(Project) 객체를 읽어와서 그의 작업분야(Field) 값을 기준으로 고용인(Employee) 객체를 정렬하여 각 그룹을 만들어 낸다. 그 다음에 각 그룹에 대하여 집계함수절(Select)에 나타난 집계 함수를 획득한다.
따라서, 고용인(Employee) 클래스(401)의 각 객체마다 프로젝트(Project) 객체를 페취(fetch)해서 작업분야(Field) 값을 확인해야 하므로 고용인(Employee) 클래스(401)의 객체수가 많은 경우에 각 고용인(employee)에 대하여 프로젝트(Project) 객체를 읽어와야 한다. 따라서, 과다한 디스크 출입으로 인한 높은 처리 비용이 예상되었다.
이하, 본 발명에서 사용되는 핵심적인 자료구조인 그룹 테이블(group table)의 구조와 그루핑 연산 방법을 설명한다.
도 5 는 본 발명이 적용되는 객체-관계 데이터베이스에서 질의를 처리하기 위해 생성되는 단일 그룹 테이블의 일예시도이다.
그룹 테이블은 객체들을 그루핑한 후, 집계함수를 획득하기 위하여 생성되는 자료구조로써 각 그룹키별로 하나의 항목(행: row)으로 구성된다. 도 4 의데이터베이스와 [표 2]의 질의 2 에 대하여 그룹 테이블의 구조와 생성 방법은 다음과 같다.
먼저, DBMS가 프로젝트(Project)(402)의 첫 번째 객체(403)를 읽으면 그룹 속성(Field)의 값인 DB가 새로운 그룹(501)이므로 도 5 의 첫번째 행을 생성하고, 역 포인터에 포함된 고용인(Employee)(401) 객체의 포인터인 e1 과 e5 를 포인터-리스트에 저장한다.
두번째 객체(404)에 대해서는 DM 그룹(502)을 생성하고, 역포인터가 널이므로 이를 포인터-리스트에 저장하지는 않는다. 유사한 방법으로 세번째 객체(405)에 대해서는 네트워크(Network) 그룹(503)을 생성한다.
네번째 객체(406)는 그룹키가 DB 이지만 이미 생성된 그룹이므로 새로운 그룹을 생성하지 않고, 역 포인터에 포함된 포인터들(여기서는 널임)만 포인터-리스트에 추가한다.
다섯번째 객체(406)를 읽어서 DW 그룹(504)을 생성한다.
따라서, 도 5 의 그룹 테이블은 프로젝트(Project) 클래스(402)를 한번 읽으면 생성이 완료된다. 도 5 의 포인터-리스트에 포함된 포인터들은 각 그룹키 별로 정렬된 상태를 유지한다.
즉, 첫번째 그룹키 데이터베이스(DB)에 대하여 포인터 e1 과 e2 는 주소 순서로 정렬된다. 주소 순서로 포인터들을 정렬함으로써 도 8 에서 설명될 집계 함수획득시 동일한 디스크 페이지의 중복 액세스를 방지할 수 있다.
또한, 도 5 의 테이블이 메모리에 상주할 정도로 작은 경우에는 그루핑 연산을 처리하는 동안에 이 테이블을 메모리에 상주시키며, 그렇지 않은 경우에는 디스크에 저장하도록 한다.
한편, 객체-관계 질의어의 그룹절(Group By)에는 하나 이상의 속성(경로식)이 나올 수 있다. 아래 [표 3]의 질의 3 은 이러한 질의의 예이다.
[표 3]과 같은 경우의 그루핑 연산 처리에서는 속성의 수만큼 그룹 테이블을 중첩되게 생성한다.
도 6 은 본 발명이 적용되는 객체-관계 데이터베이스에서 질의를 처리하기 위해 생성되는 중첩 그룹 테이블의 일예시도로서, 도 4 의 데이터베이스에 대하여 [표 3]의 질의 3 을 처리하기 위하여 생성되는 중첩된 그룹 테이블을 보여주고 있다.
즉, 도 6 은 도 5 의 그룹키-1 의 각 그룹(도 5 에서 DB, DM, Network, DW를 의미함)을 그룹키-2 (속성 Manager를 의미함) 값을 기준으로 중첩되게 세부 그룹을생성하였다. 여기서도 각 그룹키에서 포인터들은 정렬된 상태를 유지한다.
도 7 은 본 발명이 적용되는 객체-관계 데이터베이스 관리 시스템의 일실시예 구성도로서, 도면에 도시된 바와 같이 각 하드웨어 시스템의 구성요소를 제어하고 프로세스의 처리를 관리하는 중앙처리장치(CPU)(701), 본 발명이 실장되며 각종 프로세스가 수행되고 데이터가 저장되는 주기억장치(MEMORY)(702), 상기 메모리의 저장용량의 부족을 보충하는 보조기억장치(703), 및 각종 자료의 입출력을 전담하는 입출력 장치(704)들이 버스를 통해 상호 연결되어 있다.
도 8 은 본 발명에 따른 객체-관계 데이터베이스 관리 시스템에서 역 포인터를 이용한 그루핑 연산 방법의 일실시예 흐름도이다.
이하, 도 8 의 본 발명에 따른 그룹핑 연산 방법에 있어서, 도 4, 도 6 및 [표 3]을 참조하여 설명한다.
한편, 도 8 에서 클래스 C라 함은 그룹 속성이 정의된 클래스를 의미하는 것으로서, 예를들어 [표 3]의 질의 3의 경우 테이블의 그룹 속성이 작업분야(Field)와 관리자(Manager)이며, 이들은 도 4의 프로젝트(Project)(402)에서 정의되었으므로 클래스 C는 프로젝트(Project)(402) 데이터베이스를 말하는 것이다.
그룹 테이블을 생성하기 위하여, 먼저 클래스 C 에서 정의된 속성이 질의의 그룹절(Group By)에 연속으로 n(2) 개 이상이 나타나면(801) 그룹키를 n개 가지는 중첩 그룹 테이블을 생성하고(802), 그렇지 않으면 그룹키를 하나 가지는 단일 그룹 테이블을 생성한다(803).
즉, 질의 3 에서는 그룹절(Group By)에 작업분야(Field)와 관리자(Manager)두 개의 속성이 정의되어 있으므로, 도 6 에서와 같은 중첩그룹 테이블(601)을 생성한다.
다음으로, 클래스 C에서 조건절(Where)의 조건을 만족하는 객체를 하나씩 읽고(804), 이 객체를 편의상 O라고 표시한다. 이 때, 조건절(Where)에 조건이 제시되지 않은 경우에는 모든 객체가 질의의 조건절(Where)의 조건을 만족한다고 가정한다.
즉, 질의 3 의 조건절(Where)에는 클래스 C 즉, 프로젝트(402)에 관한 조건은 없으므로 일단 프로젝트(402)의 모든 객체(즉, P1,P2,P3,P4,P5)가 조건에 만족한다고 가정한다.
다음으로, 상기 조건을 만족하는 객체 O 에서 질의의 그룹 절에 나타난 속성(들)의 값을 Vi, i=1,2,...,n이라고 할 때(여기서 n은 그룹절에 연속으로 나타난 속성의 개수임), Vi가 그룹 테이블의 임의의 레코드에 이미 존재하는가 혹은 새로운 것인가를 검사한다(805). Vi가 그룹 테이블의 특정 레코드에 나타난 값이라면 이 레코드를 '레코드-j'라고 명명하고(806), 그룹 테이블에 없는 새로운 값이면 Vi를 필드 값으로 하는 새로운 레코드(즉, 새로운 그룹)를 생성하고, 이를 그룹 테이블에 첨가하며, 생성된 레코드를 '레코드-j'라고 명명한다(807).
즉, 상기 프로젝트(402)의 모든 객체는 상기 조건을 만족한다고 가정하였으므로, 그중 우선 객체 P1 을 선정한다. 질의 3 에서 정의한 작업분야(Field)와 관리자(Manager) 속성은 객체 P1 의 경우에는 각각 데이터베이스(DB) 및 조(Cho) 이고 상기 중첩 그룹 테이블(601)에는 아직 데이터베이스(DB) 및 조(Cho)에 해당하는 레코드가 생성되어 있지 않으므로, 상기 중첩 그룹 테이블(601)에 데이터베이스(DB)(602) 및 조(Cho)(603) 라는 값을 가지는 레코드를 추가한다.
다음으로, 객체 O에 포함된 역 포인터인 e1과 e5(501, 607)를 그룹 테이블의 레코드-j의 포인터-리스트에 저장한다(808).
즉, 객체 P1 의 경우는 도 4 에 표시된 바와 같이 역포인터가 이름(Ename)이 조(Cho) 및 김2(Kim2)인 객체를 가리키고 있으므로, 도 6 에서와 같이 그룹키-1(604)에 해당하는 작업분야(Field)가 '데이터베이스(DB)'(602) 이며, 그룹키-2(605)에 해당하는 관리자(Manager)가 '조(Cho)'인 레코드의 포인터-리스트(606)란에 상기 두 객체의 역포인터 값(607)을 적는다.
이러한 과정을 클래스 C의 모든 객체에 대하여, 즉 마지막 객체까지 반복 실행한다(809). 즉, 객체 O가 클래스 C의 마지막 객체가 아니면 클래스 C에서 조건절(Where)을 만족하는 객체를 하나씩 읽고, 이 객체를 O라 정의하는 과정(804)으로 진행한다.
즉, 상기와 같은 과정을 프로젝트(Project)(402)의 각 객체(즉,P1,P2,P3, P4,P5 각각)별로 수행한다.
다음에는 도 8 에서 생성된 그룹 테이블을 사용하여 집계함수를 획득하는 방법을 제시한다. 즉, 도 8 에서와 같이 그룹 테이블이 생성된 후 시스템은 각 그룹에 대하여 포인터-리스트에 포함된 객체(질의 2 와 질의 3 의 경우 고용인(Employee) 객체(401)임)를 읽어서 선택-리스트(Select-list)에 나열된 집계함수를 획득한다.
이 때, 집계 함수를 각 그룹 별로 독립적으로 획득하면 처리 비용이 급속하게 증가하여 성능이 저하될 수 있다. 예를들어, 도 6 에서 고용인(Employee)(401) 객체 e1, e2, e3, e4 가 동일한 페이지(예를들어 page1)에 저장되었을 경우를 가정하자. 이 경우, 그룹 테이블의 데이터베이스(DB) 그룹(602)과 네트워크(Network) 그룹(608) 및 운영(DW) 그룹(609) 모두에서 집계 함수를 구하기 위하여 페이지1(page1)을 액세스해야 하므로 페이지 1은 세 번 중복 액세스된다.
이러한 중복 액세스의 문제를 해결하는 새로운 집계함수 처리 방법은 도 9 에 도시하였다.
도 9 는 본 발명에 따른 객체-관계 데이터베이스 관리 시스템에서 역 포인터를 이용한 그루핑 연산에서 생성된 그룹 테이블을 이용한 집계함수 획득 방법의 일실시예 흐름도이다.
즉, 도 9 에서 제시된 방법의 핵심 아이디어는 그룹 테이블에 저장된 객체 포인터를 가지고 해당 객체를 읽어와서 집계함수를 구해 나가는 방식(집계처리방식-2)과 클래스 D의 객체를 순차적으로 읽어서 그룹 테이블로부터 그 객체의 그룹을 확인한 후 집계함수를 획득해 나가는 방식(집계처리방식-1) 중에서 비용이 더 적은 방식으로 처리하여 집계함수의 처리성능을 높인다는 점이다.
상기와 같은 집계함수 처리 방법의 동작 원리는 다음과 같다. 단, 도 9 에서 클래스 D 는 집계 함수가 부과된 클래스로써 [표 2] 와 [표 3]의 질의 2 와 질의 3 에서 고용인(Employee)(401) 클래스에 해당한다. 즉, 질의 2 와 질의 3에서 집계 함수는 합(sum(e.Salary))이고, 이 함수는 클래스 고용인(Employee) (401)에 대하여 부과되었다.
먼저, 클래스 D 의 페이지 수인 P(D)와 그룹 테이블에서 각 그룹(Gi로 표시하며, 첨자 i는 1에서 그룹의 개수까지임)의 포인터-리스트에 나타난 객체를 주소 순서로 읽는 비용의 합인b(Gi)를 비교하여 집계처리방식-1과 집계처리방식-2를 선택한다(901).
집계처리방법-1(903 내지 907의 과정)은 클래스 D의 객체를 순차적으로 읽는 비용인 P(D)(즉, 클래스 D의 디스크 페이지 개수)가 각 그룹 별로 포인터를 가지고 객체를 읽는 비용인b(Gi)보다 작은 경우(901)에 적용되는 방법으로서, 클래스 D의 객체를 순차적으로 읽으며, 순차적으로 읽은 객체를 ei 로 표시한다 (903).
다음으로, 그룹 테이블에서 객체 ei 를 포함하는 그룹 gi 를 결정한다. 이 작업은 객체 ei의 식별자(OID)가 그룹 테이블의 각 레코드(즉, 그룹)의 포인터-리스트에 나타나는가를 비교함으로써 간단히 결정할 수 있다(904, 905). 그룹 테이블에서 객체 ei 의 식별자(OID)를 가진 레코드가 나타나지 않는다면 객체 ei 는 주어진 질의의 조건절(Where)을 만족하지 않는 경우이므로 ei 는 무시하고, 다음 객체를 읽는다(903).
반면에, 객체 ei 가 그룹 gi 의 포인터-리스트에 나타난다면, 주어진 질의 조건을 만족하는 객체이므로 집계 함수의 대상이 된다. 따라서, 객체 ei 의 속성 값으로부터 그룹 gi 의 집계함수를 (부분)획득하여 계산한다(906). 집계함수는 그룹 gi 에 포함된 모든 객체에 대하여 하나의 값을 생성하므로 객체를 하나씩 읽어서 획득하는 경우 맨 마지막 객체를 읽어서 집계함수를 계산하기 이전까지는 집계함수를 부분적으로 계산한 것이 된다.
참고로, 제안된 방법에서 객체 ei 의 그룹 결정 작업과 관련된 비용은 그룹 테이블이 대부분의 경우 메모리에 상주하므로 크지 않다.
집계처리방법-2(902)는 그룹 테이블의 각 그룹에 대하여 포인터-리스트에 저장된 포인터를 주소 순서로 데이터베이스로부터 읽어 집계함수를 처리하는 방식이다(902). 즉, 각 그룹에 포함된 포인터를 해석하여 해당하는 객체를 데이터베이스로부터 읽어온 다음, 그 객체로부터 각 그룹의 집계함수를 (부분)획득한다. 그리고, 주소 순서로 객체를 읽음으로써 동일한 디스크 페이지를 두 번 이상 메인 메모리로 가져오는 부담을 줄일 수 있다.
한편, 수식에서 P(D)는 클래스 D의 페이지수로써 시스템 카탈로그에 저장된 정보이고, b(Gi)는 아래의 [수학식 1]과 같이 구한다.
[수학식 1]에서 bf(D)는 클래스 D의 블로킹 인수(blocking factor)로써 D의 페이지당 저장되는 객체수이고, n(Gi)는 그룹 Gi의 포인터 개수이다.상술한 바와 같은 본 발명의 방법은 프로그램으로 구현되어 컴퓨터로 읽을 수 있는 형태로 기록매체(씨디롬, 램, 롬, 플로피 디스크, 하드 디스크, 광자기 디스크 등)에 저장될 수 있다.
이상에서 설명한 본 발명은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 있어 본 발명의 기술적 사상을 벗어나지 않는 범위내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 한정되는 것이 아니다.
상기와 같은 본 발명은 객체-관계 DBMS에서 대용량 데이터베이스에 대한 그룹핑 연산을 신속하게 처리할 수 있는 우수한 효과가 있다. 즉, 객체-관계 질의에서 그룹 속성은 일반적으로 집계 함수가 부과된 클래스와는 다른 클래스의 속성으로써 경로식으로 표시되는데 예를들어, 질의 2 에서 집계 함수는 고용인.봉급(Employee.Salary)에 대하여 획득되지만 그룹 속성은 경로식 고용인.프로젝트.작업분야(Employee.Project.Field)로써 프로젝트(Project) 클래스의 속성이 된다. 따라서, 고용인(Employee) 객체를 그루핑하기 위하여 각 고용인(Employee) 객체마다 프로젝트(Project) 클래스의 객체를 액세스해야 하므로 최악의 경우 고용인(Employee) 클래스의 페이지수에 고용인(Employee) 클래스의 객체수 만큼의 프로젝트(Project) 클래스 페이지를 액세스해야 한다. 그러나, 본 발명의 경우 그룹 테이블이 주기억 장치에 상주한다고 가정하면 그룹 테이블의 경우 일반적으로 그룹키의 서로 다른 속성값의 개수만큼 발생하므로 대부분의 경우 그 크기가 클래스의 크기에 비하여 훨씬 적게된다. 따라서, 프로젝트(Project) 클래스와 고용인(Employee) 클래스를 각각 한번씩만 읽으면 그루핑 연산이 완성된다.
상기한 바와 같이 본 방법은 기존의 방법보다 훨씬 빠르게 그루핑 연산을 실행하며 특히, 조건절(Where)을 만족하는 고용인(Employee) 클래스의 객체수가 많은 경우에는 그 효과가 더욱 우수하다.

Claims (7)

  1. 객체-관계 데이터베이스 관리 시스템에 적용되는 역 포인터를 이용한 그루핑 연산 방법에 있어서,
    그룹 테이블을 생성하기 위한 대상 클래스에서 상기 조건절(Where)을 만족하는 객체를 읽어오는 제 1 단계;
    상기 객체에 포함된 그룹 속성 값에 따라 상기 그룹 테이블의 그룹을 생성하는 제 2 단계; 및
    상기 객체의 역 포인터에 포함된 포인터를 상기 그룹 테이블의 해당 그룹에 저장하는 제 3 단계
    를 포함하는 역 포인터를 이용한 그루핑 연산 방법.
  2. 제 1 항에 있어서,
    상기 제 1 단계의 상기 그룹 테이블은, 상기 객체에 포함된 그룹 속성의 수가 하나 이상인 경우 중첩 그룹 테이블을 생성하는 것을 특징으로 하는 역 포인터를 이용한 그루핑 연산 방법.
  3. 객체-관계 데이터베이스 관리 시스템에 적용되는 역 포인터를 이용한 그루핑 연산에서 생성된 그룹 테이블을 이용한 그룹별 집계함수 획득 방법에 있어서,
    클래스의 객체를 순차적으로 읽는 비용이 그룹 테이블의 각 그룹 별로 포인터를 가지고 객체를 읽는 비용보다 큰지를 판단하는 제 1 단계;
    상기 제 1 단계의 판단결과, 클래스의 객체를 순차적으로 읽는 비용이 그룹 테이블의 각 그룹 별로 포인터를 가지고 객체를 읽는 비용보다 크지 않다면 상기 클래스의 객체를 순차적으로 읽어서 집계함수를 구하는 제 2 단계; 및
    상기 제 1 단계의 판단결과, 클래스의 객체를 순차적으로 읽는 비용이 그룹 테이블의 각 그룹 별로 포인터를 가지고 객체를 읽는 비용보다 크다면 상기 그룹 테이블에 저장된 객체 포인터를 이용해 집계함수를 구하는 제 3 단계
    를 포함하는 그룹별 집계함수 획득 방법.
  4. 제 3 항에 있어서,
    상기 제 2 단계는,
    상기 클래스의 객체를 순차적으로 읽는 제 4 단계;
    상기 그룹 테이블에서 상기 객체를 포함하는 그룹을 결정하는 제 5 단계; 및
    상기 객체의 속성 값으로부터 상기 그룹의 집계함수를 획득하는 제 6 단계
    를 포함하는 그룹별 집계함수 획득 방법.
  5. 제 3 항 또는 제 4 항에 있어서,
    상기 제 3 단계는,
    각 그룹별로 포인터에 해당하는 객체를 읽어서 상기 각 그룹의 집계 함수를 획득하는 것을 특징으로 하는 그룹별 집계함수 획득 방법.
  6. 역 포인터를 이용한 그루핑 연산을 위하여, 대용량 저장장치를 구비한 객체-관계 데이터베이스 관리 시스템에,
    그룹 테이블을 생성하기 위한 대상 클래스에서 상기 조건절(Where)을 만족하는 객체를 읽어오는 제 1 기능;
    상기 객체에 포함된 그룹 속성 값에 따라 상기 그룹 테이블의 그룹을 생성하는 제 2 기능; 및
    상기 객체의 역 포인터에 포함된 포인터를 상기 그룹 테이블의 해당 그룹에 저장하는 제 3 기능
    을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
  7. 역 포인터를 이용한 그루핑 연산에서 생성된 그룹 테이블을 이용한 그룹별 집계함수 획득을 위하여, 대용량 저장장치를 구비한 객체-관계 데이터베이스 관리 시스템에,
    클래스의 객체를 순차적으로 읽는 비용이 그룹 테이블의 각 그룹 별로 포인터를 가지고 객체를 읽는 비용보다 큰지를 판단하는 제 1 기능;
    상기 제 1 기능의 판단결과, 클래스의 객체를 순차적으로 읽는 비용이 그룹 테이블의 각 그룹 별로 포인터를 가지고 객체를 읽는 비용보다 크지 않다면 상기 클래스의 객체를 순차적으로 읽어서 집계함수를 구하는 제 2 기능; 및
    상기 제 1 기능의 판단결과, 클래스의 객체를 순차적으로 읽는 비용이 그룹 테이블의 각 그룹 별로 포인터를 가지고 객체를 읽는 비용보다 크다면 상기 그룹 테이블에 저장된 객체 포인터를 이용해 집계함수를 구하는 제 3 기능
    을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
KR1019990061884A 1999-12-24 1999-12-24 객체-관계 데이터베이스 관리 시스템에서의 역 포인터를이용한 그루핑 연산 방법 및 그 방법에서 생성된 그룹테이블을 이용한 집계 함수 획득 방법 KR100333682B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019990061884A KR100333682B1 (ko) 1999-12-24 1999-12-24 객체-관계 데이터베이스 관리 시스템에서의 역 포인터를이용한 그루핑 연산 방법 및 그 방법에서 생성된 그룹테이블을 이용한 집계 함수 획득 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019990061884A KR100333682B1 (ko) 1999-12-24 1999-12-24 객체-관계 데이터베이스 관리 시스템에서의 역 포인터를이용한 그루핑 연산 방법 및 그 방법에서 생성된 그룹테이블을 이용한 집계 함수 획득 방법

Publications (2)

Publication Number Publication Date
KR20010083263A KR20010083263A (ko) 2001-09-01
KR100333682B1 true KR100333682B1 (ko) 2002-04-22

Family

ID=19629447

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990061884A KR100333682B1 (ko) 1999-12-24 1999-12-24 객체-관계 데이터베이스 관리 시스템에서의 역 포인터를이용한 그루핑 연산 방법 및 그 방법에서 생성된 그룹테이블을 이용한 집계 함수 획득 방법

Country Status (1)

Country Link
KR (1) KR100333682B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100520301B1 (ko) * 2001-10-13 2005-10-13 한국전자통신연구원 객체관계형 데이터베이스 관리 시스템 및 그것의 클래스인스턴스 삭제 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100520301B1 (ko) * 2001-10-13 2005-10-13 한국전자통신연구원 객체관계형 데이터베이스 관리 시스템 및 그것의 클래스인스턴스 삭제 방법
US7076490B2 (en) 2001-10-13 2006-07-11 Electronics And Telecommunications Research Institute Object-relational database management system and method for deleting class instance for the same

Also Published As

Publication number Publication date
KR20010083263A (ko) 2001-09-01

Similar Documents

Publication Publication Date Title
US7567952B2 (en) Optimizing a computer database query that fetches n rows
US6678687B2 (en) Method for creating an index and method for searching an index
US8332389B2 (en) Join order for a database query
US6185557B1 (en) Merge join process
US6606638B1 (en) Value-instance-connectivity computer-implemented database
US5404510A (en) Database index design based upon request importance and the reuse and modification of similar existing indexes
EP3014488B1 (en) Incremental maintenance of range-partitioned statistics for query optimization
US20050222978A1 (en) Method and apparatus for querying spatial data
US20070239673A1 (en) Removing nodes from a query tree based on a result set
US9218394B2 (en) Reading rows from memory prior to reading rows from secondary storage
JP4071816B1 (ja) 合成関係演算を利用したマルチオペレーション・プロセッシングを用いたデータベースのクエリー処理システム
DeWitt et al. Nested loops revisited
US20230103328A1 (en) Data compression techniques
US11294816B2 (en) Evaluating SQL expressions on dictionary encoded vectors
US20230418824A1 (en) Workload-aware column inprints
Park et al. A new query processing technique for XML based on signature
KR100333682B1 (ko) 객체-관계 데이터베이스 관리 시스템에서의 역 포인터를이용한 그루핑 연산 방법 및 그 방법에서 생성된 그룹테이블을 이용한 집계 함수 획득 방법
Faust et al. Footprint reduction and uniqueness enforcement with hash indices in SAP HANA
Kamath et al. Bucket skip merge join: A scalable algorithm for join processing in very large databases using indexes
JPH10269225A (ja) データベース分割方法
US20060235819A1 (en) Apparatus and method for reducing data returned for a database query using select list processing
KR20010109945A (ko) 비공간검색조건이 포함된 케이-최근접 질의를 위한알에스트리구조 및 점증적 최근접 방법
Šalgová et al. The impact of table and index compression
US11868331B1 (en) Systems and methods for aligning big data tables in linear time
US20220197902A1 (en) Range partitioned in-memory joins

Legal Events

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

Payment date: 20100401

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee