ํ‹ฐ์Šคํ† ๋ฆฌ

์•ž๋™๋„คJIHOON
{RepoJI}
์•ž๋™๋„คJIHOON
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (37)
    • ๐Ÿ–ฅ๏ธSW Engineer (29)
      • DataBase (0)
      • System Programming (0)
      • Algorithm (12)
      • DataStructure (0)
      • Computer Architechure (0)
      • Operating System (0)
      • Distributed System (11)
    • ๐ŸฆBackend (0)
      • Web (0)
    • ๐Ÿ—‚๏ธData Science (7)
      • Statistic (1)
      • Aritificial Intelli (5)
      • Probability Theory (0)
      • Information Retrieval (0)
      • Linear Algebra (0)
    • ๐ŸซUnderGraduate (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ๐Ÿ—‚๏ธGithub

ํƒœ๊ทธ

  • association rule
  • ๊ณต์œ ๋ฉ”๋ชจ๋ฆฌ
  • ํŒŒ์ผ ์‹œ์Šคํ…œ
  • shared memory
  • ์—ฐ๊ด€์„ฑ๋ถ„์„
  • ์Šค๋ ˆ๋“œ
  • Shemaphore
  • PCA
  • ๊ฐ•ํ™”ํ•™์Šต
  • ๋ฐ์ดํ„ฐ ์ฒญ๋…„ ์บ ํผ์Šค
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์‹œ์Šคํ…œ Chap13
  • ์ฃผ์„ฑ๋ถ„๋ถ„์„
  • Apriori algorithm
  • Message Queue
  • ๊ณต๋ถ„์‚ฐ
  • pthread
  • ๋‹จ์–ด ์ •๋ ฌ
  • ๋ฐ์ฒญ์บ 
  • q-learning algorithm
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์‹œ์Šคํ…œ Chap12
  • ์„ธ๋งˆํฌ์–ด
  • ์ƒ๋ช…๋Œ€ ๋น„์ฆˆ๋‹ˆ์Šค ๊ณผ์ •
  • Value function
  • ์†Œ์ผ“
  • Q-learning
  • ํŒจํ„ด๋ถ„์„
  • ๋ฉ”์„ธ์ง€ ํ
  • ๋ ˆ์ฝ”๋“œ ๋ฝํ‚น
  • Pipe
  • mini shell project
hELLO ยท Designed By ์ •์ƒ์šฐ.
์•ž๋™๋„คJIHOON

{RepoJI}

[ADV_db]Chap 3. Indexing - B+Tree ์ถ”๊ฐ€๋‚ด์šฉ๋“ค
๐Ÿ–ฅ๏ธSW Engineer/Distributed System

[ADV_db]Chap 3. Indexing - B+Tree ์ถ”๊ฐ€๋‚ด์šฉ๋“ค

2023. 4. 19. 16:21

# B+tree Extensions


B+Tree File Organization

  • ๋ฆฌํ”„ ๋…ธ๋“œ์— ํฌ์ธํ„ฐ๊ฐ€ ์•„๋‹Œ ๋ ˆ์ฝ”๋“œ ์ž์ฒด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹
  • ์‚ฝ์ž…/์‚ญ์ œ/๊ฐฑ์‹ ์ด ์ผ์–ด๋‚˜๋”๋ผ๋„ ํ•ญ์ƒ Clustered๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ฒŒ ํ•ด์ค€๋‹ค.
  • ๋ ˆ์ฝ”๋“œ๊ฐ€ ํฌ์ธํ„ฐ๋ณด๋‹ค ์‚ฌ์ด์ฆˆ๊ฐ€ ํฌ๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌํ”„ ๋…ธ๋“œ์— ๋“ค์–ด๊ฐ€๋Š” ๋ ˆ์ฝ”๋“œ์˜ ์ตœ๋Œ€ ์ˆ˜๋Š” ๋ฆฌํ”„ ๋…ธ๋“œ๊ฐ€ ์•„๋‹Œ ๋…ธ๋“œ๋“ค์˜ ํฌ์ธํ„ฐ ์ˆ˜๋ณด๋‹ค ์ž‘์„ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.
  • ๋”ฐ๋ผ์„œ ๊ณต๊ฐ„ ํ™œ์šฉ๋„๊ฐ€ ์ค‘์š”ํ•œ๋ฐ ์ด๋ฅผ ์œ„ํ•ด์„œ ๊ฐ€๋Šฅํ•œ ๋งŽ์€ Siblings๋ฅผ Split/Merge์— ํฌํ•จ์‹œํ‚ค๊ฒŒ ๋œ๋‹ค. 
    • ๊ทธ ๊ฒฐ๊ณผ m๊ฐœ์˜ sibling๋…ธ๋“œ๊ฐ€ ์žฌ๋ถ„๋ฐฐ์— ์ฐธ์—ฌํ•œ๋‹ค๋ฉด ๊ฐ ๋…ธ๋“œ๋งˆ๋‹ค ์ตœ์†Œ⌊(m-1)n/m⌋๊ฐœ์˜ ์—”ํŠธ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.

  • ํ•˜์ง€๋งŒ ์ด ๊ฒฝ์šฐ ๋ฆฌํ”„ ๋…ธ๋“œ์— ์žˆ๋˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋…ธ๋“œ ์‚ฌ์ด์ฆˆ๋ณด๋‹ค ์ปค์ ธ์„œ Split์„ ํ•ด์•ผํ•œ๋‹ค๋ฉด, ๋ ˆ์ฝ”๋“œ๋ฅผ ์ด๋™ ์‹œํ‚ค๋Š” ๋น„์šฉ์€ ๋„ˆ๋ฌด ๋น„์‹ธ๋‹ค.
  • ๋”ฐ๋ผ์„œ, ๋ฆฌํ”„๋…ธ๋“œ๊ฐ€ ์•„๋‹Œ ๋…ธ๋“œ์— ํฌ์ธํ„ฐ ๋Œ€์‹  key๊ฐ’์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฆฌํ”„ ๋…ธ๋“œ์—์„œ Split์ด ์ผ์–ด๋‚˜๋”๋ผ๋„ index ๋…ธ๋“œ๋“ค์—๋Š” ๊ฐฑ์‹ ์ด ํ•„์š”์—†๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
    • ์•„๋‹ˆ๋ฉด ๋งŒ์•ฝ key๊ฐ’์ด Uniqueํ•˜์ง€ ์•Š๋‹ค๋ฉด ๋‹ค๋ฅธ ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ด์„œ Uniqueํ•˜๋„๋ก ๋งŒ๋“œ๋Š”๊ฒŒ ์ข‹๋‹ค.
    • ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ฟผ๋ฆฌ ํ•˜๋Š”๊ฒŒ๋Š” ์ข€ ๋” ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ฒ ์ง€๋งŒ, ๋ฐ์ดํ„ฐ ๊ฐฑ์‹ ์—๋Š” ๋” ์ ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ฒŒ ๋œ๋‹ค.

Index Strings

  • ํ‚ค ๊ฐ’์œผ๋กœ ๋ฌธ์ž์—ด์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹
  • ๋…ธ๋“œ์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ •ํ•ด์ ธ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ž์—ด์˜ ํฌ๊ธฐ๋ฅผ ์•Œ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ Fanout์„ ์ •ํ•ด๋‘˜ ์ˆ˜ ์—†๋‹ค.
    • ๋”ฐ๋ผ์„œ, ๋ฌธ์ž์—ด์ด ๊ธธ์–ด์งˆ ์ˆ˜๋ก Fanout์ด ์ž‘์•„์ ธ ํŠธ๋ฆฌ ์ „์ฒด์˜ ๋†’์ด๊ฐ€ ๋†’์•„์ง„๋‹ค.
  • ํฌ์ธํ„ฐ ์ˆ˜๋ณด๋‹ค ๊ณต๊ฐ„ ํ™œ์šฉ๋„๋ฅผ ๊ธฐ์ค€์œผ๋กœ Split์ด๋‚˜ Merge๊ฐ€ ์ด๋ฃจ์–ด์ง„๋‹ค.
  • Prefix Compression
    • ๋ฌธ์ž์—ด์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด internal ๋…ธ๋“œ๋“ค์—๋Š” ์ „์ฒด ๋ฌธ์ž์—ด๋ณด๋‹ค๋Š” ์ ‘๋‘์‚ฌ๋ฅผ ํ‚ค๊ฐ’์œผ๋กœ ๋‘˜ ์ˆ˜ ์žˆ๋‹ค.

Bulk Loading

  • ํ•˜๋‚˜์”ฉ B+tree์— ์‚ฝ์ž…ํ•˜๊ฒŒ ๋˜๋ฉด ๋งค๋ฒˆ ํŒŒ์ผ I/O๊ฐ€ ์ผ์–ด๋‚˜๊ฒŒ ๋˜์–ด ๋งค์šฐ ๋น„ํšจ์œจ์ ์ด๋‹ค. ๋งŒ์•ฝ, ๋ฆฌํ”„ ๋…ธ๋“œ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜ฌ ์ˆ˜ ์—†๋Š” ์‚ฌ์ด์ฆˆ๋ผ๋„ ํ•œ๋‹ค๋ฉด ๋”์šฑ ๋น„ํšจ์œจ์ ์ด๋‹ค.
  • Solution 1 : ์ •๋ ฌํ•ด์„œ ์ˆœ์„œ๋Œ€๋กœ ์‚ฝ์ž…ํ•œ๋‹ค.
    • ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋น„์–ด์žˆ๋Š” page์— ์ˆœ์„œ๋Œ€๋กœ ์Œ“์ด๋‹ค๊ฐ€ Split์ด ์ผ์–ด๋‚˜๊ฒŒ ๋œ๋‹ค.
    • ๊ทธ๋Ÿฌ๋ฉด ๋งค๋ฒˆ I/O๋ฅผ ๋งค๋ฒˆํ•  ํ•„์š”๊ฐ€ ์—†์–ด์ง€์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„์˜ ๋…ธ๋“œ๊ฐ€ ์ ˆ๋ฐ˜๋งŒ ์ฐจ๊ฒŒ ๋œ๋‹ค.
  • Solution 2 : ์ƒํ–ฅ์‹ B+Tree ๊ตฌ์กฐ
    • ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ •๋ ฌ์„ ํ•œ ํ›„์— ๋ฆฌํ”„ ๋…ธ๋“œ๋‹จ๊ณ„๋ถ€ํ„ฐ ์‚ฝ์ž…ํ•ด๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹
    • ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์—์„œ ํฐ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์™”์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

Indexing on Flash

  • ํ”Œ๋ž˜์‰ฌ ๋ฉ”๋ชจ๋ฆฌ(20-100ms)๋Š” ๋งˆ๊ทธ๋„คํ‹ฑ(5-10ms)๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅด๋‹ค.
  • ํ•˜์ง€๋งŒ, ์“ฐ๊ธฐ๊ฐ€ ๋žœ๋ค์œผ๋กœ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ตญ ์ง€์šฐ๋Š” ๊ณผ์ •์ด ๋งŽ์ด ๋“ ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ๋””์Šคํฌ์˜ ๋ธ”๋ก ์‚ฌ์ด์ฆˆ๋ณด๋‹ค ํ”Œ๋ž˜์‹œ์˜ ํŽ˜์ด์ง€ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ž‘๊ธฐ๋•Œ๋ฌธ์— ๋…ธ๋“œ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋” ์ž‘์•„์•ผ ํ•œ๋‹ค.
  • ์ƒํ–ฅ์‹ B+Tree๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, Eraseํ•˜๋Š” ๊ณผ์ •์ด ์ ์–ด์ง€์ง€ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์ด ํ™•์‹คํžˆ ํ–ฅ์ƒ๋œ๋‹ค.
  • ์™ธ์—๋„ ์—ฌ๋Ÿฌ ๋ณ€ํ˜• B+tree๊ตฌ์กฐ๊ฐ€ ์ง€์šฐ๋Š” ๊ณผ์ •์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋‚˜์™€์žˆ๋‹ค.

Indexing in Main Memory

  • ์บ์‹œ ๋ˆ„๋ฝ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ์บ์‹œ์— ๋งž๋Š” ์ž‘๋Š” ๋…ธ๋“œ๋กœ ์žฌ๋ถ„๋ฐฐํ•˜๋Š”๊ฒŒ ์ค‘์š”ํ•˜๋‹ค. ๊ทธ๋ž˜์•ผ Space overhead์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ „์ฒด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ, ๋…ธ๋“œ ์‚ฌ์ด์ฆˆ๋ฅผ ํ‚ค์›Œ์„œ ๋””์Šคํฌ ์ ‘๊ทผ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€๋งŒ, ์บ์‹œ ๋ˆ„๋ฝ์„ ์œ„ํ•ด์„œ๋Š” ํฐ ๋…ธ๋“œ ๋‚ด์— ์บ์‹œ ์‚ฌ์ด์ฆˆ์— ๋งž๋Š” ์ž‘์€ ๋…ธ๋“œ๋กœ ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒŒ ๋‹จ์ˆœ ๋ฐฐ์—ด๋ณด๋‹ค ์ข‹๋‹ค.
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿ–ฅ๏ธSW Engineer > Distributed System' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ADV_db]Chap 12-14. ์—ฐ์Šต๋ฌธ์ œ  (0) 2023.04.20
[ADV_db]Chap 3. Hash index  (0) 2023.04.20
[ADV_db]Chap 3. Indexing - B+tree ๊ฒ€์ƒ‰,์‚ฝ์ž…,์‚ญ์ œ  (0) 2023.04.17
[ADV_db]Chap 3. Indexing - B+Tree ์†Œ๊ฐœ  (0) 2023.04.17
[ADV_db]Chap 3. Indexing  (1) 2023.04.14
    '๐Ÿ–ฅ๏ธSW Engineer/Distributed System' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [ADV_db]Chap 12-14. ์—ฐ์Šต๋ฌธ์ œ
    • [ADV_db]Chap 3. Hash index
    • [ADV_db]Chap 3. Indexing - B+tree ๊ฒ€์ƒ‰,์‚ฝ์ž…,์‚ญ์ œ
    • [ADV_db]Chap 3. Indexing - B+Tree ์†Œ๊ฐœ
    ์•ž๋™๋„คJIHOON
    ์•ž๋™๋„คJIHOON
    Every step repository / Data && Engineering

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”