50 Tips & Tricks for MongoDB Developers
TIPS: 7~13
[email protected]
TIP 7: 미리 만들 수 있는 것은 만들어 놓자.
• Insert 비용 보다 Update 비용이 싸다.
– 공간 할당이 필요가 없으므로
• 어디에 쓸 것이냐?
– 통계 페이지 처럼 시간마다 같은 크기에 값만 바뀌는 경우
• 그런데 적은 용량이면 insert나 update가 큰 차이가 없을듯…
TIP 7: 미리 만들 수 있는 것은 만들어 놓자.
TIP 8: 가능하면 공간을 미리 할당하라.
• Tip 7과 같은 내용
• 미리 만들어두고 당장 안쓰는 정보는 $unset 해 두자.
TIP 9: 데이터를 내장할 때 식별자 없이 검색하려면 배열에 저장하라.
• 식별자
abilities.str Abilities.con 식별자를 쓴다는 것은 이름을 안다는 것!
TIP 9: 데이터를 내장할 때 식별자 없이 검색하려면 배열에 저장하라.
MongoDB 의 특징이 Schemaless 하므로 다양한 아이템을 넣을 수 있다. 하지만 damage가 20이 넘는 것만 검색하려면?
TIP 9: 데이터를 내장할 때 식별자 없이 검색하려면 배열에 저장하라.
배열로 만들어서 검색
TIP 10: 문서가 자급자족할 수 있도록 설계하라.
• MongoDB는 똑똑하지 않다.
TIP 10: 문서가 자급자족할 수 있도록 설계하라.
• MongoDB는 똑똑하지 않다.
TIP 10: 문서가 자급자족할 수 있도록 설계하라.
• findAndModify를 이용한 Locking을 이용한 방법
TIP 11: 자바스크립트보다는 제한자를 사용하라
• $where는 강력하다.
• 그러나 느리다!
– 제한자의 경우 BSON으로 전달 후 데이터도 BSON 이므로 파싱 없이 처리
– $where 조건의 경우 모든 데이터를 자바스크립트 객체로 생성하고 자바스크립트를 실행해야 함
TIP 11: 자바스크립트보다는 제한자를 사용하라
• 조금 더 빠르게!!!
TIP 12: 집계는 다른 작업과 함께 처리한다.
TIP 13: 데이터 무결성 문제에 대처하는 코드를 작성하라.
• 데이터 일관성을 어플리케이션에서 유지
• Cron 등의 주기적 작업이 필요
– Consistency Fixer
– Pre-Populater
– Aggregator
• 다른 유용한 Script
– Schema checker
– Backup Job