////////////////////////////////////////////////////////////////////////////////
// ysoftman
// MongoDB Test - Stored JavaScript 사용
////////////////////////////////////////////////////////////////////////////////
# 클라이언트 접속하기
bin\mongo 10.10.10.100:10000
# testdb 사용하기(DB 를 미리 생성하지 않는다.)
use testdb
# collection 의 document 전체 삭제
function test1 () {
db.col1.drop();
return true;
}
db.eval(test1);
// insert 하기 데이터 크기가 4GB 를 넘어가서 64bit mongodb 사용
// 100만개(mongovue) 경과시간: 2분 35초 DB크기: 0.5GB
// 1000만개(mongovue) 경과시간: 47분15초 DB크기: 5.95GB (인덱스 메모리에 저장되어 사용)
function test2() {
for (var i=1; i<=1000000; i++)
{
str = {
Name:"HongGilDong",
Mobile:"010-123-4567",
"E-Mail":"ysoftman@naver.com",
Clan:"Best_of_Best",
Inventory:{
Sword:"HighLevel",
Robe:"MediumLevel",
Potions:{
HP_Potion:"SmallSize",
MP_Potion:"BigSize"
},
PortalScroll:"1"
},
Status:{
HP:i,
MP:i
},
Skill:{
FireBall:"1",
Blizzard:"2"
}
}
db.col1.save(str);
}
return 1;
}
db.eval(test2);
# memory dependent 하기 때문에 page fault 가 발생하지 않을 정도의 메모리가 있을 경우를 가정
# 100만개시 index 사용 없이 1초내 검색 완료
# 1000만개시 index 사용 없이 약 2분 소요, index 사용시 1초내
# Status.HP 가 123 인것
db.col1.find({"Status.HP":123}).count()
# Status.HP 가 1 보다 큰것
# 100만개시 index 사용 없이 1초내 검색 완료
# 1000만개시 index 사용 없이 약 2분 소요, index 사용시 1초내
db.col1.find({"Status.HP":{$gt:1}}).count()
# Status.HP 가 1 보다 작은것
# 100만개시 index 사용 없이 1초내 검색 완료
# 1000만개시 index 사용 없이 약 2분 소요, index 사용시 1초내
db.col1.find({"Status.HP":{$lt:1000000}}).count()
# Status.HP 가 1 보다 큰거나 같은것
db.col1.find({"Status.HP":{$gte:1}}).count()
# Status.HP 가 1 보다 작거나 같은것
db.col1.find({"Status.HP":{$gte:1}}).count()
comments:
댓글 쓰기