SQL(κ΄€κ³„ν˜• DB)

  • SQL을 μ‚¬μš©ν•˜λ©΄ RDBMS(관리 μ‹œμŠ€ν…œ)μ—μ„œ 데이터λ₯Ό μ €μž₯, μˆ˜μ •, μ‚­μ œ 및 검색할 수 있음

  • κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ˜ 핡심 νŠΉμ§•

    • λ°μ΄ν„°λŠ” 정해진 데이터 μŠ€ν‚€λ§ˆμ— 따라 ν…Œμ΄λΈ”μ— μ €μž₯λœλ‹€.
    • λ°μ΄ν„°λŠ” 관계λ₯Ό 톡해 μ—¬λŸ¬ ν…Œμ΄λΈ”μ— λΆ„μ‚°λœλ‹€.
  • λ°μ΄ν„°λŠ” ν…Œμ΄λΈ”μ— λ ˆμ½”λ“œλ‘œ μ €μž₯λ˜λŠ”λ°, 각 ν…Œμ΄λΈ”λ§ˆλ‹€ λͺ…ν™•ν•˜κ²Œ μ •μ˜λœ ꡬ쑰가 μžˆλ‹€.

  • ν•΄λ‹Ή κ΅¬μ‘°λŠ” ν•„λ“œμ˜ 이름과 데이터 μœ ν˜•μœΌλ‘œ μ •μ˜λœλ‹€.

  • λ”°λΌμ„œ μŠ€ν‚€λ§ˆλ₯Ό μ€€μˆ˜ν•˜μ§€ μ•Šμ€ λ ˆμ½”λ“œλŠ” ν…Œμ΄λΈ”μ— μΆ”κ°€ν•  수 μ—†λ‹€. 즉, μŠ€ν‚€λ§ˆλ₯Ό μˆ˜μ •ν•˜μ§€ μ•Šμ€ 이상 정해진 ꡬ쑰에 λ§žλŠ” λ ˆμ½”λ“œλ§Œ μΆ”κ°€κ°€ κ°€λŠ₯ν•œ 것이 κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ˜ νŠΉμ§• 쀑 ν•˜λ‚˜λ‹€.

  • λ˜ν•œ, 데이터 쀑볡을 ν”Όν•˜κΈ° μœ„ν•΄ β€˜κ΄€κ³„β€™λ₯Ό μ΄μš©ν•œλ‹€. 데이터 쀑볡을 ν”Όν•˜κΈ° μœ„ν•œ 데이터 관계 μ˜ˆμ‹œ

  • ν•˜λ‚˜μ˜ ν…Œμ΄λΈ”μ—μ„œ 쀑볡 없이 ν•˜λ‚˜μ˜ λ°μ΄ν„°λ§Œμ„ κ΄€λ¦¬ν•˜κΈ° λ•Œλ¬Έμ— λ‹€λ₯Έ ν…Œμ΄λΈ”μ—μ„œ λΆ€μ •ν™• 데이터λ₯Ό λ‹€λ£° μœ„ν—˜μ΄ μ—†μ–΄μ§€λŠ” μž₯점이 μžˆλ‹€.


NoSQL(λΉ„κ΄€κ³„ν˜• DB)

  • SQL(κ΄€κ³„ν˜• DB)와 λ°˜λŒ€λ‘œ μŠ€ν‚€λ§ˆλ„ μ—†κ³ , 관계도 μ—†λ‹€.

  • NOSQLμ—μ„œλŠ” λ ˆμ½”λ“œλ₯Ό λ¬Έμ„œ(documents)라고 λΆ€λ₯Έλ‹€.

  • μ—¬κΈ°μ„œ SQLκ³Ό 핡심적인 차이가 μžˆλŠ”λ°, SQL은 정해진 μŠ€ν‚€λ§ˆλ₯Ό λ”°λ₯΄μ§€ μ•ŠμœΌλ©΄ 데이터 μΆ”κ°€κ°€ λΆˆκ°€λŠ₯ν–ˆλ‹€. ν•˜μ§€λ§Œ NOSQLμ—μ„œλŠ” λ‹€λ₯Έ ꡬ쑰의 데이터λ₯Ό 같은 μ»¬λ ‰μ…˜μ— μΆ”κ°€κ°€ κ°€λŠ₯ν•˜λ‹€.

  • λ¬Έμ„œ(documents)sms Jsonκ³Ό λΉ„μŠ·ν•œ ν˜•νƒœλ‘œ 가지고 μžˆλ‹€. κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ²˜λŸΌ μ—¬λŸ¬ ν…Œμ΄λΈ”μ— λ‚˜λˆ„μ–΄λ‹΄μ§€ μ•Šκ³ , κ΄€λ ¨ 데이터λ₯Ό λ™μΌν•œ μ»¬λ ‰μ…˜μ— λ„£λŠ”λ‹€.

  • λ”°λΌμ„œ μœ„ 사진에 SQLμ—μ„œ μ§„ν–‰ν•œ Order, Users, Products ν…Œμ΄λΈ”λ‘œ λ‚˜λˆˆ 것을 NoSQLμ—μ„œλŠ” Orders에 ν•œκΊΌλ²ˆμ— ν¬ν•¨ν•΄μ„œ μ €μž₯ν•˜κ²Œ λœλ‹€.

  • λ”°λΌμ„œ μ—¬λŸ¬ ν…Œμ΄λΈ”μ— 쑰인할 ν•„μš”μ—†μ΄ 이미 ν•„μš”ν•œ λͺ¨λ“  것을 κ°–μΆ˜ λ¬Έμ„œλ₯Ό μž‘μ„±ν•˜λŠ” 것이 NoSQL이닀.(NoSQLμ—λŠ” μ‘°μΈμ΄λΌλŠ” κ°œλ…μ΄ μ‘΄μž¬ν•˜μ§€ μ•ŠμŒ)

  • NoSQLμ—μ„œ 쑰인을 ν•˜κ³ μ‹Άμ„ 경우 μ»¬λž™μ…˜μ„ 톡해 데이터λ₯Ό λ³΅μ œν•˜μ—¬ 각 μ»¬λ ‰μ…˜ 일뢀뢄에 μ†ν•˜λŠ” 데이터λ₯Ό μ •ν™•ν•˜κ²Œ μ‚°μΆœν•˜λ„λ‘ ν•œλ‹€.

  • ν•˜μ§€λ§Œ 이러면 데이터가 μ€‘λ³΅λ˜μ–΄ μ„œλ‘œ 영ν–₯을 쀄 μœ„ν—˜μ΄ μžˆλ‹€. λ”°λΌμ„œ 쑰인을 잘 μ‚¬μš©ν•˜μ§€ μ•Šκ³  자주 λ³€κ²½λ˜μ§€ μ•ŠλŠ” 데이터일 λ•Œ NoSQL을 μ“°λ©΄ μƒλ‹Ήνžˆ νš¨μœ¨μ μ΄λ‹€.


ν™•μž₯ κ°œλ…

  • λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„μ˜ ν™•μž₯성은 β€˜μˆ˜μ§μ β€™ ν™•μž₯κ³Ό β€˜μˆ˜ν‰μ β€™ ν™•μž₯으둜 λ‚˜λˆ„μ–΄ 진닀.
    • 수직적 ν™•μž₯: λ‹¨μˆœνžˆ λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„μ˜ μ„±λŠ₯을 ν–₯μƒμ‹œν‚€λŠ” 것(ex. CPU μ—…κ·Έλ ˆμ΄λ“œ)
    • μˆ˜ν‰μ  ν™•μž₯: 더 λ§Žμ€ μ„œλ²„κ°€ μΆ”κ°€λ˜κ³  λ°μ΄ν„°λ² μ΄μŠ€κ°€ 적체적으둜 뢄산됨을 의미(ν•˜λ‚˜μ˜ λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μž‘λ™ν•˜μ§€λ§Œ μ—¬λŸ¬ ν˜ΈμŠ€νŠΈμ—μ„œ μž‘λ™)
  • 데이터 μ €μž₯ λ°©μ‹μœΌλ‘œ 인해 SQL λ°μ΄ν„°λ² μ΄μŠ€λŠ” 일반적으둜 수직적 ν™•μž₯만 지원함
    • μˆ˜ν‰μ  ν™•μž₯은 NoSQL λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œλ§Œ κ°€λŠ₯

μž₯ / 단점

SQL NOSQL
μž₯점 - λͺ…ν™•ν•˜κ²Œ μ •μ˜λœ μŠ€ν‚€λ§ˆ, 데이터 무결성 보μž₯ - μŠ€ν‚€λ§ˆκ°€ μ—†μ–΄μ„œ μœ μ—°ν•¨
- κ΄€κ³„λŠ” 각 데이터λ₯Ό 쀑볡없이 ν•œλ²ˆλ§Œ μ €μž₯ - μ–Έμ œλ“ μ§€ μ €μž₯된 데이터λ₯Ό μ‘°μ •ν•˜κ³  μƒˆλ‘œμš΄ ν•„λ“œ μΆ”κ°€ κ°€λŠ₯
- λ°μ΄ν„°λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ ν•„μš”λ‘œ ν•˜λŠ” ν˜•μ‹μœΌλ‘œ μ €μž₯
- 데이터 μ½μ–΄μ˜€λŠ” 속도가 빨라짐 수직 및 μˆ˜ν‰ ν™•μž₯이 κ°€λŠ₯ν•΄μ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ λ°œμƒμ‹œν‚€λŠ” λͺ¨λ“  읽기/μ“°κΈ° μš”μ²­ 처리 κ°€λŠ₯
단점 - 덜 μœ μ—°ν•¨ - μœ μ—°μ„±μœΌλ‘œ 인해 데이터 ꡬ쑰 결정을 미루게 될 수 있음
- 데이터 μŠ€ν‚€λ§ˆλ₯Ό 사전에 κ³„νšν•˜κ³  μ•Œλ €μ•Ό 함 - 데이터 쀑볡을 계속 μ—…λ°μ΄νŠΈ ν•΄μ•Ό 함
- 관계λ₯Ό λ§Ίκ³  μžˆμ–΄μ„œ 쑰인문이 λ§Žμ€ λ³΅μž‘ν•œ 쿼리가 λ§Œλ“€μ–΄μ§ˆ 수 있음 - 데이터가 μ—¬λŸ¬ μ»¬λ ‰μ…˜μ— μ€‘λ³΅λ˜μ–΄ 있기 λ•Œλ¬Έμ— μˆ˜μ • μ‹œ λͺ¨λ“  μ»¬λ ‰μ…˜μ—μ„œ μˆ˜ν–‰ν•΄μ•Ό 함
- λŒ€μ²΄λ‘œ 수직적 ν™•μž₯만 κ°€λŠ₯ - SQLμ—μ„œλŠ” 쀑볡 데이터가 μ—†μœΌλ―€λ‘œ ν•œλ²ˆλ§Œ μˆ˜ν–‰μ΄ κ°€λŠ₯
μ‚¬μš©ν•˜λŠ” 경우 더 쒋을 λ•Œ - 데이터가 자주 λ³€κ²½λ˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 경우(NoSQLμ—μ„œλŠ” μ—¬λŸ¬ μ»¬λ ‰μ…˜μ„ λͺ¨λ‘ μˆ˜μ •ν•΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— λΉ„νš¨μœ¨μ ) - μ •ν™•ν•œ 데이터 ꡬ쑰λ₯Ό μ•Œ 수 μ—†κ±°λ‚˜ λ³€κ²½/ν™•μž₯ 될 수 μžˆλŠ” 경우
- 변경될 여지가 μ—†κ³ , λͺ…ν™•ν•œ μŠ€ν‚€λ§ˆκ°€ μ‚¬μš©μžμ™€ λ°μ΄ν„°μ—κ²Œ μ€‘μš”ν•œ 경우 - 읽기λ₯Ό 자주 ν•˜μ§€λ§Œ, 데이터 변경은 자주 μ—†λŠ” 경우
- λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μˆ˜ν‰μœΌλ‘œ ν™•μž₯ν•΄μ•Ό ν•˜λŠ” 경우(λ§‰λŒ€ν•œ μ–‘μ˜ 데이터λ₯Ό 닀뀄야 ν•˜λŠ” 경우)

참고링크

oracle λ°μ΄ν„°λ² μ΄μŠ€λž€?

[λ°μ΄ν„°λ² μ΄μŠ€] SQL(ꡬ쑰화 쿼리 μ–Έμ–΄) vs NoSQL(비ꡬ쑰화 쿼리 μ–Έμ–΄) - ν•˜λ‚˜λͺ¬