SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Downloaden Sie, um offline zu lesen
MongoDB 2.2~2.4

티쓰리엔터테인먼트
모바일 1팀
공통 기술 개발팀
최흥배 과장
Version 2.2
병렬 처리 강화
Global 락을 없애고, DB 레벨 락으로.
이후에도 계속 락의 단위를 좁힐 예정.
락 상태는 아래의 명렬어를 확인 가능
db.currentOp()
db.serverStatus()
Page fault 아키텍처 개선
락 중에 PageFault가 발생하여 락이 연장되는 것을 피하도록.
if 쓰기 오퍼렌이션에서
- 접근 하는 곳이 메모리 상이 아니면 mutation이 일어난다
- Page fault 하려고 할 때
Then
- PageFaultException을 발생 시킨다
- 락을 해제하고 page을 메모리로 올린다
- 쓰기 오러페이션을 재 실행
Aggregation Framework
SQL의 GROUP BY 기능과 비슷하다.
저장된 데이터에 대해 다양한 처리나 조작을 하여 이전에는
JavaScript로 실해하고 있던 집계 처리를 MongoDB 명령어로
할 수 있다.
- $match //집계 처리 조건을 지정하고 매칭한다(SQL의 WHERE 또는 HAVING)
- $project //집계 처리를 할 필드를 선택/삭제, 리네임(SQL의 AS), 집계 결과를 ins
ert 한다
- $unwind //배열을 지정하고 전개해서 반환한다
- $group //$sum, $avg 등을 사용하여 집계 처리를 한다
- $sort
// 지정된 sort 키에 의한 소트
- $skip
//지정된 숫자 만큼 skip 한다
- $limit //지정된 문자 만큼 집계 결과를 반환한다
Read에 관한 설정
Read 시에 consistency 강도를 지정 가능 하도록
- PRIMARY
- PRIMARY PREFERRED
- SECONDARY
- SECONDARY PREFERRED
- NEAREST
Tag를 사용한 Sharding 가능하도록
Tag 베이스로 레플리케이션
- sharding key에 의한 쓸 곳을 제어
- uid=1~100은 A 데이터 센터의 노드, uid=101~200은 B 데
이터 센터의 노드 라는 설정이 가능
TTL(Time To Live) Collections
기한 있는 컬렉션을 만들 수 있다.
date-type 필드가 필요.
capped collection으로는 사용할 수 없다.
//events 컬렉션 데이터를 status 필드를 기점으로 30초 후에 삭제하도록 설정
db.events.ensureIndex( { "status": 1 }, { expireAfterSeconds: 30 } )
//status에는 date-type information을 넣는다. new Date()로 OK.
db.events.insert( { "status" : new Date(), "value" : 1 } );
db.events.insert( { "status" : new Date(), "value" : 2 } );
db.events.insert( { "status" : "not Date", "value" : 3 } );
db.events.insert( { "no-status" : "blank", "value" : 4 } );
db.events.find();
//30초 후에
db.events.find();
Server-side Function을 load 가능
db.system.js에 보존한 function을 db.loadServerScripts()에서
load 할 수 있다.
기타 등등....
Version 2.4
전문 검색 기능
인덱스가 있는 전문 검색 기능 지원. 영어만 지원 -_크게 3 부분으로 나누어 처리
- Tokenizer로 형태소 분석
- Stop Word Fultering로 불 필요한 단어를 제거
- Stemming 처리
Kerberos 인증 지원
서브 스크립션 판만 지원.
mongod 인증으로 이용 가능.
mongod 기동 시에 파라미터로 지정한다.
권한에 의한 접근 룰
권한은 데이터 베이스 마다 설정 가능.
{database}.system.users 컬렉션에 저장.
roles(권한)

내용

read

모든 컬렉션 데이터를 읽기 가능

readWrite

모든 컬렉션 데이터를 읽기, 쓰기 가능

dbAdmin

인덱스 작성, DB 통계 정보 취득 등 데이터 베이스 관리자 조작 가능

userAdmin

system.users에 대해서 읽기 쓰기 가능, 유저 작성이나 권한 변경 등 관리 가능

clusterAdmin

레플리케이션이나 샤딩 관리자 조작 가능

readAnyDatabase

admin 데이터 베이스를 포함한 모든 논리 데이터 베이스를 읽기 가능

readWriteAnyDatabase

admin 데이터 베이스를 포함한 모든 논리 데이터 베이스를 읽기 쓰기 가능

userAdminAnyDatabase userAdmin으로서 유저 관리를 하고, 모든 논리 데이터 베이스를 읽기, 쓰기 가능
dbAdminAnyDatabase

dbAdmin으로서 데이터 베이스를 관리하고, 모든 논리 데이터 베이스를 읽기, 쓰
기 가능
JavaScript 엔진을 V8로 변경
기본 JavaScript 엔진을 SpiderMonkey에서 V8로 변경.
mongo shell 에서 db.serverBuildInfo()로 확인할 수 있다.
또는 interpreterVersion()으로 확인 할 수 있다.
GeoJSON을 사용한 구면지리 공간 인
덱스
2.4 에서 구면지리공간(Spherical Geospatial) 인덱스의 index
type가 2dsphere로 되었다.
인덱스 구축 자동 재개 (resume 기능)
인덱스 구축 중에 mongod를 정지한 경우라도 다음 기동 후에
자동적으로 재개.
2.4 이전에는 mongod를 정지하기 전에 인덱스 구축을 끝내야
했다.

noIndexBuildRetry 옵션으로 무효화 할 수 있다.
해쉬 도큐먼트 키를 이용한 샤딩
샤드 키를 해쉬화 하여 데이터 치우침을 막는다.
예를 들면 샤드 키가 메일 주소인 경우 알파벳에 의한 치우침
이 생겨 균등한 범위 지정이 어렵게 된다.
(일어)https://github.com/syokenz/marunouchimongodb/tree/master/20120926/syokenz
(일어) http://gihyo.jp/dev/serial/01/mongodb/0002
http://docs.mongodb.org/manual/release-notes/2.2/
(일어)http://jp.docs.mongodb.org/manual/release-notes/2.2/
http://docs.mongodb.org/manual/release-notes/2.4/
(일어) https://github.com/syokenz/marunouchimongodb/tree/master/20130219/syokenz

Weitere ähnliche Inhalte

Was ist angesagt?

[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
sung ki choi
 
Mongo db로 배우는 nosql
Mongo db로 배우는 nosqlMongo db로 배우는 nosql
Mongo db로 배우는 nosql
Suwon Chae
 
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
 
Cubrid Inside 5th Session 3 Migration
Cubrid Inside 5th Session 3 MigrationCubrid Inside 5th Session 3 Migration
Cubrid Inside 5th Session 3 Migration
CUBRID
 

Was ist angesagt? (20)

이것이 레디스다.
이것이 레디스다.이것이 레디스다.
이것이 레디스다.
 
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
 
Mongodb cluster
Mongodb clusterMongodb cluster
Mongodb cluster
 
Mongo db로 배우는 nosql
Mongo db로 배우는 nosqlMongo db로 배우는 nosql
Mongo db로 배우는 nosql
 
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 김인범)
 
MongoDB in use(김인범, mongodb korea)
MongoDB in use(김인범, mongodb korea)MongoDB in use(김인범, mongodb korea)
MongoDB in use(김인범, mongodb korea)
 
20141229 dklee docker
20141229 dklee docker20141229 dklee docker
20141229 dklee docker
 
Cubrid Inside 5th Session 3 Migration
Cubrid Inside 5th Session 3 MigrationCubrid Inside 5th Session 3 Migration
Cubrid Inside 5th Session 3 Migration
 
Mongodb 개발 포인트
Mongodb 개발 포인트Mongodb 개발 포인트
Mongodb 개발 포인트
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
 
7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)
7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)
7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)
 
Node Js와 Redis를 사용한 구조화된 데이터
Node Js와 Redis를 사용한 구조화된 데이터Node Js와 Redis를 사용한 구조화된 데이터
Node Js와 Redis를 사용한 구조화된 데이터
 
Mongo db 최범균
Mongo db 최범균Mongo db 최범균
Mongo db 최범균
 
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
 
Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기
 
tomcat jdbc mysql 프로그래밍
tomcat jdbc mysql 프로그래밍tomcat jdbc mysql 프로그래밍
tomcat jdbc mysql 프로그래밍
 
AWS 환경에서 MySQL BMT
AWS 환경에서 MySQL BMTAWS 환경에서 MySQL BMT
AWS 환경에서 MySQL BMT
 
Mongo db intro & tips
Mongo db intro & tipsMongo db intro & tips
Mongo db intro & tips
 
pg_hba.conf 이야기
pg_hba.conf 이야기pg_hba.conf 이야기
pg_hba.conf 이야기
 
[125]웹 성능 최적화에 필요한 브라우저의 모든 것
[125]웹 성능 최적화에 필요한 브라우저의 모든 것[125]웹 성능 최적화에 필요한 브라우저의 모든 것
[125]웹 성능 최적화에 필요한 브라우저의 모든 것
 

Ähnlich wie Mongodb2.2와 2.4의 신 기능 소개

[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
sung ki choi
 
DBMS 아키텍처
DBMS 아키텍처DBMS 아키텍처
DBMS 아키텍처
HaksunLEE6
 
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
Seok-joon Yun
 
Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기
OnGameServer
 

Ähnlich wie Mongodb2.2와 2.4의 신 기능 소개 (20)

[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
 
Jstl_GETCHA_HANJUNG
Jstl_GETCHA_HANJUNGJstl_GETCHA_HANJUNG
Jstl_GETCHA_HANJUNG
 
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
 
Spark sql
Spark sqlSpark sql
Spark sql
 
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
 
MySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docxMySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docx
 
Maxscale 소개 1.1.1
Maxscale 소개 1.1.1Maxscale 소개 1.1.1
Maxscale 소개 1.1.1
 
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
 
DBMS 아키텍처
DBMS 아키텍처DBMS 아키텍처
DBMS 아키텍처
 
테스트
테스트테스트
테스트
 
02.실행환경 교육교재(데이터처리)
02.실행환경 교육교재(데이터처리)02.실행환경 교육교재(데이터처리)
02.실행환경 교육교재(데이터처리)
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계
 
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
 
[오픈소스컨설팅]MyBatis Basic
[오픈소스컨설팅]MyBatis Basic[오픈소스컨설팅]MyBatis Basic
[오픈소스컨설팅]MyBatis Basic
 
손쉬운 데이터 연결 방법(라이브바인딩 활용)
손쉬운 데이터 연결 방법(라이브바인딩 활용)손쉬운 데이터 연결 방법(라이브바인딩 활용)
손쉬운 데이터 연결 방법(라이브바인딩 활용)
 
Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기
 
7가지 동시성 모델 람다아키텍처
7가지 동시성 모델  람다아키텍처7가지 동시성 모델  람다아키텍처
7가지 동시성 모델 람다아키텍처
 
Node.js DBMS short summary
Node.js DBMS short summaryNode.js DBMS short summary
Node.js DBMS short summary
 
Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)
 
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
 

Mehr von 흥배 최

KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
흥배 최
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심
흥배 최
 
NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션
흥배 최
 
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
흥배 최
 
닷넷프레임워크에서 Redis 사용하기
닷넷프레임워크에서 Redis 사용하기닷넷프레임워크에서 Redis 사용하기
닷넷프레임워크에서 Redis 사용하기
흥배 최
 
Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서
Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서
Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서
흥배 최
 
Twitter에 있어서 대규모 시스템 구성, 3개의 원칙과 시스템
Twitter에 있어서 대규모 시스템 구성, 3개의 원칙과 시스템Twitter에 있어서 대규모 시스템 구성, 3개의 원칙과 시스템
Twitter에 있어서 대규모 시스템 구성, 3개의 원칙과 시스템
흥배 최
 
Tdc2013 선배들에게 배우는 server scalability
Tdc2013 선배들에게 배우는 server scalabilityTdc2013 선배들에게 배우는 server scalability
Tdc2013 선배들에게 배우는 server scalability
흥배 최
 
[Sdc 3rd] Boost multi_index
[Sdc 3rd] Boost multi_index[Sdc 3rd] Boost multi_index
[Sdc 3rd] Boost multi_index
흥배 최
 
[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11
흥배 최
 

Mehr von 흥배 최 (20)

Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용
 
Go web framework 비교[번역 정리]
Go web framework 비교[번역 정리]Go web framework 비교[번역 정리]
Go web framework 비교[번역 정리]
 
Bash on Ubuntu on Windows
Bash on Ubuntu on WindowsBash on Ubuntu on Windows
Bash on Ubuntu on Windows
 
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
 
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
 
Wtl 개요와 설치
Wtl 개요와 설치Wtl 개요와 설치
Wtl 개요와 설치
 
KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발
KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발
KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심
 
NLog 소개
NLog 소개NLog 소개
NLog 소개
 
닷넷 Apache avro
닷넷 Apache avro닷넷 Apache avro
닷넷 Apache avro
 
NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션
 
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
 
닷넷프레임워크에서 Redis 사용하기
닷넷프레임워크에서 Redis 사용하기닷넷프레임워크에서 Redis 사용하기
닷넷프레임워크에서 Redis 사용하기
 
Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서
Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서
Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서
 
Twitter에 있어서 대규모 시스템 구성, 3개의 원칙과 시스템
Twitter에 있어서 대규모 시스템 구성, 3개의 원칙과 시스템Twitter에 있어서 대규모 시스템 구성, 3개의 원칙과 시스템
Twitter에 있어서 대규모 시스템 구성, 3개의 원칙과 시스템
 
Tdc2013 선배들에게 배우는 server scalability
Tdc2013 선배들에게 배우는 server scalabilityTdc2013 선배들에게 배우는 server scalability
Tdc2013 선배들에게 배우는 server scalability
 
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
 
[Sdc 3rd] Boost multi_index
[Sdc 3rd] Boost multi_index[Sdc 3rd] Boost multi_index
[Sdc 3rd] Boost multi_index
 
[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11
 
[0602 박민근] Direct2D
[0602 박민근] Direct2D[0602 박민근] Direct2D
[0602 박민근] Direct2D
 

Mongodb2.2와 2.4의 신 기능 소개

  • 3. 병렬 처리 강화 Global 락을 없애고, DB 레벨 락으로. 이후에도 계속 락의 단위를 좁힐 예정. 락 상태는 아래의 명렬어를 확인 가능 db.currentOp() db.serverStatus()
  • 4. Page fault 아키텍처 개선 락 중에 PageFault가 발생하여 락이 연장되는 것을 피하도록. if 쓰기 오퍼렌이션에서 - 접근 하는 곳이 메모리 상이 아니면 mutation이 일어난다 - Page fault 하려고 할 때 Then - PageFaultException을 발생 시킨다 - 락을 해제하고 page을 메모리로 올린다 - 쓰기 오러페이션을 재 실행
  • 5.
  • 6. Aggregation Framework SQL의 GROUP BY 기능과 비슷하다. 저장된 데이터에 대해 다양한 처리나 조작을 하여 이전에는 JavaScript로 실해하고 있던 집계 처리를 MongoDB 명령어로 할 수 있다. - $match //집계 처리 조건을 지정하고 매칭한다(SQL의 WHERE 또는 HAVING) - $project //집계 처리를 할 필드를 선택/삭제, 리네임(SQL의 AS), 집계 결과를 ins ert 한다 - $unwind //배열을 지정하고 전개해서 반환한다 - $group //$sum, $avg 등을 사용하여 집계 처리를 한다 - $sort // 지정된 sort 키에 의한 소트 - $skip //지정된 숫자 만큼 skip 한다 - $limit //지정된 문자 만큼 집계 결과를 반환한다
  • 7.
  • 8. Read에 관한 설정 Read 시에 consistency 강도를 지정 가능 하도록 - PRIMARY - PRIMARY PREFERRED - SECONDARY - SECONDARY PREFERRED - NEAREST
  • 9. Tag를 사용한 Sharding 가능하도록 Tag 베이스로 레플리케이션 - sharding key에 의한 쓸 곳을 제어 - uid=1~100은 A 데이터 센터의 노드, uid=101~200은 B 데 이터 센터의 노드 라는 설정이 가능
  • 10. TTL(Time To Live) Collections 기한 있는 컬렉션을 만들 수 있다. date-type 필드가 필요. capped collection으로는 사용할 수 없다. //events 컬렉션 데이터를 status 필드를 기점으로 30초 후에 삭제하도록 설정 db.events.ensureIndex( { "status": 1 }, { expireAfterSeconds: 30 } ) //status에는 date-type information을 넣는다. new Date()로 OK. db.events.insert( { "status" : new Date(), "value" : 1 } ); db.events.insert( { "status" : new Date(), "value" : 2 } ); db.events.insert( { "status" : "not Date", "value" : 3 } ); db.events.insert( { "no-status" : "blank", "value" : 4 } ); db.events.find(); //30초 후에 db.events.find();
  • 11. Server-side Function을 load 가능 db.system.js에 보존한 function을 db.loadServerScripts()에서 load 할 수 있다.
  • 14. 전문 검색 기능 인덱스가 있는 전문 검색 기능 지원. 영어만 지원 -_크게 3 부분으로 나누어 처리 - Tokenizer로 형태소 분석 - Stop Word Fultering로 불 필요한 단어를 제거 - Stemming 처리
  • 15. Kerberos 인증 지원 서브 스크립션 판만 지원. mongod 인증으로 이용 가능. mongod 기동 시에 파라미터로 지정한다.
  • 16. 권한에 의한 접근 룰 권한은 데이터 베이스 마다 설정 가능. {database}.system.users 컬렉션에 저장. roles(권한) 내용 read 모든 컬렉션 데이터를 읽기 가능 readWrite 모든 컬렉션 데이터를 읽기, 쓰기 가능 dbAdmin 인덱스 작성, DB 통계 정보 취득 등 데이터 베이스 관리자 조작 가능 userAdmin system.users에 대해서 읽기 쓰기 가능, 유저 작성이나 권한 변경 등 관리 가능 clusterAdmin 레플리케이션이나 샤딩 관리자 조작 가능 readAnyDatabase admin 데이터 베이스를 포함한 모든 논리 데이터 베이스를 읽기 가능 readWriteAnyDatabase admin 데이터 베이스를 포함한 모든 논리 데이터 베이스를 읽기 쓰기 가능 userAdminAnyDatabase userAdmin으로서 유저 관리를 하고, 모든 논리 데이터 베이스를 읽기, 쓰기 가능 dbAdminAnyDatabase dbAdmin으로서 데이터 베이스를 관리하고, 모든 논리 데이터 베이스를 읽기, 쓰 기 가능
  • 17. JavaScript 엔진을 V8로 변경 기본 JavaScript 엔진을 SpiderMonkey에서 V8로 변경. mongo shell 에서 db.serverBuildInfo()로 확인할 수 있다. 또는 interpreterVersion()으로 확인 할 수 있다.
  • 18. GeoJSON을 사용한 구면지리 공간 인 덱스 2.4 에서 구면지리공간(Spherical Geospatial) 인덱스의 index type가 2dsphere로 되었다.
  • 19. 인덱스 구축 자동 재개 (resume 기능) 인덱스 구축 중에 mongod를 정지한 경우라도 다음 기동 후에 자동적으로 재개. 2.4 이전에는 mongod를 정지하기 전에 인덱스 구축을 끝내야 했다. noIndexBuildRetry 옵션으로 무효화 할 수 있다.
  • 20. 해쉬 도큐먼트 키를 이용한 샤딩 샤드 키를 해쉬화 하여 데이터 치우침을 막는다. 예를 들면 샤드 키가 메일 주소인 경우 알파벳에 의한 치우침 이 생겨 균등한 범위 지정이 어렵게 된다.