SlideShare a Scribd company logo
1 of 63
Download to read offline
Introduction to MongoDB
2019. 10
Naver
김민호
Background
Database paradigms
Document
SQL Databases NoSQL Databases
Relational
Analytical
Key-Value Column Family
1
1
1
1
1
1
Graph
Database paradigms
Document
SQL Databases NoSQL Databases
Relational
Analytical
Key-Value Column Family
1
1
1
1
1
1
Graph
Database
Relational
Database
==
개발자의 고민은?
Mysql ?
Oracle ?
이미지 출처 : https://www.w3resource.com/mongodb/nosql.php
관계형 데이터베이스의 한계
대용량의 데이터 처리가 필요
Scale up Scale out
관계형 데이터베이스의 한계
Scale up (수직 확장)
● 더 많은 프로세서, 메모리, 디스크 장착
● Scale up에는 한계가 존재
● 더 좋은 서버로 대체하려면 비용이 많이 비싸짐
Scale out (수평 확장)
● 저렴한 서버를 여러 대의 클러스터로 구성
● 비용이 훨씬 적게 듦
Scale up
Scale out
그러면 RDB를 Scale out을 이용한
클러스터로 구성!
그러면 RDB를 Scale out을 이용한
클러스터로 구성!
But
관계형 데이터베이스는 클러스터에
동작하도록 설계 되지 않음
그러면 RDB를 Scale out을 이용한
클러스터로 구성!
But
관계형 데이터베이스는 클러스터에
동작하도록 설계 되지 않음
And
클러스터를 구성하기 위한 샤딩을 해도
애플리케이션 레벨에서 제어 필요
그러면 RDB를 Scale out을 이용한
클러스터로 구성!
But
관계형 데이터베이스는 클러스터에
동작하도록 설계 되지 않음
And
클러스터를 구성하기 위한 샤딩을 해도
애플리케이션 레벨에서 제어 필요
And
기술 지원을 위한 라이선스 비용도 부담
NoSQL의 등장
What is NoSQL?
Not Only SQL
Non-Relational
Next-generation Databases
Distributed Architecture
Open Source
Database paradigms
Document
SQL Databases NoSQL Databases
Relational
Analytical
Key-Value Column Family
1
1
1
1
1
1
Graph
Database paradigms
Document
SQL Databases NoSQL Databases
Relational
Analytical
Key-Value Column Family
1
1
1
1
1
1
Graph
Introduction to MongoDB
What is MongoDB?
Hu(mongo)us DB
● Document Database
● Key Features
○ Horizontal Scalability
○ High Performance
○ High Availability
○ Rich Query Language
What is MongoDB?
Hu(mongo)us DB
● Document Database
● Key Features
○ Horizontal Scalability
○ High Performance
○ High Availability
○ Rich Query Language
Document Database
문서를 (JSON, XML, BSON 등)을 저장하고 질의하도록 설계된 데이터베이스
● 문서
○ 키-값 쌍으로 집합
○ 키는 문자열, 값은 기본적인 데이터 타입(숫자, 문자열, 부울)이나 구조(배열, 객체)
문서의 예
{
"name":"mino",
"age":26,
"status":"A",
"groups":[
"news",
"sports"
]
}
JSON
<name>mino</name>
<age>26</age>
<status>A</status>
<groups>news</groups>
<groups>sports</groups>
XML
Mongodb 문서 형태
JSON-style 문서로 BSON으로 저장
{ hello":"world" }
x16x00x00x00x02hellox00
x06x00x00x00worldx00x00
MongoDB RDBMS
데이터베이스(Database) 데이터베이스(Database)
컬렉션(Collection) 테이블(Table)
문서(Document) 레코드(Record or Row)
필드(Field) 컬럼(Column)
인덱스(Index) 인덱스(Index)
임베딩(Embedding) & 참조(Reference) 조인(Join)
MongoDB vs RDBMS
Schema-less
Schema : 사전에 형식에 맞추어 데이터에 대한 구조를 정의한 것
● RDBMS는 스키마가 필요
● 스키마 예
○ 테이블
○ 컬럼
○ 기본 키
○ 외래 키
○ 제약 조건
Schema-less
Schema-less : 사전에 형식에 맞추어 데이터에 대한 구조를 정의하지 않아도 됨
● 더 많은 유연성(flexibility)
{
"author":"mino",
"text":"..."
}
{
"author":"kimmino",
"text":"...",
"tags":[ "mongodb" ]
}
Schema-less
Schema-less : 사전에 형식에 맞추어 데이터에 대한 구조를 정의하지 않아도 됨
● 더 많은 책임(responsibility)
○ 데이터에 관한 규칙을 강제 하지 않으므로 애플리케이션에서 데이터 구조에 관한
규칙 확인 필요
애플리케이션 코드
모든 필드가 있는지?
모든 값이 예상 범위에
있는지?
참조된 객체가 있는지?
MongoDB
What is MongoDB?
Hu(mongo)us DB
● Document Database
● Key Features
○ Horizontal Scalability
○ High Performance
○ High Availability
○ Rich Query Language
● 데이터를 여러 서버에 분산해서 저장하고 처리하는 기술
● 대용량 데이터를 분산 처리하는 것이 목적
Sharding
Shard A
256GB
Shard B
256GB
Shard C
256GB
Shard D
256GB
Collection 1
1 TB
1 TB1 TB
1 TB
Collection 1
Sharded Cluster Components
● Config Server
○ 클러스터 메타데이터 저장
● Router (mongos)
○ 클라이언트 인터페이스
● Shard Server
○ 데이터가 저장
Sharding in MongoDB
Shard 1
(replica set)
Shard 2
(replica set)
Config Servers
(replica set)
Router
(mongos)
Router
(mongos)
하나의 큰 컬렉션을 여러 조각으로 파티션하고
샤드 서버에 분산해서 저장하는데 이 때 나눠진 데이터 조각
● 논리적 단위
● 컬렉션의 도큐먼트를 파티션하는 개념
● 기본 64MB
Chunk
Shard 1
(replica set)
Shard 2
(replica set)
Config Server
Router
(mongos)
chunk-1 shard-1
chunk-2 shard-2
chunk-3 shard-1
chunk-4 shard-1
Chunks
chunk-1
chunk-3
chunk-4
Collection A
chunk-2
Collection A
샤드 키의 값을 기준으로 범위를 나누고 사용자 데이터가 어느 청크에 포함될지 결정하는
알고리즘
● 샤드 키 값이 별도의 변형 과정을 거치지 않음
● 범위 검색 쿼리를 타겟 쿼리로 실행 가능
● 샤드 키 설계에 따라 데이터가 균형있게 분산되지 않을 가능성이 있음
Ranged Sharding
샤드 키 값의 해시값을 이용해서 청크를 할당하는 샤딩 방식
● 해시 함수는 MD5를 사용
● 해시 샤딩도 Ranged Sharding의 일종
● 샤드 키 값이 비슷하더라도 균등하게 분포 가능
Hashed Sharding
What is MongoDB?
Hu(mongo)us DB
● Document Database
● Key Features
○ Horizontal Scalability
○ High Performance
○ High Availability
○ Rich Query Language
Index
MongoDB는 빠른 검색을 위해 인덱스 기능을 지원
● _id field는 기본으로 인덱스를 생성
● 지원 Index
○ Single Field : 하나의 필드에 대한 인덱스
○ Compound Index : 1개 필드 이상에 대한 인덱스
○ Multikey Index : 배열 필드에 대한 인덱스
○ Geospatial Index : 공간 검색 인덱스, 2d, 2dsphere 인덱스 지원
○ Text Index : 텍스트 검색을 위한 인덱스
○ Hashed Index : 해시 함수 기반의 인덱스
Index
What is MongoDB?
Hu(mongo)us DB
● Document Database
● Key Features
○ Horizontal Scalability
○ High Performance
○ High Availability
○ Rich Query Language
Replication
고가용성(High Availability)를 위해 중복(Data Redundancy)된 데이터 셋을 준비
● Primary
○ 데이터 쓰기 처리
Replication
● Secondary
○ 변경된 데이터를 실시간으로 가져와서 프라이머리와 동일한 데이터 셋 유지
○ 프라이머리가 응답 불능 상태가 되면 투표를 통해 세컨더리 멤버 중 하나가
프라이머리 멤버가 됨
○ 데이터 읽기 요청은 Read Preference를 통해 세컨더리 멤버로 요청 가능
Replication
● Arbiter
○ 실제 데이터는 전혀 갖지 않고 프라이머리 선출에만 관여하는 멤버
○ HA를 보장하기 위해 레플리카 셋은 최소 3개 이상의 멤버가 필요한데 비용을
절감하기 위해 아비터 사용
프라이머리 선출 과정
Primary
Secondary Secondary
ReplicationReplication
프라이머리 선출 과정
Primary
Secondary Secondary
ReplicationReplication
Heartbeat
Heartbeat Heartbeat
프라이머리 선출 과정
Primary
Secondary Secondary
ReplicationReplication
Heartbeat
Heartbeat Heartbeat
프라이머리 선출 과정
Primary
Secondary Secondary
Heartbeat
프라이머리 선출 과정
Primary
Secondary Secondary
Heartbeat
Election for New Primary
프라이머리 선출 과정
Primary
Primary Secondary
Heartbeat
Replication
Summary
Key Features
● Horizontal Scalability
○ 샤딩을 통해 지원
● High Performance
○ 인덱스와 비정규화된 데이터 모델을 통해서 제공
● High Availability
○ 레플리카 셋을 통해 지원
● Rich Query Language
○ CRUD 뿐만 아니라 Data Aggregation과 Text search, Geospatial 쿼리도 제공
Designing for
Document Database
데이터 모델 선정
애플리케이션 요구사항 파악
● 질의 형태 파악
● 데이터 규모 파악
데이터 모델 선정
● 관계형 모델
● 문서 모델
● 그래프 모델
데이터 모델 선정
애플리케이션 요구사항 파악
● 질의 형태 파악
● 데이터 규모 파악
데이터 모델 선정
● 관계형 모델
● 문서 모델
● 그래프 모델
관계형 모델 (Relational Model)
관계형 데이터베이스 설계
● 정규화(Normalization)
○ 데이터 중복 제거
○ 이상 현상(anomalies) 방지
관계형 모델 (Relational Model)
일대다(one-to-many) 관계
● 사용자 - 직위, 사용자 - 학력,
사용자 - 연락처
● 직위, 학력, 연락처를 개별
테이블로 만들고 사용자 테이블에서
외래키로 참조
관계형 모델 (Relational Model)
다대다(many-to-many) 관계
● 회사와 학교를 문자열 대신
엔티티로 참조하는 경우
● 하나의 사용자는 여러 학교와 회사를
가질 수 있고,
하나의 학교나 회사는 여러 사용자를
가질 수 있음
관계형 모델 (Relational Model)
다대다(many-to-many) 관계
● 회사와 학교를 문자열 대신 엔티티로 참조
● 사용자 : 학교나 회사 = 1 : n
학교나 회사 : 사용자 = 1: n
조인의 필요성
문서 모델 (Document Model)
"user_id": 251,
"first_name": "Bill",
"last_name": "Gates",
"summary": "Co-chair of the Bill & Melinda Gates... Active blogger.",
"region_id": "us:91",
"industry_id": 131,
"photo_url": "/p/7/000/253/05b/308dd6e.jpg",
"positions": [
{
"job_title": "Co-chair",
"organization": "Bill & Melinda Gates Foundation"
},
{
"job_title": "Co-founder, Chairman",
"organization": "Microsoft"
}
],
"education": [
{
"school_name": "Harvard University",
"start": 1973,
"end": 1975
},
{
"school_name": "Lakeside School, Seattle",
"start": null,
"end": null
}
],
"contact_info": {
"blog": "http://thegatesnotes.com",
"twitter": "http://twitter.com/BillGates"
}
}
문서 모델 (Document Model)
"user_id": 251,
"first_name": "Bill",
"last_name": "Gates",
"summary": "Co-chair of the Bill & Melinda Gates... Active blogger.",
"region_id": "us:91",
"industry_id": 131,
"photo_url": "/p/7/000/253/05b/308dd6e.jpg",
"positions": [
{
"job_title": "Co-chair",
"organization": "Bill & Melinda Gates Foundation"
},
{
"job_title": "Co-founder, Chairman",
"organization": "Microsoft"
}
],
"education": [
{
"school_name": "Harvard University",
"start": 1973,
"end": 1975
},
{
"school_name": "Lakeside School, Seattle",
"start": null,
"end": null
}
],
"contact_info": {
"blog": "http://thegatesnotes.com",
"twitter": "http://twitter.com/BillGates"
}
}
문서 데이터베이스 설계
● 비정규화(Denormalization)
○ 데이터 중복 저장
○ 조인에 대한 요구 사항 최소화
"user_id": 251,
"first_name": "Mark",
"last_name": "Zuckerberg",
"summary": "Co-founding and leading Facebook",
"region_id": "us:91",
"industry_id": 131,
"photo_url": "/p/7/000/253/05b/308dd6e.jpg",
"positions": [
{
"job_title": "The founder and CEO",
"organization": "Facebook"
}
],
"education": [
{
"school_name": "Harvard University",
"start": 2002,
"end": 2004
}
],
"contact_info": {
"facebook": "https://www.facebook.com/zuck"
}
}
문서 모델 (Document Model)
비정규화는 어느 정도로?
● 애플리케이션의 질의 형태 파악
● 질의 성능을 향상시키기 위해 사용
● 쓰기와 저장공간을 더 사용하므로 남용은 금지
● 자주 사용하는 쿼리가 조인이 많이 필요한 경우
문서 모델 (Document Model)
비정규화는 어느 정도로?
● 애플리케이션의 질의 형태 파악
● 질의 성능을 향상시키기 위해 사용
● 쓰기와 저장공간을 더 사용하므로 남용은 금지
● 자주 사용하는 쿼리가 조인이 많이 필요한 경우
문서 모델 (Document Model)
비정규화 장단점
● 장점
○ 질의 성능 향상
○ 조인 연산의 감소
○ 더 적은 테이블 참조 (더 적은 버그 발생)
● 단점
○ 삽입과 갱신 비용이 비쌈
○ 삽입과 갱신을 위한 작성 코드양의 증가
○ 데이터의 일관성 문제가 발생할 수 있음
○ 더 많은 저장 공간 사용
문서 모델 (Document Model)
일대다(one-to-many) 관계
● 예제
○ 하나의 고객이 여러 주소를
가지고 있는 경우
{
customer_id: 76123,
name: 'Acme Data Modeling Services',
person_or_business: 'business',
address : [
{ street: '276 North Amber St',
city: 'Vancouver',
state: 'WA',
zip: 99076} ,
{ street: '89 Morton St',
city: 'Salem',
state: 'NH',
zip: 01097}
]
}
문서 모델 (Document Model)
다대다(many-to-many) 관계
● 예제
○ 학생은 여러 과목을 수강할 수 있고
과목은 여러 학생이 등록됨
과목 컬렉션
{
{ courseID: 'C1667',
title: 'Introduction to Anthropology',
instructor: 'Dr. Margret Austin',
credits: 3,
enrolledStudents: ['S1837', 'S3737', 'S9825' ...
'S1847'] },
{ courseID: 'C2873',
title: 'Algorithms and Data Structures',
instructor: 'Dr. Susan Johnson',
credits: 3,
enrolledStudents: ['S1837','S3737', 'S4321', 'S9825'
... 'S1847'] },
...
학생 컬렉션
{
{studentID:'S1837',
name: 'Brian Nelson',
gradYear: 2018,
courses: ['C1667', C2873,'C3876']},
{studentID: 'S3737',
name: 'Yolanda Deltor',
gradYear: 2017,
courses: [ 'C1667','C2873']},
...
}
Summary
● 데이터 모델링을 위해 애플리케이션 질의 유형 파악
● 정규화(Normalization)과 비정규화(Denormalization)
○ 정규화는 이상 현상을 줄여주고 데이터 중복을 최소화
○ 비정규화는 성능 향상
○ 문서 데이터베이스 모델링에서는 비정규화를 많이 사용
● 일대다, 다대다와 같은 관계를 모델링
○ 중첩 문서를 사용
○ 다른 문서 식별자 참조 사용
○ 애플리케이션의 특성에 맞게 사용
Thank you

More Related Content

What's hot

NoSQL distilled 왜 NoSQL인가
NoSQL distilled 왜 NoSQL인가NoSQL distilled 왜 NoSQL인가
NoSQL distilled 왜 NoSQL인가Choonghyun Yang
 
NoSQL distilled.그래프 데이터베이스
NoSQL distilled.그래프 데이터베이스NoSQL distilled.그래프 데이터베이스
NoSQL distilled.그래프 데이터베이스Choonghyun Yang
 
대규모 데이터 처리 입문
대규모 데이터 처리 입문대규모 데이터 처리 입문
대규모 데이터 처리 입문Choonghyun Yang
 
NoSQL 모델링
NoSQL 모델링NoSQL 모델링
NoSQL 모델링Hoyong Lee
 
No sql 이해 및 활용 공개용
No sql 이해 및 활용 공개용No sql 이해 및 활용 공개용
No sql 이해 및 활용 공개용YOUNGGYU CHUN
 
Hadoop설명
Hadoop설명Hadoop설명
Hadoop설명Ji Hoon Lee
 
Realtime Big data Anaytics and Exampes of Daum (2013)
Realtime Big data Anaytics and Exampes of Daum (2013)Realtime Big data Anaytics and Exampes of Daum (2013)
Realtime Big data Anaytics and Exampes of Daum (2013)Channy Yun
 
하둡 에코시스템 위에서 환상적인 테이크오프 - DSTS 2019
하둡 에코시스템 위에서 환상적인 테이크오프 - DSTS 2019 하둡 에코시스템 위에서 환상적인 테이크오프 - DSTS 2019
하둡 에코시스템 위에서 환상적인 테이크오프 - DSTS 2019 Kenneth Ceyer
 
데이터베이스의 이해
데이터베이스의 이해데이터베이스의 이해
데이터베이스의 이해Byung Kook Ha
 
20180714 하둡 스터디 종료 보고 및 연구과제 발표자료
20180714 하둡 스터디 종료 보고 및 연구과제 발표자료20180714 하둡 스터디 종료 보고 및 연구과제 발표자료
20180714 하둡 스터디 종료 보고 및 연구과제 발표자료BOMI KIM
 

What's hot (11)

NoSQL distilled 왜 NoSQL인가
NoSQL distilled 왜 NoSQL인가NoSQL distilled 왜 NoSQL인가
NoSQL distilled 왜 NoSQL인가
 
NoSQL distilled.그래프 데이터베이스
NoSQL distilled.그래프 데이터베이스NoSQL distilled.그래프 데이터베이스
NoSQL distilled.그래프 데이터베이스
 
대규모 데이터 처리 입문
대규모 데이터 처리 입문대규모 데이터 처리 입문
대규모 데이터 처리 입문
 
NoSQL 모델링
NoSQL 모델링NoSQL 모델링
NoSQL 모델링
 
No sql 이해 및 활용 공개용
No sql 이해 및 활용 공개용No sql 이해 및 활용 공개용
No sql 이해 및 활용 공개용
 
Hadoop설명
Hadoop설명Hadoop설명
Hadoop설명
 
Realtime Big data Anaytics and Exampes of Daum (2013)
Realtime Big data Anaytics and Exampes of Daum (2013)Realtime Big data Anaytics and Exampes of Daum (2013)
Realtime Big data Anaytics and Exampes of Daum (2013)
 
하둡 에코시스템 위에서 환상적인 테이크오프 - DSTS 2019
하둡 에코시스템 위에서 환상적인 테이크오프 - DSTS 2019 하둡 에코시스템 위에서 환상적인 테이크오프 - DSTS 2019
하둡 에코시스템 위에서 환상적인 테이크오프 - DSTS 2019
 
데이터베이스의 이해
데이터베이스의 이해데이터베이스의 이해
데이터베이스의 이해
 
20180714 하둡 스터디 종료 보고 및 연구과제 발표자료
20180714 하둡 스터디 종료 보고 및 연구과제 발표자료20180714 하둡 스터디 종료 보고 및 연구과제 발표자료
20180714 하둡 스터디 종료 보고 및 연구과제 발표자료
 
Hadoop발표자료
Hadoop발표자료Hadoop발표자료
Hadoop발표자료
 

Similar to Introduction to mongo db

(11th korea data_tech_seminar)using_mongo_db_4.0_and_nosql_inbum_kim(skc&amp;c)
(11th korea data_tech_seminar)using_mongo_db_4.0_and_nosql_inbum_kim(skc&amp;c)(11th korea data_tech_seminar)using_mongo_db_4.0_and_nosql_inbum_kim(skc&amp;c)
(11th korea data_tech_seminar)using_mongo_db_4.0_and_nosql_inbum_kim(skc&amp;c)InBum Kim
 
[Retail & CPG Day 2019] Amazon.com의 무중단, 대용량 DB패턴과 국내사례 (Lotte e-commerce) - ...
[Retail & CPG Day 2019] Amazon.com의 무중단, 대용량 DB패턴과 국내사례 (Lotte e-commerce) - ...[Retail & CPG Day 2019] Amazon.com의 무중단, 대용량 DB패턴과 국내사례 (Lotte e-commerce) - ...
[Retail & CPG Day 2019] Amazon.com의 무중단, 대용량 DB패턴과 국내사례 (Lotte e-commerce) - ...Amazon Web Services Korea
 
Mongodb and spatial
Mongodb and spatialMongodb and spatial
Mongodb and spatialJiyoon Kim
 
SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...
SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...
SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...Amazon Web Services Korea
 
Big query at GDG Korea Cloud meetup
Big query at GDG Korea Cloud meetupBig query at GDG Korea Cloud meetup
Big query at GDG Korea Cloud meetupJude Kim
 
MariaDB 마이그레이션 - 네오클로바
MariaDB 마이그레이션 - 네오클로바MariaDB 마이그레이션 - 네오클로바
MariaDB 마이그레이션 - 네오클로바NeoClova
 
Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범)
Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범) Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범)
Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범) InBum Kim
 
2016년 인문정보학 Sql세미나 2/3
2016년 인문정보학 Sql세미나 2/32016년 인문정보학 Sql세미나 2/3
2016년 인문정보학 Sql세미나 2/3in2acous
 
[E-commerce & Retail Day] Data Freedom을 위한 Database 최적화 전략
[E-commerce & Retail Day] Data Freedom을 위한 Database 최적화 전략[E-commerce & Retail Day] Data Freedom을 위한 Database 최적화 전략
[E-commerce & Retail Day] Data Freedom을 위한 Database 최적화 전략Amazon Web Services Korea
 
NoSQL 간단한 소개
NoSQL 간단한 소개NoSQL 간단한 소개
NoSQL 간단한 소개Wonchang Song
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019devCAT Studio, NEXON
 
De text a deep text ranking framework with bert
De text  a deep text ranking framework with bertDe text  a deep text ranking framework with bert
De text a deep text ranking framework with berttaeseon ryu
 
No sql survey report
No sql survey reportNo sql survey report
No sql survey reportGichan Lee
 
강의 4. 데이터베이스:: AWSome Day Online Conference
강의 4. 데이터베이스:: AWSome Day Online Conference강의 4. 데이터베이스:: AWSome Day Online Conference
강의 4. 데이터베이스:: AWSome Day Online ConferenceAmazon Web Services Korea
 
AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim
AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil KimAWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim
AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil KimAmazon Web Services Korea
 
엔터프라이즈 환경의 데이터모델 관리 방안 By 엠바카데로 데브기어 2015.12.03
엔터프라이즈 환경의 데이터모델 관리 방안 By 엠바카데로 데브기어  2015.12.03엔터프라이즈 환경의 데이터모델 관리 방안 By 엠바카데로 데브기어  2015.12.03
엔터프라이즈 환경의 데이터모델 관리 방안 By 엠바카데로 데브기어 2015.12.03Devgear
 
빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)Channy Yun
 
Daum’s Business Analytics Use-cases based on Bigdata technology (2012)
Daum’s Business Analytics Use-cases based on Bigdata technology (2012)Daum’s Business Analytics Use-cases based on Bigdata technology (2012)
Daum’s Business Analytics Use-cases based on Bigdata technology (2012)Channy Yun
 
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기Gyuwon Yi
 
[246] foursquare데이터라이프사이클 설현준
[246] foursquare데이터라이프사이클 설현준[246] foursquare데이터라이프사이클 설현준
[246] foursquare데이터라이프사이클 설현준NAVER D2
 

Similar to Introduction to mongo db (20)

(11th korea data_tech_seminar)using_mongo_db_4.0_and_nosql_inbum_kim(skc&amp;c)
(11th korea data_tech_seminar)using_mongo_db_4.0_and_nosql_inbum_kim(skc&amp;c)(11th korea data_tech_seminar)using_mongo_db_4.0_and_nosql_inbum_kim(skc&amp;c)
(11th korea data_tech_seminar)using_mongo_db_4.0_and_nosql_inbum_kim(skc&amp;c)
 
[Retail & CPG Day 2019] Amazon.com의 무중단, 대용량 DB패턴과 국내사례 (Lotte e-commerce) - ...
[Retail & CPG Day 2019] Amazon.com의 무중단, 대용량 DB패턴과 국내사례 (Lotte e-commerce) - ...[Retail & CPG Day 2019] Amazon.com의 무중단, 대용량 DB패턴과 국내사례 (Lotte e-commerce) - ...
[Retail & CPG Day 2019] Amazon.com의 무중단, 대용량 DB패턴과 국내사례 (Lotte e-commerce) - ...
 
Mongodb and spatial
Mongodb and spatialMongodb and spatial
Mongodb and spatial
 
SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...
SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...
SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...
 
Big query at GDG Korea Cloud meetup
Big query at GDG Korea Cloud meetupBig query at GDG Korea Cloud meetup
Big query at GDG Korea Cloud meetup
 
MariaDB 마이그레이션 - 네오클로바
MariaDB 마이그레이션 - 네오클로바MariaDB 마이그레이션 - 네오클로바
MariaDB 마이그레이션 - 네오클로바
 
Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범)
Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범) Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범)
Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범)
 
2016년 인문정보학 Sql세미나 2/3
2016년 인문정보학 Sql세미나 2/32016년 인문정보학 Sql세미나 2/3
2016년 인문정보학 Sql세미나 2/3
 
[E-commerce & Retail Day] Data Freedom을 위한 Database 최적화 전략
[E-commerce & Retail Day] Data Freedom을 위한 Database 최적화 전략[E-commerce & Retail Day] Data Freedom을 위한 Database 최적화 전략
[E-commerce & Retail Day] Data Freedom을 위한 Database 최적화 전략
 
NoSQL 간단한 소개
NoSQL 간단한 소개NoSQL 간단한 소개
NoSQL 간단한 소개
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
 
De text a deep text ranking framework with bert
De text  a deep text ranking framework with bertDe text  a deep text ranking framework with bert
De text a deep text ranking framework with bert
 
No sql survey report
No sql survey reportNo sql survey report
No sql survey report
 
강의 4. 데이터베이스:: AWSome Day Online Conference
강의 4. 데이터베이스:: AWSome Day Online Conference강의 4. 데이터베이스:: AWSome Day Online Conference
강의 4. 데이터베이스:: AWSome Day Online Conference
 
AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim
AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil KimAWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim
AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim
 
엔터프라이즈 환경의 데이터모델 관리 방안 By 엠바카데로 데브기어 2015.12.03
엔터프라이즈 환경의 데이터모델 관리 방안 By 엠바카데로 데브기어  2015.12.03엔터프라이즈 환경의 데이터모델 관리 방안 By 엠바카데로 데브기어  2015.12.03
엔터프라이즈 환경의 데이터모델 관리 방안 By 엠바카데로 데브기어 2015.12.03
 
빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)
 
Daum’s Business Analytics Use-cases based on Bigdata technology (2012)
Daum’s Business Analytics Use-cases based on Bigdata technology (2012)Daum’s Business Analytics Use-cases based on Bigdata technology (2012)
Daum’s Business Analytics Use-cases based on Bigdata technology (2012)
 
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기
 
[246] foursquare데이터라이프사이클 설현준
[246] foursquare데이터라이프사이클 설현준[246] foursquare데이터라이프사이클 설현준
[246] foursquare데이터라이프사이클 설현준
 

Introduction to mongo db

  • 1. Introduction to MongoDB 2019. 10 Naver 김민호
  • 3. Database paradigms Document SQL Databases NoSQL Databases Relational Analytical Key-Value Column Family 1 1 1 1 1 1 Graph
  • 4. Database paradigms Document SQL Databases NoSQL Databases Relational Analytical Key-Value Column Family 1 1 1 1 1 1 Graph
  • 6. 이미지 출처 : https://www.w3resource.com/mongodb/nosql.php
  • 7. 관계형 데이터베이스의 한계 대용량의 데이터 처리가 필요 Scale up Scale out
  • 8. 관계형 데이터베이스의 한계 Scale up (수직 확장) ● 더 많은 프로세서, 메모리, 디스크 장착 ● Scale up에는 한계가 존재 ● 더 좋은 서버로 대체하려면 비용이 많이 비싸짐 Scale out (수평 확장) ● 저렴한 서버를 여러 대의 클러스터로 구성 ● 비용이 훨씬 적게 듦 Scale up Scale out
  • 9. 그러면 RDB를 Scale out을 이용한 클러스터로 구성!
  • 10. 그러면 RDB를 Scale out을 이용한 클러스터로 구성! But 관계형 데이터베이스는 클러스터에 동작하도록 설계 되지 않음
  • 11. 그러면 RDB를 Scale out을 이용한 클러스터로 구성! But 관계형 데이터베이스는 클러스터에 동작하도록 설계 되지 않음 And 클러스터를 구성하기 위한 샤딩을 해도 애플리케이션 레벨에서 제어 필요
  • 12. 그러면 RDB를 Scale out을 이용한 클러스터로 구성! But 관계형 데이터베이스는 클러스터에 동작하도록 설계 되지 않음 And 클러스터를 구성하기 위한 샤딩을 해도 애플리케이션 레벨에서 제어 필요 And 기술 지원을 위한 라이선스 비용도 부담
  • 14. What is NoSQL? Not Only SQL Non-Relational Next-generation Databases Distributed Architecture Open Source
  • 15. Database paradigms Document SQL Databases NoSQL Databases Relational Analytical Key-Value Column Family 1 1 1 1 1 1 Graph
  • 16. Database paradigms Document SQL Databases NoSQL Databases Relational Analytical Key-Value Column Family 1 1 1 1 1 1 Graph
  • 18. What is MongoDB? Hu(mongo)us DB ● Document Database ● Key Features ○ Horizontal Scalability ○ High Performance ○ High Availability ○ Rich Query Language
  • 19. What is MongoDB? Hu(mongo)us DB ● Document Database ● Key Features ○ Horizontal Scalability ○ High Performance ○ High Availability ○ Rich Query Language
  • 20. Document Database 문서를 (JSON, XML, BSON 등)을 저장하고 질의하도록 설계된 데이터베이스 ● 문서 ○ 키-값 쌍으로 집합 ○ 키는 문자열, 값은 기본적인 데이터 타입(숫자, 문자열, 부울)이나 구조(배열, 객체)
  • 22. Mongodb 문서 형태 JSON-style 문서로 BSON으로 저장 { hello":"world" } x16x00x00x00x02hellox00 x06x00x00x00worldx00x00
  • 23. MongoDB RDBMS 데이터베이스(Database) 데이터베이스(Database) 컬렉션(Collection) 테이블(Table) 문서(Document) 레코드(Record or Row) 필드(Field) 컬럼(Column) 인덱스(Index) 인덱스(Index) 임베딩(Embedding) & 참조(Reference) 조인(Join) MongoDB vs RDBMS
  • 24. Schema-less Schema : 사전에 형식에 맞추어 데이터에 대한 구조를 정의한 것 ● RDBMS는 스키마가 필요 ● 스키마 예 ○ 테이블 ○ 컬럼 ○ 기본 키 ○ 외래 키 ○ 제약 조건
  • 25. Schema-less Schema-less : 사전에 형식에 맞추어 데이터에 대한 구조를 정의하지 않아도 됨 ● 더 많은 유연성(flexibility) { "author":"mino", "text":"..." } { "author":"kimmino", "text":"...", "tags":[ "mongodb" ] }
  • 26. Schema-less Schema-less : 사전에 형식에 맞추어 데이터에 대한 구조를 정의하지 않아도 됨 ● 더 많은 책임(responsibility) ○ 데이터에 관한 규칙을 강제 하지 않으므로 애플리케이션에서 데이터 구조에 관한 규칙 확인 필요 애플리케이션 코드 모든 필드가 있는지? 모든 값이 예상 범위에 있는지? 참조된 객체가 있는지? MongoDB
  • 27. What is MongoDB? Hu(mongo)us DB ● Document Database ● Key Features ○ Horizontal Scalability ○ High Performance ○ High Availability ○ Rich Query Language
  • 28. ● 데이터를 여러 서버에 분산해서 저장하고 처리하는 기술 ● 대용량 데이터를 분산 처리하는 것이 목적 Sharding Shard A 256GB Shard B 256GB Shard C 256GB Shard D 256GB Collection 1 1 TB 1 TB1 TB 1 TB Collection 1
  • 29. Sharded Cluster Components ● Config Server ○ 클러스터 메타데이터 저장 ● Router (mongos) ○ 클라이언트 인터페이스 ● Shard Server ○ 데이터가 저장 Sharding in MongoDB Shard 1 (replica set) Shard 2 (replica set) Config Servers (replica set) Router (mongos) Router (mongos)
  • 30. 하나의 큰 컬렉션을 여러 조각으로 파티션하고 샤드 서버에 분산해서 저장하는데 이 때 나눠진 데이터 조각 ● 논리적 단위 ● 컬렉션의 도큐먼트를 파티션하는 개념 ● 기본 64MB Chunk Shard 1 (replica set) Shard 2 (replica set) Config Server Router (mongos) chunk-1 shard-1 chunk-2 shard-2 chunk-3 shard-1 chunk-4 shard-1 Chunks chunk-1 chunk-3 chunk-4 Collection A chunk-2 Collection A
  • 31. 샤드 키의 값을 기준으로 범위를 나누고 사용자 데이터가 어느 청크에 포함될지 결정하는 알고리즘 ● 샤드 키 값이 별도의 변형 과정을 거치지 않음 ● 범위 검색 쿼리를 타겟 쿼리로 실행 가능 ● 샤드 키 설계에 따라 데이터가 균형있게 분산되지 않을 가능성이 있음 Ranged Sharding
  • 32. 샤드 키 값의 해시값을 이용해서 청크를 할당하는 샤딩 방식 ● 해시 함수는 MD5를 사용 ● 해시 샤딩도 Ranged Sharding의 일종 ● 샤드 키 값이 비슷하더라도 균등하게 분포 가능 Hashed Sharding
  • 33. What is MongoDB? Hu(mongo)us DB ● Document Database ● Key Features ○ Horizontal Scalability ○ High Performance ○ High Availability ○ Rich Query Language
  • 34. Index MongoDB는 빠른 검색을 위해 인덱스 기능을 지원 ● _id field는 기본으로 인덱스를 생성 ● 지원 Index ○ Single Field : 하나의 필드에 대한 인덱스 ○ Compound Index : 1개 필드 이상에 대한 인덱스 ○ Multikey Index : 배열 필드에 대한 인덱스 ○ Geospatial Index : 공간 검색 인덱스, 2d, 2dsphere 인덱스 지원 ○ Text Index : 텍스트 검색을 위한 인덱스 ○ Hashed Index : 해시 함수 기반의 인덱스
  • 35. Index
  • 36. What is MongoDB? Hu(mongo)us DB ● Document Database ● Key Features ○ Horizontal Scalability ○ High Performance ○ High Availability ○ Rich Query Language
  • 37. Replication 고가용성(High Availability)를 위해 중복(Data Redundancy)된 데이터 셋을 준비 ● Primary ○ 데이터 쓰기 처리
  • 38. Replication ● Secondary ○ 변경된 데이터를 실시간으로 가져와서 프라이머리와 동일한 데이터 셋 유지 ○ 프라이머리가 응답 불능 상태가 되면 투표를 통해 세컨더리 멤버 중 하나가 프라이머리 멤버가 됨 ○ 데이터 읽기 요청은 Read Preference를 통해 세컨더리 멤버로 요청 가능
  • 39. Replication ● Arbiter ○ 실제 데이터는 전혀 갖지 않고 프라이머리 선출에만 관여하는 멤버 ○ HA를 보장하기 위해 레플리카 셋은 최소 3개 이상의 멤버가 필요한데 비용을 절감하기 위해 아비터 사용
  • 40. 프라이머리 선출 과정 Primary Secondary Secondary ReplicationReplication
  • 41. 프라이머리 선출 과정 Primary Secondary Secondary ReplicationReplication Heartbeat Heartbeat Heartbeat
  • 42. 프라이머리 선출 과정 Primary Secondary Secondary ReplicationReplication Heartbeat Heartbeat Heartbeat
  • 44. 프라이머리 선출 과정 Primary Secondary Secondary Heartbeat Election for New Primary
  • 45. 프라이머리 선출 과정 Primary Primary Secondary Heartbeat Replication
  • 46. Summary Key Features ● Horizontal Scalability ○ 샤딩을 통해 지원 ● High Performance ○ 인덱스와 비정규화된 데이터 모델을 통해서 제공 ● High Availability ○ 레플리카 셋을 통해 지원 ● Rich Query Language ○ CRUD 뿐만 아니라 Data Aggregation과 Text search, Geospatial 쿼리도 제공
  • 48. 데이터 모델 선정 애플리케이션 요구사항 파악 ● 질의 형태 파악 ● 데이터 규모 파악 데이터 모델 선정 ● 관계형 모델 ● 문서 모델 ● 그래프 모델
  • 49. 데이터 모델 선정 애플리케이션 요구사항 파악 ● 질의 형태 파악 ● 데이터 규모 파악 데이터 모델 선정 ● 관계형 모델 ● 문서 모델 ● 그래프 모델
  • 50. 관계형 모델 (Relational Model) 관계형 데이터베이스 설계 ● 정규화(Normalization) ○ 데이터 중복 제거 ○ 이상 현상(anomalies) 방지
  • 51. 관계형 모델 (Relational Model) 일대다(one-to-many) 관계 ● 사용자 - 직위, 사용자 - 학력, 사용자 - 연락처 ● 직위, 학력, 연락처를 개별 테이블로 만들고 사용자 테이블에서 외래키로 참조
  • 52. 관계형 모델 (Relational Model) 다대다(many-to-many) 관계 ● 회사와 학교를 문자열 대신 엔티티로 참조하는 경우 ● 하나의 사용자는 여러 학교와 회사를 가질 수 있고, 하나의 학교나 회사는 여러 사용자를 가질 수 있음
  • 53. 관계형 모델 (Relational Model) 다대다(many-to-many) 관계 ● 회사와 학교를 문자열 대신 엔티티로 참조 ● 사용자 : 학교나 회사 = 1 : n 학교나 회사 : 사용자 = 1: n
  • 55. 문서 모델 (Document Model) "user_id": 251, "first_name": "Bill", "last_name": "Gates", "summary": "Co-chair of the Bill & Melinda Gates... Active blogger.", "region_id": "us:91", "industry_id": 131, "photo_url": "/p/7/000/253/05b/308dd6e.jpg", "positions": [ { "job_title": "Co-chair", "organization": "Bill & Melinda Gates Foundation" }, { "job_title": "Co-founder, Chairman", "organization": "Microsoft" } ], "education": [ { "school_name": "Harvard University", "start": 1973, "end": 1975 }, { "school_name": "Lakeside School, Seattle", "start": null, "end": null } ], "contact_info": { "blog": "http://thegatesnotes.com", "twitter": "http://twitter.com/BillGates" } }
  • 56. 문서 모델 (Document Model) "user_id": 251, "first_name": "Bill", "last_name": "Gates", "summary": "Co-chair of the Bill & Melinda Gates... Active blogger.", "region_id": "us:91", "industry_id": 131, "photo_url": "/p/7/000/253/05b/308dd6e.jpg", "positions": [ { "job_title": "Co-chair", "organization": "Bill & Melinda Gates Foundation" }, { "job_title": "Co-founder, Chairman", "organization": "Microsoft" } ], "education": [ { "school_name": "Harvard University", "start": 1973, "end": 1975 }, { "school_name": "Lakeside School, Seattle", "start": null, "end": null } ], "contact_info": { "blog": "http://thegatesnotes.com", "twitter": "http://twitter.com/BillGates" } } 문서 데이터베이스 설계 ● 비정규화(Denormalization) ○ 데이터 중복 저장 ○ 조인에 대한 요구 사항 최소화 "user_id": 251, "first_name": "Mark", "last_name": "Zuckerberg", "summary": "Co-founding and leading Facebook", "region_id": "us:91", "industry_id": 131, "photo_url": "/p/7/000/253/05b/308dd6e.jpg", "positions": [ { "job_title": "The founder and CEO", "organization": "Facebook" } ], "education": [ { "school_name": "Harvard University", "start": 2002, "end": 2004 } ], "contact_info": { "facebook": "https://www.facebook.com/zuck" } }
  • 57. 문서 모델 (Document Model) 비정규화는 어느 정도로? ● 애플리케이션의 질의 형태 파악 ● 질의 성능을 향상시키기 위해 사용 ● 쓰기와 저장공간을 더 사용하므로 남용은 금지 ● 자주 사용하는 쿼리가 조인이 많이 필요한 경우
  • 58. 문서 모델 (Document Model) 비정규화는 어느 정도로? ● 애플리케이션의 질의 형태 파악 ● 질의 성능을 향상시키기 위해 사용 ● 쓰기와 저장공간을 더 사용하므로 남용은 금지 ● 자주 사용하는 쿼리가 조인이 많이 필요한 경우
  • 59. 문서 모델 (Document Model) 비정규화 장단점 ● 장점 ○ 질의 성능 향상 ○ 조인 연산의 감소 ○ 더 적은 테이블 참조 (더 적은 버그 발생) ● 단점 ○ 삽입과 갱신 비용이 비쌈 ○ 삽입과 갱신을 위한 작성 코드양의 증가 ○ 데이터의 일관성 문제가 발생할 수 있음 ○ 더 많은 저장 공간 사용
  • 60. 문서 모델 (Document Model) 일대다(one-to-many) 관계 ● 예제 ○ 하나의 고객이 여러 주소를 가지고 있는 경우 { customer_id: 76123, name: 'Acme Data Modeling Services', person_or_business: 'business', address : [ { street: '276 North Amber St', city: 'Vancouver', state: 'WA', zip: 99076} , { street: '89 Morton St', city: 'Salem', state: 'NH', zip: 01097} ] }
  • 61. 문서 모델 (Document Model) 다대다(many-to-many) 관계 ● 예제 ○ 학생은 여러 과목을 수강할 수 있고 과목은 여러 학생이 등록됨 과목 컬렉션 { { courseID: 'C1667', title: 'Introduction to Anthropology', instructor: 'Dr. Margret Austin', credits: 3, enrolledStudents: ['S1837', 'S3737', 'S9825' ... 'S1847'] }, { courseID: 'C2873', title: 'Algorithms and Data Structures', instructor: 'Dr. Susan Johnson', credits: 3, enrolledStudents: ['S1837','S3737', 'S4321', 'S9825' ... 'S1847'] }, ... 학생 컬렉션 { {studentID:'S1837', name: 'Brian Nelson', gradYear: 2018, courses: ['C1667', C2873,'C3876']}, {studentID: 'S3737', name: 'Yolanda Deltor', gradYear: 2017, courses: [ 'C1667','C2873']}, ... }
  • 62. Summary ● 데이터 모델링을 위해 애플리케이션 질의 유형 파악 ● 정규화(Normalization)과 비정규화(Denormalization) ○ 정규화는 이상 현상을 줄여주고 데이터 중복을 최소화 ○ 비정규화는 성능 향상 ○ 문서 데이터베이스 모델링에서는 비정규화를 많이 사용 ● 일대다, 다대다와 같은 관계를 모델링 ○ 중첩 문서를 사용 ○ 다른 문서 식별자 참조 사용 ○ 애플리케이션의 특성에 맞게 사용