08-12 MongoDB

Ruinak·2021년 8월 12일
0

Bigdata Lesson

목록 보기
9/18
post-thumbnail

1. NoSQL 개요

Big Data Processing Flow

NoSQL?

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

No SQL(X), Not Only SQL(O)

Non-Relational Operational Database SQL

NoSQL : RDBMS vs NoSQL

NoSQL의 시대적 요구

  • 카를로스 트로찌(Carlo Strozzi)
    - 1998년 표준SQL 인터페이스를 채용하지않은 자신의 경량 오픈 소스
    관계형데이터베이스를 NoSQL이라 명명
  • 2009년 라스트 FM의 요한 오스칼손(Johan Oskarsson)
    - 오픈소스 분산 데이터베이스를 논하기 위한 미트업 행사를 조직하면서, 이와 같은 데이터베이스를 NoSQL이라고 부름.
  • 고전적인 관계형데이터베이스 시스템의 주요 특성을 보장하는 ACID 제공을 주로 시도 하지않은 수 많은 비관계형, 분산 데이터 자료 공간의 등장에 따라 이 이름이 사용

NoSQL의 장점

  1. 클라우드 컴퓨팅 환경에 적합
    1) Open Source
    2) 하드웨어 확장에 유연한 대처 가능
    3) RDBMS에 비해 저렴한 비용으로 분산 처리와 병렬처리 가능
  2. 유연한데이터모델
    1) 비정형 데이터 구조 설계로 설계 비용감소
    2) 관계형 데이터베이스의 Relationship과 Join 구조를 Linking과 Embedded로 구현하여 성능이 빠름
  3. Big Data 처리에 효과적
    1) Memory Mapping 기능을 통해 Read/Write가 빠름.
    2) 전형적인 OS와 Hardware에 구축 가능.
    3)기존 RDB와 동일하게 데이터 처리 가능

NoSQL의 종류

NoSQL 데이터베이스 유형

DBMS Ranking(참조: https://db-engines.com/en/ranking)

CAP 이론

NoSQL & RDBMS

MongoDB 적용 사례

  • Disney Interactive Media Group
    - Mysql -> MongoDB
    - Mysql 바이너리 데이터 저장 한계 및 성능 문제
    - 다양한 Game, Media Data 관리시스템에 적용
    - ReplicaSets & Auto Sharding 유연성과 확장성 활용
  • Music Television
    - 비디오/오디오 Content Management System에 적용
    - MySQL -> NoSQL로 전환
    - MTV의 계층적 데이터구조에 적합한 데이터 모델 활용
    - 쉬운 Query와Index를 이용한 빠른 검색기능 활용
  • Business Media Company(Forbes)
    - 원고 자동 수집 및 발행 시스템에 적용
    - Oracle DB -> NoSQL로 전환
    - 정형적인 Static Data관리에서 Dynamic Data 관리로 전환하면서 발생하는 재설계 및 구축비용 절감 목적으로 활용
  • Shutterfly
    - 인터넷 기반 사진 정보 및 개인출판 서비스 사이트
    - Oracle DB를 NoSQL로 전환(20TB)
    - 100만명의 고객/60억개의 이미지/초당10,000개 트랜잭션 처리에서 발생하는 구축/관리 비용 및 성능 문제가 이슈

2. MongoDB 소개

MongoDB란?

  • Humongos라는 회사의 제품명이 었으며 10gen으로 회사명이 변경 -> 현재 Mongodb.inc로 변경
  • JSON Type의 데이터 저장구조를 제공
    - (Standard ECMA-262 3rdEdition-1999을 근거로하는 JavaScript 형태의 데이터 표현방식을 근거로한다. [European Computer Manufacturers Association])
  • Sharding(분산)/Replica(복제) 기능을 제공.
  • MapReduce(분산/병렬처리) 기능을 제공.
  • CRUD(Create, Read, Update, Delete)위주의 다중 트랜잭션처리도 가능
  • Memory Mapping기술을기반으로Big Data 처리에 탁월한 성능을 제공

MongoDB EcoSystem

MongoDB 장점

  • MongoDB의 인기
  • 빠른 속도와 확장성
  • 친숙함과 이용의 편리성
  • 쉽고 빠른 분산 컴퓨팅 환경 구성

언제 MongoDB사용 해야하는가?

  • 스키마가 자주 바뀌는 환경
  • 분산 컴퓨팅 환경

3. MongoDB 환경 구축

  • download url: https://www.mongodb.com
    - Software -> Community Server
    - Version : 5.0.2
    - Platform : Windows
    - Package : zip
  • Download
  • 압축해제 : c:\monogdb
  • Path 연결 : 고급시스템 설정보기-> 환경변수 ->path 추가
  • 데이터베이스 폴더 작성 : c:\mongodb\data
  • 버전 확인 및 도움말 보기
    - C:\mongod --help
    - C:\mongod --version

MongoDB 설치

  • 구글에서 mongodb 검색 후 공식사이트로 들어갑니다.
  • 설정 값 확인 후 압축파일을 다운로드를 합니다.
  • 다운로드를 한 파일을 내가 원하는 위치에서 압축해제를 합니다.
  • 폴더 이름을 mongodb로 바꿔주고 내부에 data 폴더를 하나 새로 만들어줍니다.
  • 고급 시스템설정에 들어가서 환경변수에서 시스템 Path에 등록해줍니다.
  • cmd에서 mongod --version을 입력해서 설치가 잘 되었는지 확인해줍니다.
  • mongod --dbpath 경로 를 입력해줍니다.
  • mongod --dbpath c:\devtools\util\mongodb\data
  • mongodb 서버를 실행하는 것입니다.
  • cmd를 새로 열어서 mongo를 입력합니다.
  • mongodb가 실행되었습니다.
  • use test를 입력하면 test db로 전환이 됩니다.
  • show dbs를 입력하면 내부에 정보를 볼 수 있습니다.
  • show collections를 입력합니다.
  • collections에 아무것도 없기 때문에 아무것도 뜨지 않습니다.
  • db.emp.inserOne({eno:1, name:'홍길동', dept:'영업'}) 을 입력하면 emp DB에 1개의 데이터를 집어넣습니다.
  • position을 추가해서 입력해도 잘 들어갑니다.
  • db.emp.find( )를 사용해서 내가 추가한 데이터를 확인할 수 있습니다.
  • db.emp.insert({eno:3, name:'aaaa', dept:'영업'}) 을 입력해도 데이터가 입력이 됩니다.
  • db.emp.find().pretty( )를 사용하면 위와 같은 형식으로 데이터를 볼 수 있습니다.
  • mongodb를 종료하기 위해서는 use admin을 이용해서 db를 전환해줍니다.
  • db.shutdownServer( )를 입력하면 서버를 실행한 cmd에서 서버가 종료되고 명령프롬프트로 돌아온 것을 볼 수 있습니다.
  • mongodb를 실행시킨 곳에서 exit를 입력하면 bye가 출력된 후 명령프롬프트로 전환됨으로써 완전히 종료되었습니다.

Mongodb 서버 실행

  • 새 console 실행
  • mongod –-dbpath c:\devtools\util\mongodb\data
    // mongod –-dbpath c:\mongodb\data

Mongodb 클라이언트 실행

  • 새 console 실행
  • C:>mongo

서버 종료

  • C:>use admin
  • C:>db.shutdownServer()

클라이언트 종료

  • Exit 또는 ctrl+c

MongoDB 구조

  • Document 기반 데이터베이스
  • Database > Collection > Document > Field 계층으로 구성

Document

  • RDBMS의 Row에 해당
  • Key, Value들의 쌍으로 이루어짐
  • ObjectId
    - RDBMS의 Primary Key와 같이 고유한 키를 의미
    - 차이점은 Primary Key는 DBMS가 직접 부여, ObjectId는 클라이언트에서 생성
    - 유닉스 시간, (기기Id+프로세스Id), 카운트로 구성

4. 데이터 타입

BSON(Binary JSON)

  • Json형태의 문서를 바이너리 형태로 인코딩한 바이트 문자열

MongoDB 데이터 타입

MongoDB 데이터

profile
Nil Desperandum <절대 절망하지 마라>

0개의 댓글