'IT 이야기/MongoDB'에 해당되는 글 2건

  1. 2013.12.24 MongoDB 현재 작동중인 쿼리 OP 중단하기
  2. 2013.07.26 MongoDB ObjectID
IT 이야기/MongoDB2013. 12. 24. 16:00

가끔 MongoDB에서 쿼리를 잘 못 수행 할 경우가 있다.


그렇게 되면 DB 성능이 너무 쳐지고 다른 작업의 동작에도 영향을 끼지게 된다.


MongoDB를 재시작 할 수도 없을 때?


어떻게 해야 될까?


다행이 MongoDB에서는 현재 진행중인 Operation을 확인 하고 취소 할 수 있는 기능이 있다.


물론 MongoDB 자체에 접속이 안돼면... 말짱 헛일이지만..


MongoDB에 접속이 될 경우라 가정하고!


==>db.currentOp()


위 명령을 수행하면


 "inprog" : [

                {

                        "opid" : 114730890,

                        "active" : true,

..... 뭐시기 저시기

이렇게 나온다

여기서 "opid"가 현재 수행 중인 operation의 아이디 이다.

아이디를 확인했으면

==>db.kilOp(opid)

를 수행!! 그러면 진행중인 operation이 중단 된다.

실제적으로 오래 걸리지 않고 금방 진행된다.

그러니 괜시리 쿼리 수행을 잘못했을 때...

침착하게 잘 못 수행한 쿼리를 중단하자!

끝!!


'IT 이야기 > MongoDB' 카테고리의 다른 글

MongoDB ObjectID  (0) 2013.07.26
Posted by W.C.
IT 이야기/MongoDB2013. 7. 26. 17:21

MongoDB는 ObjectID란 것이 있다.


{ "_id" : ObjectId("51f1dd7cf6d140526e6f9280")

이런 식으로 _id 필드에 값을 지정하지 않으면 임의의 유니크 값으로 들어 간다.


이 값이 인덱스로도 무조건 자동 등록!!


그럼 요놈의 ObjectID란 놈을 살펴 보자


여기에는 타임 스탬프 값이 있다.


앞자리 8자리는 타임 스탬프 값이라고 보면 된다.


간단하게 ObjectID를 생성해보자


일단 현제 TimeStamp를 구한다.


어려우면 


http://www.epochconverter.com/


이 사이트 가면 된다.


타임 스탬프 값을 가져와서 아래와 갘이 임의로 ObjectId를 생성할 수 있다.



16진수로 변경한 것이 앞자리 8자리 이다.


뒤에 것은 임의로 mongoDB가 자동 생성! 여기서 MongoDB Object ID 구성을 더 보자면


 Timestamp

Machine ID 

Process ID 

Counter 

4bytes(8자리) 

3bytes(6자리) 

2bytes(4자리) 

3bytes(6자리) 


이렇게 구성되 있다고 한다.


MachineID와 Process ID는 랜덤하게 생성 된다


진짜 인지 굼금하면 소스 확인 ㄱㄱ~


이제 ObjectID의 정체를 알았으니 활용도 가능하다.


특별히 _id 값을 입력하지 않았다면


ObjectID에 데이터 저장 시간이 포함 된다는 이야기!!!


입력 시간을 기준으로 데이터를 검색 할 수 있다는 이야기 이다. 별다른 Index 지정 없이!



이렇게 범위 검색이 가능하다는 거


MongoDB에서는 또 ObjectId에서 날짜를 추출하는 함수를 제공한다.



요렇게~ 


구해 진 값을 보건데 이건 UTC로 저장 되는 걸 확인


활용 할려면 UTC인지 local Time 인지 잘 구분해서 해야 하는군


간단하 Java 활용 코드를 보자면


int mtime = 1374820967;

String m = Inetger.toHexString(mtime);

String rm = m + "0000000000000000";

ObjectId id = new ObjectId(rm);


이런 식으로 생성해서


쿼리에 응용해주면 된다!







'IT 이야기 > MongoDB' 카테고리의 다른 글

MongoDB 현재 작동중인 쿼리 OP 중단하기  (0) 2013.12.24
Posted by W.C.