본문 바로가기
개발환경구축

MongoDB 소개 및 설치하기

by 즐거운코딩 2023. 7. 8.
반응형

사용자가 입력한 데이터를 상시 저장하는 공간으로 파일이나 데이터베이스(Database)를 이용하면 됩니다.

우선 데이터베이스를 기준으로 특징과 선택기준에 대해 간단하게 정리하고자 합니다.

 

데이터베이스 종류

데이터의 종류와 이용 서비스에 따라 데이터베이스를 다음과 같이 구분합니다.

  • 관계형 데이터베이스(RDBMS)  : MySQL, OracleDB, PostreSQL, MariaDB 등이 있으며, 데이터를 입력하는 형식이 고정적입니다. 스키마(Schema)는 데이터 형식을 어떻게 넣을지 정보를 지정하는 것으로 입력하는 데이터가 동일한 항목과 형식을 유지해야 합니다. 또한 데이터량이 늘어나면 여러 컴퓨터에 분산시키는 것이 아니라 서버의 성능을 높여서 대응하야 합니다.
  • NoSQL 데이터베이스 : mongoDB, Redis, CouchDB 등이 있으며, 이 데이터베이스에 등록하는 데이터는 유동적인 스키마를 가집니다.  따라서 종류가 같은 데이터라도 형식이 다르더라도 기존 데이터를 수정할 필요없이 저장 가능합니다.  또한 한 서버에서만 처리하는 것이 아니라 여러 서버로 분산하여 처리할 수 있어서 확장성이 좋습니다.

하지만 mongoDB가 항시 좋은 것은 아닙니다. 데이터의 구조가 자주 바뀐다면 적합하지만 까다로운 조건으로 데이터를 필터링 하거나 ACID 특성을 지켜야 한다면 RDBMS가 더 유리할 수 있습니다.

ACID 특성은 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Duration)의 앞글자를 따서 만든 용어로 데이터베이스 트랜잭션이 안전하게 처리되는 것을 보장하기 위한 성질을 의미

 

MongoDB 특징

MongoDB 페이지

문서(Document)의 이해

RDBMS의 레코드 개념과 비슷하지만 문서의 데이터 구조는 한 개 이상의 키-값(key-value) 쌍으로 되어 있습니다.

아래는 MongoDB에서 사용하는 문서 예시 입니다.

    "_id" : ObjectId("56c08f3a4d6b67aafdeb88a3"), 

    "name" : "MongoDB Guide", 

    "author" : "Peter" 

}

 

문서는 BSON(바이너리 형태의 JSON) 형태로 저장됩니다.  따라서 JSON 형식의 객체를 데이터베이스에 저장하기 쉽습니다.

새로운 문서를 만들면 _id 라는 고유값을 자동으로 생성하는데 이 값은 시간, 머신아이디, 프로세스 아이디, 순차번호로 되어 있어 고유한 값을 가지게 됩니다.

 

여러 문서가 들어 있는 곳을 컬렉션(Collection) 이라고 합니다. RDBMS에서는 테이블과 같지만 등록하는 데이터가 다른 스키마를 가지고 있어도 한 컬렉션에 같이 들어갈 수 있습니다.

 

MongoDB의 구조

서버하나에 데이터베이스를 여러 개 가지고, 각 데이터베이스에는 여러 개의 컬렉션이 있으며, 컬렉션 내부에는 문서들이 들어가게 됩니다.

MongoDB vs RDBMS 비교

 

스키마 디자인

NoSQL인 MongoDB에서 스키마를 디자인하는 방식은 RDBMS와 완전히 다릅니다. 예를들어 블로그 데이터 스키마를 설계한다면 RDBMS는 각 포스트, 댓글 마다 테이블을 만들고 필요에 따라서 JOIN 해서 사용 합니다.

RDBMS에서 설계한다면 그 구조는 다음과 같습니다.

RDBMS Table Relation

하지만 NoSQL 에서는 그냥 모든 것을 문서 하나에 넣습니다.

블로그 작성시 MongoDB는 댓글을 포스트 문서 내부에 넣는데 이와 같이 문서 내부에 또 다른 문서가 위치할 수 있습니다.

이를 서브다큐먼트(subdocument)라고 합니다. 이것 또한 일반 문서와 같이 쿼리를 사용할 수 있습니다.

{
	_id: ObjectId,
    title: String,
    body: String,
    username: String,
    createDate: Date,
    comments: [
    	{
        	_id: ObjectId,
            text: String,
            createdDate: Date,
        },
    ],
};

 

문서 하나에 최대 16MB 만큼 데이터를 넣을 수 있어서 100자 댓글 데이터라면 대략 0.2KB를 차지합니다. 16MB는 16,384KB 이니 문서 하나에 댓글 데이터를 약 68,000개 넣을 수 있습니다.

 

mongoDB 설치하기

 

MacOS

Homebrew 를 이용하여 간편하게 설치합니다.

(글작성 기준 버젼 4.4 적용)

$ brew tap mongodb/brew

$ brew install mongodb-community@4.4

$ brew services start mongodb-community@4.4

==> Sucessfully started 'mongodb-community' (label: homebrew.mxcl.mongodb-community)

 

path에 mongodb 경로를 등록합니다.

$ export PATH="/usr/local/opt/mongodb-community@4.4/bin:$PATH"

 

Windows

MongoDB 공식 사이트의 다운로드 페이지 에서 인스톨러를 내려 받아서 설치합니다.

설치도중에 Complete 또는 Custom 설치 옵션이 나오면 Complete 를 선택하고, 기본 설정으로 합니다.

설치가 완료되면 자동으로 MongoDB 서버가 Windows 서비스로 등록되어 시작됩니다.

추가로 MongoDB Compass 라는 데이터베이스를 GUI로 확인할 수 있는 프로그램도 같이 설치됩니다.

 

MongoDB 작동 확인

성공적으로 설치되었고 제대로 가동 중인지 확인하려면, 터미널에서 mongo를 입력 합니다.

Windows에서는 MongoDB가 설치된 경로(c:\Program Files\MongoDB\Server\4.0\bin)로 이동한 다음 명령을 입력합니다.

 

$ mongo

명령을 입력하면 터미널 기반 MongoDB 클라이언트가 실행되고 여기서 version() 이라는 명령을 입력하여 version 정보가 정상으로 보이는지 확인합니다.

mongodb 설치 결과 확인

 

반응형

'개발환경구축' 카테고리의 다른 글

dotenv 파일 만들기  (0) 2023.09.23
VS Code 단축키  (0) 2023.07.07
VSCode 유용한 셋팅  (0) 2023.05.26
윈도우 패키지 관리 Scoop 활용하기  (0) 2023.05.25