MongoDB 시작하기


웹 브라우저를 통해 www.mongodb.org를 검색한 후 우측 상단의 DOWNLOADS를 클릭하여 본인의 운영체제에 맞는 MongoDB를 다운로드 합니다.





.exe파일로 MongoDB설치를 완료하고, 콘솔창을 띄워줍니다. 이후 cd 명령을 통해 MongoDB를 설치한 경로의 bin 디렉토리에 접근합니다.

※이동 경로는 본인이 MongoDB를 설치한 위치에 따라 다를 수 있습니다.





'mongod' 명령어로 MongoDB 인스턴스를 활성화합니다. MongoDB를 설치한 bin 디렉토리에서 명령어를 실행하여야 합니다.

mongod --dbpath {경로}




위의 콘솔창을 종료하지 않은 채로, 또 다른 콘솔창을 실행합니다. 새로 띄운 콘솔창에서 'mongo' 명령어로 MongoDB를 실행합니다.


mongo



mongo를 입력했을 때, 콘솔창의 입력부가 '>'로 바뀌면 접속 성공입니다.


'show dbs' 명령으로 접속한 MongoDB의 데이터베이스들을 확인합니다.

 

show dbs



명령어를 실행한 모습입니다. SALES와 test부분은 제가 따로 만든 데이터베이스이고, 초기에는 Local 데이터베이스가 생성되어 있습니다.




use 명령어를 알아보겠습니다. use 명령어는 자신이 원하는 데이터베이스로 이동할 수 있도록 합니다.


use {데이터베이스 명}


use test 명령을 사용하면 test 데이터베이스로 바뀌는 것을 확인할 수 있습니다. 

※ test 데이터베이스가 존재하지 않아도 저 명령은 그대로 실행되는데, 그 경우는 첫 번째 Collection을 생성할 때 자동으로 데이터베이스가 생성됩니다.




실행한 인스턴스는 'db.shutdownServer()' 명령으로 종료합니다.

db.shutdownServer()



인스턴스를 종료하기 위해서는 admin으로 접속한 이후여야 합니다.

정상적으로 인스턴스가 종료되는 것을 확인할 수 있습니다.




'Database > NoSQL' 카테고리의 다른 글

[NoSQL with MongoDB] 2. MongoDB 소개  (0) 2017.06.30
[NoSQL with MongoDB] 1. NoSQL의 개념  (0) 2017.06.29

참고 포스팅 : NoSQL의 개념




MongoDB 특징

MongoDB는 관계형 데이터베이스가 아닌 문서 지향 데이터베이스 입니다. 문서 지향 데이터베이스에서는 '행'개념 대신에 보다 유연한 모델인 '문서'를 사용합니다. 내장 문서와 배열을 허용함으로써 문서 지향 모델은 복잡한 계층 관계를 하나의 레코드로 표현할 수 있습니다. 또한 문서의 키와 값을 미리 정의하지 않습니다. 따라서 고정된 형태의 스키마가 없습니다


  1. Humongos라는 회사의 제품 명이었으며, 현재 MongoDB inc로 회사명이 변경되었습니다.

  2. JSON Type의 데이터 저장 구조를 제공합니다.
    MongoDB는 유럽에서 컴퓨터의 표준화를 위해 설립된 비영리 표준화 기구인 ECMA에서 만들어진 경량의 데이터 표현 방식과 JavaScript 형태를 근거로 하는 JSON(Java Script Object Notation)타입으로 데이터를 관리합니다.

  3. Sharding(분산) / Replica(복제) / MapReduce(분산/병렬처리) 기능을 제공합니다.
    빅 데이터를 처리하는 기업 환경에서는 데이터를 안전하게 보관하고 운영하는 것이 중요합니다. MongoDB는 Replica기능과 Shard 기능을 통해 복제 및 분산 처리가 가능한 기능을 제공하며 MapReduce 기능을 통해 빅 데이터에 대한 빠른 추출이 가능합니다.

  4. CRUD(Create, Read, Update, Delete)  위주의 다중 트랜잭션 처리도 가능합니다.
    관계형 데이터베이스의 주요 기능인 CRUD 위주의 다중 트랜잭션 처리도 가능합니다. 관계형 데이터베이스는 트랜잭션 위주의 데이터를 보다 효율적으로 처리하기 위한 기술이라면, NoSQL은 빅 데이터의 빠른 저장과 추출 및 분석을 용이하게 하기 위한 기술이기 때문에 용도가 다르다고 할 수 있습니다.

  5. Memory Mapping 기술을 기반으로 Big Data 처리에 탁월한 성능을 제공합니다.
    메모리 매핑 기술을 통해 빅 데이터의 효율적 처리에 최적화된 데이터베이스 구조를 제공하고 있습니다.

MongoDB 용어 소개

관계형 데이터베이스의 논리적 구조에 대한 용어와 MongoDB의 논리적 구조에서 사용하는 용어를 비교하여 설명하겠습니다.


관계형 DB / MongoDB


     1) TABLE / COLLECTION                         

     2) ROW / DOCUMENT                           

     3) COLUMN / FIELD                               

     4) PRIMARY KEY / OBJECT_ID Field           

     5) RELATIONSHIP / EMBEDDED & LINKING


사원번호 (PK / OBJECT_ID Field)

사원명

직급

부서번호(Column / Field)

1 (Row / Document)

김철수

차장

10

2

김영희

과장

30

3

이대리

대리

20

    




'Database > NoSQL' 카테고리의 다른 글

[NoSQL with MongoDB] 3. MongoDB 입문하기  (0) 2017.07.03
[NoSQL with MongoDB] 1. NoSQL의 개념  (0) 2017.06.29

NoSQL 이란?


 NoSQL을 단어 그대로 해석한다면 "SQL이 아니다"라고 해석할 수 있지만 실제 의미는 "Non Relational Operational Database SQL",  "관계형 데이터베이스가 아닌 SQL" 이라는 의미로 해석해야 합니다.


 4차 산업 혁명 시대가 도래하며 빅 데이터(Big Data)와 클라우드 컴퓨팅(Cloud Computing)이라는 단어가 주목을 받고 있습니다. 기존의 관계형 데이터베이스는 최근 클라우드 컴퓨팅 환경에서 발생하는 빅 데이터를 효과적으로 저장, 관리하는 데 여러 가지 문제점이 발생하고 있습니다. 이러한 문제점을 개선, 보완하기 위한 새로운 데이터 저장 기술이 요구되었는데 이것을 NoSQL이라고 합니다.


 NoSQL이 왜 급부상하고 있는지에 대한 이유를 살펴보기 위해서는 시간을 거슬러 올라가야 합니다. 국내에 PC가 보급되기 시작하던 1980년대에는 컴퓨터를 주로 문서 작업이 대부분이었기 때문에 컴퓨터에 대한 활용도가 떨어질 수 밖에 없었습니다. 이러한 문제점을 개선하기 위해서 서버에는 데이터를 배치하고 사용자의 PC에는 운영 프로그램을 배치하여 서버의 관리 비용은 줄이고 PC의 자원들은 최대한 활용하는 것이 효율적인 시스템 운용 방법이라는 것을 깨달았습니다. 이러한 개발 패러다임을 클라이언트 / 서버 환경이라고 합니다.


 이러한 클라이언트 / 서버 개발 환경에서는 서버에 배치된 데이터들을 많은 사람들이 서로 공유할 수 있어야 하는데 기존의 파일 시스템으로 한계가 있을 수 밖에 없었기 때문에 DBMS라는 새로운 데이터 저장 기술이 각광 받기 시작한 것이며 오늘날 까지 광범위한 분야에서 널리 활용되고 있습니다.


 클라이언트 / 서버 개발 환경을 통해 인트라넷, 인터넷에 접속하는 단계를 넘어 스마트 폰과 태블릿 장치들을 통해 무선 인터넷 환경에 접속할 수 있는 네트워크 기술에 대한 비약적인 발전이 이루어졌습니다.  이것은 우리가 예상하지 못했던 빅 데이터를 양산하게 되며 다양한 운영 프로그램들을 언제, 어디에서라도 설치, 사용할 수 있어야 한다는 것을 의미하게 되었습니다. 이러한 개발 패러다임을 클라우드 컴퓨팅 환경이라고 합니다.


 이러한 클라우드 컴퓨팅 환경을 구축하기 위해서는 기업 환경에 맞는 최적의 데이터베이스를 구축할 수 있어야 하며 필요에 따라 DBMS 소스 프로그램을 수정할 수 있어야 하고 저렴한 비용으로 구축될 수 있는 FreeWare 제품들이 요구될 수 밖에 없지만, 기존의 관계형 데이터베이스는 이러한 시대적 요구에 부합되지 않아 NoSQL이라는 새로운 데이터 저장 기술이 부상하게 되었습니다.


NoSQL의 장점?

  1. 클라우드 컴퓨팅 환경에 가장 적합합니다.
    클라우드 컴퓨팅 환경이 구축되기 위해서는 유연한 System 설계가 요구되어지는데 그 목적을 달성하기 위해서는 기업 환경에 맞는 최적의 데이터 베이스를 구축해야 합니다. 따라서 소스 프로그램을 수정할 수 있는 Open Source여야 하며 저렴한 비용으로 구축하기 위해서는 FreeWare 제품이어야 하는데 이 목적에 NoSQL이 가장 부합하다고 할 수 있습니다.

  2. 유연한 데이터 모델을 구축할 수 있습니다.
    NoSQL은 비정형화 데이터 구조로 설계되기 때문에 조인(Join)을 피할 수 있고 효과적인 관리와 빠른 성능을 보장 받을 수 있습니다.

  3. 빅 데이터 처리에 효과적입니다. 
    NoSQL 기술은 대부분 Memory Mapping 기술로 구현되기 때문에 일반적인 관계형 데이터베이스보다 빅 데이터에 대한 읽기 / 쓰기 작업이 빠르며     무엇보다도 기존의 OS와 HW에 그대로 구현할 수 있기 때문에 유연성과 확장성이 좋은 것이 특징입니다.


NoSQL이 위와 같은 장점을 가지고 있기는 하지만, 그렇다고 관계형 데이터베이스가 몰락하는가? 그것은 아닙니다. 왜냐하면, 관계형 데이터베이스와 NoSQL은 목적이 다르다고 할 수 있습니다. 관계형 데이터베이스는 클라이언트 / 서버 환경의 개발 패러다임에 맞는 데이터 저장 기술이라면 NoSQL은 클라우드 컴퓨팅 환경의 개발 패러다임에 맞는 최적의 데이터 저장 기술이기 때문입니다.


정리하면, 

NoSQL : 클라우드 컴퓨팅 환경의 개발 패러다임에 적합한 데이터 저장 기술

RDB : 클라이언트 / 서버 환경의 개발 패러다임에 적합한 데이터 저장 기술 


NoSQL의 종류

현재, NoSQL이라는 기술로 만들어진 제품의 종류는 150가지가 넘지만, 실제로 사용자 층을 확보하고 있고 꾸준한 기술 지원과 업그레이드를 하고 있는 제품은 다음과 같습니다.


1) MongoDB    2) Casandra    3) HBASE    4) CouchDB    5) Riak    6) Redis


MongoDB를 제외한 나머지 제품들은 읽기와 쓰기에서 일관되지 못한 성능을 보여주나, MongoDB는 성능에 큰 차이가 없는 안정적인 결과를 보여줍니다.

또한, 저장 공간의 효율성, 시스템 확장성, 관리성, 안정성 측면에서도 일관되게 좋은 평가를 받았으며 무엇보다도 사용자를 위한 기술지원, 새로운 버전에 대한 출시계획, 커뮤니티 지원 등에서도 MongoDB는 좋은 평가 결과를 받았습니다.


따라서 저는 MongoDB를 활용하여 이후 Posting을 진행할 예정입니다.

'Database > NoSQL' 카테고리의 다른 글

[NoSQL with MongoDB] 3. MongoDB 입문하기  (0) 2017.07.03
[NoSQL with MongoDB] 2. MongoDB 소개  (0) 2017.06.30

+ Recent posts