SQL은 관계형 데이터베이스(RDBMS) 이다.
SQL에 저장되는 데이터는 정해진 데이터 스키마에 따라 테이블에 저장되고,
이 데이터는 관계를 통해 여러 테이블에 분산된다. 따라서, 이 스키마를 준수하지 않은 데이터는 테이블에 추가할 수 없다.
위의 그림을 예시로 들어보면,
첫 번째 테이블은 고객 정보를 나타내고 그 아래의 테이블은 상품의 정보를 나타낸다.
이 두 테이블의 공통점은 ID 열(키)인데, 이러한 공통 열 덕분에 관계형 데이터베이스는 두 테이블 간의 관계를 오른쪽의 테이블 처럼 생성할 수 있다.
관계형 데이터베이스는 안정적이고, 데이터의 중복이 없어 일관성이 있으며, 구조가 단순하고 명확하다는 장점이 있다.
반면, 데이터 스키마가 사전에 계획되어야 하기때문에 새로운 변화에 유연하지 못하고,
데이터 사이의 상호 관계를 생성하면서 매우 복잡한 쿼리가 만들어지고 이는 성능 문제를 야기하는 단점이 있다.
또한, 수직적 확장 (단순히 데이터베이스 서버의 성능을 향상시키는 것)만 가능하다.
NoSQL은 비관계형 데이터베이스이다.
SQL은 정해진 스키마를 따르지 않으면 데이터 추가가 불가능 했는데, NoSQL에서는 다른 구조의 데이터를 같은 컬렉션에 추가가 가능하다.
비관계형 데이터베이스는 Json과 비슷한 형태로 여러 테이블에 나누어 담는 것이 아니라 관련 데이터를 동일한 컬렉션에 넣는다. 위의 그림에서 3개로 분리된 테이블을 Order라는 documents 안에 한꺼번에 포함해서 저장할 수 있다. 따라서 NoSQL에는 join이라는 개념이 존재하지 않는다.
따라서, NoSQL은 스키마가 없는 유연한 구조를 가지고 애플리케이션이 필요로 하는 형식으로 저장되기 때문에 데이터를 읽어오는 속도가 빠르며 수평적 확장 (더 많은 서버를 추가해서 데이터베이스를 전체적으로 분산시키는 것을 의미한다. 하나의 데이터베이스가 작동하지만 여러 호스트에서 작동한다)과 수직적 확장 모두 가능하다.
NoSQL의 단점은 유연성 때문에 데이터 구조 결정을 계속 미룰 수 있고, 중복된 데이터를 필요한 컬렉션 마다 저장할 수 있어 필요한 컬렉션마다 돌면서 여러 개의 레코드를 다 업데이트 해줘야 한다. 누락할 시 데이터가 최신이 아닐 수 있다. 또한 수정 시 모든 컬렉션에서 다 수정해 주어야 한다.
밑의 그림은 NOSQL의 데이터베이스 타입을 보여준다.
Scaling에 대한 그림 설명
Vertical Scaling vs Horizontal Scaling
밑은 SQL vs NoSQL 베이직 튜토리얼이다. 이 집도 설명 맛집이여~
https://www.youtube.com/watch?v=B3gJT3t8g4Q&t=27s
'DevOps > Google Cloud Platform' 카테고리의 다른 글
Google Cloud Load Balancing (GCLB) 에 대해 알아보자 (0) | 2022.10.03 |
---|---|
IaC (Infrastructure as Code)란? 그리고 Terraform (0) | 2022.09.22 |
IaaS vs PaaS vs SaaS vs FaaS (0) | 2022.09.22 |
API & SDK (0) | 2022.09.21 |
Object Storage에 대해 알아보자 (0) | 2022.09.21 |