SQL
- 테이블 형태 저장방식( table-based) => structured data
i.e) Oracle, MySQL, MSSQL, PostgreSQL- relational(관계형 데이터베이스)
행(row)과 열(column)에 데이터를 저장- use structured query language and have a predefined schema
- vertically scalable
비용 및 downtime 발생 => scalibility(확장성) 떨어짐- better for multi-row transactions
i.e) 전화번호부 / 고객 데이터
NoSQL
서류형태 문서 저장방식 (document, key-value, graph, or wide-column stores)
i.e) MongoDB, Firebase, Redis
1. Key-Value Stores
데이터를 자유롭게 추출할 수 x
2. Document
주로 JSON으로 데이터의 형태, 종류에 상관없이 저장이 가능
3. wide-column stores
table이 아닌 columnar database
각각의 행이 같은 수의 column을 가질 필요가 없음
4. Graph
노드간의 관계(relationship)만 필요
- non-relational
- dynamic schemas for unstructured data
- horizontally scalable
서버의 갯수를 늘려 비용 및 확장성에 좋음- better for unstructured data like documents or JSON
선택
-SQL : ACID (Atomicity, Consistency, Isolation, Durability)가 꼭 필요한 프로덕트
사용할 데이터가 구조화가 잘 되어있고, 변화 X
아주 큰 스케일로 성장하지 않을 경우
-NoSQL : 스케일이 큰 프로덕트
데이터 양이 아주 많으며 ACID가 굳이 필요없고, 많은 사용자와 많은 액세스가 있으며 빠르게 서비스를 제공해야 할 경우