KR100726300B1 - 주 메모리 데이터베이스의 다차원 색인 압축 방법 - Google Patents

주 메모리 데이터베이스의 다차원 색인 압축 방법 Download PDF

Info

Publication number
KR100726300B1
KR100726300B1 KR1020010010780A KR20010010780A KR100726300B1 KR 100726300 B1 KR100726300 B1 KR 100726300B1 KR 1020010010780 A KR1020010010780 A KR 1020010010780A KR 20010010780 A KR20010010780 A KR 20010010780A KR 100726300 B1 KR100726300 B1 KR 100726300B1
Authority
KR
South Korea
Prior art keywords
tree
node
mbr
size
cache
Prior art date
Application number
KR1020010010780A
Other languages
English (en)
Other versions
KR20020071052A (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 KR1020010010780A priority Critical patent/KR100726300B1/ko
Publication of KR20020071052A publication Critical patent/KR20020071052A/ko
Application granted granted Critical
Publication of KR100726300B1 publication Critical patent/KR100726300B1/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/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • 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/2246Trees, e.g. B+trees

Landscapes

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

Abstract

본 발명은 CR-트리라고 불리는 R-트리의 캐쉬를 고려한 변형을 제안한다. 노드 안에 더 많은 엔트리를 넣기 위하여, CR-트리는 2차원 색인의 경우에 색인의 80% 정도를 차지하는 MBR 키를 압축한다. 먼저 MBR 좌표의 숫자의 앞 부분의 0을 제거하기 위하여, 부모 MBR의 왼쪽 아래 좌표를 기준으로 하여 MBR 키를 상대 좌표로 변환한다. 다음으로 상대 좌표의 숫자 뒷부분의 그다지 중요치 않은 비트를 제거하기 위하여 고정된 수의 비트로 양자화 한다. 결과적으로 CR-트리는 R-트리보다 폭이 넓고 크기가 훨씬 작아진다. 실험과 분석에 의하면 2차원 CR-트리는 R-트리와 비교하여 갱신 작업에서 비슷한 성능을 내고 60% 더 작은 공간을 사용하면서 2.5 배 더 빠른 검색 성능을 보인다.
Figure 112001004608744-pat00085
메모리 색인 압축 방법

Description

주 메모리 데이터베이스의 다차원 색인 압축 방법{Method for compressing multi-dimensional Index in mail memory database}
도 1a 내지 1c는 본 발명에 따른 QRMBR의 설명도
도 2a 내지 2b는 본 발명에 따른 CR-트리와 관련된 노드 구조도
도 3은 본 발명에 따른 CR-트리 검색 알고리즘 동작 순서도
도 4는 본 발명에 따른 CR-트리 삽입 알고리즘 동작 순서도
도 5는 본 발명에 따른 CR-트리 단말 노드 선택 알고리즘 동작 순서도
도 6은 본 발명에 따른 CR-트리 노드 분리 알고리즘 동작 순서도
도 7은 본 발명에 따른 CR-트리 조정 알고리즘 동작 순서도
도 8은 본 발명에 따른 CR-트리 삭제 알고리즘 동작 순서도
도 9는 본 발명에 따른 CR-트리 압축 알고리즘 동작 순서도
도 10a 내지 10c는 본 발명에 따른 세 가지 CR-트리 변형들을 위한 자료 구조의 변화도
도 11a 내지 11b는 본 발명에 따른 R-트리와 CR-트리의 노드 접근 개수를 나타낸 그래프
도 12a 내지 12b는 본 발명에 따른 R-트리와 CR-트리의 캐쉬 실패를 나타낸 그래프
도 13a 내지 13b는 본 발명에 따른 이차원 R-트리와 CR-트리와 선택성에 따른 최적 노드 크기의 변화 그래프
도 14a 내지 14b는 본 발명에 따른 QRMBR의 크기와 차원에 따른 QRMBR의 적중 오류 비율을 나타낸 그래프
도 15a 내지 15b는 본 발명에 따른 균일한 자료로 대량 적재된 이차원 트리의 검색 성능을 나타낸 그래프
도 16a 내지 16b는 본 발명에 따른 편중된 자료로 대량 적재된 검색 성능을 나타낸 그래프
도 17a 내지 17b는 본 발명에 따른 카디널리티 변화에 따른 이차원 R-트리와 CR-트리의 검색 성능을 나타낸 그래프
도 18a 내지 18b는 본 발명에 따른 균일한 자료로 대량 적재된 트리의 갱신 성능을 나타낸 그래프
도 19a 내지 19b는 본 발명에 따른 삽입 또는 삭제 후의 검색 성능을 나타낸 그래프
도 20a 내지 20c는 본 발명에 따른 양자화로 야기된 적중 오류를 나타낸 그래프
도 21a 내지 21b는 본 발명에 따른 양자화 단계에 따른 MBR 크기의 증가를 나타낸 그래프
도 22a 내지 22c는 본 발명에 따른 양자화 단계에 따른 검색 시간을 나타낸 그래프
도 23a 내지 23b는 본 발명에 따른 접근된 색인 자료의 양을 나타낸 그래프
도 24a 내지 24b는 본 발명에 따른 L2 캐쉬 실패 회수를 나타낸 그래프
도 25a 내지 25b는 본 발명에 따른 키 비교 회수를 나타낸 그래프
도 26a 내지 26b는 일반적인 4가지 DRAM 종류의 접근 속도를 나타낸 그래프
도 27a 내지 27b는 본 발명에 따른 이차원 CR-트리의 분석적, 실험적 결과를 비교한 그래프
본 발명은 주 메모리 데이터베이스에 관한 것으로, 특히 주 메모리 데이터베이스에서의 압축 기법에 관한 것이다.
서버의 DRAM 모듈의 가격이 1기가 바이트 당 2000 달러 이하로 하락함에 따라, 데이터베이스의 테이블과 색인의 다수가 현재의 컴퓨터 시스템의 주 메모리에 올라갈 수 있게 되었다.
또한, 10년 안으로 데이터 베이스 시스템의 주 메모리가 10 테라 바이트 정도가 되는 것이 일반적으로 여겨질 것이다. 이 같은 많은 양의 메모리 때문에 검색 트랜잭션 상에 특히 많이 발생하는 디스크 접근이라는 전통적인 병목 현상은 사라지고, 대신에 메모리 접근이 새로운 병목 현상이 된다.
상용의 DBMS(Database Management System)를 사용한 최근의 연구에 따르면, 전체 데이터베이스가 메모리에 적재되어 있을 때 실행 시간의 반 정도가 메모리 접 근에서 소요된다고 한다. DRAM의 속도가 용량에 비해 발전이 늦었기 때문에, CPU의 속도와 DRAM의 속도 차이는 지난 십 년 동안 매우 커졌다.
오늘날의 컴퓨터 시스템에서 한 번의 메모리 접근은 프로세서 동작 주기의 열 배에 다다른다. 이러한 차이를 극복하기 위해서, 현재의 프로세서들은 한 두 번의 프로세서 동작 주기만을 소요하는 캐쉬(Cache)라고 불리는 몇 메가 바이트의 SRAM을 장착하고 있다.
CPU 속도와 DRAM 속도 간 차이의 증가를 인식하면서, 최근에 주 메모리의 색인에 캐쉬 동작의 중요성이 부각되었고 읽기만 행해지는 OLAP(Online Analytical Processing) 환경에서 CSS-트리(Cache-Conscious Search tree)가 이진 탐색 트리와 T-트리보다 훨씬 더 빠르다는 것이 보여졌다. 또한 B+-트리의 캐쉬 동작도 상당히 좋음이 밝혀지고 이에 따라 그것의 캐쉬에 의존적인 변형이 제안되었다. CSB+-트리라고 불리는 이 B+-트리의 변형은 노드 안에서 처음 한 개를 제외한 대부분의 자식 포인터를 제거하기 위해 자식 노드를 메모리 안에 연속으로 저장한다. 부모 노드에는 자식 노드의 첫 번째 포인터만 저장하고 나머지 자식 노드의 위치는 첫 번째 것으로부터 계산한다. 이렇게 노드 안에 포인터를 줄이면 키가 저장되는 공간이 보다 많아지기 때문에, 포인터 제거는 B+-트리의 팬아웃(fanout: 한 노드 당 저장할 수 있는 키의 개수)을 두 배로 올렸다. 캐쉬 블럭의 배수로 노드의 크기가 주어지므로, 팬아웃이 두 배로 커지면 B+-트리의 높이는 줄어든다. 이는 트리 검색 동안에 B+-트리보다 더 적은 캐쉬 실패를 일으킨다. 한편, 이와 같은 포인터 제거 기술은 팬아웃이 보통 수백 정도이어서 그것이 두 배 증가하여도 트리 높이가 바로 줄어들지 않는 디스크 기반의 색인에서는 별로 효용이 없다.
그러나 포인터 제거 기술은 시공간 데이터베이스, 데이터 웨어하우스, 디렉토리 서버 분야에서 많이 사용되는 R-트리와 같은 다차원 색인 구조에는 직접 적용될 수 없다. 이는 MBR(minimum bounding rectangle)이라 하는 다차원 색인의 키는 포인터보다 훨씬 크기 때문이다. 따라서 포인터 제거 하나만으로는 색인의 팬아웃을 크게 넓히지 못한다. 예를 들어, 이차원 키를 위해 16-바이트 MBR이 사용될 때, 4바이트 포인터 제거는 키를 위한 공간을 단지 20% 밖에 증가시키지 못한다. 그리고 이 증가는 향상된 캐쉬 동작을 위한 트리 높이의 큰 변화에 별로 도움을 주지 않는다.
본 발명은 이와 같은 문제점을 해결하기 위하여 안출한 것으로, 상기 MBR을 양자화하여 MBR의 크기를 줄이므로 색인 캐쉬 동작을 향상시킬 수 있는 주 메모리 데이터베이스의 색인 압축 방법을 제공하는데 그 목적이 있다.
즉, 이차원 R-트리에서 MBR이 80% 정도를 차지하는 것처럼, MBR 키가 다차원 색인 구조에서 색인 자료의 대부분을 차지하기 때문에 본 발명은 색인 캐쉬 동작을 향상시키기 위해 MBR 간단한 압축에 초점을 두었다. CR-트리(Cache-conscious R-Tree)라고 불리는 이것은 각각의 한 노드의 자식 노드들이 공간적으로 무리 지어 지어 있으며, 자식 노드들의 MBR은 모두 부모 노드의 MBR에 속한다는 것에서 이점을 얻는다. 즉, 자식 노드의 MBR이 부모 MBR에 상대적으로 표현된다면 그 결과의 상대적인 MBR은 많은 수의 0으로 시작하고 실제로 중요한 비트는 얼마 되지 않는 숫자로 이루어질 것이다. MBR 당 비트 수를 더 줄이기 위해서 CR-트리는 양자화를 통해서 별로 중요치 않는 하위 비트는 없앤다. 여기의 분석과 실험은 이 압축 기술이 MBR의 크기를 4분의 1 이하로 줄일 수 있고 따라서 팬아웃을 150% 이상 증가시킬 수 있음을 보인다. 제안된 기술의 문제는 양자화로 인한 정보의 손실이 적중 오류(false hit)를 야기할 수 있다는 점인데, 이는 뒤이은 정제 단계로 정정될 것이다. 하지만 정제 단계가 필요하다는 것은 대부분의 다차원 색인에도 필요하다는 점에서 그리 큰 문제는 아니다. 그리고 이는 적중 오류를 정정하는 대가를 캐쉬 실패가 줄어드는 이점으로 사라지게 할 수 있는 양자화 단계를 적절히 선택함으로써 적중 오류를 무시할 수 있을 정도로 작게 하는 것도 가능하다.
본 발명은 또한 CSB+-트리에서 소개된 포인터 제거 기술을 사용할 지, 앞서 제안된 압축 기술을 단말 노드에 적용할지, 양자화 단계를 어떻게 선택할지, 노드 크기를 어떻게 정할지의 CR-트리의 설계에서의 선택 사항들에 대해서도 살펴본다. 여기의 실험은 CR-트리의 변형들이 검색 성능과 공간 활용 면에서 R-트리를 크게 앞서고 있다는 사실을 보인다. 제안된 기술만을 사용하는 기본적인 CR-트리는 갱신 작업은 R-트리와 비슷한 성능을 보이고 54% 더 적은 메모리를 사용하는 반면 검색 작업에서 2.5배 더 빠른 속도를 낸다. 기본적인 CR-트리와 비교해서 대부분의 CR-트리 변형들은 더 복잡한 알고리즘을 사용하는 대신 더 적은 메모리를 사용한다. 이 실험에서 사용된 여러 가지 색인과 제안된 기술에 대한 분석은 실험 결과와 일치한다.
본 발명은 MBR을 압축함으로써 R-트리를 캐쉬에 의존적이게 하는 것을 기본으로 한다.
도 1a 내지 1c는 본 발명에 사용된 압축 기법을 설명한다. 도 1a는 R0~R3의 절대 좌표를 보인다. 도 1b는 R0의 왼쪽 아래 쪽 좌표에 상대적인 R1~R3 좌표를 보인다. 이 상대 좌표는 절대 좌표보다 더 적은 수의 중요한 비트를 갖는다. 도 1c는 숫자 뒤쪽에서 16단계 또는 4비트를 제거한 양자화된 R1~R3의 좌표를 보인다. 그 결과의 MBR은 QRMBR(Quantized Relative MBR)이다. QRMBR이 표현하는 사각형은 원래의 MBR보다 약간 더 클 수 있다.
CR-트리는 색인 키로 QRMBR을 사용하는 R-트리의 변형이다. 양자화 수준의 숫자는 CR-트리 내의 모든 노드에서 같다.
도 2a 내지 2b는 본 발명에 따른 CR-트리 노드의 구조를 나터낸 것이다.
각각의 노드는 최대 M개의 엔트리를 포함할 수 있다. 또한 그 노드는 자신이 단말 노드인지 아닌지를 가리는 플래그, 자식 MBR 전체를 포함하는 가장 작은 참조MBR을 갖는다. 참조 MBR은 노드에 저장된 QRMBR을 계산하기 위해 사용된다. 내부 노드는 (QRMBR, ptr) 형태의 엔트리를 저장한다. 여기서 ptr은 자식 노드의 주소이고, QRMBR은 자식 노드 MBR의 양자화된 상대적인 표현이다. 이 실험의 대부분에서 x, y 좌표는 256 수준 또는 1 바이트로 양자화되어 있다.
주 메모리 색인에서는 노드에 대한 접근 횟수를 줄이면, 그만큼 캐쉬 실패가 일어날 확률이 줄어들어 결과적으로 메모리 접근을 줄일 수 있으므로, 주 메모리 속도가 CPU에 비해 상대적으로 느린 현재의 시스템들에서는 가치가 있다.
목표는 주 메모리 데이터베이스, 특히 다차원에서의 색인 검색 시간을 줄이는 데 있다. 주 메모리 색인과 디스크 기반의 색인의 차이점은 노드의 크기가 어느 정도 클 때는 그 크기에 관계없이 디스크 접근 시간이 대부분 일정하지만 메모리 접근은 노드의 크기에 거의 비례한다는 것이다.
먼저, 디스크 기반의 색인이 디스크 접근 회수를 최소화하도록 설계된 반면, 주 메모리 색인은 접근하는 색인 자료
Figure 112001004608744-pat00001
가 최소가 되도록 설계된다. 여기서, c는 캐쉬 블록 안의 노드 크기이고 N nodeaccess 은 접근하는 노드의 개수이다.
주 메모리 색인에서 검색 시간은 키 비교 시간과 캐쉬 실패에 의한 메모리 접근 시간으로 구성된다. 캐쉬 실패가 발생하면 CPU는 실패된 자료가 캐쉬될 때까지 기다려야 한다. 캐쉬 실패는 다음의 세 가지 이유로 발생한다. 자료 접근 실패, 명령어 접근 실패, TLB 엔트리 접근 실패가 그것이다. TLB는 가상 메모리 주소를 물리적 메모리 주소로 맵핑하는데 필요하다. 그러므로 목표는 T key compare 를 비교를 위한 키가 캐쉬되는데 걸리는 시간, T data cache 를 자료를 캐쉬하는데 걸리는 시간, T TLB cache 를 TLB 엔트리를 캐쉬하는데 걸리는 시간이라고 할 때,
T index search
Figure 112001004608744-pat00002
T key compare + T data cache + T TLB cache 을 최소화하는 것이다.
문제를 간단히 하기 위해 실패한 명령어를 캐쉬하는데 걸리는 시간은 사용되는 컴파일러에 의존적이고 캐쉬 시간이 조절하기 어렵기 때문에 생략한다.
c를 캐쉬 블록 안의 노드 크기라고 하고 N node access 를 질의를 수행하는 동안에 접근하는 노드의 개수라고 하자. C key compare 를 캐쉬 블록 당 키 비교 시간이라 하고 C cache miss 를 캐쉬 블록을 교체하는 데 걸리는 시간이라고 하자. C TLB miss 를 한 개의 TLB 실패를 정정하는데 걸리는 시간이라고 하자. 노드의 크기가 메모리의 페이지보다 작을 때 각각의 노드 접근은 최대 한 번의 TLB 실패를 야기한다. 간략함을 위하여 노드는 임의로 배치되어 있고 노드와 TLB 엔트리 모두 처음에 캐쉬되어 있지 않다고 가정한다. 그러면
T index search = c
Figure 112001004608744-pat00003
C key compare
Figure 112001004608744-pat00004
N node access + c
Figure 112001004608744-pat00005
C cache miss
Figure 112001004608744-pat00006
N node access + C TLB miss
Figure 112001004608744-pat00007
N node access
= c
Figure 112001004608744-pat00008
N node access
Figure 112001004608744-pat00009
(C key compare + C cache miss + C TLB miss / c)
여기서, C cache miss C TLB miss 는 주어진 환경에서 상수이므로 c, C key compare , N node access 의 세 매개변수를 조절하는게 가능하다. 이들 중에서 키 비교는 일반적으로 굉장히 간단하기 때문에 C key compare 를 줄이는 건 생각할 수 없다. 또한 C TLB miss C cache miss 는 비슷한 값을 지닌다. 그러므로 색인 검색 시간은 대부분 c N node access 에 의해 결정된다.
또한, 접근하는 색인 자료의 양은 색인 엔트리를 압축함으로써 가장 잘 감소한다.
Figure 112001004608744-pat00010
은 세 가지 방법으로 최소화할 수 있다.
Figure 112001004608744-pat00011
가 최소가 되도록 노드 크기를 바꾸는 것, 정해진 크기의 노드 안에 더 많은 엔트리를 넣는 것, 효율적으로 엔트리를 노드 안으로 클러스터링 하는 것. 두 번째 방법은 압축이라고 지칭되고, 세 번째는 클러스터링이라고 지칭된다.
최적의 노드 크기는 1차원의 경우에 캐쉬 블록의 크기와 같다. B+-트리와 같은 1차원 트리에서는 하나의 내부 노드가 범위 질의에서조차 각각의 높이에 대해 정확히 한번 접근되기 때문에 읽혀지는 내부 노드의 개수는 노드의 크기에 대해 로그 급수로 감소한다. 한편, 읽혀지는 단말 노드의 개수는 노드 크기에 선형적으로 감소하고, c는 노드의 크기에 선형적으로 증가한다. 그러므로
Figure 112001004608744-pat00012
는 노드 크기와 함께 증가하고 따라서 c가 1일 때 최소가 된다.
다차원 인덱스의 경우, 같은 높이에 있는 내부 노드 중 하나 이상이 일치 질의 동안조차도 함께 접근되고, 노드 크기가 증가할수록 같은 높이에서 접근되는 노드의 개수는 감소한다. 이 감소는 트리 높이의 로그 급수적인 감소와 함께 일어나기 때문에 노드 접근의 로그 급수적 감소 비율이 c의 선형적 증가를 압도할 가능성이 있다. 최적의 노드 크기는 질의의 선택성과 데이터 전체의 크기와 같은 몇 가지 요소에 의해 결정된다는 것을 분석으로 알 수 있다.
색인 엔트리 압축은 c의 증가 없이 노드 크기를 증가시키는 것과 같다. 달리 말하면, c를 고정하고 N node access 를 줄이는 것이다. 즉 굉장히 바람직한 것이다. 압축은 트리의 높이를 줄일 수 있기 때문에 디스크 기반의 색인에서 자주 언급되었지만 특히 다차원 색인 분야에서의 성과가 별로 없다. 다음의 간단한 분석은 압축이 디스크 기반의 색인에서 별로 중요하지 않지만 주 메모리 색인에서는 중요하다는 것을 보인다.
트리 A가 한 개의 노드 안에 평균 f개의 엔트리를 갖고 있고 트리 B는 좋은 압축 기법으로 인해 평균 한 개의 노드 안에 평균 2f개의 엔트리를 갖고 있다고 가정한다. 각각의 예상되는 높이는 log f N, log 2f N이다. 따라서 B의 높이는 A의 그것보다 1/log2 f +1 (= log f N / log 2f N )만큼 작다. 디스크 기반의 색인에서 전형적인 노드의 크기는 4 KB~64KB이다. 노드 크기가 8KB이고 노드가 70% 정도 차 있다고 가정할 때, B-트리 색인에서 f는 716 ( 8192x0.7/8)이고 2차원 R-트리에서 286 ( 8192x0.7/20)이다. 즉 1/log2 f 은 대부분 0.1이다. 한편 주 메모리 색인에서는 노드 크기가 작다. 한 개의 노드가 두 개의 캐쉬 블록 또는 128 바이트를 점유하므로 f는 B+-트리에서 약 11이고 2차원 R-트리에서 약 4이다. 즉 1/log2 f은 B+-트리에서0.29이고 R-트리에서 0.5이다. 한마디로 노드 압축은 노드의 크기가 작기 때문에 주 메모리 색인의 높이를 줄일 수 있다.
클러스터링은 디스크 기반 구조에서 광범위하게 연구되어왔다. 클러스터링 관점에서 B+-트리는 1차원 공간에서 최적이지만, 다차원의 경우는 최적의 클러스터 링 기법이 알려져 있지 않다. 대신 다양한 다차원 색인 구조에서 많은 경험적인 기법이 연구되어왔다. 그 연구들은 그러한 클러스터링 기법과 함께 대부분 사용될 수 있다.
MBR 압축
이것은 MBR 압축 기법의 가져야 할 두 가지 특성이다.
1. 압축을 풀지 않는 겹침 확인: 두 개의 MBR이 겹치는지 아닌지는 관련된 압축된 MBR을 압축을 풀지 않고는 결정될 수 없다. 기본적인 R-트리 작업은 노드 안의 MBR이 주어진 질의 사가형 안에서 겹치는지 확인하는 것이다. 그러므로 노드 안에 압축된 MBR을 저장할 때, 노드 안에 있는 모든 압축된 MBR을 압축을 푸는 대신 질의 사격형을 한번 압축함으로써 R-트리 작업의 성능을 향상시킬 수 있다.
2. 단순성: 압축과 압축을 푸는 것은 계산이 간단하여야 하고 이미 캐쉬된 자료만으로 수행될 수 있어야 한다. GNU gzip과 같은 곳에서 사용된 전통적인 무손실 압축 알고리즘은 압축 관련 작업을 위해 엔트로피 기반의 매핑 테이블(mapping table)과 룩업 테이블(look-up table)을 사용하기 때문에 계산과 메모리 접근 측면에서 많은 비용이 든다. 따라서 이들은 디스크 기반의 색인에서는 유용하지만 주 메모리 기반의 색인에서는 적합하지 않다.
RMBR
간단한 압축 기법은 키를 노드 안의 상대적인 값으로 표현하는 것이다. MBR의 좌표가 부모 MBR의 왼쪽 아래 점을 기준으로 한 상대값으로 표현된다면 결과의 상대 좌표는 앞 부분에 많은 수의 0을 가진다. 이러한 0을 제거하고 제거된 0의 개 수를 기록하면 MBR의 크기를 효과적으로 줄이는 것이 가능하다.
정의 1. (Relative Representation of MBR or RMBR). PC를 왼쪽 아래와 오른쪽 위의 좌표 (xl, yl, xh, yh)로 표현되는 MBR이라고 하고 PC를 포함한다고 하자. 그러면 P를 기준으로 한 C의 상대적인 표현은 P 의 왼쪽 아래쪽 점의 기준으로 한 좌표를 갖는다.
RMBR P (C) = (C.xl P.xl, C.yl P.yl, C.xh P.xl, C.yh P.yl )
그러나, 다음의 간단한 분석은 이 RMBR 기술이 단지 MBR 당 32 비트만을 줄임을 보인다. 간단함을 위해, MBR의 좌표가 도메인 상에서 균일 분포를 하고 있다고 하고 같은 높이의 R-트리 노드가 거의 같은 크기의 정사각형 모양의 MBR을 가지고 있다고 가정한다. 보편성을 유지하면서 x 좌표의 도메인이 단위 길이가 있고 균등하게 떨어져 있는 232개의 다른 값을 갖는다고 하자. f를 단말 노드의 평균 팬아웃이라고 하고, N을 자료 객체의 총 개수라고 하자. 그러면 면적이 f/N이고 각각의 축 방향의 길이가
Figure 112001004608744-pat00013
인 단말 노드가 대략 N/f 개 있다. 각각의 축 방향으로 단위 간격 당 232개의 다른 값이 있기 때문에
Figure 112001004608744-pat00014
의 길이에는 232
Figure 112001004608744-pat00015
개의 서로 다른 값이 존재한다. 그러므로 각각의 x축 값에 대하여 32log2
Figure 112001004608744-pat00016
(232
Figure 112001004608744-pat00017
)비트 또는
Figure 112001004608744-pat00018
비트를 줄이는 것이 가능하다. N이 일백만이고 f가 11일 경우 대략 8.2비트가 줄어든다. 4를 곱하면 MBR 당 거의 32비트를 줄이는 것이 가능하다. 다만 줄어드는 비트 개수가 원래의 비트 개수보다 작은 한, 줄어드는 비트 개수는 원래 의 비트 개수에 영향을 받지 않는다.
이러한 분석 결과를 바탕으로 차원에 따라 줄어드는 비트 개수를 쉽게 매개 변수화 할 수 있다. 확장된 결과는
Figure 112001004608744-pat00019
또는
Figure 112001004608744-pat00020
(1)
이다. 식 (1)은 N에 대해 로그 급수적으로 증가하고 f에 대해 로그 급수적으로 감소하지만 d에 대해서는 선형으로 감소한다. 그러므로 줄어드는 비트의 개수는 주로 차원에 의해 좌우된다고 볼 수 있다. 1차원의 경우, 상대 좌표를 사용하여 표현하는 기술은 거의 16비트를 줄일 수 있지만 차원이 증가함에 따라 그 효용성이 감소한다.
QRMBR
RMBR 기술 하나만으로는 충분한 압축율를 얻을 수 없기 때문에 양자화 단계를 통한 정제가 시행된다. RMBR 기술이 MBR의 별로 필요치 않은 앞부분의 비트를 제거하는 반면 이 단계는 RMBR의 뒤쪽의 별로 중요치 않은 비트를 제거한다. QRMBR을 정의한 후 RMBR을 양자화하는 것이 색인 검색의 정확성을 떨어뜨리지 않으며, 양자화에 따른 속도 상의 불이익이 캐쉬 실패의 감소에 의해 충분히 보상될 수 있음을 보일 것이다.
정의 2. QRMBR(Quantized Relative Representation of MBR). I를 참조 MBR이라고 하고 l을 요구되는 양자화 수준이라고 하자. 그러면 그에 따른 MBR C의 양자화된 상대좌표를 사용한 표현은 다음과 같다.
Figure 112001004608744-pat00021
단,
Figure 112001004608744-pat00022
이고
Figure 112001004608744-pat00023
Figure 112001004608744-pat00024
Figure 112001004608744-pat00025
계산 시간(Computational Cost). 레마(Lemma) 1은 QRMBR이 앞에서 언급한 MBR이 가져야 할 두 가지 특성 중 첫번째를 만족시킴을 보인다. 그러므로 QRMBR 기술의 계산 상의 불이익은 각각의 방문하는 노드마다 질의 사각형을 QRMBR로 압축하는 데 있다. 현재의 구현 상에서는 MBR을 QRMBR로 압축하는 데 약 60개의 명령어를 수행한다. 이는 파이프라이닝 덕분에 400MHz 프로세서에서 약 120 ns 이하의 시간을 소요한다. 게다가 MBR을 질의하고 바로 읽혀진 노드의 MBR이 캐쉬되는 한 더 이상의 메모리 접근이 일어나지 않는다.
Lemma 1. AB를 MBR이라고 한다. 임의의 MBR I과 정수 l에 대해 QRMBR I,l (A)와 QRMBR I,l (B)가 겹치지 않으면 AB 또한 겹치지 않는다.
Proof.
AB가 겹치면, QRMBR I,l (A)와 QRMBR I,l (B )가 겹친다는 명제의 대우이다. 정의에 의해 두 개의 사각형은 최소 하나의 점을 공유할 때만 겹친다. 즉 AB는 최 소한 한 개의 점을 공유한다. (x, y)을 이 점이라고 하자. 그러면 다음이 성립한다.
Figure 112001004608744-pat00026
간단히 하기 위해 a, b, l이 양자화 함수 phi와 PHI로부터 생략되었다. phi와 PHI가 단조 증가 함수이고 임의의 r IN R에 phi(r) = PHI(r)대해 이므로
Figure 112001004608744-pat00027
그러므로 QRMBR I,l (A)와 QRMBR I,l (B)는 최소한 한 점 ( phi(x), phi(y) )을 공유한다. 즉 이들은 겹치고 명제가 증명되었다.
정확성(Correctness). 일반적으로 MBR을 그것의 QRMBR로부터 복구하는 것은 가능하지 않기 때문에 두 개의 MBR 사이의 겹침 관계 잘못 정할 가능성이 있다. 다행히도 레마 1에서 실제로 겹치는 두 개의 MBR이 겹치지 않는다고 할 가능성이 없음을 증명하였다. 즉 QRMBR 기술은 객체가 질의를 만족하다고 하는 실수를 범하지 않는다.
그러나 실제로 겹치지 않는 두개의MBR이 겹친다고 할 가능성은 아직 있다. 이는 색인 검색의 결과가 추후에 정제 단계를 거쳐야 하는 적중 오류(false hit)를 포함할 수 있음을 의미한다. 이 정제 단계는 MBR이 객체의 정확한 키가 아닌 경우가 종종 있기 때문에 대부분의 다차원 색인 구조에서도 필요하다. 따라서 정제 단계 자체가 필요한 것 자체가 불이익은 아니다. 그러나 적중 오류의 개수는 그럴 수 있다. 적중 오류의 개수는 양자화 수준을 적절히 선택함으로써 대부분의 경우 1 이 하로 무시할 만큼 작게 줄일 수 있다.
CR-트리
알고리즘
도 3 내지 도 9는 CR-트리와 관련된 여러 알고리즘을 보여준다.
CR-트리와 다른 R-트리의 알고리즘 상의 차이점은 다음과 같다. CR-트리는 노드 안에 QRMBR을 저장하고 MBR이 커지거나 작아질 때 그것을 수정한다.
검색
검색 알고리즘은 다른 R-트리 변형에 쓰이는 것과 비슷하다. 유일한 차이점은 CR-트리는 질의 사각형을 비교하기 위해 노드 상의 QRMBR을 필요로 한다는 것이다. QRMBR로부터 MBR을 복구하는 대신 CR-트리는 질의 사각형을 참조 MBR로서 각각의 노드의 MBR을 사용하여 그에 맞는 QRMBR로 변환한다. 그리고 나서 그것들이 겹치는지 결정하기 위햇 두 QRMBR을 비교한다.
알고리즘 검색. 주어진 CR-트리와 질의 사각형 Q에서, QRMBR이 Q와 겹치는 모든 색인 레코드를 찾는다.
1. 초기에 비어 있는 스택 S에 루트 노드를 넣는다.
2. S가 비어 있으면 중단한다.
3. S에서 노드 N을 뽑고, R을 QRMBR N.MBR,l (Q)으로 한다.
4. N이 단말 노드가 아니면, E.QRMBRR과 겹치는지 결정하기 위하여 각각의 엔트리 E를 확인한다. 만약 그렇다면 E.ptrS에 넣는다.
5. N이 단말 노드이면 E.QRMBRR과 겹치는지 결정하기 위하여 모든 엔트리 E를 확인한다. 만약 그렇다면 E.ptr 을 결과 셋에 추가한다.
6. 2단계부터 반복한다.
삽입(Insert)
새로운 객체를 삽입하기 위하여 CR-트리는 객체 MBR을 포함하기 위한 확장이 가장 작은 자식 노드를 선택하여 루트로부터 그것을 내린다. 자식 중 하나를 선택하기 위해 내부 노드를 방문할 때 객체 MBR이 참조 MBR으로서 노드의 MBR을 사용하여 QRMGR로 먼저 변환된다. 그리고 나서 그 객체의 색인 엔트리가 노드 안에 생성된다. 노드의 MBR이 조정되었다면 노드 안의 QRMBR도 참조 MBR이 변하였기 때문에 재계산된다. 노드에서 오버플로우가 일어나면 분리가 일어나고 그 분리는 자식 노드로 전해진다.
알고리즘 삽입(Algorithm Insert). MBR이 C인 새로운 객체 OChoose단말과 AdjustTree를 불러서 삽입한다. SplitNodeAdjustTree알고리즘은 필요한 경우 불려진다. 이 알고리즘은 다른 R-트리 변형들의 그것과 같다.
알고리즘 단말노드 선택(Algorithm Choose단말). 루트로부터 내려온 새로운 MBR C에 위치할 단말 노드를 선택한다. 이 알고리즘은 다른 R-트리 변형들의 그것과 같다.
알고리즘 설치(Algorithm Install). 한 쌍의MBR C와 객체 포인터 p를 노드 N에 설치한다.
7. N.MBR을 C를 포함하도록 확대한다.
8. (QRMBR N.MBR,l (C), p)의 엔트리를 생성하고 그것을 N에 적용한다.
9. N.MBR이 확대되었다면 실제 MBR을 접근함으로써 N 안의 모든 QRMBR을 재계산하고 N을 넘겨주면서 AdjustTree를 수행한다.
알고리즘 노드 분리(Algorithm SplitNode). CR-트리는 R-트리와 R*-트리를 포함한 다른R-트리 변형들에 쓰이는 분리 알고리즘을 사용할 수 있다. 이 실험에서는 원형의 R-트리에 쓰인 선형의 분리 알고리즘을 사용하였다. 노드가 두 개로 분리된 후 노드의QRMBR은 그 MBR에 따라 재계산될 필요가 있다.
알고리즘 트리 조정(Algorithm AdjustTree). 단말 노드 L부터 루트로 올라가면서 노드의 MBR을 조정하고 필요한 경우노드 분리를 전파한다. 노드가 조정되었을 때 노드의 QRMBR을 재계산한다.
삭제(Deletion)
알고리즘 삭제(Algorithm Delete). CR-트리에서 레코드 E를 삭제한다. CR-트리는 R-트리와 R*-트리에서 사용된 어떤 삭제 알고리즘도 사용할 수 있다. 그러나 삭제(Delete)알고리즘와 관련된 트리압축(CondenseTree) 알고리즘은 약간의 수정이 필요하다.
알고리즘 트리압축(Algorithm CondenseTree). 엔트리가 삭제된 단말 노드 L에서 너무 적은 엔트리가 들어있으면 그것을 제거하고 그 안의 엔트리들을 재배치한다. 필요한 경우 노드 제거를 트리 위쪽으로 지속한다. 루트로 향하는 경로의 모든 MBR을 가능하다면 크기를 줄이면서 조정한다. 노드의 MBR이 조정되었을 때 노드 의 QRMBR을 재계산한다. 이 마지막 단계는 다른 R-트리 변형들과 다른 부분이다.
대량 적재(Bulk Loading)
CR-트리의 대량 적재는 다른 R-트리 변형들과 차이가 없다. QRMBR이 제대로 관리되는 한, 존재하는 아래부터 적재하는(bottom-up) 알고리즘이 그대로 사용될 수 있다.
CR-트리의 변형과 공간 비교
본 발명은 또한 CR-트리의 세 가지 변형들도 다룬다. PE (pointer- eliminated) CR-트리, the SE (space-efficient) CR-트리, and the FF (false-hit free) CR-트리가 그것이다. 도 10a 내지 10c는 세 가지 변형들에 의한 CR-트리 자료 구조의 변화를 요약한다.
첫번째 변형은 CSB+-트리가 그랬던 것처럼 내부 노드에 자식 노드로 향하는 대부분의 포인터를 제거한 것이다. PE CR-트리라고 불리는 이 확장판은 R-트리와 달리 CR-트리의 키의 크기가 작기 때문에 트리의 폭을 크게 넓힐 수 있다. 예를 들어 QRMBR의 크기가 4 바이트일 때 이 확장판은 내부 노드의 팬아웃을 두 배로 늘린다. 그러나 이 확장판이 굉장한 것처럼 보일지도 모르지만, 단말 노드의 자료 객체로 향하는 포인터들이 거의 제거되지 않기 때문에 대부분의 경우에 단지 적은 양의 성능 향상만을 가져온다. 내부 노드와 단말 노드의 평균 팬아웃이 10 일 때 내부 노드의 개수는 단말 노드의 그것의 약 9분의1 정도이다. 그러므로 전체 팬아웃의 증가는 약 10% 뿐이다. 한편, 포인터 제거 기술이 같은 부모를 갖는 자식 노드들을 함께 저장함으로써 가능하기 때문에 노드를 분리하는 것은 비용이 많이 소요되 는 작업이다. 분리에 의해 새로 생성된 노드는 그 사촌들과 연속적으로 저장되어야 하고 이는 새로운 공간을 할당하고 사촌들을 그 공간으로 이동해야 하는 작업을 필요로 한다.
두번째 확장판은 PE CR-트리의 노드의 참조 MBR을 제거하는 것이다. 이것은 노드의 참조 MBR이 그 부모 노드의 상관된 엔트리로부터 얻을 우 있기 때문에 가능하다. SE CR-트리라고 불리는 이 확장판은 MBR 크기가 16 바이트이고 QRMBR크기가 4 바이트일 때 내부 노드의 팬아웃을 4배, 단말 노드의 팬아웃을 2배 증가시킨다. 이만큼의 증가는 노드의 크기가 한 두개의 캐쉬 블록 만큼 작을 때 PE CR-트리에서 얻을 수 있는 것보다 큰 것이다.
위의 두 확장판이 팬아웃을 증가시키는 반면 CR-트리의 세번째 확장판은 단말 노드의 팬아웃을 감소시킨다. QRMBR 기술은 손실 압축 기법이기 때문에 검색 결과는 주어진 질의에 대한 실제 결과의 상위 셋인 경우가 생긴다. 이 현상은 만약 QRMBR 기술이 내부 노드에만 적용되고 단말 노드에는 실제의 MBR을 저장할 경우에는 사라진다. FF CR-트리라고 불리는 이 확장판은 추후의 정제 단계가 극도로 많은 비용이 들어갈 때 유용하다. 예를 들어 관할 지역의 복잡한 경계 다각형들이 그것의 MBR에 의해 색인될 때 주어진 질의 형태와 색인을 검색해서 얻는 실제 객체의 형태와 비교하는 정제 단계는 비용이 많이 든다.
표 1은 모든 노드가 70% 차 있다고 가정할 때 본 발명 특허에서 사용된 다양한 색인 구조의 공간 요구 사항을 나타낸다. PE R-트리는 포인터 제거 기술을 적용한 R-트리의 확장판이다. MBR의 크기는 16 바이트이고 QRMBR의 크기는 4 바이트라 고 가정한다. 내부 노드의 공간은 단말 노드의 공간을 내부 노드의 평균 팬아웃보다 1 작은 값으로 나누어서 계산한다. 이 분석은 공간 요구 면에서 PE CR-트리가 CR-트리와 별로 큰 차이가 없으며 PE R-트리가 R-트리와 다르지 않음을 보인다.
Figure 112001004608744-pat00028
테이블 1: 공간 분석 (N: 단말 노드 엔트리의 개수, S: 바이트 단위의 노드 크기; N=1,000,000이고 S=128일 때 전형적인 크기)
분석(Analysis)
다음은 분석에서 가정되는 것들이다. 매스메티카(Mathematica) 3.0 이 분석 결과를 시각적으로 비교하기 위해 필요한 수치 계산을 수행하기 위해 사용되었다.
가정(Assumption). 보편성을 유지하기 위해 사각형을 단위로 하는 도메인의 자료를 가정한다. 간략화해서, 자료 객채들은 그 도메인 상에서 균일 분포를 하고, 질의 MBR은 사각형이라고 가정한다. 더 나아가서 다른 분석에서와 마찬가지로 같은 높이에 있는 R-트리 노드는 거의 같은 크기를 작은 사각형 MBR을 갖는다고 가정한다.
접근된 노드의 개수(Number of Accessed Nodes). 단말 노드의 높이가 1이라고 할 때 노드의 높이를 h라고 하자. M h 를 높이가 h인 노드의 개수하고 하면 위의 가정으로부터
Figure 112001004608744-pat00029
이다. a h 를 높이h의 노드가 포함할 수 있는 평균 영역이라고 하자. 그러면 a h 는 1/M h 이다. Minkowski의 합 기술을 사용하면 높이 h의 노드가 주어진 질의 사각형과 겹칠 확률은
Figure 112001004608744-pat00030
이다. 단 s는 질의 사각형의 크기이다. 따라서 질의 사각형과 겹치는 높이 h의 노드의 개수는 또는
Figure 112001004608744-pat00032
이다. 이 식을 단말 노드부터 루트까지 합해서 구한 R-트리 상의 노드 접근 총 회수는 다음과 같다.
Figure 112001004608744-pat00033
(2)
한편 R-트리가 MBR를 비교하는 반면 CR-트리는 노드를 방문할지 안 할지를 결정하기 위해 QRMBR을 비교한다. QRMBR이 평균 양자화의 길이 정도 만큼 원래의 MBR보다 크기 때문에 노드 접근 회수는 CR-트리에서 약간 더 많다.
l을 양자화 수준이라고 하자. 그러면 각각의 노드는 l d 개의 양자화된 셀을 갖고 각각의 셀의 모서리 길이는 h를 노드의 높이라고 할 때
Figure 112001004608744-pat00034
이다. 자식 노드를 방문할지 안 할지 결정은 질의 사각형의 QRMGR과 자식 노드의 저장되어 있는 QRMBR을 비교해서 행해지기 때문에 자식 노드를 방문할 확률은
Figure 112001004608744-pat00035
이다. M h 을 곱하고 단말 노드부터 루트 노드까지 그 값을 합산해서 구한 CR-트리상에서의 노드 접근 총 회수는 다음과 같다.
Figure 112001004608744-pat00036
(3)
도 11a 내지 11b는 카디널리티가 일백만이고 질의의 선택성이 0.01%일 때 식(2)와 (3)을 비교한 것이다. 여기서 포인터의 크기는 4 바이트이고 각각의 노드는 70%가 차 있다고 가정한다. MBR 크기는 2차원 상에서 16 바이트이고 차원의 증가 따라 선형적으로 증가한다. QRMBR의 크기는 MBR 크기의4분의 1이다. 도 11에서 접근하는 노드의 개수는 노드 크기가 커짐에 따라 감소한다. 초기에는 그 감소 비율이 크지만 노드 크기가 커지면서 그 비율이 점점 작아진다. 모든 노드 크기와 3가지의 차원에 대하여 CR-트리는 R-트리를 두 배 이상 능가한다.
캐쉬 실패 회수(Number of Cache Misses)
캐쉬 실패 회수는 식(2)과 (3)에 한 번의 노드 접근이 일으키는 캐쉬 실패 회수를 곱하면 쉽게 구할 수 있다. 도 12a 내지 12b는 도 11와 같은 설정 하에서의 캐쉬 실패 회수를 분석한 것을 나타낸다. 이 도면에서 노드의 크기가 커질수록 캐쉬 실패 회수가 빠르게 최소치로 근접하고 나서 천천히 증가하고 있음을 볼 수 있다. 캐쉬 실패 관점에서 CR-트리는 거의 4.3배까지 R-트리보다 거의 4.3배만큼 높은 성능을 낸다. 이 도면을 얻기 위해 S를 바이트 단위의 노드 크기라 할 때, 식(2)d와 (3)에 S/64을 곱하였다.
도 12a는 일반적으로 노드 크기가 증가하는 동안 캐쉬 실패의 회수가 어떤 노드 크기에서 급격히 감소하는 톱니 모양의 패턴을 나타낸다. 이러한 모양은 트리의 높이가 점점 작아지면서 발생한다. 예를 들어 노드 크기가 448 바이트 혹은 512 바이트일 때4차원 R-트리의 높이는 7이지만 노드 크기가 576 바이트인 경우 트리의 높이가 6이 된다. 달리 말하면 이런 모양은 트리의 높이 감소로 얻는 이점이 노드 크기의 증가로 인한 손실을 압도할 때 생긴다.
캐쉬 실패 회수 측면에서 가장 최적의 1차원 노드 크기가 위에서 언급한 캐쉬 블록 크기이지만 도 12는 앞서 예기한 것처럼 다차원의 경우에 이러한 노드 크기의 선택이 최적이 아니라는 것을 보여준다. 도 12는 질의의 선택성 변화에 따라 측정된 캐쉬 실패 회수를 비교하고 있다. 도를 보면 R-트리와 CR-트리 두 경우 모두 질의의 선택성이 증가함에 따라 최적의 노드 크기도 증가함을 알 수 있다. 도 13a는 선택성이 증가하면서 128, 192, 320, 640, 960 바이트의 순으로 최적의 노드 크기가 증가함을 보인다. 도 13b도 선택성이 증가하면서 최적의 노드 크기가 64, 128, 256, 320의 순으로 증가하는 것을 보인다. 최적의 노드 크기는 카디널리티와 차원이 증가함에 따라 같은 방법으로 증가한다.
양자화에 의한 적중 오류 비율(Ratio of False Hits By Quantization)
단말 노드의 각각의 양자화 셀은 f / l^d N의 영역을 지니고 모서리는 축 방향을 따라서
Figure 112001004608744-pat00037
의 길이를 갖으며 질의 MBR의 QRMBR과 객체 MBR이 겹치는 확률은
Figure 112001004608744-pat00038
이다.
그러므로 적중 오류가 발생할 확률은
Figure 112001004608744-pat00039
이다.
Figure 112001004608744-pat00040
으로 나누면 양자화로 인한 적중 오류의 비율의 정확한 답이 다음과 같이 나온다.
Figure 112001004608744-pat00041
(4)
도 14a 내지 14b는 카디널리티가 일백만이고 질의의 선택성이 0.01%일 때의 식(4)을 비교한 것이다. 여기서 포인터의 크기는 4 바이트이고 각각의 노드는 70% 정도가 차 있다고 가정한다. 도 14a는 2차원 CR-트리 상에서 2, 4, 8 바이트의 세 가지 다른 QRMBR 크기에 따른 적중 오류 비율의 경향을 보이고 도 14b는 세 가지 다른 차원에서 적중 오류 비율을 나타낸다. 적중 오류 비율은 노드 크기와 차원 모두가 증가함에 따라 같이 증가한다. 4바이트의 QRMBR을 사용했기 때문에 이 설정에서는 한 번의 적중 오류가 일어난다. 그러나 도 11에서 보는 바처럼 여기서는 10번 내지 100번의 캐쉬 실패가 줄어든다.
실험 평가(Experimental Evaluation)
제안된 CR-트리와 그 변형들의 장점을 검증하기 위해 SUN의 울트라스팍(8MB L2 캐쉬의400MHz CPU) 환경의 솔라리스 2.7 하에서 몇 가지 실험이 수행되었다.
원형의 R-트리, CR-트리, PE CR-트리, SE CR-트리, FF CR-트리의 6개 색인 구조가 구현되었다. 대략 적재 알고리즘 또한 구현되었다. 노드의 크기는 64바이트부터 1024바이트까지 변한다. 16바이트 MBR이 사용되었고 QRMBR의 크기는 2바이트에서 8바이트까지 변한다. 특별히 언급이 없으면 기본으로 QRMBR의 크기는 4바이트이고 노드들은 70% 가 차 있다.
종합적인 자료 셋이 일백만 개의 작은 사각형들이 단위 사각형 위에 위치하게 하여 구성되었다. 하나는 단위 사각형에 균일하게 분포하고 다른 나머지들은 (0.5, 0.5) 가운데 점에서 0.25의 편차로 가우시언 분포를 한다. 사각형의 평균 모서리 길이는 0.001로 정하였다.
검색 성능(Search Performance)
첫번째 실험에서는 2차원 평면 질의를 처리할 때 소요되는 시간을 측정하여 검색 성능을 비교하였다. 중심점이 균일 분포를 이루는 같은 크기의10,000개의 다른 질의 사각형이 생성되었다. 질의 사각형의 크기는 자료 공간의 0.01%부터 1%까지 변화한다. 자료 공간이 단위 사각형이므로 질의의 선택성은 질의 사각형의 크기와 대략 같다.
도 15a 내지 15b는 노드가 70% 차 있는 균일 분포 자료로 대량 적재된 여러 가지 색인을 검색하는 데 걸린 시간을 나타낸다. 도에서 다음과 같은 점을 확인할 수 있다.
1. 노드의 크기가 커질수록 검색 시간은 빠르게 최소값으로 접근한다. 최소 값이 지난 후에 검색 시간은 천천히 증가한다. 선택성이 증가하면 최소 점은 오른쪽으로 이동한다. 이 경향은 6개의 모든 트리에서도 유지되고, 분석의 결과와도 일치한다.
2. CR-트리, PE CR-트리, SE CR-트리가 가장 빠른 무리에 속한다. R-트리와 PE R-트리가 가장 느린 편이다. FF CR-트리는 두 무리의 중간에 위치한다.
3. SE CR-트리가 CR-트리와 PE CR-트리 둘보다 폭이 더 넓지만, 성능은 좋지 않다. 그것은 SE CR-트리가 부모 노드의 엔트리로부터 참조 MBR을 계산해내야 하기 때문이다. 현재의 구현에서는 이 계산이 40개의 CPU 명령어와 16바이트의 메모리 수정을 수반하는 작업이다.
도 16a 내지 16b는 편중된 자료로 대량 적재된 색인을 검색하는데 걸린 시간을 나타낸다. 도 14와 비교하여 특별한 차이점이 없다. 달리 말하여 모든 6개의 트리가 어떠한 노드 크기에 대해서도 자료의 편중에 큰 영향을 받지 않는다.
도 17a 내지 17b는 카디널리티에 따라 CR-트리가 비례한다는 것을 나타낸다. 이 실험에서 질의 사각형의 크기는 검색되는 객체의 개수가 비슷하게 유지하기 위하여 카디널리티의 역수로 정하였다.
갱신 성능(Update Performance)
갱신 성능을 측정하기 위하여 100만 개의 균일한 자료로 대량 적재된 트리에 10만개의 객체가 삽입된 후에 무작위로 선택된 10만개의 객체가 삭제되었다.
도 18a 내지 18b는 삽입과 삭제를 하는 데 걸린 시간을 각각 측정한 것이다. 주어진 노드 크기에서 CR-트리는 삽입 시에 R-트리보다 16% 정도 더 많은 시간을 소비한다. 그렇지만 팬아웃이 같은 경우(예을 들어 256바이트의 노드 크기의CR-트리와 640 바이트의 노드 크기의 R-트리), CR-트리가 R-트리보다 비슷하거나 더 좋은 성능을 낸다. 이는 다음과 같은 방법으로 설명된다.
삽입을 위해 트리를 따라 아래로 내려갈 때 최소한으로 확대된 자식 노드가 선택된다. 현재의 구현 상에서 확대 작업은 약 30개의 CPU 명령어를 소비하기 때문에 CR-트리와 그 변형에서는 캐쉬 실패보다 더 많은 비용이 드는 작업이다. 한 개의 캐쉬 블록은 CR-트리 상의 5.6개의 QRMGR이 들어갈 수 있으므로 400MHz 울트라 스팍 II 에서 확대 작업의 계산 비용은 한 개의 캐쉬 블록 당 168 개의명령어가 소요되지만 캐쉬 실패는 80~100번의 CPU 계산 주기를 소요할 뿐이다. 또한 삽입은 각각의 높이마다 하나의 노드만을 접근하므로 접근하는 노드의 개수는 팬아웃에 대해 로그 급수적으로 감소하지만, 확대 작업 계산의 회수는 팬아웃에 대해 선형적으로 증가한다. 즉 확대 작업 계산의 총 회수는 팬아웃에 따라 증가하는 것이다.
PE R-트리는 팬아웃이 25% 이하로 약간 증가했기 때문에 R-트리보다 조금 성능이 나쁘다. CR-트리의 팬아웃은 R-트리의 그것보다 150% 더 크기 때문에 주어진 노드 크기에서 R-트리보다는 성능이 나쁘다. PE CR-트리의 팬아웃은 R-트리의 그것보다 400% 더 크기 때문에 주어진 노드 크기에서 R-트리보다 성능이 크게 나쁘다. 한편으로 팬아웃이 같을 때는 캐쉬 실패를 얼마만큼 줄이는가와 MBR이 커지거나 작아질 때 QRMBR을 갱신하는 비용에 따라서 CR-트리의 순위가 결정된다.
도 18b는 트리 간의 우열이 삽입의 경우와 삭제의 경우가 약간 다름을 보여준다. 삭제는 매우 높은 선택성을 지닌 검색과 노드의 갱신의 조합이다. 도 15에서 예상한 바처럼 CR-트리는 선택성이 감소하면서 R-트리와 비슷한 성능을 낸다. 그런데 노드의 갱신은 노드 크기가 커질수록QRMBR을 갱신하는 비용이 커지기 때문에 점점 비용이 많이 소요된다. 그러므로 CR-트리는 노드 크기가 작을 때는 R-트리보다 좋은 성능을 내지만 노드 크기가 증가하면서 그 관계는 역전된다.
도 19a 내지 19b는 삽입과 삭제 후의 검색 시간을 나타낸다. 이 실험은 삽입과 삭제가 트리의 특성을 영향을 미치는지 알아보기 위해 수행하였다. 결과는 도 15와 비슷하다. 즉 이 트리는 동적인 삽입과 삭제에 별로 영향을 받지 않는다.
양자화 수준의 영향(Impact of Quantization Levels)
양자화 수준의 영향을 확인하기 위해 양자화로 야기되는 적중 오류 비율, MBR 크기에 따른 양자화 오류, 24, 28, 216의 3가지 다른 양자화 수준에 따른 검색 시간을 측정하였다. 이는 2, 4, 8바이트의 QRMBR과 일치한다. 이 실험에서는100만개의 균일한 자료로 대량 적재된 트리가 사용되었다.
도 20a 내지 20c는 양자화 수준의 변화에 따른 적중 오류 비율을 측정한 것이다. 앞에서 적중 오류 비율은 로 계산하였다. 이 비율은 노드의 팬 아웃에 따라 증가하고 양자화 수준과 선택성가 증가하면 감소한다. 이 도면은 이러한 분석 결과와 부합한다. 16비트로 양자화할 때 검색 결과는 질의의 정확한 결과와 거의 일치한다. 8비트로 양자화할 때 검색 결과는 질의의 정확한 결과와 비교하여 최대1%의 영역을 더 포함한다. 4비트로 양자화하는 것은 질의의 선택성이 높을 때만 사용될 수 있다.
도 21a 내지 21b는 양자화 수준의 변화에 따른 MBR 크기의 증가를 측정한 것이다. 앞에서 단말 노드의 경우 양자화 셀의 크기는 대략 f/(l 2 N)이고 좌표 축에 따라 셀의 길이만큼 QRMBR이 MBR을 확장한다고 분석하였다. 따라서 QRMBR의 크기는 팬아웃이나 노드 크기에 따라 증가하고 양자화 수준의 증가에 따라 감소한다. 이 도면은 그 분석 결과와 부합한다. 16비트로 양자화되었을 때 MBR의 크기는 0.01% 미만 정도 증가한다. 8비트롤 양자화되었을 때는 MBR의 크기가 노드의 크기에 따라1~7% 정도 증가한다. 그러나 이는 도 20의 검색 결과의 크기에 따른 증가의 양과 같지는 않다.
도 22a 내지 22c는 양자화 변화에 따른 검색 시간을 측정한 것이다. 이 도면은 과도한 양자화는 질의의 선택성이 낮고 노드의 크기가 클 때 검색 시간이 증가함을 보여준다. 이는 적중 오류가 너무 크기 때문이다. 요약하면 질의의 선택성과 카디널리티가 증가할 때 더 적은 수의 비트로 양자화하는 것은 가능하지만 노드의 크기도 증가할 때는 좀 더 많은 수의 비트로 양자화하는 것이 좋다.
검색 성능의 분석(Breakdown of Search Performance)
이 실험에서 사용된 색인의 검색 성능을 더 확실히 이해하기 위하여 현재의 실험에서 도 15에서 접근한 색인 자료의 양, L2 캐쉬 실패의 회수, 키 비교의 회수를 측정하였다.
도 23a 내지 23b는 초기에 어떤 색인 자료도 캐쉬되어 있지 않거나 캐쉬 실패가 가장 빈번할 때에 접근하는 색인 자료의 양을 나타낸다. 캐쉬 실패가 가장 많 이 일어날 때는 6개의 트리가 팬아웃의 순 그대로 SE CR-트리, PE CR-트리, CR-트리, FF CR-트리, PE R 트리, R-트리 이렇게 명확하게 성능의 순위가 정해진다. 도 15처럼 앞의 세 개가 한 무리를 형성하고 뒤의 두 개가 한 무리를 형성한다. 이 결과는 도 11의 경향과 일치한다.
도 24a 내기 24b는 Perfmon프로그램을 사용하여 측정한 L2 캐쉬 실패 회수를 보여준다. 울트라 스팍 프로세서는 프로세서 이벤트를 측정하기 위해 두 개의 레지스터 카운터를 제공한다. Perfmon 프로그램은 이 레지스터들을 L2 캐쉬 실패 회수를 저장하도록 하고 그곳에 저장된 값을 읽어 들이기 위해 사용되었다. L2 캐쉬 실패 회수는 명령어의 캐쉬 적중과 실패 때문에 적근한 색인 자료의 양과 약간 다르다. 명령어 때문에 발생하는 L2 캐쉬 실패는 노드 크기와 선택성이 작을 때 왜 측정된 캐쉬 실패의 회수가 도 23의 가장 나쁜 경우의 캐쉬 실패보다 더 큰지에 대한 답을 제시한다.
도 24a 내지 24b에서 볼 수 있는 또 다른 것은 노드 크기의 증가에 따라 캐쉬 적중 비율이 증가한다는 것이다. 이는 프로세서의 캐쉬의 교체 정책으로 설명할 수 있다. 메모리 블록은 캐쉬 블록으로 순환하여 대응되기 때문에 (예를 들어 물리적 주소를 캐쉬 크기로 나눈 나머지) 캐쉬된 메모리 블록은 연속의 메모리 블록으로 교체되지 않는다. 노드 크기가 증가할수록 연속적인 메모리 블록을 접근하는 비율은 증가하고 그에 따라 캐쉬 적중률도 증가한다.
도 25a 내지 25b는 키 비교 회수를 측정한 것이다. 캐쉬 실패 회수와 비교해 볼 때 QRMBR 기술은 키 비교 회수를 줄이지 않고 약간 늘린다. 두 개의 MBR 사이에 겹침을 비교하는 것은 현재 구현 상에서 10개의 명령어 미만이 소요되므로 L2 캐쉬 실패를 줄이는 것은10번 겹침을 확인하는 작업을 줄이는 가치가 있다. R-트리와 PE R-트리는 비슷한 팬아웃을 가지므로 한 무리를 이룬다. PE CR-트리와 SE CR-트리도 또한 비슷한 팬아웃을 가지므로 또 다른 무리를 이룬다.
CR-트리의 사용(Deploying CR-trees)
CR-트리를 실제 데이터베이스에서 사용할 때는 동시성 제어와 회복 기법을 같이 생각할 필요가 있다. 그 외에 본 발명에서 기반을 둔 프로세서와 메모리 간의 속도의 차이가 미래에는 바뀔 수도 있다.
동시성 제어(Concurrency Control)
CR-트리에 의한 성능 향상을 크게 유지하려면 그에 맞는 색인 동시성 제어 기법의 최적화가 필요하다.
기존의 해쉬에 기반을 두 lockunlock 작업은 주 메모리 데이터베이스에서는 너무 많은 비용이 들어가기 때문에 더 빠른 latch, unlatch작업이 제안되었다. 래치(latch) 자료 구조를 정적으로 할당하고 그것들을 해쉬 없이 바로 접근할 수 있도록 함으로써, latch, unlatch 작업은 약 100개의RISC 명령어에 해당하는 약 20개의 CISC (IBM 370) 명령어를 사용한다. 그러나 latch와 unlatch 작업은 CSB+-트리와 잘 알려진 lock coupling 기술이 하나의 노드에 락(lock)을 잡는데 겨우 40 프로세서 주기만을 소요하기 때문에 주 메모리 색인 트리의 동시성 제어 작업으로는 너무 비용이 크다.
1. Locking 작업 시에 추가적인 캐쉬 실패를 방지하기 위해 locking을 위한 자료 구조는 그에 맞는 색인 노드 안에서 유지될 필요가 있다. 이를 가능하게 하려면 그 자료 구조가 가능한 한 작아야 한다. 예를 들어 여기서는 각각의 노드에 단지 한 바이트만을 사용하고 있다.
2. lock conflict가 일어나도 대부분 10 내지 100 의 프로세서 주기만에 해결된다. 그러므로 수천개의 명령어가 소요되는 context switch가 발생하는 blocking보다는 spinning을 쓰는 것이 좋다
3. locking 작업을 보다 간단히 하는 것과 함께 locking 작업 회수를 줄이는 것도 필요하다. 이는 디렉토리 서버와 같은 검색이 집중적으로 일어나는 곳에서 유효하다. 예를 들어 실행 중에 갱신이 일어나지 않는다면 검색 작업이 전체 트리에 lock을 하게 하거나 versioning 기술을 사용하여 검색 작업이 아무 것도 lock을 하지 않게 하는 것이다.
회복(Recovery)
본 발명은 주로 검색 트랜잭션과 관련되어 있고 따라서 회복은 그 중요성에 별로 영향이 없다. 거꾸로 말하면 본 발명은 회복에 영향을 끼친다. 이 작업들이 색인의 크기를 거의 60% 정도로 줄이기 때문에 디스크 접근 시간을 줄임으로써 체크포인팅과 손상 후의 회복 수행을 더 빠르게 한다.
주 메모리 데이터베이스에서는 로깅과 가끔씩의 체크포인팅으로 트랙잭션의 영속성이 보장된다. 주 메모리 데이터베이스 상의 체크포인팅은 디스크 상에 메모리에 올려진 데이터베이스의 단편을 저장하는 것이다. 손상 후의 회복 수행 작업은 가장 최근의 단편을 읽어 들이고 그 체크포인팅 후에 생성된 로그 기록을 재 반영 하는 것이다. 그러므로 체크포인팅과 회복 시의 디스크 접근 시간이 색인의 크기가 줄어들면서 감소하는 것은 당연하다. 예를 들어 B+-트리에 비해 CSB+-트리의 디스크 접근 시간은 10% 작고, CR-트리의 경우는 R-트리의 경우보다 반 이하로 줄어든다.
다음 세대의 DRAM(Next Generation DRAM)
프로세서와 DRAM의 속도 차이가 지난 20년간 매년 50% 정도 벌어지지만 메모리의 속도도 1GHz 프로세서의 속도를 따라서 급격히 상승한다는 소식도 있다. 현재 존재하는 대부분의 서버가 EDO DRAM 모듈을 장착하고 있는 반면 최근의 서버는 100MHz 또는 그 이상의 속도를 내는 SDRAM(Synchronous DRAM)을 장착하고 있다. 미래에는 서버에 200~300 MHz로 동작하는 DDR SDRRAM (Double Data Rate Synchronous DRAM)과 600~800 MHz으리 속도로 동작하는 RDRAM (RambusDRAM)을 장착할 것이다.
그러나 도 26a 내지 26b에서 보는 바와 같이 그런 DRAM의 속도 향상은 순간적인 전송률이 집중되어 있고 대기 시간은 SDRAM부터 RDRAM 모두 변하지 않아왔다. 현재 100 또는 133MHz로 동작하는 DRAM 코어는 무작위 접근에 40~50 ns 정도로 반응하고 순차 접근에 20 ns 정도로 반응한다. SDRAM은 DRAM 코어를 4개의 뱅크로 나누고 접근 요구에 뱅크 별로 번갈아 응답하게 해서 전송률을 향상시킨다. DDR SDRAM은 클럭 신호가 올라가고 떨어지는 순간 두 경우 모두에 자료를 읽어 들여서 전송률을 두 배로 올린다. RDRAM은 SDRAM 처럼 DRAM 코어를 32개의 뱅크를 나누고 높은 질의 전송선과 다른 많은 기술을 사용하여 전송률을 다시 4배로 올린다.
그러므로 주 메모리 상의 색인 검색은 본질적으로 수많은 무작위 접근과 연 관되기 때문에 최근의 DRAM 기술의 향상은 별로 도움이 되지 못한다. 대신 새로운 형태의 DRAM은 많은 양의 자료에 순차적인 접근이 주가 되는 멀티미디어 응용 환경에서 프로세서와 메모리 사의 속도 차이를 줄일 것이다. 메모리를 무작위로 접근할 때 미래에는 각각의 L2 캐쉬 실패는 약 60ns 정도의 시간이 걸릴 것이다. 현재 실험에서 사용된 울트라 스팍 기반에서 240ns이 걸리는 것을 비교해 볼 때는 4배의 속도 향상이다 하지만 프로세서가 지난 20년간 매년 60%의 속도향상이 있어왔음을 볼 때 같은 정도의 속도 향상이 이루어질 것임을 예상할 수 있다. 따라서 이 내용은 최소한 DDR SDRAM과 RDRAM이 대중화될 때까지는 유효할 것이다.
다차원 색인의 필요성은 현재의 업무와 과학연구 환경에서 계속 대두되어 왔다. 본 발명은 주 메모리 데이터베이스 환경에서 기존의 디스크 기반의 다차원 색인을 사용할 때 봉착하는 최적화 문제를 해결한다. 색인 검색 시간을 최소화하기 위해 접근하는 색인 자료의 양을 줄이는 것이 필요함이 밝혀졌다. 이것은 접근하는 노드의 개수를 최소로 하는 디스크 기반의 색인의 목표와는 약간 다르다. 이 차이점은 하나의 노드 당 디스크 접근 시간이 노드의 크기에는 관계가 없고 노드 당 메모리 접근 시간이 노드의 크기에 비례하기 때문에 발생한다.
접근하는 색인 자료의 양을 줄이기 위해 본 발명은 MBR의 양자화된 상대적 표현 또는 QRMBR이라고 불리는 MBR 압축 기법을 제안한다. 이 기법을 사용하여 CR-트리라고 불리는 R-트리의 변형과 CR-트리의 변형들이 설계하였다. 이에 대한 분석과 실험은 CR-트리와 그 변형들이 검색 시간에서 기존의 R-트리를 성능 상에서 압 도하고 60% 정도 더 적은 메모리를 사용한다는 것을 밝혔다. 도 22에서 보는 것처럼 분석 결과는 여기서 언급한 실험 결과와 부합한다.
상기에서는 본 발명의 바람직한 실시 예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구 범위에 기재된 본 발명의 사상 및 영역에서 벗어나지 않는 범위내에서 본 발명을 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (1)

  1. (a) 상대 좌표의 숫자의 앞 부분의 0을 제거하기 위하여 부모(parent) MBR(Minimum Bounding Rectangles)의 왼쪽 아래 좌표를 기준으로 하여 MBR 키를 상대 좌표로 변환하는 단계; 및
    (b) 상대 좌표의 숫자 뒷부분의 그다지 중요치 않은 비트를 제거하기 위하여 고정된 수의 비트로 양자화하는 단계로 구성되는 것을 특징으로 하는 주 메모리 데이터베이스에서 색인의 캐쉬 동작을 향상시키기 위한 압축 방법.
KR1020010010780A 2001-03-02 2001-03-02 주 메모리 데이터베이스의 다차원 색인 압축 방법 KR100726300B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020010010780A KR100726300B1 (ko) 2001-03-02 2001-03-02 주 메모리 데이터베이스의 다차원 색인 압축 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020010010780A KR100726300B1 (ko) 2001-03-02 2001-03-02 주 메모리 데이터베이스의 다차원 색인 압축 방법

Publications (2)

Publication Number Publication Date
KR20020071052A KR20020071052A (ko) 2002-09-12
KR100726300B1 true KR100726300B1 (ko) 2007-06-13

Family

ID=27696144

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020010010780A KR100726300B1 (ko) 2001-03-02 2001-03-02 주 메모리 데이터베이스의 다차원 색인 압축 방법

Country Status (1)

Country Link
KR (1) KR100726300B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101136925B1 (ko) * 2009-09-15 2012-04-20 건국대학교 산학협력단 위치 정보 관리 방법 및 장치
KR102664792B1 (ko) * 2021-10-08 2024-05-08 고려대학교 산학협력단 고속 질의 처리가 가능한 다차원 배열 압축 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980047127A (ko) * 1996-12-13 1998-09-15 윤덕용 Hg-트리 색인 구조 및 그의 삽입, 삭제, 검색 방법
JP2000357168A (ja) 1999-06-14 2000-12-26 Nippon Telegr & Teleph Corp <Ntt> 多次元空間検索における最小包囲領域作成方法、最小包囲球符号化方法、多次元空間データ構造、多次元空間データ更新方法および多次元空間データ探索方法と前記方法を実施するプログラムを記録した記録媒体および多次元空間データ構造を記録した記録媒体

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980047127A (ko) * 1996-12-13 1998-09-15 윤덕용 Hg-트리 색인 구조 및 그의 삽입, 삭제, 검색 방법
JP2000357168A (ja) 1999-06-14 2000-12-26 Nippon Telegr & Teleph Corp <Ntt> 多次元空間検索における最小包囲領域作成方法、最小包囲球符号化方法、多次元空間データ構造、多次元空間データ更新方法および多次元空間データ探索方法と前記方法を実施するプログラムを記録した記録媒体および多次元空間データ構造を記録した記録媒体

Also Published As

Publication number Publication date
KR20020071052A (ko) 2002-09-12

Similar Documents

Publication Publication Date Title
Zhang et al. Surf: Practical range query filtering with fast succinct tries
Ren et al. SlimDB: A space-efficient key-value storage engine for semi-sorted data
Raju et al. Pebblesdb: Building key-value stores using fragmented log-structured merge trees
US8589369B2 (en) Compression scheme for improving cache behavior in database systems
Zhang et al. Reducing the storage overhead of main-memory OLTP databases with hybrid indexes
Leis et al. The adaptive radix tree: ARTful indexing for main-memory databases
Lim et al. SILT: A memory-efficient, high-performance key-value store
CN112000846B (zh) 基于gpu分组lsm树索引的方法
US7499927B2 (en) Techniques for improving memory access patterns in tree-based data index structures
US10521117B2 (en) Unified table delta dictionary memory size and load time optimization
Amur et al. Design of a write-optimized data store
Zhang et al. Succinct range filters
Büttcher et al. Index compression is good, especially for random access
US10558636B2 (en) Index page with latch-free access
Kim et al. BoLT: Barrier-optimized lsm-tree
Wang et al. Rencoder: A space-time efficient range filter with local encoder
Ghanem et al. Bulk operations for space-partitioning trees
KR100726300B1 (ko) 주 메모리 데이터베이스의 다차원 색인 압축 방법
CN114415966B (zh) 一种kv ssd存储引擎的构建方法
Lang et al. The case for hybrid succinct data structures
Nguyen et al. B+ Hash Tree: Optimizing query execution times for on-Disk Semantic Web data structures
Krueger et al. Leveraging compression in in-memory databases
Zhang Towards Space-Efficient High-Performance In-Memory Search Structures
Wang et al. When Tree Meets Hash: Reducing Random Reads for Index Structures on Persistent Memories
Ravindran et al. Data structures for big data stores

Legal Events

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

Payment date: 20120529

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20130603

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee