SQL
NoSQL은 기존 SQL서버의 복잡성과 용량을 해결하기 위해 탄생하였기 때문에 데이터 용량이 더 큼.
SQL은 고정된 스키마를 가지고 있고 NoSQL은 유연한 스키마를 가지고 있다.
데이터베이스에는 특정 유형의 데이터만 넣을 수 있음.
SQL 문법을 살펴보자
명확하게 정의된 스키마, 데이터 무결성이 보장됨.
관계는 각 데이터를 중복없이 한번만 저장한다.
NoSQL이 나올만큼, 많은 단점이 존재 하지만 대표적인 내용을 살펴보도록 하자.
SQL은 스키마가 사전에 계획되어 있기 때문에, 그대로만 데이터가 들어가야 됨.
즉, 유연하지 못하다는 것이다.
데이터가 여러 테이블로 분산되어 있기 때문에 Join을 이용하여야 된다.
수평적 확정이 어렵다. 이는 NoSQL이나 SQL이냐의 문제느 아니고 BASE vs ACID의 문제다. 하지만 클러스터를 이용하여 읽기용 추가노드 등을 도입할 수는 있다.
NoSQL
NoSQL은 테이블 형식으로 구성되어 있지 않고 테이블 형식이 없는 비 관계형 형식의 데이터를 관리하는 방법을 제공해주는 데이터베이스다.
대부분의 NoSQL 데이터베이스는 일관성이 약하다. 이 일관성을 가용성, 분할용인 속도와 맞바꾸었다. 이미 사용되고 있는 SQL 쿼리 언어와 시스템을 바꿔야하는 엄청난 수고들도 진입장벽을 높이고 있다.
대부분의 NoSQL스토어는 진정한 ACID 트랜잭션이 부족하지만 일부 데이터베이스는 이러한 트랜잭션을 설계의 중심으로 만들어져 있다.
스키마가 없어서 유연함.
언제든 저장된 데이터를 조정하고 새로운 필드 추가가 가능함.
데이터는 애플리케이션이 필요로 하는 형식으로 저장됨. 데이터를 읽어오는 속도가 빨라진다.
수직 및 수평 확장이 가능해서 애플리케이션이 발생되는 모든 읽기와 쓰기가 가능하다.
유연성으로 인해 데이터 구조 결정을 미루게 될 수 있음.
데이터 중복을 계속해서 업데이트 해야 한다.
데이터가 여러 컬렉션에 중복되어 있기 때문에 수정 시 모든 컬렉션에서 수행해야 함.