λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ’» DEV/Database

[Database] Row oriented DB, Column oriented DB λž€?

by vodkassi 2021. 7. 13.
728x90

✨ Row vs Column Oriented DB

말 κ·ΈλŒ€λ‘œ ν–‰ 쀑심 DB 와 μ—΄ 쀑심 DB 의 차이λ₯Ό λ…Όν•˜λŠ” μ£Όμ œμ΄λ‹€. 

 

μ–Έλœ» λ³΄κΈ°μ—λŠ” 별 차이가 μ—†μ–΄ 보일 수 있으며, ν…Œμ΄λΈ”λ‘œ κ΅¬μ„±λœ DB μŠ€ν‚€λ§ˆλ₯Ό λ– μ˜¬λ¦΄ 수 μžˆλ‹€λŠ” μ μ—μ„œ 였히렀 κ°™μ•„ 보이기도 ν•œλ‹€. κ·ΈλŸ¬λ‚˜ λ°μ΄ν„°μ˜ 운영 관리 λ‹¨μœ„λ₯Ό ν–‰μœΌλ‘œ λ‘λŠ”μ§€ μ—΄λ‘œ λ‘λŠ”μ§€μ— 따라 μš”κ΅¬λ˜λŠ” μ„œλ²„μ˜ μ„±λŠ₯ λ˜λŠ” λŒ€μˆ˜μ— 차이가 많이 λ‚˜κΈ°λ„ ν•œλ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— 이 λ‘˜μ€ λͺ…ν™•νžˆ κ΅¬λΆ„λ˜μ–΄μ•Ό ν•˜λŠ” κ°œλ…μ΄λ‹€. 

 

Row-oriented DB 와 Column-oriented DB (λ˜λŠ” Columnar, C-Store DB)λŠ” RDBMS (κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€) λ₯Ό κ΄€λ¦¬ν•˜λŠ” 두 가지 방법이닀. μ‰½κ²Œ ν‘œν˜„ν•˜μžλ©΄ μ „μžλŠ” λ ˆμ½”λ“œ (ν–‰) 으둜 κ΄€λ¦¬λ˜λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ΄λ©°, ν›„μžλŠ” μ—΄λ‘œ κ΄€λ¦¬λ˜λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ΄λ‹€.

 

이 λ‘˜μ„ κ΅¬λΆ„ν•˜λŠ” μ£Όμš” νŠΉμ„±μ€ 데이터 μ €μž₯ 방식에 μžˆλ‹€. 

 

✨ Row Oriented DB

Row-oriented DB μ—μ„œ 각 λ°μ΄ν„°λŠ” λ ˆμ½”λ“œ λ‹¨μœ„λ‘œ 기둝되며, λ©”λͺ¨λ¦¬ 상 λ ˆμ½”λ“œλΌλ¦¬ μˆ˜ν‰μ μœΌλ‘œ μ €μž₯λœλ‹€.

κ°€λ Ή, 이런 데이터가 μžˆλ‹€κ³  ν•˜μž:

 

μœ μ €μ˜ μΆœμ‹  λ„μ‹œμ™€ λ‚˜μ΄λ₯Ό 담은 ν…Œμ΄λΈ”μ΄λ‹€.

κ°œλ³„ μœ μ €κ°€ 본인의 정보λ₯Ό λ“±λ‘ν•˜μ—¬ μƒˆλ‘œμš΄ λ ˆμ½”λ“œκ°€ 생성될 λ•Œλ§ˆλ‹€, λ°μ΄ν„°λŠ” κΈ°μ‘΄ λ°μ΄ν„°μ˜ 맨 끝에 μΆ”κ°€λ˜λŠ” 방식이닀.

 

 

μ΄λŸ¬ν•œ λ°©μ‹μœΌλ‘œ 데이터λ₯Ό μ €μž₯ν•˜λŠ” DB λŠ” λŒ€ν‘œμ μœΌλ‘œ Postgres, MySQL 등이며,

μ΄λŸ¬ν•œ DBMS λŠ” 전톡적인 방법이기도 ν•˜μ§€λ§Œ ν–‰ λ‹¨μœ„μ˜ 데이터λ₯Ό μ½λŠ” 데 μ΅œμ ν™” λ˜μ–΄ μžˆλ‹€. 

 

 

✨ Row Oriented DB : μž₯점

 

λ°μ΄ν„°μ˜ 끝에 행을 μΆ”κ°€ν•˜κΈ°λ§Œ ν•˜λ©΄ 되기 λ•Œλ¬Έμ— μ €μž₯ 속도가 λΉ λ₯΄λ‹€. 

λ˜ν•œ, OLTP (Online transactional Processing) μŠ€νƒ€μΌ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ΅œμ ν™” λ˜μ–΄ μžˆλ‹€.

 

 

✨ Row Oriented DB : 단점

 

ν–‰ λ‹¨μœ„ 데이터λ₯Ό λΆˆλŸ¬μ˜€λŠ” μ†λ„λŠ” λΉ λ₯΄λ‚˜, 데이터 κ°„μ˜ 집합을 λ§Œλ“œλŠ” 경우 (aggregation) 속도 μ €ν•˜ ν˜„μƒμ΄ λ°œμƒν•œλ‹€. ν•„μš”ν•œ 것 μ΄μƒμ˜ 데이터λ₯Ό 뢈러였기 λ•Œλ¬Έμ΄λ‹€. κ°€λ Ή, μœ„μ˜ μ˜ˆμ‹œμ—μ„œ μœ μ €μ˜ 평균 λ‚˜μ΄λ₯Ό κ΅¬ν•˜κ³ μž ν•  경우, 데이터 쑰각 9개λ₯Ό μ „λΆ€ λΆˆλŸ¬λ“€μΈ λ’€ 평균 ν•¨μˆ˜ μ μš©μ„ ν•˜κ²Œ λœλ‹€. μ΄λŠ” λΆˆν•„μš”ν•œ μ—°μ‚° μ‹œκ°„μ„ μ΄ˆλž˜ν•˜λ©°, κ°„νŽΈν•œ μž…λ ₯에 λΉ„ν•΄ 좜λ ₯ν•˜λŠ” 과정이 ν•„μš” μ΄μƒμ˜ λ©”λͺ¨λ¦¬ μ†Œλͺ¨λ₯Ό μœ λ°œν•œλ‹€. 

 

✨ Column Oriented DB

Column-oriented DB μ—μ„œ 각 λ°μ΄ν„°λŠ” ν•„λ“œ λ‹¨μœ„λ‘œ 기둝되며, λ©”λͺ¨λ¦¬ 상 ν•„λ“œλΌλ¦¬ μˆ˜ν‰μ μœΌλ‘œ μ €μž₯λœλ‹€.

κ°€λ Ή, μ•žμ„  μ˜ˆμ‹œμ˜ 경우, λ°μ΄ν„°λŠ” 이런 λ°©μ‹μœΌλ‘œ μ €μž₯λœλ‹€ :

 

 

μ΄λŸ¬ν•œ λ°©μ‹μœΌλ‘œ 데이터λ₯Ό μ €μž₯ν•˜λŠ” DB λŠ” λŒ€ν‘œμ μœΌλ‘œ Redshift, BigQuery, Snowflake 등이닀.

 

✨ Column Oriented DB : μž₯점

 

데이터 쿼리λ₯Ό ν•  λ•Œ μ„±λŠ₯이 더 쒋은 κ²½μš°κ°€ μžˆλ‹€.

OLAP (Online Analytical Processing) μŠ€νƒ€μΌ μš©λ„μ— μ΅œμ ν™” λ˜μ–΄ μžˆλ‹€.

데이터 집합을 λ§Œλ“œλŠ” 경우 μΆ”κ°€ λ©”λͺ¨λ¦¬ μ†Œλͺ¨ 없이 ν•„μš”ν•œ κ²°κ³Όλ₯Ό 좜λ ₯ν•  수 있으며, 이에 따라 μ„±λŠ₯이 크게 ν–₯μƒλœλ‹€.

 

✨ Column Oriented DB : 단점

 

λͺ¨λ“  데이터가 같은 λ©”λͺ¨λ¦¬ 곡간에 μ €μž₯될 경우, 각 μ—΄μ˜ λ§ˆμ§€λ§‰ λ°μ΄ν„°μ˜ μœ„μΉ˜λ₯Ό μ‘°νšŒν•˜μ—¬ μ˜†μ— μΆ”κ°€ν•΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— λ©”λͺ¨λ¦¬ 전체λ₯Ό μ‘°νšŒν•΄μ•Ό ν•œλ‹€. κ·ΈλŸ¬λ‚˜ 이 뢀뢄은 μ—΄λ§ˆλ‹€ μ €μž₯λ˜λŠ” λ©”λͺ¨λ¦¬ 곡간을 λΆ„λ¦¬ν•¨μœΌλ‘œμ¨ ν•΄κ²° κ°€λŠ₯ν•˜λ‹€.

 

✨마무리 

데이터 λͺ¨λΈλ§μ„ ν•  λ•Œ λ‹¨μˆœνžˆ SQL/NoSQL μ€‘μ—μ„œ μ–‘μžνƒμΌ ν•  것이 μ•„λ‹ˆλΌ, μ„œλΉ„μŠ€μ˜ 세뢀적인 ν•„μš”μ™€ μš”κ΅¬μ‚¬ν•­μ— 따라 ꡬ체적인 섀계λ₯Ό ν•  수 μžˆλ‹€. κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ˜ 경우, κ·Έ 첫 걸음이 row/column oriented db κ°€ 될 수 μžˆμ„ 것이닀.

 

 

✨참고자료

λŒ“κΈ€