SQL과 NoSQL의 정의
1. SQL(관계형 데이터베이스)의 정의
- SQL은 Structured Query Language의 약자로, 구조화 쿼리 언어이다.
- 즉, SQL은 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다.
- SQL을 사용하여 RDBMS에서 데이터를 저장, 수정, 삭제 및 검색할 수 있다.
- 이러한 RDB의 데이터는 엄격한 데이터 스키마를 따라 DB 테이블에 저장되며, 관계를 통해 연결된 여러 개의 테이블에 분산되는 특징이 있다.
- RDB에서는 스키마 구조를 준수하지 않는 레코드는 추가할 수 없다.
- RDB는 테이블 간의 관계를 나타내기 위해 외래 키를 사용한다.
- 또한, 데이터들을 여러 개의 테이블에 나누어서 저장하므로써 데이터들의 중복을 피할 수 있다.

2. NoSQL(비관계형 데이터베이스)의 정의
- .문서, 그래프 데이터베이스, 키-값 저장소와 같은 비관계형 데이터 구조를 사용하여 데이터를 저장하고 검색하는 데이터베이스의 한 유형
- 관계형 데이터베이스보다 유연하게 설계되어 사용량이나 부하 변화에 따라 쉽게 확장 또는 축소할 수 있다. 따라서 애플리케이션에 사용하기에 이상적
- 데이터를 빠르고 쉽게 저장하고 액세스할 수 있다.
3. NoSQL의 종류
- 키-값 데이터 베이스
- 키와 값으로 구성된 배열 구조의 DB로 NoSQL DB 중 가장 단순한 구조다.
- 복잡한 조회 연산은 지원하지 않고, 질의 속도가 빠르다.
- 대표적인 모델로 Redis, Amazon Dynamo DB 가 있다.
- 도큐먼트 데이터베이스
- 키와 도큐먼트의 형태로 구성된 DB로 도큐먼트는 계층적인 구조를 가진다.
- 질의 결과가 JSON, XML 형태로 출력된다.
- 대표적인 모델로 MongoDB, CouthDB가 있다.
- 그래프 데이터베이스
- 그래프 구조를 사용하여 개체와 관계를 표현한 관계형 모델 DB이다.
- 대표적인 모델로 Neo4J가 있다.

SQL과 NoSQL의 차이
4. SQL vs NoSQL

정규화
중복을 최소화하게 데이터를 구조화하는 프로세스
데이터베이스 정규화의 목표는 이상이 있는 관계를 재구성하여 작고 잘 조직된 관계를 생성하는 것에 있다.
비정규화
하나 이상의 테이블에 데이터를 중복해 배치하는 최적화 기법이다.
시스템의 성능 향상, 개발 및 운영의 편의성 등을 위해 정규화된 데이터 모델을 통합, 중복, 분리하는 과정으로,의도적으로 정규화 원칙을 위배하는 행위
참고하면 좋을 내용
[데이터베이스] 정규화 vs. 비정규화(반정규화)
💡 정규화 vs. 비정규화(반정규화) 데이터베이스 정규화 데이터베이스 비정규화 데이터베이스 비정규화(Denormalization, 반정규화)란 무엇인가? 장점, 단점 비정규화 대상 주의점 정규화(Normalized)란
owlyr.tistory.com
5. SQL과 NoSQL 시 고려사항
- 구축하려는 애플리케이션의 유형과 그에 수반되는 데이터 요구 사항, 확장성과 성능을 고려하여 선택
- SQL 데이터베이스는 데이터가 일관되고 테이블 간의 관계가 잘 정의된 구조화된 데이터에 적합
- 일반적으로 복잡한 쿼리 및 트랜잭션 관리가 필요한 애플리케이션에 사용
- NoSQL 데이터베이스는 데이터가 미리 정의된 스키마를 따르지 않고 데이터 요소 간의 관계가 잘 정의되어 있지 않은 반정형 또는 비정형 데이터에 적합
- 웹 애플리케이션 및 모바일 앱과 같이 높은 성능과 확장성이 필요한 애플리케이션에 사용
✔ 참고
SQL과 NoSQL 비교: 5가지 주요 차이점
가장 큰 결정 중 하나는 SQL 또는 NoSQL 데이터 구조를 선택하는 것입니다. 사용자가 염두에 두어야 할 5가지 주요 차이점이 있습니다.
www.integrate.io
tech-interview-study/CS Deep Dive/Database/SQL vs NoSQL.md at main · da-in/tech-interview-study
✏️ 기술 면접 스터디 Cheat Sheet. Contribute to da-in/tech-interview-study development by creating an account on GitHub.
github.com
'개발 > DB' 카테고리의 다른 글
| SQL Injection (SQL 삽입공격) (2) | 2024.04.16 |
|---|---|
| JOIN (2) | 2024.04.08 |
| DB 기본 개념 및 키(Key)정리 (0) | 2024.04.08 |