LUCATHREE.COM

← Back to list
🧐 TIL

[λ°±μ—”λ“œ κΈ°λ³Έ κ°œλ… 정리] λ°μ΄ν„°λ² μ΄μŠ€

μž‘μ„±μΌ:
TILTerms

λ°±μ—”λ“œμ˜ 핡심 μš”μ†Œ, λ°μ΄ν„°λ² μ΄μŠ€

이번 ν¬μŠ€νŠΈμ—μ„œλŠ” λ°μ΄ν„°λ² μ΄μŠ€μ— λŒ€ν•΄ 닀뀄보렀고 ν•œλ‹€. 사싀, λ°μ΄ν„°λ² μ΄μŠ€λŠ” λΉ„κ°œλ°œμžλ“€λ„ λŒ€λΆ€λΆ„ μ΄ν•΄ν•˜κ³  많이 μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— κ°œλ… μžμ²΄λŠ” μ΅μˆ™ν•˜μ§€λ§Œ μ—¬κΈ°μ„œλŠ” λ‹¨μˆœν•œ μ €μž₯μ†Œλ‘œμ„œμ˜ λ°μ΄ν„°λ² μ΄μŠ€ λ³΄λ‹€λŠ” λ°±μ—”λ“œλ₯Ό κ΅¬μ„±ν•˜λŠ” μš”μ†Œλ‘œμ„œ λ°μ΄ν„°λ² μ΄μŠ€κ°€ μ™œ λ°˜λ“œμ‹œ ν•„μš”ν•˜κ³  핡심적인지λ₯Ό μ•Œμ•„λ³΄μž.

λ°±μ—”λ“œμ™€ λ°μ΄ν„°λ² μ΄μŠ€μ˜ 관계

λ°±μ—”λ“œ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ€ 크게 μ„Έ κ°€μ§€ 일을 ν•œλ‹€.
  1. 데이터λ₯Ό λ°›μ•„μ„œ
  1. κ°€κ³΅ν•˜κ³ 
  1. λ‹€μ‹œ μ €μž₯ν•˜κ±°λ‚˜ μ „λ‹¬ν•œλ‹€.
μ›Ή μ„œλΉ„μŠ€λ₯Ό λ§Œλ“ λ‹€λŠ” 건 κ²°κ΅­ 데이터λ₯Ό λ‹€λ£¨λŠ” 일둜, 이전 ν¬μŠ€νŠΈμ—μ„œ μ„€λͺ…ν•œ κ°œλ…λ“€μ€ λͺ¨λ‘ 데이터와 연관이 μžˆμ—ˆλ‹€. ν”„λ‘œν† μ½œμ€ μœ„ μ„Έ κ°€μ§€ 쀑 데이터λ₯Ό μ–΄λ–»κ²Œ 보내고 받을 것인가에 λŒ€ν•œ κ·œμΉ™μ„ μ •λ¦½ν•œ 것이고, μ›Ήμ„œλ²„λ‚˜ WASλŠ” λ°μ΄ν„°μ˜ 전달과 가곡을 λ‹΄λ‹Ήν•˜λŠ” ν”„λ‘œκ·Έλž¨λ“€μ΄μ—ˆλ‹€.
그리고 μœ„ μ„Έ κ°€μ§€ 쀑 λ§ˆμ§€λ§‰μœΌλ‘œ 남은 일이 데이터λ₯Ό 잘 λ³΄κ΄€ν•˜λŠ” 것이닀.
μ—¬κΈ°μ„œ μ€‘μš”ν•œ ν¬μΈνŠΈλŠ” 데이터λ₯Ό β€œμž˜β€ 보관해야 ν•œλ‹€λŠ” 것이닀. λ‹¨μˆœν•œ μ €μž₯μ†Œμ˜ μ—­ν• λ§Œ ν•„μš”ν•˜λ‹€λ©΄ ꡳ이 λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³  파일 μ‹œμŠ€ν…œμ„ μ‚¬μš©ν•œλ‹€κ±°λ‚˜ μŠ€ν”„λ ˆλ“œμ‹œνŠΈμ— μ €μž₯을 해도 될 것이닀. κ·ΈλŸ¬λ‚˜ λ°±μ—”λ“œμ—μ„œ 데이터λ₯Ό λ‹€λ£° λ•ŒλŠ” λ‹¨μˆœνžˆ CRUD(Create, Read, Update, Delete)만 μž˜λœλ‹€κ³  끝이 μ•„λ‹ˆλ‹€. μš”μ²­μ— 따라 μ •ν™•ν•œ 데이터λ₯Ό λΉ λ₯΄κ²Œ λ°˜ν™˜ν•˜λŠ” 것이 μ€‘μš”ν•˜κΈ° λ•Œλ¬Έμ— λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œμ΄ μ‚¬μš©λ˜λŠ” 것이며 DBλ₯Ό μ–΄λ–»κ²Œ ν™œμš©ν•˜λŠ”μ§€κ°€ κ³§ μ‹œμŠ€ν…œμ˜ μ•ˆμ •μ„±κ³Ό μ§κ²°λœλ‹€.
즉, λ°μ΄ν„°λ² μ΄μŠ€λŠ” λ‹¨μˆœ μ €μž₯μ†Œλ₯Ό λ„˜μ–΄ μ‹œμŠ€ν…œμ˜ 신뒰성을 λ– λ°›μΉ˜λŠ” 핡심 인프라에 가깝닀.

μ•ˆμ •μ μΈ DB μš΄μ˜μ„ μœ„ν•œ μš”μ†Œ

무결성 (Integrity)

무결성은 데이터에 결함이 없도둝 μ •ν™•μ„±, 일관성, μ™„μ „μ„±, μœ νš¨μ„±μ„ μœ μ§€ν•˜λŠ” 것을 λ§ν•œλ‹€.
  • μ •ν™•μ„±(Accuracy): 데이터가 ν˜„μ‹€ μ„Έκ³„μ˜ μ‹€μ œ κ°’κ³Ό μΌμΉ˜ν•˜κ³  μ€‘λ³΅μ΄λ‚˜ λˆ„λ½μ΄ μ—†λŠ” 것
  • 일관성(Consistency): 데이터가 μ–΄λ–€ 연산을 μˆ˜ν–‰ν•˜λ”λΌλ„ κ·Έ κ²°κ³Όκ°€ λͺ¨μˆœ 없이 μΌκ΄€λœ μƒνƒœλ₯Ό μœ μ§€ν•˜λŠ” 것
  • μ™„μ „μ„±(Completeness):Β λ°μ΄ν„°μ˜ λˆ„λ½μ΄ 없이 μ˜λ„λœ λͺ©μ μ„ λ‹¬μ„±ν•˜κΈ°μ— μΆ©λΆ„ν•œ μƒνƒœλ₯Ό κ°–λŠ” 것
  • μœ νš¨μ„±(Validity): 데이터가 νŠΉμ • κ·œμΉ™μ΄λ‚˜ μ œμ•½ 쑰건에 따라 μ˜¬λ°”λ₯Έ ν˜•μ‹κ³Ό λ²”μœ„λ₯Ό κ°€μ§€λŠ” 것
RDBμ—μ„œ 컬럼 νƒ€μž…κ³Ό 속성을 μ§€μ •ν•˜κ³  primary key, foreign keyλ₯Ό μ‚¬μš©ν•˜λŠ” 것, μ •κ·œν™”λ₯Ό ν•˜κ±°λ‚˜ 데이터 μ‘°μž‘μ„ μœ„ν•œ 일련의 λ™μž‘μ„ νŠΈλžœμž­μ…˜(transaction)μ΄λΌλŠ” λ‹¨μœ„λ‘œ λ¬ΆλŠ” 것 등이 λͺ¨λ‘ 무결성을 μ§€ν‚€κΈ° μœ„ν•œ 방법듀이닀.

λ™μ‹œμ„± (Concurrency)

μ›Ή μ„œλΉ„μŠ€μ—μ„œ 데이터에 λŒ€ν•œ 접근은 μ—¬λŸ¬ μ‚¬μš©μžμ— μ˜ν•΄ λ™μ‹œμ— 일어날 수 μžˆλ‹€. 예λ₯Ό λ“€μ–΄, μž¬κ³ κ°€ ν•˜λ‚˜ 남은 μƒν’ˆμ„ ν•œ μ‚¬μš©μžκ°€ μ£Όλ¬Έν•˜λŠ” λ™μ•ˆ λ‹€λ₯Έ μ‚¬μš©μžλ„ 같은 μƒν’ˆμ„ μ£Όλ¬Έν•  수 있고 이 λ•Œ DBλŠ” λˆ„κ°€ λ¨Όμ € 주문을 ν–ˆλŠ”κ°€λ₯Ό νŒλ‹¨ν•΄μ•Ό ν•œλ‹€.
이렇듯 λ™μ‹œμ— μΌμ–΄λ‚˜λŠ” λ°μ΄ν„°μ˜ 쑰회, μˆ˜μ •μ„ μ•ˆμ „ν•˜κ²Œ λ‹€λ£° 수 μžˆλ„λ‘ λ™μ‹œμ„± μ œμ–΄(concurrency control)κ°€ ν•„μš”ν•˜λ‹€. λ™μ‹œμ„± μ œμ–΄λ₯Ό μœ„ν•΄μ„œλŠ” μ•„λž˜μ™€ 같은 방법듀이 μ‚¬μš©λœλ‹€.
  • 락 (Lock) β€” 데이터 접근을 막아 λ‹€λ₯Έ νŠΈλžœμž­μ…˜μ— μ˜ν•œ μˆ˜μ •μ„ λ°©μ§€ν•œλ‹€.
  • 격리 μˆ˜μ€€ (Isolation Level) β€” λ™μ‹œμ— μΌμ–΄λ‚˜λŠ” νŠΈλžœμž­μ…˜λ“€μ„ μ–΄λŠ μˆ˜μ€€κΉŒμ§€ κ²©λ¦¬μ‹œν‚¬ 것인가λ₯Ό κ²°μ •ν•œλ‹€.

ν™•μž₯μ„± (Scalability)

μ„œλΉ„μŠ€κ°€ μ»€μ§€λ©΄μ„œ νŠΈλž˜ν”½μ΄ μ¦κ°€ν•˜κ³  데이터가 λŠ˜μ–΄λ‚˜λ”λΌλ„ DBλ₯Ό μ•ˆμ •μ μœΌλ‘œ μš΄μ˜ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€.
  • 수직 ν™•μž₯ (Vertical Scaling, Scale-up) β€” λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„ μŠ€νŽ™μ„ λ†’μ΄λŠ” κ²ƒμœΌλ‘œ κ°„λ‹¨ν•˜μ§€λ§Œ ν•œκ³„κ°€ μ‘΄μž¬ν•œλ‹€.
  • μˆ˜ν‰ ν™•μž₯ (Horizontal Scaling, Scale-out) β€” λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„λ₯Ό μ—¬λŸ¬λŒ€λ‘œ λΆ„μ‚°ν•œλ‹€. 단, μ—¬λŸ¬λŒ€μ˜ DB에 데이터λ₯Ό μ–΄λ–»κ²Œ μ €μž₯ν•  것인지 μ „λž΅μ΄ ν•„μš”ν•˜λ‹€.
    • Master-Replica: 읽기용 DB, μ“°κΈ°μš© DBλ₯Ό λΆ„λ¦¬ν•΄μ„œ λΆ€ν•˜λ₯Ό λΆ„μ‚°ν•œλ‹€.
    • Sharding: 데이터λ₯Ό μ—¬λŸ¬λŒ€μ˜ DB에 각각 λΆ„ν• ν•œλ‹€.

μ„±λŠ₯ (Performance)

처리 속도λ₯Ό λ‹¨μˆœνžˆ λΉ λ₯΄κ²Œ ν•˜λŠ” 것이 μ•„λ‹ˆλΌ λ‹€μ–‘ν•œ μž‘μ—…μ„ ν•˜λ”λΌλ„ μΌμ •ν•œ μ„±λŠ₯을 μœ μ§€ν•  수 μžˆλ„λ‘ ν•˜λŠ” 것이 핡심이닀.
  • 인덱싱(Indexing): 색인 같은 자료ꡬ쑰λ₯Ό λ§Œλ“€μ–΄ 데이터 검색 속도λ₯Ό λ†’μ΄λŠ” 것
  • 캐싱(Caching): 자주 μ‘°νšŒλ˜λŠ” 데이터λ₯Ό μΊμ‹œμ— μ €μž₯ν•˜μ—¬ DB λΆ€ν•˜λ₯Ό 쀄이고 쑰회 속도λ₯Ό λ†’μ΄λŠ” 것
  • 쿼리 μ΅œμ ν™”(Query Optimization): 쿼리 ꡬ쑰λ₯Ό κ°œμ„ ν•˜μ—¬ 처리 속도λ₯Ό 높이고 λ¦¬μ†ŒμŠ€ μ‚¬μš©μ„ μ€„μ΄λŠ” 것

μž₯μ•  λŒ€λΉ„

λ””μŠ€ν¬ κ³ μž₯, λ„€νŠΈμ›Œν¬ 뢄리, 잘λͺ»λœ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ λ“± μ–Έμ œλ“  μž₯μ• κ°€ λ°œμƒν•  수 μžˆλŠ” 것을 κ³ λ €ν•˜μ—¬ λ°μ΄ν„°μ˜ 손싀에 λŒ€λΉ„ν•œλ‹€.
  • λ°±μ—…(Backup): 주기적으둜 dump λ˜λŠ” snapshot μ €μž₯
  • 볡제(Replication): Master–Replica ꡬ쑰둜 μž₯μ•  μ‹œ μžλ™ μ „ν™˜
  • λͺ¨λ‹ˆν„°λ§(Monitoring): CPU, 쿼리 μ‹œκ°„, slow query log 좔적
  • 볡ꡬ μ „λž΅(Recovery Strategy): μžλ™ 볡ꡬ 절차 마련, RPO(볡ꡬ 지점 λͺ©ν‘œ), RTO(볡ꡬ μ‹œκ°„ λͺ©ν‘œ) μ •μ˜
Β