KR101341507B1 - 수정된 b+트리 노드 검색 방법 및 장치 - Google Patents

수정된 b+트리 노드 검색 방법 및 장치 Download PDF

Info

Publication number
KR101341507B1
KR101341507B1 KR20120038734A KR20120038734A KR101341507B1 KR 101341507 B1 KR101341507 B1 KR 101341507B1 KR 20120038734 A KR20120038734 A KR 20120038734A KR 20120038734 A KR20120038734 A KR 20120038734A KR 101341507 B1 KR101341507 B1 KR 101341507B1
Authority
KR
South Korea
Prior art keywords
pointer
search
request
search range
setting
Prior art date
Application number
KR20120038734A
Other languages
English (en)
Other versions
KR20130115929A (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 KR20120038734A priority Critical patent/KR101341507B1/ko
Priority to PCT/KR2012/010299 priority patent/WO2013154247A1/ko
Priority to US13/881,337 priority patent/US20150120774A1/en
Publication of KR20130115929A publication Critical patent/KR20130115929A/ko
Application granted granted Critical
Publication of KR101341507B1 publication Critical patent/KR101341507B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • 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/24562Pointer or reference processing 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/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)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 사용자의 입력에 기초하여 적어도 하나 이상의 키 값(key value)이 포함된 검색 범위를 설정하는 단계, 설정된 검색 범위에 기초하여 자식 노드(child node)들을 검색하기 위한 포인터들로 구성된 포인터 세트를 생성하는 단계, 생성된 포인터 세트를 이용하여 병렬적으로 I/O 요청을 전송하는 단계 및 전송된 I/O 요청을 기초로 입력 요청에 대응되는 노드의 데이터를 검색하는 단계를 포함하는 수정된 B+트리 노드 검색 방법 및 장치를 제공한다.

Description

수정된 B+트리 노드 검색 방법 및 장치{MODIFIED SEARCHING METHOD AND APPARATUS FOR B+ TREE}
본 발명은 수정된 B+트리 노드 검색 방법 및 장치에 관한 것으로 보다 상세하게는, 메모리 칩 기반의 데이터 저장 장치에 있어서 입력 요청의 키 값에 대하여 소정의 범위를 가지는 I/O(입출력 Input/Output)을 전송하는 수정된 B+트리 노드 검색 방법 및 장치에 관한 것이다.
SSD는 반도체 플래시메모리상에 데이터를 영구 저장할 수 있도록 고안된 저장 장치로서, SSD는 실제로 동작하는 부품이 전혀 없기 때문에 기존의 하드디스크 드라이브와는 다르며, 집적회로를 디스크 드라이브처럼 구성한 반도체 메모리 배열을 가진다.
이러한 방식은 여러 가지 장점을 가지는데, 우선 데이터 전달속도가 기존의 하드디스크 드라이브에 비해 훨씬 빠르다. 탐색시간과 지연시간 역시 획기적으로 줄었으며, 대개의 사용자들은 컴퓨터 부팅시간 역시 매우 빨라진 것을 느낄 수 있다. 구동되거나 고장 날 부품 자체가 없기 때문에 내구성이 더 강해지고 더 조용해졌다.
그러나, 종래의 하드 디스크와 달리 플래시 메모리와 플래시SSD(Solid State Drive)는 데이터 베이스관리 시스템 (Database Management System : DBMS)에 적용하는데 있어 DBMS는 비대칭적인 읽기/쓰기 속도 및 반복되는 쓰기 요청에 따른 SSD의 사용 가능 기간의 단축이라는 문제점이 있다. 따라서, 이러한 문제점들에 대한 보완 기술들이 개발되어가고 있는 추세이며, DBMS등 다양한 분야에 대한 SSD의 활용이 증가하고 있는 추세이다.
본 발명은 플래시SSD의 내부 병렬성에 기초하여 다수의 I/O를 이용하여 B+트리의 노드를 검색함에 있어 시스템 자원을 초과하지 않도록 하는 검색 방법을 제공하고자 하는데 그 목적이 있다.
상술한 기술적 과제 해결을 위한 본 발명의 일 실시예는 사용자의 입력에 기초하여 적어도 하나 이상의 키 값(key value)이 포함된 검색 범위를 설정하는 단계; 상기 설정된 검색 범위에 기초하여 자식 노드(child node)들을 검색하기 위한 포인터들로 구성된 포인터 세트를 생성하는 단계; 상기 생성된 포인터 세트를 이용하여 병렬적으로 I/O 요청을 전송하는 단계; 및 상기 전송된 I/O 요청을 기초로 상기 입력 요청에 대응되는 노드의 데이터를 검색하는 단계를 포함하는 수정된 B+트리 노드 검색 방법을 제공하는 것을 특징으로 할 수 있다.
또한, 상기 검색 범위를 설정하는 단계는 사용자의 입력 요청에 기초한 적어도 하나 이상의 키 값에 대하여 상기 검색 범위의 시작값 및 상기 검색 범위의 종료값을 추출하는 단계; 및 상기 시작값과 상기 종료값을 가지는 검색 범위를 설정하는 단계를 포함하는 것을 특징으로 할 수 있다.
또한, 상기 포인터 세트를 생성하는 단계는 상기 설정된 검색 범위에 해당하는 키 값들을 추출하는 단계; 상기 추출된 키 값들과 관련된 자식 노드(child node)들을 검색할 수 있도록 연관된 포인터들을 추출하는 단계; 및 상기 추출한 연관된 포인터들을 가용 메모리 산출을 위해 설정된 I/O 파라미터 및 B+트리의 형태에 따라 포인터 세트를 설정하는 단계를 포함하는 것을 특징으로 할 수 있다.
바람직하게는, 상기 포인터 세트를 설정하는 단계는 검색을 수행하기 위하여 사용할 수 있는 최대 가용 메모리 사용량을 기초로 설정된 I/O 파라미터 와 검색을 하기 위한 노드들로 구성된 B+트리의 높이(height)에 기초한 지수를 곱연산하여 설정하는 것을 특징으로 할 수 있다.
또한, 상기 I/O 요청을 전송하는 단계는 상기 생성된 포인터 세트에 포함된 포인터를 이용하여 비동기화된(asynchronous) 적어도 하나 이상의 I/O 요청을 데이터 저장 장치에 동시에 전송하는 것을 특징으로 할 수 있다.
또한, 상기 노드의 데이터를 검색하는 단계는 깊이 우선 탐색(Depth First Search : DFS)를 이용하여 노드의 데이터를 검색하는 단계를 포함하는 것을 특징으로 할 수 있다.
상술한 기술적 과제 해결을 위한 본 발명의 다른 실시예는 사용자의 입력에 기초한 적어도 하나 이상의 키 값(key value)이 포함된 검색 범위를 설정하는 검색 범위 설정부; 상기 설정된 검색 범위에 기초하여 자식 노드(child node)들을 검색하기 위한 포인터들로 구성된 포인터 세트를 생성하는 포인터 세트 생성부; 상기 생성된 포인터 세트를 이용하여 병렬적으로 I/O 요청을 전송하는 I/O 요청 전송부; 및 상기 전송된 I/O 요청을 기초로 상기 입력 요청에 대응되는 노드의 데이터를 검색하는 데이터 검색부를 포함하는 수정된 B+트리 노드 검색 장치를 제공하는 것을 특징으로 할 수 있다.
본 발명에 따르면, 종래 기술보다 B+트리를 검색하는데 있어 검색 속도의 향상이 현저하게 발생하는 효과가 있다.
도 1은 플래시 SSD(Solid State Drive)의 내부 구조를 도시한 참고도이다
도 2a 및 도 2b는 플래시 SSD의 I/O 사이즈에 따라 랜덤 입출력(Read/Write)에 대한 지연 시간을 측정한 참고도이다.
도 3a 내지 도 3c는 아웃스탠딩(Outstanding) I/O 레벨에서의 입출력(Read/Write)에 대한 벤치마크 결과를 도시한 참고도이다.
도 4는 B+ 트리 구성을 위한 내부 노드 구조를 설명하기 위한 참고도이다.
도 5는 본 발명의 일 실시예에 따른 수정된 B+트리 노드 검색 방법을 도시한 순서도이다.
도 6은 본 발명의 일 실시예에 따른 수정된 B+트리 노드 검색 방법을 의사 코드(Pseudo Code)로 도시한 참고도이다.
도 7은 본 발명의 일 실시예에 따른 수정된 B+트리 노드 검색 장치에 관한 블럭도이다.
이하에서는 본 발명의 일부 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 아울러 본 발명을 설명함에 있어 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다.
이하의 실시예들은 본 발명의 구성요소들과 특징들을 소정 형태로 결합한 것들이다. 각 구성요소 또는 특징은 별도의 명시적 언급이 없는 한 선택적인 것으로 고려될 수 있다. 각 구성요소 또는 특징은 다른 구성요소나 특징과 결합하지 않은 형태로 실시될 수 있다. 또한, 일부 구성요소들 및/또는 특징들을 결합하여 본 발명의 실시예를 구성할 수도 있다. 본 발명의 실시예들에서 설명되는 동작들의 순서는 변경될 수 있다. 어느 실시예의 일부 구성이나 특징은 다른 실시예에 포함될 수 있고, 또는 다른 실시예의 대응하는 구성 또는 특징과 교체될 수 있다.
본 발명의 실시예들은 다양한 수단을 통해 구현될 수 있다. 예를 들어, 본 발명의 실시예들은 하드웨어, 펌웨어(firmware), 소프트웨어 또는 그것들의 결합 등에 의해 구현될 수 있다.
하드웨어에 의한 구현의 경우, 본 발명의 실시예들에 따른 방법은 하나 또는 그 이상의 ASICs(application specific integrated circuits), DSPs(digital signal processors), DSPDs(digital signal processing devices), PLDs(programmable logic devices), FPGAs(field programmable gate arrays), 프로세서, 콘트롤러, 마이크로 콘트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.
펌웨어나 소프트웨어에 의한 구현의 경우, 본 발명의 실시예들에 따른 방법은 이상에서 설명된 기능 또는 동작들을 수행하는 모듈, 절차 또는 함수 등의 형태로 구현될 수 있다. 소프트웨어 코드는 메모리 유닛에 저장되어 프로세서에 의해 구동될 수 있다. 상기 메모리 유닛은 상기 프로세서 내부 또는 외부에 위치하여, 이미 공지된 다양한 수단에 의해 상기 프로세서와 데이터를 주고 받을 수 있다.
이하의 설명에서 사용되는 특정(特定) 용어들은 본 발명의 이해를 돕기 위해서 제공된 것이며, 이러한 특정 용어의 사용은 본 발명의 기술적 사상을 벗어나지 않는 범위에서 다른 형태로 변경될 수 있다.
SSD(Solid State Drive 또는 Solid State Disk)는 마그네틱 디스크(magnetic disk)를 이용하지 않고 SDRAM(Synchronous DRAM)이나 플래시 메모리(flash memory)와 같은 메모리 칩을 이용하는 데이터 저장 장치이다. 본 발명의 실시예에서 데이터 저장 장치는 플래시 메모리 등의 메모리 칩을 기반으로 한다면 SSD 외 다른 것도 무방하다. 이하에서는 데이터 저장 장치의 예로 SSD를 들어 설명한다.
도 1은 플래시SSD의 내부 구성을 개략적으로 도시한 블록도이다. 도 1에 따르면, 플래시 SSD는 CPU부(101), 램(RAM)부(103), 호스트 인터페이스부(105), 버퍼 컨트롤 모듈(107), ECC(Error Correction Code) 모듈(109), 플래시 메모리 칩부(111)를 포함한다. 도 1을 참조하여 플래시 SSD의 내부 구성을 개략적으로 설명한다.
CPU부(101)가 데이터 쓰기 요청을 명령하면 외부 데이터 저장부로부터 데이터를 로드하여, 호스트 인터페이스부(105)를 거쳐 버퍼 컨트롤 모듈(107)로 전송된다. 호스트 인터페이스부(105)와 버퍼 컨트롤 모듈(107)은 적어도 1개의 채널 데이터 버스(113)을 통해 상호 연결된다. CPU부(101)는 CPU 버스(115)를 통해 호스트 인터페이스부(105), 버퍼 컨트롤 모듈(107)등에 연결된다. 플래시 메모리 칩부(111)는 요청된 데이터가 쓰여지며, 채널별로 분할된 데이터가 복수의 플래시 메모리 칩에 써진다.
도 2 및 도 3을 참조하여 플래시 SSD의 내부 병렬성으로 인한 차이에 대하여 설명한다. 플래시 SSD의 병렬성에 따른 성능을 벤치마크 하기 위하여, SATA II, SATA III와 같은 호스트 인터페이스 타입, 주요 SSD 컨트롤러 벤더(Intel, Fusion-io, SandForce, Marvell 등)의 컨트롤러들, 플래시 메모리 타입(SLC 50nm, SLC 35nm, MLC 35nm, MLC 25nm)의 플래시 SSD에 대하여 테스트를 실시하였다.
도 2a는 I/O 사이즈에 따라 랜덤 입력(Read)에 대한 지연 시간을 측정한 것을 설명한 참고도이며, 도 2b는 I/O 사이즈에 따라 랜덤 입력(Read)에 대한 지연 시간을 측정한 것을 설명한 참고도이다. I/O 크기가 2Kb에서 두 배씩 증가하도록 설정하여 측정된 것이다. 도 2a 및 도 2b를 살펴보면 I/O 크기의 증가와 입출력(Read/Write)에 따른 지연 시간이 선형적으로 증가하지는 않는다는 것을 알 수 있다. 즉, 4Kb 랜덤 입출력(Read/Write)에 따른 지연 시간이 2Kb 랜덤 입출력(Read/Write)에 따른 지연시간과 거의 같거나 적으며, 대역폭이 두 배 이상 향상되었음을 알 수 있다. 이는 대용량의 I/O를 처리하는 것이 SSD에 더 적합하기 때문이다.
도 3a는 I/O 사이즈를 4Kb로 고정하여 입력(Read)을 수행한 경우의 벤치마크 결과를 도시한 것이며, 도 3b는 I/O 사이즈를 4Kb로 고정하여 출력(Write)을 수행한 경우의 벤치마크 결과를 도시한 것이다. 아웃스탠딩(Outstanding) I/O 레벨에서 입출력(Read/Write) 대역폭을 점점 증가하는 것을 알 수 있다.
아웃스탠딩(Outstanding) I/O레벨이란 동시에 복수의 I/O 요청을 보낼 때의 동시 I/O 요청의 개수를 의미한다. 즉, 동시에 복수의 I/O 요청이 하나의 SSD에 요청되는 경우 SSD 내부에 내재된 다수의 플래시 메모리 칩에서 동시 I/O 처리가 가능해지므로, 내재된 플래시 메모리 칩의 개수에 비례하는 빠른 대역폭(도1의 경우 현재의 하드디스크보다 10~15배의 빠름)을 가지게 되며, 이러한 특징은 메모리칩 기반의 데이터 저장장치의 중요한 I/O 특징에 해당한다.
도 3c는 아웃스탠딩(Outstanding) I/O 레벨에서 입출력을 혼합한 경우를 도시한 것이다. 고인터리브(highly interleaved)된 작업부하(workloads)보다 인터리브되지 아니한(non-interleaved) 작업부하의 입출력 대역폭이 더 크다는 것을 도시한 것이다.
도 2 및 도 3에서 설명한 바와 같이 패키지 레벨의 병렬성을 활용하기 위하여는 I/O 기본 단위의 크기가 큰 것이 바람직하다. 대역폭을 증가시키기 위한 기본 I/O 단위의 크기가 커지면 해당 I/O 단위를 처리하기 위한 지연시간이 커질 수 있으므로 지연 시간과 대역폭 확장의 상호 관계속에서 결정되어야 한다.
채널 레벨의 병렬성을 활용하기 위해선 복수의 I/O 요청을 플래시 SSD와 같은 메모리 칩 기반의 저장장치에 동시에 전송하여야 한다. 복수의 I/O 요청을 생성하기 위해 I/O 요청 하나당 하나의 개별 프로세스를 활용하는 방법도 가능하지만, 이 방법의 경우 프로세스 생성의 비용이 너무 크므로, 하나의 개별 프로세스에서 I/O 요청 다수를 동시에 보낼 수 있는 비동기식 (asynchronous: async) I/O 기법을 활용한다. 동기식(synchronous: sync) I/O는 데이터의 송수신의 완료를 기다리고 나서 다른 처리를 수행하는 타입이며, 비동기식(asynchronous: async) I/O는 데이터 입출력에 있어서 데이터의 송수신의 완료를 기다리지 아니하고 다른 처리를 수행하는 I/O 타입이다.
도 4를 참조하여 B+트리 구성을 위한 내부 노드 구조(Internal node structure)를 설명한다. Pi는 i번째 위치한 포인터 값을, Ki는 i번째 위치한 키 값을 의미하며(i 는 자연수). F는 내부 노드로부터 전개되는 노드들과 연결된 팬아웃(fanout)을 의미한다. 즉, B+트리를 구성하는 내부 노드들은 자식 노드(child node)를 가리키는 포인터 값들과 키 값들로 구성된다. 따라서, 본 발명에서 키 값들과 관련된 자식 노드(child node)들을 검색할 수 있도록 연관된 포인터란 Ki에 근접한 Pi 및 Pi + 1를 말한다.
도5 를 참조하여 본 발명의 일 실시예에 따른 수정된 B+트리 노드 검색 방법을 설명한다.
S110 단계는 사용자의 입력에 기초하여 적어도 하나 이상의 키 값(Key value)이 포함된 검색 범위를 설정한다. 키 값이란 사용자의 입력에 기초하여 자식 노드의 데이터를 검색할 수 있도록 하는 데이터를 의미한다.
본 발명의 일 실시예에 따르면, 검색 범위를 설정하는 단계는 사용자의 입력 요청에 기초한 적어도 하나 이상의 키 값에 대하여 검색 범위의 시작값 및 검색 범위의 종료값을 추출하는 단계 및 추출된 시작값과 종료값을 가지는 검색 범위를 설정하는 단계를 포함한다. 예를 들어, 검색 범위의 시작값은 사용자의 입력 요청에 기초한 키 값 중 최소값으로 추출되며, 검색 범위의 종료값은 사용자의 입력 요청에 기초한 키 값 중 최대값으로 추출되도록 구현될 수 있다. 따라서, 사용자의 요청에 따른 키 값 세트가 {1, 2, 42, 65, 67}이라고 할 경우 그 중 최소값은 1, 최대값은 67이므로 검색 범위는 1≤S<67 로 설정된다.
S120 단계는 설정된 검색 범위에 기초하여 자식 노드(child node)들을 검색하기 위한 포인터들로 구성된 포인터 세트를 생성한다. 포인터 세트는 자식 노드(child node)의 위치를 지시하기 위한 포인터들의 세트를 의미한다. 본 발명의 일 실시예에 따르면, 포인터 세트를 생성하는 단계는 검색 범위에 해당하는 키 값들을 추출하는 단계(S121), 추출된 키 값들과 관련된 자식 노드(child node)들을 검색할 수 있도록 연관된 포인터들을 추출하는 단계(S123) 및 추출한 연관된 포인터들을 가용 메모리 산출을 위해 B+트리의 형태에 기초하여 설정된 I/O 파라미터에 따라 포인터 세트를 설정하는 단계(S125)를 포함한다.
S121 단계는 설정된 검색 범위에 포함되는 키 값들을 추출한다. 예를 들어, 사용자의 요청에 따른 키 값 세트가 {1, 2, 8}이라고 할 경우 그 중 최소값은 1, 최대값은 8이므로 검색 범위는 1≤S<8 로 설정되며, 검색 범위에 포함되는 키 값들은 {1, 2, 3, 4, 5, 6, 7}로 설정된다.
S123 단계는 추출된 키 값들과 관련된 자식 노드(child node)들을 검색할 수 있도록 연관된 포인터들을 추출한다. 상술한 도 5에서 설명한 바와 같이 키 값인 Ki에 근접한 Pi 및 Pi +1 와 같이 해당 키 값에 근접하여 위치한 포인터들을 내부 노드로부터 추출한다.
S125 단계는 상기 추출한 연관된 포인터들을 가용 메모리 산출을 위해 설정된 I/O 파라미터 및 B+트리의 형태에 따라 포인터 세트를 설정한다. B+트리의 형태란 B+트리의 자식 노드의 구성, B+트리의 높이 또는 b+트리의 내부 노드의 구성과 같은 B+트리의 구조적 특징을 의미한다. 본 발명의 일 실시예에 따르면 포인터 세트를 설정하는 단계는 검색을 수행하기 위하여 사용할 수 있는 최대 가용 메모리 사용량을 기초로 설정된 I/O 파라미터 와 검색을 하기 위한 노드들로 구성된 B+트리의 높이(height)에 기초한 지수를 곱연산하여 설정한다. 예를 들어, 검색을 수행하기 위하여 설정된 I/O 파라미터의 값이 32라고 할 경우, B+트리의 높이에 기초한 지수를 (treeheight-1)이라고 하면, I/O를 수행하기 위한 메모리 공간은 32*(treeheight-1) 단위로 설정된다. 본 발명에서 메모리 공간의 단위란 페이지로 구현될 수 있으며, 메모리 공간의 단위는 본 발명이 운용되는 시스템에 따라 상이할 수 있다. I/O 파라미터는 임의로 설정가능하나, 일반적으로 32정도로 설정하는 경우 메모리 할당량, 프로세스 처리를 위한 메모리 가용성 등에 비추어 바람직하다.
본 발명의 다른 실시예에 따르면, 추출한 연관된 포인터의 개수가 I/O파라미터를 초과하는 경우, I/O 파라미터의 설정에 따라 복수의 포인터 세트를 설정한다. 추출한 연관된 포인터의 개수가 설정된 I/O 파라미터를 초과하는 경우는 병렬적으로 I/O를 전송하게 되면 최대 가용 메모리를 초과하여 사용하게 되며 시스템 지연, 검색 속도 저하 등의 문제점이 발생할 수 있다. 따라서, 추출한 연관된 포인터의 개수가 설정된 I/O파라미터를 초과하는 경우 복수의 포인터 세트를 설정한다. 즉, I/O 파라미터와 B+트리의 높이에 기초한 지수를 이용하여 확보한 메모리 공간의 단위에 적합하도록 포인터 세트를 설정하고, 나머지 포인터들에 대하여 반복적으로 세트를 설정한다. 설정된 복수의 포인터 세트에 대하여는 I/O 요청을 하나의 포인터 세트에 대하여 병렬적으로 I/O 요청을 전송하고, 전송된 I/O 요청에 따라 데이터 검색을 수행한 후 다른 포인터 세트에 대하여 I/O 요청을 전송한다.
S130 단계는 생성된 포인터 세트를 이용하여 병렬적으로 I/O 요청을 전송한다. 본 발명의 일 실시예에 따르면, 포인터 세트에 포함된 포인터를 이용하여 비동기화된(asynchronous) 적어도 하나 이상의 I/O 요청을 데이터 저장 장치에 동시에 전송하도록 구현될 수 있다. 데이터 저장 장치는 복수의 I/O 채널(channel)을 가지는 메모리 칩을 이용하는 데이터 저장 장치인 것이 바람직하다.
S140 단계는 전송된 I/O 요청을 기초로 입력 요청에 대응되는 노드의 데이터를 검색한다. 본 발명의 일 실시예에 따르면 깊이 우선 탐색(Depth First Search : DFS)를 이용하여 노드의 데이터를 검색하도록 구현될 수 있다.
도 6은 본 발명의 일 실시예에 따른 수정된 B+트리 노드 검색 방법을 의사 코드(Pseudo Code)로 도시한 것이다. 도 6을 참조하여 본 발명의 일 실시예에 따라 I/O 파라미터를 이용하여 병렬적으로 검색하는 과정에 대하여 설명한다. 본 발명의 일 실시예에 따르면, 검색 과정은 루트 노드를 읽어들이면서 시작한다. 이어서, 사용자의 요청에 따른 키 값과 연관된 자식 노드(child nodes)를 가리키는 포인터들이 추출되며, 추출된 포인터들은 포인터 세트를 생성한다. 개별 포인터 세트가 설정된 I/O 파라미터(이하 PioMAX)보다 작은 경우에는 포인터 세트를 이용하여 B+트리를 검색한다. 만약, PioMAX보다 연관된 포인터의 수를 초과하는 경우에는 포인터를 추출하고, 포인터 세트를 생성하는 과정을 반복적으로 수행하여 복수의 포인터 세트를 생성하여 상기 과정을 수행하게 된다. 이러한 과정은 깊이 우선 탐색(Depth First Search : DFS)과 유사하게 수행된다.
도 7은 본 발명의 일 실시예에 따른 수정된 B+트리 노드 검색 장치에 관한 블럭도이다. 본 발명의 일 실시예에 따른 B+트리 노드 검색 장치는 검색범위 설정부(210), 포인터세트 생성부(230), I/O 요청 전송부(250) 및 데이터 검색부(270)를 포함한다.
검색범위 설정부(210)는 사용자의 입력에 기초한 적어도 하나 이상의 키 값(Key Value)이 포함된 검색 범위를 설정한다. 본 발명의 일 실시예에 따른 검색 범위 설정부(210)는 범위 추출부(211) 및 범위 설정부(213)를 포함한다.
범위 추출부(211)는 사용자의 입력 요청에 기초한 적어도 하나 이상의 키 값에 대하여 검색 범위의 시작값 및 검색 범위의 종료값을 추출한다.
범위 설정부(213)는 시작값과 종료값을 가지는 검색 범위를 설정한다.
포인터 세트 생성부(230)는 설정된 검색 범위에 기초하여 자식 노드(child node)들을 검색하기 위한 포인터들로 구성된 포인터 세트를 생성한다. 본 발명의 일 실시예에 따른 포인터 세트 생성부(230)는 키 값 추출부(231), 포인터 추출부(233) 및 포인터 세트 설정부(235)를 포함한다.
키 값 추출부(231)는 설정된 검색 범위에 해당하는 키 값들을 추출한다.
포인터 추출부(233)는 추출된 키 값들과 관련된 자식 노드(child node)들을 검색할 수 있도록 연관된 포인터들을 추출한다.
포인터 세트 설정부(235)는 추출한 연관된 포인터들을 가용 메모리 산출을 위해 B+트리의 형태에 기초하여 설정된 I/O 파라미터에 따라 포인터 세트를 설정한다.
본 발명의 일 실시예에 따르면, 포인터 세트 설정부(235)는 검색을 수행하기 위하여 사용할 수 있는 최대 가용 메모리 사용량을 기초로 설정된 I/O 파라미터와 검색을 하기 위한 노드들로 구성된 B+트리의 높이(height) 에 기초한 지수를 곱연산하여 설정할 수 있다.
본 발명의 일 실시예에 따르면, 포인터 세트 설정부(235)는 추출한 연관된 포인터들의 갯수가 I/O 파라미터를 초과하는 경우에는 I/O 파라미터의 설정에 따라 복수의 포인터 세트를 설정하며, 복수의 포인터 세트가 설정된 경우 복수의 포인터 세트에 대하여 I/O 요청을 반복적(recursively)으로 전송한다.
I/O 요청 전송부(250)는 생성된 포인터 세트를 이용하여 병렬적으로 I/O 요청을 전송한다. 본 발명의 일 실시예에 따르면, 생성된 포인터 세트에 포함된 포인터를 이용하여 비동기화된(asynchronous) 적어도 하나 이상의 I/O 요청을 데이터 저장 장치에 동시에 전송할 수 있다.
데이터 검색부(270)는 전송된 I/O 요청을 기초로 상기 입력 요청에 대응되는 노드의 데이터를 검색한다.
본 발명에 의한 실시예들은 컴퓨터 프로그램으로 작성 가능하다. 이 컴퓨터 프로그램을 구성하는 코드들 및 코드 세그먼트들은 당해 분야의 컴퓨터 프로그래머에 의하여 용이하게 추론될 수 있다. 또한, 해당 컴퓨터 프로그램은 컴퓨터가 읽을 수 있는 정보저장매체(Computer Readable Media)에 저장되고, 컴퓨터에 의하여 읽혀지고 실행됨으로써 실시예를 구현한다. 정보저장매체는 자기 기록매체, 광 기록매체 및 캐리어 웨이브 매체를 포함한다.
이제까지 본 발명에 대하여 바람직한 실시예를 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 본 발명을 구현할 수 있음을 이해할 것이다. 그러므로, 상기 개시된 실시예 들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 한다.

Claims (17)

  1. 사용자의 입력에 기초하여 적어도 하나 이상의 키 값(key value)이 포함된 검색 범위를 설정하는 단계;
    상기 설정된 검색 범위에 포함된 키 값들을 추출하고, 설정된 키 값들 및 설정된 포인터 값들과 관련된 자식 노드(child node)들을 검색할 수 있도록 상기 추출된 키 값들에 연관된 포인터들로 구성된 포인터 세트를 생성하는 단계;
    상기 생성된 포인터 세트를 이용하여 병렬적으로 I/O 요청을 전송하는 단계; 및
    상기 전송된 I/O 요청을 기초로 상기 입력 요청에 대응되는 노드의 데이터를 검색하는 단계를 포함하는 수정된 B+트리 노드 검색 방법.
  2. 제1 항에 있어서, 상기 검색 범위를 설정하는 단계는
    사용자의 입력 요청에 기초한 적어도 하나 이상의 키 값에 대하여 상기 검색 범위의 시작값 및 상기 검색 범위의 종료값을 추출하는 단계; 및
    상기 시작값과 상기 종료값을 가지는 검색 범위를 설정하는 단계를 포함하는 것을 특징으로 하는 수정된 B+트리 노드 검색 방법.
  3. 제2 항에 있어서,
    상기 검색 범위의 시작값은 상기 사용자의 입력 요청에 기초한 키 값 중 최소값으로 추출되며,
    상기 검색 범위의 종료값은 상기 사용자의 입력 요청에 기초한 키 값 중 최대값으로 추출되는 것을 특징으로 하는 수정된 B+트리 노드 검색 방법.
  4. 제1 항에 있어서, 상기 포인터 세트를 생성하는 단계는
    상기 설정된 검색 범위에 해당하는 키 값들을 추출하는 단계;
    상기 추출된 키 값들과 관련된 자식 노드(child node)들을 검색할 수 있도록 연관된 포인터들을 추출하는 단계; 및
    상기 추출한 연관된 포인터들을 가용 메모리 산출을 위해 설정된 I/O 파라미터 및 B+트리의 형태에 따라 포인터 세트를 설정하는 단계를 포함하는 것을 특징으로 하는 수정된 B+트리 노드 검색 방법.
  5. 제4 항에 있어서, 상기 포인터 세트를 설정하는 단계는
    검색을 수행하기 위하여 사용할 수 있는 최대 가용 메모리 사용량을 기초로 설정된 I/O 파라미터 와 검색을 하기 위한 노드들로 구성된 B+트리의 높이(height)에 기초한 지수를 곱연산하여 설정하는 것을 특징으로 하는 수정된 B+트리 노드 검색 방법.
  6. 제4 항에 있어서, 상기 포인터 세트를 설정하는 단계는
    상기 추출한 연관된 포인터들의 갯수가 상기 I/O 파라미터를 초과하는 경우에는 상기 I/O 파라미터의 설정에 따라 복수의 포인터 세트를 설정하는 단계인 것을 특징으로 하는 수정된 B+트리 노드 검색 방법.
  7. 제6 항에 있어서, 상기 I/O 요청을 전송하는 단계는
    상기 설정된 복수의 포인터 세트에 대하여 I/O 요청을 반복적으로(recursively) 전송하는 단계인 것을 특징으로 하는 수정된 B+트리 노드 검색 방법.
  8. 제1 항에 있어서, 상기 I/O 요청을 전송하는 단계는
    상기 생성된 포인터 세트에 포함된 포인터를 이용하여 비동기화된(asynchronous) 적어도 하나 이상의 I/O 요청을 데이터 저장 장치에 동시에 전송하는 것을 특징으로 하는 수정된 B+트리 노드 검색 방법.
  9. 제8 항에 있어서,
    상기 데이터 저장 장치는 복수의 I/O 채널(channel)을 가지는 메모리 칩을 이용하는 데이터 저장장치인 것을 특징으로 하는 수정된 B+트리 노드 검색 방법.
  10. 제1 항에 있어서, 상기 노드의 데이터를 검색하는 단계는
    깊이 우선 탐색(Depth First Search : DFS)를 이용하여 노드의 데이터를 검색하는 단계를 포함하는 것을 특징으로 하는 수정된 B+트리 노드 검색 방법.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
KR20120038734A 2012-04-13 2012-04-13 수정된 b+트리 노드 검색 방법 및 장치 KR101341507B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR20120038734A KR101341507B1 (ko) 2012-04-13 2012-04-13 수정된 b+트리 노드 검색 방법 및 장치
PCT/KR2012/010299 WO2013154247A1 (ko) 2012-04-13 2012-11-30 수정된 b+트리 노드 검색 방법 및 장치
US13/881,337 US20150120774A1 (en) 2012-04-13 2012-11-30 Modified b+ tree node searching method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20120038734A KR101341507B1 (ko) 2012-04-13 2012-04-13 수정된 b+트리 노드 검색 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20130115929A KR20130115929A (ko) 2013-10-22
KR101341507B1 true KR101341507B1 (ko) 2013-12-13

Family

ID=49327786

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20120038734A KR101341507B1 (ko) 2012-04-13 2012-04-13 수정된 b+트리 노드 검색 방법 및 장치

Country Status (3)

Country Link
US (1) US20150120774A1 (ko)
KR (1) KR101341507B1 (ko)
WO (1) WO2013154247A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11880593B2 (en) 2021-08-13 2024-01-23 Samsung Electronics Co., Ltd. Host, operating method of host and storage system

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10719495B2 (en) 2017-02-09 2020-07-21 Micron Technology, Inc. Stream selection for multi-stream storage devices
US10725988B2 (en) * 2017-02-09 2020-07-28 Micron Technology, Inc. KVS tree
US10706106B2 (en) 2017-02-09 2020-07-07 Micron Technology, Inc. Merge tree modifications for maintenance operations
US10706105B2 (en) 2017-02-09 2020-07-07 Micron Technology, Inc. Merge tree garbage metrics
US10915546B2 (en) 2018-10-10 2021-02-09 Micron Technology, Inc. Counter-based compaction of key-value store tree data block
US11100071B2 (en) 2018-10-10 2021-08-24 Micron Technology, Inc. Key-value store tree data block spill with compaction
US11048755B2 (en) 2018-12-14 2021-06-29 Micron Technology, Inc. Key-value store tree with selective use of key portion
US10852978B2 (en) 2018-12-14 2020-12-01 Micron Technology, Inc. Key-value store using journaling with selective data storage format
US10936661B2 (en) 2018-12-26 2021-03-02 Micron Technology, Inc. Data tree with order-based node traversal

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004110216A (ja) 2002-09-17 2004-04-08 Fuji Xerox Co Ltd 検索装置および方法
JP2008065716A (ja) 2006-09-08 2008-03-21 Ricoh Co Ltd データ管理装置、データ管理方法及びデータ管理プログラム
JP2008083769A (ja) 2006-09-26 2008-04-10 Just Syst Corp 文書検索装置および文書検索方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2124094C (en) * 1994-05-20 1999-07-20 K. Bernhard Schiefer Method and apparatus for optimizing data retrieval using index scanning
US6427147B1 (en) * 1995-12-01 2002-07-30 Sand Technology Systems International Deletion of ordered sets of keys in a compact O-complete tree
FI102424B (fi) * 1997-03-14 1998-11-30 Nokia Telecommunications Oy Menetelmä muistin toteuttamiseksi
US6675157B1 (en) * 1999-11-01 2004-01-06 International Business Machines Corporation System and method for balancing binary search trees
GB2377286B (en) * 2001-07-05 2003-09-24 3Com Corp Binary search trees and methods for establishing and operating them
US6694323B2 (en) * 2002-04-25 2004-02-17 Sybase, Inc. System and methodology for providing compact B-Tree
US20040133590A1 (en) * 2002-08-08 2004-07-08 Henderson Alex E. Tree data structure with range-specifying keys and associated methods and apparatuses
US7797348B2 (en) * 2003-05-01 2010-09-14 The Hong Kong Polytechnic University Data structure and system for IP address lookup and IP address lookup system
US7499927B2 (en) * 2005-02-24 2009-03-03 International Business Machines Corporation Techniques for improving memory access patterns in tree-based data index structures
US8156156B2 (en) * 2006-04-06 2012-04-10 Universita Di Pisa Method of structuring and compressing labeled trees of arbitrary degree and shape
JP4891657B2 (ja) * 2006-05-29 2012-03-07 株式会社野村総合研究所 データ記憶システム、ファイル検索装置およびプログラム
JP4514771B2 (ja) * 2007-05-18 2010-07-28 株式会社エスグランツ カップルドノードツリーの最長一致/最短一致検索装置、検索方法及びプログラム
JP4527753B2 (ja) * 2007-07-03 2010-08-18 株式会社エスグランツ ビット列検索装置、検索方法及びプログラム
US8255398B2 (en) * 2008-09-30 2012-08-28 International Business Machines Corporation Compression of sorted value indexes using common prefixes
JP5339507B2 (ja) * 2008-10-01 2013-11-13 インターナショナル・ビジネス・マシーンズ・コーポレーション 木構造を探索する方法
US8321389B2 (en) * 2009-01-08 2012-11-27 International Business Machines Corporation Method, apparatus and computer program product for maintaining file system client directory caches with parallel directory writes
US8180763B2 (en) * 2009-05-29 2012-05-15 Microsoft Corporation Cache-friendly B-tree accelerator
US8370394B2 (en) * 2009-07-17 2013-02-05 International Business Machines Corporation Parallel processing of data organized in a tree structure
US8805891B2 (en) * 2010-03-29 2014-08-12 Sybase, Inc. B-tree ordinal approximation
US8996563B2 (en) * 2010-04-06 2015-03-31 Tokutek, Inc. High-performance streaming dictionary
KR101793578B1 (ko) * 2011-04-08 2017-11-20 삼성전자 주식회사 효율적으로 질의를 처리하는 방법 및 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004110216A (ja) 2002-09-17 2004-04-08 Fuji Xerox Co Ltd 検索装置および方法
JP2008065716A (ja) 2006-09-08 2008-03-21 Ricoh Co Ltd データ管理装置、データ管理方法及びデータ管理プログラム
JP2008083769A (ja) 2006-09-26 2008-04-10 Just Syst Corp 文書検索装置および文書検索方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
김성호외3인, "AS B-트리: SSD를 사용한 B-트리에서 삽입 성능 향상에 관한 연구, 정보처리학회논문지 18-D권 제3호, 2011.06. *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11880593B2 (en) 2021-08-13 2024-01-23 Samsung Electronics Co., Ltd. Host, operating method of host and storage system

Also Published As

Publication number Publication date
WO2013154247A1 (ko) 2013-10-17
US20150120774A1 (en) 2015-04-30
KR20130115929A (ko) 2013-10-22

Similar Documents

Publication Publication Date Title
KR101341507B1 (ko) 수정된 b+트리 노드 검색 방법 및 장치
Xu et al. Performance analysis of NVMe SSDs and their implication on real world databases
US9092321B2 (en) System and method for performing efficient searches and queries in a storage node
US9021189B2 (en) System and method for performing efficient processing of data stored in a storage node
US10740018B2 (en) Data migration method and apparatus applied to computer system, and computer system
CN103999060A (zh) 固态存储管理
US9336135B1 (en) Systems and methods for performing search and complex pattern matching in a solid state drive
US10643736B2 (en) Method, apparatus and electronic device for read/write speed testing
WO2017213908A1 (en) Method and apparatus for improving performance of sequential logging in a storage device
KR20220152936A (ko) 커스터마이징 가능한 메타데이터를 위한 스토리지 장치, 스토리지 시스템 및 그것의 동작 방법
KR101425817B1 (ko) 수정된 b+트리 노드 갱신 방법 및 장치
US20240037027A1 (en) Method and device for storing data
Li et al. Fantastic SSD internals and how to learn and use them
US20150149418A1 (en) Estimation of query input/output (i/o) cost in database
KR102634776B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20240025451A (ko) 데이터 캐싱을 위한 방법 및 장치
KR20230071730A (ko) 데이터 프로세싱 장치 및 그것의 동작 방법
Mendon et al. A hardware filesystem implementation with multidisk support
US20230393749A1 (en) Method and device of storage data
US9336313B1 (en) Systems and methods for performing single and multi threaded searches and complex pattern matching in a solid state drive
US20230153237A1 (en) Method and device for storing data
US20240160511A1 (en) Failure prediction apparatus and method for storage devices
US20230325110A1 (en) Operation method of host device and operation method of storage device
EP4258097A1 (en) Operation method of host device and operation method of storage device
KR20230144434A (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
FPAY Annual fee payment

Payment date: 20161205

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171204

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20181224

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20200107

Year of fee payment: 7