본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


MongoTemplate4

[Springboot] Mongotemplate 에서 _class 제거 자바 기반의 몽고템플릿 라이브러리를 사용하면 데이터를 저장하거나 수정 할 때 "_class" 필드 항목이 저장하는 클래스 패키지명과 함께 항상 생기고는 합니다. 아래 사진처럼 패키지명과 클래스 이름이 그대로 저장되어 깨림찍 하지 않을 수 없습니다. 몽고템플릿에서는 데이터를 매핑 할 때 주어진 클래스 의 패키지와 이름을 넣도록 기본설정이 되어 있습니다. 해당 기능을 끄기 위해서는 application.properties 에서는 할 수 없으며, 따로 빈 객체를 생성해야 합니다. 위 내용에 해당되는 코드 입니다. * 몽고컨피그.class import org.springframework.beans.factory.BeanFactory; import org.springframework.context.annotati.. 2023. 4. 25.
MongoTemplate Aggregate 사용간 파싱 버그 몽고db에서 집계함수를 통해서 통계작업을 하던 도중 당황스러운 버그를 보았다. CHOICE_INFO.REG_DATE는 일반 문자열 상수로 String 값을 가지며, 값은 reg_date라는 소문자를 넣어놨었다. 즉, 내가 가져오는 값은 date, date를 daying으로 바꾼 값 2개인데.. 위 스코드 어디에도 _id 를 키 또는 Projection에서 가져오는 구간이 없다. 그럼에도 불구하고 daying으로 이름을 바꾼 속성이 키 값으로 _id를 지정되서 나오는 모습을 보게 되었다.. 이런 황당한 버그를 보았나;; 아무튼 위 현상을 해결하기위해 간단한 소스코드 한줄을 추가하였다. 어디에도 쓰이지않는 아무의미없는 "1"이라는 값을 key, value로 가져오게 하자 위 현상이 멈추었다. 아마도.. Mo.. 2019. 7. 19.
Java를 활용한 MongoDB 대용량 집계, 억단위 Mongotemplate를 통해서 데이터를 집계하는 방법은 aggregate라는 함수를 호출하여 실시 한다. aggregate함수를 적은량의 데이터를 대상으로 실행하면 사실 문제가 되지 않는데, 데이터량이 많아진 경우에 한번에 집계를 실시하면 데이터베이스 서버 또는 동작중인 Java 어플리케이션이 OutofMemory 상태가 될 수 있다. 그럴때를 대비하여 집계함수 실행 간 최소, 최댓값을 설정하여 페이징 처리를 해야된다. 대략적으로 억단위 이상인 데이터에 대해서는 집계함수 실행시 페이징 처리를 해 주어야 문제가 생기지 않는 것 같다. 1억건 데이터를 기준으로 1천만건 단위로 집계하여 동작을 시키면 메모리는 2~3기가 정도 사용하며 cpu점유는 10%내외 하드디스크 입출력IO는 40%내외정도로 양호한 편.. 2019. 6. 28.
MongoTemplate Aggregate Mongotemplate를 활용해서 집계함수를 실행하는 방법이다. 아래와 같은 데이터가 있다고 하자. { "_id":ObjectId("507f1f77bcf86cd799439011"), //고유 아이디 "date" : ISODate("2019-06-21 10:03:46.000Z"), //날짜 데이터 "text":"test", //단순 텍스트 "number":1234, //숫자 "type1":"A", //그룹핑할 데이터1 "type2":"AA" //그룹핑할 데이터2 }, { "_id":ObjectId("54af1e77gcfq6qdr22u39914"), "date" : ISODate("2019-06-21 10:03:46.000Z"), "text":"text text..", "number":1234, "type.. 2019. 6. 21.