RDBMS와 NoSQL

선큰킹
|2023. 10. 5. 19:17

πŸ“œ RDBMS와 NoSQL

  • RDBMS - Relational DataBase Management System
    • RDB - Relational DataBase
  • NoSQL - Not Only SQL

πŸ“Œ RDBMS?

RDB

κ΄€κ³„ν˜• (데이터) λͺ¨λΈμ— 기초λ₯Ό λ‘” λ°μ΄ν„°λ² μ΄μŠ€μž…λ‹ˆλ‹€. κ΄€κ³„ν˜• λͺ¨λΈ(Relational model)μ΄λž€ 데이터λ₯Ό κ΅¬μ„±ν•˜λŠ”λ° ν•„μš”ν•œ 방법 쀑 ν•˜λ‚˜λ‘œ λͺ¨λ“  데이터λ₯Ό 2μ°¨μ›μ˜ ν…Œμ΄λΈ” ν˜•νƒœλ‘œ ν‘œν˜„ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

ν…Œμ΄λΈ”μ˜ 각 행은 κ³ μœ ν•œ ν‚€λ₯Ό κ°€μ§€κ³  있고, ν…Œμ΄λΈ”μ˜ 각 행은 λ‹€λ₯Έ ν…Œμ΄λΈ”μ˜ 행에 μžμ‹ μ˜ 고유 ν‚€κ°€ λ‹΄κΈ΄ 열을 μΆ”κ°€ν•˜λŠ” κ²ƒμœΌλ‘œ 연결될 수 μžˆμŠ΅λ‹ˆλ‹€. 이 λ•Œ 킀듀은 μ™ΈλΆ€ ν‚€(Foreign Key)μž…λ‹ˆλ‹€.

기본적으둜 RDBλŠ” PK에 μ΅œμ ν™”λ©λ‹ˆλ‹€.

RDB μš©μ–΄

SQL RDB μ„€λͺ…
ν–‰(Row) νŠœν”Œ(Tuple) λ˜λŠ”
λ ˆμ½”λ“œ(Record)
ν•˜λ‚˜μ˜ ν•­λͺ©μ„ λŒ€ν‘œν•˜λŠ” 데이터
μ—΄(Column) 속성(Attribute) νŠœν”Œμ˜ 이름 μš”μ†Œ (예: "id", "name", "address")
ν…Œμ΄λΈ”(Table) 관계(Relation) λ˜λŠ”
κ΄€κ³„λ³€μˆ˜(Base relvar)
같은 속성을 κ³΅μœ ν•˜λŠ” νŠœν”Œμ˜ λͺ¨μž„ (μ»¬λŸΌμ΄λ‚˜ 둜우의 λͺ¨μž„)

RDBMS

  • DBMS - λ°μ΄ν„°λ² μ΄μŠ€μ— λŒ€ν•œ μ•‘μ„ΈμŠ€λ₯Ό μ •μ˜, 생성, μœ μ§€ 및 μ œμ–΄ν•  수 μžˆλ„λ‘ ν•˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄ μ‹œμŠ€ν…œμž…λ‹ˆλ‹€.

λ°μ΄ν„°λ² μ΄μŠ€κ°€ κ΄€κ³„ν˜•μΌ λ•Œ RDBMS라고 λΆ€λ¦…λ‹ˆλ‹€.
λ”°λΌμ„œ, κ΄€κ³„ν˜• λͺ¨λΈμ— κΈ°λ°˜ν•œ λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œ(DBMS)이라고 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ§Žμ€ κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œμ—λŠ” λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μΏΌλ¦¬ν•˜κ³  μ—…λ°μ΄νŠΈν•˜κΈ° μœ„ν•΄ SQL(Structured Query Language)을 μ‚¬μš©ν•˜λŠ” μ˜΅μ…˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€.

νŠΉμ§•

  • λ°μ΄ν„°μ˜ λΆ„λ₯˜, μ •λ ¬, 탐색 속도가 빠름
  • μŠ€ν‚€λ§ˆκ°€ λͺ…ν™•ν•˜κ²Œ μ •μ˜λ¨
  • 였래 μ‚¬μš©λœ 만큼 신뒰성이 λ†’κ³ , μ–΄λ–€ μƒν™©μ—μ„œλ„ λ°μ΄ν„°μ˜ 무결성을 보μž₯
  • 데이터λ₯Ό 쀑볡 없이 ν•œ 번만 μ €μž₯ κ°€λŠ₯
  • μœ μ§€λ³΄μˆ˜κ°€ νŽΈλ¦¬ν•¨
  • μ •ν˜• 정보에 μ ‘κ·Όν•˜λŠ” κ°€μž₯ 효율적이고 μœ μ—°ν•œ 방법

πŸ“Œ NoSQL?

  • λ°°κ²½ - 컴퓨터 ν΄λŸ¬μŠ€ν„°μ˜ μˆ˜ν‰ ν™•μž₯κ³Ό 같은 기술의 ν™•μž₯으둜 인해 NoSQL λ°μ΄ν„°λ² μ΄μŠ€λŠ” RDBMS의 λŒ€μ•ˆμœΌλ‘œ λ– μ˜¬λžμŠ΅λ‹ˆλ‹€.

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ 보닀 더 μœ΅ν†΅μ„± μžˆλŠ” 데이터 λͺ¨λΈμ„ μ‚¬μš©ν•˜κ³ , λ°μ΄ν„°μ˜ μ €μž₯ 및 검색을 μœ„ν•œ νŠΉν™”λœ λ§€μ»€λ‹ˆμ¦˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€.
이λ₯Ό 톡해 NoSQL λ°μ΄ν„°λ² μ΄μŠ€λŠ” λ‹¨μˆœ 검색 및 μΆ”κ°€ μž‘μ—…μ— μžˆμ–΄μ„œ 맀우 μ΅œμ ν™”λœ ν‚€ κ°’ μ €μž₯ 기법을 μ‚¬μš©ν•˜μ—¬, μ‘λ‹΅μ†λ„λ‚˜, 처리 효율 등에 μžˆμ–΄μ„œ 맀우 λ›°μ–΄λ‚œ μ„±λŠ₯을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

RDB μš©μ–΄

μ’…λ₯˜ μ„€λͺ…
Key Value DB Key와 Value의 쌍으둜 데이터가 μ €μž₯λ˜λŠ” κ°€μž₯ λ‹¨μˆœν•œ ν˜•νƒœμ˜ μ†”λ£¨μ…˜μœΌλ‘œ Amazon의 Dynamo Paperμ—μ„œ μœ λž˜λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
Riak, Vodemort, Tokyo λ“±μ˜ μ œν’ˆμ΄ 많이 μ•Œλ €μ Έ μžˆλ‹€.
Wide Columnar Store Big Table DB라고도 ν•˜λ©°, Google의 BigTable Paperμ—μ„œ μœ λž˜λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
Key Value μ—μ„œ λ°œμ „λœ ν˜•νƒœμ˜ Column Family 데이터 λͺ¨λΈμ„ μ‚¬μš©ν•˜κ³  있고, HBase, Cassandra, ScyllaDB 등이 이에 ν•΄λ‹Ήν•©λ‹ˆλ‹€.
Document DB Lotus Notesμ—μ„œ μœ λž˜λ˜μ—ˆμœΌλ©°, JSON, XMLκ³Ό 같은 Collection 데이터 λͺ¨λΈ ꡬ쑰λ₯Ό μ±„νƒν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
MongoDB, CoughDBκ°€ 이 μ’…λ₯˜μ— ν•΄λ‹Ήν•©λ‹ˆλ‹€.
Graph DB Euler & Graph Theoryμ—μ„œ μœ λž˜ν•œ DBμž…λ‹ˆλ‹€. Nodes, Relationship, Key-Value 데이터 λͺ¨λΈμ„ μ±„μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
Neo4J, OreientDB λ“±μ˜ μ œν’ˆμ΄ μžˆμŠ΅λ‹ˆλ‹€.

높은 ν™•μž₯μ„±κ³Ό κ°€μš©μ„±μ΄ μ£Όμš” μž₯점인 NoSQL λ°μ΄ν„°λ² μ΄μŠ€λŠ” μ‹€μ‹œκ°„ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 및 λΉ… 데이터에 널리 μ‚¬μš©λœλ‹€.

νŠΉμ§•

  • κ΄€κ³„ν˜• λͺ¨λΈμ„ μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ©° ν…Œμ΄λΈ”κ°„μ˜ 쑰인 κΈ°λŠ₯ μ—†μŒ
  • 직접 ν”„λ‘œκ·Έλž˜λ°μ„ ν•˜λŠ” λ“±μ˜ λΉ„SQL μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν†΅ν•œ 데이터 μ•‘μ„ΈμŠ€
  • λŒ€λΆ€λΆ„ μ—¬λŸ¬ λŒ€μ˜ λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„λ₯Ό λ¬Άμ–΄μ„œ(ν΄λŸ¬μŠ€ν„°λ§) ν•˜λ‚˜μ˜ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό ꡬ성
  • κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œλŠ” μ§€μ›ν•˜λŠ” Data처리 μ™„κ²°μ„±(Transaction ACID 지원) 미보μž₯
  • λ°μ΄ν„°μ˜ μŠ€ν‚€λ§ˆμ™€ 속성듀을 λ‹€μ–‘ν•˜κ²Œ 수용 및 동적 μ •μ˜ (Schema*less)
  • λ°μ΄ν„°λ² μ΄μŠ€μ˜ 쀑단 μ—†λŠ” μ„œλΉ„μŠ€μ™€ μžλ™ 볡ꡬ κΈ°λŠ₯지원
  • λ‹€μˆ˜κ°€ Open Source둜 제곡
  • ν™•μž₯μ„±, κ°€μš©μ„±, 높은 μ„±λŠ₯





μ°Έκ³ 

https://en.wikipedia.org/wiki/Relational_database
https://en.wikipedia.org/wiki/Relational_database#RDBMS
https://jwprogramming.tistory.com/52
https://en.wikipedia.org/wiki/NoSQL
https://www.samsungsds.com/kr/insights/1232564_4627.html

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

Transactionκ³Ό ACID  (0) 2023.10.12
Row Oriented & Column Oriented Database  (0) 2023.10.05