관리 메뉴

흰둥씨의 개발장

[오늘의 node.js] 관계형DB(mysql...)와 비관계형DB(mongoDB) 본문

[오늘의 공부]/Node.js & package manager

[오늘의 node.js] 관계형DB(mysql...)와 비관계형DB(mongoDB)

돈워리비해삐 2023. 5. 25. 23:57

관계형 데이터 베이스 (RDB) : MySQL, OracleDB, PstgreSQL...

상품명 구매수량 고객명
"상품1" 3 오육칠
"상품2" 4 팔구십

 

- 데이터 스키마가 고정적임 

- 저장하고 처리해야 할 데이터 양이 늘어나면 서버성능 업그레이드 해서 확장해줘야 함

- 까다로운 조건으로 데이터 필터링 해야하거나, ACID(원자성, 일관성, 고립성, 지속성)특성을 지켜야하면 RDB가 유리

- 한테이블의 모든 데이터가 같은 스키마를 가져야 함 (변동사항 생기면 전체 데이터를 일일이 수정해야함)

 

MongoDB는 문서지향적 NoSQL데이터 베이스 

{
	상품명: "상품1",
	구매수량: 2,
	구매고객: "오육칠"
}

 

- 유동적인 스키마 가질수 있음 

- 저장하고 처리해야 할 데이터 양이 늘어나면 여러 컴퓨터로 분산하여 처리 해서 확장하기 쉬움 

- 데이터 구조가 자주 바뀌면 MongoDB가 유리 

- document(문서= 키-값 쌍)는 BSON(바이너리 형태의 json)형태로 저장 

- 문서 여러개 있는곳을 컬렉션이라고 표현

- 컬렉션안의 데이터가 같은 스키마를 가질 필요가 없어 다른스키마 가진 문서들이 한 컬렉션에 공존가능 

- 서버하나에 데이터 베이스를 여러개 가지고, 각 데이터 베이스 안에는 여러개의 컬렉션이 있고, 컬렉션내부에 문서가 있음 

- 서브 다큐먼트 (subdocument) : 문서 내부에 있는 또 다른 문서로 일반 문서처럼 쿼리가능 

- 문서 하나에 최대 16MB의 데이터 저장 가능