SQL과 NoSQL은 각각 관계형 데이터베이스와 비관계형 데이터베이스를 가르킨다. 이 두가지 데이터베이스 시스템은 데이터를 관리하고 저장하는 방식이다르고 특징에 따라 적합한 상황에서 사용한다.
ㅇ SQL(Structure Query Language)
관계형 데이터베이스(RDBMS)를 기반으로 하며, 데이터를 테이블(행과 열의 구조)로 저장한다. 정형화된 스키마를 가지고 있고, SQL이라는 구조화된 쿼리 언어를 사용하여 데이터를 조작한다.
* 스키마란 데이터베이스의 구조와 제약을 정의하는 개념이다. 스키마는 데이터가 어떻게 저장되고 조작되는지를 설명하는 틀을 제공하며, 테이블, 열, 데이터타입 등의 구조적인 요소를 정의한다.
특징
- 관계형 모델
데이터를 테이블에 저장하며, 테이블 간의 관계를 정의할 수 있다. 테이블은 행(row)과 열(column)로 구성된다. - 고정된 스키마
데이터를 삽입하기 전에 미리 정의된 스키마를 따라야 한다. 데이터는 그 스키마를 따른다. - ACID 특성
SQL 데이터베이스는 트랜잭션을 처리할 때 ACID 특성을 준수하여 데이터 무결성을 보장한다. - 수직 확장성
SQL 데이터베이스는 주로 수직 확장(서버의 성능을 업그레이드)으로 성능을 향상 시킨다.
장점
- 데이터 무결성
고정된 스키마와 테이블 간의 관계를 통해 데이터 무결성을 보장한다. - 복잡한 쿼리 처리
SQL을 사용해 복잡한 쿼리를 쉽게 작성하고 실행할 수 있다. - 트랜잭션 관리
ACID 특성을 통해 안정적이고 신뢰할 수 있는 트랜잭션 처리가 가능하다.
단점
- 유연성 부족
고정된 스키마 때문에 데이터 구조가 자주 변경되는 애플리케이션에서는 유연성이 떨어진다. - 대규모 데이터 처리의 한계
매우 큰 규모의 데이터나 트래픽에 대응하기 어렵고, 수직 확장에 의존하는 경우가 많다.
대표적인 SQL DB
- MySQL
- PostgreSQL
- Oracle
- MSSQL
ㅇ NoSQL(Not Only SQL)
비관계형 데이터베이스로, 다양한 데이터 구조를 저장하고 처리할 수 있는 데이터베이스다. 스키마가 없거나 유연하고, 데이터를 더 자유롭게 저장할 수 있다.
특징
- 유연한 데이터 모델
고정된 스키마가 없으며, 다양한 형태로 데이터를 저장할 수 있다. 문서, 키-값, 열 기반, 그래프 등의 여러 유형이 존재한다. - 수평 확장성
여러 서버에 데이터를 분산시켜 수평 확장(Scale Out)하는 것이 특징이다. - CAP 이론
CAP( Consistency, Availability, Partition tolerance)에서 높은 가용성과 파티션 허용성에 중점을 두고 동작하는 경우가 많다. - 다양한 데이터 저장 방식
문서형, 키-값, 열 기반, 그래프등의 다양한 데이터 저장 방식을 지원한다.
장점
- 높은 확장성
대규모 데이터와 트래픽을 수평 확장을 통해 효율적으로 처리할 수 있다. - 유연한 데이터 구조
데이터 구조가 유연하여 비정형 데이터나 자주 변하는 데이터 구조를 쉽게 처리할 수 있다. - 빠른 처리 속도
일반적으로 대량의 읽기/쓰기에 적합하며, 높은 처리 속도를 보장한다.
단점
- 데이터 무결성 부족
고정된 스키마와 관계가 없기 때문에 데이터의 무결성을 보장하기 어렵다. - 복잡한 쿼리 지원 부족
복잡한 쿼리 처리가 어려울 수 있다. - ACID 특성 부족
일부 NoSQL DB에서는 트랜잭션에서 ACID 특성을 완벽하게 지원하지 않을 수 있다.
대표적인 NoSQL DB
- MongoDB
- Cassandra
- Redis
- DynamoDB
정리
특징 | SQL | NoSQL |
데이터 모델 | 테이블 기반(행, 열) | 문서, 키-값, 열 기반 등 다양한 모델 |
스키마 | 고정된 스키마 | 스키마가 없거나 유연함 |
확장성 | 수직 확장(Scale Up) | 수평 확장(Scale Out) |
ACID 특성 | 지원(데이터 무결성 보장) | 일부 지원, CAP이론에 따라 제한되는 경우 |
복잡한 쿼리 처리 | SQL을 사용한 복잡한 쿼리 가능 | 복잡한 쿼리 지원 부족 |
데이터 무결성 | 데이터 무결성이 중요함 | 데이터 유연성, 가용성이 중요함 |
사용 사례 | 관계형 데이터가 중요한 시스템 | 대규모 데이터 처리, 비정형 데이터 처리 |
'DB' 카테고리의 다른 글
DB Key (0) | 2024.10.04 |
---|---|
DB SQL Injection (0) | 2024.10.04 |
DB Index (0) | 2024.10.04 |
DB Redis (0) | 2024.10.04 |
DB Transaction (0) | 2024.10.04 |