KR101861475B1 - 비휘발성 메모리의 pcm+ 트리 데이터베이스화 방법 - Google Patents

비휘발성 메모리의 pcm+ 트리 데이터베이스화 방법 Download PDF

Info

Publication number
KR101861475B1
KR101861475B1 KR1020170018282A KR20170018282A KR101861475B1 KR 101861475 B1 KR101861475 B1 KR 101861475B1 KR 1020170018282 A KR1020170018282 A KR 1020170018282A KR 20170018282 A KR20170018282 A KR 20170018282A KR 101861475 B1 KR101861475 B1 KR 101861475B1
Authority
KR
South Korea
Prior art keywords
node
leaf node
creating
nonvolatile memory
tree
Prior art date
Application number
KR1020170018282A
Other languages
English (en)
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 KR1020170018282A priority Critical patent/KR101861475B1/ko
Priority to US15/891,546 priority patent/US10565174B2/en
Application granted granted Critical
Publication of KR101861475B1 publication Critical patent/KR101861475B1/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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • 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
    • 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/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90339Query processing by using parallel associative memories or content-addressable memories
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing

Landscapes

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

Abstract

발명의 실시예에 따른 비휘발성 메모리의 PCM+ 트리 데이터베이스화 방법은 노드를 제1 영역과 제2 영역으로 나누는 단계; 및 상기 노드에 특정 키(key) 값을 추가(insert), 검색(retrieve) 및 삭제(delete) 중 어느 하나를 선택하여 수행하는 단계;를 포함하고, 상기 키 값을 추가하는 단계는 상기 노드의 제2 영역이 풀(full) 상태인지를 판단하여 상기 노드의 제2 영역이 풀 상태가 아닐 경우 상기 제2 영역에 해당 키 값을 추가하고, 상기 노드의 제2영역이 풀 상태일 경우, 둘 이상의 노드로 레코드 정보를 분리하여 기록한다.

Description

비휘발성 메모리의 PCM+ 트리 데이터베이스화 방법{Database method for PCM+ tree of non-volatile memory}
본 발명은 비휘발성 메모리의 PCM+ 트리 데이터베이스화 방법에 관한 것으로, 보다 자세하게는 PCM+ 트리 구조를 비휘발성 램의 데이터 구조에 적용시킴으로써, 내구성 향상과 아울러 수명 및 데이터 처리 성능을 개선한 비휘발성 메모리의 PCM+ 트리 데이터베이스화 방법에 관한 것이다.
현재까지 수십 년 동안 HDD(Hard Disk Drive) 기반의 저장장치 시스템이 컴퓨터 시스템의 주 저장장치로 사용되어 왔지만, 최근에 이러한 상황에 변화가 생기기 시작했다. 그 이유는 NAND 플래시 메모리 때문이다. 최근 몇 년 동안에 NAND 플래시 메모리 기반의 저장장치가 기존의 HDD에 비하여 높은 성능, 낮은 전력 소비, 높은 신뢰성과 작은 폼팩터 등의 여러 가지 장점들로 인해 컴퓨터 시스템에 더욱 많이 사용되고 있다.
2009년 이후에 SSD(Solid State Drive)의 시장 규모가 매년 급격하게 성장할 것으로 예측된다. 하지만, NAND 플래시 메모리의 시장 점유율은 아직까지는 HDD의 시장 점유율에 비해서는 낮은 편이다. 이러한 원인은 NAND 플래시 메모리가 기존의 HDD에 비하여 고단가와 임의 쓰기와 같은 특정한 작업에서 HDD와 비교하여 비슷한 성능을 보이는 단점을 가지고 있기 때문이다.
한편, 여러 가지 비휘발성 램들 중에서 PCM이 NAND 플래시 메모리를 대체할 가장 유력한 비휘발성 램으로 예상되고 있으며, 다수의 반도체 회사들이 막대한 시간과 노력을 투입하여 상용화를 위한 연구를 진행하고 있다.
동적 랜덤 액세스 메모리(DRAM)로 구성된 인 메모리 데이터베이스는 기업에서 신속한 의사 결정 지원을 위해 사용된다. DRAM은 휘발성 메모리이므로, 데이터 손실을 막기 위해 정기적인 백업이 필요하다. 그러나 백업 전에 전원이 손실되면 데이터가 손실된다. 상 변화 메모리(Phase Change Memory, PCM)는 바이트 주소 형 저장 시스템으로서, DRAM보다 2 내지 4배 밀도가 높으며 NAND 플래시 메모리보다 읽기 대기 시간이 더 길고, 내구성 한계가 있다는 문제점이 있다.
상 변화 메모리는 바이트 주소 지정이 가능한 비휘발성 메모리 유형이다. 다른 휘발성 및 비휘발성 메모리에 비해 PCM은 DRAM보다 2 ~ 4 배 밀도가 높으며 NAND 플래시 메모리보다 읽기 대기 시간이 우수한 장점이 있다.
최근의 많은 응용 프로그램은 위치 정보와 같은 공간 데이터를 사용하고 있으며 이러한 이유로 공간 데이터를 메모리에 저장하는 것은 매우 중요하다. R 트리는 공간 데이터를 처리할 수 있는 잘 알려진 데이터 구조이나 많은 쓰기 작업을 수행하며, 이에 따라 수명이 단축되는 문제점이 있다.
등록특허 10-1557624
본 발명의 실시예에 따른 비휘발성 메모리의 PCM+ 트리 데이터베이스화 방법은 PCM 셀에 대한 쓰기 횟수를 감소시켜 내구성 문제를 해결하고, 데이터 처리 성능을 개선하는 것을 목적으로 한다.
발명의 실시예에 따른 비휘발성 메모리의 PCM+ 트리 데이터베이스화 방법은 노드를 제1 영역과 제2 영역으로 나누는 단계; 및 상기 노드에 특정 키(key) 값을 추가(insert), 검색(retrieve) 및 삭제(delete) 중 어느 하나를 선택하여 수행하는 단계;를 포함하고, 상기 키 값을 추가하는 단계는 상기 노드의 제2 영역이 풀(full) 상태인지를 판단하여 상기 노드의 제2 영역이 풀 상태가 아닐 경우 상기 제2 영역에 해당 키 값을 추가하고, 상기 노드의 제2영역이 풀 상태일 경우, 둘 이상의 노드로 레코드 정보를 분리하여 기록한다.
본 발명에 따른 비휘발성 메모리의 PCM+ 트리 데이터베이스화 방법에 의하면, PCM+ 트리 구조를 응용하여 PCM 등의 비휘발성 램의 데이터 구조에 적용시킴으로써, 전체적인 쓰기 횟수를 줄임과 아울러, 특정한 영역에 대한 쓰기의 집중을 방지하여 PCM과 같은 비휘발성 램의 내구성을 향상시킴과 아울러 데이터 처리 성능을 향상시킬 수 있다.
도 1은 발명의 실시예에 따른 리프 노드 및 루트 노드의 크기를 나타내는 도면이다.
도 2는 종래 노드 분할을 나타내는 도면이다.
도 3은 발명의 실시예에 따른 노드 분할을 나타내는 도면이다.
도 4는 레코드를 전부 포함시키는 최소크기의 바운딩 박스를 나타내는 도면이다.
도 5는 발명의 실시예에 따른 노드의 업데이트를 나타낸다.
도 6은 종래 기술에 따른 노드의 업데이트를 나타낸다.
도 7은 발명의 실시예에 따른 필팩터 요구 사항의 억제를 나타내는 도면이다.
도 8은 발명의 실시예에 따른 쓰기 횟수의 평균을 나타내는 그래프이다.
도 9는 발명의 실시예에 따른 비휘발성 메모리의 PCM+ 트리 데이터베이스화 방법을 나타내는 흐름도이다.
본 발명에서 사용되는 기술적 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아님을 유의해야 한다. 또한, 본 발명에서 사용되는 기술적 용어는 본 발명에서 특별히 다른 의미로 정의되지 않는 한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 의미로 해석되어야 하며, 과도하게 포괄적인 의미로 해석되거나, 과도하게 축소된 의미로 해석되지 않아야 한다. 또한, 본 발명에서 사용되는 기술적인 용어가 본 발명의 사상을 정확하게 표현하지 못하는 잘못된 기술적 용어일 때에는, 당업자가 올바르게 이해할 수 있는 기술적 용어로 대체되어 이해되어야 할 것이다. 또한, 본 발명에서 사용되는 일반적인 용어는 사전에 정의되어 있는 바에 따라, 또는 전후 문맥상에 따라 해석되어야 하며, 과도하게 축소된 의미로 해석되지 않아야 한다.
또한, 본 발명에서 사용되는 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함한다. 본 발명에서, "구성된다" 또는 "포함한다" 등의 용어는 발명에 기재된 여러 구성 요소들, 또는 여러 단계를 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시 예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성 요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
또한, 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 발명의 사상을 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 발명의 사상이 제한되는 것으로 해석되어서는 아니 됨을 유의해야 한다.
도 1은 발명의 실시예에 따른 리프 노드 및 루트 노드의 크기를 나타내는 도면이다. 구체적으로 도 1(a)는 종래 기술에 따른 R*트리를 나타내는 도면이고, 도 1(b)는 발명의 실시예에 따른 PCR* 트리를 나타내는 도면이다.
R* 트리는 중간 및 리프 노드 모두에 대해 동일한 최대 채우기 비율 값을 사용하며, 따라서 최소 채우기 비율 값은 최대 채우기 비율 값의 절반이이나, PCR* 트리의 경우 최대 채우기 비율 값은 리프 노드와 중간 노드에서 분리된다.
초기화 단계에서 중간 노드와 리프 노드의 최대 채우기 비율 값을 설정해야하는데 도 1(a)와 1(b)는 각각 32개의 데이터 객체를 저장하는 R* 트리와 PCR* 트리 구조의 예를 나타낸다.
도 1(a)에 도시된 바와 같이, 종래기술에 따른 루트 노드(root node)(10), 인터미디어트 노드(intermediate node)(15) 및 리프 노드(leaf node)(20)는 필 팩터의 값이 4로 동일하다.
따라서 각각의 노드에는 4개의 레코드가 기록될 수 있으며, 리프 노드(20)에 저장되어 있는 레코드를 검색하기 위해서는 루트 노드(10)에서 인터미디어트 노드(15)를 경유하게 된다. 이와 같이 두 단계를 통해 검색하게 되므로 검색 시간이 상대적으로 길어지게 된다.
도 1(b)에 도시된 바와 같이, 본 발명의 실시예에 따른 PCM+ 트리 데이터베이스화 방법에서는 리프 노드(leaf node)(200)의 크기(size)를 가변적으로 설정한다. 즉, 리프 노드(200)의 크기를 상기 리프 노드와 연결되는 비 리프 노드(도면에서는 루트 노드(100))의 n(자연수)의 배수로 형성한다.
구체적으로, 루트 노드(100)에 포함되는 레코드가 4개인 경우, 리프 노드(200)는 루트 노드(100)의 2배(8개), 3배(12개), 4배(16개) 등의 크기를 갖도록 설정되어 하나의 노드에 복수개의 레코드가 저장될 수 있다. 도면에서는 2배로 설정되어 리프 노드(200)의 필팩터는 8이고, 루트 노드(100)의 필팩터는 4이다.
이에 따라 루트 노드(100)에서 하나의 필팩터가 리프 노드(200)에서 복수의 8개의 필팩터를 담당하게 되어 레코드의 검색에 필요한 시간이 단축되는 효과가 있다.
즉, 리프 노드의 크기가 중간 노드 및 루트 노드의 크기보다 커지면 노드 내의 요소를 분할하거나 다시 삽입하는 오버 플로우 처리(Overflow Treatment)함수를 연기할 수 있다.
도시된 바와 같이, 실시예에 따른 트리는 더 적은 중간 노드를 필요로 하기 때문에 검색에 필요한 시간이 단축될 수 있다. 도면에서는 리프 노드와 루트 노드로 도시되었으나, 사이에 인터미디어트 노드가 배치될 수도 있다.
도 2는 종래 노드 분할을 나타내는 도면이고, 도 3은 발명의 실시예에 따른 노드 분할을 나타내는 도면이다. 도 2 및 3은 각각 새로 입력될 데이터 I가 최대 채우기 비율값 8인, 가득 차 있는 노드에 삽입된 경우를 나타낸다.
노드 내에 레코드가 가득하다는 등의 이유로 노드가 분할될 때 노드의 어느 부분에 포함되는 레코드가 새로 생성된 노드로 이동되어야 하는지를 나타내는 분할 인덱스(split index)를 검색해야 한다.
도 2에 도시된 바와 같이 분할 인덱스는 노드 중간에 있는데 R* 트리는 분할 인덱스 지점에서 시작하여 새로운 노드로 레코드를 하나씩 이동시켜 쓰기 횟수를 획기적으로 늘린다는 문제가 있다.
노드가 8개의 레코드를 포함하고 있고, 레코드가 가득하기 때문에 분할해야 하며 분할 인덱스는 노드의 다섯 번째 레코드이다. 각 레코드의 왼쪽 위 모서리에있는 숫자는 쓰기 수를 나타내고, 노드 내의 해당 숫자의 합계는 해당 노드에 대한 쓰기 수를 나타낸다. R* 트리는 중간에 있는 레코드를 제거한 후 노드가 일관되게 유지되도록 왼쪽으로 한 단계 이동하기 때문에 쓰기 횟수는 빠르게 증가한다.
데이터 E에서 시작하는 모든 데이터 객체, 즉, E부터 H까지의 데이터가 새로 생성된 노드로 이동해야 한다. 데이터 객체 E가 이동되면, 나머지 객체는 한 단계 왼쪽으로 이동해야 한다. 이 예에서 해당 노드에 대한 쓰기 수가 네 번 증가했다.
또한, F, G, H 및 I 데이터 객체도 새로 생성된 노드로 이동하여야 하므로 분할 노드에 대한 쓰기 횟수가 급격히 증가한다.
이 문제를 해결하기 위해 노드의 모든 요소를 분할 인덱스 지점에서 한 번에 이동시키는 것이 바람직하다. 이 접근법은 분할 노드에서 쓰기 횟수를 빠르게 줄이는 동시에 성능을 향상시키는 효과가 있다.
이를 위해 도 3에 도시된 바와 같이 분할 노드를 최소 노드가 기록된 경우 새로운 노드에 작성하는 것이 바람직하다. 노드가 성공적으로 분할되면 비어있는 새로운 노드를 생성후, 새로 생성된 노드에서 모든 재배치가 처리된 분할 노드를 복사한다.
이를 위해 제1 노드의 분리 지점을 선정하는 단계; 및 상기 분리 지점으로부터 시작하여 모든 레코드를 제2 노드로 동시에 이동시키는 단계가 수행된다.
즉, 레코드가 가득 채워져 있는 노드를 분리할 때, 레코드 별로 하나씩 데이터를 이동시키지 않고 데이터가 이분되도록 한번에 이동시키게 된다.
이후, 분할된 노드를 새로 생성된 노드로 대체한다. 새로운 노드는 최소한의 쓰기 횟수를 가진 비어있는 노드이다. 이 방법을 사용하면 업데이트 된 레코드 당 한번씩 쓰기 횟수가 증가하지만 모든 PCM 셀 간의 쓰기 수의 균형을 유지하고 모든 PCM 셀을 최대한 오래 유지할 수 있다.
즉, 도 3에 도시된 바와 같이, 제1 노드(201)에 8개의 레코드가 가득 차 있는 상황에서 저장이 필요한 새로운 레코드가 생성되는 경우, 제2 노드(202) 및 제3 노드(203)를 생성하여, 제2 노드(202)에 4개의 레코드를 기록하고, 제3 노드(203)에 5개의 레코드를 기록한다. 노드의 분리 지점은 추가되는 레코드 값에 따라 달라질 수 있다.
도 4는 레코드를 전부 포함시키는 최소크기로 바운딩 박스를 나타내는 도면이다. 도 5는 발명의 실시예에 따른 노드의 업데이트를 나타내고, 도 6은 종래 기술에 따른 노드의 업데이트를 나타낸다.
트리에서 리프 노드에 변화가 있다면, 그 노드의 모든 부모 노드를 루트 노드까지 갱신할 필요가 있다. 그러나 노드가 업데이트 될 때마다 내구성이 저하되므로 쓰기 횟수를 최소화할 필요가 있다.
도 4에 도시된 바와 같이, 레코드를 전부 포함시키는 최소크기로 바운딩 박스를 형성하고, 이를 포함할 수 있는 포인트를 포함하고, 상기 포인트로 바운딩 박스를 도시할 수 있다.
따라서, 도 4에서 레코드로 A만 포함하는 경우 (1,1) 및 (2,2)의 포인트를 이용하여 바운딩 박스를 도시할 수 있다. 레코드를 하나 이동시킬 때마다 루트 노드의 값을 바꿔줘야 하나, 본 발명의 실시예에서는 모든 레코드가 이동을 종료한 후에 루트 노드의 값을 변경함으로써, 쓰기 횟수를 감소시킬 수 있다.
도 4에서 루트 노드는 리프 노드의 수정 후에 업데이트 되어야 한다. 처음에는 포인트가 (1,1) 및 (2,2)인 데이터 객체 A의 MBR(master boot record)을 부모 노드에 기록한다.
다음으로, 노드에 추가되는 데이터 객체 C의 MBR은 부모 노드의 MBR과 비교되며, 부모의 MBR은 종래 기술에 따르면 도 6와 같이 (1,1) 및 (3,6)으로 다시 업데이트 되어야 한다. 그 후에, 데이터 객체 E의 MBR은 부모의 MBR과 비교되어야 하며, 부모의 MBR은 (1,1) 및 (4,6)로 다시 업데이트 되어야 한다.
위 프로세스는 부모 노드의 MBR이 비교되고 자식 노드의 모든 MBR로 업데이트 될 때까지 계속된다. 이 예에서 루트 노드 MBR은 부모 노드를 인접한 리프 노드로 업데이트하는 동안 두번 더 수정된다.
본 실시예에서는 도 4에서와 같이 쓰기 횟수를 감소시키기 위해 루트 노드 MBR은 부모 노드를 인접한 리프 노드로 업데이트하는 과정이 종료된 후에 수정하므로, 쓰기 횟수를 감소시킬 수 있다.
부모 노드 MBR은 최대 채우기 비율 값이 작기 때문에 5번 업데이트되었다. 그러나 더 큰 최대 채우기 비율 값을 사용하면 업데이트 수가 증가하고, 높이의 증가에 따라 더 많은 쓰기가 요구된다.
본 발명의 실시예에서는 레코드의 변경시 상기 레코드를 전부 포함시키는 최소크기로 바운딩 박스를 형성하는 단계; 및 리프 노드 레코드의 MBR 값을 비교하고 루트 노드의 MBR 값을 계산하여 상기 계산된 값을 루트 노드에 기록하는 단계를 포함한다. 이에 따라 부모 노드에 한 번의 기재로 쓰기 횟수를 감소시킬 수 있다.
도 7은 발명의 실시예에 따른 필팩터 요구 사항의 억제를 나타내는 도면이다. R* 트리의 최소 채우기 요구 사항을 충족시키려면, 데이터가 삭제된 후 노드에 최소 채우기 비율값(절반) 이상의 레코드가 있어야 하고, 레코드 개수의 절반보다 적은 레코드가 포함되어 있으면 해당 노드의 레코드가 다른 노드와 병합(merge)되어야 한다.
그러나, 병합 작업이 PCM의 내구성을 낭비하고 성능을 저하 시키므로 노드가 절반 이하가 되면 노드를 병합하는 것이 매우 빠를 수 있다. 병합 작업은 최소 채우기 레코드 요구 사항을 충족하지 않는 노드를 삭제해야 하며 삭제된 노드의 데이터 개체를 다시 트리에 삽입해야 하므로 성능이 저하된다.
따라서 삭제 연산을 위한 최소한의 필 팩터 요구 사항을 억제한다. 즉, 병합하지 않는다. 이에 따라 검색에 필요한 시간은 감소되지 않으나, 쓰기 횟수를 줄일 수 있다.
도 7에 도시된 바와 같이 4개의 레코드를 저장할 수 있는 제4 노드(204)에 최소 필 팩터(fill factor)인 2개의 레코드가 저장되어 있는 상황에서 하나의 레코드가 삭제되면, 남아있는 레코드를 다른 노드에 병합시키지 않고 그대로 둔다. 노드가 감소하지 않기 때문에 검색에 필요한 시간은 감소되지 않으나, 쓰기 횟수를 줄일 수 있다.
또한, 추후 새로운 레코드를 써야하는 상황에서 제4 노드(204)의 레코드를 활용하게 되면 분리 및 병합하는 과정에서 늘어나는 쓰기 횟수를 감소시킬 수 있다.
도 8은 발명의 실시예에 따른 쓰기 횟수의 평균을 나타내는 그래프이다. PCR* 트리 및 R* 트리에 삽입된 것들 중에서 50 만개의 무작위 원소를 삭제하면서 노드 당 평균 쓰기 수를 나타내었다.
도시된 바와 같이 발명의 실시예에 따른 비휘발성 메모리의 PCM+ 트리 데이터베이스화 방법은 쓰기 횟수가 감소되었음을 확인할 수 있다.
도 9는 발명의 실시예에 따른 비휘발성 메모리의 PCM+ 트리 데이터베이스화 방법을 나타내는 흐름도이다.
도시된 바와 같이 노드(node)를 제1 영역과 제2 영역으로 나누는 단계(S100); 상기 각각의 노드에 특정 키(key) 값을 추가(insert), 검색(retrieve) 및 삭제(delete) 중 어느 하나를 선택하여 수행하는 단계;를 포함하되, 신규 키 값 추가시에는 상기 제2영역에 우선 저장된다(S200).
이때, 상기 키 값을 추가하는 단계는 상기 노드의 제2 영역이 풀(full) 상태인지를 판단하여(S300), 상기 노드의 제2 영역이 풀(full) 상태가 아닐 경우 상기 제2영역에 해당 키 값을 추가하고, 상기 노드의 제2영역이 풀 상태일 경우, 레코드 정보를 분리하여 새로운 둘 이상의 노드에 각각 기록한다(S400).
상기 키 값을 추가할 때 상기 새로운 둘 이상의 노드로 이동되는 키 값을 오름차순 또는 내림차순으로 정렬할 수 있다.
이상에서 설명한 바와 같이 본 발명에 따른 비휘발성 메모리의 PCM+ 트리 데이터베이스화 방법에 의하면, PCM+ 트리 구조를 응용하여 PCM 등의 비휘발성 램의 데이터 구조에 적용시킴으로써, 전체적인 쓰기 횟수를 줄임과 아울러, 특정한 영역에 대한 쓰기의 집중을 방지하여 PCM과 같은 비휘발성 램의 내구성을 향상시킴과 아울러 데이터 처리 성능을 향상시킬 수 있다.
또한, 본 발명의 실시예에서는 PCM+ 트리 구조에 대해 기술되었으나, 이에 대해 한정하는 것은 아니고 R 트리, R+ 트리 및 R* 트리에도 적용될 수 있다.
상술한 실시예에 설명된 특징, 구조, 효과 등은 본 발명의 적어도 하나의 실시예에 포함되며, 반드시 하나의 실시예에만 한정되는 것은 아니다. 나아가, 각 실시예에서 예시된 특징, 구조, 효과 등은 실시예들이 속하는 분야의 통상의 지식을 가지는 자에 의하여 다른 실시예들에 대해서도 조합 또는 변형되어 실시 가능하다.
따라서 이러한 조합과 변형에 관계된 내용들은 본 발명의 범위에 포함되는 것으로 해석되어야 할 것이다. 또한, 이상에서 실시예들을 중심으로 설명하였으나 이는 단지 예시일 뿐 본 발명을 한정하는 것이 아니며, 본 발명이 속하는 분야의 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성을 벗어나지 않는 범위에서 이상에 예시되지 않은 여러 가지의 변형과 응용이 가능함을 알 수 있을 것이다. 예를 들어, 실시예들에 구체적으로 나타난 각 구성 요소는 변형하여 실시할 수 있는 것이다. 그리고 이러한 변형과 응용에 관계된 차이점들은 첨부한 청구 범위에서 규정하는 본 발명의 범위에 포함되는 것으로 해석되어야 할 것이다.
100: 루트 노드
200: 리프 노드

Claims (15)

  1. 비휘발성 메모리 데이터베이스화 방법에 있어서,
    노드를 제1 영역과 제2 영역으로 나누는 단계; 및
    상기 노드에 특정 키(key) 값을 이용하여 추가(insert), 검색(retrieve) 및 삭제(delete) 중 어느 하나를 수행하는 단계;를 포함하고,
    상기 수행하는 단계에 있어 상기 추가(insert)를 수행하는 경우,
    상기 노드의 제2 영역이 풀(full) 상태인지를 판단하여 상기 노드의 제2 영역이 풀 상태가 아닐 경우 상기 제2 영역에 해당 키 값을 추가하고, 상기 노드의 제2영역이 풀 상태일 경우, 레코드 정보를 분리하여 새로운 둘 이상의 노드에 각각 기록하는 것을 특징으로 하며
    상기 새로운 둘 이상의 노드에 각각 기록하는 것은 제2 영역이 풀 상태인 노드의 분리 지점을 선정하고 상기 분리 지점에 따라 상기 제2 영역이 풀 상태인 노드의 모든 레코드를 분할하여 상기 새로운 둘 이상의 노드로 각각 동시에 이동시킴으로써 이루어지는 것을 특징으로 하는 비휘발성 메모리의 PCM+ 트리 데이터베이스화 방법.
  2. 제1 항에 있어서,
    상기 새로운 둘 이상의 노드에 기록되는 키 값을 오름차순 또는 내림차순으로 정렬하는 것을 특징으로 하는 비휘발성 메모리의 PCM+ 트리 데이터베이스화 방법.
  3. 제1 항에 있어서,
    상기 노드가 리프 노드인경우, 상기 리프 노드의 크기를 상기 리프 노드와 연결되는 비 리프 노드의 n(자연수)배로 형성된 노드,
    인 것을 특징으로 하는 비휘발성 메모리의 PCM+ 트리 데이터베이스화 방법.
  4. 제1 항 또는 제3 항에 있어서,
    상기 수행하는 단계에 있어 상기 삭제(delete)를 수행하는 경우,
    삭제로 인하여 상기 노드에 기록된 데이터 수가 상기 노드의 최대 필 팩터의 절반에 미달되더라도 다른 노드와 병합하지 않는 것을 특징으로 하는 비휘발성 메모리의 PCM+ 트리 데이터베이스화 방법.
  5. 제1 항에 있어서,
    상기 수행하는 단계에 있어 상기 추가(insert)를 수행하거나 상기 삭제(delete)를 수행하는 경우,
    키 값의 추가, 삭제로 인하여 변경되는 레코드를 전부 포함시키는 최소크기로 바운딩 박스를 형성하는 단계; 및 리프 노드 레코드의 MBR 값을 비교하고 루트 노드의 MBR 값을 계산하여 상기 계산된 값을 루트 노드에 기록하는 단계를 포함하는 것을 특징으로 하는 비휘발성 메모리의 PCM+ 트리 데이터베이스화 방법.
  6. 비휘발성 메모리의 트리 데이터베이스화 방법으로서,
    상기 비휘발성 메모리는
    적어도 하나의 비-리프 노드; 및
    상기 비-리프 노드와 연관되어 데이터 객체를 저장하고, 가변적으로 상기 비-리프 노드의 사이즈의 N배의 크기를 가지는, 적어도 하나의 리프 노드(N은 자연수)를 포함하고,
    대상 리프 노드가 가득 찬 경우 적어도 하나 이상의 새로운 데이터 객체가 삽입되면, 새로운 둘 이상의 리프 노드를 생성하는 단계;
    상기 대상 리프 노드의 데이터 객체들를 분할 인덱스 지점을 기준으로 분할하는 단계; 및
    분할된 데이터 객체들을 상기 생성된 리프 노드 각각에 한번에 재배열하는 단계를 포함하는,
    비휘발성 메모리의 트리 데이터 베이스화 방법.
  7. 제6 항에 있어서,
    상기 분할하는 단계는
    삽입되는 데이터 객체의 수에 따라 상기 분할 인덱스 지점이 설정되는 것인,
    비휘발성 메모리의 트리 데이터 베이스화 방법.
  8. 제6 항에 있어서,
    상기 리프 노드를 생성하는 단계는
    최소한의 쓰기 횟수를 가진 비어있는 노드를 생성하는 것인,
    비휘발성 메모리의 트리 데이터 베이스화 방법.
  9. 제6 항에 있어서,
    상기 비-리프 노드에 저장되는 적어도 하나의 데이터 객체는 상기 비-리프 노드에 연결된 상기 리프 노드 내에 저장된 데이터 객체들의 바운딩 박스의 포인트 값을 저장하는 것인,
    비휘발성 메모리의 트리 데이터 베이스화 방법.
  10. 제9 항에 있어서,
    상기 바운딩 박스는
    상기 리프 노드 내에 저장된 데이터 객체들을 전부 포함시키는 최소 크기로 형성되는 것인,
    비휘발성 메모리의 트리 데이터 베이스화 방법.
  11. 제9 항에 있어서,
    상기 바운딩 박스의 포인트 값은
    상기 리프 노드의 MBR(Master Boot Record) 인,
    비휘발성 메모리의 트리 데이터 베이스화 방법.
  12. 제11 항에 있어서,
    상기 재배열 단계 종료 후에
    상기 비-리프 노드에 저장된 각각의 MBR을 한번에 업데이트하는 단계를 더 포함하는 것인,
    비휘발성 메모리의 트리 데이터 베이스화 방법.
  13. 제6 항에 있어서,
    상기 트리 데이터베이스화 방법은
    상기 리프 노드 내 데이터 객체가 최소 채우기 비율값(fill factor) 이하 개수인 경우, 다른 리프 노드와 병합하지 않는 것인,
    비휘발성 메모리의 트리 데이터 베이스화 방법.
  14. 제13 항에 있어서,
    적어도 하나 이상의 새로운 데이터 객체가 삽입되는 경우 상기 병합하지 않은 리프 노드에 삽입되는 것인,
    비휘발성 메모리의 트리 데이터 베이스화 방법.
  15. 제6 항에 있어서,
    상기 비휘발성 메모리는
    상 변화 메모리(Phase Change Memory)인,
    비휘발성 메모리의 트리 데이터 베이스화 방법.



KR1020170018282A 2017-02-09 2017-02-09 비휘발성 메모리의 pcm+ 트리 데이터베이스화 방법 KR101861475B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020170018282A KR101861475B1 (ko) 2017-02-09 2017-02-09 비휘발성 메모리의 pcm+ 트리 데이터베이스화 방법
US15/891,546 US10565174B2 (en) 2017-02-09 2018-02-08 Operating method for non-volatile memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170018282A KR101861475B1 (ko) 2017-02-09 2017-02-09 비휘발성 메모리의 pcm+ 트리 데이터베이스화 방법

Publications (1)

Publication Number Publication Date
KR101861475B1 true KR101861475B1 (ko) 2018-05-29

Family

ID=62452740

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170018282A KR101861475B1 (ko) 2017-02-09 2017-02-09 비휘발성 메모리의 pcm+ 트리 데이터베이스화 방법

Country Status (2)

Country Link
US (1) US10565174B2 (ko)
KR (1) KR101861475B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200098971A (ko) * 2019-02-13 2020-08-21 울산과학기술원 싱글-레벨 기반의 데이터 저장 장치 및 방법

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6647386B2 (en) * 2000-12-14 2003-11-11 International Business Machines Corporation Method, system, and program for reverse index scanning
US8930375B2 (en) * 2012-03-02 2015-01-06 Cleversafe, Inc. Splitting an index node of a hierarchical dispersed storage index
KR101438667B1 (ko) 2012-08-10 2014-09-12 영남대학교 산학협력단 비휘발성 램 기반의 b+ 트리 데이터베이스화 방법
US10067969B2 (en) * 2015-05-29 2018-09-04 Nuodb, Inc. Table partitioning within distributed database systems
US10496283B2 (en) * 2016-01-22 2019-12-03 Suraj Prabhakar WAGHULDE Adaptive prefix tree based order partitioned data storage system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200098971A (ko) * 2019-02-13 2020-08-21 울산과학기술원 싱글-레벨 기반의 데이터 저장 장치 및 방법
KR102233880B1 (ko) * 2019-02-13 2021-03-30 울산과학기술원 싱글-레벨 기반의 데이터 저장 장치 및 방법

Also Published As

Publication number Publication date
US20180225312A1 (en) 2018-08-09
US10565174B2 (en) 2020-02-18

Similar Documents

Publication Publication Date Title
US10496621B2 (en) Columnar storage of a database index
US10496283B2 (en) Adaptive prefix tree based order partitioned data storage system
US10248676B2 (en) Efficient B-Tree data serialization
KR100922389B1 (ko) 플래시 메모리를 위한 색인 스킴
CN103838853B (zh) 一种基于不同存储介质的混合文件系统
KR102310246B1 (ko) 세컨더리 인덱스 생성 방법 및 세컨더리 인덱스 저장 장치
CN109213432B (zh) 利用日志结构合并树将数据写入的存储设备及其方法
KR101438667B1 (ko) 비휘발성 램 기반의 b+ 트리 데이터베이스화 방법
CN111414134B (zh) 面向持久内存文件系统的事务写优化框架的方法及系统
CN107783988A (zh) 一种目录树的加锁方法及设备
WO2015152830A1 (en) Method of maintaining data consistency
US20240028560A1 (en) Directory management method and system for file system based on cuckoo hash and storage medium
CN111522507A (zh) 一种低延迟的文件系统地址空间管理方法、系统及介质
KR100907477B1 (ko) 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법
Jin et al. Exploring index structures for zoned namespaces SSDs
US9092470B2 (en) Method and system for storing tabular data in a memory-efficient manner
CN113722319A (zh) 基于学习索引的数据存储方法
KR101861475B1 (ko) 비휘발성 메모리의 pcm+ 트리 데이터베이스화 방법
KR101377923B1 (ko) 지연 갱신을 수행하는 b-트리를 사용하여 플래시 메모리 내에 데이터를 저장하는 장치 및 방법
WO2015129109A1 (ja) インデックス管理装置
US20130246842A1 (en) Information processing apparatus, program, and data allocation method
KR100878142B1 (ko) 플래시 메모리 상에서의 효율적인 동작을 위한 수정된b-트리 인덱스 구성 방법
KR102287774B1 (ko) 비휘발성 메모리를 이용한 로그 구조 병합 트리 기반의 데이터 베이스의 데이터 처리 방법
KR100982591B1 (ko) 단계적 인덱싱을 위한 파일 시스템, 메인 기억장치 및플래시 기억장치 그리고 상기 단계적 인덱싱을 통한 데이터관리 방법
KR101970874B1 (ko) 비휘발성 메모리 저장 장치를 위한 하이브리드 해시 인덱스

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant