NoSQLμ΄λž€

κ°•μ½”λ”©Β·2025λ…„ 10μ›” 28일

λ ˆλ””μŠ€

λͺ©λ‘ 보기
13/21

🧱 NoSQL λ°μ΄ν„°λ² μ΄μŠ€ μ™„λ²½ 정리
Monolith vs Microservices

λͺ¨λ†€λ¦¬μ‹(Monolith) μ•„ν‚€ν…μ²˜λŠ” ν•˜λ‚˜μ˜ 큰 μ‹œμŠ€ν…œ μ•ˆμ— λͺ¨λ“  κΈ°λŠ₯이 ν†΅ν•©λ˜μ–΄ μžˆλŠ” ν˜•νƒœμž…λ‹ˆλ‹€.
반면 λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€(Microservices) μ•„ν‚€ν…μ²˜λŠ” 각 μ„œλΉ„μŠ€κ°€ λ…λ¦½μ μœΌλ‘œ μ„€κ³„λ˜μ–΄ μžμ‹ λ§Œμ˜ 역할을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.
이둜 인해 μ„œλΉ„μŠ€λ³„ λΉ„μ¦ˆλ‹ˆμŠ€ νŠΉμ„±μ— λ§žλŠ” λ°μ΄ν„°λ² μ΄μŠ€ μ„ νƒμ˜ μœ μ—°μ„±μ΄ 생기며, κ΄€κ³„ν˜•(RDB) λŒ€μ‹  NoSQL λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό ν™œμš©ν•˜λŠ” κ²½μš°κ°€ λ§ŽμŠ΅λ‹ˆλ‹€.

πŸ” NoSQLμ΄λž€?

NoSQL은 β€œNot Only SQLβ€μ˜ μ•½μžλ‘œ, 기쑴의 κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€κ°€ μ•„λ‹Œ λΉ„μ •ν˜• 데이터λ₯Ό μ €μž₯ν•˜κΈ° μœ„ν•œ λ°μ΄ν„°λ² μ΄μŠ€μž…λ‹ˆλ‹€.
SQL처럼 ν…Œμ΄λΈ” κ°„ 관계가 λͺ…ν™•ν•˜κ²Œ μ •μ˜λ˜μ§€ μ•ŠμœΌλ©°, λ‹€μ–‘ν•œ ν˜•νƒœμ˜ 데이터λ₯Ό μœ μ—°ν•˜κ²Œ μ €μž₯ν•  수 μžˆλ‹€λŠ” 것이 핡심 νŠΉμ§•μž…λ‹ˆλ‹€.

NoSQL의 λ“±μž₯ λ°°κ²½

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ˜ ν™•μž₯μ„± ν•œκ³„λ₯Ό κ·Ήλ³΅ν•˜κΈ° μœ„ν•΄ λ“±μž₯

빅데이터, ν΄λΌμš°λ“œ ν™˜κ²½, μ‹€μ‹œκ°„ 응닡성 λ“± μƒˆλ‘œμš΄ μš”κ΅¬μ‚¬ν•­μ„ μΆ©μ‘±ν•˜κΈ° μœ„ν•΄ λ°œμ „

λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ ν™˜κ²½μ—μ„œ 독립적 데이터 관리가 ν•„μš”ν•΄μ§€λ©΄μ„œ 널리 μ‚¬μš©

⚑ NoSQL의 μ£Όμš” νŠΉμ§•
1️⃣ μ‹€μ‹œκ°„ 응닡

100msλ₯Ό λ„˜μ–΄κ°€λ©΄ μ‚¬μš©μžκ°€ 지연을 μ²΄κ°ν•œλ‹€λŠ” 연ꡬ κ²°κ³Όκ°€ μžˆμŠ΅λ‹ˆλ‹€.
λ”°λΌμ„œ NoSQL은 λΉ λ₯Έ 응닡 속도가 μ€‘μš”ν•œ μ„œλΉ„μŠ€(예: κ²Œμž„, μ‹€μ‹œκ°„ μ±„νŒ… λ“±)에 μ ν•©ν•©λ‹ˆλ‹€.

2️⃣ ν™•μž₯μ„±

νŠΈλž˜ν”½ κΈ‰μ¦μ΄λ‚˜ 이벀트 λ°œμƒ μ‹œ μˆ˜ν‰ ν™•μž₯(horizontal scaling)이 μš©μ΄ν•©λ‹ˆλ‹€.
μ„œλ²„λ₯Ό μΆ”κ°€ν•˜λŠ” κ²ƒλ§ŒμœΌλ‘œ μ²˜λ¦¬λŸ‰μ„ 높일 수 μžˆμŠ΅λ‹ˆλ‹€.

3️⃣ κ³ κ°€μš©μ„±

μ„œλ²„ μž₯μ• κ°€ λ°œμƒν•΄λ„ 데이터 손싀이 μ΅œμ†Œν™”λ˜λ©°, 볡ꡬ가 λΉ λ¦…λ‹ˆλ‹€.
즉, 항상 μ„œλΉ„μŠ€λ₯Ό μ•ˆμ •μ μœΌλ‘œ μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

4️⃣ ν΄λΌμš°λ“œ λ„€μ΄ν‹°λΈŒ

NoSQL은 ν΄λΌμš°λ“œ ν™˜κ²½μ— μ΅œμ ν™”λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
μ„œλ²„λ₯Ό 직접 μ„€μΉ˜ν•˜κ±°λ‚˜ μš΄μ˜ν•˜μ§€ μ•Šμ•„λ„ 되고, DBaaS (Database as a Service) ν˜•νƒœλ‘œ μ‰½κ²Œ ν™•μž₯ κ°€λŠ₯ν•©λ‹ˆλ‹€.

5️⃣ λ‹¨μˆœμ„±

데이터 λͺ¨λΈμ΄ λ‹¨μˆœν•˜κ³  μŠ€ν‚€λ§ˆ μ œμ•½μ΄ μ—†μŠ΅λ‹ˆλ‹€.
즉, κ°œλ°œμžκ°€ μ„œλΉ„μŠ€μ— 맞게 자유둭게 데이터 ꡬ쑰λ₯Ό μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ’Ύ NoSQL 데이터 μ €μž₯μ†Œμ˜ μ£Όμš” μœ ν˜•

NoSQL은 μ €μž₯ 방식에 따라 μ•„λž˜ λ„€ κ°€μ§€λ‘œ λ‚˜λ‰©λ‹ˆλ‹€.

μœ ν˜• μ£Όμš” μ˜ˆμ‹œ νŠΉμ§•
πŸ•Έ κ·Έλž˜ν”„ν˜•(Graph) Neo4j, ArangoDB 관계 데이터λ₯Ό 효율적으둜 μ €μž₯ (예: SNS 친ꡬ 관계)
πŸ“Š μ»¬λŸΌν˜•(Column) Cassandra, HBase λŒ€μš©λŸ‰ 뢄석과 λΉ„μ¦ˆλ‹ˆμŠ€ μΈν…”λ¦¬μ „μŠ€(BI)에 적합
πŸ“„ λ¬Έμ„œν˜•(Document) MongoDB, CouchDB JSON 기반, μœ μ—°ν•œ μŠ€ν‚€λ§ˆ
πŸ”‘ ν‚€-κ°’ν˜•(Key-Value) Redis, DynamoDB, Memcached κ°€μž₯ λ‹¨μˆœν•˜κ³  빠름, μΊμ‹œ/μ‹€μ‹œκ°„ μ²˜λ¦¬μ— 적합
πŸ•Έ κ·Έλž˜ν”„ν˜• (Graph)

μ—”ν„°ν‹° κ°„μ˜ 관계λ₯Ό 효율적으둜 μ €μž₯ν•˜λŠ” ν˜•νƒœμž…λ‹ˆλ‹€.
예λ₯Ό λ“€μ–΄ SNS의 친ꡬ μΆ”μ²œ, μ†Œμ…œ κ·Έλž˜ν”„, μΆ”μ²œ μ‹œμŠ€ν…œ λ“±μ—μ„œ μœ μš©ν•˜κ²Œ ν™œμš©λ©λ‹ˆλ‹€.
각 λ…Έλ“œ(Node)λŠ” 개체λ₯Ό, μ—£μ§€(Edge)λŠ” 관계λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

πŸ“Š μ»¬λŸΌν˜• (Column)

ν…Œμ΄λΈ”μ˜ ν–‰(row)이 μ•„λ‹ˆλΌ μ—΄(column) λ‹¨μœ„λ‘œ 데이터λ₯Ό μ €μž₯ν•©λ‹ˆλ‹€.
빅데이터 뢄석, 둜그 μ €μž₯, BI 뢄석 λ“± λŒ€μš©λŸ‰ 데이터 μ²˜λ¦¬μ— 강점을 κ°€μ§‘λ‹ˆλ‹€.
λŒ€ν‘œμ μœΌλ‘œ Apache Cassandra, HBaseκ°€ μžˆμŠ΅λ‹ˆλ‹€.

πŸ“„ λ¬Έμ„œν˜• (Document)

JSON ν˜•νƒœλ‘œ 데이터λ₯Ό μ €μž₯ν•˜λŠ” κ΅¬μ‘°μž…λ‹ˆλ‹€.
ν•˜λ‚˜μ˜ λ¬Έμ„œ(Document)κ°€ ν•˜λ‚˜μ˜ 데이터 객체둜 κ°„μ£Όλ˜λ©°, μŠ€ν‚€λ§ˆ λ³€κ²½ 없이 μœ μ—°ν•˜κ²Œ ν™•μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
MongoDB, CouchDB, AWS DocumentDB 등이 λŒ€ν‘œμ μΈ μ˜ˆμ‹œμž…λ‹ˆλ‹€.

πŸ”‘ ν‚€-κ°’ν˜• (Key-Value)

κ°€μž₯ λ‹¨μˆœν•œ ꡬ쑰둜, β€œKey”와 β€œValue” 쌍으둜 데이터λ₯Ό μ €μž₯ν•©λ‹ˆλ‹€.
데이터 검색이 맀우 λΉ λ₯΄κ³ , μ‹€μ‹œκ°„ μ„œλΉ„μŠ€λ‚˜ μΊμ‹œ μ‹œμŠ€ν…œμ—μ„œ 자주 μ‚¬μš©λ©λ‹ˆλ‹€.
Redis, AWS ElastiCache, DynamoDB, Memcached 등이 λŒ€ν‘œμ μž…λ‹ˆλ‹€.

βœ… 정리
ꡬ뢄 νŠΉμ§• λŒ€ν‘œ 기술
κ·Έλž˜ν”„ν˜• 관계 쀑심 Neo4j, ArangoDB
μ»¬λŸΌν˜• λŒ€μš©λŸ‰ 뢄석 Cassandra, HBase
λ¬Έμ„œν˜• JSON 기반, μœ μ—°ν•œ μŠ€ν‚€λ§ˆ MongoDB, CouchDB
ν‚€-κ°’ν˜• λ‹¨μˆœν•˜κ³  빠름 Redis, DynamoDB, Memcached
🧠 마무리

NoSQL은 λ‹¨μˆœνžˆ SQL의 λŒ€μ²΄μ œκ°€ μ•„λ‹ˆλΌ,
ν˜„λŒ€μ˜ λ‹€μ–‘ν•œ 데이터 ꡬ쑰와 μ„œλΉ„μŠ€ μš”κ΅¬μ‚¬ν•­μ— 맞좘 μƒˆλ‘œμš΄ λ°μ΄ν„°λ² μ΄μŠ€ νŒ¨λŸ¬λ‹€μž„μž…λ‹ˆλ‹€.
빅데이터, λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€, μ‹€μ‹œκ°„ μ„œλΉ„μŠ€κ°€ ν™•μ‚°λ μˆ˜λ‘ NoSQL의 μ€‘μš”μ„±μ€ λ”μš± 컀지고 μžˆμŠ΅λ‹ˆλ‹€.

profile
μ£Όλ‹ˆμ–΄ ν’€μŠ€νƒκ°œλ°œμž

0개의 λŒ“κΈ€