KR20140070834A - Modified searching method and apparatus for b+ tree - Google Patents

Modified searching method and apparatus for b+ tree Download PDF

Info

Publication number
KR20140070834A
KR20140070834A KR1020120135813A KR20120135813A KR20140070834A KR 20140070834 A KR20140070834 A KR 20140070834A KR 1020120135813 A KR1020120135813 A KR 1020120135813A KR 20120135813 A KR20120135813 A KR 20120135813A KR 20140070834 A KR20140070834 A KR 20140070834A
Authority
KR
South Korea
Prior art keywords
node
update
queue
entries
searching
Prior art date
Application number
KR1020120135813A
Other languages
Korean (ko)
Other versions
KR101425817B1 (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 KR1020120135813A priority Critical patent/KR101425817B1/en
Publication of KR20140070834A publication Critical patent/KR20140070834A/en
Application granted granted Critical
Publication of KR101425817B1 publication Critical patent/KR101425817B1/en

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/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
    • 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/9027Trees
    • 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]

Landscapes

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

Abstract

The present invention relates to a method and an apparatus for updating modified b+ tree nodes. The method for updating modified b+ tree nodes according to the present invention comprises the steps of: queuing an update operation with entries of a preset operation queue to store an inputted update operation; searching a plurality of nodes corresponding to the entries of the queue according to a first algorithm; and performing an update according to the update operation of the searched nodes. According to the present invention, search speed can be improved based on the internal parallelism of a flash SSD when a B+ tree is searched and thus the efficiency of update of the nodes can be improved.

Description

수정된 B+트리 노드 갱신 방법 및 장치{MODIFIED SEARCHING METHOD AND APPARATUS FOR B+ TREE} [0001] MODIFIED SEARCHING METHOD AND APPARATUS FOR B + TREE [0002]

본 발명은 수정된 B+트리 노드 갱신 방법 및 장치에 관한 것으로 보다 상세하게는, 메모리 칩 기반의 데이터 저장 장치에 있어서 입력 요청의 키 값에 대하여 소정의 범위를 가지는 I/O(입출력 Input/Output)을 전송하여 수정된 B+트리 노드를 갱신하는 방법 및 장치에 관한 것이다. The present invention relates to a modified B + tree node update method and apparatus, and more particularly, to a method and apparatus for updating a modified B + tree node using an I / O (input / output) To a method and apparatus for updating a modified B + tree node.

SSD는 반도체 플래시메모리상에 데이터를 영구 저장할 수 있도록 고안된 저장 장치로서, SSD는 실제로 동작하는 부품이 전혀 없기 때문에 기존의 하드디스크 드라이브와는 다르며, 집적회로를 디스크 드라이브처럼 구성한 반도체 메모리 배열을 가진다. An SSD is a storage device designed to permanently store data on a semiconductor flash memory. The SSD differs from a conventional hard disk drive because there is no component that actually operates, and has a semiconductor memory array in which the integrated circuit is configured as a disk drive.

이러한 방식은 여러 가지 장점을 가지는데, 우선 데이터 전달속도가 기존의 하드디스크 드라이브에 비해 훨씬 빠르다. 탐색시간과 지연시간 역시 획기적으로 줄었으며, 대개의 사용자들은 컴퓨터 부팅시간 역시 매우 빨라진 것을 느낄 수 있다. 구동되거나 고장 날 부품 자체가 없기 때문에 내구성이 더 강해지고 더 조용해졌다. This approach has several advantages. First, the data transfer speed is much faster than the conventional hard disk drive. Search time and latency are also drastically reduced, and most users can feel the computer boot up time is also very fast. Durability is stronger and quieter because there is no driven or faulty part itself.

그러나, 종래의 하드 디스크와 달리 플래시 메모리와 플래시SSD(Solid State Drive)는 데이터 베이스관리 시스템 (Database Management System : DBMS)에 적용하는데 있어 DBMS는 비대칭적인 읽기/쓰기 속도 및 반복되는 쓰기 요청에 따른 SSD의 사용 가능 기간의 단축이라는 문제점이 있다. 따라서, 이러한 문제점들에 대한 보완 기술들이 개발되어가고 있는 추세이며, DBMS등 다양한 분야에 대한 SSD의 활용이 증가하고 있는 추세이다.However, unlike the conventional hard disk, the flash memory and the flash SSD (Solid State Drive) are applied to the database management system (DBMS). In the DBMS, the asymmetric read / write speed and the SSD There is a problem in that the usable period of time is shortened. Accordingly, supplementary techniques for these problems are being developed, and the use of SSDs in various fields such as DBMS is increasing.

본 발명은 상기 종래 기술의 문제를 해결하기 위하여 안출된 것으로서, 플래시SSD의 내부 병렬성에 기초하여 다수의 I/O를 이용하여 B+트리의 노드를 갱신함에 있어 시스템 자원을 초과하지 않도록 하는 검색 방법을 통하여 노드를 갱신하는 방법을 제공하고자 하는데 그 목적이 있다.SUMMARY OF THE INVENTION The present invention is conceived to solve the problems of the prior art, and it is an object of the present invention to provide a search method for updating a node of a B + tree using a plurality of I / Os based on internal parallelism of a flash SSD, And a method for updating the node through the network.

상기 기술적 과제를 해결하기 위한 본 발명의 일실시예에 따른 수정된 B+ 트리의 갱신 방법은 입력 받은 업데이트 오퍼레이션을 저장하기 위하여 미리 설정된 오퍼레이션 큐의 엔트리로 상기 업데이트 오퍼레이션을 큐잉하는 단계; 상기 큐의 복수의 엔트리에 대응되는 복수의 노드를 제1 알고리즘에 따라 탐색하는 단계; 및 상기 탐색된 복수의 노드의 상기 업데이트 오퍼레이션에 따른 갱신을 수행하는 단계를 포함한다.According to an aspect of the present invention, there is provided a method of updating a modified B + tree, the method comprising: queuing the update operation with an entry of a predetermined operation queue to store an update operation; Searching a plurality of nodes corresponding to a plurality of entries of the queue according to a first algorithm; And performing an update according to the update operation of the searched plurality of nodes.

상기 큐의 복수의 엔트리에 기초하여 적어도 하나 이상의 키 값(key value)이 포함된 검색 범위를 설정하는 단계; 상기 설정된 검색 범위에 기초하여 자식 노드(child node)들을 검색하기 위한 포인터들로 구성된 포인터 세트를 생성하는 단계; 상기 생성된 포인터 세트를 이용하여 병렬적으로 I/O 요청을 전송하는 단계; 및 상기 전송된 I/O 요청을 기초로 상기 엔트리에 대응되는 노드를 검색하는 단계를 포함한다.Setting a search range including at least one key value based on a plurality of entries of the queue; Generating a set of pointers comprising pointers for searching for child nodes based on the set search range; Transmitting an I / O request in parallel using the generated pointer set; And retrieving a node corresponding to the entry based on the transmitted I / O request.

상기 탐색하는 단계에 앞서, 상기 오퍼레이션 큐의 엔트리들을 정렬하는 단계를 더 포함하고, 상기 탐색하는 단계는 상기 정렬된 상기 큐의 복수의 엔트리에 대응되는 노드를 탐색하는 것이 바람직하다.Preferably, prior to the step of searching, further comprising the step of sorting the entries of the operation queue, wherein the searching step searches for a node corresponding to a plurality of entries of the sorted queue.

상기 갱신을 수행하는 단계는 상기 노드의 갱신에 따라 발생하는 복수의 경계 키를 상기 노드의 부모 노드를 포함하는 중간 노드에 전파하고, 상기 중간 노드는 상기 펜스키에 따라 갱신되는 것이 바람직하다.The step of performing the update preferably propagates a plurality of boundary keys generated according to the update of the node to an intermediate node including a parent node of the node, and the intermediate node is updated according to the Pinsky.

상기 갱신을 수행하는 단계는 상기 노드가 인덱스 삭제 오퍼레이션에 따라 언더플로우 되는 경우 노드의 재배치 및 합병을 수행하는 것이 바람직하다.The step of performing the update preferably performs relocation and merging of nodes when the node underflows according to an index delete operation.

상기 갱신을 수행하는 단계는 상기 노드가 인덱스 삽입 오퍼레이션에 따라 오버플로우 되는 경우 노드의 분할을 수행하는 것이 바람직하다.The step of performing the update preferably performs partitioning of the node when the node overflows according to an index insertion operation.

상기 갱신을 수행하는 단계는 갱신된 노드를 플래시 메모리에 기록하는 것이 바람직하다.The step of performing the update preferably records the updated node in the flash memory.

상기 갱신에 따라 발생하는 경계키는 루트 노드까지 순회하며 전파되는 것이 바람직하다.Preferably, the boundary key generated according to the update travels through the route to the root node.

상기 기술적 과제를 해결하기 위한 본 발명의 일실시예에 따른 수정된 B+ 트리의 갱신 장치는 입력 받은 업데이트 오퍼레이션을 저장하기 위하여 미리 설정된 오퍼레이션 큐의 엔트리로 상기 업데이트 오퍼레이션을 큐잉하는 업데이트 오퍼레이션 큐잉부; 상기 큐의 복수의 엔트리에 대응되는 복수의 노드를 제1 알고리즘에 따라 탐색하는 오퍼레이션 노드 탐색부; 및 상기 탐색된 복수의 노드의 상기 업데이트 오퍼레이션에 따른 갱신을 수행하는 갱신 수행부를 포함한다.According to an aspect of the present invention, there is provided an apparatus for updating a modified B + tree, the apparatus comprising: an update operation queuing unit for queuing the update operation with an entry of a preset operation queue to store an update operation inputted; An operation node searching unit for searching a plurality of nodes corresponding to a plurality of entries of the queue according to a first algorithm; And an update performing unit for performing an update according to the update operation of the searched plurality of nodes.

본 발명에 따르면 B+트리를 검색하는데 있어 플래시SSD의 내부 병렬성에 기초하여 검색 속도의 향상과 함께 이에 따른 노드의 업데이트의 효율이 증가된다. According to the present invention, in search of a B + tree, the efficiency of update of the node is increased along with the improvement of the search speed based on the internal parallelism of the flash SSD.

도 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+ 트리의 갱신 방법의 노드 탐색 단계를 나타내는 세부 흐름도이다.
도 7은 본 발명의 일실시예에 따른 오퍼레이션 큐를 나타내는 예시도이다.
도 8 내지 14는 본 발명의 일실시에에 따른 수정된 B+ 트리의 갱신 방법의 트리 구조를 도식화하여 나타내는 예시도이다.
도 15는 본 발명의 일실시예에 따른 수정된 B+ 트리의 갱신 장치를 나타내는 블록도이다.
1 is a reference diagram showing an internal structure of a flash SSD (Solid State Drive)
2A and 2B are reference diagrams for measuring a delay time for random input / output (Read / Write) according to the I / O size of the flash SSD.
FIGS. 3A to 3C are reference views showing benchmark results for input / output (Read / Write) at an outstanding I / O level.
4 is a reference diagram for explaining an intermediate node structure for a B + tree configuration.
5 is a flowchart illustrating a method of updating a modified B + tree according to an embodiment of the present invention.
6 is a detailed flowchart illustrating a node search step of a modified B + tree update method according to an embodiment of the present invention.
7 is an exemplary diagram illustrating an operation queue according to an embodiment of the present invention.
FIGS. 8 to 14 are schematic diagrams illustrating a tree structure of a modified B + tree update method according to an embodiment of the present invention. FIG.
15 is a block diagram illustrating an apparatus for updating a modified B + tree according to an embodiment of the present invention.

이하에서는 본 발명의 일부 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 아울러 본 발명을 설명함에 있어 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다.Hereinafter, some embodiments of the present invention will be described in detail with reference to the accompanying drawings. In the following description, well-known functions or constructions are not described in detail since they would obscure the invention in unnecessary detail.

이하의 실시예들은 본 발명의 구성요소들과 특징들을 소정 형태로 결합한 것들이다. 각 구성요소 또는 특징은 별도의 명시적 언급이 없는 한 선택적인 것으로 고려될 수 있다. 각 구성요소 또는 특징은 다른 구성요소나 특징과 결합하지 않은 형태로 실시될 수 있다. 또한, 일부 구성요소들 및/또는 특징들을 결합하여 본 발명의 실시예를 구성할 수도 있다. 본 발명의 실시예들에서 설명되는 동작들의 순서는 변경될 수 있다. 어느 실시예의 일부 구성이나 특징은 다른 실시예에 포함될 수 있고, 또는 다른 실시예의 대응하는 구성 또는 특징과 교체될 수 있다.The following embodiments are a combination of elements and features of the present invention in a predetermined form. Each component or characteristic may be considered optional unless otherwise expressly stated. Each component or feature may be implemented in a form that is not combined with other components or features. In addition, some of the elements and / or features may be combined to form an embodiment of the present invention. The order of the operations described in the embodiments of the present invention may be changed. Some configurations or features of certain embodiments may be included in other embodiments, or may be replaced with corresponding configurations or features of other embodiments.

본 발명의 실시예들은 다양한 수단을 통해 구현될 수 있다. 예를 들어, 본 발명의 실시예들은 하드웨어, 펌웨어(firmware), 소프트웨어 또는 그것들의 결합 등에 의해 구현될 수 있다. Embodiments of the present invention may be implemented by various means. For example, embodiments of the present invention may be implemented by hardware, firmware, software, or a combination thereof.

하드웨어에 의한 구현의 경우, 본 발명의 실시예들에 따른 방법은 하나 또는 그 이상의 ASICs(application specific integrated circuits), DSPs(digital signal processors), DSPDs(digital signal processing devices), PLDs(programmable logic devices), FPGAs(field programmable gate arrays), 프로세서, 콘트롤러, 마이크로 콘트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.For a hardware implementation, the method according to embodiments of the present invention may be implemented in one or more application specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs) , Field programmable gate arrays (FPGAs), processors, controllers, microcontrollers, microprocessors, and the like.

펌웨어나 소프트웨어에 의한 구현의 경우, 본 발명의 실시예들에 따른 방법은 이상에서 설명된 기능 또는 동작들을 수행하는 모듈, 절차 또는 함수 등의 형태로 구현될 수 있다. 소프트웨어 코드는 메모리 유닛에 저장되어 프로세서에 의해 구동될 수 있다. 메모리 유닛은 프로세서 내부 또는 외부에 위치하여, 이미 공지된 다양한 수단에 의해 프로세서와 데이터를 주고 받을 수 있다.In the case of an implementation by firmware or software, the method according to embodiments of the present invention may be implemented in the form of a module, a procedure or a function for performing the functions or operations described above. The software code can be stored in a memory unit and driven by the processor. The memory unit is located inside or outside the processor, and can exchange data with the processor by various known means.

이하의 설명에서 사용되는 특정(特定) 용어들은 본 발명의 이해를 돕기 위해서 제공된 것이며, 이러한 특정 용어의 사용은 본 발명의 기술적 사상을 벗어나지 않는 범위에서 다른 형태로 변경될 수 있다.It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are intended to provide further explanation of the invention, and are not intended to limit the scope of the invention.

SSD(Solid State Drive 또는 Solid State Disk)는 마그네틱 디스크(magnetic disk)를 이용하지 않고 SDRAM(Synchronous DRAM)이나 플래시 메모리(flash memory)와 같은 메모리 칩을 이용하는 데이터 저장 장치이다. 본 발명의 실시예에서 데이터 저장 장치는 플래시 메모리 등의 메모리 칩을 기반으로 한다면 SSD 외 다른 것도 무방하다. 이하에서는 데이터 저장 장치의 예로 SSD를 들어 설명한다.
A solid state drive (SSD) or a solid state disk (SSD) is a data storage device that uses a memory chip such as a synchronous DRAM (SDRAM) or a flash memory without using a magnetic disk. In the embodiment of the present invention, the data storage device may be other than the SSD if it is based on a memory chip such as a flash memory. Hereinafter, an SSD will be described as an example of a data storage device.

도 1은 플래시SSD의 내부 구성을 개략적으로 도시한 블록도이다. 도 1에 따르면, 플래시 SSD는 CPU부(101), 램(RAM)부(103), 호스트 인터페이스부(105), 버퍼 컨트롤 모듈(107), ECC(Error Correction Code) 모듈(109), 플래시 메모리 칩부(111)를 포함한다. 도 1을 참조하여 플래시 SSD의 내부 구성을 개략적으로 설명한다.1 is a block diagram schematically showing an internal configuration of a flash SSD. 1, the flash SSD includes a CPU unit 101, a RAM unit 103, a host interface unit 105, a buffer control module 107, an ECC (Error Correction Code) module 109, And a chip portion 111. The internal structure of the flash SSD will be schematically described with reference to FIG.

CPU부(101)가 데이터 쓰기 요청을 명령하면 외부 데이터 저장부로부터 데이터를 로드하여, 호스트 인터페이스부(105)를 거쳐 버퍼 컨트롤 모듈(107)로 전송된다. 호스트 인터페이스부(105)와 버퍼 컨트롤 모듈(107)은 적어도 1개의 채널 데이터 버스(113)을 통해 상호 연결된다. CPU부(101)는 CPU 버스(115)를 통해 호스트 인터페이스부(105), 버퍼 컨트롤 모듈(107)등에 연결된다. 플래시 메모리 칩부(111)는 요청된 데이터가 쓰여지며, 채널별로 분할된 데이터가 복수의 플래시 메모리 칩에 써진다.When the CPU 101 instructs a data write request, data is loaded from the external data storage unit and transferred to the buffer control module 107 via the host interface unit 105. The host interface unit 105 and the buffer control module 107 are interconnected through at least one channel data bus 113. The CPU unit 101 is connected to the host interface unit 105, the buffer control module 107, and the like via the CPU bus 115. The flash memory chip unit 111 writes the requested data, and data divided for each channel is written to a plurality of flash memory chips.

도 2 및 도 3을 참조하여 플래시 SSD의 내부 병렬성으로 인한 차이에 대하여 설명한다. 플래시 SSD의 병렬성에 따른 성능을 벤치마크 하기 위하여, SATA II, SATA III와 같은 호스트 인터페이스 타입, 주요 SSD 컨트롤러 벤더(Intel, Fusion-io, SandForce, Marvell 등)의 컨트롤러들, 플래시 메모리 타입(SLC 50nm, SLC 35nm, MLC 35nm, MLC 25nm)의 플래시 SSD에 대하여 테스트를 실시하였다.The difference due to the internal parallelism of the flash SSD will be described with reference to FIGS. 2 and 3. FIG. In order to benchmark the performance of the flash SSDs in parallel, we need a host interface type such as SATA II, SATA III, controllers of major SSD controller vendors (Intel, Fusion-io, SandForce, Marvell etc.) , SLC 35 nm, MLC 35 nm, MLC 25 nm) flash 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에 더 적합하기 때문이다.FIG. 2A is a reference diagram for explaining a measurement of a delay time for a random input according to an I / O size. FIG. 2B is a diagram illustrating a measurement of a delay time for a random input according to an I / It is a reference diagram. It is measured by setting the I / O size to increase twice in 2Kb. 2A and 2B, it can be seen that the increase in I / O size and the delay time due to input / output (read / write) do not increase linearly. That is, it can be seen that the delay time according to the 4 Kb random input / output (read / write) is almost equal to or less than the delay time according to the 2 Kb random input / output (read / write), and the bandwidth is improved more than twice. This is because handling large I / Os is more suitable for SSDs.

도 3a는 I/O 사이즈를 4Kb로 고정하여 입력(Read)을 수행한 경우의 벤치마크 결과를 도시한 것이며, 도 3b는 I/O 사이즈를 4Kb로 고정하여 출력(Write)을 수행한 경우의 벤치마크 결과를 도시한 것이다. 아웃스탠딩(Outstanding) I/O 레벨에서 입출력(Read/Write) 대역폭을 점점 증가하는 것을 알 수 있다. FIG. 3A shows a benchmark result when an I / O size is fixed to 4Kb and an input (Read) is performed. FIG. 3B shows a case where an I / O size is fixed to 4Kb to perform an output Benchmark results are shown. It can be seen that the input / output (Read / Write) bandwidth gradually increases at the outstanding I / O level.

아웃스탠딩(Outstanding) I/O레벨이란 동시에 복수의 I/O 요청을 보낼 때의 동시 I/O 요청의 개수를 의미한다. 즉, 동시에 복수의 I/O 요청이 하나의 SSD에 요청되는 경우 SSD 내부에 내재된 다수의 플래시 메모리 칩에서 동시 I/O 처리가 가능해지므로, 내재된 플래시 메모리 칩의 개수에 비례하는 빠른 대역폭(도1의 경우 현재의 하드디스크보다 10~15배의 빠름)을 가지게 되며, 이러한 특징은 메모리칩 기반의 데이터 저장장치의 중요한 I/O 특징에 해당한다.Outstanding I / O level refers to the number of simultaneous I / O requests when sending multiple I / O requests at the same time. That is, when a plurality of I / O requests are requested to one SSD at the same time, simultaneous I / O processing can be performed in a plurality of flash memory chips built in the SSD. Therefore, a fast bandwidth 1 to 10 times faster than the current hard disk), which is an important I / O characteristic of a memory chip based data storage device.

도 3c는 아웃스탠딩(Outstanding) I/O 레벨에서 입출력을 혼합한 경우를 도시한 것이다. 고인터리브(highly interleaved)된 작업부하(workloads)보다 인터리브되지 아니한(non-interleaved) 작업부하의 입출력 대역폭이 더 크다는 것을 도시한 것이다.FIG. 3C shows a case where input / output is mixed at an outstanding I / O level. Output bandwidth of a non-interleaved workload is greater than highly interleaved workloads.

도 2 및 도 3에서 설명한 바와 같이 패키지 레벨의 병렬성을 활용하기 위하여는 I/O 기본 단위의 크기가 큰 것이 바람직하다. 대역폭을 증가시키기 위한 기본 I/O 단위의 크기가 커지면 해당 I/O 단위를 처리하기 위한 지연시간이 커질 수 있으므로 지연 시간과 대역폭 확장의 상호 관계속에서 결정되어야 한다. As described with reference to FIGS. 2 and 3, in order to utilize the parallelism of the package level, it is preferable that the size of the I / O basic unit is large. When the size of the basic I / O unit for increasing the bandwidth increases, the delay time for processing the corresponding I / O unit may become large. Therefore, it should be decided in relation to the delay time and the bandwidth extension.

채널 레벨의 병렬성을 활용하기 위해선 복수의 I/O 요청을 플래시 SSD와 같은 메모리 칩 기반의 저장장치에 동시에 전송하여야 한다. 복수의 I/O 요청을 생성하기 위해 I/O 요청 하나당 하나의 개별 프로세스를 활용하는 방법도 가능하지만, 이 방법의 경우 프로세스 생성의 비용이 너무 크므로, 하나의 개별 프로세스에서 I/O 요청 다수를 동시에 보낼 수 있는 비동기식 (asynchronous: async) I/O 기법을 활용한다. 동기식(synchronous: sync) I/O는 데이터의 송수신의 완료를 기다리고 나서 다른 처리를 수행하는 타입이며, 비동기식(asynchronous: async) I/O는 데이터 입출력에 있어서 데이터의 송수신의 완료를 기다리지 아니하고 다른 처리를 수행하는 I/O 타입이다.To take advantage of channel level parallelism, multiple I / O requests must be sent simultaneously to a memory chip-based storage device such as a flash SSD. It is also possible to utilize one individual process per I / O request to create multiple I / O requests, but this method is too costly to create a process, so that multiple I / O requests from one individual process Asynchronous (asynchronous) I / O technique that can simultaneously send data to the host. Synchronous (sync) I / O is a type that performs other processing after waiting for completion of data transmission. Asynchronous (async) I / O does not wait for completion of data transmission / I / O type.

도 4를 참조하여 B+트리 구성을 위한 중간 노드 구조(Internal node structure)를 설명한다. Pi는 i번째 위치한 포인터 값을, Ki는 i번째 위치한 키 값을 의미하며(i 는 자연수). F는 중간 노드로부터 전개되는 노드들과 연결된 팬아웃(fanout)을 의미한다. 즉, B+트리를 구성하는 중간 노드들은 자식 노드(child node)를 가리키는 포인터 값들과 키 값들로 구성된다. 따라서, 본 발명에서 키 값들과 관련된 자식 노드(child node)들을 검색할 수 있도록 연관된 포인터란 Ki에 근접한 Pi 및 Pi+1를 말한다.The internal node structure for the B + tree structure will be described with reference to FIG. Pi is the i-th positioned pointer value, Ki is the i-th key value (i is a natural number). F means a fanout connected to nodes deployed from an intermediate node. That is, the intermediate nodes constituting the B + tree are composed of pointer values and key values indicating a child node. Accordingly, in the present invention, an associated pointer to retrieve child nodes associated with key values is Pi and Pi + 1 close to Ki.

도 5를 참조하여 본 발명의 일 실시예에 따른 수정된 B+트리 노드 갱신 방법을 설명한다. 본 실시예에 따른 B+트리 노드 갱신 방법은 업데이트 오퍼레이션 큐잉 단계(S100), 노드 탐색 단계(S200), 갱신 수행 단계(S300)를 포함한다.A modified B + tree node update method according to an embodiment of the present invention will be described with reference to FIG. The B + tree node update method according to this embodiment includes an update operation queuing step (S100), a node search step (S200), and an update performing step (S300).

본 실시예에 따른 B+트리의 갱신 방법은 플래시 메모리의 채널의 레벨을 동일화에 의한 삽입, 삭제, 업데이트와 같은 업데이트 오퍼레이션을 최적화 하는 방법에 관한 것이다. A method for updating a B + tree according to the present embodiment relates to a method for optimizing update operations such as insertion, deletion, and update by equalizing the levels of channels of a flash memory.

먼저 업데이트 오퍼레이션 큐잉 단계(S100)는 입력 받은 업데이트 오퍼레이션을 저장하기 위하여 미리 설정된 오퍼레이션 큐의 엔트리로 업데이트 오퍼레이션을 큐잉한다.First, the update operation queuing step (SlOO) queues the update operation with an entry of a preset operation queue to store the received update operation.

본 실시예에 따른 오퍼레이션 큐에 대해 설명하면, 업데이트 오퍼레이션은 오퍼레이션 큐에 일괄(batch) 업데이트 오퍼레이션이 진행되기 전까지 상주한다. 오퍼레이션 큐의 적용은 트리를 탐색하기 전에 오퍼레이션 큐의 엔트리를 스캔하기 위한 알고리즘을 포함한다. 따라서 큐의 엔트리들은 성공적으로 탐색된다.Describing the operation queue according to the present embodiment, the update operation resides until a batch update operation is performed in the operation queue. The application of the operation queue includes an algorithm for scanning the entries of the operation queue before searching the tree. Thus, the entries in the queue are successfully searched.

본 실시예에서 오퍼레이션 큐의 엔트리는 인덱스 레코드와, 오퍼레이션 타입을 지정하는 오퍼레이션 플래그로 구성된다. 도 7을 참조하면, 도 7은 오퍼레이션 큐의 예를 나타낸다. 오퍼레이션 큐를 구성하는 배열의 영역은 두 개로 나누어진다. 하나는 정렬된 배열 영역을 위한 것이고 다른 하나는 최근에 추가된 엔트리를 위한 영역이다. 두 개의 영역은 정렬된 오프셋에 의해 구분된다. 오퍼레이션큐는 오퍼레이션 큐 내의 인덱스 레코드 탐색 비용과, 새로운 엔트리를 삽입하는데 드는 비용을 고려하여야한다. 매 업데이트 오퍼레이션에서, 오퍼레이션큐는 새로운 엔트리를 생성하고 다음 슬롯에 가장 최근에 삽입된 엔트리를 키값들의 순서를 고려하지 않고 추가한다.In this embodiment, the entry of the operation queue is composed of an index record and an operation flag specifying an operation type. Referring to Fig. 7, Fig. 7 shows an example of an operation queue. The area of the array that constitutes the operation queue is divided into two parts. One for the aligned array area and the other for the recently added entry. The two regions are separated by aligned offsets. The operation queue should take into account the cost of searching the index records in the operation queue and the cost of inserting new entries. In every update operation, the operation queue creates a new entry and adds the most recently inserted entry in the next slot without considering the order of the key values.

오퍼레이션큐의 삽입 비용은 하나의 메인메모리의 페이지의 접근을 통해 수행되는 경우 최소화된다.The insertion cost of the operation queue is minimized when it is performed through accessing pages of one main memory.

본 실시예에 따른 B+ 트리의 갱신 방법은 탐색하는 단계에 앞서, 오퍼레이션 큐의 엔트리들을 정렬하는 단계를 더 포함하고, 후술하는 탐색하는 단계는 정렬된 큐의 복수의 엔트리에 대응되는 노드를 탐색한다.The method of updating a B + tree according to the present embodiment further includes a step of sorting entries of an operation queue prior to the searching step, and the searching step described below searches for a node corresponding to a plurality of entries of the sorted queue .

도 8을 참조하면, 본 실시예에 따른 갱신 방법은 오퍼레이션 큐가 가득 차게 되는 경우 오퍼레이션 큐의 엔트리들을 정렬한다. 오퍼레이션 큐에 대한 정렬은 정렬시간(sort period) 동안 수행되며, 정렬된 오프셋 이전의 엔트리는 정렬할 필요가 없다. 따라서 정렬된 오프셋 이후의 삽입된 엔트리들은 정렬된다. 이후, 정렬된 영역과 결합된다. 이들의 결합은 머지 소트에 의해 수행되는 것이 바람직하다. 이러한 특징 때문에 오퍼레이션 큐 내의 탐색은 이진 탐색에 의해 정렬된 영역은 수행되며, 정렬되지 않은 영역은 선형 탐색에 의한다. Referring to FIG. 8, the update method according to the present embodiment aligns the entries of the operation queue when the operation queue becomes full. Alignment to the operation queue is performed during the sort period, and entries before the aligned offset need not be sorted. Thus, the inserted entries after the aligned offset are aligned. And then combined with the aligned region. It is preferable that the combination of these is performed by merseyside. Because of this feature, the search within the operation queue is performed by the binary search, and the search by the nonlinear search is by linear search.

본 실시예에 따른 B+ 트리의 갱신 방법의 노드 탐색 단계는 큐의 복수의 엔트리에 대응되는 복수의 노드를 제1 알고리즘에 따라 탐색한다. 제1 알고리즘은 수정된 B+트리의 다중 탐색을 위한 알고리즘으로 이는 도 6을 통해 보다 상세히 설명한다.
The node searching step of the B + tree updating method according to the present embodiment searches a plurality of nodes corresponding to a plurality of entries of the queue according to the first algorithm. The first algorithm is an algorithm for multiple searches of the modified B + tree, which is described in more detail in FIG.

도 6을 참조하면, 본 실시예에 따른 노드 탐색 단계의 노드 탐색을 위한 제1 알고리즘은 검색 범위 설정 단계(S210), 포인트 세트 생성 단계(S220), I/O 요청 전송 단계(S230), 노드 검색 단계(S240)를 포함한다Referring to FIG. 6, the first algorithm for node search in the node search step according to the present embodiment includes a search range setting step S210, a point set creation step S220, an I / O request transmission step S230, And includes a search step S240

검색 범위 설정 단계(S210)는 큐의 복수의 엔트리에 기초하여 적어도 하나 이상의 키 값(key value)이 포함된 검색 범위를 설정한다. 키 값이란 사용자의 입력에 기초하여 자식 노드의 데이터를 검색할 수 있도록 하는 데이터를 의미한다. The search range setting step S210 sets a search range including at least one key value based on a plurality of entries of the queue. The key value refers to data that allows the user to retrieve the data of the child node based on the user's input.

본 발명의 일 실시예에 따르면, 검색 범위 설정 단계(S210)는 사용자의 입력 요청에 기초한 적어도 하나 이상의 키 값에 대하여 검색 범위의 시작값 및 검색 범위의 종료값을 추출하는 단계 및 추출된 시작값과 종료값을 가지는 검색 범위를 설정하는 단계를 포함한다. 예를 들어, 검색 범위의 시작값은 사용자의 입력 요청에 기초한 키 값 중 최소값으로 추출되며, 검색 범위의 종료값은 사용자의 입력 요청에 기초한 키 값 중 최대값으로 추출되도록 구현될 수 있다. 따라서, 사용자의 요청에 따른 키 값 세트가 {1, 2, 42, 65, 67}이라고 할 경우 그 중 최소값은 1, 최대값은 67이므로 검색 범위는 1≤S<67 로 설정된다. According to an embodiment of the present invention, a search range setting step (S210) includes extracting a start value of a search range and an end value of a search range for at least one or more key values based on a user's input request, And setting a search range having an end value. For example, the start value of the search range may be extracted as a minimum value among key values based on a user's input request, and the end value of the search range may be extracted as a maximum value among key values based on a user's input request. Therefore, when the key value set according to the user's request is {1, 2, 42, 65, 67}, the minimum value is set to 1 and the maximum value is set to 67, so that the search range is set to 1? S <67.

포인트 세트 생성 단계(S220)는 설정된 검색 범위에 기초하여 자식 노드(child node)들을 검색하기 위한 포인터들로 구성된 포인터 세트를 생성한다. 포인터 세트는 자식 노드(child node)의 위치를 지시하기 위한 포인터들의 세트를 의미한다. The point set creation step S220 creates a pointer set composed of pointers for searching child nodes based on the set search range. A pointer set is a set of pointers for indicating the position of a child node.

본 발명의 일 실시예에 따르면, 포인터 세트를 생성하는 단계(S220)는 검색 범위에 해당하는 키 값들을 추출하고, 추출된 키 값들과 관련된 자식 노드(child node)들을 검색할 수 있도록 연관된 포인터들을 추출한 다음 추출한 연관된 포인터들을 가용 메모리 산출을 위해 B+트리의 형태에 기초하여 설정된 I/O 파라미터에 따라 포인터 세트를 설정한다.According to an exemplary embodiment of the present invention, the step of generating a pointer set (S220) includes extracting key values corresponding to a search range, and associating pointers to retrieve child nodes related to extracted key values And sets the pointer according to the I / O parameter set based on the type of the B + tree for calculating the available memory of the extracted extracted and related pointers.

본 발명의 다른 실시예에 따르면, 추출한 연관된 포인터의 개수가 I/O파라미터를 초과하는 경우, I/O 파라미터의 설정에 따라 복수의 포인터 세트를 설정한다. 추출한 연관된 포인터의 개수가 설정된 I/O 파라미터를 초과하는 경우는 병렬적으로 I/O를 전송하게 되면 최대 가용 메모리를 초과하여 사용하게 되며 시스템 지연, 검색 속도 저하 등의 문제점이 발생할 수 있다. 따라서, 추출한 연관된 포인터의 개수가 설정된 I/O파라미터를 초과하는 경우 복수의 포인터 세트를 설정한다. 즉, I/O 파라미터와 B+트리의 높이에 기초한 지수를 이용하여 확보한 메모리 공간의 단위에 적합하도록 포인터 세트를 설정하고, 나머지 포인터들에 대하여 반복적으로 세트를 설정한다. 설정된 복수의 포인터 세트에 대하여는 I/O 요청을 하나의 포인터 세트에 대하여 병렬적으로 I/O 요청을 전송하고, 전송된 I/O 요청에 따라 데이터 검색을 수행한 후 다른 포인터 세트에 대하여 I/O 요청을 전송한다.According to another embodiment of the present invention, when the number of extracted related pointers exceeds the I / O parameter, a plurality of pointer sets are set according to the setting of the I / O parameter. If the number of associated pointers extracted exceeds the set I / O parameter, if I / O is transmitted in parallel, it will be used in excess of the maximum available memory, and problems such as system delay and search speed may occur. Therefore, when the number of extracted related pointers exceeds the set I / O parameter, a plurality of pointer sets are set. That is, the pointer set is set to fit the unit of the memory space secured by using the index based on the I / O parameter and the height of the B + tree, and the set is repeatedly set for the remaining pointers. For a plurality of pointer sets, I / O requests are sent in parallel to one pointer set, data search is performed according to the transmitted I / O requests, and I / O request.

I/O 요청 전송 단계(S230)는 생성된 포인터 세트를 이용하여 병렬적으로 I/O 요청을 전송한다. 본 발명의 일 실시예에 따르면, 포인터 세트에 포함된 포인터를 이용하여 비동기화된(asynchronous) 적어도 하나 이상의 I/O 요청을 데이터 저장 장치에 동시에 전송하도록 구현될 수 있다. 데이터 저장 장치는 복수의 I/O 채널(channel)을 가지는 메모리 칩을 이용하는 데이터 저장 장치인 것이 바람직하다.The I / O request transmission step (S230) transmits the I / O request in parallel using the generated pointer set. According to an embodiment of the present invention, it is possible to simultaneously transmit at least one asynchronous I / O request to the data storage device using a pointer included in the pointer set. The data storage device is preferably a data storage device using a memory chip having a plurality of I / O channels.

노드 검색 단계(S240)는 전송된 I/O 요청을 기초로 입력 요청에 대응되는 노드의 데이터를 검색한다. 본 발명의 일 실시예에 따르면 깊이 우선 탐색(Depth First Search : DFS)를 이용하여 노드의 데이터를 검색하도록 구현될 수 있다.The node searching step (S240) searches the data of the node corresponding to the input request based on the transmitted I / O request. According to an embodiment of the present invention, it is possible to retrieve data of a node using a depth first search (DFS).

본 실시예에서 갱신 수행 단계(S300)는 탐색된 복수의 노드의 업데이트 오퍼레이션에 따른 갱신을 수행한다.In the present embodiment, the update performing step S300 performs update according to the update operation of the plurality of discovered nodes.

즉, 갱신 수행 단계(S300)는 노드가 인덱스 삭제 오퍼레이션에 따라 언더플로우 되는 경우 노드의 재배치 및 합병을 수행하거나, 노드가 인덱스 삽입 오퍼레이션에 따라 오버플로우 되는 경우 노드의 분할을 수행한다.That is, in step S300, the node performs relocation and merging when the node underflows according to the index deletion operation, or performs partitioning when the node overflows according to the index insertion operation.

또한 노드의 갱신에 따라 발생하는 복수의 경계 키를 노드의 부모 노드를 포함하는 중간 노드에 전파하고, 중간 노드는 펜스키에 따라 갱신되는 것이 바람직하다.It is also preferable that a plurality of boundary keys generated according to the update of the node are propagated to the intermediate node including the parent node of the node, and the intermediate node is updated according to the Pinsky.

나아가, 갱신에 따라 발생하는 경계키는 루트 노드까지 순회하며 전파되며, 전파 과정에서 중간 노드는 분할될 수 있다.Further, the boundary key generated according to the update propagates through the route to the root node, and the intermediate node can be divided in the propagation process.

이하 도 9내지 도 14 통해 보다 노드 갱신 단계에 대하여 보다 상세히 설명하면, 오퍼레이션 큐의 엔트리들은 루트 노드의 키 값을 통해 복수의 그룹으로 그룹화 되고 선택된 그룹에 대응되는 중간 노드를 읽는다(도 9).9 through 14, the entries of the operation queue are grouped into a plurality of groups through the key value of the root node, and the intermediate nodes corresponding to the selected group are read (FIG. 9).

다음, 대응되는 중간 노드의 키값을 통해 선택된 그룹의 엔트리를 재 그룹화 한다. 도 10의 대응되는 중간 노드는 리프 노드로 한 번에 접근 가능하다. 이 경우, 도 11 참조하면, 오퍼레이션 큐의 엔트리들은 리프노드로 분배되며, 리프노드는 각각의 엔트리에 대한 업데이트 오퍼레이션을 일괄적으로 수행하게 된다.Next, regroups the entries of the selected group through the key value of the corresponding intermediate node. The corresponding intermediate node in FIG. 10 is accessible at once to the leaf node. In this case, referring to FIG. 11, the entries of the operation queue are distributed to the leaf nodes, and the leaf nodes collectively perform update operations for the respective entries.

도 12 참조하면, 삽입 오퍼레이션에 의해 리프노드들은 본 실시예에 따른 트리의 차수를 초과하게 되며, 노드는 분할된다. 노드 분할에 따라 새로이 발생하는 경계키는 중간 노드, 즉 부모노드에 삽입된다. 본 실시예에서 노드 갱신에 따라 갱신된 트리는 도 13 같아 진다. 이후 도 14 참조하면, 오퍼레이션 큐는 업데이트 오퍼레이션의 큐잉을 기다린다. 이하 상술한 실시예에 따른 수정된 B+ 트리의 갱신 방법을 의사 코드(Pseudo Code)로 도시하면 표 1과 같다.Referring to Fig. 12, by the insertion operation, the leaf nodes exceed the degree of the tree according to this embodiment, and the node is divided. The newly generated boundary key according to the node partitioning is inserted into the intermediate node, that is, the parent node. In the present embodiment, the tree updated according to the node update is as shown in Fig. 14, the operation queue waits for the queuing of the update operation. Hereinafter, the modified B + tree update method according to the above-described embodiment is shown in Table 1 as pseudo code.

Figure pat00001
Figure pat00001

먼저 본 실시예에 따른 노드 탐색 방법에 따라 리프 노드에 다다를 때까지, 순회한다(line 10-21). 리프 노드에 다다른후 엔트리의 인덱스에 대응되는 리프 노드에 대하여 업데이트 오퍼레이션을 수행한다(line 3-6, 28-39). 리프노드가 삽입 오퍼레이션에 의해 가득 차게되면(오버플로우) 노드를 분할 한다(line 29-30). 리프노드가 삭제 오퍼레이션에 의해 언더플로우되면, 노드 재배치 및 합병이 수행된다(line 33-34). 업데이트 오퍼레이션은 그룹화된 엔트리 그룹에 대하여 일괄적으로 수행된다. 업데이트된 리프노드는 플래시 메모리에 기록한다(line 8). First, according to the node search method according to the present embodiment, it is traversed until reaching the leaf node (line 10-21). The update operation is performed on the leaf node corresponding to the index of the entry after the leaf node (line 3-6, 28-39). If the leaf node is filled by the insert operation (overflow), the node is divided (line 29-30). If the leaf node is underflowed by the delete operation, node relocation and merging are performed (lines 33-34). The update operation is performed collectively for grouped entry groups. The updated leaf node is written to flash memory (line 8).

복수의 노드가 분할되게 되면, 복수의 경계키를 부모노드에 전파하게 되며 따라서 경계키에 대한 기록이 필요하다(line 6, 31-32). 전파된 경계키 기록을 리프노드로부터 받게 중간 노드는 경계키를 이용하여 갱신된다(line 21-24). rudrPzl 기록이 중간 노드에 삽입되면, 분할이 수행되고, 이때 발생되는 다른 경계키의 기록 역시 해당 노드의 부모 노드로 전파된다(line 24, 29-32). 이러한 전파는 루트노드에 다다를 때까지 반복되며, 갱신되는 중간 노드에 대한 기록은 플래시 메모리에 기록된다(line 26).When a plurality of nodes are divided, a plurality of boundary keys are propagated to the parent node, and therefore, recording of the boundary key is required (line 6, 31-32). The intermediate node is updated using the boundary key to receive the propagated boundary key record from the leaf node (lines 21-24). When the rudrPzl record is inserted into the intermediate node, the partitioning is performed, and the record of the other boundary key generated at this time is also propagated to the parent node of the node (line 24, 29-32). This propagation is repeated until it reaches the root node, and the record for the intermediate node being updated is written to the flash memory (line 26).

이하 상술한 실시예에 따른 노드 탐색 방법을 수행하는 수정된 B+ 트리의 갱신 장치에 대하여 설명한다. 도 15를 참조하면, 본 실시예에 따른 갱신 장치는 입력 받은 업데이트 오퍼레이션을 저장하기 위하여 미리 설정된 오퍼레이션 큐의 엔트리로 업데이트 오퍼레이션을 큐잉하는 업데이트 오퍼레이션 큐잉부(100), 오퍼레이션 큐의 엔트리들을 정렬하는 오퍼레이션 큐 정렬부(200), 큐의 복수의 엔트리에 대응되는 복수의 노드를 제1 알고리즘에 따라 탐색하는 노트 탐색부(300), 탐색된 복수의 노드의 업데이트 오퍼레이션에 따른 갱신을 수행하는 갱신 수행부(400)를 포함한다. Hereinafter, an apparatus for updating a modified B + tree for performing a node search method according to the above-described embodiment will be described. Referring to FIG. 15, the update apparatus according to the present embodiment includes an update operation queuing unit 100 for queuing an update operation with an entry of a preset operation queue in order to store an update operation inputted, an operation for sorting entries of an operation queue A queue searching unit (200) for searching a plurality of nodes corresponding to a plurality of entries of the queue according to a first algorithm, an update performing unit (400).

이상의 수정된 B+ 트리의 갱신 장치의 각 구성요소는 상술한 갱신 방법에서 대응되는 각 단계를 수행하는 것으로 이에 대한 상세한 설명은 중복되므로 생략한다.Each element of the updated B + tree update apparatus performs each step corresponding to the update method described above, and detailed description thereof will be omitted.

한편 본 발명의 수정된 B+ 트리의 갱신 방법은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.The modified B + tree update method of the present invention can be implemented by a computer-readable code on a computer-readable recording medium. A computer-readable recording medium includes all kinds of recording apparatuses in which data that can be read by a computer system is stored.

컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장장치 등이 있으며, 또한 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트 들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.Examples of the computer-readable recording medium include ROM, RAM, CD-ROM, magnetic tape, floppy disk, optical data storage, and the like. Computer-readable code in a distributed fashion can be stored and executed. In addition, functional programs, codes, and code segments for implementing the present invention can be easily deduced by programmers skilled in the art to which the present invention belongs.

이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위 내에서 다양한 수정, 변경 및 치환이 가능할 것이다. It will be apparent to those skilled in the art that various modifications, substitutions and substitutions are possible, without departing from the scope and spirit of the invention as disclosed in the accompanying claims. will be.

따라서, 본 발명에 개시된 실시예 및 첨부된 도면들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예 및 첨부된 도면에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구 범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리 범위에 포함되는 것으로 해석되어야 할 것이다.Therefore, the embodiments disclosed in the present invention and the accompanying drawings are intended to illustrate and not to limit the technical spirit of the present invention, and the scope of the technical idea of the present invention is not limited by these embodiments and the accompanying drawings . The scope of protection of the present invention should be construed according to the following claims, and all technical ideas within the scope of equivalents should be construed as falling within the scope of the present invention.

Claims (18)

입력 받은 업데이트 오퍼레이션을 저장하기 위하여 미리 설정된 오퍼레이션 큐의 엔트리로 상기 업데이트 오퍼레이션을 큐잉하는 단계;
상기 큐의 복수의 엔트리에 대응되는 복수의 노드를 제1 알고리즘에 따라 탐색하는 단계; 및
상기 탐색된 복수의 노드의 상기 업데이트 오퍼레이션에 따른 갱신을 수행하는 단계를 포함하는 것을 특징으로 하는 수정된 B+ 트리의 갱신 방법.
Queuing the update operation with an entry of a preset operation queue to store the received update operation;
Searching a plurality of nodes corresponding to a plurality of entries of the queue according to a first algorithm; And
And performing an update according to the update operation of the searched plurality of nodes.
제 1 항에 있어서 상기 탐색하는 단계는,
상기 큐의 복수의 엔트리에 기초하여 적어도 하나 이상의 키 값(key value)이 포함된 검색 범위를 설정하는 단계;
상기 설정된 검색 범위에 기초하여 자식 노드(child node)들을 검색하기 위한 포인터들로 구성된 포인터 세트를 생성하는 단계;
상기 생성된 포인터 세트를 이용하여 병렬적으로 I/O 요청을 전송하는 단계; 및
상기 전송된 I/O 요청을 기초로 상기 엔트리에 대응되는 노드를 검색하는 단계를 포함하는 것을 특징으로 하는 수정된 B+ 트리의 갱신 방법.
2. The method of claim 1,
Setting a search range including at least one key value based on a plurality of entries of the queue;
Generating a set of pointers comprising pointers for searching for child nodes based on the set search range;
Transmitting an I / O request in parallel using the generated pointer set; And
And retrieving a node corresponding to the entry based on the transmitted I / O request.
제 1 항에 있어서 상기 탐색하는 단계에 앞서,
상기 오퍼레이션 큐의 엔트리들을 정렬하는 단계를 더 포함하고,
상기 탐색하는 단계는 상기 정렬된 상기 큐의 복수의 엔트리에 대응되는 노드를 탐색하는 것을 특징으로 하는 수정된 B+ 트리의 갱신 방법.
2. The method according to claim 1,
Further comprising the step of sorting the entries of the operation queue,
Wherein the searching step searches for a node corresponding to a plurality of entries of the sorted queue.
제 1 항에 있어서,
상기 갱신을 수행하는 단계는 상기 노드의 갱신에 따라 발생하는 복수의 경계 키를 상기 노드의 부모 노드를 포함하는 중간 노드에 전파하고, 상기 중간 노드는 상기 펜스키에 따라 갱신되는 것을 특징으로 하는 수정된 B+ 트리의 갱신 방법.
The method according to claim 1,
Wherein the step of performing the update comprises propagating a plurality of boundary keys, which occur in response to the update of the node, to an intermediate node including a parent node of the node, wherein the intermediate node is updated according to the Pinsky. Updated B + tree.
제 1 항에 있어서,
상기 갱신을 수행하는 단계는 상기 노드가 인덱스 삭제 오퍼레이션에 따라 언더플로우 되는 경우 노드의 재배치 및 합병을 수행하는 것을 특징으로 하는 수정된 B+ 트리의 갱신 방법.
The method according to claim 1,
Wherein performing the update comprises performing a relocation and merge of the node when the node underflows according to an index delete operation.
제 1 항에 있어서,
상기 갱신을 수행하는 단계는 상기 노드가 인덱스 삽입 오퍼레이션에 따라 오버플로우 되는 경우 노드의 분할을 수행하는 것을 특징으로 하는 수정된 B+ 트리의 갱신 방법.
The method according to claim 1,
Wherein performing the update further comprises partitioning the node when the node overflows according to an index insertion operation.
제 1 항에 있어서,
상기 갱신을 수행하는 단계는 갱신된 노드를 플래시 메모리에 기록하는 것을 특징으로 하는 수정된 B+ 트리의 갱신 방법.
The method according to claim 1,
Wherein the updating step writes the updated node to the flash memory.
제 4 항에 있어서,
상기 갱신에 따라 발생하는 경계키는 루트 노드까지 순회하며 전파되는 것을 특징으로 하는 수정된 B+ 트리의 갱신 방법.
5. The method of claim 4,
Wherein the boundary key generated according to the update travels to the root node and propagates.
입력 받은 업데이트 오퍼레이션을 저장하기 위하여 미리 설정된 오퍼레이션 큐의 엔트리로 상기 업데이트 오퍼레이션을 큐잉하는 업데이트 오퍼레이션 큐잉부;
상기 큐의 복수의 엔트리에 대응되는 복수의 노드를 제1 알고리즘에 따라 탐색하는 오퍼레이션 노드 탐색부; 및
상기 탐색된 복수의 노드의 상기 업데이트 오퍼레이션에 따른 갱신을 수행하는 갱신 수행부를 포함하는 것을 특징으로 하는 수정된 B+ 트리의 갱신 장치.
An update operation queuing unit for queuing the update operation with an entry of a preset operation queue to store an update operation inputted;
An operation node searching unit for searching a plurality of nodes corresponding to a plurality of entries of the queue according to a first algorithm; And
And an update performing unit for performing an update according to the update operation of the searched plurality of nodes.
제 9 항에 있어서 상기 노드 탐색부는,
상기 큐의 복수의 엔트리에 기초하여 적어도 하나 이상의 키 값(key value)이 포함된 검색 범위를 설정하는 검색 범위 설정부;
상기 설정된 검색 범위에 기초하여 자식 노드(child node)들을 검색하기 위한 포인터들로 구성된 포인터 세트를 생성하는 포인터 세트 생성부;
상기 생성된 포인터 세트를 이용하여 병렬적으로 I/O 요청을 전송하는 전송부; 및
상기 전송된 I/O 요청을 기초로 상기 엔트리에 대응되는 노드를 검색하는 노드 검색부를 포함하는 것을 특징으로 하는 수정된 B+ 트리의 갱신 장치.
10. The apparatus of claim 9,
A search range setting unit for setting a search range including at least one key value based on a plurality of entries of the queue;
A pointer set generation unit for generating a pointer set composed of pointers for searching child nodes based on the set search range;
A transfer unit for transmitting an I / O request in parallel using the generated pointer set; And
And a node searching unit for searching for a node corresponding to the entry based on the transmitted I / O request.
제 9 항에 있어서 수정된 B+ 트리의 갱신 장치는,
상기 오퍼레이션 큐의 엔트리들을 정렬하는 오퍼레이션 큐 정렬부를 더 포함하고,
상기 노드 탐색부는 상기 정렬된 상기 큐의 복수의 엔트리에 대응되는 노드를 탐색하는 것을 특징으로 하는 수정된 B+ 트리의 갱신 장치.
The apparatus for updating a modified B + tree according to claim 9,
And an operation queue rearranging unit for rearranging the entries of the operation queue,
Wherein the node searching unit searches for a node corresponding to a plurality of entries of the sorted queue.
제 9 항에 있어서,
상기 갱신 수행부는 상기 노드의 갱신에 따라 발생하는 복수의 경계 키를 상기 노드의 부모 노드를 포함하는 중간 노드에 전파하고, 상기 중간 노드는 상기 펜스키에 따라 갱신되는 것을 특징으로 하는 수정된 B+ 트리의 갱신 장치.
10. The method of claim 9,
Wherein the update performing unit propagates a plurality of boundary keys generated according to the update of the node to an intermediate node including a parent node of the node and the intermediate node is updated according to the Fenski. Lt; / RTI &gt;
제 9 항에 있어서,
상기 갱신 수행부는 상기 노드가 인덱스 삭제 오퍼레이션에 따라 언더플로우 되는 경우 노드의 재배치 및 합병을 수행하는 것을 특징으로 하는 수정된 B+ 트리의 갱신 장치.
10. The method of claim 9,
Wherein the update performing unit performs relocation and merging of the node when the node underflows according to the index delete operation.
제 9 항에 있어서,
상기 갱신 수행부는 상기 노드가 인덱스 삽입 오퍼레이션에 따라 오버플로우 되는 경우 노드의 분할을 수행하는 것을 특징으로 하는 수정된 B+ 트리의 갱신 장치.
10. The method of claim 9,
Wherein the update performing unit performs a node split when the node overflows according to an index insertion operation.
제 9 항에 있어서,
상기 갱신 수행부는 갱신된 노드를 플래시 메모리에 기록하는 것을 특징으로 하는 수정된 B+ 트리의 갱신 장치.
10. The method of claim 9,
Wherein the update performing unit writes the updated node to the flash memory.
제 12 항에 있어서,
상기 갱신에 따라 발생하는 경계키는 루트 노드까지 순회하며 전파되는 것을 특징으로 하는 수정된 B+ 트리의 갱신 장치.
13. The method of claim 12,
Wherein the boundary key generated in accordance with the update propagates through the route to the root node.
입력 받은 업데이트 오퍼레이션을 저장하기 위하여 미리 설정된 오퍼레이션 큐의 엔트리로 상기 업데이트 오퍼레이션을 큐잉하는 단계;
상기 오퍼레이션 큐의 엔트리들을 정렬하는 단계;
상기 정렬된 상기 큐의 복수의 엔트리에 대응되는 복수의 노드를 제1 알고리즘에 따라 탐색하는 단계; 및
상기 탐색된 복수의 노드의 상기 업데이트 오퍼레이션에 따른 갱신을 수행하는 단계를 포함하는 것을 특징으로 하는 수정된 B+ 트리의 갱신 방법.
Queuing the update operation with an entry of a preset operation queue to store the received update operation;
Arranging entries of the operation queue;
Searching a plurality of nodes corresponding to the plurality of entries of the sorted queue according to a first algorithm; And
And performing an update according to the update operation of the searched plurality of nodes.
제 17 항에 있어서 상기 탐색하는 단계는,
상기 큐의 복수의 엔트리에 기초하여 적어도 하나 이상의 키 값(key value)이 포함된 검색 범위를 설정하는 단계;
상기 설정된 검색 범위에 기초하여 자식 노드(child node)들을 검색하기 위한 포인터들로 구성된 포인터 세트를 생성하는 단계;
상기 생성된 포인터 세트를 이용하여 병렬적으로 I/O 요청을 전송하는 단계; 및
상기 전송된 I/O 요청을 기초로 상기 엔트리에 대응되는 노드를 검색하는 단계를 포함하는 것을 특징으로 하는 수정된 B+ 트리의 갱신 방법.
18. The method of claim 17,
Setting a search range including at least one key value based on a plurality of entries of the queue;
Generating a set of pointers comprising pointers for searching for child nodes based on the set search range;
Transmitting an I / O request in parallel using the generated pointer set; And
And retrieving a node corresponding to the entry based on the transmitted I / O request.
KR1020120135813A 2012-11-28 2012-11-28 Modified searching method and apparatus for b+ tree KR101425817B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120135813A KR101425817B1 (en) 2012-11-28 2012-11-28 Modified searching method and apparatus for b+ tree

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120135813A KR101425817B1 (en) 2012-11-28 2012-11-28 Modified searching method and apparatus for b+ tree

Publications (2)

Publication Number Publication Date
KR20140070834A true KR20140070834A (en) 2014-06-11
KR101425817B1 KR101425817B1 (en) 2014-08-06

Family

ID=51125459

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120135813A KR101425817B1 (en) 2012-11-28 2012-11-28 Modified searching method and apparatus for b+ tree

Country Status (1)

Country Link
KR (1) KR101425817B1 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102014225568A1 (en) 2014-06-11 2015-12-17 Hyundai Motor Company Display device for vehicle, vehicle with display device and method for controlling display device
CN109407979A (en) * 2018-09-27 2019-03-01 清华大学 Multithreading persistence B+ data tree structure design and implementation methods
KR20200029431A (en) * 2020-03-11 2020-03-18 주식회사 티맥스데이터 Method and apparatus for providing efficient indexing and computer program included in computer readable medium therefor
KR20200098971A (en) 2019-02-13 2020-08-21 울산과학기술원 Method and apparatus for storing data based on single-level

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102014225568A1 (en) 2014-06-11 2015-12-17 Hyundai Motor Company Display device for vehicle, vehicle with display device and method for controlling display device
CN109407979A (en) * 2018-09-27 2019-03-01 清华大学 Multithreading persistence B+ data tree structure design and implementation methods
CN109407979B (en) * 2018-09-27 2020-07-28 清华大学 Multithreading persistent B + tree data structure design and implementation method
KR20200098971A (en) 2019-02-13 2020-08-21 울산과학기술원 Method and apparatus for storing data based on single-level
KR20200029431A (en) * 2020-03-11 2020-03-18 주식회사 티맥스데이터 Method and apparatus for providing efficient indexing and computer program included in computer readable medium therefor

Also Published As

Publication number Publication date
KR101425817B1 (en) 2014-08-06

Similar Documents

Publication Publication Date Title
KR101341507B1 (en) Modified searching method and apparatus for b+ tree
US10956346B1 (en) Storage system having an in-line hardware accelerator
Lu et al. Wisckey: Separating keys from values in ssd-conscious storage
US10114908B2 (en) Hybrid table implementation by using buffer pool as permanent in-memory storage for memory-resident data
US9021189B2 (en) System and method for performing efficient processing of data stored in a storage node
US9092321B2 (en) System and method for performing efficient searches and queries in a storage node
US20190034427A1 (en) Data management system employing a hash-based and tree-based key-value data structure
EP2546755A2 (en) Flash controller hardware architecture for flash devices
KR102275563B1 (en) Host-managed non-volatile memory
KR101425817B1 (en) Modified searching method and apparatus for b+ tree
US10515078B2 (en) Database management apparatus, database management method, and storage medium
Viglas Adapting the B+-tree for asymmetric I/O
Lee et al. ActiveSort: Efficient external sorting using active SSDs in the MapReduce framework
Reid et al. An out-of-core sparse Cholesky solver
Zhong et al. BPF for storage: an exokernel-inspired approach
US11226778B2 (en) Method, apparatus and computer program product for managing metadata migration
KR20220152936A (en) Storage device, storage system and operation method thereof for customizable metadata
Li et al. Enabling efficient updates in KV storage via hashing: Design and performance evaluation
Baumann et al. Flashing databases: expectations and limitations
US20130332465A1 (en) Database management device and database management method
US9361402B2 (en) Tiered index management
US9400817B2 (en) In-place index repair
US11010091B2 (en) Multi-tier storage
JP6366812B2 (en) Computer and database management method
Lee et al. Boosting compaction in B-tree based key-value store by exploiting parallel reads in flash ssds

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180718

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190722

Year of fee payment: 6