티스토리 뷰

Triggered Messaging 라는 실시간 대용량 데이터를 처리하는 회사로, 인터넷 쇼핑몰에서 버려지는 카트(abandoned carts : 인터넷쇼핑하다 카트에 담아두기만하고 구매까지 이루어지지 않은 카트를 의미하는 것같음) 정보를 이메일정보로 제공해서 고객이 구매할 확율을 높이게 하는 일을 처리하고 있다.


어쨋든 실시간으로 계속 유입되는 대용량의 데이터를 가지고 MongoDB 콜렉션(Collection)에 등록을 하지만, 결국 그 데이터를 가지고 일련의 어떤 처리를 하고 나면 더 이상 쓸모 없는 데이터이므로 삭제에 대한 이슈가 생겼다는 것이다. 이 임시적인 데이터에 대한 삭제의 방법을 아래 4가지로 나눴다.


1. 처리할때마다 한 레코드씩 삭제(remove).

2. 처리 마지막에 모든 레코드를 삭제(remove).

3. 처리 마지막에 콜렉션(collection - mongoDB에서의 테이블 개념)을 날려(drop)버리는 것.

4. 처리 마지막에 데이터베이스(database - 콜렉션들의 집합) 를 날려(drop)버리는 것.


100,000 documents (~1.5GB) 데이터를 가지고 성능 실험을 했으며, 그 결과는 다음과 같다.


 Test

 처리평균시간

 1번 결과

 66.9 s

 2번 결과

 23.0 s

 3번 결과

 0.01 s

 4번 결과

 0.22 s


이 테스트는 아주 인위적으로 셋팅하여 실행했다. 모든 데이터 항목은 같으며, 일관되게 동일한 데이터 크기를 가지고 셋팅했다. 대용량의 컬렉션 및 데이터베이스들을 위해서는 각각의 항목을 삭제하는 것보다는 drop 시키는 게 훨씬 효율적임을 강조하고 있다. 결국 이 회사의 시스템은 데이터베이스(database) 단위로 drop 시켜 낮은 비용으로 오래된 데이터들을 처리할 수 있게 되었다.


(원문 : http://www.triggeredmessaging.com/blog/mongodb-with-high-volume-data )

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함