8.1 NoSQL vs. SQL
MySQL은 SQL을 사용하는 대표적인 데이터베이스입니다. 반면에 SQL을 사용하지 않는, NoSQL(Not only SQL)이라고 부르는 데이터베이스도 있습니다. 몽고디비는 NoSQL의 대표 주자입니다.
SQL과 NoSQL은 여러 측면에서 다른데, 그중에서 대표적인 차이점 몇 가지만 알아보겠습니다. 여기서 설명하는 NoSQL의 특징은 몽고디비의 특징이므로 다른 NoSQL 데이터베이스와는 차이가 있을 수 있습니다.
▼ 표 8-1 SQL과 NoSQL의 비교
SQL(MySQL) |
NoSQL(몽고디비) |
규칙에 맞는 데이터 입력 테이블 간 JOIN 지원 안정성, 일관성 용어(테이블, 로우, 컬럼) |
자유로운 데이터 입력 컬렉션 간 JOIN 미지원 확장성, 가용성 용어(컬렉션, 다큐먼트, 필드) |
먼저 NoSQL에는 고정된 테이블이 없습니다. 테이블에 상응하는 컬렉션이라는 개념이 있긴 하지만, 컬럼을 따로 정의하지는 않습니다. 예를 들어 MySQL은 users 테이블을 만들 때 name, age, married 등의 컬럼과 자료형, 옵션 등을 정의하지만, 몽고디비는 그냥 users 컬렉션을 만들고 끝입니다. users 컬렉션에는 어떠한 데이터든 들어갈 수 있습니다. 어떤 다큐먼트(MySQL의 로우에 해당하는 개념)에는 name, age, married 데이터가, 다른 다큐먼트에는 name, comment, createdAt, updatedAt 등의 데이터가 들어갈 수 있습니다.