WO2012169675A1 - 누적 이동 평균에 기반하여 다원 탐색 트리의 노드를 분할하는 방법 및 장치 - Google Patents

누적 이동 평균에 기반하여 다원 탐색 트리의 노드를 분할하는 방법 및 장치 Download PDF

Info

Publication number
WO2012169675A1
WO2012169675A1 PCT/KR2011/004213 KR2011004213W WO2012169675A1 WO 2012169675 A1 WO2012169675 A1 WO 2012169675A1 KR 2011004213 W KR2011004213 W KR 2011004213W WO 2012169675 A1 WO2012169675 A1 WO 2012169675A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
record
moving average
records
cumulative moving
Prior art date
Application number
PCT/KR2011/004213
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 KR1020117014433A priority Critical patent/KR101242860B1/ko
Priority to JP2014514775A priority patent/JP5774213B2/ja
Priority to PCT/KR2011/004213 priority patent/WO2012169675A1/ko
Publication of WO2012169675A1 publication Critical patent/WO2012169675A1/ko

Links

Images

Classifications

    • 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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions

Definitions

  • the following embodiments are directed to a method and apparatus for providing a multiple search tree.
  • a multiple search tree means a search tree with a degree greater than two.
  • Multiple search trees may have a lower height than binary trees containing the same number of records.
  • the number of accesses to the storage device to search for a particular record in the tree can be reduced, and the computational speed of the multiple search tree, such as search, insert, and delete, can be performed faster.
  • the multiple search tree is balanced.
  • the node into which the record is inserted or deleted or the nodes associated with the node can be split or rotated.
  • the records stored in the split node are distributed by the same number to the two nodes created by the split.
  • An embodiment of the present invention may provide a node partitioning method of a multiple search tree that partitions a node based on a cumulative moving average of the nodes.
  • One embodiment of the present invention may provide a storage device for dividing a node of a multiple search tree based on a cumulative moving average.
  • inserting a record in a first node calculating a cumulative moving average of the first node based on a position value in the first node of the record, based on the cumulative moving average Calculating a partition position of the first node and partitioning the first node into a second node and a third node based on the partition position.
  • the position value may be a value obtained by dividing the number of the slot into which the record is inserted by the number of records in the first node.
  • the calculating of the cumulative moving average of the first node may include: dividing the number of the slot into which the record is inserted by the number of records in the first node, the cumulative moving average, the number of records in the first node, and the The method may include updating the cumulative moving average based on an integer that is incremented by 1 whenever any record is inserted into the first node.
  • the split position may be the middle of the total length of the split target records arranged in ascending order.
  • the split position may be a position at which the total length of the split target records arranged in ascending order is divided by a predetermined ratio.
  • the split position may be a position at which the total length of the split target records arranged in ascending order is divided by the ratio of the cumulative moving average.
  • the length of the records of the multiple search tree may be variable.
  • the record may be an index of a database.
  • the multiple search tree may be a B tree or a B + tree.
  • an insertion processing unit for inserting a record into a first node of a multiple search tree, and a cumulative movement of calculating a cumulative moving average of the first node based on a position value in the first node of the record.
  • a division processor configured to calculate a split position of the first node based on an average calculator and the cumulative moving average, and divide the first node into a second node and a third node based on the split position.
  • the cumulative moving average calculation unit may include: a value obtained by dividing the number of the slot into which the record is inserted by the number of records in the first node, the cumulative moving average, the number of records in the first node, and any record in the first node.
  • the cumulative moving average of the first node may be calculated by updating the cumulative moving average based on an integer increasing by 1 each time is inserted.
  • the division processing unit may determine, as the division position, the middle of the total length of the division target records arranged in ascending order.
  • the division processing unit may determine, as the division position, a position for dividing the total length of the division target records arranged in ascending order by a predetermined ratio.
  • the division processing unit may determine, as the division position, a position for dividing the total length of the split target records arranged in ascending order by the ratio of the cumulative moving average.
  • a method and apparatus are provided for efficiently utilizing storage space allocated to a multiple search tree by dividing the nodes of the multiple search tree based on the cumulative moving average.
  • a method of splitting a multi-way search tree that divides a node according to a pattern of values of records inserted into a node by determining a split position of a node of a multi-search tree based on a cumulative moving average, and an apparatus using the above-described split method.
  • 1 and 2 illustrate a process of sequentially inserting records into a multiple search tree.
  • FIG. 4 is a flowchart illustrating a method of inserting a record into a multiple search tree according to an embodiment of the present invention.
  • FIG. 5 illustrates a method of calculating a cumulative moving average according to an example of the present invention.
  • FIG. 6 illustrates a method of determining a split position of a node based on a cumulative moving average of nodes according to an embodiment of the present invention.
  • FIG. 7 illustrates a method in which fixed length records are divided by an SP according to an embodiment of the present invention.
  • FIG 8 illustrates a method in which variable length records are divided by an SP according to an embodiment of the present invention.
  • FIG. 9 is a structural diagram of a storage device 900 according to an embodiment of the present invention.
  • the multiple search tree may be a tree based on a B-tree, a B + tree, or other B-tree.
  • the multiple search tree described in the embodiments and examples of the present invention may be a tree representing only index nodes, omitting data nodes.
  • the operation of continuously inserting specific records into the multi-search tree may indicate only when a record is inserted into an index node of the multi-search tree.
  • the root node of the multiple search tree may or may not include a record. If the root node does not contain a record, the record can only be inserted into the descendants of the root node while the root node is empty.
  • a record may mean entire data including a key.
  • a record may mean only a key of all data. That is, the record of the embodiments and examples of the present invention may be replaced with a key.
  • the entire data corresponding to the key may be linked from the key through a pointer or the like and accessed through the key.
  • the record or key may be an index of a database.
  • the multiple search tree may be for managing a particular index of the database.
  • 1 and 2 illustrate a process of sequentially inserting records into a multiple search tree according to an embodiment of the present invention.
  • the value of the record is compared with the value of the record inserted within a node of the multiple search tree. 1 and 2, the values of the inserted records increase sequentially.
  • the degrees of the multiple search tree of FIGS. 1 and 2 are three. That is, up to two records can be inserted into a node of the multi-search tree.
  • a node of a multiple search tree has n-1 slots when the order of the multiple search tree is n. The record is inserted into one of the slots.
  • the first tree 110 of FIG. 1 is a record " 10 " inserted into an empty polynomial search tree.
  • the second tree 120 of FIG. 1 shows a result of additionally inserting the record "20" into the first tree 110.
  • the record “30” is additionally inserted into the second tree 120.
  • node 122 of second tree 120 there is no longer a space (i.e., a slot) into which a record is to be inserted.
  • node 122 of second tree 120 is divided into two nodes 134 and 136.
  • a new root node 132 is created as the parent node of the two divided nodes 134 and 136.
  • the three nodes 132, 134, and 136 of the third tree 130 each include only one record. That is, the third tree 130 includes only half as many records as the maximum number of records that the third tree 130 can contain. Thus, the storage space allocated for the third tree 130 may be wasted.
  • the record “40” is additionally inserted into the third tree 130.
  • the record “50” is additionally inserted into the fourth tree 140 of FIG. 1.
  • the record "50" should be inserted into the rightmost end node 142 of the fourth tree 140, but there is no empty space in the rightmost end node 142. Thus, the rightmost end node 142 is split into two nodes 214 and 216 in the first tree 210 of FIG. 2.
  • the split two nodes 214 and 216 each contain one record, and the record "40" with the median value is passed to the parent node 212 of the split two nodes 214 and 216. Since there is an empty space in the parent node 212, the record "40" is inserted into the parent node 212.
  • the record “60” is additionally inserted into the first tree 210 of FIG. 2.
  • the record "60" is inserted into the rightmost end node 224 of the second tree 220.
  • the record “70” is additionally inserted into the second tree 220 of FIG. 2.
  • the rightmost end node 224 is divided into two nodes 238 and 240.
  • the divided two nodes 238 and 240 each contain one record, and the record "60" with the median value is assigned to the parent node 222 of the rightmost end node 224 of the second tree 220. It must be inserted. However, since there is no empty space within parent node 222, parent node 222 is subdivided into two nodes 234 and 236.
  • parent node 222 is the root node
  • new root node 232 is created as parent node 222 splits.
  • the new root node 232 has two nodes 234 and 236, created as the parent node 222 is split, as child nodes.
  • the two nodes 234 and 236 each contain one record, 1) record “ 20 “ and 2) record “ 40 " that the parent node 220 included, and the rightmost distal node 224 split. 3) Record " 40 " having a median value of 3) Record " 60 " delivered to parent node 220 is inserted into new root node 232.
  • the nodes of the third tree 230 each contain only one record. That is, the third tree 230 includes only half as many records as the maximum number of records that the third tree 230 can contain. Thus, the storage space allocated for the third tree 230 may be wasted.
  • FIG 3 illustrates a problem when records having values sequentially increased in the nodes of the multiple search tree according to an embodiment of the present invention.
  • the second tree 350 represents the result of the insertion of a new record "90" into the node 330 of the first tree 310.
  • node 330 Since there is no free space within node 330, node 330 must be split in order for a new record " 90 " to be inserted.
  • the median value of the records in node 330 and the new record "90" is record "50".
  • node 330 is divided into first partitioned node 360 and second partitioned node 370. That is, the first partitioned node 360 includes nodes having a value less than or equal to the median value of the records in the node 330 and the new record "90". The second partitioned node 370 also includes nodes with a value greater than or equal to the median value of the records in node 330 and the new record " 90. "
  • the first partitioned node 360 and the second partitioned node 370 may each have n / 2 records.
  • the median record "50" is passed for insertion to the parent node 320 of node 330. If parent node 320 also does not have free space, parent node 320 is also partitioned as described above.
  • FIG. 4 is a flowchart illustrating a method of inserting a record into a multiple search tree according to an embodiment of the present invention.
  • step 410 the node to which additional records are to be inserted is retrieved. Names the retrieved node as the target node.
  • step 420 it is checked whether there is space in the target node to insert additional records. That is, it is checked whether the number of records in the target node is smaller than the number of slots allocated to the node.
  • steps 430, 440, and 450 are performed to insert the additional record in the target node and calculate the cumulative moving average of the target node.
  • steps 460, 470 and 480 are performed to split the target node to insert the additional record into the plural search tree.
  • steps 430, 440, and 450 performed when there is space in the target node to insert additional records will be described.
  • record insert step 430 an additional record is inserted into the target node.
  • the cumulative moving average (or running average) of the target node is based on the position value in the target node of the additional record. Is calculated.
  • a position value in the target node of the additional record is calculated based on the position where the additional record is inserted into the target node.
  • the location value of the additional record may be a value between 0 and 1, inclusive.
  • the position value of the additional record may be a value obtained by dividing the index of the slot into which the additional record is inserted by the number of records (ie, records stored in the target node) in the target node.
  • Slot numbers can start at 0 or 1. In the following examples it is assumed that the slot numbers start at one.
  • the cumulative moving average of the target node is calculated based on the position value of the additional record.
  • the cumulative moving average of nodes that do not contain records may be initialized to zero or one.
  • the cumulative moving average may be calculated based on Equation 1 below.
  • CA i-1 is the cumulative moving average of the target node before the additional record is inserted.
  • CA i is the cumulative moving average updated after the additional record is inserted.
  • i is a sequence. In other words, it is an integer that increments by 1 whenever any record is inserted into the target node. i can start at 1.
  • x i is the position value of the additional record.
  • x i indicates that x i is the position value of the i th record inserted into the target node. That is, the position values used to calculate the cumulative moving average of the target node are x 1 , x 2 , x 3 , ..., x n in order.
  • the number of records in the target node may be reduced.
  • i a variable that is continuously increasing
  • the position value of a record inserted into the target node after deletion or division may be excessively less reflected in updating the cumulative moving average.
  • the cumulative moving average may be calculated based on Equation 2 below.
  • the cumulative moving average of the target node is obtained by dividing the number of slots into which additional records are inserted by the number n of records in the target node x i , the cumulative moving average CA i-1. It may be calculated based on the number n of records in the target node and an integer i that increases by 1 each time any record is inserted into the target node.
  • the cumulative moving average may be stored in the header of the node. That is, the cumulative moving average calculated for the target node may be stored in the header of the target node, and may be extracted from the header of the target node for later update.
  • split positions of split target records are calculated based on the cumulative moving average of the target node.
  • the split target records may refer to a record to be included in one of the two nodes generated by the split and a record to be transmitted to the parent node of the target node when the target node is split.
  • the split target records may mean records in the target node and additional records.
  • the split target record may include records in the target node.
  • the division position of the mall may represent a specific position in a series in which the division target records are arranged in ascending order.
  • the split position of the target node may indicate a record to be delivered to the parent node of the target node when the target node is split among the records and additional records in the target node. That is, when the split position of the target node is calculated, the record corresponding to the calculated split position may be a criterion of the split, and the record that is the split standard may be transferred to the parent node of the target node for splitting.
  • the record corresponding to the calculated split position is named as the reference record.
  • the target node is divided into a left segmentation node and a right segmentation node based on the segmentation position.
  • records having a value smaller than the value of the reference record may be included in the left splitting node, and records having a value larger than the value of the reference record may be included in the right splitting node.
  • records positioned before the reference record among the split target records may be included in the left split node, and records positioned after the reference record among the split target records may be included in the right split node. have.
  • step 410 is redone so that the reference record can be delivered to the parent node of the target node for insertion.
  • the left split node and the right split node may be initialized, respectively.
  • the cumulative moving average of the left split node may be initialized to the cumulative moving average of the target node.
  • the cumulative moving average of the right split node may be initialized to the cumulative moving average of the target node.
  • the sequence i of the left split node may be initialized to zero. Initialization of this sequence i allows records newly inserted in the left split node to have a high impact on the cumulative moving average of the left split node. In addition, the sequence i of the right split node may be initialized to zero.
  • step 410 is performed again.
  • the re-executing step 410 may be a step of inserting a record (that is, a reference record) not included in the left split node and the right split node into the parent node of the target node in step 470.
  • the additional record may be changed to the reference record of step 470.
  • the node retrieved in step 410 may be the parent node of the previous target node.
  • the method of inserting a record into the multiple search tree including the steps 410 to 480 described above may be regarded as a node partitioning method of the multiple search tree. That is, the steps 430 through 450 may be steps of calculating a cumulative moving average of the split target node, and the steps of dividing the split target node based on the calculated cumulative moving average may include steps 460 through 480. Can be.
  • FIG. 5 illustrates a method of calculating a cumulative moving average according to an example of the present invention.
  • the first node 510 is a blank node.
  • the initial value of the sequence i of the empty node may be zero.
  • the initial cumulative moving average CA 0 of the blank node may be 0 or 1.
  • the second node 520 is a node in which record "40" is inserted into the first node 510.
  • sequence i increases by 1 as a new record is inserted. Therefore, the value of sequence i is 1 at this time.
  • the value of the sequence i is 1 and the number of records inserted into the second node 520 is 1. Therefore, the value of I is 1.
  • the cumulative moving average CA 1 of the second node 520 is 1.
  • the third node 530 is a node in which record "80" is inserted into the second node 520.
  • sequence i increases by 1 as a new record is inserted. Therefore, the value of sequence i is 2 at this time.
  • the value of the sequence i is 2 and the number of records inserted into the third node 530 is 2. Thus, the value of I is two.
  • the cumulative moving average CA 2 of the third node 530 is 1.
  • the fourth node 540 is a node in which the record "20" is inserted into the second node 520.
  • sequence i increases by 1 as a new record is inserted. Therefore, the value of sequence i is 2 at this time.
  • the value of the sequence i is 2 and the number of records inserted into the fourth node 540 is 2. Thus, the value of I is two.
  • the cumulative moving average CA 2 of the fourth node 540 is 3/4.
  • the fifth node 550 is a node in which the record "10" is inserted into the fourth node 540.
  • sequence i increases by 1 as a new record is inserted. Therefore, the value of sequence i is 3 at this time.
  • the value of the sequence i is 3 and the number of records inserted into the fifth node 550 is three. Thus, the value of I is three.
  • the cumulative moving average CA 3 of the fifth node 550 is 22/36.
  • the cumulative moving average of a node when dividing the node, it stores many records in the left splitting node (i.e., the node into which low-value records are inserted) and the right splitting node (i.e. high). By storing a small number of records in a node in which records having values are inserted), storage locations allocated to the left split node and the right split node can be efficiently used.
  • the storage allocated to the left partitioned node and the right partitioned node by storing fewer records in the left partitioned node and storing fewer records in the right partitioned node Place can be used efficiently.
  • the storage locations allocated to the divided nodes can be efficiently used.
  • the height of the multiple search tree may be lowered by dividing the node based on the cumulative moving average of the nodes.
  • FIG. 6 illustrates a method of determining a split position of a node based on a cumulative moving average of nodes according to an embodiment of the present invention.
  • the split position of the node may be determined in proportion to the cumulative moving average of the nodes.
  • the cumulative moving average of the node is outlined as a Cumulative Moving Average (CA)
  • the split position of the node is outlined as a SP (split point).
  • TRL total record length
  • the SP may be the end of the TRL.
  • the division target records may represent the division target records described above with reference to FIG. 4. That is, the split target records may refer to records already inserted into a node (ie, the target node of FIG. 4) and records newly inserted into the node (ie, the additional record of FIG. 4).
  • all the split target records may be included in the left split node, and the right split node may be an empty node.
  • the SP may be the beginning of the TRL (ie zero).
  • all the split target records may be included in the right split node, and the left split node may be an empty node.
  • a reference record may be determined among split target records arranged in ascending order in proportion to CA.
  • the SP may have a value indicating the determined reference record.
  • the SP may have a value indicating a record having a middle value (ie, a value of the top 50%) among the split target records sorted in ascending order.
  • the SP may be determined based on the range to which the CA belongs.
  • Graph 610 of FIG. 6 shows the distribution of CA.
  • the SP may indicate the middle of the TRL. That is, the value of SP may be a value obtained by multiplying TRL by 0.5.
  • the SP may indicate a location at which the TRL is divided by the ratio of the CA. That is, the value of the SP may be a value obtained by multiplying the TRL by the CA.
  • the SP may indicate a location at which the TRL is divided by a predetermined ratio (eg, P 1 % or P 2 %).
  • the value of the SP can be a value obtained by multiplying the P 1/100 (or P 2/100) in the TRL.
  • P 1 and P 2 described above are exemplary. That is, the value of SP may be a value obtained by multiplying TRL by P 3 .
  • P 3 may be a natural number of 0 or more and 1 or less.
  • t 1 , t 2 , t 3 and t 4 may be specific values.
  • the value of t 1 may be 0.05.
  • the value of t 2 may be 0.2 days.
  • the value of t 3 may be 0.8.
  • the value of t 4 may be 0.95.
  • FIG. 7 illustrates a method in which fixed length records are divided by an SP according to an embodiment of the present invention.
  • Target node 710 includes four records 712, 714, 716 and 718.
  • record "40" 720 is inserted into target node 710, split target records 712, 714, 716, 718, and 720, if sorted in ascending order, record “10" 712, record “. 20 “714, record” 30 "716, record” 40 "720, and record” 50 "718.
  • the left split node 740 includes records 712 and 714 located before the reference record 716, and the right split node 750 is located after the reference record 716. Records 720 and 718.
  • the reference record 716 is inserted into the parent node 730 of the target node 710.
  • FIG 8 illustrates a method in which variable length records are divided by an SP according to an embodiment of the present invention.
  • Target node 810 includes four records 812, 814, 816, and 718.
  • the length of record “AA” 812 is two.
  • the length of record “BBBB” 814 is four.
  • the length of record “C” 816 is one.
  • the length of record “DD” 818 is two.
  • the SP may be located at a distance of six from the front of the series of split target records.
  • This may indicate a sixth storage unit (eg, a byte, a word, or a field) from the front of the storage space occupied by the split target records.
  • a sixth storage unit eg, a byte, a word, or a field
  • the record occupying the position corresponding to the value of SP among the split target records is the record "BBBB" 814.
  • record "BBBB” 814 is determined as the reference record.
  • the left split node 840 includes the record 812 located before the reference record 814
  • the right split node 850 includes the records located after the reference record 814 ( 816, 818, and 820).
  • FIG. 9 is a structural diagram of a storage device 900 according to an embodiment of the present invention.
  • the storage device 900 may include an insertion processor 910, a cumulative moving average calculator 920, a division processor 930, and a storage 940.
  • the insertion processor 910 may perform steps 410, 420, and 430.
  • the insertion processor 910 may insert a record into the first node of the multiple search tree.
  • the cumulative moving average calculator 920 may perform steps 440 and 450.
  • the cumulative moving average calculator 920 may calculate the cumulative moving average of the first node based on a position value in the first node of the inserted record.
  • the position value may be a value obtained by dividing the number of the slot into which the record is inserted by the number of records in the first node.
  • the cumulative moving average calculation unit 920 1) divides the number of the slot into which the record is inserted by the number of records in the first node, 2) the cumulative moving average, 3) the number of records in the first node, and 4)
  • the cumulative moving average of the first node may be calculated by updating the cumulative moving average based on an integer that is incremented by 1 each time any record is inserted into the first node.
  • the cumulative moving average calculator 920 may calculate the cumulative moving average based on Equation 1 or Equation 2 described above.
  • the division processor 930 may perform steps 460, 470, and 480.
  • the division processor 930 may calculate a division position of the first node based on the cumulative moving average, and divide the first node into a second node and a third node based on the calculated division position.
  • the division processing unit 930 may determine, as the division position, the middle of the total lengths of the division target records arranged in ascending order.
  • the division processing unit 930 may determine, as the division position, a position for dividing the total length of the division target records arranged in ascending order by a predetermined ratio.
  • the division processing unit 930 may determine, as the split position, a position for dividing the total length of the split target records arranged in ascending order by the ratio of the cumulative moving average.
  • the storage unit 940 may store the multiple search tree.
  • the storage unit 940 may store nodes constituting the multiple search tree.
  • the storage unit 940 may store the cumulative moving average and the sequence of the node in the header of the node.
  • the functions of the components 910, 920, and 930 may be performed by a single controller (not shown).
  • the controller may represent a single or multi chip, a processor, or a core.
  • Each of the components 910, 920, and 930 may represent a function, a library, a service, a process, a thread, or a module performed by the controller. have.
  • Method according to an embodiment of the present invention is implemented in the form of program instructions that can be executed by various computer means may be recorded on a computer readable medium.
  • the computer readable medium may include program instructions, data files, data structures, etc. alone or in combination.
  • Program instructions recorded on the media may be those specially designed and constructed for the purposes of the present invention, or they may be of the kind well-known and available to those having skill in the computer software arts.
  • Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tape, optical media such as CD-ROMs, DVDs, and magnetic disks, such as floppy disks.
  • Examples of program instructions include not only machine code generated by a compiler, but also high-level language code that can be executed by a computer using an interpreter or the like.
  • the hardware device described above may be configured to operate as one or more software modules to perform the operations of the present invention, and vice versa.

Landscapes

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

Abstract

누적 이동 평균에 기반하여 다원 탐색 트리의 노드를 분할하는 방법 및 장치가 제공된다. 노드에 레코드가 삽입될 때, 삽입된 레코드의 순서에 기반하여 누적 이동 평균이 갱신될 수 있다. 누적 이동 평균의 값이 클 경우, 분할된 노드들 중 좌측의 분할 노드에 보다 많은 레코드들을 저장함으로써 다원 탐색 트리를 위해 사용되는 저장 공간의 효율을 향상시킬 수 있으며, 다원 탐색 트리의 높이를 낮출 수 있다.

Description

누적 이동 평균에 기반하여 다원 탐색 트리의 노드를 분할하는 방법 및 장치
아래의 실시예들은 다원 탐색 트리를 제공하기 위한 방법 및 장치에 관한 것이다.
누적 이동 평균에 기반하여 다원 탐색 트리의 노드를 분할하는 방법 및 상기의 방법을 사용하는 다원 탐색 트리를 제공하는 저장 장치가 개시된다.
다원 탐색 트리는 차수(degree)가 2 보다 큰 탐색 트리를 의미한다.
다원 탐색 트리는 동일한 개수의 레코드를 포함하는 이진 트리에 비해 더 낮은 높이를 가질 수 있다.
트리의 높이가 낮아지면, 트리 내에서 특정 레코드를 탐색하기 위해 저장 장치에 접근하는 횟수가 줄어들 수 있고, 탐색, 삽입 및 삭제 등과 같은 다원 탐색 트리의 연산 속도가 더 빨리 수행될 수 있다.
낮은 높이를 갖기 위해, 다원 탐색 트리는 균형을 유지한다. 균형을 유지하기 위해서, 다원 탐색 트리에 레코드가 삽입되거나 다원 탐색 트리 내의 레코드가 삭제될 때, 레코드가 삽입 또는 삭제되는 노드 또는 상기의 노드와 관련된 노드들은 분할 또는 회전할 수 있다.
일반적으로, 노드가 분할될 때 분할되는 노드 내에 저장된 레코드들은 분할에 의해 생성된 2 개의 노드들로 동일한 개수 만큼씩 분배된다.
본 발명의 일 실시예는 노드의 누적 이동 평균에 기반하여 노드를 분할하는 다원 탐색 트리의 노드 분할 방법을 제공할 수 있다.
본 발명의 일 실시예는 누적 이동 평균에 기반하여 다원 탐색 트리의 노드를 분할하는 저장 장치를 제공할 수 있다.
본 발명의 일 측에 따르면, 제1 노드에 레코드를 삽입하는 단계, 상기 레코드의 상기 제1 노드 내의 위치 값에 기반하여 상기 제1 노드의 누적 이동 평균을 계산하는 단계, 상기 누적 이동 평균에 기반하여 상기 제1 노드의 분할 위치를 계산하는 단계 및 상기 분할 위치를 기준으로 상기 제1 노드를 제2 노드 및 제3 노드로 분할하는 단계를 포함하는, 다원 탐색 트리의 노드 분할 방법이 제공된다.
상기 위치 값은 상기 레코드가 삽입된 슬롯의 번호를 상기 제1 노드 내의 레코드들의 개수로 나눈 값일 수 있다.
상기 제1 노드의 누적 이동 평균을 계산하는 단계는, 상기 레코드가 삽입된 슬롯의 번호를 상기 제1 노드 내의 레코드들의 개수로 나눈 값, 상기 누적 이동 평균, 상기 제1 노드 내의 레코드들의 개수 및 상기 제1 노드에 임의의 레코드가 삽입될 때마다 1씩 증가하는 정수에 기반하여 상기 누적 이동 평균을 갱신하는 단계를 포함할 수 있다.
상기 누적 이동 평균이 지정된 범위 내의 값일 경우, 상기 분할 위치는 오름차순으로 정렬된 분할 대상 레코드들의 총 길이의 중간일 수 있다.
상기 누적 이동 평균이 지정된 범위 내의 값일 경우, 상기 분할 위치는 오름차순으로 정렬된 분할 대상 레코드들의 총 길이를 미리 지정된 비율로 나누는 위치일 수 있다.
상기 누적 이동 평균이 지정된 범위 내의 값일 경우, 상기 분할 위치는 오름차순으로 정렬된 분할 대상 레코드들의 총 길이를 상기 누적 이동 평균의 비율로 나누는 위치일 수 있다.
상기 다원 탐색 트리의 레코드들의 길이는 가변일 수 있다.
상기 레코드는 데이터베이스의 인덱스일 수 있다.
상기 다원 탐색 트리는 B 트리 또는 B+ 트리일 수 있다.
본 발명의 다른 일 측에 따르면, 다원 탐색 트리의 제1 노드에 레코드를 삽입하는 삽입 처리부, 상기 레코드의 상기 제1 노드 내의 위치 값에 기반하여 상기 제1 노드의 누적 이동 평균을 계산하는 누적 이동 평균 계산부 및 상기 누적 이동 평균에 기반하여 상기 제1 노드의 분할 위치를 계산하고, 상기 분할 위치를 기준으로 상기 제1 노드를 제2 노드 및 제3 노드로 분할하는 분할 처리부를 포함하는, 저장 장치가 제공된다.
상기 누적 이동 평균 계산부는, 상기 레코드가 삽입된 슬롯의 번호를 상기 제1 노드 내의 레코드들의 개수로 나눈 값, 상기 누적 이동 평균, 상기 제1 노드 내의 레코드들의 개수 및 상기 제1 노드에 임의의 레코드가 삽입될 때마다 1씩 증가하는 정수에 기반하여 상기 누적 이동 평균을 갱신함으로써 상기 제1 노드의 누적 이동 평균을 계산할 수 있다.
상기 분할 처리부는, 상기 누적 이동 평균이 지정된 범위 내의 값일 경우, 오름차순으로 정렬된 분할 대상 레코드들의 총 길이의 중간을 상기 분할 위치로서 결정할 수 있다.
상기 분할 처리부는, 상기 누적 이동 평균이 지정된 범위 내의 값일 경우, 오름차순으로 정렬된 분할 대상 레코드들의 총 길이를 미리 지정된 비율로 나누는 위치를 상기 분할 위치로 결정할 수 있다.
상기 분할 처리부는, 상기 누적 이동 평균이 지정된 범위 내의 값일 경우, 오름차순으로 정렬된 분할 대상 레코드들의 총 길이를 상기 누적 이동 평균의 비율로 나누는 위치를 상기 분할 위치로 결정할 수 있다.
누적 이동 평균에 기반하여 다원 탐색 트리의 노드를 분할함으로써 다원 탐색 트리에게 할당된 저장 공간을 효율적으로 활용하는 방법 및 장치가 제공된다.
누적 이동 평균에 기반하여 다원 탐색 트리의 노드의 분할 위치를 결정함으로써 노드에 삽입된 레코드들의 값들의 패턴에 따라 노드를 분할하는 다원 탐색 트리의 분할 방법 및 상기의 분할 방법을 사용하는 장치가 제공된다.
도 1 및 도 2는 다원 탐색 트리에 순차적으로 레코드들이 삽입되는 과정을 도시한다.
도 3은 다원 탐색 트리의 노드에 값들이 순차적으로 증가하는 레코드들이 삽입될 경우의 문제점을 나타낸다.
도 4는 본 발명의 일 실시예에 따른 다원 탐색 트리에 레코드를 삽입하는 방법을 나타내는 흐름도이다.
도 5는 본 발명의 일 예에 따른 누적 이동 평균을 계산하는 방법을 설명한다.
도 6은 본 발명의 일 예에 따른 노드의 누적 이동 평균에 기반하여 노드의 분할 위치를 결정하는 방법을 설명한다.
도 7은 본 발명의 일 예에 따른 고정 길이 레코드들이 SP에 의해 분할되는 방법을 설명한다.
도 8은 본 발명의 일 예에 따른 가변 길이 레코드들이 SP에 의해 분할되는 방법을 설명한다.
도 9는 본 발명의 일 예에 따른 저장 장치(900)의 구조도이다.
이하에서, 본 발명의 일 실시예를, 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
본 발명의 실시예들 및 예들에서, 다원 탐색 트리는 B-트리, B+ 트리 또는 기타 B-트리에 기반한 트리일 수 있다.
다원 탐색 트리가 B+ 트리인 경우, 본 발명의 실시예들 및 예들에서 설명된 다원 탐색 트리는 데이터 노드를 생략하고, 인덱스 노드만을 나타낸 트리일 수 있다. 예컨대, 다원 탐색 트리에 특정한 레코드들을 연속적으로 삽입하는 동작은, 상기 다원 탐색 트리의 인덱스 노드에 레코드가 삽입될 경우만을 나타낸 것일 수 있다.
또한, 상기의 다원 탐색 트리의 루트(root) 노드는 레코드를 포함하거나 포함하지 않을 수 있다. 루트 노드가 레코드를 포함하지 않을 경우, 루트 노드는 빈 채, 루트 노드의 하위 노드들에만 레코드가 삽입될 수 있다.
본 발명의 실시예들 및 예들에서, 레코드는 키를 포함한 전체 데이터를 의미할 수 있다. 또는, 레코드는 전체 데이터 중 키만을 의미할 수 있다. 즉, 본 발명의 실시예들 및 예들의 레코드는 키로 대체될 수 있다. 또는, 노드에 저장되는 레코드가 키만을 의미할 경우, 키에 대응하는 전체 데이터는 포인터 등을 통해 키로부터 링크될 수 있으며, 키를 통해 접근될 수 있다.
본 발명의 실시예들 및 예들에서, 레코드 또는 키는 데이터베이스의 인덱스(index)일 수 있다. 이 경우, 다원 탐색 트리는 데이터베이스의 특정한 인덱스를 관리하기 위한 것일 수 있다.
도 1 및 도 2는 본 발명의 일 예에 따른 다원 탐색 트리에 순차적으로 레코드들이 삽입되는 과정을 도시한다.
레코드가 다원 탐색 트리에 삽입되기 위해서, 레코드의 값은 다원 탐색 트리의 노드 내에 삽입된 레코드의 값과 비교된다. 도 1 및 도 2에서, 삽입되는 레코드들의 값은 순차적으로 증가한다.
도 1 및 도 2의 다원 탐색 트리의 차수(degree)는 3이다. 즉, 다원 탐색 트리의 노드 내에는 최대 2 개의 레코드들이 삽입될 수 있다. 다원 탐색 트리의 노드는 다원 탐색 트리의 차수가 n 일 때, n - 1 개 만큼의 슬롯들을 갖는다. 레코드는 슬롯들 중 하나에 삽입된다.
도 1의 제1 트리(110)는 빈 다원 탐색 트리에 레코드 "10"이 삽입된 것이다.
도 1의 제2 트리(120)는 제1 트리(110)에 레코드 "20"이 추가로 삽입된 결과를 나타낸다.
도 1의 제3 트리(130)는 제2 트리(120)에 레코드 "30"이 추가로 삽입된 것이다.
제2 트리(120)의 노드(122) 내에는 더 이상 레코드가 삽입될 공간(즉, 슬롯)이 없다. 따라서, 제2 트리(120)의 노드(122)는 2 개의 노드들(134 및 136)로 분할된다. 또한, 분할된 2 개의 노드들(134 및 136)의 부모 노드로서 새로운 루트 노드(132)가 생성된다.
이 때, 제3 트리(130)의 3 개의 노드들(132, 134 및 136)은 각각 하나의 레코드만을 포함한다. 즉, 제3 트리(130)는, 제3 트리(130)가 포함할 수 있는 레코드들의 최대 개수의 단지 절반만큼의 레코드들만을 포함한다. 따라서, 제3 트리(130)를 위해 할당된 저장 공간이 낭비될 수 있다.
도 1의 제4 트리(140)는 제3 트리(130)에 레코드 "40"이 추가로 삽입된 것이다.
다원 탐색 트리의 특성 상, 트리 내의 어떤 레코드보다도 더 큰 값을 갖는 레코드는 상기 다원 탐색 트리의 가장 오른쪽 말단 노드에 삽입된다.
도 2의 제1 트리(210)는 도 1의 제4 트리(140)에 레코드 "50"이 추가로 삽입된 것이다.
레코드 "50"은 제4 트리(140)의 가장 오른쪽 말단 노드(142)에 삽입되어야 하나, 가장 오른쪽 말단 노드(142) 내에는 빈 공간이 없다. 따라서, 가장 오른쪽 말단 노드(142)는 도 2의 제1 트리(210)에서 2 개의 노드들(214 및 216)로 분할된다.
분할된 2 개의 노드들(214 및 216)은 각각 하나의 레코드를 포함하고, 중간 값을 갖는 레코드 "40"은 분할된 2 개의 노드들(214 및 216)의 부모 노드(212)로 전달된다. 부모 노드(212) 내에는 빈 공간이 있으므로, 레코드 "40"은 부모 노드(212) 내에 삽입된다.
도 2의 제2 트리(220)는 도 2의 제1 트리(210)에 레코드 "60"이 추가로 삽입된 것이다.
제1 트리(210)의 가장 오른쪽 말단 노드(216) 내에는 빈 공간이 있으므로, 레코드 "60"은 제2 트리(220)의 가장 오른쪽 말단 노드(224)에 삽입된다.
도 2의 제3 트리(230)는 도 2의 제2 트리(220)에 레코드 "70"이 추가로 삽입된 것이다.
제2 트리(220)의 가장 오른쪽 말단 노드(224) 내에는 빈 공간이 없다.
따라서, 가장 오른쪽 말단 노드(224)는 2 개의 노드들(238 및 240)로 분할된다.
분할된 2 개의 노드들(238 및 240)은 각각 하나의 레코드를 포함하고, 중간 값을 갖는 레코드 "60"은 제2 트리(220)의 가장 오른쪽 말단 노드(224)의 부모 노드(222)에 삽입되어야 한다. 그러나, 부모 노드(222) 내에는 빈 공간이 없기 때문에, 부모 노드(222)는 2 개의 노드들(234 및 236)로 재분할된다.
부모 노드(222)는 루트 노드이기 때문에, 부모 노드(222)가 분할하면서 새로운 루트 노드(232)가 생성된다.
새로운 루트 노드(232)는 부모 노드(222)가 분할됨으로써 생성된 2 개의 노드들(234 및 236)을 자식 노드로 갖는다.
2 개의 노드들(234 및 236)은 각각 하나의 레코드를 포함하고, 부모 노드(220)가 포함하던 1) 레코드 "20" 및 2) 레코드 "40"과, 가장 오른쪽 말단 노드(224)가 분할됨에 따라 부모 노드(220)로 전달된 3) 레코드 "60" 중 중간 값을 갖는 레코드 "40"은 새로운 루트 노드(232)에 삽입된다.
제3 트리(230)의 노드들은 각각 하나의 레코드만을 포함한다. 즉, 제3 트리(230)는, 제3 트리(230)가 포함할 수 있는 레코드들의 최대 개수의 단지 절반만큼의 레코드들만을 포함한다. 따라서, 제3 트리(230)를 위해 할당된 저장 공간이 낭비될 수 있다.
또한, 이후, 제3 트리(230)에 삽입되는 레코드들의 값이 계속적으로 증가하면, 다원 탐색 트리의 특성 상 1) 제3 트리(230)의 각 높이에서의 가장 오른쪽 노드들(232, 236 및 240) 및 2) 상기 가장 오른쪽 노드들(232, 236 및 240)이 분할함으로써 생성된 노드들에만 레코드가 삽입되고, 그 외의 노드들(예컨대, 노드(234))로는 더 이상 레코드가 삽입되지 않는다.
따라서, 예컨대, 다원 탐색 트리의 노드가 분할될 때, 분할에 의해 생성된 2 개의 노드들이 항상 동일한 개수의 레코드들을 갖을 경우(또는, 분할에 의해 생성된 2 개의 노드들이 갖는 레코드들의 개수들이 항상 1만큼만 차이나는 경우), 특정한 패턴을 갖는 레코드들(예컨대, 값이 계속적으로 증가하는 레코드들 또는 값이 계속적으로 감소하는 레코드들)이 다원 탐색 트리에 삽입될 때, 다원 탐색 트리에게 할당된 저장 공간이 낭비될 수 있으며, 다원 탐색 트리의 높이가 필요 이상으로 높아질 수 있다.
도 3은 본 발명의 일 예에 따른 다원 탐색 트리의 노드에 값들이 순차적으로 증가하는 레코드들이 삽입될 경우의 문제점을 나타낸다.
제1 트리(310)의 노드(330) 내에는 레코드들이 삽입되었다. 노드(330) 내에는 빈 공간이 없다.
제2 트리(350)은 제1 트리(310)의 노드(330) 내에 새 레코드 "90"이 삽입된 결과를 나타낸다.
노드(330) 내에는 빈 공간이 없으므로, 새 레코드 "90"이 삽입되기 위해 노드(330)는 분할되어야 한다.
노드(330) 내의 레코드들 및 새 레코드 "90"의 중간 값은 레코드 "50"이다.
따라서, 레코드 "50"을 기준으로, 노드(330)는 제1 분할된 노드(360) 및 제2 분할된 노드(370)로 분할된다. 즉, 제1 분할된 노드(360)는 노드(330) 내의 레코드들 및 새 레코드 "90" 중 중간 값 이하의 값을 갖는 노드들을 포함한다. 또한, 제2 분할된 노드(370)는 노드(330) 내의 레코드들 및 새 레코드 "90" 중 중간 값 이상의 값을 갖는 노드들을 포함한다.
다원 탐색 트리의 차수가 n+1일 때, 제1 분할된 노드(360) 및 제2 분할된 노드(370)은 각각 n / 2 개의 레코드들을 가질 수 있다.
중간 값인 레코드 "50"은 노드(330)의 부모 노드(320)로 삽입을 위해 전달된다. 부모 노드(320) 역시 빈 공간을 가지고 있지 않은 경우, 전술된 것과 같이 부모 노드(320) 또한 분할된다.
이후, 다원 탐색 트리에 삽입되는 레코드들의 값이 계속적으로 증가할 경우, 다원 탐색 트리의 특성 상 제1 분할된 노드(360)로는 더 이상 레코드가 삽입되지 않는다. 따라서, 제1 분할된 노드(360)를 위해 할당된 저장 공간이 낭비될 수 있다.
따라서, 다원 탐색 트리의 노드가 분할될 때, 상기 노드에 삽입되어 온 레코드들이 이루는 특정한 패턴에 기반하여 상기 노드를 분할하는 기준이 되는 레코드를 결정하는 방법이 요구된다.
도 4는 본 발명의 일 실시예에 따른 다원 탐색 트리에 레코드를 삽입하는 방법을 나타내는 흐름도이다.
다원 탐색 트리에 삽입될 레코드를 추가 레코드로 명명한다.
단계(410)에서, 추가 레코드가 삽입될 노드가 검색된다. 검색된 노드를 대상 노드로 명명한다.
단계(420)에서, 대상 노드 내에 추가 레코드를 삽입할 공간이 있는지 여부가 검사된다. 즉, 대상 노드 내의 레코드들의 개수가 노드에 할당된 슬롯의 개수보다 작은지 여부가 검사된다.
대상 노드 내에 추가 레코드를 삽입할 공간이 있으면, 대상 노드에 추가 레코드를 삽입하고, 대상 노드의 누적 이동 평균을 계산하는 단계들(430, 440 및 450)이 수행된다.
대상 노드 내에 추가 레코드를 삽입할 공간이 없으면, 추가 레코드를 다원 탐색 트리에 삽입하기 위하여 대상 노드를 분할하는 단계들(460, 470 및 480)이 수행된다.
우선, 대상 노드 내에 추가 레코드를 삽입할 공간이 있을 경우에 수행되는 단계들(430, 440 및 450)을 설명한다.
레코드 삽입 단계(430)에서, 대상 노드에 추가 레코드가 삽입된다.
추가 레코드의 삽입 후, 하기의 단계들(440 및 450)에서, 추가 레코드의 대상 노드 내의 위치 값에 기반하여 대상 노드의 누적 이동 평균(cumulative moving average)(또는, 이동 평균(running average))이 계산된다.
삽입 위치 계산 단계(440)에서, 추가 레코드가 대상 노드 내에 삽입된 위치에 기반하여 추가 레코드의 대상 노드 내의 위치 값이 계산된다.
추가 레코드의 위치 값은 0 이상 1 이하의 값일 수 있다.
추가 레코드의 위치 값은 추가 레코드가 삽입된 슬롯의 번호(index)를 대상 노드 내의 레코드들(즉, 대상 노드 내에 저장된 레코드들)의 개수로 나눈 값일 수 있다.
슬롯의 번호는 0 또는 1에서부터 시작할 수 있다. 하기의 실시예에서는 슬롯의 번호가 1에서부터 시작하는 것으로 간주한다.
누적 이동 평균 계산 단계(450)에서, 추가 레코드의 위치 값에 기반하여 대상 노드의 누적 이동 평균이 계산된다.
레코드를 포함하지 않은 노드의 누적 이동 평균은 0 또는 1로 초기화될 수 있다.
누적 이동 평균은 하기의 수학식 1에 기반하여 계산될 수 있다.
Figure PCTKR2011004213-appb-I000001
여기서, CAi-1는 추가 레코드가 삽입되기 전의 대상 노드의 누적 이동 평균이다. 또한, CAi는 추가 레코드가 삽입된 후 갱신된 누적 이동 평균이다.
i는 시퀀스(sequence)이다. 즉, 대상 노드에 임의의 레코드가 삽입될 때마다 1씩 증가하는 정수이다. i는 1에서부터 시작할 수 있다.
xi는 추가 레코드의 위치 값이다. xi에서, i는 xi가 대상 노드에 i 번 째로 삽입된 레코드의 위치 값임을 나타낸다. 즉, 대상 노드의 누적 이동 평균을 계산하기 위해 사용된 위치 값들은 순서대로 x1, x2, x3, ..., xn이다.
삭제(delete) 연산 또는 분할(split) 연산에 의해, 대상 노드 내의 레코드들의 개수가 줄어들 수 있다. 이러한 경우, 계속 증가하는 변수인 i가 사용될 경우, 삭제 또는 분할 후 대상 노드에 삽입되는 레코드의 위치 값이 누적 이동 평균을 갱신함에 있어서 과도하게 적게 반영될 수 있다.
따라서, 노드 내의 레코드들의 개수를 반영하여 누적 이동 평균을 갱신하기 위해, 하기의 수학식 2에 기반하여 누적 이동 평균이 계산될 수 있다.
Figure PCTKR2011004213-appb-I000002
여기서, I는 i 및 대상 노드 내의 레코드들의 개수 n 중 최소값을 의미한다. 즉, I = MIN(i, n)이다.
수학식 1 및 수학식 2를 참조하여 전술된 것처럼, 대상 노드의 누적 이동 평균은 추가 레코드가 삽입된 슬롯의 번호를 대상 노드 내의 레코드들의 개수 n로 나눈 값 xi, 누적 이동 평균 CAi-1, 대상 노드 내의 레코드들의 개수 n 및 대상 노드에 임의의 레코드가 삽입될 때마다 1씩 증가하는 정수 i에 기반하여 계산될 수 있다.
하기에서, 레코드들이 삽입됨에 따라 노드의 누적 이동 평균이 계산되는 일 예가 도 5를 참조하여 상세히 설명된다.
누적 이동 평균은 노드의 헤더(header)에 저장될 수 있다. 즉, 대상 노드에 대해 계산된 누적 이동 평균은 대상 노드의 헤더에 저장될 수 있으며, 차후 갱신을 위해 대상 노드의 헤더로부터 추출될 수 있다.
다음으로, 대상 노드 내에 추가 레코드를 삽입할 공간이 없을 경우에 수행되는 단계들(460, 470 및 480)을 설명한다.
분할 위치 계산 단계(460)에서 대상 노드의 누적 이동 평균에 기반하여 분할 대상 레코드들의 분할 위치가 계산된다.
분할 대상 레코드들은 대상 노드가 분할될 때, 상기 분할에 의해 생성되는 2 개의 노드들 중 하나의 노드에 포함될 레코드 및 대상 노드의 부모 노드에게 전달될 레코드를 의미할 수 있다.
즉, 분할 대상 레코드들은 상기 대상 노드 내의 레코드들 및 추가 레코드를 의미할 수 있다. 또는, 분할 대상 레코드는 대상 노드 내의 레코드들을 포함할 수 있다.
상가의 분할 위치는, 분할 대상 레코드들이 오름차순으로 나열된 일련(series) 중 특정한 위치를 나타낼 수 있다..
대상 노드의 분할 위치는, 대상 노드 내의 레코드들 및 추가 레코드 중, 대상 노드가 분할될 때 대상 노드의 부모 노드로 전달될 레코드를 가리킬 수 있다. 즉, 대상 노드의 분할 위치가 계산되면, 계산된 분할 위치에 대응하는 레코드가 분할의 기준이 될 수 있고, 분할의 기준이 된 레코드가 분할을 위해 대상 노드의 부모 노드로 전달될 수 있다.
계산된 분할 위치에 대응하는 레코드를 기준 레코드로 명명한다.
노드의 누적 이동 평균에 기반하여 노드의 분할 위치를 계산하는 구체적인 방법이 도 6 내지 도 8을 참조하여 하기에서 상세히 설명된다.
노드 분할 단계(470)에서, 분할 위치를 기준으로 대상 노드는 좌측 분할 노드 및 우측 분할 노드로 분할된다.
즉, 기준 레코드의 값보다 작은 값을 갖는 레코드들은 좌측 분할 노드에 포함될 수 있고, 기준 레코드의 값보다 큰 값을 갖는 레코드들은 우측 분할 노드에 포함될 수 있다.
또는, 분할 대상 레코드들이 오름차순으로 정렬되었을 때, 분할 대상 레코드 들 중 기준 레코드보다 앞에 위치한 레코드들은 좌측 분할 노드에 포함될 수 있고, 분할 대상 레코드들 중 기준 레코드보다 뒤에 위치한 레코드들은 우측 분할 노드에 포함될 수 있다.
이후, 단계(410)가 재수행됨으로써 기준 레코드는 삽입을 위해 대상 노드의 부모 노드에게 전달될 수 있다.
분할된 노드 초기화 단계(480)에서, 좌측 분할 노드 및 우측 분할 노드는 각각 초기화될 수 있다.
좌측 분할 노드의 누적 이동 평균은 대상 노드의 누적 이동 평균으로 초기화될 수 있다. 또한, 우측 분할 노드의 누적 이동 평균은 대상 노드의 누적 이동 평균으로 초기화될 수 있다.
좌측 분할 노드의 시퀀스 i는 0으로 초기화될 수 있다. 이러한 시퀀스 i의 초기화는, 좌측 분할 노드에 새로 삽입되는 레코드들이 좌측 분할 노드의 누적 이동 평균에 높은 영향을 줄 수 있게 한다. 또한, 우측 분할 노드의 시퀀스 i는 0으로 초기화될 수 있다.
단계들(460, 470 및 480)이 수행되면, 단계(410)가 재수행된다.
재수행되는 단계(410)는, 단계(470)에서 좌측 분할 노드 및 우측 분할 노드에 포함되지 않는 레코드(즉, 기준 레코드)를 대상 노드의 부모 노드에 삽입하는 단계일 수 있다. 즉, 추가 레코드는 단계(470)의 기준 레코드로 변경될 수 있다. 또한, 재수행된 단계(410)에서 검색된 노드는 이전 대상 노드의 부모 노드일 수 있다.
전술된 단계들(410 내지 480)을 포함하는 다원 탐색 트리에 레코드를 삽입하는 방법은, 다원 탐색 트리의 노드 분할 방법으로 간주될 수 있다. 즉, 단계들(430 내지 450)은 분할 대상 노드의 누적 이동 평균을 계산하는 단계들이 될 수 있으며, 단계들(460 내지 480)을 계산된 누적 이동 평균에 기반하여 분할 대상 노드를 분할하는 단계들이 될 수 있다.
도 5는 본 발명의 일 예에 따른 누적 이동 평균을 계산하는 방법을 설명한다.
제1 노드(510)는 공백 노드이다. 공백 노드의 시퀀스 i의 초기 값은 0일 수 있다. 또한, 공백 노드의 초기 누적 이동 평균 CA0은 0 또는 1일 수 있다.
제2 노드(520)는 제1 노드(510)에 레코드 "40"이 삽입된 노드이다.
새 레코드가 삽입됨에 따라 시퀀스 i는 1 증가한다. 따라서, 이 때 시퀀스 i의 값은 1이다.
레코드 "40"은 제2 노드(520) 내의 1 개의 레코드들 중 첫 번째 위치에 삽입되었다. 따라서, 레코드 "40"의 위치 값 x1은 1이다.
시퀀스 i의 값은 1이고, 제2 노드(520) 내에 삽입된 레코드들의 개수는 1이다. 따라서, I의 값은 1이다.
상기의 수학식 2에 따라, 제2 노드(520)의 누적 이동 평균 CA1은 1이다.
제3 노드(530)는 제2 노드(520)에 레코드 "80"이 삽입된 노드이다.
새 레코드가 삽입됨에 따라 시퀀스 i는 1 증가한다. 따라서, 이 때 시퀀스 i의 값은 2이다.
레코드 "80"은 제3 노드(530) 내의 2 개의 레코드들 중 두 번째 위치에 삽입되었다. 따라서, 레코드 "80"의 위치 값 x2은 2/2 = 1이다.
시퀀스 i의 값은 2이고, 제3 노드(530) 내에 삽입된 레코드들의 개수는 2이다. 따라서, I의 값은 2이다.
상기의 수학식 2에 따라, 제3 노드(530)의 누적 이동 평균 CA2은 1이다.
제2 노드(520) 및 제3 노드(530)를 검토하면, 새로 삽입된 레코드가 노드 내의 레코드들 중 가장 뒤에 위치하면(즉, 새로 삽입된 레코드의 값이 노드 내의 레코드들 각각의 값들 이상이면), 노드의 누적 이동 평균은 1로 유지되거나, 1에 더 가까운 값으로 증가하는 것을 알 수 있다.
제4 노드(540)는 제2 노드(520)에 레코드 "20"이 삽입된 노드이다.
새 레코드가 삽입됨에 따라 시퀀스 i는 1 증가한다. 따라서, 이 때 시퀀스 i의 값은 2이다.
레코드 "20"은 제4 노드(540) 내의 2 개의 레코드들 중 첫 번째 위치에 삽입되었다. 따라서, 레코드 "20"의 위치 값 x2은 1/2이다.
시퀀스 i의 값은 2이고, 제4 노드(540) 내에 삽입된 레코드들의 개수는 2이다. 따라서, I의 값은 2이다.
상기의 수학식 2에 따라, 제4 노드(540)의 누적 이동 평균 CA2은 3/4이다.
제5 노드(550)는 제4 노드(540)에 레코드 "10"이 삽입된 노드이다.
새 레코드가 삽입됨에 따라 시퀀스 i는 1 증가한다. 따라서, 이 때 시퀀스 i의 값은 3이다.
레코드 "10"은 제5 노드(550) 내의 3 개의 레코드들 중 첫 번째 위치에 삽입되었다. 따라서, 레코드 "10"의 위치 값 x3은 1/3이다.
시퀀스 i의 값은 3이고, 제5 노드(550) 내에 삽입된 레코드들의 개수는 3이다. 따라서, I의 값은 3이다.
상기의 수학식 2에 따라, 제5 노드(550)의 누적 이동 평균 CA3은 22/36이다.
제2 노드(520), 제4 노드(540) 및 제5 노드(550)를 검토하면, 새로 삽입된 레코드가 노드 내의 레코드들 중 가장 앞에 위치하면(즉, 새로 삽입된 레코드의 값이 노드 내의 레코드들 각각의 값들 이하이면), 노드의 누적 이동 평균은 0에 더 가까운 값으로 감소하는 것을 알 수 있다.
노드 내에 삽입되는 레코드들의 값들이 나타내는 패턴이 점진적인 증가에 가까울수록, 노드의 누적 이동 평균이 1에 가깝게 될 수 있다. 따라서, 노드의 누적 이동 평균이 1에 가까우면, 상기 노드를 분할할 때, 좌측 분할 노드(즉, 낮은 값을 갖는 레코드들이 삽입되는 노드)에 많은 레코드들을 저장하고, 우측 분할 노드(즉, 높은 값을 갖는 레코드들이 삽입되는 노드)에 적은 레코드들을 저장함으로써 좌측 분할 노드 및 우측 분할 노드에게 할당된 저장 장소가 효율적으로 사용되게 할 수 있다.
반대로, 노드의 누적 이동 평균이 0에 가까우면, 상기 노드를 분할할 때, 좌측 분할 노드에 적은 레코드들을 저장하고, 우측 분할 노드에 적은 레코드들을 저장함으로써 좌측 분할 노드 및 우측 분할 노드에게 할당된 저장 장소가 효율적으로 사용되게 할 수 있다.
즉, 노드의 누적 이동 평균에 기반하여 상기 노드를 분할함으로써 분할된 노드들에게 할당된 저장 장소가 효율적으로 사용되게 할 수 있다. 또한, 노드의 누적 이동 평균에 기반하여 상기 노드를 분할함으로써 다원 탐색 트리의 높이가 더 낮아질 수 있다.
도 6은 본 발명의 일 예에 따른 노드의 누적 이동 평균에 기반하여 노드의 분할 위치를 결정하는 방법을 설명한다.
노드의 분할 위치는 노드의 누적 이동 평균에 비례하여 결정될 수 있다.
이하 노드의 누적 이동 평균을 CA(Cumulative moving average)로 약술하고, 노드의 분할 위치를 SP(split point)로 약술한다. 오름차순으로 정렬된 분할 대상 레코드들의 총 길이를 TRL(total record length)로 약술한다.
예컨대, CA의 값이 1이면, SP는 TRL의 끝일 수 있다.
여기서, 분할 대상 레코드들은 도 4를 참조하여 전술된 분할 대상 레코드들을 나타낼 수 있다. 즉, 분할 대상 레코드들은 노드(즉, 도 4의 대상 노드) 내에 이미 삽입된 레코드들 및 상기 노드 내에 새로 삽입될 레코드(즉, 도 4의 추가 레코드)를 의미할 수 있다.
즉, CA의 값이 1이면, 분할 대상 레코드들은 모두 좌측 분할 노드에 포함될 수 있고, 우측 분할 노드는 빈 노드일 수 있다.
예컨대, CA 값이 0 또는 0에 매우 가까운 값이면, SP는 TRL의 처음(즉, 0)일 수 있다.
즉, CA의 값이 0이면, 분할 대상 레코드들은 모두 우측 분할 노드에 포함될 수 있고, 좌측 분할 노드는 빈 노드일 수 있다.
또는, CA에 비례하여 오름차순으로 정렬된 분할 대상 레코드들 중 기준 레코드가 결정될 수 있다. 이때, SP는 결정된 기준 레코드를 나타내는 값을 가질 수 있다.
예컨데, CA가 0.5이면, SP는 오름차순으로 정렬된 분할 대상 레코드들 중 중간 값(즉, 상위 50%의 값)을 갖는 레코드를 나타내는 값을 가질 수 있다.
도 6에서 도시된 것처럼, SP는 CA가 속하는 범위에 기반하여 결정될 수 있다.
도 6의 그래프(610)는 CA의 분포를 나타낸다.
CA가 제1 지정된 범위(예컨대, t2 이상이며 t3 이하) 내의 값일 경우, SP는 TRL의 중간을 나타낼 수 있다. 즉, SP의 값은 TRL에 0.5를 곱한 값일 수 있다.
CA가 제2 지정된 범위(예컨대, t1 이상이며 t2 이하, 또는 t3 이상이며 t4이하) 내의 값일 경우, SP는 TRL을 CA의 비율로 나누는 위치를 나타낼 수 있다. 즉, SP의 값은 TRL에 CA를 곱한 값일 수 있다.
CA가 제3 지정된 범위(예컨대, t1 이하 또는 t4 이상) 내의 값일 경우, SP는 TRL을 미리 지정된 비율(예컨대, P1% 또는 P2%)로 나누는 위치를 나타낼 수 있다. SP의 값은 TRL에 P1/100 (또는 P2/100)를 곱한 값일 수 있다. 상기의 P1 및 P2는 예시적인 것이다. 즉, SP의 값은 TRL에 P3을 곱한 값일 수 있다. P3은 0 이상 1 이하의 자연수일 수 있다.
전술된 t1, t2, t3 및 t4는 특정한 값일 수 있다. 예컨대, t1의 값은 0.05일 수 있다. t2의 값은 0.2일 수 있다. t3의 값은 0.8일 수 있다. t4의 값은 0.95일 수 있다.
도 7은 본 발명의 일 예에 따른 고정 길이 레코드들이 SP에 의해 분할되는 방법을 설명한다.
대상 노드(710)는 4 개의 레코드들(712, 714, 716 및 718)을 포함한다.
대상 노드(710)에 레코드 "40"(720)이 삽입되면, 분할 대상 레코드들(712, 714, 716, 718 및 720)은, 오름차순으로 정렬될 경우, 레코드 "10"(712), 레코드 "20"(714), 레코드 "30"(716), 레코드 "40"(720) 및 레코드 "50"(718)의 순서를 갖는다.
SP가 TRL의 중간일 경우, SP가 가리키는 레코드는 레코드 "30"(716)이다. 따라서, 레코드 "30"(716)이 기준 레코드로 결정된다.
대상 노드(710)가 분할되면, 좌측 분할 노드(740)는 기준 레코드(716)보다 앞에 위치한 레코드들(712 및 714)을 포함하고, 우측 분할 노드(750)는 기준 레코드(716)보다 뒤에 위치한 레코드들(720 및 718)을 포함한다.
기준 레코드(716)는 대상 노드(710)의 부모 노드(730)에 삽입된다.
도 8은 본 발명의 일 예에 따른 가변 길이 레코드들이 SP에 의해 분할되는 방법을 설명한다.
대상 노드(810)는 4 개의 레코드들(812, 814, 816 및 718)을 포함한다. 레코드 "AA"(812)의 길이는 2이다. 레코드 "BBBB"(814)의 길이는 4이다. 레코드 "C"(816)의 길이는 1이다. 레코드 "DD"(818)의 길이는 2이다.
대상 노드(810)에 길이가 2인 레코드 "EE"(820)가 삽입되면, 분할 대상 레코드들(812, 814, 816, 818 및 820)은, 오름차순으로 정렬될 경우, 레코드 "AA"(812), 레코드 "BBBB"(814), 레코드 "C"(816), 레코드 "DD"(718) 및 레코드 "EE"(820)의 순서를 갖는다. 이때, TRL은 11이다.
SP가 TRL의 중간일 경우, SP의 값은 6이다. 따라서, 분할 대상 레코드들의 일련 중 앞에서부터 6만큼 떨어진 위치가 SP가 될 수 있다.
이는 분할 대상 레코드들이 차지하는 저장 공간 중 앞에서부터 6번째의 기억 단위(예컨대, 바이트(byte), 워드(word) 또는 필드(field)를 가리킬 수 있다.
분할 대상 레코드들 중 SP의 값에 대응하는 위치를 차지하는 레코드는 레코드 "BBBB"(814)이다. 따라서, 레코드 "BBBB"(814)가 기준 레코드로 결정된다.
대상 노드(810)가 분할되면, 좌측 분할 노드(840)는 기준 레코드(814)보다 앞에 위치한 레코드(812)를 포함하고, 우측 분할 노드(850)는 기준 레코드(814)보다 뒤에 위치한 레코드들(816, 818 및 820)을 포함한다.
도 9는 본 발명의 일 예에 따른 저장 장치(900)의 구조도이다.
저장 장치(900)는 삽입 처리부(910), 누적 이동 평균 계산부(920), 분할 처리부(930) 및 저장부(940)를 포함할 수 있다.
삽입 처리부(910)는 단계들(410, 420 및 430)을 수행할 수 있다.
예컨대, 삽입 처리부(910)는 다원 탐색 트리의 제1 노드에 레코드를 삽입할 수 있다.
누적 이동 평균 계산부(920)는 단계들(440 및 450)를 수행할 수 있다.
예컨대, 누적 이동 평균 계산부(920)는 삽입된 레코드의 제1 노드 내의 위치 값에 기반하여 제1 노드의 누적 이동 평균을 계산할 수 있다.
위치 값은 레코드가 삽입된 슬롯의 번호를 제1 노드 내의 레코드들의 개수로 나눈 값일 수 있다.
또한, 누적 이동 평균 계산부(920)는 1) 레코드가 삽입된 슬롯의 번호를 제1 노드 내의 레코드들의 개수로 나눈 값, 2) 누적 이동 평균, 3) 제1 노드 내의 레코드들의 개수 및 4) 제1 노드에 임의의 레코드가 삽입될 때마다 1씩 증가하는 정수에 기반하여 누적 이동 평균을 갱신함으로써 제1 노드의 누적 이동 평균을 계산할 수 있다.
누적 이동 평균 계산부(920)는 전술된 수학식 1 또는 수학식 2에 기반하여 누적 이동 평균을 계산할 수 있다.
분할 처리부(930)는 단계들(460, 470 및 480)을 수행할 수 있다.
예컨대, 분할 처리부(930)는 누적 이동 평균에 기반하여 제1 노드의 분할 위치를 계산할 수 있고, 계산된 분할 위치를 기준으로 제1 노드를 제2 노드 및 제3 노드로 분할할 수 있다.
분할 처리부(930)는, 누적 이동 평균이 지정된 범위 내의 값일 경우, 오름차순으로 정렬된 분할 대상 레코드들의 총 길이의 중간을 분할 위치로서 결정할 수 있다.
분할 처리부(930)는, 누적 이동 평균이 지정된 범위 내의 값일 경우, 오름차순으로 정렬된 분할 대상 레코드들의 총 길이를 미리 지정된 비율로 나누는 위치를 분할 위치로 결정할 수 있다.
분할 처리부(930)는, 누적 이동 평균이 지정된 범위 내의 값일 경우, 오름차순으로 정렬된 분할 대상 레코드들의 총 길이를 누적 이동 평균의 비율로 나누는 위치를 분할 위치로 결정할 수 있다.
저장부(940)는 다원 탐색 트리를 저장할 수 있다.
저장부(940)는 다원 탐색 트리를 구성하는 노드들을 저장할 수 있다.
저장부(940)는 노드의 헤더에 상기 노드의 누적 이동 평균 및 시퀀스를 저장할 수 있다.
앞서 도 1 내지 도 8을 참조하여 설명된 본 발명의 일 실시예에 따른 기술적 내용들이 본 실시예에도 그대로 적용될 수 있다. 따라서 보다 상세한 설명은 이하 생략하기로 한다.
상기 구성요소(910, 920 및 930)의 기능은 단일한 제어부(도시되지 않음)에서 수행될 수 있다. 이때, 상기 제어부는 단일(single) 또는 복수(multi) 칩(chip), 프로세서(processor) 또는 코어(core)를 나타낼 수 있다. 상기 구성요소들(910, 920 및 930) 각각은 상기 제어부에서 수행되는 함수(function), 라이브러리(library), 서비스(service), 프로세스(process), 쓰레드(thread) 또는 모듈(module)을 나타낼 수 있다.
본 발명의 일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.

Claims (19)

  1. 제1 노드에 레코드를 삽입하는 단계;
    상기 레코드의 상기 제1 노드 내의 위치 값에 기반하여 상기 제1 노드의 누적 이동 평균을 계산하는 단계;
    상기 누적 이동 평균에 기반하여 상기 제1 노드의 분할 위치를 계산하는 단계; 및
    상기 분할 위치를 기준으로 상기 제1 노드를 제2 노드 및 제3 노드로 분할하는 단계
    를 포함하는, 다원 탐색 트리의 노드 분할 방법.
  2. 제1항에 있어서,
    상기 위치 값은 상기 레코드가 삽입된 슬롯의 번호를 상기 제1 노드 내의 레코드들의 개수로 나눈 값인, 다원 탐색 트리의 노드 분할 방법.
  3. 제1항에 있어서,
    상기 제1 노드의 누적 이동 평균을 계산하는 단계는,
    상기 레코드가 삽입된 슬롯의 번호를 상기 제1 노드 내의 레코드들의 개수로 나눈 값, 상기 누적 이동 평균, 상기 제1 노드 내의 레코드들의 개수 및 상기 제1 노드에 임의의 레코드가 삽입될 때마다 1씩 증가하는 정수에 기반하여 상기 누적 이동 평균을 갱신하는 단계
    를 포함하는, 다원 탐색 트리의 노드 분할 방법.
  4. 제3항에 있어서,
    상기 누적 이동 평균은 하기의 수학식 1에 기반하여 계산되는, 다원 탐색 트리의 노드 분할 방법.
    Figure PCTKR2011004213-appb-I000003
    CAi-1는 상기 레코드가 삽입되기 전 상기 제1 노드의 누적 이동 평균임. CAi는 상기 레코드가 삽입된 후 갱신된 상기 누적 이동 평균임. I는 i 및 상기 제1 노드 내의 레코드들의 개수 중 최소값임. xi는 상기 레코드가 삽입된 슬롯의 번호를 상기 제1 노드 내의 레코드들의 개수로 나눈 값임. i는 상기 제1 노드에 임의의 레코드가 삽입될 때마다 1씩 증가하는 정수임.
  5. 제1항에 있어서,
    상기 누적 이동 평균이 지정된 범위 내의 값일 경우, 상기 분할 위치는 오름차순으로 정렬된 분할 대상 레코드들의 총 길이의 중간인, 다원 탐색 트리의 노드 분할 방법.
  6. 제1항에 있어서,
    상기 누적 이동 평균이 지정된 범위 내의 값일 경우, 상기 분할 위치는 오름차순으로 정렬된 분할 대상 레코드들의 총 길이를 미리 지정된 비율로 나누는 위치인, 다원 탐색 트리의 노드 분할 방법.
  7. 제1항에 있어서,
    상기 누적 이동 평균이 지정된 범위 내의 값일 경우, 상기 분할 위치는 오름차순으로 정렬된 분할 대상 레코드들의 총 길이를 상기 누적 이동 평균의 비율로 나누는 위치인, 다원 탐색 트리의 노드 분할 방법.
  8. 제1항에 있어서,
    상기 다원 탐색 트리의 레코드들의 길이는 가변인, 다원 탐색 트리의 노드 분할 방법.
  9. 제1항에 있어서,
    상기 레코드는 데이터베이스의 인덱스인, 다원 탐색 트리의 노드 분할 방법.
  10. 제1항에 있어서,
    상기 다원 탐색 트리는 B 트리 또는 B+ 트리인, 다원 탐색 트리의 노드 분할 방법.
  11. 제1항 내지 제10항 중 어느 한 항의 다원 탐색 트리의 노드 분할 방법을 수행하는 프로그램을 수록한 컴퓨터 판독 가능 기록 매체.
  12. 다원 탐색 트리의 제1 노드에 레코드를 삽입하는 삽입 처리부;
    상기 레코드의 상기 제1 노드 내의 위치 값에 기반하여 상기 제1 노드의 누적 이동 평균을 계산하는 누적 이동 평균 계산부; 및
    상기 누적 이동 평균에 기반하여 상기 제1 노드의 분할 위치를 계산하고, 상기 분할 위치를 기준으로 상기 제1 노드를 제2 노드 및 제3 노드로 분할하는 분할 처리부
    를 포함하는, 저장 장치.
  13. 제12항에 있어서,
    상기 위치 값은 상기 레코드가 삽입된 슬롯의 번호를 상기 제1 노드 내의 레코드들의 개수로 나눈 값인, 저장 장치.
  14. 제12항에 있어서,
    상기 누적 이동 평균 계산부는, 상기 레코드가 삽입된 슬롯의 번호를 상기 제1 노드 내의 레코드들의 개수로 나눈 값, 상기 누적 이동 평균, 상기 제1 노드 내의 레코드들의 개수 및 상기 제1 노드에 임의의 레코드가 삽입될 때마다 1씩 증가하는 정수에 기반하여 상기 누적 이동 평균을 갱신함으로써 상기 제1 노드의 누적 이동 평균을 계산하는, 저장 장치.
  15. 제12항에 있어서,
    상기 누적 이동 평균 계산부는 하기의 수학식 2에 기반하여 상기 누적 이동 평균을 계산하는, 저장 장치.
    Figure PCTKR2011004213-appb-I000004
    CAi-1는 상기 레코드가 삽입되기 전 상기 제1 노드의 누적 이동 평균임. CAi는 상기 레코드가 삽입된 후 갱신된 상기 누적 이동 평균임. I는 i 및 상기 제1 노드 내의 레코드들의 개수 중 최소값임. xi는 상기 레코드가 삽입된 슬롯의 번호를 상기 제1 노드 내의 레코드들의 개수로 나눈 값임. i는 상기 제1 노드에 임의의 레코드가 삽입될 때마다 1씩 증가하는 정수임.
  16. 제12항에 있어서,
    상기 분할 처리부는, 상기 누적 이동 평균이 지정된 범위 내의 값일 경우, 오름차순으로 정렬된 분할 대상 레코드들의 총 길이의 중간을 상기 분할 위치로서 결정하는, 저장 장치.
  17. 제12항에 있어서,
    상기 분할 처리부는, 상기 누적 이동 평균이 지정된 범위 내의 값일 경우, 오름차순으로 정렬된 분할 대상 레코드들의 총 길이를 미리 지정된 비율로 나누는 위치를 상기 분할 위치로 결정하는, 저장 장치.
  18. 제12항에 있어서,
    상기 분할 처리부는, 상기 누적 이동 평균이 지정된 범위 내의 값일 경우, 오름차순으로 정렬된 분할 대상 레코드들의 총 길이를 상기 누적 이동 평균의 비율로 나누는 위치를 상기 분할 위치로 결정하는, 저장 장치.
  19. 제12항에 있어서,
    상기 다원 탐색 트리의 레코드들의 길이는 가변인, 저장 장치.
PCT/KR2011/004213 2011-06-08 2011-06-08 누적 이동 평균에 기반하여 다원 탐색 트리의 노드를 분할하는 방법 및 장치 WO2012169675A1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020117014433A KR101242860B1 (ko) 2011-06-08 2011-06-08 누적 이동 평균에 기반하여 다원 탐색 트리의 노드를 분할하는 방법 및 장치
JP2014514775A JP5774213B2 (ja) 2011-06-08 2011-06-08 累積移動平均に基づく多重検索ツリーのノードを分割する方法および装置
PCT/KR2011/004213 WO2012169675A1 (ko) 2011-06-08 2011-06-08 누적 이동 평균에 기반하여 다원 탐색 트리의 노드를 분할하는 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/KR2011/004213 WO2012169675A1 (ko) 2011-06-08 2011-06-08 누적 이동 평균에 기반하여 다원 탐색 트리의 노드를 분할하는 방법 및 장치

Publications (1)

Publication Number Publication Date
WO2012169675A1 true WO2012169675A1 (ko) 2012-12-13

Family

ID=47296220

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2011/004213 WO2012169675A1 (ko) 2011-06-08 2011-06-08 누적 이동 평균에 기반하여 다원 탐색 트리의 노드를 분할하는 방법 및 장치

Country Status (3)

Country Link
JP (1) JP5774213B2 (ko)
KR (1) KR101242860B1 (ko)
WO (1) WO2012169675A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101477017B1 (ko) * 2013-03-29 2014-12-29 주식회사 알티베이스 공유메모리 내의 인덱스 운용 장치 및 방법
KR102000627B1 (ko) * 2019-01-04 2019-07-16 (주)공간인소프트 데이터 갱신 방법 및 그 장치
KR102031928B1 (ko) * 2019-03-25 2019-10-14 엘아이지넥스원 주식회사 이진 트리를 이용한 고속 펄스열 추출 장치 및 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980047127A (ko) * 1996-12-13 1998-09-15 윤덕용 Hg-트리 색인 구조 및 그의 삽입, 삭제, 검색 방법
KR20020049767A (ko) * 2000-12-20 2002-06-26 오길록 접근 빈도에 따른 데이터 구조체계의 재구성 장치 및 그방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10124363A (ja) * 1996-10-22 1998-05-15 Fuji Xerox Co Ltd 順編成索引管理方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980047127A (ko) * 1996-12-13 1998-09-15 윤덕용 Hg-트리 색인 구조 및 그의 삽입, 삭제, 검색 방법
KR20020049767A (ko) * 2000-12-20 2002-06-26 오길록 접근 빈도에 따른 데이터 구조체계의 재구성 장치 및 그방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
KWON, SEOK MYUN ET AL.: "A Co-Allocation Algorithm for a Multi-Cluster System", JOURNAL OF 2004 SPRING CONFERENCE OF KOREA INFORMATION SCIENCE SOCIETY, vol. 31, no. 1, April 2004 (2004-04-01) *
LEE, YU JIN ET AL.: "A Divide and Conquer Algorithm for Drawing General Trees Aesthetically", JOURNAL OF KISS(A): COMPUTER SYSTEMS AND THEORY, vol. 26, no. 1, January 1991 (1991-01-01) *

Also Published As

Publication number Publication date
JP5774213B2 (ja) 2015-09-09
JP2014520323A (ja) 2014-08-21
KR20130009575A (ko) 2013-01-23
KR101242860B1 (ko) 2013-03-12

Similar Documents

Publication Publication Date Title
WO2018034426A1 (ko) 커널 rdr을 이용한 태깅 말뭉치 오류 자동수정방법
WO2015137641A2 (ko) 계층적인 룰 구조를 가지고 있는 비즈니스 룰 관리 시스템 및 그 표현 방법
WO2010005261A2 (ko) 데이터 검색을 위한 파일 생성 방법 및 데이터 파일의 검색방법 그리고 데이터 파일 검색을 위한 데이터베이스 관리 시스템
WO2012169675A1 (ko) 누적 이동 평균에 기반하여 다원 탐색 트리의 노드를 분할하는 방법 및 장치
WO2020153552A1 (ko) 기록된 거래의 수정이 가능한 블록체인을 위한 방법 및 장치
WO2016056856A1 (ko) 무결성 검증 데이터 생성 방법 및 시스템
WO2018043843A1 (ko) 낮은 데이터 중복으로 빠른 쿼리 처리를 지원하는 관계형 데이터베이스 저장 시스템, 저장 방법 및 관계형 데이터베이스 저장 방법에 기초한 쿼리를 처리하는 방법
WO2020222347A1 (ko) 가상 머신 배치 방법 및 이를 구현하는 가상 머신 배치 장치
WO2011068315A4 (ko) 최대 개념강도 인지기법을 이용한 최적의 데이터베이스 선택장치 및 그 방법
WO2023163405A1 (ko) 신용평가 모델 업데이트 또는 교체 방법 및 장치
WO2015088291A1 (ko) 장문 번역 서비스 장치 및 방법
WO2010095807A2 (ko) 기여 점수에 기초한 문서 순위 결정 시스템 및 방법
WO2017094967A1 (ko) 자연 언어 처리 스키마 및 그 지식 데이터베이스 구축 방법 및 시스템
WO2022154326A1 (ko) 가상화된 리소스를 관리하는 방법, 장치 및 컴퓨터 프로그램
WO2010002174A2 (ko) 입찰 속성 정보를 이용한 입찰 관리 방법 및 시스템
WO2023158133A1 (ko) 번역된 콘텐츠의 편집 인터페이스 제공 방법 및 컴퓨터 프로그램
WO2024039098A1 (ko) 데이터를 처리하는 분산 처리 시스템 및 방법
WO2015182833A1 (ko) 최장 증가 부분수열을 이용한 아이템 정렬 장치 및 방법
WO2019190030A1 (ko) 빅데이터 개인정보의 익명화 및 익명화 데이터의 결합 방법
WO2024014631A1 (ko) 데이터 스케일을 고려한 콘볼루션 데이터의 양자화 방법, 이를 위한 하드웨어 가속기, 및 이를 이용한 컴퓨팅 장치
WO2024071505A1 (ko) 멀티-쿼리 스케줄러를 기반으로 멀티-쿼리를 처리하는 방법 및 이러한 방법을 제공하는 데이터 처리 시스템
WO2024071504A1 (ko) 서로 다른 프로세서 자원을 할당하여 정형 데이터와 비정형 데이터를 처리하는 방법 및 이러한 방법을 제공하는 데이터 처리 시스템
WO2024048868A1 (ko) 신경망에서의 연산방법 및 이를 위한 장치
WO2017135497A1 (ko) 셀렉션 풀을 이용한 바이클러스터 생성 장치 및 방법
WO2014126291A1 (ko) 일정 수 이상의 파일 쉐어로 복구 가능한 파일 분산 관리 장치 및 그 방법

Legal Events

Date Code Title Description
ENP Entry into the national phase

Ref document number: 20117014433

Country of ref document: KR

Kind code of ref document: A

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

Ref document number: 11867397

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2014514775

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 11867397

Country of ref document: EP

Kind code of ref document: A1