본문 바로가기

JAVA

[REDIS+MONGO] 테스트 배드 프로그램

 안녕하세요.

회사에서 REDIS랑 MONGO 디비랑 섞어서 써보겠다 해서요.

그런데 왜 섞을까 의문이 들었습니다. redis도 데이터베이스처럼 역할을 수행할 수 있는데요 말이죠. 하지만 레디스의 캐쉬와 몽고디비의 검증된 안정성이라는 장점만 가지고 사용하기로 했나봅니다.

그럼 뭘 보기 위해서 만들었을까요.

1. REDIS에 10만건 데이터를 한번에 부을때 걸리는 시간

2. REDIS에서 MONGO DB로 데이터를 옮길때 걸리는 시간 10만건

3. MONGODB를 통해서 10만건의 데이터를 검색했을때 걸리는 시간

3가지를 측정하기로 했습니다.

결과는 준수했습니다.

[14:51:23]INSERT DATA TO MONGO : 50000건, 소요시간:1.528
[14:55:11]SEARCH DATA FROM MONGO : 50000건, 소요시간:0.773

5만건의 데이터를 조회하는데 걸리는 시간은 저 정도 나왔습니다. 네트워크 상황이나 여타 다른 상황을 고려하면 좀 더 늦을 순 있지만 보통 5만건의 데이터를 한번에 조회하는 일은 .. 많나요 ?

저렇게 다뤄본적 없는 나..

REDIS는 캐쉬 용도로 MONGO는 데이터베이스 형태로 사용하겠다 그래서 처음에는 콘솔로 만들었다가 나중에는 swing으로 대충 덕지덕지 살붙여서 만들었습니다.

jedis.properties에 아이피 설정이랑 본인 설치 설정에 맞게만 적어주시면 바로 작동할 겁니다.

그럼 간단하게 ..

어떻게 사용하는건지 작동법을 알려드리도록 하죠.

사용전 조건은 이러합니다.

1. C:\ 아래에 jedis.properties 을 위치시킨다.

#insert test data interval to redis
redis.inst=0 //REDIS에 넣을때 검색을 위해 중복된 밀리세컨드를 발생시키지 않기 위함입니다.

#redis address
redis.ip=192.168.1.10 //REDIS 주소
redis.port=6379 //REDIS PORT

#mongodb address
mongo.ip=192.168.1.10 //몽고디비 주소
mongo.port=27017 //몽고디비 포트
mongo.dbnm=miller //DB명

그리고 설정 정보를 확인해줍니다.

2. 구동

 

위와 같이 java -jar modis.jar 명령어로 구동되고 mongodb 커넥션도 얻어온거 보이시죠.

실행이 되면 이렇게 뜹니다.

3. 실행

 

조회 화면이 Default 입니다.

순서가 순서인 만큼 저장부터 합시다.

4. REDIS 저장

이미 테스트 배드로 만든거기 때문에 내부에 값을 구분하기 위한 구분자는 정해져 있습니다. 그래서 장비명(_)이라고 하는 것은 sensor_temp로 구분하며 sensor라는게 장비명 _은 구분자 temp가 온도 값을 지칭합니다.

카테고리는

temp 온도, humi 습도가 있습니다.

저장을 누를 시 저장되고 검색을 위해서 시작일과, 종료일을 체크합니다.

5. REDIS 조회

REDIS에 잘 저장이 되어 있어야 검색이 MONGO로 옮겨가겠죠.

마찬가지로 redis를 검색할때는 sensor_temp의 값이 key로 들어갔으니 sensor*로 검색을 합니다. sensor 뒤에 오는 문자는 아무거나 와도 상관없다는 거죠. 저렇게 List 자료형이기 때문에 1건의 데이터가 key가 들어있는 것을 확인합니다.

6. MongoDB 저장

마찬가지로 REDIS에서 조회 후 저장을 하기 때문에 sensor*로 셋팅하고 저장을 합니다. 저장을 하고 최초에 입력했던 1000건은 mongodb로 이사를 가게 됩니다.

참고로 REDIS LIST 자료형이란 하나의 KEY에 다수의 value가 존재할 수 있습니다. 그래서 key값은 하나이면서 1000건의 데이터가 존재하는 겁니다.

6. MongoDB 검색

아까전에 REDIS 저장에서 봤던 시작일과 종료일로 검색을 합니다. sensor_temptempcate 컬럼에 셋팅되었기 때문에 종류를 temp로 셋팅합니다.

검색은 이렇게 검색됐고 MONGODB의 Document 형태로 화면에 출력된 것 까지 확인이 가능합니다.

이렇게 테스트 배드를 만들어봤습니다.

필요하신 분은 보내드립니다. ㅋㅋㅋ

라이브러리 크기 때문에 10메가를 초과해서 올라가질 않네요

작업환경

Eclipse luna

jdk 1.7

redis,mongodb 등록일 기준 최신 버전