본문 바로가기

Database & ORM/MongoDB

(3)
MongoTemplate으로 Aggregation 사용하기 Map-Reduce MongoDB의 Document를 다른 형태로 Mapping하는 것을 Map 이라고 한다. Document나 Mapping한 데이터 내 여러 값을 취해 합계나 평균 등을 만드는 작업을 Reduce라고 한다. 이렇게 Doucment의 데이터를 매핑하고 취합하는 것을 Map-Reduce 작업이라고 한다. Aggregation MongoDB에서는 MapReduce보다 향상된 Aggregate라는 기능을 제공한다. aggregate는 일종의 리눅스와 비슷한 pipeline을 가지면 각 단계별로 진행을 마친 후에 result을 가져오게 된다. 아래와 같은 순서로 pipeline을 진행한 후에 결과값을 가져오게 된다. collection > $project > $match > $group > $..
MongoDB에서 JPA 상속 관계 설정 - @Inheritance, @DiscriminatorColumn, @DiscriminatorValue 결론부터 말하자면, - MongoDB에서 JPA의 상속관계 설정인 @Inheritance, @DiscriminatorColumn, @DiscriminatorValue는 적용되지 않는다. - JAVA로 MongoDB에서 데이터 조회할 때, 자식 클래스 중 어떤 클래스와 매핑할 지 결정하는 것은 Document 내 저장되어 있는 _class이다. _class는 JAVA에서 데이터 저장 시, Document에 자동으로 같이 저장된다. - _class로 구분하기 때문에, 자식 클래스의 클래스명은 변경하면 안된다. 변경 시, 기존 저장된 데이터를 매핑해서 가지고오지 못한다. - @TypeAlias를 이용해 _class에 들어갈 값을 정해줄 수 있다. JPA 상속관계 설정 JPA에서 상속 관계는 부모 엔터티에 @I..
MongoDB 선택 이유 및 MongoDB에서 RDB+MongoDB로 변경 회사 이직한지 1개월 째, 화주와 포워더 간 물류 플랫폼 서비스인 ZIMGO 개발에 참여하게 되었다. ZIMGO에서 서류함을 개발하게 되었는데, 서류함은 Packing List, Commercial Invoice 등 수/출입에 필요한 문서를 유저가 생성 및 관리하는 기능이었다. MongoDB 선택 이유 서류함 개발에 MongoDB를 사용하기로 했는데, 이유는 문서의 특징 때문이었다. - 문서의 종류가 여러가지이다. (비정형 데이터) - 검색할 때는 여러 종류의 문서가 함께 조회되어야 한다. - RDB로 하면 하나의 문서를 조회할 때, 여러 테이블 간의 복잡한 Join이 필요하다. - 문서마다 데이터 형태가 다르므로, 테이블 설계가 어렵다. - 반면, MongoDB는 문서의 내용 전체를 JSON으로 저장할..