κ°œμΈκ³΅λΆ€/SQL

41. SQLD 1κ³Όλͺ© (2)λͺ¨λΈλ§κ³Ό μ„±λŠ₯

LEE_BOMB 2021. 10. 27. 20:45

μ„±λŠ₯ 데이터 λͺ¨λΈλ§?
λ°μ΄ν„°λ² μ΄μŠ€μ˜ μ„±λŠ₯ ν–₯상을 λͺ©μ μœΌλ‘œ μ„€κ³„λ‹¨κ³„μ˜ 데이터 λͺ¨λΈλ§ λ•ŒλΆ€ν„° μ„±λŠ₯κ³Ό κ΄€λ ¨λœ 사항이 데이터 λͺ¨λΈλ§μ— 반영될 수 μžˆλ„λ‘ ν•˜λŠ” 것
뢄석 섀계 / λ‹¨κ³„μ—μ„œ 데이터 λͺ¨λΈμ— μ„±λŠ₯을 κ³ λ €ν•œ 데이터 λͺ¨λΈλ§μ„ μˆ˜ν–‰ν•  경우, μ„±λŠ₯μ €ν•˜μ— λ”°λ₯Έ μž¬μ—…λ¬΄ λΉ„μš©μ„ μ΅œμ†Œν™” ν•  수 μžˆλ‹€
λ°μ΄ν„°μ˜ 증가가 λΉ λ₯Όμˆ˜λ‘ μ„±λŠ₯μ €ν•˜μ— λ”°λ₯Έ μ„±λŠ₯κ°œμ„ λΉ„μš©μ€ κΈ°ν•˜κΈ‰μˆ˜μ μœΌλ‘œ μ¦κ°€ν•˜κ²Œ λœλ‹€


μ„±λŠ₯ 데이터 λͺ¨λΈλ§ μˆ˜ν–‰ 절차
데이터 λͺ¨λΈλ§μ„ ν•  λ•Œ μ •κ·œν™”λ₯Ό μ •ν™•ν•˜κ²Œ μˆ˜ν–‰ν•œλ‹€.
λ°μ΄ν„°λ² μ΄μŠ€ μš©λŸ‰μ‚°μ •μ„ μˆ˜ν–‰ν•œλ‹€.
λ°μ΄ν„°λ² μ΄μŠ€μ— λ°œμƒλ˜λŠ” νŠΈλžœμž­μ…˜μ˜ μœ ν˜•μ„ νŒŒμ•…ν•œλ‹€.
μš©λŸ‰κ³Ό νŠΈλžœμž­μ…˜μ˜ μœ ν˜•μ— 따라 λ°˜μ •κ·œν™”λ₯Ό μˆ˜ν–‰ν•œλ‹€.
이λ ₯ λͺ¨λΈμ˜ μ‘°μ •, PK/FK μ‘°μ •, μŠˆνΌνƒ€μž…/μ„œλΈŒνƒ€μž… μ‘°μ • 등을 μˆ˜ν–‰ν•œλ‹€.
μ„±λŠ₯ κ΄€μ μ—μ„œ 데이터 λͺ¨λΈμ„ κ²€μ¦ν•œλ‹€.





μ •κ·œν™”λž€?
데이터 베이슀 μ„€κ³„μ—μ„œ 쀑볡 μš”μ†Œλ₯Ό μ°Ύμ•„ μ œκ±°ν•˜κ³ , 데이터가 꼬이지 μ•Šκ²Œ ν…Œμ΄λΈ”μ„ λ‚˜λˆ„λŠ” 것

β‘  제 1 μ •κ·œν™”
ν•˜λ‚˜μ˜ 속성은 λ°˜λ“œμ‹œ ν•˜λ‚˜μ˜ 값을 κ°€μ Έμ•Ό ν•œλ‹€.
같은 성격 λ‚΄μš© 칼럼이 연속될 λ•Œ μΉΌλŸΌ 제거, ν…Œμ΄λΈ” 생성


β‘‘ 제 2 μ •κ·œν™”
제 1 μ •κ·œν˜•μ„ 만쑱
μ£Όμ‹λ³„μžκ°€ μ•„λ‹Œ λͺ¨λ“  속성이 μ£Όμ‹λ³„μžμ— μ™„μ „ ν•¨μˆ˜ μ’…μ†λ˜μ–΄μ•Ό ν•œλ‹€.
ν•¨μˆ˜μ˜ λΆ€λΆ„ 쒅속을 λΆ„λ¦¬ν•˜λŠ” κ³Όμ •
제2 μ •κ·œν˜•μ„ λ§Œμ‘±ν•˜λ €λ©΄ λͺ¨λ“  속성은 λ°˜λ“œμ‹œ κΈ°λ³Έν‚€ 전뢀에 μ’…μ†λ˜μ–΄μ•Ό ν•œλ‹€.

 

* ν•¨μˆ˜ 쒅속성(FD) : λ°μ΄ν„° μ†μ„±μ˜ μ˜λ―Έμ™€ 속성 κ°„ μƒν˜Έ κ΄€κ³„λ‘œλΆ€ν„° λ°œμƒν•˜λŠ” μ œμ•½μ‘°κ±΄μ˜ 일쒅

ν•„λ“œλ“€μ˜ λΆ€λΆ„집합을 κ°κ° X와 Y라고 ν•  λ•Œ, X의 ν•œ κ°’이 Y에 μ†ν•œ μ˜€μ§ ν•˜λ‚˜μ˜ κ°’μ—λ§Œ μ‚¬μƒλ  κ²½μš°μ— "YλŠ” X에 ν•¨μˆ˜ μ’…속"이라고 ν•˜λ©°, X→Y라고 ν‘œκΈ°

 

* λΆ€λΆ„ ν•¨μˆ˜μ  쒅속성


β‘’ 제 3 μ •κ·œν™”
제2 μ •κ·œν™”λ₯Ό λ§Œμ‘±ν•˜κ³ , κΈ°λ³Έν‚€κ°€ μ•„λ‹Œ λͺ¨λ“  속성이 기본킀에 이행적 ν•¨μˆ˜ 쒅속이 μ—†λ‹€.



β‘£ BCNF μ •κ·œν™”
λ¦΄λ ˆμ΄μ…˜μ˜ λͺ¨λ“  κ²°μ •μžκ°€ 후보킀인 λ¦΄λ ˆμ΄μ…˜





λ°˜μ •κ·œν™”(μ—­μ •κ·œν™”)λž€?
μ •κ·œν™”λœ μ—”ν„°ν‹°, 속성, 관계에 λŒ€ν•΄ μ‹œμŠ€ν…œμ˜ μ„±λŠ₯ ν–₯상과 개발과 운영의 λ‹¨μˆœν™”λ₯Ό μœ„ν•΄ μ€‘볡, 톡합, 뢄리 등을 μˆ˜ν–‰ν•˜λŠ” 데이터 λͺ¨λΈλ§μ˜ 기법을 의미
쑰회 μ‹œ λ””μŠ€ν¬ I/Oκ°€ λ§Žκ±°λ‚˜ κ²½λ‘œκ°€ λ©€μ–΄ 쑰인에 μ˜ν•œ μ„±λŠ₯ μ €ν•˜λ₯Ό 막기 μœ„ν•΄ μˆ˜ν–‰
일반적으둜 μ •κ·œν™”μ‹œ μž…λ ₯ μˆ˜μ • μ‚­μ œ μ„±λŠ₯이 ν–₯μƒλ˜λ©° λ°˜μ •κ·œν™”μ‹œ μ‘°μΈ μ„±λŠ₯이 ν–₯μƒλœλ‹€.


λ°˜μ •κ·œν™” 절차
β‘  λ°˜μ •κ·œν™” λŒ€μƒ 쑰사
- λ²”μœ„ 처리 λΉˆλ„μˆ˜ : 자주 μ‚¬μš©λ˜λŠ” ν…Œμ΄λΈ”μ— μ ‘κ·Όν•˜λŠ” ν”„λ‘œμ„ΈμŠ€μ˜ μˆ˜κ°€ 많고 항상 μΌμ •ν•œ λ²”μœ„λ§Œμ„ μ‘°νšŒν•˜λŠ” 경우
- λŒ€λŸ‰μ˜ λ²”μœ„ : ν…Œμ΄λΈ”μ— λŒ€λŸ‰μ˜ 데이터가 있고, λŒ€λŸ‰μ˜ 데이터 λ²”μœ„λ₯Ό 자주 μ²˜λ¦¬ν•˜λŠ” κ²½μš°μ— μ²˜λ¦¬λ²”μœ„λ₯Ό μΌμ •ν•˜κ²Œ 쀄이지 μ•ŠμœΌλ©΄ μ„±λŠ₯을 보μž₯ν•  수 μ—†λŠ” 경우
- 톡계성 ν”„λ‘œμ„ΈμŠ€ : 톡계성 ν”„λ‘œμ„ΈμŠ€μ— μ˜ν•΄ 톡계 정보λ₯Ό ν•„μš”λ‘œ ν•  λ•Œ λ³„λ„μ˜ ν†΅κ³„ν…Œμ΄λΈ”μ„ μƒμ„±ν•œλ‹€.
- ν…Œμ΄λΈ” 쑰인 : ν…Œμ΄λΈ”μ— μ§€λ‚˜μΉ˜κ²Œ λ§Žμ€ 쑰인이 κ±Έλ € 데이터λ₯Ό μ‘°νšŒν•˜λŠ” μž‘μ—…μ΄ 기술적으둜 μ–΄λ €μšΈ 경우

β‘‘ λ‹€λ₯Έ 방법 μœ λ„ κ²€ν†  (인덱슀의 μ‘°μ •, μ‘μš©ν”„λ‘œκ·Έλž¨(μ• ν”Œλ¦¬μΌ€μ΄μ…˜) λ“±)
- VIEW : μ‚¬μš© μ§€λ‚˜μΉ˜κ²Œ λ§Žμ€ 쑰인이 κ±Έλ € 데이터λ₯Ό μ‘°νšŒν•˜λŠ” μž‘μ—…μ΄ 기술적으둜 μ–΄λ €μšΈ 경우 VIEWλ₯Ό μ‚¬μš©ν•œλ‹€ (VIEWκ°€ μ„±λŠ₯ν–₯상 X)
- ν΄λŸ¬μŠ€ν„°λ§ : λŒ€λŸ‰μ˜ λ°μ΄ν„°μ²˜λ¦¬λ‚˜ λΆ€λΆ„μ²˜λ¦¬μ— μ˜ν•΄ μ„±λŠ₯이 μ €ν•˜λ˜λŠ” 경우 ν΄λŸ¬μŠ€ν„°λ§μ„ μ μš©ν•˜κ±°λ‚˜ 인덱슀λ₯Ό μ‘°μ • (μ‘°νšŒκ°€ λŒ€λΆ€λΆ„μΌ λ•Œ ν΄λŸ¬μŠ€ν„°λ§ 적용)
- νŒŒν‹°μ…”λ‹ : λŒ€λŸ‰μ˜ λ°μ΄ν„°λŠ” PK의 성격에 따라 뢀뢄적인 ν…Œμ΄λΈ”λ‘œ 뢄리할 수 μžˆλ‹€. νŒŒν‹°μ…”λ‹ 킀에 μ˜ν•΄ 물리적 μ €μž₯곡간 뢄리
- μΊμ‹œ μ‘μš© : μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ λ‘œμ§μ„ κ΅¬μ‚¬ν•˜λŠ” 방법을 λ³€κ²½ν•¨μœΌλ‘œμ¨ μ„±λŠ₯을 ν–₯μƒμ‹œν‚¬ 수 μžˆλ‹€.

β‘’ λ°˜μ •κ·œν™” 적용
(1) ν…Œμ΄λΈ” λ°˜μ •κ·œν™”
- 1:1관계λ₯Ό ν†΅ν•©ν•˜μ—¬ μ„±λŠ₯ν–₯상
- 1:M관계λ₯Ό ν†΅ν•©ν•˜μ—¬ μ„±λŠ₯ν–₯상
- 슈퍼/μ„œλΈŒ 관계λ₯Ό ν†΅ν•©ν•˜μ—¬ μ„±λŠ₯ν–₯상

ν…Œμ΄λΈ”λΆ„ν• 
β‘  μˆ˜μ§λΆ„ν•  : μΉΌλŸΌλ‹¨μœ„ ν…Œμ΄λΈ”μ„ λ””μŠ€ν¬ I/Oλ₯Ό λΆ„μ‚°μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ ν…Œμ΄λΈ”μ„ 1:1둜 λΆ„λ¦¬ν•˜μ—¬ μ„±λŠ₯ν–₯상
β‘‘ μˆ˜ν‰λΆ„ν•  : λ‘œμš°λ‹¨μœ„λ‘œ 집쀑 λ°œμƒλ˜λŠ” νŠΈλžœμž­μ…˜μ„ λΆ„μ„ν•˜μ—¬ λ””μŠ€ν¬ I/O 및 데이터 μ ‘κ·Όμ˜ νš¨μœ¨μ„±μ„ λ†’μ—¬ μ„±λŠ₯을 ν–₯μƒν•˜κΈ° μœ„ν•΄ λ‘œμš°λ‹¨μœ„λ‘œ ν…Œμ΄λΈ”μ„ μͺΌκ°¬

ν…Œμ΄λΈ” μΆ”κ°€
β‘  쀑볡 : λ‹€λ₯Έ μ—…λ¬΄μ΄κ±°λ‚˜ μ„œλ²„κ°€ λ‹€λ₯Έ 경우 λ™μΌν•œ ν…Œμ΄λΈ”κ΅¬μ‘°λ₯Ό μ€‘λ³΅ν•˜μ—¬ 원격쑰인을 μ œκ±°ν•˜μ—¬ μ„±λŠ₯ ν–₯상
톡계 : SUM, AVG 등을 미리 μˆ˜ν–‰ν•˜μ—¬ 계산해 λ‘ μœΌλ‘œμ¨ 쑰회 μ‹œ μ„±λŠ₯을 ν–₯상
β‘‘ 이λ ₯ : 이λ ₯ν…Œμ΄λΈ” μ€‘μ—μ„œ λ§ˆμŠ€ν„° ν…Œμ΄λΈ”μ— μ‘΄μž¬ν•˜λŠ” λ ˆμ½”λ“œλ₯Ό μ€‘λ³΅ν•˜μ—¬ 이λ ₯ν…Œμ΄λΈ”μ— μ‘΄μž¬μ‹œμΌœ μ„±λŠ₯ ν–₯상
β‘’ λΆ€λΆ„ : ν•˜λ‚˜μ˜ ν…Œμ΄λΈ”μ˜ 전체 칼럼 쀑 자주 μ΄μš©ν•˜λŠ” μ§‘μ€‘ν™”λœ μΉΌλŸΌλ“€μ΄ μžˆμ„ λ•Œ λ””μŠ€ν¬ λ₯Ό I/O 쀄이기 μœ„ν•΄ ν•΄λ‹Ή μΉΌλŸΌλ“€μ„ λͺ¨μ•„놓은 λ³„λ„μ˜ λ°˜μ •κ·œν™”λœ ν…Œμ΄λΈ”μ„ 생성


(2) 칼럼 λ°˜μ •κ·œν™”
β‘  μ€‘λ³΅μΉΌλŸΌ μΆ”κ°€ : 쑰인에 μ˜ν•΄ μ²˜λ¦¬ν•  λ•Œ μ„±λŠ₯μ €ν•˜λ₯Ό μ˜ˆλ°©ν•˜κΈ° μœ„ν•΄ μ€‘λ³΅λœ μΉΌλŸΌμ„ μœ„μΉ˜μ‹œν‚΄
β‘‘ νŒŒμƒμΉΌλŸΌ μΆ”κ°€ : νŠΈλžœμž­μ…˜μ΄ μ²˜λ¦¬λ˜λŠ” μ‹œμ μ— 계산에 μ˜ν•΄ λ°œμƒλ˜λŠ” μ„±λŠ₯μ €ν•˜λ₯Ό μ˜ˆλ°©ν•˜κΈ° μœ„ν•΄ 미리 값을 κ³„μ‚°ν•˜μ—¬ μΉΌλŸΌμ— 보관
β‘’ 이λ ₯ν…Œμ΄λΈ” μΉΌλŸΌμΆ”κ°€ : λŒ€λŸ‰μ˜ 이λ ₯데이터λ₯Ό μ²˜λ¦¬ν•  λ•Œ λΆˆνŠΉμ • λ‚  μ‘°νšŒλ‚˜ 졜근 값을 μ‘°νšŒν•  λ•Œ λ‚˜νƒ€λ‚  수 μžˆλŠ” μ„±λŠ₯μ €ν•˜λ₯Ό μ˜ˆλ°©ν•˜κΈ° μœ„ν•΄ 이λ ₯ν…Œμ΄λΈ”μ— κΈ°λŠ₯μ„± 칼럼 μ΅œκ·Όκ°’ μ—¬λΆ€(μ‹œμž‘/μ’…λ£ŒμΌμž λ“±)λ₯ΌμΆ”가함
β‘£ μ‘μš©μ‹œμŠ€ν…œ μ˜€μž‘λ™μ„ μœ„ν•œ 칼럼 μΆ”κ°€ : μ—…λ¬΄μ μœΌλ‘œλŠ” μ˜λ―Έκ°€ μ—†μ§€λ§Œ μ‚¬μš©μžμ˜ μ‹€μˆ˜λ‘œ μ›λž˜ κ°’μœΌλ‘œ λ³΅κ΅¬ν•˜κΈ° μ›ν•˜λŠ” 경우 이전 데이터λ₯Ό μž„μ‹œμ μœΌλ‘œ μ€‘λ³΅ν•˜μ—¬ λ³΄κ΄€ν•˜λŠ” 기법
β‘€ PK에 μ˜ν•œ 컬럼 μΆ”κ°€ : PK 단일 μ•ˆμ—μ„œ νŠΉμ • 값을 λ³„λ„λ‘œ μ‘°νšŒν•˜λŠ” 경우 μ„±λŠ₯ μ €ν•˜ λ°œμƒν•  수 μžˆμ–΄ μΌλ°˜μ†μ„±μœΌλ‘œ 좔가함

(3) 관계 λ°˜μ •κ·œν™”

β‘  쀑볡관계 μΆ”κ°€ : 데이터λ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ μ—¬λŸ¬ 경둜λ₯Ό 거쳐 쑰인이 κ°€λŠ₯ν•˜μ§€λ§Œ 이 λ•Œ λ°œμƒν•  수 μžˆλŠ” μ„±λŠ₯μ €ν•˜λ₯Ό μ˜ˆλ°©ν•˜κΈ° μœ„ν•΄ 좔가적인 관계λ₯Ό λ§ΊλŠ” 방법

β‘‘ λ‘œμš°μ²΄μ΄λ‹ : 둜우의 길이가 λ„ˆλ¬΄ κΈΈμ–΄μ„œ 데이터 블둝 ν•˜λ‚˜μ— 데이터가 λͺ¨λ‘ μ €μž₯λ˜μ§€ μ•Šκ³  두 개 μ΄μƒμ˜ 블둝에 걸쳐 μ €μž₯λ˜μ–΄ μžˆλŠ” ν˜•νƒœ

β‘’ λ‘œμš°λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ : 데이터 λΈ”λ‘μ—μ„œ μˆ˜μ •μ΄ λ°œμƒν•˜λ©΄ μˆ˜μ •λœ 데이터λ₯Ό ν•΄λ‹Ή 데이터 λΈ”λ‘μ—μ„œ μ €μž₯ν•˜μ§€ λͺ»ν•˜κ³  λ‹€λ₯Έ λΈ”λ‘μ˜ 빈 곡간을 μ°Ύμ•„ μ €μž₯ν•˜λŠ” 방식

* 둜우 체이닝과 둜우 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ΄ λ°œμƒν•˜μ—¬ λ§Žμ€ 블둝에 데이터가 μ €μž₯되면 DB λ©”λͺ¨λ¦¬μ—μ„œ λ””μŠ€ν¬ I/Oκ°€ λ°œμƒν•  λ•Œ λ§Žμ€ I/O κ°€ λ°œμƒν•˜μ—¬ μ„±λŠ₯μ €ν•˜ λ°œμƒ. νŠΈλžœμž­μ…˜μ„ λΆ„μ„ν•˜μ—¬ μ μ ˆν•˜κ²Œ 1:1 κ΄€κ³„λ‘œ λΆ„λ¦¬ν•¨μœΌλ‘œμ¨ μ„±λŠ₯ν–₯상이 κ°€λŠ₯ν•˜λ„λ‘ ν•΄μ•Ό ν•œλ‹€

β‘£ PK에 μ˜ν•΄ ν…Œμ΄λΈ”μ„ λΆ„ν• ν•˜λŠ” 방법 (νŒŒν‹°μ…”λ‹)
RANGE PARTITION : λŒ€μƒ ν…Œμ΄λΈ”μ΄ λ‚ μ§œ λ˜λŠ” μˆ«μžκ°’μœΌλ‘œ 뢄리가 κ°€λŠ₯ν•˜κ³  각 μ˜μ—­λ³„λ‘œ νŠΈλžœμž­μ…˜μ΄ λΆ„λ¦¬λ˜λŠ” 경우 ex) _0401
LIST PARTITION : , 지점 μ‚¬μ—…μ†Œ λ“± 핡심적인 μ½”λ“œκ°’μœΌλ‘œ PKκ°€ κ΅¬μ„±λ˜μ–΄ 있고 λŒ€λŸ‰μ˜ 데이터가 μžˆλŠ” ν…Œμ΄λΈ”μ˜ 경우 ex) _ 고객 μ„œμšΈ
HASH PARTITION : HASH μ§€μ •λœ 쑰건에 따라 ν•΄μ‹œ μ•Œκ³ λ¦¬μ¦˜μ΄ μ μš©λ˜μ–΄ ν…Œμ΄λΈ”μ΄ 뢄리

β‘€ ν…Œμ΄λΈ”μ— λŒ€ν•œ μˆ˜ν‰ μˆ˜μ§λΆ„ν• μ˜ 절차
데이터 λͺ¨λΈλ§μ„ μ™„μ„±ν•œλ‹€.
DB μš©λŸ‰μ‚°μ •μ„ ν•œλ‹€.
λŒ€λŸ‰ 데이터가 μ²˜λ¦¬λ˜λŠ” ν…Œμ΄λΈ”μ— λŒ€ν•΄ νŠΈλžœμž­μ…˜ 처리 νŒ¨ν„΄μ„ λΆ„μ„ν•œλ‹€.
칼럼 λ‹¨μœ„λ‘œ μ§‘μ€‘ν™”λœ μ²˜λ¦¬κ°€ λ°œμƒν•˜λŠ”μ§€, λ‘œμš°λ‹¨μœ„λ‘œ μ§‘μ€‘ν™”λœ μ²˜λ¦¬κ°€ λ°œμƒν•˜λŠ”μ§€ λΆ„μ„ν•˜μ—¬ μ§‘μ€‘ν™”λœ λ‹¨μœ„λ‘œ ν…Œμ΄λΈ”μ„ λΆ„λ¦¬ν•˜λŠ” 것을 κ²€ν† ν•œλ‹€. (컬럼 많음 -> 뢄리 / 데이터 많음 -> νŒŒν‹°μ…”λ‹)

 

 

 

 

슈퍼/μ„œλΈŒνƒ€μž… λͺ¨λΈ

논리적 λͺ¨λΈ.

λΆ€λͺ¨ 속성 쀑에 더 μž‘μ€ 그룹으둜 λΆ„λ¦¬ν•΄μ„œ 관리할 ν•„μš”κ°€ μžˆλŠ” 속성이 μžˆμ„ λ•Œ, μŠˆνΌνƒ€μž… λ˜λŠ” μ„œλΈŒνƒ€μž… λ‹¨μœ„λ‘œ λͺ¨λΈλ§

업무λ₯Ό κ΅¬μ„±ν•˜λŠ” 데이터λ₯Ό 곡톡과 차이점의 νŠΉμ§•μ„ κ³ λ €ν•˜μ—¬ 효과적 ν‘œν˜„.

 

β‘  μŠˆνΌ νƒ€μž… : 전체λ₯Ό ν•˜λ‚˜μ˜ ν…Œμ΄λΈ”λ‘œ 관리, 곡톡 λΆ€λΆ„

- μž₯점 : κ²€μƒ‰μ΄ μ‰½λ‹€, λ¬΄κ²°μ„±μ— μœ λ¦¬

- 단점 : μ„œλΈŒνƒ€μž…λ³„ 속성이 λ§Žλ‹€λ©΄ μ§€λ‚˜μΉ˜κ²Œ NULL이 많이 λ°œμƒ (=곡간낭비)

 

β‘‘ μ„œλΈŒ νƒ€μž… : 곡톡 μ†μ„±κ³Ό κ° μ„œλΈŒνƒ€μž…μ˜ μ†μ„±μ„ λ”ν•˜μ—¬ κ°κ°μ˜ μ„œλΈŒνƒ€μž…λ³„λ‘œ ν…Œμ΄λΈ”을 μ„€κ³„

- μž₯점 : κ³΅κ°„μ˜ λ‚­λΉ„κ°€ 적닀, λ³„κ°œλ‘œ μ²˜λ¦¬ν•˜λŠ” μ—…무가 λ§Žμ„ λ•Œ νš¨μœ¨μ 

- 단점 : UNION ν•¨μˆ˜λ₯Ό μ“Έ λ•Œ μ€‘λ³΅μ œκ±° 되기 λ•Œλ¬Έμ— μœ μΌμ„±(Unique)을 잘 관리해야함, INTERSECT μ—°μ‚° μ‹œ μ–‘μͺ½ ν…Œμ΄λΈ”μ— 쀑볡값이 μ•ˆ λ‚˜μ˜€λ„λ‘ 무결성을 μœ μ§€ν•˜λŠ” 것이 μ€‘μš”, λΉ„νš¨μœ¨μ μΈ μ‘°μΈμ΄λ‚˜ ν•©μ§‘ν•©, ꡐ집합이 λ°œμƒν•  수 μžˆλ‹€. (=속도 μ €ν•˜)

 

 

슈퍼/μ„œλΈŒνƒ€μž… 데이터 λͺ¨λΈμ˜ λ³€ν™˜κΈ°μˆ 

κ°œλ³„λ‘œ λ°œμƒλ˜λŠ” νŠΈλžœμž­μ…˜μ— λŒ€ν•΄μ„œλŠ” κ°œλ³„ ν…Œμ΄λΈ”λ‘œ ꡬ성 (OneToOne Type)

μŠˆνΌνƒ€μž…+μ„œλΈŒνƒ€μž…μ— λŒ€ν•΄ λ°œμƒλ˜λŠ” νŠΈλžœμž­μ…˜μ— λŒ€ν•΄μ„œλŠ” μŠˆνΌ+μ„œλΈŒνƒ€μž… ν…Œμ΄λΈ”λ‘œ ꡬ성 (Plus Type)

전체λ₯Ό ν•˜λ‚˜λ‘œ λ¬Άμ–΄ νŠΈλžœμž­μ…˜μ΄ λ°œμƒν•  λ•ŒλŠ” ν•˜λ‚˜μ˜ ν…Œμ΄λΈ”λ‘œ ꡬ성 (Single Type, All in One Type)

* νŠΈλžœμž­μ…˜μ€ 항상 전체λ₯Ό ν†΅ν•©ν•˜μ—¬ 뢄석, μ²˜λ¦¬ν•˜λŠ”λ° ν•˜λ‚˜λ‘œ ν†΅ν•©λ˜μ–΄ 있으면 λ‹€λ₯Έ ν˜•μ‹μ— λΉ„ν•΄ μ„±λŠ₯이 더 우수 (쑰인 κ°μ†Œ)

 

 

인덱슀 νŠΉμ„±μ„ κ³ λ €ν•œ PK/FK DB μ„±λŠ₯ν–₯상

μ—¬λŸ¬ 개의 속성이 ν•˜λ‚˜μ˜ 인덱슀둜 κ΅¬μ„±λ˜μ–΄ μžˆμ„ λ•Œ, μ•žμͺ½μ— μœ„μΉ˜ν•œ μ†μ„±μ˜ 값이 λΉ„κ΅μžλ‘œ μžˆμ–΄μ•Ό νš¨μœ¨μ΄ μ’‹λ‹€.

μ•žμͺ½μ— μœ„μΉ˜ν•œ μ†μ„±μ˜ 값이 가급적 ‘=’ μ•„λ‹ˆλ©΄ μ΅œμ†Œν•œ λ²”μœ„ ‘BETWEEN’ ‘<>’ κ°€ 듀어와야 νš¨μœ¨μ μ΄λ‹€.

 

 




λΆ„μ‚° λ°μ΄ν„°λ² μ΄μŠ€?
μ—¬λŸ¬ 곳으둜 λΆ„μ‚°λ˜μ–΄μžˆλŠ” DBλ₯Ό ν•˜λ‚˜μ˜ 가상 μ‹œμŠ€ν…œμœΌλ‘œ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•œ DB
λ…Όλ¦¬μ μœΌλ‘œ λ™μΌν•œ μ‹œμŠ€ν…œμ— μ†ν•˜μ§€λ§Œ 컴퓨터 , λ„€νŠΈμ›Œν¬λ₯Ό 톡해 물리적으둜 λΆ„μ‚°λ˜μ–΄ μžˆλŠ” 데이터집합

 

 

λΆ„μ‚° λ°μ΄ν„°λ² μ΄μŠ€μ˜ νŠΉμ§•

ν•˜λ‚˜μ˜ κ²°κ³Όμ—λŠ” μ—¬λŸ¬ 개의 κ³„νšμ΄ μžˆμ„ 수 μžˆλ‹€.

ν•œ 개의 κ³„νšμ—λŠ” λ‚΄μš©μ΄ 없을 μˆ˜λ„ μžˆλ‹€.

데이터 쑰희 μ„±λŠ₯을 μœ„ν•΄ κ³΅ν†΅λœ 속성은 ν•˜λ‚˜μ˜ ν…Œμ΄λΈ”λ‘œ 묢을 수 μžˆλ‹€.

λΆ„μ‚°λ°μ΄ν„°λ² μ΄μŠ€λŠ” λ°μ΄ν„°μ˜ 무결성을 μ™„μ „νžˆ 보μž₯ν•˜κΈ° λΆˆκ°€λŠ₯ν•˜λ‹€.

데이터 처리 λΉ„μš©μ΄ μ¦λŒ€ν•œλ‹€.



λΆ„μ‚° DBλ₯Ό λ§Œμ‘±ν•˜κΈ° μœ„ν•œ 6κ°€μ§€ 투λͺ…μ„±
β‘  λΆ„ν•  투λͺ…μ„± λ‹¨νŽΈν™” : Relation이 μ—¬λŸ¬ λ‹¨νŽΈμœΌλ‘œ λΆ„ν• λ˜μ–΄ 각 사본이 μ—¬λŸ¬ site에 μ €μž₯
β‘‘ μœ„μΉ˜ 투λͺ…μ„± : μ‚¬μš©ν•˜λ €λŠ” λ°μ΄ν„°μ˜ μ €μž₯ μž₯μ†Œ λͺ…μ‹œ λΆˆν•„μš”, μœ„μΉ˜μ •λ³΄κ°€ μ‹œμŠ€ν…œ μΉ΄νƒˆλ‘œκ·Έμ— μœ μ§€
β‘’ 지역사상 투λͺ…μ„± : μ§€μ—­ 와 물리적 μ‚¬μ΄μ˜ Mapping 보μž₯
β‘£ 쀑볡 투λͺ…μ„± : DB stie 객체가 μ—¬λŸ¬ 에 쀑볡 λ˜μ–΄ μžˆλŠ”μ§€ μ•Œ ν•„μš”κ°€ μ—†λŠ” μ„±μ§ˆ
β‘€ μž₯μ•  투λͺ…μ„± : κ΅¬μ„±μš”μ†Œμ˜ μž₯애에 λ¬΄κ΄€ν•œ νŠΈλžœμž­μ…˜μ˜ μ›μžμ„± μœ μ§€
β‘₯ 병행 투λͺ…μ„± : λ‹€μˆ˜ νŠΈλžœμž­μ…˜ λ™μ‹œ μˆ˜ν–‰μ‹œ 결과의 일관성 μœ μ§€ λΆ„μ‚° , TimeStamp, 2 Locking 단계 이용

 

λΆ„μ‚° λ°μ΄ν„°λ² μ΄μŠ€μ˜ μž₯단점

λΆ„μ‚° λ°μ΄ν„°λ² μ΄μŠ€μ˜ μž₯점 λΆ„μ‚° λ°μ΄ν„°λ² μ΄μŠ€μ˜ 단점
μ§€μ—­ μžμΉ˜μ„±, 점증적 μ‹œμŠ€ν…œ μš©λŸ‰ ν™•μž₯
μ‹ λ’°μ„±κ³Ό κ°€μš©μ„±
νš¨μš©μ„±κ³Ό μœ΅ν†΅μ„±
λΉ λ₯Έ 응닡 속도와 톡신 λΉ„μš© 절감
λ°μ΄ν„°μ˜ κ°€μš©μ„±κ³Ό μ‹ λ’°μ„± 증가
μ‹œμŠ€ν…œ 규λͺ¨μ˜ μ μ ˆν•œ 쑰절
각 μ§€μ—­ μ‚¬μš©μžμ˜ μš”κ΅¬μˆ˜μš© μ¦λŒ€
μ†Œν”„νŠΈμ›¨μ–΄ 개발 λΉ„μš© 증가
잠재적인 였λ₯˜ λ°œμƒ κ°€λŠ₯μ„± 증가
처리 λΉ„μš© μ¦λŒ€
섀계, κ΄€λ¦¬μ˜ λ³΅μž‘μ„±κ³Ό λΉ„μš© 증가
λΆˆκ·œμΉ™ν•œ 응닡 속도
ν†΅μ œμ˜ 어렀움
데이터 무결성에 λŒ€ν•œ μœ„ν˜‘



λΆ„μ‚° λ°μ΄ν„°λ² μ΄μŠ€μ˜ 적용 기법
β‘  ν…Œμ΄λΈ” μœ„μΉ˜ λΆ„μ‚° : μ„€κ³„λœ ν…Œμ΄λΈ”μ„ 본사와 μ§€μ‚¬λ‹¨μœ„λ‘œ λΆ„μ‚° μœ„μΉ˜λ³„ , DBλ¬Έμ„œ ν•„μš”
β‘‘ ν…Œμ΄λΈ” λΆ„ν•  λΆ„μ‚° : 각각의 ν…Œμ΄λΈ”μ„ μͺΌκ°œμ–΄ λΆ„μ‚°

- μˆ˜ν‰λΆ„ν• 

- μˆ˜μ§λΆ„ν• 
β‘’ ν…Œμ΄λΈ” 볡제 λΆ„μ‚° : λ™μΌν•œ ν…Œμ΄λΈ”μ„ λ‹€λ₯Έ μ§€μ—­μ΄λ‚˜ μ„œλ²„μ—μ„œ λ™μ‹œμ— μƒμ„±ν•˜μ—¬ κ΄€λ¦¬ν•˜λŠ” μœ ν˜• (λΆ€λΆ„λ³΅μ œ, κ΄‘μ—­λ³΅μ œ)
β‘£ ν…Œμ΄λΈ” μš”μ•½ λΆ„μ‚° : μ§€μ—­ λ˜λŠ” μ„œλ²„ 간에 데이터가 λΉ„μŠ·ν•˜μ§€λ§Œ μ„œλ‘œ λ‹€λ₯Έ μœ ν˜•μœΌλ‘œ μ‘΄μž¬ν•˜λŠ” 경우 (λΆ„μ„μš”μ•½, ν†΅ν•©μš”μ•½)


λΆ„μ‚° DB 섀계λ₯Ό κ³ λ €ν•΄μ•Ό ν•˜λŠ” 경우
μ„±λŠ₯이 μ€‘μš”ν•œ μ‚¬μ΄νŠΈ
κ³΅ν†΅μ½”λ“œ, 기쀀정보, λ§ˆμŠ€ν„° λ°μ΄ν„°μ˜ μ„±λŠ₯ν–₯상
μ‹€μ‹œκ°„ 동기화가 μš”κ΅¬λ˜μ§€ μ•ŠλŠ” 경우, Near Real Time νŠΉμ§•μ„ κ°€μ§€κ³  μžˆλŠ” 경우
νŠΉμ • μ„œλ²„μ— λΆ€ν•˜κ°€ μ§‘μ€‘λ˜μ–΄ λΆ€ν•˜λ₯Ό λΆ„μ‚°
λ°±μ—… μ‚¬μ΄νŠΈ κ΅¬μ„±ν•˜λŠ” 경우