KR20180043754A - 조인 방법, 이를 실행시키는 컴퓨터 프로그램 및 기록매체 - Google Patents

조인 방법, 이를 실행시키는 컴퓨터 프로그램 및 기록매체 Download PDF

Info

Publication number
KR20180043754A
KR20180043754A KR1020170136754A KR20170136754A KR20180043754A KR 20180043754 A KR20180043754 A KR 20180043754A KR 1020170136754 A KR1020170136754 A KR 1020170136754A KR 20170136754 A KR20170136754 A KR 20170136754A KR 20180043754 A KR20180043754 A KR 20180043754A
Authority
KR
South Korea
Prior art keywords
bucket
record
records
join
present
Prior art date
Application number
KR1020170136754A
Other languages
English (en)
Other versions
KR101961562B1 (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 US16/343,040 priority Critical patent/US11188541B2/en
Priority to PCT/KR2017/011703 priority patent/WO2018074906A1/ko
Publication of KR20180043754A publication Critical patent/KR20180043754A/ko
Application granted granted Critical
Publication of KR101961562B1 publication Critical patent/KR101961562B1/ko

Links

Images

Classifications

    • G06F17/30498
    • 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
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Landscapes

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

Abstract

발명의 실시예에 따른 데이터베이스 관리 시스템에서의 조인 방법은 컴퓨터 메모리 내부에 저장된 데이터를 처리하는 저장매체의 메모리에서, 다른 테이블의 기본키로만 구성되어 있는 제1테이블의 버킷에 새로운 레코드가 추가될 때 해당 버킷에 여유 공간이 없을 경우 버킷을 분할하는 단계와, 분할되기 전 버킷에 있던 제1 레코드와 상기 새로운 레코드 각각의 적어도 하나 이상의 비트에 대해 상위 비트가 상이함에 근거하여 상기 제1 레코드와 상기 새로운 레코드 중에서 어느 하나를 분할된 버킷에 저장하는 단계를 포함한다.

Description

조인 방법, 이를 실행시키는 컴퓨터 프로그램 및 기록매체{Method for Hash-Join and computer program, and storage medium operating thereof}
본 발명은 조인(Join) 기법에 관한 것이다. 구체적으로, 본 발명에서는 조인 기법을 적용할 때, 프라이머리 키(Primary Key)를 가지고 있는 테이블에 대해서는 소팅 또는 해싱을 하지 않고, 프라이머리 키(Primary Key)가 없는 테이블에 대해서는 소팅 또는 해싱을 수행하여 레코드들을 소팅한 후 조인 연산을 수행함으로써 종래 대비 연산 성능을 향상시킨 조인 방법, 이를 실행시키는 컴퓨터 프로그램 및 기록매체에 관하여 제시한다.
조인(Join)이란 두 개 이상의 테이블을 하나의 집합으로 만드는 연산을 의미한다. 일 예로, SQL문에서 FROM 절에 두 개 이상의 테이블이 나열될 경우 조인이 수행될 수 있다. 이와 같은 조인 연산은 두 개 이상의 테이블 중 선별된 두 개 테이블 사이에서 수행되게 된다.
이중, 해쉬 조인(Hash Join) 알고리즘은 대용량의 두 테이블을 조인(join)하기 위해 사용된다. 특히, 해쉬 조인 알고리즘은 테이블의 크기가 방대해서 메모리에 모두 넣을 수 없기 때문에, 데이터의 일부를 메모리로 가져와서 처리하고, 다시 저장장치에 저장함으로써 조인 연산을 수행할 수 있다는 장점이 있다.
종래의 해쉬조인 기법에 대하여 간단히 설명하면 다음과 같다.
메인 메모리 사이즈를 32KB로 가정할 때 메모리 공간은 크게 R 테이블 영역(8KB), S 테이블 영역 (8KB), Input Buffer (4KB), Output Buffer (4KB), 기타 영역 (8KB)으로 나뉜다. 편의상, R 테이블 영역, S 테이블 영역, Input Buffer, Output Buffer, 기타 메모리 영역을 MR, MS, MI, MO, MH라고 표시한다. MH는 다양한 용도로 활용될 수 있으며, 일 예로 Grace Hash Join과 Hybrid Hash Join에서는 해쉬 테이블을 저장하기 위한 공간으로 사용된다.
R 테이블은 <Employee_ID, Department_ID>와 S 테이블은 <Department_ID, Department_Name>의 스키마를 가진다. R 테이블에서 Employee_ID는 프라이머리키(primary key)이고, Department_ID는 포린키(foreign key)이다. 또한 S 테이블에서 Department_ID는 S 테이블의 프라이머리 키이고 Department_Name은 value라고 할 수 있다.
따라서 조인 연산은 Select R.Employee_ID, S.Department_ID, S.Department_Name from R, S where R.Department_ID = S.Department_ ID의 쿼리로 수행된다.
조인 연산이 수행되고 나면, 조인 결과는 메인 메모리의 output buffer 영역에 임시 저장되고, 버퍼가 풀(full)이 되면, 하드디스크로 플러시(flush)된다. 조인 결과의 각 레코드는 <Employee_ID, Department_ID, Department_Name>으로 구성되게 된다.
다만, 종래의 해쉬 조인 기법들에서는 조인 연산을 위해 각각의 디렉토리 엔트리 내 레코드들을 모두 비교해보아야 하는 문제점이 있어, 많은 연산 시간을 필요로 하는 문제점이 있었다.
미국등록특허 제 7,319,995호
본 발명은 상기와 같은 문제점을 해결하기 위해 안출된 것으로, 해쉬 맵 생성 후 해쉬 맵 스캔(탐색)시 보다 효율적인 해쉬 조인 연산을 수행할 수 있도록 하는 조인 방법, 이를 실행시키는 컴퓨터 프로그램 및 기록매체를 제공하고자 한다.
발명의 실시예에 따른 데이터베이스 관리 시스템에서의 조인 방법은 컴퓨터 메모리 내부에 저장된 데이터를 처리하는 저장매체의 메모리에서, 다른 테이블의 기본키로만 구성되어 있는 제1테이블의 버킷에 새로운 레코드가 추가될 때 해당 버킷에 여유 공간이 없을 경우 버킷을 분할하는 단계와, 분할되기 전 버킷에 있던 제1 레코드와 상기 새로운 레코드 각각의 적어도 하나 이상의 비트에 대해 상위 비트가 상이함에 근거하여 상기 제1 레코드와 상기 새로운 레코드 중에서 어느 하나를 분할된 버킷에 저장하는 단계를 포함한다.
상기 데이터베이스 관리 시스템에서의 조인 방법은 상기 제1 테이블의 버킷을 순서대로 읽어서 제2 테이블과 상기 제1 테이블의 레코드와 조인 연산을 수행하는 단계를 더 포함한다.
상기 조인 연산을 수행하는 단계에서, 버킷 내의 레코드들이 정렬되어 있지 않은 경우, 상기 제1 테이블의 버킷에 있는 레코드를 읽고, 상기 제2 테이블에 있는 레코드를 활용하여 프로빙하는 단계를 포함한다.
상기 조인 연산을 수행하는 단계에서, 버킷 내의 레코드들이 정렬되어 있는 경우, 상기 제1 테이블의 버킷 단위로 읽어서, 상기 제2 테이블에 있는 레코드와 머지(merge) 연산을 진행하는 단계를 포함한다.
상기 적어도 하나 이상의 비트는 상위 비트 값으로부터 하위 비트의 순으로 동일함을 판단하는 단계를 포함한다.
발명의 실시예에 따른 기록매체는 상술한 바와 같은 조인 방법을 수행하기 위해 디지털처리 장치에 의해 실행될 수 있는 명령어들의 프로그램이 유형적으로 구현되어 있으며 디지털 처리 장치에 의해 판독될 수 있다.
본 발명의 바람직한 실시예에 따른 소팅 연산을 이용한 조인 방법, 이를 실행시키는 컴퓨터 프로그램 및 기록 매체는, 기존의 Hybrid Hash Join 기법에서 2번 적용하는 해싱(Hashing)의 오버헤드를 없애고, 프로빙(Probing)할 때의 시간을 많이 감소할 수 있다. 결과적으로, 종래 대비 해쉬 조인의 연산량을 감소시켜 해쉬 조인에 소요되는 시간을 단축시킬 수 있다는 효과가 있다.
도 1은 발명의 실시예에 따른 R 테이블과 S, T 테이블의 스키마(Schema)를 나타내는 도면이다.
도 2는 발명의 실시예에 따라 다이나믹 해싱에서 사용하는 데이터를 이진법으로 나타내는 도면이다.
도 3은 발명의 실시예에 따라 다이나믹 해싱의 초기 상태를 나타내는 도면이다.
도 4는 발명의 실시예에 따라 제1 레코드를 추가한 상태를 나타내는 도면이다.
도 5는 발명의 실시예에 따라 제2 레코드를 추가한 상태를 나타내는 도면이다.
도 6은 발명의 실시예에 따라 확장 해싱(Extendible hashing)의 초기 상태를 나타내는 도면이다.
도 7은 발명의 실시예에 따라 제1 레코드를 추가한 후의 확장 해싱의 상태를 나타내는 도면이다.
도 8은 발명의 실시예에 따라 중복되는 키를 보유하는 복수의 레코드가 존재하는 경우를 나타내는 도면이다.
도 9는 발명의 다른 실시 예에 따라 디렉토리를 사용한 다이나믹 해싱 구조를 나타내는 도면이다.
본 발명에서 사용되는 기술적 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아님을 유의해야 한다. 또한, 본 발명에서 사용되는 기술적 용어는 본 발명에서 특별히 다른 의미로 정의되지 않는 한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 의미로 해석되어야 하며, 과도하게 포괄적인 의미로 해석되거나, 과도하게 축소된 의미로 해석되지 않아야 한다. 또한, 본 발명에서 사용되는 기술적인 용어가 본 발명의 사상을 정확하게 표현하지 못하는 잘못된 기술적 용어일 때에는, 당업자가 올바르게 이해할 수 있는 기술적 용어로 대체되어 이해되어야 할 것이다. 또한, 본 발명에서 사용되는 일반적인 용어는 사전에 정의되어 있는 바에 따라, 또는 전후 문맥상에 따라 해석되어야 하며, 과도하게 축소된 의미로 해석되지 않아야 한다.
또한, 본 발명에서 사용되는 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함한다. 본 발명에서, "구성된다" 또는 "포함한다" 등의 용어는 발명에 기재된 여러 구성 요소들, 또는 여러 단계를 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시 예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성 요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
또한, 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 발명의 사상을 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 발명의 사상이 제한되는 것으로 해석되어서는 아니 됨을 유의해야 한다.
도 1은 발명의 실시예에 따른 R 테이블과 S, T 테이블의 스키마(Schema)를 나타내는 도면이다. R의 테이블의 Attr_A는 기본 키(primary key)로, R 테이블의 모든 레코드들의 기본 키 값은 유일해야(unique)한다. 여기서 Attr은 속성값을 불러오거나 세팅하는 메소드이다. 기본 키는 테이블에 있는 수많은 레코드 중 하나의 레코드를 유일하게 구분해주는 컬럼을 의미한다. 구체적으로, 레코드 또는 투플(tuple)을 확인하기 위해 이용되는 속성값으로 하나의 레코드 또는 투플을 하나의 뜻으로 확인하기 위해 이용되는 키를 의미한다. 기본 키는 중복이 허용되지 않는다. 그러나 Attr_C는 기본 키가 아니기 때문에 중복이 허용된다.
마찬가지로, T의 테이블의 Attr_B는 기본 키로, R 테이블의 모든 레코드들의 기본 키 값은 유일해야(unique) 한다. 즉, 중복이 허용되지 않는다. 하지만, Attr_D는 기본 키가 아니기 때문에 마찬가지로 중복이 허용된다. 테이블 S는 Attr_B와 Attr_A로 구성되어 있으며, Attr_B와 Attr_A는 각각 테이블 T와 S의 기본 키이다. 즉, 테이블 S의 경우에는 Attr_B와 Attr_A의 조합이 기본 키가 된다. 따라서, Attr_B와 Attr_A의 값은 개별적으로 중복이 허용되나, Attr_A와 Attr_B의 조합은 유일해야(unique) 한다.
또한, 데이터베이스에서는 대부분의 경우에 기본 키는 정렬된 상태를 유지한다. 즉 오름차순 또는 내림차순으로 관리된다. 따라서, 테이블 R의 기본 키 값은 이미 정렬되어 있다고 가정할 수 있다. 이러한 경우에 조인 연산을 위해서 테이블 R의 레코드들의 해시를 사용하지 않는 것이 성능에 도움이 될 수 있다.
하지만, 테이블 S의 경우에는 레코드들이 정렬된 상태도 아니며, Attr_A의 값은 중복이 가능하다. 따라서, 테이블 S에 대해서는 해싱(Hashing) 또는 소팅(sorting)과 같은 기법을 적용해야 한다.
본 발명에서 사용하는 기법은 다이나믹 해싱(Dynamic hashing)과 유사점을 가지고 있으나, 다이나믹 해싱의 경우에는 해싱을 한 후에 해싱된 값을 적용한다. 하지만, 본 발명에서는 테이블 S의 Attr_A의 값을 바로 적용한다. 또한, 다이나믹 해싱의 경우에는 하위 비트 값부터 사용하고, 점점 상위 비트로 확대된다. 하지만, 본 발명에서는 상위 비트 값부터 사용하고, 점점 하위 비트로 확대한다.
도 2는 발명의 실시예에 따라 다이나믹 해싱에서 사용하는 데이터를 이진법으로 나타내는 도면이고, 도 3은 발명의 실시예에 따라 다이나믹 해싱의 초기 상태를 나타내는 도면이다.
하나의 버킷은 두 개의 레코드를 저장할 수 있으며, 버컷이 가득 찬(full) 상태에서 그 버킷에 레코드를 추가하고자 할 경우에는 버킷을 분할하여 레코드를 분할된 버킷에 나누어서 저장한다. 분할되기 전에 버킷에 있던 레코드와 새롭게 추가되는 레코드에서 하나의 비트를 더 고려하여 분할된 버킷에 저장한다.
도 3에 도시된 바와 같이 제1 레코드(C5)가 추가되었을 때에 기존의 버킷에 존재하던 레코드인 A1과 B1은 도 2와 같이 하위 두번째 비트가 0이고 하위 첫번째 비트가 1인 레코드들이 해당 버킷에 저장된다. 하지만, 도 4에서와 같이 C5가 추가되고자 할 때에 버킷에 여유 공간이 없으므로, A1과 B1을 포함하고 있는 버킷을 분할하게 된다.
즉, 레코드를 버킷에 저장할 때에 하위 세 번째 비트를 고려하게 된다. 따라서, 하위 세 개의 비트가 001인 A1과 B1은 같은 버킷에 저장이 되며, 하위 세 개의 비트가 101인 C5는 다른 버킷에 저장된다.
이때 버킷에 존재하는 레코드들간에는 정렬이 이루어지지 않는다. 버킷에 레코드를 쉽게 추가하기 위해서 비트맵을 사용해서 할당된 슬롯과 빈 슬롯을 빠르게 찾을 수 있다.
예를 들면, 버킷에 8개의 레코드를 저장한 공간(slot)이 있는 경우, 이러한 환경에서 비트맵을 사용하지 않는 경우에는 버킷에서 첫번째 슬롯부터 그 슬롯이 빈 슬롯인지를 체크해서, 빈 슬롯을 찾을 때까지 진행되어야 한다. 하지만, 비트맵을 활용하면, 8개의 슬롯을 위해서는 8비트(bit)이면 충분하다. 따라서, 8 비트의 값을 알면 몇 번째 슬롯이 비어있는지를 바로 알 수 있어서, 빈 슬롯을 찾는 시간을 단축할 수 있다.
본 발명에서 제안하는 방식은 다른 테이블의 기본키로만 구성되어 있는 테이블 S에 대해서 정렬을 하지 않고, 다이나믹 해싱을 사용해서 버킷 단위로 소팅을 하게 된다. 이렇게 하면 다이나믹 해싱에서 최상위에 존재하는 버킷에는 최소 값을 가지는 레코드들만이 존재하게 된다.
따라서, 테이블 R에 있는 첫 부분에 존재하는 레코드를 읽어서, 조인 연산을 하면 된다. 즉, 테이블 R은 이미 정렬된 상태이므로, 테이블 R에서 읽어온 레코드들은 정렬되어 있으며, 테이블 S의 다이나믹 해싱에서 읽어온 버킷에는 최소 값을 가지는 레코드들만이 존재한다.
따라서, 이 두 영역에 있는 레코드들을 조인하는 것은 매우 짧은 시간에 이루어진다. 즉, 테이블 S의 버킷에서 하나의 레코드를 읽어서, 그 레코드의 외래 키(foreign key)를 테이블 R에서 읽어온 레코드에서 바이너리 서치(binary search)로 검색할 수 있다.
여기서 외래키(foreign key)는 어떤 릴레이션에 소속된 속성 또는 속성 집합이 다른 릴레이션의 기본 키가 되는 키다. 다시 말해 다른 릴레이션의 기본키를 그대로 참조하는 속성의 집합이 외래키다. 외래키는 릴레이션들 사이의 관계를 올바르게 표현하기 위해 필요하다.
테이블 S의 버킷 내에 있는 레코드들을 프로빙 연산을 하기 전에 소팅을 할 수도 있다. 이 경우에 소팅을 해야 하는 오버헤드가 존재하지만, 프로빙 할 때에 머지 소트(merge sort) 방식을 적용할 수 있다.
머지 소트는 주어진 데이터들을 몇 부분으로 분할한 다음 각각을 재귀적으로 정렬하고, 두 부분을 합쳐서 하나로 만드는 방법으로, 테이블 S의 버킷 내에 있는 레코드들을 정렬하지 않는 경우에는 테이블 R의 레코드에게 바이너리 서치를 적용해야 한다.
도 4는 발명의 실시예에 따라 제1 레코드를 추가한 상태를 나타내는 도면이고, 도 5는 발명의 실시예에 따라 제2 레코드를 추가한 상태를 나타내는 도면이다.
또한, 도 6은 발명의 실시예에 따라 확장 해싱(Extendible hashing)의 초기 상태를 나타내는 도면이고, 도 7은 발명의 실시예에 따라 제1 레코드를 추가한 후의 확장 해싱의 상태를 나타내는 도면이다.
하나의 버킷 내에 A1 및 B1 레코드가 포함되어 있으며, 도 4에 도시된 바와 같이, C5의 레코드를 추가하는 경우, A1 및 B1 레코드와 C5 레코드는 하위 비트는 동일하나, 상위 비트가 상이함에 근거하여 분류한다.
즉, 도 2에 도시된 바와 같이 A1 및 B1 레코드는 서로 하위 비트가 동일하며 상위비트도 두자리 수까지는 동일함을 확인할 수 있다. 그리고 C5의 하위 비트는 101로 이를 반영하여 도 4와 같이 분류할 수 있다.
또한, 하나의 버킷 내에 A1 및 B1 레코드가 포함되어 있으며 도 5에 도시된 바와 같이 C1의 레코드를 추가하는 경우, A1 및 C1 레코드와 B1 레코드는 하위 비트는 동일하나, 상위 비트가 상이함에 근거하여 분류한다.
즉, 도 2에 도시된 바와 같이 A1 및 C1 레코드는 서로 하위 비트가 동일하며 상위비트도 세자리 수까지는 동일함을 확인할 수 있다. 그리고 B1의 하위 비트는 1001로 이를 반영하여 도 5와 같이 분류할 수 있다.
상술한 실시 예들은 한번에 한 비트씩 비교하는 예를 설명하였으나, 실시 예에 따라, 한번에 다수의 비트들을 비교하여 레코드를 추가할 수 있다.
다이나믹 해싱은 디렉토리 없는(directoryless) 다이나믹 해싱으로 분류된다. 즉, 바이너리 트리(binary tree)를 디렉토리(directory) 대신하여 사용하기 때문이다. 또 다른 형태의 다이나믹 해싱은 디렉토리 기반(directory-based) 다이나믹 해싱으로 대표적인 예가 확장 해싱(extendible hashing)이다.
한 분류가 확장 해싱으로 도 6은 확장 해싱의 초기 상태이다. 이 상황에서 C5를 추가하고자 할 때에, A1과 B1이 있는 버킷에 저장을 해야 한다. 하지만, A1과 B1이 저장되어 있는 버킷은 빈 공간이 없으므로(full), 이러한 경우에는 디렉토리의 크기를 2배로 확대한다.
즉, 디렉토리는 4개의 엔트리를 가지고 있지만, 도면 7에서의 디렉토리는 8개의 엔트리로 확대된다. 그리고, A1과 B1이 저장되어 있는 버킷을 분할하여 A1과 B1은 하나의 버킷에 C5는 다른 버킷에 저장하게 된다. 001 디렉토리 엔트리에는 A1과 B1를 저장한 버킷이 연결되며, 101 디렉토리 엔트리에는 C5가 저장된 버킷이 연결된다. 그리고, 나머지 버킷은 분할이 이루어지지 않는다.
하지만 디렉토리의 크기가 두배로 증가되었기 때문에, 000 디렉토리 엔트리와 100 디렉토리 엔트리는 A10와 B0를 저장하는 버킷을 가리킨다. 즉, 같은 버킷을 공유한다. 만약에 이 버킷에 하나의 레코드가 추가된다면, 위와 같이 버킷을 분할한 후에 000 디렉토리 엔트리와 100 디렉토리 엔트리에 각각 연결한다. 이와 같이 확장 해싱은 레코드의 수에 따라서 디렉토리의 크기가 동적으로 변경될 수 있다.
도 8은 발명의 실시예에 따라 중복되는 키를 보유하는 복수의 레코드가 존재하는 경우를 나타내는 도면이다. 도 8을 참조하면, 하나의 버킷(40) 내에 A0 및 B0 레코드가 포함되어 있고, 버킷(40)에 있는 레코드 중에서 A0의 기본 키와 같은 값을 가지는 레코드를 추가하고자할 때, 새로운 버킷(50)을 할당받고 새로운 버킷(50)에 A0의 기본 키와 같은 값을 가지는 레코드를 추가하고, 새로운 버킷(50)을 버킷(40)에 연결한다.
도 9는 발명의 다른 실시 예에 따라 디렉토리를 사용한 다이나믹 해싱 구조를 나타내는 도면이다. 도 2는 디렉토리를 사용한 다이나믹 해싱 구조를 설명하기 위해 나타낸 식별자와 해시 함수의 결과 값인 해싱 키를 이진수로 나타낸 것이라고 가정하고, 도 9는 각 버킷에 데이터를 최대 2개까지 삽입 가능하다고 가정한다.
널리 알려진 동적 해싱 방법은 식별자를 해시 테이블 구조에 삽입하기 위해서 해시 키의 최하위 1비트 값을 확인하지만, 도 9의 실시 예는 최상위 1비트 값을 확인하여 해시 테이블을 구성한다.
도 2와 도 9를 참조하면, 식별자 A0와 A1의 최상위 비트 값은 1이므로 같은 디렉토리에 삽입된다. 식별자 B0 역시 최상위 비트 값이 1이므로 1번 디렉토리에 삽입이 되어야 하나, 하나의 버킷이 최대로 삽입할 수 있는 데이터는 2개이므로 충돌이 발생한다.
이 경우, 차상위 비트의 값이 0인지 또는 1인지에 따라 디렉토리의 크기를 변경하고 버킷의 내용을 재조정해야한다. 이 때, 식별자 A0, A1, 및 B0는 2번째 비트까지 비트 값이 동일하기 때문에 3번째 비트를 검사한다. 식별자 A0와 A1은 3번째 비트 값은 0이고, B0의 3번째 비트 값은 1이므로 해시 테이블은 도 9와 같은 형태를 가지게 된다.
도 9에서 설명한 다이나믹 해시 구조를 자용하여 진보된 해시 조인 알고리즘으르 구현할 수 있다. 도 1을 참조하여 설명하면, R Table과 S Table 중 S Table을 동적 해시 테이블로 구성한다. S Table에 레코드를 삽입할 때 레코드의 Foreign Key를 Hash key 값으로 사용한다. 여기서, 잦은 디렉토리 크기 변경으로 인한 성능 저하를 막기 위해 4 bits 단위로 비트열을 검사한다. 따라서 디렉토리의 개수 역시 16개 단위로 재조정이 이루어진다.
디렉토리 노드는 유니크한 레코드가 담겨있는 버킷과 중복된 레코드가 담겨있는 버킷, 그리고 다음 디렉토리를 가리키는 포인터로 구성한다. 레코드를 삽입할 때 이미 동일한 키 값을 가진 레코드가 버킷에 삽입되어 있는 경우, 중복된 레코드가 담겨있는 버킷에 레코드를 저장한다. 이 때 해당 레코드의 중복된 개수를 저장해두는 변수를 만들어 레코드의 키 값과 동일한 키 값을 가지는 레코드가 해당 버킷에 몇 개가 있는지를 카운팅한다.
만약 유니크한 레코드가 담겨있는 버킷이 가득 찬 경우, 버킷 안의 데이터를 재분배하는 과정을 거친다. 재분배 과정에서 중복된 데이터의 버킷 역시 재분배해야 한다.
조인 연산을 수행하기에 앞서 레코드가 있는 버킷을 가져오기 위해 S Table의 리프 노드(leaf node)를 찾기 위한 중위 순회(inorder traversal)을 수행한다. 그 후, 해당 노드의 레코드 버킷을 가져온 후, R Table과 조인 연산을 수행한다. R Table과 조인하기 전에 해당 버킷의 레코드에 소팅 연산을 수행한다. 소팅을 통해 조인 연산 수행 시 R Table의 탐색을 순차 탐색으로 수행함으로써 연산 수행 시간을 줄일 수 있다는 장점이 있다. 순차 탐색을 통해 S Table의 Foreign key와 매칭되는 R Table의 Primary key를 발견하면 조인 연산을 수행한다.
그 후, S Table의 해당 레코드가 중복된 레코드를 갖고있다면 중복된 레코드의 버킷을 탐색하여 그 레코드들 역시 조인 연산을 수행한다. 해당 버킷에 대한 조인 연산이 끝나면 순회를 통해 다음 버킷을 불러오고, 해당 버킷에 대한 조인 연산을 수행한다.
한편, 상술한 실시예들에 의한 조인 방법은 프로그램으로 구현되어 컴퓨터로 판독가능한 기록매체에 저장될 수 있다. 기록매체란, 예를 들어 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치, 디바이스 일 수 있다. 상기 기록매체의 보다 구체적인 예들은 컴퓨터 디스켓(자기), 랜덤 액세스 메모리(RAM)(전자), 판독 전용 메모리(ROM)(전자), 소거 가능 프로그램 가능한 판독 전용 메모리(EPROM, EEPROM, 또는 플래시 메모리)(전자), 광섬유(광학), DVD(digital versatile disc) 또는 CDROM(compact disc read-only memory)와 같은 광학 매체를 포함할 것이다. 또한, 컴퓨터로 판독가능한 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드로 저장되고 실행될 수 있다.
실시 예에 따라, 상술한 실시예들에 의한 조인 방법은 인메모리데이터베이스관리시스템(in-memory database management system)에도 적용될 수 있다. 인메모리데이터베이스관리시스템에서는 디스크가 아닌 주 메모리에 모든 데이터를 보유한다.
따라서, 본 명세서에서 상술한 실시예들에 의한 조인 방법을 실행하기 위한 데이터는 저장장치 또는 주메모리에 존재할 수 있다. 상술한 실시예들에 의한 조인 방법이 인메모리데이터베이스관리시스템 적용될 때, 모든 데이터가 주메모리에 있으므로, 저장장치에서 데이트를 읽어오는 과정이 필요 없고 바로 조인 연산을 수행할 수 있다.
상술한 실시예에 설명된 특징, 구조, 효과 등은 본 발명의 적어도 하나의 실시예에 포함되며, 반드시 하나의 실시예에만 한정되는 것은 아니다. 나아가, 각 실시예에서 예시된 특징, 구조, 효과 등은 실시예들이 속하는 분야의 통상의 지식을 가지는 자에 의하여 다른 실시예들에 대해서도 조합 또는 변형되어 실시 가능하다.
따라서 이러한 조합과 변형에 관계된 내용들은 본 발명의 범위에 포함되는 것으로 해석되어야 할 것이다. 또한, 이상에서 실시예들을 중심으로 설명하였으나 이는 단지 예시일 뿐 본 발명을 한정하는 것이 아니며, 본 발명이 속하는 분야의 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성을 벗어나지 않는 범위에서 이상에 예시되지 않은 여러 가지의 변형과 응용이 가능함을 알 수 있을 것이다. 예를 들어, 실시예들에 구체적으로 나타난 각 구성 요소는 변형하여 실시할 수 있는 것이다. 그리고 이러한 변형과 응용에 관계된 차이점들은 첨부한 청구 범위에서 규정하는 본 발명의 범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (6)

  1. 컴퓨터 메모리 내부에 저장된 데이터를 처리하는 저장매체의 메모리에서,
    다른 테이블의 기본키로만 구성되어 있는 제1테이블의 버킷에 새로운 레코드가 추가될 때 해당 버킷에 여유 공간이 없을 경우 버킷을 분할하는 단계; 및
    분할되기 전 버킷에 있던 제1 레코드와 상기 새로운 레코드 각각의 적어도 하나 이상의 비트에 대해 상위 비트가 상이함에 근거하여 상기 제1 레코드와 상기 새로운 레코드 중에서 어느 하나를 분할된 버킷에 저장하는 단계;를 포함하는 데이터베이스 관리 시스템에서의 조인 방법.
  2. 제1항에 있어서,
    상기 제1 테이블의 버킷을 순서대로 읽어서 제2 테이블과 상기 제1 테이블의 레코드와 조인 연산을 수행하는 단계;를 더 포함하는 데이터베이스 관리 시스템에서의 조인 기법.
  3. 제2항에 있어서,
    상기 조인 연산을 수행하는 단계에서, 버킷 내의 레코드들이 정렬되어 있지 않은 경우, 상기 제1 테이블의 버킷에 있는 레코드를 읽고, 상기 제2 테이블에 있는 레코드를 활용하여 프로빙하는 단계를 포함하는 것을 특징으로 하는 조인 방법.
  4. 제2항에 있어서,
    상기 조인 연산을 수행하는 단계에서, 버킷 내의 레코드들이 정렬되어 있는 경우, 상기 제1 테이블의 버킷 단위로 읽어서, 상기 제2 테이블에 있는 레코드와 머지(merge) 연산을 진행하는 단계를 포함하는 것을 특징으로 하는 조인 방법.
  5. 제1항에 있어서,
    상기 적어도 하나 이상의 비트는 상위 비트 값으로부터 하위 비트의 순으로 동일함을 판단하는 단계를 포함하는 것을 특징으로 하는 조인 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 기재된 조인 방법을 수행하기 위해 디지털처리 장치에 의해 실행될 수 있는 명령어들의 프로그램이 유형적으로 구현되어 있으며 디지털 처리 장치에 의해 판독될 수 있는 기록매체.
KR1020170136754A 2016-10-20 2017-10-20 조인 방법, 이를 실행시키는 컴퓨터 프로그램 및 기록매체 KR101961562B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US16/343,040 US11188541B2 (en) 2016-10-20 2017-10-20 Join method, computer program and recording medium thereof
PCT/KR2017/011703 WO2018074906A1 (ko) 2016-10-20 2017-10-20 조인 방법, 이를 실행시키는 컴퓨터 프로그램 및 기록매체

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20160136520 2016-10-20
KR1020160136520 2016-10-20

Publications (2)

Publication Number Publication Date
KR20180043754A true KR20180043754A (ko) 2018-04-30
KR101961562B1 KR101961562B1 (ko) 2019-03-22

Family

ID=62081238

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170136754A KR101961562B1 (ko) 2016-10-20 2017-10-20 조인 방법, 이를 실행시키는 컴퓨터 프로그램 및 기록매체

Country Status (2)

Country Link
US (1) US11188541B2 (ko)
KR (1) KR101961562B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11556532B2 (en) * 2019-03-27 2023-01-17 Sap Se Hash trie based optimization of database operations

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7319995B2 (en) 2001-05-24 2008-01-15 Ncr Corp. Method and system for inclusion hash joins and exclusion hash joins in relational databases
JP2009042869A (ja) * 2007-08-07 2009-02-26 Fujitsu Broad Solution & Consulting Inc データベース管理プログラム及びデータベース管理装置
JP2010117951A (ja) * 2008-11-13 2010-05-27 Nippon Telegr & Teleph Corp <Ntt> データベース装置、データベースシステムおよびテーブルデータ結合方法
KR20150038220A (ko) * 2012-07-24 2015-04-08 아브 이니티오 테크놀로지 엘엘시 데이터 모델에서의 엔티티 매핑
KR20160074193A (ko) * 2014-12-18 2016-06-28 주식회사 카카오 조인 연산을 위한 매핑 방법 및 리듀싱 방법,및 그 방법들을 이용한 장치들

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6067547A (en) * 1997-08-12 2000-05-23 Microsoft Corporation Hash table expansion and contraction for use with internal searching
US20060235903A1 (en) * 2005-04-14 2006-10-19 Rajesh Kapur Method and system for retrieving deleted and overwritten documents
US20060288030A1 (en) * 2005-06-09 2006-12-21 Ramon Lawrence Early hash join
JP4254828B2 (ja) * 2006-09-11 2009-04-15 ソニー株式会社 情報処理装置および方法、並びにプログラム
US8321385B2 (en) * 2010-03-12 2012-11-27 Lsi Corporation Hash processing in a network communications processor architecture
US8161244B2 (en) * 2009-05-13 2012-04-17 Microsoft Corporation Multiple cache directories
CN101916261B (zh) * 2010-07-28 2013-07-17 北京播思软件技术有限公司 一种分布式并行数据库系统的数据分区方法
US8880476B2 (en) * 2012-06-28 2014-11-04 International Business Machines Corporation Low-overhead enhancement of reliability of journaled file system using solid state storage and de-duplication
US9355146B2 (en) * 2012-06-29 2016-05-31 International Business Machines Corporation Efficient partitioned joins in a database with column-major layout
US10002178B2 (en) * 2014-06-03 2018-06-19 Red Hat, Inc. Storage cluster data shifting
WO2016038749A1 (en) * 2014-09-09 2016-03-17 Nec Corporation A method for efficient one-to-one join
US20170090814A1 (en) * 2015-09-25 2017-03-30 Intel Corporation Efficient storage and retrieval for wearable-device data
US20180095996A1 (en) * 2016-10-03 2018-04-05 Ocient Llc Database system utilizing forced memory aligned access

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7319995B2 (en) 2001-05-24 2008-01-15 Ncr Corp. Method and system for inclusion hash joins and exclusion hash joins in relational databases
JP2009042869A (ja) * 2007-08-07 2009-02-26 Fujitsu Broad Solution & Consulting Inc データベース管理プログラム及びデータベース管理装置
JP2010117951A (ja) * 2008-11-13 2010-05-27 Nippon Telegr & Teleph Corp <Ntt> データベース装置、データベースシステムおよびテーブルデータ結合方法
KR20150038220A (ko) * 2012-07-24 2015-04-08 아브 이니티오 테크놀로지 엘엘시 데이터 모델에서의 엔티티 매핑
KR20160074193A (ko) * 2014-12-18 2016-06-28 주식회사 카카오 조인 연산을 위한 매핑 방법 및 리듀싱 방법,및 그 방법들을 이용한 장치들

Also Published As

Publication number Publication date
US11188541B2 (en) 2021-11-30
US20190391974A1 (en) 2019-12-26
KR101961562B1 (ko) 2019-03-22

Similar Documents

Publication Publication Date Title
US9575976B2 (en) Methods and apparatuses to optimize updates in a file system based on birth time
US9325344B2 (en) Encoding data stored in a column-oriented manner
US7558802B2 (en) Information retrieving system
US7523288B2 (en) Dynamic fragment mapping
CA2434081C (en) Data structures utilizing objects and pointers in the form of a tree structure
US20180150494A1 (en) Value-id-based sorting in column-store databases
US9449067B2 (en) Constraint processing
US20140222870A1 (en) System, Method, Software, and Data Structure for Key-Value Mapping and Keys Sorting
US10877973B2 (en) Method for efficient one-to-one join
US6466942B1 (en) Using indexes to retrieve stored information
KR101961562B1 (ko) 조인 방법, 이를 실행시키는 컴퓨터 프로그램 및 기록매체
KR101705444B1 (ko) 소팅 연산을 적용한 해쉬 조인 방법, 이를 실행시키는 컴퓨터 프로그램 및 기록매체
Vu et al. R*-grove: Balanced spatial partitioning for large-scale datasets
US8886677B1 (en) Integrated search engine devices that support LPM search operations using span prefix masks that encode key prefix length
US7822736B2 (en) Method and system for managing an index arrangement for a directory
Chen On the signature trees and balanced signature trees
WO2001025962A1 (en) Database organization for increasing performance by splitting tables
US8321480B2 (en) Full-function to high availability large database conversion
WO2018074906A1 (ko) 조인 방법, 이를 실행시키는 컴퓨터 프로그램 및 기록매체
JP2020135530A (ja) データ管理装置、データ検索方法及びプログラム
JP2000181768A (ja) デ―タ格納検索方式
KR102013839B1 (ko) 데이터베이스 관리 방법, 시스템 및 데이터베이스 트리 구조
KR101866697B1 (ko) 버킷 단위의 정렬을 기반으로 하는 해시 충돌 처리 방법
Ryu et al. Hybrid-th: a hybrid access mechanism for real-time memory-resident database systems
KR100345445B1 (ko) 주기억장치 데이터베이스 관리시스템에서의 티-트리 인덱스 키 관리방법

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