▷ SQL
SQL은 구조화 된 쿼리 언어(Structured Query Language)의 약자.
Database 자체를 나타내는 것이 아닌 특정 유형의 database와 상호 작용하는 데 사용하는 쿼리 언어
SQL을 사용하면 관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 저장, 수정, 삭제 및 검색 할 수 있다.
관계형 데이터베이스의 주요 특징
1) 데이터는 정해진 데이터 스키마를 따라 데이터베이스 테이블에 저장됨
2) 데이터는 관계를 통해서 연결된 여러개의 테이블에 분산됨
[정해진 스키마를 따르지 않는다면 데이터를 추가 할 수 없음.]
<SQL 의 장점>
- 명확하게 정의 된 스키마, 데이터 무결성 보장
- 관계는 각 데이터를 중복없이 한번만 저장
▷ NOSQL
NOSQL은 기본적으로 SQL(관계형 데이터베이스)와 반대되는 접근 방식을 따름
NOSQL의 특징
1) 스키마 없음
2) 관계 없음
[다른 구조의 데이터를 같은 컬렉션(=SQL의 테이블)에 추가 할 수 있음.]
NOSQL에서는 레코드를 문서라고 부르며, 문서는 JSON 데이터와 비슷한 형태를 가지고 있다.
<NOSQL의 장점>
- 스키마가 없기 때문에 유연함(언제든지 저장된 데이터를 조정,새로운 필드를 추가 가능)
- 데이터를 애플리케이션이 필요로 하는 형식으로 저장(데이터를 읽어오는 속도가 빨라짐)
- 수직 및 수평 확장이 가능(데이터베이스가 애플리케이션에서 발생시키는 모든 읽기/쓰기 요청을 처리 가능)
▷ SQL 과 NOSQL 차이
1) 데이터베이스 서버의 확장성
수직적 확장 : 단순히 데이터베이스 서버의 성능을 향상시키는 것 (SQL은 일반적으로 수직적 확장만 지원)
수평적 확장 : 더 많은 서버가 추가되고 데이터베이스가 전체적으로 분산되는 것(NOSQL에서만 가능)
2) 쉐딩(sharding)
SQL : sharding 의 개념을 알고 있지만 특정 제한이 있으며 구현하기가 대체로 어려움
NOSQL : 기본적으로 지원하므로 여러 서버에서 데이터베이스를 쉽게 분리 할 수 있음