SlideShare uma empresa Scribd logo
1 de 46
MONGODB
  TIP 42~50
TIP 42 레플리카 셋은 주
      서버 없이도
   재설정될 수 있다.
TIP 42 레플리카 셋은 주
       서버 없이도
    재설정될 수 있다.
레플리카 셋에서 과반수가 넘지 않는 서버만 살아 있고 나머지
는 죽은 경우
TIP 42 레플리카 셋은 주
       서버 없이도
    재설정될 수 있다.
레플리카 셋에서 과반수가 넘지 않는 서버만 살아 있고 나머지
는 죽은 경우

공식적인 절차는 local 데이터베이스를 날려버리고, 레플리카
셋을 처음부터 재설정해야 한다.
TIP 42 레플리카 셋은 주
       서버 없이도
    재설정될 수 있다.
레플리카 셋에서 과반수가 넘지 않는 서버만 살아 있고 나머지
는 죽은 경우

공식적인 절차는 local 데이터베이스를 날려버리고, 레플리카
셋을 처음부터 재설정해야 한다.

레플리케이션을 재구성하고 oplog를 다시 할당하는 동안 시스
템이 중단된다.
애플리케이션을 중단하고
  싶지 않은 경우
애플리케이션을 중단하고
  싶지 않은 경우

두개이상의 부서버중 하나를 선택하여 중지하고,
다른 포트를 사용하여 재시작한다.
애플리케이션을 중단하고
   싶지 않은 경우

두개이상의 부서버중 하나를 선택하여 중지하고,
다른 포트를 사용하여 재시작한다.

mongod --replSet foo --port 5555
애플리케이션을 중단하고
   싶지 않은 경우

두개이상의 부서버중 하나를 선택하여 중지하고,
다른 포트를 사용하여 재시작한다.

mongod --replSet foo --port 5555

mongod --port 5556
설정 적용
> use local
> config = db.system.replset.findOne(){
   “_id”:”foo”,                 > config.slice(2,1)
   “version”:2,                 > config{
   “members” : [{                  “_id”:”foo”,
     “_id”:0,                      “version”:3,
     “host” : “rs1:5555”},{        “member”:[{
     “_id”:1,                         “_id”:0,
     “host”:”rs2:5555”,               “host”:”rs1:5555”},{
     “arbiterOnly”:true},{            “_id”:1,
     “_id”:2,                         “host”:”rs2:5555”,
     “host”:”rs3:5555”},{             “arbiterOnly”:true},{
     “_id”:3,                         “_id”:3,
     “host”:”rs4:5555”}]}             “host”:”rs4:5555”}]}
TIP 43 --SHARDSVR 와
 --CONFIGSVR 옵션이
     필수는 아니다.
TIP 43 --SHARDSVR 와
  --CONFIGSVR 옵션이
      필수는 아니다.
mongos 프로세스는 27017, 모든 샤드는 27018, 모든 설정 서
버는 27019 포트를 사용.
TIP 43 --SHARDSVR 와
  --CONFIGSVR 옵션이
      필수는 아니다.
mongos 프로세스는 27017, 모든 샤드는 27018, 모든 설정 서
버는 27019 포트를 사용.

--configsvr 는 dialog를 켜는 추가적인 동작을 한다.
TIP 43 --SHARDSVR 와
  --CONFIGSVR 옵션이
      필수는 아니다.
mongos 프로세스는 27017, 모든 샤드는 27018, 모든 설정 서
버는 27019 포트를 사용.

--configsvr 는 dialog를 켜는 추가적인 동작을 한다.

dialog는 설정 데이터베이스가 수행하는 모든 동작을 다시
실행할 수 있도록 기록한다.
TIP 43 --SHARDSVR 와
  --CONFIGSVR 옵션이
      필수는 아니다.
mongos 프로세스는 27017, 모든 샤드는 27018, 모든 설정 서
버는 27019 포트를 사용.

--configsvr 는 dialog를 켜는 추가적인 동작을 한다.

dialog는 설정 데이터베이스가 수행하는 모든 동작을 다시
실행할 수 있도록 기록한다.

--journal 옵션을 사용하면 같은 효과에 성능 저하가 없다.
TIP 44 --NOTABLESCAN
옵션은 개발 중에만 사용하라
TIP 44 --NOTABLESCAN
옵션은 개발 중에만 사용하라


--notablescan 옵션은 쿼리를 수행할 때 테이블 검색이 수반
되면 에러를 반환한다. (색인을 사용하는 쿼리는 정상 처
리.)
TIP 44 --NOTABLESCAN
옵션은 개발 중에만 사용하라


--notablescan 옵션은 쿼리를 수행할 때 테이블 검색이 수반
되면 에러를 반환한다. (색인을 사용하는 쿼리는 정상 처
리.)

실 운용중일 경우 관리 작업을 할때 색인되지 않은 테이블
을 검색할 경우가 발생한다.
TIP 45 자바스크립트 조금은
        배워두라.
TIP 45 자바스크립트 조금은
        배워두라.

파이썬과 같은 자체 셀을 가진 언어를 사용하거나,
MongoDB에 직접 접근할 필요가 없는 Mongoid 같은
ODM을 사용하더라도 자바스크립트 쉘에 익숙해져야 한
다.
TIP 45 자바스크립트 조금은
        배워두라.

파이썬과 같은 자체 셀을 가진 언어를 사용하거나,
MongoDB에 직접 접근할 필요가 없는 Mongoid 같은
ODM을 사용하더라도 자바스크립트 쉘에 익숙해져야 한
다.

자바스크립트 셀은 MongoDB의 정보에 접근하는 가장 빠
르고 좋은 도구이다.
TIP 46 모든 서버와 DB는
 하나의 셸에서 관리하라
TIP 46 모든 서버와 DB는
  하나의 셸에서 관리하라
mongo 는 localhost:27017로 접속.
TIP 46 모든 서버와 DB는
  하나의 셸에서 관리하라
mongo 는 localhost:27017로 접속.

host:port/database 옵션으로 어떤 서버에도 접근 가능.
TIP 46 모든 서버와 DB는
  하나의 셸에서 관리하라
mongo 는 localhost:27017로 접속.

host:port/database 옵션으로 어떤 서버에도 접근 가능.

use customers, use game, use customers ...
TIP 46 모든 서버와 DB는
  하나의 셸에서 관리하라
mongo 는 localhost:27017로 접속.

host:port/database 옵션으로 어떤 서버에도 접근 가능.

use customers, use game, use customers ...

game = db.getSisterDB(“game”)
customers = db.getSisterDB(“customers”)
TIP 46 모든 서버와 DB는
  하나의 셸에서 관리하라
mongo 는 localhost:27017로 접속.

host:port/database 옵션으로 어떤 서버에도 접근 가능.

use customers, use game, use customers ...

game = db.getSisterDB(“game”)
customers = db.getSisterDB(“customers”)

레플리카 셋이나 샤딩된 클러스터를 사용하는 경우, 접속
을 각각 유지 할 수 있다.
master=connect(“ny1a:27017/admin”)
slave = connect(“ny1b:27017/admin”)
TIP 47 함수에 대해 자세한
사항을 보려면 ‘HELP’를 수행
TIP 47 함수에 대해 자세한
사항을 보려면 ‘HELP’를 수행
자바스크립트 셸안에서 함수의 괄호 없이 수행하면 소스코
드를 볼 수 있다.
> db.addUser
function(username, pass, readOnly){ ..... }
TIP 47 함수에 대해 자세한
사항을 보려면 ‘HELP’를 수행
자바스크립트 셸안에서 함수의 괄호 없이 수행하면 소스코
드를 볼 수 있다.
> db.addUser
function(username, pass, readOnly){ ..... }

listCommands 만 기억하면 모든 명령어 이름을 볼 수 있다.
> db.runCommand({listCommands:1})
TIP 47 함수에 대해 자세한
사항을 보려면 ‘HELP’를 수행
자바스크립트 셸안에서 함수의 괄호 없이 수행하면 소스코
드를 볼 수 있다.
> db.addUser
function(username, pass, readOnly){ ..... }

listCommands 만 기억하면 모든 명령어 이름을 볼 수 있다.
> db.runCommand({listCommands:1})

자바스크립트 셀에는 자동 완성 기능의 제안을 받을 수 있
다.
TIP48 구동 파일을 작성하라.
TIP48 구동 파일을 작성하라.
셸이 시작할 때 옵션으로 헬퍼 함수 목록인 구동 파일을 지
정할 수 있다.
$ mongo startup.js
TIP48 구동 파일을 작성하라.
셸이 시작할 때 옵션으로 헬퍼 함수 목록인 구동 파일을 지
정할 수 있다.
$ mongo startup.js

실수로 데이터베이스를 삭제하거나 데이터를 지우는 일을
방지하고 싶다면 일부 명령을 삭제할 수 있다.
// no-delete.js
delete DBCollection.prototype.drop;
delete DBCollection.prototype.remove;
delete DB.prototype.dropDatabase;
$ mongo no-delete.js
> db.foo.drop()
TypeError
TIP 49 자신이 만든
 함수를 추가하라
TIP 49 자신이 만든
     함수를 추가하라
스스로 만든 함수를 전역 함수나 클래스 인스턴스, 클래스
프로토타입에 추가하여 사용할 수 있다.
TIP 49 자신이 만든
        함수를 추가하라
스스로 만든 함수를 전역 함수나 클래스 인스턴스, 클래스
프로토타입에 추가하여 사용할 수 있다.

> DB.prototype.getOplogLength = function() { ... };
TIP 49 자신이 만든
        함수를 추가하라
스스로 만든 함수를 전역 함수나 클래스 인스턴스, 클래스
프로토타입에 추가하여 사용할 수 있다.

> DB.prototype.getOplogLength = function() { ... };

이미 데이터베이스 인스턴스 rsA, rsB 가 있다면?
var f = function() { ... };
rsA.getOplogSize = f;
rsB.getOplogSize = f;
TIP 49 자신이 만든
         함수를 추가하라
스스로 만든 함수를 전역 함수나 클래스 인스턴스, 클래스
프로토타입에 추가하여 사용할 수 있다.

> DB.prototype.getOplogLength = function() { ... };

이미 데이터베이스 인스턴스 rsA, rsB 가 있다면?
var f = function() { ... };
rsA.getOplogSize = f;
rsB.getOplogSize = f;

전역 함수로도 만들 수 있다.
getOplogLength = function(db) { ... };
파일에서
자바스크립트 불러오기
파일에서
  자바스크립트 불러오기

load()함수는 셸 컨텍스트하에서 실행된다.
// hello.js
print(“Hello, world!”)
> load(“hello.js”)
Hello, world!
파일에서
  자바스크립트 불러오기

load()함수는 셸 컨텍스트하에서 실행된다.
// hello.js
print(“Hello, world!”)
> load(“hello.js”)
Hello, world!

레플리카 셋이나 샤딩을 구성할 때 사용할 수 있다.
TIP 50 스스로 쓴 것을 다시
읽는 명령은 단일 접속을 통
      해서 수행하라.
TIP 50 스스로 쓴 것을 다시
읽는 명령은 단일 접속을 통
      해서 수행하라.
 client   C   B   A
TIP 50 스스로 쓴 것을 다시
읽는 명령은 단일 접속을 통
      해서 수행하라.
 client   C   B   A




          C   B   A
 client
          F   E   D
TIP 50 스스로 쓴 것을 다시
읽는 명령은 단일 접속을 통
      해서 수행하라.
 client   C   B   A



                      같은 접속을 통
          C   B   A   해 전송해야 하
 client               는 요청들의 묶
                      음을 지정하는
          F   E   D
                       방식을 사용

Mais conteúdo relacionado

Mais procurados

1.Startup JavaScript - 프로그래밍 기초
1.Startup JavaScript - 프로그래밍 기초1.Startup JavaScript - 프로그래밍 기초
1.Startup JavaScript - 프로그래밍 기초Circulus
 
Startup JavaScript 8 - NPM, Express.JS
Startup JavaScript 8 - NPM, Express.JSStartup JavaScript 8 - NPM, Express.JS
Startup JavaScript 8 - NPM, Express.JSCirculus
 
헷갈리는 자바스크립트 정리
헷갈리는 자바스크립트 정리헷갈리는 자바스크립트 정리
헷갈리는 자바스크립트 정리은숙 이
 
Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교Gitaek kwon
 
[NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기 [NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기 YoungSu Son
 
JavaScript Promises
JavaScript PromisesJavaScript Promises
JavaScript Promises우영 주
 
Promise 패턴 공부
Promise 패턴 공부Promise 패턴 공부
Promise 패턴 공부HongGun Yoo
 
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST APIWooyoung Ko
 
AWS EC2 flask_uwsgi_nginx install guide korean
AWS EC2 flask_uwsgi_nginx install guide koreanAWS EC2 flask_uwsgi_nginx install guide korean
AWS EC2 flask_uwsgi_nginx install guide koreanJinsoo Park
 
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback흥배 최
 
Laravel 로 배우는 서버사이드 #3
Laravel 로 배우는 서버사이드 #3Laravel 로 배우는 서버사이드 #3
Laravel 로 배우는 서버사이드 #3성일 한
 
Node js[stg]onimusha 20140822
Node js[stg]onimusha 20140822Node js[stg]onimusha 20140822
Node js[stg]onimusha 20140822병헌 정
 
What is chef - korean
What is chef - koreanWhat is chef - korean
What is chef - koreanSangUk Park
 
진짜기초 Node.js
진짜기초 Node.js진짜기초 Node.js
진짜기초 Node.jsWoo Jin Kim
 
Laravel 로 배우는 서버사이드 #1
Laravel 로 배우는 서버사이드 #1Laravel 로 배우는 서버사이드 #1
Laravel 로 배우는 서버사이드 #1성일 한
 
Laravel 로 배우는 서버사이드 #4
Laravel 로 배우는 서버사이드 #4Laravel 로 배우는 서버사이드 #4
Laravel 로 배우는 서버사이드 #4성일 한
 

Mais procurados (20)

1.Startup JavaScript - 프로그래밍 기초
1.Startup JavaScript - 프로그래밍 기초1.Startup JavaScript - 프로그래밍 기초
1.Startup JavaScript - 프로그래밍 기초
 
Javascript 101
Javascript 101Javascript 101
Javascript 101
 
Startup JavaScript 8 - NPM, Express.JS
Startup JavaScript 8 - NPM, Express.JSStartup JavaScript 8 - NPM, Express.JS
Startup JavaScript 8 - NPM, Express.JS
 
Whatischef korean
Whatischef koreanWhatischef korean
Whatischef korean
 
헷갈리는 자바스크립트 정리
헷갈리는 자바스크립트 정리헷갈리는 자바스크립트 정리
헷갈리는 자바스크립트 정리
 
Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교
 
Node.js 첫걸음
Node.js 첫걸음Node.js 첫걸음
Node.js 첫걸음
 
[NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기 [NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기
 
Introduce php7
Introduce php7Introduce php7
Introduce php7
 
JavaScript Promises
JavaScript PromisesJavaScript Promises
JavaScript Promises
 
Promise 패턴 공부
Promise 패턴 공부Promise 패턴 공부
Promise 패턴 공부
 
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
 
AWS EC2 flask_uwsgi_nginx install guide korean
AWS EC2 flask_uwsgi_nginx install guide koreanAWS EC2 flask_uwsgi_nginx install guide korean
AWS EC2 flask_uwsgi_nginx install guide korean
 
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
 
Laravel 로 배우는 서버사이드 #3
Laravel 로 배우는 서버사이드 #3Laravel 로 배우는 서버사이드 #3
Laravel 로 배우는 서버사이드 #3
 
Node js[stg]onimusha 20140822
Node js[stg]onimusha 20140822Node js[stg]onimusha 20140822
Node js[stg]onimusha 20140822
 
What is chef - korean
What is chef - koreanWhat is chef - korean
What is chef - korean
 
진짜기초 Node.js
진짜기초 Node.js진짜기초 Node.js
진짜기초 Node.js
 
Laravel 로 배우는 서버사이드 #1
Laravel 로 배우는 서버사이드 #1Laravel 로 배우는 서버사이드 #1
Laravel 로 배우는 서버사이드 #1
 
Laravel 로 배우는 서버사이드 #4
Laravel 로 배우는 서버사이드 #4Laravel 로 배우는 서버사이드 #4
Laravel 로 배우는 서버사이드 #4
 

Destaque

Mongodb 관리
Mongodb 관리Mongodb 관리
Mongodb 관리흥배 최
 
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
 
Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개흥배 최
 
Mongo db monitoring 어떤 것이 좋을까(mongodb korea, 김인범)
Mongo db monitoring 어떤 것이 좋을까(mongodb korea, 김인범)Mongo db monitoring 어떤 것이 좋을까(mongodb korea, 김인범)
Mongo db monitoring 어떤 것이 좋을까(mongodb korea, 김인범)InBum Kim
 
운행기록(DTG) 분석 및 활용 - 세미나 발표
운행기록(DTG) 분석 및 활용 - 세미나 발표운행기록(DTG) 분석 및 활용 - 세미나 발표
운행기록(DTG) 분석 및 활용 - 세미나 발표Jung Yujin
 
빅데이터로 분석한 서울시 교통사고 패턴과 대응
빅데이터로 분석한 서울시 교통사고 패턴과 대응빅데이터로 분석한 서울시 교통사고 패턴과 대응
빅데이터로 분석한 서울시 교통사고 패턴과 대응마경근 마
 
mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교Woo Yeong Choi
 
Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Jin wook
 

Destaque (9)

Mongodb index
Mongodb indexMongodb index
Mongodb index
 
Mongodb 관리
Mongodb 관리Mongodb 관리
Mongodb 관리
 
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 김인범)
 
Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개
 
Mongo db monitoring 어떤 것이 좋을까(mongodb korea, 김인범)
Mongo db monitoring 어떤 것이 좋을까(mongodb korea, 김인범)Mongo db monitoring 어떤 것이 좋을까(mongodb korea, 김인범)
Mongo db monitoring 어떤 것이 좋을까(mongodb korea, 김인범)
 
운행기록(DTG) 분석 및 활용 - 세미나 발표
운행기록(DTG) 분석 및 활용 - 세미나 발표운행기록(DTG) 분석 및 활용 - 세미나 발표
운행기록(DTG) 분석 및 활용 - 세미나 발표
 
빅데이터로 분석한 서울시 교통사고 패턴과 대응
빅데이터로 분석한 서울시 교통사고 패턴과 대응빅데이터로 분석한 서울시 교통사고 패턴과 대응
빅데이터로 분석한 서울시 교통사고 패턴과 대응
 
mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교
 
Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략
 

Semelhante a Mongodb tip42 50

Windows Debugging Technique #3
Windows Debugging Technique #3Windows Debugging Technique #3
Windows Debugging Technique #3Wooseok Seo
 
Pwnable study basic_2
Pwnable study basic_2Pwnable study basic_2
Pwnable study basic_2Jinkyoung Kim
 
Node.js DBMS short summary
Node.js DBMS short summaryNode.js DBMS short summary
Node.js DBMS short summaryHoChul Shin
 
programming with GDB
programming with GDBprogramming with GDB
programming with GDBNakCheon Jung
 
Linux reversing study_basic_3
Linux reversing study_basic_3Linux reversing study_basic_3
Linux reversing study_basic_3Jinkyoung Kim
 
Pwnable study basic_1
Pwnable study basic_1Pwnable study basic_1
Pwnable study basic_1Jinkyoung Kim
 
Assembly 스터디 2
Assembly 스터디 2Assembly 스터디 2
Assembly 스터디 2Jinkyoung Kim
 
효과적인 임베디드 디버깅 환경구축
효과적인 임베디드 디버깅 환경구축효과적인 임베디드 디버깅 환경구축
효과적인 임베디드 디버깅 환경구축guest0ad316e
 
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버준철 박
 
[NDC16] Effective Git
[NDC16] Effective Git[NDC16] Effective Git
[NDC16] Effective GitChanwoong Kim
 
MariaDB Other Features
MariaDB Other FeaturesMariaDB Other Features
MariaDB Other FeaturesJongJin Lee
 
Concurrent servers
Concurrent serversConcurrent servers
Concurrent serversTonyYoon12
 
Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기OnGameServer
 
20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debuggingJongwon Han
 
Windows Debugging Technique #2
Windows Debugging Technique #2Windows Debugging Technique #2
Windows Debugging Technique #2Wooseok Seo
 
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민XpressEngine
 
S#03 김용현:VS2010으로 마이그레이션
S#03 김용현:VS2010으로 마이그레이션S#03 김용현:VS2010으로 마이그레이션
S#03 김용현:VS2010으로 마이그레이션codercay
 
Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Han Sung Kim
 

Semelhante a Mongodb tip42 50 (20)

Windows Debugging Technique #3
Windows Debugging Technique #3Windows Debugging Technique #3
Windows Debugging Technique #3
 
Pwnable study basic_2
Pwnable study basic_2Pwnable study basic_2
Pwnable study basic_2
 
Node.js DBMS short summary
Node.js DBMS short summaryNode.js DBMS short summary
Node.js DBMS short summary
 
programming with GDB
programming with GDBprogramming with GDB
programming with GDB
 
Linux reversing study_basic_3
Linux reversing study_basic_3Linux reversing study_basic_3
Linux reversing study_basic_3
 
Pwnable study basic_1
Pwnable study basic_1Pwnable study basic_1
Pwnable study basic_1
 
Assembly 스터디 2
Assembly 스터디 2Assembly 스터디 2
Assembly 스터디 2
 
효과적인 임베디드 디버깅 환경구축
효과적인 임베디드 디버깅 환경구축효과적인 임베디드 디버깅 환경구축
효과적인 임베디드 디버깅 환경구축
 
03.Ansible 소개
03.Ansible 소개03.Ansible 소개
03.Ansible 소개
 
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
 
[NDC16] Effective Git
[NDC16] Effective Git[NDC16] Effective Git
[NDC16] Effective Git
 
MariaDB Other Features
MariaDB Other FeaturesMariaDB Other Features
MariaDB Other Features
 
Concurrent servers
Concurrent serversConcurrent servers
Concurrent servers
 
Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기
 
20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging
 
Windows Debugging Technique #2
Windows Debugging Technique #2Windows Debugging Technique #2
Windows Debugging Technique #2
 
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
 
S#03 김용현:VS2010으로 마이그레이션
S#03 김용현:VS2010으로 마이그레이션S#03 김용현:VS2010으로 마이그레이션
S#03 김용현:VS2010으로 마이그레이션
 
Node.js 기본
Node.js 기본Node.js 기본
Node.js 기본
 
Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료
 

Mais de Kyungryul KIM

전문검색기술도전
전문검색기술도전전문검색기술도전
전문검색기술도전Kyungryul KIM
 
Nib_NSWindowController
Nib_NSWindowControllerNib_NSWindowController
Nib_NSWindowControllerKyungryul KIM
 
서버인프라를지탱하는기술5 1 2
서버인프라를지탱하는기술5 1 2서버인프라를지탱하는기술5 1 2
서버인프라를지탱하는기술5 1 2Kyungryul KIM
 
Chaper24 languages high_and_low
Chaper24 languages high_and_lowChaper24 languages high_and_low
Chaper24 languages high_and_lowKyungryul KIM
 
Ch22 운영체제
Ch22 운영체제Ch22 운영체제
Ch22 운영체제Kyungryul KIM
 

Mais de Kyungryul KIM (20)

Ch4 pugixml
Ch4 pugixmlCh4 pugixml
Ch4 pugixml
 
Node ch12
Node ch12Node ch12
Node ch12
 
11.scripting
11.scripting11.scripting
11.scripting
 
32 osx app_release
32 osx app_release32 osx app_release
32 osx app_release
 
Meteor ddp
Meteor ddpMeteor ddp
Meteor ddp
 
Cocos2dx 7.1-7.2
Cocos2dx 7.1-7.2Cocos2dx 7.1-7.2
Cocos2dx 7.1-7.2
 
Cocos2 d x-7.3_4
Cocos2 d x-7.3_4Cocos2 d x-7.3_4
Cocos2 d x-7.3_4
 
Cocos2d x-ch5-1
Cocos2d x-ch5-1Cocos2d x-ch5-1
Cocos2d x-ch5-1
 
Coco2d x
Coco2d xCoco2d x
Coco2d x
 
23 drag drop
23 drag drop23 drag drop
23 drag drop
 
Hadoop ch5
Hadoop ch5Hadoop ch5
Hadoop ch5
 
전문검색기술도전
전문검색기술도전전문검색기술도전
전문검색기술도전
 
Nib_NSWindowController
Nib_NSWindowControllerNib_NSWindowController
Nib_NSWindowController
 
Dsas
DsasDsas
Dsas
 
서버인프라를지탱하는기술5 1 2
서버인프라를지탱하는기술5 1 2서버인프라를지탱하는기술5 1 2
서버인프라를지탱하는기술5 1 2
 
Chaper24 languages high_and_low
Chaper24 languages high_and_lowChaper24 languages high_and_low
Chaper24 languages high_and_low
 
Ch22 운영체제
Ch22 운영체제Ch22 운영체제
Ch22 운영체제
 
Mibis ch20
Mibis ch20Mibis ch20
Mibis ch20
 
Mibis ch15
Mibis ch15Mibis ch15
Mibis ch15
 
Mibis ch8
Mibis ch8Mibis ch8
Mibis ch8
 

Mongodb tip42 50

  • 1. MONGODB TIP 42~50
  • 2. TIP 42 레플리카 셋은 주 서버 없이도 재설정될 수 있다.
  • 3. TIP 42 레플리카 셋은 주 서버 없이도 재설정될 수 있다. 레플리카 셋에서 과반수가 넘지 않는 서버만 살아 있고 나머지 는 죽은 경우
  • 4. TIP 42 레플리카 셋은 주 서버 없이도 재설정될 수 있다. 레플리카 셋에서 과반수가 넘지 않는 서버만 살아 있고 나머지 는 죽은 경우 공식적인 절차는 local 데이터베이스를 날려버리고, 레플리카 셋을 처음부터 재설정해야 한다.
  • 5. TIP 42 레플리카 셋은 주 서버 없이도 재설정될 수 있다. 레플리카 셋에서 과반수가 넘지 않는 서버만 살아 있고 나머지 는 죽은 경우 공식적인 절차는 local 데이터베이스를 날려버리고, 레플리카 셋을 처음부터 재설정해야 한다. 레플리케이션을 재구성하고 oplog를 다시 할당하는 동안 시스 템이 중단된다.
  • 6. 애플리케이션을 중단하고 싶지 않은 경우
  • 7. 애플리케이션을 중단하고 싶지 않은 경우 두개이상의 부서버중 하나를 선택하여 중지하고, 다른 포트를 사용하여 재시작한다.
  • 8. 애플리케이션을 중단하고 싶지 않은 경우 두개이상의 부서버중 하나를 선택하여 중지하고, 다른 포트를 사용하여 재시작한다. mongod --replSet foo --port 5555
  • 9. 애플리케이션을 중단하고 싶지 않은 경우 두개이상의 부서버중 하나를 선택하여 중지하고, 다른 포트를 사용하여 재시작한다. mongod --replSet foo --port 5555 mongod --port 5556
  • 10. 설정 적용 > use local > config = db.system.replset.findOne(){ “_id”:”foo”, > config.slice(2,1) “version”:2, > config{ “members” : [{ “_id”:”foo”, “_id”:0, “version”:3, “host” : “rs1:5555”},{ “member”:[{ “_id”:1, “_id”:0, “host”:”rs2:5555”, “host”:”rs1:5555”},{ “arbiterOnly”:true},{ “_id”:1, “_id”:2, “host”:”rs2:5555”, “host”:”rs3:5555”},{ “arbiterOnly”:true},{ “_id”:3, “_id”:3, “host”:”rs4:5555”}]} “host”:”rs4:5555”}]}
  • 11. TIP 43 --SHARDSVR 와 --CONFIGSVR 옵션이 필수는 아니다.
  • 12. TIP 43 --SHARDSVR 와 --CONFIGSVR 옵션이 필수는 아니다. mongos 프로세스는 27017, 모든 샤드는 27018, 모든 설정 서 버는 27019 포트를 사용.
  • 13. TIP 43 --SHARDSVR 와 --CONFIGSVR 옵션이 필수는 아니다. mongos 프로세스는 27017, 모든 샤드는 27018, 모든 설정 서 버는 27019 포트를 사용. --configsvr 는 dialog를 켜는 추가적인 동작을 한다.
  • 14. TIP 43 --SHARDSVR 와 --CONFIGSVR 옵션이 필수는 아니다. mongos 프로세스는 27017, 모든 샤드는 27018, 모든 설정 서 버는 27019 포트를 사용. --configsvr 는 dialog를 켜는 추가적인 동작을 한다. dialog는 설정 데이터베이스가 수행하는 모든 동작을 다시 실행할 수 있도록 기록한다.
  • 15. TIP 43 --SHARDSVR 와 --CONFIGSVR 옵션이 필수는 아니다. mongos 프로세스는 27017, 모든 샤드는 27018, 모든 설정 서 버는 27019 포트를 사용. --configsvr 는 dialog를 켜는 추가적인 동작을 한다. dialog는 설정 데이터베이스가 수행하는 모든 동작을 다시 실행할 수 있도록 기록한다. --journal 옵션을 사용하면 같은 효과에 성능 저하가 없다.
  • 16. TIP 44 --NOTABLESCAN 옵션은 개발 중에만 사용하라
  • 17. TIP 44 --NOTABLESCAN 옵션은 개발 중에만 사용하라 --notablescan 옵션은 쿼리를 수행할 때 테이블 검색이 수반 되면 에러를 반환한다. (색인을 사용하는 쿼리는 정상 처 리.)
  • 18. TIP 44 --NOTABLESCAN 옵션은 개발 중에만 사용하라 --notablescan 옵션은 쿼리를 수행할 때 테이블 검색이 수반 되면 에러를 반환한다. (색인을 사용하는 쿼리는 정상 처 리.) 실 운용중일 경우 관리 작업을 할때 색인되지 않은 테이블 을 검색할 경우가 발생한다.
  • 19. TIP 45 자바스크립트 조금은 배워두라.
  • 20. TIP 45 자바스크립트 조금은 배워두라. 파이썬과 같은 자체 셀을 가진 언어를 사용하거나, MongoDB에 직접 접근할 필요가 없는 Mongoid 같은 ODM을 사용하더라도 자바스크립트 쉘에 익숙해져야 한 다.
  • 21. TIP 45 자바스크립트 조금은 배워두라. 파이썬과 같은 자체 셀을 가진 언어를 사용하거나, MongoDB에 직접 접근할 필요가 없는 Mongoid 같은 ODM을 사용하더라도 자바스크립트 쉘에 익숙해져야 한 다. 자바스크립트 셀은 MongoDB의 정보에 접근하는 가장 빠 르고 좋은 도구이다.
  • 22. TIP 46 모든 서버와 DB는 하나의 셸에서 관리하라
  • 23. TIP 46 모든 서버와 DB는 하나의 셸에서 관리하라 mongo 는 localhost:27017로 접속.
  • 24. TIP 46 모든 서버와 DB는 하나의 셸에서 관리하라 mongo 는 localhost:27017로 접속. host:port/database 옵션으로 어떤 서버에도 접근 가능.
  • 25. TIP 46 모든 서버와 DB는 하나의 셸에서 관리하라 mongo 는 localhost:27017로 접속. host:port/database 옵션으로 어떤 서버에도 접근 가능. use customers, use game, use customers ...
  • 26. TIP 46 모든 서버와 DB는 하나의 셸에서 관리하라 mongo 는 localhost:27017로 접속. host:port/database 옵션으로 어떤 서버에도 접근 가능. use customers, use game, use customers ... game = db.getSisterDB(“game”) customers = db.getSisterDB(“customers”)
  • 27. TIP 46 모든 서버와 DB는 하나의 셸에서 관리하라 mongo 는 localhost:27017로 접속. host:port/database 옵션으로 어떤 서버에도 접근 가능. use customers, use game, use customers ... game = db.getSisterDB(“game”) customers = db.getSisterDB(“customers”) 레플리카 셋이나 샤딩된 클러스터를 사용하는 경우, 접속 을 각각 유지 할 수 있다. master=connect(“ny1a:27017/admin”) slave = connect(“ny1b:27017/admin”)
  • 28. TIP 47 함수에 대해 자세한 사항을 보려면 ‘HELP’를 수행
  • 29. TIP 47 함수에 대해 자세한 사항을 보려면 ‘HELP’를 수행 자바스크립트 셸안에서 함수의 괄호 없이 수행하면 소스코 드를 볼 수 있다. > db.addUser function(username, pass, readOnly){ ..... }
  • 30. TIP 47 함수에 대해 자세한 사항을 보려면 ‘HELP’를 수행 자바스크립트 셸안에서 함수의 괄호 없이 수행하면 소스코 드를 볼 수 있다. > db.addUser function(username, pass, readOnly){ ..... } listCommands 만 기억하면 모든 명령어 이름을 볼 수 있다. > db.runCommand({listCommands:1})
  • 31. TIP 47 함수에 대해 자세한 사항을 보려면 ‘HELP’를 수행 자바스크립트 셸안에서 함수의 괄호 없이 수행하면 소스코 드를 볼 수 있다. > db.addUser function(username, pass, readOnly){ ..... } listCommands 만 기억하면 모든 명령어 이름을 볼 수 있다. > db.runCommand({listCommands:1}) 자바스크립트 셀에는 자동 완성 기능의 제안을 받을 수 있 다.
  • 32. TIP48 구동 파일을 작성하라.
  • 33. TIP48 구동 파일을 작성하라. 셸이 시작할 때 옵션으로 헬퍼 함수 목록인 구동 파일을 지 정할 수 있다. $ mongo startup.js
  • 34. TIP48 구동 파일을 작성하라. 셸이 시작할 때 옵션으로 헬퍼 함수 목록인 구동 파일을 지 정할 수 있다. $ mongo startup.js 실수로 데이터베이스를 삭제하거나 데이터를 지우는 일을 방지하고 싶다면 일부 명령을 삭제할 수 있다. // no-delete.js delete DBCollection.prototype.drop; delete DBCollection.prototype.remove; delete DB.prototype.dropDatabase; $ mongo no-delete.js > db.foo.drop() TypeError
  • 35. TIP 49 자신이 만든 함수를 추가하라
  • 36. TIP 49 자신이 만든 함수를 추가하라 스스로 만든 함수를 전역 함수나 클래스 인스턴스, 클래스 프로토타입에 추가하여 사용할 수 있다.
  • 37. TIP 49 자신이 만든 함수를 추가하라 스스로 만든 함수를 전역 함수나 클래스 인스턴스, 클래스 프로토타입에 추가하여 사용할 수 있다. > DB.prototype.getOplogLength = function() { ... };
  • 38. TIP 49 자신이 만든 함수를 추가하라 스스로 만든 함수를 전역 함수나 클래스 인스턴스, 클래스 프로토타입에 추가하여 사용할 수 있다. > DB.prototype.getOplogLength = function() { ... }; 이미 데이터베이스 인스턴스 rsA, rsB 가 있다면? var f = function() { ... }; rsA.getOplogSize = f; rsB.getOplogSize = f;
  • 39. TIP 49 자신이 만든 함수를 추가하라 스스로 만든 함수를 전역 함수나 클래스 인스턴스, 클래스 프로토타입에 추가하여 사용할 수 있다. > DB.prototype.getOplogLength = function() { ... }; 이미 데이터베이스 인스턴스 rsA, rsB 가 있다면? var f = function() { ... }; rsA.getOplogSize = f; rsB.getOplogSize = f; 전역 함수로도 만들 수 있다. getOplogLength = function(db) { ... };
  • 41. 파일에서 자바스크립트 불러오기 load()함수는 셸 컨텍스트하에서 실행된다. // hello.js print(“Hello, world!”) > load(“hello.js”) Hello, world!
  • 42. 파일에서 자바스크립트 불러오기 load()함수는 셸 컨텍스트하에서 실행된다. // hello.js print(“Hello, world!”) > load(“hello.js”) Hello, world! 레플리카 셋이나 샤딩을 구성할 때 사용할 수 있다.
  • 43. TIP 50 스스로 쓴 것을 다시 읽는 명령은 단일 접속을 통 해서 수행하라.
  • 44. TIP 50 스스로 쓴 것을 다시 읽는 명령은 단일 접속을 통 해서 수행하라. client C B A
  • 45. TIP 50 스스로 쓴 것을 다시 읽는 명령은 단일 접속을 통 해서 수행하라. client C B A C B A client F E D
  • 46. TIP 50 스스로 쓴 것을 다시 읽는 명령은 단일 접속을 통 해서 수행하라. client C B A 같은 접속을 통 C B A 해 전송해야 하 client 는 요청들의 묶 음을 지정하는 F E D 방식을 사용

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. 명확하게 오류가 없음을 검증.\narbiter 설정을 변경하거나 기존 설정을 변경하면 안된다. 멤버의 추가/삭제 가능.\n버전을 증가해서 전파되도록 하라.\n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n