MongoDB에 대한 개념 정리
▶ MongoDB란?
- 일반적으로 서버 애플리케이션을 만들때 데이터를 DB에 저장한다. DB는 크게 RDB(관계형 데이터베이스)와 NoSQL(관계형이 아닌 DB)로 나뉜다.
- MongoDB는 NoSQL 데이터베이스의 일종으로써, 문서 지향 데이터베이스 시스템.
- 모든 데이터를 BSON(Binary JSON) 형식으로 저장하며, 유연하고 확장성이 뛰어나다는 특징을 가짐.
- 개발자들이 대량의 데이터를 효과적으로 저장, 관리 및 검색할 수 있도록 설계됨.
> MongoDB 주요 특징
⦁ 문서 지향 데이터베이스
- MongoDB는 JSON 형식의 문서를 사용하여 데이터를 저장함.
- 이러한 문서들은 Collection에 저장되며, 각 문서는 Key-Value 쌍으로 구성됨.
- 문서 구조는 유연하며, 필요에 따라 필드를 동적으로 추가하거나 제거할 수 있음.
⦁ 스키마 없음
- MongoDB는 스키마를 강제하지 않음.
- 다른 문서들이 서로 다른 구조를 가질 수 있으며, 이는 애플리케이션의 데이터 모델 변경이 간단하게 이루어지도록 함.
⦁ 분산 및 확장성
- MongoDB는 분산 데이터베이스로서, 여러 서버에 데이터를 분산하여 저장하고 확장할 수 있음.
- 수평적 확장을 지원하므로 데이터 양이 증가해도 성능을 유지할 수 있음.
⦁ 빠른 읽기와 쓰기
- MongoDB는 인덱스를 지원하여 데이터의 빠른 검색을 가능하게 함.
- 메모리 기반의 저장 방식을 사용하여 높은 처리량 제공
⦁ 쿼리 언어
- MongoDB는 강력한 쿼리 언어를 제공하여 데이터를 쉽게 검색하고 조작할 수 있음
▷ MongoDB 장단점
장점 | 단점 |
- 스키마를 지정하지 않아도되므로 데이터 저장의 유연성이 있음. 즉, 모델에 필드를 추가할 때 DB에서 추가로 할 일이 없음 - 단일 문서 검색시 여러 테이블을 조인하는 것보다 빠른 경우가 많음 - 클러스터를 지원해주기 때문에 스케일아웃이 쉬움 - 다른 NoSQL 대비 인덱스 지원이 잘 되어있음 |
- 메모리를 많이 사용함 - 디스크 저장 공간을 RDB에 비해 많이 씀 - 복잡한 조인은 사용하기 힘듦 - 트랜잭션 지원이 RDB에 비해 약함 |
▷ MongoDB Atlas(아틀라스)
- 아틀라스는 MongoDB의 공식 호스팅 플랫폼으로, 클라우드 환경에서 MongoDB 데이터베이스를 쉽게 관리하고 배포할수 있도록 지원하는 서비스이다.
- Atlas를 사용하면 MongoDB DB를 설정하고 관리하는데 필요한 복잡한 작업을 최소화하고, DB관리에 대한 부담을 줄일 수 있음.
> Atlas 특징과 기능
⦁ 클라우드 환경
- MongoDB Atlas는 주요 클라우드 제공업체(AWS, Google Cloud Platform, Microsoft Azure)와 연계되어 서버, 네트워크, 데이터 복제 등을 자동으로 구성하여 DB를 호스팅함
- DB 운영에 대한 복잡한 설정이 간소화되고, 개발자들은 DB 관리에 더 집중할 수 있음.
⦁ 자동 스케일링
- Atlas는 DB 트래픽에 따라 자동으로 스케일링 됨.
- 트래픽이 증가하면 자동으로 DB 인스턴스를 확장하여 성능을 유지하며, 트래픽이 줄어들면 자동으로 인스턴스 축소
⦁ 백업과 복구
- MongoDB Atlas는 자동 백업 기능을 제공하여 주기적으로 DB를 백업함.
- 데이터 손실을 최소화하기 위해 백업된 데이터를 복구하는 기능도 제공
⦁ 보안
- Atlas는 DB 접근을 보호하기 위해 인증, 암호화, 네트워크 보안 등의 기능을 지원함.
- DB와 통신하는데 사용되는 연결은 SSL/TLS로 암호화되어 데이터의 안전성을 보장함.
⦁ 모니터링
- Atlas는 DB의 성능을 모니터링하고 분석하는 기능을 제공
- 성능 지표, 쿼리 분석, 알림 등을 통해 DB 상태를 실시간으로 모니터링 할 수 있음
▷ MongoDB Compass
- MongoDB의 공식 GUI 도구로써, MongoDB의 DB를 시각적으로 탐색하고 관리하는데 사용되는 플랫폼.
- MongoDB Compass를 사용하면 명령줄 인터페이스를 사용하지 않고도 DB를 쉽게 조작하고 쿼리를 쓸 수 있으며, 데이터를 시각화 할 수 있음.
> Compass 특징과 기능
⦁ 시각적 데이터 탐색
- Compass는 DB와 컬렉션의 데이터를 시각적으로 탐색할 수 있음.
- 데이터의 스키마, 필드, 인덱스 등을 쉽게 확인하고 데이터 조회 가능
⦁ 데이터 필터링 및 쿼리
- Compass는 간단한 UI 요소를 사용하여 MongoDB 데이터베이스에서 데이터를 쿼리할 수 있는 기능을 제공함.
- 쿼리 결과를 테이블 형식으로 확인할 수 있으며, 필터를 적용하여 원하는 데이터를 조회할 수 있음
⦁ 지리 공간 데이터 시각화
- Compass는 MongoDB의 지리 공간 기능을 시각화할 수 있는 기능을 제공함.
- 지리 위치 데이터를 지도 형식으로 시각화하여 조회하고 분석할 수 있음
⦁ 인덱스 관리
- Compass는 DB의 인덱스를 시각적으로 관리할 수 있음
- 인덱스의 유용성을 분석하고 성능 향상을 위해 인덱스를 생성, 수정, 삭제할 수 있음
⦁ 샤딩 및 복제 지원
- Compass는 샤딩과 복제 클러스터를 지원함
- 클러스터의 구성과 상태를 시각적으로 모니터링하고 데이터가 어떻게 분산되고 복제되는지 확인할 수 있음
▷ Mongoose (몽구스)
- 몽구스는 Node.js와 MongoDB를 함께 사용할 수 있도록 설계된 MongoDB를 위한 강력한 객체 모델링 도구임.
- 몽구스는 Node.js와 몽고디비를 사용할때 네이티브 몽고디비 드라이브만큼 많이 사용
- Mongoose는 객체를 도큐먼트로 매핑하는 기능이 있음(= ODM, Object Document Mapper)
- MongoDB 자체에는 스키마를 지정하는 기능이 없지만, Mongoose를 사용하면 스키마를 지정할 수 있음
- Mongoose를 사용하면 MongoDB 데이터베이스와 상호작용할 때 JavaScript 객체를 사용하여 데이터를 다룰 수 있음.
> MongoDB의 기본 기능 외의 Mongoose 기능
⦁ 스키마 정의
- Mongoose를 사용하여 MongoDB에 저장할 데이터의 스키마를 정의할 수 있음.
- 스키마는 데이터 모델의 구조를 정의하며, DB에 저장되는 데이터의 필드와 데이터 형식 등을 지정할 수 있음.
⦁ 데이터 유효성 검사
- Mongoose는 스키마를 사용하여 데이터를 유효성 검사할 수 있음.
- 데이터가 스키마와 일치하지 않으면 저장되지 않도록 막을 수 있으며, 데이터의 일관성과 무결성을 유지할 수 있음.
⦁ 쿼리 작성
- Mongoose는 MongoDB의 쿼리를 더 쉽게 작성할 수 있도록 도와줌. 복잡한 쿼리를 직접 작성하는 대신 Mongoose의 메서드를 사용하여 쿼리를 생성하고 실행할 수 있음.
⦁ 미들웨어 지원
- Mongoose는 DB 작업 전후에 미들웨어를 사용하여 데이터 조작을 추가하거나 변경할 수 있음.
- 예를 들어, 데이터를 저장하기 전에 어떤 작업을 수행하거나 저장된 데이터를 조회하기 전에 후처리를 할 수 있음.
'Node.js' 카테고리의 다른 글
댓글 기능이 있는 게시판 만들기 (Node.js, MongoDB, Express 사용) (0) | 2023.07.31 |
---|---|
Node.js & 익스프레스 사용 정리 (WAS 구현) (0) | 2023.07.27 |
자바스크립트 비동기 처리 정리 (0) | 2023.07.26 |
Node.js에 대하여 (2) | 2023.07.26 |
댓글