MongoDB의 기본 동작 원리

MongoDB 구성

  • MongoDB는 수평적 확장이라는 특징을 가짐
  • 한 대 이상의 서버로 구성하는 것이 일반적
  • MongoDB는 메모리 사용 가능량에 대비하여 성능이 좌우되기 때문에 독립된 서버에서 실행을 권장
  • 기본적으로 MongoDB는 mongod 라는 실행파일을 단위로 실행
  • 데이터를 한 곳에만 저장하면 데이터 손상 시 복구가 불가능하기 때문에 보통 3개의 Replica 단위로 구성하여 데이터를 복제
  • mongos 서버를 통해 마치 한 대의 데이터베이스 서버처럼 사용 가능


MongoDB 설치

  • MongoDB는 총 4개의 운영체제를 지원
  • MongoDB를 사용하는 대부분의 유저는 90%가 리눅스를 사용
    • 빅데이터 처리를 위해서는 많은 수의 머신이 필수적으로 사용
    • 운영체제에 대한 비용이 상대적으로 적은 리눅스를 사용
  • MongoDB의 철학 : 메모리 관리는 운영체제에게 맡기자
    • 상대적으로 메모리 관리에 뛰어난 *nix 베이스의 운영체제 선택
  • 윈도우용 MongoDB는 설치 및 사용이 간편함
  • 지원 언어
    • Java / Java Script
    • Perl / PHP / Python
    • Ruby / Scala / Erlang / Haskell
  • 지원 운영체제
  • MongoDB 공식 사이트 (mongodb.org) 접속 후,
    다운로드 페이지에서 운영체제에 맞는 배포판 선택 및 다운로드

MongoDB 실행 / 종료

MongoDB 실행

  • MongoDB 설치 폴더로 이동
  • MongoDB 데이터 저장 폴더 생성 / mkdir C:\data
  • MongoDB 실행 / mongod --dbpath C:\data
  • MongoDB Shell 실행 / mongo

  • MongoDB 실행 (서비스) / mongod --config C:\Program Files\MongoDB\mongodb.conf --install


MongoDB 종료

  • MongoDB 안전 종료 (clean exit)
    • > use admin;
    • > db.shutdownServer();


Node.js의 개요

기본 개념

  • MongoDB는 다양한 언어를 통해 사용 가능
  • 본 강의는 JavaScript 기준으로 설명
  • Node.js - 네트워크 프로그래밍을 위한 자바스크립트 플랫폼
  • Node.js 내부는 표준 자바스크립트를 실행하기 위한 V8엔진을 기반으로 동작
  • 손쉽고 간단하게 HTTP , URL 처리 가능
  • MongoDB 데이터 입출력 시 사용되는 JSON처리가 용이
  • 구글 크롬 웹브라우저에서 사용하는 자바스크립트 엔진(V8)을 이용하여 애플리케이션을 구축할 수 있게 해주는 프레임워크
  • 자바스크립트를 이용하기 때문에 다른 언어에 비해 쉽고 간편하게 애플리케이션 제작 가능
  • V8이라는 크롬에서 사용하는 자바스크립트 엔진을 사용하기 때문에 스크립트 언어의 단점인 느린속도 개선
  • event-driven, non-blocking I/O 등의 개발 방식을 사용하여 네트워크 프로그래밍에 유리

Event-driven

  • 사용자 또는 외부 환경이 만들어낸 이벤트를 기반으로 어떤 처리를 할지 지정해주는 개발 방식
  • 예를들어 사용자가 마우스를 움직이거나 키보드를 입력하거나 새로운 데이터가 들어올 때 이 모든것을 이벤트로 처리
  • 일부 웹서버는 데이터가 들어올 때까지 무한정 기다리는 문제가 있음
  • 특정 이벤트에 대한 처리만하여 웹서버와 연결시키면 되기 때문에 자원을 최소화할 수 있다.

Non-blocking

  • Blocking I/O
    • 쓰기/읽기 이벤트가 발생할 경우 해당 이벤트가 끝날 때까지 해당 모듈을 계속 점유
    • 다른 일을 할 수 없는 상태
    • 메모리를 계속 차지하고 있기 때문에 자원의 낭비가 심함
  • Non-Blocking I/O
    • 쓰기/읽기 이벤트가 시작되어도 모듈을 반환
    • 다른 작업이 가능한 준비상태로 전환
    • 동기식보다 빠르고 메모리도 적게 차지함

Node.js 설치

http://nodejs.org

 

Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org


Node.js 개발 환경

http://eclipse.org

 

The Community for Open Innovation and Collaboration | The Eclipse Foundation

The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 375 open source projects, including runtimes, tools and frameworks.

www.eclipse.org


+ Recent posts