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에서도 사용 가능하다.