MongoDB 기본 개념
도큐먼트
- 키 + 값 = 도큐먼트
- 기존 RDBMS의 테이블 내부에 있는 데이터 항목 1개와 매칭된다고 생각하면 된다.
컬렉션
- 도큐먼트의 집합
- RDBMS의 테이블과 매칭된다고 생각하면 된다.
동적 스키마
- RDBMS는 테이블 안에 데이터 형이 정해져있다.
- mongoDB에선 도큐먼트의 데이터형이 정해져있지 않다.
- 고로, Join이 불가능하다.
- key와 value만 있을 뿐이다.
- value는 string, int, array 등이 될 수 있고, value에 또다른 도큐먼트를 넣을수도 있다.
- Json형태 데이터를 저장한다.
Query
Create
- {Collection}.{save}.{Document}
- ex> db.person.save({'name':'john'});
Read
- {Collection}.{find}.{Document}
- ex> db.person.find();
Update
- {Collection}.{update}.{Document}
- ex> db.users.update({name:'johnny'},{name:'Cash',language:['english']});
Delete
- {Collection}.{remove}.{Document}
- ex> db.users.remove({name:'Sue'});
MongoDB 샤딩
- 대용량의 데이터를 저장하기 위한 방법
- 소프트웨어적으로 데이터베이스를 분산시켜 처리하는 구조
- 샤딩 방식
- 데이터베이스가 저장하고 있는 테이블을 테이블 단위로 분리하는 방법
- 데이터베이스가 저장하고 있는 테이블 자체를 분할하는 방법
- 분산 데이터베이스의 전통적인 분할 3계층 구조 지원
- 응용 계층, 중개자 계층, 데이터 계층
- 응용 계층은 데이터에 접근하기 위해 중개자를 통해 모든 데이터의 입출력을 처리
- 추상화된 한개의 데이터베이스가 존재하는 것처럼 운용
MongoDB 맵리듀스
- 대용량 데이터를 안전하고 빠르게 처리하기 위한 방법
- 데이터를 분산하고 연산하고 다시 합치는 기술
- 맵과 리듀스 단계로 나누어 처리
- 사용자가 임의 코딩 가능
- 입/출력 데이터는 key-value 형태로 구성
- 한대 이상의 하드웨어를 활용하는 분산 프로그래밍 모델
- 데이터를 조각으로 나눠 처리한 다음, 다시 합쳐서 훨씬 짧은 시간에 계산을 완료한다.
- 데이터를 조각으로 나눠 병렬처리한다고 생각하면 될 듯 하다.
- 대용량 파일에 대한 로그 분석, 색인 구축 검색 등에 활용
- 일괄처리 방식으로 전체 데이터 셋을 분석할 필요가 있는 문제에 적합
- input
- 대용량 데이터를 Split
- Map
- 각각의 map은 독립적으로 실행된다.
- input되는 데이터에 대해서만 처리하고, 데이터를 반환한다.
- shuffle / Sortㄴ
- map에서 반환되는 데이터를 key단위로 합치는 역할을 한다.
- input데이터를 Reduce를 수행하는 서버에 반환한다.
- Reduce
- 합쳐진 데이터를 다시 연산을 한 후 최종 결과 값을 반환한다.
- Output
- Reduce 과정의 결과물이다.
- 해당 결과물을 Client에 전달된다.
'Database > MongoDB' 카테고리의 다른 글
[MongoDB] 쿼리 (0) | 2022.03.31 |
---|