• Mindscape ๐Ÿ”ฅ
    • Playlist ๐ŸŽง
  • Algorithm

    • 1018๋ฒˆ: ์ฒด์ŠคํŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ
    • 1966๋ฒˆ: ํ”„๋ฆฐํ„ฐ ํ
    • Python ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ํŒ
    • C++ std::vector ์‚ฌ์šฉ๋ฒ• ์ •๋ฆฌ
    • Vim ์‚ฌ์šฉ ๋งค๋‰ด์–ผ
  • Ubuntu

    • ๋ฆฌ๋ˆ…์Šค ์šฐ๋ถ„ํˆฌ GRUB ํฐํŠธ ๋ณ€๊ฒฝ
    • ์šฐ๋ถ„ํˆฌ ์ด๋ฏธ์ง€ ๋น„๋””์˜ค ์ธ๋„ค์ผ(๋ฏธ๋ฆฌ๋ณด๊ธฐ) ์•ˆ ๋ณด์ž„ ๋ฌธ์ œ ํ•ด๊ฒฐ
    • Wine ํ™˜๊ฒฝ์—์„œ ์นด์นด์˜คํ†ก ์‹คํ–‰ ์‹œ explorer.exe ๋œจ์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๋ฒ•
    • ์šฐ๋ถ„ํˆฌ Wine ์นด์นด์˜คํ†ก ์‚ฌ์ง„ ์ด๋ฏธ์ง€ ์Šคํฌ๋ฆฐ์ƒท ๋ถ™์—ฌ๋„ฃ๊ธฐ
    • Wine ์นด์นด์˜คํ†ก ์ด๋ชจ์ง€ ๊นจ์ง ๋ฌธ์ œ ํ•ด๊ฒฐ
    • Ubuntu ์œˆ๋„์šฐ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋„๊ธฐ
  • Wellness

    • ์ฐจ์ „์žํ”ผ (Psyllium Husk)
    • ์—‘์ŠคํŠธ๋ผ ๋ฒ„์ง„ ์˜ฌ๋ฆฌ๋ธŒ์œ  (Extra Virgin Olive Oil)
    • ์ž๊ฐ€๋น„๊ฐ•์„ธ์ฒ™ (Nasal Irrigation)
    • QCY HT08 (MeloBuds Pro Plus)
    • ์ฝ˜์„œํƒ€ (Concerta)
    • ์ธ๋ฐ๋†€ (Inderal)
    • ์„คํŠธ๋ž„๋ฆฐ (Sertraline)
    • ๋ฉœ๋ผํ† ๋‹Œ (Melatonin)
    • ์น˜๊ฒฝ๋ถ€ ๋งˆ๋ชจ์ฆ
    • ๋ฐ”๋ฒจ ์Šค์ฟผํŠธ (Barbell Squat)
  • Humanities

    • Nordvik, Russia
    • North Sentinel Island
    • ๋กฑ๊ณ ๋กฑ๊ณ (Rongorongo)
    • ๋ฐ”๋กœํฌ ์Œ์•… (Baroque Music)
  • Design

    • ๊ตฌ๊ธ€์˜ ์•„์ด์ฝ˜ ๋Œ€๊ฐœํŽธ โ€” 6๋…„ ๋งŒ์˜ ์‹ค์ˆ˜ ์ธ์ •
    • ์ œ๋Ÿด๋“œ ์  ํƒ€ โ€” ๋Ÿญ์…”๋ฆฌ ์Šคํฌ์ธ  ์›Œ์น˜์˜ ์ฐฝ์‹œ์ž
    • ๋ฐ”์šฐํ•˜์šฐ์Šค โ€” ํ˜„๋Œ€ ๋””์ž์ธ์˜ ์›์ 
  • Brands

    • NOMOS Glashรผtte
    • Frรฉdรฉrique Constant
    • KZ (Knowledge Zenith)
    • ์—์ŠคํŠธ๋ผ (AESTURA)
    • JINHAO (้‡‘่ฑช)
    • Herman Miller
    • ๋ฐ์Šค์ปค (DESKER)
    • ๋ฌด์‹ ์‚ฌ ์Šคํƒ ๋‹ค๋“œ (Musinsa Standard)
  • Finance

    • ํ˜„๋Œ€์นด๋“œ ZERO โ€” Edition2 vs Edition3 ๋น„๊ต
    • ์‹ ํ•œ์นด๋“œ ์ฒ˜์Œ
    • S&P 500 ETF ํˆฌ์ž ๊ฐ€์ด๋“œ
    • ํŒŒํ‚นํ†ต์žฅ vs CMA ํ†ต์žฅ
    • ๋ฒ„ํฌ์…” ํ•ด์„œ์›จ์ด (Berkshire Hathaway)
    • ๋น„ํŠธ์ฝ”์ธ(Bitcoin)
  • Products

    • ์˜ค๋””์˜ค ์ธํ„ฐํŽ˜์ด์Šค (Audio Interface)
    • ์ฟ ๋ฃจํ† ๊ฐ€ (KURUTOGA)
    • CX31993 DAC ๋™๊ธ€
    • ํด๋ Œ์ง• ๋ฐ€ํฌ (Cleansing Milk)
    • ํ”ผ์ ฏ ํ† ์ด (Fidget Toy)
    • ThinkPad
  • Programming Languages

    • 8.0. Statement Level Control Structures
    • 8. Subprogram
    • 9. Implementing Subprogram
    • 10.1. Abstract Data Types and Encapsulation Constructs
    • 10.2. Support for Object Oriented Programming
    • 11. Concurrency
    • 12. FPL (1)
    • 13. FPL (2)
    • 14. Exception Handling and Event Handling
    • Final Exam

Implementing Augmented B+tree

์ž‘์„ฑ 2026. 6. 12.ยท์ˆ˜์ • 2026. 6. 12.
  • ์ด๋ฒˆ ๊ณผ์ œ์˜ ๋ชฉํ‘œ: ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ B+ tree ๊ตฌํ˜„
  1. Normal B+ tree
  • ๊ฐ•์˜ ๋ฐ ์‹ค์Šต์—์„œ ๋‹ค๋ฃฌ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ B+ tree ๊ตฌํ˜„
  1. Logical Deletion Applied B+ tree
  • ๋ ˆ์ฝ”๋“œ ์‚ญ์ œ ์ฟผ๋ฆฌ ์‹œ, ์‹ค์ œ ์‚ญ์ œ ๋Œ€์‹  '์‚ญ์ œ๋จ'์œผ๋กœ ํ‘œ์‹œ
  • ํ•ด๋‹น ๋ ˆ์ฝ”๋“œ๋Š” ๊ฒ€์ƒ‰๋˜์ง€ ์•Š์•„์•ผ ํ•จ
  • B+tree application ์ข…๋ฃŒ ์‹œ, ์‹ค์ œ ๋ ˆ์ฝ”๋“œ ์‚ญ์ œ ๋ฐ ๋‚จ์€ ๋ ˆ์ฝ”๋“œ๋กœ B+tree ์žฌ๊ตฌ์„ฑ
  • ์‹ค์ œ ๋ ˆ์ฝ”๋“œ ์‚ญ์ œ ๋ฐ B+tree ์žฌ๊ตฌ์„ฑ์„ ์œ„ํ•œ ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ• ๊ณ ์•ˆ ๋ฐ ๊ตฌํ˜„

Disk-based B+tree

  • B+ tree์˜ ๋…ธ๋“œ ํ•˜๋‚˜๋ฅผ ํ•œ ํŽ˜์ด์ง€(4KB)์— ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ B+ tree ์ „์ฒด๋ฅผ ํ•œ ํŒŒ์ผ์— ์ €์žฅ
  • ํŒŒ์ผ์€ Disk์— ์ €์žฅ๋˜๋ฏ€๋กœ, B+tree management ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜์–ด๋„ B+tree ๊ตฌ์กฐ์™€ ๋‚ด์šฉ ์œ ์ง€
  • Data file์€ Header Page, Internal Page, Leaf Page, Free Page ๋“ฑ์œผ๋กœ ๊ตฌ์„ฑ๋จ (์Šฌ๋ผ์ด๋“œ 4 ๋‹ค์ด์–ด๊ทธ๋žจ ์ฐธ์กฐ)

Specification

  • main.c๋Š” ๋‹ค์Œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ๊ตฌํ˜„๋จ
    • open: pathname์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์กด data file์„ ์—ด๊ฑฐ๋‚˜, ์—†์œผ๋ฉด ์ƒˆ๋กœ ์ƒ์„ฑ. (์ดํ›„ command ์ฒ˜๋ฆฌ)
    • insert <key> <value>: 'key/value' (record)๋ฅผ data file์˜ ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜์— ์‚ฝ์ž… (์ค‘๋ณต key ๋ถˆ๊ฐ€)
    • find <key>: ์ž…๋ ฅ 'key'๋ฅผ ํฌํ•จํ•˜๋Š” record๋ฅผ ์ฐพ์•„ ์ผ์น˜ํ•˜๋Š” 'value' ๋ฐ˜ํ™˜
    • delete <key>: ์ผ์น˜ํ•˜๋Š” record๋ฅผ ์ฐพ์•„ ๋ฐœ๊ฒฌ ์‹œ ์‚ญ์ œ
  • libbpt.a ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋‹ค์Œ API service ์ œ๊ณต
    • int open_table (char *pathname); (์ด๋ฏธ ๊ตฌํ˜„๋จ)
      • Data file ์—ด๊ธฐ/์ƒ์„ฑ, ์„ฑ๊ณต ์‹œ unique table_id ๋ฐ˜ํ™˜, ์‹คํŒจ ์‹œ ์Œ์ˆ˜ ๋ฐ˜ํ™˜
    • int db_insert (int64_t key, char * value);
      • 'key/value' record ์‚ฝ์ž…, ์„ฑ๊ณต ์‹œ 0, ์‹คํŒจ ์‹œ non-zero ๋ฐ˜ํ™˜
    • char* db_find (int64_t key);
      • 'key'๋ฅผ ํฌํ•จํ•˜๋Š” record ๊ฒ€์ƒ‰
      • (์„ค๋ช…) ์ผ์น˜ 'key' ๋ฐœ๊ฒฌ ์‹œ, ret_val์— 'value' ๋ฌธ์ž์—ด ์ €์žฅ ํ›„ 0 ๋ฐ˜ํ™˜
      • (์„ค๋ช…) ์‹คํŒจ ์‹œ non-zero ๊ฐ’ ๋ฐ˜ํ™˜
    • int db_delete (int64_t key);
      • ์ผ์น˜ record ์‚ญ์ œ, ์„ฑ๊ณต ์‹œ 0, ์‹คํŒจ ์‹œ non-zero ๋ฐ˜ํ™˜
  • ๋ชจ๋“  update operation (insert / delete)์€ operation unit์œผ๋กœ data file์— ์ ์šฉ๋˜์–ด์•ผ ํ•จ
  • ๋‹ค๋ฅธ ํ•™์ƒ์˜ data file๊ณผ๋„ ํ˜ธํ™˜๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ data file layout ์ค€์ˆ˜
  • On-disk page size: 4096 Bytes (๊ณ ์ •)
  • Record (key + value) size: 128 Bytes (8B key + 120B value) (๊ณ ์ •)
  • Page ์ข…๋ฅ˜: Header, Free, Leaf, Internal
  • Header Page (Offset 0-4095)
    • Metadata ํฌํ•จ
    • Free page number [0-7]: ์ฒซ free page (์—†์œผ๋ฉด 0)
    • Root page number [8-15]: Root page ์œ„์น˜
    • Number of pages [16-23]: ์ด ํŽ˜์ด์ง€ ์ˆ˜
  • Free Page
    • Free page list๋กœ ์—ฐ๊ฒฐ (Header page๊ฐ€ head)
    • Next Free Page Number [0-7]
  • Page Header (Leaf/Internal ๊ณตํ†ต, 128 Bytes)
    • (include/bpt.h์˜ node structure ์ฐธ์กฐ)
    • Parent page number [0-7]
    • Is Leaf [8-11]: (0: Internal, 1: Leaf)
    • Number of keys [12-15]
  • Leaf Page
    • Key/value record ํฌํ•จ (key ์ •๋ ฌ๋จ)
    • ์˜ˆ: k1v1ย ,k2v2ย ,โ€ฆย ,k31v31k_1 v_1~, k_2 v_2~, \dots~, k_{31} v_{31}k1โ€‹v1โ€‹ย ,k2โ€‹v2โ€‹ย ,โ€ฆย ,k31โ€‹v31โ€‹
    • Record 128B, Page ๋‹น ์ตœ๋Œ€ 31๊ฐœ record (Order 32)
    • Page Header ๋‚ด [120-127]: Right Sibling Page Number (๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ์€ 0)
  • Internal Page
    • 120B value ๋Œ€์‹  8B page number (internal ๋˜๋Š” leaf) ์ €์žฅ
    • Page Header ๋‚ด [120-127]: One More Page Number (์ถ”๊ฐ€ page number)
    • Branching factor (order) = 249 (์ตœ๋Œ€ 248 entries, (4096 - 128) / (8+8) = 248)
    • Key ๋ฒ”์œ„ ํ•ด์„ ์˜ˆ: A<k1A < k_1A<k1โ€‹, k1โ‰คB<k2k_1 \le B < k_2k1โ€‹โ‰คB<k2โ€‹, โ€ฆย ,knโ‰คX\dots~, k_n \le Xโ€ฆย ,knโ€‹โ‰คX

Specification (Logical Deletion Applied B+ tree)

  • db_reorganize() ํ•จ์ˆ˜ ๊ตฌํ˜„ ํ•„์š”
  • bptree2/main.c์˜ switch-case ๋ฌธ 'q' case ๋‚ด๋ถ€์—์„œ ํ˜ธ์ถœ๋จ
  • bpt.h์— ์„ ์–ธํ•˜๊ณ  bpt.c์— ์ •์˜
  • ํ•„์š”ํ•œ input parameters๋Š” ์ž์œ ๋กญ๊ฒŒ ์ •์˜ ๊ฐ€๋Šฅ
  • db_reorganize ํ•จ์ˆ˜์˜ ์ ์ˆ˜๋Š” performance์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋ฉฐ, ์‹คํ–‰ ์†๋„๊ฐ€ ๋น ๋ฅผ์ˆ˜๋ก ๋†’์€ ์ ์ˆ˜ ํš๋“
  • Logical Deletion B+ tree์˜ Leaf Page:
    • Reserved space๋ฅผ ์‚ญ์ œ๋œ record ํ‘œ์‹œ์— ํ™œ์šฉ ๊ฐ€๋Šฅ
    • Page layout alignment (์ „์ฒด ํŽ˜์ด์ง€ ํฌ๊ธฐ, record ์‹œ์ž‘ offset ๋“ฑ)์— ์œ ์˜

Specification

  • ์ œ๊ณต๋œ ๋งํฌ์˜ repository๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณผ์ œ ์ˆ˜ํ–‰ ํ›„ github์— push
  • bptree1 ํด๋”: Normal B+ tree ๊ตฌํ˜„
  • bptree2 ํด๋”: Logical deletion applied B+ tree ๊ตฌํ˜„
  • README.md ํŒŒ์ผ์— ํ•™๋ฒˆ๊ณผ ์ด๋ฆ„ ๋ฐ˜๋“œ์‹œ ๊ธฐ์ž…
  • Github repository ์ด๋ฆ„: Assignment3_[ํ•™๋ฒˆ]
  • Wiki๋Š” LMS ๊ณผ์ œ ํƒญ์— assignment3_[ํ•™๋ฒˆ]_[์ด๋ฆ„].pdf ํŒŒ์ผ๋กœ ์ œ์ถœ
  • ์ œ์ถœ ๊ธฐํ•œ: 2025๋…„ 11์›” 20์ผ 23์‹œ 59๋ถ„
  • ์ง€์—ฐ ์ œ์ถœ ์‹œ 3์‹œ๊ฐ„๋งˆ๋‹ค ์ „์ฒด ๋“์ ์—์„œ 5% ๊ฐ์  (์˜ˆ: 1๋ถ„~3์‹œ๊ฐ„ ์ง€์—ฐ ์‹œ 95์ ๋ถ€ํ„ฐ ์‹œ์ž‘)
  • ์ œ์ถœ ๊ธฐํ•œ 60์‹œ๊ฐ„ ์ดํ›„ ์ œ์ถœ ์‹œ 0์ 
  • Assignment 3 Quiz๋Š” 11์›” 21์ผ ์‹ค์‹œ ์˜ˆ์ • (๋ณ€๊ฒฝ ์‹œ ๊ณต์ง€)
  • Makefile์€ ์ ˆ๋Œ€ ์ˆ˜์ • ๊ธˆ์ง€
  • main.c์˜ open_table ์ธ์ž๋ฅผ "test.db"์—์„œ "DB[ํ•™๋ฒˆ].db"๋กœ ์ˆ˜์ •ํ•˜์—ฌ ์ œ์ถœ
  • main.c์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„์€ ์ ˆ๋Œ€ ์ˆ˜์ • ๊ธˆ์ง€
  • bpt.c์— ์ ์ ˆํ•œ ๋‚ด์šฉ์„ ์ถ”๊ฐ€/์ˆ˜์ •ํ•˜์—ฌ ๊ณผ์ œ ์ˆ˜ํ–‰
  • ์ œ๊ณต๋œ Disk read/write API ํ™œ์šฉ ๊ฐ€๋Šฅ
  • ๊ณผ์ œ ์ˆ˜ํ–‰์— ํ•„์š”ํ•œ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋Š” ์ง์ ‘ ์ •์˜ํ•˜์—ฌ ์‚ฌ์šฉ
  • Normal B+ tree ๊ตฌํ˜„ ์ฝ”๋“œ๋ฅผ Logical Deletion Applied B+ tree์— ํ™œ์šฉ ๊ฐ€๋Šฅ
  • ์ œ๊ณต๋œ in-memory B+tree ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ 

Judging System

  • ์ฑ„์  ํ™˜๊ฒฝ (Default Version)
    • gcc (Ubuntu 11.4.0-1ubuntu1~22.04.1) 11.4.0
    • GNU Make 4.3
  • Version ์ฐจ์ด๋กœ ์ธํ•œ ๋ฌธ์ œ๋Š” ์ฑ…์ž„์ง€์ง€ ์•Š์Œ
  • ๋นŒ๋“œ ๋˜๋Š” ์‹คํ–‰์ด ๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ 0์  ์ฒ˜๋ฆฌ
  • ๊ณผ์ œ ์ˆ˜ํ–‰ ์‹œ ์ตœ๋Œ€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ 1MiB๋กœ ์ œํ•œ
  • ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด 1MiB๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ๊ฒฝ์šฐ ํฐ ๊ฐ์  ๋ถ€์—ฌ ๊ฐ€๋Šฅ

Submit

  • Code
    • Completeness: ๋ช…์„ธ์˜ ์š”๊ตฌ ์กฐ๊ฑด์„ ๋ชจ๋‘ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌํ˜„
    • Defensiveness: ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•œ ์˜ˆ์™ธ ์ƒํ™ฉ์— ๋Œ€์ฒ˜
    • Comment: ์ฝ”๋“œ์— ๋ฐ˜๋“œ์‹œ ์ฃผ์„ ํฌํ•จ
  • Wiki
    • Design: ์š”๊ตฌ ์กฐ๊ฑด ๊ตฌํ˜„ ๊ณ„ํš, ์ž๋ฃŒ๊ตฌ์กฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ด๋ก  ์ ์šฉ ๋ฐฉ์‹ ์„œ์ˆ 
    • Implement: ์ƒˆ๋กญ๊ฒŒ ๊ตฌํ˜„/์ˆ˜์ •ํ•œ ๋ถ€๋ถ„์˜ ๋ชฉ์ ๊ณผ ๊ธฐ์กด๊ณผ์˜ ์ฐจ์ด์  ์„œ์ˆ  (์ฝ”๋“œ ๋ณต์‚ฌ ๊ธˆ์ง€)
    • Result: ์ •์ƒ ๋™์ž‘ ์‹คํ–‰ ๊ฒฐ๊ณผ ์ฒจ๋ถ€ ๋ฐ ๋™์ž‘ ๊ณผ์ • ์„ค๋ช…
    • Trouble shooting: ๊ณผ์ œ ์ˆ˜ํ–‰ ์ค‘ ๊ฒช์€ ๋ฌธ์ œ์™€ ํ•ด๊ฒฐ ๊ณผ์ • ์„œ์ˆ  (๋ฏธํ•ด๊ฒฐ ์‹œ, ๋ฌธ์ œ ๋‚ด์šฉ๊ณผ ํ•ด๊ฒฐ ์‹œ๋„ ์„œ์ˆ )
    • db_reorganize์— ๋Œ€ํ•œ ๊ณ ์ฐฐ: db_reorganize ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ๊ณ ์•ˆํ•œ ๋‚ด์šฉ ์ƒ์„ธ ์„œ์ˆ 
์ตœ๊ทผ ์ˆ˜์ •: 26. 6. 12. ์˜คํ›„ 3:28
Contributors: kmbzn, Claude Sonnet 4.6

BUILT WITH

CloudflareNode.jsGitHubGitVue.jsJavaScriptVSCodenpm

All trademarks and logos are property of their respective owners.
ยฉ 2026 kmbzn ยท MIT License