KR20140021793A - 비휘발성 램 기반의 b+ 트리 데이터베이스화 방법 - Google Patents

비휘발성 램 기반의 b+ 트리 데이터베이스화 방법 Download PDF

Info

Publication number
KR20140021793A
KR20140021793A KR1020120087976A KR20120087976A KR20140021793A KR 20140021793 A KR20140021793 A KR 20140021793A KR 1020120087976 A KR1020120087976 A KR 1020120087976A KR 20120087976 A KR20120087976 A KR 20120087976A KR 20140021793 A KR20140021793 A KR 20140021793A
Authority
KR
South Korea
Prior art keywords
node
key value
area
region
key
Prior art date
Application number
KR1020120087976A
Other languages
English (en)
Other versions
KR101438667B1 (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 KR1020120087976A priority Critical patent/KR101438667B1/ko
Priority to US14/235,001 priority patent/US9454550B2/en
Priority to PCT/KR2012/010834 priority patent/WO2014025097A1/ko
Publication of KR20140021793A publication Critical patent/KR20140021793A/ko
Application granted granted Critical
Publication of KR101438667B1 publication Critical patent/KR101438667B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • 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/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/2237Vectors, bitmaps or matrices
    • 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
    • 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
    • G06F16/2365Ensuring data consistency and integrity

Landscapes

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

Abstract

본 발명은 B+ 트리 구조를 응용하여 비휘발성 램의 데이터 구조에 적용시킴으로써, 내구성 향상과 아울러 데이터 처리 성능을 향상시키도록 한 비휘발성 램 기반의 B+ 트리 데이터베이스화 방법에 관한 것으로, 비휘발성 램 기반의 B+ 트리 구조 데이터베이스화 방법에 있어서, 각각의 노드(node)를 제1영역(Area1)과 제2영역(Area2)으로 나누는 단계; 상기 각각의 노드에 특정 키(key) 값을 추가(insert), 검색(retrieve) 및 삭제(delete)하는 단계;를 포함하되, 신규 키 값 추가시에는 상기 제2영역에 우선 저장하는 것을 특징으로 하는 비휘발성 램 기반의 B+ 트리 데이터베이스화 방법을 제공한다.

Description

비휘발성 램 기반의 B+ 트리 데이터베이스화 방법{Database method for b+ tree based on PRAM}
본 발명은 비휘발성 램 기반의 B+ 트리 데이터베이스화 방법에 관한 것으로, 더욱 상세하게는 B+ 트리 구조를 비휘발성 램의 데이터 구조에 적용시킴으로써, 내구성 향상과 아울러 데이터 처리 성능을 향상시키도록 한 비휘발성 램 기반의 B+ 트리 데이터베이스화 방법에 관한 것이다.
현재까지 수십 년 동안 HDD(Hard Disk Drive) 기반의 저장장치 시스템이 컴퓨터 시스템의 주 저장장치로 사용되어 왔지만, 최근에 이러한 상황에 변화가 생기기 시작했다. 그 이유는 NAND 플래시 메모리 때문이다. 최근 몇 년 동안에 NAND 플래시 메모리 기반의 저장장치가 기존의 HDD에 비하여 높은 성능, 낮은 전력 소비, 높은 신뢰성과 작은 폼팩터 등의 여러 가지 장점들로 인해 컴퓨터 시스템에 더욱 많이 사용되고 있다.
2009년 이후에 SSD(Solid State Drive)의 시장 규모가 매년 급격하게 성장할 것으로 예측된다. 하지만, NAND 플래시 메모리의 시장 점유율은 아직까지는 HDD의 시장 점유율에 비해서는 낮은 편이다. 이러한 원인은 NAND 플래시 메모리가 기존의 HDD에 비하여 고단가와 임의 쓰기와 같은 특정한 작업에서 HDD와 비교하여 비슷한 성능을 보이는 단점을 가지고 있기 때문이다.
현재 NAND 플래시 메모리의 고단가 문제는 최근의 NAND 플래시 메모리 대용량화와 MLC(Multi-level Cell)를 통한 가격 하락으로 극복하려고 하고 있지만, 그래도 아직까지는 일반 소비자에게는 SSD는 HDD에 비하여 고가의 저장장치이다. 따라서 NAND 플래시 메모리 기반의 저장 장치의 시장 점유율을 확대하기 위하여 다양한 발명 및 연구가 활발하게 이루어져 왔다.
하지만 NAND 플래시 메모리의 자체의 물리적 특성(지우기 작업 회수 제안) 때문에 성능을 높이는 것에는 한계가 있어 왔다. 따라서 많은 회사나 연구소에서는 NAND 플래시 메모리를 대체할 새로운 비휘발성 램 소자에 대한 많은 연구들을 수행하여 왔다. 그 결과로 상변화 메모리(이하 PCM이라 한다.), FRAM과 MRAM과 같은 비휘발성 램 소자들이 개발되었으며, 현재도 상용화를 위하여 많은 연구가 이루어지고 있다.
이러한 비휘발성 램들은 기존의 NAND 플래시 메모리가 가지는 단점들을 극복한 새로운 비휘발성 메모리 소자들로, 향후에 NAND 플래시 메모리와 함께 사용되어 기존의 NAND 플래시메모리로만 구성된 저장장치를 대체하는 차세대 저장장치로 활용될 것으로 예상된다.
한편, 여러 가지 비휘발성 램들 중에서 PCM이 NAND 플래시 메모리를 대체할 가장 유력한 비휘발성 램으로 예상되고 있으며, 다수의 반도체 회사들이 막대한 시간과 노력을 투입하여 상용화를 위한 연구를 진행하고 있다. 이렇게 PCM이 NAND 플래시 메모리를 대체할 저장매체로 고려되는 이유는 다음과 같다.
첫째로, PCM은 NAND 플래시 메모리와는 다르게 지우기 연산이 없다. 지우기 연산은 NAND 플래시 메모리의 성능에 가장 부정적인 영향을 주는 연산으로 블록(Block) 단위로 지우기 연산이 이루어지며, 대략 1ms이라는 매우 긴 연산 시간을 가지게 된다. 그러므로 이 지우기 연산으로 인해 NAND 플래시 메모리가 임의 쓰기와 같은 특정한 연산에서 HDD와 비교하여 높은 성능을 보여주지 못하는 이유가 된다. 하지만, PCM에서는 이러한 지우기 연산이 없으므로, HDD는 물론이고, NAND 플래시 메모리에 비교해서도 높은 성능을 보여 줄 수 있다.
둘째로, PCM은 기본적인 읽기/쓰기가 바이트 단위인 것에 반하여, NAND 플래시 메모리는 페이지(Page) 단위로만 읽기/쓰기를 하여야 한다. 즉, NAND 플래시 메모리에서는 몇 바이트의 데이터를 읽고 쓰기 위해서는 한 페이지를 다 읽고 쓰기를 해야 하지만, PCM에서는 필요한 데이터만을 읽고 쓸 수 있다. 따라서 PCM은 NAND 플래시 메모리에 비하여 읽기/쓰기에서 높은 성능을 보여 줄 수 있다.
셋째로, PCM의 읽기 쓰기의 횟수는 보수적으로 106 이며, NAND 플래시 메모리에 비교하여 대략 10배의 긴 수명을 가지고 있다. 다만, PCM에 대한 다른 연구에서는 PCM의 쓰기의 횟수가 106 보다 높았지만, PCM의 시제품에서의 쓰기 횟수는 대략적으로 106 이다. 이렇게 PCM의 내구성이 NAND 플래시 메모리의 내구성에 비해서 높으므로, PCM이 NAND 플래시 메모리를 대체할 수 있을 것으로 예상된다.
하지만, PCM은 NAND 플래시 메모리에 비교하여 집적도와 상용화에 대한 연구가 미흡하다. 따라서 PCM을 NAND 플래시 메모리의 단점을 극복하기 위한 NAND 플래시 메모리와 함께 사용하는 연구가 활발하게 진행되고 있다.
현재 PCM은 저장장치나 운영체제에서 NAND 플래시 메모리의 단점을 보완하기 위하여 NAND 플래시 메모리와 함께 사용하여 연구는 활발하게 진행되어 왔으나, 데이터베이스 시스템에서 PCM과 NAND 플래시 메모리를 사용하는 연구에 대해서는 아주 미미하다. PCM은 NAND 플래시 메모리와 비교하여 PCM의 내구성이 향상되었지만, 데이터베이스의 저장 장치로 이용되기에는 내구성이 충분하지 않으므로, PCM을 데이터베이스의 저장장치로 사용하기 위해서는 PCM의 내구성 문제를 해결해야 한다.
한편, 데이터베이스 시스템에서 사용되는 핵심 자료 구조인 B+트리에서 각 노드 간의 쓰기 횟수의 차이를 분석할 결과로 각 노드 간의 쓰기 횟수의 차이가 매우 큰 것을 확인할 수 있다. 특히, 특정한 인덱스 노드와 리프 노드에서 다른 노드에 비해서 휠씬 많은 쓰기 횟수가 발생한다. 또한, B+트리에서는 새로운 레코드가 추가될 때에는 일반적으로 삽입정렬(insertion sort)이 사용됨으로 한 노드의 중간 영역에 쓰기 횟수가 다른 영역보다 높아지는 경향을 보인다. 또한, 한 노드의 초기 영역은 그 노드의 레코드의 수를 기록함으로써 새로운 노드가 증가할 때마다 쓰기가 발생함으로써 하나의 노드 안에서 쓰기 횟수가 가장 많아진다.
이와 같이, B+트리의 특정한 영역에 대한 쓰기의 집중은 PCM과 같은 비휘발성 램의 내구성을 심각하게 위협하는 특성으로 PCM을 데이터베이스의 저장장치로 사용하기 위하여 해결될 문제이다. 이러한 PCM의 내구성 문제를 해결하기 위해서 NAND 플래시 메모리와 같이 쓰기 횟수를 저장하는 기법을 활용할 수 있지만, PCM은 바이트 단위로 읽기 쓰기가 가능함으로 이러한 기법은 현실성이 없기 때문에 PCM을 데이터베이스 시스템 또는 파일 시스템의 저장 장치로 활용하기 위해서는 내구성을 보장하는 새로운 방법이 요구되고 있는 실정이다.
대한민국 공개특허공보 제10-2000-0037515호 (2000년 07월 05일)
따라서 본 발명은 상기한 종래의 문제점들을 해결하기 위해 이루어진 것으로서, B+ 트리 구조를 응용하여 비휘발성 램의 데이터 구조에 적용시킴으로써, 내구성 향상과 아울러 데이터 처리 성능을 향상시키도록 한 비휘발성 램 기반의 B+ 트리 데이터베이스화 방법을 제공하는 것을 그 목적으로 한다.
상기한 목적을 달성하기 위하여 본 발명은, 비휘발성 램 기반의 B+ 트리 구조 데이터베이스화 방법에 있어서, 각각의 노드(node)를 제1영역(Area1)과 제2영역(Area2)으로 나누는 단계; 상기 각각의 노드에 특정 키(key) 값을 추가(insert), 검색(retrieve) 및 삭제(delete)하는 단계;를 포함하되, 신규 키 값 추가시에는 상기 제2영역에 우선 저장하는 것을 특징으로 하는 비휘발성 램 기반의 B+ 트리 데이터베이스화 방법을 제공한다.
상기 키 값을 추가하는 단계는; 상기 노드의 제2영역이 풀(full) 상태가 아닐 경우, 상기 제2영역에 해당 키 값을 추가하고, 상기 노드의 제2영역이 풀 상태일 경우, 상기 제2영역의 키 값을 상기 제1영역으로 이동시킨다.
상기 키 값을 추가하는 단계는; 상기 노드의 제1영역으로 이동되는 키 값을 오름차순 또는 내림차순으로 정렬할 수 있다.
상기 키 값을 추가하는 단계는; 상기 노드가 풀 상태일 경우, 상기 제1영역과 제2영역을 병합(merge)하고, 상기 노드를 분할(split)하여 중간 키 값은 부모 노드로 보내지고, 나머지 키 값들은 둘로 나누어 각각 분할된 노드로 옮기는 것이 바람직하다.
상기 키 값을 검색하는 단계는; 상기 노드가 리프 노드인가를 판단하는 단계; 상기 노드가 리프 노드인 경우, 상기 제1영역과 제2영역을 순차적으로 검색하고, 상기 제1영역과 제2영역에서 선택된 키 값들중 찾고자하는 키 값과 근사한 키 값을 선택하여 그 키 값이 가리키는 아래의 노드로 이동하는 단계; 상기 노드가 리프 노드인 경우, 상기 키 값 검색을 종료하는 단계를 포함할 수 있다.
상기 키 값을 삭제하는 단계는; 상기 노드의 제1영역과 제2영역을 병합하고, 상기 병합된 노드에서 삭제하고자 하는 해당 키 값을 삭제하고, 상기 병합된 노드를 제1영역과 제2영역으로 분할할 수 있다.
상기 키 값을 삭제하는 단계는; 상기 키 값의 삭제는 상기 리프 노드에서만 이루어지며, 삭제하려는 키 값이 상기 리프 노드가 아닌 다른 노드에 있을 경우 후행 키 값과 자리를 바꾸어 상기 리프 노드로 옮긴 후 삭제하는 것이 더욱 바람직하다.
이상과 같이 본 발명에 따른 비휘발성 램 기반의 B+ 트리 데이터베이스화 방법에 의하면, B+ 트리 구조를 응용하여 PCM 등의 비휘발성 램의 데이터 구조에 적용시킴으로써, 전체적인 쓰기 횟수를 줄임과 아울러, 종래 B+트리의 특정한 영역에 대한 쓰기의 집중을 방지하여 PCM과 같은 비휘발성 램의 내구성을 향상시킴과 아울러 데이터 처리 성능을 향상시키도록 하는 효과가 있다.
도 1은 본 발명의 바람직한 일실시예에 따른 비휘발성 램 기반의 B+ 트리 데이터베이스화 방법을 나타낸 순서도,
도 2는 본 발명의 일실시예에 따라 분할 없이 키 값을 추가하는 단계를 나타낸 블록도,
도 3은 본 발명의 일실시예에 따라 분할과 함께 키 값을 추가하는 단계를 나타낸 블록도,
도 4는 본 발명의 일실시예에 따라 키 값을 검색하는 단계를 나타낸 블록도,
도 5는 본 발명의 일실시예에 따라 키 값을 삭제하는 단계를 나타낸 블록도이다.
이하, 상기한 바와 같이 구성된 본 발명에 대해 첨부도면을 참조하여 상세히 설명한다.
도 1은 본 발명의 바람직한 일실시예에 따른 비휘발성 램 기반의 B+ 트리 데이터베이스화 방법을 나타낸 순서도이다.
일반적으로 B+ 트리 구조는 B- 트리의 순차접근의 취약점을 보완한 트리로서 리프노드를 찾기 위하여 경로를 제공하는 인덱스 부분(index set)과, 트리의 내부노드를 포함하여 모든 노드를 순차적으로 리프 노드에 열거해 놓은 순차부분(sequence set)으로 구성되어 있다. 이때, 상기 인덱스 부분은 리프 노드에 접근하기 위한 경로로만 사용하기 때문에 인덱스 부분에 속하는 노드의 키 값이 리프 노드에 순차부분에 다시 나타나며, 순차부분의 리프 노드에 순차적으로 연결된다. 따라서 B+ 트리는 파일의 한 노드에 해당하는 레코드를 직접 및 순차적으로 접근하는 인덱스 파일 구성에 널리 사용된다. 또한, 상기 B+ 트리 구조에서 루트 노드는 차수가 n인 경우, 0, 2, 또는 n/2 이상의 서브트리를 갖으며, 루트와 리프노드를 제외한 모든 노드는 n/2 이상의 서브트리를 갖는다. 그리고 상기 모든 리프 노드에 동일한 레벨에 있으며, 리프 노드가 아닌 노드의 키 수는 서브트리 수보다 적으며, 상기 리프 노드는 파일의 순차세트로서 모두 리스트로 연결되어 있다.
본 발명의 바람직한 일실시예에 따른 비휘발성 램 기반의 B+ 트리 데이터베이스화 방법은, 도 1에 도시된 바와 같이, PCM(Phases Change Memory) 기반의 B+ 트리 구조를 이용한 데이터 처리방법에 있어서, 각각의 노드(node)를 제1영역(Area1)과 제2영역(Area2)으로 나누는 단계(S10); 상기 각각의 노드에 특정 키(key) 값을 추가(insert), 검색(retrieve) 및 삭제(delete)하는 단계;를 포함하되, 신규 키 값 추가시에는 상기 제2영역에 우선 저장되는 것을 특징으로 한다(S20).
이때, 상기 키 값을 추가하는 단계는; 상기 노드의 제2영역이 풀(full) 상태가 아닐 경우, 상기 제2영역에 해당 키 값을 추가하고, 상기 노드의 제2영역이 풀 상태일 경우, 상기 제2영역의 키 값을 상기 제1영역으로 이동시킨 후 추가 작업을 반복 수행한다(S30~S50).
상기 키 값을 추가하는 단계는; 상기 노드의 제1영역으로 이동되는 키 값을 오름차순 또는 내림차순으로 정렬할 수 있다.
또한, 상기 키 값을 추가하는 단계는; 상기 노드가 풀 상태일 경우, 상기 제1영역과 제2영역을 병합(merge)하고, 상기 노드를 분할(split)하여 중간 키 값은 부모 노드로 보내지고, 나머지 키 값들은 둘로 나누어 각각 분할된 노드로 옮기는 것이 바람직하다.
상기와 같이 키 값을 추가하는 단계의 일실시예를 도면을 참조하여 설명하면 다음과 같다.
도 2는 본 발명의 일실시예에 따라 분할 없이 키 값을 추가하는 단계를 나타낸 블록도이다.
도시된 바와 같이, 그리드 상자가 점선 상자를 가리키고 있는 레코드의 수를 추적하는 카운터를 나타낸다. 그리고 대각선 늘어선 상자 노드의 레코드를 나타낸다. 본 실시예에서 노드에 40, 80, 60, 30, 70, 50, 35, 45, 55 그리고 65의 키 값을 순차적으로 추가한다. 처음에는 회색 상자의 값은 5, 점선 상자의 값은 0이며, 이때 40과 80이 제2영역(Area 2)에 추가된다. 60이 제2영역(Area 2)으로 추가될 때 상기 두 레코드는 제2영역(Area 2)이 풀 상태이기 때문에 제1영역(Area 1)으로 이동된다. 추가적으로, 격자 상자의 값과 점선 박스의 값은 각각 7과 3으로 변경된다. 추가 후, 순차적으로 30, 70, 50, 35, 45, 55 및 65가 순차적으로 추가 후 도 2에 도시된 바와 같이 노드가 풀 상태인 것을 알 수 있다.
도 3은 본 발명의 일실시예에 따라 분할과 함께 키 값을 추가하는 단계를 나타낸 블록도이다.
도시된 바와 같이, 키 값을 삽입하는 동안 노드를 분할하는 방법을 나타낸다. 먼저, 75를 노드에 추가한다. 첫 번째 분할 방법으로는 제1영역(Area 1)과 제2영역(Area 1)을 병합하는 것이다. 그런 다음 병합된 영역에 75를 추가하면 레코드의 개수는 11이 된다. 분할 작업을 위해서, 11개의 레코드 키 간의 중간값 55를 선택한다. 분할 작업을 함으로써 30, 35, 40, 45, 50 및 55는 왼쪽의 자식 노드에 부착될 것이다. 레코드 키 60, 65, 70, 75 및 80은 오른쪽 자식 노드에 부착된다. 레코드 키 55는 도 3에 도시된 바와 같이 새로운 인덱스 노드에 추가된다.
또한, 상기 키 값을 검색하는 단계는; 상기 노드가 리프 노드인가를 판단하는 단계; 상기 노드가 리프 노드인 경우, 상기 제1영역과 제2영역을 순차적으로 검색하고, 상기 제1영역과 제2영역에서 선택된 키 값들중 찾고자하는 키 값과 근사한 키 값을 선택하여 그 키 값이 가리키는 아래의 노드로 이동하는 단계; 상기 노드가 리프 노드인 경우, 상기 키 값 검색을 종료하는 단계를 포함하는 것이 더욱 바람직하다.
상기와 같이 키 값을 검색하는 단계의 일실시예를 도면을 참조하여 설명하면 다음과 같다.
도 4는 본 발명의 일실시예에 따라 키 값을 검색하는 단계를 나타낸 블록도이다.
도시된 바와 같이, 노드 0의 제1영역(Area1)과 제2영역(Area2)에서 50을 검색하려고 했지만 제1영역(Area1)이 비어 있기 때문에 오직 제2영역(Area2)을 검색하게 된다. 이 검색 작업에서, 55는 50보다 큰 최소값으로 선택되어 지고, 그 55의 왼쪽의 자식 노드 1에 연결된다. 그런 다음 다시 노드 1의 제1영역(Area1)과 제2영역(Area2)을 검색하여 더욱 정확하거나 50보다 큰 최소값의 레코드를 찾는다. 제1영역(Area1)에 있는 모든 레코드에서 50보다 큰 레코드가 없을 경우, 제2영역(Area2)에서 50이 선택된다. 마지막으로, 50은 노드 1의 제2영역(Area 2)에서 발견된다.
또한, 상기 키 값을 삭제하는 단계는; 상기 노드의 제1영역과 제2영역을 병합하고, 상기 병합된 노드에서 삭제하고자 하는 해당 키 값을 삭제하고, 상기 병합된 노드를 제1영역과 제2영역으로 분할하는 것이 바람직하다.
또한, 상기 키 값을 삭제하는 단계는; 상기 키 값의 삭제는 상기 리프 노드에서만 이루어지며, 삭제하려는 키 값이 상기 리프 노드가 아닌 다른 노드에 있을 경우 후행 키 값과 자리를 바꾸어 상기 리프 노드로 옮긴 후 삭제하는 것이 더욱 바람직하다.
상기와 같이 키 값을 삭제하는 단계의 일실시예를 도면을 참조하여 설명하면 다음과 같다.
도 5는 본 발명의 일실시예에 따라 키 값을 삭제하는 단계를 나타낸 블록도이다.
도시된 바와 같이, 50을 삭제하려면, 먼저 노드 1의 제2영역(Area2)의 첫 번째 키 값으로부터 검색 작업을 통하여 50을 찾을 수 있다. 50을 찾은 후에, 노드 1의 제2영역(Area2)으로부터 50을 단순히 삭제할 수 있다. 이때, 노드의 레코드가 절반 이하이면 노드 간에 병합 작업이 일어나지 않는다. 다음으로, 노드 2에서 한번 더 레코드 키 70을 삭제하려고 하며, 이때 형제 노드에서는 레코드를 가져올 수 없다. 레코드가 노드 1로 이동할 경우 노드 2의 레코드의 수는 5 미만이 될 것이다. 따라서 그것은 70을 삭제한 후에 병합 작업을 필요로 한다. 노드 1과 2를 병합하려면 먼저 각각의 노드의 제1영역(Area1)과 제2영역(Area2)을 병합한 다음 노드 1과 노드 2를 병합한다. 노드 1과 노드 2를 병합한 후, 다음 단계로 진행된다. 55가 루트 노드에서 삭제되는데, 그 이유는 하나의 리프 노드만이 남아있기 때문이다. 그런 다음, 노드 0은 제거되고, 노드 0이 비어 때문에 노드 1이 루트 노드가 된다.
따라서, 이상에서 설명한 바와 같이 본 발명에 따른 비휘발성 램 기반의 B+ 트리 데이터베이스화 방법에 의하면, B+ 트리 구조를 응용하여 PCM 등의 비휘발성 램의 데이터 구조에 적용시킴으로써, 전체적인 쓰기 횟수를 줄임과 아울러, 종래 B+트리의 특정한 영역에 대한 쓰기의 집중을 방지하여 PCM과 같은 비휘발성 램의 내구성을 향상시킴과 아울러 데이터 처리 성능을 향상시킬 수 있다.
상기에서 본 발명의 특정한 실시 예가 설명 및 도시되었지만, 본 발명이 당업자에 의해 다양하게 변형되어 실시될 가능성이 있는 것은 자명한 일이다. 이와 같은 변형된 실시 예들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어서는 안 되며, 본 발명에 첨부된 청구범위 안에 속한다고 해야 할 것이다.
Node 0~3 : 각각의 노드
Area 1: 제1영역
Area 2: 제2영역

Claims (7)

  1. 비휘발성 램 기반의 B+ 트리 구조 데이터베이스화 방법에 있어서,
    각각의 노드(node)를 제1영역(Area1)과 제2영역(Area2)으로 나누는 단계;
    상기 각각의 노드에 특정 키(key) 값을 추가(insert), 검색(retrieve) 및 삭제(delete)하는 단계;를 포함하되,
    신규 키 값 추가시에는 상기 제2영역에 우선 저장하는 것을 특징으로 하는 비휘발성 램 기반의 B+ 트리 데이터베이스화 방법.
  2. 제 1항에 있어서,
    상기 키 값을 추가하는 단계는;
    상기 노드의 제2영역이 풀(full) 상태가 아닐 경우, 상기 제2영역에 해당 키 값을 추가하고,
    상기 노드의 제2영역이 풀 상태일 경우, 상기 제2영역의 키 값을 상기 제1영역으로 이동시키는 것을 특징으로 하는 비휘발성 램 기반의 B+ 트리 데이터베이스화 방법.
  3. 제 2항에 있어서,
    상기 키 값을 추가하는 단계는;
    상기 노드의 제1영역으로 이동되는 키 값을 오름차순 또는 내림차순으로 정렬하는 것을 특징으로 하는 비휘발성 램 기반의 B+ 트리 데이터베이스화 방법.
  4. 제 2항에 있어서,
    상기 키 값을 추가하는 단계는;
    상기 노드가 풀 상태일 경우, 상기 제1영역과 제2영역을 병합(merge)하고,
    상기 노드를 분할(split)하여 중간 키 값은 부모 노드로 보내지고,
    나머지 키 값들은 둘로 나누어 각각 분할된 노드로 옮기는 것을 특징으로 하는 비휘발성 램 기반의 B+ 트리 데이터베이스화 방법.
  5. 제 1항에 있어서,
    상기 키 값을 검색하는 단계는;
    상기 노드가 리프 노드인가를 판단하는 단계;
    상기 노드가 리프 노드인 경우, 상기 제1영역과 제2영역을 순차적으로 검색하고, 상기 제1영역과 제2영역에서 선택된 키 값들중 찾고자하는 키 값과 근사한 키 값을 선택하여 그 키 값이 가리키는 아래의 노드로 이동하는 단계;
    상기 노드가 리프 노드인 경우, 상기 키 값 검색을 종료하는 단계를 포함하는 것을 특징으로 하는 비휘발성 램 기반의 B+ 트리 데이터베이스화 방법.
  6. 제 1항에 있어서,
    상기 키 값을 삭제하는 단계는;
    상기 노드의 제1영역과 제2영역을 병합하고,
    상기 병합된 노드에서 삭제하고자 하는 해당 키 값을 삭제하고,
    상기 병합된 노드를 제1영역과 제2영역으로 분할하는 것을 특징으로 하는 비휘발성 램 기반의 B+ 트리 데이터베이스화 방법.
  7. 제 6항에 있어서,
    상기 키 값을 삭제하는 단계는;
    상기 키 값의 삭제는 상기 리프 노드에서만 이루어지며,
    삭제하려는 키 값이 상기 리프 노드가 아닌 다른 노드에 있을 경우 후행 키 값과 자리를 바꾸어 상기 리프 노드로 옮긴 후 삭제하는 것을 특징으로 하는 비휘발성 램 기반의 B+ 트리 데이터베이스화 방법.
KR1020120087976A 2012-08-10 2012-08-10 비휘발성 램 기반의 b+ 트리 데이터베이스화 방법 KR101438667B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020120087976A KR101438667B1 (ko) 2012-08-10 2012-08-10 비휘발성 램 기반의 b+ 트리 데이터베이스화 방법
US14/235,001 US9454550B2 (en) 2012-08-10 2012-12-13 Database method for B+ tree based on PRAM
PCT/KR2012/010834 WO2014025097A1 (ko) 2012-08-10 2012-12-13 비휘발성 램 기반의 b+ 트리 데이터베이스화 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120087976A KR101438667B1 (ko) 2012-08-10 2012-08-10 비휘발성 램 기반의 b+ 트리 데이터베이스화 방법

Publications (2)

Publication Number Publication Date
KR20140021793A true KR20140021793A (ko) 2014-02-20
KR101438667B1 KR101438667B1 (ko) 2014-09-12

Family

ID=50068297

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120087976A KR101438667B1 (ko) 2012-08-10 2012-08-10 비휘발성 램 기반의 b+ 트리 데이터베이스화 방법

Country Status (3)

Country Link
US (1) US9454550B2 (ko)
KR (1) KR101438667B1 (ko)
WO (1) WO2014025097A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160001598A (ko) * 2014-06-27 2016-01-06 삼성전자주식회사 스토리지 디바이스용 호스트 키 생성 방법 및 시스템
US10565174B2 (en) 2017-02-09 2020-02-18 Industry Academic Cooperation Foundation Of Yeungnam University Operating method for non-volatile memory

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101665045B1 (ko) * 2014-02-14 2016-10-12 울산과학기술원 저장장치 io 성능 향상을 위한 멀티 버전 기반의 자료구조를 사용한 데이터 저장 방법 및 장치
US10002055B2 (en) * 2016-04-29 2018-06-19 Netapp, Inc. Efficient repair of B+ tree databases with variable-length records
KR102233880B1 (ko) * 2019-02-13 2021-03-30 울산과학기술원 싱글-레벨 기반의 데이터 저장 장치 및 방법
US11880593B2 (en) 2021-08-13 2024-01-23 Samsung Electronics Co., Ltd. Host, operating method of host and storage system

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100289087B1 (ko) * 1997-12-17 2001-05-02 이계철 비플러스트리에다수의키값을추가하기위한방법
KR20000037515A (ko) * 1998-08-19 2000-07-05 윤종용 히스토리 관리용 비플러스 트리 구성 방법
US7370055B1 (en) * 2003-06-04 2008-05-06 Symantec Operating Corporation Efficiently performing deletion of a range of keys in a B+ tree
US7383276B2 (en) * 2004-01-30 2008-06-03 Microsoft Corporation Concurrency control for B-trees with node deletion
US7599949B1 (en) * 2004-04-30 2009-10-06 Unisys Corporation Database management system and method for maintaining a database in a range sensitive manner
JP2008065716A (ja) 2006-09-08 2008-03-21 Ricoh Co Ltd データ管理装置、データ管理方法及びデータ管理プログラム
US7986696B1 (en) * 2009-02-12 2011-07-26 Compass Electro-Optical Systems Method and apparatus for longest prefix matching
US8180763B2 (en) * 2009-05-29 2012-05-15 Microsoft Corporation Cache-friendly B-tree accelerator
US9626398B2 (en) * 2012-05-22 2017-04-18 Hewlett Packard Enterprise Development Lp Tree data structure
US8700670B2 (en) 2010-04-12 2014-04-15 Symantec Corporation Insert optimization for B+ tree data structure scalability
CN102467709B (zh) * 2010-11-17 2017-03-01 阿里巴巴集团控股有限公司 一种发送商品信息的方法和装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160001598A (ko) * 2014-06-27 2016-01-06 삼성전자주식회사 스토리지 디바이스용 호스트 키 생성 방법 및 시스템
US10565174B2 (en) 2017-02-09 2020-02-18 Industry Academic Cooperation Foundation Of Yeungnam University Operating method for non-volatile memory

Also Published As

Publication number Publication date
US9454550B2 (en) 2016-09-27
US20150220574A1 (en) 2015-08-06
WO2014025097A1 (ko) 2014-02-13
KR101438667B1 (ko) 2014-09-12

Similar Documents

Publication Publication Date Title
KR101438667B1 (ko) 비휘발성 램 기반의 b+ 트리 데이터베이스화 방법
US9368130B2 (en) Data storage system, method of writing to storage in the data storage system, hard disk and method of forming the hard disk
EP2735978B1 (en) Storage system and management method used for metadata of cluster file system
CN102483754B (zh) 在非均匀存取存储器中的可扩展编制索引
US11657092B2 (en) Data tree with order-based node traversal
US11249664B2 (en) File system metadata decoding for optimizing flash translation layer operations
US20130151756A1 (en) Data de-duplication and solid state memory device
CN101488153A (zh) 嵌入式Linux下大容量闪存文件系统的实现方法
Lee et al. An efficient index buffer management scheme for implementing a B-tree on NAND flash memory
CN105912687A (zh) 海量分布式数据库存储单元
CN109407985B (zh) 一种数据管理的方法以及相关装置
Jin et al. Exploring index structures for zoned namespaces SSDs
CN114416646A (zh) 一种层级存储系统的数据处理方法及装置
KR100907477B1 (ko) 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법
CN102763070A (zh) 磁盘缓存的管理方法及装置
Fevgas et al. A study of R-Tree performance in hybrid flash/3DXPoint storage
Khernache et al. MONTRES-NVM: An external sorting algorithm for hybrid memory
KR101104112B1 (ko) 차세대 대용량 저장장치의 동적 색인 관리 시스템 및 그 방법과 그 소스 프로그램을 기록한 기록매체
Fevgas et al. HyR-tree: a spatial index for hybrid flash/3D XPoint storage
US20220050807A1 (en) Prefix probe for cursor operations associated with a key-value database system
KR100878142B1 (ko) 플래시 메모리 상에서의 효율적인 동작을 위한 수정된b-트리 인덱스 구성 방법
KR101861475B1 (ko) 비휘발성 메모리의 pcm+ 트리 데이터베이스화 방법
US9977612B1 (en) System data management using garbage collection and logs
CN105630692A (zh) 一种利用mram存储文件目录的文件存储系统
Gautam SSD Based Indexing and Tree Data Structures

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: 20180703

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190708

Year of fee payment: 6