NoSQL은 기존 SQL 서버의 복잡성과 용량을 해결하기 위해 탄생했기 때문에 데이터 용량이 더 큰 경향이 있다. SQL은 고정된 스키마를 가지고 있고 NoSQL은 유연한 스키마를 가지고 있으며, SQL 데이터베이스에는 특정 유형의 데이터만 넣을 수 있다.
SQL 문법
DDL(데이터 정의 언어) - 각 릴레이션을 정의하기 위해 사용되는 언어
DML(데이터 조작 언어) - 데이터를 관리(추가/삭제)하기 위해 사용되는 언어
DCL(데이터 제어 언어) - 접근 권한을 다루기 위해 사용되는 언어\
명확하게 정의된 스키마, 데이터 무결성 보장된다
관계는 각 데이터를 중복없이 한번만 저장한다.
NoSQL이 나올만큼, 많은 단점이 존재 합니다만, 아래 단점이 대표적이다.
SQL은 스키마가 사전에 계획되어 있기때문에, 그대로만 데이터가 들어가야 한다. 즉, 유연하지 못한다(NoSQL과 반대, NoSQL은 스키마가 없음)
데이터가 여러 테이블로 분산되어 있기떄문에 Join을 이용하여야 한다.
수평적 확장이 어렵다. 이는 NoSQL이냐 SQL이냐의 문제는 아니고 BASE vs ACID의 문제이다. 하지만 클러스터를 이용하여 읽기용 추가노드 등을 도입할 순 있다
NoSQL은 테이블 형식으로 구성되지 않고 테이블 형식이 없는 비 관계형 형식의 데이터를 관리하는 방법을 제공하는 데이터베이스이다.
대부분의 NoSQL DB는 데이터베이스 일관성이 약하다. 이 일관성을 가용성, 분할용인(partition tolerance), 속도와 맞바꾸었다. 이미 사용하고 있는 SQL 쿼리 언어와 시스템을 바꿔야하는 엄청난 수고들도 진입장벽을 높이고 있다.
대부분의 NoSQL 스토어는 진정한 ACID 트랜잭션이 부족하지만, 일부 데이터베이스는 이러한 트랜잭션을 설계의 중심으로 만들어져 있다.
스키마가 없어서 유연하다. 언제든지 저장된 데이터를 조정하고 새로운 필드 추가 가능하다
데이터는 애플리케이션이 필요로 하는 형식으로 저장된다. 데이터 읽어오는 속도 빨라진다
수직 및 수평 확장이 가능해서 애플리케이션이 발생시키는 모든 읽기/쓰기 요청 처리 가능하다
유연성으로 인해 데이터 구조 결정을 미루게 될 수 있다
데이터 중복을 계속 업데이트 해야 한다
데이터가 여러 컬렉션에 중복되어 있기 때문에 수정 시 모든 컬렉션에서 수행해야 한다 (SQL에서는 중복 데이터가 없으므로 한번만 수행이 가능)
https://gyoogle.dev/blog/computer-science/data-base/SQL%20&%20NOSQL.html