SQL은 Structured Query Language의 약자로 특정 유형의 데이터베이스와 상호작용할 수 있게끔 하는 언어다. 이 SQL로 상호작용(저장, 수정, 삭제, 검색)할 수 있는 데이터베이스가 바로 관계형 데이터베이스인데 관계형 데이터베이스 자체를 SQL로도 부른다. 내가 저번 학기에 배웠던 mariaDB가 이에 속한다. 관계형 데이터베이스의 특징은 2가지다.
그렇다보니 schema를 따르지 않는 레코드는 아예 저장할 수 없다.
덕분에 데이터 중복을 피할 수 있다.
NoSQL은 비관계형 데이터베이스를 말하는데 mongoDB가 이에 속한다. SQL과 정반대인 특징을 가지고 있다.
그래서 이전에 저장했던 것들과 다른 구조를 가진 다큐먼트(≓레코드)라도 컬렉션(≓테이블)에 추가할 수 있다.
그래서 관련되어 있는 모든 정보들을 동일한 컬렉션에 저장할 수 있다. SQL은 분산되어 저장되다 보니 테이블들을 합치기 위해 JOIN이 필요하지만 NoSQL은 애초에 데이터가 나눠서 저장되지 않기 때문에 필요가 없다. 대신 필요한 데이터 일부분을 뽑아내야 할 때 컬렉션에서 일부를 복사해서 따로 데이터를 만드는데 이때 데이터 중복으로 인해 데이터가 불안정해지는 문제가 발생할 수 있다. 그렇다보니 데이터가 자주 업데이트 된다면 오류가 발생할 수 있어 NoSQL이 아니라 SQL을 쓰는 쪽이 좋다.