반응형
데이터베이스의 기본 원칙과 RDBMS와 NoSQL 차이를 이해하여 프로젝트 유형에 따라 어느 데이터베이스를 고르는 것이 효율적인지 파악하고자 합니다.
데이터베이스의 원칙
- 무결성 : 데이터의 정보가 변경되거나 오염되지 않도록 하는 원칙
- Accuracy
- 데이터에 오류가 없어야 합니다.
- 사용자가 저장하고자 하는 내용 모두가 잘 저장되어야 합니다.
- Consistency
- 데이터베이스는 일관성이어야 합니다.
- Accuracy
- 안정성
- 오류 발생 시 회복력(복구력)이 좋아야 합니다.
- 고장이 잘 나지 않아야 합니다.
- 확장성
- Scale Up - 서버 컴퓨터 기능 향상 하기
- Scale Out - 여러 서버 분산하여 처리하기
Transaction
- 트랜잭션을 통해 작업의 완전성을 보장합니다.
- 사용자의 작업셋을 모두 완벽하게 처리하거나
- 처리하지 못한 경우, 원래 상태로 되돌릴 수 있습니다.
ACID - Atomicity (원자성)
- 더 이상 쪼개질 수 없는 가장 단위로 수행합니다. (= 트랜잭션의 단위)
- 모두 성공하거나 모두 실패해야 합니다. (= 뭐는 되고 뭐는 안 되는 경우는 없음)
ACID - Consistency (일관성)
- 트랜잭션 전후로 데이터는 일관성을 유지해야 합니다.
ACID - Isolation (고립성)
- 동시에 발생하는 트랜잭션은 서로 독립적이어야 합니다.
- 독립되지 않으면 발생할 수 없음
ACID - Durability (지속성)
- Commit 된 트랜잭션은 손실되지 않습니다.
RDBMS vs NoSQL 차이점 파악하기
- 데이터 모델:
- RDBMS (관계형 데이터베이스 관리 시스템): RDBMS는 정형 데이터를 저장하는 데에 적합한 데이터 모델을 사용합니다. 데이터는 표 형태의 테이블로 구성되며, 테이블 간의 관계를 정의할 수 있습니다.
- NoSQL (비관계형 데이터베이스): NoSQL은 다양한 데이터 모델을 지원합니다. 주요 유형으로는 문서, 키-값, 열 지향, 그래프 등이 있으며, 데이터 모델은 스키마 없거나 유연한 스키마를 가질 수 있습니다. NoSQL 데이터베이스는 비정형 또는 반정형 데이터에 적합합니다.
- 스키마:
- RDBMS: RDBMS는 고정된 스키마를 가지고 있으며 데이터 구조가 변경되면 스키마를 업데이트해야 합니다.
- NoSQL: NoSQL은 동적 스키마 또는 스키마 없이 데이터를 저장합니다. 새로운 필드를 쉽게 추가하거나 기존 필드를 변경할 수 있으므로 유연성이 뛰어납니다.
- 확장성:
- RDBMS: RDBMS는 수직 확장 (Vertical Scaling) 방식으로 스케일링합니다. 즉, 성능을 향상하기 위해 단일 서버의 성능을 향상하는 방식입니다. 이로 인해 한계에 도달하면 비용이 높아집니다.
- NoSQL: NoSQL은 수평 확장 (Horizontal Scaling)을 지원합니다. 여러 서버에 데이터를 분산하여 처리하므로 대량의 데이터를 처리할 때 확장성이 뛰어나며, 클라우드 환경에서 쉽게 확장할 수 있습니다.
- 사용 사례:
- RDBMS: 트랜잭션 처리, 정형 데이터 저장, ACID (원자성, 일관성, 고립성, 지속성) 특성이 필요한 경우에 주로 사용됩니다.
- NoSQL: 대량의 데이터를 저장하고 조회하는 웹 애플리케이션, 소셜 미디어, 로그 파일, 센서 데이터 등 비정형 또는 반정형 데이터를 처리하는 경우에 적합합니다. 또한 빠른 개발과 유연성이 요구되는 경우에도 사용됩니다.
NoSQL이 왜 RDBMS보다 조회 성능이 빠른가?
- 데이터 모델:
- NoSQL 데이터베이스는 데이터 모델을 선택적으로 사용할 수 있으며, 이로 인해 조회에 특화된 구조를 사용할 수 있습니다. 예를 들어, 키-값 스토어는 단순한 키를 사용하여 데이터를 빠르게 조회할 수 있습니다.
- 스키마의 유연성:
- NoSQL 데이터베이스는 동적 스키마 또는 스키마 없이 데이터를 저장하므로, 데이터 구조를 미리 정의하거나 변경하기 위한 작업이 없습니다. 이로 인해 데이터 작업이 단순화되며 조회 성능이 향상됩니다.
- 수평 확장 (Horizontal Scaling):
- NoSQL 데이터베이스는 수평 확장을 지원하며, 데이터를 여러 노드로 분산하여 처리할 수 있습니다. 이로 인해 대량의 데이터를 효과적으로 처리할 수 있으며, 조회 작업을 분산하여 병렬 처리할 수 있습니다.
- 쿼리의 복잡성:
- RDBMS는 복잡한 JOIN 및 트랜잭션 처리를 위한 기능을 제공하지만, 이러한 작업은 높은 시스템 리소스를 요구합니다. 반면 NoSQL 데이터베이스는 단순한 조회 및 검색을 위한 간단한 쿼리를 효과적으로 처리할 수 있습니다.
언제 RDMS를 사용하고 NoSQL을 사용하면 되는지
- E-commerce
- 초반에는 mysql도 용이하지만 규모가 커지면 조회 성능을 높이기 위해 NoSQL을 사용하는 게 좋다.
- 분산 시스템
- RDBMS는 데이터를 분산하기 어렵다. => NoSQL 사용하기
- 그래프 기반 데이터
- 그래프와 같은 비정형 데이터는 NoSQL이 편리하다.
- 대용량 실시간 분석
- 대용량 실시간 데이터 분석인 경우 조인을 하지 않는 NoSQL이 더 성능이 좋다.
반응형
'CS > Database' 카테고리의 다른 글
[DB] 데이터베이스 인덱스 Index 이해하기 - 희소 인덱스, 밀집 인덱스, 클러스터링 인덱스 (0) | 2024.02.28 |
---|---|
[Mysql] mysql select 쿼리 실행 순 익히기, 스키마 create&drop (0) | 2023.10.21 |
[DB] 데이터베이스 정규화란, 함수적 종속성, 이행적 종속성 - 제1정규화, 제2정규화, 제3정규화, BCNF (0) | 2022.10.09 |
[DB] 데이터베이스 논리적 설계 - ER - 관계모델의 릴레이션으로 사상 (0) | 2022.09.28 |
데이터베이스 ER모델 기초 2 - 관계와 관계 타입, 전체 참여, 부분참여, 다중 관계, 순환적 관계 이해 (0) | 2022.09.27 |