일반적 SQL과 NOSQL DB 선택
- 웹&앱을 개발할 때, DB를 고를 때 여러 가지 고민을 함
- MySQL과 같은 SQL? 혹은 MongoDB와 같은 NoSQL을 사용?
- 보통 Spring 개발 시 MySQL, Node.js를 개발 시에는 NoSQL을 사용
<aside>
❗
하지만 그냥 단순히 프레임워크에 따라 결정하는 것이 아님.
</aside>
SQL (RDB)
- SQL을 사용하면 RDBMS에서 데이터를 저장, 수정, 삭제 및 검색 가능
관계형 DB에서는 핵심적 두 가지 특성 존재
- 데이터를 정해진 데이터 스키마에 따라 테이블에 저장
- 데이터는 관계를 통해 여러 테이블에 분산
즉, 스키마를 준수하지 않은 레코드는 테이블에 추가 불가능
- 또한, 데이터 중복을 피하기 위해
관계를 이용
데이터 저장 구조
| 학번 (PK) |
이름 |
전공 |
학년 |
| 2023001 |
홍길동 |
컴퓨터공학 |
2 |
| 2023002 |
김철수 |
전자공학 |
3 |
NoSQL (비관계형 DB)
스키마, 관계가 존재하지 않음
- NoSQL에서는
레코드를 문서(Documents)라 칭함
- 문서(Documents)는 JSON과 비슷한 형태를 갖고 있음
- NoSQL에서는
다른 구조의 데이터를 같은 컬렉션에 추가 가능
- SQL에서 Order, Users, Products 테이블로 나눈 것을 NoSQL에서는 Orders에
한꺼번에 포함해서 저장
- 즉, 여러 테이블을 조인할거 없이 이미 필요한 모든 것을 갖춘 문서를 작성하는 것이 NoSQL
- 하지만, 이러한 데이터가 중복되어 서로 영향을 줄 가능성이 존재
- 그래서
조인을 잘 사용하지 않고 자주 변경되지 않는 데이터일 때 NoSQL을 쓰면 상당히 효율적
데이터 저장 구조
{
"student_id": "2023001",
"name": "홍길동",
"major": "컴퓨터공학",
"year": 2
}