NoSQL(비관계형 데이터베이스)

문준일·2025년 1월 18일
0
post-thumbnail

비관계형 데이터베이스(NoSQL)은 관계형 데이터베이스(RDBMS)와 달리 고정된 테이블 구조나 스키마에 의존하지 않고, 유연한 데이터 저장 방식과 확장성을 제공하는 데이터베이스이다.

🚀 왜 생겼을까?

전통적인 SQL 기반의 관계형 데이터베이스와 비교하여 더 큰 데이터 처리량, 유연성, 확장성을 요구하는 현대 애플리케이션의 요구를 충족하기 위해 설계되었다.


🚀 RDBMS와 NoSQL의 차이점?

RDBMS

RDBMS는 데이터를 행과 열이 있는 테이블 형식으로 저장한다. RDBMS는 테이블을 연결하여 다양한 데이터 포인트 간의 상호 연결이 가능하다. 수십년간 가장 대중적으로 사용되고 있는 RDBMS의 가장 큰 특징은 SQL 쿼리문으로 데이터를 관리한다는 것이다. MySQL, Oracle, PostgreSQL, MariaDB 등이 관계형 데이터베이스에 속한다.

NoSQL

NoSQL은 큰 데이터 볼륨(빅데이터), 짧은 지연 시간과 유연한 데이터 모델이 필요한 데이터베이스에 최적화되어있다.


🚀 특징

1. 유연한 데이터 모델

- 고정된 스키마를 가지지 않으므로 데이터의 구조를 미리 정의할 필요가 없다
- 다양한 데이터 형식을 지원하며, 데이터 구조 변경이 간편하다

2. 수평적 확장성

- 데이터베이스 노드를 추가하여 저장 용량과 처리 속도를 확장할 수 있다
- 대량의 데이터를 처리하기 위한 분산 시스템 구조를 지원한다

3. 고속 처리

- 간단한 데이터 액세스 및 저장 구조를 사용하여 읽기 및 쓰기 성능이 뛰어나다
- 특히 키-값 저장소와 같이 단순한 쿼리에서는 관계형 데이터베이스보다 빠른 성능을 제공한다

4. 다양한 데이터 저장 방식

- 문서(Document), 키-값(Key-Value), 그래프(Graph), 열(Column) 등 데이터 저장 모델이 다양하여 다양한 애플리케이션 요구사항을 충족한다

5. 유지보수 및 유연성

- 데이터 변경 시 테이블 구조를 변경하지 않아도 되는 유연성을 제공한다
- JSON, BSON, XML 같은 구조화된 데이터 형태를 저장이 가능하다


🚀 장점은?

1. 빠른 속도: 대량의 데이터를 빠르게 읽고 쓸 수 있음
2. 확장 용이성: 클라우드 환경에서 수평적으로 확장이 쉬움
3. 유연한 스키마: 데이터를 저장하기 전 복잡한 설계 과정이 필요 없음
4. 다양한 데이터 유형 지원: 비정형 데이터, 반정형 데이터 저장에 적합



🚀 단점은?

1. 복잡한 쿼리의 어려움: SQL처럼 복잡한 조인(join) 기능을 지원하지 않거나 제한적임
2. 일관성 문제: 분산 환경에서 데이터 일관성을 보장하기 어렵고, 최종적 일관성(Eventual Consistency)만 제공하는 경우가 많음
3. 특정 용도에 맞춘 설계: 일반적인 데이터베이스와 달리 특정 유형의 데이터나 요구사항에 맞춘 설계가 필요



🚀 사용사례

1. 빅데이터 및 분석: 대량의 로그, 사용자 활동 데이터를 저장하고 분석
2. 실시간 애플리케이션: 채팅, 소셜 네트워크, 실시간 추적 시스템
3. IoT 데이터: 센서 및 장치에서 수집된 데이터를 저장하고 처리
4. 컨텐츠 관리: 블로그, 문서 관리 시스템 등



🚀 비관계형 데이터베이스는 데이터를 어떻게 저장할까?

스키마 없는 데이터를 관리하고 저장하는 방식이 다양하기 때문에 NoSQL 시스템에는 여러 종류가 있다.

1. 문서 지향(Document-oriented) 데이터베이스

- 데이터를 JSON, XML과 같은 문서 형식으로 저장
- 데이터 데이터 구조가 유연하며, 애플리케이션 객체과 DB간의 매핑이 쉬움
- 예시 : MongoDB

2. 키-값(Key-Value) 데이터베이스

- 데이터를 키-캆 형태로 저장
- 빠른 읽기 및 쓰기 속도가 필요할 때 적합
- 예시: Redis

3. 열 기반(Column-family) 데이터베이스

- 데이터를 Column 단위로 저장하며, 빅데이터 처리에 적합
- 대량의 데이터를 처리하는 데 유리
- 예시: Cassandra

4. 공간(Geospatial) 데이터베이스

- 위치 정보를 효율적으로 저장하고 관리
- 지도, GPS 데이터 등 곤간 관련 데이터에 적합
- 예시:MongoDB (Geospatial 지원), PostGIS (PostgreSQL 지원), Cassandra(Geospatial 지원)
profile
하나씩 실천하는 개발자

0개의 댓글