Relational Database: 관계형 데이터베이스로 자료들의 관계를 주요하게 다룬다.
SQL 질의어를 사용하기 위해 데이터를 구조화해야 한다.
Non SQL 또는 Not Only SQL: 구조화된 질의어를 사용하지 않는 데이터베이스로 자료간의 관계에 초점을 두지 않고 데이터를 구조화하지 않는다. 따라서 유연하게 저장하는 방식이다.
SQL을 사용하기 위해서는 데이터를 구조화하는 것이 필수(DDL)
-> 스키마에 정의된 데이터가 아니면 저장할 수 없는 제약이 따른다.
NoSQL을 사용하면 사전작업 없이 데이터베이스를 사용할 수 있다.
-> 데이터베이스 작업에 크게 관여하지 않고 프로젝트를 빠르게 진행할 수 있다.
NoSQL은 다양한 종류가 있지만, 대표적으로 자료를 Document(문서)로 저장하는 Document DB가 일반적이다. 이외에 key-value, Graph, larget collection 등의 NoSQL DB가 존재한다.
MongoDB
대표적인 NoSQL, DocumentDB
Mongo는 Humongous 에서 따온 말로, 엄청나게 큰 DB라는 의미로 즉, 대용량 데이터를 처리하기에 최적화되어있다.

Document이 모여서 Collection이 되고, Collection들이 모여서 Database를 이룬다.
SQL과 비교하면,
Database는 SQL의 Database와 유사하다.Collection은 SQL의 Table과 유사하지만, SQL과 다르게 collection이 document의 구조를 정의하지는 않는다.Document은 SQL의 Row 유사하지만 구조제약 없이 유연하게 저장이 가능하다. 또한 JSON과 유사한, BSON을 사용하여 다양한 자료형을 지원한다.각 document의 유일한 키 값으로 SQL의 primary key와 유사하다.
하지만 SQL처럼 하나씩 증가하는 값이 아닌, document를 생성할 때 자동으로 생성되는 값이다.
MongoDB의 query는 BSON 형식으로, 기본 문법 그대로 mongoose에서도 사용 가능하다.