작성일 댓글 남기기

mongodb 도큐먼트에 ttl 걸기

mongodb 2.2부터 expire 옵션을 쓸 수 있게 되었다.
그래서 일정시간이 지난 후 도큐먼트를 자동으로 삭제할 수 있다.
예를 들어, 네트워크트래픽을 수집해서 시스템을 만들었는데 트래픽데이터를 최근 6개월치만 유지하고 싶을 때
오래된 도큐먼트를 지우는 작업을 따로 하지 않아도 된다.

공식메뉴얼 : http://docs.mongodb.org/manual/tutorial/expire-data/#expire-documents-after-a-certain-number-of-seconds

2가지 방법이 있다.
1. 도큐먼트가 생성된 시각부터 지정된 시간(초)가 지난 후 삭제.
2. 언제 삭제할 지 특정 시각을 도큐먼트에 지정.

지정된 시간이 지난 후 삭제하는 방법을 알아보자.
인덱스를 아래처럼 생성한다.

db.log.events.ensureIndex( { "createdAt": 1 }, { expireAfterSeconds: 3600 } )

 

createdAt 칼럼은 도큐먼트에 들어갈 항목이다.
expireAfterSeconds에서는 도큐먼트가 생성된 후 얼마 지난 후 삭제할 것인지 초단위로 지정한다.

이제 도큐먼트를 생성할 때 createdAt 필드를 추가하면 된다.

db.log.events.insert( {
    "createdAt": new Date(),
    "logEvent": 2,
    "logMessage": "Success!"} )

 

createdAt필드에 지금시각을 지정해주면 된다.
python에서 pymongo를 이용하여 도큐먼트를 생성하는 방법은 아래와 같다.

import datetime
doc['createdAt'] = datetime.datetime.utcnow()

 

작성일 댓글 남기기

아두이노 구매

올해는 아두이노와 함께 시작했다.

제작년부터 사고 싶었던 아두이노를 드디어 구매했다.
돈을 마련하기 위해 안 쓰는 키보드 하나 팔았다.

구매하기전에 뭘 어떤걸 구매해야 할지 몰라서 헤맸다.
우노R3를 많이 구매하는 듯 하고 책이나 예제가 대부분 우노R3에 맞춰서 나오는 것 같은데,
난 신버전 신봉자라서 다음버전이라고 하는 레오나르도를 구매했다.
사용하는데 있어서 별 어려움은 없을 거라고 생각했다.

보드만 구매해서는 안되고 저항이라던가 LED, 센서등등도 구매해야 되는 것 같은데,
당장 뭐가 필요한지 어떤게 있으면 좋은지 모르겠으니 그냥 대충 있을 것 있는 스타터킷을 구매했다.
구매한 곳은 디바이스마트(http://devicemart.co.kr)다.

아두이노로 뭐든 만들어낼 수 있는 것 같은데 내가 뭘 할 수 있을지는 모르겠다.
먼저 화분이 있는 베란다의 온도와 습도를 측정해서 주기적으로 로깅하는 작업을 해보고 싶다.
근데 스타터킷에는 습도센서가 안 들어있어서 따로 구매해야겠다.

구매 후 해본 것은 LED에서 불 켜는 것, 스위치를 이용한 LED제어, 조광센서를 이용하여 빛의 세기에 따라 LED 의 밝기를 조정하는 것.
아두이노를 잼나게 갖고 놀려면 결국 이런저런 센서를 추가구매해야 할 듯 하다.

 

IMG_2548

IMG_2546