SQL - MySQL - RDBMS (관계형) - 체계적이나 보수적임
NoSQL - MongoDB - Node.js - 덜 체계적이나 자유로움
상황에 맞게 선택하여 사용하자.
SQL ( 관계형 데이터베이스 )
- 구조화 된 쿼리 언어 (Structured Query Language)
- 특정 유형의 데이터베이스와 상호 작용하는 데 사용하는 쿼리 언어. CRUD 가능.
- 엄격한 스키마(구조)가 존재 : 행(로우, 튜플, 레코드)과 열(컬럼, 속성, 필드)로 구성된 하나의 테이블(관계)
- 관계: 외래키, 조인 때문에 데이터의 중복이 없음
SQL 장점
- 명확하게 정의된 스키마, 데이터 무결성 보장
* 데이터 무결성: 데이터의 정확성과 일관성을 유지하고 보증하는 것
- 관계는 각 데이터를 중복없이 한번만 저장
- 트랜잭션으로 작업의 완전성을 보장
SQL 단점
- 상대적으로 덜 유연. 데이터 스키마는 사전에 계획되고 알려져야함
- 조인이 많은 매우 복잡한 쿼리
- 수평적 확장이 어렵고, 수직적 확장만 가능. 즉, 성장에 한계가 있음
SQL은 언제 사용할까?
- 관계를 맺고 있는 데이터가 자주 변경되는 경우
- 변경될 여지가 없고, 명확한 스키마와 데이터에게 중요한 경우
- 금융 산업과 같이 자주 변하지 않는 보수적인 시스템에서 주로 사용
NoSQL ( 비관계형 데이터베이스 )
- Not Only SQL, Non relational Database
- 스키마 없음, 관계 없음. 데이터간의 관계를 정의하지 않음. 자유로움.
- 테이블과 같은 개념으로 컬렉션이라는 형태로 데이터를 관리
- 레코드를 '문서'라고 부름. 문서는 JSON 데이터와 비슷한 형태를 가짐.
- Key-Value 형태를 가짐
- 정리하자면, 컬렉션 안에 여러 문서들을 가지고 있다고 생각하면 될듯!
- 조인이라는 개념이 없음. 데이터가 필요하다면 복제해서 산출
- SQL보다 대용량의 데이터 저장 가능
- Key에 대한 put/get만 지원
NoSQL 장점
- 스키마가 없기 때문에 높은 유연성. 언제든지 저장된 데이터를 조정하고 새로운 필드 추가 가능
- 간단한 구조로 데이터를 읽어오는 속도가 빠름
- 수직 및 수평 확장 가능
NoSQL 단점
- 유연성 때문에 데이터 구조 결정을 하지 못할 수 있음
- CRUD가 자유롭지 못함
- 자유롭게 데이터 추가가 가능하기 때문에 컬렉션에 중복된 데이터 저장 가능
따라서, 데이터 업데이트시 중복되어 저장되어있는 데이터를 똑같이 업데이트해 주어야함. 번거로움.
NoSQL은 언제 사용할까?
- 정확한 데이터 구조를 알 수 없거나 변경 / 확장될 수 있는 경우
- 읽기 처리를 자주 하지만, 데이터를 자주 변경하지는 않는 경우 (한번의 변경으로 수십 개의 문서를 업데이트 할 필요가 없는 경우)
- 데이터베이스를 수평으로 확장해야하는 경우 (막대한 양의 데이터를 다뤄야하는 경우)
- SNS (페이스북, 인스타그램, 트위터 등)
- 장바구니에 담는 작업을 캐싱을 기반으로 처리할 때 SQL에 비해 더 빠르고 효과적
출처
'DATABASE' 카테고리의 다른 글
macOS에 MariaDB 설치하기 (0) | 2021.03.08 |
---|---|
macOS 터미널에서 Tomcat & MySQL 실행 방법 (0) | 2020.12.30 |
DBeaver 새 연결 추가하기 (0) | 2020.12.07 |
테이블 컬럼 데이터 타입 변경 - 데이터가 존재할 경우 (0) | 2020.10.30 |
오라클 포트번호 변경하는 방법 (0) | 2020.10.10 |