πŸ“μžκ²©μ¦ 곡뢀/πŸ“™ SQLD

[SQLD] 데이터 λͺ¨λΈκ³Ό μ„±λŠ₯

yujch 2022. 11. 4. 23:02
λ°˜μ‘ν˜•

μ„±λŠ₯ 데이터 λͺ¨λΈμ˜ κ°œμš”

- μ„±λŠ₯ 데이터 λͺ¨λΈλ§ : DB μ„±λŠ₯ν–₯상을 μœ„ν•œ 사항듀이 λͺ¨λΈλ§μ— λ°©μ˜λ˜λ„λ‘ ν•˜λŠ” 것

 

- μˆ˜ν–‰ μ‹œμ  : 뢄석/섀계 단계 (늦게 ν• μˆ˜λ‘ λΉ„μš© 증가)

 

- κ³ λ € 사항

  1. μ •κ·œν™”λ₯Ό μ •ν™•ν•˜κ²Œ μˆ˜ν–‰
  2. DB μš©λŸ‰ μ‚°μ •
  3. DB에 λ°œμƒλ˜λŠ” νŠΈλžœμž­μ…˜ μœ ν˜• νŒŒμ•…
  4. μš©λŸ‰κ³Ό νŠΈλžœμž­μ…˜μ˜ μœ ν˜•μ— 따라 λ°˜μ •κ·œν™” μˆ˜ν–‰
  5. 이λ ₯λͺ¨λΈμ˜ μ‘°μ •, PK/FKμ‘°μ •, μŠˆνΌνƒ€μž…/μ„œλΈŒνƒ€μž… μ‘°μ •
  6. μ„±λŠ₯κ΄€μ μ—μ„œ 데이터 λͺ¨λΈ 검증

- DBμ—μ„œμ˜ μ„±λŠ₯

  1. 쑰회
  2. μž…λ ₯ / μˆ˜μ • / μ‚­μ œ

 


 

μ •κ·œν™”μ™€ μ„±λŠ₯

- μ •κ·œν™” : λ°μ΄ν„°μ˜ 쀑볡속성을 μ œκ±°ν•˜κ³  κ²°μ •μžμ— μ˜ν•΄ λ™μΌν•œ 의미(ν•¨μˆ˜μ  쒅속성)의 μΌλ°˜μ†μ„±μ„ ν•˜λ‚˜μ˜ ν…Œμ΄λΈ”λ‘œ μ§‘μ•½μ‹œν‚€λŠ” 것 (ν•œ ν…Œμ΄λΈ”μ˜ 데이터 μš©λŸ‰μ΄ μ΅œμ†Œν™”)

  • 1μ°¨ μ •κ·œν™” : 쀑볡 속성에 λŒ€ν•œ 뢄리 (λ‘œμš°λ‹¨μœ„, μΉΌλŸΌλ‹¨μœ„)
  • 2μ°¨ μ •κ·œν™” : λΆ€λΆ„ ν•¨μˆ˜ 쒅속성을 μ œκ±°ν•˜μ—¬ λ‘κ°œμ˜ ν…Œμ΄λΈ”λ‘œ 뢄리
  • 3μ°¨ μ •κ·œν™” : 이행 ν•¨μˆ˜ 쒅속성 제거, μ„œλ‘œ 쒅속관계가 μžˆλŠ” μΌλ°˜μ†μ„±μ„ 뢄리

 

- νŠΉμ§•

  • μ •κ·œν™”λœ ν…Œμ΄λΈ”μ€ 속도가 빨라질 μˆ˜λ„ 있고 느렀질 μˆ˜λ„ μžˆλ‹€.
  • 일반적으둜 μ •κ·œν™”ν•˜λ©΄ μž…λ ₯/μˆ˜μ •/μ‚­μ œ μ„±λŠ₯이 ν–₯μƒλ˜κ³ , λ°˜μ •κ·œν™”ν•˜λ©΄ μ‘°νšŒμ„±λŠ₯이 ν–₯상됨
  • μ •κ·œν™”ν•΄μ„œ 쑰회 μ„±λŠ₯이 ν–₯μƒλ˜λŠ” 사둀도 많음

 

- ν•¨μˆ˜μ  쒅속성 : 데이터듀이 μ–΄λ–€ 기쀀값에 μ˜ν•΄ μ’…μ†λ˜λŠ” ν˜„μƒ  ex) μ£Όλ―Όλ“±λ‘λ²ˆν˜Έ(κ²°μ •μž) --- μΆœμƒμΌ, μΆœμƒμ§€(μ’…μ†μž)

 


 

λ°˜μ •κ·œν™”μ™€ μ„±λŠ₯

- λ°˜μ •κ·œν™” : 데이터 쀑볡을 ν—ˆμš©ν•˜μ—¬ 쑰인을 μ€„μ΄λŠ” DB μ„±λŠ₯ ν–₯상 방법 (데이터 무결성 희생)

 

- 절차

  1. λ°˜μ •κ·œν™” λŒ€μƒ 쑰사 : 데이터 처리 λ²”μœ„, 톡계성, ν…Œμ΄λΈ” 쑰인 개수
  2. λ‹€λ₯Έ λ°©λ²•μœ λ„ κ²€ν†  : λ·° / ν΄λŸ¬μŠ€ν„°λ§ / 인덱슀 μ‘°μ • / μ‘μš©μ• ν”Œλ¦¬μΌ€μ΄μ…˜
  3. λ°˜μ •κ·œν™” 적용 : ν…Œμ΄λΈ” λ°˜μ •κ·œν™” / 속성(칼럼)의 λ°˜μ •κ·œν™” / κ΄€κ³„μ˜ λ°˜μ •κ·œν™”

 

- 기법

<ν…Œμ΄λΈ” λ°˜μ •κ·œν™”>

  • ν…Œμ΄λΈ” 병합 : 1:1 관계 ν…Œμ΄λΈ” 병합 / 1:N 관계 ν…Œμ΄λΈ” 병합 / μŠˆνΌγ†μ„œλΈŒ νƒ€μž… ν…Œμ΄λΈ” 병합
  • ν…Œμ΄λΈ” λΆ„ν•  : μˆ˜μ§λΆ„ν•  / μˆ˜ν‰λΆ„ν• 
  • ν…Œμ΄λΈ” μΆ”κ°€ : μ€‘λ³΅ν…Œμ΄λΈ” / 톡계 ν…Œμ΄λΈ” / 이λ ₯ ν…Œμ΄λΈ” / λΆ€λΆ„ ν…Œμ΄λΈ”

<칼럼 λ°˜μ •κ·œν™”>

  • 쀑볡 칼럼 μΆ”κ°€ (쑰인 κ°μ†Œ μœ„ν•¨)
  • νŒŒμƒ 칼럼 μΆ”κ°€ (ν•„μš”ν•œ κ°’ 미리 κ³„μ‚°ν•œ 칼럼 μΆ”κ°€)
  • 이λ ₯ ν…Œμ΄λΈ” 칼럼 μΆ”κ°€ (μ΅œκ·Όκ°’ μ—¬λΆ€, μ‹œμž‘κ³Ό μ’…λ£ŒμΌ λ“±)
  • PK 에 μ˜ν•œ 칼럼 μΆ”κ°€ (PK μ’…μ†μžλ₯Ό μΌλ°˜μ†μ„±μœΌλ‘œ 생성)
  • μ‘μš© μ‹œμŠ€ν…œμ˜ μ˜€μž‘λ™μ„ μœ„ν•œ 칼럼 μΆ”κ°€ (이전 데이터λ₯Ό μž„μ‹œμ  쀑볡 보관 - 볡ꡬ μš©λ„)

<관계 λ°˜μ •κ·œν™”>

  • 쀑볡 관계 μΆ”κ°€ (데이터 무결성 희생 X)

 


 

λŒ€λŸ‰ 데이터에 λ”°λ₯Έ μ„±λŠ₯

- λŒ€λŸ‰μ˜ 데이터가 μžˆλŠ” ν…Œμ΄λΈ”μ— λ§Žμ€ νŠΈλžœμž­μ…˜μ΄ λ°œμƒν•˜μ—¬ μ„±λŠ₯이 μ €ν•˜λ˜λŠ” ν…Œμ΄λΈ” ꡬ쑰에 λŒ€ν•΄ ν…Œμ΄λΈ” λ°˜μ •κ·œν™”μ˜ ν…Œμ΄λΈ” μˆ˜μ§γ†μˆ˜ν‰ λΆ„ν•  섀계λ₯Ό 톡해 μ„±λŠ₯ μ €ν•˜ 예방

ex) ν•œ ν…Œμ΄λΈ”μ— λ§Žμ€ 수의 칼럼이 μ‘΄μž¬ν•˜λŠ” 경우 / ν•œ ν…Œμ΄λΈ”μ— λŒ€λŸ‰μ˜ 데이터가 μ‘΄μž¬ν•˜λŠ” 경우 (I/Oμ–‘ 증가)

 

- λ°œμƒ

  • 둜우 체이닝 : ν–‰ 길이가 λ„ˆλ¬΄ κΈΈμ–΄μ„œ ν•˜λ‚˜κ°€ μ•„λ‹Œ μ—¬λŸ¬ 블둝에 걸쳐 λ‘œμš°κ°€ μ €μž₯ λ˜λŠ” ν˜„μƒ
  • 둜우 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ : μˆ˜μ •λœ 데이터가 ν•΄λ‹Ή 블둝이 μ•„λ‹Œ λ‹€λ₯Έ λΈ”λ‘μ˜ 빈 곡간에 μ €μž₯ λ˜λŠ” ν˜„μƒ

 

- ν•΄κ²°λ°©μ•ˆ

  • ν…Œμ΄λΈ” 수직 λΆ„ν•  : 칼럼 μˆ˜κ°€ λ§Žμ„ 경우 칼럼 λ‹¨μœ„λ‘œ ν…Œμ΄λΈ”μ„ λΆ„ν• ν•˜μ—¬ I/O κ°μ†Œ (1:1 ν˜•νƒœ)
  • ν…Œμ΄λΈ” μˆ˜ν‰ λΆ„ν•  : 데이터양이 λ§Žμ„ 경우 ν–‰ λ‹¨μœ„λ‘œ ν…Œμ΄λΈ”μ„ λΆ„ν•  ν•˜μ—¬ I/O κ°μ†Œ (νŒŒν‹°μ…”λ‹)

 

- νŒŒν‹°μ…”λ‹ : λ…Όλ¦¬μ μœΌλ‘œ ν•˜λ‚˜μ˜ ν…Œμ΄λΈ”μ΄μ§€λ§Œ 물리적으둜 μ—¬λŸ¬ 데이터 νŒŒμΌμ— λΆ„μ‚° μ €μž₯

  • Range Partition : 데이터 값을 κΈ°μ€€μœΌλ‘œ λΆ„ν•    ex) λ‚ μ§œ
  • List Partition : νŠΉμ • 값을 κΈ°μ€€μœΌλ‘œ λΆ„ν• (핡심적인 μ½”λ“œκ°’μœΌλ‘œ PKκ°€ κ΅¬μ„±λœ 경우)   ex) μ§€μ μ½”λ“œ
  • Hash Partition : ν•΄μ‹œ ν•¨μˆ˜λ₯Ό μ μš©ν•˜μ—¬ λΆ„ν•  (DBMSκ°€ μ•Œμ•„μ„œ λΆ„ν•  관리)

 

- 절차

  1. 데이터 λͺ¨λΈλ§ μ™„μ„±
  2. DB μš©λŸ‰ μ‚°μ •
  3. λŒ€λž΅ 데이터가 μ²˜λ¦¬λ˜λŠ” ν…Œμ΄λΈ”μ— λŒ€ν•΄μ„œ νŠΈλžœμž­μ…˜ 처리 νŒ¨ν„΄ 뢄석
  4. μ§‘μ€‘ν™”λœ λ‹¨μœ„(칼럼 or 둜우)둜 ν…Œμ΄λΈ”μ„ λΆ„λ¦¬ν•˜λŠ” 것을 κ²€ν† 

 


 

λ°μ΄ν„°λ² μ΄μŠ€ ꡬ쑰와 μ„±λŠ₯

100p

λ°˜μ‘ν˜•