본문 바로가기
반응형

Spring3

100만건의 데이터 저장 속도 780배 개선기 서론이번 포스팅에서는 개인 프로젝트 진행 중에 다수의 쿼리를 한 번에 발생시킬 필요성이 있어, 기존에 사용하던 saveAll() 메서드와 save() 메서드, JPA batch, JdbcTemplate의 batchUpdate 메서드 간의 차이점에 대해 알아본 과정과 결과를 공유하고자 합니다. 테스트에 사용된 기기는 맥북프로 m1 pro 기반이므로, 실제 서버의 성능과 별개로 상대적인 최적화 개선방법으로 봐주시면 감사하겠습니다. 포스팅에서 작성된 코드는 아래 깃헙 레포지토리에서 클론하여 직접 테스트 해볼수 있습니다.https://github.com/jaewonLeeKOR/save-optimization-testHibernate의 save()보통 jpa에서 단건 데이터를 저장하거나 Transactional을.. 2025. 5. 31.
@Transactional 의 Lost Update 문제 해결기 (Redis 분산락) 제가 참여하고 있는 케플 프로젝트에서 좋아요와 댓글의 개수를 엔티티 자체에 저장하는 케이스가 존재했습니다. 최근에 해당 데이터를 다루는 과정에서 동시성 문제가 생겨 해결해 나간 경험을 공유하고자 합니다.그래서 무엇이 문제인가?@Transactional 의 Lost Update 문제스프링을 이용해 서버를 구현하였다면 익히 @Transactional 어노테이션을 사용하고 있을것입니다.@Transactional 어노테이션을 사용하는 이유는 상황에 따라 다르겠지만, 가장 유용하게 사용하는 이유는 Dirty Checking 방식의 변경 감지에 따른 update 쿼리 발생일것입니다.@Transactional 어노테이션이 실행되는 방식을 간단히 들여다 보면, @Transactional 어노테이션 내에서 DB로부터 조.. 2025. 5. 9.
Spring AI : Retrieval Augmented Generation 번역 주의이 번역본은 현재의 Spring AI 모듈의 개발 상황에 따른 문서이며 현재 활발히 개발중인 모듈이므로 사용방법이나 컨셉이 변경될 수 있다.Retrieval Augmented Generation검색 증강 생성은 긴 형식의 콘텐츠, 사실적 정확성과 맥락 인식에 어려움을 겪는 LLM의 한계를 극복하는데 유용한 기술이다.Spring AI는 모듈식 아키텍쳐를 제공하여 사용자가 커스텀 RAG 플로우를 구축하거나 Advisor API를 활용하여 즉시 사용 가능한 RAG 플로우를 사용할 수 있도록 지원한다.AdvisorsSpring AI는 Advisor API를 활용하여 일반적인 흐름에 대한 즉시 사용 가능한 지원을 제공한다.QuestionAnswerAdvisor벡터 데이터베이스는 AI 모델이 인식하지 못하는 데.. 2025. 3. 16.
반응형