'coding' Category

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. 언제 삭제할 지 특정 시각을 도큐먼트에 지정.

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

 

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

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

 

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

 

ipython notebook에서 django shell 사용하기

django shell에서 뭔가 진행할 때 ipython notebook이 아쉬웠다.

혹시 ipython notebok에서 django shell을 쓸 수 있을까 해서 찾아보니 있다.

 

https://github.com/cpbotha/django-shell-ipynb

 

아래와 같이 설치하고

 

django 프로젝트의 setting.py 파일을 열어서 INSTALLED_APPS에 django_shell_ipynb 를 추가하면 끝.

 

그런 후

 

실행하면 ipython notebook 을 띄울 때와 동일하게 실행된다.