분류 전체보기41 [QueryDSL] 컬렉션 fetchJoin 페이징 applying in memory firstResult/maxResults specified with collection fetch; applying in memory QueryDSL을 사용하는 도중 로컬 환경에서 테스트할 때는 발견하지 못하다가 서버 배포 단계에서 나타난 에러이다. # 원인 일대다 관계, 혹은 컬렉션 패치 조인을 하게 된다면 데이터가 뻥튀기 되는 카테시안 곱 이 발생하게 된다. 이 때 Limit을 사용하여 페이징을 하게 된다면 데이터를 예측할 수 없기에 모든 데이터를 메모리로 가져와 처리하게 된다. 만약 데이터가 많아지게 된다면 성능에 문제가 생길 수 있다. # 해결방안# 1. Batch Size# 2. 페이징 처리 후 fetchJoin저의 경우는 두번째 방법을 사용하여 해결하였습니다.@Overridepublic Lis.. 2024. 8. 8. [JPA] N + 1 문제와 해결방안 프로젝트를 하다보면 가장 자주 들리는 문제이지 않나 싶다.대충 어떤 건지는 알고 있었지만, 최근 다시 공부를 하면서 내가 너무 수박 겉핥기 식으로 알고 있다는 생각에 자세히 정리해보고자 한다.아래에 작성된 코드 전체는 Github 에 있습니다.1. N + 1 쿼리 문제란?설명하기에 앞서 하나의 팀은 여러 멤버를 가질 수 있고 멤버는 하나의 팀을 가진다고 했을 때, 아래와 같은 코드로 표현할 수 있다.Entity@Getterpublic class Member { @Id @GeneratedValue private Long id; private String name; @ManyToOne(fetch = LAZY) @JoinColumn(name = "TEAM_ID") priv.. 2024. 8. 4. [kafka] 카프카 토픽(Topic) 명령어 및 실행 예시 # Topic 생성 하기1. 경로 /opt/kafka_2.13-3.7.1/bin2. boker-ip : 172.0.0.001:9092,172.0.0.02:9092,172.0.0.03:9092 # --replication-factor 3# 토픽의 각 파티션을 복제할 복제본의 수를 설정# 브로커 중 하나가 다운되더라도 다른 복제본이 데이터를 유지# --partitions 3# 생성할 파티션의 수를 설정합니다. 여기서는 3개의 파티션이 생성# --bootstrap-server # Kafka 클러스터의 브로커 주소를 설정#./kafka-topics.sh --create --replication-factor 3 --partitions 3 --topic test --bootstrap-server # Topic l.. 2024. 7. 19. [kafka] 카프카 클러스터(Cluster) 구축 # 설치 환경AWS EC21. 3개의 인스턴스 2. t2.micro3. Amazon Linux Kafka1. Kafka_2.13-3.7.1 버전2. Zookeeper가 아닌 KRaft 모드로 구축 # 다운로드1. 각각의 인스턴스에서 모두 진행# java 찾기yum list java*# java 설치sudo yum install -y java-17-amazon-corretto.x86_64# 설치 확인java --versionjavac --version# javac 가 없다 나올 시sudo yum install java-17-amazon-corretto-devel.x86_64# java 환경 설정export JAVA_HOME=/usr/lib/jvm/java-17-amazon-corretto.x86_64ex.. 2024. 7. 18. [kafka] 카프카의 개념 # 카프카의 등장Apache Kafka는 링크드인에서 처음 개발되어 현재는 Apache 재단에서 관리하고 있는 오픈소스이다.2011년 링크드인에서는 수많은 데이터를 실시간으로 처리하는 과정에서 많은 어려움을 겪고 있었는데 여러 시스템에서 개별적으로 프로듀서와 컨슈머가 연결을 가져가는 구조였고, 때문에 하나의 시스템만 추가되어도 구조가 복잡해지는 문제를 가지고 있었다고 한다. 이를 해결하기 위해 중앙화된 메시지와 데이터의 흐름을 관리하는 구조를 만들기로 하고 탄생한 것이 카프카이다. # 카프카의 핵심은 고가용성 가용성이란 서버나 네트워크, 시스템이 정상적으로 사용 가능한 정도를 나타내는데 고가용성이라는 말은 '정상적으로 사용한 시간이 많다'는 뜻이다. 그렇다면 카프카는 왜 고가용성을 중요하게 생각하는지 .. 2024. 7. 18. 이전 1 ··· 4 5 6 7 다음