SQL은 RDBMS에서 데이터를 저장,수정,삭제 및 검색을 할 수 있고, 관계형 데이터베이스이다.
SQL의 정 반대로 비관계형 데이터베이스이다.
대표적인 SQL에는 MYSQL이 있고, NOSQL에는 MongoDB가 있다.
SQL은 고나계를 맺고 있는 데이터가 자주 변경되거나, 명확한 스키마가 사용자와 데이터에 중요한 경우 사용하고, NOSQL은 정확한 데이터 구조를 알 수 없거나, 변경/확장 될 수 있는 경우나 데이터베이스를 수평으로 확장해야하는 경우에 사용된다.
명확하게 정의된 스키마, 데이터 무결성 보장
관계는 각 데이터를 중복없이 한 번만 저장
덜 유연하다. 데이터 스키마를 사전에 계획하고 알려야 한다.
관계를 맺고 있어서 조인문이 많은 복잡한 쿼리가 만들어질 수 있다.
대체로 수직적 확장만 가능하다.
스키마가 없어서 유연하다. 언제든 저장된 데이터를 조정하고 새로운 필드 추가가 가능하다.
데이터는 어플리케이션이 필요로 하는 형식으로 저장된다. 데이터 읽어오는 속도가 빨라짐
수직 및 수평 확장이 가능해서 어플리케이션이 발생시키는 모든 읽기/쓰기 요청 처리가 가능하다.
유연성으로 인해 데이터 구조 결정을 미루게 될 수 있다.
데이터 중복을 계속 업데이트 해야한다.
데이터가 여러 컬렉션에 중복되어 있기 때문에 수정 시 모든 컬렉션에서 수행해야 한다.