πŸ“š CS [ComputerScience]/πŸ“š CS λ©΄μ ‘

πŸ“š [CSλ©΄μ ‘] μ›Ή λ©΄μ ‘ 질문 [6] [Data Base]

Dbswnstjd 2024. 2. 4. 18:06

1.  데이터 베이슀의 νŠΉμ§• ?

1. μ‹€μ‹œκ°„ μ ‘κ·Όμ„± (Real-Time Accessibility) - λΉ„μ •ν˜•μ μΈ μ§ˆμ˜μ— λŒ€ν•˜μ—¬ μ‹€μ‹œκ°„ μ²˜λ¦¬μ— μ˜ν•œ 응닡이 κ°€λŠ₯ν•΄μ•Ό 함

2. 지속적인 λ³€ν™” (Continuous Evolution) - λ°μ΄ν„°λ² μ΄μŠ€μ˜ μƒνƒœλŠ” 동적. 즉, μƒˆλ‘œμš΄ λ°μ΄ν„°μ˜ μ‚½μž…(Insert), μ‚­μ œ(Delete), κ°±μ‹ (Update)으둜 항상 μ΅œμ‹ μ˜ 데이터λ₯Ό μœ μ§€ν•΄μ•Ό 함

3. λ™μ‹œ 곡용 (Concurrent Sharing) - λ°μ΄ν„°λ² μ΄μŠ€λŠ” μ„œλ‘œ λ‹€λ₯Έ λͺ©μ μ„ 가진 μ—¬λŸ¬ μ‘μš©μžλ“€μ„ μœ„ν•œ κ²ƒμ΄λ―€λ‘œ λ‹€μˆ˜μ˜ μ‚¬μš©μžκ°€ λ™μ‹œμ— 같은 λ‚΄μš©μ˜ 데이터λ₯Ό μ΄μš©ν•  수 μžˆμ–΄μ•Ό 함

4. λ‚΄μš©μ— μ˜ν•œ μ°Έμ‘° (Content Reference) - λ°μ΄ν„°λ² μ΄μŠ€μ— μžˆλŠ” 데이터λ₯Ό μ°Έμ‘°ν•  λ•Œ 데이터 λ ˆμ½”λ“œμ˜ μ£Όμ†Œλ‚˜ μœ„μΉ˜μ— μ˜ν•΄μ„œκ°€ μ•„λ‹ˆλΌ μ‚¬μš©μžκ°€ μš”κ΅¬ν•˜λŠ” 데이터 λ‚΄μš©μœΌλ‘œ 찾음

 

2.  DDL, DML, DCL μ΄λž€ ?

- DDL (Data Definition Language) : λ°μ΄ν„°λ² μ΄μŠ€μ˜ ꡬ쑰λ₯Ό μ •μ˜, μˆ˜μ •, μ‚­μ œν•˜λŠ” μ–Έμ–΄ ( alter, create, drop) 

- DML (Data Manipulation Langauge) : λ°μ΄ν„°λ² μ΄μŠ€ λ‚΄μ˜ 자료 검색, μ‚½μž…, κ°±μ‹ , μ‚­μ œλ₯Ό μœ„ν•œ μ–Έμ–΄ ( select, insert, update, delete)

- DCL (Data Control Language) : 데이터에 λŒ€ν•œ 무결성 μœ μ§€, 병생 μˆ˜ν–‰ μ œμ–΄, λ³΄ν˜Έμ™€ 관리λ₯Ό μœ„ν•œ μ–Έμ–΄ ( commit, rollback, grant, revoke)

 

3.  SELECT 쿼리의 μˆ˜ν–‰ μˆœμ„œ ?

FROM, ON, JOIN -> WHERE, GROUP BY, HAVING -> SELECT -> DISTINCT -> ORDER BY -> LIMIT

1. FROM - 각 ν…Œμ΄λΈ”μ„ 확인

2. ON - JOIN 쑰건을 확인

3. JOIN - JOIN이 μ‹€ν–‰λ˜μ–΄ 데이터가 SET으둜 λͺ¨μ•„μ§€κ²Œ λœλ‹€. μ„œλΈŒμΏΌλ¦¬λ„ ν•¨κ»˜ ν¬ν•¨λ˜μ–΄ μž„μ‹œ ν…Œμ΄λΈ”μ„ λ§Œλ“€ 수 있게 도와쀀닀.

4. WHERE - 데이터셋을 ν˜•μ„±ν•˜κ²Œ 되면 WHERE의 쑰건이 κ°œλ³„ 행에 μ μš©λœλ‹€. WHERE절의 μ œμ•½ 쑰건은 FROM절둜 κ°€μ Έμ˜¨ ν…Œμ΄λΈ”μ— 적용될 수 μžˆλ‹€.

5. GROUP BY - WHERE의 쑰건 적용 ν›„ λ‚˜λ¨Έμ§€ 행은 GROUP BYμ ˆμ— μ§€μ •λœ μ—΄μ˜ 곡톡 값을 κΈ°μ€€μœΌλ‘œ κ·Έλ£Ήν™”λœλ‹€. 쿼리에 집계 κΈ°λŠ₯이 μžˆλŠ” κ²½μš°μ—λ§Œμ΄ κΈ°λŠ₯을 μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

6. HAVING - GROUP BY절이 쿼리에 μžˆμ„ 경우 HAVING 절의 μ œμ•½μ‘°κ±΄μ΄ κ·Έλ£Ήν™”λœ 행에 μ μš©λœλ‹€.

7. SELECT - SELECT에 ν‘œν˜„λœ 식이 λ§ˆμ§€λ§‰μœΌλ‘œ μ μš©λœλ‹€.

8. DISTINCT - ν‘œν˜„λœ ν–‰μ—μ„œ μ€‘λ³΅λœ ν–‰μ˜ μ‚­μ œ 

9. ORDER BY - μ§€μ •λœ 데이터λ₯Ό κΈ°μ€€μœΌλ‘œ μ˜€λ¦„μ°¨μˆœ, λ‚΄λ¦Όμ°¨μˆœ 지정

10. LIMIT - LIMITμ—μ„œ λ²—μ–΄λ‚˜λŠ” 행듀은 μ œμ™Έλ˜μ–΄ 좜λ ₯

 

4.  Index λž€ ,  μž₯단점은 ?

- Indexλž€ ν…Œμ΄λΈ”μ„ μ²˜μŒλΆ€ν„° λκΉŒμ§€ κ²€μƒ‰ν•˜λŠ” 방법인 FTS(Full Table Scan)κ³ΌλŠ” 달리 인덱슀λ₯Ό κ²€μƒ‰ν•˜μ—¬ ν•΄λ‹Ή 자료의 ν…Œμ΄λΈ”μ„ μ—‘μ„ΈμŠ€ ν•˜λŠ” 방법 [ DBλ₯Ό 책에 λΉ„μœ ν•˜μžλ©΄ λ°μ΄ν„°λŠ” μ±…μ˜ λ‚΄μš©μ΄κ³ , 데이터가 μ €μž₯된 λ ˆμ½”λ“œμ˜ μ£Όμ†ŒλŠ” index λͺ©λ‘μ— μžˆλŠ” νŽ˜μ΄μ§€ 번호일 것 ]

μΈλ±μŠ€λŠ” 항상 μ •λ ¬λœ μƒνƒœλ₯Ό μœ μ§€ν•˜κΈ° λ•Œλ¬Έμ— μ›ν•˜λŠ” 값을 κ²€μƒ‰ν•˜λŠ”λ° λΉ λ₯΄μ§€λ§Œ, μƒˆλ‘œμš΄ 값을 μΆ”κ°€ν•˜κ±°λ‚˜ μ‚­μ œ, μˆ˜μ •ν•˜λŠ” κ²½μš°μ—λŠ” 쿼리문 μ‹€ν–‰ 속도가 λŠλ €μ§‘λ‹ˆλ‹€. 

- 즉, μΈλ±μŠ€λŠ” λ°μ΄ν„°μ˜ μ €μž₯ μ„±λŠ₯을 ν¬μƒν•˜κ³  κ·ΈλŒ€μ‹  λ°μ΄ν„°μ˜ 검색 속도λ₯Ό λ†’μ΄λŠ” κΈ°λŠ₯

 

DBMSλŠ” Indexλ₯Ό μ–΄λ–»κ²Œ κ΄€λ¦¬ν•˜λŠ”μ§€ (Index 자료ꡬ쑰) ?

- B+Tree 인덱슀 자료ꡬ쑰 

μžμ‹ λ…Έλ“œκ°€ 2개 이상인 B-Treeλ₯Ό κ°œμ„ μ‹œν‚¨ 자료ꡬ쑰, BTree λ¦¬ν”„λ…Έλ“œλ“€μ„ LinkedList둜 μ—°κ²°ν•˜μ—¬ 순차 검색을 μš©μ΄ν•˜κ²Œ ν•©λ‹ˆλ‹€. ν•΄μ‹œ ν…Œμ΄λΈ”λ³΄λ‹€ λ‚˜μœ O(log2N)의 μ‹œκ°„λ³΅μž‘λ„λ₯Ό κ°–μ§€λ§Œ 일반적으둜 μ‚¬μš©λ˜λŠ” 자료ꡬ쑰

 

- ν•΄μ‹œ ν…Œμ΄λΈ”

칼럼의 κ°’μœΌλ‘œ μƒμ„±λœ ν•΄μ‹œλ₯Ό 기반으둜 인덱슀λ₯Ό κ΅¬ν˜„, μ‹œκ°„λ³΅μž‘λ„κ°€ O(1)이라 검색이 맀우 빠름, λΆ€λ“±ν˜Έμ™€ 같은 연속적인 데이터λ₯Ό μœ„ν•œ 순차 검색이 λΆˆκ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ— μ‚¬μš©μ— μ ν•©ν•˜μ§€ μ•ŠμŒ