
Intro
회사에서 배선임님이 주도하는 오전 스터디에서 RDBMS와 NoSQL의 특징, 그리고 일반적으로 왜 RDBMS를 사용하는 이유에 대해 이야기가 나왔다. 이전에 정처기를 취득할 때 공부했던 기억으로는 RDBMS는 ACID 원칙에 따르며 테이블 형태로 데이터를 관리하여 일관성이 중요하게 여겨지는 경우에 사용되고, NoSQL은 유동적으로 스키마를 추가할 수 있고 비정형 데이터를 처리하는 등 확장성을 중요하게 여겨지는 경우라고 답변을 하였지만, 아직 원하는 키워드가 나오지 않았다고 하여 RDBMS와 NoSQL에 대해 더 찾아볼려고 한다.
1. RDBMS
1 - 1. 특징
- 테이블 기반 구조 : 데이터를 행(Row)과 열(Column)로 구성된 테이블 형태로 저장
- 스키마 : 데이터 구조를 사전에 정의해야 함. 스키마는 엄격하게 적용됨
- SQL 지원 : Structured Query Language(SQL)을 사용해 데이터를 관리함
- ACID 특성 보장 : 원자성, 일관성, 격리성, 지속성\
- 관계 : 테이블 간 외래 키(Foreign Key)를 통해 관계를 설정하고 관리
- 정규화 : 데이터 중복을 줄이고 효율성을 높이기 위한 데이터 구조화 방식
1 - 2. 장점
- 데이터 무결성 보장 : 관계와 제약 조건으로 신뢰할 수 있는 데이터 관리
- SQL 표준화 : 다양한 시스템에서 사용할 수 있는 표준 쿼리 언어
- 복잡한 쿼리 처리 : JOIN, GROUP BY 등을 통해 데이터 간 연산 및 분석 가능
- 트랜잭션 안정성 : 금융 및 은행 업무에서 필요한 데이터 안정성 제공
1 - 3. 단점
- 확장성 한계 : 수평적 확장이 어려워 데이터 크기 증가 시 성능 저하 가능 (Scale-Up)
- 스키마 유연성 부족 : 데이터 구조 변경이 복잡하고 시간이 소요됨
- 비정형 데이터 처리 제한 : 이미지, 동영상 등 비정형 데이터를 처리하기 어려움
- 초기 설정 및 유지보수 비용 : 스키마 설계와 관리가 복잡하여 초기 비용 증가
1 - 4. 주로 사용되는 곳
금융, 전자상거래, 정부 시스템, erp etc
2. NoSQL (Not only SQL)
2 - 1. 특징
- 스키마 유연성 : 사전 정의된 스키마 없이 자유롭게 데이터 저장
- 비정형 데이터 처리 : JSON, BSON 등 비정형 데이터를 효율적으로 처리
- 확장성 : 수평적 확장 가능, 분산형 구조로 높은 가용성 제공
- 다양한 데이터 모델 : Key-Value, Document, Column, Graph 등 다양한 모델 지원
- BASE 원칙 : 기본적으로 사용 가능, 유연한 상태, 결국 일관성
2 - 2. 장점
- 확장성 : 데이터가 증가해도 서버를 추가하기 쉽고 비용 효율적 (Scale-Out)
- 고속 처리 : 단순한 데이터 모델 덕분에 빠른 읽기 및 쓰기 성능 제공
- 유연성 : 데이터 구조를 사전에 정의할 필요 없이 자유롭게 저장 가능 (동적 스키마)
- 분산 처리 지원 : 다중 노드에 데이터를 분산 저장하여 가용성과 장애 복구 능력을 높임
- 다양한 데이터 유형 지원 : 비정형 데이터(예: JSON, 로그 데이터) 및 반정형 데이터 처리에 적합
2 - 3. 단점
- 데이터 정합성 부족 : 관계형 데이터베이스처럼 트랜잭션 일관성을 강력히 보장하지 못할 수 있음
- 표준화 부족 : SQL처럼 표준화된 쿼리 언어가 없어 데이터베이스마다 사용 방법이 다름
- 복잡한 쿼리 지원 부족 : RDBMS에 비해 복잡한 데이터 관계 및 쿼리 처리가 어려울 수 있음
- 학습 곡선 : 다양한 종류의 NoSQL DB가 존재해 사용법을 새로 익혀야 함
2 - 4. 주로 사용되는 곳
SNS, IoT, 빅데이터 분석, 게임, 실시간 애플리케이션
정리
트랜잭션의 무결성과 정형 데이터를 중요한 상황에서는 RDBMS를 선택하고,
대규모 처리와 확장성이 필요한 환경에서는 NoSQL을 선택하면 좋을거라 생각합니다.
|
특성
|
RDBMS
|
NoSQL
|
|
데이터 모델
|
테이블 기반 (행과 열)
|
다양한 모델 (키-밸류, 그래프 등)
|
|
언어
|
SQL 사용
|
비SQL 방식
|
|
확장성
|
수직 확장 (스케일 업)
|
수평 확장 (스케일 아웃)
|
|
데이터 구조
|
고정된 스키마 필요
|
유연한 스키마
|
|
데이터 일관성
|
강한 일관성 보장
|
최종 일관성 (Eventually Consistent)
|
|
사용 사례
|
은행, ERP 등 안정성 중시
|
SNS, 로그 분석 등 대규모 데이터 처리
|
CAP 이론
분산 시스템은 일관성(Consistency), 가용성(Availability), 파티션 허용(Partition tolerance)이라는 세 가지 특성 중 두 가지 특성만 제공할 수 있습니다.
CAP 이론의 3가지 특성
- 일관성 : 모든 노드가 동일한 데이터를 제공하여, 클라이언트가 데이터를 요청할 때 최신 데이터를 받는 것을 의미
- 가용성 : 시스템이 항상 응답하며, 읽기/쓰기 요청에 대해 성공적인 응답을 제공하는 것을 의미
- 파티션 내구성 : 네트워크 파티션(통신 장애)이 발생해도 시스템이 정상적으로 동작하는 특성
반응형
'CS' 카테고리의 다른 글
| [Network] WEB과 WAS (1) | 2024.11.24 |
|---|---|
| [Network] OSI Model 7 Layers (0) | 2024.11.19 |