근본적인 차이는 SQL은 스키마를 사용하고 NoSQL은 그와 달리 스키마가 없다는 점에 있다.
데이터구조
SQL
-엄격한 스키마를 원칙으로 한다.
-스키마에 맞지 않는 형식의 데이터는 저장할 수가 없다.
엄격한 스키마를 가지고 있기 때문에 위의 테이블에서 한명의 고객만 이메일을 추가하거나 전화번호를 적지 않는건 불가능하다.
NoSQL
-스키마를 가지고있지 않다.
위 테이블처럼 NoSQL과 같은 경우 엄격한 스키마를 가지고있지 않기 때문에 꼭 형식에 맞게 작성하지 않아도 된다.
관계
SQL
SQL은 테이블 간의 관계 지정을 통해서 테이블을 접근할 수 있고 각 테이블의 메인키만 가져와서 새로운 테이블을 만든다. (위 예시에서는 Products 테이블과 Customers 테이블에서 메인 키들만 가져와서 Orders란 테이블을 새로 만들었다.) 그렇기 때문에 중복 없이 해당 데이터만 다룰 수 있다.
NoSQL
그와 반대로 NoSQL에서는 Orders 테이블에서 모든 정보를 다 볼 수 있도록 하나의 테이블에 정보를 전부 가져오는데, 이 때 중복 데이터가 발생할 수 있다.
예를 들어서 Customers에 이메일을 하나 추가했는데 Orders에는 추가하지 않았으면 문제가 발생하게 된다.
확장성
SQL
- 수직적 확장만을 지원.
- 수직적 확장 => 하드웨어를 업그레이드하거나 추가하여 서버의 성능을 향상시키는 것
NoSQL
-수평적 확장도 지원.
-수평적 확장 => 서버를 추가하면서 데이터베이스를 분산시킬 수 있는 것.
참고문헌
'cs 기초지식 > 데이터베이스' 카테고리의 다른 글
SQL Injection (0) | 2022.06.10 |
---|---|
조인(JOIN) (0) | 2022.05.16 |
키(Key) (0) | 2022.05.14 |