RDBMS와 NoSQL

2020. 4. 28. 14:58Β·πŸ“ Computer Science/✏ Database

1. RDBMS

  • λ°μ΄ν„°λŠ” μ •ν•΄μ§„ 데이터 μŠ€μΉ΄λ§ˆμ— 따라 ν…Œμ΄λΈ”μ— μ €μž₯되고 관계λ₯Ό 톡해 μ—¬λŸ¬ ν…Œμ΄λΈ”μ— λΆ„μ‚°λœλ‹€.
  • 슀카마λ₯Ό μ€€μˆ˜ν•˜μ§€ μ•Šμ€ λ ˆμ½”λ“œλŠ” ν…Œμ΄λΈ”μ— μΆ”κ°€ν•  수 μ—†λ‹€.
  • λ°μ΄ν„°μ˜ 쀑볡을 ν”Όν•˜κΈ° μœ„ν•΄ 관계λ₯Ό μ΄μš©ν•œλ‹€. ν•˜λ‚˜μ˜ ν…Œμ΄λΈ”μ—μ„œ 쀑볡 없이 ν•˜λ‚˜μ˜ λ°μ΄ν„°λ§Œμ„ κ΄€λ¦¬ν•˜κΈ° λ•Œλ¬Έμ— λ‹€λ₯Έ ν…Œμ΄λΈ”μ—μ„œ λΆ€μ •ν™•ν•œ 데이터λ₯Ό λ‹€λ£° μœ„ν—˜μ΄ μ—†μ–΄μ§„λ‹€.
  • ACID νŠΉμ§•μ„ κ°€μ§„λ‹€.
  • mySQL

 

1) μž₯점

  • λͺ…ν™•ν•˜κ²Œ μ •μ˜λœ μŠ€ν‚€λ§ˆλ‘œ 데이터 무결성을 보μž₯ν•œλ‹€.
  • 관계λ₯Ό 톡해 λΆ„μ‚° μ €μž₯ν•˜κΈ° λ•Œλ¬Έμ— 각 데이터λ₯Ό 쀑볡 없이 ν•œ 번만 μ €μž₯ν•œλ‹€.

 

2) 단점

  • μœ μ—°ν•˜μ§€ μ•Šλ‹€. 데이터 μŠ€ν‚€λ§ˆλ₯Ό 사전에 κ³„νšν•˜κ³  μ•Œλ €μ•Ό ν•΄μ„œ λ‚˜μ€‘μ— μˆ˜μ •ν•˜κΈ° νž˜λ“€λ‹€.
  • 관계λ₯Ό λ§Ίκ³  μžˆμ–΄μ„œ 쑰인문이 λ§Žμ€ λ³΅μž‘ν•œ 쿼리가 λ§Œλ“€μ–΄μ§ˆ 수 μžˆλ‹€.

 

3) μ–Έμ œ μ‚¬μš©?

  • 관계λ₯Ό λ§Ίκ³  μžˆλŠ” 데이터가 자주 λ³€κ²½λ˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜
  • 변경될 μ—¬μ§€κ°€ μ—†κ³  λͺ…ν™•ν•œ μŠ€ν‚€λ§ˆκ°€ μ‚¬μš©μžμ™€ λ°μ΄ν„°μ—κ²Œ μ€‘μš”ν•œ 경우

 

2. NoSQL(Not Only SQL)

  • κ΄€κ³„ν˜• 데이터 λͺ¨λΈμ„ μ§€μ–‘ν•˜λ©° λŒ€λŸ‰μ˜ λΆ„μ‚°λœ 데이터λ₯Ό μ €μž₯ν•˜κ³  μ‘°νšŒν•˜λŠ”λ° νŠΉν™”λ˜μ–΄μžˆμœΌλ©° μŠ€ν‚€λ§ˆ 없이 λ™μž‘ν•œλ‹€.
  • λ ˆμ½”λ“œλ₯Ό λ¬Έμ„œ(documents)라고 λΆ€λ₯Έλ‹€.
  • λ¬Έμ„œλ₯Ό RDB처럼 μ—¬λŸ¬ ν…Œμ΄λΈ”μ— λ‚˜λˆ  λ‹΄μ§€ μ•Šκ³  κ΄€λ ¨ 데이터λ₯Ό λ™μΌν•œ μ»¬λ ‰μ…˜μ— λ„£λŠ”λ‹€. λ”°λΌμ„œ μ—¬λŸ¬ ν…Œμ΄λΈ”μ— 쑰인할 ν•„μš”κ°€ 없이 이미 ν•„μš”ν•œ λͺ¨λ“  것을 κ°–μΆ˜ λ¬Έμ„œλ₯Ό μž‘μ„±ν•œλ‹€.
  • λ‹€λ₯Έ ꡬ쑰의 데이터λ₯Ό 같은 μ»¬λ ‰μ…˜μ— μΆ”κ°€ κ°€λŠ₯ν•˜λ‹€.
  • Redis, MongoDB

 

1) CAP 이둠

  • 일관성(Consistency): 닀쀑 ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ 같은 μ‹œκ°„μ— μ‘°νšŒν•˜λŠ” λ°μ΄ν„°λŠ” 항상 λ™μΌν•œ λ°μ΄ν„°μž„μ„ λ³΄μ¦ν•œλ‹€.
  • κ°€μš©μ„±(Availability): λͺ¨λ“  ν΄λΌμ΄μ–ΈνŠΈμ˜ 읽기와 μ“°κΈ° μš”μ²­μ— λŒ€ν•˜μ—¬ 항상 응닡이 κ°€λŠ₯ν•˜λ‹€. 즉, νŠΉμ • λ…Έλ“œκ°€ μž₯μ• κ°€ λ‚˜λ„ μ„œλΉ„μŠ€κ°€ κ°€λŠ₯ν•΄μ•Ό ν•œλ‹€.
  • λ„€νŠΈμ›Œν¬ λΆ„ν•  ν—ˆμš©μ„±(Partition tolerance): μ§€μ—­μ μœΌλ‘œ λΆ„ν• λœ λ„€νŠΈμ›Œν¬ ν™˜κ²½μ—μ„œ λ™μž‘ν•˜λŠ” μ‹œμŠ€ν…œμ—μ„œ λ‘ μ§€μ—­ κ°„μ˜ λ„€νŠΈμ›Œν¬κ°€ λ‹¨μ ˆλ˜κ±°λ‚˜ λ„€νŠΈμ›Œν¬ λ°μ΄ν„°μ˜ μœ μ‹€μ΄ μΌμ–΄λ‚˜λ”라도 κ° μ§€μ—­ λ‚΄μ˜ μ‹œμŠ€ν…œμ€ μ •μƒμ μœΌλ‘œ λ™μž‘ν•΄μ•Ό ν•œλ‹€.

 

2) μž₯점

  • μŠ€ν‚€λ§ˆκ°€ μ—†μ–΄μ„œ μœ μ—°ν•˜λ‹€. μ–Έμ œλ“ μ§€ μ €μž₯된 데이터λ₯Ό μ‘°μ •ν•˜κ³  μƒˆλ‘œμš΄ ν•„λ“œ μΆ”κ°€κ°€ κ°€λŠ₯ν•˜λ‹€.
  • λ°μ΄ν„°λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ ν•„μš”λ‘œ ν•˜λŠ” ν˜•μ‹μœΌλ‘œ μ €μž₯λ˜μ–΄ 데이터λ₯Ό μ½μ–΄μ˜€λŠ” 속도가 빨라진닀.

 

3) 단점

  • μœ μ—°μ„±μœΌλ‘œ 인해 데이터 ꡬ쑰 결정을 미루게 될 수 μžˆλ‹€.
  • 데이터 쀑볡을 계속 μ—…λ°μ΄νŠΈν•΄μ•Ό ν•œλ‹€.
  • 데이터가 μ—¬λŸ¬ μ»¬λ ‰μ…˜μ— μ€‘λ³΅λ˜μ–΄ 있기 λ•Œλ¬Έμ— 데이터 μˆ˜μ • μ‹œ λͺ¨λ“  μ»¬λ ‰μ…˜μ„ μˆ˜ν–‰ν•΄μ•Ό ν•œλ‹€.

 

4) μ–Έμ œ μ‚¬μš©?

  • μ •ν™•ν•œ 데이터 ꡬ쑰λ₯Ό μ•Œ 수 μ—†κ±°λ‚˜ λ³€κ²½, ν™•μž₯될 수 μžˆλŠ” 경우
  • 읽기λ₯Ό 자주 ν•˜μ§€λ§Œ 데이터 변경은 자주 μ—†λŠ” 경우
μ €μž‘μžν‘œμ‹œ (μƒˆμ°½μ—΄λ¦Ό)
'πŸ“ Computer Science/✏ Database' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • νŒŒν‹°μ…”λ‹(Partitioning)κ³Ό 샀딩(Sharding)
  • λ°μ΄ν„°λ² μ΄μŠ€ ν’€(Database Pool)
  • SQL SELECT
  • SQL
Blxxming
Blxxming
CS 지식과 κ³΅λΆ€ν•˜λ‹€ 배운 것, κ²½ν—˜ν•œ 것 등을 κΈ°λ‘ν•˜λŠ” λΈ”λ‘œκ·Έμž…λ‹ˆλ‹€.
  • Blxxming
    πŸ’‘λ²ˆλœ©πŸ’‘
    Blxxming
  • 전체
    였늘
    μ–΄μ œ
  • 곡지사항

    • Tech Interview
    • πŸ“š Tech (246)
      • πŸ“ Computer Science (96)
        • ✏ OS (12)
        • ✏ Network & Web (10)
        • ✏ Database (11)
        • ✏ Data Structure (6)
        • ✏ Algorithm (40)
        • ✏ Design Pattern (9)
        • ✏ Cloud Computing (3)
        • ✏ (5)
      • πŸ“ Language (73)
        • ✏ Language (6)
        • ✏ C & C++ (11)
        • ✏ C# (19)
        • ✏ JAVA (37)
      • πŸ“ Game (43)
        • ✏ Computer Graphics (2)
        • ✏ Unity (14)
        • ✏ Unreal (26)
        • ✏ (1)
      • πŸ“ Book (34)
        • ✏ Effective (3)
        • ✏ Game Server (16)
        • ✏ Clean Code (14)
        • ✏ (1)
  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.0
Blxxming
RDBMS와 NoSQL
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”