λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
DB

[DB] λ°μ΄ν„°λ² μ΄μŠ€ νŒŒν‹°μ…”λ‹ - λΆ„ν•  기법

by yunamom 2022. 6. 24.
728x90
300x250

λ°μ΄ν„°λ² μ΄μŠ€ λΆ„ν• (Partitioning) μ΄λž€? 

λ°μ΄ν„°λ² μ΄μŠ€ 뢄할은 데이터λ₯Ό μ—¬λŸ¬ 개의 μž‘μ€ 쑰각으둜 λ‚˜λˆ„λŠ” μž‘μ—…μœΌλ‘œ μ΄λ ‡κ²Œ λΆ„ν• λœ 데이터듀은 데이터 관리 μš©μ΄μ„±, μ„±λŠ₯, κ°€μš©μ„± λ“±μ˜ ν–₯상을 μœ„ν•΄ μ‚¬μš©λ˜λ©° λΆ„ν• λœ 각 뢀뢄을 'νŒŒν‹°μ…˜'이라고 λΆ€λ₯Έλ‹€.

 

 

뢄할기법 μ’…λ₯˜ 

μˆ˜ν‰ λΆ„ν•  ( Horizontal Partitioning )

μˆ˜ν‰ λΆ„ν•  (Horizontal Partitioning)

μˆ˜ν‰ 뢄할은 λ°μ΄ν„°λ² μ΄μŠ€μ˜ ν…Œμ΄λΈ”μ„ ν–‰(Row) λ‹¨μœ„λ‘œ λ‚˜λˆ„λŠ” 것을 μ˜λ―Έν•œλ‹€.

예λ₯Ό λ“€μ–΄, κ°€μƒμ˜ "고객 정보"λΌλŠ” ν…Œμ΄λΈ”μ— 각 고객의 이름, λ‚˜μ΄, μ£Όμ†Œ, 이메일 등이 μ €μž₯λ˜μ–΄ 있고, 이 "고객 정보" ν…Œμ΄λΈ”μ„ μˆ˜ν‰ λΆ„ν• ν•˜λ €κ³  ν•˜λŠ” 경우

  • μ§€μ—­λ³„λ‘œ λΆ„ν• : 고객 정보λ₯Ό ν•œ 지역에 μ‚¬λŠ” 고객듀과 λ‹€λ₯Έ 지역에 μ‚¬λŠ” κ³ κ°λ“€λ‘œ λ‚˜λˆˆλ‹€. 예λ₯Ό λ“€μ–΄, ν•œ ν…Œμ΄λΈ”μ€ λ―Έκ΅­ 고객의 μ •λ³΄λ§Œμ„ ν¬ν•¨ν•˜κ³ , λ‹€λ₯Έ ν…Œμ΄λΈ”μ€ 유럽 고객의 μ •λ³΄λ§Œμ„ 포함할 수 있음
  • κ°€μž… μ—°λ„λ³„λ‘œ λΆ„ν• : 고객 정보λ₯Ό κ°€μž…ν•œ 연도에 따라 λ‚˜λˆˆλ‹€. 예λ₯Ό λ“€μ–΄, 2019λ…„ κ°€μž…μžλ“€μ„ ν•œ ν…Œμ΄λΈ”μ—, 2020λ…„ κ°€μž…μžλ“€μ„ λ‹€λ₯Έ ν…Œμ΄λΈ”μ— μ €μž₯함

μ΄λ ‡κ²Œ μˆ˜ν‰ 뢄할을 ν•˜λ©΄, 각각의 μž‘μ€ ν…Œμ΄λΈ”μ€ 데이터λ₯Ό μΌλΆ€λΆ„λ§Œ λ‹΄λ‹Ήν•˜λ―€λ‘œ λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œμ˜ μ„±λŠ₯이 ν–₯상될 수 μžˆλ‹€. λ˜ν•œ νŠΉμ • μ§€μ—­μ΄λ‚˜ 기간에 ν•΄λ‹Ήν•˜λŠ” λ°μ΄ν„°λ§Œ ν•„μš”ν•œ κ²½μš°μ— ν•΄λ‹Ή ν…Œμ΄λΈ”λ§Œμ„ κ²€μƒ‰ν•˜λ©΄ 되기 λ•Œλ¬Έμ— 검색 속도도 빨라진닀. μˆ˜ν‰ 뢄할은 데이터λ₯Ό 더 μž‘μ€ λ©μ–΄λ¦¬λ‘œ μͺΌκ°œλŠ” κ²ƒμ΄λ―€λ‘œ, 전체 λ°μ΄ν„°λ² μ΄μŠ€μ— 걸쳐 쿼리가 λΆ„μ‚°λ˜μ–΄ λΆ€ν•˜λ₯Ό λΆ„μ‚°μ‹œν‚€λŠ” 효과λ₯Ό 얻을 수 있음


μž₯점:

  • μ„±λŠ₯ ν–₯상: 데이터λ₯Ό μ—¬λŸ¬ νŒŒν‹°μ…˜μœΌλ‘œ λ‚˜λˆ μ„œ λ™μ‹œμ— μ²˜λ¦¬ν•˜λ‹ˆκΉŒ 빨라짐.
  • ν™•μž₯μ„±: μƒˆλ‘œμš΄ μ„œλ²„λ₯Ό μΆ”κ°€ν•˜λ©΄ 더 λ§Žμ€ 데이터 처리 κ°€λŠ₯.
  • λ³΄μ•ˆ: 각 νŒŒν‹°μ…˜ λ³„λ‘œ κΆŒν•œ λ”°λ‘œ μ„€μ • κ°€λŠ₯.
  • μœ μ§€λ³΄μˆ˜ 쉬움: μž‘μ€ νŒŒν‹°μ…˜ 관리가 νŽΈν•¨.

단점:

  • 데이터 쀑볡: νŠΉμ • μž‘μ—… λ•Œλ¬Έμ— 데이터 쀑볡될 수 있음.
  • 쿼리 λ³΅μž‘μ„±: 데이터 μ°ΎκΈ° μœ„ν•΄ μ—¬λŸ¬ νŒŒν‹°μ…˜μ„ μ°Ύμ•„μ•Ό ν•  수 있음.
  • λΆ€ν•˜ κ· ν˜•: νŒŒν‹°μ…˜ 간에 λΆ€ν•˜ κ· λ“±ν•˜κ²Œ λΆ„μ‚°μ‹œν‚€κΈ° 어렀움.
  • 데이터 무결성 관리: 데이터 일관성 μœ μ§€μ— 관리 어렀움.

수직 λΆ„ν•  (Vertical Partitioning)

수직 λΆ„ν•  (Vertical Partitioning)

μˆ˜μ§λΆ„ν• (Vertical Partitioning)은 ν…Œμ΄λΈ”μ„ μ—΄(Column)을 κΈ°μ€€μœΌλ‘œ λΆ„ν• ν•˜λŠ” ν˜•νƒœμ΄λ‹€. λ§Œμ•½ ν•œ ν…Œμ΄λΈ”μ— μˆ˜λ§Žμ€ 컬럼이 μ‘΄μž¬ν•œλ‹€λ©΄ λ””μŠ€ν¬μ˜ μ—¬λŸ¬ 블둝에 데이터가 μ €μž₯λ˜λ―€λ‘œ I/O μ„±λŠ₯ μ €ν•˜λ₯Ό 뢈러올 수 μžˆλ‹€. μ΄λ ‡κ²Œ 컬럼이 λ§Žμ•„μ§€λ©΄ 둜우 체이닝과 둜우 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ΄ λ§Žμ•„μ Έμ„œ μ„±λŠ₯이 μ €ν•˜λœλ‹€.

둜우 체이닝(Row Chaining)
길이가 λ„ˆλ¬΄ μ»€μ„œ ν•˜λ‚˜μ˜ 블둝에 μ €μž₯λ˜μ§€ λͺ»ν•˜κ³  λ‹€μˆ˜μ˜ 블둝에 λ‚˜λˆ„μ–΄μ Έ μ €μž₯

둜우 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜(Row Migration)
μˆ˜μ •λœ 데이터λ₯Ό ν•΄λ‹Ή 데이터 블둝에 μ €μž₯ν•˜μ§€ λͺ»ν•˜κ³  λ‹€λ₯Έ λΈ”λ‘μ˜ 빈 곡간에 μ €μž₯

둜우 체이닝과 둜우 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ΄ λ°œμƒν•˜μ—¬ λ§Žμ€ 블둝을 μ‚¬μš©ν•˜κ²Œ 되면, λΆˆν•„μš”ν•œ I/Oκ°€ λ°œμƒν•˜μ—¬ μ„±λŠ₯이 μ €ν•˜λœλ‹€. λ§Žμ€ I/O λ°œμƒμ€ μ„±λŠ₯에 직접적인 영ν–₯을 μ£Όλ―€λ‘œ 맀우 μ€‘μš”ν•œ λ¬Έμ œλ‹€. λ˜ν•œ 데이터에 λŒ€ν•œ λ²”μœ„ 검색을 ν•  경우 더 λ§Žμ€ I/Oλ₯Ό μœ λ°œν•˜λ―€λ‘œ μ„±λŠ₯ μ €ν•˜λ₯Ό μΌμœΌν‚¨λ‹€. μˆ˜λ§Žμ€ μ»¬λŸΌμ„ λ™μ‹œμ— μ‘°νšŒν•˜λŠ” κ²½μš°λŠ” λ“œλ¬Όλ‹€. 각각의 쑰회 쑰건에 맞게 μ΄μš©λ˜λŠ” μ»¬λŸΌλ“€λ‘œ 그룹을 λ¬Άμ–΄μ„œ ν…Œμ΄λΈ” 뢄할을 κ²€ν† ν•  수 μžˆλ‹€. μ‘°νšŒλ‚˜ μ²˜λ¦¬μ— λŒ€ν•œ 뢄산을 κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” μΉΌλŸΌλ“€μ„ κΈ°μ€€μœΌλ‘œ ν…Œμ΄λΈ”μ„ λΆ„λ¦¬ν•œλ‹€λ©΄ μ„±λŠ₯ κ°œμ„ μ— 큰 도움이 될 수 μžˆλ‹€. 

 

예) λ‰΄μŠ€μ‚¬μ΄νŠΈλ₯Ό μ°ΎλŠ” 고객듀은 졜근의 데이터λ₯Ό κ°€μž₯ 많이 μ‘°νšŒν•  것이닀. 이 경우 1κ°œμ›” μ „μ˜ 데이터λ₯Ό λ‹€λ₯Έ ν…Œμ΄λΈ”μ— 두면, 훨씬 효율적으둜 검색할 수 μžˆλ‹€.

 

 

μž₯점:

  • μ„±λŠ₯ κ°œμ„ : 자주 μ‚¬μš©ν•˜λŠ” μ—΄λ§Œ κ°€μ Έμ˜€λ‹ˆκΉŒ 쿼리 속도가 빨라짐.
  • λ³΄μ•ˆ κ°•ν™”: μ€‘μš”ν•œ 열을 λ”°λ‘œ μ €μž₯ν•΄ 더 μ•ˆμ „ν•¨.
  • μ‰¬μš΄ μœ μ§€λ³΄μˆ˜: μ—΄ λ‹¨μœ„λ‘œ λ°μ΄ν„°λ² μ΄μŠ€ 관리가 νŽΈν•¨.

단점:

  • 쿼리 λ³΅μž‘μ„±: ν•„μš”ν•œ 정보λ₯Ό μ–»κΈ° μœ„ν•΄ μ—¬λŸ¬ ν…Œμ΄λΈ”μ„ μ°Έμ‘°ν•΄μ•Ό ν•  수 있음.
  • 쀑볡 데이터: μ—¬λŸ¬ ν…Œμ΄λΈ”μ— λ™μΌν•œ 정보가 쀑볡 μ €μž₯될 수 있음.
  • ν™•μž₯μ„± μ œν•œ: μ—΄ 기반으둜 λΆ„ν• λ˜μ–΄ μƒˆλ‘œμš΄ 데이터 μΆ”κ°€ μ–΄λ €μšΈ 수 있음.

μˆ˜ν‰λΆ„ν•  or μˆ˜μ§λΆ„ν• 

ν…Œμ΄λΈ”μ˜ 컬럼 κ°œμˆ˜μ™€ 데이터 양을 μ’…ν•©μ μœΌλ‘œ νŒλ‹¨ν•˜μ—¬ 양에 λ”°λ₯Έ λŒ€μš©λŸ‰ ν…Œμ΄λΈ”μΈμ§€ νŒλ‹¨ ν•œλ‹€.

λ§Œμ•½ 컬럼 κ°œμˆ˜μ— λ”°λ₯Έ 것이라면, νŠΈλžœμž­μ…˜μ˜ νŠΉμ„±μ— 따라 ν…Œμ΄λΈ”μ„ 1:1 ν˜•νƒœλ‘œ λΆ„λ¦¬ν•˜λŠ” μˆ˜μ§λΆ„ν• μ„ ν•˜λ©΄ λœλ‹€.

반면 데이터 양에 λ”°λ₯Έ 것이라면, μ μ ˆν•œ νŒŒν‹°μ…˜μ„ μ„ νƒν•˜κ³  μ—¬λŸ¬ 개의 물리적 슀페이슀둜 μ €μž₯ν•˜λŠ” μˆ˜ν‰λΆ„ν• μ„ ν•˜λ©΄ λœλ‹€.

결둠은 Row λ‹¨μœ„μ˜ νŠΈλžœμž­μ…˜ (μˆ˜ν‰λΆ„ν• ) μΈμ§€ 컬럼 λ‹¨μœ„μ˜ νŠΈλžœμž­μ…˜ (μˆ˜μ§λΆ„ν• ) μΈμ§€ νŒλ‹¨ν•˜λ©΄ λœλ‹€. 

 

λΆ„ν•  ν‚€ κΈ°μ€€ λΆ„ν•  기법 

νŒŒν‹°μ…˜ μ’…λ₯˜λ‘œλŠ” λ²”μœ„(Range), λͺ©λ‘(List), ν•΄μ‹œ(Hash), ν•©μ„±(Composite) νŒŒν‹°μ…˜μ΄ μžˆλ‹€

κ°€μž₯ 널리 μ΄μš©ν•˜λŠ” Range νŒŒν‹°μ…˜μ€ 주둜 λ‚ μ§œλ₯Ό κΈ°μ€€μœΌλ‘œ ν•˜λŠ” κ²½μš°κ°€ λ§Žλ‹€. 이 경우 데이터가 κ· λ“±ν•˜κ²Œ λ‚˜λˆ„μ–΄μ Έμ„œ λΉ„μŠ·ν•œ μ„±λŠ₯ κ°œμ„ μ„ 보μž₯ν•œλ‹€. λ˜ν•œ 보관 주기에 λ”°λΌμ„œ ν•„μš”μΉ˜ μ•ŠλŠ” 데이터도 μ‰½κ²Œ μ§€μš°κ³  관리할 수 μžˆλ‹€.

λΆ„λ₯˜κ°€ κ°€λŠ₯ν•œ PK μ»¬λŸΌμ„ μ΄μš©ν•œ List νŒŒν‹°μ…˜λ„ 많이 μ‚¬μš©ν•œλ‹€. 

λΆ„ν•  κΈ°μ€€ μ„€λͺ…
λ²”μœ„ λΆ„ν• 
(Range Partitioning)
λΆ„ν•  ν‚€ 값이 λ²”μœ„ 내에 μžˆλŠ”μ§€ μ—¬λΆ€λ‘œ κ΅¬λΆ„ν•œλ‹€.
- 예: 우편 번호λ₯Ό λΆ„ν•  ν‚€λ‘œ μˆ˜ν‰ λΆ„ν• ν•˜λŠ” κ²½μš°μ΄λ‹€.
λͺ©λ‘ λΆ„ν• 
(List Partitioning)
- κ°’ λͺ©λ‘μ— νŒŒν‹°μ…˜μ„ ν• λ‹Ή λΆ„ν•  ν‚€ 값을 κ·Έ λͺ©λ‘μ— λΉ„μΆ”μ–΄ νŒŒν‹°μ…˜μ„ μ„ νƒν•œλ‹€.
- 예λ₯Ό λ“€μ–΄, CountryλΌλŠ” 컬럼의 값이 Iceland, Norway, Sweden, Finland, Denmark쀑 ν•˜λ‚˜μ— μžˆλŠ”ν–‰μ„ κ°€μ Έμ˜¬λ•Œ 뢁유럽 κ΅­κ°€ νŒŒν‹°μ…˜μ„ ꡬ좕 ν• μˆ˜ μžˆλ‹€.
ν•΄μ‹œ λΆ„ν• 
(Hash Partitioning)
- ν•΄μ‹œ ν•¨μˆ˜μ˜ 값에 따라 νŒŒν‹°μ…˜μ— 포함할지 μ—¬λΆ€λ₯Ό κ²°μ •ν•œλ‹€.
- λ°μ΄ν„°μ˜ 관리 λ³΄λ‹€λŠ” μ„±λŠ₯ ν–₯상에 λͺ©μ μ„ λ‘”λ‹€.
- 예λ₯Ό λ“€μ–΄, 4개의 νŒŒν‹°μ…˜μœΌλ‘œ λΆ„ν• ν•˜λŠ” 경우 ν•΄μ‹œ ν•¨μˆ˜λŠ” 0-3의 μ •μˆ˜λ₯Ό λŒλ €μ€€λ‹€.
ν•©μ„± λΆ„ν• 
(Composite Partitioning)
- λΆ„ν•  κΈ°μ€€μœΌλ‘œ μ—¬λŸ¬ 기법을 κ²°ν•©ν•΄ μ‚¬μš©ν•œλ‹€.
λΌμš΄λ“œ 둜빈 λΆ„ν• 
(Round Robin Partitioning)
- λΌμš΄λ“œλ‘œλΉˆμ€ νŒŒν‹°μ…˜μ— ν–‰μ˜ κ³ λ₯Έ 뢄포λ₯Ό 원할 λ•Œ μ‚¬μš©ν•œλ‹€.
- *ν•΄μ‹œλΆ„ν• κ³Ό 달리 λΆ„ν•  μΉΌλŸΌμ„ λͺ…μ‹œν•  ν•„μš”κ°€ μ—†λ‹€.
- νšŒμ „ν•˜λ©΄μ„œ μƒˆλ‘œμš΄ 행이 νŒŒν‹°μ…˜μ— ν• λ‹Ήλœλ‹€.
- ν•˜λ‚˜μ˜ μ€‘μ•™μ²˜λ¦¬μž₯치λ₯Ό μž„μ˜μ˜ ν”„λ‘œμ„ΈμŠ€κ°€ μ’…λ£Œλ  λ•ŒκΉŒμ§€ μ°¨μ§€ν•˜λŠ” 것이 μ•„λ‹ˆλΌ, μ—¬λŸ¬ ν”„λ‘œμ„ΈμŠ€λ“€μ΄ μ€‘μ•™μ²˜λ¦¬μž₯치λ₯Ό μ‘°κΈˆμ”© λŒμ•„κ°€λ©° ν• λ‹Ήλ°›μ•„ μ‹€ν–‰λ˜λŠ” λ°©μ‹μœΌλ‘œ, λ¦¬λˆ…μŠ€λ₯Ό ν¬ν•¨ν•œ λŒ€λΆ€λΆ„μ˜ μ‹œμŠ€ν…œμ—μ„œ μ‚¬μš©ν•˜λŠ”λ°©μ‹μ΄λ‹€.
예: λ¬΄λ”μš΄ 여름, μ„Έ λͺ…μ˜ 아이듀이 ν•˜λ‚˜μ˜ μ•„μ΄μŠ€ν¬λ¦Όμ„ 1/3μ”© λ‚˜λˆ„μ–΄ 먹으렀 ν•œλ‹€. λ¨Όμ € Aκ°€ 1/3을 λ¨Ήκ³ , κ·Έ λ‹€μŒ Bκ°€ 1/3을 λ¨Ήκ³ , λ§ˆμ§€λ§‰μœΌλ‘œ Cκ°€ λ‚˜λ¨Έμ§€λ₯Ό λ¨ΉλŠ” κ²ƒλ³΄λ‹€λŠ”, μ„Έ λͺ…이 μ‘°κΈˆμ”© λŒμ•„κ°€λ©° λ¨ΉλŠ” 편이 λͺ¨λ“  μ•„μ΄λ“€μ˜ κ°ˆμ¦μ„ λ™μ‹œμ— ν•΄μ†Œν•  수 μžˆμ„ 것이닀.

 

λΆ„ν•  κΈ°μ€€ μ’…λ₯˜

 

λΌμš΄λ“œ 둜빈
λΌμš΄λ“œ 둜빈 λΆ„ν• 

Round Robin Partitioning 참고자료1

Round Robin Partitioning 참고자료2 (Youtube)

νŒŒν‹°μ…”λ‹ 참고자료 (IBM)

 

 

-κ΄€λ ¨ 문제 (μ •λ³΄μ²˜λ¦¬κΈ°μ‚¬ 2021λ…„ 2회 41번)

병렬 λ°μ΄ν„°λ² μ΄μŠ€ ν™˜κ²½ 쀑 μˆ˜ν‰ λΆ„ν• μ—μ„œ ν™œμš©λ˜λŠ” λΆ„ν•  기법이 μ•„λ‹Œ 것은?

1. λΌμš΄λ“œ 둜빈
2. λ²”μœ„ λΆ„ν• 
3. 예츑 λΆ„ν• 
4. ν•΄μ‹œ λΆ„ν• 

/* μ •λ‹΅ 3번 - μ˜ˆμΈ‘λΆ„ν• μ€ μ—†μŒ.

 

728x90
300x250

'DB' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[SQL] λ°μ΄ν„°λ² μ΄μŠ€ 개둠 ( Chapter1 ~ 11 )  (0) 2022.08.29

μ½”λ“œ