본문 바로가기
IT/MongoDB

MongoDB

by 봉즙 2019. 11. 28.

관계형 데이터 베이스의 한계

데이터 스키마가 고정적

확장성(처리해야할 데이터의 양이 늘어나면 분산 시키는 것이 아니라 성능을 업그레이드 해줘야했다)

 

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

유동적으로 스키마를 지닐수 있으며 종류가 같은 데이터라 하더라도 새로 등록할 때 기존 데이터까지 수정할 필요는 없다.

 

ACID특성 : 원자성 일관성 고립성 지속성을 가리키며 트랜잭션이 안전하게 처리되는 것을 보장하는 성질이다. 이 특성을 지키는 경우 RDBMS가 유리하다.

 

문서 : 문서의 데이터구조는 한개 이상의 키-값으로 구성되어있다. MongoDB에서는 BSON(바이너리 형태의 JSON)형태로 저장된다.
 새로운 문서 작성시 _id라는 고유값을 자동으로 생성하며 이 값은 시간, 머신 아이디, 프로세스 아이디, 순차 번호로 되어있어 고유함을 보장한다.
 이러한 문서가 여러개 들어있는 것을 컬렉션이라 하며 데이터 베이스는  여러개의 컬렉션으로 이루어져있다.

 

.env 환경변수 파일을 통해 포트와 데이터 베이스 이름을 설정하며 없다면 자동으로 생성해준다.

 

mongoose에 스키마와 모델이 있다. 스키마는 컬렉션에 들어가는 문서 내부의 각 필드가 어떤 형식으로 되어있는지 정의하는 객체이다. 모델은 스키마를 사용하여 만드는 인스턴스이며, 데이터베이스에서 실제 작업을 처리할 수 있는 함수들을 지니고 있는 객체이다.

스키마 생성시 mongoose의 모듈 Schema를 사용하여 정의하며 기본적으로 지원하는 타입은 String, Number, Date, Buffer, Boolean Mixed(Schema, Types, Mixed), ObjectId(Schema,Types, ObjectId), Array가 있다.

모델 생성시 model() 함수를 통해 생성하는데 첫번째 파라미터는 스키마 이름이며 두번째 파라미터는 스키마 객체가 된다.

댓글