MongoDB

MongoDB

From 서울대학교 빅데이터 아카데미(빅데이터 프로그래밍) 문봉기 교수님 Lab 조교

1. MongoDB와 NoSQL

  • MongoDB는 문서지향(Document-Oriented)적 Cross-platform 데이터베이스
  • 확장성과 성능이 뛰어나며, 대표적인 NoSQL Database
  • 계층제어를 할 수 있는 데이터베이스

NoSQL?

  • NoSQL은 Not Only SQL의 약자로 기존 RDBMS의 한계를 극복하고자 고정된 스키마나 JOIN이 존재하지 않는 데이터베이스의 형태

기존 RDBMS와의 차이

RDBMSMongoDB
DatabaseDatabase
TableCollection
Tuple / RowDocument
ColumnKey / Field
Table JoinEmbedded Documents
Primary KeyPrimary Key (_id)
Oracle DB, MySQL 등MongoDB 등

Document

  • Document는 하나의 의미를 지닌 데이터로 기존 RDBMS에서는 주로 Record, Tuple 등의 형태로 불리는 단위
  • 기존 RDMBS와의 가장 큰 차이는 고정된 스키마가 존재하지 않기 때문에 하나의 Collection(Table)에 포함되는 Document(Record)가 서로 다른 데이터를 가지는 것이 가능
  • Key-Value pair로 구성(BSON: JSON 구조와 유사)
{
    "_id": ObjectId("5bdd4d949b7e8a4674fa3014"),
	"name": "Lee",
	"age": 27,
	"address": "seoul",
    "favorite_movies": [
        {
            "id":1,
            "title":"Harry Potter and the Philosopher's Stone",
            "year": 2001
        },
        {
            "id":5,
            "title":"THe Fast and Furious",
            "year": 2009
        }
    ]
}

기존 RDBMS 대비 장점 및 단점

  • 장점
    • 고정된 스키마가 존재하지 않고, Document의 Value로 Document를 사용하는 것이 가능하기 때문에 기존 RDBMS에서 여러개의 Table로 구성하는 데이터를 하나의 Document로 구성하는 것이 가능
    • 고정된 스키마가 존재하지 않기 때문에 어떠한 형태의 데이터라도 쉽게 저장하는 것이 가능하며, JSON 형태를 띄고 있어서 직관적이고 개발이 용이
    • Replicate, Auto-Sharding 과 같은 기능을 통해 고가용성을 구현하기에 용이
  • 단점
    • RDBMS에 비해 정합성이 떨어져 금용, 결제 등에서는 부적합한 부분이 존재
    • 기존 SQL을 모두 이전할 수 없어서 RDMBS에서 변경 시 별도의 작업이 필요
    • 메모리 관리를 DBMS가 아닌 OS에 위임함에 따라 성능의 차이가 발생
    • RDBMS의 Join이 없어 단일 Collection 내에서 모든 Query를 처리해야함에 따른 비효율성
    • 최대 Document 사이즈가 제한되어있습니다.
    • UPDATE 가 INSERT에 비해 현저히 느립니다.

2. MongoDB의 사용

MongoDB를 사용하는 2가지 방법

  1. 설치형 MongoDB를 Local 혹은 Server에 설치하여 사용
  2. MongDB Atlas를 통해 Free Cluster를 생성하여 사용

MongoDB 직접 설치

  • 직접 설치하기 위해서는 mongoDB 홈페이지를 통해 설치파일을 다운로드 하여 설치를 진행
  • MongoDB의 압축이 풀린 경로가 기본경로이며, OS 설정 및 다운로드 버전에 따라 경로는 상이

    • Windows: C:\Users\**\Downloads\mongodb-win32-x86_64-2008plus-ssl-4.0.3\bin
    • OSX: /Users/**/Downloads/mongodb-osx-x86_64-4.0.3/bin
  • Database 경로 지정하기

    • MongoDB의 기본 Database 경로는 Windows는 C:\data\db OSX은 /data/db
    • Database 경로가 존재하지 않으면 MongoDB를 실행할 때 에러 발생
    • 기본 Database 경로를 생성해 주거나 아래 명령어를 통해 Database 경로를 실제 존재하는 경로로 지정
    // Windows
    "C:\Users\<USERNAME>\Downloads\mongodb-win32-x86_64-2008plus-ssl-4.0.3\bin\mongod.exe" --dbpath d:\test\mongodb\data
      
    // OSX
    ~/Downloads/mongodb-osx-x86_64-4.0.3/bin/mongod --dbpath /test/mongodb/data
    
  • MongoDB 실행하기

    // Windows
    "C:\Users\<USERNAME>\Downloads\mongodb-win32-x86_64-2008plus-ssl-4.0.3\bin\mongo.exe"
      
    // OSX
    ~/Downloads/mongodb-osx-x86_64-4.0.3/bin/mongo
    

MongoDB Atlas 활용하기

  1. MongoDB 홈페이지 접속 및 회원 가입 https://www.mongodb.com/cloud 로 이동 1541411889909 1541412268206
  • Global Cluster Setting(Free Tier)

  • 무료로 제공되는 M0를 선택 1541412960597 1541413097276

  1. User 생성 및 IP Whitelist 작성

    1541413405856 1541413412013

    IP Whitelist 추가: 실습에서는 편하게 활용하기 위해서, 전체 Access를 열어주겠습니다.

    실습 후에 활용하시는 용도에서는 꼭 이후에 삭제 해주시기 바랍니다.

    1541413418215 1541413422395

    삭제하는 방법 - IP Address 목록에서 DELETE버튼으로 삭제하시면 됩니다.

    image-20181107113123217

  2. MongoDB Atlas URL 확인하기 1541413601381 1541413610092

MongoDB Shell

  1. 다운로드: 다음 화면에서 노트북에 맞는 운영체제를 선택합니다.

    image-20181107162246355

    다운로드를 클릭합니다.

    image-20181107162639620

  2. 실행

    바탕화면에 ‘mongo’라는 폴더를 생성하고, 해당 폴더에 다운로드 받은 파일 압축을 풉니다.

    image-20181107163047582

    다운로드 페이지에서 Mongo Shell을 통해 connection을 맺는데 필요한 SVR connection string을 복사합니다.

    1541413615622

    윈도우 버튼을 클릭하고 cmd를 입력하여, 커멘드 창을 엽니다.

    image-20181107163345457

    커멘드 창에 밑에 Windows 명령어를 (본인 노트북 세팅에 맞도록 일부 수정하세요) 입력하시면 됩니다.

Local MongoDB 접속 - 이번 실습에서는 진행하지 않습니다.

// Windows
"C:\Users\<USERNAME>\Desktop\mongo\mongodb-win32-x86_64-2008plus-ssl-4.0.3\bin\mongo.exe"

// OSX
~/Downloads/mongodb-osx-x86_64-4.0.3/bin/mongo

MongoDB Atlas 접속

// Windows
"C:\Users\<USERNAME>\Desktop\mongo\mongodb-win32-x86_64-2008plus-ssl-4.0.3\bin\mongo.exe" "mongodb+srv://[mongodb atlas url]" --username admin

// OSX
~/Downloads/mongodb-osx-x86_64-4.0.3/bin/mongo "mongodb+srv://[mongodb atlas url]" --username admin

image-20181108030423169

암호입력 커멘드가 뜨면 admin 사용자의 암호값을 입력합니다.

image-20181108030542279

올바른 암호 입력시, 클러스터에 성공적으로 연결된것을 확인할 수 있습니다.

  • MongoDB Shell 종료: Ctrl + D

오류 대응

  • Windows 에서 MongoDB 압축 해제 후 MSVCP140.dll 오류로 Shell이 실행되지 않는 경우
  • PC에 설치된 Visual Studio의 visual C++이 구버전인 경우에 발생
  • 다음 주소에 접속하여 재배포 패키지를 다운로드 & 설치