NoSQL은 관계형 데이터베이스(RDBMS)와 달리 테이블 간 관계를 정의하지 않는 데이터베이스입니다.
"Not Only SQL"이라는 뜻으로, 기존 RDBMS가 아닌 다양한 데이터 저장 방식(Key-Value, Document, Graph 등)을 포괄합니다.
NoSQL은 비정형 데이터와 대규모 분산 시스템에 적합하며, 유연한 스키마와 뛰어난 확장성을 제공합니다.
키-값 저장소(Key-Value Stores)
문서 지향(Document-Oriented)
열 지향(Column-Family)
그래프(Graph)
유연한 스키마
수평적 확장성(Scalability)
높은 성능
CAP 이론
| 특징 | RDBMS | NoSQL |
|---|---|---|
| 스키마 | 고정 스키마 | 유연한 스키마 |
| 확장성 | 수직적 확장 | 수평적 확장 |
| 데이터 구조 | 테이블 | Key-Value, JSON, 등 |
| 트랜잭션 지원 | ACID 완전 지원 | 제한적 지원 |
| 사용 사례 | 복잡한 관계형 데이터 처리 | 비정형 데이터, 빅데이터 |
MongoDB
Redis
Cassandra
db.users.insertOne({
name: "Alice",
age: 25,
hobbies: ["reading", "traveling"]
});
db.users.find({ age: { $gt: 20 } });
db.users.updateOne({ name: "Alice" }, { $set: { age: 26 } });
db.users.deleteOne({ name: "Alice" });
NoSQL은 RDBMS와는 다른 방식으로 데이터를 처리하며, 특정 환경에서는 매우 유용합니다. MongoDB와 Redis를 사용하며 데이터 구조 설계와 쿼리 작성의 자유로움을 알 수 있었습니다. 그러나, 데이터 무결성과 관계형 데이터 처리가 중요한 경우 RDBMS를 사용하는 것이 적합하다는 점도 배웠습니다. NoSQL과 RDBMS를 상황에 맞게 혼합하여 사용하는 것이 중요하다는 것을 느꼈습니다.