๐Ÿ–ฅ๏ธSW Engineer/Distributed System

    [ADV_db]Chap 4. Query-processing

    # ์งˆ์˜ ์ฒ˜๋ฆฌ ์ˆœ์„œ Parsing and Translation ๋“ค์–ด์˜จ ์งˆ์˜๋ฌธ์—์„œ ๋ฌธ๋ฒ•์  ์˜ค๋ฅ˜๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ๊ด€๋ จ ๋ฆด๋ ˆ์ด์…˜๋“ค์„ ํ™•์ธํ•œ๋‹ค. DBMS๋‚ด๋ถ€์—์„œ ์ž‘๋™๊ฐ€๋Šฅํ•œ ํ˜•ํƒœ๋กœ ๋ฒˆ์—ญํ•˜๊ณ , relational algebra๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. View์—ฐ์‚ฐ์ด ํฌํ•จ๋œ ์ฟผ๋ฆฌ์˜ ๊ฒฝ์šฐ, View๋ฅผ ์ •์˜ํ•˜๋Š” ๋ชจ๋“  ๊ด€๊ณ„ ๋Œ€์ˆ˜ ๋ณ€ํ™˜์‹์œผ๋กœ ๋Œ€์ฒด๋œ๋‹ค. Optimizer ์—ฌ๋Ÿฌ relational algebra ์ค‘์—์„œ ๊ฐ€์žฅ ์ข‹์€ Execution plan์„ ๊ณ ๋ฅธ๋‹ค. ๊ณ ๋ฅด๋Š” ๊ธฐ์ค€์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ํŒŒ์ผ์ด ์ €์žฅ๋œ ๋ฐฉ์‹์ด๋‚˜ ์ธ๋ฑ์Šค์˜ ์œ ๋ฌด์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š” Cost๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฐ€์žฅ ๋‚ฎ์€ Cost๋ฅผ ๊ฐ€์ง„ Execution plan์„ ์„ ํƒํ•œ๋‹ค. Evaluation ์—ฐ์‚ฐ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ์ฃผ์„์ด ๋‹ฌ๋ฆฐ relational-algebra operation์„ e..

    [ADV_db]Chap 12-14. ์—ฐ์Šต๋ฌธ์ œ

    # Chap 12 . Physical storage system 12.1 SSD๋ฅผ ์ €์žฅ์žฅ์น˜๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์•„๋‹ˆ๋ฉด ์ €์žฅ์žฅ์น˜์™€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ„์˜ ๋ฒ„ํผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ด ์ค‘ ๋งŒ์•ฝ real-time์— ์‚ฌ์šฉ๋˜๋Š” SSD๋ผ๋ฉด ์–ด๋–ค ์šฉ๋„๋กœ ์“ฐ๋Š”๊ฒŒ ์ ํ•ฉํ• ๊นŒ?๊ทธ๋ฆฌ๊ณ  ๋งŒ์•ฝ ์—„์ฒญ ํฐ ๋ฆด๋ ˆ์ด์…˜์ด ์žˆ๋Š”๋ฐ ์ด ์ค‘ ์ผ๋ถ€๋งŒ ์ž์ฃผ ์ด์šฉ๋˜๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด SSD๋ฅผ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•˜๋Š”๊ฒŒ ์ข‹์„์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค Real-time์˜ ๊ฒฝ์šฐ ์ €์žฅ์žฅ์น˜์˜ ์šฉ๋„๋กœ ์“ฐ๋Š” ๊ฒŒ ๋” ์„ฑ๋Šฅ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ํฐ ๋ฆด๋ ˆ์ด์…˜์˜ ๊ฒฝ์šฐ์—๋Š” ์ž์ฃผ ์ด์šฉํ•˜๋Š” ๋ถ€๋ถ„์„ ์บ์‹œ๋‚˜ ๋ฒ„ํผ์˜ ํ˜•ํƒœ๋กœ SSD๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. 12.2 ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋””์Šคํฌ์—์„œ ์•ˆ์ชฝ Track์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๊นฅ์ชฝ Track๋งŒ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์ด๋Ÿฐ ๊ฒฝ์šฐ์˜ ์žฅ์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค. ์–ด์ฐจํ”ผ ์•ˆ์ชฝ์ด๋‚˜ ๋ฐ”๊นฅ์ชฝ์ด๋‚˜..

    [ADV_db]Chap 3. Hash index

    # Static Hashing Hashing ๋Œ€๋ถ€๋ถ„ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์— ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜์ง€๋งŒ, ํŒŒ์ผ์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ •๋ฆฌํ•  ๋•Œ๋„ ์‚ฌ์šฉ๋œ๋‹ค. ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ๋Š” ๋ฒ„์ผ“์— ๋ ˆ์ฝ”๋“œ๋“ค์˜ ์ธ๋ฑ์Šค๋“ค์ด ๋“ค์–ด์žˆ์ง€๋งŒ, ํŒŒ์ผ์„ ๊ด€๋ฆฌํ•  ๋•Œ๋Š” ์‹ค์ œ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค. Hash Index๋Š” ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ํ†ต๊ณผํ•ด์„œ ๋‚˜์˜ค๋Š” ๊ฐ’์„ Search key๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. Bucket์ด๋ผ๋Š” ๋””์Šคํฌ ๋ธ”๋ก์— ๊ฐ™์€ ํ•ด์‹œ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ์—ฌ๋Ÿฌ ์—”ํŠธ๋ฆฌ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค. ๋งŒ์•ฝ Bucket์˜ Index๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ๋‹ค๋ฉด Static Hashing ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด, Dynamic Hashing์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋‹ค๋ฅธ ์„œ์น˜ ํ‚ค ๊ฐ’์„ ๊ฐ€์ง€๋”๋ผ๋„ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ํ†ต๊ณผํ–ˆ์„ ๋•Œ ๊ฐ’์ด ๊ฐ™๋‹ค๋ฉด ๊ฐ™์€ Bucket์— ์œ„์น˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ์—”ํŠธ๋ฆฌ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹น B..

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

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

    [ADV_db]Chap 3. Indexing - B+tree ๊ฒ€์ƒ‰,์‚ฝ์ž…,์‚ญ์ œ

    # B+Tree ๊ฒ€์ƒ‰ ๋ฃจํŠธ ๋…ธ๋“œ๋ถ€ํ„ฐ ๊ฒ€์ƒ‰ํ•˜๋Š” key๊ฐ’์ธ v๋ณด๋‹ค ํฐ key๊ฐ’์ด ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ๊ฒ€์ƒ‰ํ•˜๋‹ค ๊ฐ™์€ key๊ฐ’์„ ๊ฐ€์ง€๋ฉด, P(i+1)๋กœ ์•„๋‹ˆ๋ฉด P(i)๋กœ ๊ฐ€์„œ ๋ฆฌํ”„ ๋…ธ๋“œ๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค. ํ•˜๋‚˜์˜ ๋…ธ๋“œ๋Š” ๋ณดํ†ต ํ•˜๋‚˜์˜ ๋””์Šคํฌ ๋ธ”๋ก ์‚ฌ์ด์ฆˆ์ธ 4kb๋กœ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณดํ†ต ํ•˜๋‚˜์˜ index๋‹น ํฌ๊ธฐ๋Š” 40byte๋กœ ์ •ํ•˜๊ณ  Fanout n์€ 100์ •๋„๋กœ ํ•˜๋Š” ๊ฒŒ ๋ณดํ†ต์ด๋‹ค. ๊ทธ๋Ÿผ key๊ฐ€ ๋ฐฑ๋งŒ๊ฐœ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ, log50(1,000,000) = 4 ์ด๋ฏ€๋กœ ๊ฒ€์ƒ‰ํ•  ๋•Œ๋งˆ๋‹ค 4๊ฐœ์˜ ๋…ธ๋“œ๋ฅผ ์ง€๋‚œ๋‹ค. Composite key(๋ณตํ•ฉํ‚ค) ๋งŒ์•ฝ key๊ฐ€ primary key๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ, ์œ ์ผ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์–ด๋ ต๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ, (ai , Ap)์‹์œผ๋กœ ๋ณตํ•ฉํ‚ค๋ฅผ ๋งŒ๋“ค์–ด ์œ ์ผ์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ, ์ด๋Ÿฌ๋ฉด ๋” ๋งŽ์€ I..

    [ADV_db]Chap 3. Indexing - B+Tree ์†Œ๊ฐœ

    # B+Tree B+Tree vs Sequential index B+Tree Sequential index ์žฅ์  1. ์‚ฝ์ž…,์‚ญ์ œ ๊ณผ์ •์—์„œ ์•Œ์•„์„œ ์žฌ๊ตฌ์„ฑ์ด ์ผ์–ด๋‚œ๋‹ค. 2. ์„ฑ๋Šฅ ์œ ์ง€๋ฅผ ์œ„ํ•œ ์ „์ฒด ํŒŒ์ผ ์žฌ๊ตฌ์„ฑ์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค. 1. ์‰ฝ๋‹ค ใ…‹ ๋‹จ์  ์‚ฝ์ž…,์‚ญ์ œ ๊ณผ์ •์ด ์ข€ ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ณ , ํŠธ๋ฆฌ๋ฅผ ์ €์žฅํ•  ์ถ”๊ฐ€ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค. 1. Overflow Block๋•Œ๋ฌธ์— ํŒŒ์ผ์ด ์ปค์งˆ์ˆ˜๋ก ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง„๋‹ค 2. ์ฃผ๊ธฐ์ ์œผ๋กœ ์žฌ์ •๋น„๊ฐ€ ์š”๊ตฌ๋œ๋‹ค. B+Tree ํŠน์ง• B+tree์—์„œ์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ๋ฆฌํ”„ ๋…ธ๋“œ์— ๋“ค์–ด์žˆ๊ฑฐ๋‚˜, ๊ทธ ์ฃผ์†Œ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฆฌํ”„ ๋…ธ๋“œ๋ฅผ ์ œ์™ธํ•œ ๋…ธ๋“œ๋ฅผ "์ธ๋ฑ์Šค ๋…ธ๋“œ"๋ผ ๋ถ€๋ฅด๊ณ , ๋ฆฌํ”„ ๋…ธ๋“œ๋ฅผ "๋ฐ์ดํ„ฐ ๋…ธ๋“œ"๋ผ ๋ถ€๋ฅธ๋‹ค. ๋ชจ๋“  ๋ฆฌํ”„ ๋…ธ๋“œ๋Š” ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ณ , ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ..