개발 R.I.P.

9.03 Dev.Feedback (Mongo DB #1)

편행 2021. 9. 3. 15:50
반응형

MongoDB

MongoDB는 대표적인 NoSQL 도큐먼트 데이터베이스이다

 

 

NoSQL이란?

 

NoSQL은 관계형 테이블의 방법을 사용하지 않는 데이터를 넓게 지칭한다. NoSQL 데이터베이스에서는 데이터를 행과 열이 아닌, 체계적인 방식으로 저장한다. NoSQL 데이터베이스의 예는 도서카드 목록함에서부터 MongoDB 같은 보다 정교한 데이터 저장소에 이르기까지 다양한 개념을 아우를 수 있다. 따라서 NoSQL이 의미하는 데이터베이스의 범위가 너무 넓기 때문에, 일단 이번에 공부하게 될 MongoDB로 범위를 좁히려 한다.

 

SQL은 테이블을 통해 데이터를 저장하고, 관계형 데이터 베이스로도 불린다.

 

MongoDB를 정확히 짚기 전에 NoSQL 기반의 비관계형 데이터베이스가 어떤 경우에 사용되는지 정리해봤다.

 

1. 비구조적인 대용량의 데이터를 저장하는 경우 (ioT 장비나 SNS에서 비롯되는 데이터를 관리해야하는 경우)

 

NoSQL 데이터베이스는 관계에 중점을 둔 SQL 데이터베이스보다 자유로운 형태로 데이터를 저장할 수 있으므로 필요에 따라서 새로운 데이터 유형을 추가할 수 있다. 소프트웨어 개발에 정형화되지 않은 많은 양의 데이터가 필요한 경우, NoSQL이 효율적일 수 있다.

 

2. 클라우드 컴퓨팅 및 저장공간을 최대한 활용하는 경우

 

NoSQL 데이터베이스는 데이터베이스를 클라우드 기반으로 쉽게 분리 할 수 있도록 지원하여, 저장 공간을 효율적으로 사용하게 해준다. 시스템이 커지면서 DB를 증설해야 하는 시점이 오면, SQL 데이터베이스에서는 수직적 확장의 형태로 DB를 증설해야 한다. 수직적으로 확장된 데이터베이스는 관리가 어려워질 수 있는데에 반해, NoSQL은 수평적 확장의 형태로 증설하므로, 이론상 무한대로 서버를 계속 분산시켜 DB를 증설할 수 있다.

 

3. 빠르게 서비스를 구축하고 데이터 구조를 자주 업데이트 하는 경우

 

NoSQL 데이터베이스의 경우 스키마를 미리 준비할 필요가 없어서, 개발을 빠르게 해야하는 경우에 매우 적합하다. 시장에 빠르게 프로토타입을 출시해야 하는 경우나, 소프트웨어 버전별로 많은 다운타임(데이터베이스의 서버를 오프라인으로 전환하여 작업하는 시간) 없이 데이터 구조를 자주 업데이트 해야하는 경우에는 일일이 스키마를 수정해주어야 하는 관계형 데이터베이스 보다 NoSQL 기반의 비관계형 데이터베이스가 더 효율적이다.

Atlas Cloud

MongoDB에서는 아틀라스(Atlas)로 클라우드에 데이터베이스를 설정한다.
아틀라스는 GUI와 CLI로 데이터를 시각화, 분석, 내보내기, 그리고 빌드하는 데에 사용할 수 있다. 아틀라스 사용자는 클러스터를 배포 할 수 있으며, 클러스터는 그룹화된 서버에 데이터를 저장한다..

 

 

클러스터

데이터를 저장하는 서버 그룹으로 여러 대의 컴퓨터를 네트워크를 통해 연결하여 하나의 단일 컴퓨터처럼 동작하도록 제작한 컴퓨터 이 말은 즉, 여러 단일 인스턴스들을 모은 것과 동일한 의미이다.  단일 클러스터에서 각각의 인스턴스는 동일한 복제본을 가지고 있으며 이 모음을 레플리카 세트라고 한다. 클러스터를 이용하여 배포하는 경우에는 자동으로 레플리카 세트가 생성된다.

 

인스턴스

로컬 또는 클라우드에서 특정 소프트웨어를 실행하는 단일 머신이다. MongoDB에서는 데이터베이스를 의미한다.

 

레플리카 세트

동일한 데이터를 저장하는 소수의 연결된 머신(인스턴스)을 뜻한다. 레플리카 세트는 인스턴스의 데이터를 복사하여 저장한다. 따라서, 인스턴스 중 하나에 문제가 발생하더라도, 데이터는 그대로 유지되고 나머지 레플리카 세트의 인스턴스에 저장된 데이터로 작업 가능하다. 도큐먼트나 컬렉션을 변경할 경우, 변경된 데이터의 중복 사본이 레플리카 세트에 저장된다. 

 

MongoDB Document

 

도큐먼트 데이터 베이스란?

 

데이터를 테이블이 아닌, 문서처럼 저장하는 데이터베이스를 의미한다. 일반적으로 도큐먼트 데이터베이스에서는 JSON 유사 형식으로 데이터를 문서화한다. 각각의 도큐먼트는 데이터를 필드-값 형태로 가지고 있고, 컬렉션이라고 하는 그룹으로 묶어서 관리한다

도큐먼트 하나의 예시

 

도큐먼트

필드-값 쌍으로 저장된 데이터

 

필드

데이터 포인트를 위한 고유한 식별자

 

주어진 식별자와 연결된 데이터

 

컬렉션

MongoDB의 도큐먼트로 구성된 저장소, 일반적으로 도큐먼트 간의 공동 필드가 있다. 데이터베이스 마다 수많은 컬렉션이 존재하고, 컬렉션 당 많은 도큐먼트가 있을 수 있다.

 

데이터 베이스 콜렉션 도큐먼트의 관계

반응형