108
MongoDB 튜토리얼 박재홍 [email protected]

mongodb tutorial

Embed Size (px)

DESCRIPTION

mongodb 소개 및 basic tutorial 자료입니다. - 데이터베이스의 진화 - nosql의 등장배경 및 역할 - mycq 개발 경험 - mongodb 기능 및 구조

Citation preview

Page 1: mongodb tutorial

MongoDB 튜토리얼

박 재 홍

[email protected]

Page 2: mongodb tutorial

Big Data 처리 기술

NoSQL

MongoDB

Page 3: mongodb tutorial

사례시스템

Page 4: mongodb tutorial

로그 인프라

Page 5: mongodb tutorial

3G망 패킷분석

Page 6: mongodb tutorial

모바일 리서치

Flurry.com

Page 7: mongodb tutorial

항공기 블랙박스

Page 8: mongodb tutorial

CCTV

Person of Interest

Page 9: mongodb tutorial

전파 분석

Page 10: mongodb tutorial

Glory FS 관리도구

Page 11: mongodb tutorial

오픈스택 관리도구

Page 12: mongodb tutorial

실시간 이벤트 처리

SLA, 자판기

Page 13: mongodb tutorial

빅데이터 처리 기술 개요

Page 14: mongodb tutorial

데이터 처리 기술의 진화

SQL에 의존하지 않는 기술의 발전 및 성공사례 증가

빅서비스 >다양한 데이터 처리 요구(데이터 구조, 량, 속도) 증가 > 상용DB는 고비용 >입맛에 맞는 기술이 없음 >직접 만들어 사용

Page 15: mongodb tutorial

데이터 처리 기술 진화 가속화

Google MapReduce (2004)

Page 16: mongodb tutorial

Scale Up vs. Scale Out

128cores(4core*32)4 TB Memory

분산처리

20억원 1억원vs.

HP Superdome 2 (2010)

(4core, 128G) * 32

Page 17: mongodb tutorial

NoSQL(No Join, No Transaction)

2PC?OK

네트워크로 컴퓨터 연결//복잡함컴퓨터 대수가 많다보니, 고장 확율 높아짐.

이런상황에서 TX보장 및 JOIN기능 제공 하면서 성능내기쉽지않음.TRANSACTION (X) // Atomic OperationJOIN (X) // Embedded Document로 해소

분산처리

Page 18: mongodb tutorial

NoSQL 기술의 시장은?

상용(오픈)RDBMS

상용(오픈)RDBMS

NoSQL

SQL (ex, Oracle): 현재가치가 큰 데이터NoSQL: 미래가치가 큰 데이터

• 대용량 데이터 처리 비용 감소• 전체 데이터 처리 시장 확대

RDBMS > NoSQL로 전환

시장

Page 19: mongodb tutorial

2014.2

2013

Page 20: mongodb tutorial

http://db-engines.com/en/ranking

Page 21: mongodb tutorial

빅데이터 처리 기술

Page 22: mongodb tutorial

빅데이터 처리 플랫폼 구조

빅데이터 처리 플랫폼

수집

플랫폼 관리분석 서비스

(GUI)연동 서비스(Open API)

저장 분석

Page 23: mongodb tutorial

빅데이터 처리 플랫폼 구조

데이터 수집

• 다양한 데이터타입 수집방법 제공• 정형, 반정형, 비정형

• 다양한 데이터소스 수집방법 제공• 파일, DB, 스트림

데이터 저장소

• 대용량 분산파일시스템• HDFS, GloryFS, GridFS

• 대용량 분산DB (NoSQL)• MongoDB 등

• 대용량 텍스트 검색 엔진• Elastic Search 등

데이터 분석 프레임워크

• 배치분석 방법 제공: 파일 기반 배치분석:Hadoop M/R, DB 기반 배치분석:MongoDB M/R

• 대화형분석 방법 제공: Hbase, Mongo 등

• 머신러닝 분석 방법 제공: Mahout 등• Complex Event Processing 분석방법

제공: Esper, MyCQL 등

플랫폼 관리 서비스

• 클라우드 가상머신 기반 자원할당• 인프라 상태 모니터링 (노드,

프로세스, 로그 등)• 사용자 인증 및 관리• 인프라 설정관리• 빌링

분석 서비스 (GUI)

• 배치분석 알고리즘 관리 및 수행• 대화형 분석 방법 제공• 워크플로우 관리• 데이터 업/다운로드 방법 제공• 분석 결과 시각화 제공

연동 서비스 (Open API, 3rd Party 연동)

• 인증• 서비스 검색• 서비스 연동, 기능조회 등• 데이터 업/다운로드• 외부 API 연동

Page 24: mongodb tutorial

데이터 소스

• 파일• (스트림)데이터• DB• 연동 API• …

수집기

• 데이터 변환• 데이터 변환 규칙 (XML, JSON, DB 등)• 데이터 필터링, Smoothing, Shedding, Sampling

• 데이터 라우팅 & 적재• 파일시스템 또는 데이터베이스에 데이터 적재• 데이터 압축 적재• 분산 병렬 적재 기법• 적재 신뢰성 보장 유무

• 데이터 보관주기• 용량기준 데이터 삭제 후 적재• 보관주기 기준 과거 데이터 삭제

• 이벤트 처리• 데이터 적재전 특정 상황 발생 감지 및 전달

• 방식: 에이젼트, API제공 or 호출

• 실행위치• 데이터가 생산되는 장비• 수집 전용 장비

저장소

데이터수집

Page 25: mongodb tutorial

• 분산 파일 시스템

• 분산 DB(NoSQL) 시스템

• 분산 텍스트 검색엔진 시스템

• 파티셔닝(샤딩)

• 복제

• 로드밸런싱

• 데이터 마이그레이션

• 유연성

• 신뢰성

• 가용성

• 확장성

• 안정성

• 성능

• 보안

저장 기술데이터저장

Page 26: mongodb tutorial

분산파일 시스템

ex) Hadoop FS메모리: 64M (2억5천개파일)Single Node

데이터저장

Page 27: mongodb tutorial

Key/Value DB

MapMap.Put(key,value);

Value = Map.Get(key);

Key: User1Value: Name1, Point1, X1

Key: User2Value: Name2, Point2, X2

Key: X1Value: ****

Key: X2Value: ****

데이터저장

Page 28: mongodb tutorial

Graph DB데이터저장

Page 29: mongodb tutorial

MongoDB데이터저장

Page 30: mongodb tutorial

데이터저장

Page 31: mongodb tutorial

데이터저장

Page 32: mongodb tutorial

배치 분석: Map/Reduce데이터분석

Page 33: mongodb tutorial

MongoDB Map/Reduce

// function finalize(key, value)-> final_value

데이터분석

Page 34: mongodb tutorial

MongoDB Map/Reduce데이터분석

Page 35: mongodb tutorial

Continuous Map/Reduce

T(n) T(n-1) T(n-2) … … T(0)

New Data

Area 1 Area 2

데이터분석

Hot Cold

Page 36: mongodb tutorial

실시간 데이터 스트림 분석

windowqueue1 as win1[size=5sec, slide=5sec]select * from win1where string like 'hello%' and (col2=1000 or col3=5000)

• MyCQ Server• Esper

MyCQL

데이터분석

Page 37: mongodb tutorial

데이터분석

Page 38: mongodb tutorial

full text 검색

데이터분석

Page 39: mongodb tutorial

서비스 운영&품질관리

• 운영

– 관리

• 처리용량 설계&계획

• H/W(서버,네트워크장비) 설계 및 구축

• 클러스터&노드 추가,삭제,변경

• 데이터 삭제,백업,복구

• 가상머신 기반의 클라우드 환경에서 관리

– 모니터링

• GUI 제공 (PC용, Mobile App, Web App(RIA 기반, W3C 표준준수)

• H/W (CPU, Memory, Disk, Network 등)

• 데이터 사이즈, 레코드수, OP(read,write,delete)성능 등

• 품질관리

– 기능 시험

• 개발된 수집,저장,분석 기능에 대한 시험

– 비기능 시험

• 성능, 안정성, 확장성 등

– 수집성능(처리량, 처리건수 등), 분석성능(분석량, 건수 등)

– 노드 장애시 안정성 시험.

– 처리량에 대한 확장성 시험 등.

플랫폼관리

Page 40: mongodb tutorial

Data Source

Real-Time Data Stream Processor

DatabaseDatabase

Application

Real-TimeApplication

Batch Analysis

pattern

EventArchiving

saveevents

history datajoin

events (tx)

updaterule

Architecture

Page 41: mongodb tutorial

MONGO DB

Page 42: mongodb tutorial

MongoDB

MongoDB (from "humongous")

Scalable

high-performanceopen source

NoSQL database

Written in C++

from 2007

Page 43: mongodb tutorial

User Application

Client LibraryApache, BSD, ...

MongoDB Software License

MongoDB

GNU AGPL v3.0

Page 44: mongodb tutorial
Page 45: mongodb tutorial

MONGO DBBasic

Page 46: mongodb tutorial

www.mongodb.org

Page 47: mongodb tutorial

MongoDB 매뉴얼

Page 48: mongodb tutorial

MongoDB Shell (연습용)

Page 49: mongodb tutorial

MongoDB 다운로드

Page 50: mongodb tutorial

MongoDB University

Page 51: mongodb tutorial

MongoDB University

Page 52: mongodb tutorial

MongoDB MMS & Backup

Page 53: mongodb tutorial

MongoDB 특징

Document-Oriented StorageFull Index Support

Replication & High Availability Auto-Sharding

Querying Fast In-Place Updates

Map/ReduceGridFS

Page 54: mongodb tutorial

MongoDB 저장 구조 (Logical)

MongoDBDatabase

CollectionDocument...

......

Page 55: mongodb tutorial

JSON• JSON (JavaScript Object Notation)

– Standard ECMA-262 3rd Edition - December 1999object{}{ members }

memberspairpair , members

pairstring : value

array[][ elements ]

elementsvaluevalue , elements

valuestringnumberobjectarraytrue,falsenull

Grammar

Example

Document

Page 56: mongodb tutorial

BSONhttp://bsonspec.org

Grammar

Example

JSON에 비해 사이즈 줄이고컴퓨터가 처리하기에 성능이 더 좋음.

Page 57: mongodb tutorial

CRUD Demo• Shell• Java Application

insert

update

find

find

remove find

Page 58: mongodb tutorial
Page 59: mongodb tutorial

SQL to MongoDB Mapping

실행파일

Page 60: mongodb tutorial

SQL to MongoDB Mapping

Page 61: mongodb tutorial

CREATE, ALTER, INDEX, DROP

Page 62: mongodb tutorial

INSERT, SELECT

Page 63: mongodb tutorial

Indexing

indexing compound indexing

People Collection Products Collection

db.addresses.ensureIndex( { "user_id": 1 }, { unique: true } ) // 중복허용안함db.accounts.ensureIndex( { username: 1 }, { unique: true, dropDups: true } )db.people.ensureIndex( { zipcode: 1}, {background: true} ) //인덱싱하는동안에도 CRUD 가능.

db.addresses.ensureIndex( { "xmpp_id": 1 }, { sparse: true } ) //필드값 존재하는 문서의 값만 인덱싱

Page 64: mongodb tutorial

Index

• TTL Index

– 날짜 필드를 가진문서에, 일정시간 지나면 데이터를 삭제하도록 인덱싱

• Geospatial Index

– 2차원 인덱싱

– {loc: [ x , y ]}

– db.places.ensureIndex( { loc : "2d" } )

– 검색• 4각형: db.collection.find( { location: { $near: [100,100] } } );

• 원형: db.collection.find( { location: { $within: { $center: [ center, radius } } } );

• 다각형: db.collection.find( { location: { $within: { $box: [[100,120], [100,100], [120,100], [240,200]] } } } );

Page 65: mongodb tutorial

Update, Delete

Page 66: mongodb tutorial

Reference

• 문서

• 강의

Page 67: mongodb tutorial

MONGO DBDBA Level

Page 68: mongodb tutorial

REPLICATION

• Replica set

– A replica set consists of two or more nodes that are copies of each other. (i.e.: replicas)

– The replica set automatically elects a primary (master). No one member is intrinsically primary; that is, this is a share-nothing design.

– Drivers (and mongos) can automatically detect when a replica set primary changes and will begin sending writes to the new primary. (The mongos sharding process does this too.)

• Uses

– Data Redundancy

– Automated Failover / High Availability

– Distributing read load

– Simplify maintenance (compared to "normal" master-slave)

– Disaster recovery

eventual consistencyorconsistency

Page 69: mongodb tutorial

REPLICATION

• Replica Set Member Type

– Default

– Secondary-Only: These members have data but cannot become primary under any circumstance. Hidden: These members are invisible to client applications.

– Delayed: These members apply operations from the primary’s oplog after a specified delay. You can think of a delayed member as a form of “rolling backup.”

– Arbiters: These members have no data and exist solely to participate in elections.

– Non-Voting: These members do not vote in elections. Non-voting members are only used for larger sets with more than 12 members.

Page 70: mongodb tutorial

REPLICATION

• OPLog

– (operations log) is a special capped collection that keeps a rolling record of all operations that modify that data stored in your databases.

• Rollbacks

– MongoDB writes the rollback data to a BSON file in the database’s dbpath directory

oplog

oplogoplog

Page 71: mongodb tutorial

Sharding

• MongoDB의 수평확장성은 Auto-sharding (partitioning) 구조를 기반으로 함.– Automatic load balancing

– Easy addition of new machines without down time

– Scaling to one thousand nodes

– No single points of failure

– Automatic failover

Page 72: mongodb tutorial

Sharding

Page 73: mongodb tutorial
Page 74: mongodb tutorial
Page 75: mongodb tutorial
Page 76: mongodb tutorial
Page 77: mongodb tutorial
Page 78: mongodb tutorial
Page 79: mongodb tutorial
Page 80: mongodb tutorial
Page 81: mongodb tutorial
Page 82: mongodb tutorial
Page 83: mongodb tutorial
Page 84: mongodb tutorial
Page 85: mongodb tutorial
Page 86: mongodb tutorial

Sharding Status

Page 87: mongodb tutorial

MAP/REDUCE

// function finalize(key, value)-> final_value

Page 88: mongodb tutorial

MAP/REDUCE

Page 89: mongodb tutorial

Map Reduce Command

입력

출력입력데이터 검색(필터)

Page 90: mongodb tutorial

MongoDB’s Map/Reduce

분석 프로그램(분석알고리즘)

MongoD Shard MongoD Shard MongoD Shard MongoD Shard

알고리즘

1-25 25-50 51-7576-100Result:X

알고리즘 알고리즘 알고리즘

Page 91: mongodb tutorial

GRID FS

mongod mongod mongod

File

c1 c2 c3

split

chunks

File1c1

File2c2

File3c3

File2

File2c1

File2c1

Grid FS파일 검색가능파일정보에 인덱싱 가능File에 대한 Meta정보 추가/변경 가능

Page 92: mongodb tutorial

Memory Map

커널에 의해 여유 시간에 RAM과 DISK 의 동기화가 될 때까지서로 다른 데이터를 가질 수 있다. 개발자가 직접 커널에 동기화를 명령 할 수 있다. fsync()

Shred Memory-Map메모리 맵 변경 시 원본 파일과 데이터가 동기화가 되는방식

Private Memory-Map처음 메모리 맵에 매핑 될때 파일의 내용을 읽어와서복사하고 그 이후 동기화 하지 않는 방식.

MongoDB’s Consistency And Durability

Page 93: mongodb tutorial

MongoDB Journaling

• Your disk has your data files and your journal files, which we’ll represent like this:

MongoDB’s Consistency And Durability

Page 94: mongodb tutorial

MongoDB Journaling

• When you start up mongod, it maps your data files to a shared view. Basically, the operating system says: “Okay, your data file is 2,000 bytes on disk. I’ll map that to memory address 1,000,000-1,002,000. So, if you read the memory at memory address 1,000,042, you’ll be getting the 42nd byte of the file.” (Also, the data won’t necessary be loaded until you actually access that memory.)

MongoDB’s Consistency And Durability

Page 95: mongodb tutorial

MongoDB Journaling

• This memory is still backed by the file: if you make changes in memory, the operating system will flush these changes to the underlying file. This is basically how mongod works without journaling: it asks the operating system to flush in-memory changes every 60 seconds.

• However, with journaling, mongod makes a second mapping, this one to a private view. Incidentally, this is why enabling journalling doubles the amount of virtual memory mongod uses.

MongoDB’s Consistency And Durability

Page 96: mongodb tutorial

MongoDB Journaling

• Note that the private view is not connected to the data file, so the operating system cannot flush any changes from the private view to disk.

• Now, when you do a write, mongod writes this to the private view.

MongoDB’s Consistency And Durability

Page 97: mongodb tutorial

MongoDB Journaling

• mongod will then write this change to the journal file, creating a little description of which bytes in which file changed.

MongoDB’s Consistency And Durability

Page 98: mongodb tutorial

MongoDB Journaling

• The journal appends each change description it gets.

MongoDB’s Consistency And Durability

Page 99: mongodb tutorial

MongoDB Journaling

• At this point, the write is safe. If mongod crashes, the journal can replay the change, even though it hasn’t made it to the data file yet.

• The journal will then replay this change on the shared view.

MongoDB’s Consistency And Durability

Page 100: mongodb tutorial

MongoDB Journaling

• Finally, at a glacial speed compared to everything else, the shared view will be flushed to disk. By default, mongod requests that the OS do this every 60 seconds.

MongoDB’s Consistency And Durability

Page 101: mongodb tutorial

MongoDB Journaling

• The last step is that mongod remaps the shared view to the private view. This prevents the private view from getting too “dirty” (having too many changes from the shared view it was mapped from).

MongoDB’s Consistency And Durability

Page 102: mongodb tutorial

MongoDB’s WriteConcern

Data File

Memory

Journal File

Data File

Memory

Journal File

Primary SecondaryReplication

1. Write Request 2. To Memory3. To Journal File (SAFE )4. To Data File (deprecated since v1.8)5. To 2nd, 3rd … Nodes6. To 2nd, 3rd … Nodes’ Journal File

MongoDB’s Consistency And Durability

Page 103: mongodb tutorial

MongoDB’s WriteConcern

FSYNC_SAFEExceptions are raised for network issues, and server errors; the write operation waits for the server to flush the data to disk

JOURNAL_SAFEExceptions are raised for network issues, and server errors; the write operation waits for the server to group commit to the journal file on disk

MAJORITYExceptions are raised for network issues, and server errors; waits on a majority of servers for the write operation

NONENo exceptions are raised, even for network issues

NORMALExceptions are raised for network issues, but not server errors

REPLICAS_SAFEExceptions are raised for network issues, and server errors; waits for at least 2 servers for the write operation

SAFEExceptions are raised for network issues, and server errors; waits on a server for the write operation

MongoDB’s Consistency And Durability

Page 104: mongodb tutorial

MongoDB’s Consistency And Durability

Page 105: mongodb tutorial

MongoDB’s Consistency And Durability

Page 106: mongodb tutorial

Disk Backup 전략RAID 10

Block-level stripingwithout parity or mirroring.

Mirroringwithout parity or striping. Ex) Software-based RAID

Linux RAID(mdadm), LVM

Disk 활용도 및 성능을 위해

Page 107: mongodb tutorial

Client Libraries

Page 108: mongodb tutorial

MongoDB Developer & DBA

• Mongo shell

• Cluster Design

– Operations

– Replication

– Sharding

• Schema Design

• Admin & Operation

– Monitoring

– Capability planning

– Disaster Recovery

– Backup

– Hardware Selection

• Performance Tuning

• App Developer– 애플리케이션 개발: MongoDB Driver 기반의

CRUD, M/R 개발

• DBA– 설치와 환경설정

– 보안 관리

– 운영: 백업과 복원, 사용자 관리, 운영 업무

– 서비스 레벨 유지: 성능 최적화 및 성능 모니터링, 용량 계획 (Capacity Planning)

– 시스템 가동 시간 관리: 시스템 정지 시간의 계획과 일정 관리

– 작업 절차 계획 및 규격화: 운영 유지보수 계획 수립, 재난 복구 계획 수립

– 설계 및 개발 지원: 데이터 모델링, 데이터베이스설계

– 긴급 상황 해결/장애 복구

MongoDB를 잘 사용하기 위해서는