• Mindscape ๐Ÿ”ฅ
    • Playlist ๐ŸŽง
  • ๐Ÿค– Artifical Intelligence

    • 1. Basics; Linear Algebra
    • 2. Basics; Linear Algebra (2), Search (1)
    • 3. Search (2)
    • 4. Knowledge and Logic (1)
    • 5. Knowledge and Logic (2)
    • 6. Probability
    • 7. Information Theory
    • 8. Probabilitc Reasoning (2)
    • 9. Probabilitc Reasoning (3)
    • 10. Machine Learning (1)
    • 11. Machine Learning (2)
    • 12. Machine Learning (3)
    • 13. Linear Models
    • 14. Other Classic ML Models (1)
    • 15. Other Classic ML Models (2)
  • ๐Ÿ”’ Computer Security

    • 01. Overview
    • 02. ์ •๋ณด๋ณด์•ˆ์ •์ฑ… ๋ฐ ๋ฒ•๊ทœ
    • 03. Cryptographic Tools
    • 04. User Authentication
    • 05. Access Control
    • 06. Database Security
    • 07. Malicious Software
    • 08. Firmware Analysis
  • ๐Ÿ—„๏ธ Database System

    • 1. Introduction
    • 2. Relational Model
    • 3. SQL
    • 6. E-R Model
    • 7. Relational Database Design (1)
    • 7. Relational Database Design (2)
    • 13. Data Storage Structures
    • 14. Indexing
    • 15. Query Processing
  • ๐Ÿ“ Software Engineering

    • 2. Introduction to Software Engineering
    • 3. Process
    • 4. Process Models
    • 5. Agile
    • 6. Requirements
    • 7. Requirements Elicitation and Documentation
    • 8. Architecture
    • 9. Unified Modelling Language
    • 10. Object-Oriented Analysis
    • Object-Oriented Design
  • ๐Ÿง  Algorithm

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

13. Data Storage Structures

File Organization

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํŒŒ์ผ(file)์˜ ์ง‘ํ•ฉ์œผ๋กœ ์ €์žฅ
  • ํŒŒ์ผ์€ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋ ˆ์ฝ”๋“œ(record)์˜ ์‹œํ€€์Šค๋กœ ๊ตฌ์„ฑ
  • ๊ฐ ํŒŒ์ผ์€ ๋ธ”๋ก(block)์ด๋ผ๋Š” ๊ณ ์ • ๊ธธ์ด ์ €์žฅ ๋‹จ์œ„๋กœ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋ถ„ํ• ๋˜๋ฉฐ, ์ด๋Š” ์ €์žฅ ํ• ๋‹น ๋ฐ ๋ฐ์ดํ„ฐ ์ „์†ก์˜ ๋‹จ์œ„
  • ๋ธ”๋ก์€ ๋ ˆ์ฝ”๋“œ ํฌ๊ธฐ์™€ ์‚ฌ์šฉ ์ค‘์ธ ๋ฌผ๋ฆฌ์  ๋ ˆ์ฝ”๋“œ ๊ตฌ์„ฑ ํ˜•ํƒœ์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ๋ ˆ์ฝ”๋“œ๋ฅผ ํฌํ•จ ๊ฐ€๋Šฅ
  • ๋ ˆ์ฝ”๋“œ๋Š” ํ•„๋“œ(field)(์†์„ฑ์„ ์œ„ํ•œ)์˜ ์‹œํ€€์Šค
  • ๊ฐ€๋Šฅํ•œ ๊ฐ€์ •๋“ค
    • ์–ด๋–ค ๋ ˆ์ฝ”๋“œ๋„ ๋ธ”๋ก๋ณด๋‹ค ํฌ์ง€ ์•Š์Œ (๋Œ€๋ถ€๋ถ„์˜ DB ์‹œ์Šคํ…œ์—์„œ ํ˜„์‹ค์ )
    • ๋ธ”๋ก๋ณด๋‹ค ํฐ ๋ ˆ์ฝ”๋“œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ๋กœ ๋น„์—ฐ์†์ ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ
    • ๊ฐ ๋ ˆ์ฝ”๋“œ๋Š” ๋‹จ์ผ ๋ธ”๋ก์— ์™„์ „ํžˆ ํฌํ•จ๋จ; ๋ธ”๋ก ๊ฒฝ๊ณ„๋ฅผ ๋„˜์ง€ ์•Š์Œ
    • ๋‘ ๋ธ”๋ก์— ๊ฑธ์นœ ๋ ˆ์ฝ”๋“œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ๋กœ ๋น„์—ฐ์†์ ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ
    • ๊ฐ ํŒŒ์ผ์€ ํŠน์ • ์œ ํ˜•์˜ ๋ ˆ์ฝ”๋“œ๋งŒ ๊ฐ€์ง
    • ๋‹ค๋ฅธ ๊ด€๊ณ„(relation)์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ํŒŒ์ผ ์‚ฌ์šฉ

Fixed-Length Records

  • ๋‹จ์ˆœํ•œ ์ ‘๊ทผ ๋ฐฉ์‹:
    • ๋ ˆ์ฝ”๋“œ i(โ‰ฅ0)i (\ge 0)i(โ‰ฅ0)๋ฅผ ๋ฐ”์ดํŠธ nร—in \times inร—i๋ถ€ํ„ฐ ์ €์žฅ. ์—ฌ๊ธฐ์„œ nnn์€ ๊ฐ ๋ ˆ์ฝ”๋“œ์˜ ํฌ๊ธฐ
    • ๋ ˆ์ฝ”๋“œ ์ ‘๊ทผ์€ ๊ฐ„๋‹จํ•˜์ง€๋งŒ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋ธ”๋ก์„ ๊ต์ฐจํ•  ์ˆ˜ ์žˆ์Œ
  • ์ˆ˜์ •: ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋ธ”๋ก ๊ฒฝ๊ณ„๋ฅผ ๋„˜์ง€ ์•Š๋„๋ก ํ—ˆ์šฉ
  • ๋ ˆ์ฝ”๋“œ iii์˜ ์‚ญ์ œ: ๋Œ€์•ˆ๋“ค
    • ๋Œ€์•ˆ 1: ๋ ˆ์ฝ”๋“œ i+1,โ€ฆ,ni+1, \dots, ni+1,โ€ฆ,n์„ i,โ€ฆ,nโˆ’1i, \dots, n-1i,โ€ฆ,nโˆ’1๋กœ ์ด๋™
    • ๋Œ€์•ˆ 2: ๋ ˆ์ฝ”๋“œ nnn์„ iii๋กœ ์ด๋™
    • ๋Œ€์•ˆ 3: ๋ ˆ์ฝ”๋“œ๋ฅผ ์ด๋™ํ•˜์ง€ ์•Š๊ณ , ๋ชจ๋“  ๋นˆ ๋ ˆ์ฝ”๋“œ๋ฅผ free list์— ์—ฐ๊ฒฐ

Variable-Length Records

  • ๊ฐ€๋ณ€ ๊ธธ์ด ๋ ˆ์ฝ”๋“œ๋Š” ์—ฌ๋Ÿฌ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์—์„œ ๋ฐœ์ƒ:
    • ํŒŒ์ผ ๋‚ด์— ์—ฌ๋Ÿฌ ๋ ˆ์ฝ”๋“œ ํƒ€์ž… ์ €์žฅ
    • ๋ฌธ์ž์—ด(varchar)๊ณผ ๊ฐ™์ด ํ•˜๋‚˜ ์ด์ƒ์˜ ํ•„๋“œ์— ๊ฐ€๋ณ€ ๊ธธ์ด๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ๋ ˆ์ฝ”๋“œ ํƒ€์ž…
    • ๋ฐฐ์—ด๊ณผ ๊ฐ™์ด ๋ฐ˜๋ณต๋˜๋Š” ํ•„๋“œ๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ๋ ˆ์ฝ”๋“œ ํƒ€์ž… (์ผ๋ถ€ ๊ตฌํ˜• ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์—์„œ ์‚ฌ์šฉ)
  • ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ
    1. ๊ฐœ๋ณ„ ์†์„ฑ์ด ๊ฐ€๋ณ€ ๊ธธ์ด์ผ์ง€๋ผ๋„ ์‰ฝ๊ฒŒ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‹จ์ผ ๋ ˆ์ฝ”๋“œ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•
    2. ๋ธ”๋ก ๋‚ด์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ธ”๋ก ๋‚ด์— ๊ฐ€๋ณ€ ๊ธธ์ด ๋ ˆ์ฝ”๋“œ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ๋‹จ์ผ ๊ฐ€๋ณ€ ๊ธธ์ด ๋ ˆ์ฝ”๋“œ ํ‘œํ˜„ ๋ฐฉ๋ฒ•
    • ๋ ˆ์ฝ”๋“œ ๊ตฌ์กฐ๋Š” ๋‘ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ
      • ๊ณ ์ • ๊ธธ์ด ๋ถ€๋ถ„ (์ดˆ๊ธฐ ๋ถ€๋ถ„)
        • ๊ฐ ๊ฐ€๋ณ€ ๊ธธ์ด ํ•„๋“œ์— ๋Œ€ํ•œ ๊ณ ์ • ํฌ๊ธฐ (์˜คํ”„์…‹, ๊ธธ์ด) ์ •๋ณด
        • ๊ณ ์ • ๊ธธ์ด ํ•„๋“œ์˜ ๊ฐ’๊ณผ Null ๋น„ํŠธ๋งต
      • ๊ฐ€๋ณ€ ๊ธธ์ด ๋ถ€๋ถ„: ๊ฐ€๋ณ€ ๊ธธ์ด ํ•„๋“œ์˜ ๊ฐ’
  • ๋ธ”๋ก ๋‚ด ๋‹ค์ค‘ ๊ฐ€๋ณ€ ๊ธธ์ด ๋ ˆ์ฝ”๋“œ ์ €์žฅ ๋ฐฉ๋ฒ•
    • ์Šฌ๋กฏ ํŽ˜์ด์ง€(slotted-page) ๊ตฌ์กฐ๋Š” ๋ธ”๋ก ๋‚ด ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ
    • ์Šฌ๋กฏ ํŽ˜์ด์ง€ ํ—ค๋”(header) ํฌํ•จ ๋‚ด์šฉ:
      • ํ—ค๋”์˜ ๋ ˆ์ฝ”๋“œ ์—”ํŠธ๋ฆฌ(entry) ์ˆ˜
      • ๋ธ”๋ก ๋‚ด ์—ฌ์œ  ๊ณต๊ฐ„์˜ ๋
      • ๊ฐ ๋ ˆ์ฝ”๋“œ์˜ ์œ„์น˜์™€ ํฌ๊ธฐ๋ฅผ ํฌํ•จํ•˜๋Š” ํ•ญ๋ชฉ๋“ค์˜ ๋ฐฐ์—ด
    • ๋ ˆ์ฝ”๋“œ๋Š” ์‚ญ์ œ ๋˜๋Š” ํฌ๊ธฐ ๋ณ€๊ฒฝ ์‹œ ํŽ˜์ด์ง€ ๋‚ด์—์„œ ์ด๋™ํ•˜์—ฌ ๋ ˆ์ฝ”๋“œ ์‚ฌ์ด์— ๋นˆ ๊ณต๊ฐ„ ์—†์ด ์—ฐ์†์ ์œผ๋กœ ์œ ์ง€๋  ์ˆ˜ ์žˆ์Œ; ํ—ค๋”์˜ ํ•ญ๋ชฉ์€ ๊ทธ์— ๋”ฐ๋ผ ์—…๋ฐ์ดํŠธ๋˜์–ด์•ผ ํ•จ
    • ์™ธ๋ถ€ ๋ ˆ์ฝ”๋“œ ํฌ์ธํ„ฐ๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ๊ฐ€๋ฆฌ์ผœ์„œ๋Š” ์•ˆ ๋จ; ๋Œ€์‹  ํ—ค๋”์— ์žˆ๋Š” ํ•ด๋‹น ๋ ˆ์ฝ”๋“œ์˜ ํ•ญ๋ชฉ์„ ๊ฐ€๋ฆฌ์ผœ์•ผ ํ•จ

Organization of Records in Files

  • Heap ํŒŒ์ผ ์กฐ์ง
    • ๋ ˆ์ฝ”๋“œ๋Š” ๊ณต๊ฐ„์ด ์žˆ๋Š” ํŒŒ์ผ ์–ด๋””์—๋‚˜ ์œ„์น˜ ๊ฐ€๋Šฅ
    • ๋ ˆ์ฝ”๋“œ์˜ ์ˆœ์„œ ์—†์Œ
  • Sequential ํŒŒ์ผ ์กฐ์ง
    • ๊ฒ€์ƒ‰ ํ‚ค(search key) ๊ฐ’์— ๋”ฐ๋ผ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅ
  • Multitable clustering ํŒŒ์ผ ์กฐ์ง
    • ์—ฌ๋Ÿฌ ๋‹ค๋ฅธ ๊ด€๊ณ„์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋™์ผํ•œ ํŒŒ์ผ์— ์ €์žฅ ๊ฐ€๋Šฅ
    • ๋™๊ธฐ: ํŠน์ • ์กฐ์ธ(join) ์—ฐ์‚ฐ์— ๋Œ€ํ•œ I/O๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๊ด€๋ จ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋™์ผํ•œ ๋ธ”๋ก์— ์ €์žฅ
  • B+-tree ํŒŒ์ผ ์กฐ์ง
    • ๋งŽ์€ ์ˆ˜์˜ ์‚ฝ์ž…, ์‚ญ์ œ, ์—…๋ฐ์ดํŠธ ์—ฐ์‚ฐ์—๋„ ์ •๋ ฌ๋œ ์ €์žฅ ์œ ์ง€
    • ์ž์„ธํ•œ ๋‚ด์šฉ์€ 14์žฅ
  • Hashing ํŒŒ์ผ ์กฐ์ง
    • ๊ฒ€์ƒ‰ ํ‚ค์— ๋Œ€ํ•ด ๊ณ„์‚ฐ๋œ ํ•ด์‹œ ํ•จ์ˆ˜(hash function); ๊ฒฐ๊ณผ๋Š” ๋ ˆ์ฝ”๋“œ๊ฐ€ ์œ„์น˜ํ•ด์•ผ ํ•  ํŒŒ์ผ์˜ ๋ธ”๋ก์„ ์ง€์ •
    • ์ž์„ธํ•œ ๋‚ด์šฉ์€ 14์žฅ

Heap File Organization

  • ๋ ˆ์ฝ”๋“œ๋Š” ์—ฌ์œ  ๊ณต๊ฐ„์ด ์žˆ๋Š” ํŒŒ์ผ ์–ด๋””์—๋‚˜ ์œ„์น˜ ๊ฐ€๋Šฅ
  • ๋ ˆ์ฝ”๋“œ๋Š” ์ผ๋‹จ ํ• ๋‹น๋˜๋ฉด ๋ณดํ†ต ์ด๋™ํ•˜์ง€ ์•Š์Œ (๋ ˆ์ฝ”๋“œ ์ˆœ์„œ ์œ ์ง€ ๋ถˆํ•„์š”)
  • ํŒŒ์ผ ๋‚ด ์—ฌ์œ  ๊ณต๊ฐ„์ด ์žˆ๋Š” ๋ธ”๋ก์„ ํšจ์œจ์ ์œผ๋กœ ์ฐพ๋Š” ๊ฒƒ์ด ์ค‘์š”
  • Free-space map
    • ๋ ˆ์ฝ”๋“œ๋ฅผ ์ €์žฅํ•  ์—ฌ์œ  ๊ณต๊ฐ„์ด ์žˆ๋Š” ๋ธ”๋ก์„ ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•œ ๊ณต๊ฐ„ ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ
    • ๋ธ”๋ก ๋‹น 1๊ฐœ์˜ ํ•ญ๋ชฉ์„ ๊ฐ€์ง„ ๋ฐฐ์—ด: ๊ฐ ํ•ญ๋ชฉ์€ ๋ช‡ ๋น„ํŠธ์—์„œ ๋ฐ”์ดํŠธ ํฌ๊ธฐ์ด๋ฉฐ, ๋ธ”๋ก์˜ ์—ฌ์œ  ๊ณต๊ฐ„ ๋น„์œจ์„ ๊ธฐ๋ก
    • ์•„๋ž˜ ์˜ˆ์‹œ์—์„œ ๋ธ”๋ก ๋‹น 3๋น„ํŠธ, ๊ฐ’์„ 8๋กœ ๋‚˜๋ˆˆ ๊ฐ’์ด ํ•ด๋‹น ๋น„์œจ์„ ๋‚˜ํƒ€๋ƒ„
    • ํฐ ํŒŒ์ผ์—์„œ ์†๋„ ํ–ฅ์ƒ์„ ์œ„ํ•ด 2์ฐจ ์ˆ˜์ค€์˜ free-space map์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ
    • ์•„๋ž˜ ์˜ˆ์‹œ์—์„œ ๊ฐ ํ•ญ๋ชฉ์€ 1์ฐจ ์ˆ˜์ค€ free-space map์˜ 4๊ฐœ ํ•ญ๋ชฉ ์ค‘ ์ตœ๋Œ€๊ฐ’์„ ์ €์žฅ
  • Free space map์€ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋””์Šคํฌ์— ๊ธฐ๋ก๋จ: ๋””์Šคํฌ ์ƒ์˜ ๋งต์€ ์˜ค๋ž˜๋œ ์ •๋ณด์ผ ์ˆ˜ ์žˆ์Œ
  • ์ผ๋ถ€ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ์ž˜๋ชป๋œ (์˜ค๋ž˜๋œ) ๊ฐ’์„ ๊ฐ€์ ธ๋„ ๊ดœ์ฐฎ์Œ (ํƒ์ง€๋˜๊ณ  ์ˆ˜์ •๋  ๊ฒƒ)

Sequential File Organization

  • ์ „์ฒด ํŒŒ์ผ์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉ
  • ํŒŒ์ผ์˜ ๋ ˆ์ฝ”๋“œ๋Š” ๋ฐ˜๋“œ์‹œ ๊ธฐ๋ณธ ํ‚ค(primary key)๋‚˜ ์Šˆํผํ‚ค(superkey)๊ฐ€ ์•„๋‹Œ ๊ฒ€์ƒ‰ ํ‚ค์— ์˜ํ•ด ์ •๋ ฌ๋จ
  • ์ˆœ์ฐจ ํŒŒ์ผ ์ฒ˜๋ฆฌ์—์„œ ๋ธ”๋ก ์ ‘๊ทผ ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ฒ€์ƒ‰ ํ‚ค ์ˆœ์„œ๋กœ, ๋˜๋Š” ๊ฐ€๋Šฅํ•œ ํ•œ ๊ทธ ์ˆœ์„œ์— ๊ฐ€๊น๊ฒŒ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ €์žฅ
  • ํฌ์ธํ„ฐ(pointer)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ ˆ์ฝ”๋“œ ์ฒด์ธ์„ ๋งŒ๋“ฆ
  • ๋ฌธ์ œ์ : ๋ ˆ์ฝ”๋“œ๊ฐ€ ์‚ฝ์ž…๋˜๊ณ  ์‚ญ์ œ๋  ๋•Œ ๋ฌผ๋ฆฌ์  ์ˆœ์ฐจ ์ˆœ์„œ๋ฅผ ์–ด๋–ป๊ฒŒ ์œ ์ง€ํ•˜๋Š”๊ฐ€?
  • ์‚ญ์ œ: ํฌ์ธํ„ฐ ์ฒด์ธ ์‚ฌ์šฉ
  • ์‚ฝ์ž…: ๋ ˆ์ฝ”๋“œ๊ฐ€ ์‚ฝ์ž…๋  ์œ„์น˜๋ฅผ ์ฐพ์Œ
    • ์—ฌ์œ  ๊ณต๊ฐ„์ด ์žˆ์œผ๋ฉด ๊ทธ๊ณณ์— ์‚ฝ์ž…
    • ์—ฌ์œ  ๊ณต๊ฐ„์ด ์—†์œผ๋ฉด ์˜ค๋ฒ„ํ”Œ๋กœ ๋ธ”๋ก(overflow block)์— ๋ ˆ์ฝ”๋“œ ์‚ฝ์ž…
  • ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ํฌ์ธํ„ฐ ์ฒด์ธ์€ ์—…๋ฐ์ดํŠธ๋˜์–ด์•ผ ํ•จ
  • ์˜ค๋ฒ„ํ”Œ๋กœ ๋ธ”๋ก์— ๋งŽ์€ ์ˆ˜์˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์žˆ์œผ๋ฉด ๋ ˆ์ฝ”๋“œ์˜ ๋ฌผ๋ฆฌ์  ์ˆœ์ฐจ ์ˆœ์„œ๊ฐ€ ์ €ํ•˜๋จ
  • ๋ฌผ๋ฆฌ์  ์ˆœ์ฐจ์„ฑ์„ ๋ณต์›ํ•˜๊ธฐ ์œ„ํ•ด ํŒŒ์ผ์„ ์žฌ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋ฉฐ, ์ด๋Š” ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ์ž‘์—…
  • B+-tree ํŒŒ์ผ ์กฐ์ง์ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ

Multitable Clustering File Organization

  • Multitable clustering ํŒŒ์ผ ์กฐ์ง์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ์—ฌ๋Ÿฌ ๊ด€๊ณ„ ์ €์žฅ
  • departmentโ‹ˆinstructor\text{department} \Join \text{instructor}departmentโ‹ˆinstructor๋ฅผ ํฌํ•จํ•˜๋Š” ์ฟผ๋ฆฌ์™€ ๋‹จ์ผ department ๋ฐ ๊ทธ ์†Œ์† instructor๋“ค์„ ํฌํ•จํ•˜๋Š” ์ฟผ๋ฆฌ์— ์ข‹์Œ
  • department ๋˜๋Š” instructor๋งŒ ํฌํ•จํ•˜๋Š” ์ฟผ๋ฆฌ์—๋Š” ์ข‹์ง€ ์•Š์Œ
  • ๊ฐ€๋ณ€ ํฌ๊ธฐ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ดˆ๋ž˜
  • ํŠน์ • ๊ด€๊ณ„์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํฌ์ธํ„ฐ ์ฒด์ธ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ
  • Cluster key: ์–ด๋–ค ๋ ˆ์ฝ”๋“œ๊ฐ€ ํ•จ๊ป˜ ์ €์žฅ๋ ์ง€ ์ •์˜ํ•˜๋Š” ์†์„ฑ
  • ์˜ˆ์‹œ์—์„œ๋Š” dept_name

Partitioning

  • ํ…Œ์ด๋ธ” ํŒŒํ‹ฐ์…”๋‹(Table partitioning)
  • ๊ด€๊ณ„ ๋‚ด ๋ ˆ์ฝ”๋“œ๋Š” ๋ณ„๋„๋กœ ์ €์žฅ๋˜๋Š” ๋” ์ž‘์€ ๊ด€๊ณ„๋กœ ๋ถ„ํ• ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์†์„ฑ ๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ˆ˜ํ–‰๋จ
  • ์˜ˆ: transaction ๊ด€๊ณ„๋Š” transaction_2018, transaction_2019 ๋“ฑ์œผ๋กœ ๋ถ„ํ• ๋  ์ˆ˜ ์žˆ์Œ
  • transaction์— ๋Œ€ํ•ด ์ž‘์„ฑ๋œ ์ฟผ๋ฆฌ๋Š” ์—ฐ๋„๋ณ„ ๊ด€๊ณ„์— ๋Œ€ํ•œ ์ฟผ๋ฆฌ๋กœ ๋ณ€ํ™˜๋จ: ๋ชจ๋“  ํŒŒํ‹ฐ์…˜์˜ ๋ ˆ์ฝ”๋“œ์— ์ ‘๊ทผํ•ด์•ผ ํ•จ
  • ์ฟผ๋ฆฌ ์ตœ์ ํ™”๊ธฐ(Query optimizer)๋Š” year=2019์™€ ๊ฐ™์€ ์„ ํƒ ์กฐ๊ฑด์ด ์žˆ๋Š” ์ฟผ๋ฆฌ๋ฅผ ์žฌ์ž‘์„ฑ(๋˜๋Š” ๋ณ€ํ™˜)ํ•˜์—ฌ ํ•ด๋‹น ํŒŒํ‹ฐ์…˜์—๋งŒ ์ ‘๊ทผํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Œ
  • ํŒŒํ‹ฐ์…”๋‹์€ ์—ฌ์œ  ๊ณต๊ฐ„ ๊ด€๋ฆฌ์™€ ๊ฐ™์€ ์ผ๋ถ€ ์ž‘์—…์˜ ๋น„์šฉ์„ ๊ฐ์†Œ์‹œํ‚ด
  • ์ด๋Ÿฌํ•œ ์ž‘์—…์˜ ๋น„์šฉ์€ ๊ด€๊ณ„ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์ฆ๊ฐ€ํ•จ
  • ํŒŒํ‹ฐ์…”๋‹์€ ๋‹ค๋ฅธ ํŒŒํ‹ฐ์…˜์„ ๋‹ค๋ฅธ ์ €์žฅ ์žฅ์น˜์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ
  • ์˜ˆ: (์ž์ฃผ ์ ‘๊ทผํ•˜๋Š”) ํ˜„์žฌ ์—ฐ๋„์˜ transaction ํŒŒํ‹ฐ์…˜์€ SSD์—, (๋“œ๋ฌผ๊ฒŒ ์ ‘๊ทผํ•˜๋Š”) ์ด์ „ ์—ฐ๋„๋Š” ์ž๊ธฐ ๋””์Šคํฌ์— ์ €์žฅ

Data Dictionary Storage

  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์€ ๊ด€๊ณ„์˜ ์Šคํ‚ค๋งˆ(schema)์™€ ๊ฐ™์ด ๊ด€๊ณ„์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•จ
  • ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๋Ÿฌํ•œ "๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ"๋ฅผ metadata(๋ฉ”ํƒ€๋ฐ์ดํ„ฐ)๋ผ๊ณ  ํ•จ
  • Data dictionary(๋ฐ์ดํ„ฐ ์‚ฌ์ „) (๋˜๋Š” system catalog(์‹œ์Šคํ…œ ์นดํƒˆ๋กœ๊ทธ))๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ:
    • ๊ด€๊ณ„์— ๋Œ€ํ•œ ์ •๋ณด
      • ๊ด€๊ณ„์˜ ์ด๋ฆ„
      • ๊ฐ ๊ด€๊ณ„์˜ ์†์„ฑ ์ด๋ฆ„, ํƒ€์ž…(๋„๋ฉ”์ธ), ๊ธธ์ด
      • ๋ทฐ(view)์˜ ์ด๋ฆ„๊ณผ ์ •์˜
    • ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด(Integrity constraint)
    • ์‚ฌ์šฉ์ž ๋ฐ ๊ณ„์ • ์ •๋ณด, ํฌํ•จ ๋‚ด์šฉ:
      • ์ธ์ฆ์„ ์œ„ํ•œ ์‚ฌ์šฉ์ž ์ด๋ฆ„, ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ฐ ๊ธฐํƒ€ ์ •๋ณด
      • ๊ฐ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ๊ถŒํ•œ ์ •๋ณด
    • ํ†ต๊ณ„ ๋ฐ ๊ธฐ์ˆ  ๋ฐ์ดํ„ฐ, ํฌํ•จ ๋‚ด์šฉ:
      • ๊ฐ ๊ด€๊ณ„์˜ ํŠœํ”Œ(tuple) ์ˆ˜
      • ๊ฐ ์†์„ฑ์— ๋Œ€ํ•œ ๊ณ ์œ  ๊ฐ’์˜ ์ˆ˜
    • ๋ฌผ๋ฆฌ์  ํŒŒ์ผ ์กฐ์ง ์ •๋ณด
      • ๊ด€๊ณ„ ์ €์žฅ ๋ฐฉ์‹ (heap/sequential/hash/โ€ฆ)
      • ๊ด€๊ณ„์˜ ๋ฌผ๋ฆฌ์  ์œ„์น˜
    • ์ธ๋ฑ์Šค(index)์— ๋Œ€ํ•œ ์ •๋ณด (14์žฅ)
  • ๋””์Šคํฌ ์ƒ์˜ ๊ด€๊ณ„ํ˜• ํ‘œํ˜„
    • ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž์ฒด์˜ ๊ด€๊ณ„๋กœ ์ €์žฅ
    • ์‹œ์Šคํ…œ์˜ ์ „์ฒด ๊ตฌ์กฐ๋ฅผ ๋‹จ์ˆœํ™”
    • ์‹œ์Šคํ…œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋น ๋ฅธ ์ ‘๊ทผ์„ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ํ™œ์šฉ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์ž‘ ์‹œ, ์‹œ์Šคํ…œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ๋น ๋ฅธ ์ ‘๊ทผ์„ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ ๋‚ด ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ ๋กœ๋“œ๋จ
  • ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์€ ์œ„์˜ ๊ด€๊ณ„ํ˜• ํ‘œํ˜„ ๋Œ€์‹  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•ด ํŠนํ™”๋œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉ

Storage Access and Database Buffer

Storage Access

  • ์ˆœ์ฐจ ์ ‘๊ทผ(Sequential access) ํŒจํ„ด
    • ์—ฐ์†์ ์ธ ์š”์ฒญ์ด ์—ฐ์†์ ์ธ ๋””์Šคํฌ ๋ธ”๋ก์— ๋Œ€ํ•œ ๊ฒƒ
    • ๋””์Šคํฌ ํƒ์ƒ‰(seek)์€ ์ฒซ ๋ฒˆ์งธ ๋ธ”๋ก์— ๋Œ€ํ•ด์„œ๋งŒ ํ•„์š”
  • ์ž„์˜ ์ ‘๊ทผ(Random access) ํŒจํ„ด
    • ์—ฐ์†์ ์ธ ์š”์ฒญ์ด ๋””์Šคํฌ ์–ด๋””์—๋‚˜ ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ๋ธ”๋ก์— ๋Œ€ํ•œ ๊ฒƒ
    • ๊ฐ ์ ‘๊ทผ๋งˆ๋‹ค ํƒ์ƒ‰ ํ•„์š”
    • ํƒ์ƒ‰์— ๋งŽ์€ ์‹œ๊ฐ„์ด ๋‚ญ๋น„๋˜๋ฏ€๋กœ ์ „์†ก๋ฅ ์ด ๋‚ฎ์Œ
  • ์ดˆ๋‹น I/O ์—ฐ์‚ฐ (IOPS)
    • ๋””์Šคํฌ๊ฐ€ ์ดˆ๋‹น ์ง€์›ํ•  ์ˆ˜ ์žˆ๋Š” ์ž„์˜ ๋ธ”๋ก ์ฝ๊ธฐ ์ˆ˜
    • ํ˜„์žฌ ์„ธ๋Œ€ ์ž๊ธฐ ๋””์Šคํฌ์—์„œ 50 ~ 200 IOPS
  • Solid-State Drives (SSD)
    • (๋น„ํœ˜๋ฐœ์„ฑ) NAND ๋ฉ”๋ชจ๋ฆฌ ์นฉ ๊ธฐ๋ฐ˜์˜ ์ €์žฅ ์žฅ์น˜
    • ํ‘œ์ค€ ๋ธ”๋ก ์ง€ํ–ฅ ๋””์Šคํฌ ์ธํ„ฐํŽ˜์ด์Šค๋„ ์‚ฌ์šฉ
    • HDD๋ณด๋‹ค ํ›จ์”ฌ ์ž‘์€ ์ ‘๊ทผ ์‹œ๊ฐ„๊ณผ ๋” ํฐ ์ „์†ก๋ฅ  ๋ฐ IOPS
    • ์ž„์˜ ์ฝ๊ธฐ์™€ ์ˆœ์ฐจ ์ฝ๊ธฐ ๊ฐ„์— ํฐ ์ฐจ์ด ์—†์Œ
    • ๊ทธ๋Ÿฌ๋‚˜ ์ž„์˜ ์“ฐ๊ธฐ๋Š” ์—ฌ์ „ํžˆ ์ค‘์š”
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์€ ๋””์Šคํฌ์™€ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ„์˜ ๋ธ”๋ก ์ „์†ก ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ณ ์ž ํ•จ
  • ๋งค์šฐ ๋А๋ฆฐ ์Šคํ† ๋ฆฌ์ง€ ์ ‘๊ทผ ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•จ
  • ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์€ ๋ธ”๋ก์„ ์ฃผ ๋ฉ”๋ชจ๋ฆฌ์— ์œ ์ง€ํ•จ์œผ๋กœ์จ ๋””์Šคํฌ ์ ‘๊ทผ ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Œ
  • Buffer(๋ฒ„ํผ)
    • ๋ชจ๋“  ๋””์Šคํฌ ๋ธ”๋ก์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•  ์ˆ˜ ์—†์Œ
    • ๋””์Šคํฌ ๋ธ”๋ก์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ํ• ๋‹น ๊ด€๋ฆฌ ํ•„์š”
    • ์ฃผ ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ด€๋ฆฌ๋˜๋Š” ๋ถ€๋ถ„์œผ๋กœ ๋””์Šคํฌ ๋ธ”๋ก์˜ ๋ณต์‚ฌ๋ณธ์„ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    • ๋””์Šคํฌ ๋ธ”๋ก์€ ๋ฒ„ํผ ๋ธ”๋ก (๋˜๋Š” ํŽ˜์ด์ง€)์— ์ €์žฅ๋จ
    • ๋””์Šคํฌ ๋ธ”๋ก์˜ ๋ฐ์ดํ„ฐ๋Š” ๋ฒ„ํผ์˜ ๋ฐ์ดํ„ฐ๋ณด๋‹ค ์˜ค๋ž˜๋  ์ˆ˜ ์žˆ์Œ
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์ด ๋ฒ„ํผ์—์„œ ์‚ฝ์ž…/์‚ญ์ œ/์—…๋ฐ์ดํŠธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์ง€๋งŒ ์•„์ง ๊ฒฐ๊ณผ๋ฅผ ๋””์Šคํฌ ๋ธ”๋ก์— ์ถœ๋ ฅํ•˜์ง€ ์•Š์•˜์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ
  • Buffer manager(๋ฒ„ํผ ๊ด€๋ฆฌ์ž)
    • ์ฃผ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฒ„ํผ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•˜๋Š” ์ฑ…์ž„์„ ์ง€๋Š” ํ•˜์œ„ ์‹œ์Šคํ…œ

Buffer Manager

  • ํ”„๋กœ๊ทธ๋žจ์€ ๋””์Šคํฌ์—์„œ ๋ธ”๋ก์ด ํ•„์š”ํ•  ๋•Œ ๋ฒ„ํผ ๊ด€๋ฆฌ์ž๋ฅผ ํ˜ธ์ถœ
  • ๋ธ”๋ก์ด ์ด๋ฏธ ๋ฒ„ํผ์— ์žˆ์œผ๋ฉด, ๋ฒ„ํผ ๊ด€๋ฆฌ์ž๋Š” ์ฃผ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด ๋ธ”๋ก์˜ ์ฃผ์†Œ๋ฅผ ๋ฐ˜ํ™˜
  • ๋ธ”๋ก์ด ๋ฒ„ํผ์— ์—†์œผ๋ฉด, ๋ฒ„ํผ ๊ด€๋ฆฌ์ž๋Š”
    • ๋ธ”๋ก์„ ์œ„ํ•œ ๊ณต๊ฐ„์„ ๋ฒ„ํผ์— ํ• ๋‹น
    • ํ•„์š”ํ•œ ๊ฒฝ์šฐ, ๋‹ค๋ฅธ ๋ธ”๋ก์„ ๊ต์ฒดํ•˜์—ฌ ์ƒˆ ๋ธ”๋ก์„ ์œ„ํ•œ ๊ณต๊ฐ„ ํ™•๋ณด: ๋ฒ„ํผ ๊ต์ฒด(buffer replacement)
    • ๊ต์ฒด๋œ ๋ธ”๋ก์€ ๊ฐ€์žฅ ์ตœ๊ทผ์— ๋””์Šคํฌ์— ์“ฐ์—ฌ์ง€๊ฑฐ๋‚˜ ๋””์Šคํฌ์—์„œ ๊ฐ€์ ธ์˜จ ์ดํ›„ ์ˆ˜์ •๋œ ๊ฒฝ์šฐ์—๋งŒ ๋””์Šคํฌ์— ๋‹ค์‹œ ์“ฐ์—ฌ์ง
    • ๋””์Šคํฌ์—์„œ ๋ฒ„ํผ๋กœ ๋ธ”๋ก์„ ์ฝ๊ณ , ์ฃผ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด ๋ธ”๋ก์˜ ์ฃผ์†Œ๋ฅผ ์š”์ฒญ์ž์—๊ฒŒ ๋ฐ˜ํ™˜
  • Pinned block(๊ณ ์ •๋œ ๋ธ”๋ก): ๋””์Šคํฌ์— ๋‹ค์‹œ ์“ฐ์—ฌ์ง€๋Š” ๊ฒƒ์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก
    • ๋ฒ„ํผ ๋ธ”๋ก์„ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๋Š” ๋™์•ˆ ๊ต์ฒด๋˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ โ†’ ๋ฒ„ํผ ๋ธ”๋ก์— ์ ‘๊ทผํ•˜๊ธฐ ์ „์— ํ•ด๋‹น ๋ธ”๋ก์ด ์ œ๊ฑฐ๋˜์ง€ ์•Š๋„๋ก ํ•ด์•ผ ํ•จ
    • Pin์€ ๋ธ”๋ก์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๊ธฐ ์ „์— ์ˆ˜ํ–‰๋จ
    • Unpin์€ ์ฝ๊ธฐ/์“ฐ๊ธฐ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ ์ˆ˜ํ–‰๋จ
    • ๋‹ค์ค‘ ๋™์‹œ pin/unpin ์—ฐ์‚ฐ (๋™์‹œ ํŠธ๋žœ์žญ์…˜์„ ์œ„ํ•ด) ๊ฐ€๋Šฅ
    • pin count๋ฅผ ์œ ์ง€ํ•˜๋ฉฐ, pin count๊ฐ€ 0์ผ ๋•Œ๋งŒ ๋ฒ„ํผ ๋ธ”๋ก์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Œ
  • ๋ฒ„ํผ์— ๋Œ€ํ•œ ๊ณต์œ  ๋ฐ ๋ฐฐํƒ€์  ์ž ๊ธˆ(lock)
  • ๋™์‹œ์„ฑ ์ œ์–ด(Concurrency Control)
    • ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค(๋˜๋Š” ์Šค๋ ˆ๋“œ)์— ์˜ํ•œ ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ๋™์‹œ ์ ‘๊ทผ์€ ๋ฐ์ดํ„ฐ ๋ถˆ์ผ์น˜๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์Œ
    • ์˜ˆ) ๋ฒ„ํผ ํŽ˜์ด์ง€์—์„œ ํŠœํ”Œ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ํŽ˜์ด์ง€ ๋‚ด์šฉ์„ ์ด๋™์‹œ์ผœ์•ผ ํ•  ์ˆ˜ ์žˆ์Œ โ†’ ์ด ์‹œ๊ฐ„ ๋™์•ˆ ํŽ˜์ด์ง€๋ฅผ ์ฝ๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋Š” ๋ถ€์ •ํ™•ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ
  • ๋™์‹œ์„ฑ ์ œ์–ด
    • ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค์˜ ์ „์ฒด์ ์ธ ๋™์‹œ ์‹คํ–‰ ์ œ์–ด: 18์žฅ
  • ์ž ๊ธˆ(Locking): ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์˜ ์›์‹œ์ ์ธ ๋™์‹œ์„ฑ ์ œ์–ด ๋ฐฉ์‹
    • ๋ฒ„ํผ ๊ด€๋ฆฌ์ž๋Š” ์œ„์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๋ฅผ ๋ฐฉ์ง€ํ•ด์•ผ ํ•จ
    • ์ฝ๊ธฐ ์ž‘์—…์ž๋Š” ๊ณต์œ  ์ž ๊ธˆ(shared lock)์„ ์–ป๊ณ , ๋ธ”๋ก ์—…๋ฐ์ดํŠธ๋Š” ๋ฐฐํƒ€์  ์ž ๊ธˆ(exclusive lock)์„ ์š”๊ตฌ
  • ์ž ๊ธˆ ๊ทœ์น™:
    No lockShared lockExclusive lock
    No lockOOO
    Shared lockOOX
    Exclusive lockOXX
    • ๋ธ”๋ก์— ๋Œ€ํ•ด ๋‹ค์ˆ˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ๊ณต์œ  ์ž ๊ธˆ(shared lock)์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ
    • ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ๋ฐฐํƒ€์  ์ž ๊ธˆ(exclusive lock)์„ ํš๋“ํ•  ์ˆ˜ ์žˆ์Œ
    • ๋˜ํ•œ, ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ธ”๋ก์— ๋Œ€ํ•ด ๋ฐฐํƒ€์  ์ž ๊ธˆ์„ ๊ฐ€์ง€๊ณ  ์žˆ์„ ๋•Œ ๋‹ค๋ฅธ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋„ ํ•ด๋‹น ๋ธ”๋ก์— ๋Œ€ํ•ด ๊ณต์œ  ์ž ๊ธˆ์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์Œ
    • ๋”ฐ๋ผ์„œ, ๋ฐฐํƒ€์  ์ž ๊ธˆ์€ ๋‹ค๋ฅธ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋„ ๋ธ”๋ก์— ๋Œ€ํ•œ ์ž ๊ธˆ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์„ ๋•Œ๋งŒ ๋ถ€์—ฌ๋  ์ˆ˜ ์žˆ์Œ
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ด๋ฏธ ์ž ๊ธด (๊ณต์œ  ๋˜๋Š” ๋ฐฐํƒ€์ ) ๋ธ”๋ก์— ๋Œ€ํ•ด ๋ฐฐํƒ€์  ์ž ๊ธˆ์„ ์š”์ฒญํ•˜๋ฉด, ์ด์ „์˜ ๋ชจ๋“  ์ž ๊ธˆ์ด ํ•ด์ œ๋  ๋•Œ๊นŒ์ง€ ์š”์ฒญ์€ ๋ณด๋ฅ˜๋จ
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐฐํƒ€์ ์œผ๋กœ ์ž ๊ธด ๋ธ”๋ก์— ๋Œ€ํ•ด ๊ณต์œ  ์ž ๊ธˆ์„ ์š”์ฒญํ•˜๋ฉด, ๊ณต์œ  ์ž ๊ธˆ์€ ๋ฐฐํƒ€์  ์ž ๊ธˆ์ด ํ•ด์ œ๋œ ํ›„์—๋งŒ ๋ถ€์—ฌ๋จ
  • ์ž ๊ธˆ ํš๋“ ๋ฐ ํ•ด์ œ
    • ๋ธ”๋ก์— ๋Œ€ํ•œ ์—ฐ์‚ฐ ์ˆ˜ํ–‰: ๋ธ”๋ก Pin โ†’ ์ž ๊ธˆ ํš๋“ โ†’ ์—ฐ์‚ฐ ์ˆ˜ํ–‰ โ†’ ์ž ๊ธˆ ํ•ด์ œ โ†’ ๋ธ”๋ก Unpin
    • ์ฝ๊ธฐ ์—ฐ์‚ฐ: ๋ธ”๋ก์— ๋Œ€ํ•œ ๊ณต์œ  ์ž ๊ธˆ ํš๋“ ํ•„์š”
    • ์—…๋ฐ์ดํŠธ ์—ฐ์‚ฐ: ๋ธ”๋ก์— ๋Œ€ํ•œ ๋ฐฐํƒ€์  ์ž ๊ธˆ ํš๋“ ํ•„์š”

Output of Blocks

  • ๊ธฐ๋ณธ ๋ธ”๋ก ์ถœ๋ ฅ ์ •์ฑ…
    • ๋ฒ„ํผ ๋ธ”๋ก์ด ๋‹ค๋ฅธ ๋ธ”๋ก์œผ๋กœ ๊ต์ฒด๋  ๋•Œ ๋””์Šคํฌ๋กœ ์ถœ๋ ฅ(์“ฐ๊ธฐ): ๋‘ ๊ฐ€์ง€ ๊ฒฝ์šฐ
      • ์‚ฌ๋ก€ 1: ๋ฒ„ํผ๋กœ ๋กœ๋“œ๋œ ํ›„ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์Œ โ†’ ์ถœ๋ ฅํ•˜์ง€ ์•Š์Œ
      • ์‚ฌ๋ก€ 2: ์—…๋ฐ์ดํŠธ๋จ โ†’ ๋””์Šคํฌ๋กœ ์ถœ๋ ฅ ํ•„์š”
  • ๊ฐ€๋Šฅํ•œ ๋Œ€์•ˆ ์ •์ฑ…
    • ์—…๋ฐ์ดํŠธ๋œ ๋ธ”๋ก์„ ๊ต์ฒด ์ „์— ๋ฏธ๋ฆฌ ์“ฐ๊ธฐ
    • ํ–ฅํ›„ ๊ต์ฒด ์‹œ, ์ด๋ฏธ ์“ฐ์—ฌ์ง„ ๋ธ”๋ก์€ ์ถœ๋ ฅ ์—†์ด ์ œ๊ฑฐ ๊ฐ€๋Šฅ
    • ๊ทธ๋Ÿฌ๋‚˜, ๋ณต๊ตฌ(recovery) ๋ชฉ์ (19์žฅ)์„ ์œ„ํ•ด ์ถœ๋ ฅ ์ œํ•œ ํ•„์š”
    • ๋Œ€๋ถ€๋ถ„์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์€ ๋ธ”๋ก์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์ง„ํ–‰ ์ค‘์ธ ๋™์•ˆ ํ•ด๋‹น ๋ธ”๋ก์ด ๋””์Šคํฌ์— ์“ฐ์—ฌ์ง€์ง€ ์•Š๋„๋ก ์š”๊ตฌ: ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค(ํŠธ๋žœ์žญ์…˜)๊ฐ€ ๋ธ”๋ก์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Œ์— ์œ ์˜
    • ์ด๋Ÿฌํ•œ ์š”๊ตฌ์‚ฌํ•ญ์„ ๊ฐ•์ œํ•˜๊ธฐ ์œ„ํ•ด, ๋ธ”๋ก์„ ์ถœ๋ ฅํ•˜๊ณ ์ž ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ํ•ด๋‹น ๋ธ”๋ก์— ๋Œ€ํ•œ ๊ณต์œ  ์ž ๊ธˆ์„ ํš๋“ํ•ด์•ผ ํ•จ
  • ๋ธ”๋ก์˜ ๊ฐ•์ œ ์ถœ๋ ฅ(Forced output)
    • ๋””์Šคํฌ์˜ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋ธ”๋ก์„ ์ถœ๋ ฅํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ โ†’ ๋ธ”๋ก์˜ ๊ฐ•์ œ ์ถœ๋ ฅ
    • ์ปค๋ฐ‹๋œ ๋ฐ์ดํ„ฐ์˜ ๋ณต๊ตฌ ๊ฐ€๋Šฅ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋กœ๊น…(logging) ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ (19์žฅ์—์„œ ์ƒ์„ธํžˆ)

Buffer-Replacement Policies

  • ๋Œ€๋ถ€๋ถ„์˜ ์šด์˜ ์ฒด์ œ๋Š” ๊ฐ€์žฅ ์ตœ๊ทผ์— ์‚ฌ์šฉ๋˜์ง€ ์•Š์€(Least Recently Used, LRU) ๋ธ”๋ก์„ ๊ต์ฒด (LRU ์ „๋žต)
  • ์ตœ์ ์˜ ์ •์ฑ…: ๊ฐ€๊นŒ์šด ๋ฏธ๋ž˜์— ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ๋ฒ„ํผ ๋ธ”๋ก์„ ์ œ๊ฑฐ
  • ๋ธ”๋ก์— ๋Œ€ํ•œ ๋ฏธ๋ž˜์˜ ์ ‘๊ทผ์„ ์–ด๋–ป๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๋Š”๊ฐ€? โ†’ ์ตœ๊ทผ ์ ‘๊ทผ ๊ธฐ๋ก์ด ํ†ต์ฐฐ์„ ์ œ๊ณต โ†’ LRU
  • LRU๋Š” ์ผ๋ถ€ ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด ์ข‹์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ
  • LRU์— ๋Œ€ํ•œ ๋‚˜์œ ์ ‘๊ทผ ํŒจํ„ด์˜ ์˜ˆ: ์ค‘์ฒฉ ๋ฃจํ”„(nested loop)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๊ด€๊ณ„ rrr๊ณผ sss์˜ ์กฐ์ธ์„ ๊ณ„์‚ฐํ•  ๋•Œ for each tuple tr of r do for each tuple ts of s do if the tuples tr and ts match โ€ฆ
  • ์ฟผ๋ฆฌ๋Š” ์ž˜ ์ •์˜๋œ ์ ‘๊ทผ ํŒจํ„ด(์˜ˆ: ์ˆœ์ฐจ ์Šค์บ”)์„ ๊ฐ€์ง
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์€ ์‚ฌ์šฉ์ž์˜ ์ฟผ๋ฆฌ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏธ๋ž˜์˜ ์ฐธ์กฐ๋ฅผ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ์Œ
  • ์ฟผ๋ฆฌ ์ตœ์ ํ™”๊ธฐ(query optimizer)๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ต์ฒด ์ „๋žต์— ๋Œ€ํ•œ ํžŒํŠธ(hint)์™€ ํ˜ผํ•ฉ๋œ ์ „๋žต์ด ๋ฐ”๋žŒ์งํ•จ
  • Toss-immediate ์ „๋žต
    • ๋ธ”๋ก์˜ ๋งˆ์ง€๋ง‰ ํŠœํ”Œ์ด ์ฒ˜๋ฆฌ๋˜๋Š” ์ฆ‰์‹œ ํ•ด๋‹น ๋ธ”๋ก์ด ์ฐจ์ง€ํ•˜๋Š” ๊ณต๊ฐ„์„ ํ•ด์ œ โ†’ ํ•ด๋‹น ๋ธ”๋ก์€ ๋‹ค์‹œ ์ฐธ์กฐ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ
    • ์ด์ „ ์˜ˆ์‹œ์—์„œ ๊ด€๊ณ„ rrr์˜ ๋ธ”๋ก์— ์ข‹์Œ
  • ๊ฐ€์žฅ ์ตœ๊ทผ์— ์‚ฌ์šฉ๋œ(Most Recently Used, MRU) ์ „๋žต
    • LRU ์ „๋žต๊ณผ ๋ฐ˜๋Œ€
    • ์ด์ „ ์˜ˆ์‹œ์—์„œ ๊ด€๊ณ„ sss์˜ ๋ธ”๋ก์— ์ข‹์Œ
    • ๊ณ ์ •๋œ ๋ธ”๋ก์˜ ๋งˆ์ง€๋ง‰ ํŠœํ”Œ์ด ์ฒ˜๋ฆฌ๋œ ํ›„, ๋ธ”๋ก์€ unpin๋˜๊ณ  ๊ฐ€์žฅ ์ตœ๊ทผ์— ์‚ฌ์šฉ๋œ ๋ธ”๋ก์ด ๋จ
  • ๋ฒ„ํผ ๊ด€๋ฆฌ์ž๋Š” ์š”์ฒญ์ด ํŠน์ • ๊ด€๊ณ„๋ฅผ ์ฐธ์กฐํ•  ํ™•๋ฅ ์— ๋Œ€ํ•œ ํ†ต๊ณ„ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
  • ์˜ˆ: ๋ฐ์ดํ„ฐ ์‚ฌ์ „์€ ์ž์ฃผ ์ ‘๊ทผ๋จ
  • ํœด๋ฆฌ์Šคํ‹ฑ(Heuristic): ๋ฐ์ดํ„ฐ ์‚ฌ์ „ ๋ธ”๋ก์„ ์ฃผ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ์— ์œ ์ง€

Reordering of Writes and Recovery

  • ์šด์˜ ์ฒด์ œ ๋˜๋Š” ๋ฒ„ํผ ๊ด€๋ฆฌ์ž๊ฐ€ ์“ฐ๊ธฐ ์ˆœ์„œ๋ฅผ ์žฌ์ •๋ ฌํ•  ์ˆ˜ ์žˆ์Œ
  • ์‹œ์Šคํ…œ ์ถฉ๋Œ ์‹œ ๋””์Šคํฌ์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์†์ƒ์œผ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Œ
  • ์˜ˆ: ๋””์Šคํฌ์— ๋ˆ„๋ฝ๋œ ๋ธ”๋ก์ด ์žˆ๋Š” ๋ธ”๋ก์˜ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(Linked list)
  • ํŒŒ์ผ ์‹œ์Šคํ…œ์€ ์žฌ์‹œ์ž‘ ์‹œ ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์„ ๊ฐ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ผ๊ด€์„ฑ ๊ฒ€์‚ฌ(consistency check)๋ฅผ ์ˆ˜ํ–‰
  • ์‹ ์ค‘ํ•œ ์“ฐ๊ธฐ ์ˆœ์„œ ์ง€์ •์€ ์ด๋Ÿฌํ•œ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์Œ
  • ๋””์Šคํฌ ์Šค์ผ€์ค„๋ง(disk scheduling)๊ณผ ๊ฐ™์€ I/O ์ตœ์ ํ™” ๊ธฐ์ˆ ์„ ํฌ์ƒํ•˜์—ฌ ์—…๋ฐ์ดํŠธ ํšจ์œจ์„ฑ์— ์˜ํ–ฅ์„ ๋ฏธ์นจ
  • ๋น„ํœ˜๋ฐœ์„ฑ ์“ฐ๊ธฐ ๋ฒ„ํผ(Nonvolatile write buffer)๋Š” ๋ธ”๋ก์„ ๋น„ํœ˜๋ฐœ์„ฑ RAM ๋˜๋Š” ํ”Œ๋ž˜์‹œ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ์— ์ฆ‰์‹œ ๊ธฐ๋กํ•˜์—ฌ ๋””์Šคํฌ ์“ฐ๊ธฐ ์†๋„๋ฅผ ๋†’์ž„
  • ๋””์Šคํฌ ์•”(disk arm) ์›€์ง์ž„์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์“ฐ๊ธฐ ์ˆœ์„œ๋ฅผ ์žฌ์ •๋ ฌํ•  ์ˆ˜ ์žˆ์Œ
  • Log disk: ๋ธ”๋ก ์—…๋ฐ์ดํŠธ์˜ ์ˆœ์ฐจ์  ๋กœ๊ทธ๋ฅผ ์ˆ˜ํ–‰๋œ ์ˆœ์„œ๋Œ€๋กœ ๊ธฐ๋กํ•˜๋Š” ๋ฐ ์ „์šฉ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋””์Šคํฌ
  • Log disk์— ๋Œ€ํ•œ ์“ฐ๊ธฐ๋Š” ํƒ์ƒ‰์ด ํ•„์š” ์—†์œผ๋ฏ€๋กœ(์ฆ‰, ์ˆœ์ฐจ์  ์“ฐ๊ธฐ) ๋งค์šฐ ๋น ๋ฆ„
  • Data disk์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•˜๊ธฐ ์œ„ํ•ด log disk์˜ ๋กœ๊ทธ๋ฅผ ์‚ฌ์šฉ
  • ์ €๋„๋ง ํŒŒ์ผ ์‹œ์Šคํ…œ(Journaling file system)์€ ๋ณ„๋„์˜ log disk ์—†์ด๋„ ์ด๋Ÿฌํ•œ ๋กœ๊น…์„ ์ง€์›ํ•˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ
  • ์ €๋„๋ง ์—†๋Š” ์žฌ์ •๋ ฌ: ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ฐ์ดํ„ฐ ์†์ƒ ์œ„ํ—˜

Column-Oriented Storage

  • ์ปฌ๋Ÿผ ๊ธฐ๋ฐ˜ ์Šคํ† ๋ฆฌ์ง€(columnar storage)๋ผ๊ณ ๋„ ์•Œ๋ ค์ง
  • ๊ด€๊ณ„์˜ ๊ฐ ์†์„ฑ์„ ๋ณ„๋„๋กœ ์ €์žฅ
  • ์—ฐ์†์ ์ธ ํŠœํ”Œ์˜ ์†์„ฑ ๊ฐ’์„ ํŒŒ์ผ์˜ ์—ฐ์†์ ์ธ ์œ„์น˜์— ์ €์žฅ
  • ์ฟผ๋ฆฌ๊ฐ€ ํ…Œ์ด๋ธ”์˜ i๋ฒˆ์งธ ํ–‰์˜ ์ „์ฒด ๋‚ด์šฉ์— ์ ‘๊ทผํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ๊ฐ ์ปฌ๋Ÿผ์˜ i๋ฒˆ์งธ ์œ„์น˜์— ์žˆ๋Š” ๊ฐ’์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ํ–‰์„ ์žฌ๊ตฌ์„ฑ
  • ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ํ˜•ํƒœ: ๊ฐ ์†์„ฑ์€ ๋ณ„๋„์˜ ํŒŒ์ผ์— ์ €์žฅ๋˜๊ณ , ๊ฐ ํŒŒ์ผ์€ ์••์ถ•๋จ

Columnar Representation

  • ์ปฌ๋Ÿผ ๊ธฐ๋ฐ˜ ์Šคํ† ๋ฆฌ์ง€์˜ ๋‹จ์ 
    • ์ปฌ๋Ÿผ ํ‘œํ˜„์—์„œ ํŠœํ”Œ ์žฌ๊ตฌ์„ฑ ๋น„์šฉ
    • ํŠนํžˆ ์••์ถ•๋œ ๊ฒฝ์šฐ ํŠœํ”Œ ์‚ญ์ œ ๋ฐ ์—…๋ฐ์ดํŠธ ๋น„์šฉ
    • ์••์ถ• ํ•ด์ œ ๋น„์šฉ
  • ์ปฌ๋Ÿผ ํ‘œํ˜„์€ ๊ด€๊ณ„์˜ ๋งŽ์€ ํ–‰์„ ์ฒ˜๋ฆฌํ•˜์ง€๋งŒ ์ข…์ข… ์ผ๋ถ€ ์†์„ฑ์—๋งŒ ์ ‘๊ทผํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋ถ„์„(OLAP) ์ฟผ๋ฆฌ์— ์ ํ•ฉ
  • (๋งŽ์€ ์ˆ˜์˜) ์†์„ฑ ์ค‘ ์ผ๋ถ€๋งŒ ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ
    • I/O ๊ฐ์†Œ
    • CPU ์บ์‹œ ์„ฑ๋Šฅ ํ–ฅ์ƒ
    • ๋™์ผํ•œ ํƒ€์ž…์˜ ๊ฐ’์„ ํ•จ๊ป˜ ์ €์žฅํ•˜๋ฉด ์••์ถ• ํšจ๊ณผ ์ฆ๊ฐ€
    • ์ตœ์‹  CPU ์•„ํ‚คํ…์ฒ˜์—์„œ ๋ฒกํ„ฐ ์ฒ˜๋ฆฌ(vector processing) ํ—ˆ์šฉ
    • CPU ์—ฐ์‚ฐ์ด ๋ฐฐ์—ด์˜ ์—ฌ๋Ÿฌ ์š”์†Œ์— ๋ณ‘๋ ฌ๋กœ ์ ์šฉ๋จ
  • ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ(OLTP)์—๋Š” ํ–‰ ๊ธฐ๋ฐ˜(row-oriented) ํ‘œํ˜„์ด ๋” ๋ฐ”๋žŒ์งํ•จ
  • ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋‘ ํ‘œํ˜„์„ ๋ชจ๋‘ ์ง€์›
  • ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ํ–‰/์ปฌ๋Ÿผ ์Šคํ† ์–ด(hybrid row/column store)๋ผ๊ณ  ๋ถˆ๋ฆผ

Columnar File Representation

  • ORC ๋ฐ Parquet: ํŒŒ์ผ ๋‚ด์— ์ปฌ๋Ÿผ ๊ธฐ๋ฐ˜ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๊ฐ–๋Š” ํŒŒ์ผ ํ˜•์‹
  • ๋น…๋ฐ์ดํ„ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋งค์šฐ ์ธ๊ธฐ ์žˆ์Œ
  • ORC ํŒŒ์ผ ํ˜•์‹:
    • ์ˆ˜๋ฐฑ MB๋ฅผ ์ฐจ์ง€ํ•˜๋Š” ํŠœํ”Œ ์‹œํ€€์Šค๋Š” ์ŠคํŠธ๋ผ์ดํ”„(stripe)๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์ปฌ๋Ÿผ ํ‘œํ˜„์œผ๋กœ ๋ถ„ํ• ๋จ
    • ORC ํŒŒ์ผ์€ ์—ฌ๋Ÿฌ ์ŠคํŠธ๋ผ์ดํ”„๋ฅผ ํฌํ•จํ•˜๋ฉฐ, ๊ฐ ์ŠคํŠธ๋ผ์ดํ”„๋Š” ์•ฝ 250MB๋ฅผ ์ฐจ์ง€
    • Row data ์˜์—ญ์€ ์ฒซ ๋ฒˆ์งธ ์ปฌ๋Ÿผ์˜ ๊ฐ’ ์‹œํ€€์Šค, ์ด์–ด์„œ ๋‘ ๋ฒˆ์งธ ์ปฌ๋Ÿผ ๋“ฑ์˜ ์••์ถ•๋œ ํ‘œํ˜„์„ ์ €์žฅ
  • ์ŠคํŠธ๋ผ์ดํ”„์˜ Index data ์˜์—ญ์€ ๊ฐ ์†์„ฑ์— ๋Œ€ํ•ด ํ•ด๋‹น ์†์„ฑ ๊ฐ’์˜ ๊ฐ ๊ทธ๋ฃน(์˜ˆ: 10,000๊ฐœ)์— ๋Œ€ํ•œ ์ŠคํŠธ๋ผ์ดํ”„ ๋‚ด ์‹œ์ž‘์ ์„ ์ €์žฅ
์ตœ๊ทผ ์ˆ˜์ •: 25. 11. 6. ์˜คํ›„ 12:07
Contributors: kmbzn
Prev
7. Relational Database Design (2)
Next
14. Indexing

BUILT WITH

CloudflareNode.jsGitHubGitVue.jsJavaScriptVSCodenpm

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