NoSQL
NoSQL 데이터베이스의 종류
1. Document-Oriented 데이터베이스
- 문서 형태로 데이터를 저장
- 각 문서는 고유한 식별자를 가지며, 문서는 일반적으로 JSON이나 XML 형식으로 구성
- MongoDB
2. Key-Value 데이터베이스
- 각 데이터를 고유한 키와 값의 쌍으로 저장
- 데이터를 빠르게 쓰고 읽을 수 있으며, 데이터 분산 처리에도 용이
- Redis
3. Column-Family 데이터베이스
- BigTable 아키텍처를 기반으로 함
- 컬럼 그룹으로 데이터를 저장하며, 각 그룹은 다른 그룹과는 다른 스키마를 가질 수 있다
- Apache Cassandra
4. Graph 데이터베이스
- 데이터 사이의 관계를 그래프 형태로 저장
- 네트워크와 관련된 데이터 처리를 위해 설계
- Neo4j
NoSQL의 개념
- 비관계형 데이터베이스를 의미
- 대량의 분산된 데이터를 저장하고 조회하는 데 특화되어 있다.
- 스키마 없이 사용 가능하거나 느슨한 스키마를 제공
RDB vs NoSQL
RDBMS |
NoSQL |
데이터는 테이블에 저장 |
데이터는 다양한 형태로 저장 (그래프, 열 지향, 문서 지향, 키-값 저장소 등) |
테이블은 열과 행으로 구성 |
데이터 구조는 유연하고 사전에 스키마를 정의하지 않아도 됨 |
모든 열과 그와 관련된 데이터 유형은 사전에 파악되어야 함 |
데이터 작성 및 반복이 빠르고 쉽게 가능 |
여러 테이블 간의 관계 형성 |
관계가 없거나, 비정형적인 데이터 구조 |
수직적 확장 |
수평적 확장 |
트랜잭션 지원 |
트랜잭션 지원이 일부 NoSQL에는 없음 |
ACID 준수 |
NoSQL 중 일부는 ACID 준수하지 않음 |
- RDBMS와 NoSQL은 각각 장단점이 있기 때문에, 적합한 사용 사례가 각기 다르다.
- RDBMS는 일관성과 정확성이 중요한 데이터에 적합하며, NoSQL은 비정형적이거나 대규모 데이터를 처리하는 데 적합하다.
- 데이터 요구 사항과 비즈니스 목표에 따라 데이터베이스를 선택해야 한다.
Redis
- Key-value 저장소
- 다양한 데이터 자료 구조를 지원하는 NoSQL 데이터베이스
- 메모리 내에서 데이터를 저장 및 관리
- 세션 관리, 캐싱, 메시지 브로커 등 다양한 용도로 사용
특징
- 데이터 저장 방식: 메모리 기반 데이터 저장
- 데이터 구조: key-value 스토어 + 다양한 데이터 구조(문자열, 리스트, 해시, 셋, 정렬된 셋 등)
- 높은 성능: 모든 데이터를 메모리에 저장하므로 빠른 읽기/쓰기가 가능
- 지속성: 스냅샷 및 AOF(Append Only File) 로그를 사용하여 데이터 유실 방지
- 확장성: 클러스터링을 통한 수평적 확장 지원
- 대안적 용도: 캐싱, 메시지 브로커, 세션 관리, 분산 락 등
주요 용도
- 캐싱: 데이터베이스나 파일 시스템 등 느린 속도의 리소스에 대한 요청을 최소화하기 위해 데이터를 저장하고 관리하는 기능
- 메시지 브로커: pub/sub 구조를 통해 메시지를 전달하고 처리하는 기능
- 세션 관리: 로그인 정보나 사용자 정보 등의 세션 데이터를 관리하는 기능
- 분산 락: 여러 대의 서버에서 동시에 같은 자원에 접근하지 못하도록 제어하는 기능
- 실시간 분석: 실시간으로 발생하는 데이터를 저장하고 처리하여 다양한 분석에 활용하는 기능
Leave a comment