TigerCow.Door

안녕하세요. 문범우입니다.

지난 시간에는 간단하게 MongoDB를 설치해보았습니다.

이번에는 앞으로 MongoDB를 다루기 위해 필요한 NoSQL에 대한 기초적인 개념 공부를 진행하고

윈도우에서 보다 쉽게 MongoDB를 사용하기 위해 환경변수 설정을 진행해보도록 할게요!





1. NoSQL

먼저 NoSQL에 대한 개념을 공부해보겠습니다.

NoSQL 데이터베이스는 전통적인 관계형 데이터베이스에 비해 덜 제한적인 일관성 모델을 이용하는 데이터의 저장 및 검색을 위한 매커니즘을 제공합니다.

NoSQL 시스템은 SQL 계열 쿼리 언어를 사용할 수 있다는 사실을 강조한다는 면에서 'Not only SQL'로 불리기도 합니다.

또한 관계형 데이터베이스가 아니므로 고정된 schema 또는 JOIN이 존재하지 않습니다.


2. Document Model

MongoDB 는 Relational Model 이 아닌 Document Model 입니다.

먼저 아래 사진을 확인해볼게요!


사진의 아래, Document Model을 확인하시면 각각의 데이터들이 Collection으로 묶인 것을 볼 수 있습니다.

MongoDB 에서는 각각의 데이터(RDMS에서는 레코드라고 하는 것)들이 Document 로써 존재합니다.

그리고 Document 들의 묶음을 MongoDB에서 Collection이라고 말합니다.

또한 Collection 들의 물리적인 컨테이너는 Database라고 하죠.


아래 사진을 보면 좀 더 이해가 가실 겁니다.



이해가 가시나요?

그럼 Document에 대해서 좀 더 알아보도록 하겠습니다.

위에서 언급했듯이 Document는 RDMS의 record와 비슷한 성격을 지닌 녀석입니다.

위 사진에서 볼 수 있듯이 하나의 Document 는 한개 이상의 key-value pair 로 이루어져 있습니다.

RDMS 에서 속성이라고 하는 것을 key라고 생각하시면 편할 것 같아요.

Document의 예를 확인해볼게요!




위의 사진을 확인하시면, _id, name, city, address, phone 라는 key를 확인하실 수 있으며 그에 대응하는 value를 확인 할 수 있습니다.

즉, 위의 Document는 총 5개의 key-value pair를 가지고 있습니다.

위의 key 중에 _id 는 12bytes 의 hexadecimal 값으로서, 각 document의 유일성을 보장합니다.

_id에 관해, 각 byte 별로 의미하는 것은 다음과 같습니다.

첫 4bytes: 현재 timestamp / 다음 3bytes: machine id / 다음 2bytes: MongoDB 서버의 프로세스 id / 마지막 3bytes: 순차번호


Document는 dynamic schema를 갖고있습니다. 같은 collection 안에 있는 document 끼리 다른 schema를 가질 수 있다는 것인데 쉽게 말해서 서로 다른 key들을 가지고 있을 수 있다라고 생각하시면 됩니다.


3.Data Modeling

간단한 데이터 모델링을 참고해보도록 할게요.

블로그를 생각해 봅시다.

블로그에서는 다수의 게시글이 존재하죠? 그리고 각 게시글은 여러개의 태그를 가질 수 있고, 각 게시글에는 여러개의 댓글을 가질 수 있습니다.

만약 RDMS에서 해당 데이터베이스를 간단히 디자인한다면 아래와 같은 3개의 테이블을 만들 것 입니다.


 Comment

Post

Tag 

*id 

*id 

*id 

Post_id 

title 

Post_id 

username 

content 

tagContent 

content 

username 

 

 time

time 

 


그리고 Comment와 Tag 테이블은 Post 테이블에 속하도록 디자인되겠죠.

하지만 NoSQL 에서는 이 모든 것을 하나의 Document 에 넣습니다. 아래와 같이 디자인 될 것 입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
 _id: POST_ID,
 title: POST_TITLE,
 content: POST_CONTENT,
 username: POST_WRITER,
 tags: [ TAG1, TAG2, TAG3 ],
 time: POST_TIME
 comments: [
 { 
 username: COMMENT_WRITER,
 mesage: COMMENT_MESSAGE,
 time: COMMENT_TIME
 },
 { 
 username: COMMENT_WRITER,
 mesage: COMMENT_MESSAGE,
 time: COMMENT_TIME
 }
 ]
}
cs


RDMS 와 NoSQL의 차이에 대해서 대략적으로 이해가 가셨나요?

추가적인 사항은 댓글을 남겨주시거나 doorBW@outlook.com 으로 메일 주세요 :)


4. MongoDB 환경변수 설정(Windows)

마지막으로 MongoDB를 좀 더 편리하게 사용하기 위해 환경변수 설정을 하도록 하겠습니다.

환경변수 설정을 통해 매번 MongoDB의 설치 경로로 이동하실 필요가 없으실 거에요.

아래 사진의 순서대로 진행하시면 됩니다.


1. 제어판 -> 시스템 및 보안 -> 시스템 -> 시스템 보호



2. 시스템 속성 창에서 환경변수 클릭



3. 변수이름 Path 를 누르고 편집 클릭




4. 새로만들기 -> MangoDB 설치경로 입력 -> 확인 클릭




이렇게 설정하시면 됩니다!

이제 확인해볼까요?




네, 정상적으로 됩니다 :)


추가적으로 데이터베이스 디텍토리를 변경하고 싶으시다면 아래 명령어를 입력하시면 됩니다.


C:\Program Files\MongoDB\Server\3.2\bin> mongod --dbpath "원하는 디텍토리"


이상으로 MongoDB 환경변수 설정을 마무리하겠습니다.


오늘 NoSQL개념 3가지와 MongoDB 환경변수 설정을 진행하였습니다.

다음 포스팅에서는 본격적으로 database를 만들고 삭제하는 등의 진행을 해볼게요 :)

문의사항은 덧글 및 이메일(doorbw@outlook.com)을 이용해주세요.

블로그 이미지

Tigercow.Door

Web Programming / Back-end / Database / AI / Algorithm / DeepLearning / etc

댓글을 달아 주세요