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

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

Info

Publication number
WO2013154247A1
WO2013154247A1 PCT/KR2012/010299 KR2012010299W WO2013154247A1 WO 2013154247 A1 WO2013154247 A1 WO 2013154247A1 KR 2012010299 W KR2012010299 W KR 2012010299W WO 2013154247 A1 WO2013154247 A1 WO 2013154247A1
Authority
WO
WIPO (PCT)
Prior art keywords
pointer
request
search range
setting
search
Prior art date
Application number
PCT/KR2012/010299
Other languages
English (en)
French (fr)
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 US13/881,337 priority Critical patent/US20150120774A1/en
Publication of WO2013154247A1 publication Critical patent/WO2013154247A1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24562Pointer or reference processing operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees

Definitions

  • the present invention relates to a modified B + tree node search method and apparatus, and more particularly, to an input / output (I / O) having a predetermined range for a key value of an input request in a memory chip based data storage device.
  • a modified B + tree node search method and apparatus for transmitting the present invention is a modified B + tree node search method and apparatus, and more particularly, to an input / output (I / O) having a predetermined range for a key value of an input request in a memory chip based data storage device.
  • An SSD is a storage device designed to permanently store data on a semiconductor flash memory.
  • the SSD is different from a conventional hard disk drive because there is no actual component.
  • the SSD has a semiconductor memory array in which an integrated circuit is configured as a disk drive.
  • An object of the present invention is to provide a retrieval method that does not exceed system resources in retrieving nodes of a B + tree using a plurality of I / Os based on internal parallelism of a flash SSD.
  • One embodiment of the present invention for solving the above technical problem is set to a search range including at least one key value (key value) based on a user input; Generating a pointer set composed of pointers for searching child nodes based on the set search range; Transmitting an I / O request in parallel using the generated pointer set; And retrieving data of a node corresponding to the input request based on the transmitted I / O request.
  • key value key value
  • the setting of the search range may include extracting a start value of the search range and an end value of the search range with respect to at least one key value based on a user's input request; And setting a search range having the start value and the end value.
  • the generating of the pointer set may include extracting key values corresponding to the set search range; Extracting associated pointers to retrieve child nodes associated with the extracted key values; And setting a set of pointers according to the extracted I / O parameters and B + trees for calculating available memory.
  • the step of setting the pointer set is based on the height of the B + tree composed of nodes for the search and I / O parameters set based on the maximum available memory usage that can be used to perform the search. It may be characterized by multiplying and setting the exponent.
  • the transmitting of the I / O request may include transmitting at least one asynchronous I / O request to a data storage device simultaneously using a pointer included in the generated pointer set. have.
  • the searching of data of the node may include searching for data of the node by using depth first search (DFS).
  • DFS depth first search
  • search range setting unit for setting a search range including at least one key value (key value) based on a user input;
  • a pointer set generation unit generating a pointer set composed of pointers for searching child nodes based on the set search range;
  • An I / O request transmitter for transmitting an I / O request in parallel using the generated pointer set;
  • a data retrieval unit for retrieving data of a node corresponding to the input request based on the transmitted I / O request.
  • FIG. 1 is a reference diagram illustrating an internal structure of a flash solid state drive (SSD).
  • SSD flash solid state drive
  • 2 and 3 are reference diagrams measuring delay times for random input / output (Read / Write) according to I / O sizes of flash SSDs.
  • 4 to 6 are reference diagrams showing benchmark results for input / output (Read / Write) at an outstanding I / O level.
  • FIG. 7 is a reference diagram for explaining an internal node structure for B + tree configuration.
  • FIG. 8 is a flowchart illustrating a modified B + tree node search method according to an embodiment of the present invention.
  • FIG. 9 is a detailed flowchart of step S120 in FIG. 8.
  • FIG. 10 is a reference diagram illustrating a modified B + tree node search method according to an embodiment of the present invention as a pseudo code.
  • FIG. 11 is a block diagram of a modified B + tree node search apparatus according to an embodiment of the present invention.
  • each component or feature may be considered to be optional unless otherwise stated.
  • Each component or feature may be embodied in a form that is not combined with other components or features.
  • some components 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 components or features of one embodiment may be included in another embodiment or may be replaced with corresponding components or features of another embodiment.
  • Embodiments of the invention may be implemented through various means.
  • embodiments of the present invention may be implemented by hardware, firmware, software, or a combination thereof.
  • the method according to embodiments of the present invention may include 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.
  • ASICs application specific integrated circuits
  • DSPs digital signal processors
  • DSPDs digital signal processing devices
  • PLDs programmable logic devices
  • FPGAs Field programmable gate arrays
  • processors controllers, microcontrollers, microprocessors, and the like.
  • the method according to the embodiments of the present invention may be implemented in the form of a module, a procedure, or a function that performs the functions or operations described above.
  • the software code may be stored in a memory unit and driven by a processor.
  • the memory unit may be located inside or outside the processor, and may exchange data with the processor by various known means.
  • SSDs Solid state drives or solid state disks
  • memory chips such as synchronous DRAM (SDRAM) or flash memory without using magnetic disks.
  • SDRAM synchronous DRAM
  • flash memory without using magnetic disks.
  • the data storage device is based on a memory chip such as a flash memory, there may be anything other than an SSD.
  • an SSD will be described as an example of a data storage device.
  • a flash SSD includes a CPU unit 101, a RAM unit 103, a host interface unit 105, a buffer control module 107, an error correction code (ECC) module 109, and a flash memory.
  • the chip part 111 is included. An internal configuration of a flash SSD will be described with reference to FIG. 1.
  • the data is loaded from the external data storage unit and transmitted to the buffer control module 107 via the host interface unit 105.
  • the host interface 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, etc. via the CPU bus 115.
  • requested data is written, and data divided for each channel is written to a plurality of flash memory chips.
  • FIGS. 2 to 6 A difference due to the internal parallelism of the flash SSD will be described with reference to FIGS. 2 to 6.
  • host interface types such as SATA II and SATA III, controllers of major SSD controller vendors (Intel, Fusion-io, SandForce, Marvell, etc.), flash memory types (SLC 50nm) , SLC 35nm, MLC 35nm, MLC 25nm) was tested for a flash SSD.
  • FIG. 2 is a reference diagram illustrating a measurement of a delay time for a random input according to an I / O size
  • FIG. 3 illustrates a measurement of a delay time for a random input according to an I / O size. See also. Measured by setting the I / O size to double in 2Kb. Referring to FIGS. 2 and 3, it can be seen that the delay time due to the increase in the I / O size and the input / output (Read / Write) does not increase linearly. That is, it can be seen that the delay time according to 4Kb random I / O (Read / Write) is almost the same as or less than the delay time according to 2Kb random I / O (Read / Write), and the bandwidth is more than doubled. This is because handling large amounts of I / O is better suited for SSDs.
  • FIG. 4 illustrates benchmark results when the I / O size is fixed at 4Kb and read is performed.
  • FIG. 5 is the case where the output is performed by fixing the I / O size at 4Kb. The benchmark results are shown. It can be seen that the read / write bandwidth is gradually increased at the outstanding I / O level.
  • 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, the simultaneous I / O processing is possible in a plurality of flash memory chips embedded in the SSD, so that a fast bandwidth proportional to the number of embedded flash memory chips ( In the case of Figure 1 has a 10 to 15 times faster than the current hard disk), this feature is an important I / O characteristic of the memory chip-based data storage device.
  • FIG. 6 illustrates a case in which input / output is mixed at an outstanding I / O level. It shows that the input / output bandwidth of a non-interleaved workload is greater than the highly interleaved workloads.
  • the size of the I / O basic unit is preferably large. As the size of the basic I / O unit to increase the bandwidth increases, the delay for processing the corresponding I / O unit may increase, so it must be determined in relation to the delay time and the bandwidth extension.
  • P i is the i-th pointer value
  • K i is the i-th key value (i is a natural number).
  • F means fanout connected with nodes deployed from internal nodes. That is, the internal nodes of the B + tree are composed of pointer values and key values that point to child nodes. Accordingly, in the present invention, the associated pointer refers to P i and P i + 1 proximate to K i so that child nodes associated with key values can be retrieved.
  • a modified B + tree node search method according to an embodiment of the present invention will be described with reference to FIGS. 8 and 9.
  • a search range including at least one key value is set based on a user input.
  • the key value refers to data that enables retrieval of data of child nodes based on user input.
  • the setting of the search range may include extracting a start value of the search range and an end value of the search range with respect to at least one or more key values based on a user's input request; Setting a search range having an end value.
  • the start value of the search range may be extracted as the minimum value of the key value based on the user's input request
  • the end value of the search range may be extracted as the maximum value of the key value based on the user's input request. Therefore, if the key value set according to the user's request is ⁇ 1, 2, 42, 65, 67 ⁇ , the minimum value is 1 and the maximum value is 67, so the search range is set to 1 ⁇ S ⁇ 67.
  • Step S120 generates a pointer set composed of pointers for searching for child nodes based on the set search range.
  • the pointer set refers to a set of pointers for indicating the position of a child node.
  • the generating of the pointer set may include extracting key values corresponding to a search range (S121), and a pointer associated to search for child nodes associated with the extracted key values. Extracting the extracted pointers (S123) and setting the extracted set of pointers according to an I / O parameter set based on the shape of the B + tree for calculating the available memory (S125).
  • step S121 key values included in the set search range are extracted. For example, if the key value set according to the user's request is ⁇ 1, 2, 8 ⁇ , the minimum value is 1 and the maximum value is 8, so the search range is set to 1 ⁇ S ⁇ 8 and included in the search range.
  • the key values to be set are set to ⁇ 1, 2, 3, 4, 5, 6, 7 ⁇ .
  • the associated pointers may be extracted to search for child nodes associated with the extracted key values.
  • pointers located close to the key value such as P i and P i + 1 close to the key value K i , are extracted from the internal node.
  • Step S125 sets the pointer set according to the extracted I / O parameters and the B + tree shape for calculating the available memory.
  • the shape of the B + tree refers to structural features of the B + tree such as the configuration of child nodes of the B + tree, the height of the B + tree, or the configuration of internal nodes of the b + tree.
  • the setting of the pointer set may include the height of the B + tree composed of nodes for performing the search and I / O parameters set based on the maximum available memory usage that can be used to perform the search.
  • the memory space for performing the I / O is 32 *. It is set in units of (treeheight-1).
  • the unit of the memory space may be implemented as a page, and the unit of the memory space may be different according to the system in which the present invention is operated.
  • the I / O parameter can be set arbitrarily, but in general, the I / O parameter is preferably set in consideration of the memory allocation amount and the memory availability for process processing.
  • a plurality of pointer sets are set according to the setting of the I / O parameters. If the number of extracted associated pointers exceeds the set I / O parameter, if I / O is transmitted in parallel, the maximum available memory will be exceeded and problems such as system delay and retrieval speed may occur. Therefore, a plurality of pointer sets are set when the number of extracted associated pointers exceeds the set I / O parameter. That is, a pointer set is set to fit the unit of memory space secured 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 set pointers, I / O requests are sent in parallel to one pointer set, data retrieval is performed according to the transmitted I / O requests, and then I / O requests are made to other pointer sets. O Send the request.
  • Step S130 transmits the I / O request in parallel using the generated pointer set.
  • it may be implemented to simultaneously transmit at least one or more I / O requests asynchronous to the data storage device by 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.
  • step S140 the data of the node corresponding to the input request is retrieved based on the transmitted I / O request.
  • it may be implemented to search data of a node by using a depth first search (DFS).
  • DFS depth first search
  • FIG. 10 illustrates a modified B + tree node search method according to an embodiment of the present invention as a pseudo code.
  • the search process begins by reading the root node. Subsequently, pointers to child nodes associated with a key value according to a user's request are extracted, and the extracted pointers generate a pointer set. If the individual pointer set is smaller than the set I / O parameter (hereafter PioMAX), the B + tree is searched using the pointer set. If more than the number of pointers associated with PioMAX is exceeded, the process of extracting a pointer and generating a pointer set is repeatedly performed to generate a plurality of pointer sets. This process is similar to Depth First Search (DFS).
  • DFS Depth First Search
  • the B + tree node search apparatus includes a search range setting unit 210, a pointer set generation unit 230, an I / O request transmitter 250, and a data search unit 270.
  • the search range setting unit 210 sets a search range including at least one key value based on a user input.
  • the search range setting unit 210 according to an embodiment of the present invention includes a range extracting unit 211 and a range setting unit 213.
  • the range extractor 211 extracts a start value of the search range and an end value of the search range with respect to at least one key value based on a user's input request.
  • the range setting unit 213 sets a search range having a start value and an end value.
  • the pointer set generation unit 230 generates a pointer set composed of pointers for searching child nodes based on the set search range.
  • the pointer set generating unit 230 includes a key value extracting unit 231, a pointer extracting unit 233, and a pointer set setting unit 235.
  • the key value extractor 231 extracts key values corresponding to the set search range.
  • the pointer extractor 233 extracts the associated pointers so that child nodes associated with the extracted key values can be searched.
  • the pointer set setting unit 235 sets the pointer set according to the I / O parameter set based on the type of B + tree for calculating the available memory of the associated pointers.
  • the pointer set setting unit 235 is the height of the B + tree composed of nodes for the I / O parameters and the search based on the maximum available memory usage that can be used to perform the search It can be set by multiplying an exponent based on height.
  • the pointer set setting unit 235 sets a plurality of pointer sets according to the setting of the I / O parameter.
  • an I / O request is recursively transmitted to a plurality of pointer sets.
  • the I / O request transmitter 250 transmits the I / O request in parallel using the generated pointer set.
  • at least one or more I / O requests asynchronous may be simultaneously transmitted to the data storage device by using a pointer included in the generated pointer set.
  • the data retrieval unit 270 retrieves data of a node corresponding to the input request based on the transmitted I / O request.
  • Embodiments according to the present invention can be written as a computer program. Codes and code segments constituting this computer program can be easily inferred by a computer programmer in the art.
  • the computer program is stored in a computer readable medium (Computer Readable Media), and the embodiment is implemented by being read and executed by a computer.
  • the information storage medium includes a magnetic recording medium, an optical recording medium and a carrier wave medium.

Landscapes

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

Abstract

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

Description

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

Claims (17)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/881,337 US20150120774A1 (en) 2012-04-13 2012-11-30 Modified b+ tree node searching method and apparatus

Applications Claiming Priority (2)

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

Publications (1)

Publication Number Publication Date
WO2013154247A1 true WO2013154247A1 (ko) 2013-10-17

Family

ID=49327786

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2012/010299 WO2013154247A1 (ko) 2012-04-13 2012-11-30 수정된 b+트리 노드 검색 방법 및 장치

Country Status (3)

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

Families Citing this family (10)

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

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004110216A (ja) * 2002-09-17 2004-04-08 Fuji Xerox Co Ltd 検索装置および方法
JP2007317138A (ja) * 2006-05-29 2007-12-06 Nomura Research Institute Ltd データ記憶システム、ファイル検索装置およびプログラム
JP2008065716A (ja) * 2006-09-08 2008-03-21 Ricoh Co Ltd データ管理装置、データ管理方法及びデータ管理プログラム
JP2008083769A (ja) * 2006-09-26 2008-04-10 Just Syst Corp 文書検索装置および文書検索方法

Family Cites Families (20)

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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004110216A (ja) * 2002-09-17 2004-04-08 Fuji Xerox Co Ltd 検索装置および方法
JP2007317138A (ja) * 2006-05-29 2007-12-06 Nomura Research Institute Ltd データ記憶システム、ファイル検索装置およびプログラム
JP2008065716A (ja) * 2006-09-08 2008-03-21 Ricoh Co Ltd データ管理装置、データ管理方法及びデータ管理プログラム
JP2008083769A (ja) * 2006-09-26 2008-04-10 Just Syst Corp 文書検索装置および文書検索方法

Also Published As

Publication number Publication date
US20150120774A1 (en) 2015-04-30
KR20130115929A (ko) 2013-10-22
KR101341507B1 (ko) 2013-12-13

Similar Documents

Publication Publication Date Title
WO2013154247A1 (ko) 수정된 b+트리 노드 검색 방법 및 장치
US8799917B2 (en) Balancing a data processing load among a plurality of compute nodes in a parallel computer
US9104532B2 (en) Sequential location accesses in an active memory device
EP2546755A2 (en) Flash controller hardware architecture for flash devices
US8707073B2 (en) Energy-efficient polling loop
US10515078B2 (en) Database management apparatus, database management method, and storage medium
US10643736B2 (en) Method, apparatus and electronic device for read/write speed testing
WO2023096118A1 (ko) 스토리지 노드 기반의 키-값 스토어를 이용하는 데이터 입출력 방법
CN112181293A (zh) 固态硬盘控制器、固态硬盘、存储系统及数据处理方法
US11226778B2 (en) Method, apparatus and computer program product for managing metadata migration
TW201303870A (zh) 利用快閃記憶體介面的方法及裝置
US20230102690A1 (en) Near-memory engine for reducing bandwidth utilization in sparse data applications
KR101425817B1 (ko) 수정된 b+트리 노드 갱신 방법 및 장치
US10545697B1 (en) Reverse order request queueing by para-virtual device drivers
US20150142995A1 (en) Determining a direct memory access data transfer mode
KR20150100565A (ko) 랩핑된 판독 대 연속적인 판독을 갖는 메모리 서브 시스템
CN109947667B (zh) 数据访问预测方法和装置
US11275683B2 (en) Method, apparatus, device and computer-readable storage medium for storage management
Joyce et al. Exploring storage bottlenecks in Linux-based embedded systems
KR101946004B1 (ko) 마이크로프로세서 칩, 데이터 센터, 및 컴퓨팅 시스템
US7979660B2 (en) Paging memory contents between a plurality of compute nodes in a parallel computer
CN113485643A (zh) 用于数据存取的方法及数据写入的控制器
TWI810876B (zh) 因應主機丟棄命令的資料存取方法及產品電腦程式及裝置
KR20140113370A (ko) 패스 스루 스토리지 디바이스들
Ge et al. Design of a Data Transmission Control Unit in a Multi-core DSP System

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 13881337

Country of ref document: US

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 12874000

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 12874000

Country of ref document: EP

Kind code of ref document: A1